X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Ffilm_editor.h;h=23c87e6784510288c54c8e9e96484b520e05bccc;hb=48b2c7b8ec57e72f2f27d5080e54e4b3c3fcda3d;hp=d5157acc6df9a8656a538afa7f1f50b67a45d5aa;hpb=f7c9b384e63dd8917b619d1a66b0cc95c3bf5649;p=dcpomatic.git diff --git a/src/wx/film_editor.h b/src/wx/film_editor.h index d5157acc6..23c87e678 100644 --- a/src/wx/film_editor.h +++ b/src/wx/film_editor.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2012 Carl Hetherington + Copyright (C) 2012-2013 Carl Hetherington This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -16,7 +16,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - + /** @file src/film_editor.h * @brief A wx widget to edit a film's metadata, and perform various functions. */ @@ -24,10 +24,20 @@ #include #include #include -#include "lib/trim_action.h" +#include +#include #include "lib/film.h" +#include "content_menu.h" +class wxNotebook; +class wxListCtrl; +class wxListEvent; class Film; +class TimelineDialog; +class Ratio; +class Timecode; +class FilmEditorPanel; +class SubtitleContent; /** @class FilmEditor * @brief A wx widget to edit a film's metadata, and perform various functions. @@ -35,93 +45,116 @@ class Film; class FilmEditor : public wxPanel { public: - FilmEditor (Film *, wxWindow *); + FilmEditor (boost::shared_ptr, wxWindow *); + + void set_film (boost::shared_ptr); + void set_selection (boost::weak_ptr); - void set_film (Film *); - void setup_visibility (); + boost::signals2::signal FileChanged; - sigc::signal1 FileChanged; + /* Stuff for panels */ + + wxNotebook* content_notebook () const { + return _content_notebook; + } + boost::shared_ptr film () const { + return _film; + } + + ContentList selected_content (); + VideoContentList selected_video_content (); + AudioContentList selected_audio_content (); + SubtitleContentList selected_subtitle_content (); + FFmpegContentList selected_ffmpeg_content (); + private: + void make_dcp_panel (); + void make_content_panel (); + void connect_to_widgets (); + /* Handle changes to the view */ - void name_changed (wxCommandEvent &); - void left_crop_changed (wxCommandEvent &); - void right_crop_changed (wxCommandEvent &); - void top_crop_changed (wxCommandEvent &); - void bottom_crop_changed (wxCommandEvent &); - void content_changed (wxCommandEvent &); - void frames_per_second_changed (wxCommandEvent &); - void format_changed (wxCommandEvent &); - void dcp_range_changed (int, TrimAction); - void dcp_content_type_changed (wxCommandEvent &); - void dcp_ab_toggled (wxCommandEvent &); - void scaler_changed (wxCommandEvent &); - void audio_gain_changed (wxCommandEvent &); - void audio_delay_changed (wxCommandEvent &); - void still_duration_changed (wxCommandEvent &); + void name_changed (); + void use_dci_name_toggled (); + void edit_dci_button_clicked (); + void content_selection_changed (); + void content_add_file_clicked (); + void content_add_folder_clicked (); + void content_remove_clicked (); + void content_earlier_clicked (); + void content_later_clicked (); + void container_changed (); + void dcp_content_type_changed (); + void scaler_changed (); + void j2k_bandwidth_changed (); + void frame_rate_changed (); + void best_frame_rate_clicked (); + void content_timeline_clicked (); + void audio_channels_changed (); + void resolution_changed (); + void sequence_video_changed (); + void content_right_click (wxListEvent &); + void three_d_changed (); + void standard_changed (); + void signed_toggled (); + void encrypted_toggled (); /* Handle changes to the model */ void film_changed (Film::Property); - - /* Button clicks */ - void edit_filters_clicked (wxCommandEvent &); - void change_dcp_range_clicked (wxCommandEvent &); - - void set_things_sensitive (bool); - - wxControl* video_control (wxControl *); - wxControl* still_control (wxControl *); - - Film::Property _ignore_changes; + void film_content_changed (int); + + void set_general_sensitivity (bool); + void setup_dcp_name (); + void setup_content (); + void setup_container (); + void setup_content_sensitivity (); + + void active_jobs_changed (bool); + + FilmEditorPanel* _video_panel; + FilmEditorPanel* _audio_panel; + FilmEditorPanel* _subtitle_panel; + FilmEditorPanel* _timing_panel; + std::list _panels; + + wxNotebook* _main_notebook; + wxNotebook* _content_notebook; + wxPanel* _dcp_panel; + wxSizer* _dcp_sizer; + wxPanel* _content_panel; + wxSizer* _content_sizer; /** The film we are editing */ - Film* _film; - /** The Film's name */ + boost::shared_ptr _film; wxTextCtrl* _name; - /** The Film's frames per second */ - wxTextCtrl* _frames_per_second; - /** The Film's format */ - wxComboBox* _format; - /** The Film's content file */ - wxFilePickerCtrl* _content; - /** The Film's left crop */ - wxSpinCtrl* _left_crop; - /** The Film's right crop */ - wxSpinCtrl* _right_crop; - /** The Film's top crop */ - wxSpinCtrl* _top_crop; - /** The Film's bottom crop */ - wxSpinCtrl* _bottom_crop; - /** Currently-applied filters */ - wxStaticText* _filters; - /** Button to open the filters dialogue */ - wxButton* _filters_button; - /** The Film's scaler */ - wxComboBox* _scaler; - /** The Film's audio gain */ - wxSpinCtrl* _audio_gain; - /** The Film's audio delay */ - wxSpinCtrl* _audio_delay; - /** The Film's DCP content type */ - wxComboBox* _dcp_content_type; - /** The Film's original size */ - wxStaticText* _original_size; - /** The Film's length */ - wxStaticText* _length; - /** The Film's audio details */ - wxStaticText* _audio; - /** The Film's duration for still sources */ - wxSpinCtrl* _still_duration; - - /** Display of the range of frames that will be used */ - wxStaticText* _dcp_range; - /** Button to change the range */ - wxButton* _change_dcp_range_button; - /** Selector to generate an A/B comparison DCP */ - wxCheckBox* _dcp_ab; - - std::list _video_controls; - std::list _still_controls; - - wxSizer* _sizer; + wxStaticText* _dcp_name; + wxCheckBox* _use_dci_name; + wxChoice* _container; + wxListCtrl* _content; + wxButton* _content_add_file; + wxButton* _content_add_folder; + 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* _frame_rate; + wxSpinCtrl* _audio_channels; + wxButton* _best_frame_rate; + wxCheckBox* _three_d; + wxChoice* _resolution; + wxChoice* _standard; + wxCheckBox* _signed; + wxCheckBox* _encrypted; + + ContentMenu _menu; + + std::vector _ratios; + + bool _generally_sensitive; + TimelineDialog* _timeline_dialog; };