#include <boost/shared_ptr.hpp>
#include <boost/weak_ptr.hpp>
+#include <boost/signals2.hpp>
#include <wx/wx.h>
-#include "util.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>);
- void force_redraw (Rect const &);
+ boost::shared_ptr<const Film> film () const;
+
+ void force_redraw (dcpomatic::Rect<int> const &);
int x_offset () const {
return 8;
}
int track_height () const {
- return 64;
+ return 48;
}
- double pixels_per_second () const {
- return _pixels_per_second;
+ double pixels_per_time_unit () const {
+ return _pixels_per_time_unit;
}
- Position tracks_position () const {
- return Position (8, 8);
+ 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_second ();
-
- boost::weak_ptr<Playlist> _playlist;
+ 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;
- double _pixels_per_second;
+ 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;
+
+ boost::signals2::scoped_connection _playlist_connection;
};