/*-----------------------------------main------------------------------*/ int main (int argc, char **argv) { int h_menu; int x, y, w, h; int width = 600; int height = 400; window = new Fl_Window(width,height); h_menu = 30; Fl_Menu_Bar menubar (0,0,width,h_menu); menubar.menu(big_menu); menubar.callback(test_cb); menubar.color(FL_WHITE); menubar.selection_color(FL_BLUE); window->size_range(300,20); window->color(FL_GREEN); x = 170; y = 20 + h_menu; w = width - 190; h = height - h_menu - 40; Fl_Box *box = new Fl_Box (FL_BORDER_BOX, x,y,w,h, "Hello, World!"); box->color(FL_YELLOW); window->end(); window->show(argc, argv); window->make_current(); return Fl::run(); }
virtual int handle(int event) { switch(event) { case FL_SHORTCUT: switch(Fl::event_key()) { case 'f': if(m_fullScreenImage) { m_menuBar.show(); m_pane->resize(0, m_menuBar.h(), w(), h() - m_menuBar.h()); m_pane->uncollapse(); m_fullScreenImage = false; //init_sizes(); } else { m_menuBar.hide(); m_pane->resize(0, 0, w(), h()); m_pane->collapse1(); m_fullScreenImage = true; //init_sizes(); } return 1; } break; } return Fl_Group::handle(event); }
int main(int argc, char **argv) { ThemeLoader::init(); IconLoader::init(); win = new EdeWindow(455, 485, "Theme demo"); win->begin(); { Fl_Button* o = new Fl_Button(355, 450, 90, 25, "Load"); o->tooltip("Load predefined theme"); o->callback(load_theme_cb); } // Fl_Button* o { Fl_Menu_Bar* o = new Fl_Menu_Bar(0, 0, 455, 25); o->menu(menu_); } // Fl_Menu_Bar* o { Fl_Round_Button* o = new Fl_Round_Button(5, 285, 90, 25, "round"); o->down_box(FL_ROUND_DOWN_BOX); } // Fl_Round_Button* o { new Fl_Return_Button(5, 195, 90, 25, "button"); } // Fl_Return_Button* o { new Fl_Input(160, 196, 285, 25, "input:"); } // Fl_Input* o { Fl_Output* o = new Fl_Output(160, 225, 285, 25, "output:"); o->value("Some output value"); } // Fl_Output* o { Fl_File_Browser* o = new Fl_File_Browser(5, 30, 210, 125); o->load("/"); } // Fl_File_Browser* o { Fl_Check_Browser* o = new Fl_Check_Browser(220, 30, 225, 125); o->add("foo"); o->add("foo"); o->add("foo"); } // Fl_Check_Browser* o { Fl_Progress* o = new Fl_Progress(5, 160, 210, 25, "progress bar"); o->value(50); } // Fl_Progress* o { Fl_Slider* o = new Fl_Slider(220, 160, 225, 25); o->type(1); o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); } // Fl_Slider* o { new Fl_Light_Button(5, 225, 90, 25, "button"); } // Fl_Light_Button* o { Fl_Check_Button* o = new Fl_Check_Button(5, 255, 90, 25, "check"); o->down_box(FL_DOWN_BOX); } // Fl_Check_Button* o { Fl_File_Input* o = new Fl_File_Input(160, 256, 285, 35, "file:"); o->value("/home/foo/baz/taz.txt"); } // Fl_File_Input* o { Fl_Text_Editor* o = new Fl_Text_Editor(160, 325, 285, 115, "Text editor"); o->buffer(new Fl_Text_Buffer()); } // Fl_Text_Editor* o { Fl_Box* o = new Fl_Box(25, 328, 80, 80, "image"); IconLoader::set(o, "utilities-terminal", ICON_SIZE_MEDIUM); } // Fl_Box* o win->end(); win->show(argc, argv); Fl::run(); ThemeLoader::shutdown(); IconLoader::shutdown(); return 0; }
ct_image_window::ct_image_window( ) { Fl_Double_Window* w; { Fl_Double_Window* o = image_window = new Fl_Double_Window(421, 528); w = o; o->user_data((void*)(this)); { Fl_Group* o = new Fl_Group(5, 30, 410, 410); o->box(FL_PLASTIC_DOWN_FRAME); { ct_draw_area* o = ct_image = new ct_draw_area(10, 35, 400, 400, "label"); o->box(FL_FLAT_BOX); o->color(FL_DARK3); o->selection_color(FL_BACKGROUND_COLOR); o->labeltype(FL_NORMAL_LABEL); o->labelfont(0); o->labelsize(14); o->labelcolor(FL_BLACK); o->align(FL_ALIGN_CENTER); o->when(FL_WHEN_RELEASE); } o->end(); } { Fl_Menu_Bar* o = new Fl_Menu_Bar(0, 0, 100, 25); o->box(FL_FLAT_BOX); o->menu(menu_); } { Fl_Value_Slider* o = WL = new Fl_Value_Slider(40, 470, 375, 20, "WL"); o->type(1); o->box(FL_PLASTIC_THIN_DOWN_BOX); o->minimum(-2000); o->maximum(7000); o->step(1); o->value(40); o->callback((Fl_Callback*)cb_WL); o->align(FL_ALIGN_LEFT); } { Fl_Value_Slider* o = WW = new Fl_Value_Slider(40, 495, 375, 20, "WW"); o->type(1); o->box(FL_PLASTIC_THIN_DOWN_BOX); o->minimum(1); o->maximum(4000); o->step(1); o->value(300); o->callback((Fl_Callback*)cb_WW); o->align(FL_ALIGN_LEFT); } { Fl_Value_Slider* o = Indx = new Fl_Value_Slider(40, 445, 375, 20, "Indx"); o->type(1); o->box(FL_PLASTIC_THIN_DOWN_BOX); o->step(1); o->callback((Fl_Callback*)cb_Indx); o->align(FL_ALIGN_LEFT); } { Fl_Progress* o = progress_bar = new Fl_Progress(115, 5, 300, 20); o->box(FL_PLASTIC_THIN_UP_BOX); o->selection_color((Fl_Color)1); o->hide(); } o->end(); } }
void ElevatorSimWindow::buildMenu() { static const Fl_Menu_Item menuitems[] = { { "&File", 0, 0, 0, FL_SUBMENU }, { "&Open", FL_COMMAND + 'o', (Fl_Callback *)menuOpenCB, this, FL_MENU_INACTIVE }, { "E&xit", FL_COMMAND + 'x', (Fl_Callback *)menuQuitCB, this }, { 0 }, { "&Help", 0, 0, 0, FL_SUBMENU }, { "How to use", 0, (Fl_Callback *)menuHelpCB, this }, { "About", 0, (Fl_Callback *)menuAboutCB, this }, { 0 }, { 0 }}; Fl_Menu_Bar* menubar = new Fl_Menu_Bar(0, 0, w(), MENUBAR_HEIGHT); menubar->copy(menuitems); add(menubar); }
ImgFilterUI::ImgFilterUI() { Fl_Window* w; { Fl_Window* o = mainWindow = new Fl_Window(445, 439, "Intelligent Scissor UI"); w = o; o->user_data((void*)(this)); mouseInfo = new Fl_Output(92, 411, 353, 28, "mouse status:"); { Fl_Menu_Bar* o = mainMenu = new Fl_Menu_Bar(0, 0, 444, 28, "mainMenu"); o->menu(menu_mainMenu); } { ImgView* o = imgView = new ImgView(0, 32, 444, 376); o->box(FL_DOWN_BOX); //revised by JHC w->focus(imgView); } o->end(); } }
svmUI::svmUI() { Fl_Window* w; { Fl_Window* o = mainWindow = new Fl_Window(864, 687, "Single View Metrology User Interface"); w = o; o->user_data((void*)(this)); mouseInfo = new Fl_Output(92, 659, 772, 28, "mouse status:"); { Fl_Menu_Bar* o = mainMenu = new Fl_Menu_Bar(0, 0, 864, 28); o->menu(menu_mainMenu); } { ImgView* o = imgView = new ImgView(0, 29, 864, 628); o->box(FL_DOWN_BOX); //w->focus(imgView); // dch } o->end(); } imgView->svmui = this; mainWindow->resizable(imgView); }
ModelerUserInterface::ModelerUserInterface() { Fl_Double_Window* w; { Fl_Double_Window* o = m_controlsWindow = new Fl_Double_Window(395, 325, "Final Project Controls"); 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, 395, 25); o->menu(menu_m_controlsMenuBar); } { Fl_Browser* o = m_controlsBrowser = new Fl_Browser(0, 25, 140, 300, "Controls"); o->type(3); o->textsize(10); o->callback((Fl_Callback*)cb_m_controlsBrowser); Fl_Group::current()->resizable(o); } { Fl_Scroll* o = m_controlsScroll = new Fl_Scroll(145, 25, 250, 300); o->type(6); o->when(FL_WHEN_CHANGED); { Fl_Pack* o = m_controlsPack = new Fl_Pack(145, 25, 225, 300); o->end(); } o->end(); } o->end(); } { Fl_Double_Window* o = m_modelerWindow = new Fl_Double_Window( 800, 800, "Assignment 2 Model"); w = o; o->callback((Fl_Callback*)cb_m_modelerWindow, (void*)(this)); o->when(FL_WHEN_NEVER); { ModelerView* o = m_modelerView = new ModelerView(0, 0, 800, 800, "ModelerView"); o->box(FL_NO_BOX); o->color(FL_BACKGROUND_COLOR); o->selection_color(FL_BACKGROUND_COLOR); o->labeltype(FL_NORMAL_LABEL); o->labelfont(0); o->labelsize(14); o->labelcolor(FL_BLACK); o->align(FL_ALIGN_CENTER); o->when(FL_WHEN_RELEASE); Fl_Group::current()->resizable(o); } o->end(); } }
TestWin(int w, int h, const char* title) : Fl_Double_Window(w, h, title), m_menuBar(0, 0, w, 25), m_pane(0), m_scroll(0), m_fullScreenImage(false) { m_menuBar.menu(mainMenu); m_menuBar.box(FL_THIN_UP_BOX); m_pane = new Pane(0, m_menuBar.h(), w, h - m_menuBar.h(), 0.2); // Fl_Pack* pack = new Fl_Pack(0, 0, 1, 1); // pack->type(FL_VERTICAL); Fl_Browser* browser = new Fl_Select_Browser(0, 0, 1, 100); browser->add("blah.tif"); browser->add("blah1.tif"); browser->add("blah2.tif"); browser->add("blah3.tif"); browser->box(FL_THIN_DOWN_BOX); m_pane->add1(browser); // pack->resizable(browser); // pack->end(); // m_pane->add1(pack); m_scroll = new CenterScroll(0, m_menuBar.h(), w, h - m_menuBar.h()); m_pane->add2(m_scroll); resizable(m_pane); end(); }
int main(int argc, char **argv) { vector <string> imageNames = {"images/coveredTile.jpg", "images/emptyUncoveredTile2.jpg", "images/mine.jpg", "images/flaggedMine.jpg", "images/coveredMineForDebugOnly.jpg", "images/incorrectMine.jpg", "images/losingMine.jpg", "images/question.jpg"}; Board* gameBoard = new Board((16 * 16), (16 * 16), 16, 16, false, imageNames); //Add Menu Bar with all options Fl_Menu_Bar *menu = new Fl_Menu_Bar(0, 0, (16 * 16), 25); menu->add("&File/&New Game", "^n", Menu::MyMenuCallback, 0, FL_MENU_DIVIDER); menu->add("&File/Fastest &Times", "^t", Menu::MyMenuCallback); menu->add("&File/About", 0, Menu::MyMenuCallback); menu->add("&File/&Quit", "^q", Menu::MyMenuCallback); menu->add("&Difficulty/Easy", 0, Menu::MyMenuCallback); menu->add("&Difficulty/Medium", 0, Menu::MyMenuCallback); menu->add("&Difficulty/Expert", 0, Menu::MyMenuCallback); menu->add("&Difficulty/Custom", 0, Menu::MyMenuCallback); clock_box = new Fl_Box((16 * 16) - 25, 0, 25, 25, "0"); gameBoard->show(0, nullptr); Fl::add_timeout(1.0, Timer_CB); return Fl::run(); system("pause"); }
ModelerUserInterface::ModelerUserInterface() { // Make this instance the current one instance = this; // Initialize pointers to NULL m_nativeChooser = NULL; model = NULL; currentGroup = NULL; // 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; // 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 = "CSEP457 Modeler"; const char* title = "CSEP557 Modeler"; { 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 = -25, controlSpace = 0; { Fl_Tile* o = m_controlSplitPane = new Fl_Tile(0, 50 + tabSpace, 250, 575 - tabSpace); 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 leftPane->end(); } // left pane { // TODO: remove this extra brace! { Fl_Group* o = m_viewPane = new Fl_Group(250, 25, 550, 600); o->box(FL_NO_BOX); o->color(FL_BACKGROUND_COLOR); m_modelerView = new ModelerView(250, 25, 550, 600, ""); w->resizable(m_modelerView); o->end(); Fl_Group::current()->resizable(o); } } o->end(); } }
Mixer::Mixer ( int X, int Y, int W, int H, const char *L ) : Fl_Group( X, Y, W, H, L ) { Loggable::dirty_callback( &Mixer::handle_dirty, this ); _rows = 1; box( FL_FLAT_BOX ); labelsize( 96 ); { Fl_Group *o = new Fl_Group( X, Y, W, 24 ); { Fl_Menu_Bar *o = menubar = new Fl_Menu_Bar( X, Y, W, 24 ); o->add( "&Project/&New" ); o->add( "&Project/&Open" ); o->add( "&Project/&Save", FL_CTRL + 's', 0, 0 ); o->add( "&Project/&Quit", FL_CTRL + 'q', 0, 0 ); o->add( "&Mixer/&Add Strip", 'a', 0, 0 ); o->add( "&Mixer/Add &N Strips" ); o->add( "&Mixer/&Import Strip" ); o->add( "&Mixer/&Rows/One", '1', 0, 0 ); o->add( "&Mixer/&Rows/Two", '2', 0, 0 ); o->add( "&Mixer/&Rows/Three", '3', 0, 0 ); o->add( "&View/&Theme", 0, 0, 0 ); o->add( "_&Options/&Display/&Knobs/&Arc", 0, 0, 0, FL_MENU_RADIO ); o->add( "_&Options/&Display/&Knobs/&Burnished", 0, 0, 0, FL_MENU_RADIO ); o->add( "_&Options/&Display/&Knobs/&Plastic", 0, 0, 0, FL_MENU_RADIO | FL_MENU_VALUE ); o->add( "_&Options/&Display/&Sliders/&Nice", 0, 0, 0, FL_MENU_RADIO | FL_MENU_VALUE ); o->add( "_&Options/&Display/&Sliders/&Fill", 0, 0, 0, FL_MENU_RADIO ); o->add( "_&Options/&Display/&Sliders/&Simple", 0, 0, 0, FL_MENU_RADIO ); o->add( "_&Options/&Display/&Colors/&System", 0, 0, 0, FL_MENU_RADIO ); o->add( "&Help/&Manual" ); o->add( "&Help/&About" ); o->callback( cb_menu, this ); } { Fl_Box *o = project_name = new Fl_Box( X + 150, Y, W, 24 ); o->labelfont( FL_HELVETICA_ITALIC ); o->label( 0 ); o->align( FL_ALIGN_INSIDE | FL_ALIGN_CENTER ); o->labeltype( FL_SHADOW_LABEL ); Fl_Group::current()->resizable( o ); } { sm_blinker = new Fl_Button( ( X + W) - 37, Y + 4, 35, 15, "SM"); sm_blinker->box(FL_ROUNDED_BOX); sm_blinker->down_box(FL_ROUNDED_BOX); sm_blinker->color(FL_DARK2); sm_blinker->selection_color((Fl_Color)93); sm_blinker->labeltype(FL_NORMAL_LABEL); sm_blinker->labelfont(3); sm_blinker->labelsize(14); sm_blinker->labelcolor(FL_DARK3); sm_blinker->align(Fl_Align(FL_ALIGN_CENTER)); sm_blinker->when(FL_WHEN_RELEASE); sm_blinker->deactivate(); } // Fl_Blink_Button* sm_blinker o->end(); } { Fl_Scroll *o = scroll = new Fl_Scroll( X, Y + 24, W, H - 24 ); o->box( FL_FLAT_BOX ); // o->type( Fl_Scroll::HORIZONTAL_ALWAYS ); // o->box( Fl_Scroll::BOTH ); { Fl_Flowpack *o = mixer_strips = new Fl_Flowpack( X, Y + 24, W, H - 18 - 24 ); // label( "Non-Mixer" ); align( (Fl_Align)(FL_ALIGN_CENTER | FL_ALIGN_INSIDE) ); o->box( FL_FLAT_BOX ); o->type( Fl_Pack::HORIZONTAL ); o->hspacing( 2 ); o->vspacing( 2 ); o->end(); Fl_Group::current()->resizable( o ); } o->end(); Fl_Group::current()->resizable( o ); } end(); // Fl::add_timeout( STATUS_UPDATE_FREQ, update_cb, this ); update_menu(); load_options(); }
void Mixer::cb_menu(Fl_Widget* o) { Fl_Menu_Bar *menu = (Fl_Menu_Bar*)o; /* const Fl_Menu_Item *mi = &menu->menu()[menu->value()]; */ char picked[256]; // const char *picked = menu->text(); menu->item_pathname( picked, sizeof( picked ) ); if (! strcmp( picked, "&Project/&New") ) { DMESSAGE( "New project" ); const char *templates[] = { "Default", NULL }; char *default_path; char *selected_template; read_line( user_config_dir, "default_path", &default_path ); char *path = new_project_chooser( templates, &default_path, &selected_template ); if ( path ) { if ( ! Project::create( path, selected_template ) ) fl_alert( "Error creating project!" ); free( path ); free( selected_template ); } update_menu(); if ( default_path ) { write_line( user_config_dir, "default_path", default_path ); free( default_path ); } } else if (! strcmp( picked, "&Project/&Open" ) ) { char *path = NULL; // read_line( user_config_dir, "default_path", &path ); const char *name = fl_dir_chooser( "Open Project", path ); free( path ); mixer->hide(); if ( int err = Project::open( name ) ) { fl_alert( "Error opening project: %s", Project::errstr( err ) ); } update_menu(); mixer->show(); } else if (! strcmp( picked, "&Project/&Save" ) ) { command_save(); } else if (! strcmp( picked, "&Project/&Quit") ) { command_quit(); } else if ( !strcmp( picked, "&Mixer/&Add Strip" ) ) { command_add_strip(); } else if ( !strcmp( picked, "&Mixer/Add &N Strips" ) ) { const char *s = fl_input( "Enter number of strips to add" ); if ( s ) { for ( int i = atoi( s ); i > 0; i-- ) command_add_strip(); } } else if ( !strcmp( picked, "&Mixer/&Import Strip" ) ) { const char *s = fl_file_chooser( "Export strip to filename:", "*.strip", NULL, 0 ); if ( s ) { if (! Mixer_Strip::import_strip( s ) ) fl_alert( "%s", "Failed to import strip!" ); } } else if (! strcmp( picked, "&Mixer/&Rows/One") ) { rows( 1 ); } else if (! strcmp( picked, "&Mixer/&Rows/Two") ) { rows( 2 ); } else if (! strcmp( picked, "&Mixer/&Rows/Three") ) { rows( 3 ); } else if (! strcmp( picked, "&View/&Theme") ) { fl_theme_chooser(); } else if (! strcmp( picked, "&Options/&Display/&Knobs/&Burnished") ) { Fl_Dial::default_style( Fl_Dial::BURNISHED_DIAL ); redraw_windows(); } else if (! strcmp( picked, "&Options/&Display/&Knobs/&Arc") ) { Fl_Dial::default_style( Fl_Dial::ARC_DIAL ); redraw_windows(); } else if (! strcmp( picked, "&Options/&Display/&Knobs/&Plastic") ) { Fl_Dial::default_style( Fl_Dial::PLASTIC_DIAL ); redraw_windows(); } else if (! strcmp( picked, "&Options/&Display/&Sliders/&Nice") ) { Fl_Value_SliderX::default_style( Fl_Value_SliderX::NICE_SLIDER ); redraw_windows(); } else if (! strcmp( picked, "&Options/&Display/&Sliders/&Fill") ) { Fl_Value_SliderX::default_style( Fl_Value_SliderX::FILL_SLIDER ); redraw_windows(); } else if (! strcmp( picked, "&Options/&Display/&Sliders/&Simple") ) { Fl_Value_SliderX::default_style( Fl_Value_SliderX::SIMPLE_SLIDER ); redraw_windows(); } else if ( ! strcmp( picked, "&Help/&About" ) ) { About_Dialog ab( PIXMAP_PATH "/non-mixer/icon-256x256.png" ); ab.logo_box->label( VERSION ); ab.title->label( "The Non Mixer" ); ab.copyright->label( "Copyright (C) 2008-2010 Jonathan Moore Liles" ); ab.credits->label( "Non-Mixer was written from scratch by\n" "Jonathan Moore Liles for his own use\n" "(see the manual).\n" "\n" "Nobody planned. Nobody helped.\n" "You can help now by donating time, money,\n" "and/or replacing the rest of Linux Audio\n" "with fast, light, reliable alternatives.\n" ); ab.website_url->label( "http://non-mixer.tuxfamily.org" ); ab.run(); } else if ( !strcmp( picked, "&Help/&Manual" )) { char *pat; asprintf( &pat, "file://%s.html", DOCUMENT_PATH "/non-mixer/MANUAL" ); open_url( pat ); free( pat ); } }
Fl_Double_Window* make_window() { Fl_Double_Window* w; { Fl_Double_Window* o = new Fl_Double_Window(400, 605); w = o; { undobutton = new Fl_Button(6, 25, 40, 25, "Undo"); undobutton->down_box(FL_DOWN_BOX); undobutton->callback((Fl_Callback*)undo_cb); } // Fl_Button* undobutton { forceslider = new Fl_Slider(206, 25, 75, 25, "Force"); forceslider->type(5); forceslider->selection_color((Fl_Color)1); forceslider->minimum(0.05); forceslider->value(0.5); forceslider->callback((Fl_Callback*)lerp_cb); forceslider->align(Fl_Align(FL_ALIGN_RIGHT)); } // Fl_Slider* forceslider { rgbmode = new Fl_Button(331, 25, 35, 25, "HSB"); rgbmode->labelsize(12); rgbmode->callback((Fl_Callback*)rgbmode_cb); rgbmode->align(Fl_Align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE)); } // Fl_Button* rgbmode { fnamebox = new Fl_Input(31, 60, 355, 25, "File:"); fnamebox->labeltype(FL_ENGRAVED_LABEL); fnamebox->labelsize(12); fnamebox->callback((Fl_Callback*)input_cb); fnamebox->when(FL_WHEN_ENTER_KEY_ALWAYS); } // Fl_Input* fnamebox { cshow.hsblbls[0] = new Fl_Box(30, 219, 80, 20, "Hue (L)"); cshow.hsblbls[0]->box(FL_FLAT_BOX); cshow.hsblbls[0]->color((Fl_Color)34); cshow.hsblbls[0]->labelfont(1); cshow.hsblbls[0]->labelsize(12); cshow.hsblbls[0]->labelcolor((Fl_Color)3); } // Fl_Box* cshow.hsblbls[0] { cshow.hsblbls[1] = new Fl_Box(115, 219, 75, 20, "Sat(M)"); cshow.hsblbls[1]->box(FL_FLAT_BOX); cshow.hsblbls[1]->color((Fl_Color)34); cshow.hsblbls[1]->labelfont(1); cshow.hsblbls[1]->labelsize(12); cshow.hsblbls[1]->labelcolor((Fl_Color)2); } // Fl_Box* cshow.hsblbls[1] { cshow.hsblbls[2] = new Fl_Box(195, 219, 75, 20, "Bright(R)"); cshow.hsblbls[2]->box(FL_FLAT_BOX); cshow.hsblbls[2]->color((Fl_Color)34); cshow.hsblbls[2]->labelfont(1); cshow.hsblbls[2]->labelsize(12); cshow.hsblbls[2]->labelcolor((Fl_Color)235); } // Fl_Box* cshow.hsblbls[2] { Fl_Box* o = new Fl_Box(275, 219, 80, 20, "Alpha(shift)"); o->box(FL_FLAT_BOX); o->color((Fl_Color)34); o->labelfont(1); o->labelsize(12); o->labelcolor(FL_BACKGROUND2_COLOR); } // Fl_Box* o { cmedit = new class CMedit(5, 239, 380, 270); cmedit->box(FL_FLAT_BOX); cmedit->color(FL_BACKGROUND_COLOR); cmedit->selection_color(FL_BACKGROUND_COLOR); cmedit->labeltype(FL_NORMAL_LABEL); cmedit->labelfont(0); cmedit->labelsize(14); cmedit->labelcolor(FL_FOREGROUND_COLOR); cmedit->align(Fl_Align(FL_ALIGN_CENTER)); cmedit->when(FL_WHEN_RELEASE); Fl_Group::current()->resizable(cmedit); } // class CMedit* cmedit { cshow.color = new colorpatch(62, 515, 50, 40); cshow.color->box(FL_DOWN_BOX); cshow.color->color(FL_BACKGROUND_COLOR); cshow.color->selection_color(FL_BACKGROUND_COLOR); cshow.color->labeltype(FL_NO_LABEL); cshow.color->labelfont(0); cshow.color->labelsize(14); cshow.color->labelcolor(FL_FOREGROUND_COLOR); cshow.color->align(Fl_Align(FL_ALIGN_CENTER)); cshow.color->when(FL_WHEN_RELEASE); } // colorpatch* cshow.color { cshow.cindex = new Fl_Value_Input(7, 530, 50, 25, " (index"); cshow.cindex->box(FL_FLAT_BOX); cshow.cindex->color((Fl_Color)16); cshow.cindex->maximum(0); cshow.cindex->step(1); cshow.cindex->textsize(12); cshow.cindex->callback((Fl_Callback*)report_cb); cshow.cindex->align(Fl_Align(FL_ALIGN_TOP)); } // Fl_Value_Input* cshow.cindex { cshow.hsba = new Fl_Output(117, 530, 120, 25, "HSBA"); cshow.hsba->box(FL_FLAT_BOX); cshow.hsba->color((Fl_Color)16); cshow.hsba->textsize(11); cshow.hsba->align(Fl_Align(FL_ALIGN_TOP)); } // Fl_Output* cshow.hsba { cshow.rgba = new Fl_Output(247, 530, 125, 25, "rgb"); cshow.rgba->box(FL_FLAT_BOX); cshow.rgba->color((Fl_Color)16); cshow.rgba->textsize(11); cshow.rgba->align(Fl_Align(FL_ALIGN_TOP)); } // Fl_Output* cshow.rgba { cshow.postscalein = new Fl_Value_Input(317, 570, 65, 25, "* Amax"); cshow.postscalein->callback((Fl_Callback*)ascale_cb); cshow.postscalein->align(Fl_Align(FL_ALIGN_TOP_LEFT)); } // Fl_Value_Input* cshow.postscalein { cshow.postexponin = new Fl_Value_Input(237, 570, 75, 25, "** expon )"); cshow.postexponin->callback((Fl_Callback*)ascale_cb); cshow.postexponin->align(Fl_Align(FL_ALIGN_TOP_LEFT)); } // Fl_Value_Input* cshow.postexponin { cshow.cmentin = new Fl_Value_Input(7, 570, 55, 25, "cmapsize"); cshow.cmentin->box(FL_ENGRAVED_BOX); cshow.cmentin->color((Fl_Color)25); cshow.cmentin->callback((Fl_Callback*)ncment_cb); cshow.cmentin->align(Fl_Align(FL_ALIGN_TOP_LEFT)); cshow.cmentin->when(FL_WHEN_RELEASE); } // Fl_Value_Input* cshow.cmentin { cshow.scaleout = new Fl_Output(137, 570, 95, 25, " Aout = ( Ain"); cshow.scaleout->box(FL_FLAT_BOX); cshow.scaleout->color((Fl_Color)16); cshow.scaleout->align(Fl_Align(FL_ALIGN_TOP_LEFT)); } // Fl_Output* cshow.scaleout { Fl_Menu_Bar* o = new Fl_Menu_Bar(0, 0, 400, 20); o->color((Fl_Color)46); o->menu(menu_); } // Fl_Menu_Bar* o o->end(); } // Fl_Double_Window* o return w; }
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(); } }