, _x_scroll_rate (16)
, _y_scroll_rate (16)
, _pixels_per_track (48)
+ , _first_resize (true)
{
#ifndef __WXOSX__
_labels_canvas->SetDoubleBuffered (true);
_film_changed_connection = film->Changed.connect (bind (&Timeline::film_changed, this, _1));
_film_content_changed_connection = film->ContentChanged.connect (bind (&Timeline::film_content_changed, this, _2, _3));
- set_pixels_per_second (static_cast<double>(640) / film->length().seconds ());
-
setup_scrollbars ();
_labels_canvas->ShowScrollbars (wxSHOW_SB_NEVER, wxSHOW_SB_NEVER);
}
}
_labels_canvas->SetVirtualSize (_labels_view->bbox().width, tracks() * pixels_per_track() + 96);
_labels_canvas->SetScrollRate (_x_scroll_rate, _y_scroll_rate);
- _main_canvas->SetVirtualSize (*_pixels_per_second * film->length().seconds(), tracks() * pixels_per_track() + 96);
+ _main_canvas->SetVirtualSize (*_pixels_per_second * film->length().seconds(), tracks() * pixels_per_track() + tracks_y_offset() + _time_axis_view->bbox().height);
_main_canvas->SetScrollRate (_x_scroll_rate, _y_scroll_rate);
}
void
Timeline::resized ()
{
+ if (_main_canvas->GetSize().GetWidth() > 0 && _first_resize) {
+ zoom_all ();
+ _first_resize = false;
+ }
setup_scrollbars ();
}
_tool = t;
break;
case ZOOM_ALL:
- shared_ptr<Film> film = _film.lock ();
- DCPOMATIC_ASSERT (film);
- set_pixels_per_second ((_main_canvas->GetSize().GetWidth() - 32) / film->length().seconds());
- set_pixels_per_track ((_main_canvas->GetSize().GetHeight() - tracks_y_offset() - _time_axis_view->bbox().height - 32) / _tracks);
- Refresh ();
+ zoom_all ();
break;
}
}
+
+void
+Timeline::zoom_all ()
+{
+ shared_ptr<Film> film = _film.lock ();
+ DCPOMATIC_ASSERT (film);
+ set_pixels_per_second ((_main_canvas->GetSize().GetWidth() - 32) / film->length().seconds());
+ set_pixels_per_track ((_main_canvas->GetSize().GetHeight() - tracks_y_offset() - _time_axis_view->bbox().height - 32) / _tracks);
+ setup_scrollbars ();
+ _main_canvas->Scroll (0, 0);
+ _labels_canvas->Scroll (0, 0);
+ Refresh ();
+}
void scrolled (wxScrollWinEvent& ev);
void set_pixels_per_second (double pps);
void set_pixels_per_track (int h);
+ void zoom_all ();
boost::shared_ptr<TimelineView> event_to_view (wxMouseEvent &);
TimelineContentViewList selected_views () const;
int _x_scroll_rate;
int _y_scroll_rate;
int _pixels_per_track;
+ bool _first_resize;
static double const _minimum_pixels_per_second;
static int const _minimum_pixels_per_track;
wxBoxSizer* controls = new wxBoxSizer (wxHORIZONTAL);
-#ifdef DCPOMATIC_LINUX
wxBitmap select (wxString::Format (wxT ("%s/select.png"), std_to_wx (shared_path().string())), wxBITMAP_TYPE_PNG);
wxBitmap zoom (wxString::Format (wxT ("%s/zoom.png"), std_to_wx (shared_path().string())), wxBITMAP_TYPE_PNG);
wxBitmap zoom_all (wxString::Format (wxT ("%s/zoom_all.png"), std_to_wx (shared_path().string())), wxBITMAP_TYPE_PNG);
-#endif
+
wxToolBar* toolbar = new wxToolBar (this, wxID_ANY);
- toolbar->AddRadioTool ((int) Timeline::SELECT, _("Select"), select);
- toolbar->AddRadioTool ((int) Timeline::ZOOM, _("Zoom"), zoom);
- toolbar->AddTool ((int) Timeline::ZOOM_ALL, _("Zoom to whole project"), zoom_all);
+ toolbar->AddRadioTool ((int) Timeline::SELECT, _("Select"), select, wxNullBitmap, _("Select and move content"));
+ toolbar->AddRadioTool ((int) Timeline::ZOOM, _("Zoom"), zoom, wxNullBitmap, _("Zoom in / out"));
+ toolbar->AddTool ((int) Timeline::ZOOM_ALL, _("Zoom all"), zoom_all, _("Zoom out to whole film"));
controls->Add (toolbar);
toolbar->Bind (wxEVT_TOOL, bind (&TimelineDialog::tool_clicked, this, _1));