![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2007 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 /****************************************************************************** 00006 ** $RCSfile: DtDisplayConfigEditorLogic.h,v $ $Revision: 1.43 $ $State: Exp $ 00007 ******************************************************************************/ 00008 00012 00013 #ifndef DtDisplayConfigEditorLogic_H_ 00014 #define DtDisplayConfigEditorLogic_H_ 00015 00016 #include <vrvCoreQt/vrvCoreQt.h> 00017 #include <vrvUtil/DtDisplayConfiguration.h> 00018 #include <vrvCore/DtSubjectObserver.h> 00019 #include <map> 00020 #include <QtCore/QString> 00021 #include <QtGui/QStandardItem> 00022 00023 class QStandardItemModel; 00024 class QStandardItem; 00025 class QModelIndex; 00026 class QPoint; 00027 00028 namespace makVrv 00029 { 00030 00031 class DtDe; 00032 class DtDisplayConfigEditorInterface; 00033 class DtIgUserInterface; 00034 00035 template<int TypeId> 00036 class DtConfigItem; 00037 00038 const int IG_TYPE = QStandardItem::UserType + 2; 00039 const int DISPLAY_ENGINE_TYPE = IG_TYPE + 1; 00040 const int WINDOW_TYPE = DISPLAY_ENGINE_TYPE + 1; 00041 const int CHANNEL_TYPE = WINDOW_TYPE + 1; 00042 00043 typedef DtConfigItem<IG_TYPE> DtIgItem; 00044 typedef DtConfigItem<DISPLAY_ENGINE_TYPE> DtDisplayEngineItem; 00045 typedef DtConfigItem<WINDOW_TYPE> DtWindowItem; 00046 typedef DtConfigItem<CHANNEL_TYPE> DtChannelItem; 00047 00048 00058 class DT_DLL_VRVCOREQT DtDisplayConfigEditorLogic : public DtDeObserver, public DtDeCommunicatorObserver 00059 { 00060 00061 public: 00062 00065 static DtDisplayConfigEditorLogic* create(DtDe& de, DtDisplayConfigEditorInterface* iFace); 00066 00068 ~DtDisplayConfigEditorLogic(); 00069 00071 virtual QStandardItemModel* displayTreeModel(); 00072 00073 void realizeNewDisplayEngineConfiguration(const std::string& clientName, 00074 const DtDisplayConfiguration& dec); 00075 00077 void destroyDisplayEngine(const std::string& displayName, bool realized); 00078 00080 void modifyDisplayEngine(const std::string& displayName, bool isRealised, const DtDisplayConfiguration& config); 00081 00083 void addWindow(const std::string& displayName, const DtWindowConfiguration& config,bool realized); 00084 00086 void destroyWindow( const std::string& displayName, const std::string& windowName, bool realized, 00087 DtWindowItem* windowItem); 00088 00090 void modifyWindow(const std::string& displayName, const std::string& windowName, 00091 const DtWindowConfiguration& config, bool isRealized); 00092 00094 void addChannel(const std::string& displayName, const std::string& windowName, 00095 const DtChannelConfiguration& config, bool isRealized); 00096 00098 void destroyChannel(const std::string& displayName, const std::string& windowName, 00099 const std::string& channelName, bool realized); 00100 00102 void modifyChannel(const std::string& displayName, const std::string& windowName, 00103 const std::string& channelName, const DtChannelConfiguration& config, bool realized); 00104 00105 // 00107 // 00108 00109 virtual void slot_activate(DtDe* de); 00110 00111 virtual void slot_deactivate(DtDe* de); 00112 00113 virtual void slot_activate(DtDeCommunicator* igComm); 00114 00115 virtual void slot_deactivate(DtDeCommunicator* igComm); 00116 00117 // 00119 // 00120 00122 00123 00124 00125 virtual void slot_igAdded(const DtDeRecord& igName); 00126 virtual void slot_igRemoved(const std::string& igName); 00127 00128 00129 virtual void slot_displayConfigurationRealized(const std::string& igName, 00130 const std::string& displayConfig); 00131 00132 virtual void slot_displayToBeDestroyed(const std::string& displayName); 00133 00134 virtual void slot_windowAdded(const std::string& displayName, const DtWindowConfiguration& wc); 00135 virtual void slot_windowToBeDestroyed(const std::string& displayName, const std::string& windowName); 00136 virtual void slot_windowModified(const std::string& displayName, const std::string& windowName, 00137 const DtWindowConfiguration& wc); 00138 00139 virtual void slot_channelAdded(const std::string& displayName, const std::string& windowName, 00140 const DtChannelConfiguration& wc); 00141 virtual void slot_channelToBeDestroyed(const std::string& displayName, const std::string& windowName, 00142 const std::string& channelName); 00143 virtual void slot_channelModified(const std::string& displayName, const std::string& windowName, 00144 const std::string& channelName, const DtChannelConfiguration& cc); 00146 00148 void onDisplayTreeSelectionChanged(const QModelIndex& index); 00149 00151 void onDisplayTreeContextMenu(const QModelIndex& index, const QPoint& pos); 00152 00154 void onObserverCreationRequested( const std::string& observerName ); 00155 00156 00157 // 00159 // 00160 00162 00163 void onDelete(const QModelIndex& index); 00164 void onNewDisplayEngine(const QModelIndex& index); 00165 void onNewWindow(const QModelIndex& index); 00166 void onNewChannel(const QModelIndex& index); 00167 void onDisconnectSlaveIg(const QModelIndex& index); 00168 void onSaveDisplayConfig(const QModelIndex& index, std::string filename); 00169 void onLoadDisplayConfig(const QModelIndex& index, std::string filename, QWidget* parent); 00171 00173 00174 00175 void onModifyConfiguration(const QModelIndex& index, const DtWindowConfiguration& config); 00176 void onModifyConfiguration(const QModelIndex& index, const DtDisplayConfiguration& config); 00177 void onModifyConfiguration(const QModelIndex& index, const DtChannelConfiguration& config); 00179 00181 void getChannelList(QStringList& channelListOut); 00183 void getObserverList(QStringList& observerListOut); 00184 00185 protected: 00186 00188 DtDisplayConfigEditorLogic(DtDe& de, DtDisplayConfigEditorInterface* iFace); 00189 00192 void populateDisplayConfigEditor(); 00193 00195 DtIgItem* findIgItem( const QModelIndex& index); 00196 00198 DtDisplayEngineItem* findDisplayEngineItem( const QModelIndex& index); 00199 00201 DtWindowItem* findWindowItem( const QModelIndex& index ); 00202 00203 void addKeyItemPair( QString newKey, QStandardItem* item ); 00204 00205 const DtDisplayConfiguration* findDisplayConfiguration( DtDisplayEngineItem* displayEngineItem ); 00206 const DtDisplayConfiguration* findDisplayConfiguration( const std::string& displayName ); 00207 00208 QString makeIgKey( const std::string &igName ); 00209 QString makeDisplayEngineKey( const std::string &displayName); 00210 QString makeWindowKey( const std::string &displayName, const std::string &windowName); 00211 QString makeChannelKey( const std::string &displayName, const std::string &windowName, 00212 const std::string &channelName); 00213 00214 QString appendToKey( QString displayKey, const std::string& windowName); 00215 00216 DtDisplayConfiguration createNewDisplayEngineConfiguration(); 00217 DtWindowConfiguration createNewWindowConfigurtion(const DtDisplayConfiguration&); 00218 DtChannelConfiguration createNewChannel(const DtWindowConfiguration&); 00219 00221 QStandardItem* addIgItem( const std::string& igName, const std::string& displayName ); 00222 00224 QStandardItem* addDisplayEngineItem(QStandardItem* parent, const QString& parentKey, 00225 const DtDisplayConfiguration& dec); 00226 00229 QStandardItem* addWindowItem(QStandardItem* parent, const QString& parentKey, const std::string& displayName, 00230 const DtWindowConfiguration& wc); 00231 00233 QStandardItem* addChannelItem(QStandardItem* parent, const QString& parentKey, const std::string& displayName, 00234 const DtChannelConfiguration& cc); 00235 00239 void removeItemByKey(const QString& key); 00240 00242 void remapChildItems(QStandardItem* item, const QString& oldParentKey, const QString& newParentKey); 00243 00245 bool getDisplayEngineConfiguration(const std::string& displayName, bool isRealized,DtDisplayConfiguration& dcOut); 00246 00248 bool getWindowConfiguration(const std::string& displayName, const std::string& windowName, bool isRealized, 00249 DtWindowConfiguration& vcOut); 00250 00252 bool getChannelConfiguration(const std::string& displayName, const std::string& windowName, 00253 const std::string& channelName, bool realized,DtChannelConfiguration& ccOut); 00254 00256 const std::string& displayEngineOwner(const std::string& displayName); 00257 00260 int flagsFromSelection( const QModelIndex& index); 00261 00262 protected: 00263 00264 typedef std::map<QString, QStandardItem*> ItemMap; 00265 00266 DtDe& myDe; 00267 DtDisplayConfigEditorInterface* myInterface; 00268 QStandardItemModel* myDisplayTreeModel; 00269 00270 ItemMap myItemMap; 00271 00272 }; 00273 } 00274 00275 #endif 00276