- wxFlexGridSizer* table = new wxFlexGridSizer (2, DCPOMATIC_SIZER_X_GAP, 0);
-
- add_label_to_sizer (table, this, _("KDM type"), true);
- _type = new wxChoice (this, wxID_ANY);
- _type->Append ("Modified Transitional 1", ((void *) dcp::MODIFIED_TRANSITIONAL_1));
- _type->Append ("Modified Transitional 1 (without AuthorizedDeviceInfo)", ((void *) dcp::MODIFIED_TRANSITIONAL_TEST));
- if (!interop) {
- _type->Append ("DCI Any", ((void *) dcp::DCI_ANY));
- _type->Append ("DCI Specific", ((void *) dcp::DCI_SPECIFIC));
- }
- table->Add (_type, 1, wxEXPAND);
- _type->SetSelection (0);
-
- {
- int flags = wxALIGN_TOP | wxTOP | wxLEFT | wxRIGHT;
- wxString t = _("Filename format");
-#ifdef __WXOSX__
- flags |= wxALIGN_RIGHT;
- t += wxT (":");
+ auto table = new wxFlexGridSizer (2, DCPOMATIC_SIZER_X_GAP, 0);
+ table->AddGrowableCol (1);
+
+ add_label_to_sizer (table, this, _("KDM type"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL);
+
+ auto type = new wxBoxSizer (wxHORIZONTAL);
+ _type = new KDMChoice (this);
+ type->Add (_type, 1, wxTOP, DCPOMATIC_CHOICE_TOP_PAD);
+ _type->set(Config::instance()->default_kdm_type());
+ auto advanced = new Button (this, _("Advanced..."));
+ type->Add (advanced, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, DCPOMATIC_SIZER_X_GAP);
+ table->Add (type, 1, wxTOP, DCPOMATIC_CHOICE_TOP_PAD);
+
+ add_label_to_sizer (table, this, _("Folder / ZIP name format"), true, 0, wxALIGN_CENTER_VERTICAL | wxLEFT | wxRIGHT);
+ _container_name_format = new NameFormatEditor (this, Config::instance()->kdm_container_name_format(), dcp::NameFormat::Map(), dcp::NameFormat::Map(), "");
+ table->Add (_container_name_format->panel(), 1, wxEXPAND);
+
+ auto format = create_label (this, _("Filename format"), true);
+ auto align = new wxBoxSizer (wxHORIZONTAL);
+#ifdef DCPOMATIC_OSX
+ align->Add (format, 0, wxTOP, 2);
+ table->Add (align, 0, wxALIGN_RIGHT | wxRIGHT, DCPOMATIC_SIZER_GAP - 2);
+#else
+ align->Add (format, 0, wxLEFT, DCPOMATIC_SIZER_GAP - 2);
+ table->Add (align, 0, wxTOP | wxRIGHT | wxALIGN_TOP, DCPOMATIC_SIZER_GAP);