Add File->Close to main DCP-o-matic (#1180).
[dcpomatic.git] / src / wx / controls.cc
index dd47aa184695c3a31c6a64a4b4f4823950178ada..5e68baaa005863bca4c04b7cafa4335b38ee37d4 100644 (file)
@@ -24,6 +24,9 @@
 #include "playhead_to_timecode_dialog.h"
 #include "playhead_to_frame_dialog.h"
 #include "content_view.h"
+#include "static_text.h"
+#include "check_box.h"
+#include "dcpomatic_button.h"
 #include "lib/job_manager.h"
 #include "lib/player_video.h"
 #include "lib/dcp_content.h"
@@ -59,25 +62,25 @@ Controls::Controls (wxWindow* parent, shared_ptr<FilmViewer> viewer, bool editor
        , _outline_content (0)
        , _eye (0)
        , _jump_to_selected (0)
-       , _rewind_button (new wxButton (this, wxID_ANY, wxT("|<")))
-       , _back_button (new wxButton (this, wxID_ANY, wxT("<")))
-       , _forward_button (new wxButton (this, wxID_ANY, wxT(">")))
-       , _frame_number (new wxStaticText (this, wxID_ANY, wxT("")))
-       , _timecode (new wxStaticText (this, wxID_ANY, wxT("")))
+       , _rewind_button (new Button (this, wxT("|<")))
+       , _back_button (new Button (this, wxT("<")))
+       , _forward_button (new Button (this, wxT(">")))
+       , _frame_number (new StaticText (this, wxT("")))
+       , _timecode (new StaticText (this, wxT("")))
 {
        _v_sizer = new wxBoxSizer (wxVERTICAL);
        SetSizer (_v_sizer);
 
        wxBoxSizer* view_options = new wxBoxSizer (wxHORIZONTAL);
        if (editor_controls) {
-               _outline_content = new wxCheckBox (this, wxID_ANY, _("Outline content"));
+               _outline_content = new CheckBox (this, _("Outline content"));
                view_options->Add (_outline_content, 0, wxRIGHT | wxALIGN_CENTER_VERTICAL, DCPOMATIC_SIZER_GAP);
                _eye = new wxChoice (this, wxID_ANY);
                _eye->Append (_("Left"));
                _eye->Append (_("Right"));
                _eye->SetSelection (0);
                view_options->Add (_eye, 0, wxLEFT | wxRIGHT | wxALIGN_CENTER_VERTICAL, DCPOMATIC_SIZER_GAP);
-               _jump_to_selected = new wxCheckBox (this, wxID_ANY, _("Jump to selected content"));
+               _jump_to_selected = new CheckBox (this, _("Jump to selected content"));
                view_options->Add (_jump_to_selected, 0, wxLEFT | wxRIGHT | wxALIGN_CENTER_VERTICAL, DCPOMATIC_SIZER_GAP);
        }
 
@@ -204,6 +207,12 @@ Controls::slider_moved (bool page)
        }
        _viewer->seek (t, false);
        update_position_label ();
+
+       log (
+               wxString::Format(
+                       "playback-seeked %s", t.timecode(_film->video_frame_rate()).c_str()
+                       )
+               );
 }
 
 void
@@ -362,7 +371,10 @@ Controls::set_film (shared_ptr<Film> film)
        }
 
        _film = film;
-       _film_change_connection = _film->Change.connect (boost::bind(&Controls::film_change, this, _1, _2));
+
+       if (_film) {
+               _film_change_connection = _film->Change.connect (boost::bind(&Controls::film_change, this, _1, _2));
+       }
 
        setup_sensitivity ();
 
@@ -379,9 +391,13 @@ Controls::film () const
 void
 Controls::film_change (ChangeType type, Film::Property p)
 {
-       if (type == CHANGE_TYPE_DONE && p == Film::CONTENT) {
-               setup_sensitivity ();
-               update_position_label ();
-               update_position_slider ();
+       if (type == CHANGE_TYPE_DONE) {
+               if (p == Film::CONTENT) {
+                       setup_sensitivity ();
+                       update_position_label ();
+                       update_position_slider ();
+               } else if (p == Film::THREE_D) {
+                       setup_sensitivity ();
+               }
        }
 }