graph_drawing_area.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef __TOOLS_SKILLGUI_GRAPH_DRAWING_AREA_H_
00024 #define __TOOLS_SKILLGUI_GRAPH_DRAWING_AREA_H_
00025
00026 #include <gtkmm.h>
00027
00028 #include <gvc.h>
00029 #include <gvcjob.h>
00030
00031 #include "gvplugin_skillgui_cairo.h"
00032
00033 class SkillGuiGraphDrawingArea
00034 : public Gtk::DrawingArea,
00035 public SkillGuiCairoRenderInstructor
00036 {
00037 public:
00038
00039 SkillGuiGraphDrawingArea();
00040 ~SkillGuiGraphDrawingArea();
00041
00042 void save();
00043 void open();
00044 bool set_recording(bool recording);
00045
00046 void zoom_in();
00047 void zoom_out();
00048 void zoom_fit();
00049 void zoom_reset();
00050
00051 void set_graph_fsm(std::string fsm_name);
00052 void set_graph(std::string graph);
00053
00054 void set_bb(double bbw, double bbh);
00055 void set_pad(double pad_x, double pad_y);
00056 void set_translation(double tx, double ty);
00057 void set_scale(double scale);
00058 bool scale_override();
00059 double get_scale();
00060 void get_translation(double &tx, double &ty);
00061 void get_dimensions(double &width, double &height);
00062 void get_pad(double &pad_x, double &pad_y);
00063 Cairo::RefPtr<Cairo::Context> get_cairo();
00064
00065 bool get_update_graph();
00066 void set_update_graph(bool update);
00067
00068 sigc::signal<void> signal_update_disabled();
00069
00070 protected:
00071 virtual bool on_expose_event(GdkEventExpose* event);
00072 virtual bool on_scroll_event(GdkEventScroll *event);
00073 virtual bool on_button_press_event(GdkEventButton *event);
00074 virtual bool on_motion_notify_event(GdkEventMotion *event);
00075
00076 private:
00077 void save_dotfile(const char *filename);
00078
00079 private:
00080 Cairo::RefPtr<Cairo::Context> __cairo;
00081 Gtk::FileChooserDialog *__fcd_save;
00082 Gtk::FileChooserDialog *__fcd_open;
00083 Gtk::FileChooserDialog *__fcd_recording;
00084 Gtk::FileFilter *__filter_pdf;
00085 Gtk::FileFilter *__filter_svg;
00086 Gtk::FileFilter *__filter_png;
00087 Gtk::FileFilter *__filter_dot;
00088
00089 sigc::signal<void> __signal_update_disabled;
00090
00091 GVC_t *__gvc;
00092
00093 std::string __graph_fsm;
00094 std::string __graph;
00095 std::string __nonupd_graph;
00096 std::string __nonupd_graph_fsm;
00097
00098 double __bbw;
00099 double __bbh;
00100 double __pad_x;
00101 double __pad_y;
00102 double __translation_x;
00103 double __translation_y;
00104 double __scale;
00105
00106 double __last_mouse_x;
00107 double __last_mouse_y;
00108
00109 bool __scale_override;
00110 bool __update_graph;
00111
00112
00113 bool __recording;
00114 std::string __record_directory;
00115 };
00116
00117 #endif