--- /dev/null
+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