*/
+
#include "content_menu.h"
#include "timeline_content_view.h"
-#include "lib/util.h"
+#include "lib/film_property.h"
#include "lib/rect.h"
-#include "lib/film.h"
+#include <dcp/warnings.h>
+LIBDCP_DISABLE_WARNINGS
#include <wx/wx.h>
+LIBDCP_ENABLE_WARNINGS
#include <boost/signals2.hpp>
-class Film;
+
class ContentPanel;
-class TimelineView;
-class TimelineTimeAxisView;
-class TimelineReelsView;
-class TimelineLabelsView;
+class Film;
class FilmViewer;
+class TimelineLabelsView;
+class TimelineReelsView;
+class TimelineTimeAxisView;
+class TimelineView;
+
class Timeline : public wxPanel
{
public:
- Timeline (wxWindow *, ContentPanel *, std::shared_ptr<Film>, std::weak_ptr<FilmViewer> viewer);
+ Timeline (wxWindow *, ContentPanel *, std::shared_ptr<Film>, FilmViewer& viewer);
std::shared_ptr<const Film> film () const;
int tracks_y_offset () const;
+ void keypress(wxKeyEvent const &);
+
private:
void paint_labels ();
void paint_main ();
void mouse_moved (wxMouseEvent &);
void mouse_moved_select (wxMouseEvent &);
void mouse_moved_zoom (wxMouseEvent &);
- void film_change (ChangeType type, Film::Property);
+ void film_change(ChangeType type, FilmProperty);
void film_content_change (ChangeType type, int, bool frequent);
void resized ();
void assign_tracks ();
void set_pixels_per_track (int h);
void zoom_all ();
void update_playhead ();
+ void mouse_wheel_turned(wxMouseEvent& event);
std::shared_ptr<TimelineView> event_to_view (wxMouseEvent &);
TimelineContentViewList selected_views () const;
wxScrolledCanvas* _main_canvas;
ContentPanel* _content_panel;
std::weak_ptr<Film> _film;
- std::weak_ptr<FilmViewer> _viewer;
+ FilmViewer& _viewer;
TimelineViewList _views;
std::shared_ptr<TimelineTimeAxisView> _time_axis_view;
std::shared_ptr<TimelineReelsView> _reels_view;
int _pixels_per_track;
bool _first_resize;
wxTimer _timer;
+ boost::optional<int> _last_mouse_wheel_x;
+ boost::optional<double> _last_mouse_wheel_time;
static double const _minimum_pixels_per_second;
static int const _minimum_pixels_per_track;