1 // Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE
3 // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License.
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // Lesser General Public License for more details.
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
22 // SUPERV SUPERVGUI : GUI for Supervisor component
23 // File : SUPERVGUI_Library.h
24 // Author : Alexander SLADKOV
27 #ifndef SUPERVGUI_Library_H
28 #define SUPERVGUI_Library_H
33 #include "utilities.h"
34 #include "SALOME_LifeCycleCORBA.hxx"
35 #include CORBA_CLIENT_HEADER(SUPERV)
40 * SUPERVGUI_Library class is intended for management of InLine nodes library.
41 * InLine nodes library is an XML repository (currently it is a predefined user-dependant XML file)
42 * with InLine nodes stored in it. InLine node in a library contains its Python code and lists of
43 * input and output ports.
45 class SUPERVGUI_Library : QObject { // extending QObject to enable slot/signals
50 SUPERVGUI_Library(); // constructor is protected, use static function getLibrary()
53 static SUPERVGUI_Library* getLibrary() {
55 myLibrary = new SUPERVGUI_Library();
59 // Returns the XML file name used as InLine nodes repository
60 const char* GetLibraryFileName() const;
62 // Export an InLine node to Library
63 bool Export( SUPERV::INode_var theNode ) const;
65 // Import an InLine node from Library into the dataflow
66 bool Import( SUPERV::Graph_var theDataflow, SUPERV::INode_var& theNode,
67 SUPERV::INode_var& theEndNode, const int theLibIndex ) const;
69 // Remove an InLine node with given index from Library
70 bool Remove( const int i ) const;
72 // returns a list of node names currently stored in the library. Indexes of the nodes in
73 // this list can be used for futher calls to Import(.., index)
74 SUPERV::ListOfStrings GetLibraryNodesNames() const;
76 // returns status of library: false indicates that library file does not exist or can not be opened
77 bool CanImport() const;
80 static SUPERVGUI_Library* myLibrary;
82 bool createLibFile() const; // returns false on file creation error (also displays MB)
84 // returns list of NODE_ELEMENT-s and error result (false) if failed (also displays MB)
85 bool getNodes( QDomDocument& theDoc, QDomNodeList& theNodes ) const;
90 * Dialog box for Add/Remove InLine nodes to Library, Add node to Graph from Library
92 class SUPERVGUI_LibDlg: public QDialog {
97 SUPERVGUI_LibDlg( QWidget* parent, int& theX, int& theY );
101 void add(); // add selected node from library to graph
102 void remove(); // remove selected node from library
105 void initList(); // clear and fill list with nodes from Library
108 int& myX; // comes from caller - SUPERVGUI_Service, used for calculating next node_s position
109 int& myY; // comes from caller - SUPERVGUI_Service