set_notification_email_to_default ();
set_cover_sheet_to_default ();
+ _main_divider_sash_position = {};
+ _main_content_divider_sash_position = {};
+
_export.set_defaults();
}
}
_auto_crop_threshold = f.optional_number_child<double>("AutoCropThreshold").get_value_or(0.1);
_last_release_notes_version = f.optional_string_child("LastReleaseNotesVersion");
+ _main_divider_sash_position = f.optional_number_child<int>("MainDividerSashPosition");
+ _main_content_divider_sash_position = f.optional_number_child<int>("MainContentDividerSashPosition");
_export.read(f.optional_node_child("Export"));
}
if (_last_release_notes_version) {
root->add_child("LastReleaseNotesVersion")->add_child_text(*_last_release_notes_version);
}
+ if (_main_divider_sash_position) {
+ root->add_child("MainDividerSashPosition")->add_child_text(raw_convert<string>(*_main_divider_sash_position));
+ }
+ if (_main_content_divider_sash_position) {
+ root->add_child("MainContentDividerSashPosition")->add_child_text(raw_convert<string>(*_main_content_divider_sash_position));
+ }
_export.write(root->add_child("Export"));
return _last_release_notes_version;
}
+ boost::optional<int> main_divider_sash_position() const {
+ return _main_divider_sash_position;
+ }
+
+ boost::optional<int> main_content_divider_sash_position() const {
+ return _main_content_divider_sash_position;
+ }
+
/* SET (mostly) */
void set_master_encoding_threads (int n) {
return _export;
}
+ void set_main_divider_sash_position(int position) {
+ maybe_set(_main_divider_sash_position, position);
+ }
+
+ void set_main_content_divider_sash_position(int position) {
+ maybe_set(_main_content_divider_sash_position, position);
+ }
+
void changed (Property p = OTHER);
boost::signals2::signal<void (Property)> Changed;
/** Emitted if read() failed on an existing Config file. There is nothing
RoughDuration _default_kdm_duration;
double _auto_crop_threshold;
boost::optional<std::string> _last_release_notes_version;
+ boost::optional<int> _main_divider_sash_position;
+ boost::optional<int> _main_content_divider_sash_position;
ExportConfig _export;
bool OnSashPositionChange(int new_position) override
{
/* Try to stop the left bit of the splitter getting too small */
- return new_position > _left_panel_minimum_size;
+ auto const ok = new_position > _left_panel_minimum_size;
+ if (ok) {
+ Config::instance()->set_main_divider_sash_position(new_position);
+ }
+ return ok;
}
private:
/* The window is now fairly big but the left panel is small; this happens when the DCP-o-matic window
* is shrunk and then made larger again. Try to set a sensible left panel size in this case.
*/
- SetSashPosition(_left_panel_minimum_size);
+ SetSashPosition(Config::instance()->main_divider_sash_position().get_value_or(_left_panel_minimum_size));
}
ev.Skip();
_right_panel->SetSizer(right_sizer);
- _splitter->SplitVertically(left_panel, _right_panel, left_panel->GetSize().GetWidth() + 8);
+ _splitter->SplitVertically(left_panel, _right_panel, Config::instance()->main_divider_sash_position().get_value_or(left_panel->GetSize().GetWidth() + 8));
set_menu_sensitivity ();
bool OnSashPositionChange(int new_position) override
{
/* Try to stop the top bit of the splitter getting so small that buttons disappear */
- return new_position > 220;
+ auto const ok = new_position > 220;
+ if (ok) {
+ Config::instance()->set_main_content_divider_sash_position(new_position);
+ }
+ return ok;
}
void first_shown(wxWindow* top, wxWindow* bottom)
{
int const sn = wxDisplay::GetFromWindow(this);
+ /* Fallback for when GetFromWindow fails for reasons that aren't clear */
+ int pos = -600;
if (sn >= 0) {
wxRect const screen = wxDisplay(sn).GetClientArea();
/* This is a hack to try and make the content notebook a sensible size; large on big displays but small
enough on small displays to leave space for the content area.
*/
- SplitHorizontally(top, bottom, screen.height > 800 ? -600 : -_top_panel_minimum_size);
- } else {
- /* Fallback for when GetFromWindow fails for reasons that aren't clear */
- SplitHorizontally(top, bottom, -600);
+ pos = screen.height > 800 ? -600 : -_top_panel_minimum_size;
}
+ SplitHorizontally(top, bottom, Config::instance()->main_content_divider_sash_position().get_value_or(pos));
_first_shown = true;
}
/* The window is now fairly big but the top panel is small; this happens when the DCP-o-matic window
* is shrunk and then made larger again. Try to set a sensible top panel size in this case (#1839).
*/
- SetSashPosition(_top_panel_minimum_size);
+ SetSashPosition(Config::instance()->main_content_divider_sash_position().get_value_or(_top_panel_minimum_size));
}
ev.Skip ();