From: Carl Hetherington Date: Wed, 7 Oct 2015 18:34:21 +0000 (+0100) Subject: Various JobView fixes. X-Git-Tag: v2.4.6~31 X-Git-Url: https://git.carlh.net/gitweb/?p=dcpomatic.git;a=commitdiff_plain;h=dd7ba98abf729061e30c0b0fbb4cb6fd0485f16a Various JobView fixes. --- diff --git a/src/tools/dcpomatic_kdm.cc b/src/tools/dcpomatic_kdm.cc index dd2c09bb0..bc58be914 100644 --- a/src/tools/dcpomatic_kdm.cc +++ b/src/tools/dcpomatic_kdm.cc @@ -20,6 +20,7 @@ #include "wx/config_dialog.h" #include "wx/about_dialog.h" #include "wx/report_problem_dialog.h" +#include "wx/file_picker_ctrl.h" #include "wx/wx_util.h" #include "wx/wx_signal_manager.h" #include "wx/screens_panel.h" @@ -101,11 +102,7 @@ public: vertical->Add (h, 0, wxALIGN_CENTER_VERTICAL | wxTOP, DCPOMATIC_SIZER_Y_GAP * 2); wxSizer* dkdm = new wxFlexGridSizer (2, DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP); add_label_to_sizer (dkdm, overall_panel, _("DKDM file"), true); -#ifdef DCPOMATIC_USE_OWN_PICKER - _dkdm = new FilePicker (overall_panel, _("Select a DKDM XML file..."), "*.xml"); -#else - _dkdm = new wxFilePickerCtrl (overall_panel, wxID_ANY, wxEmptyString, _("Select a DKDM XML file..."), "*.xml", wxDefaultPosition, wxSize (300, -1)); -#endif + _dkdm = new FilePickerCtrl (overall_panel, _("Select a DKDM XML file..."), "*.xml"); dkdm->Add (_dkdm, 1, wxEXPAND); add_label_to_sizer (dkdm, overall_panel, _("Annotation"), true); _annotation_text = new wxStaticText (overall_panel, wxID_ANY, wxT("")); @@ -206,6 +203,10 @@ private: void dkdm_changed () { + if (_dkdm->GetPath().IsEmpty()) { + return; + } + try { dcp::EncryptedKDM encrypted (dcp::file_to_string (wx_to_std (_dkdm->GetPath()))); dcp::DecryptedKDM decrypted (encrypted, Config::instance()->decryption_chain()->key().get()); @@ -306,11 +307,8 @@ private: wxPreferencesEditor* _config_dialog; ScreensPanel* _screens; KDMTimingPanel* _timing; -#ifdef DCPOMATIC_USE_OWN_PICKER - FilePicker* _dkdm; -#else - wxFilePickerCtrl* _dkdm; -#endif + /* I can't seem to clear the value in a wxFilePickerCtrl, so use our own */ + FilePickerCtrl* _dkdm; wxStaticText* _annotation_text; wxStaticText* _content_title_text; wxStaticText* _issue_date; diff --git a/src/wx/file_picker_ctrl.cc b/src/wx/file_picker_ctrl.cc index 4e2f97618..8de1596a9 100644 --- a/src/wx/file_picker_ctrl.cc +++ b/src/wx/file_picker_ctrl.cc @@ -34,14 +34,16 @@ FilePickerCtrl::FilePickerCtrl (wxWindow* parent, wxString prompt, wxString wild { _sizer = new wxBoxSizer (wxHORIZONTAL); - _file = new wxStaticText (this, wxID_ANY, wxT ("This is the length of the file label")); + wxClientDC dc (parent); + wxSize size = dc.GetTextExtent (wxT ("This is the length of the file label it should be quite long")); + size.SetHeight (-1); + + _file = new wxButton (this, wxID_ANY, _("(None)"), wxDefaultPosition, size, wxBU_LEFT); _sizer->Add (_file, 1, wxEXPAND | wxALL, 6); - _browse = new wxButton (this, wxID_ANY, _("Browse...")); - _sizer->Add (_browse, 0); SetSizerAndFit (_sizer); - _browse->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&FilePickerCtrl::browse_clicked, this)); + _file->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&FilePickerCtrl::browse_clicked, this)); } void @@ -49,7 +51,11 @@ FilePickerCtrl::SetPath (wxString p) { _path = p; - _file->SetLabel (std_to_wx (filesystem::path (wx_to_std (_path)).leaf().string())); + if (!_path.IsEmpty ()) { + _file->SetLabel (std_to_wx (filesystem::path (wx_to_std (_path)).leaf().string())); + } else { + _file->SetLabel (_("(None)")); + } wxCommandEvent ev (wxEVT_COMMAND_FILEPICKER_CHANGED, wxID_ANY); GetEventHandler()->ProcessEvent (ev); diff --git a/src/wx/file_picker_ctrl.h b/src/wx/file_picker_ctrl.h index 4c721af48..51f11cf61 100644 --- a/src/wx/file_picker_ctrl.h +++ b/src/wx/file_picker_ctrl.h @@ -30,8 +30,7 @@ public: private: void browse_clicked (); - wxStaticText* _file; - wxButton* _browse; + wxButton* _file; wxString _path; wxSizer* _sizer; wxString _prompt; diff --git a/src/wx/job_view_dialog.cc b/src/wx/job_view_dialog.cc index a2e3cfe27..1a0c4d526 100644 --- a/src/wx/job_view_dialog.cc +++ b/src/wx/job_view_dialog.cc @@ -28,9 +28,19 @@ JobViewDialog::JobViewDialog (wxWindow* parent, wxString title, shared_ptr _view = new JobView (job, this, this, _table); layout (); SetMinSize (wxSize (960, -1)); + + Bind (wxEVT_TIMER, boost::bind (&JobViewDialog::periodic, this)); + _timer.reset (new wxTimer (this)); + _timer->Start (1000); } JobViewDialog::~JobViewDialog () { delete _view; } + +void +JobViewDialog::periodic () +{ + _view->maybe_pulse (); +} diff --git a/src/wx/job_view_dialog.h b/src/wx/job_view_dialog.h index 0282d9848..4ec00e896 100644 --- a/src/wx/job_view_dialog.h +++ b/src/wx/job_view_dialog.h @@ -30,5 +30,8 @@ public: ~JobViewDialog (); private: + void periodic (); + JobView* _view; + boost::shared_ptr _timer; };