Configurable window arrangement in player dual-screen mode.
[dcpomatic.git] / src / tools / dcpomatic_player.cc
index 7a7e5ac16a8d55e6bd5ba79f179642f313d24987..1925ab2e1e3d1a55a357807bedc622eecfcad9b6 100644 (file)
@@ -167,7 +167,7 @@ public:
                _viewer->Stopped.connect (bind(&DOMFrame::playback_stopped, this));
                _info = new PlayerInformation (_overall_panel, _viewer);
                wxSizer* main_sizer = new wxBoxSizer (wxVERTICAL);
-               main_sizer->Add (_viewer->panel(), 1, wxEXPAND);
+               main_sizer->Add (_viewer->panel(), 1, wxEXPAND | wxALIGN_CENTER_VERTICAL);
                main_sizer->Add (_controls, 0, wxEXPAND | wxALL, 6);
                main_sizer->Add (_info, 0, wxEXPAND | wxALL, 6);
                _overall_panel->SetSizer (main_sizer);
@@ -194,12 +194,18 @@ public:
                Bind (wxEVT_MENU, boost::bind (&DOMFrame::forward_frame, this), ID_forward_frame);
 
                _cinema_dialog = new CinemaPlayerDialog (this, _viewer);
+               _cinema_dialog->Bind (wxEVT_CLOSE_WINDOW, boost::bind(&DOMFrame::close, this));
 
                UpdateChecker::instance()->StateChanged.connect (boost::bind (&DOMFrame::update_checker_state_changed, this));
 
                setup_screen ();
        }
 
+       void close ()
+       {
+               Close ();
+       }
+
        bool playback_permitted ()
        {
                if (!_film || !Config::instance()->respect_kdm_validity_periods()) {
@@ -352,8 +358,10 @@ private:
                wxMenu* view = new wxMenu;
                optional<int> c = Config::instance()->decode_reduction();
                _view_cpl = view->Append(ID_view_cpl, _("CPL"), _cpl_menu);
+               view->AppendSeparator();
                view->AppendCheckItem(ID_view_full_screen, _("Full screen\tF11"))->Check(_mode == Config::PLAYER_MODE_FULL);
                view->AppendCheckItem(ID_view_dual_screen, _("Dual screen\tShift+F11"))->Check(_mode == Config::PLAYER_MODE_DUAL);
+               view->AppendSeparator();
                view->Append(ID_view_closed_captions, _("Closed captions..."));
                view->AppendSeparator();
                view->AppendRadioItem(ID_view_scale_appropriate, _("Set decode resolution to match display"))->Check(!static_cast<bool>(c));
@@ -550,9 +558,17 @@ private:
                if (_mode == Config::PLAYER_MODE_DUAL) {
                        _cinema_dialog->Show ();
                        if (wxDisplay::GetCount() > 1) {
-                               this->Move (wxDisplay(0).GetClientArea().GetWidth(), 0);
-                               /* (0, 0) doesn't seem to work for some strange reason */
-                               _cinema_dialog->Move (8, 8);
+                               switch (Config::instance()->image_display()) {
+                               case 0:
+                                       this->Move (0, 0);
+                                       _cinema_dialog->Move (wxDisplay(0).GetClientArea().GetWidth(), 0);
+                                       break;
+                               case 1:
+                                       this->Move (wxDisplay(0).GetClientArea().GetWidth(), 0);
+                                       /* (0, 0) doesn't seem to work for some strange reason */
+                                       _cinema_dialog->Move (8, 8);
+                                       break;
+                               }
                        }
                }
        }