X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fwx%2Ffilm_editor.h;h=6aff127d8a6cfe4156a478e8a971220aad133fae;hb=081525ef1c392465fc5a0bb4be79af8e84655bc4;hp=751ed0890790ce72d32a7ed4647d219df00ced3d;hpb=11c54ca7ffb9f4b70dff6414b8da2099597b0d4d;p=dcpomatic.git diff --git a/src/wx/film_editor.h b/src/wx/film_editor.h index 751ed0890..6aff127d8 100644 --- a/src/wx/film_editor.h +++ b/src/wx/film_editor.h @@ -1,45 +1,43 @@ /* - Copyright (C) 2012-2013 Carl Hetherington + Copyright (C) 2012-2021 Carl Hetherington - This program is free software; you can redistribute it and/or modify + This file is part of DCP-o-matic. + + DCP-o-matic is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - This program is distributed in the hope that it will be useful, + DCP-o-matic is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + along with DCP-o-matic. If not, see . */ - -/** @file src/film_editor.h - * @brief A wx widget to edit a film's metadata, and perform various functions. + + +/** @file src/wx/film_editor.h + * @brief FilmEditor class. */ + +#include "lib/film.h" +#include "lib/warnings.h" +DCPOMATIC_DISABLE_WARNINGS #include -#include -#include -#include +DCPOMATIC_ENABLE_WARNINGS #include -#include "lib/film.h" -#include "content_menu.h" + class wxNotebook; -class wxListCtrl; -class wxListEvent; class Film; -class TimelineDialog; -class Ratio; -class Timecode; -class TimingPanel; -class SubtitlePanel; -class AudioPanel; -class VideoPanel; +class ContentPanel; +class DCPPanel; +class FilmViewer; + /** @class FilmEditor * @brief A wx widget to edit a film's metadata, and perform various functions. @@ -47,106 +45,37 @@ class VideoPanel; class FilmEditor : public wxPanel { public: - FilmEditor (boost::shared_ptr, wxWindow *); + FilmEditor (wxWindow *, std::weak_ptr viewer); - void set_film (boost::shared_ptr); - void set_selection (boost::weak_ptr); + void set_film (std::shared_ptr); + void first_shown (); - boost::signals2::signal FileChanged; + boost::signals2::signal FileChanged; + boost::signals2::signal SelectionChanged; /* Stuff for panels */ - - wxNotebook* content_notebook () const { - return _content_notebook; - } - boost::shared_ptr film () const { - return _film; + ContentPanel* content_panel () const { + return _content_panel; } - boost::shared_ptr selected_content (); - boost::shared_ptr selected_video_content (); - boost::shared_ptr selected_audio_content (); - boost::shared_ptr selected_subtitle_content (); - - bool generally_sensitive () const { - return _generally_sensitive; + std::shared_ptr film () const { + return _film; } private: - void make_dcp_panel (); - void make_content_panel (); - void connect_to_widgets (); - - /* Handle changes to the view */ - void name_changed (wxCommandEvent &); - void use_dci_name_toggled (wxCommandEvent &); - void edit_dci_button_clicked (wxCommandEvent &); - void content_selection_changed (wxListEvent &); - void content_add_clicked (wxCommandEvent &); - void content_remove_clicked (wxCommandEvent &); - void container_changed (wxCommandEvent &); - void dcp_content_type_changed (wxCommandEvent &); - void scaler_changed (wxCommandEvent &); - void j2k_bandwidth_changed (wxCommandEvent &); - void dcp_frame_rate_changed (wxCommandEvent &); - void best_dcp_frame_rate_clicked (wxCommandEvent &); - void content_timeline_clicked (wxCommandEvent &); - void dcp_audio_channels_changed (wxCommandEvent &); - void dcp_resolution_changed (wxCommandEvent &); - void sequence_video_changed (wxCommandEvent &); - void content_right_click (wxListEvent &); /* Handle changes to the model */ - void film_changed (Film::Property); - void film_content_changed (boost::weak_ptr, int); - - void set_things_sensitive (bool); - void setup_dcp_name (); - void setup_content (); - void setup_container (); - void setup_content_sensitivity (); - - void active_jobs_changed (bool); - - VideoPanel* _video_panel; - AudioPanel* _audio_panel; - SubtitlePanel* _subtitle_panel; - TimingPanel* _timing_panel; + void film_change (ChangeType, Film::Property); + void film_content_change (ChangeType type, int); + + void set_general_sensitivity (bool); + void active_jobs_changed (boost::optional); wxNotebook* _main_notebook; - wxNotebook* _content_notebook; - wxPanel* _dcp_panel; - wxSizer* _dcp_sizer; - wxPanel* _content_panel; - wxSizer* _content_sizer; + ContentPanel* _content_panel; + DCPPanel* _dcp_panel; /** The film we are editing */ - boost::shared_ptr _film; - wxTextCtrl* _name; - wxStaticText* _dcp_name; - wxCheckBox* _use_dci_name; - wxChoice* _container; - wxListCtrl* _content; - wxButton* _content_add; - wxButton* _content_remove; - wxButton* _content_earlier; - wxButton* _content_later; - wxButton* _content_timeline; - wxCheckBox* _sequence_video; - wxButton* _edit_dci_button; - wxChoice* _scaler; - wxSpinCtrl* _j2k_bandwidth; - wxChoice* _dcp_content_type; - wxChoice* _dcp_frame_rate; - wxSpinCtrl* _dcp_audio_channels; - wxButton* _best_dcp_frame_rate; - wxChoice* _dcp_resolution; - - ContentMenu _menu; - - std::vector _ratios; - - bool _generally_sensitive; - TimelineDialog* _timeline_dialog; + std::shared_ptr _film; };