void onelabGroup::addParameter(onelab::parameter &p) { if(!p.getVisible() || CTX::instance()->solver.showInvisibleParameters) return; bool highlight = false; Fl_Color c; if(getFlColor(p.getAttribute("Highlight"), c)) highlight = true; Fl_Tree_Item *n = _tree->add(p.getName().c_str()); if(!n) return; n->labelsize(FL_NORMAL_SIZE + 4); _tree->begin(); int ww = _baseWidth - (n->depth() + 1) * _indent; ww *= _widgetLabelRatio; // FIXME CHANGE THIS int hh = n->labelsize() + 4; Fl_Group *grp = new Fl_Group(1, 1, ww, hh); Fl_Widget *widget = _addParameterWidget(p, ww, hh, n, highlight, c); grp->end(); if(!_enableTreeWidgetResize) grp->resizable(0); _treeWidgets.push_back(grp); widget->copy_label(p.getShortName().c_str()); std::string help = p.getLabel().size() ? p.getLabel() : p.getShortName(); if(p.getHelp().size()) help += ":\n" + p.getHelp(); widget->copy_tooltip(help.c_str()); n->widget(grp); _tree->end(); if(p.getAttribute("Closed") == "1" && p.getPath().size()) _tree->close(p.getPath().c_str(), 0); _tree->redraw(); }
void onelabGroup::_addSolverMenu(int num) { std::ostringstream path; path << "0Solver/View" << num; Fl_Tree_Item *n = _tree->add(path.str().c_str()); int ww = _baseWidth - (n->depth() + 1) * _indent; int hh = n->labelsize() + 4; _tree->begin(); Fl_Group *grp = new Fl_Group(1, 1, ww, hh); new solverButton(1, 1, ww, hh, num, _tree->color()); grp->end(); if(!_enableTreeWidgetResize) grp->resizable(0); _treeWidgets.push_back(grp); n->widget(grp); _tree->end(); }
void onelabGroup::_addViewMenu(int num) { std::ostringstream path; path << "0Post-processing/View" << num; Fl_Tree_Item *n; if((n = _tree->find_item(path.str().c_str())) != NULL) { // check if the item already exists _tree->remove(n); } n = _tree->add(path.str().c_str()); int ww = _baseWidth - (n->depth() + 1) * _indent; int hh = n->labelsize() + 4; _tree->begin(); Fl_Group *grp = new Fl_Group(1, 1, ww, hh); new viewButton(1, 1, ww, hh, num, _tree->color()); grp->end(); if(!_enableTreeWidgetResize) grp->resizable(0); _treeWidgets.push_back(grp); n->widget(grp); _tree->end(); }
void onelabGroup::_addMenu(const std::string &path, Fl_Callback *callback, void *data) { Fl_Tree_Item *n = _tree->add(path.c_str()); _tree->begin(); int ww = _baseWidth - (n->depth() + 1) * _indent; int hh = n->labelsize() + 4; Fl_Group *grp = new Fl_Group(1, 1, ww, hh); Fl_Button *but = new Fl_Button(1, 1, ww, hh); but->align(FL_ALIGN_LEFT | FL_ALIGN_INSIDE | FL_ALIGN_CLIP); but->callback(callback, data); but->box(FL_FLAT_BOX); but->color(_tree->color()); but->selection_color(_tree->color()); grp->end(); if(!_enableTreeWidgetResize) grp->resizable(0); _treeWidgets.push_back(grp); std::string label = path; std::string::size_type last = path.find_last_of('/'); if(last != std::string::npos) label = path.substr(last + 1); but->copy_label(label.c_str()); n->widget(grp); _tree->end(); }