aboutsummaryrefslogtreecommitdiff
path: root/dw
diff options
context:
space:
mode:
authorJorge Arellano Cid <jcid@dillo.org>2009-01-05 17:12:43 -0300
committerJorge Arellano Cid <jcid@dillo.org>2009-01-05 17:12:43 -0300
commitf7fc073ac0de5326cffee25fd3e94c4d0b385136 (patch)
treeec3b76e4436c6266369151308155705c822b66ea /dw
parent58e0045791b62f309066e446a314cd26bc277a8b (diff)
Added a right-click menu to the form submit button (allows to show hiddens)
Diffstat (limited to 'dw')
-rw-r--r--dw/fltkplatform.cc5
-rw-r--r--dw/fltkplatform.hh3
-rw-r--r--dw/fltkui.cc51
-rw-r--r--dw/fltkui.hh7
-rw-r--r--dw/ui.cc9
-rw-r--r--dw/ui.hh6
6 files changed, 70 insertions, 11 deletions
diff --git a/dw/fltkplatform.cc b/dw/fltkplatform.cc
index 337f4dba..1dc1c860 100644
--- a/dw/fltkplatform.cc
+++ b/dw/fltkplatform.cc
@@ -200,9 +200,10 @@ FltkPlatform::FltkResourceFactory::createOptionMenuResource ()
core::ui::EntryResource *
FltkPlatform::FltkResourceFactory::createEntryResource (int maxLength,
- bool password)
+ bool password,
+ const char *label)
{
- return new ui::FltkEntryResource (platform, maxLength, password);
+ return new ui::FltkEntryResource (platform, maxLength, password, label);
}
core::ui::MultiLineTextResource *
diff --git a/dw/fltkplatform.hh b/dw/fltkplatform.hh
index 7b3d3e73..7f430ee3 100644
--- a/dw/fltkplatform.hh
+++ b/dw/fltkplatform.hh
@@ -81,7 +81,8 @@ private:
createListResource (core::ui::ListResource::SelectionMode selectionMode);
core::ui::OptionMenuResource *createOptionMenuResource ();
core::ui::EntryResource *createEntryResource (int maxLength,
- bool password);
+ bool password,
+ const char *label);
core::ui::MultiLineTextResource *createMultiLineTextResource (int cols,
int rows);
core::ui::CheckButtonResource *createCheckButtonResource (bool
diff --git a/dw/fltkui.cc b/dw/fltkui.cc
index 9d9b8107..f4090521 100644
--- a/dw/fltkui.cc
+++ b/dw/fltkui.cc
@@ -199,7 +199,35 @@ void FltkResource::setWidgetStyle (::fltk::Widget *widget,
}
}
}
-
+
+void FltkResource::setDisplayed(bool displayed)
+{
+ for (Iterator <ViewAndWidget> it = viewsAndWidgets->iterator ();
+ it.hasNext(); ) {
+ ViewAndWidget *viewAndWidget = it.getNext ();
+ if (displayed)
+ viewAndWidget->widget->show();
+ else
+ viewAndWidget->widget->hide();
+ }
+}
+
+bool FltkResource::displayed()
+{
+ bool ret;
+ Iterator <ViewAndWidget> it = viewsAndWidgets->iterator ();
+
+ if (it.hasNext()) {
+ ViewAndWidget *viewAndWidget = it.getNext ();
+ // visible() is not the same thing as being show()n exactly, but
+ // show()/hide() set it appropriately for our purposes.
+ ret = viewAndWidget->widget->visible();
+ } else {
+ ret = false;
+ }
+ return ret;
+}
+
bool FltkResource::isEnabled ()
{
/** \bug Not implemented. */
@@ -487,11 +515,12 @@ int FltkComplexButtonResource::reliefYThickness ()
// ----------------------------------------------------------------------
FltkEntryResource::FltkEntryResource (FltkPlatform *platform, int maxLength,
- bool password):
+ bool password, const char *label):
FltkSpecificResource <dw::core::ui::EntryResource> (platform)
{
this->maxLength = maxLength;
this->password = password;
+ this->label = label ? strdup(label) : NULL;
initText = NULL;
editable = false;
@@ -503,6 +532,8 @@ FltkEntryResource::~FltkEntryResource ()
{
if (initText)
delete initText;
+ if (label)
+ delete label;
}
::fltk::Widget *FltkEntryResource::createNewWidget (core::Allocation
@@ -518,6 +549,10 @@ FltkEntryResource::~FltkEntryResource ()
input->callback (widgetCallback, this);
input->when (::fltk::WHEN_ENTER_KEY_ALWAYS);
+ if (label) {
+ input->label(label);
+ input->set_flag(::fltk::ALIGN_INSIDE_LEFT);
+ }
if (viewsAndWidgets->isEmpty ()) {
// First widget created, attach the set text.
if (initText)
@@ -529,9 +564,15 @@ FltkEntryResource::~FltkEntryResource ()
return input;
}
+void FltkEntryResource::setDisplayed(bool displayed)
+{
+ FltkResource::setDisplayed(displayed);
+ queueResize(true);
+}
+
void FltkEntryResource::sizeRequest (core::Requisition *requisition)
{
- if (style) {
+ if (displayed() && style) {
FltkFont *font = (FltkFont*)style->font;
::fltk::setfont(font->font,font->size);
requisition->width =
@@ -541,8 +582,8 @@ void FltkEntryResource::sizeRequest (core::Requisition *requisition)
requisition->ascent = font->ascent + RELIEF_Y_THICKNESS;
requisition->descent = font->descent + RELIEF_Y_THICKNESS;
} else {
- requisition->width = 1;
- requisition->ascent = 1;
+ requisition->width = 0;
+ requisition->ascent = 0;
requisition->descent = 0;
}
}
diff --git a/dw/fltkui.hh b/dw/fltkui.hh
index 4de99d27..3d19fc63 100644
--- a/dw/fltkui.hh
+++ b/dw/fltkui.hh
@@ -195,6 +195,8 @@ protected:
virtual ::fltk::Widget *createNewWidget (core::Allocation *allocation) = 0;
void setWidgetStyle (::fltk::Widget *widget, core::style::Style *style);
+ void setDisplayed (bool displayed);
+ bool displayed();
public:
~FltkResource ();
@@ -298,15 +300,18 @@ private:
int maxLength;
bool password;
const char *initText;
+ char *label;
bool editable;
static void widgetCallback (::fltk::Widget *widget, void *data);
+ void setDisplayed (bool displayed);
protected:
::fltk::Widget *createNewWidget (core::Allocation *allocation);
public:
- FltkEntryResource (FltkPlatform *platform, int maxLength, bool password);
+ FltkEntryResource (FltkPlatform *platform, int maxLength, bool password,
+ const char *label);
~FltkEntryResource ();
void sizeRequest (core::Requisition *requisition);
diff --git a/dw/ui.cc b/dw/ui.cc
index ef7298bf..945395c3 100644
--- a/dw/ui.cc
+++ b/dw/ui.cc
@@ -97,6 +97,11 @@ void Embed::setDescent (int descent)
resource->setDescent (descent);
}
+void Embed::setDisplayed (bool displayed)
+{
+ resource->setDisplayed (displayed);
+}
+
void Embed::draw (View *view, Rectangle *area)
{
drawWidgetBox (view, area, false);
@@ -196,6 +201,10 @@ void Resource::setDescent (int descent)
{
}
+void Resource::setDisplayed (bool displayed)
+{
+}
+
void Resource::draw (View *view, Rectangle *area)
{
}
diff --git a/dw/ui.hh b/dw/ui.hh
index ea8fd4c4..306883c2 100644
--- a/dw/ui.hh
+++ b/dw/ui.hh
@@ -243,6 +243,7 @@ public:
void setWidth (int width);
void setAscent (int ascent);
void setDescent (int descent);
+ void setDisplayed (bool displayed);
void draw (View *view, Rectangle *area);
Iterator *iterator (Content::Type mask, bool atEnd);
void setStyle (style::Style *style);
@@ -336,6 +337,7 @@ public:
virtual void setWidth (int width);
virtual void setAscent (int ascent);
virtual void setDescent (int descent);
+ virtual void setDisplayed (bool displayed);
virtual void draw (View *view, Rectangle *area);
virtual Iterator *iterator (Content::Type mask, bool atEnd) = 0;
virtual void setStyle (style::Style *style);
@@ -539,8 +541,8 @@ public:
virtual ListResource *createListResource (ListResource::SelectionMode
selectionMode) = 0;
virtual OptionMenuResource *createOptionMenuResource () = 0;
- virtual EntryResource *createEntryResource (int maxLength,
- bool password) = 0;
+ virtual EntryResource *createEntryResource (int maxLength, bool password,
+ const char *label) = 0;
virtual MultiLineTextResource *createMultiLineTextResource (int cols,
int rows) = 0;
virtual CheckButtonResource *createCheckButtonResource (bool activated) = 0;