def reloadWidgets(self): # should have a way to set the desired tab location redRObjects.readCategories(force=True) redREnviron.addOrangeDirectoriesToPath(redREnviron.directoryNames) signals.registerRedRSignals() redRGUI.registerQTWidgets() self.canvas.createWidgetsToolbar(redRObjects.widgetRegistry()) self.searchBox2.setItems(redRObjects.widgetRegistry()['widgets'], redRObjects.widgetRegistry()['templates']) self.searchBox3.setItems(redRObjects.widgetRegistry()['widgets'], redRObjects.widgetRegistry()['templates'])
def reloadWidgets( self): # should have a way to set the desired tab location self.widgetRegistry = orngRegistry.readCategories() redREnviron.addOrangeDirectoriesToPath(redREnviron.directoryNames) signals.registerRedRSignals() redRGUI.registerQTWidgets() self.canvas.createWidgetsToolbar(self.widgetRegistry) self.searchBox2.setItems(redRObjects.widgetRegistry()['widgets'])
def __init__(self, app, parent = None, flags = 0): QMainWindow.__init__(self, parent) print "starting canvas dlg" self.setWindowTitle(_("Red-R Canvas %s") % redREnviron.version['REDRVERSION']) if os.path.exists(redRStyle.canvasIcon): self.setWindowIcon(QIcon(redRStyle.canvasIcon)) ############################### #####Start splashWindow#### ############################### logo = QPixmap(redRStyle.redRLogo) splashWindow = QSplashScreen(logo, Qt.WindowStaysOnTopHint) splashWindow.setMask(logo.mask()) splashWindow.show() ############################### #####Notes and output Docks#### ############################### self.notesDock = QDockWidget(_('Notes')) self.notesDock.setObjectName(_('CanvasNotes')) self.notes = redRTextEdit(None, label = _('Notes')) self.notes.setMinimumWidth(200) redRSaveLoad.setNotesWidget(self.notes) self.notesDock.setWidget(self.notes) self.addDockWidget(Qt.RightDockWidgetArea, self.notesDock) self.connect(self.notesDock,SIGNAL('visibilityChanged(bool)'),self.updateDock) print "connected notes dock" self.outputDock = QDockWidget(_('Output')) self.outputDock.setObjectName(_('CanvasOutput')) outbox = redRwidgetBox(None) self.printOutput = redRTextEdit(outbox, label = _('Output'),displayLabel=False, editable=False) hbox = redRwidgetBox(outbox,orientation='horizontal',alignment=Qt.AlignLeft) redRbutton(hbox, label = _('Save Output'), callback = self.saveOutputToFile) redRbutton(hbox, label = _('Clear Output'), callback = lambda: self.printOutput.clear()) if redREnviron.settings["writeLogFile"]: redRbutton(hbox, label = _('Show in Browser'), callback = lambda: redRLog.fileLogger.showLogFile()) self.outputDock.setWidget(outbox) self.addDockWidget(Qt.BottomDockWidgetArea, self.outputDock) self.connect(self.outputDock,SIGNAL('visibilityChanged(bool)'),self.updateDock) #redRLog.setOutputWindow(self.printOutput) redRLog.setOutputManager('dock', self.dockOutputManger) ####################### #####Output Manager#### ####################### # self.output = redROutput.OutputWindow(self) # redRLog.setOutputManager('window', self.output.outputManager) ################### #Register Widgets## ################### self.widgetRegistry = redRObjects.widgetRegistry() # the widget registry has been created print 'Register widgets' import redRGUI redRGUI.registerQTWidgets() # signals.registerRedRSignals() ################### #Main Cavas######## ################### splashWindow.showMessage(_("Main Cavas"), Qt.AlignHCenter + Qt.AlignBottom) self.schema = orngDoc.SchemaDoc(self) self.setCentralWidget(self.schema) self.schema.setFocus() ################### #Toolbar and Menu## ################### splashWindow.showMessage(_("Creating Menu and Toolbar"), Qt.AlignHCenter + Qt.AlignBottom) self.toolbar = self.addToolBar(_("Toolbar")) self.toolbarFunctions = redRCanvasToolbar.redRCanvasToolbarandMenu(self,self.toolbar) self.toolbarFunctions.updateStyle() ###################### #Create Widgets Dock## ###################### self.widgetDock = QDockWidget(_('Widgets')) self.widgetDock.setObjectName('widgetDock') self.widgetDockBox = redRwidgetBox(None) self.widgetDockBox.setMinimumWidth(200) self.widgetDock.setWidget(self.widgetDockBox) self.addDockWidget(Qt.LeftDockWidgetArea, self.widgetDock) self.connect(self.widgetDock,SIGNAL('visibilityChanged(bool)'),self.updateDock) self.widgetsToolBar = redRWidgetsTree.WidgetTree(self.widgetDockBox, self, self.widgetRegistry) self.suggestButtonsList = redRWidgetsTree.widgetSuggestions(self.widgetDockBox,self) # self.createWidgetsToolbar() # also creates the categories popup # self.toolbar.addWidget(self.widgetsToolBar.widgetSuggestEdit) ## kind of a hack but there you are. ################### #####Status Bar#### ################### splashWindow.showMessage(_("Creating Status Bar"), Qt.AlignHCenter + Qt.AlignBottom) self.statusBar = QStatusBar() self.statusBar.setSizeGripEnabled(False) self.setStatusBar(self.statusBar) docBox = redRwidgetBox(None,orientation='horizontal',spacing=4) self.showWidgetToolbar = redRbutton(docBox, '',toggleButton=True, icon=redRStyle.defaultWidgetIcon, toolTip=_('Widget Tree'), callback = self.updateDockState) self.showROutputButton = redRbutton(docBox, '',toggleButton=True, icon=redRStyle.canvasIcon, toolTip=_('Log'), callback = self.updateDockState) self.showNotesButton = redRbutton(docBox, '',toggleButton=True, icon=redRStyle.notesIcon, toolTip=_('Notes'), callback = self.updateDockState) self.statusBar.addPermanentWidget(docBox) if 'dockState' in redREnviron.settings.keys() and 'widgetBox' in redREnviron.settings['dockState'].keys(): self.showNotesButton.setChecked(redREnviron.settings['dockState']['notesBox']) self.showROutputButton.setChecked(redREnviron.settings['dockState']['outputBox']) self.showWidgetToolbar.setChecked(redREnviron.settings['dockState']['widgetBox']) ################### ##Reports########## ################### splashWindow.showMessage(_("Creating Reports"), Qt.AlignHCenter + Qt.AlignBottom) self.reports = redRReports.reports(self,self.schema) ################### ##Update Manager### ################### # splashWindow.showMessage(_("Creating Update Manager"), Qt.AlignHCenter + Qt.AlignBottom) # self.updateManager = redRUpdateManager.updateManager(self) ######################## #Load Windows Settings## ######################## splashWindow.showMessage(_("Setting States"), Qt.AlignHCenter + Qt.AlignBottom) if 'windowState' in redREnviron.settings.keys(): self.restoreState(redREnviron.settings['windowState']) if 'geometry' in redREnviron.settings.keys(): self.restoreGeometry(redREnviron.settings['geometry']) if 'size' in redREnviron.settings.keys(): self.resize(redREnviron.settings['size']) else: # center window in the desktop # in newer versions of Qt we can also find the center of a primary screen # on multiheaded desktops width, height = redREnviron.settings.get("canvasWidth", 700), redREnviron.settings.get("canvasHeight", 600) desktop = app.desktop() deskH = desktop.screenGeometry(desktop.primaryScreen()).height() deskW = desktop.screenGeometry(desktop.primaryScreen()).width() h = max(0, deskH/2 - height/2) # if the window is too small, resize the window to desktop size w = max(0, deskW/2 - width/2) self.move(w,h+2) self.resize(width,height) if 'pos' in redREnviron.settings.keys(): self.move(redREnviron.settings['pos']) ######################### #Show Main Red-R window## ######################### self.show() redRSaveLoad.setCanvasDlg(self) redRObjects.setCanvasDlg(self) if splashWindow: splashWindow.hide() ######################### #First Load## ######################### try: if 'firstLoad' not in redREnviron.settings.keys(): redREnviron.settings['firstLoad'] = True if redREnviron.settings['firstLoad']: redRInitWizard.startSetupWizard() except: redRLog.log(redRLog.REDRCORE, redRLog.ERROR, redRLog.formatException()) pass ####################### #####packageManager#### ####################### self.packageManager = redRPackageManager.packageManager(self) if redREnviron.settings['checkForPackageUpdates'] and self.packageManager.updatesAvailable(auto=True): self.packageManager.exec_() print "Processing events" #qApp.processEvents() print "events processed"