helpWindow::helpWindow() { { int width = 28 * FL_NORMAL_SIZE; int height = 19 * BH; about = new paletteWindow (width, height, CTX::instance()->nonModalWindows ? true : false, "About Gmsh"); about->box(GMSH_WINDOW_BOX); Fl_Help_View *o = new Fl_Help_View(0, 0, width, height); o->textfont(FL_HELVETICA); o->textsize(FL_NORMAL_SIZE); o->box(FL_FLAT_BOX); std::ostringstream sstream; sstream << "<center><h3>Gmsh</h3><br>version " << GetGmshVersion() << "<p>Copyright (C) 1997-2015" << "<br>Christophe Geuzaine and Jean-Francois Remacle" << "<p><a href=\"http://geuz.org/gmsh/doc/CREDITS.txt\">Credits</a> " << "and <a href=\"http://geuz.org/gmsh/doc/LICENSE.txt\">licensing " << "information</a>" << "<p>Please send all questions and bug reports to the public mailing list " << "<a href=\"mailto:[email protected]\">[email protected]</a></center>" << "<ul>" << "<li><i>Build OS:</i> " << GetGmshBuildOS() << "<li><i>Build date:</i> " << GetGmshBuildDate() << "<li><i>Build host:</i> " << GetGmshBuildHost() << "<li><i>Build options:</i>" << GetGmshBuildOptions() << "<li><i>FLTK version:</i> " << FL_MAJOR_VERSION << "." << FL_MINOR_VERSION << "." << FL_PATCH_VERSION #if defined(HAVE_PETSC) << "<li><i>PETSc version:</i> " << PETSC_VERSION_MAJOR << "." << PETSC_VERSION_MINOR << "." << PETSC_VERSION_SUBMINOR #if defined(PETSC_USE_COMPLEX) << " (complex arithmetic)" #else << " (real arithmetic)" #endif #endif #if defined(HAVE_OCC) << "<li><i>OCC version:</i> " << OCC_VERSION_MAJOR << "." << OCC_VERSION_MINOR << "." << OCC_VERSION_MAINTENANCE #endif #if defined(HAVE_MED) << "<li><i>MED version:</i> " << MED_NUM_MAJEUR << "." << MED_NUM_MINEUR << "." << MED_NUM_RELEASE #endif << "<li><i>Packaged by:</i> " << GetGmshPackager() << "</ul>" << "<center>Visit <a href=\"http://geuz.org/gmsh/\">http://geuz.org/gmsh/</a> " << "for more information</center>"; o->value(sstream.str().c_str()); o->link(help_link); about->position(Fl::x() + Fl::w()/2 - width / 2, Fl::y() + Fl::h()/2 - height / 2); about->end(); } { int width = 40 * FL_NORMAL_SIZE; int height = 18 * BH; basic = new paletteWindow (width, height, CTX::instance()->nonModalWindows ? true : false, "Keyboard and Mouse Usage"); basic->box(GMSH_WINDOW_BOX); Fl_Help_View *o = new Fl_Help_View(0, 0, width, height); o->textfont(FL_HELVETICA); o->textsize(FL_NORMAL_SIZE - 1); o->box(FL_FLAT_BOX); std::string s; s += "<h3>Keyboard Shortcuts</h3>"; s += "<table border=1>"; { std::vector<std::pair<std::string, std::string> > s0 = GetShortcutsUsage(); for(unsigned int i = 0; i < s0.size(); i++) s += "<tr><td>" + s0[i].first + "</td><td>" + s0[i].second + "</td></tr>"; } s += "</table>"; s += "<h3>Mouse Actions</h3>"; s += "<table border=1>"; { std::vector<std::pair<std::string, std::string> > s0 = GetMouseUsage(); for(unsigned int i = 0; i < s0.size(); i++) s += "<tr><td>" + s0[i].first + "</td><td>" + s0[i].second + "</td></tr>"; } s += "</table>"; s += "For a 2 button mouse, Middle button = Shift+Left button.<p>"; s += "For a 1 button mouse, Middle button = Shift+Left button, " "Right button = Alt+Left button."; s += "<h3>Command Line Switches</h3>"; s += "<table border=1>"; { std::vector<std::pair<std::string, std::string> > s0 = GetUsage(); for(unsigned int i = 0; i < s0.size(); i++) if(s0[i].first.size() && s0[i].second.size()) s += "<tr><td>" + s0[i].first + "</td><td>" + s0[i].second + "</td></tr>"; else if(s0[i].first.size() && s0[i].second.empty()) s += "</table>" + s0[i].first + "<table border=1>"; } s += "</table>"; o->value(s.c_str()); basic->resizable(o); basic->position(Fl::x() + Fl::w()/2 - width / 2, Fl::y() + Fl::h()/2 - height / 2); basic->end(); } { int width = 40 * FL_NORMAL_SIZE; int height = 18 * BH; options = new paletteWindow (width, height, CTX::instance()->nonModalWindows ? true : false, "Current Options and Workspace"); options->box(GMSH_WINDOW_BOX); int BW = (width - 4 * WB) / 3; modified = new Fl_Check_Button (WB, WB, BW, BH, "Only show modified"); modified->type(FL_TOGGLE_BUTTON); modified->callback(help_options_cb); modified->tooltip("Show only values different from defaults"); showhelp = new Fl_Check_Button (2 * WB + BW, WB, BW, BH, "Show help"); showhelp->type(FL_TOGGLE_BUTTON); showhelp->callback(help_options_cb); showhelp->tooltip("Show help strings"); Fl_Group* o = new Fl_Group(3 * WB + 2 * BW, WB, BW, BH); o->tooltip("Filter values"); o->box(FL_DOWN_BOX); o->color(FL_BACKGROUND2_COLOR); search = new Fl_Input (3 * WB + 2 * BW + BH, WB + 2, BW - BH - 2, BH - 4, "@gmsh_search"); search->box(FL_FLAT_BOX); search->callback(help_options_cb); search->when(FL_WHEN_CHANGED); //search->take_focus(); cannot call this here - it triggers show() on Linux in fltk 1.3.3 o->resizable(search); o->end(); browser = new Fl_Browser(0, BH + 2 * WB, width, height - BH - 2 * WB); browser->box(GMSH_SIMPLE_TOP_BOX); browser->textfont(FL_SCREEN); browser->textsize(FL_NORMAL_SIZE - 2); browser->type(FL_MULTI_BROWSER); browser->callback(browser_cb); browser->tooltip("Double-click to edit value"); browser->scrollbar_size(std::max(10, FL_NORMAL_SIZE - 2)); // thinner scrollbars options->resizable(browser); options->position(Fl::x() + Fl::w()/2 - width / 2, Fl::y() + Fl::h()/2 - height / 2); options->size_range(width, height); options->end(); } }