X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftags%2Fsynfigstudio_0_61_07_rc3%2Fsrc%2Fgtkmm%2Fwidget_distance.cpp;fp=synfig-studio%2Ftags%2Fsynfigstudio_0_61_07_rc3%2Fsrc%2Fgtkmm%2Fwidget_distance.cpp;h=32c84dfabc775cf87f55ef41c1d574a137683b33;hb=1f5a0e6a86f9cf4798b6e1fb8dfcb4b6e84beb5d;hp=0000000000000000000000000000000000000000;hpb=0e729dddd753ed872265ba82c0089bc55e64bf55;p=synfig.git diff --git a/synfig-studio/tags/synfigstudio_0_61_07_rc3/src/gtkmm/widget_distance.cpp b/synfig-studio/tags/synfigstudio_0_61_07_rc3/src/gtkmm/widget_distance.cpp new file mode 100644 index 0000000..32c84df --- /dev/null +++ b/synfig-studio/tags/synfigstudio_0_61_07_rc3/src/gtkmm/widget_distance.cpp @@ -0,0 +1,102 @@ +/* === S Y N F I G ========================================================= */ +/*! \file widget_distance.cpp +** \brief Template File +** +** $Id$ +** +** \legal +** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley +** +** 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 +#include +#include "widget_distance.h" +#include "app.h" + +#endif + +/* === U S I N G =========================================================== */ + +using namespace std; +//using namespace etl; +using namespace synfig; +using namespace studio; + +/* === M A C R O S ========================================================= */ + +#if ! defined(_) +#define _(x) (x) +#endif + +/* === G L O B A L S ======================================================= */ + +/* === P R O C E D U R E S ================================================= */ + +/* === M E T H O D S ======================================================= */ + +Widget_Distance::Widget_Distance(): + Gtk::SpinButton(0.05,5), + distance_(1, Distance::SYSTEM_POINTS), + adjustment(0,-100000000,100000000,1,1,1) +// adjustment(0,-100000000,100000000,1,2,0) +{ + set_adjustment(adjustment); + set_numeric(false); +} + +Widget_Distance::~Widget_Distance() +{ +} + +int +Widget_Distance::on_input(double* new_value) +{ + distance_=synfig::String(get_text()); + *new_value=distance_.get(); + return 1; +} + +bool +Widget_Distance::on_output() +{ + try{ + distance_=get_adjustment()->get_value(); + set_text(distance_.get_string(get_digits())); + } catch (...) { /* synfig::error("Widget_Distance::on_output(): Caught something..."); */ } + return true; +} + +void +Widget_Distance::set_value(const synfig::Distance &data) +{ + distance_=data; + get_adjustment()->set_value(distance_.get()); +} + +synfig::Distance +Widget_Distance::get_value() const +{ + distance_=get_adjustment()->get_value(); + return distance_; +}