Author: fabien
Date: 2007-04-05 09:57:29 -0400 (Thu, 05 Apr 2007)
New Revision: 5760
Log:
browser up down selection bugfix in fluid

Modified:
   branches/fctrunk/fluid/FluidType.cxx
   branches/fctrunk/ide/visualc/fltk.lib.dsp

Modified: branches/fctrunk/fluid/FluidType.cxx
===================================================================
--- branches/fctrunk/fluid/FluidType.cxx        2007-04-05 09:47:53 UTC (rev 
5759)
+++ branches/fctrunk/fluid/FluidType.cxx        2007-04-05 13:57:29 UTC (rev 
5760)
@@ -41,6 +41,7 @@
 // linked list and are not written to files or copied or otherwise
 // examined.
 
+#include <fltk/events.h>
 #include <fltk/run.h>
 #include <fltk/MultiBrowser.h>
 #include <fltk/Item.h>
@@ -70,10 +71,10 @@
 int FluidType::selected_count_=0;
 
 class Widget_List : public fltk::List {
-  virtual int children(const fltk::Menu*, const int* indexes, int level);
-  virtual fltk::Widget* child(const fltk::Menu*, const int* indexes, int 
level);
-  virtual void flags_changed(const fltk::Menu*, fltk::Widget*);
-  public:
+       virtual int children(const fltk::Menu*, const int* indexes, int level);
+       virtual fltk::Widget* child(const fltk::Menu*, const int* indexes, int 
level);
+       virtual void flags_changed(const fltk::Menu*, fltk::Widget*);
+public:
     virtual ~Widget_List() {}
 };
 
@@ -84,12 +85,16 @@
 extern void deselect();
 
 static void Widget_Browser_callback(fltk::Widget * w,void *) {
+       unsigned key; 
     if (fltk::event()==fltk::PUSH )  {
-       if ( ( (fltk::Browser*) w)->item()==0) 
-           deselect();
+               if ( ( (fltk::Browser*) w)->item()==0) 
+                       deselect();
     }
-    else if (fltk::event()==fltk::WHEN_ENTER_KEY || fltk::event_clicks()) { // 
double_click open the widget editor
-       if (FluidType::current) FluidType::current->open();
+    else if ((fltk::event()==fltk::WHEN_ENTER_KEY && 
+               ((key = fltk::event_key())==fltk::ReturnKey || 
key==fltk::KeypadEnter) )
+               || fltk::event_clicks()) { // double_click open the widget 
editor
+               if (FluidType::current ) 
+                       FluidType::current->open();
     }
     if(fltk::event()!=fltk::RELEASE) refresh_browser_views();
 }
@@ -101,168 +106,168 @@
     if (cnt <2) status_bar->set(0, StatusBarGroup::SBAR_RIGHT);
     if (cnt <1) status_bar->set(0, StatusBarGroup::SBAR_CENTER);
     if (!cnt) return;
-
+       
     if (FluidType::current && FluidType::current->is_widget()) {
-       Widget * o = ((WidgetType*)FluidType::current)->o;
-       if (cnt==1) 
-           status_bar->set(StatusBarGroup::SBAR_CENTER, "xywh: %d %d %d 
%d",o->x(),o->y(),o->w(),o->h());
-       else {
-           Rectangle r;
-           for (FluidType *t = FluidType::first; t; t = t->walk())
-               if (t->selected() && t->is_widget())
-                   r.merge( *((WidgetType*)t)->o);
-           status_bar->set(StatusBarGroup::SBAR_CENTER, "xywh: %d %d %d 
%d",r.x(),r.y(),r.w(),r.h());
-       }
+               Widget * o = ((WidgetType*)FluidType::current)->o;
+               if (cnt==1) 
+                       status_bar->set(StatusBarGroup::SBAR_CENTER, "xywh: %d 
%d %d %d",o->x(),o->y(),o->w(),o->h());
+               else {
+                       Rectangle r;
+                       for (FluidType *t = FluidType::first; t; t = t->walk())
+                               if (t->selected() && t->is_widget())
+                                       r.merge( *((WidgetType*)t)->o);
+                               status_bar->set(StatusBarGroup::SBAR_CENTER, 
"xywh: %d %d %d %d",r.x(),r.y(),r.w(),r.h());
+               }
     }
     if (cnt>1) 
-       status_bar->set(StatusBarGroup::SBAR_RIGHT, "%d selected",cnt);
+               status_bar->set(StatusBarGroup::SBAR_RIGHT, "%d selected",cnt);
     status_bar->redraw();  
 }
 
 // make the widget browser in the main fluid window, items use the list method 
defined by widgetlist
 fltk::Widget *make_widget_browser(int x,int y,int w,int h) {
-  widget_browser = new fltk::MultiBrowser(x,y,w,h);
-  widget_browser->list(&widgetlist);
-  widget_browser->callback(Widget_Browser_callback);
-  widget_browser->when(fltk::WHEN_ENTER_KEY|fltk::WHEN_CHANGED);
-  widget_browser->indented(1);
-  return widget_browser;
+       widget_browser = new fltk::MultiBrowser(x,y,w,h);
+       widget_browser->list(&widgetlist);
+       widget_browser->callback(Widget_Browser_callback);
+       widget_browser->when(fltk::WHEN_ENTER_KEY|fltk::WHEN_CHANGED);
+       widget_browser->indented(1);
+       return widget_browser;
 }
 
 int Widget_List::children(const fltk::Menu*, const int* indexes, int level) {
-  FluidType* item = FluidType::first;
-  if (!item) return 0;
-  for (int l = 0; l < level; l++) {
-    for (int i = indexes[l]; item && i; --i) item = item->next_brother;
-    if (!item || !item->is_parent()) return -1;
-    item = item->first_child;
-  }
-  int n; for (n = 0; item; item = item->next_brother) n++;
-  return n;
+       FluidType* item = FluidType::first;
+       if (!item) return 0;
+       for (int l = 0; l < level; l++) {
+               for (int i = indexes[l]; item && i; --i) item = 
item->next_brother;
+               if (!item || !item->is_parent()) return -1;
+               item = item->first_child;
+       }
+       int n; for (n = 0; item; item = item->next_brother) n++;
+       return n;
 }
 
 static const char * get_item_fullname(FluidType* item) {
     static char buffer[PATH_MAX];
     if (strcmp(item->type_name(),"namespace") ==0) 
-       sprintf(buffer, "%s %s", "namespace", item->title());
+               sprintf(buffer, "%s %s", "namespace", item->title());
     else if (strcmp(item->type_name(),"class") ==0) 
-       sprintf(buffer, "%s %s", "class", item->title());
+               sprintf(buffer, "%s %s", "class", item->title());
     else 
-       return item->title();
-
+               return item->title();
+       
     return buffer;
 }
 
 fltk::Widget* Widget_List::child(const fltk::Menu*, const int* indexes, int 
level) {
-  FluidType* item = FluidType::first;
-  if (!item) return 0;
-  for (int l = 0;; l++) {
-    for (int i = indexes[l]; item && i; --i) item = item->next_brother;
-    if (!item) return 0;
-    if (l >= level) break;
-    item = item->first_child;
-  }
-  static fltk::Widget* widget;
-  if (!widget) {
-    fltk::Group::current(0);
-    widget = new fltk::Item();
-  }
-  widget->user_data(item);
-  if (item->selected()) widget->set_selected();
-  else widget->clear_selected();
-  // force the hierarchy to be open/closed:
-  widget->state(item->is_parent() && item->open_);
-
-  widget->label(get_item_fullname(item));
-  //widget->w(0); widget->h(0);
-  if (item->pixmapID()>0) 
-      widget->image(fluid_pixmap[item->pixmapID()]);
-
-  return widget;
+       FluidType* item = FluidType::first;
+       if (!item) return 0;
+       for (int l = 0;; l++) {
+               for (int i = indexes[l]; item && i; --i) item = 
item->next_brother;
+               if (!item) return 0;
+               if (l >= level) break;
+               item = item->first_child;
+       }
+       static fltk::Widget* widget;
+       if (!widget) {
+               fltk::Group::current(0);
+               widget = new fltk::Item();
+       }
+       widget->user_data(item);
+       if (item->selected()) widget->set_selected();
+       else widget->clear_selected();
+       // force the hierarchy to be open/closed:
+       widget->state(item->is_parent() && item->open_);
+       
+       widget->label(get_item_fullname(item));
+       //widget->w(0); widget->h(0);
+       if (item->pixmapID()>0) 
+               widget->image(fluid_pixmap[item->pixmapID()]);
+       
+       return widget;
 }
 
 void Widget_List::flags_changed(const fltk::Menu*, fltk::Widget* w) {
-  FluidType* item = (FluidType*)(w->user_data());
-  item->open_ = w->state();
-  item->new_selected = w->selected();
-  if (item->new_selected != item->selected()) selection_changed(item);
+       FluidType* item = (FluidType*)(w->user_data());
+       item->open_ = w->state();
+       item->new_selected = w->selected();
+       if (item->new_selected != item->selected()) selection_changed(item);
 }
 
 void select(FluidType* it, int value) {
-  it->new_selected = value != 0;
-  if (it->new_selected != it->selected()) {
-    selection_changed(it);
-    widget_browser->goto_focus();
-    refresh_browser_views();
-  }
+       it->new_selected = value != 0;
+       if (it->new_selected != it->selected()) {
+               selection_changed(it);
+               widget_browser->goto_focus();
+               refresh_browser_views();
+       }
 }
 
 void select_only(FluidType* i) {
-  for (FluidType* item = FluidType::first; item; item = item->walk())
-    select(item, item == i);
-  if (!widget_browser || !i) return;
-  int indexes[100];
-  int L = 100;
-  while (i) {
-    FluidType* child = i->parent ? i->parent->first_child : FluidType::first;
-    int n; for (n = 0; child != i; child=child->next_brother) n++;
-    indexes[--L] = n;
-    i = i->parent;
-  }
-  widget_browser->goto_index(indexes+L, 99-L);
-  widget_browser->set_focus();
+       for (FluidType* item = FluidType::first; item; item = item->walk())
+               select(item, item == i);
+       if (!widget_browser || !i) return;
+       int indexes[100];
+       int L = 100;
+       while (i) {
+               FluidType* child = i->parent ? i->parent->first_child : 
FluidType::first;
+               int n; for (n = 0; child != i; child=child->next_brother) n++;
+               indexes[--L] = n;
+               i = i->parent;
+       }
+       widget_browser->goto_index(indexes+L, 99-L);
+       widget_browser->set_focus();
 }
 
 void deselect() {
-  for (FluidType* item = FluidType::first; item; item = item->walk())
-    select(item,0);
-  FluidType::current = 0;
+       for (FluidType* item = FluidType::first; item; item = item->walk())
+               select(item,0);
+       FluidType::current = 0;
 }
 
 // Generate a descriptive text for this item, to put in browser & window
 // titles. Warning: the buffer used is overwritten each time!
 const char* FluidType::title() {
 #define MAXLABEL 128
-  static char buffer[MAXLABEL];
-  const char* t1 = type_name();
-  const char* type = 0;
-  if (is_widget()) type = t1 = ((WidgetType*)this)->subclass();
-  const char* name = this->name();
-  bool quoted = false;
-  if (!name || !*name) {
-    name = label();
-    if (!name || !*name) return t1;
-    quoted = true;
-  }
-  // copy but stop at any newline or when the buffer fills up:
-  char* e = buffer+MAXLABEL-1; if (quoted) e--;
-  char* p = buffer;
-  if (type) {
-    while (p < e && *type) *p++ = *type++;
-    if (p >= e-4) return name;
-    *p++ = ' ';
-  }
-  if (quoted) *p++ = '"';
-  while (p < e && (*name&~31)) *p++ = *name++;
-  if (*name) {
-    if (p > e-3) p = e-3;
-    strcpy(p, quoted ? "...\"" : "...");
-  } else {
-    if (quoted) *p++ = '"';
-    *p++ = 0;
-  }
-  return buffer;
+       static char buffer[MAXLABEL];
+       const char* t1 = type_name();
+       const char* type = 0;
+       if (is_widget()) type = t1 = ((WidgetType*)this)->subclass();
+       const char* name = this->name();
+       bool quoted = false;
+       if (!name || !*name) {
+               name = label();
+               if (!name || !*name) return t1;
+               quoted = true;
+       }
+       // copy but stop at any newline or when the buffer fills up:
+       char* e = buffer+MAXLABEL-1; if (quoted) e--;
+       char* p = buffer;
+       if (type) {
+               while (p < e && *type) *p++ = *type++;
+               if (p >= e-4) return name;
+               *p++ = ' ';
+       }
+       if (quoted) *p++ = '"';
+       while (p < e && (*name&~31)) *p++ = *name++;
+       if (*name) {
+               if (p > e-3) p = e-3;
+               strcpy(p, quoted ? "...\"" : "...");
+       } else {
+               if (quoted) *p++ = '"';
+               *p++ = 0;
+       }
+       return buffer;
 }
 
 // Call this when the descriptive text changes:
 void redraw_browser() {
-  refresh_browser_views();
+       refresh_browser_views();
 }
 
 FluidType::FluidType() {
-  memset(this, 0, sizeof(FluidType));
-  code_line = header_line = code_line_end = header_line_end = -1;
-
+       memset(this, 0, sizeof(FluidType));
+       code_line = header_line = code_line_end = header_line_end = -1;
+       
 }
 
 // Calling walk(N) will return every FluidType under N by scanning
@@ -270,25 +275,25 @@
 // walk the entire tree, start with FluidType::first.
 
 FluidType* FluidType::walk(const FluidType* topmost) const {
-  if (first_child) return first_child;
-  const FluidType* p = this;
-  while (!p->next_brother) {
-    p = p->parent;
-    if (p == topmost) return 0;
-  }
-  return p->next_brother;
+       if (first_child) return first_child;
+       const FluidType* p = this;
+       while (!p->next_brother) {
+               p = p->parent;
+               if (p == topmost) return 0;
+       }
+       return p->next_brother;
 }
 
 // walk() is the same as walk(0), which walks the entire tree:
 
 FluidType* FluidType::walk() const {
-  if (first_child) return first_child;
-  const FluidType* p = this;
-  while (!p->next_brother) {
-    p = p->parent;
-    if (!p) return 0;
-  }
-  return p->next_brother;
+       if (first_child) return first_child;
+       const FluidType* p = this;
+       while (!p->next_brother) {
+               p = p->parent;
+               if (!p) return 0;
+       }
+       return p->next_brother;
 }
 
 // turn a click at x,y on this into the actual picked object:
@@ -299,133 +304,133 @@
 
 // add as a new child of p:
 void FluidType::add(FluidType *p) {
-  if (p && parent == p) return;
-  Undo::checkpoint();
-  parent = p;
-  // calculate level
-  FluidType *end = this;
-  while (end->next_brother) end = end->next_brother;
-  
-  FluidType * q = p ? p->first_child : FluidType::first;
-  if (q) {
-    // find the last child:
-    while (q->next_brother) q = q->next_brother;
-    this->previous_brother = q;
-    q->next_brother = this;
-  } else {
-    // no other children
-    this->previous_brother = 0;
-    if (p)
-      p->first_child = this;
-    else
-      FluidType::first = this;
-  }
-  if (p) p->add_child(this,0);
-  open_ = true;
-  modflag = 1;
-  widget_browser->relayout();
+       if (p && parent == p) return;
+       Undo::checkpoint();
+       parent = p;
+       // calculate level
+       FluidType *end = this;
+       while (end->next_brother) end = end->next_brother;
+       
+       FluidType * q = p ? p->first_child : FluidType::first;
+       if (q) {
+               // find the last child:
+               while (q->next_brother) q = q->next_brother;
+               this->previous_brother = q;
+               q->next_brother = this;
+       } else {
+               // no other children
+               this->previous_brother = 0;
+               if (p)
+                       p->first_child = this;
+               else
+                       FluidType::first = this;
+       }
+       if (p) p->add_child(this,0);
+       open_ = true;
+       modflag = 1;
+       widget_browser->relayout();
 }
 
 // add to a parent before another widget:
 void FluidType::insert(FluidType *g) {
-  parent = g->parent;
-  previous_brother = g->previous_brother;
-  if (previous_brother) previous_brother->next_brother = this;
-  else if (parent) parent->first_child = this;
-  else FluidType::first = this;
-  next_brother = g;
-  g->previous_brother = this;
-  if (parent) parent->add_child(this, g);
-  widget_browser->relayout();
+       parent = g->parent;
+       previous_brother = g->previous_brother;
+       if (previous_brother) previous_brother->next_brother = this;
+       else if (parent) parent->first_child = this;
+       else FluidType::first = this;
+       next_brother = g;
+       g->previous_brother = this;
+       if (parent) parent->add_child(this, g);
+       widget_browser->relayout();
 }
 
 // delete from parent:
 void FluidType::remove() {
-  if (previous_brother) previous_brother->next_brother = next_brother;
-  else if (parent) parent->first_child = next_brother;
-  else FluidType::first = next_brother;
-  if (next_brother) next_brother->previous_brother = previous_brother;
-  previous_brother = next_brother = 0;
-  if (parent) parent->remove_child(this);
-  parent = 0;
-  widget_browser->relayout();
-  selection_changed(0);
+       if (previous_brother) previous_brother->next_brother = next_brother;
+       else if (parent) parent->first_child = next_brother;
+       else FluidType::first = next_brother;
+       if (next_brother) next_brother->previous_brother = previous_brother;
+       previous_brother = next_brother = 0;
+       if (parent) parent->remove_child(this);
+       parent = 0;
+       widget_browser->relayout();
+       selection_changed(0);
 }
 
 // update a string member:
 int storestring(const char *n, const char * & p, int nostrip) {
-  if (n == p) return 0;
-  Undo::checkpoint();
-  int length = 0;
-  if (n) { // see if blank, strip leading & trailing blanks
-    if (!nostrip) while (isspace(*n)) n++;
-    const char *e = n + strlen(n);
-    if (!nostrip) while (e > n && isspace(*(e-1))) e--;
-    length = e-n;
-    if (!length) n = 0;
-  }    
-  if (n == p) return 0;
-  if (n && p && !strncmp(n,p,length) && !p[length]) return 0;
-  if (p) free((void *)p);
-  if (!n || !*n) {
-    p = 0;
-  } else {
-    char *q = (char *)malloc(length+1);
-    strncpy(q,n,length);
-    q[length] = 0;
-    p = q;
-  }
-  modflag = 1;
-  return 1;
+       if (n == p) return 0;
+       Undo::checkpoint();
+       int length = 0;
+       if (n) { // see if blank, strip leading & trailing blanks
+               if (!nostrip) while (isspace(*n)) n++;
+               const char *e = n + strlen(n);
+               if (!nostrip) while (e > n && isspace(*(e-1))) e--;
+               length = e-n;
+               if (!length) n = 0;
+       }    
+       if (n == p) return 0;
+       if (n && p && !strncmp(n,p,length) && !p[length]) return 0;
+       if (p) free((void *)p);
+       if (!n || !*n) {
+               p = 0;
+       } else {
+               char *q = (char *)malloc(length+1);
+               strncpy(q,n,length);
+               q[length] = 0;
+               p = q;
+       }
+       modflag = 1;
+       return 1;
 }
 
 void FluidType::name(const char *n) {
-  if (storestring(n,name_)) refresh_browser_views();
+       if (storestring(n,name_)) refresh_browser_views();
 }
 
 void FluidType::label(const char *n) {
-  if (storestring(n,label_,1)) {
-    setlabel(label_);
-    if (!name_) refresh_browser_views();
-  }
+       if (storestring(n,label_,1)) {
+               setlabel(label_);
+               if (!name_) refresh_browser_views();
+       }
 }
 
 void FluidType::tooltip(const char *n) {
-  storestring(n,tooltip_,1);
+       storestring(n,tooltip_,1);
 }
 
 void FluidType::callback(const char *n) {
-  storestring(n,callback_);
+       storestring(n,callback_);
 }
 
 void FluidType::user_data(const char *n) {
-  storestring(n,user_data_);
+       storestring(n,user_data_);
 }
 
 void FluidType::user_data_type(const char *n) {
-  storestring(n,user_data_type_);
+       storestring(n,user_data_type_);
 }
 
 void FluidType::open() {
-  printf("Open of '%s' is not yet implemented\n",type_name());
+       printf("Open of '%s' is not yet implemented\n",type_name());
 }
 
 void FluidType::setlabel(const char *) {}
 
 FluidType::~FluidType() {
-  for (FluidType* f = first_child; f;) {
-    FluidType* next = f->next_brother;
-    delete f;
-    f = next;
-  }
-  if (previous_brother) previous_brother->next_brother = next_brother;
-  else if (parent) parent->first_child = next_brother;
-  else first = next_brother;
-  if (next_brother) next_brother->previous_brother = previous_brother;
-  if (current == this) current = 0;
-  modflag = 1;
-  selected(false);
-  if (widget_browser) widget_browser->relayout();
+       for (FluidType* f = first_child; f;) {
+               FluidType* next = f->next_brother;
+               delete f;
+               f = next;
+       }
+       if (previous_brother) previous_brother->next_brother = next_brother;
+       else if (parent) parent->first_child = next_brother;
+       else first = next_brother;
+       if (next_brother) next_brother->previous_brother = previous_brother;
+       if (current == this) current = 0;
+       modflag = 1;
+       selected(false);
+       if (widget_browser) widget_browser->relayout();
 }
 
 int FluidType::is_parent() const {return 0;}
@@ -446,201 +451,201 @@
 FluidType *in_this_only; // set if menu popped-up in window
 
 void select_none_cb(Widget *,void *) {
-  FluidType *parent = FluidType::current ? FluidType::current->parent : 0;
-  if (in_this_only) {
-    // make sure we don't select outside the current window
-    FluidType* p;
-    for (p = parent; p && p != in_this_only; p = p->parent);
-    if (!p) parent = in_this_only;
-  }
-  for (;;) {
-    // select all children of parent:
-    int changed = 0;
-    for (FluidType *t = parent ? parent->first_child : FluidType::first; t; t 
= t->walk(parent))
-      if (t->selected()) {changed = 1; select(t,0);}
-    if (changed) break;
-    // if everything was selected, try a higher parent:
-    if (!parent || parent == in_this_only) break;
-    parent = parent->parent;
-  }
+       FluidType *parent = FluidType::current ? FluidType::current->parent : 0;
+       if (in_this_only) {
+               // make sure we don't select outside the current window
+               FluidType* p;
+               for (p = parent; p && p != in_this_only; p = p->parent);
+               if (!p) parent = in_this_only;
+       }
+       for (;;) {
+               // select all children of parent:
+               int changed = 0;
+               for (FluidType *t = parent ? parent->first_child : 
FluidType::first; t; t = t->walk(parent))
+                       if (t->selected()) {changed = 1; select(t,0);}
+                       if (changed) break;
+                       // if everything was selected, try a higher parent:
+                       if (!parent || parent == in_this_only) break;
+                       parent = parent->parent;
+       }
 }
 
 void select_all_cb(fltk::Widget *,void *) {
-  FluidType *parent = FluidType::current ? FluidType::current->parent : 0;
-  if (in_this_only) {
-    // make sure we don't select outside the current window
-    FluidType* p;
-    for (p = parent; p && p != in_this_only; p = p->parent);
-    if (!p) parent = in_this_only;
-  }
-  for (;;) {
-    // select all children of parent:
-    int changed = 0;
-    for (FluidType *t = parent ? parent->first_child : FluidType::first;
-        t; t = t->walk(parent))
-      if (!t->selected()) {changed = 1; select(t,1);}
-    if (changed) break;
-    // if everything was selected, try a higher parent:
-    if (!parent || parent == in_this_only) break;
-    parent = parent->parent;
-  }
+       FluidType *parent = FluidType::current ? FluidType::current->parent : 0;
+       if (in_this_only) {
+               // make sure we don't select outside the current window
+               FluidType* p;
+               for (p = parent; p && p != in_this_only; p = p->parent);
+               if (!p) parent = in_this_only;
+       }
+       for (;;) {
+               // select all children of parent:
+               int changed = 0;
+               for (FluidType *t = parent ? parent->first_child : 
FluidType::first;
+               t; t = t->walk(parent))
+                       if (!t->selected()) {changed = 1; select(t,1);}
+                       if (changed) break;
+                       // if everything was selected, try a higher parent:
+                       if (!parent || parent == in_this_only) break;
+                       parent = parent->parent;
+       }
 }
 
 void delete_all(int selected_only) {
-  for (FluidType *f = FluidType::first; f;) {
-    if (f->selected() || !selected_only) {
-      FluidType* next = f->next_brother;
-      delete f;
-      f = next;
-    } else {
-      f = f->walk();
-    }
-  }
-  if(!selected_only) {
-    include_H_from_C = 1;
-    images_dir = ""; //"./";
-  }
-  selection_changed(0);
+       for (FluidType *f = FluidType::first; f;) {
+               if (f->selected() || !selected_only) {
+                       FluidType* next = f->next_brother;
+                       delete f;
+                       f = next;
+               } else {
+                       f = f->walk();
+               }
+       }
+       if(!selected_only) {
+               include_H_from_C = 1;
+               images_dir = ""; //"./";
+       }
+       selection_changed(0);
 }
 
 // move f (and it's children) into list before g:
 // returns pointer to whatever is after f & children
 void FluidType::move_before(FluidType* g) {
-  remove();
-  insert(g);
+       remove();
+       insert(g);
 }
 
 // move selected widgets in their parent's list:
 void earlier_cb(fltk::Widget*,void*) {
-  bool canundo = false;
-  FluidType *parent = FluidType::current ? FluidType::current->parent : 0;
-  Undo::checkpoint();
-  for (FluidType* f = parent ? parent->first_child : FluidType::first; f; ) {
-    FluidType* next = f->next_brother;
-    if (f->selected()) {
-      FluidType* g = f->previous_brother;
-      if (g && !g->selected()) {f->move_before(g); canundo=true;}
-    }
-    f = next;
-  }
-  if (!canundo) Undo::remove_last();
+       bool canundo = false;
+       FluidType *parent = FluidType::current ? FluidType::current->parent : 0;
+       Undo::checkpoint();
+       for (FluidType* f = parent ? parent->first_child : FluidType::first; f; 
) {
+               FluidType* next = f->next_brother;
+               if (f->selected()) {
+                       FluidType* g = f->previous_brother;
+                       if (g && !g->selected()) {f->move_before(g); 
canundo=true;}
+               }
+               f = next;
+       }
+       if (!canundo) Undo::remove_last();
 }
 
 void later_cb(fltk::Widget*,void*) {
-  bool canundo = false;
-  FluidType *parent = FluidType::current ? FluidType::current->parent : 0;
-  FluidType *f;
-  Undo::checkpoint();
-  for (f = parent ? parent->first_child : FluidType::first;f && 
f->next_brother;)
-    f = f->next_brother;
-  for (;f;) {
-    FluidType* prev = f->previous_brother;
-    if (f->selected()) {
-      FluidType* g = f->next_brother;
-      if (g && !g->selected()) {g->move_before(f); canundo=true;}
-    }
-    f = prev;
-  }
-  if (!canundo) Undo::remove_last();
+       bool canundo = false;
+       FluidType *parent = FluidType::current ? FluidType::current->parent : 0;
+       FluidType *f;
+       Undo::checkpoint();
+       for (f = parent ? parent->first_child : FluidType::first;f && 
f->next_brother;)
+               f = f->next_brother;
+       for (;f;) {
+               FluidType* prev = f->previous_brother;
+               if (f->selected()) {
+                       FluidType* g = f->next_brother;
+                       if (g && !g->selected()) {g->move_before(f); 
canundo=true;}
+               }
+               f = prev;
+       }
+       if (!canundo) Undo::remove_last();
 }
 
 ////////////////////////////////////////////////////////////////
 
 // write a widget and all its children:
 void FluidType::write() {
-  int level = 0;
-  for (FluidType* p = parent; p; p = p->parent) level++;
-  write_indent(level);
-  write_word(type_name());
-  if (is_class()) {
-    const char * p = prefix();
-    if (p && *p) write_word(p);
-  }
-
-  write_word(name());
-  write_open(level);
-  write_properties();
-  write_close(level);
-  if (!is_parent()) return;
-  // now do children:
-  write_open(level);
-  FluidType *child;
-  for (child = first_child; child; child = child->next_brother) child->write();
-  write_close(level);
+       int level = 0;
+       for (FluidType* p = parent; p; p = p->parent) level++;
+       write_indent(level);
+       write_word(type_name());
+       if (is_class()) {
+               const char * p = prefix();
+               if (p && *p) write_word(p);
+       }
+       
+       write_word(name());
+       write_open(level);
+       write_properties();
+       write_close(level);
+       if (!is_parent()) return;
+       // now do children:
+       write_open(level);
+       FluidType *child;
+       for (child = first_child; child; child = child->next_brother) 
child->write();
+       write_close(level);
 }
 
 void FluidType::write_properties() {
-  int level = 0;
-  for (FluidType* p = parent; p; p = p->parent) level++;
-  // repeat this for each attribute:
-  if (label()) {
-    write_indent(level+1);
-    write_word("label");
-    write_word(label());
-  }
-  if (user_data()) {
-    write_indent(level+1);
-    write_word("user_data");
-    write_word(user_data());
-    if (user_data_type()) {
-      write_word("user_data_type");
-      write_word(user_data_type());
-    }
-  }
-  if (callback()) {
-    write_indent(level+1);
-    write_word("callback");
-    write_word(callback());
-  }
-  if (is_parent() && open_) write_word("open");
-  if (selected()) write_word("selected");
-  if (tooltip()) {
-    write_indent(level+1);
-    write_word("tooltip");
-    write_word(tooltip());
-  }
+       int level = 0;
+       for (FluidType* p = parent; p; p = p->parent) level++;
+       // repeat this for each attribute:
+       if (label()) {
+               write_indent(level+1);
+               write_word("label");
+               write_word(label());
+       }
+       if (user_data()) {
+               write_indent(level+1);
+               write_word("user_data");
+               write_word(user_data());
+               if (user_data_type()) {
+                       write_word("user_data_type");
+                       write_word(user_data_type());
+               }
+       }
+       if (callback()) {
+               write_indent(level+1);
+               write_word("callback");
+               write_word(callback());
+       }
+       if (is_parent() && open_) write_word("open");
+       if (selected()) write_word("selected");
+       if (tooltip()) {
+               write_indent(level+1);
+               write_word("tooltip");
+               write_word(tooltip());
+       }
 }
 
 void FluidType::read_property(const char *c) {
-  if (!strcmp(c,"label"))
-    label(read_word());
-  else if (!strcmp(c,"tooltip"))
-    tooltip(read_word());
-  else if (!strcmp(c,"user_data"))
-    user_data(read_word());
-  else if (!strcmp(c,"user_data_type"))
-    user_data_type(read_word());
-  else if (!strcmp(c,"callback"))
-    callback(read_word());
-  else if (!strcmp(c,"open"))
-    open_ = true;
-  else if (!strcmp(c,"selected"))
-    select(this,1);
-  else
-    read_error("Unknown property \"%s\"", c);
+       if (!strcmp(c,"label"))
+               label(read_word());
+       else if (!strcmp(c,"tooltip"))
+               tooltip(read_word());
+       else if (!strcmp(c,"user_data"))
+               user_data(read_word());
+       else if (!strcmp(c,"user_data_type"))
+               user_data_type(read_word());
+       else if (!strcmp(c,"callback"))
+               callback(read_word());
+       else if (!strcmp(c,"open"))
+               open_ = true;
+       else if (!strcmp(c,"selected"))
+               select(this,1);
+       else
+               read_error("Unknown property \"%s\"", c);
 }
 
 int FluidType::read_fdesign(const char*, const char*) {return 0;}
 
 /**
- * Build widgets and dataset needed in live mode.
- * \return a widget pointer that the live mode initiator can 'show()'
- * \see leave_live_mode()
- */
+* Build widgets and dataset needed in live mode.
+* \return a widget pointer that the live mode initiator can 'show()'
+* \see leave_live_mode()
+*/
 fltk::Widget *FluidType::enter_live_mode(int top) {
-  return 0L;
+       return 0L;
 }
 
 /**
- * Release all resources created when enetring live mode.
- * \see enter_live_mode()
- */
+* Release all resources created when enetring live mode.
+* \see enter_live_mode()
+*/
 void FluidType::leave_live_mode() {
 }
 
 /**
- * Copy all needed properties for this tye into the live object.
- */
+* Copy all needed properties for this tye into the live object.
+*/
 void FluidType::copy_properties() {
 }
 

Modified: branches/fctrunk/ide/visualc/fltk.lib.dsp
===================================================================
(Binary files differ)

_______________________________________________
fltk-commit mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk-commit

Reply via email to