+ wxFlexGridSizer* table = new wxFlexGridSizer (2, DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP);
+ table->AddGrowableCol (1, 1);
+ s->Add (table, 1, wxALL | wxEXPAND, _border);
+
+ {
+ add_label_to_sizer (table, panel, _("Default duration of still images"), true);
+ wxBoxSizer* s = new wxBoxSizer (wxHORIZONTAL);
+ _still_length = new wxSpinCtrl (panel);
+ s->Add (_still_length);
+ add_label_to_sizer (s, panel, _("s"), false);
+ table->Add (s, 1);
+ }
+
+ add_label_to_sizer (table, panel, _("Default directory for new films"), true);
+#ifdef DCPOMATIC_USE_OWN_DIR_PICKER
+ _directory = new DirPickerCtrl (panel);
+#else
+ _directory = new wxDirPickerCtrl (panel, wxDD_DIR_MUST_EXIST);
+#endif
+ table->Add (_directory, 1, wxEXPAND);
+
+ add_label_to_sizer (table, panel, _("Default DCI name details"), true);
+ _dci_metadata_button = new wxButton (panel, wxID_ANY, _("Edit..."));
+ table->Add (_dci_metadata_button);
+
+ add_label_to_sizer (table, panel, _("Default container"), true);
+ _container = new wxChoice (panel, wxID_ANY);
+ table->Add (_container);
+
+ add_label_to_sizer (table, panel, _("Default content type"), true);
+ _dcp_content_type = new wxChoice (panel, wxID_ANY);
+ table->Add (_dcp_content_type);
+
+ {
+ add_label_to_sizer (table, panel, _("Default JPEG2000 bandwidth"), true);
+ wxBoxSizer* s = new wxBoxSizer (wxHORIZONTAL);
+ _j2k_bandwidth = new wxSpinCtrl (panel);
+ s->Add (_j2k_bandwidth);
+ add_label_to_sizer (s, panel, _("Mbit/s"), false);
+ table->Add (s, 1);
+ }
+
+ {
+ add_label_to_sizer (table, panel, _("Default audio delay"), true);
+ wxBoxSizer* s = new wxBoxSizer (wxHORIZONTAL);
+ _audio_delay = new wxSpinCtrl (panel);
+ s->Add (_audio_delay);
+ add_label_to_sizer (s, panel, _("ms"), false);
+ table->Add (s, 1);
+ }
+
+ add_label_to_sizer (table, panel, _("Default issuer"), true);
+ _issuer = new wxTextCtrl (panel, wxID_ANY);
+ table->Add (_issuer, 1, wxEXPAND);
+
+ add_label_to_sizer (table, panel, _("Default creator"), true);
+ _creator = new wxTextCtrl (panel, wxID_ANY);
+ table->Add (_creator, 1, wxEXPAND);
+
+ Config* config = Config::instance ();
+
+ _still_length->SetRange (1, 3600);
+ _still_length->SetValue (config->default_still_length ());
+ _still_length->Bind (wxEVT_COMMAND_SPINCTRL_UPDATED, boost::bind (&DefaultsPage::still_length_changed, this));
+
+ _directory->SetPath (std_to_wx (config->default_directory_or (wx_to_std (wxStandardPaths::Get().GetDocumentsDir())).string ()));
+ _directory->Bind (wxEVT_COMMAND_DIRPICKER_CHANGED, boost::bind (&DefaultsPage::directory_changed, this));
+
+ _dci_metadata_button->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&DefaultsPage::edit_dci_metadata_clicked, this, parent));
+
+ vector<Ratio const *> ratio = Ratio::all ();
+ int n = 0;
+ for (vector<Ratio const *>::iterator i = ratio.begin(); i != ratio.end(); ++i) {
+ _container->Append (std_to_wx ((*i)->nickname ()));
+ if (*i == config->default_container ()) {
+ _container->SetSelection (n);
+ }
+ ++n;
+ }
+
+ _container->Bind (wxEVT_COMMAND_CHOICE_SELECTED, boost::bind (&DefaultsPage::container_changed, this));
+
+ vector<DCPContentType const *> const ct = DCPContentType::all ();
+ n = 0;
+ for (vector<DCPContentType const *>::const_iterator i = ct.begin(); i != ct.end(); ++i) {
+ _dcp_content_type->Append (std_to_wx ((*i)->pretty_name ()));
+ if (*i == config->default_dcp_content_type ()) {
+ _dcp_content_type->SetSelection (n);
+ }
+ ++n;
+ }
+
+ _dcp_content_type->Bind (wxEVT_COMMAND_CHOICE_SELECTED, boost::bind (&DefaultsPage::dcp_content_type_changed, this));
+
+ _j2k_bandwidth->SetRange (50, 250);
+ _j2k_bandwidth->SetValue (config->default_j2k_bandwidth() / 1000000);
+ _j2k_bandwidth->Bind (wxEVT_COMMAND_SPINCTRL_UPDATED, boost::bind (&DefaultsPage::j2k_bandwidth_changed, this));
+
+ _audio_delay->SetRange (-1000, 1000);
+ _audio_delay->SetValue (config->default_audio_delay ());
+ _audio_delay->Bind (wxEVT_COMMAND_SPINCTRL_UPDATED, boost::bind (&DefaultsPage::audio_delay_changed, this));