X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fwx%2Fkdm_dialog.cc;h=5410f6cec003f7fcedf35c7a817ec927f3952b5d;hb=c28b3d6f168607aca9995282b96647eb64a26dc9;hp=f2fc537119850e2b9de8f282c836f72d50ff22d8;hpb=05687b49ec37e896ed7e493a587a78cd236f3aa1;p=dcpomatic.git diff --git a/src/wx/kdm_dialog.cc b/src/wx/kdm_dialog.cc index f2fc53711..5410f6cec 100644 --- a/src/wx/kdm_dialog.cc +++ b/src/wx/kdm_dialog.cc @@ -21,8 +21,10 @@ #include #include #include +#include #include "lib/cinema.h" #include "lib/config.h" +#include "lib/film.h" #include "kdm_dialog.h" #include "cinema_dialog.h" #include "screen_dialog.h" @@ -37,10 +39,11 @@ using std::string; using std::map; using std::list; using std::pair; +using std::cout; using std::make_pair; using boost::shared_ptr; -KDMDialog::KDMDialog (wxWindow* parent) +KDMDialog::KDMDialog (wxWindow* parent, boost::shared_ptr film) : wxDialog (parent, wxID_ANY, _("Make KDMs")) { wxBoxSizer* vertical = new wxBoxSizer (wxVERTICAL); @@ -79,19 +82,45 @@ KDMDialog::KDMDialog (wxWindow* parent) vertical->Add (targets, 1, wxEXPAND | wxALL, 6); wxFlexGridSizer* table = new wxFlexGridSizer (3, 2, 6); - add_label_to_sizer (table, this, "From", true); + add_label_to_sizer (table, this, _("From"), true); _from_date = new wxDatePickerCtrl (this, wxID_ANY); table->Add (_from_date, 1, wxEXPAND); _from_time = new wxTimePickerCtrl (this, wxID_ANY); table->Add (_from_time, 1, wxEXPAND); - add_label_to_sizer (table, this, "Until", true); + add_label_to_sizer (table, this, _("Until"), true); _until_date = new wxDatePickerCtrl (this, wxID_ANY); table->Add (_until_date, 1, wxEXPAND); _until_time = new wxTimePickerCtrl (this, wxID_ANY); table->Add (_until_time, 1, wxEXPAND); - add_label_to_sizer (table, this, "Write to", true); + vertical->Add (table, 0, wxEXPAND | wxALL, 6); + + _dcps = new wxListCtrl (this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT | wxLC_SINGLE_SEL); + wxListItem ip; + ip.SetId (0); + ip.SetText (_("DCP")); + ip.SetWidth (400); + _dcps->InsertColumn (0, ip); + vertical->Add (_dcps, 0, wxEXPAND | wxALL, 6); + + list dcps = film->dcps (); + for (list::const_iterator i = dcps.begin(); i != dcps.end(); ++i) { + wxListItem item; + int const n = _dcps->GetItemCount (); + item.SetId (n); + _dcps->InsertItem (item); + _dcps->SetItem (n, 0, std_to_wx (i->string ())); + + if (dcps.size() == 1 || i->string() == film->dcp_name ()) { + _dcps->SetItemState (n, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED); + } + } + + table = new wxFlexGridSizer (3, 2, 6); + + _write_to = new wxRadioButton (this, wxID_ANY, _("Write to")); + table->Add (_write_to, 1, wxEXPAND); #ifdef DCPOMATIC_USE_OWN_DIR_PICKER _folder = new DirPickerCtrl (this); @@ -102,6 +131,11 @@ KDMDialog::KDMDialog (wxWindow* parent) _folder->SetPath (wxStandardPaths::Get().GetDocumentsDir()); table->Add (_folder, 1, wxEXPAND); + table->AddSpacer (0); + + _email = new wxRadioButton (this, wxID_ANY, _("Send by email")); + table->Add (_email, 1, wxEXPAND); + table->AddSpacer (0); vertical->Add (table, 0, wxEXPAND | wxALL, 6); @@ -110,15 +144,21 @@ KDMDialog::KDMDialog (wxWindow* parent) vertical->Add (buttons, wxSizerFlags().Expand().DoubleBorder()); } - _targets->Connect (wxID_ANY, wxEVT_COMMAND_TREE_SEL_CHANGED, wxCommandEventHandler (KDMDialog::targets_selection_changed), 0, this); + _targets->Bind (wxEVT_COMMAND_TREE_SEL_CHANGED, boost::bind (&KDMDialog::setup_sensitivity, this)); + + _add_cinema->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&KDMDialog::add_cinema_clicked, this)); + _edit_cinema->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&KDMDialog::edit_cinema_clicked, this)); + _remove_cinema->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&KDMDialog::remove_cinema_clicked, this)); + + _add_screen->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&KDMDialog::add_screen_clicked, this)); + _edit_screen->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&KDMDialog::edit_screen_clicked, this)); + _remove_screen->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&KDMDialog::remove_screen_clicked, this)); - _add_cinema->Connect (wxID_ANY, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler (KDMDialog::add_cinema_clicked), 0, this); - _edit_cinema->Connect (wxID_ANY, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler (KDMDialog::edit_cinema_clicked), 0, this); - _remove_cinema->Connect (wxID_ANY, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler (KDMDialog::remove_cinema_clicked), 0, this); + _dcps->Bind (wxEVT_COMMAND_LIST_ITEM_SELECTED, boost::bind (&KDMDialog::setup_sensitivity, this)); + _dcps->Bind (wxEVT_COMMAND_LIST_ITEM_DESELECTED, boost::bind (&KDMDialog::setup_sensitivity, this)); - _add_screen->Connect (wxID_ANY, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler (KDMDialog::add_screen_clicked), 0, this); - _edit_screen->Connect (wxID_ANY, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler (KDMDialog::edit_screen_clicked), 0, this); - _remove_screen->Connect (wxID_ANY, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler (KDMDialog::remove_screen_clicked), 0, this); + _write_to->Bind (wxEVT_COMMAND_RADIOBUTTON_SELECTED, boost::bind (&KDMDialog::setup_sensitivity, this)); + _email->Bind (wxEVT_COMMAND_RADIOBUTTON_SELECTED, boost::bind (&KDMDialog::setup_sensitivity, this)); setup_sensitivity (); @@ -161,17 +201,12 @@ KDMDialog::selected_screens () const return c; } -void -KDMDialog::targets_selection_changed (wxCommandEvent &) -{ - setup_sensitivity (); -} - void KDMDialog::setup_sensitivity () { bool const sc = selected_cinemas().size() == 1; bool const ss = selected_screens().size() == 1; + bool const sd = _dcps->GetNextItem (-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED) != -1; _edit_cinema->Enable (sc); _remove_cinema->Enable (sc); @@ -181,7 +216,9 @@ KDMDialog::setup_sensitivity () _remove_screen->Enable (ss); wxButton* ok = dynamic_cast (FindWindowById (wxID_OK)); - ok->Enable (sc || sc); + ok->Enable ((sc || ss) && sd); + + _folder->Enable (_write_to->GetValue ()); } void @@ -211,7 +248,7 @@ KDMDialog::add_screen (shared_ptr c, shared_ptr s) } void -KDMDialog::add_cinema_clicked (wxCommandEvent &) +KDMDialog::add_cinema_clicked () { CinemaDialog* d = new CinemaDialog (this, "Add Cinema"); d->ShowModal (); @@ -226,7 +263,7 @@ KDMDialog::add_cinema_clicked (wxCommandEvent &) } void -KDMDialog::edit_cinema_clicked (wxCommandEvent &) +KDMDialog::edit_cinema_clicked () { if (selected_cinemas().size() != 1) { return; @@ -247,7 +284,7 @@ KDMDialog::edit_cinema_clicked (wxCommandEvent &) } void -KDMDialog::remove_cinema_clicked (wxCommandEvent &) +KDMDialog::remove_cinema_clicked () { if (selected_cinemas().size() != 1) { return; @@ -262,7 +299,7 @@ KDMDialog::remove_cinema_clicked (wxCommandEvent &) } void -KDMDialog::add_screen_clicked (wxCommandEvent &) +KDMDialog::add_screen_clicked () { if (selected_cinemas().size() != 1) { return; @@ -271,7 +308,9 @@ KDMDialog::add_screen_clicked (wxCommandEvent &) shared_ptr c = selected_cinemas().front().second; ScreenDialog* d = new ScreenDialog (this, "Add Screen"); - d->ShowModal (); + if (d->ShowModal () != wxID_OK) { + return; + } shared_ptr s (new Screen (d->name(), d->certificate())); c->add_screen (s); @@ -283,7 +322,7 @@ KDMDialog::add_screen_clicked (wxCommandEvent &) } void -KDMDialog::edit_screen_clicked (wxCommandEvent &) +KDMDialog::edit_screen_clicked () { if (selected_screens().size() != 1) { return; @@ -304,7 +343,7 @@ KDMDialog::edit_screen_clicked (wxCommandEvent &) } void -KDMDialog::remove_screen_clicked (wxCommandEvent &) +KDMDialog::remove_screen_clicked () { if (selected_screens().size() != 1) { return; @@ -375,8 +414,22 @@ KDMDialog::until () const return posix_time (_until_date, _until_time); } -string +boost::filesystem::path +KDMDialog::dcp () const +{ + int const item = _dcps->GetNextItem (-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); + assert (item >= 0); + return wx_to_std (_dcps->GetItemText (item)); +} + +boost::filesystem::path KDMDialog::directory () const { return wx_to_std (_folder->GetPath ()); } + +bool +KDMDialog::write_to () const +{ + return _write_to->GetValue (); +}