X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftags%2Fsynfigstudio_0_61_07_rc3%2Fsrc%2Fgtkmm%2Fwidget_enum.cpp;fp=synfig-studio%2Ftags%2Fsynfigstudio_0_61_07_rc3%2Fsrc%2Fgtkmm%2Fwidget_enum.cpp;h=a4d91616e4528b9fc36555c0326143e31886b8c7;hb=1f5a0e6a86f9cf4798b6e1fb8dfcb4b6e84beb5d;hp=0000000000000000000000000000000000000000;hpb=0e729dddd753ed872265ba82c0089bc55e64bf55;p=synfig.git diff --git a/synfig-studio/tags/synfigstudio_0_61_07_rc3/src/gtkmm/widget_enum.cpp b/synfig-studio/tags/synfigstudio_0_61_07_rc3/src/gtkmm/widget_enum.cpp new file mode 100644 index 0000000..a4d9161 --- /dev/null +++ b/synfig-studio/tags/synfigstudio_0_61_07_rc3/src/gtkmm/widget_enum.cpp @@ -0,0 +1,113 @@ +/* === S Y N F I G ========================================================= */ +/*! \file widget_enum.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 "widget_enum.h" +#include +#include + +#endif + +/* === U S I N G =========================================================== */ + +using namespace std; +using namespace etl; +using namespace synfig; +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 ======================================================= */ + +Widget_Enum::Widget_Enum() +{ +} + +Widget_Enum::~Widget_Enum() +{ +} + +void +Widget_Enum::set_param_desc(const synfig::ParamDesc &x) +{ + param_desc=x; + //refresh(); +} + +void +Widget_Enum::set_value_(int data) +{ + set_value(data); + activate(); +} + +void +Widget_Enum::refresh() +{ + enum_menu = manage(new class Gtk::Menu()); + + std::list enum_list=param_desc.get_enum_list(); + std::list::iterator iter; + + String name=strprintf("(%d)",value); + + for(iter=enum_list.begin();iter!=enum_list.end();iter++) + if(iter->value!=value) + enum_menu->items().push_back(Gtk::Menu_Helpers::MenuElem(iter->local_name, + sigc::bind(sigc::mem_fun(*this,&Widget_Enum::set_value_),iter->value) + )); + else + name=iter->local_name; + + enum_menu->items().push_front(Gtk::Menu_Helpers::MenuElem(name)); + + set_menu(*enum_menu); +} + +void +Widget_Enum::set_value(int data) +{ + value=data; + + refresh(); + + set_history(0); +} + +int +Widget_Enum::get_value() const +{ + return value; +}