EFXEditor::EFXEditor(QWidget* parent, EFX* efx, Doc* doc) : QWidget(parent) , m_doc(doc) , m_efx(efx) , m_previewArea(NULL) , m_points(NULL) , m_speedDials(NULL) { Q_ASSERT(doc != NULL); Q_ASSERT(efx != NULL); setupUi(this); initGeneralPage(); initMovementPage(); // Used for intensity changes m_testTimer.setSingleShot(true); m_testTimer.setInterval(500); connect(&m_testTimer, SIGNAL(timeout()), this, SLOT(slotRestartTest())); connect(m_doc, SIGNAL(modeChanged(Doc::Mode)), this, SLOT(slotModeChanged(Doc::Mode))); createSpeedDials(); // Set focus to the editor m_nameEdit->setFocus(); }
void RGBMatrixEditor::slotPatternActivated(const QString& text) { RGBAlgorithm* algo = RGBAlgorithm::algorithm(m_doc, text); m_matrix->setAlgorithm(algo); m_matrix->calculateColorDelta(); updateExtraOptions(); slotRestartTest(); }
void RGBMatrixEditor::slotImageAnimationActivated(const QString& text) { if (m_matrix->algorithm() != NULL && m_matrix->algorithm()->type() == RGBAlgorithm::Image) { RGBImage* algo = static_cast<RGBImage*> (m_matrix->algorithm()); Q_ASSERT(algo != NULL); algo->setAnimationStyle(RGBImage::stringToAnimationStyle(text)); slotRestartTest(); } }
void RGBMatrixEditor::slotImageEdited() { if (m_matrix->algorithm() != NULL && m_matrix->algorithm()->type() == RGBAlgorithm::Image) { RGBImage* algo = static_cast<RGBImage*> (m_matrix->algorithm()); Q_ASSERT(algo != NULL); algo->setFilename(m_imageEdit->text()); slotRestartTest(); } }
void RGBMatrixEditor::slotTextEdited(const QString& text) { if (m_matrix->algorithm() != NULL && m_matrix->algorithm()->type() == RGBAlgorithm::Text) { RGBText* algo = static_cast<RGBText*> (m_matrix->algorithm()); Q_ASSERT(algo != NULL); algo->setText(text); slotRestartTest(); } }
void RGBMatrixEditor::slotOffsetSpinChanged() { if (m_matrix->algorithm() != NULL && m_matrix->algorithm()->type() == RGBAlgorithm::Text) { RGBText* algo = static_cast<RGBText*> (m_matrix->algorithm()); Q_ASSERT(algo != NULL); algo->setXOffset(m_xOffsetSpin->value()); algo->setYOffset(m_yOffsetSpin->value()); slotRestartTest(); } if (m_matrix->algorithm() != NULL && m_matrix->algorithm()->type() == RGBAlgorithm::Image) { RGBImage* algo = static_cast<RGBImage*> (m_matrix->algorithm()); Q_ASSERT(algo != NULL); algo->setXOffset(m_xOffsetSpin->value()); algo->setYOffset(m_yOffsetSpin->value()); slotRestartTest(); } }
void RGBMatrixEditor::slotEndColorButtonClicked() { QColor col = QColorDialog::getColor(m_matrix->endColor()); if (col.isValid() == true) { m_matrix->setEndColor(col); m_matrix->calculateColorDelta(); QPixmap pm(100, 26); pm.fill(col); m_endColorButton->setIcon(QIcon(pm)); slotRestartTest(); } }
void RGBMatrixEditor::slotFixtureGroupActivated(int index) { QVariant var = m_fixtureGroupCombo->itemData(index); if (var.isValid() == true) { m_matrix->setFixtureGroup(var.toUInt()); slotRestartTest(); } else { m_matrix->setFixtureGroup(FixtureGroup::invalidId()); m_previewTimer->stop(); m_scene->clear(); } }
void RGBMatrixEditor::slotFontButtonClicked() { if (m_matrix->algorithm() != NULL && m_matrix->algorithm()->type() == RGBAlgorithm::Text) { RGBText* algo = static_cast<RGBText*> (m_matrix->algorithm()); Q_ASSERT(algo != NULL); bool ok = false; QFont font = QFontDialog::getFont(&ok, algo->font(), this); if (ok == true) { algo->setFont(font); slotRestartTest(); } } }
void RGBMatrixEditor::slotImageButtonClicked() { if (m_matrix->algorithm() != NULL && m_matrix->algorithm()->type() == RGBAlgorithm::Image) { RGBImage* algo = static_cast<RGBImage*> (m_matrix->algorithm()); Q_ASSERT(algo != NULL); QString path = algo->filename(); path = QFileDialog::getOpenFileName(this, tr("Select image"), path, "Images (*.jpg *.xpm *.png *.gif)"); if (path.isEmpty() == false) { algo->setFilename(path); m_imageEdit->setText(path); slotRestartTest(); } } }
EFXEditor::EFXEditor(QWidget* parent, EFX* efx, Doc* doc) : QWidget(parent) , m_doc(doc) , m_efx(efx) , m_previewArea(NULL) , m_points(NULL) , m_speedDials(NULL) { Q_ASSERT(doc != NULL); Q_ASSERT(efx != NULL); setupUi(this); connect(m_speedDial, SIGNAL(toggled(bool)), this, SLOT(slotSpeedDialToggle(bool))); initGeneralPage(); initMovementPage(); // Start new (==empty) scenes from the first tab and ones with something in them // on the first fixture page. if (m_tab->count() == 0) slotTabChanged(KTabGeneral); else m_tab->setCurrentIndex(efxUiState()->currentTab()); /* Tab widget */ connect(m_tab, SIGNAL(currentChanged(int)), this, SLOT(slotTabChanged(int))); // Used for UI parameter changes m_testTimer.setSingleShot(true); m_testTimer.setInterval(500); connect(&m_testTimer, SIGNAL(timeout()), this, SLOT(slotRestartTest())); connect(m_doc, SIGNAL(modeChanged(Doc::Mode)), this, SLOT(slotModeChanged(Doc::Mode))); updateSpeedDials(); // Set focus to the editor m_nameEdit->setFocus(); }
void RGBMatrixEditor::slotBackwardClicked() { m_matrix->setDirection(Function::Backward); m_matrix->calculateColorDelta(); slotRestartTest(); }
void RGBMatrixEditor::slotSingleShotClicked() { m_matrix->setRunOrder(Function::SingleShot); m_matrix->calculateColorDelta(); slotRestartTest(); }
void RGBMatrixEditor::slotPingPongClicked() { m_matrix->setRunOrder(Function::PingPong); m_matrix->calculateColorDelta(); slotRestartTest(); }
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); }