Remove .gitignore do nothing is ignored.
[synfig.git] / synfig-studio / trunk / src / gtkmm / canvasview.h
index 887e622..cddcbe2 100644 (file)
@@ -1,28 +1,31 @@
-/* === S I N F G =========================================================== */
+/* === S Y N F I G ========================================================= */
 /*!    \file canvasview.h
 **     \brief Template Header
 **
-**     $Id: canvasview.h,v 1.2 2005/01/13 18:37:30 darco Exp $
+**     $Id$
 **
 **     \legal
-**     Copyright (c) 2002 Robert B. Quattlebaum Jr.
+**     Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
+**     Copyright (c) 2007, 2008 Chris Moore
+**     Copyright (c) 2009 Carlos López
 **
-**     This software and associated documentation
-**     are CONFIDENTIAL and PROPRIETARY property of
-**     the above-mentioned copyright holder.
+**     This package is free software; you can redistribute it and/or
+**     modify it under the terms of the GNU General Public License as
+**     published by the Free Software Foundation; either version 2 of
+**     the License, or (at your option) any later version.
 **
-**     You may not copy, print, publish, or in any
-**     other way distribute this software without
-**     a prior written agreement with
-**     the copyright holder.
+**     This package is distributed in the hope that it will be useful,
+**     but WITHOUT ANY WARRANTY; without even the implied warranty of
+**     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+**     General Public License for more details.
 **     \endlegal
 */
 /* ========================================================================= */
 
 /* === S T A R T =========================================================== */
 
-#ifndef __SINFG_STUDIO_GTKMM_CANVASVIEW_H
-#define __SINFG_STUDIO_GTKMM_CANVASVIEW_H
+#ifndef __SYNFIG_STUDIO_GTKMM_CANVASVIEW_H
+#define __SYNFIG_STUDIO_GTKMM_CANVASVIEW_H
 
 /* === H E A D E R S ======================================================= */
 
 #include <gtkmm/scrolledwindow.h>
 #include <gtkmm/notebook.h>
 #include <gdkmm/device.h>
+#include <gtkmm/spinbutton.h>
 
-#include <sinfgapp/canvasinterface.h>
-#include <sinfgapp/selectionmanager.h>
+#include <synfigapp/canvasinterface.h>
+#include <synfigapp/selectionmanager.h>
 
-#include <sinfg/canvas.h>
-#include <sinfg/string.h>
-#include <sinfg/time.h>
+#include <synfig/canvas.h>
+#include <synfig/string.h>
+#include <synfig/time.h>
 
 #include "instance.h"
 #include "canvasproperties.h"
 
 #include "dialog_waypoint.h"
 #include "dialog_keyframe.h"
+#include "framedial.h"
+#include "toggleducksdial.h"
+#include "resolutiondial.h"
+#include "widget_keyframe_list.h"
 
 #include "duckmatic.h"
 #include <gtkmm/scale.h>
 #include <map>
 #include <gtkmm/toggleaction.h>
 #include <gtkmm/radioaction.h>
-#include <sinfg/rect.h>
+#include <synfig/rect.h>
 
 #include "adjust_window.h"
 
-#include <sinfg/transform.h>
+#include <synfig/transform.h>
 
 /* === M A C R O S ========================================================= */
 
@@ -88,7 +96,7 @@
 #if    _DEBUG
 #define DEBUGPOINT_CLASS(x)            struct debugpointclass_ ## x { debugpointclass_ ## x () { DEBUGPOINT(); } ~debugpointclass_ ## x () { DEBUGPOINT(); } } badfthguae_ ## x ;
 #else
-#define DEBUGPOINT_CLASS(x)    
+#define DEBUGPOINT_CLASS(x)
 #endif
 #endif
 
 
 /* === C L A S S E S & S T R U C T S ======================================= */
 
+namespace synfig {
+       class TransformStack;
+}
+
 namespace studio {
 
 class CanvasViewUIInterface;
@@ -111,41 +123,40 @@ class Duckmatic;
 class Preview;
 struct PreviewInfo;
 class AudioContainer;
-       
+
 class Widget_Sound;
 class Widget_Timeslider;
 class Widget_Time;
-       
+
 class Dialog_SoundSelect;
 class Dialog_Preview;
 
-class sinfg::TransformStack;
 class Dock_Layers;
 class Dock_Children;
 class Dock_Keyframes;
-       
+
 class CanvasView : public Gtk::Window, public etl::shared_object
 {
        friend class UniversalScrubber;
        friend class Dock_Layers;
        friend class Dock_Children;
        friend class Dock_Keyframes;
-               
+
        friend class CanvasViewUIInterface;
        friend class CanvasViewSelectionManager;
 
        friend class Duckmatic;
-               
+
        /*
  -- ** -- P U B L I C   T Y P E S ---------------------------------------------
        */
-       
+
 public:
 
        typedef etl::handle<CanvasView> Handle;
-       
+
        typedef etl::handle<const CanvasView> ConstHandle;
-       
+
        typedef etl::loose_handle<CanvasView> LooseHandle;
 
        typedef LayerTreeStore::Model LayerTreeModel;
@@ -153,7 +164,7 @@ public:
        typedef ChildrenTreeStore::Model ChildrenTreeModel;
 
        //! Create an instance of this class whenever doing a longer task.
-       /*! Make sure that you check the bool value of this class occasionaly
+       /*! Make sure that you check the bool value of this class occasionally
        **      to make sure the action has not been canceled. */
        class IsWorking
        {
@@ -166,7 +177,10 @@ public:
        };
        friend class IsWorking;
 
-       typedef sinfgapp::CanvasInterface::Mode Mode;
+       typedef synfigapp::CanvasInterface::Mode Mode;
+
+       void set_grid_snap_toggle(bool flag) { grid_snap_toggle->set_active(flag); }
+       void set_grid_show_toggle(bool flag) { grid_show_toggle->set_active(flag); }
 
        /*
  -- ** -- P R I V A T E   D A T A ---------------------------------------------
@@ -178,36 +192,36 @@ public:
        WorkArea* get_work_area() { return work_area.get(); }
 private:
 
-       sinfg::TransformStack curr_transform_stack;
+       synfig::TransformStack curr_transform_stack;
        bool curr_transform_stack_set;
 
-       sinfg::Rect bbox;
+       synfig::Rect bbox;
 
-       DEBUGPOINT_CLASS(1);
+       // DEBUGPOINT_CLASS(1);
 
        //! State Machine
        Smach smach_;
 
-       DEBUGPOINT_CLASS(2);
+       // DEBUGPOINT_CLASS(2);
 
        etl::loose_handle<Instance> instance_;
-       etl::handle<sinfgapp::CanvasInterface> canvas_interface_;
+       etl::handle<synfigapp::CanvasInterface> canvas_interface_;
 
-       DEBUGPOINT_CLASS(3);
+       // DEBUGPOINT_CLASS(3);
 
        //! Sound and information to play it
        etl::handle<AudioContainer>             audio;
        studio::Widget_Sound                    *disp_audio; //should this be put into thing too?
 
-       SigC::Connection                                playcon;
-       SigC::Connection                                stopcon;
-       
+       sigc::connection                                playcon;
+       sigc::connection                                stopcon;
+
        std::auto_ptr<UniversalScrubber> universal_scrubber;
-       
-       //! Tooltip controler
+
+       //! Tooltip controller
        Gtk::Tooltips tooltips;
 
-       DEBUGPOINT_CLASS(4);
+       // DEBUGPOINT_CLASS(4);
 
        //! TreeModel for the layers
        LayerTreeModel layer_tree_model;
@@ -221,23 +235,21 @@ private:
 
        //Glib::RefPtr<KeyframeTreeStore> keyframe_tree_store_;
 
-       DEBUGPOINT_CLASS(5);
-       
-       //std::map<sinfg::String,Glib::RefPtr<Gtk::TreeModel> > tree_model_book_;
-       std::map<sinfg::String,Glib::RefPtr<Glib::ObjectBase> > ref_obj_book_;
-       std::map<sinfg::String,Gtk::Widget*> ext_widget_book_;
+       // DEBUGPOINT_CLASS(5);
 
+       //std::map<synfig::String,Glib::RefPtr<Gtk::TreeModel> > tree_model_book_;
+       std::map<synfig::String,Glib::RefPtr<Glib::ObjectBase> > ref_obj_book_;
+       std::map<synfig::String,Gtk::Widget*> ext_widget_book_;
 
        //! The time adjustment's scope is defined by the time_window adjustment
        Gtk::Adjustment time_adjustment_;
-       
+
        //! The time_window adjustment governs the position of the time window on the whole time line
        //Gtk::Adjustment time_window_adjustment_;
        studio::Adjust_Window time_window_adjustment_;
-       
-                       
+
        LayerTree *layer_tree;
-       
+
        ChildrenTree *children_tree;
 
        KeyframeTree *keyframe_tree;
@@ -246,28 +258,48 @@ private:
 
        Gtk::ProgressBar *progressbar;
        Gtk::Statusbar *statusbar;
-       
+
        Gtk::TreeRow children_canvas_row;
        Gtk::TreeRow children_valuenode_row;
-       
+
        Gtk::Button *stopbutton;
        Gtk::Button *refreshbutton;
-       Gtk::Button *treetogglebutton;
-       Gtk::Notebook *notebook;
-       Gtk::Widget *timebar;
-
+       Gtk::Button *treetogglebutton;  // not used
+       Gtk::Notebook *notebook; // not used
+       Gtk::Table *timebar;
+       Gtk::Table *displaybar;
+       Gtk::Button *animatebutton;
+       Gtk::Button *keyframebutton;
+       FrameDial *framedial;
+       ToggleDucksDial *toggleducksdial;
+       bool toggling_ducks_;
+       ResolutionDial *resolutiondial;
+       bool changing_resolution_;
+       Gtk::Adjustment quality_adjustment_;
+       Gtk::SpinButton *quality_spin;
+       Gtk::Adjustment past_onion_adjustment_;
+       Gtk::SpinButton *past_onion_spin;
+       Gtk::Adjustment future_onion_adjustment_;
+       Gtk::SpinButton *future_onion_spin;
+       bool updating_quality_;
+       Gtk::ToggleButton *show_grid;
+       Gtk::ToggleButton *snap_grid;
+       Gtk::ToggleButton *onion_skin;
+       bool toggling_show_grid;
+       bool toggling_snap_grid;
+       bool toggling_onion_skin;
+       //! Shows current time and allows edition
        Widget_Time *current_time_widget;
        void on_current_time_widget_changed();
-       
-       std::auto_ptr<Widget_Timeslider>                timeslider;
 
-       std::list<sigc::connection> duck_changed_connections;
+       //! Time slider class. Same than the Time track panel
+       std::auto_ptr<Widget_Timeslider> timeslider;
 
+       //!Keyframe list slider
+       std::auto_ptr<Widget_Keyframe_List> widget_kf_list;
 
+       std::list<sigc::connection> duck_changed_connections;
 
-       Gtk::Button *animatebutton;
-       Gtk::Button *keyframebutton;
-       
 /*     DEBUGPOINT_CLASS(8);
 
        Gtk::Menu duckmaskmenu;
@@ -304,24 +336,20 @@ private:
        Gtk::CheckMenuItem* duck_mask_width;
        Gtk::CheckMenuItem* duck_mask_angle;
 */
+       //! Menu members
        Gtk::Menu parammenu;
 
-
-       Glib::RefPtr<Gtk::ToggleAction> duck_mask_position;
-       Glib::RefPtr<Gtk::ToggleAction> duck_mask_vertex;
-       Glib::RefPtr<Gtk::ToggleAction> duck_mask_tangent;
-       Glib::RefPtr<Gtk::ToggleAction> duck_mask_radius;
-       Glib::RefPtr<Gtk::ToggleAction> duck_mask_width;
-       Glib::RefPtr<Gtk::ToggleAction> duck_mask_angle;
+       Glib::RefPtr<Gtk::ToggleAction> grid_snap_toggle;
+       Glib::RefPtr<Gtk::ToggleAction> grid_show_toggle;
 
        Gtk::RadioButtonGroup quality_group;
-       
+       Gtk::RadioButtonGroup low_res_pixel_size_group;
+
        Glib::RefPtr<Gtk::ActionGroup> action_group;
 
+       etl::handle<synfigapp::UIInterface> ui_interface_;
+       etl::handle<synfigapp::SelectionManager> selection_manager_;
 
-       etl::handle<sinfgapp::UIInterface> ui_interface_;
-       etl::handle<sinfgapp::SelectionManager> selection_manager_;
-       
        bool is_playing_;
 
        sigc::signal<void> signal_deleted_;
@@ -347,7 +375,6 @@ public:
 
        bool cancel;
 
-
        /*
  -- ** -- D I A L O G S -------------------------------------------------------
        */
@@ -369,18 +396,18 @@ public:
        */
 
 private:
-       
+
        // Constructor is private to force the use of the "create()" constructor
-       CanvasView(etl::loose_handle<Instance> instance,etl::handle<sinfgapp::CanvasInterface> canvas_interface);
+       CanvasView(etl::loose_handle<Instance> instance,etl::handle<synfigapp::CanvasInterface> canvas_interface);
 
        //! Constructor Helper
-       Gtk::Widget* create_layer_tree();
+       // Gtk::Widget* create_layer_tree();
 
        //! Constructor Helper
-       Gtk::Widget* create_children_tree();
+       // Gtk::Widget* create_children_tree();
 
        //! Constructor Helper
-       Gtk::Widget* create_keyframe_tree();
+       // Gtk::Widget* create_keyframe_tree();
 
        //! Constructor Helper
        Gtk::Widget* create_status_bar();
@@ -388,123 +415,134 @@ private:
        //! Constructor Helper - Initializes all of the menus
        void init_menus();
 
-       bool duck_change_param(const sinfg::Point &value,sinfg::Layer::Handle layer, sinfg::String param_name);
+       bool duck_change_param(const synfig::Point &value,synfig::Layer::Handle layer, synfig::String param_name);
 
        void refresh_time_window();
 
        void time_was_changed();
 
-       void refresh_rend_desc();       
-       
+       void refresh_rend_desc();
+
        void toggle_duck_mask(Duckmatic::Type type);
 
        Gtk::Widget *create_work_area();
 
        Gtk::Widget *create_time_bar();
 
+       Gtk::Widget *create_display_bar();
 
+       //! Pop up menu for the bezier (bline, draw) tool (?)
+       void popup_param_menu_bezier(float location, synfigapp::ValueDesc value_desc)
+       { popup_param_menu(value_desc,location,true); }
 
-       void popup_param_menu_bezier(float location, sinfgapp::ValueDesc value_desc)
-       { popup_param_menu(value_desc,location); }
-       
-       void popup_param_menu(sinfgapp::ValueDesc value_desc, float location=0);
-
+       //! Pop up menu for the tools but not the bezier ones.
+       void popup_param_menu(synfigapp::ValueDesc value_desc, float location=0, bool bezier=false);
 
-       void workarea_layer_selected(sinfg::Layer::Handle layer);
+       void workarea_layer_selected(synfig::Layer::Handle layer);
 
-       void selected_layer_color_set(sinfg::Color color);
-               
+       void selected_layer_color_set(synfig::Color color);
 
-
-       void register_layer_type(sinfg::Layer::Book::value_type &lyr,std::map<sinfg::String,Gtk::Menu*>*);
+       void register_layer_type(synfig::Layer::Book::value_type &lyr,std::map<synfig::String,Gtk::Menu*>*);
 
        //! Rebuilds the "new layer" menu
        void build_new_layer_menu(Gtk::Menu &menu);
 
-       void rebuild_ducks_layer_(sinfg::TransformStack& transform_stack, sinfg::Canvas::Handle canvas, std::set<sinfg::Layer::Handle>& selected_list);
+       void rebuild_ducks_layer_(synfig::TransformStack& transform_stack, synfig::Canvas::Handle canvas, std::set<synfig::Layer::Handle>& selected_list);
+
+       void decrease_low_res_pixel_size();
+       void increase_low_res_pixel_size();
+       void toggle_low_res_pixel_flag();
+       void set_quality(int x);
+       void set_onion_skins();
+       void toggle_show_grid();
+       void toggle_snap_grid();
+       void toggle_onion_skin();
 
        /*
  -- ** -- P U B L I C   M E T H O D S -----------------------------------------
        */
 
 public:
-       const sinfg::TransformStack& get_curr_transform_stack()const { return curr_transform_stack; }
+       const synfig::TransformStack& get_curr_transform_stack()const { return curr_transform_stack; }
+
+       const synfig::Rect& get_bbox()const { return bbox; }
 
-       const sinfg::Rect& get_bbox()const { return bbox; }
+       Glib::RefPtr<Glib::ObjectBase> get_ref_obj(const synfig::String& x);
+       Glib::RefPtr<const Glib::ObjectBase> get_ref_obj(const synfig::String& x)const;
+       void set_ref_obj(const synfig::String& x, Glib::RefPtr<Glib::ObjectBase> y);
 
-       Glib::RefPtr<Glib::ObjectBase> get_ref_obj(const sinfg::String& x);
-       Glib::RefPtr<const Glib::ObjectBase> get_ref_obj(const sinfg::String& x)const;
-       void set_ref_obj(const sinfg::String& x, Glib::RefPtr<Glib::ObjectBase> y);
+       Glib::RefPtr<Gtk::TreeModel> get_tree_model(const synfig::String& x);
+       Glib::RefPtr<const Gtk::TreeModel> get_tree_model(const synfig::String& x)const;
+       void set_tree_model(const synfig::String& x, Glib::RefPtr<Gtk::TreeModel> y);
 
-       Glib::RefPtr<Gtk::TreeModel> get_tree_model(const sinfg::String& x);
-       Glib::RefPtr<const Gtk::TreeModel> get_tree_model(const sinfg::String& x)const;
-       void set_tree_model(const sinfg::String& x, Glib::RefPtr<Gtk::TreeModel> y);
+       Gtk::Widget* get_ext_widget(const synfig::String& x);
+       void set_ext_widget(const synfig::String& x, Gtk::Widget* y);
 
-       Gtk::Widget* get_ext_widget(const sinfg::String& x);
-       void set_ext_widget(const sinfg::String& x, Gtk::Widget* y);
-       
-       //std::map<sinfg::String,Gtk::Widget*>& tree_view_book() { return tree_view_book_; }
-       //std::map<sinfg::String,Gtk::Widget*>& ext_widget_book() { return tree_view_book_; }
+       //std::map<synfig::String,Gtk::Widget*>& tree_view_book() { return tree_view_book_; }
+       //std::map<synfig::String,Gtk::Widget*>& ext_widget_book() { return tree_view_book_; }
 
        void popup_main_menu();
 
        Smach& get_smach() { return smach_; }
 
        const Smach& get_smach()const { return smach_; }
-       
+
        Smach::event_result process_event_key(EventKey x);
-       
-       void popup_layer_menu(sinfg::Layer::Handle layer);
+
+       void popup_layer_menu(synfig::Layer::Handle layer);
 
        virtual ~CanvasView();
 
        void set_mode(Mode x) { canvas_interface()->set_mode(x); }
-       
+
        Mode get_mode()const { return canvas_interface()->get_mode(); }
-                               
+
        Gtk::Adjustment &time_adjustment() { return time_adjustment_; }
-       
+
        const Gtk::Adjustment &time_adjustment()const { return time_adjustment_; }
 
        studio::Adjust_Window &time_window_adjustment() { return time_window_adjustment_; }
-       
+
        const studio::Adjust_Window &time_window_adjustment()const { return time_window_adjustment_; }
 
-       etl::handle<sinfgapp::UIInterface> get_ui_interface() { return ui_interface_;}
+       etl::handle<synfigapp::UIInterface> get_ui_interface() { return ui_interface_;}
 
-       etl::handle<sinfgapp::SelectionManager> get_selection_manager() { return selection_manager_; }
+       etl::handle<synfigapp::SelectionManager> get_selection_manager() { return selection_manager_; }
 
        Glib::RefPtr<Gtk::TreeModel> layer_tree_store() { return get_tree_model("layers"); }
-       
+
        Glib::RefPtr<const Gtk::TreeModel> layer_tree_store()const { return get_tree_model("layers"); }
 
        Glib::RefPtr<Gtk::TreeModel> children_tree_store() { return get_tree_model("children"); }
-       
+
        Glib::RefPtr<const Gtk::TreeModel> children_tree_store()const { return get_tree_model("children"); }
 
        Glib::RefPtr<Gtk::TreeModel> keyframe_tree_store() { return get_tree_model("keyframes"); }
-       
+
        Glib::RefPtr<const Gtk::TreeModel> keyframe_tree_store()const { return get_tree_model("keyframes"); }
 
-       void set_time(sinfg::Time t) { canvas_interface_->set_time(t); }
-       
-       sinfg::Time get_time() { return canvas_interface_->get_time(); }
+       void set_time(synfig::Time t) { canvas_interface_->set_time(t); }
 
-       etl::handle<sinfg::Canvas> get_canvas()const { return canvas_interface_->get_canvas(); }
+       synfig::Time get_time() { return canvas_interface_->get_time(); }
+
+       etl::handle<synfig::Canvas> get_canvas()const { return canvas_interface_->get_canvas(); }
 
        etl::handle<Instance> get_instance()const { return instance_; }
 
-       etl::handle<sinfgapp::CanvasInterface> canvas_interface() { return canvas_interface_; }
+       etl::handle<synfigapp::CanvasInterface> canvas_interface() { return canvas_interface_; }
 
-       etl::handle<const sinfgapp::CanvasInterface> canvas_interface()const { return canvas_interface_; }
+       etl::handle<const synfigapp::CanvasInterface> canvas_interface()const { return canvas_interface_; }
 
-       void add_actions_to_menu(Gtk::Menu *menu,   const sinfgapp::Action::ParamList &param_list, sinfgapp::Action::Category category=sinfgapp::Action::CATEGORY_ALL)const;
+       void add_actions_to_menu(Gtk::Menu *menu,   const synfigapp::Action::ParamList &param_list, synfigapp::Action::Category category=synfigapp::Action::CATEGORY_ALL)const;
 
        //! Updates the title of the window
        void update_title();
 
+       //! Closes this document
+       bool close_instance();
+
        //! Closes this canvas view
-       bool close();
+       bool close_view();
 
        //!     Stops the currently executing action
        /*! \see get_cancel_status(), reset_cancel_status(), IsWorking */
@@ -543,62 +581,64 @@ public:
 
        //! \writeme
        void rebuild_ducks();
-       
-       //bool add_to_ducks(sinfgapp::ValueDesc value_desc, sinfg::ParamDesc *param_desc=NULL);
-               
+
+       //bool add_to_ducks(synfigapp::ValueDesc value_desc, synfig::ParamDesc *param_desc=NULL);
+
        //! Starts "playing" the animation in real-time
        void play();
 
        //! Shows the tables (Layer/Children)
        void show_tables();
-       
+
        //! Hides the tables (Layer/Children)
        void hide_tables();
-       
+
        //! Toggles the tables
        void toggle_tables();
 
        //! Gets the table status
        bool tables_are_visible();
-       
+
        //! Shows the time bar
        void show_timebar();
 
        //! Hides the time bar
        void hide_timebar();
 
-       void do_rotoscope_bline();
-
-       void do_rotoscope();
-
-       void do_rotoscope_poly();
-
-       void do_eyedrop();
+       //t Enables or disables interaction with the timebar
+       void set_sensitive_timebar(bool sensitive);
 
        void time_zoom_in();
        void time_zoom_out();
-       
-       void add_layer(sinfg::String x);
-       
+
+       void add_layer(synfig::String x);
+
        void show_keyframe_dialog();
-       
+
        void play_audio(float t);
        void stop_audio();
-       
+
        void image_import();
 
-       void on_waypoint_clicked(sinfgapp::ValueDesc,sinfg::Waypoint, int button);
-       
+       void on_waypoint_clicked_canvasview(synfigapp::ValueDesc,std::set<synfig::Waypoint,std::less<synfig::UniqueID> >, int button);
+
        void preview_option() {on_preview_option();}
-       
+
        void present();
-       
+
+       bool is_playing() { return is_playing_; }
+
+       void update_quality();
+
+
+
        /*
  -- ** -- S I G N A L   T E R M I N A L S -------------------------------------
        */
 
 private:
-       
+
+       void on_select_layers();
        void on_unselect_layers();
 
        void on_input_device_changed(GdkDevice*);
@@ -607,12 +647,12 @@ private:
 
        virtual bool on_focus_in_event(GdkEventFocus*);
        virtual bool on_focus_out_event(GdkEventFocus*);
-       
+
        //bool on_children_tree_event(GdkEvent *event);
 
        bool on_keyframe_tree_event(GdkEvent *event);
 
-       //void on_children_edited_value(const Glib::ustring&path_string,sinfg::ValueBase value);
+       //void on_children_edited_value(const Glib::ustring&path_string,synfig::ValueBase value);
 
        void on_dirty_preview();
 
@@ -621,21 +661,21 @@ private:
        bool on_layer_user_click(int, Gtk::TreeRow, LayerTree::ColumnID);
 
 //     void on_layer_toggle(const Glib::ustring& path_string, Gtk::TreeModelColumn<bool> column);
-       
-       void on_mode_changed(sinfgapp::CanvasInterface::Mode mode);
 
-//     void on_layer_waypoint_clicked(const Glib::ustring &, sinfg::ValueNode_Animated::WaypointList::iterator);
-       
-       //void on_children_waypoint_clicked(const Glib::ustring &, sinfg::ValueNode_Animated::WaypointList::iterator);
+       void on_mode_changed(synfigapp::CanvasInterface::Mode mode);
+
+//     void on_layer_waypoint_clicked(const Glib::ustring &, synfig::ValueNode_Animated::WaypointList::iterator);
+
+       //void on_children_waypoint_clicked(const Glib::ustring &, synfig::ValueNode_Animated::WaypointList::iterator);
 
        void on_waypoint_changed();
-       
+
        void on_waypoint_delete();
 
        void on_refresh_pressed();
 
        void on_id_changed();
-       
+
        void on_time_changed();
 
        /*
@@ -644,7 +684,7 @@ private:
        void on_layer_duplicate_pressed();
        void on_layer_delete_pressed();
        */
-       
+
        void on_keyframe_add_pressed();
 
        void on_keyframe_duplicate_pressed();
@@ -654,40 +694,44 @@ private:
        void on_animate_button_pressed();
 
        void on_keyframe_button_pressed();
-       
+
        void on_preview_option();
        void on_preview_create(const PreviewInfo &);
-       
+
        void on_audio_option();
        void on_audio_file_change(const std::string &f);
-       void on_audio_offset_change(const sinfg::Time &t);
-       
+       void on_audio_offset_change(const synfig::Time &t);
+
        void on_audio_file_notify();
        void on_audio_offset_notify();
-       
-       bool on_duck_changed(const sinfg::Point &value,const sinfgapp::ValueDesc& value_desc);
 
-       void on_layer_toggle(sinfg::Layer::Handle);
+       bool on_duck_changed(const synfig::Point &value,const synfigapp::ValueDesc& value_desc);
+       bool on_duck_angle_changed(const synfig::Angle &rotation,const synfigapp::ValueDesc& value_desc);
 
-       void on_edited_value(sinfgapp::ValueDesc,sinfg::ValueBase);
+       void on_layer_toggle(synfig::Layer::Handle);
 
-       //void on_waypoint_clicked(sinfgapp::ValueDesc,sinfg::ValueNode_Animated::WaypointList::iterator, int button);
+       void on_edited_value(synfigapp::ValueDesc,synfig::ValueBase);
 
        void on_drop_drag_data_received(const Glib::RefPtr<Gdk::DragContext>& context, int x, int y, const Gtk::SelectionData& selection_data, guint info, guint time);
-       
+
        //void on_audio_play();
        bool on_audio_scrub();
 
+       void on_play_stop_pressed();
+
 protected:
+       bool close_instance_when_safe();
        bool on_delete_event(GdkEventAny* event);
-       
+
        /*
  -- ** -- S T A T I C   P U B L I C   M E T H O D S ---------------------------
        */
 
 public:
-       
-       static etl::handle<studio::CanvasView> create(etl::loose_handle<Instance> instance,etl::handle<sinfg::Canvas> canvas);
+
+       static etl::handle<studio::CanvasView> create(etl::loose_handle<Instance> instance,etl::handle<synfig::Canvas> canvas);
+       static std::list<int>& get_pixel_sizes();
+
 }; // END of class CanvasView
 
 }; // END of namespace studio