void Doc::clearContents() { emit clearing(); m_clipboard->resetContents(); if (m_monitorProps != NULL) m_monitorProps->reset(); destroyAudioCapture(); // Delete all function instances QListIterator <quint32> funcit(m_functions.keys()); while (funcit.hasNext() == true) { Function* func = m_functions.take(funcit.next()); if (func == NULL) continue; emit functionRemoved(func->id()); delete func; } // Delete all fixture groups QListIterator <quint32> grpit(m_fixtureGroups.keys()); while (grpit.hasNext() == true) { FixtureGroup* grp = m_fixtureGroups.take(grpit.next()); quint32 grpID = grp->id(); delete grp; emit fixtureGroupRemoved(grpID); } // Delete all fixture instances QListIterator <quint32> fxit(m_fixtures.keys()); while (fxit.hasNext() == true) { Fixture* fxi = m_fixtures.take(fxit.next()); quint32 fxID = fxi->id(); delete fxi; emit fixtureRemoved(fxID); } // Delete all channels groups QListIterator <quint32> grpchans(m_channelsGroups.keys()); while (grpchans.hasNext() == true) { ChannelsGroup* grp = m_channelsGroups.take(grpchans.next()); emit channelsGroupRemoved(grp->id()); delete grp; } m_orderedGroups.clear(); m_latestFunctionId = 0; m_latestFixtureId = 0; m_latestFixtureGroupId = 0; m_latestChannelsGroupId = 0; m_addresses.clear(); emit cleared(); }
void EFXEditor::initGeneralPage() { connect(m_nameEdit, SIGNAL(textEdited(const QString&)), this, SLOT(slotNameEdited(const QString&))); connect(m_tree, SIGNAL(itemChanged(QTreeWidgetItem*,int)), this, SLOT(slotFixtureItemChanged(QTreeWidgetItem*,int))); connect(m_addFixtureButton, SIGNAL(clicked()), this, SLOT(slotAddFixtureClicked())); connect(m_removeFixtureButton, SIGNAL(clicked()), this, SLOT(slotRemoveFixtureClicked())); connect(m_raiseFixtureButton, SIGNAL(clicked()), this, SLOT(slotRaiseFixtureClicked())); connect(m_lowerFixtureButton, SIGNAL(clicked()), this, SLOT(slotLowerFixtureClicked())); connect(m_parallelRadio, SIGNAL(toggled(bool)), this, SLOT(slotParallelRadioToggled(bool))); connect(m_serialRadio, SIGNAL(toggled(bool)), this, SLOT(slotSerialRadioToggled(bool))); connect(m_asymmetricRadio, SIGNAL(toggled(bool)), this, SLOT(slotAsymmetricRadioToggled(bool))); // Test slots connect(m_testButton, SIGNAL(clicked()), this, SLOT(slotTestClicked())); connect(m_raiseFixtureButton, SIGNAL(clicked()), this, SLOT(slotRestartTest())); connect(m_lowerFixtureButton, SIGNAL(clicked()), this, SLOT(slotRestartTest())); connect(m_parallelRadio, SIGNAL(toggled(bool)), this, SLOT(slotRestartTest())); connect(m_serialRadio, SIGNAL(toggled(bool)), this, SLOT(slotRestartTest())); connect(m_asymmetricRadio, SIGNAL(toggled(bool)), this, SLOT(slotRestartTest())); // Doc connect(m_doc, SIGNAL(fixtureRemoved(quint32)), this, SLOT(slotFixtureRemoved())); connect(m_doc, SIGNAL(fixtureChanged(quint32)), this, SLOT(slotFixtureChanged())); /* Set the EFX's name to the name field */ m_nameEdit->setText(m_efx->name()); m_nameEdit->setSelection(0, m_nameEdit->text().length()); /* Resize columns to fit contents */ m_tree->header()->setResizeMode(QHeaderView::ResizeToContents); /* Put all of the EFX's fixtures to the tree view */ updateFixtureTree(); /* Set propagation mode */ if (m_efx->propagationMode() == EFX::Serial) m_serialRadio->setChecked(true); else if (m_efx->propagationMode() == EFX::Asymmetric) m_asymmetricRadio->setChecked(true); else m_parallelRadio->setChecked(true); /* Disable test button if we're in operate mode */ if (m_doc->mode() == Doc::Operate) m_testButton->setEnabled(false); }
void ChannelsGroup::init() { connect(m_doc, SIGNAL(fixtureRemoved(quint32)), this, SLOT(slotFixtureRemoved(quint32))); }
VCSlider::VCSlider(QWidget* parent, Doc* doc) : VCWidget(parent, doc) { /* Set the class name "VCSlider" as the object name as well */ setObjectName(VCSlider::staticMetaObject.className()); m_hbox = NULL; m_topLabel = NULL; m_slider = NULL; m_knob = NULL; m_bottomLabel = NULL; m_valueDisplayStyle = ExactValue; m_levelLowLimit = 0; m_levelHighLimit = UCHAR_MAX; m_levelValue = 0; m_levelValueChanged = false; m_playbackFunction = Function::invalidId(); m_playbackValue = 0; m_playbackValueChanged = false; m_submasterValue = UCHAR_MAX; m_widgetMode = WSlider; setType(VCWidget::SliderWidget); setCaption(QString()); setFrameStyle(KVCFrameStyleSunken); /* Main VBox */ new QVBoxLayout(this); /* Top label */ m_topLabel = new QLabel(this); m_topLabel->setAlignment(Qt::AlignHCenter); layout()->addWidget(m_topLabel); /* Slider's HBox |stretch|slider|stretch| */ m_hbox = new QHBoxLayout(); /* Put stretchable space before the slider (to its left side) */ m_hbox->addStretch(); /* The slider */ m_slider = new ClickAndGoSlider(this); m_hbox->addWidget(m_slider); m_slider->setRange(0, 255); m_slider->setPageStep(1); m_slider->setInvertedAppearance(false); m_slider->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); m_slider->setMinimumWidth(32); m_slider->setMaximumWidth(80); m_slider->setStyleSheet(CNG_DEFAULT_STYLE); connect(m_slider, SIGNAL(valueChanged(int)), this, SLOT(slotSliderMoved(int))); m_externalMovement = false; /* Put stretchable space after the slider (to its right side) */ m_hbox->addStretch(); layout()->addItem(m_hbox); /* Click & Go button */ m_cngType = ClickAndGoWidget::None; m_cngButton = new QToolButton(this); m_cngButton->setFixedSize(48, 48); m_cngButton->setIconSize(QSize(42, 42)); m_menu = new QMenu(this); QWidgetAction* action = new QWidgetAction(this); m_cngWidget = new ClickAndGoWidget(); action->setDefaultWidget(m_cngWidget); m_menu->addAction(action); m_cngButton->setMenu(m_menu); m_cngButton->setPopupMode(QToolButton::InstantPopup); layout()->addWidget(m_cngButton); layout()->setAlignment(m_cngButton, Qt::AlignHCenter); m_cngButton->hide(); connect(m_cngWidget, SIGNAL(levelChanged(uchar)), this, SLOT(slotClickAndGoLevelChanged(uchar))); connect(m_cngWidget, SIGNAL(colorChanged(QRgb)), this, SLOT(slotClickAndGoColorChanged(QRgb))); connect(m_cngWidget, SIGNAL(levelAndPresetChanged(uchar,QImage)), this, SLOT(slotClickAndGoLevelAndPresetChanged(uchar, QImage))); /* Bottom label */ m_bottomLabel = new QLabel(this); layout()->addWidget(m_bottomLabel); m_bottomLabel->setAlignment(Qt::AlignCenter); m_bottomLabel->setWordWrap(true); m_bottomLabel->hide(); setMinimumSize(20, 20); QSettings settings; QVariant var = settings.value(SETTINGS_SLIDER_SIZE); if (var.isValid() == true) resize(var.toSize()); else resize(VCSlider::defaultSize); /* Initialize to playback mode by default */ setInvertedAppearance(false); setSliderMode(Playback); /* Update the slider according to current mode */ slotModeChanged(mode()); /* Listen to fixture removals so that LevelChannels can be removed when they no longer point to an existing fixture->channel */ connect(m_doc, SIGNAL(fixtureRemoved(quint32)), this, SLOT(slotFixtureRemoved(quint32))); }
VCSlider::VCSlider(QWidget* parent, Doc* doc) : VCWidget(parent, doc) { /* Set the class name "VCSlider" as the object name as well */ setObjectName(VCSlider::staticMetaObject.className()); m_hbox = NULL; m_topLabel = NULL; m_slider = NULL; m_bottomLabel = NULL; m_tapButton = NULL; m_valueDisplayStyle = ExactValue; m_levelLowLimit = 0; m_levelHighLimit = UCHAR_MAX; m_levelValue = 0; m_levelValueChanged = false; m_playbackFunction = Function::invalidId(); m_playbackValue = 0; m_playbackValueChanged = false; m_time = NULL; setCaption(QString()); setFrameStyle(KVCFrameStyleSunken); /* Main VBox */ new QVBoxLayout(this); /* Top label */ m_topLabel = new QLabel(this); layout()->addWidget(m_topLabel); m_topLabel->setAlignment(Qt::AlignHCenter); /* Slider's HBox |stretch|slider|stretch| */ m_hbox = new QHBoxLayout(); layout()->addItem(m_hbox); /* Put stretchable space before the slider (to its left side) */ m_hbox->addStretch(); /* The slider */ m_slider = new QSlider(this); m_slider->setStyle(AppUtil::saneStyle()); m_hbox->addWidget(m_slider); m_slider->setRange(0, 255); m_slider->setPageStep(1); m_slider->setInvertedAppearance(false); connect(m_slider, SIGNAL(valueChanged(int)), this, SLOT(slotSliderMoved(int))); m_externalMovement = false; /* Put stretchable space after the slider (to its right side) */ m_hbox->addStretch(); /* Tap button */ m_tapButton = new QPushButton(this); layout()->addWidget(m_tapButton); connect(m_tapButton, SIGNAL(clicked()), this, SLOT(slotTapButtonClicked())); m_time = new QTime(); /* Bottom label */ m_bottomLabel = new QLabel(this); layout()->addWidget(m_bottomLabel); m_bottomLabel->setAlignment(Qt::AlignCenter); m_bottomLabel->hide(); setMinimumSize(20, 20); resize(VCSlider::defaultSize); /* Initialize to playback mode by default */ setInvertedAppearance(false); setSliderMode(Playback); /* Update the slider according to current mode */ slotModeChanged(mode()); /* Listen to fixture removals so that LevelChannels can be removed when they no longer point to an existing fixture->channel */ connect(m_doc, SIGNAL(fixtureRemoved(quint32)), this, SLOT(slotFixtureRemoved(quint32))); }