Project/ProjectSourcesBrowser.py

branch
Py2 comp.
changeset 3484
645c12de6b0c
parent 3178
f25fc1364c88
parent 3441
1b07f996e9ee
child 3496
b905cb8c520c
equal deleted inserted replaced
3456:96232974dcdb 3484:645c12de6b0c
55 parent) 55 parent)
56 56
57 self.selectedItemsFilter = \ 57 self.selectedItemsFilter = \
58 [ProjectBrowserFileItem, ProjectBrowserSimpleDirectoryItem] 58 [ProjectBrowserFileItem, ProjectBrowserSimpleDirectoryItem]
59 59
60 self.setWindowTitle(self.trUtf8('Sources')) 60 self.setWindowTitle(self.tr('Sources'))
61 61
62 self.setWhatsThis(self.trUtf8( 62 self.setWhatsThis(self.tr(
63 """<b>Project Sources Browser</b>""" 63 """<b>Project Sources Browser</b>"""
64 """<p>This allows to easily see all sources contained in the""" 64 """<p>This allows to easily see all sources contained in the"""
65 """ current project. Several actions can be executed via the""" 65 """ current project. Several actions can be executed via the"""
66 """ context menu.</p>""" 66 """ context menu.</p>"""
67 )) 67 ))
108 if self.project.pdata["PROGLANGUAGE"][0] in \ 108 if self.project.pdata["PROGLANGUAGE"][0] in \
109 ["Python", "Python2", "Python3"]: 109 ["Python", "Python2", "Python3"]:
110 self.__createPythonPopupMenus() 110 self.__createPythonPopupMenus()
111 elif self.project.pdata["PROGLANGUAGE"][0] == "Ruby": 111 elif self.project.pdata["PROGLANGUAGE"][0] == "Ruby":
112 self.__createRubyPopupMenus() 112 self.__createRubyPopupMenus()
113 elif self.project.pdata["PROGLANGUAGE"][0] == "JavaScript":
114 self.__createJavaScriptPopupMenus()
113 115
114 def __createPythonPopupMenus(self): 116 def __createPythonPopupMenus(self):
115 """ 117 """
116 Privat method to generate the popup menus for a Python project. 118 Privat method to generate the popup menus for a Python project.
117 """ 119 """
118 self.checksMenu = QMenu(self.trUtf8('Check')) 120 # TODO: add this to the multi files menu
121 self.checksMenu = QMenu(self.tr('Check'))
119 self.checksMenu.aboutToShow.connect(self.__showContextMenuCheck) 122 self.checksMenu.aboutToShow.connect(self.__showContextMenuCheck)
120 123
121 self.menuShow = QMenu(self.trUtf8('Show')) 124 self.menuShow = QMenu(self.tr('Show'))
122 self.menuShow.addAction( 125 self.menuShow.addAction(
123 self.trUtf8('Code metrics...'), self.__showCodeMetrics) 126 self.tr('Code metrics...'), self.__showCodeMetrics)
124 self.coverageMenuAction = self.menuShow.addAction( 127 self.coverageMenuAction = self.menuShow.addAction(
125 self.trUtf8('Code coverage...'), self.__showCodeCoverage) 128 self.tr('Code coverage...'), self.__showCodeCoverage)
126 self.profileMenuAction = self.menuShow.addAction( 129 self.profileMenuAction = self.menuShow.addAction(
127 self.trUtf8('Profile data...'), self.__showProfileData) 130 self.tr('Profile data...'), self.__showProfileData)
128 self.menuShow.aboutToShow.connect(self.__showContextMenuShow) 131 self.menuShow.aboutToShow.connect(self.__showContextMenuShow)
129 132
130 self.graphicsMenu = QMenu(self.trUtf8('Diagrams')) 133 self.graphicsMenu = QMenu(self.tr('Diagrams'))
131 self.classDiagramAction = self.graphicsMenu.addAction( 134 self.classDiagramAction = self.graphicsMenu.addAction(
132 self.trUtf8("Class Diagram..."), self.__showClassDiagram) 135 self.tr("Class Diagram..."), self.__showClassDiagram)
133 self.graphicsMenu.addAction( 136 self.graphicsMenu.addAction(
134 self.trUtf8("Package Diagram..."), self.__showPackageDiagram) 137 self.tr("Package Diagram..."), self.__showPackageDiagram)
135 self.importsDiagramAction = self.graphicsMenu.addAction( 138 self.importsDiagramAction = self.graphicsMenu.addAction(
136 self.trUtf8("Imports Diagram..."), self.__showImportsDiagram) 139 self.tr("Imports Diagram..."), self.__showImportsDiagram)
137 self.graphicsMenu.addAction( 140 self.graphicsMenu.addAction(
138 self.trUtf8("Application Diagram..."), 141 self.tr("Application Diagram..."),
139 self.__showApplicationDiagram) 142 self.__showApplicationDiagram)
140 self.graphicsMenu.addSeparator() 143 self.graphicsMenu.addSeparator()
141 self.graphicsMenu.addAction( 144 self.graphicsMenu.addAction(
142 UI.PixmapCache.getIcon("open.png"), 145 UI.PixmapCache.getIcon("open.png"),
143 self.trUtf8("Load Diagram..."), self.__loadDiagram) 146 self.tr("Load Diagram..."), self.__loadDiagram)
144 self.graphicsMenu.aboutToShow.connect(self.__showContextMenuGraphics) 147 self.graphicsMenu.aboutToShow.connect(self.__showContextMenuGraphics)
145 148
146 self.unittestAction = self.sourceMenu.addAction( 149 self.unittestAction = self.sourceMenu.addAction(
147 self.trUtf8('Run unittest...'), self.handleUnittest) 150 self.tr('Run unittest...'), self.handleUnittest)
148 self.sourceMenu.addSeparator() 151 self.sourceMenu.addSeparator()
149 act = self.sourceMenu.addAction( 152 act = self.sourceMenu.addAction(
150 self.trUtf8('Rename file'), self._renameFile) 153 self.tr('Rename file'), self._renameFile)
151 self.menuActions.append(act) 154 self.menuActions.append(act)
152 act = self.sourceMenu.addAction( 155 act = self.sourceMenu.addAction(
153 self.trUtf8('Remove from project'), self._removeFile) 156 self.tr('Remove from project'), self._removeFile)
154 self.menuActions.append(act) 157 self.menuActions.append(act)
155 act = self.sourceMenu.addAction( 158 act = self.sourceMenu.addAction(
156 self.trUtf8('Delete'), self.__deleteFile) 159 self.tr('Delete'), self.__deleteFile)
157 self.menuActions.append(act) 160 self.menuActions.append(act)
158 self.sourceMenu.addSeparator() 161 self.sourceMenu.addSeparator()
159 self.sourceMenu.addAction( 162 self.sourceMenu.addAction(
160 self.trUtf8('New package...'), self.__addNewPackage) 163 self.tr('New package...'), self.__addNewPackage)
161 self.sourceMenu.addAction( 164 self.sourceMenu.addAction(
162 self.trUtf8('Add source files...'), self.__addSourceFiles) 165 self.tr('Add source files...'), self.__addSourceFiles)
163 self.sourceMenu.addAction( 166 self.sourceMenu.addAction(
164 self.trUtf8('Add source directory...'), self.__addSourceDirectory) 167 self.tr('Add source directory...'), self.__addSourceDirectory)
165 self.sourceMenu.addSeparator() 168 self.sourceMenu.addSeparator()
166 act = self.sourceMenu.addMenu(self.graphicsMenu) 169 act = self.sourceMenu.addMenu(self.graphicsMenu)
167 self.sourceMenu.addSeparator() 170 self.sourceMenu.addSeparator()
168 self.sourceMenu.addMenu(self.checksMenu) 171 self.sourceMenu.addMenu(self.checksMenu)
169 self.sourceMenu.addSeparator() 172 self.sourceMenu.addSeparator()
170 self.sourceMenuActions["Show"] = self.sourceMenu.addMenu(self.menuShow) 173 self.sourceMenuActions["Show"] = self.sourceMenu.addMenu(self.menuShow)
171 self.sourceMenu.addSeparator() 174 self.sourceMenu.addSeparator()
172 self.sourceMenu.addAction( 175 self.sourceMenu.addAction(
173 self.trUtf8('Copy Path to Clipboard'), self._copyToClipboard) 176 self.tr('Copy Path to Clipboard'), self._copyToClipboard)
174 self.sourceMenu.addSeparator() 177 self.sourceMenu.addSeparator()
175 self.sourceMenu.addAction( 178 self.sourceMenu.addAction(
176 self.trUtf8('Expand all directories'), self._expandAllDirs) 179 self.tr('Expand all directories'), self._expandAllDirs)
177 self.sourceMenu.addAction( 180 self.sourceMenu.addAction(
178 self.trUtf8('Collapse all directories'), self._collapseAllDirs) 181 self.tr('Collapse all directories'), self._collapseAllDirs)
179 self.sourceMenu.addSeparator() 182 self.sourceMenu.addSeparator()
180 self.sourceMenu.addAction(self.trUtf8('Configure...'), self._configure) 183 self.sourceMenu.addAction(self.tr('Configure...'), self._configure)
181 184
182 self.menu.addSeparator() 185 self.menu.addSeparator()
183 self.menu.addAction( 186 self.menu.addAction(
184 self.trUtf8('New package...'), self.__addNewPackage) 187 self.tr('New package...'), self.__addNewPackage)
185 self.menu.addAction( 188 self.menu.addAction(
186 self.trUtf8('Add source files...'), self.__addSourceFiles) 189 self.tr('Add source files...'), self.__addSourceFiles)
187 self.menu.addAction( 190 self.menu.addAction(
188 self.trUtf8('Add source directory...'), self.__addSourceDirectory) 191 self.tr('Add source directory...'), self.__addSourceDirectory)
189 self.menu.addSeparator() 192 self.menu.addSeparator()
190 self.menu.addAction( 193 self.menu.addAction(
191 self.trUtf8('Expand all directories'), self._expandAllDirs) 194 self.tr('Expand all directories'), self._expandAllDirs)
192 self.menu.addAction( 195 self.menu.addAction(
193 self.trUtf8('Collapse all directories'), self._collapseAllDirs) 196 self.tr('Collapse all directories'), self._collapseAllDirs)
194 self.menu.addSeparator() 197 self.menu.addSeparator()
195 self.menu.addAction(self.trUtf8('Configure...'), self._configure) 198 self.menu.addAction(self.tr('Configure...'), self._configure)
196 199
197 # create the attribute menu 200 # create the attribute menu
198 self.gotoMenu = QMenu(self.trUtf8("Goto"), self) 201 self.gotoMenu = QMenu(self.tr("Goto"), self)
199 self.gotoMenu.aboutToShow.connect(self._showGotoMenu) 202 self.gotoMenu.aboutToShow.connect(self._showGotoMenu)
200 self.gotoMenu.triggered.connect(self._gotoAttribute) 203 self.gotoMenu.triggered.connect(self._gotoAttribute)
201 204
202 self.attributeMenu = QMenu(self) 205 self.attributeMenu = QMenu(self)
203 self.attributeMenu.addMenu(self.gotoMenu) 206 self.attributeMenu.addMenu(self.gotoMenu)
204 self.attributeMenu.addSeparator() 207 self.attributeMenu.addSeparator()
205 self.attributeMenu.addAction( 208 self.attributeMenu.addAction(
206 self.trUtf8('New package...'), self.__addNewPackage) 209 self.tr('New package...'), self.__addNewPackage)
207 self.attributeMenu.addAction( 210 self.attributeMenu.addAction(
208 self.trUtf8('Add source files...'), self.project.addSourceFiles) 211 self.tr('Add source files...'), self.project.addSourceFiles)
209 self.attributeMenu.addAction( 212 self.attributeMenu.addAction(
210 self.trUtf8('Add source directory...'), self.project.addSourceDir) 213 self.tr('Add source directory...'), self.project.addSourceDir)
211 self.attributeMenu.addSeparator() 214 self.attributeMenu.addSeparator()
212 self.attributeMenu.addAction( 215 self.attributeMenu.addAction(
213 self.trUtf8('Expand all directories'), self._expandAllDirs) 216 self.tr('Expand all directories'), self._expandAllDirs)
214 self.attributeMenu.addAction( 217 self.attributeMenu.addAction(
215 self.trUtf8('Collapse all directories'), self._collapseAllDirs) 218 self.tr('Collapse all directories'), self._collapseAllDirs)
216 self.attributeMenu.addSeparator() 219 self.attributeMenu.addSeparator()
217 self.attributeMenu.addAction( 220 self.attributeMenu.addAction(
218 self.trUtf8('Configure...'), self._configure) 221 self.tr('Configure...'), self._configure)
219 222
220 self.backMenu = QMenu(self) 223 self.backMenu = QMenu(self)
221 self.backMenu.addAction( 224 self.backMenu.addAction(
222 self.trUtf8('New package...'), self.__addNewPackage) 225 self.tr('New package...'), self.__addNewPackage)
223 self.backMenu.addAction( 226 self.backMenu.addAction(
224 self.trUtf8('Add source files...'), self.project.addSourceFiles) 227 self.tr('Add source files...'), self.project.addSourceFiles)
225 self.backMenu.addAction( 228 self.backMenu.addAction(
226 self.trUtf8('Add source directory...'), self.project.addSourceDir) 229 self.tr('Add source directory...'), self.project.addSourceDir)
227 self.backMenu.addSeparator() 230 self.backMenu.addSeparator()
228 self.backMenu.addAction( 231 self.backMenu.addAction(
229 self.trUtf8('Expand all directories'), self._expandAllDirs) 232 self.tr('Expand all directories'), self._expandAllDirs)
230 self.backMenu.addAction( 233 self.backMenu.addAction(
231 self.trUtf8('Collapse all directories'), self._collapseAllDirs) 234 self.tr('Collapse all directories'), self._collapseAllDirs)
232 self.backMenu.addSeparator() 235 self.backMenu.addSeparator()
233 self.backMenu.addAction(self.trUtf8('Configure...'), self._configure) 236 self.backMenu.addAction(self.tr('Configure...'), self._configure)
234 self.backMenu.setEnabled(False) 237 self.backMenu.setEnabled(False)
235 238
236 self.multiMenu.addSeparator() 239 self.multiMenu.addSeparator()
237 act = self.multiMenu.addAction( 240 act = self.multiMenu.addAction(
238 self.trUtf8('Remove from project'), self._removeFile) 241 self.tr('Remove from project'), self._removeFile)
239 self.multiMenuActions.append(act) 242 self.multiMenuActions.append(act)
240 act = self.multiMenu.addAction( 243 act = self.multiMenu.addAction(
241 self.trUtf8('Delete'), self.__deleteFile) 244 self.tr('Delete'), self.__deleteFile)
242 self.multiMenuActions.append(act) 245 self.multiMenuActions.append(act)
243 self.multiMenu.addSeparator() 246 self.multiMenu.addSeparator()
244 self.multiMenu.addAction( 247 self.multiMenu.addAction(
245 self.trUtf8('Expand all directories'), self._expandAllDirs) 248 self.tr('Expand all directories'), self._expandAllDirs)
246 self.multiMenu.addAction( 249 self.multiMenu.addAction(
247 self.trUtf8('Collapse all directories'), self._collapseAllDirs) 250 self.tr('Collapse all directories'), self._collapseAllDirs)
248 self.multiMenu.addSeparator() 251 self.multiMenu.addSeparator()
249 self.multiMenu.addAction(self.trUtf8('Configure...'), self._configure) 252 self.multiMenu.addAction(self.tr('Configure...'), self._configure)
250 253
251 self.dirMenu = QMenu(self) 254 self.dirMenu = QMenu(self)
252 act = self.dirMenu.addAction( 255 act = self.dirMenu.addAction(
253 self.trUtf8('Remove from project'), self._removeDir) 256 self.tr('Remove from project'), self._removeDir)
254 self.dirMenuActions.append(act) 257 self.dirMenuActions.append(act)
255 act = self.dirMenu.addAction( 258 act = self.dirMenu.addAction(
256 self.trUtf8('Delete'), self._deleteDirectory) 259 self.tr('Delete'), self._deleteDirectory)
257 self.dirMenuActions.append(act) 260 self.dirMenuActions.append(act)
258 self.dirMenu.addSeparator() 261 self.dirMenu.addSeparator()
259 self.dirMenu.addAction( 262 self.dirMenu.addAction(
260 self.trUtf8('New package...'), self.__addNewPackage) 263 self.tr('New package...'), self.__addNewPackage)
261 self.dirMenu.addAction( 264 self.dirMenu.addAction(
262 self.trUtf8('Add source files...'), self.__addSourceFiles) 265 self.tr('Add source files...'), self.__addSourceFiles)
263 self.dirMenu.addAction( 266 self.dirMenu.addAction(
264 self.trUtf8('Add source directory...'), self.__addSourceDirectory) 267 self.tr('Add source directory...'), self.__addSourceDirectory)
265 self.dirMenu.addSeparator() 268 self.dirMenu.addSeparator()
266 act = self.dirMenu.addMenu(self.graphicsMenu) 269 act = self.dirMenu.addMenu(self.graphicsMenu)
267 self.dirMenu.addSeparator() 270 self.dirMenu.addSeparator()
268 self.dirMenu.addMenu(self.checksMenu) 271 self.dirMenu.addMenu(self.checksMenu)
269 self.dirMenu.addSeparator() 272 self.dirMenu.addSeparator()
270 self.dirMenu.addAction( 273 self.dirMenu.addAction(
271 self.trUtf8('Copy Path to Clipboard'), self._copyToClipboard) 274 self.tr('Copy Path to Clipboard'), self._copyToClipboard)
272 self.dirMenu.addSeparator() 275 self.dirMenu.addSeparator()
273 self.dirMenu.addAction( 276 self.dirMenu.addAction(
274 self.trUtf8('Expand all directories'), self._expandAllDirs) 277 self.tr('Expand all directories'), self._expandAllDirs)
275 self.dirMenu.addAction( 278 self.dirMenu.addAction(
276 self.trUtf8('Collapse all directories'), self._collapseAllDirs) 279 self.tr('Collapse all directories'), self._collapseAllDirs)
277 self.dirMenu.addSeparator() 280 self.dirMenu.addSeparator()
278 self.dirMenu.addAction(self.trUtf8('Configure...'), self._configure) 281 self.dirMenu.addAction(self.tr('Configure...'), self._configure)
279 282
280 self.dirMultiMenu = QMenu(self) 283 self.dirMultiMenu = QMenu(self)
281 self.dirMultiMenu.addAction( 284 self.dirMultiMenu.addAction(
282 self.trUtf8('Expand all directories'), self._expandAllDirs) 285 self.tr('Expand all directories'), self._expandAllDirs)
283 self.dirMultiMenu.addAction( 286 self.dirMultiMenu.addAction(
284 self.trUtf8('Collapse all directories'), self._collapseAllDirs) 287 self.tr('Collapse all directories'), self._collapseAllDirs)
285 self.dirMultiMenu.addSeparator() 288 self.dirMultiMenu.addSeparator()
286 self.dirMultiMenu.addAction( 289 self.dirMultiMenu.addAction(
287 self.trUtf8('Configure...'), self._configure) 290 self.tr('Configure...'), self._configure)
288 291
289 self.sourceMenu.aboutToShow.connect(self.__showContextMenu) 292 self.sourceMenu.aboutToShow.connect(self.__showContextMenu)
290 self.multiMenu.aboutToShow.connect(self.__showContextMenuMulti) 293 self.multiMenu.aboutToShow.connect(self.__showContextMenuMulti)
291 self.dirMenu.aboutToShow.connect(self.__showContextMenuDir) 294 self.dirMenu.aboutToShow.connect(self.__showContextMenuDir)
292 self.dirMultiMenu.aboutToShow.connect(self.__showContextMenuDirMulti) 295 self.dirMultiMenu.aboutToShow.connect(self.__showContextMenuDirMulti)
295 298
296 def __createRubyPopupMenus(self): 299 def __createRubyPopupMenus(self):
297 """ 300 """
298 Privat method to generate the popup menus for a Ruby project. 301 Privat method to generate the popup menus for a Ruby project.
299 """ 302 """
300 self.graphicsMenu = QMenu(self.trUtf8('Diagrams')) 303 self.graphicsMenu = QMenu(self.tr('Diagrams'))
301 self.classDiagramAction = self.graphicsMenu.addAction( 304 self.classDiagramAction = self.graphicsMenu.addAction(
302 self.trUtf8("Class Diagram..."), self.__showClassDiagram) 305 self.tr("Class Diagram..."), self.__showClassDiagram)
303 self.graphicsMenu.addAction( 306 self.graphicsMenu.addAction(
304 self.trUtf8("Package Diagram..."), self.__showPackageDiagram) 307 self.tr("Package Diagram..."), self.__showPackageDiagram)
305 self.graphicsMenu.addAction( 308 self.graphicsMenu.addAction(
306 self.trUtf8("Application Diagram..."), 309 self.tr("Application Diagram..."),
307 self.__showApplicationDiagram) 310 self.__showApplicationDiagram)
308 self.graphicsMenu.addSeparator() 311 self.graphicsMenu.addSeparator()
309 self.graphicsMenu.addAction( 312 self.graphicsMenu.addAction(
310 UI.PixmapCache.getIcon("fileOpen.png"), 313 UI.PixmapCache.getIcon("fileOpen.png"),
311 self.trUtf8("Load Diagram..."), self.__loadDiagram) 314 self.tr("Load Diagram..."), self.__loadDiagram)
312 315
313 self.sourceMenu.addSeparator() 316 self.sourceMenu.addSeparator()
314 act = self.sourceMenu.addAction( 317 act = self.sourceMenu.addAction(
315 self.trUtf8('Rename file'), self._renameFile) 318 self.tr('Rename file'), self._renameFile)
316 self.menuActions.append(act) 319 self.menuActions.append(act)
317 act = self.sourceMenu.addAction( 320 act = self.sourceMenu.addAction(
318 self.trUtf8('Remove from project'), self._removeFile) 321 self.tr('Remove from project'), self._removeFile)
319 self.menuActions.append(act) 322 self.menuActions.append(act)
320 act = self.sourceMenu.addAction( 323 act = self.sourceMenu.addAction(
321 self.trUtf8('Delete'), self.__deleteFile) 324 self.tr('Delete'), self.__deleteFile)
322 self.menuActions.append(act) 325 self.menuActions.append(act)
323 self.sourceMenu.addSeparator() 326 self.sourceMenu.addSeparator()
324 self.sourceMenu.addAction( 327 self.sourceMenu.addAction(
325 self.trUtf8('Add source files...'), self.__addSourceFiles) 328 self.tr('Add source files...'), self.__addSourceFiles)
326 self.sourceMenu.addAction( 329 self.sourceMenu.addAction(
327 self.trUtf8('Add source directory...'), self.__addSourceDirectory) 330 self.tr('Add source directory...'), self.__addSourceDirectory)
328 self.sourceMenu.addSeparator() 331 self.sourceMenu.addSeparator()
329 act = self.sourceMenu.addMenu(self.graphicsMenu) 332 act = self.sourceMenu.addMenu(self.graphicsMenu)
330 self.sourceMenu.addSeparator() 333 self.sourceMenu.addSeparator()
331 self.sourceMenu.addAction( 334 self.sourceMenu.addAction(
332 self.trUtf8('Expand all directories'), self._expandAllDirs) 335 self.tr('Expand all directories'), self._expandAllDirs)
333 self.sourceMenu.addAction( 336 self.sourceMenu.addAction(
334 self.trUtf8('Collapse all directories'), self._collapseAllDirs) 337 self.tr('Collapse all directories'), self._collapseAllDirs)
335 self.sourceMenu.addSeparator() 338 self.sourceMenu.addSeparator()
336 self.sourceMenu.addAction(self.trUtf8('Configure...'), self._configure) 339 self.sourceMenu.addAction(self.tr('Configure...'), self._configure)
337 340
338 self.menu.addSeparator() 341 self.menu.addSeparator()
339 self.menu.addAction( 342 self.menu.addAction(
340 self.trUtf8('Add source files...'), self.__addSourceFiles) 343 self.tr('Add source files...'), self.__addSourceFiles)
341 self.menu.addAction( 344 self.menu.addAction(
342 self.trUtf8('Add source directory...'), self.__addSourceDirectory) 345 self.tr('Add source directory...'), self.__addSourceDirectory)
343 self.menu.addSeparator() 346 self.menu.addSeparator()
344 self.menu.addAction( 347 self.menu.addAction(
345 self.trUtf8('Expand all directories'), self._expandAllDirs) 348 self.tr('Expand all directories'), self._expandAllDirs)
346 self.menu.addAction( 349 self.menu.addAction(
347 self.trUtf8('Collapse all directories'), self._collapseAllDirs) 350 self.tr('Collapse all directories'), self._collapseAllDirs)
348 self.menu.addSeparator() 351 self.menu.addSeparator()
349 self.menu.addAction(self.trUtf8('Configure...'), self._configure) 352 self.menu.addAction(self.tr('Configure...'), self._configure)
350 353
351 # create the attribute menu 354 # create the attribute menu
352 self.gotoMenu = QMenu(self.trUtf8("Goto"), self) 355 self.gotoMenu = QMenu(self.tr("Goto"), self)
353 self.gotoMenu.aboutToShow.connect(self._showGotoMenu) 356 self.gotoMenu.aboutToShow.connect(self._showGotoMenu)
354 self.gotoMenu.triggered.connect(self._gotoAttribute) 357 self.gotoMenu.triggered.connect(self._gotoAttribute)
355 358
356 self.attributeMenu = QMenu(self) 359 self.attributeMenu = QMenu(self)
357 self.attributeMenu.addMenu(self.gotoMenu) 360 self.attributeMenu.addMenu(self.gotoMenu)
358 self.attributeMenu.addSeparator() 361 self.attributeMenu.addSeparator()
359 self.attributeMenu.addAction( 362 self.attributeMenu.addAction(
360 self.trUtf8('New package...'), self.__addNewPackage) 363 self.tr('New package...'), self.__addNewPackage)
361 self.attributeMenu.addAction( 364 self.attributeMenu.addAction(
362 self.trUtf8('Add source files...'), self.project.addSourceFiles) 365 self.tr('Add source files...'), self.project.addSourceFiles)
363 self.attributeMenu.addAction( 366 self.attributeMenu.addAction(
364 self.trUtf8('Add source directory...'), self.project.addSourceDir) 367 self.tr('Add source directory...'), self.project.addSourceDir)
365 self.attributeMenu.addSeparator() 368 self.attributeMenu.addSeparator()
366 self.attributeMenu.addAction( 369 self.attributeMenu.addAction(
367 self.trUtf8('Expand all directories'), self._expandAllDirs) 370 self.tr('Expand all directories'), self._expandAllDirs)
368 self.attributeMenu.addAction( 371 self.attributeMenu.addAction(
369 self.trUtf8('Collapse all directories'), self._collapseAllDirs) 372 self.tr('Collapse all directories'), self._collapseAllDirs)
370 self.attributeMenu.addSeparator() 373 self.attributeMenu.addSeparator()
371 self.attributeMenu.addAction( 374 self.attributeMenu.addAction(
372 self.trUtf8('Configure...'), self._configure) 375 self.tr('Configure...'), self._configure)
373 376
374 self.backMenu = QMenu(self) 377 self.backMenu = QMenu(self)
375 self.backMenu.addAction( 378 self.backMenu.addAction(
376 self.trUtf8('Add source files...'), self.project.addSourceFiles) 379 self.tr('Add source files...'), self.project.addSourceFiles)
377 self.backMenu.addAction( 380 self.backMenu.addAction(
378 self.trUtf8('Add source directory...'), self.project.addSourceDir) 381 self.tr('Add source directory...'), self.project.addSourceDir)
379 self.backMenu.addSeparator() 382 self.backMenu.addSeparator()
380 self.backMenu.addAction( 383 self.backMenu.addAction(
381 self.trUtf8('Expand all directories'), self._expandAllDirs) 384 self.tr('Expand all directories'), self._expandAllDirs)
382 self.backMenu.addAction( 385 self.backMenu.addAction(
383 self.trUtf8('Collapse all directories'), self._collapseAllDirs) 386 self.tr('Collapse all directories'), self._collapseAllDirs)
384 self.backMenu.setEnabled(False) 387 self.backMenu.setEnabled(False)
385 self.backMenu.addSeparator() 388 self.backMenu.addSeparator()
386 self.backMenu.addAction(self.trUtf8('Configure...'), self._configure) 389 self.backMenu.addAction(self.tr('Configure...'), self._configure)
387 390
388 self.multiMenu.addSeparator() 391 self.multiMenu.addSeparator()
389 act = self.multiMenu.addAction( 392 act = self.multiMenu.addAction(
390 self.trUtf8('Remove from project'), self._removeFile) 393 self.tr('Remove from project'), self._removeFile)
391 self.multiMenuActions.append(act) 394 self.multiMenuActions.append(act)
392 act = self.multiMenu.addAction( 395 act = self.multiMenu.addAction(
393 self.trUtf8('Delete'), self.__deleteFile) 396 self.tr('Delete'), self.__deleteFile)
394 self.multiMenuActions.append(act) 397 self.multiMenuActions.append(act)
395 self.multiMenu.addSeparator() 398 self.multiMenu.addSeparator()
396 self.multiMenu.addAction( 399 self.multiMenu.addAction(
397 self.trUtf8('Expand all directories'), self._expandAllDirs) 400 self.tr('Expand all directories'), self._expandAllDirs)
398 self.multiMenu.addAction( 401 self.multiMenu.addAction(
399 self.trUtf8('Collapse all directories'), self._collapseAllDirs) 402 self.tr('Collapse all directories'), self._collapseAllDirs)
400 self.multiMenu.addSeparator() 403 self.multiMenu.addSeparator()
401 self.multiMenu.addAction(self.trUtf8('Configure...'), self._configure) 404 self.multiMenu.addAction(self.tr('Configure...'), self._configure)
402 405
403 self.dirMenu = QMenu(self) 406 self.dirMenu = QMenu(self)
404 act = self.dirMenu.addAction( 407 act = self.dirMenu.addAction(
405 self.trUtf8('Remove from project'), self._removeDir) 408 self.tr('Remove from project'), self._removeDir)
406 self.dirMenuActions.append(act) 409 self.dirMenuActions.append(act)
407 self.dirMenu.addSeparator() 410 self.dirMenu.addSeparator()
408 self.dirMenu.addAction( 411 self.dirMenu.addAction(
409 self.trUtf8('Add source files...'), self.__addSourceFiles) 412 self.tr('Add source files...'), self.__addSourceFiles)
410 self.dirMenu.addAction( 413 self.dirMenu.addAction(
411 self.trUtf8('Add source directory...'), self.__addSourceDirectory) 414 self.tr('Add source directory...'), self.__addSourceDirectory)
412 self.dirMenu.addSeparator() 415 self.dirMenu.addSeparator()
413 act = self.dirMenu.addMenu(self.graphicsMenu) 416 act = self.dirMenu.addMenu(self.graphicsMenu)
414 self.dirMenu.addSeparator() 417 self.dirMenu.addSeparator()
415 self.dirMenu.addAction( 418 self.dirMenu.addAction(
416 self.trUtf8('Expand all directories'), self._expandAllDirs) 419 self.tr('Expand all directories'), self._expandAllDirs)
417 self.dirMenu.addAction( 420 self.dirMenu.addAction(
418 self.trUtf8('Collapse all directories'), self._collapseAllDirs) 421 self.tr('Collapse all directories'), self._collapseAllDirs)
419 self.dirMenu.addSeparator() 422 self.dirMenu.addSeparator()
420 self.dirMenu.addAction(self.trUtf8('Configure...'), self._configure) 423 self.dirMenu.addAction(self.tr('Configure...'), self._configure)
421 424
422 self.dirMultiMenu = QMenu(self) 425 self.dirMultiMenu = QMenu(self)
423 self.dirMultiMenu.addAction( 426 self.dirMultiMenu.addAction(
424 self.trUtf8('Expand all directories'), self._expandAllDirs) 427 self.tr('Expand all directories'), self._expandAllDirs)
425 self.dirMultiMenu.addAction( 428 self.dirMultiMenu.addAction(
426 self.trUtf8('Collapse all directories'), self._collapseAllDirs) 429 self.tr('Collapse all directories'), self._collapseAllDirs)
427 self.dirMultiMenu.addSeparator() 430 self.dirMultiMenu.addSeparator()
428 self.dirMultiMenu.addAction( 431 self.dirMultiMenu.addAction(
429 self.trUtf8('Configure...'), self._configure) 432 self.tr('Configure...'), self._configure)
433
434 self.sourceMenu.aboutToShow.connect(self.__showContextMenu)
435 self.multiMenu.aboutToShow.connect(self.__showContextMenuMulti)
436 self.dirMenu.aboutToShow.connect(self.__showContextMenuDir)
437 self.dirMultiMenu.aboutToShow.connect(self.__showContextMenuDirMulti)
438 self.backMenu.aboutToShow.connect(self.__showContextMenuBack)
439 self.mainMenu = self.sourceMenu
440
441 def __createJavaScriptPopupMenus(self):
442 """
443 Privat method to generate the popup menus for a Python project.
444 """
445 # TODO: add this to the multi files menu
446 self.checksMenu = QMenu(self.tr('Check'))
447 self.checksMenu.aboutToShow.connect(self.__showContextMenuCheck)
448
449 self.sourceMenu.addSeparator()
450 act = self.sourceMenu.addAction(
451 self.tr('Rename file'), self._renameFile)
452 self.menuActions.append(act)
453 act = self.sourceMenu.addAction(
454 self.tr('Remove from project'), self._removeFile)
455 self.menuActions.append(act)
456 act = self.sourceMenu.addAction(
457 self.tr('Delete'), self.__deleteFile)
458 self.menuActions.append(act)
459 self.sourceMenu.addSeparator()
460 self.sourceMenu.addAction(
461 self.tr('Add source files...'), self.__addSourceFiles)
462 self.sourceMenu.addAction(
463 self.tr('Add source directory...'), self.__addSourceDirectory)
464 self.sourceMenu.addSeparator()
465 self.sourceMenu.addMenu(self.checksMenu)
466 self.sourceMenu.addSeparator()
467 self.sourceMenu.addAction(
468 self.tr('Copy Path to Clipboard'), self._copyToClipboard)
469 self.sourceMenu.addSeparator()
470 self.sourceMenu.addAction(
471 self.tr('Expand all directories'), self._expandAllDirs)
472 self.sourceMenu.addAction(
473 self.tr('Collapse all directories'), self._collapseAllDirs)
474 self.sourceMenu.addSeparator()
475 self.sourceMenu.addAction(self.tr('Configure...'), self._configure)
476
477 self.menu.addSeparator()
478 self.menu.addAction(
479 self.tr('Add source files...'), self.__addSourceFiles)
480 self.menu.addAction(
481 self.tr('Add source directory...'), self.__addSourceDirectory)
482 self.menu.addSeparator()
483 self.menu.addAction(
484 self.tr('Expand all directories'), self._expandAllDirs)
485 self.menu.addAction(
486 self.tr('Collapse all directories'), self._collapseAllDirs)
487 self.menu.addSeparator()
488 self.menu.addAction(self.tr('Configure...'), self._configure)
489
490 # create the attribute menu
491 self.gotoMenu = QMenu(self.tr("Goto"), self)
492 self.gotoMenu.aboutToShow.connect(self._showGotoMenu)
493 self.gotoMenu.triggered.connect(self._gotoAttribute)
494
495 self.attributeMenu = QMenu(self)
496 self.attributeMenu.addMenu(self.gotoMenu)
497 self.attributeMenu.addSeparator()
498 self.attributeMenu.addAction(
499 self.tr('Add source files...'), self.project.addSourceFiles)
500 self.attributeMenu.addAction(
501 self.tr('Add source directory...'), self.project.addSourceDir)
502 self.attributeMenu.addSeparator()
503 self.attributeMenu.addAction(
504 self.tr('Expand all directories'), self._expandAllDirs)
505 self.attributeMenu.addAction(
506 self.tr('Collapse all directories'), self._collapseAllDirs)
507 self.attributeMenu.addSeparator()
508 self.attributeMenu.addAction(
509 self.tr('Configure...'), self._configure)
510
511 self.backMenu = QMenu(self)
512 self.backMenu.addAction(
513 self.tr('Add source files...'), self.project.addSourceFiles)
514 self.backMenu.addAction(
515 self.tr('Add source directory...'), self.project.addSourceDir)
516 self.backMenu.addSeparator()
517 self.backMenu.addAction(
518 self.tr('Expand all directories'), self._expandAllDirs)
519 self.backMenu.addAction(
520 self.tr('Collapse all directories'), self._collapseAllDirs)
521 self.backMenu.addSeparator()
522 self.backMenu.addAction(self.tr('Configure...'), self._configure)
523 self.backMenu.setEnabled(False)
524
525 self.multiMenu.addSeparator()
526 act = self.multiMenu.addAction(
527 self.tr('Remove from project'), self._removeFile)
528 self.multiMenuActions.append(act)
529 act = self.multiMenu.addAction(
530 self.tr('Delete'), self.__deleteFile)
531 self.multiMenuActions.append(act)
532 self.multiMenu.addSeparator()
533 self.multiMenu.addAction(
534 self.tr('Expand all directories'), self._expandAllDirs)
535 self.multiMenu.addAction(
536 self.tr('Collapse all directories'), self._collapseAllDirs)
537 self.multiMenu.addSeparator()
538 self.multiMenu.addAction(self.tr('Configure...'), self._configure)
539
540 self.dirMenu = QMenu(self)
541 act = self.dirMenu.addAction(
542 self.tr('Remove from project'), self._removeDir)
543 self.dirMenuActions.append(act)
544 act = self.dirMenu.addAction(
545 self.tr('Delete'), self._deleteDirectory)
546 self.dirMenuActions.append(act)
547 self.dirMenu.addSeparator()
548 self.dirMenu.addAction(
549 self.tr('Add source files...'), self.__addSourceFiles)
550 self.dirMenu.addAction(
551 self.tr('Add source directory...'), self.__addSourceDirectory)
552 self.dirMenu.addSeparator()
553 self.dirMenu.addMenu(self.checksMenu)
554 self.dirMenu.addSeparator()
555 self.dirMenu.addAction(
556 self.tr('Copy Path to Clipboard'), self._copyToClipboard)
557 self.dirMenu.addSeparator()
558 self.dirMenu.addAction(
559 self.tr('Expand all directories'), self._expandAllDirs)
560 self.dirMenu.addAction(
561 self.tr('Collapse all directories'), self._collapseAllDirs)
562 self.dirMenu.addSeparator()
563 self.dirMenu.addAction(self.tr('Configure...'), self._configure)
564
565 self.dirMultiMenu = QMenu(self)
566 self.dirMultiMenu.addAction(
567 self.tr('Expand all directories'), self._expandAllDirs)
568 self.dirMultiMenu.addAction(
569 self.tr('Collapse all directories'), self._collapseAllDirs)
570 self.dirMultiMenu.addSeparator()
571 self.dirMultiMenu.addAction(
572 self.tr('Configure...'), self._configure)
430 573
431 self.sourceMenu.aboutToShow.connect(self.__showContextMenu) 574 self.sourceMenu.aboutToShow.connect(self.__showContextMenu)
432 self.multiMenu.aboutToShow.connect(self.__showContextMenuMulti) 575 self.multiMenu.aboutToShow.connect(self.__showContextMenuMulti)
433 self.dirMenu.aboutToShow.connect(self.__showContextMenuDir) 576 self.dirMenu.aboutToShow.connect(self.__showContextMenuDir)
434 self.dirMultiMenu.aboutToShow.connect(self.__showContextMenuDirMulti) 577 self.dirMultiMenu.aboutToShow.connect(self.__showContextMenuDirMulti)
663 try: 806 try:
664 os.mkdir(packagePath) 807 os.mkdir(packagePath)
665 except OSError as err: 808 except OSError as err:
666 E5MessageBox.critical( 809 E5MessageBox.critical(
667 self, 810 self,
668 self.trUtf8("Add new Python package"), 811 self.tr("Add new Python package"),
669 self.trUtf8( 812 self.tr(
670 """<p>The package directory <b>{0}</b> could""" 813 """<p>The package directory <b>{0}</b> could"""
671 """ not be created. Aborting...</p>""" 814 """ not be created. Aborting...</p>"""
672 """<p>Reason: {1}</p>""") 815 """<p>Reason: {1}</p>""")
673 .format(packagePath, str(err))) 816 .format(packagePath, str(err)))
674 return 817 return
678 f = open(packageFile, "w", encoding="utf-8") 821 f = open(packageFile, "w", encoding="utf-8")
679 f.close() 822 f.close()
680 except IOError as err: 823 except IOError as err:
681 E5MessageBox.critical( 824 E5MessageBox.critical(
682 self, 825 self,
683 self.trUtf8("Add new Python package"), 826 self.tr("Add new Python package"),
684 self.trUtf8( 827 self.tr(
685 """<p>The package file <b>{0}</b> could""" 828 """<p>The package file <b>{0}</b> could"""
686 """ not be created. Aborting...</p>""" 829 """ not be created. Aborting...</p>"""
687 """<p>Reason: {1}</p>""") 830 """<p>Reason: {1}</p>""")
688 .format(packageFile, str(err))) 831 .format(packageFile, str(err)))
689 return 832 return
739 882
740 from UI.DeleteFilesConfirmationDialog import \ 883 from UI.DeleteFilesConfirmationDialog import \
741 DeleteFilesConfirmationDialog 884 DeleteFilesConfirmationDialog
742 dlg = DeleteFilesConfirmationDialog( 885 dlg = DeleteFilesConfirmationDialog(
743 self.parent(), 886 self.parent(),
744 self.trUtf8("Delete files"), 887 self.tr("Delete files"),
745 self.trUtf8( 888 self.tr(
746 "Do you really want to delete these files from the project?"), 889 "Do you really want to delete these files from the project?"),
747 files) 890 files)
748 891
749 if dlg.exec_() == QDialog.Accepted: 892 if dlg.exec_() == QDialog.Accepted:
750 for fn2, fn in zip(fullNames, files): 893 for fn2, fn in zip(fullNames, files):
813 956
814 if files: 957 if files:
815 if len(files) > 1: 958 if len(files) > 1:
816 pfn, ok = QInputDialog.getItem( 959 pfn, ok = QInputDialog.getItem(
817 None, 960 None,
818 self.trUtf8("Code Coverage"), 961 self.tr("Code Coverage"),
819 self.trUtf8("Please select a coverage file"), 962 self.tr("Please select a coverage file"),
820 files, 963 files,
821 0, False) 964 0, False)
822 if not ok: 965 if not ok:
823 return 966 return
824 else: 967 else:
867 1010
868 if files: 1011 if files:
869 if len(files) > 1: 1012 if len(files) > 1:
870 pfn, ok = QInputDialog.getItem( 1013 pfn, ok = QInputDialog.getItem(
871 None, 1014 None,
872 self.trUtf8("Profile Data"), 1015 self.tr("Profile Data"),
873 self.trUtf8("Please select a profile file"), 1016 self.tr("Please select a profile file"),
874 files, 1017 files,
875 0, False) 1018 0, False)
876 if not ok: 1019 if not ok:
877 return 1020 return
878 else: 1021 else:
904 fn = itm.fileName() 1047 fn = itm.fileName()
905 except AttributeError: 1048 except AttributeError:
906 fn = itm.dirName() 1049 fn = itm.dirName()
907 res = E5MessageBox.yesNo( 1050 res = E5MessageBox.yesNo(
908 self, 1051 self,
909 self.trUtf8("Class Diagram"), 1052 self.tr("Class Diagram"),
910 self.trUtf8("""Include class attributes?"""), 1053 self.tr("""Include class attributes?"""),
911 yesDefault=True) 1054 yesDefault=True)
912 from Graphics.UMLDialog import UMLDialog 1055 from Graphics.UMLDialog import UMLDialog
913 self.classDiagram = UMLDialog(UMLDialog.ClassDiagram, self.project, fn, 1056 self.classDiagram = UMLDialog(UMLDialog.ClassDiagram, self.project, fn,
914 self, noAttrs=not res) 1057 self, noAttrs=not res)
915 self.classDiagram.show() 1058 self.classDiagram.show()
924 except AttributeError: 1067 except AttributeError:
925 fn = itm.dirName() 1068 fn = itm.dirName()
926 package = os.path.isdir(fn) and fn or os.path.dirname(fn) 1069 package = os.path.isdir(fn) and fn or os.path.dirname(fn)
927 res = E5MessageBox.yesNo( 1070 res = E5MessageBox.yesNo(
928 self, 1071 self,
929 self.trUtf8("Imports Diagram"), 1072 self.tr("Imports Diagram"),
930 self.trUtf8("""Include imports from external modules?""")) 1073 self.tr("""Include imports from external modules?"""))
931 from Graphics.UMLDialog import UMLDialog 1074 from Graphics.UMLDialog import UMLDialog
932 self.importsDiagram = UMLDialog( 1075 self.importsDiagram = UMLDialog(
933 UMLDialog.ImportsDiagram, self.project, package, 1076 UMLDialog.ImportsDiagram, self.project, package,
934 self, showExternalImports=res) 1077 self, showExternalImports=res)
935 self.importsDiagram.show() 1078 self.importsDiagram.show()
944 except AttributeError: 1087 except AttributeError:
945 fn = itm.dirName() 1088 fn = itm.dirName()
946 package = os.path.isdir(fn) and fn or os.path.dirname(fn) 1089 package = os.path.isdir(fn) and fn or os.path.dirname(fn)
947 res = E5MessageBox.yesNo( 1090 res = E5MessageBox.yesNo(
948 self, 1091 self,
949 self.trUtf8("Package Diagram"), 1092 self.tr("Package Diagram"),
950 self.trUtf8("""Include class attributes?"""), 1093 self.tr("""Include class attributes?"""),
951 yesDefault=True) 1094 yesDefault=True)
952 from Graphics.UMLDialog import UMLDialog 1095 from Graphics.UMLDialog import UMLDialog
953 self.packageDiagram = UMLDialog( 1096 self.packageDiagram = UMLDialog(
954 UMLDialog.PackageDiagram, self.project, package, 1097 UMLDialog.PackageDiagram, self.project, package,
955 self, noAttrs=not res) 1098 self, noAttrs=not res)
959 """ 1102 """
960 Private method to handle the application diagram context menu action. 1103 Private method to handle the application diagram context menu action.
961 """ 1104 """
962 res = E5MessageBox.yesNo( 1105 res = E5MessageBox.yesNo(
963 self, 1106 self,
964 self.trUtf8("Application Diagram"), 1107 self.tr("Application Diagram"),
965 self.trUtf8("""Include module names?"""), 1108 self.tr("""Include module names?"""),
966 yesDefault=True) 1109 yesDefault=True)
967 from Graphics.UMLDialog import UMLDialog 1110 from Graphics.UMLDialog import UMLDialog
968 self.applicationDiagram = UMLDialog( 1111 self.applicationDiagram = UMLDialog(
969 UMLDialog.ApplicationDiagram, self.project, 1112 UMLDialog.ApplicationDiagram, self.project,
970 self, noModules=not res) 1113 self, noModules=not res)

eric ide

mercurial