AboutDialog::AboutDialog(FXMainWindow *owner) : FXDialogBox(owner, FXStringFormat(_("About %s"), PACKAGE), DECOR_TITLE|DECOR_BORDER|DECOR_RESIZE, 0,0,0,0, 0,0,0,0, 0,0) { m_contents = new FXVerticalFrame(this, LAYOUT_FILL_X|LAYOUT_FILL_Y); FXFontDesc fontdescription; getApp()->getNormalFont()->getFontDesc(fontdescription); fontdescription.size += 10; fontdescription.weight = FXFont::Bold; m_boldfont = new FXFont(getApp(),fontdescription); m_boldfont->create(); getApp()->getNormalFont()->getFontDesc(fontdescription); fontdescription.size -= 10; m_smallfont = new FXFont(getApp(),fontdescription); m_smallfont->create(); new FXLabel(m_contents, "", ICO_BIG, ICON_BELOW_TEXT|LAYOUT_CENTER_X|LAYOUT_FILL_Y); FXLabel *label = new FXLabel(m_contents, (FXString)"\n"+PACKAGE+" "+VERSION, 0, LAYOUT_CENTER_X|LAYOUT_FILL_Y); label->setFont(m_boldfont); new FXLabel(m_contents, (FXString)"\n"+_("Copyright (C) 2008~ David Vachulka ([email protected])\nand others")+"\n", 0, JUSTIFY_LEFT|LAYOUT_FILL_X|LAYOUT_FILL_Y); label = new FXLabel(m_contents, FXStringFormat(_("Built with the FOX Toolkit Library version %d.%d.%d (http://www.fox-toolkit.org)"),FOX_MAJOR,FOX_MINOR,FOX_LEVEL), 0, JUSTIFY_LEFT|LAYOUT_FILL_X|LAYOUT_FILL_Y); label->setFont(m_smallfont); #ifdef HAVE_OPENSSL label = new FXLabel(m_contents, FXStringFormat(_("Built with %s"), OPENSSL_VERSION_TEXT), 0, JUSTIFY_LEFT|LAYOUT_FILL_X|LAYOUT_FILL_Y); label->setFont(m_smallfont); #endif #ifdef HAVE_LUA label = new FXLabel(m_contents, FXStringFormat(_("Built with %s"), LUA_RELEASE), 0, JUSTIFY_LEFT|LAYOUT_FILL_X|LAYOUT_FILL_Y); label->setFont(m_smallfont); #endif label = new FXLabel(m_contents, _("Uses http://www.famfamfam.com/lab/icons/"), 0, JUSTIFY_LEFT|LAYOUT_FILL_X|LAYOUT_FILL_Y); label->setFont(m_smallfont); m_buttonframe = new FXHorizontalFrame(m_contents, LAYOUT_FILL_X); m_buttonClose = new dxEXButton(m_contents, _("C&lose"), 0, this, FXDialogBox::ID_ACCEPT, BUTTON_INITIAL|BUTTON_DEFAULT|FRAME_RAISED|FRAME_THICK|LAYOUT_CENTER_X, 0,0,0,0, 10,10,2,2); }
// =========================================================================== // method definitions // =========================================================================== GNEDialog_About::GNEDialog_About(FXWindow* parent) : FXDialogBox(parent, "About NETEDIT", DECOR_CLOSE | DECOR_TITLE) { FXVerticalFrame* f1 = new FXVerticalFrame(this, LAYOUT_TOP | FRAME_NONE | LAYOUT_FILL_X, 0, 0, 0, 0, 0, 0, 1, 1); // build icons FXHorizontalFrame* f2 = new FXHorizontalFrame(f1, LAYOUT_TOP | LAYOUT_CENTER_X | FRAME_NONE, 0, 0, 0, 0, 0, 0, 1, 1); myDLRIcon = new FXXPMIcon(getApp(), dlr_icon); new FXButton(f2, "\tDLR\t.", myDLRIcon, 0, 0, LAYOUT_CENTER_Y | TEXT_OVER_ICON, 5, 0, 40 + 5, 0, 0, 0, 0, 0); // "NETEDIT <VERSION>" FXVerticalFrame* f4 = new FXVerticalFrame(f2, FRAME_NONE, 0, 0, 0, 0, 20, 0, 0, 0); new FXButton(f2, "", GUIIconSubSys::getIcon(ICON_NETEDIT), 0, 0, LAYOUT_CENTER_Y | TEXT_OVER_ICON, 5, 0, 40 + 5, 0, 12, 0, 0, 0); myHeadlineFont = new FXFont(getApp(), "Arial", 18, FXFont::Bold); FXLabel* l = new FXLabel(f4, "NETEDIT " VERSION_STRING, 0, LAYOUT_CENTER_Y | LAYOUT_CENTER_X | JUSTIFY_CENTER_X | LABEL_NORMAL, 0, 0, 0, 0, 0, 0, 0, 0); l->setFont(myHeadlineFont); new FXLabel(f4, "Network editor for SUMO, the Simulation of Urban MObility", 0, LAYOUT_CENTER_Y | LAYOUT_CENTER_X | JUSTIFY_CENTER_X | LABEL_NORMAL, 0, 0, 0, 0, 0, 0, 0, 0); new FXLabel(f4, HAVE_ENABLED, 0, LAYOUT_CENTER_Y | LAYOUT_CENTER_X | JUSTIFY_CENTER_X | LABEL_NORMAL, 0, 0, 0, 0, 0, 0, 0, 0); // // additional infos FXVerticalFrame* f3 = new FXVerticalFrame(f1, FRAME_NONE, 0, 0, 0, 0, 0, 0, 0, 0); // copyright notice new FXLabel(f3, "Copyright (C) 2001-2016 DLR / Institute of Transportation Systems", 0, LAYOUT_CENTER_X | JUSTIFY_CENTER_X | LABEL_NORMAL, 0, 0, 0, 0, 0, 0, 0, 0); FXLinkLabel* link = new FXLinkLabel(f3, "http://sumo.dlr.de", 0, LAYOUT_CENTER_X | JUSTIFY_CENTER_X | LABEL_NORMAL, 0, 0, 0, 0, 5, 5, 5, 5); link->setTipText("http://sumo.dlr.de"); // ok-button new FXButton(f1, "OK\t\t", 0, this, ID_ACCEPT, LAYOUT_FIX_WIDTH | LAYOUT_CENTER_X | JUSTIFY_CENTER_X | FRAME_THICK | FRAME_RAISED, 0, 0, 50, 30); setIcon(GUIIconSubSys::getIcon(ICON_NETEDIT)); }
// =========================================================================== // method definitions // =========================================================================== GNEDialog_About::GNEDialog_About(FXWindow* parent) : FXDialogBox(parent, "About Eclipse SUMO netedit", GUIDesignDialogBox) { // set dialog icon setIcon(GUIIconSubSys::getIcon(ICON_NETEDIT)); // create frame for main info FXHorizontalFrame* mainInfoFrame = new FXHorizontalFrame(this, GUIDesignAuxiliarHorizontalFrame); // Netedit icon new FXLabel(mainInfoFrame, "", GUIIconSubSys::getIcon(ICON_NETEDIT), GUIDesignLabelIcon64x64noSpacing); // "SUMO <VERSION>" FXVerticalFrame* descriptionFrame = new FXVerticalFrame(mainInfoFrame, GUIDesignLabelAboutInfo); myHeadlineFont = new FXFont(getApp(), "Arial", 18, FXFont::Bold); FXLabel* neteditLabel = new FXLabel(descriptionFrame, "SUMO netedit " VERSION_STRING, 0, GUIDesignLabelAboutInfo); neteditLabel->setFont(myHeadlineFont); new FXLabel(descriptionFrame, "Network editor for Eclipse SUMO, the Simulation of Urban MObility", 0, GUIDesignLabelAboutInfo); new FXLabel(descriptionFrame, HAVE_ENABLED, 0, GUIDesignLabelAboutInfo); // write HAVE_ENABLED with the current modules (except Windows) if (OptionsCont::getOptions().getBool("gui-testing-debug")) { std::string modules(HAVE_ENABLED); while((modules.size() > 0) && (modules.front() != ' ')) { modules.erase(modules.begin()); } WRITE_WARNING(("Modules: " + modules).c_str()); } // copyright notice new FXLabel(this, "Graphical editor for networks of the traffic simulation SUMO.", 0, GUIDesignLabelAboutInfo); new FXLabel(this, "Copyright (C) 2001-2018 German Aerospace Center (DLR) and others.", 0, GUIDesignLabelAboutInfo); new FXLabel(this, "This application is based on code provided by the Eclipse SUMO project.", 0, GUIDesignLabelAboutInfo); new FXLabel(this, "These core components are available under the conditions of the Eclipse Public License v2.", 0, GUIDesignLabelAboutInfo); (new FXLinkLabel(this, "SPDX-License-Identifier: EPL-2.0", 0, GUIDesignLabelAboutInfo))->setTipText("http://www.eclipse.org/legal/epl-v20.html"); // link to homepage (new FXLinkLabel(this, "http://sumo.dlr.de", 0, GUIDesignLabelCenter))->setTipText("http://sumo.dlr.de"); // centered ok-button FXHorizontalFrame* buttonFrame = new FXHorizontalFrame(this, GUIDesignHorizontalFrame); new FXHorizontalFrame(buttonFrame, GUIDesignAuxiliarHorizontalFrame); FXButton* OKButton = new FXButton(buttonFrame, "&OK\t\t", GUIIconSubSys::getIcon(ICON_ACCEPT), this, ID_ACCEPT, GUIDesignButtonOK); new FXHorizontalFrame(buttonFrame, GUIDesignAuxiliarHorizontalFrame); // focus OK button OKButton->setFocus(); }
void fit_panel::setup() { param_matrix = new FXMatrix(scroll_window, 2, LAYOUT_SIDE_BOTTOM|LAYOUT_FILL_Y|MATRIX_BY_COLUMNS, 0, 0, 0, 0, DEFAULT_SPACING, DEFAULT_SPACING, DEFAULT_SPACING, DEFAULT_SPACING, 1, 1); new FXLabel(param_matrix, "Range"); m_wl_entry = new FXTextField(param_matrix, 10, this, ID_SPECTR_RANGE, FRAME_SUNKEN|FRAME_THICK|LAYOUT_FILL_ROW); config_spectral_range(); m_parameters.resize(m_fit->parameters_number()); Str pname; FXString label_text; int current_layer = 0; for(unsigned k = 0; k < m_parameters.size(); k++) { param_info* p = this->get_parameter_pointer(k); m_fit->get_parameter(k, &p->fp); if(p->fp.id == PID_LAYER_N && p->fp.layer_nb != current_layer) { current_layer = p->fp.layer_nb; label_text.format("Layer %i", current_layer); FXLabel *lab = new FXLabel(param_matrix, label_text); lab->setFont(®ressProApp()->bold_font); new FXLabel(param_matrix, ""); } get_param_name(&p->fp, pname.str()); FXString fxpname((const FXchar *) pname.cstr()); FXCheckButton* bt = new FXCheckButton(param_matrix, fxpname, this, ID_PARAM_SELECT); FXTextField* tf = new fx_numeric_field(param_matrix, 10, this, ID_PARAM_VALUE, FRAME_SUNKEN|FRAME_THICK|TEXTFIELD_REAL|LAYOUT_FILL_ROW); tf->setUserData(p); bt->setUserData(p); p->text_field = tf; p->selected = false; p->is_dirty = true; } m_undo_manager.clear(); m_canvas = new plot_canvas(this, NULL, 0, LAYOUT_FILL_X|LAYOUT_FILL_Y); m_fit->config_plot(m_canvas); }
fit_window::fit_window(fit_manager* fit, FXApp* a,const FXString& name,FXIcon *ic,FXIcon *mi,FXuint opts,FXint x,FXint y,FXint w,FXint h,FXint pl,FXint pr,FXint pt,FXint pb,FXint hs,FXint vs) : FXMainWindow(a, "Dispersion Fit", ic, mi, opts, x, y, w, h, pl, pr, pt, pb, hs, vs), m_canvas(0), m_fit(fit) { // Menubar menubar = new FXMenuBar(this, LAYOUT_SIDE_TOP|LAYOUT_FILL_X); statusbar = new FXStatusBar(this, LAYOUT_SIDE_BOTTOM|LAYOUT_FILL_X|FRAME_RAISED|STATUSBAR_WITH_DRAGCORNER); // fit menu fitmenu = new FXMenuPane(this); new FXMenuCommand(fitmenu, "&Run", NULL, this, ID_RUN_FIT); new FXMenuTitle(menubar, "&Fit", NULL, fitmenu); // plot menu plotmenu = new FXMenuPane(this); new FXMenuCommand(plotmenu, "&Auto Scale", NULL, this, ID_PLOT_SCALE); new FXMenuTitle(menubar, "&Plot", NULL, plotmenu); FXHorizontalFrame *mf = new FXHorizontalFrame(this, LAYOUT_FILL_X|LAYOUT_FILL_Y); FXScrollWindow *iw = new FXScrollWindow(mf, VSCROLLER_ALWAYS | HSCROLLING_OFF | LAYOUT_FILL_Y); FXMatrix *matrix = new FXMatrix(iw, 2, LAYOUT_SIDE_BOTTOM|LAYOUT_FILL_Y|MATRIX_BY_COLUMNS, 0, 0, 0, 0, DEFAULT_SPACING, DEFAULT_SPACING, DEFAULT_SPACING, DEFAULT_SPACING, 1, 1); new FXLabel(matrix, "Range"); m_wl_entry = new FXTextField(matrix, 10, this, ID_SPECTR_RANGE, FRAME_SUNKEN|FRAME_THICK|LAYOUT_FILL_ROW); { double wls, wle, wld; m_fit->get_sampling(wls, wle, wld); if (wld == 0.0) m_wl_entry->setText(FXStringFormat("%.3g-%.3g", wls, wle)); else m_wl_entry->setText(FXStringFormat("%.3g-%.3g,%g", wls, wle, wld)); } m_parameters.resize(m_fit->parameters_number()); m_bold_font = new FXFont(getApp(), "helvetica", 9, FXFont::Bold, FXFont::Italic); Str pname; FXString label_text; int current_layer = 0; for (unsigned k = 0; k < m_parameters.size(); k++) { param_info* p = this->get_parameter_pointer(k); m_fit->get_parameter(k, &p->fp); if (p->fp.id == PID_LAYER_N && p->fp.layer_nb != current_layer) { current_layer = p->fp.layer_nb; label_text.format("Layer %i", current_layer); FXLabel *lab = new FXLabel(matrix, label_text); lab->setFont(m_bold_font); new FXLabel(matrix, ""); } get_param_name(&p->fp, pname.str()); FXString fxpname((const FXchar *) pname.cstr()); FXCheckButton* bt = new FXCheckButton(matrix, fxpname, this, ID_PARAM_SELECT); FXTextField* tf = new fx_numeric_field(matrix, 10, this, ID_PARAM_VALUE, FRAME_SUNKEN|FRAME_THICK|TEXTFIELD_REAL|LAYOUT_FILL_ROW); tf->setUserData(p); bt->setUserData(p); p->text_field = tf; p->selected = false; p->is_dirty = true; } m_canvas = new plot_canvas(mf, NULL, 0, LAYOUT_FILL_X|LAYOUT_FILL_Y); m_fit->config_plot(m_canvas); }
void SettingsDialog::setup() { FXVerticalFrame* vframe; FXHorizontalFrame* hframe; FXMatrix* matrix; FXLabel* label; FXFontDesc fontdescription = getApp()->getNormalFont()->getFontDesc(); fontdescription.weight = FXFont::DemiBold; thickfont=new FXFont(getApp(), fontdescription); thickfont->create(); FXGLVisual* glvisual = static_cast<FXGLVisual*>(canvas->getVisual()); canvas->makeCurrent(); setTitle(tr("OpenGL Information")); hframe = new FXHorizontalFrame(this, LAYOUT_SIDE_BOTTOM|LAYOUT_FILL_X|PACK_UNIFORM_WIDTH); new FXButton(hframe, tr("Close"), nullptr, this, ID_ACCEPT,FRAME_RAISED|FRAME_THICK|LAYOUT_RIGHT|BUTTON_DEFAULT|BUTTON_INITIAL,0,0,0,0,20,20,2,2); new FXButton(hframe, tr("Save"), nullptr, this, ID_SAVE,FRAME_RAISED|FRAME_THICK|LAYOUT_RIGHT,0,0,0,0,20,20,2,2); FXTabBook* tabbook = new FXTabBook(this,nullptr,0,LAYOUT_FILL_X|LAYOUT_FILL_Y,0,0,0,0); new FXTabItem(tabbook, tr(" Display Mode ")); matrix = new FXMatrix(tabbook,2,MATRIX_BY_COLUMNS|LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_RAISED|FRAME_THICK); label = new FXLabel(matrix, tr("Hardware-accelerated:"), nullptr, LABEL_NORMAL|LAYOUT_RIGHT); label->setFont(thickfont); new FXLabel(matrix, tr(PRINT_YESNO(glvisual->isAccelerated())), nullptr, LABEL_NORMAL); label = new FXLabel(matrix, tr("Double Buffering:"), nullptr, LABEL_NORMAL|LAYOUT_RIGHT); label->setFont(thickfont); new FXLabel(matrix, tr(PRINT_YESNO(glvisual->isDoubleBuffer())), nullptr, LABEL_NORMAL); label = new FXLabel(matrix, tr("Stereo View:"), nullptr, LABEL_NORMAL|LAYOUT_RIGHT); label->setFont(thickfont); new FXLabel(matrix, tr(PRINT_YESNO(glvisual->isStereo())), nullptr, LABEL_NORMAL); label = new FXLabel(matrix, tr("Buffer-swap by copy:"), nullptr, LABEL_NORMAL|LAYOUT_RIGHT); label->setFont(thickfont); new FXLabel(matrix, tr(PRINT_YESNO(glvisual->isBufferSwapCopy())), nullptr, LABEL_NORMAL); label = new FXLabel(matrix, tr("Color Depth:"), nullptr, LABEL_NORMAL|LAYOUT_RIGHT); label->setFont(thickfont); new FXLabel(matrix, FXString::value("%d",glvisual->getActualRedSize()+glvisual->getActualGreenSize()+glvisual->getActualBlueSize()+glvisual->getActualAlphaSize()),NULL,LABEL_NORMAL); label = new FXLabel(matrix, tr("Depth Buffer Size:"), nullptr, LABEL_NORMAL|LAYOUT_RIGHT); label->setFont(thickfont); new FXLabel(matrix, FXString::value("%d",glvisual->getActualDepthSize()), nullptr, LABEL_NORMAL); label = new FXLabel(matrix, tr("Stencil Buffer Size:"), nullptr, LABEL_NORMAL|LAYOUT_RIGHT); label->setFont(thickfont); new FXLabel(matrix, FXString::value("%d",glvisual->getActualStencilSize()), nullptr, LABEL_NORMAL); label = new FXLabel(matrix, tr("RGBA:"), nullptr, LABEL_NORMAL|LAYOUT_RIGHT); label->setFont(thickfont); new FXLabel(matrix,FXString::value("%d-%d-%d-%d",glvisual->getActualRedSize(),glvisual->getActualGreenSize(),glvisual->getActualBlueSize(),glvisual->getActualAlphaSize()),NULL,LABEL_NORMAL); label = new FXLabel(matrix, tr("Accum RGBA:"), nullptr, LABEL_NORMAL|LAYOUT_RIGHT); label->setFont(thickfont); new FXLabel(matrix,FXString::value("%d-%d-%d-%d",glvisual->getActualAccumRedSize(),glvisual->getActualAccumGreenSize(),glvisual->getActualAccumBlueSize(),glvisual->getActualAccumAlphaSize()),NULL,LABEL_NORMAL); label = new FXLabel(matrix,tr("Multi Sample:"), nullptr, LABEL_NORMAL|LAYOUT_RIGHT); label->setFont(thickfont); new FXLabel(matrix,FXString::value("%dx", glvisual->getActualMultiSamples()), nullptr, LABEL_NORMAL); new FXTabItem(tabbook,tr(" Limits ")); matrix = new FXMatrix(tabbook, 2, MATRIX_BY_COLUMNS|LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_RAISED|FRAME_THICK); GLint intvals[2] = {0, 0}; glGetIntegerv(GL_MAX_VIEWPORT_DIMS, intvals); label = new FXLabel(matrix,tr("Viewport Size:"), nullptr, LABEL_NORMAL|LAYOUT_RIGHT); label->setFont(thickfont); new FXLabel(matrix, FXString::value("%d x %d", intvals[0], intvals[1])); GLint intval(0); glGetIntegerv(GL_MAX_TEXTURE_SIZE, &intval); label = new FXLabel(matrix,tr("Texture Size:"), nullptr, LABEL_NORMAL|LAYOUT_RIGHT); label->setFont(thickfont); new FXLabel(matrix, FXString::value("%d", intval)); #if defined(GL_MAX_TEXTURE_UNITS) glGetIntegerv(GL_MAX_TEXTURE_UNITS, &intval); label = new FXLabel(matrix, tr("Texture Units:"), nullptr, LABEL_NORMAL|LAYOUT_RIGHT); label->setFont(thickfont); new FXLabel(matrix, FXString::value("%d", intval)); #endif glGetIntegerv(GL_MAX_LIGHTS, &intval); label = new FXLabel(matrix,tr("Lights:"), nullptr, LABEL_NORMAL|LAYOUT_RIGHT); label->setFont(thickfont); new FXLabel(matrix, FXString::value("%d", intval)); glGetIntegerv(GL_MAX_CLIP_PLANES, &intval); label = new FXLabel(matrix,tr("Clipping Planes:"), nullptr, LABEL_NORMAL|LAYOUT_RIGHT); label->setFont(thickfont); new FXLabel(matrix, FXString::value("%d", intval)); glGetIntegerv(GL_MAX_MODELVIEW_STACK_DEPTH, &intval); label = new FXLabel(matrix,tr("Modelview Stack:"), nullptr, LABEL_NORMAL|LAYOUT_RIGHT); label->setFont(thickfont); new FXLabel(matrix, FXString::value("%d", intval)); glGetIntegerv(GL_MAX_PROJECTION_STACK_DEPTH, &intval); label = new FXLabel(matrix,tr("Projection Stack:"), nullptr, LABEL_NORMAL|LAYOUT_RIGHT); label->setFont(thickfont); new FXLabel(matrix, FXString::value("%d", intval)); glGetIntegerv(GL_MAX_ATTRIB_STACK_DEPTH, &intval); label = new FXLabel(matrix, tr("Attribute Stack:"), nullptr, LABEL_NORMAL|LAYOUT_RIGHT); label->setFont(thickfont); new FXLabel(matrix, FXString::value("%d", intval)); label = new FXLabel(matrix, tr("Vertex Attributes:"), nullptr, LABEL_NORMAL|LAYOUT_RIGHT); label->setFont(thickfont); #if defined(GL_MAX_VERTEX_ATTRIBS) glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, &intval); new FXLabel(matrix, FXString::value("%d", intval)); #else new FXLabel(matrix,"-"); #endif label = new FXLabel(matrix, tr("Vertex Uniform Components:"), nullptr, LABEL_NORMAL|LAYOUT_RIGHT); label->setFont(thickfont); #if defined(GL_MAX_VERTEX_UNIFORM_COMPONENTS) glGetIntegerv(GL_MAX_VERTEX_UNIFORM_COMPONENTS, &intval); new FXLabel(matrix, FXString::value("%d", intval)); #else new FXLabel(matrix, "-"); #endif label = new FXLabel(matrix, tr("Fragment Uniform Components:"), nullptr, LABEL_NORMAL|LAYOUT_RIGHT); label->setFont(thickfont); #if defined(GL_MAX_FRAGMENT_UNIFORM_COMPONENTS) glGetIntegerv(GL_MAX_FRAGMENT_UNIFORM_COMPONENTS, &intval); new FXLabel(matrix, FXString::value("%d", intval)); #else new FXLabel(matrix, "-"); #endif new FXTabItem(tabbook, tr(" Extensions ")); vframe = new FXVerticalFrame(tabbook, LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_RAISED|FRAME_THICK); vframe = new FXVerticalFrame(vframe, LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_SUNKEN|FRAME_THICK, 0,0,0,0,0,0,0,0); extensionlist = new FXList(vframe, nullptr, 0, FRAME_SUNKEN|FRAME_THICK|LAYOUT_FILL_X|LAYOUT_FILL_Y|HSCROLLING_OFF); // Get OpenGL extensions char* tmp = (char*)glGetString(GL_EXTENSIONS); if (tmp) { char* text = strdup(tmp); char* token = strtok(text, " "); while(token) { extensionlist->appendItem(token); token = strtok(nullptr, " "); } free(text); } extensionlist->setSortFunc(FXList::ascending); extensionlist->sortItems(); // Get GLU extensions #ifdef GLU_VERSION_1_1 tmp = (char*)gluGetString(GLU_EXTENSIONS); if (tmp) { char* text = strdup(tmp); char* token = strtok(text, " "); while (token != nullptr) { extensionlist->appendItem(token); token = strtok(nullptr, " "); } free(text); } #endif new FXTabItem(tabbook, tr(" Driver ")); matrix = new FXMatrix(tabbook, 2, MATRIX_BY_COLUMNS|LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_RAISED|FRAME_THICK); label = new FXLabel(matrix, tr("Vendor:"), nullptr, LABEL_NORMAL|LAYOUT_RIGHT); label->setFont(thickfont); new FXLabel(matrix, FXString::value("%s",glGetString(GL_VENDOR)), nullptr, LABEL_NORMAL); label = new FXLabel(matrix, tr("Renderer:"), nullptr, LABEL_NORMAL|LAYOUT_RIGHT); label->setFont(thickfont); new FXLabel(matrix, FXString::value("%s",glGetString(GL_RENDERER)), nullptr, LABEL_NORMAL); label = new FXLabel(matrix, tr("GL Version:"), nullptr, LABEL_NORMAL|LAYOUT_RIGHT); label->setFont(thickfont); new FXLabel(matrix, FXString::value("%s",glGetString(GL_VERSION)), nullptr, LABEL_NORMAL); label = new FXLabel(matrix, tr("GLU Version:"), nullptr, LABEL_NORMAL|LAYOUT_RIGHT); label->setFont(thickfont); new FXLabel(matrix, FXString::value("%s", gluGetString(GLU_VERSION)), nullptr, LABEL_NORMAL); canvas->makeNonCurrent(); }