void CrustaApp:: produceDataDialog() { dataDialog = new PopupWindow( "DataDialog", Vrui::getWidgetManager(), "Load Crusta Data"); RowColumn* root = new RowColumn("DataRoot", dataDialog, false); RowColumn* top = new RowColumn("DataTop", root, false); top->setOrientation(RowColumn::HORIZONTAL); top->setColumnWeight(0, 1.0f); ScrolledListBox* box = new ScrolledListBox("DataListBox", top, ListBox::MULTIPLE, DATALISTBOX_SIZE[0], DATALISTBOX_SIZE[1]); dataListBox = box->getListBox(); dataListBox->setAutoResize(true); Margin* addRemoveMargin = new Margin("DataAddRemoveMargin", top, false); addRemoveMargin->setAlignment(Alignment::VCENTER); RowColumn* addRemoveRoot = new RowColumn("DataAddRemoveRoot", addRemoveMargin, false); Button* button = new Button("DataAddButton", addRemoveRoot, "Add"); button->getSelectCallbacks().add(this, &CrustaApp::addDataCallback); button = new Button("DataRemoveButton", addRemoveRoot, "Remove"); button->getSelectCallbacks().add(this, &CrustaApp::removeDataCallback); button = new Button("DataClearButton", addRemoveRoot, "Clear"); button->getSelectCallbacks().add(this, &CrustaApp::clearDataCallback); addRemoveRoot->manageChild(); addRemoveMargin->manageChild(); top->manageChild(); Margin* actionMargin = new Margin("DataActionMargin", root, false); actionMargin->setAlignment(Alignment::RIGHT); RowColumn* actionRoot = new RowColumn("DataActionRoot",actionMargin,false); actionRoot->setOrientation(RowColumn::HORIZONTAL); button = new Button("DataCancelButton", actionRoot, "Cancel"); button->getSelectCallbacks().add(this, &CrustaApp::loadDataCancelCallback); button = new Button("DataOkButton", actionRoot, "Load"); button->getSelectCallbacks().add(this, &CrustaApp::loadDataOkCallback); actionRoot->manageChild(); actionMargin->manageChild(); root->manageChild(); }
RangeEditor:: RangeEditor(const char* name, Container* parent, bool childManaged) : RowColumn(name, parent, false) { ///\todo allow changing the preferred size through API const Vector preferredSize(4.0f, 0.0f, 0.0f); const StyleSheet* style = getManager()->getStyleSheet(); setNumMinorWidgets(1); //- create the min max labels group RowColumn* labels = new RowColumn("Rlabels", this, false); labels->setNumMinorWidgets(5); labels->setColumnWeight(2, 1.0f); new Label("RminLabelName", labels, "Min:"); rangeLabels[0] = new TextField("RminLabel", labels, 9); rangeLabels[0]->setFloatFormat(TextField::FIXED); rangeLabels[0]->setFieldWidth(9); rangeLabels[0]->setPrecision(2); Margin* centerMargin = new Margin("RcenterMargin", labels, false); centerMargin->setAlignment(Alignment::HCENTER); rangeLabels[1] = new TextField("RcenterLabel", centerMargin, 9); rangeLabels[1]->setFloatFormat(TextField::FIXED); rangeLabels[1]->setFieldWidth(9); rangeLabels[1]->setPrecision(2); centerMargin->manageChild(); rangeLabels[2] = new TextField("RmaxLabel", labels, 9); rangeLabels[2]->setHAlignment(GLFont::Left); rangeLabels[2]->setFloatFormat(TextField::FIXED); rangeLabels[2]->setFieldWidth(9); rangeLabels[2]->setPrecision(2); new Label("RmaxLabelName", labels, ":Max"); labels->manageChild(); //- create the min/max sliders group RowColumn* minmax = new RowColumn("Rminmax", this, false); minmax->setNumMinorWidgets(2); minmax->setPacking(RowColumn::PACK_GRID); RelativeSlider* slider; slider = new RelativeSlider("RminSlider", minmax, RelativeSlider::HORIZONTAL, style->fontHeight*preferredSize[0]); slider->setValue(0.0); slider->setValueRange(-2.0, 2.0, 1.0); slider->getValueCallbacks().add(this, &RangeEditor::sliderCallback); slider = new RelativeSlider("RmaxSlider", minmax, RelativeSlider::HORIZONTAL, style->fontHeight*preferredSize[0]); slider->setValue(0.0); slider->setValueRange(-2.0, 2.0, 1.0); slider->getValueCallbacks().add(this, &RangeEditor::sliderCallback); minmax->manageChild(); //- create the shift slider group RowColumn* shift = new RowColumn("Rshift", this, false); shift->setNumMinorWidgets(1); slider = new RelativeSlider("RshiftSlider", shift, RelativeSlider::HORIZONTAL, style->fontHeight*2.0f*preferredSize[0]); slider->setValue(0.0); slider->setValueRange(-2.0, 2.0, 1.0); slider->getValueCallbacks().add(this, &RangeEditor::sliderCallback); shift->manageChild(); //- finalize if(childManaged) manageChild(); }