Fawkes API  Fawkes Development Version
skillgui.h
00001 
00002 /***************************************************************************
00003  *  skillgui.h - Skill GUI
00004  *
00005  *  Created: Mon Nov 03 13:35:34 2008
00006  *  Copyright  2008  Tim Niemueller [www.niemueller.de]
00007  *
00008  ****************************************************************************/
00009 
00010 /*  This program is free software; you can redistribute it and/or modify
00011  *  it under the terms of the GNU General Public License as published by
00012  *  the Free Software Foundation; either version 2 of the License, or
00013  *  (at your option) any later version.
00014  *
00015  *  This program is distributed in the hope that it will be useful,
00016  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00017  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00018  *  GNU Library General Public License for more details.
00019  *
00020  *  Read the full text in the LICENSE.GPL file in the doc directory.
00021  */
00022 
00023 #ifndef __TOOLS_SKILLGUI_SKILLGUI_H_
00024 #define __TOOLS_SKILLGUI_SKILLGUI_H_
00025 
00026 #include <gui_utils/connection_dispatcher.h>
00027 
00028 #include <gtkmm.h>
00029 #include <libglademm/xml.h>
00030 #ifdef HAVE_GCONFMM
00031 #  include <gconfmm.h>
00032 #  define GCONF_PREFIX "/apps/fawkes/skillgui"
00033 #endif
00034 
00035 #include <interfaces/SkillerInterface.h>
00036 #include <interfaces/SkillerDebugInterface.h>
00037 
00038 namespace fawkes {
00039   class BlackBoard;
00040   class InterfaceDispatcher;
00041   class LogView;
00042   class Throbber;
00043   class PluginTreeView;
00044 }
00045 
00046 #ifdef USE_PAPYRUS
00047 class SkillGuiGraphViewport;
00048 #else
00049 class SkillGuiGraphDrawingArea;
00050 #endif
00051 
00052 class SkillGuiGtkWindow : public Gtk::Window
00053 {
00054  public:  
00055   SkillGuiGtkWindow(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml> &refxml);
00056   ~SkillGuiGtkWindow();
00057 
00058  private:
00059   void close_bb();
00060   void send_graphdir_message(fawkes::SkillerDebugInterface *iface,
00061                              fawkes::SkillerDebugInterface::GraphDirectionEnum gd);
00062 
00063   void on_connection_clicked();
00064   void on_connect();
00065   void on_disconnect();
00066   void on_exec_clicked();
00067   void on_skiller_data_changed();
00068   void on_skdbg_data_changed();
00069   void on_agdbg_data_changed();
00070   void on_exit_clicked();
00071   void on_controller_clicked();
00072   void on_stop_clicked();
00073   void on_config_changed();
00074   void on_contexec_toggled();
00075   void on_skill_changed();
00076   void on_graphupd_clicked();
00077   void on_update_disabled();
00078   void on_recording_toggled();
00079   void on_graphdir_clicked();
00080   void on_graphdir_changed(fawkes::SkillerDebugInterface::GraphDirectionEnum gd);
00081   void on_graphcolor_toggled();
00082 
00083  private:
00084   class SkillStringRecord : public Gtk::TreeModelColumnRecord
00085   {
00086    public:
00087     SkillStringRecord();
00088     Gtk::TreeModelColumn<Glib::ustring> skillstring;
00089   };
00090   SkillStringRecord __sks_record;
00091 
00092 
00093   fawkes::BlackBoard *bb;
00094 
00095   fawkes::ConnectionDispatcher connection_dispatcher;
00096   fawkes::InterfaceDispatcher  *__skiller_ifd;
00097   fawkes::InterfaceDispatcher  *__skdbg_ifd;
00098   fawkes::InterfaceDispatcher  *__agdbg_ifd;
00099 
00100   Gtk::ToolButton        *tb_connection;
00101   Gtk::ToolButton        *tb_exit;
00102   Gtk::Button            *but_exec;
00103   Gtk::Button            *but_stop;
00104   Gtk::ToggleButton      *but_continuous;
00105   Gtk::Button            *but_clearlog;
00106   Gtk::ComboBoxEntry     *cbe_skillstring;
00107   Gtk::Label             *lab_status;
00108   Gtk::Label             *lab_alive;
00109   Gtk::Label             *lab_continuous;
00110   Gtk::Label             *lab_skillstring;
00111   Gtk::Label             *lab_error;
00112   Gtk::ScrolledWindow    *scw_graph;
00113   Gtk::Notebook          *ntb_tabs;
00114   Gtk::DrawingArea       *drw_graph;
00115   Gtk::ToggleToolButton  *tb_skiller;
00116   Gtk::ToggleToolButton  *tb_agent;
00117   Gtk::ComboBoxText      *cb_graphlist;
00118   Gtk::ToolItem          *tb_graphlist;
00119   Gtk::ToolButton        *tb_graphsave;
00120   Gtk::ToolButton        *tb_graphopen;
00121   Gtk::ToolButton        *tb_graphupd;
00122   Gtk::ToggleToolButton  *tb_graphrecord;
00123   Gtk::ToolButton        *tb_controller;
00124   Gtk::ToolButton        *tb_zoomin;
00125   Gtk::ToolButton        *tb_zoomout;
00126   Gtk::ToolButton        *tb_zoomfit;
00127   Gtk::ToolButton        *tb_zoomreset;
00128 
00129   Gtk::MenuToolButton    *tb_graphdir;
00130   Gtk::ToggleToolButton  *tb_graphcolored;
00131   Gtk::MenuItem          *mi_graphdir;
00132   Gtk::MenuItem          *mi_bottom_top;
00133   Gtk::MenuItem          *mi_top_bottom;
00134   Gtk::MenuItem          *mi_left_right;
00135   Gtk::MenuItem          *mi_right_left;
00136 
00137   Glib::RefPtr<Gtk::ListStore> __sks_list;
00138 
00139 #ifdef HAVE_GCONFMM
00140   Glib::RefPtr<Gnome::Conf::Client> __gconf;
00141 #endif
00142 
00143 #ifdef USE_PAPYRUS
00144   SkillGuiGraphViewport  *pvp_graph;
00145 #else
00146   SkillGuiGraphDrawingArea *gda;
00147 #endif
00148 
00149   fawkes::SkillerInterface *__skiller_if;
00150   fawkes::SkillerDebugInterface *__skdbg_if;
00151   fawkes::SkillerDebugInterface *__agdbg_if;
00152 
00153   fawkes::LogView         *__logview;
00154   fawkes::Throbber        *__throbber;
00155   fawkes::PluginTreeView  *__trv_plugins;
00156 
00157   bool __update_graph;
00158 };
00159 
00160 #endif