RTXI  2.4
The Real-Time eXperiment Interface Documentation
default_gui_model.h
Go to the documentation of this file.
1 /*
2  The Real-Time eXperiment Interface (RTXI)
3  Copyright (C) 2011 Georgia Institute of Technology, University of Utah, Weill Cornell Medical College
4 
5  This program is free software: you can redistribute it and/or modify
6  it under the terms of the GNU General Public License as published by
7  the Free Software Foundation, either version 3 of the License, or
8  (at your option) any later version.
9 
10  This program is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU General Public License for more details.
14 
15  You should have received a copy of the GNU General Public License
16  along with this program. If not, see <http://www.gnu.org/licenses/>.
17 
18 */
19 
20 #ifndef DEFAULT_GUI_MODEL_H
21 #define DEFAULT_GUI_MODEL_H
22 
23 #include <QtWidgets>
24 #include <event.h>
25 #include <map>
26 #include <mutex.h>
27 #include <plugin.h>
28 #include <rt.h>
29 #include <workspace.h>
30 
31 class QLabel;
32 class QPushButton;
33 
34 class DefaultGUILineEdit : public QLineEdit
35 {
36 
37  Q_OBJECT
38 
39 public:
40  DefaultGUILineEdit(QWidget *);
41  ~DefaultGUILineEdit(void);
42  void blacken(void);
43  QPalette palette;
44 
45 public slots:
46  void redden(void);
47 }; // class DefaultGUILineEdit
48 
52 class DefaultGUIModel : public QWidget, public RT::Thread, public Plugin::Object,
53  public Workspace::Instance, public Event::Handler
54 {
55 
56  Q_OBJECT
57 
58 public:
59 
60  /*
61  * Getter function go allow customization of
62  * user interface
63  */
64  QGridLayout * getLayout(void)
65  {
66  return layout;
67  };
68 
74  static const IO::flags_t INPUT = Workspace::INPUT;
80  static const IO::flags_t OUTPUT = Workspace::OUTPUT;
86  static const IO::flags_t PARAMETER = Workspace::PARAMETER;
92  static const IO::flags_t STATE = Workspace::STATE;
98  static const IO::flags_t EVENT = Workspace::EVENT;
104  static const IO::flags_t COMMENT = Workspace::COMMENT;
108  static const IO::flags_t DOUBLE = Workspace::COMMENT<<1;
112  static const IO::flags_t INTEGER = Workspace::COMMENT<<2;
116  static const IO::flags_t UINTEGER = Workspace::COMMENT<<3;
117 
125 
132  {
139  };
140 
148  DefaultGUIModel(std::string name,variable_t *variables,size_t size);
149  virtual ~DefaultGUIModel(void);
150 
158  virtual void update(update_flags_t flag);
159 
168  void createGUI(DefaultGUIModel::variable_t *var, int size);
169 
170  // Default buttons
171  QPushButton *pauseButton;
172  QPushButton *modifyButton;
173  QPushButton *unloadButton;
174 
175  struct param_t
176  {
177  QLabel *label;
180  size_t index;
181  QString *str_value;
182  };
183  std::map<QString,param_t> parameter;
184  QPalette palette;
185 
186 public slots:
187 
191  void resizeMe();
195  virtual void exit(void);
201  virtual void refresh(void);
207  virtual void modify(void);
211  virtual void pause(bool);
212 
213 protected:
214 
215  QGridLayout *layout;
216 
224  QString getParameter(const QString &name);
233  void setParameter(const QString &name,double value);
240  void setParameter(const QString &name,const QString value);
244  QString getComment(const QString &name);
248  void setComment(const QString &name,const QString comment);
249 
259  void setState(const QString &name,double &ref);
269  void setEvent(const QString &name,double &ref);
270 
271 private:
272 
273  void doDeferred(const Settings::Object::State &);
274  void doLoad(const Settings::Object::State &);
275  void doSave(Settings::Object::State &) const;
276 
277  void receiveEvent(const Event::Object *);
278 
279  bool periodEventPaused;
280  mutable QString junk;
281 
282  QWidget *gridBox;
283  QGroupBox *buttonGroup;
284  std::string myname;
285  QMdiSubWindow *subWindow;
286 
287 }; // class DefaultGUIModel
288 
289 #endif // DEFUALT_GUI_MODEL_H
Workspace::Instance
Definition: workspace.h:76
DefaultGUIModel::param_t::type
IO::flags_t type
Definition: default_gui_model.h:179
DefaultGUILineEdit::blacken
void blacken(void)
Definition: default_gui_model.cpp:45
DefaultGUIModel::modifyButton
QPushButton * modifyButton
Definition: default_gui_model.h:172
DefaultGUIModel::getLayout
QGridLayout * getLayout(void)
Definition: default_gui_model.h:64
DefaultGUIModel::update
virtual void update(update_flags_t flag)
Definition: default_gui_model.cpp:204
DefaultGUIModel
Definition: default_gui_model.h:52
IO::flags_t
unsigned long flags_t
Definition: io.h:40
DefaultGUIModel::INPUT
static const IO::flags_t INPUT
Definition: default_gui_model.h:74
DefaultGUIModel::UINTEGER
static const IO::flags_t UINTEGER
Definition: default_gui_model.h:116
DefaultGUIModel::param_t::index
size_t index
Definition: default_gui_model.h:180
DefaultGUIModel::EVENT
static const IO::flags_t EVENT
Definition: default_gui_model.h:98
DefaultGUIModel::setParameter
void setParameter(const QString &name, double value)
Definition: default_gui_model.cpp:304
DefaultGUIModel::COMMENT
static const IO::flags_t COMMENT
Definition: default_gui_model.h:104
Plugin::Object
Definition: plugin.h:145
DefaultGUIModel::pauseButton
QPushButton * pauseButton
Definition: default_gui_model.h:171
DefaultGUIModel::refresh
virtual void refresh(void)
Definition: default_gui_model.cpp:225
DefaultGUIModel::resizeMe
void resizeMe()
Definition: default_gui_model.cpp:208
workspace.h
DefaultGUIModel::PERIOD
@ PERIOD
Definition: default_gui_model.h:135
DefaultGUIModel::OUTPUT
static const IO::flags_t OUTPUT
Definition: default_gui_model.h:80
plugin.h
DefaultGUIModel::update_flags_t
update_flags_t
Definition: default_gui_model.h:131
DefaultGUIModel::param_t::edit
DefaultGUILineEdit * edit
Definition: default_gui_model.h:178
DefaultGUIModel::palette
QPalette palette
Definition: default_gui_model.h:184
DefaultGUIModel::getParameter
QString getParameter(const QString &name)
Definition: default_gui_model.cpp:292
DefaultGUIModel::EXIT
@ EXIT
Definition: default_gui_model.h:138
DefaultGUILineEdit::DefaultGUILineEdit
DefaultGUILineEdit(QWidget *)
Definition: default_gui_model.cpp:36
DefaultGUILineEdit::redden
void redden(void)
Definition: default_gui_model.cpp:52
DefaultGUIModel::DefaultGUIModel
DefaultGUIModel(std::string name, variable_t *variables, size_t size)
Definition: default_gui_model.cpp:61
DefaultGUIModel::pause
virtual void pause(bool)
Definition: default_gui_model.cpp:346
DefaultGUIModel::INIT
@ INIT
Definition: default_gui_model.h:133
DefaultGUIModel::setState
void setState(const QString &name, double &ref)
Definition: default_gui_model.cpp:326
DefaultGUIModel::~DefaultGUIModel
virtual ~DefaultGUIModel(void)
Definition: default_gui_model.cpp:72
event.h
IO::channel_t
Definition: io.h:56
DefaultGUIModel::modify
virtual void modify(void)
Definition: default_gui_model.cpp:249
Event::Handler
Definition: event.h:256
DefaultGUIModel::createGUI
void createGUI(DefaultGUIModel::variable_t *var, int size)
Definition: default_gui_model.cpp:85
DefaultGUIModel::setComment
void setComment(const QString &name, const QString comment)
Definition: default_gui_model.cpp:280
DefaultGUIModel::INTEGER
static const IO::flags_t INTEGER
Definition: default_gui_model.h:112
DefaultGUIModel::param_t::str_value
QString * str_value
Definition: default_gui_model.h:181
rt.h
mutex.h
DefaultGUIModel::variable_t
Workspace::variable_t variable_t
Definition: default_gui_model.h:124
Settings::Object::State
Definition: settings.h:62
DefaultGUIModel::PAUSE
@ PAUSE
Definition: default_gui_model.h:136
RT::Thread
Definition: rt.h:561
DefaultGUIModel::layout
QGridLayout * layout
Definition: default_gui_model.h:215
DefaultGUILineEdit::~DefaultGUILineEdit
~DefaultGUILineEdit(void)
Definition: default_gui_model.cpp:41
DefaultGUIModel::param_t::label
QLabel * label
Definition: default_gui_model.h:177
DefaultGUIModel::PARAMETER
static const IO::flags_t PARAMETER
Definition: default_gui_model.h:86
DefaultGUIModel::STATE
static const IO::flags_t STATE
Definition: default_gui_model.h:92
DefaultGUIModel::setEvent
void setEvent(const QString &name, double &ref)
Definition: default_gui_model.cpp:336
DefaultGUIModel::exit
virtual void exit(void)
Definition: default_gui_model.cpp:213
DefaultGUIModel::unloadButton
QPushButton * unloadButton
Definition: default_gui_model.h:173
Event::Object
Definition: event.h:128
DefaultGUIModel::MODIFY
@ MODIFY
Definition: default_gui_model.h:134
DefaultGUIModel::parameter
std::map< QString, param_t > parameter
Definition: default_gui_model.h:183
DefaultGUIModel::getComment
QString getComment(const QString &name)
Definition: default_gui_model.cpp:272
DefaultGUILineEdit::palette
QPalette palette
Definition: default_gui_model.h:43
DefaultGUIModel::param_t
Definition: default_gui_model.h:175
DefaultGUIModel::DOUBLE
static const IO::flags_t DOUBLE
Definition: default_gui_model.h:108
DefaultGUILineEdit
Definition: default_gui_model.h:34
DefaultGUIModel::UNPAUSE
@ UNPAUSE
Definition: default_gui_model.h:137