Author: matt
Date: 2008-01-04 13:45:49 -0800 (Fri, 04 Jan 2008)
New Revision: 6012
Log:
STR #1776: FLUID now tries to find a previously declared callback to avoid 
declaring one as 'extern'. I also replaced many 'public' Light_Buttons with 
pulldown menus which offer either 'local'/'global', or 
'private'/'public'/'protected', depending if the item is outside or inside a 
class. I took great care to make this change transparent to previous .fl files. 
Downward compatibility is only problematic if the new 'protected' keyword is 
used.

Modified:
   branches/branch-1.1/CHANGES
   branches/branch-1.1/fluid/Fl_Function_Type.cxx
   branches/branch-1.1/fluid/Fl_Type.cxx
   branches/branch-1.1/fluid/Fl_Type.h
   branches/branch-1.1/fluid/Fl_Widget_Type.cxx
   branches/branch-1.1/fluid/Fl_Window_Type.cxx
   branches/branch-1.1/fluid/function_panel.cxx
   branches/branch-1.1/fluid/function_panel.fl
   branches/branch-1.1/fluid/function_panel.h
   branches/branch-1.1/fluid/widget_panel.cxx
   branches/branch-1.1/fluid/widget_panel.fl
   branches/branch-1.1/fluid/widget_panel.h

Modified: branches/branch-1.1/CHANGES
===================================================================
--- branches/branch-1.1/CHANGES 2008-01-04 20:32:37 UTC (rev 6011)
+++ branches/branch-1.1/CHANGES 2008-01-04 21:45:49 UTC (rev 6012)
@@ -5,6 +5,12 @@
          STR #1639, STR #1645, STR #1644, STR #1792, STR #1793,
          STR #1742, STR #1777, STR #1794, STR #1827, STR #1843,
          STR #1796, STR #1815, STR #1726, STR #1753)
+       - FLUID checks for seperately declared callbacks to 
+         avoid a bogus "extern" declaration (STR #1776)
+       - Added "protected" class memebrs in FLUID
+       - Double-clicking a widget in a FLUID layout will show 
+         the item in the widget browser
+       - Fixed color highlighting in Text_Display
        - Fixed 16 bit PNM image support (STR #1847)
        - Fixed exposure event on zero size windows (STR #1824)
        - Fixed overlay offset for OS X Quartz (STR #1729)

Modified: branches/branch-1.1/fluid/Fl_Function_Type.cxx
===================================================================
--- branches/branch-1.1/fluid/Fl_Function_Type.cxx      2008-01-04 20:32:37 UTC 
(rev 6011)
+++ branches/branch-1.1/fluid/Fl_Function_Type.cxx      2008-01-04 21:45:49 UTC 
(rev 6012)
@@ -41,6 +41,8 @@
 extern const char* i18n_set;
 extern char i18n_program[];
 
+extern void redraw_browser();
+
 ////////////////////////////////////////////////////////////////
 // quick check of any C code for legality, returns an error message
 
@@ -134,7 +136,10 @@
 
 void Fl_Function_Type::write_properties() {
   Fl_Type::write_properties();
-  if (!public_) write_string("private");
+  switch (public_) {
+    case 0: write_string("private"); break;
+    case 2: write_string("protected"); break;
+  }
   if (cdecl_) write_string("C");
   if (return_type) {
     write_string("return_type");
@@ -145,6 +150,8 @@
 void Fl_Function_Type::read_property(const char *c) {
   if (!strcmp(c,"private")) {
     public_ = 0;
+  } else if (!strcmp(c,"protected")) {
+    public_ = 2;
   } else if (!strcmp(c,"C")) {
     cdecl_ = 1;
   } else if (!strcmp(c,"return_type")) {
@@ -161,7 +168,15 @@
   if (!function_panel) make_function_panel();
   f_return_type_input->static_value(return_type);
   f_name_input->static_value(name());
-  f_public_button->value(public_);
+  if (is_in_class()) {
+    f_public_member_choice->value(public_);
+    f_public_member_choice->show();
+    f_public_choice->hide();
+  } else {
+    f_public_choice->value(public_>0);
+    f_public_choice->show();
+    f_public_member_choice->hide();
+  }
   f_c_button->value(cdecl_);
   function_panel->show();
   const char* message = 0;
@@ -186,9 +201,18 @@
     message = c_check(c); if (message) continue;
     name(f_name_input->value());
     storestring(c, return_type);
-    if (public_ != f_public_button->value()) {
-      mod = 1;
-      public_ = f_public_button->value();
+    if (is_in_class()) {
+      if (public_ != f_public_member_choice->value()) {
+        mod = 1;
+        public_ = f_public_member_choice->value();
+        redraw_browser();
+      }
+    } else {
+      if (public_ != f_public_choice->value()) {
+        mod = 1;
+        public_ = f_public_choice->value();
+        redraw_browser();
+      }
     }
     if (cdecl_ != f_c_button->value()) {
       mod = 1;
@@ -356,9 +380,9 @@
 }
 
 int Fl_Function_Type::has_signature(const char *rtype, const char *sig) const {
-  if (!return_type) return 0;
+  if (rtype && !return_type) return 0;
   if (!name()) return 0;
-  if (   strcmp(return_type, rtype)==0 
+  if ( (rtype==0L || strcmp(return_type, rtype)==0) 
       && fl_filename_match(name(), sig)) {
     return 1;
   }
@@ -515,13 +539,18 @@
 
 void Fl_Decl_Type::write_properties() {
   Fl_Type::write_properties();
-  if (public_) write_string("public");
+  switch (public_) {
+    case 1: write_string("public"); break;
+    case 2: write_string("protected"); break;
+  }
   if (!static_) write_string("global");
 }
 
 void Fl_Decl_Type::read_property(const char *c) {
   if (!strcmp(c,"public")) {
     public_ = 1;
+  } else if (!strcmp(c,"protected")) {
+    public_ = 2;
   } else if (!strcmp(c,"global")) {
     static_ = 0;
   } else {
@@ -532,13 +561,15 @@
 void Fl_Decl_Type::open() {
   if (!decl_panel) make_decl_panel();
   decl_input->static_value(name());
-  decl_public_button->value(public_);
-  decl_static_button->value(static_);
-  if (public_)
-    decl_static_button->label("extern");
-  else 
-    decl_static_button->label("static");
-  char pp = public_;
+  if (is_in_class()) {
+    decl_class_choice->value(public_);
+    decl_class_choice->show();
+    decl_choice->hide();
+  } else {
+    decl_choice->value((public_&1)|((static_&1)<<1));
+    decl_choice->show();
+    decl_class_choice->hide();
+  }
   decl_panel->show();
   const char* message = 0;
   for (;;) { // repeat as long as there are errors
@@ -548,28 +579,27 @@
       if (w == decl_panel_cancel) goto BREAK2;
       else if (w == decl_panel_ok) break;
       else if (!w) Fl::wait();
-      if (pp != decl_public_button->value()) {
-        pp = decl_public_button->value();
-        if (pp)
-          decl_static_button->label("extern");
-        else
-          decl_static_button->label("static");
-        decl_static_button->redraw();
-      }
     }
     const char*c = decl_input->value();
     while (isspace(*c)) c++;
     message = c_check(c&&c[0]=='#' ? c+1 : c);
     if (message) continue;
     name(c);
-    if (public_!=decl_public_button->value()) {
-      set_modflag(1);
-      public_ = decl_public_button->value();
+    if (is_in_class()) {
+      if (public_!=decl_class_choice->value()) {
+        set_modflag(1);
+        public_ = decl_class_choice->value();
+      }
+    } else {
+      if (public_!=(decl_choice->value()&1)) {
+        set_modflag(1);
+        public_ = (decl_choice->value()&1);
+      }
+      if (static_!=((decl_choice->value()>>1)&1)) {
+        set_modflag(1);
+        static_ = ((decl_choice->value()>>1)&1);
+      }
     }
-    if (static_!=decl_static_button->value()) {
-      set_modflag(1);
-      static_ = decl_static_button->value();
-    }
     break;
   }
  BREAK2:
@@ -652,7 +682,10 @@
 
 void Fl_DeclBlock_Type::write_properties() {
   Fl_Type::write_properties();
-  if (public_) write_string("public");
+  switch (public_) {
+    case 1: write_string("public"); break;
+    case 2: write_string("protected"); break;
+  }
   write_string("after");
   write_word(after);
 }
@@ -660,6 +693,8 @@
 void Fl_DeclBlock_Type::read_property(const char *c) {
   if(!strcmp(c,"public")) {
     public_ = 1;
+  } else if(!strcmp(c,"protected")) {
+    public_ = 2;
   } else  if (!strcmp(c,"after")) {
     storestring(read_word(),after);
   } else {
@@ -670,7 +705,7 @@
 void Fl_DeclBlock_Type::open() {
   if (!declblock_panel) make_declblock_panel();
   decl_before_input->static_value(name());
-  declblock_public_button->value(public_);
+  declblock_public_choice->value((public_>0));
   decl_after_input->static_value(after);
   declblock_panel->show();
   const char* message = 0;
@@ -692,9 +727,10 @@
     message = c_check(c&&c[0]=='#' ? c+1 : c);
     if (message) continue;
     storestring(c,after);
-    if (public_ != declblock_public_button->value()) {
+    if (public_ != declblock_public_choice->value()) {
       set_modflag(1);
-      public_ = declblock_public_button->value();
+      public_ = declblock_public_choice->value();
+      redraw_browser();
     }
     break;
   }
@@ -1017,12 +1053,17 @@
     write_string(":");
     write_word(subclass_of);
   }
-  if (!public_) write_string("private");
+  switch (public_) {
+    case 0: write_string("private"); break;
+    case 2: write_string("protected"); break;
+  }
 }
 
 void Fl_Class_Type::read_property(const char *c) {
   if (!strcmp(c,"private")) {
     public_ = 0;
+  } else if (!strcmp(c,"protected")) {
+    public_ = 2;
   } else if (!strcmp(c,":")) {
     storestring(read_word(), subclass_of);
   } else {
@@ -1099,7 +1140,11 @@
   if (current_widget_class && current_widget_class->write_public_state == 
state) return;
   if (current_class) current_class->write_public_state = state;
   if (current_widget_class) current_widget_class->write_public_state = state;
-  write_h(state ? "public:\n" : "private:\n");
+  switch (state) {
+    case 0: write_h("private:\n"); break;
+    case 1: write_h("public:\n"); break;
+    case 2: write_h("protected:\n"); break;
+  }
 }
 
 void Fl_Class_Type::write_code1() {

Modified: branches/branch-1.1/fluid/Fl_Type.cxx
===================================================================
--- branches/branch-1.1/fluid/Fl_Type.cxx       2008-01-04 20:32:37 UTC (rev 
6011)
+++ branches/branch-1.1/fluid/Fl_Type.cxx       2008-01-04 21:45:49 UTC (rev 
6012)
@@ -49,9 +49,11 @@
 
 #include <FL/Fl_Pixmap.H>
 #include "pixmaps/lock.xpm"
+#include "pixmaps/protected.xpm"
 //#include "pixmaps/unlock.xpm"
 
 static Fl_Pixmap       lock_pixmap(lock_xpm);
+static Fl_Pixmap       protected_pixmap(protected_xpm);
 //static Fl_Pixmap     unlock_pixmap(unlock_xpm);
 
 #include "pixmaps/flWindow.xpm"
@@ -252,8 +254,10 @@
   else fl_color(FL_FOREGROUND_COLOR);
   Fl_Pixmap *pm = pixmap[l->pixmapID()];
   if (pm) pm->draw(X-18, Y);
-  if (l->is_public() == 0) lock_pixmap.draw(X - 17, Y);
-  else if (l->is_public() > 0) ; //unlock_pixmap.draw(X - 17, Y);
+  switch (l->is_public()) {
+    case 0: lock_pixmap.draw(X - 17, Y); break;
+    case 2: protected_pixmap.draw(X - 17, Y); break;
+  }
   if (l->is_parent()) {
     if (!l->next || l->next->level <= l->level) {
       if (l->open_!=(l==pushedtitle)) {
@@ -844,6 +848,40 @@
 int Fl_Type::read_fdesign(const char*, const char*) {return 0;}
 
 /**
+ * Return 1 if the list contains a function with the given signature at the 
top level
+ */
+int has_toplevel_function(const char *rtype, const char *sig) {
+  Fl_Type *child;
+  for (child = Fl_Type::first; child; child = child->next) {
+    if (!child->is_in_class() && strcmp(child->type_name(), "Function")==0) {
+      const Fl_Function_Type *fn = (const Fl_Function_Type*)child;
+      if (fn->has_signature(rtype, sig))
+        return 1;
+    }
+  }
+  return 0;
+}
+
+/**
+ * Make sure that the given item is visible in the browser by opening
+ * all parent groups and moving the item into the visible space.
+ */
+void reveal_in_browser(Fl_Type *t) {
+  Fl_Type *p = t->parent;
+  if (p) {
+    for (;;) {
+      if (!p->open_)
+        p->open_ = 1;
+      if (!p->parent) break;
+      p = p->parent;
+    }
+    fixvisible(p);
+  }
+  widget_browser->display(t);
+  redraw_browser();
+}
+
+/**
  * Build widgets and dataset needed in live mode.
  * \return a widget pointer that the live mode initiator can 'show()'
  * \see leave_live_mode()

Modified: branches/branch-1.1/fluid/Fl_Type.h
===================================================================
--- branches/branch-1.1/fluid/Fl_Type.h 2008-01-04 20:32:37 UTC (rev 6011)
+++ branches/branch-1.1/fluid/Fl_Type.h 2008-01-04 21:45:49 UTC (rev 6012)
@@ -721,6 +721,8 @@
 extern int modflag;
 void delete_all(int selected_only=0);
 void selection_changed(Fl_Type* new_current);
+void reveal_in_browser(Fl_Type*);
+int has_toplevel_function(const char *rtype, const char *sig);
 
 // file operations:
 #  ifdef __GNUC__

Modified: branches/branch-1.1/fluid/Fl_Widget_Type.cxx
===================================================================
--- branches/branch-1.1/fluid/Fl_Widget_Type.cxx        2008-01-04 20:32:37 UTC 
(rev 6011)
+++ branches/branch-1.1/fluid/Fl_Widget_Type.cxx        2008-01-04 21:45:49 UTC 
(rev 6012)
@@ -318,13 +318,39 @@
   }
 }
 
-void name_public_cb(Fl_Light_Button* i, void* v) {
+void name_public_member_cb(Fl_Choice* i, void* v) {
   if (v == LOAD) {
     i->value(current_widget->public_);
+    if (current_widget->is_in_class()) i->show(); else i->hide();
   } else {
     int mod = 0;
     for (Fl_Type *o = Fl_Type::first; o; o = o->next) {
       if (o->selected && o->is_widget()) {
+        Fl_Widget_Type *w = ((Fl_Widget_Type*)o);
+        if (w->is_in_class()) {
+          w->public_ = i->value();
+        } else {
+          // if this is not in a class, it can be only private or public
+          w->public_ = (i->value()>0);
+        }
+       mod = 1;
+      }
+    }
+    if (mod) {
+      set_modflag(1);
+      redraw_browser();
+    }
+  }
+}    
+
+void name_public_cb(Fl_Choice* i, void* v) {
+  if (v == LOAD) {
+    i->value(current_widget->public_>0);
+    if (current_widget->is_in_class()) i->hide(); else i->show();
+  } else {
+    int mod = 0;
+    for (Fl_Type *o = Fl_Type::first; o; o = o->next) {
+      if (o->selected && o->is_widget()) {
        ((Fl_Widget_Type*)o)->public_ = i->value();
        mod = 1;
       }
@@ -1883,10 +1909,13 @@
   if (callback() && is_name(callback())) {
     int write_extern_declaration = 1;
     const Fl_Class_Type *cc = is_in_class();
+    char buf[1024]; snprintf(buf, 1023, "%s(*)",  callback());
     if (cc) {
-      char buf[1024]; snprintf(buf, 1023, "%s(*)",  callback());
       if (cc->has_function("static void", buf))
         write_extern_declaration = 0;
+    } else {
+      if (has_toplevel_function(0L, buf))
+        write_extern_declaration = 0;
     }
     if (write_extern_declaration)
       write_declare("extern void %s(%s*, %s);", callback(), t,
@@ -2276,7 +2305,11 @@
 void Fl_Widget_Type::write_properties() {
   Fl_Type::write_properties();
   write_indent(level+1);
-  if (!public_) write_string("private");
+  switch (public_) {
+    case 0: write_string("private"); break;
+    case 1: break;
+    case 2: write_string("protected"); break;
+  }
   if (tooltip() && *tooltip()) {
     write_string("tooltip");
     write_word(tooltip());
@@ -2382,6 +2415,8 @@
   int x,y,w,h; Fl_Font f; int s; Fl_Color cc;
   if (!strcmp(c,"private")) {
     public_ = 0;
+  } else if (!strcmp(c,"protected")) {
+    public_ = 2;
   } else if (!strcmp(c,"xywh")) {
     if (sscanf(read_word(),"%d %d %d %d",&x,&y,&w,&h) == 4) {
       x += pasteoffset;

Modified: branches/branch-1.1/fluid/Fl_Window_Type.cxx
===================================================================
--- branches/branch-1.1/fluid/Fl_Window_Type.cxx        2008-01-04 20:32:37 UTC 
(rev 6011)
+++ branches/branch-1.1/fluid/Fl_Window_Type.cxx        2008-01-04 21:45:49 UTC 
(rev 6012)
@@ -1145,7 +1145,11 @@
       Fl_Widget_Type* myo = (Fl_Widget_Type*)i;
       for (Fl_Widget *o1 = myo->o; o1; o1 = o1->parent())
        if (!o1->visible()) goto CONTINUE2;
-      if (Fl::event_inside(myo->o)) selection = myo;
+      if (Fl::event_inside(myo->o)) {
+        selection = myo;
+        if (Fl::event_clicks()==1)
+          reveal_in_browser(myo);
+      }
     CONTINUE2:;
     }}
     // see if user grabs edges of selected region:

Modified: branches/branch-1.1/fluid/function_panel.cxx
===================================================================
--- branches/branch-1.1/fluid/function_panel.cxx        2008-01-04 20:32:37 UTC 
(rev 6011)
+++ branches/branch-1.1/fluid/function_panel.cxx        2008-01-04 21:45:49 UTC 
(rev 6012)
@@ -37,8 +37,23 @@
 
 Fl_Double_Window *function_panel=(Fl_Double_Window *)0;
 
-Fl_Light_Button *f_public_button=(Fl_Light_Button *)0;
+Fl_Choice *f_public_member_choice=(Fl_Choice *)0;
 
+Fl_Menu_Item menu_f_public_member_choice[] = {
+ {"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_Choice *f_public_choice=(Fl_Choice *)0;
+
+Fl_Menu_Item menu_f_public_choice[] = {
+ {"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}
+};
+
 Fl_Light_Button *f_c_button=(Fl_Light_Button *)0;
 
 Fl_Input *f_name_input=(Fl_Input *)0;
@@ -52,16 +67,27 @@
 Fl_Double_Window* make_function_panel() {
   { Fl_Double_Window* o = function_panel = new Fl_Double_Window(290, 150, 
"Function/Method Properties");
     { Fl_Group* o = new Fl_Group(10, 10, 270, 20);
-      { f_public_button = new Fl_Light_Button(10, 10, 60, 20, "public");
-        f_public_button->tooltip("Make the function or method publicly 
accessible.");
-        f_public_button->labelsize(11);
-        f_public_button->when(FL_WHEN_NEVER);
-      } // Fl_Light_Button* f_public_button
-      { f_c_button = new Fl_Light_Button(80, 10, 80, 20, "C declaration");
+      { f_public_member_choice = new Fl_Choice(10, 10, 75, 20);
+        f_public_member_choice->tooltip("Change member access attribute.");
+        f_public_member_choice->down_box(FL_BORDER_BOX);
+        f_public_member_choice->labelsize(11);
+        f_public_member_choice->textsize(11);
+        f_public_member_choice->when(FL_WHEN_CHANGED);
+        f_public_member_choice->menu(menu_f_public_member_choice);
+      } // Fl_Choice* f_public_member_choice
+      { f_public_choice = new Fl_Choice(10, 10, 75, 20);
+        f_public_choice->tooltip("Change widget accessibility.");
+        f_public_choice->down_box(FL_BORDER_BOX);
+        f_public_choice->labelsize(11);
+        f_public_choice->textsize(11);
+        f_public_choice->when(FL_WHEN_CHANGED);
+        f_public_choice->menu(menu_f_public_choice);
+      } // Fl_Choice* f_public_choice
+      { f_c_button = new Fl_Light_Button(95, 10, 80, 20, "C declaration");
         f_c_button->tooltip("Declare with a C interface instead of C++.");
         f_c_button->labelsize(11);
       } // Fl_Light_Button* f_c_button
-      { Fl_Box* o = new Fl_Box(170, 10, 110, 20);
+      { Fl_Box* o = new Fl_Box(235, 10, 45, 20);
         Fl_Group::current()->resizable(o);
       } // Fl_Box* o
       o->end();
@@ -210,6 +236,16 @@
 
 Fl_Double_Window *declblock_panel=(Fl_Double_Window *)0;
 
+Fl_Choice *declblock_public_choice=(Fl_Choice *)0;
+
+Fl_Menu_Item menu_declblock_public_choice[] = {
+ {"in source code only", 0,  0, (void*)(0), 0, FL_NORMAL_LABEL, 0, 11, 0},
+ {"in header and source", 0,  0, (void*)(1), 0, FL_NORMAL_LABEL, 0, 11, 0},
+ {0,0,0,0,0,0,0,0,0}
+};
+
+Fl_Light_Button *declblock_public_button_x=(Fl_Light_Button *)0;
+
 Fl_Input *decl_before_input=(Fl_Input *)0;
 
 Fl_Input *decl_after_input=(Fl_Input *)0;
@@ -218,11 +254,29 @@
 
 Fl_Button *declblock_panel_cancel=(Fl_Button *)0;
 
-Fl_Light_Button *declblock_public_button=(Fl_Light_Button *)0;
-
 Fl_Double_Window* make_declblock_panel() {
   { Fl_Double_Window* o = declblock_panel = new Fl_Double_Window(300, 135, 
"Declaration Block Properties");
     declblock_panel->labelsize(11);
+    { Fl_Group* o = new Fl_Group(10, 10, 280, 20);
+      { declblock_public_choice = new Fl_Choice(10, 10, 140, 20);
+        declblock_public_choice->tooltip("Change widget accessibility.");
+        declblock_public_choice->down_box(FL_BORDER_BOX);
+        declblock_public_choice->labelsize(11);
+        declblock_public_choice->textsize(11);
+        declblock_public_choice->when(FL_WHEN_NEVER);
+        declblock_public_choice->menu(menu_declblock_public_choice);
+      } // Fl_Choice* declblock_public_choice
+      { declblock_public_button_x = new Fl_Light_Button(10, 10, 60, 20, 
"public");
+        declblock_public_button_x->tooltip("Make the declaration publicly 
accessible.");
+        declblock_public_button_x->labelsize(11);
+        declblock_public_button_x->when(FL_WHEN_NEVER);
+        declblock_public_button_x->hide();
+      } // Fl_Light_Button* declblock_public_button_x
+      { Fl_Box* o = new Fl_Box(155, 10, 135, 20);
+        Fl_Group::current()->resizable(o);
+      } // Fl_Box* o
+      o->end();
+    } // Fl_Group* o
     { decl_before_input = new Fl_Input(10, 40, 280, 20);
       decl_before_input->tooltip("#ifdef or similar conditional declaration 
block.");
       decl_before_input->labelsize(11);
@@ -254,17 +308,6 @@
       } // Fl_Box* o
       o->end();
     } // Fl_Group* o
-    { Fl_Group* o = new Fl_Group(10, 10, 280, 20);
-      { declblock_public_button = new Fl_Light_Button(10, 10, 60, 20, 
"public");
-        declblock_public_button->tooltip("Make the declaration publicly 
accessible.");
-        declblock_public_button->labelsize(11);
-        declblock_public_button->when(FL_WHEN_NEVER);
-      } // Fl_Light_Button* declblock_public_button
-      { Fl_Box* o = new Fl_Box(80, 10, 210, 20);
-        Fl_Group::current()->resizable(o);
-      } // Fl_Box* o
-      o->end();
-    } // Fl_Group* o
     o->size_range(o->w(), o->h(), Fl::w(), o->h());
     declblock_panel->set_modal();
     declblock_panel->end();
@@ -274,10 +317,25 @@
 
 Fl_Double_Window *decl_panel=(Fl_Double_Window *)0;
 
-Fl_Light_Button *decl_public_button=(Fl_Light_Button *)0;
+Fl_Choice *decl_choice=(Fl_Choice *)0;
 
-Fl_Light_Button *decl_static_button=(Fl_Light_Button *)0;
+Fl_Menu_Item menu_decl_choice[] = {
+ {"in source file only", 0,  0, 0, 0, FL_NORMAL_LABEL, 0, 11, 0},
+ {"in header file only", 0,  0, 0, 0, FL_NORMAL_LABEL, 0, 11, 0},
+ {"\"static\" in source file", 0,  0, 0, 0, FL_NORMAL_LABEL, 0, 11, 0},
+ {"in source and \"extern\" in header", 0,  0, 0, 0, FL_NORMAL_LABEL, 0, 11, 
0},
+ {0,0,0,0,0,0,0,0,0}
+};
 
+Fl_Choice *decl_class_choice=(Fl_Choice *)0;
+
+Fl_Menu_Item menu_decl_class_choice[] = {
+ {"private", 0,  0, 0, 0, FL_NORMAL_LABEL, 0, 11, 0},
+ {"public", 0,  0, 0, 0, FL_NORMAL_LABEL, 0, 11, 0},
+ {"protected", 0,  0, 0, 0, FL_NORMAL_LABEL, 0, 11, 0},
+ {0,0,0,0,0,0,0,0,0}
+};
+
 Fl_Input *decl_input=(Fl_Input *)0;
 
 Fl_Return_Button *decl_panel_ok=(Fl_Return_Button *)0;
@@ -288,20 +346,21 @@
   { Fl_Double_Window* o = decl_panel = new Fl_Double_Window(290, 150, 
"Declaration Properties");
     decl_panel->align(FL_ALIGN_CLIP|FL_ALIGN_INSIDE);
     { Fl_Group* o = new Fl_Group(10, 10, 270, 20);
-      { decl_public_button = new Fl_Light_Button(10, 10, 60, 20, "public");
-        decl_public_button->tooltip("Make the declaration publicly 
accessible.");
-        decl_public_button->labelsize(11);
-        decl_public_button->when(FL_WHEN_NEVER);
-      } // Fl_Light_Button* decl_public_button
-      { decl_static_button = new Fl_Light_Button(80, 10, 60, 20, "static");
-        decl_static_button->tooltip("Prepend \'static\' to private 
declarations in the source code, or \'extern\' \
-to public declarations in the header file.");
-        decl_static_button->labelsize(11);
-        decl_static_button->when(FL_WHEN_NEVER);
-      } // Fl_Light_Button* decl_static_button
-      { Fl_Box* o = new Fl_Box(150, 10, 130, 20);
+      { Fl_Box* o = new Fl_Box(200, 10, 80, 20);
         Fl_Group::current()->resizable(o);
       } // Fl_Box* o
+      { decl_choice = new Fl_Choice(10, 10, 185, 20);
+        decl_choice->down_box(FL_BORDER_BOX);
+        decl_choice->labelsize(11);
+        decl_choice->textsize(11);
+        decl_choice->menu(menu_decl_choice);
+      } // Fl_Choice* decl_choice
+      { decl_class_choice = new Fl_Choice(10, 10, 75, 20);
+        decl_class_choice->down_box(FL_BORDER_BOX);
+        decl_class_choice->labelsize(11);
+        decl_class_choice->textsize(11);
+        decl_class_choice->menu(menu_decl_class_choice);
+      } // Fl_Choice* decl_class_choice
       o->end();
     } // Fl_Group* o
     { decl_input = new Fl_Input(10, 40, 270, 20, "Can be any declaration, like 
\"int x;\", an external symbol like \"extern int\
@@ -348,20 +407,22 @@
 Fl_Button *c_panel_cancel=(Fl_Button *)0;
 
 Fl_Double_Window* make_class_panel() {
-  { Fl_Double_Window* o = class_panel = new Fl_Double_Window(300, 140, "Class 
Properties");
+  { Fl_Double_Window* o = class_panel = new Fl_Double_Window(300, 115, "Class 
Properties");
     class_panel->labelsize(11);
     { Fl_Group* o = new Fl_Group(10, 10, 280, 20);
+      o->hide();
       { c_public_button = new Fl_Light_Button(10, 10, 60, 20, "public");
         c_public_button->tooltip("Make the class publicly accessible.");
         c_public_button->labelsize(11);
         c_public_button->when(FL_WHEN_NEVER);
+        c_public_button->hide();
       } // Fl_Light_Button* c_public_button
       { Fl_Box* o = new Fl_Box(80, 10, 210, 20);
         Fl_Group::current()->resizable(o);
       } // Fl_Box* o
       o->end();
     } // Fl_Group* o
-    { c_name_input = new Fl_Input(10, 45, 280, 20, "Name:");
+    { c_name_input = new Fl_Input(10, 20, 280, 20, "Name:");
       c_name_input->tooltip("Name of class.");
       c_name_input->labelfont(1);
       c_name_input->labelsize(11);
@@ -371,7 +432,7 @@
       c_name_input->when(FL_WHEN_NEVER);
       Fl_Group::current()->resizable(c_name_input);
     } // Fl_Input* c_name_input
-    { c_subclass_input = new Fl_Input(10, 80, 280, 20, "Subclass of (text 
between : and {)");
+    { c_subclass_input = new Fl_Input(10, 55, 280, 20, "Subclass of (text 
between : and {)");
       c_subclass_input->tooltip("Name of subclass.");
       c_subclass_input->labelfont(1);
       c_subclass_input->labelsize(11);
@@ -380,16 +441,16 @@
       c_subclass_input->align(FL_ALIGN_TOP_LEFT);
       c_subclass_input->when(FL_WHEN_NEVER);
     } // Fl_Input* c_subclass_input
-    { Fl_Group* o = new Fl_Group(10, 110, 280, 20);
-      { c_panel_ok = new Fl_Return_Button(160, 110, 60, 20, "OK");
+    { Fl_Group* o = new Fl_Group(10, 85, 280, 20);
+      { c_panel_ok = new Fl_Return_Button(160, 85, 60, 20, "OK");
         c_panel_ok->labelsize(11);
         c_panel_ok->window()->hotspot(c_panel_ok);
       } // Fl_Return_Button* c_panel_ok
-      { c_panel_cancel = new Fl_Button(230, 110, 60, 20, "Cancel");
+      { c_panel_cancel = new Fl_Button(230, 85, 60, 20, "Cancel");
         c_panel_cancel->shortcut(0xff1b);
         c_panel_cancel->labelsize(11);
       } // Fl_Button* c_panel_cancel
-      { Fl_Box* o = new Fl_Box(10, 110, 140, 20);
+      { Fl_Box* o = new Fl_Box(10, 85, 140, 20);
         Fl_Group::current()->resizable(o);
       } // Fl_Box* o
       o->end();

Modified: branches/branch-1.1/fluid/function_panel.fl
===================================================================
--- branches/branch-1.1/fluid/function_panel.fl 2008-01-04 20:32:37 UTC (rev 
6011)
+++ branches/branch-1.1/fluid/function_panel.fl 2008-01-04 21:45:49 UTC (rev 
6012)
@@ -43,26 +43,54 @@
 
 decl {extern void select_only(Fl_Type*);} {} 
 
-Function {make_function_panel()} {open
-} {
+Function {make_function_panel()} {} {
   Fl_Window function_panel {
-    label {Function/Method Properties}
-    xywh {419 200 290 150} type Double hide resizable
-    code0 {o->size_range(o->w(), o->h(), Fl::w(), o->h());} modal
+    label {Function/Method Properties} open
+    xywh {412 442 290 150} type Double resizable
+    code0 {o->size_range(o->w(), o->h(), Fl::w(), o->h());} modal visible
   } {
     Fl_Group {} {open
       xywh {10 10 270 20}
     } {
-      Fl_Light_Button f_public_button {
-        label public
-        tooltip {Make the function or method publicly accessible.} xywh {10 10 
60 20} labelsize 11 when 0
+      Fl_Choice f_public_member_choice {
+        tooltip {Change member access attribute.} xywh {10 10 75 20} down_box 
BORDER_BOX labelsize 11 when 1 textsize 11
+      } {
+        MenuItem {} {
+          label private
+          user_data 0 user_data_type long
+          xywh {5 5 100 20} labelsize 11
+        }
+        MenuItem {} {
+          label public
+          user_data 1 user_data_type long
+          xywh {5 5 100 20} labelsize 11
+        }
+        MenuItem {} {
+          label protected
+          user_data 2 user_data_type long
+          xywh {5 5 100 20} labelsize 11
+        }
       }
+      Fl_Choice f_public_choice {
+        tooltip {Change widget accessibility.} xywh {10 10 75 20} down_box 
BORDER_BOX labelsize 11 when 1 textsize 11
+      } {
+        MenuItem {} {
+          label local
+          user_data 0 user_data_type long
+          xywh {15 15 100 20} labelsize 11
+        }
+        MenuItem {} {
+          label global
+          user_data 1 user_data_type long
+          xywh {15 15 100 20} labelsize 11
+        }
+      }
       Fl_Light_Button f_c_button {
         label {C declaration}
-        tooltip {Declare with a C interface instead of C++.} xywh {80 10 80 
20} labelsize 11
+        tooltip {Declare with a C interface instead of C++.} xywh {95 10 80 
20} labelsize 11
       }
       Fl_Box {} {
-        xywh {170 10 110 20} resizable
+        xywh {235 10 45 20} resizable
       }
     }
     Fl_Input f_name_input {
@@ -73,7 +101,7 @@
       label {Return Type: (blank to return outermost widget)}
       tooltip {The return type of the function or method.} xywh {10 90 270 20} 
labelfont 1 labelsize 11 align 5 when 0 textfont 4 textsize 11
     }
-    Fl_Group {} {open
+    Fl_Group {} {
       xywh {10 120 270 20}
     } {
       Fl_Return_Button f_panel_ok {
@@ -91,12 +119,11 @@
   }
 } 
 
-Function {make_code_panel()} {open
-} {
+Function {make_code_panel()} {} {
   Fl_Window code_panel {
     label {Code Properties}
-    xywh {353 262 540 180} type Double labelsize 11 hide resizable
-    code0 {o->size_range(200, 150);} modal
+    xywh {353 262 540 180} type Double labelsize 11 resizable
+    code0 {o->size_range(200, 150);} modal visible
   } {
     Fl_Text_Editor code_input {
       xywh {10 10 520 130} box DOWN_BOX labelsize 11 textfont 4 textsize 11 
resizable
@@ -122,12 +149,11 @@
   }
 } 
 
-Function {make_codeblock_panel()} {open
-} {
+Function {make_codeblock_panel()} {} {
   Fl_Window codeblock_panel {
-    label {Code Block Properties} selected
-    xywh {468 221 300 115} type Double labelsize 11 hide resizable
-    code0 {o->size_range(o->w(), o->h(), Fl::w(), o->h());} modal
+    label {Code Block Properties}
+    xywh {468 221 300 115} type Double labelsize 11 resizable
+    code0 {o->size_range(o->w(), o->h(), Fl::w(), o->h());} modal visible
   } {
     Fl_Input code_before_input {
       label {Conditional code block}
@@ -155,13 +181,37 @@
   }
 } 
 
-Function {make_declblock_panel()} {open
-} {
+Function {make_declblock_panel()} {} {
   Fl_Window declblock_panel {
-    label {Declaration Block Properties}
-    xywh {428 215 300 135} type Double labelsize 11 hide resizable
-    code0 {o->size_range(o->w(), o->h(), Fl::w(), o->h());} modal
+    label {Declaration Block Properties} open
+    xywh {428 215 300 135} type Double labelsize 11 resizable
+    code0 {o->size_range(o->w(), o->h(), Fl::w(), o->h());} modal visible
   } {
+    Fl_Group {} {open
+      xywh {10 10 280 20}
+    } {
+      Fl_Choice declblock_public_choice {open
+        tooltip {Change widget accessibility.} xywh {10 10 140 20} down_box 
BORDER_BOX labelsize 11 when 0 textsize 11
+      } {
+        MenuItem {} {
+          label {in source code only}
+          user_data 0 user_data_type long
+          xywh {25 25 100 20} labelsize 11
+        }
+        MenuItem {} {
+          label {in header and source}
+          user_data 1 user_data_type long
+          xywh {25 25 100 20} labelsize 11
+        }
+      }
+      Fl_Light_Button declblock_public_button_x {
+        label public
+        tooltip {Make the declaration publicly accessible.} xywh {10 10 60 20} 
labelsize 11 when 0 hide
+      }
+      Fl_Box {} {
+        xywh {155 10 135 20} resizable
+      }
+    }
     Fl_Input decl_before_input {
       tooltip {\#ifdef or similar conditional declaration block.} xywh {10 40 
280 20} labelsize 11 align 5 when 0 textfont 4 textsize 11 resizable
     }
@@ -169,7 +219,7 @@
       label {"\\n...child code...\\n" is inserted here}
       tooltip {\#endif or similar declaration code block.} xywh {10 75 280 20} 
labelsize 11 align 5 when 0 textfont 4 textsize 11
     }
-    Fl_Group {} {open
+    Fl_Group {} {
       xywh {10 105 280 20}
     } {
       Fl_Return_Button declblock_panel_ok {
@@ -184,40 +234,57 @@
         xywh {10 105 140 20} resizable
       }
     }
-    Fl_Group {} {open
-      xywh {10 10 280 20}
-    } {
-      Fl_Light_Button declblock_public_button {
-        label public
-        tooltip {Make the declaration publicly accessible.} xywh {10 10 60 20} 
labelsize 11 when 0
-      }
-      Fl_Box {} {
-        xywh {80 10 210 20} resizable
-      }
-    }
   }
 } 
 
-Function {make_decl_panel()} {open
+Function {make_decl_panel()} {selected
 } {
   Fl_Window decl_panel {
     label {Declaration Properties} open
-    xywh {412 206 290 150} type Double align 80 resizable
+    xywh {501 185 290 150} type Double align 80 resizable
     code0 {o->size_range(o->w(), o->h(), Fl::w(), o->h());} visible
   } {
     Fl_Group {} {open
       xywh {10 10 270 20}
     } {
-      Fl_Light_Button decl_public_button {
-        label public
-        tooltip {Make the declaration publicly accessible.} xywh {10 10 60 20} 
labelsize 11 when 0
+      Fl_Box {} {
+        xywh {200 10 80 20} resizable
       }
-      Fl_Light_Button decl_static_button {
-        label static
-        tooltip {Prepend 'static' to private declarations in the source code, 
or 'extern' to public declarations in the header file.} xywh {80 10 60 20} 
labelsize 11 when 0
+      Fl_Choice decl_choice {
+        xywh {10 10 185 20} down_box BORDER_BOX labelsize 11 textsize 11
+      } {
+        MenuItem {} {
+          label {in source file only}
+          xywh {0 0 100 20} labelsize 11
+        }
+        MenuItem {} {
+          label {in header file only}
+          xywh {0 0 100 20} labelsize 11
+        }
+        MenuItem {} {
+          label {"static" in source file}
+          xywh {0 0 100 20} labelsize 11
+        }
+        MenuItem {} {
+          label {in source and "extern" in header}
+          xywh {0 0 100 20} labelsize 11
+        }
       }
-      Fl_Box {} {
-        xywh {150 10 130 20} resizable
+      Fl_Choice decl_class_choice {
+        xywh {10 10 75 20} down_box BORDER_BOX labelsize 11 textsize 11
+      } {
+        MenuItem {} {
+          label private
+          xywh {10 10 100 20} labelsize 11
+        }
+        MenuItem {} {
+          label public
+          xywh {10 10 100 20} labelsize 11
+        }
+        MenuItem {} {
+          label protected
+          xywh {10 10 100 20} labelsize 11
+        }
       }
     }
     Fl_Input decl_input {
@@ -242,19 +309,18 @@
   }
 } 
 
-Function {make_class_panel()} {open
-} {
+Function {make_class_panel()} {} {
   Fl_Window class_panel {
-    label {Class Properties}
-    xywh {449 218 300 140} type Double labelsize 11 hide resizable
-    code0 {o->size_range(o->w(), o->h(), Fl::w(), o->h());} modal
+    label {Class Properties} open
+    xywh {449 218 300 115} type Double labelsize 11 resizable
+    code0 {o->size_range(o->w(), o->h(), Fl::w(), o->h());} modal visible
   } {
     Fl_Group {} {open
-      xywh {10 10 280 20}
+      xywh {10 10 280 20} hide
     } {
       Fl_Light_Button c_public_button {
         label public
-        tooltip {Make the class publicly accessible.} xywh {10 10 60 20} 
labelsize 11 when 0
+        tooltip {Make the class publicly accessible.} xywh {10 10 60 20} 
labelsize 11 when 0 hide
       }
       Fl_Box {} {
         xywh {80 10 210 20} resizable
@@ -262,36 +328,35 @@
     }
     Fl_Input c_name_input {
       label {Name:}
-      tooltip {Name of class.} xywh {10 45 280 20} labelfont 1 labelsize 11 
align 5 when 0 textfont 4 textsize 11 resizable
+      tooltip {Name of class.} xywh {10 20 280 20} labelfont 1 labelsize 11 
align 5 when 0 textfont 4 textsize 11 resizable
     }
     Fl_Input c_subclass_input {
       label {Subclass of (text between : and \{)}
-      tooltip {Name of subclass.} xywh {10 80 280 20} labelfont 1 labelsize 11 
align 5 when 0 textfont 4 textsize 11
+      tooltip {Name of subclass.} xywh {10 55 280 20} labelfont 1 labelsize 11 
align 5 when 0 textfont 4 textsize 11
     }
     Fl_Group {} {open
-      xywh {10 110 280 20}
+      xywh {10 85 280 20}
     } {
       Fl_Return_Button c_panel_ok {
         label OK
-        xywh {160 110 60 20} labelsize 11 hotspot
+        xywh {160 85 60 20} labelsize 11 hotspot
       }
       Fl_Button c_panel_cancel {
         label Cancel
-        xywh {230 110 60 20} shortcut 0xff1b labelsize 11
+        xywh {230 85 60 20} shortcut 0xff1b labelsize 11
       }
       Fl_Box {} {
-        xywh {10 110 140 20} resizable
+        xywh {10 85 140 20} resizable
       }
     }
   }
 } 
 
-Function {make_comment_panel()} {open
-} {
+Function {make_comment_panel()} {} {
   Fl_Window comment_panel {
     label {Comment Properties}
-    xywh {422 190 550 280} type Double labelsize 11 hide resizable
-    code0 {o->size_range(320, 180);} modal
+    xywh {422 190 550 280} type Double labelsize 11 resizable
+    code0 {o->size_range(320, 180);} modal visible
   } {
     Fl_Text_Editor comment_input {
       xywh {110 10 430 230} box DOWN_BOX labelsize 11 textfont 4 textsize 11 
resizable
@@ -339,7 +404,7 @@
   }
 } 
 
-Function {type_make_cb(Fl_Widget*,void*d)} {open return_type void
+Function {type_make_cb(Fl_Widget*,void*d)} {return_type void
 } {
   code {undo_checkpoint();
   Fl_Type *t = Fl_Type_make((char*)d);
@@ -353,8 +418,7 @@
   }} {}
 } 
 
-Function {make_widgetbin()} {open
-} {
+Function {make_widgetbin()} {} {
   Fl_Window widgetbin_panel {
     label {Widget Bin}
     xywh {411 171 550 85} type Single align 80 non_modal visible
@@ -688,12 +752,11 @@
   }
 } 
 
-Function {make_sourceview()} {open
-} {
+Function {make_sourceview()} {} {
   Fl_Window sourceview_panel {
     label {Code View}
     callback toggle_sourceview_cb
-    xywh {533 374 520 490} type Double align 80 resizable size_range {384 120 
0 0} visible
+    xywh {430 273 520 490} type Double align 80 resizable size_range {384 120 
0 0} visible
   } {
     Fl_Tabs sv_tab {
       callback update_sourceview_position_cb

Modified: branches/branch-1.1/fluid/function_panel.h
===================================================================
--- branches/branch-1.1/fluid/function_panel.h  2008-01-04 20:32:37 UTC (rev 
6011)
+++ branches/branch-1.1/fluid/function_panel.h  2008-01-04 21:45:49 UTC (rev 
6012)
@@ -33,8 +33,10 @@
 #include <FL/Fl_Double_Window.H>
 extern Fl_Double_Window *function_panel;
 #include <FL/Fl_Group.H>
+#include <FL/Fl_Choice.H>
+extern Fl_Choice *f_public_member_choice;
+extern Fl_Choice *f_public_choice;
 #include <FL/Fl_Light_Button.H>
-extern Fl_Light_Button *f_public_button;
 extern Fl_Light_Button *f_c_button;
 #include <FL/Fl_Box.H>
 #include <FL/Fl_Input.H>
@@ -45,6 +47,8 @@
 #include <FL/Fl_Button.H>
 extern Fl_Button *f_panel_cancel;
 Fl_Double_Window* make_function_panel();
+extern Fl_Menu_Item menu_f_public_member_choice[];
+extern Fl_Menu_Item menu_f_public_choice[];
 extern Fl_Double_Window *code_panel;
 #include "CodeEditor.h"
 extern CodeEditor *code_input;
@@ -58,19 +62,23 @@
 extern Fl_Button *codeblock_panel_cancel;
 Fl_Double_Window* make_codeblock_panel();
 extern Fl_Double_Window *declblock_panel;
+extern Fl_Choice *declblock_public_choice;
+extern Fl_Light_Button *declblock_public_button_x;
 extern Fl_Input *decl_before_input;
 extern Fl_Input *decl_after_input;
 extern Fl_Return_Button *declblock_panel_ok;
 extern Fl_Button *declblock_panel_cancel;
-extern Fl_Light_Button *declblock_public_button;
 Fl_Double_Window* make_declblock_panel();
+extern Fl_Menu_Item menu_declblock_public_choice[];
 extern Fl_Double_Window *decl_panel;
-extern Fl_Light_Button *decl_public_button;
-extern Fl_Light_Button *decl_static_button;
+extern Fl_Choice *decl_choice;
+extern Fl_Choice *decl_class_choice;
 extern Fl_Input *decl_input;
 extern Fl_Return_Button *decl_panel_ok;
 extern Fl_Button *decl_panel_cancel;
 Fl_Double_Window* make_decl_panel();
+extern Fl_Menu_Item menu_decl_choice[];
+extern Fl_Menu_Item menu_decl_class_choice[];
 extern Fl_Double_Window *class_panel;
 extern Fl_Light_Button *c_public_button;
 extern Fl_Input *c_name_input;
@@ -91,7 +99,6 @@
 void type_make_cb(Fl_Widget*,void*d);
 #include <FL/Fl_Window.H>
 extern Fl_Window *widgetbin_panel;
-extern void type_make_cb(Fl_Button*, void*);
 Fl_Window* make_widgetbin();
 extern void toggle_sourceview_cb(Fl_Double_Window*, void*);
 extern Fl_Double_Window *sourceview_panel;

Modified: branches/branch-1.1/fluid/widget_panel.cxx
===================================================================
--- branches/branch-1.1/fluid/widget_panel.cxx  2008-01-04 20:32:37 UTC (rev 
6011)
+++ branches/branch-1.1/fluid/widget_panel.cxx  2008-01-04 21:45:49 UTC (rev 
6012)
@@ -41,6 +41,19 @@
 
 Fl_Value_Input *widget_h_input=(Fl_Value_Input *)0;
 
+Fl_Menu_Item menu_[] = {
+ {"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[] = {
+ {"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}
+};
+
 Fl_Input *v_input[4]={(Fl_Input *)0};
 
 Fl_Button *wLiveMode=(Fl_Button *)0;
@@ -62,6 +75,7 @@
         o->labelsize(11);
         o->callback((Fl_Callback*)propagate_load);
         o->when(FL_WHEN_NEVER);
+        o->hide();
         { Fl_Group* o = new Fl_Group(95, 40, 309, 20, "Label:");
           o->labelfont(1);
           o->labelsize(11);
@@ -469,6 +483,7 @@
             o->down_box(FL_BORDER_BOX);
             o->labelfont(1);
             o->labelsize(11);
+            o->textsize(11);
             o->callback((Fl_Callback*)labelfont_cb);
             Fl_Group::current()->resizable(o);
             o->menu(fontmenu);
@@ -500,6 +515,7 @@
             o->down_box(FL_BORDER_BOX);
             o->labelfont(1);
             o->labelsize(11);
+            o->textsize(11);
             o->callback((Fl_Callback*)box_cb);
             Fl_Group::current()->resizable(o);
             o->menu(boxmenu);
@@ -522,6 +538,7 @@
             o->down_box(FL_BORDER_BOX);
             o->labelfont(1);
             o->labelsize(11);
+            o->textsize(11);
             o->callback((Fl_Callback*)down_box_cb);
             Fl_Group::current()->resizable(o);
             o->menu(boxmenu);
@@ -544,6 +561,7 @@
             o->down_box(FL_BORDER_BOX);
             o->labelfont(1);
             o->labelsize(11);
+            o->textsize(11);
             o->callback((Fl_Callback*)textfont_cb);
             Fl_Group::current()->resizable(o);
             o->menu(fontmenu);
@@ -574,7 +592,6 @@
         o->labelsize(11);
         o->callback((Fl_Callback*)propagate_load);
         o->when(FL_WHEN_NEVER);
-        o->hide();
         { Fl_Group* o = new Fl_Group(95, 40, 310, 20, "Class:");
           o->labelfont(1);
           o->labelsize(11);
@@ -594,6 +611,7 @@
             o->box(FL_THIN_UP_BOX);
             o->down_box(FL_BORDER_BOX);
             o->labelsize(11);
+            o->textsize(11);
             o->callback((Fl_Callback*)subtype_cb);
           } // Fl_Choice* o
           o->end();
@@ -603,7 +621,7 @@
           o->labelsize(11);
           o->callback((Fl_Callback*)propagate_load);
           o->align(FL_ALIGN_LEFT);
-          { Fl_Input* o = new Fl_Input(95, 65, 250, 20);
+          { Fl_Input* o = new Fl_Input(95, 65, 235, 20);
             o->tooltip("The name of the widget.");
             o->labelfont(1);
             o->labelsize(11);
@@ -611,13 +629,24 @@
             o->callback((Fl_Callback*)name_cb);
             Fl_Group::current()->resizable(o);
           } // Fl_Input* o
-          { Fl_Light_Button* o = new Fl_Light_Button(345, 65, 60, 20, 
"public");
-            o->tooltip("Make the widget publicly accessible.");
-            o->selection_color((Fl_Color)1);
+          { Fl_Choice* o = new Fl_Choice(330, 65, 75, 20);
+            o->tooltip("Change member access attribute.");
+            o->down_box(FL_BORDER_BOX);
             o->labelsize(11);
+            o->textsize(11);
+            o->callback((Fl_Callback*)name_public_member_cb);
+            o->when(FL_WHEN_CHANGED);
+            o->menu(menu_);
+          } // Fl_Choice* o
+          { Fl_Choice* o = new Fl_Choice(330, 65, 75, 20);
+            o->tooltip("Change widget accessibility.");
+            o->down_box(FL_BORDER_BOX);
+            o->labelsize(11);
+            o->textsize(11);
             o->callback((Fl_Callback*)name_public_cb);
             o->when(FL_WHEN_CHANGED);
-          } // Fl_Light_Button* o
+            o->menu(menu_1);
+          } // Fl_Choice* o
           o->end();
         } // Fl_Group* o
         { v_input[0] = new Fl_Input(95, 90, 310, 20, "Extra Code:");
@@ -686,6 +715,7 @@
             o->down_box(FL_BORDER_BOX);
             o->labelfont(1);
             o->labelsize(11);
+            o->textsize(11);
             o->callback((Fl_Callback*)when_cb);
             o->when(FL_WHEN_CHANGED);
             o->menu(whenmenu);

Modified: branches/branch-1.1/fluid/widget_panel.fl
===================================================================
--- branches/branch-1.1/fluid/widget_panel.fl   2008-01-04 20:32:37 UTC (rev 
6011)
+++ branches/branch-1.1/fluid/widget_panel.fl   2008-01-04 21:45:49 UTC (rev 
6012)
@@ -33,8 +33,8 @@
 
 Function {make_widget_panel()} {open
 } {
-  Fl_Window {} {open selected
-    xywh {711 172 420 360} type Double labelsize 11 align 80 resizable hotspot
+  Fl_Window {} {open
+    xywh {383 206 420 360} type Double labelsize 11 align 80 resizable hotspot
     code0 {o->size_range(o->w(), o->h());} visible
   } {
     Fl_Tabs {} {
@@ -44,7 +44,7 @@
       Fl_Group {} {
         label GUI
         callback propagate_load
-        xywh {10 30 400 290} labelsize 11 when 0 resizable
+        xywh {10 30 400 290} labelsize 11 when 0 hide resizable
       } {
         Fl_Group {} {
           label {Label:}
@@ -151,7 +151,7 @@
         }
         Fl_Group {} {
           label {Position:}
-          callback propagate_load open
+          callback propagate_load
           xywh {95 150 300 20} labelfont 1 labelsize 11 align 4
         } {
           Fl_Value_Input widget_x_input {
@@ -332,12 +332,12 @@
       } {
         Fl_Group {} {
           label {Label Font:}
-          callback propagate_load open
+          callback propagate_load
           xywh {95 40 309 20} labelfont 1 labelsize 11 align 4
         } {
           Fl_Choice {} {
             callback labelfont_cb open
-            tooltip {The style of the label text.} xywh {95 40 170 20} box 
THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 11 resizable
+            tooltip {The style of the label text.} xywh {95 40 170 20} box 
THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 11 textsize 11 resizable
             code0 {extern Fl_Menu_Item fontmenu[];}
             code1 {o->menu(fontmenu);}
           } {}
@@ -353,12 +353,12 @@
         }
         Fl_Group {} {
           label {Box:}
-          callback propagate_load open
+          callback propagate_load
           xywh {95 65 309 20} labelfont 1 labelsize 11 align 4
         } {
           Fl_Choice {} {
             callback box_cb open
-            tooltip {The "up" box of the widget.} xywh {95 65 219 20} box 
THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 11 resizable
+            tooltip {The "up" box of the widget.} xywh {95 65 219 20} box 
THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 11 textsize 11 resizable
             code0 {extern Fl_Menu_Item boxmenu[];}
             code1 {o->menu(boxmenu);}
           } {}
@@ -370,12 +370,12 @@
         }
         Fl_Group {} {
           label {Down Box:}
-          callback propagate_load open
+          callback propagate_load
           xywh {95 90 309 20} labelfont 1 labelsize 11 align 4
         } {
           Fl_Choice {} {
             callback down_box_cb open
-            tooltip {The "down" box of the widget.} xywh {95 90 219 20} box 
THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 11 resizable
+            tooltip {The "down" box of the widget.} xywh {95 90 219 20} box 
THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 11 textsize 11 resizable
             code0 {extern Fl_Menu_Item boxmenu[];}
             code1 {o->menu(boxmenu);}
           } {}
@@ -387,12 +387,12 @@
         }
         Fl_Group {} {
           label {Text Font:}
-          callback propagate_load open
+          callback propagate_load
           xywh {95 115 309 20} labelfont 1 labelsize 11 align 4
         } {
           Fl_Choice {} {
             callback textfont_cb open
-            tooltip {The value text style.} xywh {95 115 170 20} box DOWN_BOX 
down_box BORDER_BOX labelfont 1 labelsize 11 resizable
+            tooltip {The value text style.} xywh {95 115 170 20} box DOWN_BOX 
down_box BORDER_BOX labelfont 1 labelsize 11 textsize 11 resizable
             code0 {extern Fl_Menu_Item fontmenu[];}
             code1 {o->menu(fontmenu);}
           } {}
@@ -412,8 +412,8 @@
       }
       Fl_Group {} {
         label {C++}
-        callback propagate_load
-        xywh {10 30 400 290} labelsize 11 when 0 hide
+        callback propagate_load open
+        xywh {10 30 400 290} labelsize 11 when 0
       } {
         Fl_Group {} {
           label {Class:}
@@ -427,23 +427,53 @@
           }
           Fl_Choice {} {
             callback subtype_cb open
-            tooltip {The widget subtype.} xywh {265 40 140 20} box THIN_UP_BOX 
down_box BORDER_BOX labelsize 11
+            tooltip {The widget subtype.} xywh {265 40 140 20} box THIN_UP_BOX 
down_box BORDER_BOX labelsize 11 textsize 11
           } {}
         }
         Fl_Group {} {
           label {Name:}
-          callback propagate_load
+          callback propagate_load open
           xywh {95 65 310 20} labelfont 1 labelsize 11 align 4
         } {
           Fl_Input {} {
-            callback name_cb
-            tooltip {The name of the widget.} xywh {95 65 250 20} labelfont 1 
labelsize 11 textsize 11 resizable
+            callback name_cb selected
+            tooltip {The name of the widget.} xywh {95 65 235 20} labelfont 1 
labelsize 11 textsize 11 resizable
           }
-          Fl_Light_Button {} {
-            label public
-            callback name_public_cb
-            tooltip {Make the widget publicly accessible.} xywh {345 65 60 20} 
selection_color 1 labelsize 11 when 1
+          Fl_Choice {} {
+            callback name_public_member_cb open
+            tooltip {Change member access attribute.} xywh {330 65 75 20} 
down_box BORDER_BOX labelsize 11 when 1 textsize 11
+          } {
+            MenuItem {} {
+              label private
+              user_data 0 user_data_type long
+              xywh {0 0 100 20} labelsize 11
+            }
+            MenuItem {} {
+              label public
+              user_data 1 user_data_type long
+              xywh {0 0 100 20} labelsize 11
+            }
+            MenuItem {} {
+              label protected
+              user_data 2 user_data_type long
+              xywh {0 0 100 20} labelsize 11
+            }
           }
+          Fl_Choice {} {
+            callback name_public_cb open
+            tooltip {Change widget accessibility.} xywh {330 65 75 20} 
down_box BORDER_BOX labelsize 11 when 1 textsize 11
+          } {
+            MenuItem {} {
+              label local
+              user_data 0 user_data_type long
+              xywh {10 10 100 20} labelsize 11
+            }
+            MenuItem {} {
+              label global
+              user_data 1 user_data_type long
+              xywh {10 10 100 20} labelsize 11
+            }
+          }
         }
         Fl_Input {v_input[0]} {
           label {Extra Code:}
@@ -485,7 +515,7 @@
           Fl_Choice {} {
             label {When:}
             callback when_cb open
-            tooltip {When to call the callback function.} xywh {300 270 105 
20} box THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 11 when 1
+            tooltip {When to call the callback function.} xywh {300 270 105 
20} box THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 11 when 1 
textsize 11
             code0 {extern Fl_Menu_Item whenmenu[];}
             code1 {o->menu(whenmenu);}
           } {}

Modified: branches/branch-1.1/fluid/widget_panel.h
===================================================================
--- branches/branch-1.1/fluid/widget_panel.h    2008-01-04 20:32:37 UTC (rev 
6011)
+++ branches/branch-1.1/fluid/widget_panel.h    2008-01-04 21:45:49 UTC (rev 
6012)
@@ -94,7 +94,8 @@
 extern void subclass_cb(Fl_Input*, void*);
 extern void subtype_cb(Fl_Choice*, void*);
 extern void name_cb(Fl_Input*, void*);
-extern void name_public_cb(Fl_Light_Button*, void*);
+extern void name_public_member_cb(Fl_Choice*, void*);
+extern void name_public_cb(Fl_Choice*, void*);
 extern void v_input_cb(Fl_Input*, void*);
 extern Fl_Input *v_input[4];
 #include "CodeEditor.h"
@@ -112,6 +113,8 @@
 extern void live_mode_cb(Fl_Button*, void*);
 extern Fl_Button *wLiveMode;
 Fl_Double_Window* make_widget_panel();
+extern Fl_Menu_Item menu_[];
+extern Fl_Menu_Item menu_1[];
 #endif
 
 //

_______________________________________________
fltk-commit mailing list
fltk-commit@easysw.com
http://lists.easysw.com/mailman/listinfo/fltk-commit

Reply via email to