From 29dc41d9953bf08068615a30abcf687615ffdb08 Mon Sep 17 00:00:00 2001 From: Carlos Lopez Date: Sun, 21 Jun 2009 11:57:18 +0200 Subject: [PATCH] Add Keyframe Dial initial layout --- synfig-studio/trunk/src/gtkmm/Makefile.am | 6 +- synfig-studio/trunk/src/gtkmm/canvasview.cpp | 12 +++- synfig-studio/trunk/src/gtkmm/keyframedial.cpp | 77 ++++++++++++++++++++++++++ synfig-studio/trunk/src/gtkmm/keyframedial.h | 70 +++++++++++++++++++++++ 4 files changed, 161 insertions(+), 4 deletions(-) create mode 100644 synfig-studio/trunk/src/gtkmm/keyframedial.cpp create mode 100644 synfig-studio/trunk/src/gtkmm/keyframedial.h diff --git a/synfig-studio/trunk/src/gtkmm/Makefile.am b/synfig-studio/trunk/src/gtkmm/Makefile.am index 4742357..39acf8c 100644 --- a/synfig-studio/trunk/src/gtkmm/Makefile.am +++ b/synfig-studio/trunk/src/gtkmm/Makefile.am @@ -293,7 +293,8 @@ OTHER_HH = \ valuelink.h \ workarea.h \ zoomdial.h \ - framedial.h + framedial.h \ + keyframedial.h OTHER_CC = \ main.cpp \ @@ -324,7 +325,8 @@ OTHER_CC = \ valuelink.cpp \ workarea.cpp \ zoomdial.cpp \ - framedial.cpp + framedial.cpp \ + keyframedial.cpp INCLUDES = \ diff --git a/synfig-studio/trunk/src/gtkmm/canvasview.cpp b/synfig-studio/trunk/src/gtkmm/canvasview.cpp index 23407b0..89bad1b 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 "framedial.h" +#include "keyframedial.h" #include #include @@ -1011,6 +1012,12 @@ CanvasView::create_time_bar() ); framedial->show(); + //Setup the KeyFrameDial widget + KeyFrameDial *keyframedial = Gtk::manage(new class KeyFrameDial()); + keyframedial->signal_seek_prev_keyframe().connect(sigc::mem_fun(*canvas_interface().get(), &synfigapp::CanvasInterface::jump_to_prev_keyframe)); + keyframedial->signal_seek_next_keyframe().connect(sigc::mem_fun(*canvas_interface().get(), &synfigapp::CanvasInterface::jump_to_next_keyframe)); + keyframedial->show(); + Gtk::Table *table = manage(new class Gtk::Table(4, 4, false)); timebar = table; @@ -1020,8 +1027,9 @@ CanvasView::create_time_bar() table->attach(*current_time_widget, 0, 1, 1, 2, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0); table->attach(*timeslider, 1, 4, 1, 2, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK); table->attach(*time_window_scroll, 1, 4, 2, 3, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK); - table->attach(*animatebutton, 2, 3, 3, 4, Gtk::FILL, Gtk::SHRINK); - table->attach(*keyframebutton, 3, 4, 3, 4, Gtk::FILL, Gtk::SHRINK); + table->attach(*keyframedial, 0, 1, 3, 4, Gtk::SHRINK, Gtk::SHRINK); + table->attach(*animatebutton, 2, 3, 3, 4, Gtk::SHRINK, Gtk::SHRINK); + table->attach(*keyframebutton, 1, 2, 3, 4, Gtk::SHRINK, Gtk::SHRINK); table->show(); diff --git a/synfig-studio/trunk/src/gtkmm/keyframedial.cpp b/synfig-studio/trunk/src/gtkmm/keyframedial.cpp new file mode 100644 index 0000000..ba60717 --- /dev/null +++ b/synfig-studio/trunk/src/gtkmm/keyframedial.cpp @@ -0,0 +1,77 @@ +/* === S Y N F I G ========================================================= */ +/*! \file keyframedial.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 "keyframedial.h" +#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 ======================================================= */ + +KeyFrameDial::KeyFrameDial(): Gtk::Table(1, 2, false) +{ + Gtk::IconSize iconsize = Gtk::IconSize::from_name("synfig-small_icon"); + + seek_prev_keyframe = create_icon(iconsize, GTK_STOCK_GO_BACK, _("Previous KeyFrame")); + seek_next_keyframe = create_icon(iconsize, GTK_STOCK_GO_FORWARD, _("Next KeyFrame")); + + attach(*seek_prev_keyframe, 0, 1, 0, 1, Gtk::SHRINK, Gtk::SHRINK, 0, 0); + attach(*seek_next_keyframe, 1, 2, 0, 1, Gtk::SHRINK, Gtk::SHRINK, 0, 0); +} + +Gtk::Button * +KeyFrameDial::create_icon(Gtk::IconSize iconsize, const char * stockid, + const char * tooltip) +{ + Gtk::Button *button = manage(new class Gtk::Button()); + Gtk::Image *icon = manage(new Gtk::Image(Gtk::StockID(stockid), iconsize)); + button->add(*icon); + tooltips.set_tip(*button, tooltip); + icon->set_padding(0, 0); + icon->show(); + button->set_relief(Gtk::RELIEF_NONE); + button->show(); + + return button; +} diff --git a/synfig-studio/trunk/src/gtkmm/keyframedial.h b/synfig-studio/trunk/src/gtkmm/keyframedial.h new file mode 100644 index 0000000..6636590 --- /dev/null +++ b/synfig-studio/trunk/src/gtkmm/keyframedial.h @@ -0,0 +1,70 @@ +/* === S Y N F I G ========================================================= */ +/*! \file keyframedial.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_KEYFRAMEDIAL_H +#define __SYNFIG_STUDIO_KEYFRAMEDIAL_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 KeyFrameDial : public Gtk::Table +{ + Gtk::Tooltips tooltips; + + Gtk::Button *seek_prev_keyframe; + Gtk::Button *seek_next_keyframe; + + Gtk::Button *create_icon(Gtk::IconSize iconsize, const char * stockid, const char * tooltip); + +public: + + KeyFrameDial(); + Glib::SignalProxy0 signal_seek_prev_keyframe() { return seek_prev_keyframe->signal_clicked(); } + Glib::SignalProxy0 signal_seek_next_keyframe() { return seek_next_keyframe->signal_clicked(); } + +}; // END of class KeyFrameDial + +}; // END of namespace studio + + +/* === E N D =============================================================== */ + +#endif -- 2.7.4