⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fl_type.cxx

📁 PIXIL is a small footprint operating environment, complete with PDA PIM applications, a browser and
💻 CXX
📖 第 1 页 / 共 2 页
字号:
// turn a click at x,y on this into the actual picked object:Fl_Type* Fl_Type::click_test(int,int) {return 0;}void Fl_Type::add_child(Fl_Type*, Fl_Type*) {}void Fl_Type::move_child(Fl_Type*, Fl_Type*) {}void Fl_Type::remove_child(Fl_Type*) {}// add a list of widgets as a new child of p:void Fl_Type::add(Fl_Type *p) {  parent = p;  Fl_Type *end = this;  while (end->next) end = end->next;  Fl_Type *q;  int newlevel;  if (p) {    for (q = p->next; q && q->level > p->level; q = q->next);    newlevel = p->level+1;  } else {    q = 0;    newlevel = 0;  }  for (Fl_Type *t = this->next; t; t = t->next) t->level += (newlevel-level);  level = newlevel;  if (q) {    prev = q->prev;    prev->next = this;    q->prev = end;    end->next = q;  } else if (first) {    prev = last;    prev->next = this;    end->next = 0;    last = end;  } else {    first = this;    last = end;    prev = end->next = 0;  }  if (p) p->add_child(this,0);  open_ = 1;  fixvisible(this);  modflag = 1;  widget_browser->redraw();}// add to a parent before another widget:void Fl_Type::insert(Fl_Type *g) {  Fl_Type *end = this;  while (end->next) end = end->next;  parent = g->parent;  int newlevel = g->level;  visible = g->visible;  for (Fl_Type *t = this->next; t; t = t->next) t->level += newlevel-level;  level = newlevel;  prev = g->prev;  if (prev) prev->next = this; else first = this;  end->next = g;  g->prev = end;  fixvisible(this);  if (parent) parent->add_child(this, g);  widget_browser->redraw();}// delete from parent:Fl_Type *Fl_Type::remove() {  Fl_Type *end = this;  for (;;) {    if (!end->next || end->next->level <= level) break;    end = end->next;  }  if (prev) prev->next = end->next;  else first = end->next;  if (end->next) end->next->prev = prev;  else last = prev;  Fl_Type *r = end->next;  prev = end->next = 0;  if (parent) parent->remove_child(this);  parent = 0;  widget_browser->redraw();  selection_changed(0);  return r;}// update a string member:int storestring(const char *n, const char * & p, int nostrip) {  if (n == p) return 0;  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 Fl_Type::name(const char *n) {  if (storestring(n,name_)) {    if (visible) widget_browser->redraw();  }}void Fl_Type::label(const char *n) {  if (storestring(n,label_,1)) {    setlabel(label_);    if (visible && !name_) widget_browser->redraw();  }}void Fl_Type::callback(const char *n) {  storestring(n,callback_);}void Fl_Type::user_data(const char *n) {  storestring(n,user_data_);}void Fl_Type::user_data_type(const char *n) {  storestring(n,user_data_type_);}void Fl_Type::open() {  printf("Open of '%s' is not yet implemented\n",type_name());}void Fl_Type::setlabel(const char *) {}Fl_Type::~Fl_Type() {  // warning: destructor only works for widgets that have been add()ed.  if (widget_browser) widget_browser->deleting(this);  if (prev) prev->next = next; else first = next;  if (next) next->prev = prev; else last = prev;  if (current == this) current = 0;  modflag = 1;  if (parent) parent->remove_child(this);}int Fl_Type::is_parent() const {return 0;}int Fl_Type::is_widget() const {return 0;}int Fl_Type::is_valuator() const {return 0;}int Fl_Type::is_button() const {return 0;}int Fl_Type::is_menu_item() const {return 0;}int Fl_Type::is_menu_button() const {return 0;}int Fl_Type::is_group() const {return 0;}int Fl_Type::is_window() const {return 0;}int Fl_Type::is_code_block() const {return 0;}int Fl_Type::is_decl_block() const {return 0;}int Fl_Type::is_class() const {return 0;}////////////////////////////////////////////////////////////////Fl_Type *in_this_only; // set if menu popped-up in windowvoid select_all_cb(Fl_Widget *,void *) {  Fl_Type *p = Fl_Type::current ? Fl_Type::current->parent : 0;  if (in_this_only) {    Fl_Type *t = p;    for (; t && t != in_this_only; t = t->parent);    if (t != in_this_only) p = in_this_only;  }  for (;;) {    if (p) {      int foundany = 0;      for (Fl_Type *t = p->next; t && t->level>p->level; t = t->next) {	if (!t->new_selected) {widget_browser->select(t,1,0); foundany = 1;}      }      if (foundany) break;      p = p->parent;    } else {      for (Fl_Type *t = Fl_Type::first; t; t = t->next)	widget_browser->select(t,1,0);      break;    }  }  selection_changed(p);}static void delete_children(Fl_Type *p) {  Fl_Type *f;  for (f = p; f && f->next && f->next->level > p->level; f = f->next);  for (; f != p; ) {    Fl_Type *g = f->prev;    delete f;    f = g;  }}void delete_all(int selected_only) {  for (Fl_Type *f = Fl_Type::first; f;) {    if (f->selected || !selected_only) {      delete_children(f);      Fl_Type *g = f->next;      delete f;      f = g;    } else f = f->next;  }  if(!selected_only)    include_H_from_C=1;  selection_changed(0);}// move f (and it's children) into list before g:// returns pointer to whatever is after f & childrenvoid Fl_Type::move_before(Fl_Type* g) {  if (level != g->level) printf("move_before levels don't match! %d %d\n",				level, g->level);  Fl_Type* n;  for (n = next; n && n->level > level; n = n->next);  if (n == g) return;  Fl_Type *l = n ? n->prev : Fl_Type::last;  prev->next = n;  if (n) n->prev = prev; else Fl_Type::last = prev;  prev = g->prev;  l->next = g;  if (prev) prev->next = this; else Fl_Type::first = this;  g->prev = l;  if (parent) parent->move_child(this,g);  widget_browser->redraw();}// move selected widgets in their parent's list:void earlier_cb(Fl_Widget*,void*) {  Fl_Type *f;  for (f = Fl_Type::first; f; ) {    Fl_Type* nxt = f->next;    if (f->selected) {      Fl_Type* g;      for (g = f->prev; g && g->level > f->level; g = g->prev);      if (g && g->level == f->level && !g->selected) f->move_before(g);    }    f = nxt;  }}void later_cb(Fl_Widget*,void*) {  Fl_Type *f;  for (f = Fl_Type::last; f; ) {    Fl_Type* prv = f->prev;    if (f->selected) {      Fl_Type* g;      for (g = f->next; g && g->level > f->level; g = g->next);      if (g && g->level == f->level && !g->selected) g->move_before(f);    }    f = prv;  }}////////////////////////////////////////////////////////////////// write a widget and all it's children:void Fl_Type::write() {    write_indent(level);    write_word(type_name());    write_word(name());    write_open(level);    write_properties();    write_close(level);    if (!is_parent()) return;    // now do children:    write_open(level);    Fl_Type *child;    for (child = next; child && child->level > level; child = child->next)	if (child->level == level+1) child->write();    write_close(level);}void Fl_Type::write_properties() {  // 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");}void Fl_Type::read_property(const char *c) {  if (!strcmp(c,"label"))    label(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_ = 1;  else if (!strcmp(c,"selected"))    select(this,1);  else    read_error("Unknown property \"%s\"", c);}int Fl_Type::read_fdesign(const char*, const char*) {return 0;}//// End of "$Id: Fl_Type.cxx,v 1.1.1.1 2003/08/07 21:18:39 jasonk Exp $".//

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -