Salome HOME
add the template command
[tools/sat.git] / data / templates / PythonComponent / src / View / TreeWidget.py
1 from PyQt4.QtGui import *
2 from PyQt4.QtCore import *
3 from Menu import Menu
4 from RenameDialog import RenameDialog
5 from EditPointDialog import EditPointDialog
6 from EditCenterDialog import EditCenterDialog
7 from EditRadiusDialog import EditRadiusDialog
8 from Polyline import Polyline
9 from Circle import Circle
10 from SalomePyQt import SalomePyQt
11 from libSALOME_Swig import SALOMEGUI_Swig
12
13 #########################################
14 # Global variables
15 #########################################
16
17 sgPyQt = SalomePyQt()
18 sg = SALOMEGUI_Swig()
19 sgDesktop = sgPyQt.getDesktop()
20
21 #########################################
22
23 class TreeWidget( QTreeWidget ) :
24
25    def __init__( self, desktop ) :
26        """Constructor"""
27
28        QTreeWidget.__init__( self )
29        self._desktop = desktop
30
31        #Creating popup menu
32        self.setContextMenuPolicy( Qt.CustomContextMenu )
33        self.connect ( self, SIGNAL("customContextMenuRequested(const QPoint)"), self.createPopups )
34        pass
35
36    def createPopups( self, point ) :
37        item = self.itemAt( point )
38        if item is None : return
39        self.menu = Menu( item )
40        for action in item.getActionsList():
41           if action == "Show" :
42              self.connect( self.menu.addAction( action ), SIGNAL('triggered()'), self.show )
43              pass
44           elif action == 'Rename' :
45              self.connect( self.menu.addAction( action ), SIGNAL('triggered()'), self.showRenameDialog )
46              pass
47           elif action == 'Delete' :
48              self.connect( self.menu.addAction( action ), SIGNAL('triggered()'), self.delete )
49              pass
50           else :
51              self.connect( self.menu.addAction( action ), SIGNAL('triggered()'), self.showEditDialog )
52              pass
53           pass
54        self. menu.exec_( QCursor.pos() )
55        pass
56
57    def show( self ) :
58        model = self.menu.getItem().getModel()
59        controller = self._desktop.getController()
60        controller.showModel( model )
61        pass
62
63    def showRenameDialog( self ) :
64        model = self.menu.getItem().getModel()
65        oldName = model.getName()
66        widgetDialogBox = QDockWidget( sgDesktop )
67        myDialog = RenameDialog( "www.google.fr", self._desktop.getController(), widgetDialogBox, model, oldName )
68        widgetDialogBox.setAllowedAreas( Qt.LeftDockWidgetArea | Qt.RightDockWidgetArea )
69        widgetDialogBox.setWidget( myDialog )
70        widgetDialogBox.setWindowTitle( "Object renaming" )
71        sgDesktop.addDockWidget( Qt.LeftDockWidgetArea, widgetDialogBox )
72        pass
73
74    def delete( self ) :
75        answer = QMessageBox.question( self, 'Confirmation', 'Do you really want to remove the selected curve ?' , QMessageBox.Yes | QMessageBox.No )
76        if answer == QMessageBox.Yes :
77           model = self.menu.getItem().getModel()
78           controller = self._desktop.getController()
79           controller.removeModel( model )
80           pass
81        pass
82
83    def showEditDialog( self ) :
84        item = self.menu.getItem()
85        parentItem = item.parent()
86        parentModel = parentItem.getModel()
87        widgetDialogBox = QDockWidget( sgDesktop )
88        if isinstance( parentModel, Polyline ) :
89           pointRange = parentItem.indexOfChild( item )
90           oldPoint = item.text( 0 )
91           myDialog = EditPointDialog( "www.google.fr", self._desktop.getController(), widgetDialogBox, parentModel, oldPoint, pointRange )
92           pass
93        elif isinstance( parentModel, Circle ) :
94           selectedRange = parentItem.indexOfChild( item )
95           oldSelected = item.text( 0 )
96           if selectedRange == 0 : myDialog = EditCenterDialog( "www.google.fr", self._desktop.getController(), widgetDialogBox, parentModel, oldSelected )
97           elif selectedRange == 1 : myDialog = EditRadiusDialog("www.google.fr",self._desktop.getController(),widgetDialogBox,parentModel,oldSelected)
98           else : pass
99           pass
100        else : pass
101
102        widgetDialogBox.setAllowedAreas( Qt.LeftDockWidgetArea | Qt.RightDockWidgetArea )
103        widgetDialogBox.setWidget( myDialog )
104        widgetDialogBox.setWindowTitle( "Object edition" )
105        sgDesktop.addDockWidget( Qt.LeftDockWidgetArea, widgetDialogBox )
106        pass
107
108 pass