X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Fcontent_panel.h;h=8f25353b3c4167eec241dfa42d7f7a4979983d4b;hb=0c66eff01358e75ff524f395aeb634ec34a47313;hp=ab11a894b95f3dd1e09b7da22239f91154f2646d;hpb=15723e1ba0574d4c62458321e9b6d64236e7e429;p=dcpomatic.git diff --git a/src/wx/content_panel.h b/src/wx/content_panel.h index ab11a894b..8f25353b3 100644 --- a/src/wx/content_panel.h +++ b/src/wx/content_panel.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2012-2019 Carl Hetherington + Copyright (C) 2012-2021 Carl Hetherington This file is part of DCP-o-matic. @@ -18,74 +18,61 @@ */ + #include "content_menu.h" -#include "lib/types.h" +#include "lib/enum_indexed_vector.h" #include "lib/film.h" +#include "lib/text_type.h" +#include +LIBDCP_DISABLE_WARNINGS #include -#include +LIBDCP_ENABLE_WARNINGS #include + +class AudioPanel; +class ContentListCtrl; +class ContentSubPanel; +class Film; +class FilmEditor; +class FilmViewer; +class LimitedContentPanelSplitter; +class TextPanel; +class TimelineDialog; +class TimingPanel; +class VideoPanel; +class wxListCtrl; +class wxListEvent; class wxNotebook; class wxPanel; class wxSizer; -class wxListCtrl; -class wxListEvent; class wxSplitterWindow; -class TimelineDialog; -class FilmEditor; -class ContentSubPanel; -class TextPanel; -class VideoPanel; -class AudioPanel; -class TimingPanel; -class Film; -class FilmViewer; -class LimitedSplitter : public wxSplitterWindow +class ContentPanel { public: - LimitedSplitter (wxWindow* parent) - : wxSplitterWindow (parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_NOBORDER | wxSP_3DSASH | wxSP_LIVE_UPDATE) - { - /* This value doesn't really mean much but we just want to stop double-click on the - divider from shrinking the bottom panel (#1601). - */ - SetMinimumPaneSize (64); - } + ContentPanel(wxNotebook *, std::shared_ptr, FilmViewer& viewer); - bool OnSashPositionChange (int new_position) - { - /* Try to stop the top bit of the splitter getting so small that buttons disappear */ - return new_position > 220; - } + ContentPanel (ContentPanel const&) = delete; + ContentPanel& operator= (ContentPanel const&) = delete; - void first_shown (wxWindow* top, wxWindow* bottom); -}; - - -class ContentPanel : public boost::noncopyable -{ -public: - ContentPanel (wxNotebook *, boost::shared_ptr, boost::weak_ptr viewer); - - boost::shared_ptr film () const { + std::shared_ptr film () const { return _film; } - void set_film (boost::shared_ptr); + void set_film (std::shared_ptr); void set_general_sensitivity (bool s); - void set_selection (boost::weak_ptr); + void set_selection (std::weak_ptr); void set_selection (ContentList cl); + void select_all (); void film_changed (Film::Property p); void film_content_changed (int p); void first_shown (); - wxWindow* window () const { - return _splitter; - } + wxWindow* window () const; wxNotebook* notebook () const { return _notebook; @@ -101,10 +88,14 @@ public: bool remove_clicked (bool hotkey); void timeline_clicked (); - boost::weak_ptr film_viewer () const { + FilmViewer& film_viewer() const { return _film_viewer; } + void add_files(std::vector files); + void add_dcp(boost::filesystem::path dcp); + void add_folder(boost::filesystem::path folder); + boost::signals2::signal SelectionChanged; private: @@ -118,17 +109,18 @@ private: void later_clicked (); void right_click (wxListEvent &); void files_dropped (wxDropFilesEvent &); + boost::optional add_files_override_path() const; void setup (); void setup_sensitivity (); + void set_selected_state(int item, bool state); - void add_files (std::list); std::list panels () const; - LimitedSplitter* _splitter; + LimitedContentPanelSplitter* _splitter; wxPanel* _top_panel; wxNotebook* _notebook; - wxListCtrl* _content; + ContentListCtrl* _content; wxButton* _add_file; wxButton* _add_folder; wxButton* _add_dcp; @@ -136,17 +128,17 @@ private: wxButton* _earlier; wxButton* _later; wxButton* _timeline; - VideoPanel* _video_panel; - AudioPanel* _audio_panel; - TextPanel* _text_panel[TEXT_COUNT]; + VideoPanel* _video_panel = nullptr; + AudioPanel* _audio_panel = nullptr; + EnumIndexedVector _text_panel; TimingPanel* _timing_panel; ContentMenu* _menu; - TimelineDialog* _timeline_dialog; + TimelineDialog* _timeline_dialog = nullptr; wxNotebook* _parent; - wxWindow* _last_selected_tab; + wxWindow* _last_selected_tab = nullptr; - boost::shared_ptr _film; - boost::weak_ptr _film_viewer; + std::shared_ptr _film; + FilmViewer& _film_viewer; bool _generally_sensitive; bool _ignore_deselect; bool _no_check_selection;