VR-Forces 4.0.4 Class Documentation
include/vrvCoreQt/DtElementEditorWidget.h
Go to the documentation of this file.
00001 /******************************************************************************
00002 ** Copyright (c) 2012 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 ******************************************************************************/
00005 
00009 
00010 #pragma once
00011 
00012 #include <vrvCoreQt/vrvCoreQt.h>
00013 #include <vrvCoreQt/DtElementEditorInterface.h>
00014 #include <vrvCore/DtElementDefinitionManager.h>
00015 #include <vrvCore/DtStateVisualizer.h>
00016 #include <vrvUtil/signalslib.h>
00017 #include <vrvUtil/DtUnicode.h>
00018 
00019 #include <QtGui/QWidget>
00020 #include <QtCore/QMap>
00021 #include <boost/bind.hpp>
00022 #include <boost/signals.hpp>
00023 
00024 class QComboBox;
00025 class QHBoxLayout;
00026 class QLabel;
00027 class QPushButton;
00028 class QSplitter;
00029 class QTreeWidget;
00030 class QTreeWidgetItem;
00031 class QVBoxLayout;
00032 class QTextEdit;
00033 
00034 namespace makVrv
00035 {
00036    class DtElementEditorLogic;
00037    class DtPersistenceControlsInterface;
00038    
00041    class DT_DLL_VRVCOREQT DtElementEditorWidget : public QWidget, 
00042       public DtElementEditorInterface
00043    {
00044       Q_OBJECT
00045    public:
00046 
00048       DtElementEditorWidget(
00049          DtElementDefinitionTypeManager::ElementDefinitionType type,
00050          DtStateVisualizer::Type visType,
00051          DtDe& de, QWidget* parent, 
00052          DtPersistenceControlsInterface* persistenceToolbar);
00053 
00055       ~DtElementEditorWidget();
00056 
00058       virtual void activate();
00059 
00061       virtual void deactivate();
00062       
00064 
00065       virtual void changeElementsStart();
00066       virtual void addElement(const DtUnicode& name);
00067       virtual void addElement(const DtUnicode& name, const DtUnicode& parentName);
00068       virtual void removeElement(const DtUnicode& name);
00069       virtual void changeElementsStop();
00070       virtual void clearElements();
00071       virtual void selectElement(const DtUnicode& name);
00072 
00073       virtual void setModelSets(const std::vector<DtUnicode>& modelSets);
00074       virtual void setCurrentModelSet(int index);
00075 
00076       virtual void changeDefinitionStart();
00077       virtual void clearDefinitions();
00078       virtual void addDefinition(int index, const DtUnicode& name, bool inherited);
00079       virtual void removeDefinition(int index);
00080       virtual void changeDefinitionStop();
00081 
00082       virtual void changeAttributeStart();     
00083       virtual void addAttribute(int defIndex, const std::string& name, 
00084          const DtUnicode& value, bool inherited);
00085       virtual void removeAttribute(int defIndex, const std::string& name);
00086       virtual void changeAttributeStop();
00087       virtual void selectAttribute(int defIndex, const std::string& name);
00088       virtual void updateAttribute(int defIndex, const std::string& name,
00089          const DtUnicode& value);
00090 
00091       QTreeWidgetItem* findAttributeItem( int defIndex, const std::string& name);
00092       virtual void setAttributeDescription(const DtUnicode& desc);
00093       virtual void createAttributeEditor(int defIndex, const std::string& name,
00094          const std::string& attrClass);
00095       virtual void destroyAttributeEditor(int defIndex, const std::string& name);
00096       
00097       virtual std::string chooseNewVisualizerDefinitionType();
00098       virtual int chooseNewAttributeName(const std::vector< std::pair< std::string, DtUnicode> >& nameTypePairs);
00099 
00101       virtual void setRemoveElementEnabled( bool b );
00102 
00104       virtual void setAddVisualDefEnabled( bool b );
00105 
00107       virtual void setRemoveVisualDefEnabled( bool b );
00108 
00110       virtual void setAddAttributeEnabled( bool b );
00111 
00113       virtual void setRemoveAttributeEnabled( bool b );
00114 
00116       virtual void showAddedElements(std::vector<DtUnicode>& addedNames,
00117          std::vector<DtUnicode>& skippedNames);
00118 
00120 
00121    protected:
00122 
00123       void setupGui();
00124 
00127       QString nameOfSelectedElement() const;
00128 
00129       //Utility function.
00130       int indexOfSelectedVisualizer();
00131 
00134       QString nameOfSelectedAttribute() const;
00135 
00136    public slots:
00137 
00138       void slot_currentElementItemChanged ( QTreeWidgetItem * current, 
00139          QTreeWidgetItem * previous );
00140 
00141       void slot_currentVisualizerDefItemChanged ( QTreeWidgetItem * current,
00142          QTreeWidgetItem * previous );
00143 
00144       void slot_addElementDefinition();
00145       void slot_removeElementDefinition();
00146       void slot_renameElementDefinition();
00147 
00148       void slot_addVisualizerDef();
00149       void slot_removeVisualizerDef();
00150       
00151       void slot_addAttribute();
00152       void slot_removeAttribute();
00153       void slot_removeOverrideAttribute();
00154 
00155       void slot_modelSetChanged(int index);
00156       void destroyEditors();
00157 
00158    protected:
00159 
00160       DtDe& myDe;
00161       DtElementDefinitionTypeManager::ElementDefinitionType myType;
00162       DtStateVisualizer::Type myVisType;
00163       DtElementEditorLogic* myLogic;
00164       QMap<QString,QTreeWidgetItem*> myCacheMap;
00165 
00166       QList<QTreeWidgetItem*> myTopItemCache;
00167       QList<QTreeWidgetItem*> myDeleteCache;
00168       QList<QTreeWidgetItem*> myVisualizerDefinitionTreeItemDeleteWidgetCache;
00169 
00170       QVBoxLayout* myMainLayout;
00171       QSplitter* mySplitter;
00172       QWidget* myLeftWidgetPane;
00173       QVBoxLayout* myLeftWidgetLayout;
00174       QWidget* myRightWidgetPane;
00175       QVBoxLayout* myRightWidgetLayout;
00176 
00177       QLabel* myElementDefinitionLabel;
00178       QTreeWidget* myTreeWidget;
00179 
00180       QHBoxLayout* myElementButtonLayout;
00181       QPushButton* myAddElementButton;
00182       QPushButton* myRemoveElementButton;
00183       QPushButton* myRenameElementButton;
00184 
00185       QHBoxLayout* myVisualizerDefinitionButtonLayout;
00186       QPushButton* myAddVisualizerDefButton;
00187       QPushButton* myRemoveVisualizerDefButton;
00188       QPushButton* myAddVisualizerAttributeButton;
00189       QPushButton* myRemoveVisualizerAttributeButton;
00190       QPushButton* myRemoveLocalOverrideVisualizerButton;
00191       QLabel* myVisualDefinitionLabel;
00192 
00193       QHBoxLayout* myModelSetLayout;
00194       QLabel* myModelSetLabel;
00195       QComboBox* myModelSetComboBox;
00196       QTreeWidget* myVisualizerDefinitionTreeWidget;
00197       QTextEdit* myDescriptionText;
00198 
00199       DtPersistenceControlsInterface* myPersistenceToolbar;
00200    };
00201 }

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)