Work around deadlock when destroying J2KEncoder with a full writer queue (#2784).
[dcpomatic.git] / src / wx / job_view.h
index 8c0214d9dc9438ad7e80a66ad68dbfc1559976ba..74518c9babc639722cbeca7a441a7f8c380dc44c 100644 (file)
 
 */
 
+
 #ifndef DCPOMATIC_JOB_VIEW_H
 #define DCPOMATIC_JOB_VIEW_H
 
-#include <boost/noncopyable.hpp>
-#include <boost/shared_ptr.hpp>
+
 #include <boost/signals2.hpp>
 
+
+class CheckBox;
 class Job;
-class wxScrolledWindow;
-class wxWindow;
-class wxFlexGridSizer;
-class wxCommandEvent;
 class wxBoxSizer;
-class wxGauge;
-class wxStaticText;
 class wxButton;
+class wxCommandEvent;
+class wxFlexGridSizer;
+class wxGauge;
+class wxScrolledWindow;
 class wxSizer;
+class wxStaticText;
+class wxWindow;
+
 
-class JobView : public boost::noncopyable
+class JobView
 {
 public:
-       JobView (boost::shared_ptr<Job> job, wxWindow* parent, wxWindow* container, wxFlexGridSizer* table);
+       JobView (std::shared_ptr<Job> job, wxWindow* parent, wxWindow* container, wxFlexGridSizer* table);
        virtual ~JobView () {}
 
+       JobView (JobView const&) = delete;
+       JobView& operator= (JobView const&) = delete;
+
        virtual int insert_position () const = 0;
        virtual void job_list_changed () {}
 
@@ -50,16 +56,18 @@ public:
        void insert (int pos);
        void detach ();
 
-       boost::shared_ptr<Job> job () const {
+       std::shared_ptr<Job> job () const {
                return _job;
        }
 
 protected:
        virtual void finished ();
 
-       boost::shared_ptr<Job> _job;
+       std::shared_ptr<Job> _job;
        wxFlexGridSizer* _table;
+       /** sizer for buttons (cancel, details, pause etc.) */
        wxBoxSizer* _buttons;
+       /** sizer for the gauge and the message underneath it */
        wxBoxSizer* _gauge_message;
 
 private:
@@ -69,6 +77,7 @@ private:
        void progress ();
        void details_clicked (wxCommandEvent &);
        void cancel_clicked (wxCommandEvent &);
+       void notify_clicked ();
 
        wxWindow* _parent;
        wxWindow* _container;
@@ -76,10 +85,14 @@ private:
        wxStaticText* _message;
        wxButton* _cancel;
        wxButton* _details;
+       CheckBox* _notify;
+       /** sizer for all right-hand-size controls */
+       wxBoxSizer* _controls;
        std::string _last_message;
 
        boost::signals2::scoped_connection _progress_connection;
        boost::signals2::scoped_connection _finished_connection;
 };
 
+
 #endif