Salome HOME
Mise à jour du template PythonComponent:
[tools/sat.git] / data / templates / PythonComponent / src / StandAlone / Desktop.py
1 from PyQt5.QtCore    import *
2 from PyQt5.QtGui     import *
3 from PyQt5.QtWidgets import *
4
5 from TreeWidget import TreeWidget
6 from GraphicsView import GraphicsView
7 from GraphicsScene import GraphicsScene
8
9 class Desktop( QMainWindow ) :
10
11    def __init__( self ) :
12        """Constructor"""
13
14        QMainWindow.__init__( self )
15        self._controller = None
16
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 )
24
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 )
32
33        # Creating menus and toolbars
34        self.createMenus()
35        self.createToolBars()
36        pass
37
38    def getController( self ) :
39        return self._controller
40
41    def setController( self, controller ) :
42        self._controller = controller
43        pass
44
45    def getGlobalTree( self ) :
46        return self._globalTree
47
48    def createMenus( self ) :
49        # Creating menus
50        curveMenu = self.menuBar().addMenu( "Curve" )
51        toolsMenu = self.menuBar().addMenu( "Tools" )
52        # Adding actions
53        createPolylineAction = QAction( "Polyline", self )
54        createCircleAction = QAction( "Circle", self )
55        curveMenu.addAction( createPolylineAction )
56        curveMenu.addAction( createCircleAction )
57
58        deleteAllAction = QAction( "Delete all", self )
59        toolsMenu.addAction( deleteAllAction )
60        # Connecting slots
61        createPolylineAction.triggered.connect(self.showCreatePolylineDialog)
62        createCircleAction.triggered.connect(self.showCreateCircleDialog)
63        deleteAllAction.triggered.connect(self.deleteAll)
64        pass
65
66    def createToolBars( self ) :
67        # Creating toolBars
68        createPolylineTB = self.addToolBar( "New polyline")
69        createCircleTB = self.addToolBar( "New circle")
70        createPolylineAction = QAction( "Polyline", self )
71        createCircleAction = QAction( "Circle", self )
72        # Adding actions
73        createPolylineTB.addAction( createPolylineAction )
74        createCircleTB.addAction( createCircleAction )
75        # Connecting slots
76        createPolylineAction.triggered.connect(self.showCreatePolylineDialog)
77        createCircleAction.triggered.connect(self.showCreateCircleDialog)
78        pass
79
80    def showCreatePolylineDialog( self ) :
81        from CreatePolylineDialog import CreatePolylineDialog
82
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 )
89        pass
90
91    def showCreateCircleDialog( self ) :
92        from CreateCircleDialog import CreateCircleDialog
93
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 )
100        pass
101
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 )
109              pass
110           pass
111        pass
112
113    def updateGlobalGraphicsView( self, scene ) :
114        self._globalGraphicsView.setScene( scene )
115        if scene is None :
116           self._dockGlobalView.setWindowTitle( "Graphics view" )
117           return
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 )
124        pass
125
126 pass