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)); } }
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* pqMakeCreatableForm(plCreatable* pCre, QWidget* parent, int forceType) { int type = (forceType == -1) ? pCre->ClassIndex() : forceType; if ((type & kPRC_Type) != 0) return new QPrcEditor(pCre, parent); if ((type & kTargets_Type) != 0) return new QTargetList(pCre, parent); if ((type & kHex_Type) != 0) return new QHexViewer(pCre, parent); switch (type) { // Keyed Object types case k2WayWinAudible: return new QWinAudible(pCre, parent); case kAudible: return new QAudible(pCre, parent); case kAudibleNull: return new QAudible(pCre, parent); case kAudioInterface: return new QAudioInterface(pCre, parent); case kCollisionDetector: return new QCollisionDetector(pCre, parent); case kCoordinateInterface: return new QCoordinateInterface(pCre, parent); case kCubicEnvironmap: return new QCubicEnvironmap(pCre, parent); case kDetectorModifier: return new QDetectorModifier(pCre, parent); case kDirectShadowMaster: return new QShadowMaster(pCre, parent); case kDrawInterface: return new QDrawInterface(pCre, parent); case kDynamicTextMap: return new QDynamicTextMap(pCre, parent); case kFadeOpacityMod: return new QFadeOpacityMod(pCre, parent); case kInterfaceInfoModifier: return new QInterfaceInfoModifier(pCre, parent); case kGMaterial: return new QMaterial(pCre, parent); case kGUIButtonMod: return new QGUIButtonMod(pCre, parent); case kGUICheckBoxCtrl: return new QGUICheckBoxCtrl(pCre, parent); case kGUIClickMapCtrl: return new QGUIClickMapCtrl(pCre, parent); case kGUIControlMod: return new QGUIControlMod(pCre, parent); case kGUIDialogMod: return new QGUIDialogMod(pCre, parent); case kGUIDragBarCtrl: return new QGUIControlMod(pCre, parent); case kGUIDraggableMod: return new QGUIDraggableMod(pCre, parent); case kGUIDynDisplayCtrl: return new QGUIDynDisplayCtrl(pCre, parent); case kGUIEditBoxMod: return new QGUIControlMod(pCre, parent); case kGUIKnobCtrl: return new QGUIKnobCtrl(pCre, parent); case kGUIListBoxMod: return new QGUIListBoxMod(pCre, parent); case kGUIMenuItem: return new QGUIMenuItem(pCre, parent); case kGUIMultiLineEditCtrl: return new QGUIMultiLineEditCtrl(pCre, parent); case kGUIPopUpMenu: return new QGUIPopUpMenu(pCre, parent); case kGUIProgressCtrl: return new QGUIProgressCtrl(pCre, parent); case kGUIRadioGroupCtrl: return new QGUIRadioGroupCtrl(pCre, parent); case kGUISkin: return new QGUISkin(pCre, parent); case kGUITextBoxMod: return new QGUITextBoxMod(pCre, parent); case kGUIUpDownPairMod: return new QGUIUpDownPairMod(pCre, parent); case kImageLibMod: return new QImageLibMod(pCre, parent); case kLayer: return new QLayer(pCre, parent); case kLayerAnimation: return new QLayerAnimation(pCre, parent); case kLayerAVI: return new QLayerMovie(pCre, parent); case kLayerBink: return new QLayerMovie(pCre, parent); case kLayerDepth: return new QLayer(pCre, parent); case kLayerLinkAnimation: return new QLayerLinkAnimation(pCre, parent); case kLayerMovie: return new QLayerMovie(pCre, parent); case kLayerSDLAnimation: return new QLayerSDLAnimation(pCre, parent); case kMaintainersMarkerModifier: return new QMaintainersMarkerModifier(pCre, parent); case kMipmap: return new QMipmap(pCre, parent); case kMsgForwarder: return new QMsgForwarder(pCre, parent); case kMultistageBehMod: return new QMultistageBehMod(pCre, parent); case kOneShotMod: return new QOneShotMod(pCre, parent); case kPanicLinkRegion: return new QCollisionDetector(pCre, parent); case kPickingDetector: return new QDetectorModifier(pCre, parent); case kPointShadowMaster: return new QShadowMaster(pCre, parent); case kPythonFileMod: return new QPythonFileMod(pCre, parent); case kSceneNode: return new QSceneNode(pCre, parent); case kSceneObject: return new QSceneObject(pCre, parent); case kShadowMaster: return new QShadowMaster(pCre, parent); case kSimulationInterface: return new QSimulationInterface(pCre, parent); case kSound: return new QWinSound(pCre, parent); case kSoundBuffer: return new QSoundBuffer(pCre, parent); case kSpawnModifier: return new QSpawnModifier(pCre, parent); case kSubworldRegionDetector: return new QCollisionDetector(pCre, parent); case kSynchedObject: return new QSynchedObject(pCre, parent); case kWinAudible: return new QWinAudible(pCre, parent); case kWin32LinkSound: return new QWin32Sound(pCre, parent); case kWin32Sound: return new QWin32Sound(pCre, parent); case kWin32StaticSound: return new QWin32Sound(pCre, parent); case kWin32StreamingSound: return new QWin32Sound(pCre, parent); // Non-Keyed Object types case kAnimStage: return new QAnimStage(pCre, parent); case kAnimTimeConvert: return new QAnimTimeConvert(pCre, parent); case kATCEaseCurve: return new QATCEaseCurve(pCre, parent); case kConstAccelEaseCurve: return new QATCEaseCurve(pCre, parent); case kSplineEaseCurve: return new QATCEaseCurve(pCre, parent); // Preview meta-types case kPreviewMipmap: return new QMipmap_Preview(pCre, parent); case kPreviewSceneObject: return new QSceneObj_Preview(pCre, parent); default: if ((type & 0x1000) == 0) { return new QPrcEditor(pCre, parent); } else { QMessageBox msgBox(QMessageBox::Information, parent->tr("Oops"), parent->tr("No previewer is currently available for %1") .arg(pqGetFriendlyClassName(type)), QMessageBox::Ok, parent); msgBox.exec(); } return NULL; } }
/* 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))); }