summaryrefslogtreecommitdiff
path: root/src/tools
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2018-03-23 00:28:40 +0000
committerCarl Hetherington <cth@carlh.net>2018-03-23 00:28:40 +0000
commit3c42365762079289499bdc25144bb90b2e3509c6 (patch)
tree95083e45412b54f018d907e75192c17c92d3680d /src/tools
parent7bc349aa8da5a046a9e1b0c08e3fc657c380386b (diff)
Add space shortcut to start/stop playback (#1201).
Diffstat (limited to 'src/tools')
-rw-r--r--src/tools/dcpomatic.cc20
-rw-r--r--src/tools/dcpomatic_player.cc28
2 files changed, 40 insertions, 8 deletions
diff --git a/src/tools/dcpomatic.cc b/src/tools/dcpomatic.cc
index 2285cccff..982e38e67 100644
--- a/src/tools/dcpomatic.cc
+++ b/src/tools/dcpomatic.cc
@@ -218,7 +218,8 @@ enum {
ID_help_report_a_problem,
/* IDs for shortcuts (with no associated menu item) */
ID_add_file,
- ID_remove
+ ID_remove,
+ ID_start_stop
};
class DOMFrame : public wxFrame
@@ -328,18 +329,20 @@ public:
overall_panel->SetSizer (main_sizer);
#ifdef __WXOSX__
- int accelerators = 3;
+ int accelerators = 4;
#else
- int accelerators = 2;
+ int accelerators = 3;
#endif
wxAcceleratorEntry* accel = new wxAcceleratorEntry[accelerators];
accel[0].Set (wxACCEL_CTRL, static_cast<int>('A'), ID_add_file);
accel[1].Set (wxACCEL_NORMAL, WXK_DELETE, ID_remove);
+ accel[2].Set (wxACCEL_NORMAL, WXK_SPACE, ID_start_stop);
#ifdef __WXOSX__
- accel[2].Set (wxACCEL_CTRL, static_cast<int>('W'), wxID_EXIT);
+ accel[3].Set (wxACCEL_CTRL, static_cast<int>('W'), wxID_EXIT);
#endif
Bind (wxEVT_MENU, boost::bind (&ContentPanel::add_file_clicked, _film_editor->content_panel()), ID_add_file);
Bind (wxEVT_MENU, boost::bind (&DOMFrame::remove_clicked, this, _1), ID_remove);
+ Bind (wxEVT_MENU, boost::bind (&DOMFrame::start_stop_pressed, this), ID_start_stop);
wxAcceleratorTable accel_table (accelerators, accel);
SetAcceleratorTable (accel_table);
delete[] accel;
@@ -1201,6 +1204,15 @@ private:
_update_news_requested = false;
}
+ void start_stop_pressed ()
+ {
+ if (_film_viewer->playing()) {
+ _film_viewer->stop();
+ } else {
+ _film_viewer->start();
+ }
+ }
+
FilmEditor* _film_editor;
FilmViewer* _film_viewer;
VideoWaveformDialog* _video_waveform_dialog;
diff --git a/src/tools/dcpomatic_player.cc b/src/tools/dcpomatic_player.cc
index a765bd1d1..39826df1b 100644
--- a/src/tools/dcpomatic_player.cc
+++ b/src/tools/dcpomatic_player.cc
@@ -83,6 +83,8 @@ enum {
ID_help_report_a_problem,
ID_tools_verify,
ID_tools_check_for_updates,
+ /* IDs for shortcuts (with no associated menu item) */
+ ID_start_stop
};
class DOMFrame : public wxFrame
@@ -147,12 +149,21 @@ public:
overall_panel->SetSizer (main_sizer);
#ifdef __WXOSX__
- wxAcceleratorEntry* accel = new wxAcceleratorEntry[1];
- accel[0].Set(wxACCEL_CTRL, static_cast<int>('W'), ID_file_close);
- wxAcceleratorTable accel_table (1, accel);
+ int accelerators = 2;
+#else
+ int accelerators = 1;
+#endif
+
+ wxAcceleratorEntry* accel = new wxAcceleratorEntry[accelerators];
+ accel[0].Set(wxACCEL_NORMAL, WXK_SPACE, ID_start_stop);
+#ifdef __WXOSX__
+ accel[1].Set(wxACCEL_CTRL, static_cast<int>('W'), ID_file_close);
+#endif
+ wxAcceleratorTable accel_table (accelerators, accel);
SetAcceleratorTable (accel_table);
delete[] accel;
-#endif
+
+ Bind (wxEVT_MENU, boost::bind (&DOMFrame::start_stop_pressed, this), ID_start_stop);
UpdateChecker::instance()->StateChanged.connect (boost::bind (&DOMFrame::update_checker_state_changed, this));
}
@@ -553,6 +564,15 @@ private:
_view_cpl->Enable (static_cast<bool>(_film));
}
+ void start_stop_pressed ()
+ {
+ if (_viewer->playing()) {
+ _viewer->stop();
+ } else {
+ _viewer->start();
+ }
+ }
+
bool _update_news_requested;
PlayerInformation* _info;
wxPreferencesEditor* _config_dialog;