Fix icons on Windows; zoom to all on initial open.
authorCarl Hetherington <cth@carlh.net>
Wed, 4 Jul 2018 00:15:05 +0000 (01:15 +0100)
committerCarl Hetherington <cth@carlh.net>
Wed, 4 Jul 2018 00:15:05 +0000 (01:15 +0100)
src/wx/timeline.cc
src/wx/timeline.h
src/wx/timeline_dialog.cc

index a0bf50f..c60568e 100644 (file)
@@ -76,6 +76,7 @@ Timeline::Timeline (wxWindow* parent, ContentPanel* cp, shared_ptr<Film> film)
        , _x_scroll_rate (16)
        , _y_scroll_rate (16)
        , _pixels_per_track (48)
+       , _first_resize (true)
 {
 #ifndef __WXOSX__
        _labels_canvas->SetDoubleBuffered (true);
@@ -104,8 +105,6 @@ Timeline::Timeline (wxWindow* parent, ContentPanel* cp, shared_ptr<Film> film)
        _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);
 }
@@ -395,7 +394,7 @@ Timeline::setup_scrollbars ()
        }
        _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);
 }
 
@@ -722,6 +721,10 @@ Timeline::film () const
 void
 Timeline::resized ()
 {
+       if (_main_canvas->GetSize().GetWidth() > 0 && _first_resize) {
+               zoom_all ();
+               _first_resize = false;
+       }
        setup_scrollbars ();
 }
 
@@ -805,11 +808,20 @@ Timeline::tool_clicked (Tool t)
                _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 ();
+}
index 30f7061..2133a53 100644 (file)
@@ -100,6 +100,7 @@ private:
        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;
@@ -130,6 +131,7 @@ private:
        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;
index 34706d6..d20f89d 100644 (file)
@@ -55,15 +55,14 @@ TimelineDialog::TimelineDialog (ContentPanel* cp, shared_ptr<Film> film)
 
        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));