X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Fcontent_panel.h;h=8f25353b3c4167eec241dfa42d7f7a4979983d4b;hb=0c66eff01358e75ff524f395aeb634ec34a47313;hp=a886b021726ec00de2ce7d189d2b709c46ce7d54;hpb=7fa7b39acdb940d8eafdf8b553525dae7c152084;p=dcpomatic.git diff --git a/src/wx/content_panel.h b/src/wx/content_panel.h index a886b0217..8f25353b3 100644 --- a/src/wx/content_panel.h +++ b/src/wx/content_panel.h @@ -20,8 +20,9 @@ #include "content_menu.h" +#include "lib/enum_indexed_vector.h" #include "lib/film.h" -#include "lib/types.h" +#include "lib/text_type.h" #include LIBDCP_DISABLE_WARNINGS #include @@ -30,10 +31,12 @@ LIBDCP_ENABLE_WARNINGS class AudioPanel; +class ContentListCtrl; class ContentSubPanel; class Film; class FilmEditor; class FilmViewer; +class LimitedContentPanelSplitter; class TextPanel; class TimelineDialog; class TimingPanel; @@ -46,31 +49,10 @@ class wxSizer; class wxSplitterWindow; -class LimitedSplitter : public wxSplitterWindow -{ -public: - LimitedSplitter (wxWindow* parent); - - bool OnSashPositionChange (int new_position) override - { - /* Try to stop the top bit of the splitter getting so small that buttons disappear */ - return new_position > 220; - } - - void first_shown (wxWindow* top, wxWindow* bottom); - -private: - void sized (wxSizeEvent& ev); - - bool _first_shown; - int const _top_panel_minimum_size; -}; - - class ContentPanel { public: - ContentPanel (wxNotebook *, std::shared_ptr, std::weak_ptr viewer); + ContentPanel(wxNotebook *, std::shared_ptr, FilmViewer& viewer); ContentPanel (ContentPanel const&) = delete; ContentPanel& operator= (ContentPanel const&) = delete; @@ -90,9 +72,7 @@ public: void first_shown (); - wxWindow* window () const { - return _splitter; - } + wxWindow* window () const; wxNotebook* notebook () const { return _notebook; @@ -108,10 +88,14 @@ public: bool remove_clicked (bool hotkey); void timeline_clicked (); - std::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: @@ -125,18 +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::vector); 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; @@ -146,7 +130,7 @@ private: wxButton* _timeline; VideoPanel* _video_panel = nullptr; AudioPanel* _audio_panel = nullptr; - TextPanel* _text_panel[static_cast(TextType::COUNT)]; + EnumIndexedVector _text_panel; TimingPanel* _timing_panel; ContentMenu* _menu; TimelineDialog* _timeline_dialog = nullptr; @@ -154,7 +138,7 @@ private: wxWindow* _last_selected_tab = nullptr; std::shared_ptr _film; - std::weak_ptr _film_viewer; + FilmViewer& _film_viewer; bool _generally_sensitive; bool _ignore_deselect; bool _no_check_selection;