Salome HOME
merge with master
[tools/sat.git] / data / templates / PythonComponent8 / src / StandAlone / Desktop.py
diff --git a/data/templates/PythonComponent8/src/StandAlone/Desktop.py b/data/templates/PythonComponent8/src/StandAlone/Desktop.py
new file mode 100755 (executable)
index 0000000..69256a5
--- /dev/null
@@ -0,0 +1,126 @@
+from PyQt5.QtCore    import *
+from PyQt5.QtGui     import *
+from PyQt5.QtWidgets import *
+
+from TreeWidget import TreeWidget
+from GraphicsView import GraphicsView
+from GraphicsScene import GraphicsScene
+
+class Desktop( QMainWindow ) :
+
+   def __init__( self ) :
+       """Constructor"""
+
+       QMainWindow.__init__( self )
+       self._controller = None
+
+       # Creating a dockWidget which will contain globalTree
+       self._globalTree= TreeWidget( self )
+       self._globalTree.setHeaderLabel ( "Object browser" )
+       dockGlobalTree = QDockWidget( "Tree view", self )
+       dockGlobalTree.setAllowedAreas( Qt.LeftDockWidgetArea | Qt.RightDockWidgetArea )
+       dockGlobalTree.setWidget( self._globalTree )
+       self.addDockWidget( Qt.LeftDockWidgetArea, dockGlobalTree )
+
+       # Creating a central widget which contains the globalGraphicsView
+       self._dockGlobalView = QDockWidget( "Graphics view", self )
+       scene = GraphicsScene( self._controller )
+       self._globalGraphicsView = GraphicsView( scene )
+       self._dockGlobalView.setWidget( self._globalGraphicsView )
+       self._globalGraphicsView.show()
+       self.setCentralWidget( self._dockGlobalView )
+
+       # Creating menus and toolbars
+       self.createMenus()
+       self.createToolBars()
+       pass
+
+   def getController( self ) :
+       return self._controller
+
+   def setController( self, controller ) :
+       self._controller = controller
+       pass
+
+   def getGlobalTree( self ) :
+       return self._globalTree
+
+   def createMenus( self ) :
+       # Creating menus
+       curveMenu = self.menuBar().addMenu( "Curve" )
+       toolsMenu = self.menuBar().addMenu( "Tools" )
+       # Adding actions
+       createPolylineAction = QAction( "Polyline", self )
+       createCircleAction = QAction( "Circle", self )
+       curveMenu.addAction( createPolylineAction )
+       curveMenu.addAction( createCircleAction )
+
+       deleteAllAction = QAction( "Delete all", self )
+       toolsMenu.addAction( deleteAllAction )
+       # Connecting slots
+       createPolylineAction.triggered.connect(self.showCreatePolylineDialog)
+       createCircleAction.triggered.connect(self.showCreateCircleDialog)
+       deleteAllAction.triggered.connect(self.deleteAll)
+       pass
+
+   def createToolBars( self ) :
+       # Creating toolBars
+       createPolylineTB = self.addToolBar( "New polyline")
+       createCircleTB = self.addToolBar( "New circle")
+       createPolylineAction = QAction( "Polyline", self )
+       createCircleAction = QAction( "Circle", self )
+       # Adding actions
+       createPolylineTB.addAction( createPolylineAction )
+       createCircleTB.addAction( createCircleAction )
+       # Connecting slots
+       createPolylineAction.triggered.connect(self.showCreatePolylineDialog)
+       createCircleAction.triggered.connect(self.showCreateCircleDialog)
+       pass
+
+   def showCreatePolylineDialog( self ) :
+       from CreatePolylineDialog import CreatePolylineDialog
+
+       widgetDialogBox = QDockWidget( "myDockWidget", self )
+       myDialog = CreatePolylineDialog( "www.google.fr", self._controller, widgetDialogBox )
+       widgetDialogBox.setAllowedAreas( Qt.LeftDockWidgetArea | Qt.RightDockWidgetArea )
+       widgetDialogBox.setWidget( myDialog )
+       widgetDialogBox.setWindowTitle( "Polyline definition" )
+       self.addDockWidget( Qt.LeftDockWidgetArea, widgetDialogBox )
+       pass
+
+   def showCreateCircleDialog( self ) :
+       from CreateCircleDialog import CreateCircleDialog
+
+       widgetDialogBox = QDockWidget( "myDockWidget", self )
+       myDialog = CreateCircleDialog( "www.cea.fr", self._controller, widgetDialogBox )
+       widgetDialogBox.setAllowedAreas( Qt.LeftDockWidgetArea | Qt.RightDockWidgetArea )
+       widgetDialogBox.setWidget( myDialog )
+       widgetDialogBox.setWindowTitle( "Polyline definition" )
+       self.addDockWidget( Qt.LeftDockWidgetArea, widgetDialogBox )
+       pass
+
+   def deleteAll( self ) :
+       models = self.getController().getModels()
+       if len( models ) == 0 : return
+       answer = QMessageBox.question( self, 'Confirmation', 'Do you really want to delete all the existing objects ?' , QMessageBox.Yes | QMessageBox.No )
+       if answer == QMessageBox.Yes :
+          for model in models :
+             self.getController().removeModel( model )
+             pass
+          pass
+       pass
+
+   def updateGlobalGraphicsView( self, scene ) :
+       self._globalGraphicsView.setScene( scene )
+       if scene is None :
+          self._dockGlobalView.setWindowTitle( "Graphics view" )
+          return
+       self._dockGlobalView.setWindowTitle( "Graphics view : showing " + scene.getModel().getName() )
+       #Resizing the globalGraphicView
+       sceneRect = scene.getRect()
+       topLeft = sceneRect.topLeft()
+       viewRect = QRectF( topLeft.x(), topLeft.y(), 2*sceneRect.width(), 2*sceneRect.height() )
+       self._globalGraphicsView.fitInView ( viewRect, Qt.IgnoreAspectRatio )
+       pass
+
+pass