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 initParamWindow() { const int heightInput = 28; const int wideLabel = 205; const int wideInput = 130; const int between = 5; const int Ybetween = 3; const int YbetweenMore = 6; const int alignStyle = FL_ALIGN_INSIDE | FL_ALIGN_RIGHT; const Fl_Boxtype inputStyle = FL_PLASTIC_DOWN_BOX; int x = 10; int y = 10; const int wide = x+wideLabel+between+wideInput+x; const int height = y + 14*(heightInput+Ybetween) - Ybetween + 9*YbetweenMore + y; paramWindow = new Fl_Window( wide, height, _("Parameters") ); Fl_Group* win2 = new Fl_Group( 0, 0, wide, height ); paramWindow->resizable(win2); { Fl_Box* o = new Fl_Box( x, y, wideLabel, heightInput, _("Schema size:") ); o->align( alignStyle ); } { Fl_Value_Slider* o = new Fl_Value_Slider( x+wideLabel+between, y, wideInput, heightInput ); o->box(inputStyle); o->type(FL_HORIZONTAL); o->minimum(0); o->maximum(1); o->value(glito->getCloseEdge()); o->step(0.01); o->callback( (Fl_Callback*)closeEdge_param, glito ); } y += heightInput + Ybetween; { Fl_Box* o = new Fl_Box( x, y, wideLabel, heightInput, _("Preview Size:") ); o->align( alignStyle ); } { Fl_Value_Slider* o = new Fl_Value_Slider( x+wideLabel+between, y, wideInput, heightInput ); o->box(inputStyle); o->type(FL_HORIZONTAL); o->minimum(0); o->maximum(1); o->value(glito->getPreviewSize()); o->step(0.01); o->callback( (Fl_Callback*)previewSize_param, glito ); } y += heightInput + Ybetween + YbetweenMore; { Fl_Box* o = new Fl_Box( x, y, wideLabel, heightInput, _("Rotation shift (rad):") ); o->align( alignStyle ); } { Fl_Value_Slider* o = new Fl_Value_Slider( x+wideLabel+between, y, wideInput, heightInput ); o->box(inputStyle); o->type(FL_HORIZONTAL); o->minimum(0.002); o->maximum(0.2); o->value(glito->rotationShift); o->step(0.001); o->callback( (Fl_Callback*)rotationShift_param, glito ); } y += heightInput + Ybetween + YbetweenMore; { Fl_Box* o = new Fl_Box( x, y, wideLabel, heightInput, _("Size of saved images:") ); o->align( alignStyle ); } { Fl_Int_Input* o = new Fl_Int_Input( x+wideLabel+between, y, wideInput/2-5, heightInput ); o->box(inputStyle); o->value(IS::translate(glito->imageSavedWidth).c_str()); o->callback( (Fl_Callback*)imageSavedWidth_param, glito ); } { Fl_Box* o = new Fl_Box( x+wideLabel+between+wideInput/2-5, y, 10, heightInput, "x" ); o->align( FL_ALIGN_INSIDE | FL_ALIGN_CENTER ); } { Fl_Int_Input* o = new Fl_Int_Input( x+wideLabel+between+wideInput/2+5, y, wideInput/2-5, heightInput ); o->box(inputStyle); o->value(IS::translate(glito->imageSavedHeight).c_str()); o->callback( (Fl_Callback*)imageSavedHeight_param, glito ); } y += heightInput + Ybetween; { Fl_Box* o = new Fl_Box( x, y, wideLabel, heightInput, _("Size of animations:") ); o->align( alignStyle ); } { Fl_Int_Input* o = new Fl_Int_Input( x+wideLabel+between, y, wideInput/2-5, heightInput ); o->box(inputStyle); o->value(IS::translate(glito->animationSavedWidth).c_str()); o->callback( (Fl_Callback*)animationSavedWidth_param, glito ); } { Fl_Box* o = new Fl_Box( x+wideLabel+between+wideInput/2-5, y, 10, heightInput, "x" ); o->align( FL_ALIGN_INSIDE | FL_ALIGN_CENTER ); } { Fl_Int_Input* o = new Fl_Int_Input( x+wideLabel+between+wideInput/2+5, y, wideInput/2-5, heightInput ); o->box(inputStyle); o->value(IS::translate(glito->animationSavedHeight).c_str()); o->callback( (Fl_Callback*)animationSavedHeight_param, glito ); } y += heightInput + Ybetween + YbetweenMore; { Fl_Box* o = new Fl_Box( x, y, wideLabel, heightInput, _("Frames per cycle (>1):") ); o->align( alignStyle ); } { Fl_Value_Input* o = new Fl_Value_Input( x+wideLabel+between, y, wideInput, heightInput ); o->box(inputStyle); o->minimum(10); o->maximum(100); o->value(glito->framesPerCycle); o->step(1); o->callback( (Fl_Callback*)framesPerCycle_param, glito ); } y += heightInput + Ybetween + YbetweenMore; { Fl_Box* o = new Fl_Box( x, y, wideLabel, heightInput, _("Motion detection (ms):") ); o->align( alignStyle ); } { Fl_Value_Slider* o = new Fl_Value_Slider( x+wideLabel+between, y, wideInput, heightInput ); o->box(inputStyle); o->type(FL_HORIZONTAL); o->minimum(1); o->maximum(200); o->value(glito->intervalMotionDetection); o->step(1); o->callback( (Fl_Callback*)intervalMotionDetection_param, glito ); } y += heightInput + Ybetween + YbetweenMore; { { Fl_Button* o = new Fl_Button( x, y, 70, heightInput, _("Density") ); o->box(FL_PLASTIC_UP_BOX); o->value( glito->trueDensity ); o->callback( (Fl_Callback*)trueDensity_param, glito ); } { Fl_Box* o = new Fl_Box( x, y, wideLabel+30, heightInput, _("or pseudo-density:") ); o->align( alignStyle ); if ( glito->trueDensity ) o->deactivate(); } { Fl_Value_Slider* o = new Fl_Value_Slider( x+wideLabel+30+between, y, 100, heightInput ); o->box(inputStyle); if ( glito->trueDensity ) o->deactivate(); o->type(FL_HORIZONTAL); o->minimum(0); o->maximum(1); o->value( ImagePseudoDensity::pseudoDensity.getProba() ); o->step(0.01); o->callback( (Fl_Callback*)logProbaHitMax_param ); } } y += heightInput + Ybetween + YbetweenMore; { Fl_Box* o = new Fl_Box( x, y, wideInput, heightInput, _("Points for framing:") ); o->align( FL_ALIGN_INSIDE | FL_ALIGN_LEFT ); } y += heightInput; { int xLine = 0; { Fl_Int_Input* o = new Fl_Int_Input( x+xLine, y, 80, heightInput ); o->box(inputStyle); o->value(IS::translate(glito->pointsForFraming).c_str()); o->callback( (Fl_Callback*)pointsForFraming_param, glito ); } xLine += 80; { Fl_Box* o = new Fl_Box( x+xLine, y, 20, heightInput, " (x " ); o->align( FL_ALIGN_INSIDE | FL_ALIGN_CENTER ); } xLine += 20; { Fl_Value_Slider* o = new Fl_Value_Slider( x+xLine, y, 100, heightInput ); o->box(inputStyle); o->type(FL_HORIZONTAL); o->minimum(0); o->maximum(1); o->box(inputStyle); o->value(glito->animationFraming); o->step(0.01); o->callback( (Fl_Callback*)animationFraming_param, glito ); } xLine += 100; { Fl_Box* o = new Fl_Box( x+xLine, y, 110, heightInput, _(" for animation)") ); o->align( FL_ALIGN_INSIDE | FL_ALIGN_LEFT ); } } y += heightInput + 2*Ybetween + YbetweenMore; { Fl_Box* o = new Fl_Box( x, y, wide-20, heightInput, _("Number of iterations limited by:") ); o->align( FL_ALIGN_INSIDE | FL_ALIGN_LEFT ); } y += heightInput; { Fl_Round_Button* o = new Fl_Round_Button( x, y, wideInput, heightInput, _("Interval per frame (ms)") ); o->box(FL_NO_BOX); o->type(FL_RADIO_BUTTON); o->when(FL_WHEN_CHANGED); o->value(glito->clockNumber); o->callback( (Fl_Callback*)clockNumber_param, glito ); } { Fl_Value_Slider* o = new Fl_Value_Slider( x+wideLabel+between, y, wideInput, heightInput ); o->box(inputStyle); if ( !glito->clockNumber ) o->deactivate(); o->type(FL_HORIZONTAL); o->minimum(1); o->maximum(200); o->value(glito->intervalFrame); o->step(1); o->callback( (Fl_Callback*)intervalFrame_param, glito ); } y += heightInput + Ybetween; { int xLine = 0; { Fl_Round_Button* o = new Fl_Round_Button( x, y, 127, heightInput, _("Points per frame") ); o->box(FL_NO_BOX); o->type(FL_RADIO_BUTTON); o->when(FL_WHEN_CHANGED); o->value(!glito->clockNumber); o->callback( (Fl_Callback*)clockNumber_param, glito ); } xLine += 127 + between; { Fl_Int_Input* o = new Fl_Int_Input( x+xLine, y, 80, heightInput ); o->box(inputStyle); if ( glito->clockNumber ) o->deactivate(); o->value(IS::translate(glito->pointsPerFrame).c_str()); o->callback( (Fl_Callback*)pointsPerFrame_param, glito ); } xLine += 80 + 2; { Fl_Button* o = new Fl_Button( x+xLine, y, wide - (x+xLine) - 10, heightInput, _("Calibrate") ); o->box(FL_PLASTIC_UP_BOX); if ( glito->clockNumber ) o->deactivate(); o->callback( (Fl_Callback*)calibrate_param, glito ); } } y += heightInput + Ybetween + 2*YbetweenMore; { int xLine = 0; { Fl_Button* o = new Fl_Button( x, y, 90, heightInput, _("Black/White") ); o->box(FL_PLASTIC_UP_BOX); o->value( !ImageGray::background.isBlack() ); o->callback( (Fl_Callback*)blackWhite_param ); } xLine += 90 + 2*between + 5; { Fl_Choice* o = new Fl_Choice( x+xLine+110, y, 95, heightInput, _("Transparency:") ); o->add( ImageGray::transparency.stringNone().c_str(), 0, (Fl_Callback*)transparency_param, (void*)0 ); o->add( ImageGray::transparency.stringSimple().c_str(), 0, (Fl_Callback*)transparency_param, (void*)1 ); o->add( ImageGray::transparency.stringAlpha().c_str(), 0, (Fl_Callback*)transparency_param, (void*)2 ); if ( ImageGray::transparency.useAlphaTransparency() ) { o->value(2); } else if ( ImageGray::transparency.useSimpleTransparency() ) { o->value(1); } else { o->value(0); } } } y += heightInput + Ybetween; { // invisible box to allow correct resizing Fl_Box* o = new Fl_Box( 0, y, 100, 0 ); win2->resizable(*o); } win2->end(); paramWindow->end(); }
int main (int argc, char **argv) { Fl_Window* w; fl_init_locale_support("ewmconf", PREFIX"/share/locale"); readConfiguration(); {Fl_Window* o = new Fl_Window(320, 370, _("Window manager settings")); w = o; {Fl_Tabs* o = new Fl_Tabs(2, 5, 318, 325); o->color((Fl_Color)16); {Fl_Group* o = new Fl_Group(1, 29, 316, 295, _("&Titlebar")); o->align(FL_ALIGN_TOP | FL_ALIGN_LEFT); {Fl_Choice* o = new Fl_Choice(83, 13, 105, 22, _("Text align:")); o->begin(); o->callback((Fl_Callback*)cb_Text); new Fl_Item(_("Left")); new Fl_Item(_("Right")); new Fl_Item(_("Center")); o->value(title_align); o->end(); } {Fl_Value_Input* o = new Fl_Value_Input(243, 13, 60, 22, _("Height:")); o->minimum(10); o->maximum(50); o->step(1); o->value(20); o->callback((Fl_Callback*)cb_Height); o->value(title_height); } {Fl_Button* o = titlebarLabelColorButton = new Fl_Button(85, 55, 60, 20, _("Titlebar label color: ")); o->box(FL_DOWN_BOX); o->callback((Fl_Callback*)cb_titlebarLabelColorButton); o->align(132); o->color((Fl_Color)title_normal_color_text); } {Fl_Button* o = titlebarColorButton = new Fl_Button(85, 120, 60, 20, _("Titlebar color: ")); o->box(FL_DOWN_BOX); o->callback((Fl_Callback*)cb_titlebarColorButton); o->align(132); o->color((Fl_Color) title_normal_color); } {Fl_Group* o = new Fl_Group(153, 45, 160, 110); {Fl_Button* o = titlebarActiveLabelColorButton = new Fl_Button(90, 10, 60, 20, _("Titlebar active label color: ")); o->box(FL_DOWN_BOX); o->callback((Fl_Callback*)cb_titlebarActiveLabelColorButton); o->align(132); o->color((Fl_Color) title_active_color_text); } {Fl_Button* o = titlebarActiveColorButton = new Fl_Button(90, 75, 60, 20, _("Titlebar active color: ")); o->box(FL_DOWN_BOX); o->callback((Fl_Callback*)cb_titlebarActiveColorButton); o->align(132); o->color((Fl_Color)title_active_color); } o->end(); } {Fl_Choice* o = titlebarDrawGrad = new Fl_Choice(85, 157, 163, 23, _("Box type:")); o->begin(); o->callback((Fl_Callback*)cb_titlebarDrawGrad); o->align(132); new Fl_Item(_("Flat")); new Fl_Item(_("Horizontal shade")); new Fl_Item(_("Thin down")); new Fl_Item(_("Up box")); new Fl_Item(_("Down box")); new Fl_Item(_("Plastic")); o->value(title_draw_grad); o->end(); } {Fl_Check_Button* o = useThemeButton = new Fl_Check_Button(8, 220, 300, 20, _("&Use theme")); o->callback((Fl_Callback*)cb_useThemeButton); o->value(use_theme); } {Fl_Input* o = themePathInput = new Fl_Input(65, 247, 210, 23, _("Path:")); o->callback((Fl_Callback*)cb_themePathInput); o->deactivate(); themePathInput->value(theme_path); } {Fl_Button* o = browse_btn = new Fl_Button(280, 247, 25, 23, _("...")); o->callback((Fl_Callback*)cb_browse_btn); o->deactivate(); } {Fl_Divider* o = new Fl_Divider(8, 190, 300, 25, _("label")); o->color((Fl_Color)16); } {Fl_Divider* o = new Fl_Divider(8, 85, 297, 25, _("label")); o->color((Fl_Color)16); } o->end(); } {Fl_Group* o = new Fl_Group(3, 20, 310, 305, _("&Resizing")); o->align(FL_ALIGN_TOP | FL_ALIGN_LEFT); o->hide(); {Fl_Check_Button* o = animateButton = new Fl_Check_Button(10, 10, 300, 20, _("Animate size changes")); o->value(1); o->callback((Fl_Callback*)cb_animateButton); o->value(animate); } {Fl_Value_Slider* o = animateSlider = new Fl_Value_Slider(70, 35, 235, 20, _("Speed:")); o->type(Fl_Value_Slider::HORIZONTAL|Fl_Slider::TICK_ABOVE); o->box(FL_DOWN_BOX); o->text_size(10); o->minimum(5); o->maximum(20); o->step(2); o->value(14); o->slider_size(8); o->callback((Fl_Callback*)cb_animateSlider); o->align(FL_ALIGN_LEFT); o->value(animate_speed); if(animate) o->activate(); else o->deactivate(); } new Fl_Divider(0, 60, 300, 25, _("label")); {Fl_Check_Button* o = opaqueResize = new Fl_Check_Button(10, 85, 290, 20, _("Show window content while resizing")); o->callback((Fl_Callback*)cb_opaqueResize); o->value(opaque_resize); } o->end(); } o->end(); } {Fl_Button* o = new Fl_Button(67, 337, 80, 25, _("&OK")); o->shortcut(0xff0d); o->callback((Fl_Callback*)cb_OK); } {Fl_Button* o = new Fl_Button(152, 337, 80, 25, _("&Apply")); o->callback((Fl_Callback*)cb_Apply); } {Fl_Button* o = new Fl_Button(237, 337, 80, 25, _("&Cancel")); o->shortcut(0xff1b); o->callback((Fl_Callback*)cb_Cancel); } o->end(); } useThemeButton->do_callback(); w->show(argc, argv); return Fl::run(); }