X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Fcontent_panel.h;h=df5c58ebd0450ebaaa7240cb0bab3839ffcfce1b;hb=d5bdc5cf073987043ace62378b02ffee5af818bd;hp=d31375c8e12a1d5a1fec90dc149a00dddde7de4e;hpb=df17bbd25da69fc38eb2dcd8b4a2531cf0bab0bc;p=dcpomatic.git diff --git a/src/wx/content_panel.h b/src/wx/content_panel.h index d31375c8e..df5c58ebd 100644 --- a/src/wx/content_panel.h +++ b/src/wx/content_panel.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2012-2018 Carl Hetherington + Copyright (C) 2012-2019 Carl Hetherington This file is part of DCP-o-matic. @@ -18,29 +18,55 @@ */ -#include -#include +#include "content_menu.h" #include "lib/types.h" #include "lib/film.h" -#include "content_menu.h" +#include +#include +#include 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 +{ +public: + LimitedSplitter (wxWindow* parent); + + bool OnSashPositionChange (int new_position) + { + /* 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 boost::noncopyable { public: - ContentPanel (wxNotebook *, boost::shared_ptr, FilmViewer* viewer); + ContentPanel (wxNotebook *, boost::shared_ptr, boost::weak_ptr viewer); boost::shared_ptr film () const { return _film; @@ -54,8 +80,10 @@ public: void film_changed (Film::Property p); void film_content_changed (int p); - wxPanel* panel () const { - return _panel; + void first_shown (); + + wxWindow* window () const { + return _splitter; } wxNotebook* notebook () const { @@ -65,21 +93,24 @@ public: ContentList selected (); ContentList selected_video (); ContentList selected_audio (); - ContentList selected_caption (); + ContentList selected_text (); FFmpegContentList selected_ffmpeg (); void add_file_clicked (); bool remove_clicked (bool hotkey); void timeline_clicked (); - FilmViewer* film_viewer () const { + boost::weak_ptr film_viewer () const { return _film_viewer; } boost::signals2::signal SelectionChanged; private: - void selection_changed (); + void item_selected (); + void item_deselected (); + void item_deselected_idle (); + void check_selection (); void add_folder_clicked (); void add_dcp_clicked (); void earlier_clicked (); @@ -91,9 +122,10 @@ private: void setup_sensitivity (); void add_files (std::list); + std::list panels () const; - wxPanel* _panel; - wxSizer* _sizer; + LimitedSplitter* _splitter; + wxPanel* _top_panel; wxNotebook* _notebook; wxListCtrl* _content; wxButton* _add_file; @@ -103,18 +135,18 @@ private: wxButton* _earlier; wxButton* _later; wxButton* _timeline; - ContentSubPanel* _video_panel; + VideoPanel* _video_panel; AudioPanel* _audio_panel; - TextPanel* _caption_panel[CAPTION_COUNT]; - ContentSubPanel* _timing_panel; - std::list _panels; + TextPanel* _text_panel[TEXT_COUNT]; + TimingPanel* _timing_panel; ContentMenu* _menu; TimelineDialog* _timeline_dialog; wxNotebook* _parent; - ContentList _last_selected; wxWindow* _last_selected_tab; boost::shared_ptr _film; - FilmViewer* _film_viewer; + boost::weak_ptr _film_viewer; bool _generally_sensitive; + bool _ignore_deselect; + bool _no_check_selection; };