zoomdial.h \
framedial.h \
keyframedial.h \
- toggleducksdial.h
+ toggleducksdial.h \
+ resolutiondial.h
OTHER_CC = \
main.cpp \
zoomdial.cpp \
framedial.cpp \
keyframedial.cpp \
- toggleducksdial.cpp
+ toggleducksdial.cpp \
+ resolutiondial.cpp
INCLUDES = \
-I$(top_srcdir)/src
children_tree=0;
duck_refresh_flag=true;
toggling_ducks_=false;
+ changing_resolution_=false;
smach_.set_default_state(&state_normal);
CanvasView::create_display_bar()
{
displaybar = manage(new class Gtk::Table(1, 1, false));
+
// Setup the ToggleDuckDial widget
toggleducksdial = Gtk::manage(new class ToggleDucksDial());
);
toggleducksdial->show();
+ // Set up the ResolutionDial widget
+
+ resolutiondial=Gtk::manage(new class ResolutionDial());
+
+ resolutiondial->update_lowres(work_area->get_low_resolution_flag());
+ resolutiondial->signal_increase_resolution().connect(
+ sigc::mem_fun(*this, &studio::CanvasView::decrease_low_res_pixel_size));
+ resolutiondial->signal_decrease_resolution().connect(
+ sigc::mem_fun(*this, &studio::CanvasView::increase_low_res_pixel_size));
+ resolutiondial->signal_use_low_resolution().connect(
+ sigc::mem_fun(*this, &studio::CanvasView::toggle_low_res_pixel_flag));
+ resolutiondial->show();
+
+ displaybar->attach(*resolutiondial, 1, 2, 0, 1, Gtk::SHRINK, Gtk::SHRINK);
displaybar->attach(*toggleducksdial, 0, 1, 0, 1, Gtk::SHRINK, Gtk::SHRINK);
displaybar->show();
action = Gtk::ToggleAction::create("toggle-low-res", _("Use Low-Res"));
action->set_active(work_area->get_low_resolution_flag());
- action_group->add(action, sigc::mem_fun(*work_area, &studio::WorkArea::toggle_low_resolution_flag));
+ action_group->add(action, sigc::mem_fun(*this, &studio::CanvasView::toggle_low_res_pixel_flag));
action = Gtk::ToggleAction::create("toggle-onion-skin", _("Show Onion Skin"));
action->set_active(work_area->get_onion_skin());
void
CanvasView::decrease_low_res_pixel_size()
{
+ if(changing_resolution_)
+ return;
+ changing_resolution_=true;
list<int> sizes = CanvasView::get_pixel_sizes();
int pixel_size = work_area->get_low_res_pixel_size();
-
for (list<int>::iterator iter = sizes.begin(); iter != sizes.end(); iter++)
if (*iter == pixel_size)
{
}
break;
}
+ // Update the "toggle-low-res" action
+ Glib::RefPtr<Gtk::ToggleAction> action = Glib::RefPtr<Gtk::ToggleAction>::cast_dynamic(action_group->get_action("toggle-low-res"));
+ action->set_active(work_area->get_low_resolution_flag());
+ // Update toggle low res button
+ resolutiondial->update_lowres(work_area->get_low_resolution_flag());
+ changing_resolution_=false;
}
void
CanvasView::increase_low_res_pixel_size()
{
+ if(changing_resolution_)
+ return;
+ changing_resolution_=true;
list<int> sizes = CanvasView::get_pixel_sizes();
int pixel_size = work_area->get_low_res_pixel_size();
-
if (!work_area->get_low_resolution_flag())
{
+ // We were using "hi res" so change it to low res.
work_area->set_low_resolution_flag(true);
+ // Update the "toggle-low-res" action
+ Glib::RefPtr<Gtk::ToggleAction> action = Glib::RefPtr<Gtk::ToggleAction>::cast_dynamic(action_group->get_action("toggle-low-res"));
+ action->set_active(true);
+ // Update the toggle low res button
+ resolutiondial->update_lowres(true);
+ changing_resolution_=false;
return;
}
}
break;
}
+ // Update the "toggle-low-res" action
+ Glib::RefPtr<Gtk::ToggleAction> action = Glib::RefPtr<Gtk::ToggleAction>::cast_dynamic(action_group->get_action("toggle-low-res"));
+ action->set_active(work_area->get_low_resolution_flag());
+ // Update toggle low res button
+ resolutiondial->update_lowres(work_area->get_low_resolution_flag());
+ changing_resolution_=false;
+}
+
+void
+CanvasView::toggle_low_res_pixel_flag()
+{
+ if(changing_resolution_)
+ return;
+ changing_resolution_=true;
+ work_area->toggle_low_resolution_flag();
+ // Update the toggle low res button
+ resolutiondial->update_lowres(work_area->get_low_resolution_flag());
+ // Update the "toggle-low-res" action
+ Glib::RefPtr<Gtk::ToggleAction> action = Glib::RefPtr<Gtk::ToggleAction>::cast_dynamic(action_group->get_action("toggle-low-res"));
+ action->set_active(work_area->get_low_resolution_flag());
+ changing_resolution_=false;
}
void
#include "dialog_keyframe.h"
#include "framedial.h"
#include "toggleducksdial.h"
+#include "resolutiondial.h"
#include "duckmatic.h"
#include <gtkmm/scale.h>
FrameDial *framedial;
ToggleDucksDial *toggleducksdial;
bool toggling_ducks_;
+ ResolutionDial *resolutiondial;
+ bool changing_resolution_;
//! Shows current time and allows edition
void decrease_low_res_pixel_size();
void increase_low_res_pixel_size();
+ void toggle_low_res_pixel_flag();
/*
-- ** -- P U B L I C M E T H O D S -----------------------------------------
--- /dev/null
+/* === S Y N F I G ========================================================= */
+/*! \file resolutiondial.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 <config.h>
+#endif
+
+#include "resolutiondial.h"
+#include <gtkmm/image.h>
+#include <gtkmm/stock.h>
+
+#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 ======================================================= */
+
+ResolutionDial::ResolutionDial(): Gtk::Table(1, 3, false)
+{
+ Gtk::IconSize iconsize = Gtk::IconSize::from_name("synfig-small_icon");
+
+ increase_resolution = create_icon(iconsize, Gtk::Stock::ADD, _("Increase Display Resolution"));
+ decrease_resolution = create_icon(iconsize, Gtk::Stock::REMOVE, _("Decrease Display Resolution"));
+ use_low_resolution = create_check(_("Low Res"), _("Use Low Resolution when enabled"));
+
+ attach(*decrease_resolution, 0, 1, 0, 1, Gtk::SHRINK, Gtk::SHRINK, 0, 0);
+ attach(*use_low_resolution, 1, 2, 0, 1, Gtk::SHRINK, Gtk::SHRINK, 0, 0);
+ attach(*increase_resolution, 2, 3, 0, 1, Gtk::SHRINK, Gtk::SHRINK, 0, 0);
+}
+
+Gtk::Button *
+ResolutionDial::create_icon(Gtk::IconSize size, const Gtk::BuiltinStockID & stockid,
+ const char * tooltip)
+{
+ Gtk::Button *button = manage(new class Gtk::Button());
+ Gtk::Image *icon = manage(new Gtk::Image(stockid, size));
+ 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;
+}
+
+Gtk::CheckButton *
+ResolutionDial::create_check(const char *label, const char * tooltip)
+{
+ Gtk::CheckButton *cbutton = manage(new class Gtk::CheckButton());
+ cbutton->set_label(label);
+ tooltips.set_tip(*cbutton, tooltip);
+ cbutton->show();
+
+ return cbutton;
+}
+
+void
+ResolutionDial::update_lowres(bool flag)
+{
+ use_low_resolution->set_active(flag);
+}
--- /dev/null
+/* === S Y N F I G ========================================================= */
+/*! \file resolutiondial.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_RESOLUTIONDIAL_H
+#define __SYNFIG_STUDIO_RESOLUTIONDIAL_H
+
+/* === H E A D E R S ======================================================= */
+
+#include <gtkmm/tooltips.h>
+#include <gtkmm/table.h>
+#include <gtkmm/checkbutton.h>
+#include "duckmatic.h"
+
+#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 ResolutionDial : public Gtk::Table
+{
+ Gtk::Tooltips tooltips;
+
+ Gtk::Button *increase_resolution;
+ Gtk::Button *decrease_resolution;
+ Gtk::CheckButton *use_low_resolution;
+
+ Gtk::Button *create_icon(Gtk::IconSize size, const Gtk::BuiltinStockID & stockid, const char * tooltip);
+ Gtk::CheckButton *create_check(const char *text, const char *tooltip);
+
+public:
+
+ ResolutionDial();
+
+ void update_lowres(bool flag);
+ Glib::SignalProxy0<void> signal_increase_resolution() { return increase_resolution->signal_clicked(); }
+ Glib::SignalProxy0<void> signal_decrease_resolution() { return decrease_resolution->signal_clicked(); }
+ Glib::SignalProxy0<void> signal_use_low_resolution() { return use_low_resolution-> signal_toggled(); }
+
+}; // END of class ResolutionDial
+
+}; // END of namespace studio
+
+
+/* === E N D =============================================================== */
+
+#endif