From c09ee2ffb936c48edffbce2f86813a72592f724b Mon Sep 17 00:00:00 2001 From: Carlos Lopez Date: Wed, 24 Jun 2009 00:26:45 +0200 Subject: [PATCH] Initial trial of toggle ducks dial. Needs re factoring to toggle buttons and place them in the top of the window. --- synfig-studio/trunk/src/gtkmm/Makefile.am | 7 +- synfig-studio/trunk/src/gtkmm/canvasview.cpp | 26 ++++++- synfig-studio/trunk/src/gtkmm/toggleducksdial.cpp | 83 +++++++++++++++++++++++ synfig-studio/trunk/src/gtkmm/toggleducksdial.h | 78 +++++++++++++++++++++ 4 files changed, 190 insertions(+), 4 deletions(-) create mode 100644 synfig-studio/trunk/src/gtkmm/toggleducksdial.cpp create mode 100644 synfig-studio/trunk/src/gtkmm/toggleducksdial.h diff --git a/synfig-studio/trunk/src/gtkmm/Makefile.am b/synfig-studio/trunk/src/gtkmm/Makefile.am index 39acf8c..42cdd55 100644 --- a/synfig-studio/trunk/src/gtkmm/Makefile.am +++ b/synfig-studio/trunk/src/gtkmm/Makefile.am @@ -294,7 +294,8 @@ OTHER_HH = \ workarea.h \ zoomdial.h \ framedial.h \ - keyframedial.h + keyframedial.h \ + toggleducksdial.h OTHER_CC = \ main.cpp \ @@ -326,8 +327,8 @@ OTHER_CC = \ workarea.cpp \ zoomdial.cpp \ framedial.cpp \ - keyframedial.cpp - + keyframedial.cpp \ + toggleducksdial.cpp INCLUDES = \ -I$(top_srcdir)/src diff --git a/synfig-studio/trunk/src/gtkmm/canvasview.cpp b/synfig-studio/trunk/src/gtkmm/canvasview.cpp index a3c42cc..64bf34a 100644 --- a/synfig-studio/trunk/src/gtkmm/canvasview.cpp +++ b/synfig-studio/trunk/src/gtkmm/canvasview.cpp @@ -100,6 +100,7 @@ #include "audiocontainer.h" #include "widget_timeslider.h" #include "keyframedial.h" +#include "toggleducksdial.h" #include #include @@ -1021,7 +1022,29 @@ CanvasView::create_time_bar() keyframedial->show(); keyframebutton=keyframedial->get_lock_button(); - Gtk::Table *table = manage(new class Gtk::Table(5, 3, false)); + // Setup the ToggleDuckDial widget + ToggleDucksDial *toggleducksdial = Gtk::manage(new class ToggleDucksDial()); + toggleducksdial->signal_ducks_position().connect( + sigc::bind(sigc::mem_fun(*this, &studio::CanvasView::toggle_duck_mask),Duck::TYPE_POSITION) + ); + toggleducksdial->signal_ducks_vertex().connect( + sigc::bind(sigc::mem_fun(*this, &studio::CanvasView::toggle_duck_mask),Duck::TYPE_VERTEX) + ); + toggleducksdial->signal_ducks_tangent().connect( + sigc::bind(sigc::mem_fun(*this, &studio::CanvasView::toggle_duck_mask),Duck::TYPE_TANGENT) + ); + toggleducksdial->signal_ducks_radius().connect( + sigc::bind(sigc::mem_fun(*this, &studio::CanvasView::toggle_duck_mask),Duck::TYPE_RADIUS) + ); + toggleducksdial->signal_ducks_width().connect( + sigc::bind(sigc::mem_fun(*this, &studio::CanvasView::toggle_duck_mask),Duck::TYPE_WIDTH) + ); + toggleducksdial->signal_ducks_angle().connect( + sigc::bind(sigc::mem_fun(*this, &studio::CanvasView::toggle_duck_mask),Duck::TYPE_ANGLE) + ); + toggleducksdial->show(); + + Gtk::Table *table = manage(new class Gtk::Table(5, 4, false)); timebar = table; //Attach widgets to the time bar table @@ -1033,6 +1056,7 @@ CanvasView::create_time_bar() table->attach(*keyframedial, 3, 4, 1, 2, Gtk::SHRINK, Gtk::SHRINK); table->attach(*animatebutton, 4, 5, 1, 2, Gtk::SHRINK, Gtk::SHRINK); //table->attach(*keyframebutton, 1, 2, 3, 4, Gtk::SHRINK, Gtk::SHRINK); + table->attach(*toggleducksdial, 0, 5, 0, 1, Gtk::SHRINK, Gtk::SHRINK); table->show(); diff --git a/synfig-studio/trunk/src/gtkmm/toggleducksdial.cpp b/synfig-studio/trunk/src/gtkmm/toggleducksdial.cpp new file mode 100644 index 0000000..b23acde --- /dev/null +++ b/synfig-studio/trunk/src/gtkmm/toggleducksdial.cpp @@ -0,0 +1,83 @@ +/* === S Y N F I G ========================================================= */ +/*! \file toggleducksdial.cpp +** \brief Template File +** +** $Id$ +** +** \legal +** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley +** Copyright (c) 2009 Gerco Ballintijn +** Copyright (c) 2009 Carlos Lopez +** +** 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. +** +** 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 +*/ +/* ========================================================================= */ + +/* === H E A D E R S ======================================================= */ + +#ifdef USING_PCH +# include "pch.h" +#else +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "toggleducksdial.h" +#include +#include + +#endif + +/* === U S I N G =========================================================== */ + +using namespace std; +using namespace studio; + +/* === M A C R O S ========================================================= */ + +/* === G L O B A L S ======================================================= */ + +/* === P R O C E D U R E S ================================================= */ + +/* === M E T H O D S ======================================================= */ + +ToggleDucksDial::ToggleDucksDial(): Gtk::Table(1, 6, false) +{ + Gtk::IconSize iconsize = Gtk::IconSize::from_name("synfig-small_icon"); + + ducks_position = create_label_button(iconsize, "1", _("Toogle position ducks")); + ducks_vertex = create_label_button(iconsize, "2", _("Toogle vertex ducks")); + ducks_tangent = create_label_button(iconsize, "3", _("Toogle tangent ducks")); + ducks_radius = create_label_button(iconsize, "4", _("Toogle radius ducks")); + ducks_width = create_label_button(iconsize, "5", _("Toogle width ducks")); + ducks_angle = create_label_button(iconsize, "6", _("Toogle angle ducks")); + + attach(*ducks_position, 0, 1, 0, 1, Gtk::SHRINK, Gtk::SHRINK, 0, 0); + attach(*ducks_vertex, 1, 2, 0, 1, Gtk::SHRINK, Gtk::SHRINK, 0, 0); + attach(*ducks_tangent, 2, 3, 0, 1, Gtk::SHRINK, Gtk::SHRINK, 0, 0); + attach(*ducks_radius, 3, 4, 0, 1, Gtk::SHRINK, Gtk::SHRINK, 0, 0); + attach(*ducks_width, 4, 5, 0, 1, Gtk::SHRINK, Gtk::SHRINK, 0, 0); + attach(*ducks_angle, 5, 6, 0, 1, Gtk::SHRINK, Gtk::SHRINK, 0, 0); +} + +Gtk::Button * +ToggleDucksDial::create_label_button(Gtk::IconSize iconsize, const char *label, + const char * tooltip) +{ + Gtk::Button *button = manage(new class Gtk::Button()); + button->set_label(label); + tooltips.set_tip(*button, tooltip); + button->set_relief(Gtk::RELIEF_NONE); + button->show(); + + return button; +} diff --git a/synfig-studio/trunk/src/gtkmm/toggleducksdial.h b/synfig-studio/trunk/src/gtkmm/toggleducksdial.h new file mode 100644 index 0000000..510806f --- /dev/null +++ b/synfig-studio/trunk/src/gtkmm/toggleducksdial.h @@ -0,0 +1,78 @@ +/* === S Y N F I G ========================================================= */ +/*! \file toggleducksdial.h +** \brief Template Header +** +** $Id$ +** +** \legal +** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley +** Copyright (c) 2008 Chris Moore +** Copyright (c) 2009 Gerco Ballintijn +** Copyright (c) 2009 Carlos Lopez +** +** 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. +** +** 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 __SYNFIG_STUDIO_TOOGLEDUCKSDIAL_H +#define __SYNFIG_STUDIO_TOOGLEDUCKSDIAL_H + +/* === H E A D E R S ======================================================= */ + +#include +#include +#include + +#include "general.h" + +/* === M A C R O S ========================================================= */ + +/* === T Y P E D E F S ===================================================== */ + +/* === C L A S S E S & S T R U C T S ======================================= */ + +namespace studio +{ + +class ToggleDucksDial : public Gtk::Table +{ + Gtk::Tooltips tooltips; + + Gtk::Button *ducks_position; + Gtk::Button *ducks_vertex; + Gtk::Button *ducks_tangent; + Gtk::Button *ducks_radius; + Gtk::Button *ducks_width; + Gtk::Button *ducks_angle; + + Gtk::Button *create_label_button(Gtk::IconSize iconsize, const char * label, const char * tooltip); + +public: + + ToggleDucksDial(); + Glib::SignalProxy0 signal_ducks_position() { return ducks_position->signal_clicked(); } + Glib::SignalProxy0 signal_ducks_vertex() { return ducks_vertex->signal_clicked(); } + Glib::SignalProxy0 signal_ducks_tangent() { return ducks_tangent->signal_clicked(); } + Glib::SignalProxy0 signal_ducks_radius() { return ducks_radius->signal_clicked(); } + Glib::SignalProxy0 signal_ducks_width() { return ducks_width->signal_clicked(); } + Glib::SignalProxy0 signal_ducks_angle() { return ducks_angle->signal_clicked(); } + +}; // END of class ToggleDucksDial + +}; // END of namespace studio + + +/* === E N D =============================================================== */ + +#endif -- 2.7.4