void QMultistageBehMod::stageContextMenu(const QPoint& pos) { plMultistageBehMod* obj = plMultistageBehMod::Convert(fCreatable); QMenu menu(this); QAction* addObjItem = menu.addAction(tr("Add Stage...")); QAction* delObjItem = menu.addAction(tr("Remove Stage")); if (fStages->currentItem() == NULL) delObjItem->setEnabled(false); QAction* sel = menu.exec(fStages->viewport()->mapToGlobal(pos)); if (sel == addObjItem) { plAnimStage* stage = new plAnimStage(); int id = obj->getStages().getSize(); QTreeWidgetItem* item = new QTreeWidgetItem(fStages, QStringList() << QString("%1").arg(id) << pqGetFriendlyClassName(stage->ClassIndex())); item->setIcon(0, pqGetTypeIcon(stage->ClassIndex())); obj->addStage(stage); } else if (sel == delObjItem) { int idx = fStages->indexOfTopLevelItem(fStages->currentItem()); QTreeWidgetItem* item = fStages->takeTopLevelItem(idx); delete item; obj->delStage(idx); } }
void QKeyList::addKey(plKey key) { QTreeWidgetItem* item = new QTreeWidgetItem(this, QStringList() << ~key->getName() << pqGetFriendlyClassName(key->getType())); item->setIcon(0, pqGetTypeIcon(key->getType())); fKeys << key; }
QCreatable::QCreatable(plCreatable* pCre, int type, QWidget* parent) : QWidget(parent), fCreatable(pCre), fForceType(type) { setAttribute(Qt::WA_DeleteOnClose); QIcon ico = pqGetTypeIcon(type); if (!ico.isNull()) setWindowIcon(ico); hsKeyedObject* ko = hsKeyedObject::Convert(fCreatable, false); if (ko != NULL && ko->getKey().Exists()) { setWindowTitle(pqGetFriendlyClassName(type) + ": " + ~ko->getKey()->getName()); } else { setWindowTitle(pqGetFriendlyClassName(type)); } }
/* QGUIRadioGroupCtrl */ QGUIRadioGroupCtrl::QGUIRadioGroupCtrl(plCreatable* pCre, QWidget* parent) : QCreatable(pCre, kGUIRadioGroupCtrl, parent) { pfGUIRadioGroupCtrl* ctrl = pfGUIRadioGroupCtrl::Convert(fCreatable); fControlModLink = new QCreatableLink(this, false); fControlModLink->setText(tr("GUI Control Common Properties")); fControlModLink->setCreatable(ctrl); fControlModLink->setForceType(kGUIControlMod); QGroupBox* grpFlags = new QGroupBox(tr("Flags"), this); fModFlagAllowNoSelection = new QCheckBox(tr("Allow No Selection"), grpFlags); QGridLayout* flagLayout = new QGridLayout(grpFlags); flagLayout->setContentsMargins(8, 8, 8, 8); flagLayout->setVerticalSpacing(0); flagLayout->setHorizontalSpacing(8); flagLayout->addWidget(fModFlagAllowNoSelection, 0, 0); fModFlagAllowNoSelection->setChecked(ctrl->getFlag(pfGUIRadioGroupCtrl::kAllowNoSelection)); fControls = new QKeyList(ctrl->getKey(), this); fDefaultValue = new QComboBox(this); for (size_t i=0; i<ctrl->getControls().size(); i++) { fControls->addKey(ctrl->getControls()[i]); fDefaultValue->addItem(pqGetTypeIcon(ctrl->getControls()[i]->getType()), ~ctrl->getControls()[i]->getName()); } fDefaultValue->setCurrentIndex(ctrl->getDefaultValue()); QGridLayout* layout = new QGridLayout(this); layout->setContentsMargins(8, 8, 8, 8); layout->addWidget(fControlModLink, 0, 0, 1, 2); layout->addWidget(grpFlags, 1, 0, 1, 2); layout->addItem(new QSpacerItem(0, 8, QSizePolicy::Minimum, QSizePolicy::Minimum), 2, 0, 1, 2); layout->addWidget(new QLabel(tr("Controls:"), this), 3, 0, 1, 2); layout->addWidget(fControls, 4, 0, 1, 2); layout->addWidget(new QLabel(tr("Default:"), this), 5, 0); layout->addWidget(fDefaultValue, 5, 1); connect(fControls, SIGNAL(itemAdded(plKey)), this, SLOT(controlAdded(plKey))); connect(fControls, SIGNAL(itemRemoved(int)), this, SLOT(controlRemoved(int))); fControls->adjustColumns(); }
void QGUIRadioGroupCtrl::controlAdded(plKey ctrl) { fDefaultValue->addItem(pqGetTypeIcon(ctrl->getType()), ~ctrl->getName()); }
/* QMultistageBehMod */ QMultistageBehMod::QMultistageBehMod(plCreatable* pCre, QWidget* parent) : QCreatable(pCre, kMultistageBehMod, parent) { plMultistageBehMod* obj = plMultistageBehMod::Convert(fCreatable); fSynchObjLink = new QCreatableLink(this, false); fSynchObjLink->setText(tr("Synch Flags")); fSynchObjLink->setCreatable(obj); fSynchObjLink->setForceType(kSynchedObject); QGroupBox* grpFlags = new QGroupBox(tr("Flags"), this); QGridLayout* layFlags = new QGridLayout(grpFlags); layFlags->setVerticalSpacing(0); layFlags->setHorizontalSpacing(8); fFreezePhys = new QCheckBox(tr("Freeze Physics"), grpFlags); fFreezePhys->setChecked(obj->getFreezePhys()); fSmartSeek = new QCheckBox(tr("Smart Seek"), grpFlags); fSmartSeek->setChecked(obj->getSmartSeek()); fReverseControls = new QCheckBox(tr("Reverse Controls on Release"), grpFlags); fReverseControls->setChecked(obj->getReverseFBControlsOnRelease()); layFlags->addWidget(fFreezePhys, 0, 0); layFlags->addWidget(fSmartSeek, 1, 0); layFlags->addWidget(fReverseControls, 2, 0); QTabWidget* listTabs = new QTabWidget(this); fStages = new QTreeWidget(listTabs); fStages->setColumnCount(2); fStages->setUniformRowHeights(true); fStages->setRootIsDecorated(false); fStages->headerItem()->setText(0, tr("Idx")); fStages->headerItem()->setText(1, tr("Type")); fStages->setContextMenuPolicy(Qt::CustomContextMenu); for (size_t i=0; i<obj->getStages().getSize(); i++) { plAnimStage* stage = obj->getStages()[i]; QTreeWidgetItem* item = new QTreeWidgetItem(fStages, QStringList() << QString("%1").arg(i) << pqGetFriendlyClassName(stage->ClassIndex())); item->setIcon(0, pqGetTypeIcon(stage->ClassIndex())); } fReceivers = new QKeyList(obj->getKey(), listTabs); for (size_t i=0; i<obj->getReceivers().getSize(); i++) fReceivers->addKey(obj->getReceivers()[i]); listTabs->addTab(fStages, tr("Animation Stages")); listTabs->addTab(fReceivers, tr("Receivers")); QGridLayout* layout = new QGridLayout(this); layout->setContentsMargins(8, 8, 8, 8); layout->addWidget(fSynchObjLink, 0, 0); layout->addWidget(grpFlags, 1, 0); layout->addWidget(listTabs, 2, 0); fStages->resizeColumnToContents(1); fStages->resizeColumnToContents(0); fReceivers->adjustColumns(); connect(fStages, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(stageContextMenu(const QPoint&))); connect(fStages, SIGNAL(itemActivated(QTreeWidgetItem*, int)), this, SLOT(activateStageItem(QTreeWidgetItem*, int))); }