RGBMatrixEditor::RGBMatrixEditor(QWidget* parent, RGBMatrix* mtx, Doc* doc) : QWidget(parent) , m_doc(doc) , m_matrix(mtx) , m_speedDials(NULL) , m_scene(new QGraphicsScene(this)) , m_previewTimer(new QTimer(this)) , m_previewIterator(0) , m_previewStep(0) { Q_ASSERT(doc != NULL); Q_ASSERT(mtx != NULL); setupUi(this); // Set a nice gradient backdrop m_scene->setBackgroundBrush(Qt::darkGray); QLinearGradient gradient(200, 200, 200, 2000); gradient.setSpread(QGradient::ReflectSpread); m_scene->setBackgroundBrush(gradient); connect(m_previewTimer, SIGNAL(timeout()), this, SLOT(slotPreviewTimeout())); connect(m_doc, SIGNAL(modeChanged(Doc::Mode)), this, SLOT(slotModeChanged(Doc::Mode))); connect(m_doc, SIGNAL(fixtureGroupAdded(quint32)), this, SLOT(slotFixtureGroupAdded())); connect(m_doc, SIGNAL(fixtureGroupRemoved(quint32)), this, SLOT(slotFixtureGroupRemoved())); connect(m_doc, SIGNAL(fixtureGroupChanged(quint32)), this, SLOT(slotFixtureGroupChanged(quint32))); init(); slotModeChanged(m_doc->mode()); // Set focus to the editor m_nameEdit->setFocus(); }
bool Doc::addFixtureGroup(FixtureGroup* grp, quint32 id) { Q_ASSERT(grp != NULL); // No ID given, this method can assign one if (id == FixtureGroup::invalidId()) id = createFixtureGroupId(); if (m_fixtureGroups.contains(id) == true || id == FixtureGroup::invalidId()) { qWarning() << Q_FUNC_INFO << "a fixture group with ID" << id << "already exists!"; return false; } else { grp->setId(id); m_fixtureGroups[id] = grp; /* Patch fixture group change signals thru Doc */ connect(grp, SIGNAL(changed(quint32)), this, SLOT(slotFixtureGroupChanged(quint32))); emit fixtureGroupAdded(id); setModified(); return true; } }