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 FolderWindow::AddStructure(const char* filename, const int index) { Fl_Pack* pack = folderPack; pack->begin(); int vertPosn = pack->children() * 30 + pack->y(); Fl_Group* group = new Fl_Group(pack->x(), vertPosn, pack->w(), 30); group->begin(); Fl_Button* label = new Fl_Button(pack->x() + 10, vertPosn, pack->w() - 40, 30, filename); label->align(FL_ALIGN_CENTER | FL_ALIGN_INSIDE | FL_ALIGN_LEFT); label->callback(FolderWindow::ShowFileCallback); label->user_data((void*)index); Fl_Button* removeButton = new Fl_Button(pack->x() + pack->w() - 20, vertPosn + 5, 20, 20); removeButton->callback(FolderWindow::RemoveCallback); removeButton->user_data((void*)index); removeButton->label("@1+"); //printf("Added file: %s\n",label->label()); group->resizable(label); group->end(); pack->end(); folderScroll->redraw(); }
Scheme_Object* spark_fltk_group::resizable(int argc, Scheme_Object** argv) { DEFAULT_RET_INIT; Fl_Group* group = _get_fl_group(argc, argv, 0); if (group) { if (argc == 1) { Fl_Widget* w = group->resizable(); if (w) { Scheme_Object* tag = 0; MZ_GC_DECL_REG(1); MZ_GC_VAR_IN_REG(0, tag); MZ_GC_REG(); tag = scheme_make_integer(FL_WIDGET_TAG); _ret_ = scheme_make_cptr(w, tag); MZ_GC_UNREG(); } } else { Fl_Widget* widget = spark_fltk::_get_widget(argc, argv, 1); if (widget) { group->resizable(widget); _ret_ = scheme_true; } } } DEFAULT_RET_FINISH; }
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(); }
ChannelChatTab::ChannelChatTab(int x, int y, int w, int h, std::string const & channelName, ITabs& iTabs, Model & model, ChatSettingsDialog & chatSettingsDialog): Fl_Tile(x,y,w,h), iTabs_(iTabs), model_(model), chatSettingsDialog_(chatSettingsDialog), channelName_(channelName), logFile_("channel_" + channelName) { callback(ChannelChatTab::callbackSplit, this); // make tab name unique std::string const tabName("#"+channelName); copy_label(tabName.c_str()); // left side (text and input) int const leftW = 0.75*w; Fl_Group * left = new Fl_Group(x, y, leftW, h); int const ih = FL_NORMAL_SIZE*2; // input height text_ = new TextDisplay2(x, y, leftW, h-ih, &logFile_); input_ = new ChatInput(x, y+h-ih, leftW, ih); input_->connectText( boost::bind(&ChannelChatTab::onInput, this, _1) ); input_->connectComplete( boost::bind(&ChannelChatTab::onComplete, this, _1, _2, _3, _4) ); left->resizable(text_); left->end(); // right side (user list) int const rightW = w - leftW; userList_ = new UserList(x+leftW, y, rightW, h, model_, iTabs_); // setup split position(userList_->x(), 0, iTabs.getSplitPos(), 0); end(); chatSettingsDialog_.connectChatSettingsChanged( boost::bind(&ChannelChatTab::initChatSettings, this) ); initChatSettings(); // model signals model_.connectChannelTopicSignal( boost::bind(&ChannelChatTab::topic, this, _1, _2, _3, _4) ); model_.connectChannelMessageSignal( boost::bind(&ChannelChatTab::message, this, _1, _2) ); model_.connectChannelClients( boost::bind(&ChannelChatTab::clients, this, _1, _2) ); model_.connectUserJoinedChannel( boost::bind(&ChannelChatTab::userJoined, this, _1, _2) ); model_.connectUserLeftChannel( boost::bind(&ChannelChatTab::userLeft, this, _1, _2, _3) ); model_.connectSaidChannel( boost::bind(&ChannelChatTab::said, this, _1, _2, _3) ); }
SwitchParamWidget::SwitchParamWidget(TuileWidget* widget, MidiOscSwitchTuile* switchTuile): TuileParamWidget(widget, switchTuile), m_switchTuile(switchTuile) { m_selectInput = new Fl_Simple_Counter(0, 0, 50, 20, "Selected Child"); m_selectInput->align(FL_ALIGN_TOP|FL_ALIGN_LEFT); m_selectInput->callback(statTuileSwitchInputs,this); m_selectInput->labelsize(12); m_selectInput->step(1); m_selectInput->bounds(0,10); Fl_Group *tmpGroup = new Fl_Group(0,0,80,20,""); tmpGroup->end(); tmpGroup->add(m_selectInput); tmpGroup->resizable(false); add(tmpGroup); end(); }
void FolderWindow::AddStructure(const char* filename, const int index) { Fl_Pack* pack = folderPack; pack->begin(); int vertPosn = pack->children() * NAVBUTTONS_BHEIGHT; //+ pack->y() + 15; Fl_Group* group = new Fl_Group(pack->x(), vertPosn, pack->w(), NAVBUTTONS_BHEIGHT); group->begin(); Fl_Button* label = new Fl_Button(pack->x() + 10, vertPosn, pack->w() - 40, 30, filename); label->align(FL_ALIGN_CENTER | FL_ALIGN_INSIDE | FL_ALIGN_LEFT); label->callback(FolderWindow::ShowFileCallback); label->user_data((void*)index); label->labelcolor(GUI_BTEXT_COLOR); char labelWithIcon[MAX_BUFFER_SIZE]; std::string spaceBuffer = string(" "); int curLabelLen = 0; char filePrefix[MAX_BUFFER_SIZE]; size_t fileNameBytes = strlen(filename); snprintf(filePrefix, MAX_BUFFER_SIZE, "%-.20s%s", filename, fileNameBytes > MAX_FOLDER_LABEL_CHARS ? "..." : ""); snprintf(labelWithIcon, MAX_BUFFER_SIZE - 1, "@filenew %s%s", filePrefix, spaceBuffer.substr(0, MAX(0, MAX_FOLDER_LABEL_CHARS - ((int ) strlen(filePrefix)))).c_str()); //strcat(labelWithIcon, " @|>"); label->copy_label(labelWithIcon); label->tooltip(filename); Fl_Button* removeButton = new Fl_Button(pack->x() + pack->w() - 20, vertPosn + 5, 20, 20); removeButton->callback(FolderWindow::RemoveCallback); removeButton->user_data((void*)index); removeButton->label("@1+"); removeButton->labelcolor(GUI_TEXT_COLOR); group->resizable(label); group->end(); pack->end(); folderScroll->redraw(); }
CLuaDirSelector::CLuaDirSelector(const char *desc, const char *val) : CBaseLuaWidget(desc) { const int dirinputh = 35, buttonh = 25; // Group for placing widgets next to eachother Fl_Group *dirgroup = new Fl_Group(0, 0, 0, dirinputh); dirgroup->resizable(NULL); GetGroup()->add(dirgroup); m_pDirInput = new Fl_File_Input(0, 0, 0, dirinputh); m_pDirInput->callback(InputChangedCB, this); if (val && *val) m_pDirInput->value(val); m_pBrowseButton = new Fl_Button(0, (dirinputh-buttonh)/2, 0, buttonh, GetTranslation("Browse")); m_pBrowseButton->callback(BrowseCB, this); dirgroup->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(); }
Fl_Group* gdSampleEditor::createBottomBar(int x, int y, int h) { Fl_Group* g = new Fl_Group(8, waveTools->y()+waveTools->h()+8, w()-16, h); g->begin(); Fl_Group* previewBox = createPreviewBox(g->x(), g->y(), g->h()); geBox* divisor1 = new geBox(previewBox->x()+previewBox->w()+8, g->y(), 1, g->h()); divisor1->box(FL_BORDER_BOX); Fl_Group* opTools = createOpTools(divisor1->x()+divisor1->w()+12, g->y(), g->h()); geBox* divisor2 = new geBox(opTools->x()+opTools->w()+8, g->y(), 1, g->h()); divisor2->box(FL_BORDER_BOX); createInfoBox(divisor2->x()+divisor2->w()+8, g->y(), g->h()); g->end(); g->resizable(0); return g; }
VDBWindow::VDBWindow() : Fl_Window(640+180,480,"vdb") { gl = new GLWindow(0, 0, w() - 180, h()); Fl_Group * group = new Fl_Group(640,0,180,h()); point_size = new Fl_Slider(640+10, 20, 160, 20, "Point Size"); setupSlider(point_size,1,5,5,this); filter_value = new Fl_Slider(640+10, 60, 160 , 20, "Filter"); setupSlider(filter_value,0,1,1,this); color_by = new Fl_Choice(640+30, 100, 110, 20, "Color By"); color_by->align(FL_ALIGN_TOP); color_by->add("vdb_color",0,color_by_wrapper,this); color_by->add("vdb_label",0,color_by_wrapper,this); color_by->value(0); makePretty(color_by); clear_button = new Fl_Button(640+130, h() - 40, 40, 30, "Clear"); clear_button->callback(clear_wrapper,gl); makePretty(clear_button); makePretty(this); for(int i = 0; i < N_CATEGORY_COLORS; i++) { Fl::set_color(i+8,category_colors[i][0],category_colors[i][1],category_colors[i][2]); } static int column_widths[] = { 30, 100, 0 }; Fl_Browser * b = gl->legend = new Fl_Browser(640+10,130, 160, h() - 130 - 50); b->column_widths(column_widths); b->format_char('@'); b->column_char('\t'); b->hide(); group->end(); group->resizable(NULL); this->resizable(gl); this->size_range(500,480); this->end(); };
Fl_Group* gdSampleEditor::createUpperBar() { using namespace giada::m; Fl_Group* g = new Fl_Group(G_GUI_OUTER_MARGIN, G_GUI_OUTER_MARGIN, w()-16, G_GUI_UNIT); g->begin(); grid = new geChoice(g->x(), g->y(), 50, G_GUI_UNIT); snap = new geCheck(grid->x()+grid->w()+4, g->y()+3, 12, 12, "Snap"); sep1 = new geBox(snap->x()+snap->w()+4, g->y(), 506, G_GUI_UNIT); zoomOut = new geButton(sep1->x()+sep1->w()+4, g->y(), G_GUI_UNIT, G_GUI_UNIT, "", zoomOutOff_xpm, zoomOutOn_xpm); zoomIn = new geButton(zoomOut->x()+zoomOut->w()+4, g->y(), G_GUI_UNIT, G_GUI_UNIT, "", zoomInOff_xpm, zoomInOn_xpm); g->end(); g->resizable(sep1); grid->add("(off)"); grid->add("2"); grid->add("3"); grid->add("4"); grid->add("6"); grid->add("8"); grid->add("16"); grid->add("32"); grid->add("64"); if (conf::sampleEditorGridVal == 0) grid->value(0); else grid->value(grid->find_item(u::string::iToString(conf::sampleEditorGridVal).c_str())); grid->callback(cb_changeGrid, (void*)this); snap->value(conf::sampleEditorGridOn); snap->callback(cb_enableSnap, (void*)this); /* TODO - redraw grid if != (off) */ zoomOut->callback(cb_zoomOut, (void*)this); zoomIn->callback(cb_zoomIn, (void*)this); return g; }
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(); }
Fl_Group* gdSampleEditor::createOpTools(int x, int y, int h) { Fl_Group* g = new Fl_Group(x, y, 572, h); g->begin(); g->resizable(0); volumeTool = new geVolumeTool(g->x(), g->y(), ch); boostTool = new geBoostTool(volumeTool->x()+volumeTool->w()+4, g->y(), ch); panTool = new gePanTool(boostTool->x()+boostTool->w()+4, g->y(), ch); pitchTool = new gePitchTool(g->x(), panTool->y()+panTool->h()+8, ch); rangeTool = new geRangeTool(g->x(), pitchTool->y()+pitchTool->h()+8, ch); shiftTool = new geShiftTool(rangeTool->x()+rangeTool->w()+4, pitchTool->y()+pitchTool->h()+8, ch); reload = new geButton(g->x()+g->w()-70, shiftTool->y(), 70, 20, "Reload"); g->end(); if (ch->wave->isLogical()) // Logical samples (aka takes) cannot be reloaded. reload->deactivate(); reload->callback(cb_reload, (void*)this); return g; }
CLuaCFGMenu::CLuaCFGMenu(const char *desc) : CBaseLuaWidget(desc) { m_ColumnWidths[0] = m_ColumnWidths[1] = 0; const int inputh = 25, dirinputh = 35, inputspacing = 10; GetGroup()->begin(); m_pVarListView = new Fl_Hold_Browser(0, 0, 0, GroupHeight() - (inputspacing+dirinputh)); m_pVarListView->callback(SelectionCB, this); m_pInputField = new Fl_Input(0, 0, 0, inputh); m_pInputField->callback(InputChangedCB, this); m_pInputField->when(FL_WHEN_CHANGED); m_pInputField->hide(); m_pChoiceMenu = new Fl_Choice(0, 0, 0, inputh); m_pChoiceMenu->callback(ChoiceChangedCB, this); m_pChoiceMenu->hide(); // Group for placing widgets next to eachother Fl_Group *dirgroup = new Fl_Group(0, 0, 0, dirinputh); dirgroup->resizable(NULL); m_pDirInput = new Fl_File_Input(0, 0, 0, dirinputh); m_pDirInput->callback(InputChangedCB, this); m_pDirInput->when(FL_WHEN_CHANGED); m_pDirInput->hide(); m_pBrowseButton = new Fl_Button(0, (dirinputh-inputh) / 2, 0, inputh, GetTranslation("Browse")); SetButtonWidth(m_pBrowseButton); m_pBrowseButton->callback(BrowseCB, this); m_pBrowseButton->hide(); dirgroup->end(); GetGroup()->end(); }
ModelerUserInterface::ModelerUserInterface() { // Make this instance the current one instance = this; // Initialize pointers to NULL m_nativeChooser = NULL; model = NULL; currentGroup = NULL; renderGroup = NULL; defaultCam = NULL; ps = NULL; movieWidth = 720; movieHeight = 480; // Set appearance to GTK+ for a nice look Fl::scheme("gtk+"); // Set the animation speed to 24 frames/second framesPerSecond = 24; // We're not animating yet. animating = false; simulating = false; rendering = false; drawing = false; // Set the color scheme Fl::set_color(FL_BACKGROUND_COLOR, 240, 240, 240); Fl::set_color(FL_BACKGROUND2_COLOR, 255, 255, 255); Fl::set_color(FL_FOREGROUND_COLOR, 0, 0, 0); Fl::set_color(FL_INACTIVE_COLOR, 128, 128, 128); Fl::set_color(FL_SELECTION_COLOR, 51, 153, 255); // Create all of the UI elements // (autogenerated by FLUID, the FLTK UI Designer) Fl_Double_Window* w; const char* title = "Animator"; { Fl_Double_Window* o = m_controlsWindow = new Fl_Double_Window(800, 625, title); w = o; o->callback((Fl_Callback*)cb_m_controlsWindow, (void*)(this)); o->when(FL_WHEN_NEVER); { Fl_Menu_Bar* o = m_controlsMenuBar = new Fl_Menu_Bar(0, 0, 800, 25); o->menu(menu_m_controlsMenuBar); } // Contains the controls on the left { leftPane = new Fl_Group(0, 25, 250, 600); int tabSpace = 0, controlSpace = 0; int controlTop = 25 + 600 - controlSpace; // Modeler and Curves tabs { Fl_Tabs* t = new Fl_Tabs(0, 25, 250, 600 - controlSpace); // Make the tab area stretch. leftPane->resizable(t); t->when(FL_WHEN_CHANGED); t->callback((Fl_Callback*)TabsCallback, this); // Curves tab { Fl_Group* o = new Fl_Group(0, 50, 250, 575 - controlSpace, "Curves"); o->box(FL_FLAT_BOX); o->color(FL_BACKGROUND_COLOR); { Fl_Tree* o = curvesTree = new Fl_Tree(0, 50, 250, 575 - controlSpace); o->when(FL_WHEN_CHANGED); o->callback((Fl_Callback*)CurveTreeCallback); o->marginleft(-5); o->end(); } o->end(); } // Modeler tab { Fl_Tile* o = m_controlSplitPane = new Fl_Tile(0, 50 + tabSpace, 250, 575 + tabSpace - controlSpace, "Modeler"); // Make only the content area of the tabs resize. t->resizable(o); o->box(FL_FLAT_BOX); { Fl_Tree* o = m_controlsTree = new Fl_Tree(0, 50 + tabSpace, 250, 100); o->when(FL_WHEN_CHANGED); o->callback((Fl_Callback*)TreeCallback); o->marginleft(-5); o->end(); } { Fl_Scroll* o = m_controlsScroll = new Fl_Scroll(0, 150 + tabSpace, 250, 475 - tabSpace - controlSpace); o->type(Fl_Scroll::VERTICAL); o->when(FL_WHEN_CHANGED); { Fl_Pack* o = m_controlsPack = new Fl_Pack(10, 150 + tabSpace, 215, 475 - tabSpace - controlSpace); Fl_Group::current()->resizable(o); o->spacing(2); o->end(); } o->end(); } o->end(); } // end Modeler group/tab t->end(); } // end tabs leftPane->end(); } // left pane { // TODO: remove this extra brace! { Fl_Group* o = m_viewPane = new Special_Tile(250, 25, 550, 600); o->box(FL_NO_BOX); o->color(FL_BACKGROUND_COLOR); // show a smaller modeler view m_modelerView = new ModelerView(250, 25, 550, 350, ""); m_modelerView->resizable(); // show a curve window with animation controls underneath { curvePane = new Fl_Group(250, 375, 550, 250); // Row containing the curve options { Fl_Group* o = new Fl_Group(255, 380, 540, 20, "Curve Editor"); // Put particle system label inside o->align(FL_ALIGN_LEFT | FL_ALIGN_INSIDE); o->labelfont(FL_HELVETICA_BOLD); // Curve type chooser chooserCurveType = new Fl_Choice(445, 380, 120, 20, "Curve Type: "); chooserCurveType->menu(curveTypeMenu); chooserCurveType->callback((Fl_Callback*)chooserCurveTypeCallback, this); chooserCurveType->deactivate(); // Wrap checkbox checkboxWrap = new Fl_Check_Button(570, 380, 60, 20, "Wrap"); checkboxWrap->callback((Fl_Callback*)checkboxWrapCallback, this); checkboxWrap->deactivate(); // Zoom All button buttonZoomAll = new Fl_Button(640, 380, 80, 20, "Zoom All"); buttonZoomAll->callback((Fl_Callback*)buttonZoomAllCallback, this); buttonZoomAll->deactivate(); // No resizing o->resizable(NULL); o->end(); } // The graph widget graph = new GraphWidget(255, 405, 540, 140); graph->callback((Fl_Callback*)graphCallback, this); curvePane->resizable(graph); // stretch the graph on resize // Camera buttons { cameraPane = new Fl_Group(255, 550, 540, 20, "Camera"); // Put camera label inside cameraPane->align(FL_ALIGN_LEFT | FL_ALIGN_INSIDE); cameraPane->labelfont(FL_HELVETICA_BOLD); // Prevent internal widgets from resizing when the group is resized. cameraPane->resizable(NULL); // Use Camera button checkboxUseCamera = new Fl_Check_Button(315, 550, 165, 20, "Look Through Camera"); checkboxUseCamera->callback((Fl_Callback*)checkboxUseCameraCallback); // Plot Camera checkbox Fl_Button* buttonPlotCamera = new Fl_Button(485, 550, 120, 20, "Plot Keyframe"); buttonPlotCamera->callback((Fl_Callback*)buttonPlotCameraCallback); // Clear Plot button Fl_Button* buttonClearPlot = new Fl_Button(610, 550, 120, 20, "Clear Keyframe"); buttonClearPlot->callback((Fl_Callback*)buttonClearCameraCallback); // End this group cameraPane->end(); } // Particle system buttons { particlePane = new Fl_Group(255, 575, 540, 20, "Particle System"); // Put particle system label inside particlePane->align(FL_ALIGN_LEFT | FL_ALIGN_INSIDE); particlePane->labelfont(FL_HELVETICA_BOLD); // Simulate button checkboxSimulate = new Fl_Check_Button(375, 575, 75, 20, "Simulate"); checkboxSimulate->callback((Fl_Callback*)checkboxSimulateCallback); // Clear Particles button buttonClearParticles = new Fl_Button(455, 575, 50, 20, "Clear"); buttonClearParticles->callback((Fl_Callback*)buttonClearParticlesCallback); // Particle "bake" indicator particleBakeIndicator = new IndicatorWindow(510, 575, 285, 20); // TODO: fix this: particleBakeIndicator->range(0, 20); particleBakeIndicator->deactivate(); particlePane->resizable(particleBakeIndicator); // End this group particlePane->end(); } // The playback controls { Fl_Group* o = new Fl_Group(255, 600, 540, 20, "Playback"); // Put particle system label inside o->align(FL_ALIGN_LEFT | FL_ALIGN_INSIDE); o->labelfont(FL_HELVETICA_BOLD); // Rewind button Fl_Button* rewind = new Fl_Button(335, 600, 20, 20, "@|<"); rewind->labeltype(FL_SYMBOL_LABEL); rewind->callback((Fl_Callback*)buttonRewindCallback, this); // Play button buttonPlay = new Fl_Button(360, 600, 20, 20, "@>"); buttonPlay->labeltype(FL_SYMBOL_LABEL); buttonPlay->callback((Fl_Callback*)buttonPlayCallback, this); buttonPlay->labelcolor(FL_GREEN); // Fast Forward button Fl_Button* fastForward = new Fl_Button(385, 600, 20, 20, "@>|"); fastForward->labeltype(FL_SYMBOL_LABEL); fastForward->callback((Fl_Callback*)buttonFastForwardCallback, this); // Time slider sliderTime = new Fl_Value_Slider(455, 600, 340, 20, "Time:"); sliderTime->type(FL_HORIZONTAL); sliderTime->align(FL_ALIGN_LEFT); sliderTime->callback((Fl_Callback*)sliderTimeCallback, this); sliderTime->bounds(0, 20); // Stretch the time slider on resize o->resizable(sliderTime); o->end(); } curvePane->end(); } w->resizable(m_modelerView); o->end(); Fl_Group::current()->resizable(o); } } o->end(); } }
gdActionEditor::gdActionEditor(int chan) : gWindow(640, 176), chan(chan), zoom(100) { if (G_Conf.actionEditorW) { resize(G_Conf.actionEditorX, G_Conf.actionEditorY, G_Conf.actionEditorW, G_Conf.actionEditorH); zoom = G_Conf.actionEditorZoom; } framesPerBar = G_Mixer.framesPerBar / 2; // /2 = we don't care about stereo infos framesPerBeat = G_Mixer.framesPerBeat / 2; framesPerBeats = framesPerBeat * G_Mixer.beats; totalFrames = framesPerBeat * MAX_BEATS; beatWidth = framesPerBeat / zoom; totalWidth = (int) ceilf(totalFrames / (float) zoom); /* container with zoom buttons and the action type selector. Scheme of * the resizable boxes: |[--b1--][actionType][--b2--][+][-]| */ Fl_Group *upperArea = new Fl_Group(8, 8, w()-16, 20); upperArea->begin(); actionType = new gChoice(104, 8, 80, 20); gridTool = new gGridTool(188, 8, this); gBox *b1 = new gBox (248, 8, 300, 20); // padding actionType - zoomButtons zoomIn = new gClick(w()-8-40-4, 8, 20, 20, "+"); zoomOut = new gClick(w()-8-20, 8, 20, 20, "-"); upperArea->end(); upperArea->resizable(b1); actionType->add("key press"); actionType->add("key release"); actionType->add("kill chan"); actionType->value(0); gridTool->init(G_Conf.actionEditorGridVal, G_Conf.actionEditorGridOn); gridTool->calc(); if (G_Mixer.chanMode[chan] == SINGLE_PRESS || G_Mixer.chanMode[chan] & LOOP_ANY) actionType->deactivate(); zoomIn->callback(cb_zoomIn, (void*)this); zoomOut->callback(cb_zoomOut, (void*)this); /* side boxes with text infos for the channel (actions, mute, ...) * Even here we need the padding box trick, otherwise when you enlarge * the window vertically, text boxes strech. */ Fl_Group *texts = new Fl_Group(8, 36, 92, 160); gBox *txtActions = new gBox(8, 36, 92, 20, "Actions"); gBox *txtMutes = new gBox(8, 80, 92, 20, "Mute"); gBox *txtDist = new gBox(8, 100, 92, 20); // pading border - buttons txtActions->align(FL_ALIGN_LEFT | FL_ALIGN_INSIDE); txtMutes ->align(FL_ALIGN_LEFT | FL_ALIGN_INSIDE); if (G_Mixer.chanMode[chan] & LOOP_ANY) { gBox *txtDisabled = new gBox(8, 48, 92, 20, "disabled"); txtDisabled->labelsize(9); txtDisabled->labelcolor(COLOR_BD_0); txtDisabled->align(FL_ALIGN_LEFT | FL_ALIGN_INSIDE); } texts->end(); texts->resizable(txtDist); /* main scroller: contains all widgets */ scroller = new Fl_Scroll(104, 36, this->w()-112, this->h()-44); scroller->type(Fl_Scroll::HORIZONTAL); scroller->hscrollbar.color(COLOR_BG_0); scroller->hscrollbar.selection_color(COLOR_BG_1); scroller->hscrollbar.labelcolor(COLOR_BD_1); scroller->hscrollbar.slider(G_BOX); scroller->begin(); ac = new gActionChannel(scroller->x(), 36, this); mc = new gMuteChannel (scroller->x(), 84, this); scroller->end(); end(); /* if channel is LOOP_ANY, deactivate it: a loop mode channel cannot * hold keypress/keyrelease actions */ if (G_Mixer.chanMode[chan] & LOOP_ANY) ac->deactivate(); gu_setFavicon(this); char buf[256]; sprintf(buf, "Edit Actions in Channel %d", chan+1); label(buf); set_non_modal(); size_range(640, 176); resizable(scroller); show(); }
co_rc_t console_window_t::start() { window = new console_main_window_t(this); window->callback(console_window_cb, this); Fl_Menu_Item console_menuitems[] = { { "File", 0, 0, 0, FL_SUBMENU }, { "Quit", 0, (Fl_Callback *)console_quit_cb, this }, { 0 }, { "Monitor", 0, 0, 0, FL_SUBMENU }, { "Select", 0, (Fl_Callback *)console_select_cb, this, FL_MENU_DIVIDER }, { "Attach", 0, (Fl_Callback *)console_attach_cb, this, }, { "Detach", 0, (Fl_Callback *)console_detach_cb, this, FL_MENU_DIVIDER }, { "Pause", 0, (Fl_Callback *)console_pause_cb, this, }, { "Resume", 0, (Fl_Callback *)console_resume_cb, this, }, { "Terminate", 0, (Fl_Callback *)console_terminate_cb, this, }, { "Send Ctrl-Alt-Del", 0, (Fl_Callback *)console_send_ctrl_alt_del_cb, this, }, { 0 }, { "Inspect", 0, 0, 0, FL_SUBMENU }, { 0 }, { "Help", 0, 0, 0, FL_SUBMENU }, { "About", 0, (Fl_Callback *)console_about_cb, this, }, { 0 }, { 0 } }; unsigned int i; for (i=0; i < sizeof(console_menuitems)/sizeof(console_menuitems[0]); i++) console_menuitems[i].user_data((void *)this); int swidth = 640; int sheight = 480; menu = new Fl_Menu_Bar(0, 0, swidth, 30); menu->box(FL_UP_BOX); menu->align(FL_ALIGN_CENTER); menu->when(FL_WHEN_RELEASE_ALWAYS); menu->copy(console_menuitems, window); Fl_Group *tile = new Fl_Group(0, 30, swidth, sheight-30); widget = new console_widget_t(0, 30, swidth, sheight-120); text_widget = new Fl_Text_Display(0, sheight-120+30, swidth, 70); Fl_Group *tile2 = new Fl_Group(0, sheight-120+30, swidth, 90); text_widget->buffer(new Fl_Text_Buffer()); text_widget->insert_position(0); Fl_Box *box = new Fl_Box(0, sheight-20, swidth, 20); box->label(""); box->align(FL_ALIGN_LEFT | FL_ALIGN_INSIDE); tile2->end(); tile->resizable(widget); tile->end(); window->resizable(tile); window->end(); window->show(); menu_item_activate(console_select_cb); menu_item_deactivate(console_pause_cb); menu_item_deactivate(console_resume_cb); menu_item_deactivate(console_terminate_cb); menu_item_deactivate(console_detach_cb); menu_item_deactivate(console_attach_cb); // Default Font is "Terminal" with size 18 // Sample WinNT environment: set COLINUX_CONSOLE_FONT=Lucida Console:12 // Change only font size: set COLINUX_CONSOLE_FONT=:12 char * env_font = getenv ("COLINUX_CONSOLE_FONT"); if (env_font) { char *p = strchr (env_font, ':'); if (p) { int size = atoi (p+1); if (size >= 4 && size <= 24) { // Set size widget->set_font_size(size); } *p = 0; // End for Fontname } // Set new font style if (strlen (env_font)) { // Remember: set_font need a non stack buffer! // Environment is global static. Fl::set_font(FL_SCREEN, env_font); // Now check font width fl_font(FL_SCREEN, 18); // Use default High for test here if ((int)fl_width('i') != (int)fl_width('W')) { Fl::set_font(FL_SCREEN, "Terminal"); // Restore standard font log("%s: is not fixed font. Using 'Terminal'\n", env_font); } } } log("Cooperative Linux console started\n"); if (start_parameters.attach_id != CO_INVALID_ID) attached_id = start_parameters.attach_id; if (attached_id == CO_INVALID_ID) attached_id = find_first_monitor(); if (attached_id != CO_INVALID_ID) attach(); /* Ignore errors, as we can attach latter */ return CO_RC(OK); }
gdActionEditor::gdActionEditor(channel *chan) : gWindow(640, 284), chan(chan), zoom(100) { if (G_Conf.actionEditorW) { resize(G_Conf.actionEditorX, G_Conf.actionEditorY, G_Conf.actionEditorW, G_Conf.actionEditorH); zoom = G_Conf.actionEditorZoom; } /* compute values */ calc(); /* container with zoom buttons and the action type selector. Scheme of * the resizable boxes: |[--b1--][actionType][--b2--][+][-]| */ Fl_Group *upperArea = new Fl_Group(8, 8, w()-16, 20); upperArea->begin(); if (chan->type == CHANNEL_SAMPLE) { actionType = new gChoice(8, 8, 80, 20); gridTool = new gGridTool(actionType->x()+actionType->w()+4, 8, this); } else gridTool = new gGridTool(8, 8, this); gBox *b1 = new gBox(gridTool->x()+gridTool->w()+4, 8, 300, 20); // padding actionType - zoomButtons zoomIn = new gClick(w()-8-40-4, 8, 20, 20, "+"); zoomOut = new gClick(w()-8-20, 8, 20, 20, "-"); upperArea->end(); upperArea->resizable(b1); if (chan->type == CHANNEL_SAMPLE) { actionType->add("key press"); actionType->add("key release"); actionType->add("kill chan"); actionType->value(0); } gridTool->init(G_Conf.actionEditorGridVal, G_Conf.actionEditorGridOn); gridTool->calc(); if (chan->type == CHANNEL_SAMPLE && (chan->mode == SINGLE_PRESS || chan->mode & LOOP_ANY)) actionType->deactivate(); zoomIn->callback(cb_zoomIn, (void*)this); zoomOut->callback(cb_zoomOut, (void*)this); /* main scroller: contains all widgets */ scroller = new gScroll(8, 36, this->w()-16, this->h()-44); if (chan->type == CHANNEL_SAMPLE) { ac = new gActionChannel (scroller->x(), upperArea->y()+upperArea->h()+8, this); mc = new gMuteChannel (scroller->x(), ac->y()+ac->h()+8, this); vc = new gEnvelopeChannel (scroller->x(), mc->y()+mc->h()+8, this, ACTION_VOLUME, RANGE_FLOAT, "volume"); scroller->add(ac); //scroller->add(new gResizerBar(ac->x(), ac->y()+ac->h(), scroller->w(), 8)); scroller->add(mc); //scroller->add(new gResizerBar(mc->x(), mc->y()+mc->h(), scroller->w(), 8)); scroller->add(vc); //scroller->add(new gResizerBar(vc->x(), vc->y()+vc->h(), scroller->w(), 8)); /* fill volume envelope with actions from recorder */ vc->fill(); /* if channel is LOOP_ANY, deactivate it: a loop mode channel cannot * hold keypress/keyrelease actions */ if (chan->mode & LOOP_ANY) ac->deactivate(); } else { pr = new gPianoRollContainer(scroller->x(), upperArea->y()+upperArea->h()+8, this); scroller->add(pr); scroller->add(new gResizerBar(pr->x(), pr->y()+pr->h(), scroller->w(), 8)); } end(); gu_setFavicon(this); char buf[256]; sprintf(buf, "Edit Actions in Channel %d", chan->index+1); label(buf); set_non_modal(); size_range(640, 284); resizable(scroller); show(); }
gdMidiInputMaster::gdMidiInputMaster() : gdMidiInputBase(0, 0, 300, 284, "MIDI Input Setup (global)") { set_modal(); Fl_Group* groupHeader = new Fl_Group(G_GUI_OUTER_MARGIN, G_GUI_OUTER_MARGIN, w(), 20); groupHeader->begin(); enable = new geCheck(G_GUI_OUTER_MARGIN, G_GUI_OUTER_MARGIN, 120, G_GUI_UNIT, "enable MIDI input"); channel = new geChoice(enable->x()+enable->w()+44, G_GUI_OUTER_MARGIN, 120, G_GUI_UNIT); groupHeader->resizable(nullptr); groupHeader->end(); Fl_Pack* pack = new Fl_Pack(G_GUI_OUTER_MARGIN, groupHeader->y()+groupHeader->h()+G_GUI_OUTER_MARGIN, LEARNER_WIDTH, 212); pack->spacing(G_GUI_INNER_MARGIN); pack->begin(); new geMidiLearner(0, 0, LEARNER_WIDTH, "rewind", &cb_learn, &conf::midiInRewind, nullptr); new geMidiLearner(0, 0, LEARNER_WIDTH, "play/stop", &cb_learn, &conf::midiInStartStop, nullptr); new geMidiLearner(0, 0, LEARNER_WIDTH, "action recording", &cb_learn, &conf::midiInActionRec, nullptr); new geMidiLearner(0, 0, LEARNER_WIDTH, "input recording", &cb_learn, &conf::midiInInputRec, nullptr); new geMidiLearner(0, 0, LEARNER_WIDTH, "metronome", &cb_learn, &conf::midiInMetronome, nullptr); new geMidiLearner(0, 0, LEARNER_WIDTH, "input volume", &cb_learn, &conf::midiInVolumeIn, nullptr); new geMidiLearner(0, 0, LEARNER_WIDTH, "output volume", &cb_learn, &conf::midiInVolumeOut, nullptr); new geMidiLearner(0, 0, LEARNER_WIDTH, "sequencer ×2", &cb_learn, &conf::midiInBeatDouble, nullptr); new geMidiLearner(0, 0, LEARNER_WIDTH, "sequencer ÷2", &cb_learn, &conf::midiInBeatHalf, nullptr); pack->end(); ok = new geButton(w()-88, pack->y()+pack->h()+G_GUI_OUTER_MARGIN, 80, G_GUI_UNIT, "Close"); end(); ok->callback(cb_close, (void*)this); enable->value(conf::midiIn); enable->callback(cb_enable, (void*)this); channel->add("Channel (any)"); channel->add("Channel 1"); channel->add("Channel 2"); channel->add("Channel 3"); channel->add("Channel 4"); channel->add("Channel 5"); channel->add("Channel 6"); channel->add("Channel 7"); channel->add("Channel 8"); channel->add("Channel 9"); channel->add("Channel 10"); channel->add("Channel 11"); channel->add("Channel 12"); channel->add("Channel 13"); channel->add("Channel 14"); channel->add("Channel 15"); channel->add("Channel 16"); channel->value(conf::midiInFilter -1 ? 0 : conf::midiInFilter + 1); channel->callback(cb_setChannel, (void*)this); u::gui::setFavicon(this); show(); }
TableWindow::TableWindow(int x, int y, int w, int h, const char* t) : Fl_Window(x, y, w, h, t) { var = 0; // menu = new Fl_Menu_Bar(0, 0, w, 30); // menu->copy(tablemenu, this); Fl_Button *o; Fl_Group *g; g = new Fl_Group(0,0,30,350); o = new Fl_Button(0, 0, 25, 25); o->image(new Fl_Pixmap(document_new_xpm)); o->callback(new_dat_cb,this); o->tooltip(mgl_gettext("Create new data with zero filling")); // o->box(FL_PLASTIC_UP_BOX); o->down_box(FL_PLASTIC_DOWN_BOX); o = new Fl_Button(0, 25, 25, 25); o->image(new Fl_Pixmap(document_open_xpm)); o->callback(load_dat_cb,this); o->tooltip(mgl_gettext("Load data from file")); // o->box(FL_PLASTIC_UP_BOX); o->down_box(FL_PLASTIC_DOWN_BOX); o = new Fl_Button(0, 50, 25, 25); o->image(new Fl_Pixmap(document_import_xpm)); o->callback(imp_dat_cb,this); o->tooltip(mgl_gettext("Import data from PNG file")); // o->box(FL_PLASTIC_UP_BOX); o->down_box(FL_PLASTIC_DOWN_BOX); o = new Fl_Button(0, 75, 25, 25); o->image(new Fl_Pixmap(document_save_xpm)); o->callback(save_dat_cb,this); o->tooltip(mgl_gettext("Save data to file")); // o->box(FL_PLASTIC_UP_BOX); o->down_box(FL_PLASTIC_DOWN_BOX); o = new Fl_Button(0, 100, 25, 25); o->image(new Fl_Pixmap(document_export_xpm)); o->callback(exp_dat_cb,this); o->tooltip(mgl_gettext("Export data to PNG file")); // o->box(FL_PLASTIC_UP_BOX); o->down_box(FL_PLASTIC_DOWN_BOX); o = new Fl_Button(0, 130, 25, 25); o->image(new Fl_Pixmap(format_indent_more_xpm)); o->callback(list_dat_cb,this); o->tooltip(mgl_gettext("Insert to script as 'list' command")); // o->box(FL_PLASTIC_UP_BOX); o->down_box(FL_PLASTIC_DOWN_BOX); o = new Fl_Button(0, 155, 25, 25); o->image(new Fl_Pixmap(plot_xpm)); o->callback(plot_dat_cb,this); o->tooltip(mgl_gettext("Plot data")); // o->box(FL_PLASTIC_UP_BOX); o->down_box(FL_PLASTIC_DOWN_BOX); o = new Fl_Button(0, 185, 25, 25); o->image(new Fl_Pixmap(diff_xpm)); o->callback(smooth_cb,this); o->tooltip(mgl_gettext("Apply operator (smoothing, integration, difference ...) to data")); // o->box(FL_PLASTIC_UP_BOX); o->down_box(FL_PLASTIC_DOWN_BOX); o = new Fl_Button(0, 210, 25, 25); o->image(new Fl_Pixmap(func_xpm)); o->callback(modify_cb,this); o->tooltip(mgl_gettext("Fill data by formula")); // o->box(FL_PLASTIC_UP_BOX); o->down_box(FL_PLASTIC_DOWN_BOX); o = new Fl_Button(0, 235, 25, 25); o->image(new Fl_Pixmap(size_xpm)); o->callback(resize_cb,this); o->tooltip(mgl_gettext("Resize data with smoothing")); // o->box(FL_PLASTIC_UP_BOX); o->down_box(FL_PLASTIC_DOWN_BOX); o = new Fl_Button(0, 260, 25, 25); o->image(new Fl_Pixmap(crop_xpm)); o->callback(crop_cb,this); o->tooltip(mgl_gettext("Crop (cut off edges) data")); // o->box(FL_PLASTIC_UP_BOX); o->down_box(FL_PLASTIC_DOWN_BOX); o = new Fl_Button(0, 285, 25, 25); o->image(new Fl_Pixmap(tran_xpm)); o->callback(transp_cb,this); o->tooltip(mgl_gettext("Transpose data dimensions")); // o->box(FL_PLASTIC_UP_BOX); o->down_box(FL_PLASTIC_DOWN_BOX); g->end(); g->resizable(0); g = new Fl_Group(30,0,200,30); o = new Fl_Button(30, 0, 25, 25); o->image(new Fl_Pixmap(go_first_xpm)); o->callback(first_sl_cb,this); o->tooltip(mgl_gettext("Go to first slice (Ctrl-F1)")); // o->box(FL_PLASTIC_UP_BOX); o->down_box(FL_PLASTIC_DOWN_BOX); slice = new Fl_Counter(55, 0, 90, 25, 0); slice->callback(change_sl_cb,this); slice->lstep(10); slice->step(1); slice->tooltip(mgl_gettext("Id of slice on third (z-) dimension")); // slice->box(FL_PLASTIC_UP_BOX);// slice->down_box(FL_PLASTIC_DOWN_BOX); o = new Fl_Button(147, 0, 25, 25); o->image(new Fl_Pixmap(go_last_xpm)); o->callback(last_sl_cb,this); o->tooltip(mgl_gettext("Go to last slice (Ctrl-F4)")); g->end(); g->resizable(0); data = new Fl_Data_Table(30,30,w-30,h-30); data->row_header(1); data->row_header_width(70); data->row_resize(1); data->rows(1); data->row_height_all(25); data->col_header(1); data->col_header_height(25); data->col_resize(1); data->cols(1); data->col_width_all(70); end(); resizable(data); // callback(close_table_cb, this); }
co_rc_t console_window_t::start() { window = new console_main_window_t(this); window->callback(console_window_cb, this); Fl_Menu_Item console_menuitems[] = { { "File", 0, 0, 0, FL_SUBMENU }, { "Quit", 0, (Fl_Callback *)console_quit_cb, this }, { 0 }, { "Monitor", 0, 0, 0, FL_SUBMENU }, { "Select", 0, (Fl_Callback *)console_select_cb, this, FL_MENU_DIVIDER }, { "Attach", 0, (Fl_Callback *)console_attach_cb, this, }, { "Detach", 0, (Fl_Callback *)console_detach_cb, this, FL_MENU_DIVIDER }, { "Pause", 0, (Fl_Callback *)console_pause_cb, this, }, { "Resume", 0, (Fl_Callback *)console_resume_cb, this, }, { "Terminate", 0, (Fl_Callback *)console_terminate_cb, this, }, { "Send Ctrl-Alt-Del", 0, (Fl_Callback *)console_send_ctrl_alt_del_cb, this, }, { 0 }, { "Inspect", 0, 0, 0, FL_SUBMENU }, { 0 }, { "Help", 0, 0, 0, FL_SUBMENU }, { "About", 0, (Fl_Callback *)console_about_cb, this, }, { 0 }, { 0 } }; unsigned int i; for (i=0; i < sizeof(console_menuitems)/sizeof(console_menuitems[0]); i++) console_menuitems[i].user_data((void *)this); int swidth = 640; int sheight = 480; menu = new Fl_Menu_Bar(0, 0, swidth, 30); menu->box(FL_UP_BOX); menu->align(FL_ALIGN_CENTER); menu->when(FL_WHEN_RELEASE_ALWAYS); menu->copy(console_menuitems, window); Fl_Group *tile = new Fl_Group(0, 30, swidth, sheight-30); widget = new console_widget_t(0, 30, swidth, sheight-120); text_widget = new Fl_Text_Display(0, sheight-120+30, swidth, 70); Fl_Group *tile2 = new Fl_Group(0, sheight-120+30, swidth, 90); text_widget->buffer(new Fl_Text_Buffer()); text_widget->insert_position(0); Fl_Box *box = new Fl_Box(0, sheight-20, swidth, 20); box->label(""); box->align(FL_ALIGN_LEFT | FL_ALIGN_INSIDE); tile2->end(); tile->resizable(widget); tile->end(); window->resizable(tile); window->end(); window->show(); menu_item_activate(console_select_cb); menu_item_deactivate(console_pause_cb); menu_item_deactivate(console_resume_cb); menu_item_deactivate(console_terminate_cb); menu_item_deactivate(console_detach_cb); menu_item_deactivate(console_attach_cb); log("Cooperative Linux console started\n"); if (start_parameters.attach_id != CO_INVALID_ID) attached_id = start_parameters.attach_id; if (attached_id != CO_INVALID_ID) return attach(); return CO_RC(OK); }
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(); } }
gdEditor::gdEditor(SampleChannel *ch) : gWindow(640, 480), ch(ch) { set_non_modal(); if (G_Conf.sampleEditorX) resize(G_Conf.sampleEditorX, G_Conf.sampleEditorY, G_Conf.sampleEditorW, G_Conf.sampleEditorH); Fl_Group *bar = new Fl_Group(8, 8, w()-16, 20); bar->begin(); reload = new gClick(bar->x(), bar->y(), 50, 20, "Reload"); zoomOut = new gClick(bar->x()+bar->w()-20, bar->y(), 20, 20, "-"); zoomIn = new gClick(zoomOut->x()-24, bar->y(), 20, 20, "+"); bar->end(); bar->resizable(new gBox(reload->x()+reload->w()+4, bar->y(), 80, bar->h())); waveTools = new gWaveTools(8, 36, w()-16, h()-120, ch); waveTools->end(); Fl_Group *tools = new Fl_Group(8, waveTools->y()+waveTools->h()+8, w()-16, 130); tools->begin(); volume = new gDial (tools->x()+42, tools->y(), 20, 20, "Volume"); volumeNum = new gInput(volume->x()+volume->w()+4, tools->y(), 46, 20, "dB"); boost = new gDial (volumeNum->x()+volumeNum->w()+80, tools->y(), 20, 20, "Boost"); boostNum = new gInput(boost->x()+boost->w()+4, tools->y(), 46, 20, "dB"); normalize = new gClick(boostNum->x()+boostNum->w()+40, tools->y(), 70, 20, "Normalize"); pan = new gDial (normalize->x()+normalize->w()+40, tools->y(), 20, 20, "Pan"); panNum = new gInput(pan->x()+pan->w()+4, tools->y(), 45, 20, "%"); pitch = new gDial (tools->x()+42, volume->y()+volume->h()+4, 20, 20, "Pitch"); pitchNum = new gInput (pitch->x()+pitch->w()+4, volume->y()+volume->h()+4, 46, 20); pitchToBar = new gClick (pitchNum->x()+pitchNum->w()+4, volume->y()+volume->h()+4, 46, 20, "To bar"); pitchToSong = new gClick (pitchToBar->x()+pitchToBar->w()+4, volume->y()+volume->h()+4, 46, 20, "To song"); pitchReset = new gClick (pitchToSong->x()+pitchToSong->w()+4, volume->y()+volume->h()+4, 46, 20, "Reset"); chanStart = new gInput(tools->x()+52, pitch->y()+pitch->h()+4, 60, 20, "Start"); chanEnd = new gInput(chanStart->x()+chanStart->w()+40, pitch->y()+pitch->h()+4, 60, 20, "End"); resetStartEnd = new gClick(chanEnd->x()+chanEnd->w()+4, pitch->y()+pitch->h()+4, 46, 20, "Reset"); tools->end(); tools->resizable(new gBox(chanStart->x()+chanStart->w()+4, tools->y(), 80, tools->h())); char buf[16]; ///sprintf(buf, "%d", ch->beginTrue / 2); // divided by 2 because stereo sprintf(buf, "%d", ch->begin / 2); // divided by 2 because stereo chanStart->value(buf); chanStart->type(FL_INT_INPUT); chanStart->callback(cb_setChanPos, this); /* inputs callback: fire when they lose focus or Enter is pressed. */ chanStart->when(FL_WHEN_RELEASE | FL_WHEN_ENTER_KEY); chanEnd ->when(FL_WHEN_RELEASE | FL_WHEN_ENTER_KEY); ///sprintf(buf, "%d", ch->endTrue / 2); // divided by 2 because stereo sprintf(buf, "%d", ch->end / 2); // divided by 2 because stereo chanEnd->value(buf); chanEnd->type(FL_INT_INPUT); chanEnd->callback(cb_setChanPos, this); resetStartEnd->callback(cb_resetStartEnd, this); volume->callback(cb_setVolume, (void*)this); volume->value(ch->guiChannel->vol->value()); float dB = 20*log10(ch->volume); // dB = 20*log_10(linear value) if (dB > -INFINITY) sprintf(buf, "%.2f", dB); else sprintf(buf, "-inf"); volumeNum->value(buf); volumeNum->align(FL_ALIGN_RIGHT); volumeNum->callback(cb_setVolumeNum, (void*)this); boost->range(1.0f, 10.0f); boost->callback(cb_setBoost, (void*)this); if (ch->boost > 10.f) boost->value(10.0f); else boost->value(ch->boost); boost->when(FL_WHEN_CHANGED | FL_WHEN_RELEASE); float boost = 20*log10(ch->boost); // dB = 20*log_10(linear value) sprintf(buf, "%.2f", boost); boostNum->value(buf); boostNum->align(FL_ALIGN_RIGHT); boostNum->callback(cb_setBoostNum, (void*)this); normalize->callback(cb_normalize, (void*)this); pan->range(0.0f, 2.0f); pan->callback(cb_panning, (void*)this); pitch->range(0.01f, 4.0f); pitch->value(ch->pitch); pitch->callback(cb_setPitch, (void*)this); pitch->when(FL_WHEN_RELEASE); sprintf(buf, "%.4f", ch->pitch); // 4 digits pitchNum->value(buf); pitchNum->align(FL_ALIGN_RIGHT); pitchNum->callback(cb_setPitchNum, (void*)this); pitchNum->when(FL_WHEN_RELEASE | FL_WHEN_ENTER_KEY); pitchToBar->callback(cb_setPitchToBar, (void*)this); pitchToSong->callback(cb_setPitchToSong, (void*)this); pitchReset->callback(cb_resetPitch, (void*)this); reload->callback(cb_reload, (void*)this); zoomOut->callback(cb_zoomOut, (void*)this); zoomIn->callback(cb_zoomIn, (void*)this); /* logical samples (aka takes) cannot be reloaded. So far. */ if (ch->wave->isLogical) reload->deactivate(); if (ch->panRight < 1.0f) { char buf[8]; sprintf(buf, "%d L", abs((ch->panRight * 100.0f) - 100)); pan->value(ch->panRight); panNum->value(buf); } else if (ch->panRight == 1.0f && ch->panLeft == 1.0f) { pan->value(1.0f); panNum->value("C"); } else { char buf[8]; sprintf(buf, "%d R", abs((ch->panLeft * 100.0f) - 100)); pan->value(2.0f - ch->panLeft); panNum->value(buf); } panNum->align(FL_ALIGN_RIGHT); panNum->readonly(1); panNum->cursor_color(FL_WHITE); gu_setFavicon(this); size_range(640, 480); resizable(waveTools); label(ch->wave->name.c_str()); show(); }
/* ============================================================================ Class constructor ============================================================================ */ VTTpddServerLog::VTTpddServerLog(int w, int h, const char* title) : Fl_Double_Window(w, h, title) { Fl_Box* o; Fl_Button* b; Fl_Group* g; // Initialize everything m_pServer = NULL; m_enabled = TRUE; m_lastWasRx = FALSE; m_rxCount = m_txCount = 0; m_maxLogEntries = 8192; m_nextRef = 1; m_callbackActive = FALSE; m_autoScroll = TRUE; // Define our default colors m_colors.background = FL_BLACK; m_colors.ref = FL_WHITE; m_colors.rxLabel = FL_YELLOW; m_colors.txLabel = (Fl_Color) 221; m_colors.rxHex = fl_color_average(FL_DARK_GREEN, FL_WHITE, (float) 0.8); m_colors.txHex = fl_color_average((Fl_Color) 221, FL_WHITE, (float) 0.5); m_colors.rxAscii = FL_GREEN; m_colors.txAscii = (Fl_Color) 221; m_fontSize = 14; fl_font(FL_COURIER, m_fontSize); m_height = fl_height(); m_width = (int) fl_width("W"); // =============================== // Now create the controls we need // =============================== // Create a menu m_pMenu = new Fl_Menu_Bar(0, 0, w, MENU_HEIGHT-2); m_pMenu->menu(gServerLog_menuitems); // Create a window for the log m_pLog = new Fl_Double_Window(10, MENU_HEIGHT+10, w-20-15, h-MENU_HEIGHT-50, ""); //m_pLog->color(FL_BLACK); m_pLog->end(); m_pLog->hide(); // Create a scrollbar m_pScroll = new Fl_Scrollbar(w-10-15, MENU_HEIGHT+10, 15, h-MENU_HEIGHT-50, ""); m_pScroll->callback(cb_scroll_log, this); // Create a resizing group g = new Fl_Group(0, h-35, w, 35, ""); // Create an auto scroll checkbox m_pAutoScroll = new Fl_Check_Button(20, h-37, 110, 20, "Auto scroll"); m_pAutoScroll->callback(cb_autoscroll, this); // Create a disable log checkbox m_pDisable = new Fl_Check_Button(20, h-21, 110, 20, "Disable log"); m_pDisable->callback(cb_disable_log, this); // Create a Save button b = new Fl_Button(150, h-30, 80, 20, "Save"); b->align(FL_ALIGN_CENTER | FL_ALIGN_INSIDE); b->callback(cb_save_log, this); // Create a Load button b = new Fl_Button(250, h-30, 80, 20, "Load"); b->align(FL_ALIGN_CENTER | FL_ALIGN_INSIDE); b->callback(cb_load_log, this); // Create a clear button b = new Fl_Button(350, h-30, 80, 20, "Clear"); b->align(FL_ALIGN_CENTER | FL_ALIGN_INSIDE); b->callback(cb_clear_log, this); // Make the group resizable o = new Fl_Box(440, 350, 5, 5, ""); g->resizable(o); g->end(); // Make the window resizable o = new Fl_Box(20, MENU_HEIGHT + 30, 5, 5, ""); resizable(o); // Set the scrollbar size SetScrollSizes(); }
int main( int argc, char **argv ) { //FL_NORMAL_SIZE = 12; Fl_Double_Window *win = new Fl_Double_Window( 500, 460, "Flu_Tree_Browser_Try" ); tree = new Flu_Tree_Browser( 200, 0, 300, 460 ); tree->box( FL_DOWN_BOX ); tree->allow_dnd( true ); //tree->when( FL_WHEN_RELEASE ); tree->callback( tree_callback ); //tree->color( FL_GRAY ); Fl_Group *g = new Fl_Group( 0, 0, 200, 460 ); g->resizable( NULL ); showConnectors = new Fl_Check_Button( 10, 10, 140, 20, "Show Connectors" ); showConnectors->value( tree->show_connectors() ); showConnectors->callback( callback, 0 ); showRoot = new Fl_Check_Button( 10, 30, 100, 20, "Show Root" ); showRoot->value( tree->show_root() ); showRoot->callback( callback, 0 ); rootAlwaysOpen = new Fl_Check_Button( 10, 50, 140, 20, "Root Always Open" ); rootAlwaysOpen->value( tree->get_root()->always_open() ); rootAlwaysOpen->callback( callback, 0 ); showLeaves = new Fl_Check_Button( 10, 70, 110, 20, "Show Leaves" ); showLeaves->value( tree->show_leaves() ); showLeaves->callback( callback, 0 ); showBranches = new Fl_Check_Button( 10, 90, 120, 20, "Show Branches" ); showBranches->value( tree->show_branches() ); showBranches->callback( callback, 0 ); openOnSelect = new Fl_Check_Button( 10, 110, 130, 20, "Open On Select" ); openOnSelect->value( tree->open_on_select() ); openOnSelect->callback( callback, 0 ); active = new Fl_Check_Button( 10, 130, 100, 20, "Active" ); active->value( tree->active() ); active->callback( callback, 0 ); animate = new Fl_Check_Button( 10, 150, 100, 20, "Animate" ); animate->value( tree->animate() ); animate->callback( callback, 0 ); collapseTime = new Fl_Float_Input( 55, 170, 50, 20, "Time" ); { char buf[32]; sprintf( buf, "%.2f", tree->collapse_time() ); collapseTime->value( buf ); } collapseTime->callback( callback, 0 ); collapseTime->deactivate(); frameRate = new Fl_Float_Input( 140, 170, 50, 20, "FPS" ); { char buf[32]; sprintf( buf, "%.2f", tree->frame_rate() ); frameRate->value( buf ); } frameRate->callback( callback, 0 ); frameRate->deactivate(); shaded = new Fl_Check_Button( 10, 190, 130, 20, "Shaded Entries" ); shaded->value( 0 ); shaded->callback( callback, 0 ); shadedEvenColor = new Fl_Button( 70, 210, 20, 20, "Even" ); shadedEvenColor->align( FL_ALIGN_LEFT ); shadedEvenColor->color( FL_LIGHT2 ); shadedEvenColor->callback( shadedColorCB ); shadedEvenColor->deactivate(); shadedOddColor = new Fl_Button( 150, 210, 20, 20, "Odd" ); shadedOddColor->align( FL_ALIGN_LEFT ); shadedOddColor->color( FL_WHITE ); shadedOddColor->callback( shadedColorCB ); shadedOddColor->deactivate(); selectionMode = new Fl_Choice( 110, 235, 85, 25, "Selection Mode" ); selectionMode->add( "NO_SELECT" ); selectionMode->add( "SINGLE_SELECT" ); selectionMode->add( "MULTI_SELECT" ); selectionMode->value( 2 ); selectionMode->callback( mode_callback, 0 ); selectionDragMode = new Fl_Choice( 110, 265, 85, 25, "Selection Drag" ); selectionDragMode->add( "DRAG_IGNORE" ); selectionDragMode->add( "DRAG_TO_SELECT" ); if( tree->have_dnd() ) selectionDragMode->add( "DRAG_TO_MOVE" ); selectionDragMode->value( 1 ); selectionDragMode->callback( mode_callback, 0 ); insertionMode = new Fl_Choice( 110, 295, 85, 25, "Insertion Mode" ); insertionMode->add( "INSERT_FRONT" ); insertionMode->add( "INSERT_BACK" ); insertionMode->add( "INSERT_SORTED" ); insertionMode->add( "INSERT_SORTED_REVERSE" ); insertionMode->value( 2 ); insertionMode->callback( mode_callback, 0 ); hGap = new Fl_Counter( 105, 325, 90, 20, "Horizontal Gap" ); hGap->type( FL_SIMPLE_COUNTER ); hGap->align( FL_ALIGN_LEFT ); hGap->precision( 0 ); hGap->range( 0, 20 ); hGap->value( tree->horizontal_gap() ); hGap->callback( callback, 0 ); vGap = new Fl_Counter( 105, 350, 90, 20, "Vertical Gap" ); vGap->type( FL_SIMPLE_COUNTER ); vGap->align( FL_ALIGN_LEFT ); vGap->precision( 0 ); vGap->range( 0, 20 ); vGap->value( tree->vertical_gap() ); vGap->callback( callback, 0 ); wGap = new Fl_Counter( 105, 375, 90, 20, "Widget Gap" ); wGap->type( FL_SIMPLE_COUNTER ); wGap->align( FL_ALIGN_LEFT ); wGap->precision( 0 ); wGap->range( 0, 20 ); wGap->value( tree->widget_gap() ); wGap->callback( callback, 0 ); if( tree->have_dnd() ) newNode = new Fl_Input( 50, 400, 50, 20, "New" ); rebuildTree = new Fl_Button( 10, 405, 120, 20, "Rebuild Tree" ); rebuildTree->callback( rebuildTreeCB, NULL ); deleteNode = new Fl_Button( 10, 430, 120, 20, "Delete Selected" ); deleteNode->callback( deleteNodeCB, NULL ); g->end(); win->end(); win->resizable( tree ); win->show( argc, argv ); makeTree(); //Fl::dnd_text_ops( 1 ); printf( "sizeof(Flu_Tree_Browser::Node): %d\n", sizeof(Flu_Tree_Browser::Node) ); return( Fl::run() ); }
int main( int argc, char **argv ) { // I18N #ifdef HAVE_SETLOCALE setlocale( LC_MESSAGES, "" ); // with glibc read LC_ALL first setlocale( LC_NUMERIC, "POSIX" ); // to avoid incompatibility between ifs files. #endif #ifdef ENABLE_NLS #ifdef WIN32 bindtextdomain( PACKAGE, "locale" ); #else bindtextdomain( PACKAGE, LOCALEDIR ); #endif textdomain( PACKAGE ); #endif // localization of some strings of FLTK: fl_no = _("No"); fl_yes = _("Yes"); fl_ok = _("OK"); fl_cancel = _("Cancel"); fl_close = _("Close"); Fl_File_Chooser::add_favorites_label = _("Add to Favorites"); Fl_File_Chooser::all_files_label = _("All Files (*)"); Fl_File_Chooser::custom_filter_label = _("Custom Filter"); Fl_File_Chooser::existing_file_label = _("Please choose an existing file!"); Fl_File_Chooser::favorites_label = _("Favorites"); Fl_File_Chooser::filename_label = _("Filename:"); #ifdef WIN32 Fl_File_Chooser::filesystems_label = _("My Computer"); #else Fl_File_Chooser::filesystems_label = _("File Systems"); #endif Fl_File_Chooser::manage_favorites_label = _("Manage Favorites"); Fl_File_Chooser::preview_label = _("Preview"); Fl_File_Chooser::show_label = _("Show:"); string skeletonToOpen; #ifdef HAVE_UNISTD_H while ( true ) { int c = getopt( argc, argv, "vhp:" ); if ( c == -1 ) { break; } switch ( c ) { case 'p': paramFile = optarg; break; case 'v': cerr << "Glito v" << VERSION << "\nCopyright (C) 2002-2003 Emmanuel Debanne\n" << _("Glito is distributed under the terms of the GNU General Public License.\n"); return 0; default: case 'h': usage(); return 0; } } if ( optind < argc ) { skeletonToOpen = argv[optind]; ++optind; if ( optind < argc ) { usage(); return 0; } } #endif // default size of the window int width = 600; int height = 450; const int menuHeight = 30; const int toolbarHeight = 27; const int toolHeight = 25; const string paramXML( IS::readStringInFile(paramFile) ); if ( !paramXML.empty() ) { if ( !IS::ToXML::extractFirst( paramXML, "parameters" ).empty() ) { width = atoi( IS::ToXML::extractFirst( paramXML, "frameWidth" ).c_str() ); height = atoi( IS::ToXML::extractFirst( paramXML, "frameHeight" ).c_str() ); } else { cerr << _("Failed to open: ") << paramFile << '\n'; } } Fl_Window window( width, height + menuHeight + toolbarHeight ); // if the window is closed, the application exits: window.callback(quit_cb); Fl_Menu_Bar menubar( 0, 0, width, menuHeight ); menubar.box(FL_PLASTIC_UP_BOX); // in the main to allow gettext to do its job. #ifdef WIN32 manualFile = ""; #else manualFile = DOCDIR; #endif manualFile += _("manual_en.html"); static Fl_Menu_Item menutable[] = { {_("&File"), 0, 0, 0, FL_SUBMENU}, //0 {_("&Open"), FL_CTRL+'O', skeleton_open_cb}, {_("&Save"), FL_CTRL+'S', skeleton_save_cb}, {_("&Export to Fractint"), 0, export_fractint_cb, 0, FL_MENU_DIVIDER}, #ifdef HAVE_LIBPNG {_("Set Fast Save Directory"), 0, set_snapshotPath_cb}, {_("Fast Save"), 'f', saveSnapshot_cb, NULL, FL_MENU_DIVIDER}, {_("Save PNG"), 0, saveImage_cb, (void*)Image::PNG}, #endif {_("Save PGM"), 0, saveImage_cb, (void*)Image::PGM}, {_("Save BMP bitmap"), 0, saveImage_cb, (void*)Image::BMPB}, {_("Save BMP gray"), 0, saveImage_cb, (void*)Image::BMPG, FL_MENU_DIVIDER}, {_("Edit &Paramaters"), 'p', parameters_cb}, {_("Open Paramaters"), 0, open_parameters_cb}, {_("Sa&ve parameters"), 0, save_parameters_cb, 0, FL_MENU_DIVIDER}, {_("&Quit"), FL_CTRL+'Q', quit_cb}, //10 {0}, {_("&Skeleton"), 0, 0, 0, FL_SUBMENU}, {_("&New"), FL_CTRL+'N', skeleton_new_cb}, {_("&Random"), 'h', skeleton_random_cb, 0, FL_MENU_DIVIDER}, {_("&Dimension"), FL_CTRL+'D', skeleton_dimension_cb}, {_("&Coordinates"), 0, skeleton_coordinates_cb, 0, FL_MENU_DIVIDER}, {_("out Memory1"), '1', outMemory_cb, (void*)1}, {_("out Memory2"), '2', outMemory_cb, (void*)2}, {_("out Memory3"), '3', outMemory_cb, (void*)3}, {_("out Memory4"), '4', outMemory_cb, (void*)4, FL_MENU_DIVIDER},//20 {_("in Memory1"), '5', inMemory_cb, (void*)1}, {_("in Memory2"), '6', inMemory_cb, (void*)2}, {_("in Memory3"), '7', inMemory_cb, (void*)3}, {_("in Memory4"), '8', inMemory_cb, (void*)4}, {0}, {_("&Function"), 0, 0, 0, FL_SUBMENU}, {_("Pre&vious"), 'v', function_previous_cb}, {_("&Next"), 'n', function_next_cb, 0, FL_MENU_DIVIDER}, {_("&Cut"), FL_CTRL+'X', function_cut_cb}, {_("C&opy"), FL_CTRL+'C', function_copy_cb}, {_("&Paste"), FL_CTRL+'V', function_paste_cb, 0, FL_MENU_DIVIDER}, {_("&Reshape"), 's', function_reshape_cb, 0, FL_MENU_DIVIDER}, //32 // the following items are modified by Glito::setSystemType() {_("&Linear"), 0, systemType_cb, (void *)LINEAR, FL_MENU_RADIO|FL_MENU_VALUE}, //33 {_("&Sinusoidal"), 0, systemType_cb, (void *)SINUSOIDAL, FL_MENU_RADIO}, //34 {_("&Julia"), 0, systemType_cb, (void *)JULIA, FL_MENU_RADIO}, //35 {_("&Formulas"), 0, systemType_cb, (void *)FORMULA, FL_MENU_RADIO|FL_MENU_DIVIDER}, //36 {_("&Edit Formulas"), 0, edit_formula_cb}, {0}, {_("&Color"), 0, 0, 0, FL_SUBMENU}, {_("Open Color Map"), 0, readColorMap_cb}, {_("Color / B&W"), 0, colorBW_cb, 0, FL_MENU_DIVIDER}, {_("Maps:")}, {_("Autumn"), 0, readDefinedMap_cb, (void*)0}, {_("Fast"), 0, readDefinedMap_cb, (void*)-1}, {_("CMY"), 0, readDefinedMap_cb, (void*)1}, {_("RGB"), 0, readDefinedMap_cb, (void*)2}, {_("Light CMY"), 0, readDefinedMap_cb, (void*)3}, {_("Dark"), 0, readDefinedMap_cb, (void*)4}, {_("Rich"), 0, readDefinedMap_cb, (void*)5}, {0}, {_("&Animation"), 0, 0, 0, FL_SUBMENU}, {_("&Zoom"), 'z', animation_zoom_cb}, {_("&Transition: Mem1 <-> Mem2"), 't', animation_transition_cb}, {_("&Rotation"), 'r', animation_rotation_cb}, {_("&Stop"), ' ', animation_stop_cb, 0, FL_MENU_DIVIDER}, #ifdef HAVE_LIBMNG {_("Save Zoom as MNG"), 0, saveAnimation_cb, (void*)0}, {_("Save Transition as MNG"), 0, saveAnimation_cb, (void*)1}, {_("Save Rotation as MNG"), 0, saveAnimation_cb, (void*)2}, #endif {0}, {_("&Help"), 0, 0, 0, FL_SUBMENU}, {_("Docu&mentation"), FL_F+1, documentation_cb}, {_("&Demo"), 0, demo_cb}, {_("&About"), 0, about_cb}, {0}, {0} }; menubar.menu(menutable); // the shortcuts are handled by the menu everywhere: //menubar.global(); glito = new Glito( 0, menuHeight + toolbarHeight, width, height ); if ( !IS::ToXML::extractFirst( paramXML, "parameters" ).empty() ) { glito->readParameters( paramXML ); } if ( !skeletonToOpen.empty() ) { if ( !glito->skel.fromXML( IS::readStringInFile(skeletonToOpen) ) ) { cerr << _("Failed to open: ") << skeletonToOpen << '\n'; } glito->setSystemType(); } Fl::visual( FL_DOUBLE | FL_INDEX ); // to allow the preview of PNG files in the file chooser: Fl_File_Icon::load_system_icons(); // the size of glito is changed when the size of the window is changed: window.add_resizable(*glito); // ********* toolbar *********** { Fl_Group* o = new Fl_Group( 0, menuHeight, width, toolbarHeight ); o->resizable(NULL); // not resizable int x = 0; const int toolSpace = 9; const int toolInter = 1; { Fl_Button* o = new Fl_Button( x, menuHeight+1, toolHeight, toolHeight ); prepareButton(o); o->tooltip( _("Open") ); o->image( icon_file_open ); o->callback( (Fl_Callback*)skeleton_open_cb ); x += toolHeight + toolInter; } #ifdef HAVE_LIBPNG { Fl_Button* o = new Fl_Button( x, menuHeight+1, toolHeight, toolHeight ); prepareButton(o); o->tooltip( _("Save PNG") ); o->image( icon_save_file ); o->callback( (Fl_Callback*)saveImage_cb, (void*)Image::PNG ); x += toolHeight + toolInter; } { Fl_Button* o = new Fl_Button( x, menuHeight+1, toolHeight, toolHeight ); prepareButton(o); o->tooltip( _("Fast save") ); o->image( icon_save_fast ); o->callback( (Fl_Callback*)saveSnapshot_cb ); x += toolHeight + toolInter; } #endif x += toolSpace; { Fl_Button* o = new Fl_Button( x, menuHeight+1, toolHeight, toolHeight ); prepareButton(o); o->tooltip( _("Parameters") ); o->image( icon_param ); o->callback( (Fl_Callback*)parameters_cb ); x += toolHeight + toolInter; } x += toolSpace; { Fl_Button* o = new Fl_Button( x, menuHeight+1, toolHeight, toolHeight ); prepareButton(o); o->tooltip( _("Color / B&W") ); o->image( icon_colorbw ); o->callback( (Fl_Callback*)colorBW_cb ); x += toolHeight + toolInter; } { Fl_Button* o = new Fl_Button( x, menuHeight+1, toolHeight, toolHeight ); prepareButton(o); o->tooltip( _("Open Color Map") ); o->image( icon_colormap ); o->callback( (Fl_Callback*)readColorMap_cb ); x += toolHeight + toolInter; } x += toolSpace; { Fl_Button* o = new Fl_Button( x, menuHeight+1, toolHeight, toolHeight ); prepareButton(o); o->tooltip( _("Random") ); o->image( icon_hazard ); o->callback( (Fl_Callback*)skeleton_random_cb ); x += toolHeight + toolInter; } x += toolSpace; { Fl_Button* o = new Fl_Button( x, menuHeight+1, toolHeight, toolHeight ); prepareButton(o); o->tooltip( _("Previous function") ); o->image( icon_previous ); o->callback( (Fl_Callback*)function_previous_cb ); x += toolHeight + toolInter; } { Fl_Button* o = new Fl_Button( x, menuHeight+1, toolHeight, toolHeight ); prepareButton(o); o->tooltip( _("Next function") ); o->image( icon_next ); o->callback( (Fl_Callback*)function_next_cb ); x += toolHeight + toolInter; } x += toolSpace; { Fl_Button* o = new Fl_Button( x, menuHeight+1, toolHeight, toolHeight ); prepareButton(o); o->tooltip( _("Enlarge") ); o->image( icon_larger ); o->callback( (Fl_Callback*)view_large_cb ); x += toolHeight + toolInter; } x += toolSpace; { Fl_Light_Button* o = new Fl_Light_Button( x, menuHeight+1, toolHeight+20, toolHeight ); prepareButton(o); o->tooltip( _("Rot/Dil") ); o->image( icon_rotdil ); o->callback( (Fl_Callback*)mouse_cb ); x += toolHeight + toolInter; } o->end(); } window.end(); window.show(argc,argv); /* Pixmap p = XCreateBitmapFromData( fl_display, DefaultRootWindow(fl_display), icon_bits, icon_width, icon_height ); window.icon((char *)p); */ glito->show(); menubar.show(); { // seed for the random generator: time_t t; time(&t); srand( (unsigned int)t ); } return Fl::run(); }
void CInstaller::Init(int argc, char **argv) { const int buttonsy = WindowH()-ButtonHeight()-ButtonHSpacing(); m_pMainWindow = new Fl_Double_Window(WindowW(), WindowH(), "Nixstaller"); m_pMainWindow->callback(CancelCB, this); Fl_Group *maingroup = new Fl_Group(0, 0, WindowW(), WindowH()); maingroup->resizable(NULL); maingroup->box(FL_FLAT_BOX); maingroup->color(fl_lighter(FL_BACKGROUND_COLOR)); Fl_Pack *mainpack = new Fl_Pack(0, 0, WindowW(), WindowH()-90); mainpack->resizable(NULL); mainpack->type(Fl_Pack::VERTICAL); CreateHeader(); m_pWizard = new Fl_Wizard(0, m_pHeaderGroup->h(), WindowW(), (buttonsy-m_pHeaderGroup->h()-ButtonHSpacing())); m_pWizard->box(FL_ENGRAVED_BOX); m_pWizard->end(); mainpack->end(); m_pCancelButton = new Fl_Button(ButtonWOffset(), buttonsy, 0, ButtonHeight(), GetTranslation("Cancel")); SetButtonWidth(m_pCancelButton); m_pCancelButton->callback(CancelCB, this); m_pButtonPack = new Fl_Pack(0, buttonsy, 0, ButtonHeight()); m_pButtonPack->type(Fl_Pack::HORIZONTAL); m_pButtonPack->spacing(ButtonWSpacing()); m_pBackButton = new Fl_Button(0, buttonsy, 0, ButtonHeight(), CreateText("@<- %s", GetTranslation("Back"))); SetButtonWidth(m_pBackButton); m_pBackButton->callback(BackCB, this); m_pNextButton = new Fl_Button(0, buttonsy, 0, ButtonHeight(), CreateText("%s @->", GetTranslation("Next"))); SetButtonWidth(m_pNextButton); m_pNextButton->callback(NextCB, this); m_pButtonPack->end(); UpdateButtonPack(); maingroup->end(); CBaseInstall::Init(argc, argv); Fl_Shared_Image *img = Fl_Shared_Image::get(GetLogoFName()); if (img) { m_pLogoBox = new Fl_Box(HeaderSpacing(), HeaderSpacing(), img->w()+HeaderSpacing(), img->h()); m_pLogoBox->align(FL_ALIGN_TOP | FL_ALIGN_INSIDE); m_pLogoBox->image(img); m_pHeaderGroup->add(m_pLogoBox); } int size = m_pWizard->children(); for (int i=0; i<size; i++) { CInstallScreen *screen = GetScreen(m_pWizard->child(i)); if (screen->CanActivate()) { ActivateScreen(screen); break; } } m_pMainWindow->end(); m_pMainWindow->show(argc, argv); }
gdEditor::gdEditor(SampleChannel *ch) : gWindow(640, 480), ch(ch) { set_non_modal(); if (G_Conf.sampleEditorX) resize(G_Conf.sampleEditorX, G_Conf.sampleEditorY, G_Conf.sampleEditorW, G_Conf.sampleEditorH); /* top bar: grid and zoom tools */ Fl_Group *bar = new Fl_Group(8, 8, w()-16, 20); bar->begin(); grid = new gChoice(bar->x(), bar->y(), 50, 20); snap = new gCheck(grid->x()+grid->w()+4, bar->y()+4, 12, 12); zoomOut = new gClick(bar->x()+bar->w()-20, bar->y(), 20, 20, "", zoomOutOff_xpm, zoomOutOn_xpm); zoomIn = new gClick(zoomOut->x()-24, bar->y(), 20, 20, "", zoomInOff_xpm, zoomInOn_xpm); bar->end(); bar->resizable(new gBox(grid->x()+grid->w()+4, bar->y(), 80, bar->h())); /* waveform */ waveTools = new gWaveTools(8, 36, w()-16, h()-120, ch); waveTools->end(); /* other tools */ Fl_Group *tools = new Fl_Group(8, waveTools->y()+waveTools->h()+8, w()-16, 130); tools->begin(); volume = new gDial (tools->x()+50, tools->y(), 20, 20, "Volume"); volumeNum = new gInput(volume->x()+volume->w()+4, tools->y(), 46, 20, "dB"); boost = new gDial (volumeNum->x()+volumeNum->w()+108, tools->y(), 20, 20, "Boost"); boostNum = new gInput(boost->x()+boost->w()+4, tools->y(), 44, 20, "dB"); normalize = new gClick(boostNum->x()+boostNum->w()+54, tools->y(), 70, 20, "Normalize"); pan = new gDial (normalize->x()+normalize->w()+40, tools->y(), 20, 20, "Pan"); panNum = new gInput(pan->x()+pan->w()+4, tools->y(), 45, 20, "%"); pitch = new gDial (tools->x()+50, volume->y()+volume->h()+4, 20, 20, "Pitch"); pitchNum = new gInput(pitch->x()+pitch->w()+4, volume->y()+volume->h()+4, 46, 20); pitchToBar = new gClick(pitchNum->x()+pitchNum->w()+4, volume->y()+volume->h()+4, 60, 20, "To bar"); pitchToSong = new gClick(pitchToBar->x()+pitchToBar->w()+4, volume->y()+volume->h()+4, 60, 20, "To song"); pitchHalf = new gClick(pitchToSong->x()+pitchToSong->w()+4, volume->y()+volume->h()+4, 20, 20, "", divideOff_xpm, divideOn_xpm); pitchDouble = new gClick(pitchHalf->x()+pitchHalf->w()+4, volume->y()+volume->h()+4, 20, 20, "", multiplyOff_xpm, multiplyOn_xpm); pitchReset = new gClick(pitchDouble->x()+pitchDouble->w()+4, volume->y()+volume->h()+4, 46, 20, "Reset"); reload = new gClick(pitchReset->x()+pitchReset->w()+4, volume->y()+volume->h()+4, 70, 20, "Reload"); chanStart = new gInput(tools->x()+60, pitch->y()+pitch->h()+4, 60, 20, "Range"); chanEnd = new gInput(chanStart->x()+chanStart->w()+4, pitch->y()+pitch->h()+4, 60, 20, ""); resetStartEnd = new gClick(chanEnd->x()+chanEnd->w()+4, pitch->y()+pitch->h()+4, 60, 20, "Reset"); tools->end(); tools->resizable(new gBox(panNum->x()+panNum->w()+4, tools->y(), 80, tools->h())); /* grid tool setup */ grid->add("(off)"); grid->add("2"); grid->add("3"); grid->add("4"); grid->add("6"); grid->add("8"); grid->add("16"); grid->add("32"); grid->add("64"); grid->value(G_Conf.sampleEditorGridVal); grid->callback(cb_changeGrid, (void*)this); snap->value(G_Conf.sampleEditorGridOn); snap->callback(cb_enableSnap, (void*)this); /* TODO - redraw grid if != (off) */ char buf[16]; sprintf(buf, "%d", ch->begin / 2); // divided by 2 because stereo chanStart->value(buf); chanStart->type(FL_INT_INPUT); chanStart->callback(cb_setChanPos, this); /* inputs callback: fire when they lose focus or Enter is pressed. */ chanStart->when(FL_WHEN_RELEASE | FL_WHEN_ENTER_KEY); chanEnd ->when(FL_WHEN_RELEASE | FL_WHEN_ENTER_KEY); sprintf(buf, "%d", ch->end / 2); // divided by 2 because stereo chanEnd->value(buf); chanEnd->type(FL_INT_INPUT); chanEnd->callback(cb_setChanPos, this); resetStartEnd->callback(cb_resetStartEnd, this); volume->callback(cb_setVolume, (void*)this); volume->value(ch->guiChannel->vol->value()); float dB = 20*log10(ch->volume); // dB = 20*log_10(linear value) if (dB > -INFINITY) sprintf(buf, "%.2f", dB); else sprintf(buf, "-inf"); volumeNum->value(buf); volumeNum->align(FL_ALIGN_RIGHT); volumeNum->callback(cb_setVolumeNum, (void*)this); boost->range(1.0f, 10.0f); boost->callback(cb_setBoost, (void*)this); if (ch->boost > 10.f) boost->value(10.0f); else boost->value(ch->boost); boost->when(FL_WHEN_CHANGED | FL_WHEN_RELEASE); float boost = 20*log10(ch->boost); // dB = 20*log_10(linear value) sprintf(buf, "%.2f", boost); boostNum->value(buf); boostNum->align(FL_ALIGN_RIGHT); boostNum->callback(cb_setBoostNum, (void*)this); normalize->callback(cb_normalize, (void*)this); pan->range(0.0f, 2.0f); pan->callback(cb_panning, (void*)this); pitch->range(0.01f, 4.0f); pitch->value(ch->pitch); pitch->callback(cb_setPitch, (void*)this); pitch->when(FL_WHEN_RELEASE); sprintf(buf, "%.4f", ch->pitch); // 4 digits pitchNum->value(buf); pitchNum->align(FL_ALIGN_RIGHT); pitchNum->callback(cb_setPitchNum, (void*)this); pitchNum->when(FL_WHEN_RELEASE | FL_WHEN_ENTER_KEY); pitchToBar->callback(cb_setPitchToBar, (void*)this); pitchToSong->callback(cb_setPitchToSong, (void*)this); pitchHalf->callback(cb_setPitchHalf, (void*)this); pitchDouble->callback(cb_setPitchDouble, (void*)this); pitchReset->callback(cb_resetPitch, (void*)this); reload->callback(cb_reload, (void*)this); zoomOut->callback(cb_zoomOut, (void*)this); zoomIn->callback(cb_zoomIn, (void*)this); /* logical samples (aka takes) cannot be reloaded. So far. */ if (ch->wave->isLogical) reload->deactivate(); if (ch->panRight < 1.0f) { char buf[8]; sprintf(buf, "%d L", (int) std::abs((ch->panRight * 100.0f) - 100)); pan->value(ch->panRight); panNum->value(buf); } else if (ch->panRight == 1.0f && ch->panLeft == 1.0f) { pan->value(1.0f); panNum->value("C"); } else { char buf[8]; sprintf(buf, "%d R", (int) std::abs((ch->panLeft * 100.0f) - 100)); pan->value(2.0f - ch->panLeft); panNum->value(buf); } panNum->align(FL_ALIGN_RIGHT); panNum->readonly(1); panNum->cursor_color(FL_WHITE); gu_setFavicon(this); size_range(640, 480); resizable(waveTools); label(ch->wave->name.c_str()); show(); }
void Track::init ( void ) { _row = 0; _sequence = NULL; _name = NULL; _selected = false; _size = 1; record_ds = NULL; playback_ds = NULL; labeltype( FL_NO_LABEL ); // clear_visible_focus(); Fl_Group::size( timeline->w(), height() ); Track *o = this; o->box( FL_FLAT_BOX ); { Track_Header *o = new Track_Header( x(), y(), w(), h() ); name_field = o->name_input; record_button = o->rec_button; mute_button = o->mute_button; solo_button = o->solo_button; menu_button = o->menu_button; show_all_takes_button = o->show_all_takes_button; overlay_controls_button = o->overlay_controls_button; name_field->callback( cb_button, this ); record_button->callback( cb_button, this ); mute_button->callback( cb_button, this ); solo_button->callback( cb_button, this ); show_all_takes_button->callback( cb_button, this ); overlay_controls_button->callback( cb_button, this ); menu_button->callback( cb_button, this ); resizable( o ); // o->color( (Fl_Color)53 ); } { /* this pack holds the active sequence, annotation sequence, control sequences and takes */ Fl_Pack *o = pack = new Fl_Pack( x(), y(), w(), h() ); o->type( Fl_Pack::VERTICAL ); o->labeltype( FL_NO_LABEL ); /* o->resize( x() + width(), y(), w() - width(), h() ); */ /* resizable( o ); */ { Fl_Pack *o = annotation = new Fl_Pack( 0, 0, pack->w(), 1 ); o->type( Fl_Pack::VERTICAL ); o->end(); } { { Fl_Group *o = controls_heading = new Fl_Group( 0, 0, pack->w(), 10 ); o->box( FL_FLAT_BOX ); o->color( fl_color_add_alpha( fl_rgb_color( 1,1,1 ), 127 ) ); { Fl_Box *o = new Fl_Box( 0,0, Track::width(), 10 ); o->label( "Controls" ); o->align( FL_ALIGN_RIGHT | FL_ALIGN_INSIDE ); o->labelsize( 10 ); } o->hide(); o->end(); o->resizable( 0 ); } { Fl_Sometimes_Pack *o = control = new Fl_Sometimes_Pack( 0, 0, pack->w(), 1 ); o->spacing( 1 ); o->box( FL_NO_BOX ); o->color( FL_BACKGROUND_COLOR ); o->type( Fl_Pack::VERTICAL ); o->pack( true ); o->hide(); o->align( FL_ALIGN_TOP | FL_ALIGN_LEFT ); o->end(); } } { { Fl_Group *o = takes_heading = new Fl_Group( 0, 0, pack->w(), 10 ); o->box( FL_FLAT_BOX ); o->color( fl_color_add_alpha( fl_rgb_color( 1,1,1 ), 127 ) ); { Fl_Box *o = new Fl_Box( 0,0, Track::width(), 10 ); o->label( "Takes" ); o->align( FL_ALIGN_RIGHT | FL_ALIGN_INSIDE ); o->labelsize( 10 ); } o->hide(); o->end(); o->resizable( 0 ); } { Fl_Pack *o = takes = new Fl_Pack( 0, 0, pack->w(), 1 ); o->type( Fl_Pack::VERTICAL ); o->end(); o->hide(); o->align( FL_ALIGN_TOP | FL_ALIGN_LEFT ); } } o->end(); } end(); }