X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_Workshop.h;h=9f02d44621f0bf91fa28322d60fa8d192ff083c8;hb=33fd24909f846d17557ec18aebdc6ac4d34f45f8;hp=79abe20b902c0bb808a765e95119e561818d0ffe;hpb=109611fcd212b3fae262b1fe231388c1cf21fabc;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_Workshop.h b/src/XGUI/XGUI_Workshop.h old mode 100644 new mode 100755 index 79abe20b9..9f02d4462 --- a/src/XGUI/XGUI_Workshop.h +++ b/src/XGUI/XGUI_Workshop.h @@ -16,27 +16,30 @@ #include #include +#ifndef HAVE_SALOME class AppElements_MainWindow; class AppElements_Command; class AppElements_Workbench; +#endif -class XGUI_SelectionMgr; +class XGUI_ActionsMgr; +class XGUI_ContextMenuMgr; class XGUI_Displayer; +class XGUI_ErrorDialog; +class XGUI_ErrorMgr; +class XGUI_ModuleConnector; +class XGUI_ObjectsBrowser; class XGUI_OperationMgr; +class XGUI_PropertyPanel; class XGUI_SalomeConnector; -class XGUI_ObjectsBrowser; -class XGUI_ActionsMgr; -class XGUI_ErrorDialog; class XGUI_SalomeViewer; +class XGUI_SelectionMgr; class XGUI_ViewerProxy; -class XGUI_PropertyPanel; -class XGUI_ContextMenuMgr; -class XGUI_ModuleConnector; class XGUI_WorkshopListener; -class ModuleBase_Operation; class ModuleBase_IModule; class ModuleBase_IViewer; +class ModuleBase_Operation; class QWidget; class QDockWidget; @@ -44,6 +47,7 @@ class QMainWindow; class QAction; + /**\class XGUI_Workshop * \ingroup GUI * \brief Class which defines a configuration of the application (Workshop) and launches it. @@ -61,18 +65,23 @@ Q_OBJECT //! Starting of the application void startApplication(); - // Activates the module controls. Should be called after module creation + /// Activates the module controls. Should be called after module creation void activateModule(); - // Deactivates the module controls. Should be called after module creation + /// Deactivates the module controls. Should be called after module creation void deactivateModule(); +#ifndef HAVE_SALOME //! Returns main window (Desktop) of the application AppElements_MainWindow* mainWindow() const { return myMainWindow; } + //! Creates and adds a new workbench (menu group) with the given name and returns it + AppElements_Workbench* addWorkbench(const QString& theName); +#endif + //! Returns selection manager object XGUI_SelectionMgr* selector() const { @@ -91,6 +100,12 @@ Q_OBJECT return myOperationMgr; } + //! ! Returns error manager. + XGUI_ErrorMgr* errorMgr() const + { + return myErrorMgr; + } + //! ! Returns an actions manager XGUI_ActionsMgr* actionsMgr() const { @@ -109,9 +124,6 @@ Q_OBJECT return myContextMenuMgr; } - //! Creates and adds a new workbench (menu group) with the given name and returns it - AppElements_Workbench* addWorkbench(const QString& theName); - //! Returns an object which provides interface to Salome Module (LightApp_Module) XGUI_SalomeConnector* salomeConnector() const { @@ -127,13 +139,6 @@ Q_OBJECT return mySalomeConnector != 0; } - /// Returns true if the loading data process is started and has not been finished yet - /// \return boolean result - bool isLoadingData() const - { - return myIsLoadingData; - }; - //! Returns Object browser XGUI_ObjectsBrowser* objectBrowser() const { @@ -149,7 +154,7 @@ Q_OBJECT return myViewerProxy; } - /// Returns the module connectory + /// Returns the module connector /// \returns the instance of connector XGUI_ModuleConnector* moduleConnector() const { @@ -163,9 +168,18 @@ Q_OBJECT //! Delete features void deleteObjects(); + //! Returns true if the selected feature can be moved to the position after the current feature + //! \return boolean value + bool canMoveFeature(); + //! Move selected features to be after the current feature void moveObjects(); + //! Returns true if the object can be shaded. If the object is a compsolid result, the method + //! checks subobjects of the result + //! \return boolean value + bool canBeShaded(const ObjectPtr& theObject) const; + //! Returns true if there is at least one selected body/construction/group result //! \return boolean value bool canChangeColor() const; @@ -181,7 +195,7 @@ Q_OBJECT //! Show the given features in 3d Viewer void showOnlyObjects(const QObjectPtrList& theList); - /// Set display mode for the given onjects + /// Set display mode for the given objects /// \param theList a list of displayed objects /// \param theMode a mode to set (see \ref XGUI_Displayer) void setDisplayMode(const QObjectPtrList& theList, int theMode); @@ -192,10 +206,10 @@ Q_OBJECT return myModule; } - /// Returns current directory whic contains data files + /// Returns current directory which contains data files QString currentDataDir() const { return myCurrentDir; } - /// Returns current directory whic contains data files + /// Returns current directory which contains data files void setCurrentDataDir(const QString& theDir) { myCurrentDir = theDir; } /** @@ -206,12 +220,12 @@ Q_OBJECT void saveDocument(const QString& theName, std::list& theFileNames); /** - * If there is an active (uncommited) operation shows a prompt to abort it + * If there is an active (uncommitted) operation shows a prompt to abort it * and performs abortion if user agreed. Returns true if * - operation aborted successfully * - there is no active operation */ - bool isActiveOperationAborted(); + bool abortAllOperations(); //! Delete features. Delete the referenced features. There can be a question with a list of referenced //! objects. @@ -222,7 +236,7 @@ Q_OBJECT //! objects features appear. If the user chose do not continue, the deletion is not performed //! \return the success of the delete bool deleteFeatures(const QObjectPtrList& theList, - const std::set& theIgnoredFeatures, + const std::set& theIgnoredFeatures = std::set(), QWidget* theParent = 0, const bool theAskAboutDeleteReferences = false); @@ -232,11 +246,28 @@ Q_OBJECT /// \param theUpdateViewer a boolean flag to update viewer immediately void deactivateActiveObject(const ObjectPtr& theObject, const bool theUpdateViewer); + /// Returns true if the action of the feature is created to contain Accept/Cancel button + /// \param theFeature a feature + bool isFeatureOfNested(const FeaturePtr& theFeature); + + /// Has to be called in order to display objects with visibility status = true + void synchronizeViewer(); + + /// Has to be called in order to display objects from a cpecifed group with visibility status = true + /// \param theDoc the document for objects synchronisation + /// \param theGroup the group name + /// \param theUpdateViewer update viewer flag + void synchronizeGroupInViewer(const DocumentPtr& theDoc, const std::string& theGroup, bool theUpdateViewer); + + /// A constant string used for "Move to end" command definition + /// It is used for specific processing of Undo/Redo for this command. + static QString MOVE_TO_END_COMMAND; + signals: /// Emitted when selection happens in Salome viewer void salomeViewerSelection(); - /// Emitted when error in applivation happens + /// Emitted when error in application happens void errorOccurred(const QString&); //! the signal about the workshop actions states are updated. @@ -258,32 +289,24 @@ signals: /// update history list (undo/redo commands) void updateHistory(); - /// Create a new dokument - void onNew(); - - /// Open document from file - void onOpen(); - /// Save current document bool onSave(); /// Save current document to a file selected by user bool onSaveAs(); - /// Exit application - void onExit(); - /// Undo last command void onUndo(int times = 1); /// Redo previous command void onRedo(int times = 1); - /// Rebuild data tree - void onRebuild(); + // Rebuild data tree + //void onRebuild(); - /// Open preferences dialog box - void onPreferences(); + /// Validates the operation to change the "Apply" button state. + /// \param thePreviousState the previous state of the widget + void onWidgetStateChanged(int thePreviousState); /// Show property panel void showPropertyPanel(); @@ -297,31 +320,46 @@ signals: /// Hide object Browser void hideObjectBrowser(); - /// Reaction on command call - //void onFeatureTriggered(); - /// Close document void closeDocument(); + /// Open document from file + void onOpen(); + + /// Create a new document + void onNew(); + +#ifndef HAVE_SALOME + /// Exit application + void onExit(); + + /// Open preferences dialog box + void onPreferences(); +#endif + + /// Activates/deactivates the trihedron in the viewer AIS context + void onTrihedronVisibilityChanged(bool theState); + protected: - /// Find the nested features and set them into the operation + /// Sets the granted operations for the parameter operation. Firstly, it finds the nested features + /// and set them into the operation. Secondly, it asks the module about ids of granted operations. /// \param theOperation an operation - void setNestedFeatures(ModuleBase_Operation* theOperation); + void setGrantedFeatures(ModuleBase_Operation* theOperation); /// Update the property panel content by the XML description of the operation and set the panel /// into the operation /// \param theOperation an operation void setPropertyPanel(ModuleBase_Operation* theOperation); - /// Connect to operation signals - /// \param theOperation an operation - void connectWithOperation(ModuleBase_Operation* theOperation); + /// Connects or disconnects to the value changed signal of the property panel widgets + /// \param isToConnect a boolean value whether connect or disconnect + void connectToPropertyPanel(const bool isToConnect); private: /// Display all results //void displayAllResults(); - /// Displau results from document + /// Display results from document /// \param theDoc a document void displayDocumentResults(DocumentPtr theDoc); @@ -340,12 +378,12 @@ private: virtual void onOperationResumed(ModuleBase_Operation* theOperation); /// SLOT, that is called after the operation is stopped. Update workshop state, e.g. - /// hides the property panel and udpate the command status. + /// hides the property panel and update the command status. /// \param theOpertion a stopped operation virtual void onOperationStopped(ModuleBase_Operation* theOperation); /// SLOT, that is called after the operation is committed. - /// \param theOpertion a commmitted operation + /// \param theOpertion a committed operation virtual void onOperationCommitted(ModuleBase_Operation* theOperation); /// SLOT, that is called after the operation is aborted. @@ -360,6 +398,10 @@ private: /// Set waiting cursor void onStartWaiting(); + /// Called by Ok button clicked in the property panel. Asks the error manager whether + /// the operation can be committed and do it if it returns true. + void onAcceptActionClicked(); + private: /// Init menu void initMenu(); @@ -396,8 +438,12 @@ private: QList processHistoryList(const std::list&) const; private: +#ifndef HAVE_SALOME AppElements_MainWindow* myMainWindow; +#endif + ModuleBase_IModule* myModule; + XGUI_ErrorMgr* myErrorMgr; XGUI_ObjectsBrowser* myObjectBrowser; XGUI_PropertyPanel* myPropertyPanel; XGUI_SelectionMgr* mySelector; @@ -412,9 +458,6 @@ private: XGUI_WorkshopListener* myEventsListener; QString myCurrentDir; - - /// The flag is true when we loading a document - bool myIsLoadingData; }; #endif