0031939: Coding - correction of spelling errors in comments [part 2]
[occt.git] / tools / ShapeView / ShapeView_Window.hxx
1 // Created on: 2017-06-16
2 // Created by: Natalia ERMOLAEVA
3 // Copyright (c) 2017 OPEN CASCADE SAS
4 //
5 // This file is part of Open CASCADE Technology software library.
6 //
7 // This library is free software; you can redistribute it and/or modify it under
8 // the terms of the GNU Lesser General Public License version 2.1 as published
9 // by the Free Software Foundation, with special exception defined in the file
10 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
11 // distribution for complete text of the license and disclaimer of any warranty.
12 //
13 // Alternatively, this file may be used under the terms of Open CASCADE
14 // commercial license or contractual agreement. 
15
16 #ifndef ShapeView_Window_H
17 #define ShapeView_Window_H
18
19 #include <Standard.hxx>
20 #include <TCollection_AsciiString.hxx>
21 #include <inspector/TInspectorAPI_PluginParameters.hxx>
22 #include <TopoDS_Shape.hxx>
23
24 #include <Standard_WarningsDisable.hxx>
25 #include <QItemSelection>
26 #include <QList>
27 #include <QModelIndexList>
28 #include <QObject>
29 #include <QPoint>
30 #include <QString>
31 #include <QTreeView>
32 #include <Standard_WarningsRestore.hxx>
33
34 class View_Window;
35
36 class ViewControl_PropertyView;
37
38 class QAction;
39 class QDockWidget;
40 class QMainWindow;
41 class QWidget;
42
43 //! \class ShapeView_Window
44 //! Window that unites all ShapeView controls.
45 class ShapeView_Window : public QObject
46 {
47   Q_OBJECT
48 public:
49
50   //! Constructor
51   Standard_EXPORT ShapeView_Window (QWidget* theParent);
52
53   //! Destructor
54   Standard_EXPORT virtual ~ShapeView_Window();
55
56   //! Provides the container with a parent where this container should be inserted.
57   //! If Qt implementation, it should be QWidget with QLayout set inside
58   //! \param theParent a parent class
59   Standard_EXPORT void SetParent (void* theParent);
60
61   //! Sets parameters container, it should be used when the plugin is initialized or in update content
62   //! \param theParameters a parameters container
63   void SetParameters (const Handle(TInspectorAPI_PluginParameters)& theParameters) { myParameters = theParameters; }
64
65   //! Provides container for actions available in inspector on general level
66   //! \param theMenu if Qt implementation, it is QMenu object
67   Standard_EXPORT virtual void FillActionsMenu (void* theMenu);
68
69   //! Returns plugin preferences: dock widgets state, tree view columns.
70   //! \param theItem container of preference elements
71   Standard_EXPORT void GetPreferences (TInspectorAPI_PreferencesDataMap& theItem);
72
73   //! Applies plugin preferences
74   //! \param theItem container of preference elements
75   Standard_EXPORT void SetPreferences (const TInspectorAPI_PreferencesDataMap& theItem);
76
77   //! Applies parameters to Init controls, opens files if there are in parameters, updates OCAF tree view model
78   Standard_EXPORT void UpdateContent();
79
80   //! Returns main control
81   QMainWindow* GetMainWindow() const { return myMainWindow; }
82
83   //! Returns current tree view
84   QTreeView* GetTreeView() const { return myTreeView; }
85
86   //! Removes all shapes in tree view model, remove all stored BREP files
87   Standard_EXPORT void RemoveAllShapes();
88
89 protected:
90   //! Appends shape into tree view model
91   //! \param theShape a shape instance
92   Standard_EXPORT void addShape (const TopoDS_Shape& theShape);
93
94 private:
95
96   //! Fills controls of the plugin by parameters:
97   //! - Fine AIS_InteractiveObject and fills View if it if it differs from the current context
98   //! \param theParameters a parameters container
99   void Init (NCollection_List<Handle(Standard_Transient)>& theParameters);
100
101   //! Reads Shape from the file name, add Shape into tree view
102   //! \param theFileName BREP file name
103   void OpenFile (const TCollection_AsciiString& theFileName);
104
105 protected slots:
106
107   //! Shows context menu for tree view selected item. It contains expand/collapse actions.
108   //! \param thePosition a clicked point
109   void onTreeViewContextMenuRequested (const QPoint& thePosition);
110
111   //! Processes selection in tree view: make presentation or owner selected in the context if corresponding
112   //! check box is checked
113   //! \param theSelected a selected items
114   //! \param theDeselected a deselected items
115   void onTreeViewSelectionChanged (const QItemSelection& theSelected, const QItemSelection& theDeselected);
116
117   //! Updates visibility states by erase all in context
118   void onEraseAllPerformed();
119
120   //! Sets the shape item exploded
121   void onExplode();
122
123   //! Removes all shapes in tree view
124   void onClearView() { RemoveAllShapes(); }
125
126   //! Loads BREP file and updates tree model to have shape of the file
127   void onLoadFile();
128
129   //! Views BREP files of selected items if exist
130   void onExportToBREP();
131
132   //! Converts file name to Ascii String and perform opening file
133   //! \param theFileName a file name to be opened
134   void onOpenFile(const QString& theFileName) { OpenFile (TCollection_AsciiString (theFileName.toUtf8().data())); }
135
136 protected:
137   //! Creates new action and connect it to the given slot
138   //! \param theText an action text
139   //! \param theSlot a listener method
140   QAction* createAction (const QString& theText, const char* theSlot);
141
142 private:
143
144   QMainWindow* myMainWindow; //!< main control, parent for all ShapeView controls
145
146   QDockWidget* myPropertyPanelWidget; //!< property pane dockable widget
147   ViewControl_PropertyView* myPropertyView; //!< property control to display model item values if exist
148
149   View_Window* myViewWindow; //!< OCC 3d view to visualize presentations
150   QTreeView* myTreeView; //!< tree view visualized shapes
151
152   Handle(TInspectorAPI_PluginParameters) myParameters; //!< plugins parameters container
153 };
154
155 #endif