diff --git a/rtdata/languages/default b/rtdata/languages/default index b3ac130cb..e5d5d8adc 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -786,6 +786,11 @@ PREFERENCES_CLUTSCACHE;HaldCLUT Cache PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs PREFERENCES_CLUTSDIR;HaldCLUT directory PREFERENCES_CMETRICINTENT;Colorimetric intent +PREFERENCES_CURVEBBOXPOS;Position of curve copypasta buttons +PREFERENCES_CURVEBBOXPOS_ABOVE;Above +PREFERENCES_CURVEBBOXPOS_BELOW;Below +PREFERENCES_CURVEBBOXPOS_LEFT;Left +PREFERENCES_CURVEBBOXPOS_RIGHT;Right PREFERENCES_CUSTPROFBUILDHINT;Executable (or script) file called when a new initial processing profile should be generated for an image.\n\nThe path of the communication file (*.ini style, a.k.a. "Keyfile") is added as a command line parameter. It contains various parameters required for the scripts and image Exif to allow a rules-based processing profile generation.\n\nWARNING: You are responsible for using double quotes where necessary if you're using paths containing spaces. PREFERENCES_CUSTPROFBUILDKEYFORMAT;Keys format PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Name diff --git a/rtgui/diagonalcurveeditorsubgroup.cc b/rtgui/diagonalcurveeditorsubgroup.cc index 85a9c4465..f4a63cd57 100644 --- a/rtgui/diagonalcurveeditorsubgroup.cc +++ b/rtgui/diagonalcurveeditorsubgroup.cc @@ -44,13 +44,18 @@ DiagonalCurveEditorSubGroup::DiagonalCurveEditorSubGroup (CurveEditorGroup* prt, // custom curve customCurveBox = new Gtk::VBox (); customCurveBox->set_spacing(4); + Gtk::HBox* customCurveAndButtons = Gtk::manage (new Gtk::HBox ()); + customCurveAndButtons->set_spacing(4); customCurve = Gtk::manage (new MyDiagonalCurve ()); customCurve->set_size_request (GRAPH_SIZE+2*RADIUS, GRAPH_SIZE+2*RADIUS); customCurve->setType (DCT_Spline); - //customCurve->set_tooltip_text (M("CURVEEDITOR_TOOLTIPMOVESPEED")); - customCurveBox->pack_start (*customCurve, Gtk::PACK_EXPAND_WIDGET, 0); - Gtk::HBox* custombbox = Gtk::manage (new Gtk::HBox ()); + Gtk::Box* custombbox; // curvebboxpos 0=above, 1=right, 2=below, 3=left + if (options.curvebboxpos==1 || options.curvebboxpos==3) { + custombbox = Gtk::manage (new Gtk::VBox ()); + } else { + custombbox = Gtk::manage (new Gtk::HBox ()); + } custombbox->set_spacing(4); pasteCustom = Gtk::manage (new Gtk::Button ()); @@ -65,13 +70,26 @@ DiagonalCurveEditorSubGroup::DiagonalCurveEditorSubGroup (CurveEditorGroup* prt, editCustom->add (*Gtk::manage (new RTImage ("editmodehand.png"))); editCustom->set_tooltip_text(M("EDIT_PIPETTE_TOOLTIP")); editCustom->hide(); + custombbox->pack_end (*pasteCustom, Gtk::PACK_SHRINK, 0); custombbox->pack_end (*copyCustom, Gtk::PACK_SHRINK, 0); custombbox->pack_end (*saveCustom, Gtk::PACK_SHRINK, 0); custombbox->pack_end (*loadCustom, Gtk::PACK_SHRINK, 0); custombbox->pack_start(*editCustom, Gtk::PACK_SHRINK, 0); - customCurveBox->pack_end (*custombbox, Gtk::PACK_SHRINK, 0); + customCurveAndButtons->pack_start (*customCurve, Gtk::PACK_EXPAND_WIDGET, 0); + customCurveAndButtons->pack_start (*custombbox, Gtk::PACK_SHRINK, 0); + customCurveBox->pack_start (*customCurveAndButtons, Gtk::PACK_EXPAND_WIDGET); + if (options.curvebboxpos==0) { + removeIfThere (customCurveAndButtons, custombbox, false); + customCurveBox->pack_start (*custombbox); + customCurveBox->reorder_child(*custombbox, 0); + } else if (options.curvebboxpos==2) { + removeIfThere (customCurveAndButtons, custombbox, false); + customCurveBox->pack_start (*custombbox); + } else if (options.curvebboxpos==3) { + customCurveAndButtons->reorder_child(*custombbox, 0); + } customCurveBox->show_all (); saveCustom->signal_clicked().connect( sigc::mem_fun(*this, &DiagonalCurveEditorSubGroup::savePressed) ); @@ -90,15 +108,20 @@ DiagonalCurveEditorSubGroup::DiagonalCurveEditorSubGroup (CurveEditorGroup* prt, // NURBS curve NURBSCurveBox = new Gtk::VBox (); NURBSCurveBox->set_spacing(4); + Gtk::HBox* NURBSCurveAndButtons = Gtk::manage (new Gtk::HBox ()); + NURBSCurveAndButtons->set_spacing(4); NURBSCurve = Gtk::manage (new MyDiagonalCurve ()); NURBSCurve->set_size_request (GRAPH_SIZE+2*RADIUS, GRAPH_SIZE+2*RADIUS); NURBSCurve->setType (DCT_NURBS); - //customCurve->set_tooltip_text (M("CURVEEDITOR_TOOLTIPMOVESPEED")); - NURBSCurveBox->pack_start (*NURBSCurve, Gtk::PACK_EXPAND_WIDGET, 0); - - Gtk::HBox* NURBSbbox = Gtk::manage (new Gtk::HBox ()); + Gtk::Box* NURBSbbox; + if (options.curvebboxpos==1 || options.curvebboxpos==3) { + NURBSbbox = Gtk::manage (new Gtk::VBox ()); + } else { + NURBSbbox = Gtk::manage (new Gtk::HBox ()); + } NURBSbbox->set_spacing(4); + pasteNURBS = Gtk::manage (new Gtk::Button ()); pasteNURBS->add (*Gtk::manage (new RTImage ("edit-paste.png"))); copyNURBS = Gtk::manage (new Gtk::Button ()); @@ -117,7 +140,19 @@ DiagonalCurveEditorSubGroup::DiagonalCurveEditorSubGroup (CurveEditorGroup* prt, NURBSbbox->pack_end (*loadNURBS, Gtk::PACK_SHRINK, 0); NURBSbbox->pack_start(*editNURBS, Gtk::PACK_SHRINK, 0); - NURBSCurveBox->pack_end (*NURBSbbox, Gtk::PACK_SHRINK, 0); + NURBSCurveAndButtons->pack_start (*NURBSCurve, Gtk::PACK_EXPAND_WIDGET, 0); + NURBSCurveAndButtons->pack_start (*NURBSbbox, Gtk::PACK_SHRINK, 0); + NURBSCurveBox->pack_start (*NURBSCurveAndButtons, Gtk::PACK_EXPAND_WIDGET); + if (options.curvebboxpos==0) { + removeIfThere (NURBSCurveAndButtons, NURBSbbox, false); + NURBSCurveBox->pack_start (*NURBSbbox); + NURBSCurveBox->reorder_child(*NURBSbbox, 0); + } else if (options.curvebboxpos==2) { + removeIfThere (NURBSCurveAndButtons, NURBSbbox, false); + NURBSCurveBox->pack_start (*NURBSbbox); + } else if (options.curvebboxpos==3) { + NURBSCurveAndButtons->reorder_child(*NURBSbbox, 0); + } NURBSCurveBox->show_all (); saveNURBS->signal_clicked().connect( sigc::mem_fun(*this, &DiagonalCurveEditorSubGroup::savePressed) ); @@ -135,21 +170,26 @@ DiagonalCurveEditorSubGroup::DiagonalCurveEditorSubGroup (CurveEditorGroup* prt, // parametric curve paramCurveBox = new Gtk::VBox (); - paramCurveBox->set_spacing(0); - + paramCurveBox->set_spacing(4); + Gtk::HBox* paramCurveAndButtons = Gtk::manage (new Gtk::HBox ()); + paramCurveAndButtons->set_spacing(4); + Gtk::VBox* paramCurveAndShcVBox = Gtk::manage (new Gtk::VBox ()); paramCurve = Gtk::manage (new MyDiagonalCurve ()); paramCurve->set_size_request (GRAPH_SIZE+2*RADIUS, GRAPH_SIZE+2*RADIUS); paramCurve->setType (DCT_Parametric); + Gtk::Box* parambbox; + if (options.curvebboxpos==1 || options.curvebboxpos==3) { + parambbox = Gtk::manage (new Gtk::VBox ()); + } else { + parambbox = Gtk::manage (new Gtk::HBox ()); + } + parambbox->set_spacing(4); + shcSelector = Gtk::manage (new SHCSelector ()); - shcSelector->set_size_request (GRAPH_SIZE-100, 12); // width, height + shcSelector->set_size_request (GRAPH_SIZE-100, 10); // width, height //* shcSelector->set_size_request ((GRAPH_SIZE+2*RADIUS)-20, 20); - paramCurveBox->pack_start (*paramCurve, Gtk::PACK_EXPAND_WIDGET, 0); - paramCurveBox->pack_start (*shcSelector, Gtk::PACK_EXPAND_WIDGET, 0); - - Gtk::HBox* parambbox = Gtk::manage (new Gtk::HBox ()); - parambbox->set_spacing(4); pasteParam = Gtk::manage (new Gtk::Button ()); pasteParam->add (*Gtk::manage (new RTImage ("edit-paste.png"))); copyParam = Gtk::manage (new Gtk::Button ()); @@ -179,8 +219,6 @@ DiagonalCurveEditorSubGroup::DiagonalCurveEditorSubGroup (CurveEditorGroup* prt, pasteParam->set_tooltip_text (M("CURVEEDITOR_TOOLTIPPASTE")); copyParam->set_tooltip_text (M("CURVEEDITOR_TOOLTIPCOPY")); - paramCurveBox->pack_end (*parambbox, Gtk::PACK_EXPAND_WIDGET, 0); - highlights = Gtk::manage (new Adjuster (M("CURVEEDITOR_HIGHLIGHTS"), -100, 100, 1, 0)); lights = Gtk::manage (new Adjuster (M("CURVEEDITOR_LIGHTS"), -100, 100, 1, 0)); darks = Gtk::manage (new Adjuster (M("CURVEEDITOR_DARKS"), -100, 100, 1, 0)); @@ -196,14 +234,36 @@ DiagonalCurveEditorSubGroup::DiagonalCurveEditorSubGroup (CurveEditorGroup* prt, evdarks->add (*darks); evshadows->add (*shadows); - paramCurveBox->pack_start (*evhighlights); - paramCurveBox->pack_start (*evlights); - paramCurveBox->pack_start (*evdarks); - paramCurveBox->pack_start (*evshadows); + // paramCurveSliderBox needed to set vspacing(4) between curve+shc and sliders without vspacing between each slider + Gtk::VBox* paramCurveSliderBox = Gtk::manage (new Gtk::VBox ()); + paramCurveSliderBox->set_spacing(4); + + paramCurveSliderBox->pack_start (*evhighlights); + paramCurveSliderBox->pack_start (*evlights); + paramCurveSliderBox->pack_start (*evdarks); + paramCurveSliderBox->pack_start (*evshadows); paramCurveBox->show_all (); - // parametric curve end + paramCurveAndShcVBox->pack_start (*paramCurve, Gtk::PACK_EXPAND_WIDGET); + paramCurveAndShcVBox->pack_start (*shcSelector, Gtk::PACK_EXPAND_WIDGET); + paramCurveAndButtons->pack_start (*paramCurveAndShcVBox); + paramCurveAndButtons->pack_start (*parambbox, Gtk::PACK_SHRINK); + paramCurveBox->pack_start (*paramCurveAndButtons); + paramCurveBox->pack_start (*paramCurveSliderBox); + if (options.curvebboxpos==0) { + removeIfThere (paramCurveAndButtons, parambbox, false); + paramCurveBox->pack_start (*parambbox); + paramCurveBox->reorder_child(*parambbox, 0); + } else if (options.curvebboxpos==2) { + removeIfThere (paramCurveAndButtons, parambbox, false); + paramCurveBox->pack_start (*parambbox); + //paramCurveBox->reorder_child(*parambbox, 1); + } else if (options.curvebboxpos==3) { + paramCurveAndButtons->reorder_child(*parambbox, 0); + } + paramCurveBox->show_all (); + // parametric curve end customCurveBox->reference (); diff --git a/rtgui/flatcurveeditorsubgroup.cc b/rtgui/flatcurveeditorsubgroup.cc index 3b77ba6dd..1cca98fc0 100644 --- a/rtgui/flatcurveeditorsubgroup.cc +++ b/rtgui/flatcurveeditorsubgroup.cc @@ -40,12 +40,18 @@ FlatCurveEditorSubGroup::FlatCurveEditorSubGroup (CurveEditorGroup* prt, Glib::u // ControlPoints curve CPointsCurveBox = new Gtk::VBox (); CPointsCurveBox->set_spacing(4); + Gtk::HBox* CPointsCurveAndButtons = Gtk::manage (new Gtk::HBox ()); + CPointsCurveAndButtons->set_spacing(4); CPointsCurve = Gtk::manage (new MyFlatCurve ()); CPointsCurve->set_size_request (GRAPH_SIZE+2*RADIUS+1, GRAPH_SIZE+2*RADIUS+1); CPointsCurve->setType (FCT_MinMaxCPoints); - CPointsCurveBox->pack_start (*CPointsCurve, Gtk::PACK_EXPAND_WIDGET, 0); - Gtk::HBox*CPointsbbox = Gtk::manage (new Gtk::HBox ()); + Gtk::Box* CPointsbbox; // curvebboxpos 0=above, 1=right, 2=below, 3=left + if (options.curvebboxpos==1 || options.curvebboxpos==3) { + CPointsbbox = Gtk::manage (new Gtk::VBox ()); + } else { + CPointsbbox = Gtk::manage (new Gtk::HBox ()); + } CPointsbbox->set_spacing(4); pasteCPoints = Gtk::manage (new Gtk::Button ()); @@ -67,7 +73,19 @@ FlatCurveEditorSubGroup::FlatCurveEditorSubGroup (CurveEditorGroup* prt, Glib::u CPointsbbox->pack_end (*loadCPoints, Gtk::PACK_SHRINK, 0); CPointsbbox->pack_start(*editCPoints, Gtk::PACK_SHRINK, 0); - CPointsCurveBox->pack_end (*CPointsbbox, Gtk::PACK_SHRINK, 0); + CPointsCurveAndButtons->pack_start (*CPointsCurve, Gtk::PACK_EXPAND_WIDGET, 0); + CPointsCurveAndButtons->pack_start (*CPointsbbox, Gtk::PACK_SHRINK, 0); + CPointsCurveBox->pack_start (*CPointsCurveAndButtons, Gtk::PACK_EXPAND_WIDGET); + if (options.curvebboxpos==0) { + removeIfThere (CPointsCurveAndButtons, CPointsbbox, false); + CPointsCurveBox->pack_start (*CPointsbbox); + CPointsCurveBox->reorder_child(*CPointsbbox, 0); + } else if (options.curvebboxpos==2) { + removeIfThere (CPointsCurveAndButtons, CPointsbbox, false); + CPointsCurveBox->pack_start (*CPointsbbox); + } else if (options.curvebboxpos==3) { + CPointsCurveAndButtons->reorder_child(*CPointsbbox, 0); + } CPointsCurveBox->show_all (); saveCPoints->signal_clicked().connect( sigc::mem_fun(*this, &FlatCurveEditorSubGroup::savePressed) ); diff --git a/rtgui/options.cc b/rtgui/options.cc index e826bf449..6abed182b 100644 --- a/rtgui/options.cc +++ b/rtgui/options.cc @@ -361,6 +361,7 @@ void Options::setDefaults () { histogramPosition = 1; histogramBar = true; histogramFullMode = false; + curvebboxpos = 1; prevdemo = PD_Sidecar; rgbDenoiseThreadLimit = 0; #if defined( _OPENMP ) && defined( __x86_64__ ) @@ -824,8 +825,8 @@ if (keyFile.has_group ("GUI")) { if (keyFile.has_key ("GUI", "FileBrowserToolbarSingleRow")) FileBrowserToolbarSingleRow = keyFile.get_boolean ("GUI", "FileBrowserToolbarSingleRow"); if (keyFile.has_key ("GUI", "HideTPVScrollbar")) hideTPVScrollbar = keyFile.get_boolean ("GUI", "HideTPVScrollbar"); if (keyFile.has_key ("GUI", "UseIconNoText")) UseIconNoText = keyFile.get_boolean ("GUI", "UseIconNoText"); - if( keyFile.has_key ("GUI", "HistogramWorking")) rtSettings.HistogramWorking = keyFile.get_boolean("GUI", "HistogramWorking"); - + if (keyFile.has_key ("GUI", "HistogramWorking")) rtSettings.HistogramWorking = keyFile.get_boolean ("GUI", "HistogramWorking"); + if (keyFile.has_key ("GUI", "CurveBBoxPosition")) curvebboxpos = keyFile.get_integer ("GUI", "CurveBBoxPosition"); } if (keyFile.has_group ("Crop Settings")) { @@ -1150,6 +1151,7 @@ int Options::saveToFile (Glib::ustring fname) { keyFile.set_boolean ("GUI", "HideTPVScrollbar", hideTPVScrollbar); keyFile.set_boolean ("GUI", "UseIconNoText", UseIconNoText); keyFile.set_boolean ("GUI", "HistogramWorking", rtSettings.HistogramWorking); + keyFile.set_integer ("GUI", "CurveBBoxPosition", curvebboxpos); //Glib::ArrayHandle crvopen = crvOpen; //keyFile.set_integer_list ("GUI", "CurvePanelsExpanded", crvopen); diff --git a/rtgui/options.h b/rtgui/options.h index 8c22b63d8..151883992 100644 --- a/rtgui/options.h +++ b/rtgui/options.h @@ -213,6 +213,7 @@ class Options { bool hideTPVScrollbar; bool UseIconNoText; int whiteBalanceSpotSize; + int curvebboxpos; // 0=above, 1=right, 2=below, 3=left bool showFilmStripToolBar; diff --git a/rtgui/preferences.cc b/rtgui/preferences.cc index d887fafaf..ed9b4622c 100644 --- a/rtgui/preferences.cc +++ b/rtgui/preferences.cc @@ -746,66 +746,72 @@ Gtk::Widget* Preferences::getGeneralPanel () { Gtk::VBox* mvbsd = Gtk::manage( new Gtk::VBox () ); - Gtk::Frame* fworklflow = Gtk::manage( new Gtk::Frame (M("PREFERENCES_WORKFLOW")) ); - Gtk::HBox* hbworkflow = Gtk::manage( new Gtk::HBox () ); - hbworkflow->set_border_width (4); - Gtk::Label* flayoutlab = Gtk::manage( new Gtk::Label (M("PREFERENCES_EDITORLAYOUT")+":") ); - editorLayout = Gtk::manage( new Gtk::ComboBoxText () ); - editorLayout->set_size_request(45, -1); + Gtk::Frame* fworklflow = Gtk::manage (new Gtk::Frame (M("PREFERENCES_WORKFLOW"))); + Gtk::VBox* vbworkflow = Gtk::manage (new Gtk::VBox (false, 4)); + vbworkflow->set_border_width (4); + Gtk::HBox* hbworkflow = Gtk::manage (new Gtk::HBox (false, 4)); + Gtk::Label* flayoutlab = Gtk::manage (new Gtk::Label (M("PREFERENCES_EDITORLAYOUT")+":")); + editorLayout = Gtk::manage (new Gtk::ComboBoxText ()); editorLayout->append_text (M("PREFERENCES_SINGLETAB")); editorLayout->append_text (M("PREFERENCES_SINGLETABVERTAB")); editorLayout->append_text (M("PREFERENCES_MULTITAB")); editorLayout->append_text (M("PREFERENCES_MULTITABDUALMON")); editorLayout->set_active (2); - editorLayout->signal_changed().connect( sigc::mem_fun(*this, &Preferences::layoutComboChanged) ); + editorLayout->signal_changed().connect (sigc::mem_fun(*this, &Preferences::layoutComboChanged)); layoutComboChanged(); // update the tooltip - - hbworkflow->pack_start (*flayoutlab, Gtk::PACK_SHRINK, 4); + hbworkflow->pack_start (*flayoutlab, Gtk::PACK_SHRINK); hbworkflow->pack_start (*editorLayout); - Gtk::Label* lNextStart = Gtk::manage( new Gtk::Label (Glib::ustring(" (") + M("PREFERENCES_APPLNEXTSTARTUP") + ")") ); - hbworkflow->pack_end (*lNextStart, Gtk::PACK_SHRINK, 4); + Gtk::Label* lNextStart = Gtk::manage( new Gtk::Label (Glib::ustring("(") + M("PREFERENCES_APPLNEXTSTARTUP") + ")") ); + hbworkflow->pack_end (*lNextStart, Gtk::PACK_SHRINK); + vbworkflow->pack_start (*hbworkflow, Gtk::PACK_SHRINK); - Gtk::VBox* vbworkflow = Gtk::manage( new Gtk::VBox () ); - vbworkflow->pack_start (*hbworkflow, Gtk::PACK_SHRINK, 4); + Gtk::HBox* curveBBoxPosHB = Gtk::manage (new Gtk::HBox (false, 4)); + Gtk::Label* curveBBoxPosL = Gtk::manage (new Gtk::Label (M("PREFERENCES_CURVEBBOXPOS")+":")); + Gtk::Label* curveBBoxPosRestartL = Gtk::manage (new Gtk::Label (Glib::ustring("(") + M("PREFERENCES_APPLNEXTSTARTUP") + ")")); + curveBBoxPosC = Gtk::manage (new Gtk::ComboBoxText ()); + curveBBoxPosC->append_text (M("PREFERENCES_CURVEBBOXPOS_ABOVE")); + curveBBoxPosC->append_text (M("PREFERENCES_CURVEBBOXPOS_RIGHT")); + curveBBoxPosC->append_text (M("PREFERENCES_CURVEBBOXPOS_BELOW")); + curveBBoxPosC->append_text (M("PREFERENCES_CURVEBBOXPOS_LEFT")); + curveBBoxPosC->set_active (1); + curveBBoxPosHB->pack_start (*curveBBoxPosL, Gtk::PACK_SHRINK); + curveBBoxPosHB->pack_start (*curveBBoxPosC); + curveBBoxPosHB->pack_start (*curveBBoxPosRestartL, Gtk::PACK_SHRINK); + vbworkflow->pack_start (*curveBBoxPosHB, Gtk::PACK_SHRINK); Gtk::HBox* hbworkflow2 = Gtk::manage( new Gtk::HBox () ); ckbHistogramPositionLeft = Gtk::manage( new Gtk::CheckButton (M("PREFERENCES_HISTOGRAMPOSITIONLEFT")) ); - hbworkflow2->pack_start (*ckbHistogramPositionLeft, Gtk::PACK_SHRINK, 4); + hbworkflow2->pack_start (*ckbHistogramPositionLeft); ckbHistogramWorking = Gtk::manage( new Gtk::CheckButton (M("PREFERENCES_HISTOGRAMWORKING")) ); - ckbHistogramWorking->set_tooltip_markup (M("PREFERENCES_HISTOGRAM_TOOLTIP")); - - hbworkflow2->pack_start (*ckbHistogramWorking, Gtk::PACK_SHRINK, 4); - vbworkflow->pack_start (*hbworkflow2, Gtk::PACK_SHRINK, 4); - + ckbHistogramWorking->set_tooltip_markup (M("PREFERENCES_HISTOGRAM_TOOLTIP")); + hbworkflow2->pack_start (*ckbHistogramWorking); + vbworkflow->pack_start (*hbworkflow2, Gtk::PACK_SHRINK); + ckbShowProfileSelector = Gtk::manage( new Gtk::CheckButton (M("PREFERENCES_SHOWPROFILESELECTOR")) ); Gtk::HBox* hbworkflow2d5 = Gtk::manage( new Gtk::HBox () ); - hbworkflow2d5->pack_start (*ckbShowProfileSelector, Gtk::PACK_SHRINK, 4); - vbworkflow->pack_start (*hbworkflow2d5, Gtk::PACK_SHRINK, 4); + hbworkflow2d5->pack_start (*ckbShowProfileSelector, Gtk::PACK_SHRINK); + vbworkflow->pack_start (*hbworkflow2d5, Gtk::PACK_SHRINK); Gtk::HBox* hbworkflow3 = Gtk::manage( new Gtk::HBox () ); ckbFileBrowserToolbarSingleRow = Gtk::manage( new Gtk::CheckButton (M("PREFERENCES_FILEBROWSERTOOLBARSINGLEROW")) ); ckbShowFilmStripToolBar = Gtk::manage( new Gtk::CheckButton (M("PREFERENCES_SHOWFILMSTRIPTOOLBAR")) ); + hbworkflow3->pack_start (*ckbFileBrowserToolbarSingleRow); + hbworkflow3->pack_start (*ckbShowFilmStripToolBar); + vbworkflow->pack_start (*hbworkflow3, Gtk::PACK_SHRINK); - hbworkflow3->pack_start (*ckbFileBrowserToolbarSingleRow, Gtk::PACK_SHRINK, 4); - hbworkflow3->pack_start (*ckbShowFilmStripToolBar, Gtk::PACK_SHRINK, 4); - vbworkflow->pack_start (*hbworkflow3, Gtk::PACK_SHRINK, 0); - - Gtk::HBox* hbworkflow4 = Gtk::manage( new Gtk::HBox () ); - + Gtk::HBox* hbworkflow4 = Gtk::manage( new Gtk::HBox (false, 4) ); Gtk::Label* hb4label = Gtk::manage( new Gtk::Label (M("PREFERENCES_TP_LABEL")) ); - hbworkflow4->pack_start (*hb4label, Gtk::PACK_SHRINK, 4); + hbworkflow4->pack_start (*hb4label, Gtk::PACK_SHRINK); ckbHideTPVScrollbar = Gtk::manage( new Gtk::CheckButton (M("PREFERENCES_TP_VSCROLLBAR")) ); - hbworkflow4->pack_start (*ckbHideTPVScrollbar, Gtk::PACK_SHRINK, 4); - + hbworkflow4->pack_start (*ckbHideTPVScrollbar, Gtk::PACK_SHRINK); ckbUseIconNoText = Gtk::manage( new Gtk::CheckButton (M("PREFERENCES_TP_USEICONORTEXT")) ); - hbworkflow4->pack_start (*ckbUseIconNoText, Gtk::PACK_SHRINK, 4); - - vbworkflow->pack_start (*hbworkflow4, Gtk::PACK_SHRINK, 4); + hbworkflow4->pack_start (*ckbUseIconNoText, Gtk::PACK_SHRINK); + vbworkflow->pack_start (*hbworkflow4, Gtk::PACK_SHRINK); fworklflow->add (*vbworkflow); - mvbsd->pack_start (*fworklflow, Gtk::PACK_SHRINK, 4); - + mvbsd->pack_start (*fworklflow, Gtk::PACK_SHRINK); + Gtk::Frame* flang = Gtk::manage( new Gtk::Frame (M("PREFERENCES_DEFAULTLANG")) ); Gtk::HBox* hblang = Gtk::manage( new Gtk::HBox () ); hblang->set_border_width (4); @@ -1412,6 +1418,7 @@ void Preferences::storePreferences () { moptions.multiDisplayMode = editorMode==3 ? 1:0; moptions.mainNBVertical = editorMode==1; + moptions.curvebboxpos = curveBBoxPosC->get_active_row_number(); moptions.histogramPosition = ckbHistogramPositionLeft->get_active() ? 1 : 2; moptions.showProfileSelector = ckbShowProfileSelector->get_active(); moptions.FileBrowserToolbarSingleRow = ckbFileBrowserToolbarSingleRow->get_active(); @@ -1562,6 +1569,7 @@ void Preferences::fillPreferences () { else editorLayout->set_active(moptions.multiDisplayMode ? 3 : 2); + curveBBoxPosC->set_active(moptions.curvebboxpos); ckbHistogramPositionLeft->set_active(moptions.histogramPosition==1); // ckbHistogramWorking->set_active(moptions.histogramWorking==1); ckbShowProfileSelector->set_active(moptions.showProfileSelector); diff --git a/rtgui/preferences.h b/rtgui/preferences.h index 7ecc5df6a..05bc67b74 100644 --- a/rtgui/preferences.h +++ b/rtgui/preferences.h @@ -108,6 +108,7 @@ class Preferences : public Gtk::Dialog, public ProfileStoreListener { Gtk::ComboBoxText* waveletTileSizeCombo; Gtk::ComboBoxText* cprevdemo; + Gtk::ComboBoxText* curveBBoxPosC; Gtk::ComboBoxText* theme; Gtk::CheckButton* slimUI;