ATLAS Offline Software
Loading...
Searching...
No Matches
VP1Controller.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
5
7// //
8// Header file for class VP1Controller //
9// //
10// Description: Common base class for VP1 controllers. //
11// //
12// Author: Thomas H. Kittelmann (Thomas.Kittelmann@cern.ch) //
13// Initial version: August 2008 //
14// //
16
17#ifndef VP1CONTROLLER_H
18#define VP1CONTROLLER_H
19
21#include "VP1Base/VP1Interval.h"
22
23#include <QWidget>
24
25class QPushButton;
26class QAbstractButton;
27class QCheckBox;
28class QComboBox;
29class QGroupBox;
30class QSpinBox;
31class QDoubleSpinBox;
32class QRadioButton;
33class QSlider;
34class QScrollArea;
35class QButtonGroup;
36class SbColor4f;
39class VP1Serialise;
40class VP1Deserialise;
41class SoMaterial;
44
45class VP1Controller : public QWidget, public VP1HelperClassBase {
46
47 Q_OBJECT
48
49public:
50
51 VP1Controller(IVP1System * sys,const QString& classname);
52 virtual ~VP1Controller();
53
54 void initLastVars(); //call at end of derived controller (after all addUpdateSlot calls & connection setups)
55
56 QByteArray saveSettings() const;
57 void restoreSettings(const QByteArray&);
58
59 // Need to be able to pass signals from customtoureditor to
62
63
64protected:
65
66 template <class T>
67 bool changed( T&lastval, const T& newval );
68
69 template <class T>
70 static QString toString( const T& par );
71 static QString toString( const bool& par );
72 static QString toString( const QList<VP1Interval>& l );
73 static QString toString( SbColor4f );
74
75 template <class T>
76 void initDialog(T& theUI, QPushButton* launchbutton, QAbstractButton* enabledButton = 0);
77 void initDialog(QWidget * dialog, QPushButton* launchbutton, QPushButton* closebutton, QAbstractButton* enabledButton = 0);
78
79 void setupCollWidgetInScrollArea(QScrollArea * scrollarea, VP1CollectionWidget* collWidget);
80
82 virtual int currentSettingsVersion() const = 0;
83 virtual void actualSaveSettings(VP1Serialise&) const = 0;
84
85 const char * addUpdateSlot(const char * slot);//simply returns the argument slot for convenience
86 void connectToLastUpdateSlot(QObject* sender,const char * signal);
87 void connectToLastUpdateSlot(QCheckBox*);
88 void connectToLastUpdateSlot(QComboBox*);
89 void connectToLastUpdateSlot(QGroupBox*);
90 void connectToLastUpdateSlot(QSpinBox*);
91 void connectToLastUpdateSlot(QDoubleSpinBox*);
92 void connectToLastUpdateSlot(QRadioButton*);
93 void connectToLastUpdateSlot(QButtonGroup*);
94 void connectToLastUpdateSlot(QSlider*);
96
97 bool initVarsMode() const { return m_initVarsMode; }
98
99 //Convenient way to setup radio button groups (when multiple groups inside same group box):
100 QButtonGroup * defineRadioButtonGroup( QRadioButton * rb0, QRadioButton * rb1,QRadioButton * rb2 = 0,
101 QRadioButton * rb3 = 0,QRadioButton * rb4 = 0,QRadioButton * rb5 = 0,
102 QRadioButton * rb6 = 0,QRadioButton * rb7 = 0,QRadioButton * rb8 = 0,
103 QRadioButton * rb9 = 0 );
104 QButtonGroup * defineRadioButtonGroup( const QList<QRadioButton *>&);
105
106 //convenience:
107 SoMaterial * getMaterial(VP1MaterialButton*) const;
108 SoMaterial * fallBackMaterial() const;
109
110
111 protected Q_SLOTS:
113
114 public Q_SLOTS:
115 void toggleDialogState(QObject* widget=0);
118
119
120 signals:
122
123
124private:
126
127 class Imp;
130
131};
132
134// INLINES //
136
137template <class T>
138QString VP1Controller::toString( const T& par )
139{
140 return VP1String::str(par);
141}
142
143template <class T>
144void VP1Controller::initDialog(T& theUI, QPushButton* launchbutton,QAbstractButton* enabledButton) {
145 QWidget * w = new QWidget(0,Qt::WindowStaysOnTopHint);
146 theUI.setupUi(w);
147 initDialog(w, launchbutton, theUI.pushButton_close,enabledButton);
148}
149
150template <class T>
151bool VP1Controller::changed( T&lastval, const T& newval )
152{
153 if (initVarsMode()) {
154 lastval=newval;
155 return false;
156 }
157 if (lastval==newval)
158 return false;
159 lastval = newval;
160 return true;
161}
162
163
164#endif
virtual void actualSaveSettings(VP1Serialise &) const =0
QByteArray saveSettings() const
virtual ~VP1Controller()
void restoreSettings(const QByteArray &)
void dummyUpdateTrigger()
virtual void actualRestoreSettings(VP1Deserialise &)=0
void initDialog(T &theUI, QPushButton *launchbutton, QAbstractButton *enabledButton=0)
void toggleDialogState(QObject *widget=0)
static QString toString(const T &par)
SoMaterial * getMaterial(VP1MaterialButton *) const
void connectToLastUpdateSlot(QObject *sender, const char *signal)
void setupCollWidgetInScrollArea(QScrollArea *scrollarea, VP1CollectionWidget *collWidget)
static void setCustomTourEditor(VP1CustomTourEditor *editor)
const char * addUpdateSlot(const char *slot)
virtual int currentSettingsVersion() const =0
bool initVarsMode() const
SoMaterial * fallBackMaterial() const
bool changed(T &lastval, const T &newval)
void collWidgetContentChanged()
QButtonGroup * defineRadioButtonGroup(QRadioButton *rb0, QRadioButton *rb1, QRadioButton *rb2=0, QRadioButton *rb3=0, QRadioButton *rb4=0, QRadioButton *rb5=0, QRadioButton *rb6=0, QRadioButton *rb7=0, QRadioButton *rb8=0, QRadioButton *rb9=0)
static VP1CustomTourEditor * customTourEditor()
static VP1CustomTourEditor * m_customTourEditor
void testForChanges()
VP1Controller(IVP1System *sys, const QString &classname)
void enabledButtonStateChanged()
VP1HelperClassBase(IVP1System *sys=0, QString helpername="")
static QString str(const QString &s)
Definition VP1String.h:49