VR-Forces 4.0.4 Class Documentation
include/vrvCoreQt/DtDisplayConfigEditorLogic.h
Go to the documentation of this file.
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  

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)