/*
- Copyright (C) 2018 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2018-2021 Carl Hetherington <cth@carlh.net>
This file is part of DCP-o-matic.
*/
+
+#ifndef DCPOMATIC_CONTROLS_H
+#define DCPOMATIC_CONTROLS_H
+
+
#include "lib/dcpomatic_time.h"
-#include "lib/types.h"
#include "lib/film.h"
+#include "lib/types.h"
+#include <dcp/warnings.h>
+LIBDCP_DISABLE_WARNINGS
#include <wx/wx.h>
-#include <boost/shared_ptr.hpp>
+LIBDCP_ENABLE_WARNINGS
#include <boost/signals2.hpp>
-class FilmViewer;
-class Film;
+
class ClosedCaptionsDialog;
class Content;
+class ContentView;
+class Film;
+class FilmViewer;
+class MarkersPanel;
class PlayerVideo;
-class wxToggleButton;
+
class wxListCtrl;
+class wxToggleButton;
+
namespace dcp {
class CPL;
}
+
class Controls : public wxPanel
{
public:
Controls (
wxWindow* parent,
- boost::shared_ptr<FilmViewer>,
+ std::shared_ptr<FilmViewer>,
bool editor_controls = true
);
- boost::shared_ptr<Film> film () const;
+ virtual void set_film (std::shared_ptr<Film> film);
+
+ virtual void play () {};
+ virtual void stop () {};
+ void seek (int slider);
+
+ std::shared_ptr<Film> film () const;
void back_frame ();
void forward_frame ();
- void show_extended_player_controls (bool s);
- void log (wxString s);
+protected:
+
+ virtual void started ();
+ virtual void stopped ();
+ virtual void setup_sensitivity ();
+ virtual void config_changed (int property);
+
+ wxSizer* _v_sizer;
+ wxBoxSizer* _button_sizer;
+ std::shared_ptr<Film> _film;
+ MarkersPanel* _markers;
+ wxSlider* _slider;
+ std::weak_ptr<FilmViewer> _viewer;
+ boost::optional<std::string> _active_job;
private:
+
void update_position_label ();
void update_position_slider ();
void rewind_clicked (wxMouseEvent &);
void forward_clicked (wxKeyboardState &);
void slider_moved (bool page);
void slider_released ();
- void play_clicked ();
void frame_number_clicked ();
void jump_to_selected_clicked ();
- void setup_sensitivity ();
void timecode_clicked ();
-#ifndef DCPOMATIC_PLAYER_SWAROOP
- void check_play_state ();
-#endif
void active_jobs_changed (boost::optional<std::string>);
- DCPTime nudge_amount (wxKeyboardState& ev);
- void image_changed (boost::weak_ptr<PlayerVideo>);
- void film_change (ChangeType type, Film::Property p);
+ dcpomatic::DCPTime nudge_amount (wxKeyboardState& ev);
+ void image_changed (std::weak_ptr<PlayerVideo>);
void outline_content_changed ();
void eye_changed ();
- void position_changed ();
- void started ();
- void stopped ();
- void film_changed ();
- void update_content_directory ();
- void config_changed (int property);
-
- typedef std::pair<boost::shared_ptr<dcp::CPL>, boost::filesystem::path> CPL;
-
- boost::shared_ptr<Content> selected_content () const;
-#ifdef DCPOMATIC_VARIANT_SWAROOP
- void pause_clicked ();
- void stop_clicked ();
-#endif
- void add_clicked ();
- void save_clicked ();
- void load_clicked ();
- void add_content_to_list (boost::shared_ptr<Content> content, wxListCtrl* list);
+ void update_position ();
+ void film_change (ChangeType, Film::Property);
- boost::shared_ptr<Film> _film;
- boost::shared_ptr<FilmViewer> _viewer;
+ typedef std::pair<std::shared_ptr<dcp::CPL>, boost::filesystem::path> CPL;
- wxSizer* _v_sizer;
bool _slider_being_moved;
- bool _was_running_before_slider;
wxCheckBox* _outline_content;
wxChoice* _eye;
wxCheckBox* _jump_to_selected;
- wxListCtrl* _content_view;
- wxListCtrl* _spl_view;
- wxListCtrl* _current_spl_view;
- wxTextCtrl* _log;
- wxButton* _add_button;
- wxButton* _save_button;
- wxButton* _load_button;
- std::vector<boost::shared_ptr<Content> > _content;
- wxSlider* _slider;
wxButton* _rewind_button;
wxButton* _back_button;
wxButton* _forward_button;
wxStaticText* _frame_number;
wxStaticText* _timecode;
-#ifdef DCPOMATIC_VARIANT_SWAROOP
- wxButton* _play_button;
- wxButton* _pause_button;
- wxButton* _stop_button;
-#else
- wxToggleButton* _play_button;
-#endif
- boost::optional<std::string> _active_job;
ClosedCaptionsDialog* _closed_captions_dialog;
-#ifdef DCPOMATIC_VARIANT_SWAROOP
- boost::optional<dcp::ContentKind> _current_kind;
-#endif
+ wxTimer _timer;
+ boost::signals2::scoped_connection _film_change_connection;
boost::signals2::scoped_connection _config_changed_connection;
};
+
+
+#endif