213
239
self.refactoring = Refactoring(self)
215
241
# now setup the connections
216
splash.message(self.trUtf8("Setting up connections..."))
217
self.connect(self.browser,PYSIGNAL('pythonFile'),
218
self.viewmanager.handlePythonFile)
219
self.connect(self.browser,PYSIGNAL('designerFile'),
221
self.connect(self.browser,PYSIGNAL('linguistFile'),
223
self.connect(self.browser,PYSIGNAL('projectFile'),
242
splash.showMessage(self.trUtf8("Setting up connections..."))
243
self.connect(self.browser, SIGNAL('sourceFile'),
244
self.viewmanager.openSourceFile)
245
self.connect(self.browser, SIGNAL('designerFile'),
247
self.connect(self.browser, SIGNAL('linguistFile'),
249
self.connect(self.browser, SIGNAL('projectFile'),
224
250
self.project.openProject)
225
self.connect(self.browser,PYSIGNAL('pixmapFile'),
227
self.connect(self.browser,PYSIGNAL('unittestOpen'),
228
self.handleUnittestScript)
230
self.connect(self.sbv.exceptionLogger,PYSIGNAL('pythonFile'),
231
self.viewmanager.handlePythonFile)
233
self.connect(self.sbv,PYSIGNAL('pythonFile'),
234
self.viewmanager.handlePythonFile)
236
self.connect(self.taskViewer,PYSIGNAL('displayFile'),
237
self.viewmanager.handlePythonFile)
239
self.connect(self.projectBrowser.psBrowser,PYSIGNAL('pythonFile'),
240
self.viewmanager.handlePythonFile)
241
self.connect(self.projectBrowser.psBrowser,PYSIGNAL('closeSourceWindow'),
242
self.viewmanager.handleCloseWindow)
243
self.connect(self.projectBrowser.psBrowser,PYSIGNAL('unittestOpen'),
244
self.handleUnittestScript)
246
self.connect(self.projectBrowser.pfBrowser,PYSIGNAL('designerFile'),
248
self.connect(self.projectBrowser.pfBrowser,PYSIGNAL('pythonFile'),
249
self.viewmanager.handlePythonFile)
250
self.connect(self.projectBrowser.pfBrowser,PYSIGNAL('uipreview'),
251
self.handleUIPreviewer)
252
self.connect(self.projectBrowser.pfBrowser,PYSIGNAL('trpreview'),
253
self.handleTRPreviewer)
254
self.connect(self.projectBrowser.pfBrowser,PYSIGNAL('closeSourceWindow'),
255
self.viewmanager.handleCloseWindow)
256
self.connect(self.projectBrowser.pfBrowser,PYSIGNAL('appendStdout'),
257
self.stdoutTab.append)
258
self.connect(self.projectBrowser.pfBrowser,PYSIGNAL('appendStderr'),
259
self.stderrTab.append)
261
self.connect(self.projectBrowser.ptBrowser,PYSIGNAL('linguistFile'),
263
self.connect(self.projectBrowser.ptBrowser,PYSIGNAL('pythonFile'),
264
self.viewmanager.handlePythonFile)
265
self.connect(self.projectBrowser.ptBrowser,PYSIGNAL('trpreview'),
266
self.handleTRPreviewer)
267
self.connect(self.projectBrowser.ptBrowser,PYSIGNAL('closeSourceWindow'),
268
self.viewmanager.handleCloseWindow)
269
self.connect(self.projectBrowser.ptBrowser,PYSIGNAL('appendStdout'),
270
self.stdoutTab.append)
271
self.connect(self.projectBrowser.ptBrowser,PYSIGNAL('appendStderr'),
272
self.stderrTab.append)
274
self.connect(self.projectBrowser.piBrowser,PYSIGNAL('pythonFile'),
275
self.viewmanager.handlePythonFile)
276
self.connect(self.projectBrowser.piBrowser,PYSIGNAL('closeSourceWindow'),
277
self.viewmanager.handleCloseWindow)
278
self.connect(self.projectBrowser.piBrowser,PYSIGNAL('appendStdout'),
279
self.stdoutTab.append)
280
self.connect(self.projectBrowser.piBrowser,PYSIGNAL('appendStderr'),
281
self.stderrTab.append)
283
self.connect(self.projectBrowser.poBrowser,PYSIGNAL('pythonFile'),
284
self.viewmanager.handlePythonFile)
285
self.connect(self.projectBrowser.poBrowser,PYSIGNAL('closeSourceWindow'),
286
self.viewmanager.handleCloseWindow)
287
self.connect(self.projectBrowser.poBrowser,PYSIGNAL('pixmapFile'),
290
self.connect(self.project,PYSIGNAL('pythonFile'),
291
self.viewmanager.handleOpen)
292
self.connect(self.project,PYSIGNAL('newProject'),
293
self.viewmanager.handleNewProject)
294
self.connect(self.project,PYSIGNAL('projectOpened'),
295
self.viewmanager.handleProjectOpened)
296
self.connect(self.project,PYSIGNAL('projectClosed'),
297
self.viewmanager.handleProjectClosed)
298
self.connect(self.project,PYSIGNAL('projectFileRenamed'),
299
self.viewmanager.handleProjectFileRenamed)
300
self.connect(self.project,PYSIGNAL('newProject'),
301
self.handleNewProject)
302
self.connect(self.project,PYSIGNAL('projectOpened'),
303
self.handleProjectOpened)
304
self.connect(self.project,PYSIGNAL('projectClosed'),
305
self.handleProjectClosed)
307
self.connect(self.dbg,PYSIGNAL('resetUI'),
251
self.connect(self.browser, SIGNAL('pixmapFile'),
253
self.connect(self.browser, SIGNAL('unittestOpen'),
254
self.__unittestScript)
255
self.connect(self.browser, SIGNAL('trpreview'),
258
self.connect(self.debugViewer.exceptionLogger, SIGNAL('sourceFile'),
259
self.viewmanager.openSourceFile)
261
self.connect(self.debugViewer, SIGNAL('sourceFile'),
262
self.viewmanager.openSourceFile)
264
self.connect(self.taskViewer, SIGNAL('displayFile'),
265
self.viewmanager.openSourceFile)
267
self.connect(self.projectBrowser.psBrowser, SIGNAL('sourceFile'),
268
self.viewmanager.openSourceFile)
269
self.connect(self.projectBrowser.psBrowser, SIGNAL('closeSourceWindow'),
270
self.viewmanager.closeWindow)
271
self.connect(self.projectBrowser.psBrowser, SIGNAL('unittestOpen'),
272
self.__unittestScript)
274
self.connect(self.projectBrowser.pfBrowser, SIGNAL('designerFile'),
276
self.connect(self.projectBrowser.pfBrowser, SIGNAL('sourceFile'),
277
self.viewmanager.openSourceFile)
278
self.connect(self.projectBrowser.pfBrowser, SIGNAL('uipreview'),
280
self.connect(self.projectBrowser.pfBrowser, SIGNAL('trpreview'),
282
self.connect(self.projectBrowser.pfBrowser, SIGNAL('closeSourceWindow'),
283
self.viewmanager.closeWindow)
284
self.connect(self.projectBrowser.pfBrowser, SIGNAL('appendStdout'),
285
self.logViewer.appendToStdout)
286
self.connect(self.projectBrowser.pfBrowser, SIGNAL('appendStderr'),
287
self.logViewer.appendToStderr)
289
self.connect(self.projectBrowser.prBrowser, SIGNAL('sourceFile'),
290
self.viewmanager.openSourceFile)
291
self.connect(self.projectBrowser.prBrowser, SIGNAL('closeSourceWindow'),
292
self.viewmanager.closeWindow)
293
self.connect(self.projectBrowser.prBrowser, SIGNAL('appendStdout'),
294
self.logViewer.appendToStdout)
295
self.connect(self.projectBrowser.prBrowser, SIGNAL('appendStderr'),
296
self.logViewer.appendToStderr)
298
self.connect(self.projectBrowser.ptBrowser, SIGNAL('linguistFile'),
300
self.connect(self.projectBrowser.ptBrowser, SIGNAL('sourceFile'),
301
self.viewmanager.openSourceFile)
302
self.connect(self.projectBrowser.ptBrowser, SIGNAL('trpreview'),
304
self.connect(self.projectBrowser.ptBrowser, SIGNAL('closeSourceWindow'),
305
self.viewmanager.closeWindow)
306
self.connect(self.projectBrowser.ptBrowser, SIGNAL('appendStdout'),
307
self.logViewer.appendToStdout)
308
self.connect(self.projectBrowser.ptBrowser, SIGNAL('appendStderr'),
309
self.logViewer.appendToStderr)
311
self.connect(self.projectBrowser.piBrowser, SIGNAL('sourceFile'),
312
self.viewmanager.openSourceFile)
313
self.connect(self.projectBrowser.piBrowser, SIGNAL('closeSourceWindow'),
314
self.viewmanager.closeWindow)
315
self.connect(self.projectBrowser.piBrowser, SIGNAL('appendStdout'),
316
self.logViewer.appendToStdout)
317
self.connect(self.projectBrowser.piBrowser, SIGNAL('appendStderr'),
318
self.logViewer.appendToStderr)
320
self.connect(self.projectBrowser.poBrowser, SIGNAL('sourceFile'),
321
self.viewmanager.openSourceFile)
322
self.connect(self.projectBrowser.poBrowser, SIGNAL('closeSourceWindow'),
323
self.viewmanager.closeWindow)
324
self.connect(self.projectBrowser.poBrowser, SIGNAL('pixmapFile'),
327
self.connect(self.project, SIGNAL('sourceFile'),
328
self.viewmanager.openFiles)
329
self.connect(self.project, SIGNAL('newProject'),
330
self.viewmanager.newProject)
331
self.connect(self.project, SIGNAL('projectOpened'),
332
self.viewmanager.projectOpened)
333
self.connect(self.project, SIGNAL('projectClosed'),
334
self.viewmanager.projectClosed)
335
self.connect(self.project, SIGNAL('projectFileRenamed'),
336
self.viewmanager.projectFileRenamed)
337
self.connect(self.project, SIGNAL('newProject'),
339
self.connect(self.project, SIGNAL('projectOpened'),
340
self.__projectOpened)
341
self.connect(self.project, SIGNAL('projectClosed'),
342
self.__projectClosed)
344
self.connect(self.debuggerUI, SIGNAL('resetUI'),
308
345
self.viewmanager.handleResetUI)
309
self.connect(self.dbg,PYSIGNAL('resetUI'),
310
self.sbv.handleResetUI)
311
self.connect(self.dbg,PYSIGNAL('resetUI'),
312
self.handleSetEditProfile)
313
self.connect(self.dbg,PYSIGNAL('clientStack'),
314
self.sbv.handleClientStack)
315
self.connect(self.dbg,PYSIGNAL('debuggingStarted'),
346
self.connect(self.debuggerUI, SIGNAL('resetUI'),
347
self.debugViewer.handleResetUI)
348
self.connect(self.debuggerUI, SIGNAL('resetUI'),
349
self.__setEditProfile)
350
self.connect(self.debuggerUI, SIGNAL('clientStack'),
351
self.debugViewer.handleClientStack)
352
self.connect(self.debuggerUI, SIGNAL('debuggingStarted'),
316
353
self.browser.handleProgramChange)
317
self.connect(self.dbg,PYSIGNAL('debuggingStarted'),
318
self.sbv.exceptionLogger.debuggingStarted)
319
self.connect(self.dbg,PYSIGNAL('debuggingStarted'),
320
self.sbv.handleDebuggingStarted)
321
self.connect(self.dbg,PYSIGNAL('debuggingStarted'),
322
self.handleProgramChange)
323
self.connect(self.dbg,PYSIGNAL('debuggingStarted'),
324
self.handleSetDebugProfile)
325
self.connect(self.dbg,PYSIGNAL('compileForms'),
326
self.projectBrowser.pfBrowser.handleCompileChangedForms)
328
self.connect(dbs,PYSIGNAL('clientStack'),
329
self.sbv.handleClientStack)
330
self.connect(dbs,PYSIGNAL('passiveDebugStarted'),
331
self.sbv.exceptionLogger.debuggingStarted)
332
self.connect(dbs,PYSIGNAL('passiveDebugStarted'),
333
self.sbv.handleDebuggingStarted)
334
self.connect(dbs,PYSIGNAL('clientException'),
335
self.sbv.exceptionLogger.addException)
336
self.connect(dbs,PYSIGNAL('clientClearWatch'),
337
self.sbv.watchpointViewer.clearWatchpoint)
338
self.connect(dbs,PYSIGNAL('clientWatchConditionError'),
339
self.sbv.watchpointViewer.handleClientWatchConditionError)
340
self.connect(dbs,PYSIGNAL('clientClearBreak'),
341
self.sbv.breakpointViewer.clearBreakpoint)
342
self.connect(dbs,PYSIGNAL('clientLine'),
343
self.sbv.breakpointViewer.highlightBreakpoint)
345
self.connect(self.stdout,PYSIGNAL('appendStdout'),
346
self.stdoutTab.append)
348
self.connect(self.stderr,PYSIGNAL('appendStderr'),
349
self.stderrTab.append)
351
self.connect(self,PYSIGNAL('preferencesChanged'),
352
self.viewmanager.handlePreferencesChanged)
353
self.connect(self,PYSIGNAL('reloadAPIs'),
354
self.viewmanager.handleReloadAPIs)
355
self.connect(self,PYSIGNAL('appendStdout'),
356
self.stdoutTab.append)
357
self.connect(self,PYSIGNAL('appendStderr'),
358
self.stderrTab.append)
359
self.connect(self,PYSIGNAL('preferencesChanged'),
354
self.connect(self.debuggerUI, SIGNAL('debuggingStarted'),
355
self.debugViewer.exceptionLogger.debuggingStarted)
356
self.connect(self.debuggerUI, SIGNAL('debuggingStarted'),
357
self.debugViewer.handleDebuggingStarted)
358
self.connect(self.debuggerUI, SIGNAL('debuggingStarted'),
359
self.__programChange)
360
self.connect(self.debuggerUI, SIGNAL('debuggingStarted'),
361
self.setDebugProfile)
362
self.connect(self.debuggerUI, SIGNAL('compileForms'),
363
self.projectBrowser.pfBrowser.compileChangedForms)
364
self.connect(self.debuggerUI, SIGNAL('compileResources'),
365
self.projectBrowser.prBrowser.compileChangedResources)
367
self.connect(debugServer, SIGNAL('clientStack'),
368
self.debugViewer.handleClientStack)
369
self.connect(debugServer, SIGNAL('passiveDebugStarted'),
370
self.debugViewer.exceptionLogger.debuggingStarted)
371
self.connect(debugServer, SIGNAL('passiveDebugStarted'),
372
self.debugViewer.handleDebuggingStarted)
373
self.connect(debugServer, SIGNAL('clientException'),
374
self.debugViewer.exceptionLogger.addException)
375
self.connect(debugServer, SIGNAL('clientLine'),
376
self.debugViewer.breakpointViewer.highlightBreakpoint)
378
self.connect(self.stdout, SIGNAL('appendStdout'),
379
self.logViewer.appendToStdout)
381
self.connect(self.stderr, SIGNAL('appendStderr'),
382
self.logViewer.appendToStderr)
384
self.connect(self, SIGNAL('preferencesChanged'),
385
self.viewmanager.preferencesChanged)
386
self.connect(self, SIGNAL('reloadAPIs'),
387
self.viewmanager.getAPIsManager().reloadAPIs)
388
self.connect(self, SIGNAL('appendStdout'),
389
self.logViewer.appendToStdout)
390
self.connect(self, SIGNAL('appendStderr'),
391
self.logViewer.appendToStderr)
392
self.connect(self, SIGNAL('preferencesChanged'),
360
393
self.shell.handlePreferencesChanged)
361
self.connect(self,PYSIGNAL('preferencesChanged'),
394
self.connect(self, SIGNAL('preferencesChanged'),
395
self.project.handlePreferencesChanged)
396
self.connect(self, SIGNAL('preferencesChanged'),
362
397
self.projectBrowser.psBrowser.handlePreferencesChanged)
363
self.connect(self,PYSIGNAL('preferencesChanged'),
398
self.connect(self, SIGNAL('preferencesChanged'),
399
self.projectBrowser.pfBrowser.handlePreferencesChanged)
400
self.connect(self, SIGNAL('preferencesChanged'),
401
self.projectBrowser.prBrowser.handlePreferencesChanged)
402
self.connect(self, SIGNAL('preferencesChanged'),
403
self.projectBrowser.ptBrowser.handlePreferencesChanged)
404
self.connect(self, SIGNAL('preferencesChanged'),
405
self.projectBrowser.piBrowser.handlePreferencesChanged)
406
self.connect(self, SIGNAL('preferencesChanged'),
407
self.projectBrowser.poBrowser.handlePreferencesChanged)
408
self.connect(self, SIGNAL('preferencesChanged'),
364
409
self.browser.handlePreferencesChanged)
365
self.connect(self,PYSIGNAL('preferencesChanged'),
410
self.connect(self, SIGNAL('preferencesChanged'),
366
411
self.taskViewer.handlePreferencesChanged)
368
self.connect(self.viewmanager,PYSIGNAL('editorSaved'),
369
self.projectBrowser.psBrowser.handleEditorSaved)
370
self.connect(self.viewmanager,PYSIGNAL('lastEditorClosed'),
371
self.handleLastEditorClosed)
372
self.connect(self.viewmanager,PYSIGNAL('editorOpened'),
373
self.handleEditorOpened)
374
self.connect(self.viewmanager,PYSIGNAL('changeCaption'),
375
self.setWindowCaption)
376
self.connect(self.viewmanager,PYSIGNAL('checkActions'),
378
self.connect(self.viewmanager,PYSIGNAL('breakpointToggled'),
379
self.sbv.breakpointViewer.refresh)
380
self.connect(self.viewmanager,PYSIGNAL('breakpointEnabledToggled'),
381
self.sbv.breakpointViewer.refresh)
382
self.connect(self.viewmanager,PYSIGNAL('editorClosed'),
383
self.sbv.breakpointViewer.editorClosed)
384
self.connect(self.viewmanager,PYSIGNAL('editorChanged'),
413
self.connect(self.viewmanager, SIGNAL('editorSaved'),
414
self.project.repopulateItem)
415
self.connect(self.viewmanager, SIGNAL('lastEditorClosed'),
416
self.__lastEditorClosed)
417
self.connect(self.viewmanager, SIGNAL('editorOpened'),
419
self.connect(self.viewmanager, SIGNAL('changeCaption'),
420
self.__setWindowCaption)
421
self.connect(self.viewmanager, SIGNAL('checkActions'),
423
self.connect(self.viewmanager, SIGNAL('editorChanged'),
385
424
self.projectBrowser.handleEditorChanged)
387
self.connect(self,PYSIGNAL('preferencesChanged'),
426
self.connect(self, SIGNAL('preferencesChanged'),
388
427
self.refactoring.handlePreferencesChanged)
389
self.connect(self.project,PYSIGNAL('projectOpened'),
428
self.connect(self.project, SIGNAL('projectOpened'),
390
429
self.refactoring.handleProjectOpened)
391
self.connect(self.project,PYSIGNAL('projectClosed'),
430
self.connect(self.project, SIGNAL('projectClosed'),
392
431
self.refactoring.handleProjectClosed)
393
self.connect(self.project,PYSIGNAL('newProject'),
432
self.connect(self.project, SIGNAL('newProject'),
394
433
self.refactoring.handleProjectOpened)
396
435
# Generate the unittest dialog
397
self.unittestDialog = UnittestDialog(None, self.dbg.dbs, self)
398
self.connect(self.unittestDialog,PYSIGNAL('unittestFile'),
436
self.unittestDialog = UnittestDialog(None, self.debuggerUI.debugServer, self)
437
self.connect(self.unittestDialog, SIGNAL('unittestFile'),
399
438
self.viewmanager.setFileLine)
401
440
# Generate the find in project files dialog
402
441
self.findFilesDialog = FindFileDialog(self.project)
403
self.connect(self.findFilesDialog, PYSIGNAL('pythonFile'),
404
self.viewmanager.handlePythonFile)
405
self.connect(self.findFilesDialog,PYSIGNAL('designerFile'),
442
self.connect(self.findFilesDialog, SIGNAL('sourceFile'),
443
self.viewmanager.openSourceFile)
444
self.connect(self.findFilesDialog, SIGNAL('designerFile'),
408
447
# generate the find file dialog
409
448
self.findFileNameDialog = FindFileNameDialog(self.project)
410
self.connect(self.findFileNameDialog, PYSIGNAL('pythonFile'),
411
self.viewmanager.handlePythonFile)
412
self.connect(self.findFileNameDialog,PYSIGNAL('designerFile'),
449
self.connect(self.findFileNameDialog, SIGNAL('sourceFile'),
450
self.viewmanager.openSourceFile)
451
self.connect(self.findFileNameDialog, SIGNAL('designerFile'),
415
454
# generate the diff dialogs
416
455
self.diffDlg = DiffDialog()
417
456
self.compareDlg = CompareDialog()
419
458
# generate the wizards
420
splash.message(self.trUtf8("Loading Wizards..."))
421
self.wizards = Wizards(self.loc, self)
459
splash.showMessage(self.trUtf8("Loading Wizards..."))
460
self.wizards = Wizards(self.locale, self)
462
# Initialize the tool groups and list of started tools
463
splash.showMessage(self.trUtf8("Initializing Tools..."))
464
self.toolGroups, self.currentToolGroup = Preferences.readToolGroups()
467
# create a dummy help window for shortcuts handling
468
self.dummyHelpViewer = HelpWindow(None, '.', None, 'help viewer', True)
470
# register all relevant objects
471
splash.showMessage(self.trUtf8("Registering Objects..."))
472
e4App().registerObject("UserInterface", self)
473
e4App().registerObject("DebugUI", self.debuggerUI)
474
e4App().registerObject("DebugServer", debugServer)
475
e4App().registerObject("ViewManager", self.viewmanager)
476
e4App().registerObject("Project", self.project)
477
e4App().registerObject("ProjectBrowser", self.projectBrowser)
478
e4App().registerObject("Wizards", self.wizards)
479
e4App().registerObject("Refactoring", self.refactoring)
480
e4App().registerObject("TaskViewer", self.taskViewer)
481
e4App().registerObject("TemplateViewer", self.templateViewer)
482
e4App().registerObject("Shell", self.shell)
483
e4App().registerObject("FindFilesDialog", self.findFilesDialog)
484
e4App().registerObject("DummyHelpViewer", self.dummyHelpViewer)
486
# initialize the character tables dialog attribute
487
self.chartablesDlg = None
423
489
# Initialize the actions, menues, toolbar and statusbar
424
splash.message(self.trUtf8("Initializing Actions..."))
426
splash.message(self.trUtf8("Initializing Menus..."))
428
splash.message(self.trUtf8("Initializing Toolbars..."))
430
splash.message(self.trUtf8("Initializing Statusbar..."))
490
splash.showMessage(self.trUtf8("Initializing Actions..."))
492
splash.showMessage(self.trUtf8("Initializing Menus..."))
494
splash.showMessage(self.trUtf8("Initializing Toolbars..."))
495
self.__initToolbars()
496
splash.showMessage(self.trUtf8("Initializing Statusbar..."))
497
self.__initStatusbar()
433
499
# Initialise the instance variables.
434
500
self.currentProg = None
436
self.utEditorOpen = 0
437
self.utProjectOpen = 0
502
self.utEditorOpen = False
503
self.utProjectOpen = False
440
self.setAcceptDrops(1)
505
self.inDragDrop = False
506
self.setAcceptDrops(True)
442
508
self.currentProfile = None
444
self.shutdownCalled = 0
510
self.shutdownCalled = False
511
self.inCloseEevent = False
446
# Initialize the toollist and list of started tools
447
splash.message(self.trUtf8("Initializing Tools..."))
448
self.toollist = Preferences.readToolsMenu()
451
513
# now redirect stdout and stderr
452
514
sys.stdout = self.stdout
453
515
sys.stderr = self.stderr
455
517
# now fire up the single application server
456
518
if Preferences.getUI("SingleApplicationMode"):
457
splash.message(self.trUtf8("Initializing Single Application Server..."))
458
self.SAServer = E3SingleApplicationServer()
519
splash.showMessage(self.trUtf8("Initializing Single Application Server..."))
520
self.SAServer = E4SingleApplicationServer()
460
522
self.SAServer = None
462
524
# now fire up the scripting stuff
463
splash.message(self.trUtf8("Initializing Scripting..."))
525
splash.showMessage(self.trUtf8("Initializing Scripting..."))
464
526
self.scriptManager = Scripting.init(self)
465
self.connect(self.scriptManager, PYSIGNAL("firstScriptAdded"),
466
self.handleFirstScriptAdded)
467
self.connect(self.scriptManager, PYSIGNAL("lastScriptDeleted"),
468
self.handleLastScriptDeleted)
527
self.connect(self.scriptManager, SIGNAL("firstScriptAdded"),
528
self.__firstScriptAdded)
529
self.connect(self.scriptManager, SIGNAL("lastScriptDeleted"),
530
self.__lastScriptDeleted)
469
531
Scripting.runStartupScripts(self)
471
533
# now activate the initial view profile
472
self.handleSetEditProfile()
534
self.__setEditProfile()
474
536
# now read the saved tasks
477
539
# now read the saved templates
540
self.templateViewer.readTemplates()
480
542
# now start the debug client
483
def createLayout(self, dbs):
543
debugServer.startClient(False)
545
# attribute for the http client object
548
# attribute for the help window
549
self.helpWindow = None
551
# list of web addresses serving the versions file
552
self.__httpAlternatives = [
553
{"host" : "die-offenbachs.homelinux.org",
555
"url" : "/eric/snapshots4/versions",
558
{"host" : "www.die-offenbachs.de",
560
"url" : "/eric/snapshots4/versions",
563
self.__inVersionCheck = False
564
self.__versionCheckProgress = None
566
def __setStyle(self):
568
Private slot to set the style of the interface.
570
# step 1: set the style
572
styleName = Preferences.getUI("Style")
573
if styleName != "System" and styleName in QStyleFactory.keys():
574
style = QStyleFactory.create(styleName)
576
style = QStyleFactory.create(self.defaultStyleName)
577
if style is not None:
578
QApplication.setStyle(style)
580
# step 2: set a style sheet
581
styleSheetFile = unicode(Preferences.getUI("StyleSheet"))
584
f = open(styleSheetFile, "rb")
585
styleSheet = f.read()
588
KQMessageBox.warning(None,
589
self.trUtf8("Loading Style Sheet"),
590
self.trUtf8("""<p>The Qt Style Sheet file <b>%1</b> could"""
591
""" not be read.<br>Reason: %2</p>"""),
592
QMessageBox.StandardButtons(\
598
e4App().setStyleSheet(styleSheet)
600
def __createLayout(self, debugServer):
485
602
Private method to create the layout of the various windows.
487
@param dbs reference to the debug server object
604
@param debugServer reference to the debug server object
489
# Create the main layout type 0 (splitters)
491
if self.embeddedShell:
492
# A layout like the appearence of Qt Designer.
493
self.hSplitter = QSplitter(self.centralWidget(),"hSplitter")
494
self.hSplitter.setOrientation(QSplitter.Horizontal)
496
# Create the project browser
497
self.projectBrowser = ProjectBrowser(self.project,
498
self.qtdir, self.qt4dir, self.hSplitter,
499
embeddedBrowser=(self.embeddedFileBrowser != 1))
500
self.projectBrowser.show()
502
# Create the view manager depending on the configuration setting
503
self.viewmanager = ViewManager.factory(self.hSplitter, self, dbs)
505
# Create a splitter for the right hand side
506
self.vSplitter = QSplitter(self.hSplitter,"vSplitter")
507
self.vSplitter.setOrientation(QSplitter.Vertical)
509
# Create the shell, browser, variables part of the user interface
510
self.sbv = SBVviewer(dbs, 0, self.viewmanager, self.vSplitter,
511
embeddedBrowser=(self.embeddedFileBrowser == 1))
512
self.shell = self.sbv.shell
514
# Create the log viewer part of the user interface
515
self.logViewer = LogView(self.vSplitter)
516
self.logViewer.setMinimumSize(100,100)
518
# Create the task viewer part of the user interface
519
self.taskViewer = TaskViewer(self.vSplitter, self.project)
520
self.taskViewer.setMinimumSize(100,150)
522
# Create the template viewer part of the user interface
523
self.templateViewer = TemplateViewer(self.vSplitter, self.viewmanager)
524
self.templateViewer.setMinimumSize(100,150)
526
# Add the splitter to the main windows layout
527
self.appWindowLayout.addWidget(self.hSplitter)
529
self.windows = [self.projectBrowser, None, self.sbv,
530
None, self.logViewer, self.taskViewer, self.templateViewer]
532
# A layout like the appearance of KDevelop
533
self.vSplitter = QSplitter(self.centralWidget(),"vSplitter")
534
self.vSplitter.setOrientation(QSplitter.Vertical)
536
# Create the top part
537
self.hSplitter1 = QSplitter(self.vSplitter,"hSplitter1")
538
self.hSplitter1.setOrientation(QSplitter.Horizontal)
540
# Create the project browser
541
self.projectBrowser = ProjectBrowser(self.project,
542
self.qtdir, self.qt4dir, self.hSplitter1,
543
embeddedBrowser=(self.embeddedFileBrowser != 1))
544
self.projectBrowser.show()
546
# Create the view manager depending on the configuration setting
547
self.viewmanager = ViewManager.factory(self.hSplitter1, self, dbs)
549
# Create the shell, browser, variables part of the user interface
550
# but without the shell. The shell gets a separate part of the UI
551
self.sbv = SBVviewer(dbs, 0, self.viewmanager, self.hSplitter1,
553
embeddedBrowser=(self.embeddedFileBrowser == 1))
555
# Create the bottom part
556
self.hSplitter2 = QSplitter(self.vSplitter,"hSplitter2")
557
self.hSplitter2.setOrientation(QSplitter.Horizontal)
560
self.shell = Shell(dbs, self.viewmanager, self.hSplitter2)
562
# Create the log viewer part of the user interface
563
self.logViewer = LogView(self.hSplitter2)
564
self.logViewer.setMinimumSize(100,100)
566
# Create the task viewer part of the user interface
567
self.taskViewer = TaskViewer(self.hSplitter2, self.project)
568
self.taskViewer.setMinimumSize(100,150)
570
# Create the template viewer part of the user interface
571
self.templateViewer = TemplateViewer(self.hSplitter2, self.viewmanager)
572
self.templateViewer.setMinimumSize(100,150)
574
# Add the splitter to the main windows layout
575
self.appWindowLayout.addWidget(self.vSplitter)
577
self.windows = [self.projectBrowser, None, self.sbv,
578
self.shell, self.logViewer, self.taskViewer, self.templateViewer]
580
if self.embeddedFileBrowser == 1: # embedded in debug browser
581
self.browser = self.sbv.browser
582
else: # embedded in project browser
583
self.browser = self.projectBrowser.fileBrowser
585
# Create the main layout type 1 (movable dock windows)
586
elif self.layout == 1:
606
# Create layout with movable dock windows
607
if self.layout == "DockWindows":
587
608
# Create the view manager depending on the configuration setting
588
self.viewmanager = ViewManager.factory(self, self, dbs)
609
self.viewmanager = ViewManager.factory(self, self, debugServer)
589
610
self.setCentralWidget(self.viewmanager)
591
612
# Create the project browser
592
self.projectBrowserDock = self.createDockWindow()
613
self.projectBrowserDock = self.__createDockWindow("ProjectBrowserDock")
593
614
self.projectBrowser = ProjectBrowser(self.project,
594
615
self.qtdir, self.qt4dir, self.projectBrowserDock,
595
616
embeddedBrowser=(self.embeddedFileBrowser == 2))
596
self.setupDockWindow(self.projectBrowserDock, Qt.DockLeft,
597
self.projectBrowser, self.trUtf8("Project-Browser"))
617
self.__setupDockWindow(self.projectBrowserDock, Qt.LeftDockWidgetArea,
618
self.projectBrowser, self.trUtf8("Project-Viewer"))
599
# Create the shell, browser, variables part of the user interface,
600
# maybe without the embedded shell
601
self.sbvDock = self.createDockWindow()
602
self.sbv = SBVviewer(dbs, 1, self.viewmanager, self.sbvDock,
620
# Create the debug viewer maybe without the embedded shell
621
self.debugViewerDock = self.__createDockWindow("DebugViewerDock")
622
self.debugViewer = DebugViewer(debugServer, True, self.viewmanager,
623
self.debugViewerDock,
603
624
embeddedShell=self.embeddedShell,
604
625
embeddedBrowser=(self.embeddedFileBrowser == 1))
605
self.setupDockWindow(self.sbvDock, Qt.DockRight,
606
self.sbv, self.trUtf8("Debug-Browser"))
626
self.__setupDockWindow(self.debugViewerDock, Qt.RightDockWidgetArea,
627
self.debugViewer, self.trUtf8("Debug-Viewer"))
608
629
# Create the log viewer part of the user interface
609
self.logViewerDock = self.createDockWindow()
610
self.logViewer = LogView(self.logViewerDock)
611
self.setupDockWindow(self.logViewerDock, Qt.DockBottom,
630
self.logViewerDock = self.__createDockWindow("LogViewerDock")
631
self.logViewer = LogViewer(self.logViewerDock)
632
self.__setupDockWindow(self.logViewerDock, Qt.BottomDockWidgetArea,
612
633
self.logViewer, self.trUtf8("Log-Viewer"))
614
635
# Create the task viewer part of the user interface
615
self.taskViewerDock = self.createDockWindow()
636
self.taskViewerDock = self.__createDockWindow("TaskViewerDock")
616
637
self.taskViewer = TaskViewer(self.taskViewerDock, self.project)
617
self.setupDockWindow(self.taskViewerDock, Qt.DockBottom,
638
self.__setupDockWindow(self.taskViewerDock, Qt.BottomDockWidgetArea,
618
639
self.taskViewer, self.trUtf8("Task-Viewer"))
620
641
# Create the template viewer part of the user interface
621
self.templateViewerDock = self.createDockWindow()
622
self.templateViewer = TemplateViewer(self.templateViewerDock, self.viewmanager)
623
self.setupDockWindow(self.templateViewerDock, Qt.DockRight,
642
self.templateViewerDock = self.__createDockWindow("TemplateViewerDock")
643
self.templateViewer = TemplateViewer(self.templateViewerDock,
645
self.__setupDockWindow(self.templateViewerDock, Qt.RightDockWidgetArea,
624
646
self.templateViewer, self.trUtf8("Template-Viewer"))
626
648
self.dockwindows = {}
627
self.dockwindows[0] = (self.trUtf8('Project-Browser'), self.projectBrowserDock)
628
self.dockwindows[1] = (self.trUtf8('Debug-Browser'), self.sbvDock)
629
self.dockwindows[2] = (self.trUtf8('Log-Viewer'), self.logViewerDock)
630
self.dockwindows[3] = (self.trUtf8('Task-Viewer'), self.taskViewerDock)
631
self.dockwindows[4] = (self.trUtf8('Template-Viewer'), self.templateViewerDock)
649
self.dockwindows[0] = \
650
(self.trUtf8('Project-Viewer'), self.projectBrowserDock)
651
self.dockwindows[1] = \
652
(self.trUtf8('Debug-Viewer'), self.debugViewerDock)
653
self.dockwindows[2] = \
654
(self.trUtf8('Log-Viewer'), self.logViewerDock)
655
self.dockwindows[3] = \
656
(self.trUtf8('Task-Viewer'), self.taskViewerDock)
657
self.dockwindows[4] = \
658
(self.trUtf8('Template-Viewer'), self.templateViewerDock)
632
659
nextDockIndex = 5
634
self.windows = [self.projectBrowserDock, None, self.sbvDock,
661
self.windows = [self.projectBrowserDock, None, self.debugViewerDock,
635
662
None, self.logViewerDock, self.taskViewerDock, self.templateViewerDock]
637
664
if self.embeddedShell:
638
self.shell = self.sbv.shell
665
self.shell = self.debugViewer.shell
640
667
# Create the shell
641
self.shellDock = self.createDockWindow()
642
self.shell = Shell(dbs, self.viewmanager, self.shellDock)
643
self.setupDockWindow(self.shellDock, Qt.DockBottom,
668
self.shellDock = self.__createDockWindow("ShellDock")
669
self.shell = Shell(debugServer, self.viewmanager, self.shellDock)
670
self.__setupDockWindow(self.shellDock, Qt.BottomDockWidgetArea,
644
671
self.shell, self.trUtf8("Shell"))
645
672
self.dockwindows[nextDockIndex] = \
646
673
(self.trUtf8('Shell'), self.shellDock)
647
674
nextDockIndex += 1
648
675
self.windows[3] = self.shellDock
650
677
if self.embeddedFileBrowser == 0: # separate window
651
678
# Create the file browser
652
self.browserDock = self.createDockWindow()
679
self.browserDock = self.__createDockWindow("BrowserDock")
653
680
self.browser = Browser(self.browserDock)
654
self.setupDockWindow(self.browserDock, Qt.DockRight,
681
self.__setupDockWindow(self.browserDock, Qt.RightDockWidgetArea,
655
682
self.browser, self.trUtf8("File-Browser"))
656
683
self.dockwindows[nextDockIndex] = \
657
684
(self.trUtf8('File-Browser'), self.browserDock)
658
685
nextDockIndex += 1
659
686
self.windows[1] = self.browserDock
660
687
elif self.embeddedFileBrowser == 1: # embedded in debug browser
661
self.browser = self.sbv.browser
688
self.browser = self.debugViewer.browser
662
689
else: # embedded in project browser
663
690
self.browser = self.projectBrowser.fileBrowser
665
# Create main layout type 2 (floating windows)
666
elif self.layout == 2:
692
# Create layout with floating windows
693
elif self.layout == "FloatingWindows":
667
694
# Create the view manager depending on the configuration setting
668
self.viewmanager = ViewManager.factory(self, self, dbs)
695
self.viewmanager = ViewManager.factory(self, self, debugServer)
669
696
self.setCentralWidget(self.viewmanager)
671
698
# Create the project browser
672
699
self.projectBrowser = ProjectBrowser(self.project,
673
700
self.qtdir, self.qt4dir, None,
674
701
embeddedBrowser=(self.embeddedFileBrowser == 2))
675
self.projectBrowser.setCaption(self.trUtf8("Project-Browser"))
702
self.projectBrowser.setWindowTitle(self.trUtf8("Project-Viewer"))
677
# Create the shell, browser, variables part of the user interface,
678
# maybe without the embedded shell
679
self.sbv = SBVviewer(dbs, 0, self.viewmanager, None,
704
# Create the debug viewer maybe without the embedded shell
705
self.debugViewer = DebugViewer(debugServer, False, self.viewmanager, None,
680
706
embeddedShell=self.embeddedShell,
681
707
embeddedBrowser=(self.embeddedFileBrowser == 1))
682
self.sbv.setCaption(self.trUtf8("Debug-Browser"))
708
self.debugViewer.setWindowTitle(self.trUtf8("Debug-Viewer"))
684
710
# Create the log viewer part of the user interface
685
self.logViewer = LogView(None)
686
self.logViewer.setCaption(self.trUtf8("Log-Viewer"))
711
self.logViewer = LogViewer(None)
712
self.logViewer.setWindowTitle(self.trUtf8("Log-Viewer"))
688
714
# Create the task viewer part of the user interface
689
715
self.taskViewer = TaskViewer(None, self.project)
690
self.taskViewer.setCaption(self.trUtf8("Task-Viewer"))
716
self.taskViewer.setWindowTitle(self.trUtf8("Task-Viewer"))
692
718
# Create the template viewer part of the user interface
693
719
self.templateViewer = TemplateViewer(None, self.viewmanager)
694
self.templateViewer.setCaption(self.trUtf8("Template-Viewer"))
720
self.templateViewer.setWindowTitle(self.trUtf8("Template-Viewer"))
696
self.windows = [self.projectBrowser, None, self.sbv,
722
self.windows = [self.projectBrowser, None, self.debugViewer,
697
723
None, self.logViewer, self.taskViewer, self.templateViewer]
699
725
if self.embeddedShell:
700
self.shell = self.sbv.shell
726
self.shell = self.debugViewer.shell
702
728
# Create the shell
703
self.shell = Shell(dbs, self.viewmanager, None)
729
self.shell = Shell(debugServer, self.viewmanager, None)
704
730
self.windows[3] = self.shell
706
732
if self.embeddedFileBrowser == 0: # separate window
707
733
# Create the file browser
708
734
self.browser = Browser(None)
709
self.browser.setCaption(self.trUtf8("File-Browser"))
735
self.browser.setWindowTitle(self.trUtf8("File-Browser"))
710
736
self.windows[1] = self.browser
711
737
elif self.embeddedFileBrowser == 1: # embedded in debug browser
712
self.browser = self.sbv.browser
738
self.browser = self.debugViewer.browser
713
739
else: # embedded in project browser
714
740
self.browser = self.projectBrowser.fileBrowser
716
# Create and add the log viewer tabs
718
(self.logTabs["stdout"], self.stdoutTab) = self.logViewer.addTab(self.trUtf8("stdout"))
720
(self.logTabs["stderr"], self.stderrTab) = self.logViewer.addTab(self.trUtf8("stderr"))
722
def sizeLayout(self):
724
Private method to setup the layout of the various windows.
726
# Set the sizes of the splitters
728
height = self.height()
729
if self.layout == 0: # splitters
730
if self.embeddedShell:
731
g = Preferences.getGeometry("MainSplitter0")
733
hSizes = [int(0.21*width), int(0.49*width), int(0.3*width)]
734
vSizes = [int(0.8*height), int(0.2*height)]
738
self.hSplitter.setSizes(hSizes)
739
self.vSplitter.setSizes(vSizes)
741
g = Preferences.getGeometry("MainSplitter1")
742
if g == [0,0,0,0,0,0,0]:
743
vSizes = [int(0.9*height), int(0.1*height)]
744
hSizes1 = [int(0.23*width), int(0.52*width), int(0.25*width)]
745
hSizes2 = [int(0.5*width), int(0.5*width)]
750
self.vSplitter.setSizes(vSizes)
751
self.hSplitter1.setSizes(hSizes1)
752
self.hSplitter2.setSizes(hSizes2)
753
elif self.layout == 1: # dockable windows
754
if self.embeddedShell and self.embeddedFileBrowser:
755
# shell and browser are embedded
756
if not Preferences.getMainDockLayout(self, 0):
757
self.projectBrowserDock.setFixedExtentWidth(int(0.2*width))
758
self.sbvDock.setFixedExtentWidth(int(0.3*width))
759
self.logViewerDock.setFixedExtentHeight(int(0.1*height))
760
elif not self.embeddedFileBrowser and not self.embeddedShell:
761
# shell and browser are separate
762
if not Preferences.getMainDockLayout(self, 3):
763
self.projectBrowserDock.setFixedExtentWidth(int(0.23*width))
764
self.sbvDock.setFixedExtentWidth(int(0.3*width))
765
self.shellDock.setFixedExtentHeight(int(0.15*height))
766
self.logViewerDock.setFixedExtentHeight(int(0.15*height))
767
self.logViewerDock.setFixedExtentWidth(int(0.4*width))
768
self.browserDock.setFixedExtentWidth(int(0.3*width))
769
elif not self.embeddedShell:
770
# only shell is separate
771
if not Preferences.getMainDockLayout(self, 1):
772
self.projectBrowserDock.setFixedExtentWidth(int(0.23*width))
773
self.sbvDock.setFixedExtentWidth(int(0.3*width))
774
self.shellDock.setFixedExtentHeight(int(0.15*height))
775
self.logViewerDock.setFixedExtentHeight(int(0.15*height))
776
self.logViewerDock.setFixedExtentWidth(int(0.4*width))
778
# only browser is separate
779
if not Preferences.getMainDockLayout(self, 2):
780
self.projectBrowserDock.setFixedExtentWidth(int(0.2*width))
781
self.sbvDock.setFixedExtentWidth(int(0.3*width))
782
self.logViewerDock.setFixedExtentHeight(int(0.1*height))
783
self.browserDock.setFixedExtentWidth(int(0.3*width))
784
elif self.layout == 2: # floating windows
786
g = Preferences.getGeometry("ProjectBrowser")
787
self.projectBrowser.resize(g[2], g[3])
788
self.projectBrowser.move(g[0], g[1])
789
self.projectBrowser.setShown(g[4])
792
g = Preferences.getGeometry("SBV")
793
self.sbv.resize(g[2], g[3])
794
self.sbv.move(g[0], g[1])
795
self.sbv.setShown(g[4])
798
g = Preferences.getGeometry("LogViewer")
799
self.logViewer.resize(g[2], g[3])
800
self.logViewer.move(g[0], g[1])
801
self.logViewer.setShown(g[4])
803
# Shell (only for separate shell)
804
if not self.embeddedShell:
805
g = Preferences.getGeometry("Shell")
806
self.shell.resize(g[2], g[3])
807
self.shell.move(g[0], g[1])
808
self.shell.setShown(g[4])
810
# Browser (only for separate browser)
811
if not self.embeddedFileBrowser:
812
g = Preferences.getGeometry("FileBrowser")
813
self.browser.resize(g[2], g[3])
814
self.browser.move(g[0], g[1])
815
self.browser.setShown(g[4])
818
g = Preferences.getGeometry("TaskViewer")
819
self.taskViewer.resize(g[2], g[3])
820
self.taskViewer.move(g[0], g[1])
821
self.taskViewer.setShown(g[4])
824
g = Preferences.getGeometry("TemplateViewer")
825
self.templateViewer.resize(g[2], g[3])
826
self.templateViewer.move(g[0], g[1])
827
self.templateViewer.setShown(g[4])
742
raise RuntimeError("wrong layout type given (%s)" % self.layout)
829
744
def showLogTab(self, tabname):
1284
1225
"""<b>Unittest Project</b>"""
1285
1226
"""<p>Run unittest with current project.</p>"""
1287
self.utProjectAct.connectIt(SIGNAL('activated()'), self.handleUnittestProject)
1288
self.utProjectAct.setEnabled(0)
1228
self.utProjectAct.connectIt(SIGNAL('triggered()'), self.__unittestProject)
1229
self.utProjectAct.setEnabled(False)
1289
1230
self.actions.append(self.utProjectAct)
1291
1232
if self.qtdir is None:
1292
1233
self.qtActGrp = None
1294
self.qtActGrp = E3ActionGroup(self)
1235
self.qtActGrp = E4ActionGroup(self)
1296
act = E3Action(self.trUtf8('Qt-Designer'),
1297
QIconSet(UI.PixmapCache.getPixmap("designer.png")),
1237
act = E4Action(self.trUtf8('Qt-Designer'),
1238
UI.PixmapCache.getIcon("designer.png"),
1298
1239
self.trUtf8('&Designer...'), 0, 0, self.qtActGrp, 'qt_designer')
1299
1240
act.setStatusTip(self.trUtf8('Start the Qt-Designer'))
1300
1241
act.setWhatsThis(self.trUtf8(
1301
1242
"""<b>Qt-Designer</b>"""
1302
1243
"""<p>Start the Qt-Designer.</p>"""
1304
act.connectIt(SIGNAL('activated()'), self.handleDesigner)
1245
act.connectIt(SIGNAL('triggered()'), self.__designer)
1305
1246
self.actions.append(act)
1307
act = E3Action(self.trUtf8('Qt-Linguist'),
1308
QIconSet(UI.PixmapCache.getPixmap("linguist.png")),
1248
act = E4Action(self.trUtf8('Qt-Linguist'),
1249
UI.PixmapCache.getIcon("linguist.png"),
1309
1250
self.trUtf8('&Linguist...'), 0, 0, self.qtActGrp, 'qt_linguist')
1310
1251
act.setStatusTip(self.trUtf8('Start the Qt-Linguist'))
1311
1252
act.setWhatsThis(self.trUtf8(
1312
1253
"""<b>Qt-Linguist</b>"""
1313
1254
"""<p>Start the Qt-Linguist.</p>"""
1315
act.connectIt(SIGNAL('activated()'), self.handleLinguist)
1256
act.connectIt(SIGNAL('triggered()'), self.__linguist)
1316
1257
self.actions.append(act)
1318
1259
# check for Qt4 designer and linguist
1320
designerExe = sys.platform == 'win32' and "designer.exe" or "designer"
1321
if Utilities.isExecutable(os.path.join(self.qt4dir, "bin", designerExe)):
1322
if not self.qtActGrp:
1323
self.qtActGrp = E3ActionGroup(self)
1324
act = E3Action(self.trUtf8('Qt-Designer 4'),
1325
QIconSet(UI.PixmapCache.getPixmap("designer4.png")),
1326
self.trUtf8('Designer 4...'), 0, 0, self.qtActGrp, 'qt_designer4')
1327
act.setStatusTip(self.trUtf8('Start Qt-Designer 4'))
1328
act.setWhatsThis(self.trUtf8(
1329
"""<b>Qt-Designer 4</b>"""
1330
"""<p>Start Qt-Designer 4.</p>"""
1332
act.connectIt(SIGNAL('activated()'), self.handleDesigner4)
1333
self.actions.append(act)
1335
linguistExe = sys.platform == 'win32' and "linguist.exe" or "linguist"
1336
if Utilities.isExecutable(os.path.join(self.qt4dir, "bin", linguistExe)):
1337
if not self.qtActGrp:
1338
self.qtActGrp = E3ActionGroup(self)
1339
act = E3Action(self.trUtf8('Qt-Linguist 4'),
1340
QIconSet(UI.PixmapCache.getPixmap("linguist4.png")),
1341
self.trUtf8('Linguist 4...'), 0, 0, self.qtActGrp, 'qt_linguist4')
1342
act.setStatusTip(self.trUtf8('Start Qt-Linguist 4'))
1343
act.setWhatsThis(self.trUtf8(
1344
"""<b>Qt-Linguist 4</b>"""
1345
"""<p>Start Qt-Linguist 4.</p>"""
1347
act.connectIt(SIGNAL('activated()'), self.handleLinguist4)
1348
self.actions.append(act)
1350
self.uipreviewerAct = E3Action(self.trUtf8('UI Previewer'),
1351
QIconSet(UI.PixmapCache.getPixmap("uiPreviewer.png")),
1260
designerExe = sys.platform == 'win32' and \
1261
"%s.exe" % Utilities.generateQtToolName("designer") or \
1262
Utilities.generateQtToolName("designer")
1263
if Utilities.isinpath(designerExe):
1264
if not self.qtActGrp:
1265
self.qtActGrp = E4ActionGroup(self)
1266
act = E4Action(self.trUtf8('Qt-Designer 4'),
1267
UI.PixmapCache.getIcon("designer4.png"),
1268
self.trUtf8('Designer 4...'), 0, 0, self.qtActGrp, 'qt_designer4')
1269
act.setStatusTip(self.trUtf8('Start Qt-Designer 4'))
1270
act.setWhatsThis(self.trUtf8(
1271
"""<b>Qt-Designer 4</b>"""
1272
"""<p>Start Qt-Designer 4.</p>"""
1274
act.connectIt(SIGNAL('triggered()'), self.__designer4)
1275
self.actions.append(act)
1277
linguistExe = sys.platform == 'win32' and \
1278
"%s.exe" % Utilities.generateQtToolName("linguist") or \
1279
Utilities.generateQtToolName("linguist")
1280
if Utilities.isinpath(linguistExe):
1281
if not self.qtActGrp:
1282
self.qtActGrp = E4ActionGroup(self)
1283
act = E4Action(self.trUtf8('Qt-Linguist 4'),
1284
UI.PixmapCache.getIcon("linguist4.png"),
1285
self.trUtf8('Linguist 4...'), 0, 0, self.qtActGrp, 'qt_linguist4')
1286
act.setStatusTip(self.trUtf8('Start Qt-Linguist 4'))
1287
act.setWhatsThis(self.trUtf8(
1288
"""<b>Qt-Linguist 4</b>"""
1289
"""<p>Start Qt-Linguist 4.</p>"""
1291
act.connectIt(SIGNAL('triggered()'), self.__linguist4)
1292
self.actions.append(act)
1294
self.uipreviewerAct = E4Action(self.trUtf8('UI Previewer'),
1295
UI.PixmapCache.getIcon("uiPreviewer.png"),
1352
1296
self.trUtf8('&UI Previewer...'), 0, 0, self, 'ui_previewer')
1353
1297
self.uipreviewerAct.setStatusTip(self.trUtf8('Start the UI Previewer'))
1354
1298
self.uipreviewerAct.setWhatsThis(self.trUtf8(
1355
1299
"""<b>UI Previewer</b>"""
1356
1300
"""<p>Start the UI Previewer.</p>"""
1358
self.uipreviewerAct.connectIt(SIGNAL('activated()'), self.handleUIPreviewer)
1302
self.uipreviewerAct.connectIt(SIGNAL('triggered()'), self.__UIPreviewer)
1359
1303
self.actions.append(self.uipreviewerAct)
1360
if not getConfig('qtui'):
1361
self.uipreviewerAct.setEnabled(False)
1363
self.trpreviewerAct = E3Action(self.trUtf8('Translations Previewer'),
1364
QIconSet(UI.PixmapCache.getPixmap("trPreviewer.png")),
1305
self.trpreviewerAct = E4Action(self.trUtf8('Translations Previewer'),
1306
UI.PixmapCache.getIcon("trPreviewer.png"),
1365
1307
self.trUtf8('&Translations Previewer...'), 0, 0, self, 'tr_previewer')
1366
1308
self.trpreviewerAct.setStatusTip(self.trUtf8('Start the Translations Previewer'))
1367
1309
self.trpreviewerAct.setWhatsThis(self.trUtf8(
1368
1310
"""<b>Translations Previewer</b>"""
1369
1311
"""<p>Start the Translations Previewer.</p>"""
1371
self.trpreviewerAct.connectIt(SIGNAL('activated()'), self.handleTRPreviewer)
1313
self.trpreviewerAct.connectIt(SIGNAL('triggered()'), self.__TRPreviewer)
1372
1314
self.actions.append(self.trpreviewerAct)
1373
if not getConfig('qtui'):
1374
self.trpreviewerAct.setEnabled(False)
1376
self.diffAct = E3Action(self.trUtf8('Compare Files'),
1377
QIconSet(UI.PixmapCache.getPixmap("diffFiles.png")),
1316
self.diffAct = E4Action(self.trUtf8('Compare Files'),
1317
UI.PixmapCache.getIcon("diffFiles.png"),
1378
1318
self.trUtf8('&Compare Files...'), 0, 0, self, 'diff_files')
1379
1319
self.diffAct.setStatusTip(self.trUtf8('Compare two files'))
1380
1320
self.diffAct.setWhatsThis(self.trUtf8(
1381
1321
"""<b>Compare Files</b>"""
1382
1322
"""<p>Open a dialog to compare two files.</p>"""
1384
self.diffAct.connectIt(SIGNAL('activated()'), self.handleCompareFiles)
1324
self.diffAct.connectIt(SIGNAL('triggered()'), self.__compareFiles)
1385
1325
self.actions.append(self.diffAct)
1387
self.compareAct = E3Action(self.trUtf8('Compare Files side by side'),
1388
QIconSet(UI.PixmapCache.getPixmap("compareFiles.png")),
1389
self.trUtf8('Compare Files &side by side...'), 0, 0, self, 'compare_files')
1327
self.compareAct = E4Action(self.trUtf8('Compare Files side by side'),
1328
UI.PixmapCache.getIcon("compareFiles.png"),
1329
self.trUtf8('Compare Files &side by side...'),
1330
0, 0, self, 'compare_files')
1390
1331
self.compareAct.setStatusTip(self.trUtf8('Compare two files'))
1391
1332
self.compareAct.setWhatsThis(self.trUtf8(
1392
1333
"""<b>Compare Files side by side</b>"""
1393
1334
"""<p>Open a dialog to compare two files and show the result"""
1394
1335
""" side by side.</p>"""
1396
self.compareAct.connectIt(SIGNAL('activated()'), self.handleCompareFilesSbs)
1337
self.compareAct.connectIt(SIGNAL('triggered()'), self.__compareFilesSbs)
1397
1338
self.actions.append(self.compareAct)
1399
self.prefAct = E3Action(self.trUtf8('Preferences'),
1400
QIconSet(UI.PixmapCache.getPixmap("configure.png")),
1340
self.chartablesAct = E4Action(self.trUtf8('Character Tables'),
1341
UI.PixmapCache.getIcon("chartables.png"),
1342
self.trUtf8('Character &Tables...'), 0, 0, self, 'chartables')
1343
self.chartablesAct.setStatusTip(self.trUtf8('Show character tables dialog'))
1344
self.chartablesAct.setWhatsThis(self.trUtf8(
1345
"""<b>Character Tables</b>"""
1346
"""<p>Open a dialog to show and insert special characters.</p>"""
1348
self.chartablesAct.connectIt(SIGNAL('triggered()'), self.__showChartables)
1349
self.actions.append(self.chartablesAct)
1351
self.prefAct = E4Action(self.trUtf8('Preferences'),
1352
UI.PixmapCache.getIcon("configure.png"),
1401
1353
self.trUtf8('&Preferences...'), 0, 0, self, 'preferences')
1402
1354
self.prefAct.setStatusTip(self.trUtf8('Set the prefered configuration'))
1403
1355
self.prefAct.setWhatsThis(self.trUtf8(
1604
1582
""" Windows and <i>/usr/share/doc/packages/python/html</i> on Unix."""
1605
1583
""" Set PYTHONDOCDIR in your environment to override this. </p>"""
1607
self.pythonDocAct.connectIt(SIGNAL('activated()'),self.handlePythonDoc)
1585
self.pythonDocAct.connectIt(SIGNAL('triggered()'),self.__showPythonDoc)
1608
1586
self.actions.append(self.pythonDocAct)
1610
def initEricDocAction(self):
1612
Private slot to initialize the action to show the eric3 documentation.
1614
self.ericDocAct = E3Action(self.trUtf8("Eric API Documentation"),
1588
def __initEricDocAction(self):
1590
Private slot to initialize the action to show the eric4 documentation.
1592
self.ericDocAct = E4Action(self.trUtf8("Eric API Documentation"),
1615
1593
self.trUtf8('&Eric API Documentation'), 0, 0, self, 'eric_documentation')
1616
1594
self.ericDocAct.setStatusTip(self.trUtf8("Open Eric API Documentation"))
1617
1595
self.ericDocAct.setWhatsThis(self.trUtf8(
1618
1596
"""<b>Eric API Documentation</b>"""
1619
"""<p>Display the Eric API documantation."""
1597
"""<p>Display the Eric API documentation."""
1620
1598
""" The location for the documentation is the Documentation/Source"""
1621
""" subdirectory of the eric3 installation directory.</p>"""
1599
""" subdirectory of the eric4 installation directory.</p>"""
1623
self.ericDocAct.connectIt(SIGNAL('activated()'),self.handleEricDoc)
1601
self.ericDocAct.connectIt(SIGNAL('triggered()'),self.__showEricDoc)
1624
1602
self.actions.append(self.ericDocAct)
1626
def initMenus(self):
1604
def __initMenus(self):
1628
1606
Private slot to create the menus.
1630
1608
mb = self.menuBar()
1632
1610
self.fileMenu = self.viewmanager.initFileMenu()
1633
mb.insertItem(self.trUtf8('&File'), self.fileMenu)
1634
self.fileMenu.insertSeparator()
1611
mb.addMenu(self.fileMenu)
1612
self.fileMenu.addSeparator()
1635
1613
self.exitAct.addTo(self.fileMenu)
1637
1615
self.editMenu = self.viewmanager.initEditMenu()
1638
mb.insertItem(self.trUtf8('&Edit'), self.editMenu)
1616
mb.addMenu(self.editMenu)
1640
1618
self.viewMenu = self.viewmanager.initViewMenu()
1641
mb.insertItem(self.trUtf8('&View'), self.viewMenu)
1643
self.debugMenu = self.dbg.initMenu()
1644
mb.insertItem(self.trUtf8('&Debug'), self.debugMenu)
1646
self.unittestMenu = QPopupMenu(self)
1647
self.unittestMenu.insertTearOffHandle()
1648
mb.insertItem(self.trUtf8('&Unittest'), self.unittestMenu)
1619
mb.addMenu(self.viewMenu)
1621
self.startMenu, self.debugMenu = self.debuggerUI.initMenus()
1622
mb.addMenu(self.startMenu)
1623
mb.addMenu(self.debugMenu)
1625
self.unittestMenu = QMenu(self.trUtf8('&Unittest'), self)
1626
self.unittestMenu.setTearOffEnabled(True)
1627
mb.addMenu(self.unittestMenu)
1649
1628
self.utDialogAct.addTo(self.unittestMenu)
1650
self.unittestMenu.insertSeparator()
1629
self.unittestMenu.addSeparator()
1651
1630
self.utRestartAct.addTo(self.unittestMenu)
1652
1631
self.utScriptAct.addTo(self.unittestMenu)
1653
1632
self.utProjectAct.addTo(self.unittestMenu)
1655
1634
self.projectMenu = self.project.initMenu()
1656
mb.insertItem(self.trUtf8('&Project'), self.projectMenu)
1635
mb.addMenu(self.projectMenu)
1658
1637
self.refactoringMenu = self.refactoring.initMenu()
1659
self.refactoringMenuItem = \
1660
mb.insertItem(self.trUtf8('&Refactoring'), self.refactoringMenu)
1661
mb.setItemEnabled(self.refactoringMenuItem, 0)
1638
self.refactoringMenuAct = mb.addMenu(self.refactoringMenu)
1639
self.refactoringMenuAct.setEnabled(False)
1663
self.extrasMenu = QPopupMenu(self)
1664
self.extrasMenu.insertTearOffHandle()
1665
mb.insertItem(self.trUtf8('E&xtras'), self.extrasMenu)
1641
self.extrasMenu = QMenu(self.trUtf8('E&xtras'), self)
1642
self.extrasMenu.setTearOffEnabled(True)
1643
mb.addMenu(self.extrasMenu)
1644
self.wizardsMenu = self.wizards.initMenu()
1645
self.wizardsMenuAct = self.extrasMenu.addMenu(self.wizardsMenu)
1646
self.wizardsMenuAct.setEnabled(False)
1666
1647
self.macrosMenu = self.viewmanager.initMacroMenu()
1667
self.extrasMenu.insertItem(self.trUtf8("&Macros"), self.macrosMenu)
1668
self.scriptsMenu = QPopupMenu(self)
1669
self.scriptsMenu.insertTearOffHandle()
1648
self.extrasMenu.addMenu(self.macrosMenu)
1649
self.scriptsMenu = QMenu(self.trUtf8("&Scripts"), self)
1650
self.scriptsMenu.setTearOffEnabled(True)
1670
1651
self.scriptsActGrp.addTo(self.scriptsMenu)
1671
self.scriptsMenu.insertSeparator()
1652
self.scriptsMenu.addSeparator()
1672
1653
self.scriptsExecDocAct.addTo(self.scriptsMenu)
1673
self.scriptsMenu.insertSeparator()
1674
self.extrasMenu.insertItem(self.trUtf8("&Scripts"), self.scriptsMenu)
1675
self.wizardsMenu = self.wizards.initMenu()
1676
self.wizardsMenuItem = \
1677
self.extrasMenu.insertItem(self.trUtf8('Wi&zards'), self.wizardsMenu)
1678
self.extrasMenu.setItemEnabled(self.wizardsMenuItem, 0)
1679
self.toolsMenu = QPopupMenu(self)
1680
self.extrasMenu.insertItem(self.trUtf8('&Tools'), self.toolsMenu)
1681
self.connect(self.toolsMenu, SIGNAL('aboutToShow()'), self.handleShowToolsMenu)
1654
self.scriptsMenu.addSeparator()
1655
self.extrasMenu.addMenu(self.scriptsMenu)
1656
self.toolsMenu = QMenu(self.trUtf8('&Tools'), self)
1657
self.connect(self.toolsMenu, SIGNAL('aboutToShow()'),
1658
self.__showToolsMenu)
1659
self.connect(self.toolsMenu, SIGNAL('triggered(QAction *)'),
1661
self.toolGroupsMenu = QMenu(self.trUtf8("Select Tool Group"), self)
1662
self.connect(self.toolGroupsMenu, SIGNAL('aboutToShow()'),
1663
self.__showToolGroupsMenu)
1664
self.connect(self.toolGroupsMenu, SIGNAL('triggered(QAction *)'),
1665
self.__toolGroupSelected)
1666
self.toolGroupsMenuTriggered = False
1667
self.extrasMenu.addMenu(self.toolsMenu)
1683
self.settingsMenu = QPopupMenu(self)
1684
mb.insertItem(self.trUtf8('&Settings'), self.settingsMenu)
1685
self.settingsMenu.insertTearOffHandle()
1669
self.settingsMenu = QMenu(self.trUtf8('Se&ttings'), self)
1670
mb.addMenu(self.settingsMenu)
1671
self.settingsMenu.setTearOffEnabled(True)
1686
1672
self.prefAct.addTo(self.settingsMenu)
1687
1673
self.reloadAPIsAct.addTo(self.settingsMenu)
1688
self.settingsMenu.insertSeparator()
1674
self.settingsMenu.addSeparator()
1689
1675
self.configViewProfilesAct.addTo(self.settingsMenu)
1690
self.settingsMenu.insertSeparator()
1676
self.settingsMenu.addSeparator()
1691
1677
self.shortcutsAct.addTo(self.settingsMenu)
1692
1678
self.exportShortcutsAct.addTo(self.settingsMenu)
1693
1679
self.importShortcutsAct.addTo(self.settingsMenu)
1694
self.settingsMenu.insertSeparator()
1695
self.toolsConfAct.addTo(self.settingsMenu)
1697
self.windowMenu = QPopupMenu(self)
1698
mb.insertItem(self.trUtf8('&Window'), self.windowMenu)
1699
self.connect(self.windowMenu, SIGNAL('aboutToShow()'), self.handleShowWindowMenu)
1701
self.toolbarsMenu = QPopupMenu(self.windowMenu)
1702
self.connect(self.toolbarsMenu, SIGNAL('aboutToShow()'), self.handleShowToolbarsMenu)
1680
self.settingsMenu.addSeparator()
1681
self.showExternalToolsAct.addTo(self.settingsMenu)
1683
self.windowMenu = QMenu(self.trUtf8('&Window'), self)
1684
mb.addMenu(self.windowMenu)
1685
self.windowMenu.setTearOffEnabled(True)
1686
self.connect(self.windowMenu, SIGNAL('aboutToShow()'), self.__showWindowMenu)
1688
self.toolbarsMenu = QMenu(self.trUtf8("&Toolbars"), self.windowMenu)
1689
self.connect(self.toolbarsMenu, SIGNAL('aboutToShow()'),
1690
self.__showToolbarsMenu)
1691
self.connect(self.toolbarsMenu, SIGNAL('triggered(QAction *)'),
1692
self.__TBMenuTriggered)
1694
self.__showWindowMenu() # to initialize these actions
1704
1696
self.bookmarkMenu = self.viewmanager.initBookmarkMenu()
1705
mb.insertItem(self.trUtf8('&Bookmarks'), self.bookmarkMenu)
1707
mb.insertSeparator()
1709
self.helpMenu = QPopupMenu(self)
1710
mb.insertItem(self.trUtf8('&Help'), self.helpMenu)
1711
self.helpMenu.insertTearOffHandle()
1697
mb.addMenu(self.bookmarkMenu)
1698
self.bookmarkMenu.setTearOffEnabled(True)
1702
self.helpMenu = QMenu(self.trUtf8('&Help'), self)
1703
mb.addMenu(self.helpMenu)
1704
self.helpMenu.setTearOffEnabled(True)
1712
1705
self.helpviewerAct.addTo(self.helpMenu)
1713
self.helpMenu.insertSeparator()
1706
self.helpMenu.addSeparator()
1714
1707
self.ericDocAct.addTo(self.helpMenu)
1715
1708
self.pythonDocAct.addTo(self.helpMenu)
1716
1709
self.qtDocAct.addTo(self.helpMenu)
1717
1710
self.qt4DocAct.addTo(self.helpMenu)
1718
self.helpMenu.insertSeparator()
1711
self.pyqt4DocAct.addTo(self.helpMenu)
1712
self.helpMenu.addSeparator()
1719
1713
self.aboutAct.addTo(self.helpMenu)
1720
1714
self.aboutQtAct.addTo(self.helpMenu)
1721
1715
if self.aboutKdeAct is not None:
1722
1716
self.aboutKdeAct.addTo(self.helpMenu)
1723
1717
self.versionAct.addTo(self.helpMenu)
1724
self.helpMenu.insertSeparator()
1718
self.helpMenu.addSeparator()
1719
self.checkUpdateAct.addTo(self.helpMenu)
1725
1720
self.reportBugAct.addTo(self.helpMenu)
1726
self.helpMenu.insertSeparator()
1721
self.helpMenu.addSeparator()
1727
1722
self.whatsThisAct.addTo(self.helpMenu)
1723
self.connect(self.helpMenu, SIGNAL('aboutToShow()'),
1724
self.__showHelpMenu)
1729
def initToolbars(self):
1726
def __initToolbars(self):
1731
1728
Private slot to create the toolbars.
3028
3145
self.trUtf8("Documentation Missing"),
3029
3146
self.trUtf8("""<p>The documentation starting point"""
3030
3147
""" "<b>%1</b>" could not be found.</p>""")\
3038
3151
hvType = Preferences.getHelp("HelpViewerType")
3039
3152
if hvType == 1:
3040
3153
self.launchHelpViewer(home)
3041
3154
elif hvType == 2:
3042
self.handleAssistant(home)
3155
self.__assistant(home)
3043
3156
elif hvType == 3:
3044
self.handleWebBrowser(home)
3157
self.__webBrowser(home)
3046
self.handleCustomViewer(home)
3159
self.__customViewer(home)
3048
3161
def launchHelpViewer(self, home):
3050
Private slot to start the help viewer.
3163
Public slot to start the help viewer.
3052
@param home filename of to be shown
3165
@param home filename of file to be shown
3054
help = HelpWindow(home, '.', None, 'help viewer', 1)
3055
help.setCaption(self.trUtf8('Helpviewer'))
3167
if not Preferences.getHelp("SingleHelpWindow") or self.helpWindow is None:
3168
help = HelpWindow(home, '.', None, 'help viewer', True)
3057
if QApplication.desktop().width() > 400 and \
3058
QApplication.desktop().height() > 500:
3170
if QApplication.desktop().width() > 400 and \
3171
QApplication.desktop().height() > 500:
3174
help.showMaximized()
3176
if Preferences.getHelp("SingleHelpWindow"):
3177
self.helpWindow = help
3178
self.connect(self.helpWindow, SIGNAL("helpClosed"), self.__helpClosed)
3061
help.showMaximized()
3063
def handleHelpViewer(self):
3180
self.helpWindow.newTab(home)
3181
self.helpWindow.raise_()
3183
def __helpClosed(self):
3185
Private slot to handle the helpClosed signal of the help window.
3187
if Preferences.getHelp("SingleHelpWindow"):
3188
self.helpWindow = None
3190
def __helpViewer(self):
3065
3192
Private slot to start an empty help viewer.
3067
3194
self.launchHelpViewer("")
3069
def handlePreferences(self):
3196
def __preferences(self, pageName = None):
3071
3198
Private slot to set the preferences.
3200
@param pageName name of the configuration page to show (string or QString)
3073
dlg = ConfigurationDialog(self, 'Configuration', 1)
3075
qApp.processEvents()
3202
dlg = ConfigurationDialog(self, 'Configuration', True)
3203
self.connect(dlg, SIGNAL('preferencesChanged'),
3204
self.__preferencesChanged)
3205
if pageName is not None:
3206
dlg.showConfigurationPageByName(pageName)
3208
QApplication.processEvents()
3076
3209
if dlg.result() == QDialog.Accepted:
3077
3210
dlg.setPreferences()
3078
3211
Preferences.syncPreferences()
3079
self.handlePreferencesChanged()
3080
self.emit(PYSIGNAL('preferencesChanged'), ())
3082
def handlePreferencesChanged(self):
3084
Private method to handle a change of the preferences.
3212
self.__preferencesChanged()
3214
def __preferencesChanged(self):
3216
Private slot to handle a change of the preferences.
3086
3220
if Preferences.getUI("SingleApplicationMode"):
3087
3221
if self.SAServer is None:
3088
self.SAServer = E3SingleApplicationServer()
3222
self.SAServer = E4SingleApplicationServer()
3090
3224
if self.SAServer is not None:
3091
3225
self.SAServer.shutdown()
3092
3226
self.SAServer = None
3094
if not Preferences.getUI("CaptionShowsFilename"):
3095
self.setWindowCaption(editor="")
3096
self.captionShowsFilename = Preferences.getUI("CaptionShowsFilename")
3098
self.captionShowsFilename = Preferences.getUI("CaptionShowsFilename")
3228
if Preferences.getUI("UseIconProvider"):
3229
if self.iconProvider is None:
3230
# Generate and set our icon provider for KQFileDialog
3231
self.iconProvider = E4IconProvider()
3232
KQFileDialog.setIconProvider(self.iconProvider)
3234
if self.iconProvider is not None:
3235
self.iconProvider = None
3236
KQFileDialog.setIconProvider(None)
3238
self.maxEditorPathLen = Preferences.getUI("CaptionFilenameLength")
3239
self.captionShowsFilename = Preferences.getUI("CaptionShowsFilename")
3240
if not self.captionShowsFilename:
3241
self.__setWindowCaption(editor = "")
3099
3243
aw = self.viewmanager.activeWindow()
3100
3244
fn = aw and aw.getFileName() or None
3102
self.setWindowCaption(editor=unicode(fn))
3246
self.__setWindowCaption(editor = unicode(fn))
3104
self.setWindowCaption(editor="")
3106
def handleReloadAPIs(self):
3108
Public slot to reload the api information.
3110
self.emit(PYSIGNAL('reloadAPIs'), ())
3112
def handleConfigViewProfiles(self):
3114
Private method to configure the various view profiles.
3248
self.__setWindowCaption(editor = "")
3250
self.qtdir = Preferences.getQtDir()
3251
self.qt4dir = Preferences.getQt4Dir()
3253
self.performVersionCheck(False)
3255
self.emit(SIGNAL('preferencesChanged'))
3257
def __reloadAPIs(self):
3259
Private slot to reload the api information.
3261
self.emit(SIGNAL('reloadAPIs'))
3263
def __showExternalTools(self):
3265
Private slot to display a dialog show a list of external tools used by eric4.
3267
self.programsDialog.show()
3269
def __configViewProfiles(self):
3271
Private slot to configure the various view profiles.
3116
3273
dlg = ViewProfileDialog(self.profiles,
3117
3274
not self.embeddedShell, not self.embeddedFileBrowser)
3118
if dlg.exec_loop() == QDialog.Accepted:
3275
if dlg.exec_() == QDialog.Accepted:
3119
3276
self.profiles = dlg.getProfiles()
3120
3277
Preferences.setUI("ViewProfiles", self.profiles)
3121
3278
if self.currentProfile == "edit":
3122
self.handleSetEditProfile(False)
3279
self.__setEditProfile(False)
3123
3280
elif self.currentProfile == "debug":
3124
self.handleSetDebugProfile(False)
3281
self.setDebugProfile(False)
3126
def handleConfigShortcuts(self):
3283
def __configShortcuts(self):
3128
3285
Private slot to configure the keyboard shortcuts.
3130
3287
self.shortcutsDialog.show()
3132
def handleExportShortcuts(self):
3289
def __exportShortcuts(self):
3134
3291
Private slot to export the keyboard shortcuts.
3136
selectedFilter = QString('')
3293
selectedFilter = QString("")
3137
3294
fn = KQFileDialog.getSaveFileName(\
3139
self.trUtf8("Eric3 keyboard shortcut file (*.e3k);;"
3140
"Compressed Eric3 keyboard shortcut file (*.e3kz)"),
3142
3296
self.trUtf8("Export Keyboard Shortcuts"),
3298
self.trUtf8("eric4 keyboard shortcut file (*.e4k);;"
3299
"Compressed eric4 keyboard shortcut file (*.e4kz)"),
3301
QFileDialog.Options(QFileDialog.DontConfirmOverwrite))
3145
3303
if fn.isEmpty():
3148
ext = QFileInfo(fn).extension()
3306
ext = QFileInfo(fn).suffix()
3149
3307
if ext.isEmpty():
3150
3308
ex = selectedFilter.section('(*',1,1).section(')',0,0)
3151
3309
if not ex.isEmpty():
3153
3311
fn = unicode(fn)
3155
3313
res = Preferences.exportShortcuts(fn)
3157
3315
KQMessageBox.critical(None,
3158
3316
self.trUtf8("Export Keyboard Shortcuts"),
3159
self.trUtf8("<p>The keyboard shortcuts could not be written to file <b>%1</b>.</p>").arg(fn),
3160
self.trUtf8("&Abort"))
3317
self.trUtf8("<p>The keyboard shortcuts could not be written to file"
3318
" <b>%1</b>.</p>").arg(fn))
3162
def handleImportShortcuts(self):
3320
def __importShortcuts(self):
3164
3322
Private slot to import the keyboard shortcuts.
3166
3324
fn = KQFileDialog.getOpenFileName(\
3168
self.trUtf8("Eric3 keyboard shortcut file (*.e3k *.e3kz)"),
3170
3326
self.trUtf8("Import Keyboard Shortcuts"),
3328
self.trUtf8("eric4 keyboard shortcut file (*.e4k *.e4kz);;"
3329
"eric3 keyboard shortcut file (*.e3k *.e3kz)"))
3173
3331
if fn.isEmpty():
3176
3334
fn = unicode(fn)
3178
3336
Preferences.importShortcuts(fn)
3180
def handleNewProject(self):
3182
Public slot to handle the NewProject signal.
3184
self.setWindowCaption(project = self.project.name)
3338
def __newProject(self):
3340
Private slot to handle the NewProject signal.
3342
self.__setWindowCaption(project = self.project.name)
3186
def handleProjectOpened(self):
3188
Public slot to handle the projectOpened signal.
3190
self.setWindowCaption(project = self.project.name)
3191
cap = self.getDebugServer().getClientCapabilities(self.project.pdata["PROGLANGUAGE"][0])
3344
def __projectOpened(self):
3346
Private slot to handle the projectOpened signal.
3348
self.__setWindowCaption(project = self.project.name)
3349
cap = e4App().getObject("DebugServer")\
3350
.getClientCapabilities(self.project.pdata["PROGLANGUAGE"][0])
3192
3351
self.utProjectAct.setEnabled(cap & HasUnittest)
3193
3352
self.utProjectOpen = cap & HasUnittest
3195
def handleProjectClosed(self):
3197
Public slot to handle the projectClosed signal.
3199
self.setWindowCaption(project = "")
3200
self.utProjectAct.setEnabled(0)
3354
def __projectClosed(self):
3356
Private slot to handle the projectClosed signal.
3358
self.__setWindowCaption(project = "")
3359
self.utProjectAct.setEnabled(False)
3201
3360
if not self.utEditorOpen:
3202
self.utRestartAct.setEnabled(0)
3203
self.utProjectOpen = 0
3205
def handleProgramChange(self,fn):
3361
self.utRestartAct.setEnabled(False)
3362
self.utProjectOpen = False
3364
def __programChange(self, fn):
3207
Public slot to handle the programChange signal.
3366
Private slot to handle the programChange signal.
3209
3368
This primarily is here to set the currentProg variable.
3211
@param fn filename to be set as current prog (string)
3370
@param fn filename to be set as current prog (QString)
3213
3372
# Delete the old program if there was one.
3214
3373
if self.currentProg is not None:
3215
3374
del self.currentProg
3217
self.currentProg = os.path.normpath(fn)
3376
self.currentProg = os.path.normpath(unicode(fn))
3219
def handleLastEditorClosed(self):
3221
Public slot to handle the lastEditorClosed signal.
3223
self.extrasMenu.setItemEnabled(self.wizardsMenuItem, 0)
3224
self.menuBar().setItemEnabled(self.refactoringMenuItem, 0)
3225
self.scriptsExecDocAct.setEnabled(0)
3226
self.utScriptAct.setEnabled(0)
3227
self.utEditorOpen = 0
3378
def __lastEditorClosed(self):
3380
Private slot to handle the lastEditorClosed signal.
3382
self.wizardsMenuAct.setEnabled(False)
3383
self.refactoringMenuAct.setEnabled(False)
3384
self.scriptsExecDocAct.setEnabled(False)
3385
self.utScriptAct.setEnabled(False)
3386
self.utEditorOpen = False
3228
3387
if not self.utProjectOpen:
3229
self.utRestartAct.setEnabled(0)
3230
self.setWindowCaption(editor="")
3232
def handleEditorOpened(self, fn):
3234
Public slot to handle the editorOpened signal.
3236
@param fn filename of the opened editor (string)
3238
self.extrasMenu.setItemEnabled(self.wizardsMenuItem, 1)
3239
self.menuBar().setItemEnabled(self.refactoringMenuItem, 1)
3240
self.scriptsExecDocAct.setEnabled(1)
3388
self.utRestartAct.setEnabled(False)
3389
self.__setWindowCaption(editor = "")
3391
def __editorOpened(self, fn):
3393
Private slot to handle the editorOpened signal.
3395
@param fn filename of the opened editor (QString)
3398
self.wizardsMenuAct.setEnabled(True)
3399
self.refactoringMenuAct.setEnabled(True)
3400
self.scriptsExecDocAct.setEnabled(True)
3402
if fn and unicode(fn) != "None":
3243
3403
if fn.endswith('.py') or self.viewmanager.getOpenEditor(fn).isPyFile():
3244
self.utScriptAct.setEnabled(1)
3245
self.utEditorOpen = 1
3404
self.utScriptAct.setEnabled(True)
3405
self.utEditorOpen = True
3246
3406
elif fn.endswith('.rb'):
3247
cap = self.getDebugServer().getClientCapabilities('Ruby')
3407
cap = e4App().getObject("DebugServer").getClientCapabilities('Ruby')
3248
3408
self.utScriptAct.setEnabled(cap & HasUnittest)
3249
3409
self.utEditorOpen = cap & HasUnittest
3251
def checkActions(self, editor):
3411
def __checkActions(self, editor):
3253
3413
Private slot to check some actions for their enable/disable status.