Use icons at the top of the batch converter rather than text buttons at the bottom...
[dcpomatic.git] / src / tools / dcpomatic_batch.cc
index 6e054edf8d8921b2b3793bfe4dcebe398f7d514a..8bb36476d1b3a6d22d94eea4efcdb223644c9762 100644 (file)
@@ -110,6 +110,11 @@ setup_menu (wxMenuBar* m)
 class DOMFrame : public wxFrame
 {
 public:
+       enum class Tool {
+               ADD,
+               PAUSE
+       };
+
        explicit DOMFrame (wxString const & title)
                : wxFrame (nullptr, -1, title)
                , _sizer (new wxBoxSizer(wxVERTICAL))
@@ -131,23 +136,21 @@ public:
                s->Add (panel, 1, wxEXPAND);
                SetSizer (s);
 
-               auto job_manager_view = new JobManagerView (panel, true);
-               _sizer->Add (job_manager_view, 1, wxALL | wxEXPAND, 6);
+               wxBitmap add(icon_path("add"), wxBITMAP_TYPE_PNG);
+               wxBitmap pause(icon_path("pause"), wxBITMAP_TYPE_PNG);
 
-               auto buttons = new wxBoxSizer (wxHORIZONTAL);
-               auto add = new Button (panel, _("Add Film..."));
-               add->Bind (wxEVT_BUTTON, boost::bind(&DOMFrame::add_film, this));
-               buttons->Add (add, 1, wxALL, 6);
-               _pause = new Button (panel, _("Pause"));
-               _pause->Bind (wxEVT_BUTTON, boost::bind(&DOMFrame::pause, this));
-               buttons->Add (_pause, 1, wxALL, 6);
-               _resume = new Button (panel, _("Resume"));
-               _resume->Bind (wxEVT_BUTTON, boost::bind(&DOMFrame::resume, this));
-               buttons->Add (_resume, 1, wxALL, 6);
+               auto toolbar = new wxToolBar(panel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTB_HORIZONTAL);
+               toolbar->SetMargins(4, 4);
+               toolbar->SetToolBitmapSize(wxSize(32, 32));
+               toolbar->AddTool(static_cast<int>(Tool::ADD), _("Add film"), add, _("Add film for conversion"));
+               toolbar->AddCheckTool(static_cast<int>(Tool::PAUSE), _("Pause/resume"), pause, wxNullBitmap, _("Pause or resume conversion"));
+               toolbar->Realize();
+               _sizer->Add(toolbar, 0, wxALL, 6);
 
-               setup_sensitivity ();
+               toolbar->Bind(wxEVT_TOOL, bind(&DOMFrame::tool_clicked, this, _1));
 
-               _sizer->Add (buttons, 0, wxALL, 6);
+               auto job_manager_view = new JobManagerView (panel, true);
+               _sizer->Add (job_manager_view, 1, wxALL | wxEXPAND, 6);
 
                panel->SetSizer (_sizer);
 
@@ -155,22 +158,23 @@ public:
                Bind (wxEVT_SIZE, boost::bind(&DOMFrame::sized, this, _1));
        }
 
-       void setup_sensitivity ()
-       {
-               _pause->Enable (!JobManager::instance()->paused());
-               _resume->Enable (JobManager::instance()->paused());
-       }
-
-       void pause ()
+       void tool_clicked(wxCommandEvent& ev)
        {
-               JobManager::instance()->pause();
-               setup_sensitivity ();
-       }
-
-       void resume ()
-       {
-               JobManager::instance()->resume();
-               setup_sensitivity ();
+               switch (static_cast<Tool>(ev.GetId())) {
+               case Tool::ADD:
+                       add_film();
+                       break;
+               case Tool::PAUSE:
+               {
+                       auto jm = JobManager::instance();
+                       if (jm->paused()) {
+                               jm->resume();
+                       } else {
+                               jm->pause();
+                       }
+                       break;
+               }
+               }
        }
 
        void start_job (boost::filesystem::path path)
@@ -354,8 +358,6 @@ private:
        wxSizer* _sizer;
        wxPreferencesEditor* _config_dialog = nullptr;
        ServersListDialog* _servers_list_dialog = nullptr;
-       wxButton* _pause;
-       wxButton* _resume;
 };