ATLAS Offline Software
Loading...
Searching...
No Matches
VP1Controller.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 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#include <memory>
25
26class QPushButton;
27class QAbstractButton;
28class QCheckBox;
29class QComboBox;
30class QGroupBox;
31class QSpinBox;
32class QDoubleSpinBox;
33class QRadioButton;
34class QSlider;
35class QScrollArea;
36class QButtonGroup;
37class SbColor4f;
40class VP1Serialise;
41class VP1Deserialise;
42class SoMaterial;
45
46class VP1Controller : public QWidget, public VP1HelperClassBase {
47
48 Q_OBJECT
49
50public:
51
52 VP1Controller(IVP1System * sys,const QString& classname);
53 virtual ~VP1Controller();
54
55 void initLastVars(); //call at end of derived controller (after all addUpdateSlot calls & connection setups)
56
57 QByteArray saveSettings() const;
58 void restoreSettings(const QByteArray&);
59
60 // Need to be able to pass signals from customtoureditor to
63
64
65protected:
66
67 template <class T>
68 bool changed( T&lastval, const T& newval );
69
70 template <class T>
71 static QString toString( const T& par );
72 static QString toString( const bool& par );
73 static QString toString( const QList<VP1Interval>& l );
74 static QString toString( SbColor4f );
75
76 template <class T>
77 void initDialog(T& theUI, QPushButton* launchbutton, QAbstractButton* enabledButton = 0);
78 void initDialog(std::unique_ptr<QWidget> dialog, QPushButton* launchbutton, QPushButton* closebutton, QAbstractButton* enabledButton = 0);
79
80 void setupCollWidgetInScrollArea(QScrollArea * scrollarea, VP1CollectionWidget* collWidget);
81
83 virtual int currentSettingsVersion() const = 0;
84 virtual void actualSaveSettings(VP1Serialise&) const = 0;
85
86 const char * addUpdateSlot(const char * slot);//simply returns the argument slot for convenience
87 void connectToLastUpdateSlot(QObject* sender,const char * signal);
88 void connectToLastUpdateSlot(QCheckBox*);
89 void connectToLastUpdateSlot(QComboBox*);
90 void connectToLastUpdateSlot(QGroupBox*);
91 void connectToLastUpdateSlot(QSpinBox*);
92 void connectToLastUpdateSlot(QDoubleSpinBox*);
93 void connectToLastUpdateSlot(QRadioButton*);
94 void connectToLastUpdateSlot(QButtonGroup*);
95 void connectToLastUpdateSlot(QSlider*);
97
98 bool initVarsMode() const { return m_initVarsMode; }
99
100 //Convenient way to setup radio button groups (when multiple groups inside same group box):
101 QButtonGroup * defineRadioButtonGroup( QRadioButton * rb0, QRadioButton * rb1,QRadioButton * rb2 = 0,
102 QRadioButton * rb3 = 0,QRadioButton * rb4 = 0,QRadioButton * rb5 = 0,
103 QRadioButton * rb6 = 0,QRadioButton * rb7 = 0,QRadioButton * rb8 = 0,
104 QRadioButton * rb9 = 0 );
105 QButtonGroup * defineRadioButtonGroup( const QList<QRadioButton *>&);
106
107 //convenience:
108 SoMaterial * getMaterial(VP1MaterialButton*) const;
109 SoMaterial * fallBackMaterial() const;
110
111
112 protected Q_SLOTS:
114
115 public Q_SLOTS:
116 void toggleDialogState(QObject* widget=0);
119
120
121 signals:
123
124
125private:
127
128 class Imp;
131
132};
133
135// INLINES //
137
138template <class T>
139QString VP1Controller::toString( const T& par )
140{
141 return VP1String::str(par);
142}
143
144template <class T>
145void VP1Controller::initDialog(T& theUI, QPushButton* launchbutton,QAbstractButton* enabledButton) {
146 auto w = std::make_unique<QWidget>(nullptr,Qt::WindowStaysOnTopHint);
147 theUI.setupUi(w.get());
148 initDialog(std::move(w), launchbutton, theUI.pushButton_close,enabledButton);
149}
150
151template <class T>
152bool VP1Controller::changed( T&lastval, const T& newval )
153{
154 if (initVarsMode()) {
155 lastval=newval;
156 return false;
157 }
158 if (lastval==newval)
159 return false;
160 lastval = newval;
161 return true;
162}
163
164
165#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