Allow repeat of multiple stuff.
[dcpomatic.git] / src / wx / timeline.h
index 48aebc6372821de90468597331c0b7668ef2d102..99094788f1aded6593143e12113be47f3c7d3282 100644 (file)
 
 #include <boost/shared_ptr.hpp>
 #include <boost/weak_ptr.hpp>
+#include <boost/signals2.hpp>
 #include <wx/wx.h>
+#include "lib/util.h"
+#include "lib/rect.h"
 
-class Playlist;
+class Film;
+class View;
+class ContentView;
+class FilmEditor;
+class TimeAxisView;
 
 class Timeline : public wxPanel
 {
 public:
-       Timeline (wxWindow *, boost::shared_ptr<Playlist>);
+       Timeline (wxWindow *, FilmEditor *, boost::shared_ptr<Film>);
+
+       boost::shared_ptr<const Film> film () const;
+
+       void force_redraw (dcpomatic::Rect<int> const &);
+
+       int x_offset () const {
+               return 8;
+       }
+
+       int width () const {
+               return GetSize().GetWidth ();
+       }
+
+       int track_height () const {
+               return 48;
+       }
+
+       double pixels_per_time_unit () const {
+               return _pixels_per_time_unit;
+       }
+
+       Position<int> tracks_position () const {
+               return Position<int> (8, 8);
+       }
+
+       int tracks () const;
 
 private:
        void paint (wxPaintEvent &);
+       void left_down (wxMouseEvent &);
+       void left_up (wxMouseEvent &);
+       void right_down (wxMouseEvent &);
+       void mouse_moved (wxMouseEvent &);
+       void playlist_changed ();
+       void setup_pixels_per_time_unit ();
+       void resized (wxSizeEvent &);
+       void assign_tracks ();
+       void set_start_from_event (wxMouseEvent &);
+       void clear_selection ();
+       void repeat (wxCommandEvent &);
+
+       boost::shared_ptr<View> event_to_view (wxMouseEvent &);
+       std::list<boost::shared_ptr<ContentView> > selected () const;
+
+       FilmEditor* _film_editor;
+       boost::weak_ptr<Film> _film;
+       std::list<boost::shared_ptr<View> > _views;
+       boost::shared_ptr<TimeAxisView> _time_axis_view;
+       int _tracks;
+       double _pixels_per_time_unit;
+       bool _left_down;
+       wxPoint _down_point;
+       boost::shared_ptr<ContentView> _down_view;
+       Time _down_view_start;
+       bool _first_move;
+       wxMenu* _menu;
 
-       static int const _track_height;
-       
-       boost::weak_ptr<Playlist> _playlist;
+       boost::signals2::scoped_connection _playlist_connection;
 };