VR-Forces 4.0.4 Class Documentation
include/entityEditorImpl/displayDefinitionWidget.h
Go to the documentation of this file.
00001 /*********************************************************************
00002 ** Copyright (c) 2012 MaK Technologies, Inc.
00003 ** All rights reserved.
00004 *********************************************************************/
00005 /*********************************************************************
00006 ** $RCSfile: displayDefinitionWidget.h,v $ $Revision: 1.21 $ $State: Exp $
00007 *********************************************************************/
00008 
00011 #pragma once
00012 
00013 #include <vrvUtil/signalslib.h>
00014 #include "entityEditorImpl/entityEditorImplDefines.h"
00015 #include "entityEditorImpl/visualEditors.h"
00016 #include "entityEditorImpl/uiElement.h"
00017 #include <ngutil/entityMapperKey.h>
00018 #include <vlpi/entityType.h>
00019 
00020 #include <vrvCore/DtWindow.h> 
00021 #include <vrvCore/DtSelectionManager.h> 
00022 
00023 #include <QWidget>
00024 
00025 class DtVrfObjectParameters;
00026 class DtModelSetEntry;
00027 class DtUiElementEvent;
00028 class QComboBox;
00029 class QHBoxLayout;
00030 class QGroupBox;
00031 class QLabel;
00032 class QPushButton;
00033 class DtModelDefinitionEditor;
00034 class DtSymbolEditor;
00035 class DtMarkerVisualizer;
00036 class QCheckBox;
00037 
00038 namespace makVrf
00039 {
00040    class DtEntityFacadeCollection;
00041 }
00042 
00043 namespace makVrv
00044 {
00045    class DtDe;
00046    class DtPluginManager;
00047    class DtOsgAdapterQtWidget;
00048    class DtElementDefinitionManager;
00049    class DtElementDefinitionNew;
00050    class DtChannelManager;
00051    class DtChannel;
00052    class DtObserver;
00053 }
00054 
00056 class DT_DLL_entityeditorimpl DtDisplayWidget : public QWidget
00057 {
00058    Q_OBJECT
00059 
00060 public:
00061 
00063    DtDisplayWidget(makVrv::DtDe* de, QWidget * parent = 0, Qt::WindowFlags f = 0 );
00064 
00066    virtual ~DtDisplayWidget();
00067 
00068    makVrv::DtOsgAdapterQtWidget* adapterWidget();
00069 
00070    virtual void init();
00071 
00072    virtual void buildAdapterWidget();
00073 
00074    virtual void buildTicker();
00075 
00076    const std::vector<makVrv::DtObserver*> observers() const
00077    {
00078       return myObservers;
00079    }
00080 
00081    std::vector<makVrv::DtObserver*> observers()
00082    {
00083       return myObservers;
00084    }
00085 
00086    const std::vector<int>& modelSets() const
00087    {
00088       return myModelSets;
00089    }
00090 
00091    int observerMode(int i) const
00092    {
00093       std::map<int, int>::const_iterator iter = myModeKeyMap.find(i);
00094 
00095       if (iter != myModeKeyMap.end())
00096       {
00097          return iter->second;
00098       }
00099 
00100       return 0;
00101    }
00102 
00103    const std::map<int, int>& modeMap() const
00104    {
00105       return myModeKeyMap;
00106    }
00107 
00108    boost::signal<void ()> signal_channelsInitialized;
00109 
00110 protected:
00111 
00112    virtual void createIg();
00113 
00114    virtual void preIgInitialize();
00115 
00116    virtual void overrideIgFunctionality();
00117 
00118    virtual void igInitialize();
00119 
00120    virtual void postIgInitialize();
00121    virtual void initializeChannels();
00122 
00123    virtual void createChannels();
00124    virtual void resizeEvent( QResizeEvent* event);
00125 
00126 protected:
00127    makVrv::DtDe* myDe;
00128    makVrv::DtOsgAdapterQtWidget* myAdapterWidget;
00129    std::vector<int> myModelSets;
00130    std::map<int, int> myModeKeyMap;
00131    std::vector<makVrv::DtObserver*> myObservers;
00132 };
00133 
00134 class DT_DLL_entityeditorimpl DtDisplayWidgetCreator : public makVrv::DtWindowCreator
00135 {
00136 
00137 public:
00138 
00139    DtDisplayWidgetCreator(DtDisplayWidget* pWidget);
00140 
00142    virtual makVrv::DtWindow* create(makVrv::DtDe& de, makVrv::DtWindowConfiguration& wc);
00143 
00144 protected:
00145 
00146    DtDisplayWidget* myWidget;
00147 
00148 };
00149 
00150 class DT_DLL_entityeditorimpl DtDisplayDefinitionWidget : public QWidget
00151 {
00152    Q_OBJECT
00153 
00154 public:
00155    DtDisplayDefinitionWidget(QWidget* p);
00156 
00157    virtual ~DtDisplayDefinitionWidget();
00158 
00159    virtual void init();
00160 
00161    virtual void edit(const DtEntityMapperKey&, bool move = true, bool fromSelection = false);
00162    virtual void clearContents();
00163 
00164    static DtDisplayDefinitionWidget* create(QWidget*);
00165 
00166    virtual void revertExisting(const DtEntityMapperKey& key);
00167 
00168    virtual void updateStatus();
00169    
00170    virtual void preSimulationModelSetSave();
00171 
00172    virtual void simulationModelSetLoaded();
00173 
00174    virtual void cloneEntry(const DtEntityType& oldType, const DtEntityType& newType, DtModelSetEntry*);
00175    virtual void uiEvent(const DtUiElementEvent&);
00176 
00177 protected:
00178    virtual void postInitialize();
00179 
00182    virtual void setupVisualBases(const makVrv::DtElementDefinitionNew*);
00183 
00184    virtual void setupEditor(int set);
00185 
00186    virtual void createNewEntry(const DtEntityType& newType, DtModelSetEntry* model, const DtEntityType& basedOnType = DtEntityType());
00187 
00188    virtual DtVector visualPlacementFor(int set, const DtString&) const;
00189    virtual double groundHeight(const DtVector&) const;
00190 
00191    virtual void positionToObject(int observer, bool allIs2D);
00192    virtual void createOrUpdatePositionMarker(const DtUiElementEvent&);
00193    virtual void destroyPositionMarker(const DtUiElementEvent&);
00194    virtual void setBoundingVolume(const DtUiElementEvent&);
00195 
00198    virtual void mergeVisualizerAttributes(int modelSet, const makVrv::DtVisualizerDefinitionSet& source, makVrv::DtElementDefinitionNew* target) const;
00199 
00201    virtual void createEntryIfNoEntry(const DtEntityType&);
00202    virtual void createEntityIfNoEntry(const DtEntityType&);
00203    virtual void createAggregateIfNoEntry(const DtEntityType&);
00204 
00205    virtual void createEditors(bool allIs2D);
00206 
00207 public slots:
00208    virtual void forcesModified();
00209    virtual void setMarkerLabelsVisible(bool);
00210    virtual void setBoundingVolumesVisible(bool);
00211 
00212 protected slots:
00213    virtual void visualBaseChanged(int);
00214    virtual void visualizerModified();
00215    virtual void modelDefinitionModified();
00216    virtual void opdEntryAdded(DtVrfObjectParameters* entry, DtModelSetEntry* model);
00217    virtual void markerVisibilityChanged();
00218    virtual void boundingVolumesVisibilityChanged();
00219 
00220 signals:
00221    void visualsModified();
00222    void uiElementEvent(const DtUiElementEvent&);
00223    void redisplayListIcons();
00224 
00225 public:
00226    DtDisplayWidget*           myDisplayWidget;
00227    QLabel*                    myVisualBasesLabel;
00228    QComboBox*                 myVisualBases;
00229    QHBoxLayout*               myMainLayout;
00230    QGroupBox*                 myGroupBox;
00231 
00232 protected:
00233    makVrv::DtDe*              myDe;
00234    DtEntityMapperKey          myKey;
00235    QHBoxLayout*               myEditorLayout;
00236    QHBoxLayout*               myTitleLayout;
00237 
00238    typedef std::vector<makVrf::DtEntityFacadeCollection*> Facades;
00239 
00240    Facades myFacades;
00241 
00242    bool myShowingAggregate;
00243    makVrv::DtElementDefinitionNew* myElementDefinition;
00244    makVrv::DtElementDefinitionManager* myManager;
00245 
00246    typedef std::pair<makVrv::DtElementDefinitionManager*, makVrv::DtElementDefinitionNew*> ElementDefinitionPair;
00247    typedef std::map<std::string, ElementDefinitionPair> ElementDefinitionMap;
00248 
00249    ElementDefinitionMap myElementDefinitionMap;
00250 
00251    std::map<int, DtVisualEditor*>   myEditors;
00252    std::vector<QLabel*> myTitles;
00253 
00254    bool myModelDefinitionModified;
00255    bool myEntityModified;
00256    bool myAggregateModified;
00257 
00258    typedef std::pair<DtVector, DtTaitBryan> CameraInfo;
00259    typedef std::map<int, CameraInfo> CameraMap;
00260    CameraMap myCameraInfo;
00261 
00262    typedef std::map<int, DtMarkerVisualizer*> Markers;
00263    Markers myMarkers;
00264 
00265    QCheckBox* myMarkerLabelsVisible;
00266    QCheckBox* myBoundingVolumesVisible;
00267    DtUiElementEvent myLastBoundingVolume;
00268 
00269    bool myHaveWarned;
00270 };

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)