1 /* === S I N F G =========================================================== */
3 ** \brief Template File
5 ** $Id: statemanager.cpp,v 1.1.1.1 2005/01/07 03:34:36 darco Exp $
8 ** Copyright (c) 2002 Robert B. Quattlebaum Jr.
10 ** This software and associated documentation
11 ** are CONFIDENTIAL and PROPRIETARY property of
12 ** the above-mentioned copyright holder.
14 ** You may not copy, print, publish, or in any
15 ** other way distribute this software without
16 ** a prior written agreement with
17 ** the copyright holder.
20 /* ========================================================================= */
22 /* === H E A D E R S ======================================================= */
31 #include "statemanager.h"
32 #include <gtkmm/actiongroup.h>
33 #include <gtkmm/action.h>
34 #include <sinfg/string.h>
40 /* === U S I N G =========================================================== */
44 using namespace sinfg;
45 using namespace studio;
47 /* === M A C R O S ========================================================= */
49 /* === G L O B A L S ======================================================= */
51 /* === P R O C E D U R E S ================================================= */
53 /* === M E T H O D S ======================================================= */
55 StateManager::StateManager():
56 state_group(Gtk::ActionGroup::create()),
57 merge_id(App::ui_manager()->new_merge_id())
59 App::ui_manager()->insert_action_group(get_action_group());
62 StateManager::~StateManager()
64 App::ui_manager()->remove_ui(merge_id);
66 for(;!merge_id_list.empty();merge_id_list.pop_back())
67 App::ui_manager()->remove_ui(merge_id_list.back());
71 StateManager::change_state_(const Smach::state_base *state)
73 App::toolbox->change_state_(state);
77 StateManager::add_state(const Smach::state_base *state)
79 String name(state->get_name());
81 Glib::RefPtr<Gtk::Action> action(
84 Gtk::StockID("sinfg-"+name),
89 /*action->set_sensitive(false);*/
90 state_group->add(action);
92 action->signal_activate().connect(
94 sigc::mem_fun(*this,&studio::StateManager::change_state_),
99 App::ui_manager()->ensure_update();
101 /*App::ui_manager()->add_ui(
103 "/main-menu/menu-state",
109 String uid_def("<ui><popup action='menu-main'><menu action='menu-state'><menuitem action='state-"+name+"' /></menu></popup></ui>");
110 merge_id_list.push_back(App::ui_manager()->add_ui_from_string(uid_def));
112 App::ui_manager()->ensure_update();
114 App::toolbox->add_state(state);
117 Glib::RefPtr<Gtk::ActionGroup>
118 StateManager::get_action_group()