rename HklPseudoAxisEngine -> HklEngine
[hkl.git] / gui / hkl-gui-pseudoaxes.h
blob2670fc2926df83db0bb62a51c0ad75ffcddc4de7
1 /* This file is part of the hkl library.
3 * The hkl library is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 3 of the License, or
6 * (at your option) any later version.
8 * The hkl library is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
13 * You should have received a copy of the GNU General Public License
14 * along with the hkl library. If not, see <http://www.gnu.org/licenses/>.
16 * Copyright (C) 2003-2010 Synchrotron SOLEIL
17 * L'Orme des Merisiers Saint-Aubin
18 * BP 48 91192 GIF-sur-YVETTE CEDEX
20 * Authors: Picca Frédéric-Emmanuel <picca@synchrotron-soleil.fr>
22 #ifndef __PSEUDO_AXES_FRAME_H__
23 #define __PSEUDO_AXES_FRAME_H__
25 #include <gtkmm.h>
26 #include "hkl.h"
28 class ModeModelColumns : public Gtk::TreeModel::ColumnRecord
30 public:
31 Gtk::TreeModelColumn<Glib::ustring> name;
32 Gtk::TreeModelColumn<HklMode *> mode;
34 ModeModelColumns()
36 this->add(name);
37 this->add(mode);
41 class PseudoAxisModelColumns : public Gtk::TreeModel::ColumnRecord
43 public:
44 Gtk::TreeModelColumn<Glib::ustring> name;
45 Gtk::TreeModelColumn<double> value;
46 Gtk::TreeModelColumn<HklParameter *> parameter;
48 PseudoAxisModelColumns()
50 this->add(name);
51 this->add(value);
52 this->add(parameter);
56 class ModeParameterModelColumns : public Gtk::TreeModel::ColumnRecord
58 public:
59 Gtk::TreeModelColumn<Glib::ustring> name;
60 Gtk::TreeModelColumn<double> value;
61 Gtk::TreeModelColumn<HklParameter *> parameter;
63 ModeParameterModelColumns()
65 this->add(name);
66 this->add(value);
67 this->add(parameter);
71 class PseudoAxesFrame
73 public:
74 PseudoAxesFrame(HklEngine *engine);
75 Gtk::Frame &frame(void) {return *_frame1;}
76 virtual ~PseudoAxesFrame(void);
78 void update(void);
80 // signals emitted
81 typedef sigc::signal<void> type_signal_changed;
82 type_signal_changed signal_changed(void);
84 // callback
85 protected:
86 void on_combobox1_changed(void);
87 virtual void on_cell_TreeView_pseudoAxis_value_edited(Glib::ustring const &,
88 Glib::ustring const &);
89 virtual void on_cell_treeview2_mode_parameter_value_edited(Glib::ustring const &,
90 Glib::ustring const &);
91 void on_button1_clicked(void);
92 void on_button2_clicked(void);
94 // non callback
95 protected:
96 void updateMode(void);
97 void updatePseudoAxis(void);
98 void updateModeParameters(void);
100 type_signal_changed _signal_changed;
102 // members
103 protected:
104 HklEngine *_engine;
106 // widget
107 Glib::RefPtr<Gtk::Builder> _refGlade;
108 Gtk::Frame *_frame1;
109 Gtk::Label *_label2;
110 Gtk::ComboBox *_combobox1;
111 Gtk::Expander *_expander1;
112 Gtk::TreeView *_treeview1;
113 Gtk::TreeView *_treeview2;
114 Gtk::Button *_button1;
115 Gtk::Button *_button2;
117 // objects
118 Glib::RefPtr<Gtk::ListStore> _mode_ListStore;
119 Glib::RefPtr<Gtk::ListStore> _pseudoAxis_ListStore;
120 Glib::RefPtr<Gtk::ListStore> _mode_parameter_ListStore;
121 ModeModelColumns _mode_columns;
122 PseudoAxisModelColumns _pseudoAxis_columns;
123 ModeParameterModelColumns _mode_parameter_columns;
126 #endif // __PSEUDO_AXES_FRAME_H__