19 from .ProjectBrowserModel import ProjectBrowserFileItem, \ |
20 from .ProjectBrowserModel import ProjectBrowserFileItem, \ |
20 ProjectBrowserSimpleDirectoryItem, ProjectBrowserDirectoryItem, \ |
21 ProjectBrowserSimpleDirectoryItem, ProjectBrowserDirectoryItem, \ |
21 ProjectBrowserInterfaceType |
22 ProjectBrowserInterfaceType |
22 from .ProjectBaseBrowser import ProjectBaseBrowser |
23 from .ProjectBaseBrowser import ProjectBaseBrowser |
23 |
24 |
24 from UI.BrowserModel import BrowserFileItem, BrowserClassItem, BrowserMethodItem, \ |
25 from UI.BrowserModel import BrowserFileItem, BrowserClassItem, \ |
25 BrowserClassAttributeItem |
26 BrowserMethodItem, BrowserClassAttributeItem |
26 import UI.PixmapCache |
27 import UI.PixmapCache |
27 |
28 |
28 import Preferences |
29 import Preferences |
29 import Utilities |
30 import Utilities |
30 |
31 |
32 class ProjectInterfacesBrowser(ProjectBaseBrowser): |
33 class ProjectInterfacesBrowser(ProjectBaseBrowser): |
33 """ |
34 """ |
34 A class used to display the interfaces (IDL) part of the project. |
35 A class used to display the interfaces (IDL) part of the project. |
35 |
36 |
36 @signal sourceFile(str, int = 0) emitted to open a file |
37 @signal sourceFile(str, int = 0) emitted to open a file |
37 @signal closeSourceWindow(str) emitted after a file has been removed/deleted |
38 @signal closeSourceWindow(str) emitted after a file has been |
38 from the project |
39 removed/deleted from the project |
39 @signal appendStdout(str) emitted after something was received from |
40 @signal appendStdout(str) emitted after something was received from |
40 a QProcess on stdout |
41 a QProcess on stdout |
41 @signal appendStderr(str) emitted after something was received from |
42 @signal appendStderr(str) emitted after something was received from |
42 a QProcess on stderr |
43 a QProcess on stderr |
43 @signal showMenu(str, QMenu) emitted when a menu is about to be shown. The name |
44 @signal showMenu(str, QMenu) emitted when a menu is about to be shown. |
44 of the menu and a reference to the menu are given. |
45 The name of the menu and a reference to the menu are given. |
45 """ |
46 """ |
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 |
50 |
54 @param project reference to the project object |
55 @param project reference to the project object |
55 @param parent parent widget of this browser (QWidget) |
56 @param parent parent widget of this browser (QWidget) |
56 """ |
57 """ |
57 self.omniidl = Preferences.getCorba("omniidl") |
58 self.omniidl = Preferences.getCorba("omniidl") |
58 if self.omniidl == "": |
59 if self.omniidl == "": |
59 self.omniidl = Utilities.isWindowsPlatform() and "omniidl.exe" or "omniidl" |
60 self.omniidl = Utilities.isWindowsPlatform() and \ |
|
61 "omniidl.exe" or "omniidl" |
60 if not Utilities.isinpath(self.omniidl): |
62 if not Utilities.isinpath(self.omniidl): |
61 self.omniidl = None |
63 self.omniidl = None |
62 |
64 |
63 ProjectBaseBrowser.__init__(self, project, ProjectBrowserInterfaceType, parent) |
65 ProjectBaseBrowser.__init__(self, project, |
|
66 ProjectBrowserInterfaceType, parent) |
64 |
67 |
65 self.selectedItemsFilter = \ |
68 self.selectedItemsFilter = \ |
66 [ProjectBrowserFileItem, ProjectBrowserSimpleDirectoryItem] |
69 [ProjectBrowserFileItem, ProjectBrowserSimpleDirectoryItem] |
67 |
70 |
68 self.setWindowTitle(self.trUtf8('Interfaces (IDL)')) |
71 self.setWindowTitle(self.trUtf8('Interfaces (IDL)')) |
69 |
72 |
70 self.setWhatsThis(self.trUtf8( |
73 self.setWhatsThis(self.trUtf8( |
71 """<b>Project Interfaces Browser</b>""" |
74 """<b>Project Interfaces Browser</b>""" |
72 """<p>This allows to easily see all interfaces (CORBA IDL files)""" |
75 """<p>This allows to easily see all interfaces (CORBA IDL files)""" |
73 """ contained in the current project. Several actions can be executed""" |
76 """ contained in the current project. Several actions can be""" |
74 """ via the context menu.</p>""" |
77 """ executed via the context menu.</p>""" |
75 )) |
78 )) |
76 |
79 |
77 project.prepareRepopulateItem.connect(self._prepareRepopulateItem) |
80 project.prepareRepopulateItem.connect(self._prepareRepopulateItem) |
78 project.completeRepopulateItem.connect(self._completeRepopulateItem) |
81 project.completeRepopulateItem.connect(self._completeRepopulateItem) |
79 |
82 |
92 self.__compileInterface) |
95 self.__compileInterface) |
93 self.sourceMenu.addAction(self.trUtf8('Compile all interfaces'), |
96 self.sourceMenu.addAction(self.trUtf8('Compile all interfaces'), |
94 self.__compileAllInterfaces) |
97 self.__compileAllInterfaces) |
95 self.sourceMenu.addAction(self.trUtf8('Open'), self._openItem) |
98 self.sourceMenu.addAction(self.trUtf8('Open'), self._openItem) |
96 self.sourceMenu.addSeparator() |
99 self.sourceMenu.addSeparator() |
97 act = self.sourceMenu.addAction(self.trUtf8('Rename file'), self._renameFile) |
100 act = self.sourceMenu.addAction( |
|
101 self.trUtf8('Rename file'), self._renameFile) |
98 self.menuActions.append(act) |
102 self.menuActions.append(act) |
99 act = self.sourceMenu.addAction(self.trUtf8('Remove from project'), |
103 act = self.sourceMenu.addAction(self.trUtf8('Remove from project'), |
100 self._removeFile) |
104 self._removeFile) |
101 self.menuActions.append(act) |
105 self.menuActions.append(act) |
102 act = self.sourceMenu.addAction(self.trUtf8('Delete'), self.__deleteFile) |
106 act = self.sourceMenu.addAction( |
|
107 self.trUtf8('Delete'), self.__deleteFile) |
103 self.menuActions.append(act) |
108 self.menuActions.append(act) |
104 self.sourceMenu.addSeparator() |
109 self.sourceMenu.addSeparator() |
105 self.sourceMenu.addAction(self.trUtf8('Add interfaces...'), |
110 self.sourceMenu.addAction(self.trUtf8('Add interfaces...'), |
106 self.__addInterfaceFiles) |
111 self.__addInterfaceFiles) |
107 self.sourceMenu.addAction(self.trUtf8('Add interfaces directory...'), |
112 self.sourceMenu.addAction(self.trUtf8('Add interfaces directory...'), |
114 self._expandAllDirs) |
119 self._expandAllDirs) |
115 self.sourceMenu.addAction(self.trUtf8('Collapse all directories'), |
120 self.sourceMenu.addAction(self.trUtf8('Collapse all directories'), |
116 self._collapseAllDirs) |
121 self._collapseAllDirs) |
117 self.sourceMenu.addSeparator() |
122 self.sourceMenu.addSeparator() |
118 self.sourceMenu.addAction(self.trUtf8('Configure...'), self._configure) |
123 self.sourceMenu.addAction(self.trUtf8('Configure...'), self._configure) |
119 self.sourceMenu.addAction(self.trUtf8('Configure CORBA...'), self.__configureCorba) |
124 self.sourceMenu.addAction( |
|
125 self.trUtf8('Configure CORBA...'), self.__configureCorba) |
120 |
126 |
121 self.menu = QMenu(self) |
127 self.menu = QMenu(self) |
122 if self.omniidl is not None: |
128 if self.omniidl is not None: |
123 self.menu.addAction(self.trUtf8('Compile interface'), self.__compileInterface) |
129 self.menu.addAction( |
|
130 self.trUtf8('Compile interface'), self.__compileInterface) |
124 self.menu.addAction(self.trUtf8('Compile all interfaces'), |
131 self.menu.addAction(self.trUtf8('Compile all interfaces'), |
125 self.__compileAllInterfaces) |
132 self.__compileAllInterfaces) |
126 self.menu.addAction(self.trUtf8('Open'), self._openItem) |
133 self.menu.addAction(self.trUtf8('Open'), self._openItem) |
127 self.menu.addSeparator() |
134 self.menu.addSeparator() |
128 self.menu.addAction(self.trUtf8('Add interfaces...'), self.__addInterfaceFiles) |
135 self.menu.addAction( |
|
136 self.trUtf8('Add interfaces...'), self.__addInterfaceFiles) |
129 self.menu.addAction(self.trUtf8('Add interfaces directory...'), |
137 self.menu.addAction(self.trUtf8('Add interfaces directory...'), |
130 self.__addInterfacesDirectory) |
138 self.__addInterfacesDirectory) |
131 self.menu.addSeparator() |
139 self.menu.addSeparator() |
132 self.menu.addAction(self.trUtf8('Expand all directories'), |
140 self.menu.addAction(self.trUtf8('Expand all directories'), |
133 self._expandAllDirs) |
141 self._expandAllDirs) |
134 self.menu.addAction(self.trUtf8('Collapse all directories'), |
142 self.menu.addAction(self.trUtf8('Collapse all directories'), |
135 self._collapseAllDirs) |
143 self._collapseAllDirs) |
136 self.menu.addSeparator() |
144 self.menu.addSeparator() |
137 self.menu.addAction(self.trUtf8('Configure...'), self._configure) |
145 self.menu.addAction(self.trUtf8('Configure...'), self._configure) |
138 self.menu.addAction(self.trUtf8('Configure CORBA...'), self.__configureCorba) |
146 self.menu.addAction( |
|
147 self.trUtf8('Configure CORBA...'), self.__configureCorba) |
139 |
148 |
140 self.backMenu = QMenu(self) |
149 self.backMenu = QMenu(self) |
141 if self.omniidl is not None: |
150 if self.omniidl is not None: |
142 self.backMenu.addAction(self.trUtf8('Compile all interfaces'), |
151 self.backMenu.addAction(self.trUtf8('Compile all interfaces'), |
143 self.__compileAllInterfaces) |
152 self.__compileAllInterfaces) |
151 self._expandAllDirs) |
160 self._expandAllDirs) |
152 self.backMenu.addAction(self.trUtf8('Collapse all directories'), |
161 self.backMenu.addAction(self.trUtf8('Collapse all directories'), |
153 self._collapseAllDirs) |
162 self._collapseAllDirs) |
154 self.backMenu.addSeparator() |
163 self.backMenu.addSeparator() |
155 self.backMenu.addAction(self.trUtf8('Configure...'), self._configure) |
164 self.backMenu.addAction(self.trUtf8('Configure...'), self._configure) |
156 self.backMenu.addAction(self.trUtf8('Configure CORBA...'), self.__configureCorba) |
165 self.backMenu.addAction( |
|
166 self.trUtf8('Configure CORBA...'), self.__configureCorba) |
157 self.backMenu.setEnabled(False) |
167 self.backMenu.setEnabled(False) |
158 |
168 |
159 # create the menu for multiple selected files |
169 # create the menu for multiple selected files |
160 self.multiMenu = QMenu(self) |
170 self.multiMenu = QMenu(self) |
161 if self.omniidl is not None: |
171 if self.omniidl is not None: |
164 self.multiMenu.addAction(self.trUtf8('Open'), self._openItem) |
174 self.multiMenu.addAction(self.trUtf8('Open'), self._openItem) |
165 self.multiMenu.addSeparator() |
175 self.multiMenu.addSeparator() |
166 act = self.multiMenu.addAction(self.trUtf8('Remove from project'), |
176 act = self.multiMenu.addAction(self.trUtf8('Remove from project'), |
167 self._removeFile) |
177 self._removeFile) |
168 self.multiMenuActions.append(act) |
178 self.multiMenuActions.append(act) |
169 act = self.multiMenu.addAction(self.trUtf8('Delete'), self.__deleteFile) |
179 act = self.multiMenu.addAction( |
|
180 self.trUtf8('Delete'), self.__deleteFile) |
170 self.multiMenuActions.append(act) |
181 self.multiMenuActions.append(act) |
171 self.multiMenu.addSeparator() |
182 self.multiMenu.addSeparator() |
172 self.multiMenu.addAction(self.trUtf8('Expand all directories'), |
183 self.multiMenu.addAction(self.trUtf8('Expand all directories'), |
173 self._expandAllDirs) |
184 self._expandAllDirs) |
174 self.multiMenu.addAction(self.trUtf8('Collapse all directories'), |
185 self.multiMenu.addAction(self.trUtf8('Collapse all directories'), |
175 self._collapseAllDirs) |
186 self._collapseAllDirs) |
176 self.multiMenu.addSeparator() |
187 self.multiMenu.addSeparator() |
177 self.multiMenu.addAction(self.trUtf8('Configure...'), self._configure) |
188 self.multiMenu.addAction(self.trUtf8('Configure...'), self._configure) |
178 self.multiMenu.addAction(self.trUtf8('Configure CORBA...'), self.__configureCorba) |
189 self.multiMenu.addAction( |
|
190 self.trUtf8('Configure CORBA...'), self.__configureCorba) |
179 |
191 |
180 self.dirMenu = QMenu(self) |
192 self.dirMenu = QMenu(self) |
181 if self.omniidl is not None: |
193 if self.omniidl is not None: |
182 self.dirMenu.addAction(self.trUtf8('Compile all interfaces'), |
194 self.dirMenu.addAction(self.trUtf8('Compile all interfaces'), |
183 self.__compileAllInterfaces) |
195 self.__compileAllInterfaces) |
184 self.dirMenu.addSeparator() |
196 self.dirMenu.addSeparator() |
185 act = self.dirMenu.addAction(self.trUtf8('Remove from project'), self._removeFile) |
197 act = self.dirMenu.addAction( |
|
198 self.trUtf8('Remove from project'), self._removeFile) |
186 self.dirMenuActions.append(act) |
199 self.dirMenuActions.append(act) |
187 act = self.dirMenu.addAction(self.trUtf8('Delete'), self._deleteDirectory) |
200 act = self.dirMenu.addAction( |
|
201 self.trUtf8('Delete'), self._deleteDirectory) |
188 self.dirMenuActions.append(act) |
202 self.dirMenuActions.append(act) |
189 self.dirMenu.addSeparator() |
203 self.dirMenu.addSeparator() |
190 self.dirMenu.addAction(self.trUtf8('Add interfaces...'), self.__addInterfaceFiles) |
204 self.dirMenu.addAction( |
|
205 self.trUtf8('Add interfaces...'), self.__addInterfaceFiles) |
191 self.dirMenu.addAction(self.trUtf8('Add interfaces directory...'), |
206 self.dirMenu.addAction(self.trUtf8('Add interfaces directory...'), |
192 self.__addInterfacesDirectory) |
207 self.__addInterfacesDirectory) |
193 self.dirMenu.addSeparator() |
208 self.dirMenu.addSeparator() |
194 self.dirMenu.addAction(self.trUtf8('Copy Path to Clipboard'), |
209 self.dirMenu.addAction(self.trUtf8('Copy Path to Clipboard'), |
195 self._copyToClipboard) |
210 self._copyToClipboard) |
198 self._expandAllDirs) |
213 self._expandAllDirs) |
199 self.dirMenu.addAction(self.trUtf8('Collapse all directories'), |
214 self.dirMenu.addAction(self.trUtf8('Collapse all directories'), |
200 self._collapseAllDirs) |
215 self._collapseAllDirs) |
201 self.dirMenu.addSeparator() |
216 self.dirMenu.addSeparator() |
202 self.dirMenu.addAction(self.trUtf8('Configure...'), self._configure) |
217 self.dirMenu.addAction(self.trUtf8('Configure...'), self._configure) |
203 self.dirMenu.addAction(self.trUtf8('Configure CORBA...'), self.__configureCorba) |
218 self.dirMenu.addAction( |
|
219 self.trUtf8('Configure CORBA...'), self.__configureCorba) |
204 |
220 |
205 self.dirMultiMenu = QMenu(self) |
221 self.dirMultiMenu = QMenu(self) |
206 if self.omniidl is not None: |
222 if self.omniidl is not None: |
207 self.dirMultiMenu.addAction(self.trUtf8('Compile all interfaces'), |
223 self.dirMultiMenu.addAction(self.trUtf8('Compile all interfaces'), |
208 self.__compileAllInterfaces) |
224 self.__compileAllInterfaces) |
215 self.dirMultiMenu.addAction(self.trUtf8('Expand all directories'), |
231 self.dirMultiMenu.addAction(self.trUtf8('Expand all directories'), |
216 self._expandAllDirs) |
232 self._expandAllDirs) |
217 self.dirMultiMenu.addAction(self.trUtf8('Collapse all directories'), |
233 self.dirMultiMenu.addAction(self.trUtf8('Collapse all directories'), |
218 self._collapseAllDirs) |
234 self._collapseAllDirs) |
219 self.dirMultiMenu.addSeparator() |
235 self.dirMultiMenu.addSeparator() |
220 self.dirMultiMenu.addAction(self.trUtf8('Configure...'), self._configure) |
236 self.dirMultiMenu.addAction( |
|
237 self.trUtf8('Configure...'), self._configure) |
221 self.dirMultiMenu.addAction(self.trUtf8('Configure CORBA...'), |
238 self.dirMultiMenu.addAction(self.trUtf8('Configure CORBA...'), |
222 self.__configureCorba) |
239 self.__configureCorba) |
223 |
240 |
224 self.sourceMenu.aboutToShow.connect(self.__showContextMenu) |
241 self.sourceMenu.aboutToShow.connect(self.__showContextMenu) |
225 self.multiMenu.aboutToShow.connect(self.__showContextMenuMulti) |
242 self.multiMenu.aboutToShow.connect(self.__showContextMenuMulti) |
397 if dlg.exec_() == QDialog.Accepted: |
415 if dlg.exec_() == QDialog.Accepted: |
398 for fn2, fn in zip(fullNames, files): |
416 for fn2, fn in zip(fullNames, files): |
399 self.closeSourceWindow.emit(fn2) |
417 self.closeSourceWindow.emit(fn2) |
400 self.project.deleteFile(fn) |
418 self.project.deleteFile(fn) |
401 |
419 |
402 ############################################################################ |
420 ########################################################################### |
403 ## Methods to handle the various compile commands |
421 ## Methods to handle the various compile commands |
404 ############################################################################ |
422 ########################################################################### |
405 |
423 |
406 def __readStdout(self): |
424 def __readStdout(self): |
407 """ |
425 """ |
408 Private slot to handle the readyReadStandardOutput signal of the omniidl process. |
426 Private slot to handle the readyReadStandardOutput signal of the |
|
427 omniidl process. |
409 """ |
428 """ |
410 if self.compileProc is None: |
429 if self.compileProc is None: |
411 return |
430 return |
412 |
431 |
413 ioEncoding = Preferences.getSystem("IOEncoding") |
432 ioEncoding = Preferences.getSystem("IOEncoding") |
454 for file in fileList: |
474 for file in fileList: |
455 self.project.appendFile(file) |
475 self.project.appendFile(file) |
456 if not self.noDialog and not ui.notificationsEnabled(): |
476 if not self.noDialog and not ui.notificationsEnabled(): |
457 E5MessageBox.information(self, |
477 E5MessageBox.information(self, |
458 self.trUtf8("Interface Compilation"), |
478 self.trUtf8("Interface Compilation"), |
459 self.trUtf8("The compilation of the interface file was successful.")) |
479 self.trUtf8( |
|
480 "The compilation of the interface file was" |
|
481 " successful.")) |
460 else: |
482 else: |
461 ui.showNotification(UI.PixmapCache.getPixmap("corba48.png"), |
483 ui.showNotification(UI.PixmapCache.getPixmap("corba48.png"), |
462 self.trUtf8("Interface Compilation"), |
484 self.trUtf8("Interface Compilation"), |
463 self.trUtf8("The compilation of the interface file was successful.")) |
485 self.trUtf8( |
|
486 "The compilation of the interface file was" |
|
487 " successful.")) |
464 else: |
488 else: |
465 if not self.noDialog: |
489 if not self.noDialog: |
466 E5MessageBox.information(self, |
490 E5MessageBox.information(self, |
467 self.trUtf8("Interface Compilation"), |
491 self.trUtf8("Interface Compilation"), |
468 self.trUtf8("The compilation of the interface file failed.")) |
492 self.trUtf8( |
|
493 "The compilation of the interface file failed.")) |
469 else: |
494 else: |
470 ui.showNotification(UI.PixmapCache.getPixmap("corba48.png"), |
495 ui.showNotification(UI.PixmapCache.getPixmap("corba48.png"), |
471 self.trUtf8("Interface Compilation"), |
496 self.trUtf8("Interface Compilation"), |
472 self.trUtf8("The compilation of the interface file failed.")) |
497 self.trUtf8( |
|
498 "The compilation of the interface file failed.")) |
473 self.compileProc = None |
499 self.compileProc = None |
474 |
500 |
475 def __compileIDL(self, fn, noDialog=False, progress=None): |
501 def __compileIDL(self, fn, noDialog=False, progress=None): |
476 """ |
502 """ |
477 Privat method to compile a .idl file to python. |
503 Privat method to compile a .idl file to python. |