void VCXYPadProperties::slotEditClicked() { /* Get a list of selected fixtures */ QList <VCXYPadFixture> list(selectedFixtures()); /* Start editor */ VCXYPadFixtureEditor editor(this, list); if (editor.exec() == QDialog::Accepted) { QListIterator <VCXYPadFixture> it(editor.fixtures()); while (it.hasNext() == true) { VCXYPadFixture fxi(it.next()); QTreeWidgetItem* item = fixtureItem(fxi); updateFixtureItem(item, fxi); } } }
void VCXYPadProperties::slotAddClicked() { /* Put all fixtures already present into a list of fixtures that will be disabled in the fixture selection dialog */ QList <GroupHead> disabled; QTreeWidgetItemIterator twit(m_tree); while (*twit != NULL) { QVariant var((*twit)->data(KColumnFixture, Qt::UserRole)); VCXYPadFixture fxi(m_doc, var); disabled << fxi.head(); ++twit; } /* Disable all fixtures that don't have pan OR tilt channels */ QListIterator <Fixture*> fxit(m_doc->fixtures()); while (fxit.hasNext() == true) { Fixture* fixture(fxit.next()); Q_ASSERT(fixture != NULL); // If a channel with pan or tilt group exists, don't disable this fixture if (fixture->channel(QLCChannel::Pan) == QLCChannel::invalid() && fixture->channel(QLCChannel::Tilt) == QLCChannel::invalid()) { // Disable all fixtures without pan or tilt channels disabled << fixture->id(); } else { QVector <QLCFixtureHead> const& heads = fixture->fixtureMode()->heads(); for (int i = 0; i < heads.size(); ++i) { if (heads[i].panMsbChannel() == QLCChannel::invalid() && heads[i].tiltMsbChannel() == QLCChannel::invalid() && heads[i].panLsbChannel() == QLCChannel::invalid() && heads[i].tiltLsbChannel() == QLCChannel::invalid()) { // Disable heads without pan or tilt channels disabled << GroupHead(fixture->id(), i); } } } } /* Get a list of new fixtures to add to the pad */ QTreeWidgetItem* item = NULL; FixtureSelection fs(this, m_doc); fs.setMultiSelection(true); fs.setSelectionMode(FixtureSelection::Heads); fs.setDisabledHeads(disabled); if (fs.exec() == QDialog::Accepted) { QListIterator <GroupHead> it(fs.selectedHeads()); while (it.hasNext() == true) { VCXYPadFixture fxi(m_doc); fxi.setHead(it.next()); item = new QTreeWidgetItem(m_tree); updateFixtureItem(item, fxi); } } if (item != NULL) m_tree->setCurrentItem(item); m_tree->resizeColumnToContents(KColumnFixture); m_tree->resizeColumnToContents(KColumnXAxis); m_tree->resizeColumnToContents(KColumnYAxis); }