1 from PyQt5.QtCore import *
2 from PyQt5.QtGui import *
3 from PyQt5.QtWidgets import *
5 from TreeWidget import TreeWidget
6 from GraphicsView import GraphicsView
7 from GraphicsScene import GraphicsScene
9 class Desktop( QMainWindow ) :
11 def __init__( self ) :
14 QMainWindow.__init__( self )
15 self._controller = None
17 # Creating a dockWidget which will contain globalTree
18 self._globalTree= TreeWidget( self )
19 self._globalTree.setHeaderLabel ( "Object browser" )
20 dockGlobalTree = QDockWidget( "Tree view", self )
21 dockGlobalTree.setAllowedAreas( Qt.LeftDockWidgetArea | Qt.RightDockWidgetArea )
22 dockGlobalTree.setWidget( self._globalTree )
23 self.addDockWidget( Qt.LeftDockWidgetArea, dockGlobalTree )
25 # Creating a central widget which contains the globalGraphicsView
26 self._dockGlobalView = QDockWidget( "Graphics view", self )
27 scene = GraphicsScene( self._controller )
28 self._globalGraphicsView = GraphicsView( scene )
29 self._dockGlobalView.setWidget( self._globalGraphicsView )
30 self._globalGraphicsView.show()
31 self.setCentralWidget( self._dockGlobalView )
33 # Creating menus and toolbars
38 def getController( self ) :
39 return self._controller
41 def setController( self, controller ) :
42 self._controller = controller
45 def getGlobalTree( self ) :
46 return self._globalTree
48 def createMenus( self ) :
50 curveMenu = self.menuBar().addMenu( "Curve" )
51 toolsMenu = self.menuBar().addMenu( "Tools" )
53 createPolylineAction = QAction( "Polyline", self )
54 createCircleAction = QAction( "Circle", self )
55 curveMenu.addAction( createPolylineAction )
56 curveMenu.addAction( createCircleAction )
58 deleteAllAction = QAction( "Delete all", self )
59 toolsMenu.addAction( deleteAllAction )
61 createPolylineAction.triggered.connect(self.showCreatePolylineDialog)
62 createCircleAction.triggered.connect(self.showCreateCircleDialog)
63 deleteAllAction.triggered.connect(self.deleteAll)
66 def createToolBars( self ) :
68 createPolylineTB = self.addToolBar( "New polyline")
69 createCircleTB = self.addToolBar( "New circle")
70 createPolylineAction = QAction( "Polyline", self )
71 createCircleAction = QAction( "Circle", self )
73 createPolylineTB.addAction( createPolylineAction )
74 createCircleTB.addAction( createCircleAction )
76 createPolylineAction.triggered.connect(self.showCreatePolylineDialog)
77 createCircleAction.triggered.connect(self.showCreateCircleDialog)
80 def showCreatePolylineDialog( self ) :
81 from CreatePolylineDialog import CreatePolylineDialog
83 widgetDialogBox = QDockWidget( "myDockWidget", self )
84 myDialog = CreatePolylineDialog( "www.google.fr", self._controller, widgetDialogBox )
85 widgetDialogBox.setAllowedAreas( Qt.LeftDockWidgetArea | Qt.RightDockWidgetArea )
86 widgetDialogBox.setWidget( myDialog )
87 widgetDialogBox.setWindowTitle( "Polyline definition" )
88 self.addDockWidget( Qt.LeftDockWidgetArea, widgetDialogBox )
91 def showCreateCircleDialog( self ) :
92 from CreateCircleDialog import CreateCircleDialog
94 widgetDialogBox = QDockWidget( "myDockWidget", self )
95 myDialog = CreateCircleDialog( "www.cea.fr", self._controller, widgetDialogBox )
96 widgetDialogBox.setAllowedAreas( Qt.LeftDockWidgetArea | Qt.RightDockWidgetArea )
97 widgetDialogBox.setWidget( myDialog )
98 widgetDialogBox.setWindowTitle( "Polyline definition" )
99 self.addDockWidget( Qt.LeftDockWidgetArea, widgetDialogBox )
102 def deleteAll( self ) :
103 models = self.getController().getModels()
104 if len( models ) == 0 : return
105 answer = QMessageBox.question( self, 'Confirmation', 'Do you really want to delete all the existing objects ?' , QMessageBox.Yes | QMessageBox.No )
106 if answer == QMessageBox.Yes :
107 for model in models :
108 self.getController().removeModel( model )
113 def updateGlobalGraphicsView( self, scene ) :
114 self._globalGraphicsView.setScene( scene )
116 self._dockGlobalView.setWindowTitle( "Graphics view" )
118 self._dockGlobalView.setWindowTitle( "Graphics view : showing " + scene.getModel().getName() )
119 #Resizing the globalGraphicView
120 sceneRect = scene.getRect()
121 topLeft = sceneRect.topLeft()
122 viewRect = QRectF( topLeft.x(), topLeft.y(), 2*sceneRect.width(), 2*sceneRect.height() )
123 self._globalGraphicsView.fitInView ( viewRect, Qt.IgnoreAspectRatio )