From 5fe1debd5beeefb8dfc671bdea9596cf49daec02 Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Mon, 10 Oct 2011 01:07:10 +0200 Subject: [PATCH] ZoomScale: rely on the state change signal for the view window --- src/gui/panels/timeline-panel.cpp | 12 ++++++------ src/gui/panels/timeline-panel.hpp | 2 +- .../widgets/timeline/timeline-zoom-scale.cpp | 17 ++++++++++++----- .../widgets/timeline/timeline-zoom-scale.hpp | 12 ++++++++---- 4 files changed, 27 insertions(+), 16 deletions(-) diff --git a/src/gui/panels/timeline-panel.cpp b/src/gui/panels/timeline-panel.cpp index b92554341..970aa21d4 100644 --- a/src/gui/panels/timeline-panel.cpp +++ b/src/gui/panels/timeline-panel.cpp @@ -112,7 +112,7 @@ TimelinePanel::TimelinePanel (workspace::PanelManager &panel_manager, panelBar.pack_start(toolbar, PACK_SHRINK); // Setup tooltips - sequenceChooser .set_tooltip_text(_("Change sequence")); + sequenceChooser .set_tooltip_text(_("Change sequence")); previousButton .set_tooltip_text(_("To beginning")); rewindButton .set_tooltip_text(_("Rewind")); @@ -129,15 +129,15 @@ TimelinePanel::TimelinePanel (workspace::PanelManager &panel_manager, zoomScale .set_tooltip_text(_("Adjust timeline zoom scale")); // Setup the timeline widget - shared_ptr sequence ///////////////////////////////TICKET #796 + shared_ptr sequence ///////////////////////////////TICKET #796 : should use std::tr1::shared_ptr instead of boost = *get_project().get_sequences().begin(); timelineWidget.reset(new TimelineWidget(load_state(sequence))); pack_start(*timelineWidget, PACK_EXPAND_WIDGET); - // TimelineWidget is now initialized, lets set it in the zoomScale - // and wire it with the timeline state changed signal - zoomScale.set_view_window(timelineWidget->get_state()->get_view_window()); - zoomScale.wireTimelineState (timelineWidget->state_changed_signal()); + // since TimelineWidget is now initialised, + // wire the zoom slider to react on timeline state changes + zoomScale.wireTimelineState (timelineWidget->get_state(), + timelineWidget->state_changed_signal()); // Set the initial UI state diff --git a/src/gui/panels/timeline-panel.hpp b/src/gui/panels/timeline-panel.hpp index aac000277..8b165dd79 100644 --- a/src/gui/panels/timeline-panel.hpp +++ b/src/gui/panels/timeline-panel.hpp @@ -174,7 +174,7 @@ private: boost::scoped_ptr timelineWidget; std::map< boost::weak_ptr, - boost::shared_ptr > ///////////////////////////////TICKET #796 + boost::shared_ptr > ///////////////////////////////TICKET #796 : should use std::tr1::shared_ptr timelineStates; // Toolbar Widgets diff --git a/src/gui/widgets/timeline/timeline-zoom-scale.cpp b/src/gui/widgets/timeline/timeline-zoom-scale.cpp index 7cb6c171f..8d084b525 100644 --- a/src/gui/widgets/timeline/timeline-zoom-scale.cpp +++ b/src/gui/widgets/timeline/timeline-zoom-scale.cpp @@ -91,8 +91,10 @@ TimelineZoomScale::TimelineZoomScale() } void -TimelineZoomScale::wireTimelineState (TimelineWidget::TimelineStateChangeSignal stateChangeSignal) +TimelineZoomScale::wireTimelineState (boost::shared_ptr currentState, + TimelineWidget::TimelineStateChangeSignal stateChangeSignal) { + on_timeline_state_changed (currentState); stateChangeSignal.connect (sigc::mem_fun(this, &TimelineZoomScale::on_timeline_state_changed)); } @@ -100,7 +102,9 @@ void TimelineZoomScale::on_timeline_state_changed (boost::shared_ptr newState) { REQUIRE (newState); - UNIMPLEMENTED ("react on the timeline state change"); + timelineState = newState; + + UNIMPLEMENTED ("react on the timeline state change"); ///////////////////////////TODO } void @@ -129,11 +133,14 @@ TimelineZoomScale::signal_zoom() return zoomSignal; } -void -TimelineZoomScale::set_view_window(TimelineViewWindow &view_window) +TimelineViewWindow& +TimelineZoomScale::getViewWindow() { - timelineViewWindow =& view_window; + REQUIRE (timelineState, "lifecycle error"); + return timelineState->get_view_window(); } + + int64_t TimelineZoomScale::calculate_zoom_scale() { diff --git a/src/gui/widgets/timeline/timeline-zoom-scale.hpp b/src/gui/widgets/timeline/timeline-zoom-scale.hpp index 1514e8b77..9bf5dde9f 100644 --- a/src/gui/widgets/timeline/timeline-zoom-scale.hpp +++ b/src/gui/widgets/timeline/timeline-zoom-scale.hpp @@ -29,6 +29,7 @@ #include "gui/gtk-lumiera.hpp" #include "gui/widgets/mini-button.hpp" #include "gui/widgets/timeline-widget.hpp" +#include "gui/widgets/timeline/timeline-state.hpp" #include "gui/widgets/timeline/timeline-view-window.hpp" #include @@ -54,8 +55,8 @@ public: */ sigc::signal signal_zoom(); - void set_view_window(TimelineViewWindow &view_window); - void wireTimelineState (TimelineWidget::TimelineStateChangeSignal); + void wireTimelineState (boost::shared_ptr currentState, + TimelineWidget::TimelineStateChangeSignal); private: /* Event Handlers */ @@ -83,6 +84,9 @@ private: */ void on_zoom(); + /** access current timeline state */ + TimelineViewWindow& getViewWindow(); + /** * Calculate a Zoom Scale value based on * the adjustment's current value @@ -96,14 +100,14 @@ private: MiniButton zoomIn; MiniButton zoomOut; -protected: +private: /* Signals */ sigc::signal zoomSignal; const double smoothing_factor; const double button_step_size; - TimelineViewWindow *timelineViewWindow; + boost::shared_ptr timelineState; }; } // namespace gui