27#include <QGraphicsScene>
64 setMinimumSize(150,240);
66 QVBoxLayout * vboxLayout =
new QVBoxLayout(
this);
67 vboxLayout->setSpacing(0);
68 vboxLayout->setMargin(0);
70 vboxLayout->addWidget(examiner);
71 m_d->colorselectbutton = 0;
95 assert(!
m_d->system2itemcols.contains(system));
98 m_d->view->addItemCollection(ic);
102 m_d->view->setDisallowInteractions(ic, !handleSelections );
105 m_d->view->setDisallowMovable(ic, !allowMovable );
108 m_d->system2switchable << QPair<IVP1System*,bool>(system,switchable);
110 assert(!
m_d->system2startdisabled.contains(system));
111 m_d->system2startdisabled.insert(system,startDisabled);
112 assert(
m_d->system2startdisabled.contains(system));
114 if (allowController) {
115 m_d->systemsAllowedControllers << system;
126 m_d->sys2tabpage,
m_d->tabwidget,
127 m_d->system2switchable,
128 m_d->checkbox2system,
129 m_d->colorselectbutton ));
130 connect(
m_d->colorselectbutton,SIGNAL(colorChanged(
const QColor&)),
this,SLOT(
setBackgroundColor(
const QColor&)));
131 m_d->system2switchable.clear();
133 QMapIterator<QCheckBox*,IVP1System*> it(
m_d->checkbox2system);
134 while (it.hasNext()) {
137 assert(
m_d->system2startdisabled.contains(it.value()));
138 if (
m_d->system2startdisabled[it.value()]) {
139 it.key()->setChecked(
false);
140 m_d->updateSystemState(it.key());
151 m_d->view->fitViewToContents();
158 m_d->view->clearSelections();
164 QCheckBox * cb =
static_cast<QCheckBox*
>(sender()); assert(cb);
165 m_d->updateSystemState(cb);
175 if (cb->isChecked()) {
178 ic->reattachToView();
207 ic->detachFromView();
218 view->scene()->update();
233 m_d->view->setBackgroundBrush(col);
243 message(
"showControlsForSystem Error: Unable to determine system identity.");
246 if (!
m_d->sys2tabpage.contains(sys)) {
251 int index =
m_d->tabwidget->indexOf(
m_d->sys2tabpage[sys]);
253 message(
"Warning: Asked to show controller for a disabled system. Surely you jest?");
257 m_d->tabwidget->setCurrentIndex(
index);
266 QByteArray byteArray;
267 QBuffer buffer(&byteArray);
268 buffer.open(QIODevice::WriteOnly);
269 QDataStream out(&buffer);
278 out <<
m_d->colorselectbutton->color();
284 QMap<QString, bool> sysname2turnedon;
285 QMap<QCheckBox*,IVP1System*>::const_iterator it =
m_d->checkbox2system.constBegin();
286 while (it !=
m_d->checkbox2system.constEnd()) {
287 sysname2turnedon.insert(it.key()->text(),it.key()->isChecked());
291 out << sysname2turnedon;
295 out <<
m_d->tabwidget->tabText(
m_d->tabwidget->currentIndex());
311 buffer.open(QIODevice::ReadOnly);
312 QDataStream
state(&buffer);
317 message(
"Warning: State data in .vp1 file is in wrong format - ignoring!");
320 QByteArray basestate;
327 if (bgdcol!=
m_d->colorselectbutton->color())
328 m_d->colorselectbutton->setColor(bgdcol);
332 QMap<QString, bool> sysname2turnedon;
333 state >> sysname2turnedon;
334 QMap<QCheckBox*,IVP1System*>::const_iterator it =
m_d->checkbox2system.constBegin();
335 while (it !=
m_d->checkbox2system.constEnd()) {
336 if (sysname2turnedon.contains(it.key()->text())) {
337 if (sysname2turnedon[it.key()->text()]!=it.key()->isChecked())
338 it.key()->setChecked(sysname2turnedon[it.key()->text()]);
340 message(
"Warning: Config data does not contain information about switched state of subsystem '"+it.key()->text()+
"'");
348 if (
m_d->tabwidget) {
349 for (
int i = 0; i <
m_d->tabwidget->count(); ++i) {
350 if (
m_d->tabwidget->tabText(i) == tabname) {
351 m_d->tabwidget->setCurrentIndex(i);
const QSet< VP1GraphicsItemCollection * > & getItemCollections()
VP1GraphicsView * view() const
static QWidget * compositionController(const QList< IVP1System * > &systemsWithControllersAllowed, QMap< IVP1System *, QWidget * > &sys2tabpage, VP1TabWidget *&tabwidget, const QList< QPair< IVP1System *, bool > > &system2switchable, QMap< QCheckBox *, IVP1System * > &checkbox2system, VP1ColorSelectButton *&colorselectbutton, QWidget *extrawidget=0, bool nobgdcolorsel=false)
static void messageVerbose(const QString &)