summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Melcher <fltk@matthiasm.com>2010-04-10 22:16:55 +0000
committerMatthias Melcher <fltk@matthiasm.com>2010-04-10 22:16:55 +0000
commit2fe7eabb6249c4c9ff0f6e697679a7f9f85ce0eb (patch)
treefbfb2957763ed47a673526a142aa33b318720065
parent927fd351655320ed90ceecedaf9ea58656594650 (diff)
Completed the alignment pulldown menus for all new alignment styles. Hope you guys like it.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@7478 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
-rw-r--r--fluid/Fl_Widget_Type.cxx38
-rw-r--r--fluid/widget_panel.cxx68
-rw-r--r--fluid/widget_panel.fl154
-rw-r--r--fluid/widget_panel.h7
4 files changed, 206 insertions, 61 deletions
diff --git a/fluid/Fl_Widget_Type.cxx b/fluid/Fl_Widget_Type.cxx
index 0fde0a682..c47519752 100644
--- a/fluid/Fl_Widget_Type.cxx
+++ b/fluid/Fl_Widget_Type.cxx
@@ -1170,19 +1170,47 @@ void align_cb(Fl_Button* i, void *v) {
}
}
-void align_text_image_cb(Fl_Menu_Button* i, void *v) {
+void align_position_cb(Fl_Choice *i, void *v) {
+ if (v == LOAD) {
+ if (current_widget->is_menu_item()) {i->deactivate(); return;} else i->activate();
+ Fl_Menu_Item *mi = (Fl_Menu_Item*)i->menu();
+ Fl_Align b = current_widget->o->align() & FL_ALIGN_POSITION_MASK;
+ for (;mi->text;mi++) {
+ if (mi->argument()==b)
+ i->value(mi);
+ }
+ } else {
+ const Fl_Menu_Item *mi = i->menu() + i->value();
+ Fl_Align b = Fl_Align(long(mi->user_data()));
+ int mod = 0;
+ for (Fl_Type *o = Fl_Type::first; o; o = o->next) {
+ if (o->selected && o->is_widget()) {
+ Fl_Widget_Type* q = (Fl_Widget_Type*)o;
+ Fl_Align x = q->o->align();
+ Fl_Align y = (x & ~FL_ALIGN_POSITION_MASK) | b;
+ //printf("x:%04x y:%04x b:%04x\n", x, y, b);
+ if (x != y) {
+ q->o->align(y);
+ q->redraw();
+ mod = 1;
+ }
+ }
+ }
+ if (mod) set_modflag(1);
+ }
+}
+
+void align_text_image_cb(Fl_Choice *i, void *v) {
if (v == LOAD) {
if (current_widget->is_menu_item()) {i->deactivate(); return;} else i->activate();
Fl_Menu_Item *mi = (Fl_Menu_Item*)i->menu();
Fl_Align b = current_widget->o->align() & FL_ALIGN_IMAGE_MASK;
for (;mi->text;mi++) {
if (mi->argument()==b)
- mi->set();
- else
- mi->clear();
+ i->value(mi);
}
} else {
- const Fl_Menu_Item *mi = i->mvalue();
+ const Fl_Menu_Item *mi = i->menu() + i->value();
Fl_Align b = Fl_Align(long(mi->user_data()));
int mod = 0;
for (Fl_Type *o = Fl_Type::first; o; o = o->next) {
diff --git a/fluid/widget_panel.cxx b/fluid/widget_panel.cxx
index b98439825..a169b33e6 100644
--- a/fluid/widget_panel.cxx
+++ b/fluid/widget_panel.cxx
@@ -33,12 +33,32 @@ static void cb_(Fl_Tabs* o, void* v) {
propagate_load((Fl_Group *)o,v);
}
-Fl_Menu_Item menu_Text[] = {
- {"image over text", 0, 0, (void*)(FL_ALIGN_IMAGE_OVER_TEXT), 8, FL_NORMAL_LABEL, 0, 11, 0},
- {"text over image", 0, 0, (void*)(FL_ALIGN_TEXT_OVER_IMAGE), 8, FL_NORMAL_LABEL, 0, 11, 0},
- {"text next to image", 0, 0, (void*)(FL_ALIGN_TEXT_NEXT_TO_IMAGE), 8, FL_NORMAL_LABEL, 0, 11, 0},
- {"image next to text", 0, 0, (void*)(FL_ALIGN_IMAGE_NEXT_TO_TEXT), 8, FL_NORMAL_LABEL, 0, 11, 0},
- {"image is backdrop", 0, 0, (void*)(FL_ALIGN_IMAGE_BACKDROP), 8, FL_NORMAL_LABEL, 0, 11, 0},
+Fl_Menu_Item menu_[] = {
+ {" Image Alignment ", 0, 0, (void*)(0xFFFFFFFF), 1, FL_NORMAL_LABEL, 2, 11, 0},
+ {"image over text", 0, 0, (void*)(FL_ALIGN_IMAGE_OVER_TEXT), 0, FL_NORMAL_LABEL, 0, 11, 0},
+ {"text over image", 0, 0, (void*)(FL_ALIGN_TEXT_OVER_IMAGE), 0, FL_NORMAL_LABEL, 0, 11, 0},
+ {"text next to image", 0, 0, (void*)(FL_ALIGN_TEXT_NEXT_TO_IMAGE), 0, FL_NORMAL_LABEL, 0, 11, 0},
+ {"image next to text", 0, 0, (void*)(FL_ALIGN_IMAGE_NEXT_TO_TEXT), 0, FL_NORMAL_LABEL, 0, 11, 0},
+ {"image is backdrop", 0, 0, (void*)(FL_ALIGN_IMAGE_BACKDROP), 0, FL_NORMAL_LABEL, 0, 11, 0},
+ {0,0,0,0,0,0,0,0,0}
+};
+
+Fl_Menu_Item menu_1[] = {
+ {" Inside && Outside ", 0, 0, (void*)(0xFFFFFFFF), 1, FL_NORMAL_LABEL, 2, 11, 0},
+ {"top left", 0, 0, (void*)(FL_ALIGN_TOP_LEFT), 0, FL_NORMAL_LABEL, 0, 11, 0},
+ {"top", 0, 0, (void*)(FL_ALIGN_TOP), 0, FL_NORMAL_LABEL, 0, 11, 0},
+ {"top right", 0, 0, (void*)(FL_ALIGN_TOP_RIGHT), 0, FL_NORMAL_LABEL, 0, 11, 0},
+ {"left", 0, 0, (void*)(FL_ALIGN_LEFT), 0, FL_NORMAL_LABEL, 0, 11, 0},
+ {"center", 0, 0, (void*)(FL_ALIGN_CENTER), 0, FL_NORMAL_LABEL, 0, 11, 0},
+ {"right", 0, 0, (void*)(FL_ALIGN_RIGHT), 0, FL_NORMAL_LABEL, 0, 11, 0},
+ {"bottom left", 0, 0, (void*)(FL_ALIGN_BOTTOM_LEFT), 0, FL_NORMAL_LABEL, 0, 11, 0},
+ {"bottom", 0, 0, (void*)(FL_ALIGN_BOTTOM), 0, FL_NORMAL_LABEL, 0, 11, 0},
+ {"bottom right", 0, 0, (void*)(FL_ALIGN_BOTTOM_RIGHT), 128, FL_NORMAL_LABEL, 0, 11, 0},
+ {" Outside Alignment ", 0, 0, (void*)(0xFFFFFFFF), 1, FL_NORMAL_LABEL, 2, 11, 0},
+ {"left top", 0, 0, (void*)(FL_ALIGN_LEFT_TOP), 0, FL_NORMAL_LABEL, 0, 11, 0},
+ {"right top", 0, 0, (void*)(FL_ALIGN_RIGHT_TOP), 0, FL_NORMAL_LABEL, 0, 11, 0},
+ {"left bottom", 0, 0, (void*)(FL_ALIGN_LEFT_BOTTOM), 0, FL_NORMAL_LABEL, 0, 11, 0},
+ {"right bottom", 0, 0, (void*)(FL_ALIGN_RIGHT_BOTTOM), 0, FL_NORMAL_LABEL, 0, 11, 0},
{0,0,0,0,0,0,0,0,0}
};
@@ -50,14 +70,14 @@ Fl_Value_Input *widget_w_input=(Fl_Value_Input *)0;
Fl_Value_Input *widget_h_input=(Fl_Value_Input *)0;
-Fl_Menu_Item menu_[] = {
+Fl_Menu_Item menu_2[] = {
{"private", 0, 0, (void*)(0), 0, FL_NORMAL_LABEL, 0, 11, 0},
{"public", 0, 0, (void*)(1), 0, FL_NORMAL_LABEL, 0, 11, 0},
{"protected", 0, 0, (void*)(2), 0, FL_NORMAL_LABEL, 0, 11, 0},
{0,0,0,0,0,0,0,0,0}
};
-Fl_Menu_Item menu_1[] = {
+Fl_Menu_Item menu_3[] = {
{"local", 0, 0, (void*)(0), 0, FL_NORMAL_LABEL, 0, 11, 0},
{"global", 0, 0, (void*)(1), 0, FL_NORMAL_LABEL, 0, 11, 0},
{0,0,0,0,0,0,0,0,0}
@@ -155,7 +175,7 @@ Fl_Double_Window* make_widget_panel() {
o->labelsize(11);
o->callback((Fl_Callback*)propagate_load);
o->align(Fl_Align(FL_ALIGN_LEFT));
- { Fl_Button* o = new Fl_Button(95, 115, 40, 20, "Clip");
+ { Fl_Button* o = new Fl_Button(95, 115, 30, 20, "Clip");
o->tooltip("Clip the label to the inside of the widget.");
o->type(1);
o->selection_color(FL_INACTIVE_COLOR);
@@ -163,19 +183,13 @@ Fl_Double_Window* make_widget_panel() {
o->callback((Fl_Callback*)align_cb, (void*)(FL_ALIGN_CLIP));
o->align(Fl_Align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE));
} // Fl_Button* o
- { Fl_Button* o = new Fl_Button(140, 115, 40, 20, "Wrap");
+ { Fl_Button* o = new Fl_Button(130, 115, 30, 20, "Wrap");
o->tooltip("Wrap the label text.");
o->type(1);
o->selection_color(FL_INACTIVE_COLOR);
o->labelsize(11);
o->callback((Fl_Callback*)align_cb, (void*)(FL_ALIGN_WRAP));
} // Fl_Button* o
- { Fl_Menu_Button* o = new Fl_Menu_Button(185, 115, 80, 20, "Text/Image");
- o->labelsize(11);
- o->callback((Fl_Callback*)align_text_image_cb);
- o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
- o->menu(menu_Text);
- } // Fl_Menu_Button* o
{ Fl_Button* o = new Fl_Button(270, 115, 20, 20, "@-1<-");
o->tooltip("Left-align the label.");
o->type(1);
@@ -183,6 +197,7 @@ Fl_Double_Window* make_widget_panel() {
o->labelsize(11);
o->labelcolor(FL_INACTIVE_COLOR);
o->callback((Fl_Callback*)align_cb, (void*)(FL_ALIGN_LEFT));
+ o->hide();
} // Fl_Button* o
{ Fl_Button* o = new Fl_Button(295, 115, 20, 20, "@-1->");
o->tooltip("Right-align the label.");
@@ -191,6 +206,7 @@ Fl_Double_Window* make_widget_panel() {
o->labelsize(11);
o->labelcolor(FL_INACTIVE_COLOR);
o->callback((Fl_Callback*)align_cb, (void*)(FL_ALIGN_RIGHT));
+ o->hide();
} // Fl_Button* o
{ Fl_Button* o = new Fl_Button(320, 115, 20, 20, "@-18");
o->tooltip("Top-align the label.");
@@ -199,6 +215,7 @@ Fl_Double_Window* make_widget_panel() {
o->labelsize(11);
o->labelcolor(FL_INACTIVE_COLOR);
o->callback((Fl_Callback*)align_cb, (void*)(FL_ALIGN_TOP));
+ o->hide();
} // Fl_Button* o
{ Fl_Button* o = new Fl_Button(345, 115, 20, 20, "@-12");
o->tooltip("Bottom-align the label.");
@@ -207,7 +224,22 @@ Fl_Double_Window* make_widget_panel() {
o->labelsize(11);
o->labelcolor(FL_INACTIVE_COLOR);
o->callback((Fl_Callback*)align_cb, (void*)(FL_ALIGN_BOTTOM));
+ o->hide();
} // Fl_Button* o
+ { Fl_Choice* o = new Fl_Choice(165, 115, 110, 20);
+ o->down_box(FL_BORDER_BOX);
+ o->labelsize(11);
+ o->textsize(11);
+ o->callback((Fl_Callback*)align_text_image_cb);
+ o->menu(menu_);
+ } // Fl_Choice* o
+ { Fl_Choice* o = new Fl_Choice(280, 115, 85, 20);
+ o->down_box(FL_BORDER_BOX);
+ o->labelsize(11);
+ o->textsize(11);
+ o->callback((Fl_Callback*)align_position_cb);
+ o->menu(menu_1);
+ } // Fl_Choice* o
{ Fl_Button* o = new Fl_Button(370, 115, 20, 20, "@-3square");
o->tooltip("Show the label inside the widget.");
o->type(1);
@@ -644,7 +676,7 @@ ive to the origin at construction time");
o->textsize(11);
o->callback((Fl_Callback*)name_public_member_cb);
o->when(FL_WHEN_CHANGED);
- o->menu(menu_);
+ o->menu(menu_2);
} // Fl_Choice* o
{ Fl_Choice* o = new Fl_Choice(330, 65, 75, 20);
o->tooltip("Change widget accessibility.");
@@ -653,7 +685,7 @@ ive to the origin at construction time");
o->textsize(11);
o->callback((Fl_Callback*)name_public_cb);
o->when(FL_WHEN_CHANGED);
- o->menu(menu_1);
+ o->menu(menu_3);
} // Fl_Choice* o
o->end();
} // Fl_Group* o
diff --git a/fluid/widget_panel.fl b/fluid/widget_panel.fl
index 3480fe35f..e20cac500 100644
--- a/fluid/widget_panel.fl
+++ b/fluid/widget_panel.fl
@@ -102,68 +102,152 @@ Use Ctrl-J for newlines.} xywh {95 40 190 20} labelfont 1 labelsize 11 when 1 te
label Clip
user_data FL_ALIGN_CLIP
callback align_cb
- tooltip {Clip the label to the inside of the widget.} xywh {95 115 40 20} type Toggle selection_color 8 labelsize 11 align 16
+ tooltip {Clip the label to the inside of the widget.} xywh {95 115 30 20} type Toggle selection_color 8 labelsize 11 align 16
}
Fl_Button {} {
label Wrap
user_data FL_ALIGN_WRAP
callback align_cb
- tooltip {Wrap the label text.} xywh {140 115 40 20} type Toggle selection_color 8 labelsize 11
+ tooltip {Wrap the label text.} xywh {130 115 30 20} type Toggle selection_color 8 labelsize 11
}
- Fl_Menu_Button {} {
- label {Text/Image}
- callback align_text_image_cb open
- xywh {185 115 80 20} labelsize 11 align 20
+ Fl_Button {} {
+ label {@-1<-}
+ user_data FL_ALIGN_LEFT
+ callback align_cb
+ tooltip {Left-align the label.} xywh {270 115 20 20} type Toggle selection_color 8 labelsize 11 labelcolor 8 hide
+ }
+ Fl_Button {} {
+ label {@-1->}
+ user_data FL_ALIGN_RIGHT
+ callback align_cb
+ tooltip {Right-align the label.} xywh {295 115 20 20} type Toggle selection_color 8 labelsize 11 labelcolor 8 hide
+ }
+ Fl_Button {} {
+ label {@-18}
+ user_data FL_ALIGN_TOP
+ callback align_cb
+ tooltip {Top-align the label.} xywh {320 115 20 20} type Toggle selection_color 8 labelsize 11 labelcolor 8 hide
+ }
+ Fl_Button {} {
+ label {@-12}
+ user_data FL_ALIGN_BOTTOM
+ callback align_cb
+ tooltip {Bottom-align the label.} xywh {345 115 20 20} type Toggle selection_color 8 labelsize 11 labelcolor 8 hide
+ }
+ Fl_Choice {} {
+ callback align_text_image_cb open selected
+ xywh {165 115 110 20} down_box BORDER_BOX labelsize 11 textsize 11
} {
MenuItem {} {
+ label { Image Alignment }
+ user_data 0xFFFFFFFF
+ xywh {145 145 100 20} labelfont 2 labelsize 11 deactivate
+ }
+ MenuItem {} {
label {image over text}
user_data FL_ALIGN_IMAGE_OVER_TEXT
- xywh {10 10 100 20} type Radio labelsize 11
+ xywh {25 25 100 20} labelsize 11
}
MenuItem {} {
label {text over image}
- user_data FL_ALIGN_TEXT_OVER_IMAGE selected
- xywh {0 0 100 20} type Radio labelsize 11
+ user_data FL_ALIGN_TEXT_OVER_IMAGE
+ xywh {15 15 100 20} labelsize 11
}
MenuItem {} {
label {text next to image}
user_data FL_ALIGN_TEXT_NEXT_TO_IMAGE
- xywh {20 20 100 20} type Radio labelsize 11
+ xywh {35 35 100 20} labelsize 11
}
MenuItem {} {
label {image next to text}
user_data FL_ALIGN_IMAGE_NEXT_TO_TEXT
- xywh {30 30 100 20} type Radio labelsize 11
+ xywh {45 45 100 20} labelsize 11
}
MenuItem {} {
label {image is backdrop}
user_data FL_ALIGN_IMAGE_BACKDROP
- xywh {40 40 100 20} type Radio labelsize 11
+ xywh {55 55 100 20} labelsize 11
}
}
- Fl_Button {} {
- label {@-1<-}
- user_data FL_ALIGN_LEFT
- callback align_cb
- tooltip {Left-align the label.} xywh {270 115 20 20} type Toggle selection_color 8 labelsize 11 labelcolor 8
- }
- Fl_Button {} {
- label {@-1->}
- user_data FL_ALIGN_RIGHT
- callback align_cb
- tooltip {Right-align the label.} xywh {295 115 20 20} type Toggle selection_color 8 labelsize 11 labelcolor 8
- }
- Fl_Button {} {
- label {@-18}
- user_data FL_ALIGN_TOP
- callback align_cb
- tooltip {Top-align the label.} xywh {320 115 20 20} type Toggle selection_color 8 labelsize 11 labelcolor 8
- }
- Fl_Button {} {
- label {@-12}
- user_data FL_ALIGN_BOTTOM
- callback align_cb
- tooltip {Bottom-align the label.} xywh {345 115 20 20} type Toggle selection_color 8 labelsize 11 labelcolor 8
+ Fl_Choice {} {
+ callback align_position_cb open
+ xywh {280 115 85 20} down_box BORDER_BOX labelsize 11 textsize 11
+ } {
+ MenuItem {} {
+ label { Inside && Outside }
+ user_data 0xFFFFFFFF
+ xywh {135 135 100 20} labelfont 2 labelsize 11 deactivate
+ }
+ MenuItem {} {
+ label {top left}
+ user_data FL_ALIGN_TOP_LEFT
+ xywh {45 45 100 20} labelsize 11
+ }
+ MenuItem {} {
+ label top
+ user_data FL_ALIGN_TOP
+ xywh {55 55 100 20} labelsize 11
+ }
+ MenuItem {} {
+ label {top right}
+ user_data FL_ALIGN_TOP_RIGHT
+ xywh {65 65 100 20} labelsize 11
+ }
+ MenuItem {} {
+ label left
+ user_data FL_ALIGN_LEFT
+ xywh {75 75 100 20} labelsize 11
+ }
+ MenuItem {} {
+ label center
+ user_data FL_ALIGN_CENTER
+ xywh {35 35 100 20} labelsize 11
+ }
+ MenuItem {} {
+ label right
+ user_data FL_ALIGN_RIGHT
+ xywh {85 85 100 20} labelsize 11
+ }
+ MenuItem {} {
+ label {bottom left}
+ user_data FL_ALIGN_BOTTOM_LEFT
+ xywh {95 95 100 20} labelsize 11
+ }
+ MenuItem {} {
+ label bottom
+ user_data FL_ALIGN_BOTTOM
+ xywh {105 105 100 20} labelsize 11
+ }
+ MenuItem {} {
+ label {bottom right}
+ user_data FL_ALIGN_BOTTOM_RIGHT
+ xywh {115 115 100 20} labelsize 11 divider
+ }
+ MenuItem {} {
+ label { Outside Alignment }
+ user_data 0xFFFFFFFF
+ xywh {125 125 100 20} labelfont 2 labelsize 11 deactivate
+ }
+ MenuItem {} {
+ label {left top}
+ user_data FL_ALIGN_LEFT_TOP
+ xywh {135 135 100 20} labelsize 11
+ }
+ MenuItem {} {
+ label {right top}
+ user_data FL_ALIGN_RIGHT_TOP
+ xywh {145 145 100 20} labelsize 11
+ }
+ MenuItem {} {
+ label {left bottom}
+ user_data FL_ALIGN_LEFT_BOTTOM
+ xywh {155 155 100 20} labelsize 11
+ }
+ MenuItem {} {
+ label {right bottom}
+ user_data FL_ALIGN_RIGHT_BOTTOM
+ xywh {45 45 100 20} labelsize 11
+ }
}
Fl_Button {} {
label {@-3square}
diff --git a/fluid/widget_panel.h b/fluid/widget_panel.h
index 3c8dafb4c..94ddda7f4 100644
--- a/fluid/widget_panel.h
+++ b/fluid/widget_panel.h
@@ -45,8 +45,8 @@ extern void image_browse_cb(Fl_Button*, void*);
extern void inactive_cb(Fl_Input*, void*);
extern void inactive_browse_cb(Fl_Button*, void*);
extern void align_cb(Fl_Button*, void*);
-#include <FL/Fl_Menu_Button.H>
-extern void align_text_image_cb(Fl_Menu_Button*, void*);
+extern void align_text_image_cb(Fl_Choice*, void*);
+extern void align_position_cb(Fl_Choice*, void*);
#include <FL/Fl_Box.H>
#include <FL/Fl_Value_Input.H>
extern void x_cb(Fl_Value_Input*, void*);
@@ -115,9 +115,10 @@ extern void cancel_cb(Fl_Button*, void*);
extern void live_mode_cb(Fl_Button*, void*);
extern Fl_Button *wLiveMode;
Fl_Double_Window* make_widget_panel();
-extern Fl_Menu_Item menu_Text[];
extern Fl_Menu_Item menu_[];
extern Fl_Menu_Item menu_1[];
+extern Fl_Menu_Item menu_2[];
+extern Fl_Menu_Item menu_3[];
#endif
//