FixtureRemap::FixtureRemap(Doc *doc, QWidget *parent) : QDialog(parent) , m_doc(doc) { Q_ASSERT(doc != NULL); setupUi(this); connect(m_addButton, SIGNAL(clicked()), this, SLOT(slotAddTargetFixture())); connect(m_removeButton, SIGNAL(clicked()), this, SLOT(slotRemoveTargetFixture())); connect(m_cloneButton, SIGNAL(clicked()), this, SLOT(slotCloneSourceFixture())); connect(m_remapButton, SIGNAL(clicked()), this, SLOT(slotAddRemap())); connect(m_unmapButton, SIGNAL(clicked()), this, SLOT(slotRemoveRemap())); m_cloneButton->setEnabled(false); remapWidget = new RemapWidget(m_sourceTree, m_targetTree, this); remapWidget->show(); m_remapLayout->addWidget(remapWidget); m_targetDoc = new Doc(this); /* Load user fixtures first so that they override system fixtures */ m_targetDoc->fixtureDefCache()->load(QLCFixtureDefCache::userDefinitionDirectory()); m_targetDoc->fixtureDefCache()->load(QLCFixtureDefCache::systemDefinitionDirectory()); m_sourceTree->setIconSize(QSize(24, 24)); m_sourceTree->setAllColumnsShowFocus(true); fillFixturesTree(m_doc, m_sourceTree); m_targetTree->setIconSize(QSize(24, 24)); m_targetTree->setAllColumnsShowFocus(true); connect(m_sourceTree->verticalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(slotUpdateConnections())); connect(m_sourceTree, SIGNAL(clicked(QModelIndex)), this, SLOT(slotUpdateConnections())); connect(m_sourceTree, SIGNAL(expanded(QModelIndex)), this, SLOT(slotUpdateConnections())); connect(m_sourceTree, SIGNAL(collapsed(QModelIndex)), this, SLOT(slotUpdateConnections())); connect(m_sourceTree, SIGNAL(itemSelectionChanged()), this, SLOT(slotSourceSelectionChanged())); connect(m_targetTree->verticalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(slotUpdateConnections())); connect(m_targetTree, SIGNAL(clicked(QModelIndex)), this, SLOT(slotUpdateConnections())); connect(m_targetTree, SIGNAL(expanded(QModelIndex)), this, SLOT(slotUpdateConnections())); connect(m_targetTree, SIGNAL(collapsed(QModelIndex)), this, SLOT(slotUpdateConnections())); // retrieve the original project name for QLC+ main class App *mainApp = (App *)m_doc->parent(); QString prjName = mainApp->fileName(); if (prjName.lastIndexOf(".") > 0) prjName.insert(prjName.lastIndexOf("."), tr(" (remapped)")); else prjName.append(tr(" (remapped)")); m_targetProjectLabel->setText(prjName); }
VCXYPadProperties::VCXYPadProperties(VCXYPad* xypad, Doc* doc) : QDialog(xypad) , m_xypad(xypad) , m_doc(doc) { Q_ASSERT(doc != NULL); Q_ASSERT(xypad != NULL); setupUi(this); // IDs 0-15 are reserved for XYPad base controls m_lastAssignedID = 15; QAction* action = new QAction(this); action->setShortcut(QKeySequence(QKeySequence::Close)); connect(action, SIGNAL(triggered(bool)), this, SLOT(reject())); addAction(action); /******************************************************************** * General page ********************************************************************/ m_nameEdit->setText(m_xypad->caption()); if (m_xypad->invertedAppearance() == true) m_YInvertedRadio->setChecked(true); m_panInputWidget = new InputSelectionWidget(m_doc, this); m_panInputWidget->setTitle(tr("Pan / Horizontal Axis")); m_panInputWidget->setKeyInputVisibility(false); m_panInputWidget->setInputSource(m_xypad->inputSource(VCXYPad::panInputSourceId)); m_panInputWidget->setWidgetPage(m_xypad->page()); m_panInputWidget->emitOddValues(true); m_panInputWidget->show(); m_extInputLayout->addWidget(m_panInputWidget); connect(m_panInputWidget, SIGNAL(autoDetectToggled(bool)), this, SLOT(slotPanAutoDetectToggled(bool))); connect(m_panInputWidget, SIGNAL(inputValueChanged(quint32,quint32)), this, SLOT(slotPanInputValueChanged(quint32,quint32))); m_tiltInputWidget = new InputSelectionWidget(m_doc, this); m_tiltInputWidget->setTitle(tr("Tilt / Vertical Axis")); m_tiltInputWidget->setKeyInputVisibility(false); m_tiltInputWidget->setInputSource(m_xypad->inputSource(VCXYPad::tiltInputSourceId)); m_tiltInputWidget->setWidgetPage(m_xypad->page()); m_tiltInputWidget->emitOddValues(true); m_tiltInputWidget->show(); m_extInputLayout->addWidget(m_tiltInputWidget); connect(m_tiltInputWidget, SIGNAL(autoDetectToggled(bool)), this, SLOT(slotTiltAutoDetectToggled(bool))); connect(m_tiltInputWidget, SIGNAL(inputValueChanged(quint32,quint32)), this, SLOT(slotTiltInputValueChanged(quint32,quint32))); m_widthInputWidget = new InputSelectionWidget(m_doc, this); m_widthInputWidget->setTitle(tr("Width")); m_widthInputWidget->setKeyInputVisibility(false); m_widthInputWidget->setInputSource(m_xypad->inputSource(VCXYPad::widthInputSourceId)); m_widthInputWidget->setWidgetPage(m_xypad->page()); m_widthInputWidget->show(); m_sizeInputLayout->addWidget(m_widthInputWidget); m_heightInputWidget = new InputSelectionWidget(m_doc, this); m_heightInputWidget->setTitle(tr("Height")); m_heightInputWidget->setKeyInputVisibility(false); m_heightInputWidget->setInputSource(m_xypad->inputSource(VCXYPad::heightInputSourceId)); m_heightInputWidget->setWidgetPage(m_xypad->page()); m_heightInputWidget->show(); m_sizeInputLayout->addWidget(m_heightInputWidget); /******************************************************************** * Fixtures page ********************************************************************/ slotSelectionChanged(NULL); fillFixturesTree(); connect(m_percentageRadio, SIGNAL(clicked(bool)), this, SLOT(slotPercentageRadioChecked())); connect(m_degreesRadio, SIGNAL(clicked(bool)), this, SLOT(slotDegreesRadioChecked())); connect(m_dmxRadio, SIGNAL(clicked(bool)), this, SLOT(slotDMXRadioChecked())); /******************************************************************** * Presets page ********************************************************************/ m_presetInputWidget = new InputSelectionWidget(m_doc, this); m_presetInputWidget->setCustomFeedbackVisibility(true); m_presetInputWidget->setWidgetPage(m_xypad->page()); m_presetInputWidget->show(); m_presetInputLayout->addWidget(m_presetInputWidget); connect(m_presetInputWidget, SIGNAL(inputValueChanged(quint32,quint32)), this, SLOT(slotInputValueChanged(quint32,quint32))); connect(m_presetInputWidget, SIGNAL(keySequenceChanged(QKeySequence)), this, SLOT(slotKeySequenceChanged(QKeySequence))); connect(m_addPositionButton, SIGNAL(clicked(bool)), this, SLOT(slotAddPositionClicked())); connect(m_addEfxButton, SIGNAL(clicked(bool)), this, SLOT(slotAddEFXClicked())); connect(m_addSceneButton, SIGNAL(clicked(bool)), this, SLOT(slotAddSceneClicked())); connect(m_addFxGroupButton, SIGNAL(clicked(bool)), this, SLOT(slotAddFixtureGroupClicked())); connect(m_removePresetButton, SIGNAL(clicked()), this, SLOT(slotRemovePresetClicked())); connect(m_moveUpPresetButton, SIGNAL(clicked()), this, SLOT(slotMoveUpPresetClicked())); connect(m_moveDownPresetButton, SIGNAL(clicked()), this, SLOT(slotMoveDownPresetClicked())); connect(m_presetNameEdit, SIGNAL(textEdited(QString const&)), this, SLOT(slotPresetNameEdited(QString const&))); connect(m_presetsTree, SIGNAL(itemClicked(QTreeWidgetItem*,int)), this, SLOT(slotPresetSelectionChanged())); m_xyArea = new VCXYPadArea(this); //m_xyArea->setFixedSize(140, 140); m_xyArea->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); m_xyArea->setMode(Doc::Operate); m_presetLayout->addWidget(m_xyArea); connect(m_xyArea, SIGNAL(positionChanged(QPointF)), this, SLOT(slotXYPadPositionChanged(QPointF))); foreach(const VCXYPadPreset *preset, m_xypad->presets()) { m_presetList.append(new VCXYPadPreset(*preset)); if (preset->m_id > m_lastAssignedID) m_lastAssignedID = preset->m_id; } updatePresetsTree(); QSettings settings; QVariant var = settings.value(SETTINGS_GEOMETRY); if (var.isValid() == true) restoreGeometry(var.toByteArray()); AppUtil::ensureWidgetIsVisible(this); m_doc->masterTimer()->registerDMXSource(this, "XYPadCfg"); }