Project/ProjectInterfacesBrowser.py

changeset 945
8cd4d08fa9f6
parent 791
9ec2ac20e54e
child 949
f888270da22e
equal deleted inserted replaced
944:1b59c4ba121e 945:8cd4d08fa9f6
26 from UI.DeleteFilesConfirmationDialog import DeleteFilesConfirmationDialog 26 from UI.DeleteFilesConfirmationDialog import DeleteFilesConfirmationDialog
27 27
28 import Preferences 28 import Preferences
29 import Utilities 29 import Utilities
30 30
31
31 class ProjectInterfacesBrowser(ProjectBaseBrowser): 32 class ProjectInterfacesBrowser(ProjectBaseBrowser):
32 """ 33 """
33 A class used to display the interfaces (IDL) part of the project. 34 A class used to display the interfaces (IDL) part of the project.
34 35
35 @signal sourceFile(str, int = 0) emitted to open a file 36 @signal sourceFile(str, int = 0) emitted to open a file
36 @signal closeSourceWindow(str) emitted after a file has been removed/deleted 37 @signal closeSourceWindow(str) emitted after a file has been removed/deleted
37 from the project 38 from the project
38 @signal appendStdout(str) emitted after something was received from 39 @signal appendStdout(str) emitted after something was received from
39 a QProcess on stdout 40 a QProcess on stdout
40 @signal appendStderr(str) emitted after something was received from 41 @signal appendStderr(str) emitted after something was received from
41 a QProcess on stderr 42 a QProcess on stderr
46 appendStdout = pyqtSignal(str) 47 appendStdout = pyqtSignal(str)
47 appendStderr = pyqtSignal(str) 48 appendStderr = pyqtSignal(str)
48 showMenu = pyqtSignal(str, QMenu) 49 showMenu = pyqtSignal(str, QMenu)
49 sourceFile = pyqtSignal((str, ), (str, int)) 50 sourceFile = pyqtSignal((str, ), (str, int))
50 51
51 def __init__(self, project, parent = None): 52 def __init__(self, project, parent=None):
52 """ 53 """
53 Constructor 54 Constructor
54 55
55 @param project reference to the project object 56 @param project reference to the project object
56 @param parent parent widget of this browser (QWidget) 57 @param parent parent widget of this browser (QWidget)
87 self.dirMenuActions = [] 88 self.dirMenuActions = []
88 self.dirMultiMenuActions = [] 89 self.dirMultiMenuActions = []
89 90
90 self.sourceMenu = QMenu(self) 91 self.sourceMenu = QMenu(self)
91 if self.omniidl is not None: 92 if self.omniidl is not None:
92 self.sourceMenu.addAction(self.trUtf8('Compile interface'), 93 self.sourceMenu.addAction(self.trUtf8('Compile interface'),
93 self.__compileInterface) 94 self.__compileInterface)
94 self.sourceMenu.addAction(self.trUtf8('Compile all interfaces'), 95 self.sourceMenu.addAction(self.trUtf8('Compile all interfaces'),
95 self.__compileAllInterfaces) 96 self.__compileAllInterfaces)
96 self.sourceMenu.addAction(self.trUtf8('Open'), self._openItem) 97 self.sourceMenu.addAction(self.trUtf8('Open'), self._openItem)
97 self.sourceMenu.addSeparator() 98 self.sourceMenu.addSeparator()
98 act = self.sourceMenu.addAction(self.trUtf8('Rename file'), self._renameFile) 99 act = self.sourceMenu.addAction(self.trUtf8('Rename file'), self._renameFile)
99 self.menuActions.append(act) 100 self.menuActions.append(act)
100 act = self.sourceMenu.addAction(self.trUtf8('Remove from project'), 101 act = self.sourceMenu.addAction(self.trUtf8('Remove from project'),
101 self._removeFile) 102 self._removeFile)
102 self.menuActions.append(act) 103 self.menuActions.append(act)
103 act = self.sourceMenu.addAction(self.trUtf8('Delete'), self.__deleteFile) 104 act = self.sourceMenu.addAction(self.trUtf8('Delete'), self.__deleteFile)
104 self.menuActions.append(act) 105 self.menuActions.append(act)
105 self.sourceMenu.addSeparator() 106 self.sourceMenu.addSeparator()
106 self.sourceMenu.addAction(self.trUtf8('Add interfaces...'), 107 self.sourceMenu.addAction(self.trUtf8('Add interfaces...'),
107 self.__addInterfaceFiles) 108 self.__addInterfaceFiles)
108 self.sourceMenu.addAction(self.trUtf8('Add interfaces directory...'), 109 self.sourceMenu.addAction(self.trUtf8('Add interfaces directory...'),
109 self.__addInterfacesDirectory) 110 self.__addInterfacesDirectory)
110 self.sourceMenu.addSeparator() 111 self.sourceMenu.addSeparator()
111 self.sourceMenu.addAction(self.trUtf8('Copy Path to Clipboard'), 112 self.sourceMenu.addAction(self.trUtf8('Copy Path to Clipboard'),
112 self._copyToClipboard) 113 self._copyToClipboard)
113 self.sourceMenu.addSeparator() 114 self.sourceMenu.addSeparator()
114 self.sourceMenu.addAction(self.trUtf8('Expand all directories'), 115 self.sourceMenu.addAction(self.trUtf8('Expand all directories'),
115 self._expandAllDirs) 116 self._expandAllDirs)
116 self.sourceMenu.addAction(self.trUtf8('Collapse all directories'), 117 self.sourceMenu.addAction(self.trUtf8('Collapse all directories'),
117 self._collapseAllDirs) 118 self._collapseAllDirs)
118 self.sourceMenu.addSeparator() 119 self.sourceMenu.addSeparator()
119 self.sourceMenu.addAction(self.trUtf8('Configure...'), self._configure) 120 self.sourceMenu.addAction(self.trUtf8('Configure...'), self._configure)
120 self.sourceMenu.addAction(self.trUtf8('Configure CORBA...'), self.__configureCorba) 121 self.sourceMenu.addAction(self.trUtf8('Configure CORBA...'), self.__configureCorba)
121 122
122 self.menu = QMenu(self) 123 self.menu = QMenu(self)
123 if self.omniidl is not None: 124 if self.omniidl is not None:
124 self.menu.addAction(self.trUtf8('Compile interface'), self.__compileInterface) 125 self.menu.addAction(self.trUtf8('Compile interface'), self.__compileInterface)
125 self.menu.addAction(self.trUtf8('Compile all interfaces'), 126 self.menu.addAction(self.trUtf8('Compile all interfaces'),
126 self.__compileAllInterfaces) 127 self.__compileAllInterfaces)
127 self.menu.addAction(self.trUtf8('Open'), self._openItem) 128 self.menu.addAction(self.trUtf8('Open'), self._openItem)
128 self.menu.addSeparator() 129 self.menu.addSeparator()
129 self.menu.addAction(self.trUtf8('Add interfaces...'), self.__addInterfaceFiles) 130 self.menu.addAction(self.trUtf8('Add interfaces...'), self.__addInterfaceFiles)
130 self.menu.addAction(self.trUtf8('Add interfaces directory...'), 131 self.menu.addAction(self.trUtf8('Add interfaces directory...'),
131 self.__addInterfacesDirectory) 132 self.__addInterfacesDirectory)
132 self.menu.addSeparator() 133 self.menu.addSeparator()
133 self.menu.addAction(self.trUtf8('Expand all directories'), 134 self.menu.addAction(self.trUtf8('Expand all directories'),
134 self._expandAllDirs) 135 self._expandAllDirs)
135 self.menu.addAction(self.trUtf8('Collapse all directories'), 136 self.menu.addAction(self.trUtf8('Collapse all directories'),
136 self._collapseAllDirs) 137 self._collapseAllDirs)
137 self.menu.addSeparator() 138 self.menu.addSeparator()
138 self.menu.addAction(self.trUtf8('Configure...'), self._configure) 139 self.menu.addAction(self.trUtf8('Configure...'), self._configure)
139 self.menu.addAction(self.trUtf8('Configure CORBA...'), self.__configureCorba) 140 self.menu.addAction(self.trUtf8('Configure CORBA...'), self.__configureCorba)
140 141
141 self.backMenu = QMenu(self) 142 self.backMenu = QMenu(self)
142 if self.omniidl is not None: 143 if self.omniidl is not None:
143 self.backMenu.addAction(self.trUtf8('Compile all interfaces'), 144 self.backMenu.addAction(self.trUtf8('Compile all interfaces'),
144 self.__compileAllInterfaces) 145 self.__compileAllInterfaces)
145 self.backMenu.addSeparator() 146 self.backMenu.addSeparator()
146 self.backMenu.addAction(self.trUtf8('Add interfaces...'), 147 self.backMenu.addAction(self.trUtf8('Add interfaces...'),
147 self.project.addIdlFiles) 148 self.project.addIdlFiles)
148 self.backMenu.addAction(self.trUtf8('Add interfaces directory...'), 149 self.backMenu.addAction(self.trUtf8('Add interfaces directory...'),
149 self.project.addIdlDir) 150 self.project.addIdlDir)
150 self.backMenu.addSeparator() 151 self.backMenu.addSeparator()
151 self.backMenu.addAction(self.trUtf8('Expand all directories'), 152 self.backMenu.addAction(self.trUtf8('Expand all directories'),
152 self._expandAllDirs) 153 self._expandAllDirs)
153 self.backMenu.addAction(self.trUtf8('Collapse all directories'), 154 self.backMenu.addAction(self.trUtf8('Collapse all directories'),
154 self._collapseAllDirs) 155 self._collapseAllDirs)
155 self.backMenu.addSeparator() 156 self.backMenu.addSeparator()
156 self.backMenu.addAction(self.trUtf8('Configure...'), self._configure) 157 self.backMenu.addAction(self.trUtf8('Configure...'), self._configure)
157 self.backMenu.addAction(self.trUtf8('Configure CORBA...'), self.__configureCorba) 158 self.backMenu.addAction(self.trUtf8('Configure CORBA...'), self.__configureCorba)
158 self.backMenu.setEnabled(False) 159 self.backMenu.setEnabled(False)
162 if self.omniidl is not None: 163 if self.omniidl is not None:
163 self.multiMenu.addAction(self.trUtf8('Compile interfaces'), 164 self.multiMenu.addAction(self.trUtf8('Compile interfaces'),
164 self.__compileSelectedInterfaces) 165 self.__compileSelectedInterfaces)
165 self.multiMenu.addAction(self.trUtf8('Open'), self._openItem) 166 self.multiMenu.addAction(self.trUtf8('Open'), self._openItem)
166 self.multiMenu.addSeparator() 167 self.multiMenu.addSeparator()
167 act = self.multiMenu.addAction(self.trUtf8('Remove from project'), 168 act = self.multiMenu.addAction(self.trUtf8('Remove from project'),
168 self._removeFile) 169 self._removeFile)
169 self.multiMenuActions.append(act) 170 self.multiMenuActions.append(act)
170 act = self.multiMenu.addAction(self.trUtf8('Delete'), self.__deleteFile) 171 act = self.multiMenu.addAction(self.trUtf8('Delete'), self.__deleteFile)
171 self.multiMenuActions.append(act) 172 self.multiMenuActions.append(act)
172 self.multiMenu.addSeparator() 173 self.multiMenu.addSeparator()
173 self.multiMenu.addAction(self.trUtf8('Expand all directories'), 174 self.multiMenu.addAction(self.trUtf8('Expand all directories'),
174 self._expandAllDirs) 175 self._expandAllDirs)
175 self.multiMenu.addAction(self.trUtf8('Collapse all directories'), 176 self.multiMenu.addAction(self.trUtf8('Collapse all directories'),
176 self._collapseAllDirs) 177 self._collapseAllDirs)
177 self.multiMenu.addSeparator() 178 self.multiMenu.addSeparator()
178 self.multiMenu.addAction(self.trUtf8('Configure...'), self._configure) 179 self.multiMenu.addAction(self.trUtf8('Configure...'), self._configure)
179 self.multiMenu.addAction(self.trUtf8('Configure CORBA...'), self.__configureCorba) 180 self.multiMenu.addAction(self.trUtf8('Configure CORBA...'), self.__configureCorba)
180 181
181 self.dirMenu = QMenu(self) 182 self.dirMenu = QMenu(self)
182 if self.omniidl is not None: 183 if self.omniidl is not None:
183 self.dirMenu.addAction(self.trUtf8('Compile all interfaces'), 184 self.dirMenu.addAction(self.trUtf8('Compile all interfaces'),
184 self.__compileAllInterfaces) 185 self.__compileAllInterfaces)
185 self.dirMenu.addSeparator() 186 self.dirMenu.addSeparator()
186 act = self.dirMenu.addAction(self.trUtf8('Remove from project'), self._removeFile) 187 act = self.dirMenu.addAction(self.trUtf8('Remove from project'), self._removeFile)
187 self.dirMenuActions.append(act) 188 self.dirMenuActions.append(act)
188 self.dirMenu.addSeparator() 189 self.dirMenu.addSeparator()
189 self.dirMenu.addAction(self.trUtf8('Add interfaces...'), self.__addInterfaceFiles) 190 self.dirMenu.addAction(self.trUtf8('Add interfaces...'), self.__addInterfaceFiles)
190 self.dirMenu.addAction(self.trUtf8('Add interfaces directory...'), 191 self.dirMenu.addAction(self.trUtf8('Add interfaces directory...'),
191 self.__addInterfacesDirectory) 192 self.__addInterfacesDirectory)
192 self.dirMenu.addSeparator() 193 self.dirMenu.addSeparator()
193 self.dirMenu.addAction(self.trUtf8('Copy Path to Clipboard'), 194 self.dirMenu.addAction(self.trUtf8('Copy Path to Clipboard'),
194 self._copyToClipboard) 195 self._copyToClipboard)
195 self.dirMenu.addSeparator() 196 self.dirMenu.addSeparator()
196 self.dirMenu.addAction(self.trUtf8('Expand all directories'), 197 self.dirMenu.addAction(self.trUtf8('Expand all directories'),
197 self._expandAllDirs) 198 self._expandAllDirs)
198 self.dirMenu.addAction(self.trUtf8('Collapse all directories'), 199 self.dirMenu.addAction(self.trUtf8('Collapse all directories'),
199 self._collapseAllDirs) 200 self._collapseAllDirs)
200 self.dirMenu.addSeparator() 201 self.dirMenu.addSeparator()
201 self.dirMenu.addAction(self.trUtf8('Configure...'), self._configure) 202 self.dirMenu.addAction(self.trUtf8('Configure...'), self._configure)
202 self.dirMenu.addAction(self.trUtf8('Configure CORBA...'), self.__configureCorba) 203 self.dirMenu.addAction(self.trUtf8('Configure CORBA...'), self.__configureCorba)
203 204
204 self.dirMultiMenu = QMenu(self) 205 self.dirMultiMenu = QMenu(self)
205 if self.omniidl is not None: 206 if self.omniidl is not None:
206 self.dirMultiMenu.addAction(self.trUtf8('Compile all interfaces'), 207 self.dirMultiMenu.addAction(self.trUtf8('Compile all interfaces'),
207 self.__compileAllInterfaces) 208 self.__compileAllInterfaces)
208 self.dirMultiMenu.addSeparator() 209 self.dirMultiMenu.addSeparator()
209 self.dirMultiMenu.addAction(self.trUtf8('Add interfaces...'), 210 self.dirMultiMenu.addAction(self.trUtf8('Add interfaces...'),
210 self.project.addIdlFiles) 211 self.project.addIdlFiles)
211 self.dirMultiMenu.addAction(self.trUtf8('Add interfaces directory...'), 212 self.dirMultiMenu.addAction(self.trUtf8('Add interfaces directory...'),
212 self.project.addIdlDir) 213 self.project.addIdlDir)
213 self.dirMultiMenu.addSeparator() 214 self.dirMultiMenu.addSeparator()
214 self.dirMultiMenu.addAction(self.trUtf8('Expand all directories'), 215 self.dirMultiMenu.addAction(self.trUtf8('Expand all directories'),
215 self._expandAllDirs) 216 self._expandAllDirs)
216 self.dirMultiMenu.addAction(self.trUtf8('Collapse all directories'), 217 self.dirMultiMenu.addAction(self.trUtf8('Collapse all directories'),
217 self._collapseAllDirs) 218 self._collapseAllDirs)
218 self.dirMultiMenu.addSeparator() 219 self.dirMultiMenu.addSeparator()
219 self.dirMultiMenu.addAction(self.trUtf8('Configure...'), self._configure) 220 self.dirMultiMenu.addAction(self.trUtf8('Configure...'), self._configure)
220 self.dirMultiMenu.addAction(self.trUtf8('Configure CORBA...'), 221 self.dirMultiMenu.addAction(self.trUtf8('Configure CORBA...'),
221 self.__configureCorba) 222 self.__configureCorba)
222 223
223 self.sourceMenu.aboutToShow.connect(self.__showContextMenu) 224 self.sourceMenu.aboutToShow.connect(self.__showContextMenu)
224 self.multiMenu.aboutToShow.connect(self.__showContextMenuMulti) 225 self.multiMenu.aboutToShow.connect(self.__showContextMenuMulti)
225 self.dirMenu.aboutToShow.connect(self.__showContextMenuDir) 226 self.dirMenu.aboutToShow.connect(self.__showContextMenuDir)
236 if not self.project.isOpen(): 237 if not self.project.isOpen():
237 return 238 return
238 239
239 try: 240 try:
240 categories = self.getSelectedItemsCountCategorized( 241 categories = self.getSelectedItemsCountCategorized(
241 [ProjectBrowserFileItem, BrowserClassItem, 242 [ProjectBrowserFileItem, BrowserClassItem,
242 BrowserMethodItem, ProjectBrowserSimpleDirectoryItem]) 243 BrowserMethodItem, ProjectBrowserSimpleDirectoryItem])
243 cnt = categories["sum"] 244 cnt = categories["sum"]
244 if cnt <= 1: 245 if cnt <= 1:
245 index = self.indexAt(coord) 246 index = self.indexAt(coord)
246 if index.isValid(): 247 if index.isValid():
247 self._selectSingleItem(index) 248 self._selectSingleItem(index)
248 categories = self.getSelectedItemsCountCategorized( 249 categories = self.getSelectedItemsCountCategorized(
249 [ProjectBrowserFileItem, BrowserClassItem, 250 [ProjectBrowserFileItem, BrowserClassItem,
250 BrowserMethodItem, ProjectBrowserSimpleDirectoryItem]) 251 BrowserMethodItem, ProjectBrowserSimpleDirectoryItem])
251 cnt = categories["sum"] 252 cnt = categories["sum"]
252 253
253 bfcnt = categories[str(ProjectBrowserFileItem)] 254 bfcnt = categories[str(ProjectBrowserFileItem)]
254 cmcnt = categories[str(BrowserClassItem)] + \ 255 cmcnt = categories[str(BrowserClassItem)] + \
322 def _openItem(self): 323 def _openItem(self):
323 """ 324 """
324 Protected slot to handle the open popup menu entry. 325 Protected slot to handle the open popup menu entry.
325 """ 326 """
326 itmList = self.getSelectedItems( 327 itmList = self.getSelectedItems(
327 [BrowserFileItem, BrowserClassItem, BrowserMethodItem, 328 [BrowserFileItem, BrowserClassItem, BrowserMethodItem,
328 BrowserClassAttributeItem]) 329 BrowserClassAttributeItem])
329 330
330 for itm in itmList: 331 for itm in itmList:
331 if isinstance(itm, BrowserFileItem): 332 if isinstance(itm, BrowserFileItem):
332 self.sourceFile[str].emit(itm.fileName()) 333 self.sourceFile[str].emit(itm.fileName())
333 elif isinstance(itm, BrowserClassItem): 334 elif isinstance(itm, BrowserClassItem):
334 self.sourceFile[str, int].emit(itm.fileName(), 335 self.sourceFile[str, int].emit(itm.fileName(),
335 itm.classObject().lineno) 336 itm.classObject().lineno)
336 elif isinstance(itm,BrowserMethodItem): 337 elif isinstance(itm, BrowserMethodItem):
337 self.sourceFile[str, int].emit(itm.fileName(), 338 self.sourceFile[str, int].emit(itm.fileName(),
338 itm.functionObject().lineno) 339 itm.functionObject().lineno)
339 elif isinstance(itm, BrowserClassAttributeItem): 340 elif isinstance(itm, BrowserClassAttributeItem):
340 self.sourceFile[str, int].emit(itm.fileName(), 341 self.sourceFile[str, int].emit(itm.fileName(),
341 itm.attributeObject().lineno) 342 itm.attributeObject().lineno)
342 343
343 def __addInterfaceFiles(self): 344 def __addInterfaceFiles(self):
344 """ 345 """
345 Private method to add interface files to the project. 346 Private method to add interface files to the project.
459 E5MessageBox.information(self, 460 E5MessageBox.information(self,
460 self.trUtf8("Interface Compilation"), 461 self.trUtf8("Interface Compilation"),
461 self.trUtf8("The compilation of the interface file failed.")) 462 self.trUtf8("The compilation of the interface file failed."))
462 self.compileProc = None 463 self.compileProc = None
463 464
464 def __compileIDL(self, fn, noDialog = False, progress = None): 465 def __compileIDL(self, fn, noDialog=False, progress=None):
465 """ 466 """
466 Privat method to compile a .idl file to python. 467 Privat method to compile a .idl file to python.
467 468
468 @param fn filename of the .idl file to be compiled (string) 469 @param fn filename of the .idl file to be compiled (string)
469 @param noDialog flag indicating silent operations (boolean) 470 @param noDialog flag indicating silent operations (boolean)
517 """ 518 """
518 Private method to compile all interfaces to python. 519 Private method to compile all interfaces to python.
519 """ 520 """
520 if self.omniidl is not None: 521 if self.omniidl is not None:
521 numIDLs = len(self.project.pdata["INTERFACES"]) 522 numIDLs = len(self.project.pdata["INTERFACES"])
522 progress = QProgressDialog(self.trUtf8("Compiling interfaces..."), 523 progress = QProgressDialog(self.trUtf8("Compiling interfaces..."),
523 self.trUtf8("Abort"), 0, numIDLs, self) 524 self.trUtf8("Abort"), 0, numIDLs, self)
524 progress.setModal(True) 525 progress.setModal(True)
525 progress.setMinimumDuration(0) 526 progress.setMinimumDuration(0)
526 i = 0 527 i = 0
527 528
549 items = self.getSelectedItems() 550 items = self.getSelectedItems()
550 551
551 files = [self.project.getRelativePath(itm.fileName()) \ 552 files = [self.project.getRelativePath(itm.fileName()) \
552 for itm in items] 553 for itm in items]
553 numIDLs = len(files) 554 numIDLs = len(files)
554 progress = QProgressDialog(self.trUtf8("Compiling interfaces..."), 555 progress = QProgressDialog(self.trUtf8("Compiling interfaces..."),
555 self.trUtf8("Abort"), 0, numIDLs, self) 556 self.trUtf8("Abort"), 0, numIDLs, self)
556 progress.setModal(True) 557 progress.setModal(True)
557 progress.setMinimumDuration(0) 558 progress.setMinimumDuration(0)
558 i = 0 559 i = 0
559 560

eric ide

mercurial