def createDockWindows(self): animate = animationWidget.QAnimationView(self) self.dockAnimate = QtGui.QDockWidget(self) self.dockAnimate.setWidget(animate) self.dockAnimate.setWindowTitle("Animation") self.dockTemplate = DockTemplate(self) self.dockPlot = DockPlot(self) self.dockVariable = DockVariable(self) self.workspace = Workspace(self) self.varProp = VariableProperties(self) #self.workspace.addProject("Relative Humidity") #self.workspace.addProject("Total Cloudiness") #self.workspace.addProject("Temperature Anomaly") #self.workspace.addProject() self.dockCalculator = DockCalculator(self) self.plotProp = PlotProperties.instance(self) self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, self.workspace) self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, self.dockTemplate) self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, self.dockAnimate) #self.tabifyDockWidget(self.workspace, self.dockTemplate) self.tabifyDockWidget(self.dockTemplate, self.dockPlot) self.workspace.raise_() self.varProp.hide() self.plotProp.hide() self.dockAnimate.hide() self.addDockWidget(QtCore.Qt.RightDockWidgetArea, self.dockVariable) #self.addDockWidget(QtCore.Qt.RightDockWidgetArea, self.varProp) self.addDockWidget(QtCore.Qt.RightDockWidgetArea, self.dockCalculator) self.tabifyDockWidget(self.dockCalculator, self.plotProp)
def createDockWindows(self): animate = animationWidget.QAnimationView(self) self.dockAnimate = QtGui.QDockWidget(self) self.dockAnimate.setWidget(animate) self.dockAnimate.setWindowTitle("Animation") #self.dockTemplate = DockTemplate(self) self.dockPlot = DockPlot(self) self.dockVariable = DockVariable(self) self.workspace = Workspace(self) self.varProp = VariableProperties(self) #self.workspace.addProject("Relative Humidity") #self.workspace.addProject("Total Cloudiness") #self.workspace.addProject("Temperature Anomaly") #self.workspace.addProject() self.dockCalculator = DockCalculator(self) self.plotProp = PlotProperties.instance(self) self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, self.workspace) #self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, self.dockTemplate) self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, self.dockAnimate) #self.tabifyDockWidget(self.workspace, self.dockTemplate) self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, self.dockPlot) #self.tabifyDockWidget(self.dockTemplate, self.dockPlot) self.workspace.raise_() self.varProp.hide() self.plotProp.hide() self.dockAnimate.hide() self.addDockWidget(QtCore.Qt.RightDockWidgetArea, self.dockVariable) #self.addDockWidget(QtCore.Qt.RightDockWidgetArea, self.varProp) self.addDockWidget(QtCore.Qt.RightDockWidgetArea, self.dockCalculator) self.tabifyDockWidget(self.dockCalculator, self.plotProp) if 1: # For now only puts the diagnostics widget if the metrics module is present import metrics from gui.uvcdat.diagnosticsDockWidget import DiagnosticsDockWidget self.diagnosticsWidget = DiagnosticsDockWidget(self) self.diagnosticsWidget.hide() self.addDockWidget(QtCore.Qt.RightDockWidgetArea, self.diagnosticsWidget) self.tabifyDockWidget(self.plotProp, self.diagnosticsWidget)
def createDockWindows(self): animate = animationWidget.QAnimationView(self) self.dockAnimate = QtGui.QDockWidget(self) self.dockAnimate.setWidget(animate) self.dockAnimate.setWindowTitle("Animation") # self.dockTemplate = DockTemplate(self) self.dockPlot = DockPlot(self) self.dockVariable = DockVariable(self) self.workspace = Workspace(self) self.varProp = VariableProperties(self) # self.workspace.addProject("Relative Humidity") # self.workspace.addProject("Total Cloudiness") # self.workspace.addProject("Temperature Anomaly") # self.workspace.addProject() self.dockCalculator = DockCalculator(self) self.plotProp = PlotProperties.instance(self) self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, self.workspace) # self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, self.dockTemplate) self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, self.dockAnimate) # self.tabifyDockWidget(self.workspace, self.dockTemplate) self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, self.dockPlot) # self.tabifyDockWidget(self.dockTemplate, self.dockPlot) self.workspace.raise_() self.varProp.hide() self.plotProp.hide() self.dockAnimate.hide() self.addDockWidget(QtCore.Qt.RightDockWidgetArea, self.dockVariable) # self.addDockWidget(QtCore.Qt.RightDockWidgetArea, self.varProp) self.addDockWidget(QtCore.Qt.RightDockWidgetArea, self.dockCalculator) self.tabifyDockWidget(self.dockCalculator, self.plotProp) if 1: # For now only puts the diagnostics widget if the metrics module is present import metrics from gui.uvcdat.diagnosticsDockWidget import DiagnosticsDockWidget self.diagnosticsWidget = DiagnosticsDockWidget(self) self.diagnosticsWidget.hide() self.addDockWidget(QtCore.Qt.RightDockWidgetArea, self.diagnosticsWidget) self.tabifyDockWidget(self.plotProp, self.diagnosticsWidget)
def newVariable(self): varProp = VariableProperties(self) varProp.show()
class UVCDATMainWindow(QtGui.QMainWindow): def __init__(self, parent=None, customPath=None, styles=None): super(UVCDATMainWindow, self).__init__(parent) self.root = self self.ui = Ui_MainWindow() self.ui.setupUi(self) self.setDocumentMode(True) # init user options self.initCustomize(customPath, styles) self.root = self # self.tool_bar = mainToolbarWidget.QMainToolBarContainer(self) self.canvas = [] self.canvas.append(vcs.init()) self.colormapEditor = QColormapEditor(self) # Create the command recorder widget self.recorder = commandsRecorderWidget.QCommandsRecorderWidget(self) # Adds a shortcut to the record function self.record = self.recorder.record self.preferences = preferencesWidget.QPreferencesDialog(self) self.preferences.hide() self.cdmsCacheWidget = CdmsCacheWidget(self) # self.regridding = regriddingWidget.QRegriddingDialog(self) # self.regridding.hide() ########################################################### # Init Menu Widget ########################################################### self.mainMenu = mainMenuWidget.QMenuWidget(self) self.createDockWindows() self.createActions() self.updateMenuActions() self.embedSpreadsheet() self.connectSignals() self.resize(1150, 800) def initCustomize(self, customPath, styles): if customPath is None: customPath = os.path.join(os.environ["HOME"], ".uvcdat", "customizeUVCDAT.py") if os.path.exists(customPath): execfile(customPath, customizeUVCDAT.__dict__, customizeUVCDAT.__dict__) if styles is None: styles = customizeUVCDAT.appStyles icon = QtGui.QIcon(customizeUVCDAT.appIcon) self.setWindowIcon(icon) ## cdms2 setup section cdms2.axis.time_aliases += customizeUVCDAT.timeAliases cdms2.axis.level_aliases += customizeUVCDAT.levelAliases cdms2.axis.latitude_aliases += customizeUVCDAT.latitudeAliases cdms2.axis.longitude_aliases += customizeUVCDAT.longitudeAliases cdms2.setNetcdfShuffleFlag(customizeUVCDAT.ncShuffle) cdms2.setNetcdfDeflateFlag(customizeUVCDAT.ncDeflate) cdms2.setNetcdfDeflateLevelFlag(customizeUVCDAT.ncDeflateLevel) ## StylesSheet st = "" if isinstance(styles, str): st = styles elif isinstance(styles, dict): for k in styles.keys(): val = styles[k] if isinstance(val, QtGui.QColor): val = str(val.name()) st += "%s:%s; " % (k, val) if len(st) > 0: self.setStyleSheet(st) ########################################################### ########################################################### ## Prettyness ########################################################### ########################################################### # self.setGeometry(0,0, 1100,800) self.setWindowTitle("The Ultrascale Visualization Climate Data Analysis Tools - (UV-CDAT)") ## self.resize(1100,800) # self.setMinimumWidth(1100) self.main_window_placement() def main_window_placement(self): screen = QtGui.QDesktopWidget().screenGeometry() size = self.geometry() self.move((screen.width() - size.width()) / 4, (screen.height() - size.height()) / 5) def createDockWindows(self): animate = animationWidget.QAnimationView(self) self.dockAnimate = QtGui.QDockWidget(self) self.dockAnimate.setWidget(animate) self.dockAnimate.setWindowTitle("Animation") # self.dockTemplate = DockTemplate(self) self.dockPlot = DockPlot(self) self.dockVariable = DockVariable(self) self.workspace = Workspace(self) self.varProp = VariableProperties(self) # self.workspace.addProject("Relative Humidity") # self.workspace.addProject("Total Cloudiness") # self.workspace.addProject("Temperature Anomaly") # self.workspace.addProject() self.dockCalculator = DockCalculator(self) self.plotProp = PlotProperties.instance(self) self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, self.workspace) # self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, self.dockTemplate) self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, self.dockAnimate) # self.tabifyDockWidget(self.workspace, self.dockTemplate) self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, self.dockPlot) # self.tabifyDockWidget(self.dockTemplate, self.dockPlot) self.workspace.raise_() self.varProp.hide() self.plotProp.hide() self.dockAnimate.hide() self.addDockWidget(QtCore.Qt.RightDockWidgetArea, self.dockVariable) # self.addDockWidget(QtCore.Qt.RightDockWidgetArea, self.varProp) self.addDockWidget(QtCore.Qt.RightDockWidgetArea, self.dockCalculator) self.tabifyDockWidget(self.dockCalculator, self.plotProp) if 1: # For now only puts the diagnostics widget if the metrics module is present import metrics from gui.uvcdat.diagnosticsDockWidget import DiagnosticsDockWidget self.diagnosticsWidget = DiagnosticsDockWidget(self) self.diagnosticsWidget.hide() self.addDockWidget(QtCore.Qt.RightDockWidgetArea, self.diagnosticsWidget) self.tabifyDockWidget(self.plotProp, self.diagnosticsWidget) # except Exception,err: # print "import metrics section error:",err # pass def createActions(self): # Quit Action self.actionExit = QtGui.QAction("Quit", self, triggered=self.quit) # VisTrails Window self.showBuilderWindowAct = QtGui.QAction("Builder", self, triggered=self.showBuilderWindowActTriggered) self.showVistrailsConsoleAct = QtGui.QAction("Console", self, triggered=self.showVistrailsConsoleActTriggered) # About Message self.showAboutMessageAct = QtGui.QAction("About UV-CDAT...", self, triggered=self.showAboutMessageActTriggered) def updateMenuActions(self): # menu File Actions self.ui.menuFile.addAction(self.workspace.btnNewProject) self.ui.menuFile.addAction(self.workspace.btnOpenProject) self.ui.menuFile.addSeparator() self.ui.menuFile.addAction(self.workspace.btnCloseProject) self.ui.menuFile.addSeparator() self.ui.menuFile.addAction(self.workspace.btnSaveProject) self.ui.menuFile.addAction(self.workspace.btnSaveProjectAs) self.ui.menuFile.addSeparator() self.ui.menuFile.addAction(self.actionExit) # menu View Actions self.ui.menuView.addAction(self.workspace.toggleViewAction()) # self.ui.menuView.addAction(self.dockTemplate.toggleViewAction()) self.ui.menuView.addAction(self.dockPlot.toggleViewAction()) self.ui.menuView.addAction(self.dockVariable.toggleViewAction()) self.ui.menuView.addAction(self.dockCalculator.toggleViewAction()) self.ui.menuView.addAction(self.plotProp.toggleViewAction()) # VisTrails Menu self.ui.menuVisTrails.addAction(self.showBuilderWindowAct) self.ui.menuVisTrails.addAction(self.showVistrailsConsoleAct) # About message self.ui.menuHelp.addAction(self.showAboutMessageAct) def showBuilderWindowActTriggered(self): from gui.vistrails_window import _app _app.show() _app.raise_() _app.qactions["history"].trigger() _app.get_current_tab().zoomToFit() _app.qactions["pipeline"].trigger() _app.get_current_tab().zoomToFit() # self.get_current_project_controller().re_layout_workflow() def showVistrailsConsoleActTriggered(self): from gui.shell import QShellDialog QShellDialog.instance().set_visible(True) def showAboutMessageActTriggered(self): import core.uvcdat import core.system class About(QtGui.QLabel): def mousePressEvent(self, e): self.emit(QtCore.SIGNAL("clicked()")) dlg = QtGui.QDialog(self, QtCore.Qt.FramelessWindowHint) layout = QtGui.QVBoxLayout() layout.setMargin(0) layout.setSpacing(0) bgimage = About(dlg) # The application disclaimer image pixmap = QtGui.QPixmap(core.system.vistrails_root_directory() + "/gui/uvcdat/resources/images/disclaimer.png") bgimage.setPixmap(pixmap) layout.addWidget(bgimage) dlg.setLayout(layout) text = '<font color="#105E99"><b>%s</b></font>' % core.uvcdat.short_about_string() version = About(text, dlg) version.setGeometry(11, 50, 450, 30) self.connect(bgimage, QtCore.SIGNAL("clicked()"), dlg, QtCore.SLOT("accept()")) self.connect(version, QtCore.SIGNAL("clicked()"), dlg, QtCore.SLOT("accept()")) dlg.setSizeGripEnabled(False) dlg.exec_() def connectSignals(self): self.connect(self.spreadsheetWindow.tabControllerStack, QtCore.SIGNAL("add_tab"), self.workspace.add_sheet_tab) self.connect( self.spreadsheetWindow.tabControllerStack, QtCore.SIGNAL("remove_tab"), self.workspace.remove_sheet_tab ) self.connect( self.spreadsheetWindow.tabControllerStack, QtCore.SIGNAL("change_tab_text"), self.workspace.change_tab_text ) def closeEvent(self, e): """ closeEvent(e: QCloseEvent) -> None Only hide the builder window """ if not self.quit(): e.ignore() def quit(self): # FIXME # ask to save projects print "quitting" if self.preferences.confirmB4Exit.isChecked(): # put here code to confirm exit pass if self.preferences.saveB4Exit.isChecked(): self.preferences.saveState() from gui.vistrails_window import _app _app._is_quitting = True if _app.close_all_vistrails(): # DAK: removing this call as it seems to cause a # RuntimeError with QVersionTreeScene.selectionChanged; # it also does not appear in the VisTrails code # _app.deleteLater() QtCore.QCoreApplication.quit() # In case the quit() failed (when Qt doesn't have the main # event loop), we have to return True still return True _app._is_quitting = False return False QtGui.QApplication.instance().quit() def showVariableProperties(self): varProp = VariableProperties.instance() varProp.show() def showPlotProperties(self): plotProp = PlotProperties.instance() plotProp.show() def embedSpreadsheet(self): self.spreadsheetWindow = spreadsheetController.findSpreadsheetWindow(show=False) self.setCentralWidget(self.spreadsheetWindow) self.spreadsheetWindow.setVisible(True) def cleanup(self): self.setCentralWidget(QtGui.QWidget()) self.spreadsheetWindow.setParent(None) def stick_defvar_into_main_dict(self, var): __main__.__dict__[var.id] = var def stick_main_dict_into_defvar(self, results=None): # First evaluate if there's any var in the result res = None if results is not None: tmp = __main__.__dict__[results] else: tmp = None added = [] remove = [] if isinstance(tmp, cdms2.tvariable.TransientVariable): __main__.__dict__[tmp.id] = tmp added.append(tmp.id) res = tmp.id elif tmp is not None: self.processList(tmp, added) if results is not None: del (__main__.__dict__[results]) for k in __main__.__dict__: if isinstance(__main__.__dict__[k], cdms2.tvariable.TransientVariable): if __main__.__dict__[k].id in added and k != __main__.__dict__[k].id: remove.append(__main__.__dict__[k].id) res = k if not k in remove: __main__.__dict__[k].id = k self.dockVariable.widget().addVariable(__main__.__dict__[k]) # # Send information to controller so the Variable can be reconstructed # # later. The best way is by emitting a signal to be processed by the # # main window. When this panel becomes a global panel, then we will do # # that. For now I will talk to the main window directly. # # from api import get_current_project_controller # from packages.uvcdat_cdms.init import CDMSVariable # controller = get_current_project_controller() # if controller.get_defined_variable(k) is None: # cdmsVar = CDMSVariable(filename=None, name=k) # controller.add_defined_variable(cdmsVar) for r in remove: del (__main__.__dict__[r]) return res def processList(self, myList, added): for v in myList: if isinstance(v, cdms2.tvariable.TransientVariable): __main__.__dict__[v.id] = v added.append(v.id) elif isinstance(v, (list, tuple)): self.processList(v, added) elif isinstance(v, dict): self.processList(dict.values(), added) return def get_current_project_controller(self): return self.workspace.get_current_project_controller() def get_project_controller_by_name(self, name): return self.workspace.get_project_controller_by_name(name) def link_registry(self): self.dockPlot.link_registry() def warning(self, msg): print "WARNING: %s" % msg if not get_vistrails_configuration().noDebugPopups: QtGui.QMessageBox.warning(self, "Warning", msg)
def showVariableProperties(self): varProp = VariableProperties.instance() varProp.show()
class UVCDATMainWindow(QtGui.QMainWindow): def __init__(self, parent=None, customPath=None, styles=None): super(UVCDATMainWindow, self).__init__(parent) self.root = self self.ui = Ui_MainWindow() self.ui.setupUi(self) self.setDocumentMode(True) #init user options self.initCustomize(customPath, styles) self.root = self #self.tool_bar = mainToolbarWidget.QMainToolBarContainer(self) self.canvas = [] self.canvas.append(vcs.init()) self.colormapEditor = QColormapEditor(self) # Create the command recorder widget self.recorder = commandsRecorderWidget.QCommandsRecorderWidget(self) #Adds a shortcut to the record function self.record = self.recorder.record self.preferences = preferencesWidget.QPreferencesDialog(self) self.preferences.hide() self.cdmsCacheWidget = CdmsCacheWidget(self) # self.regridding = regriddingWidget.QRegriddingDialog(self) # self.regridding.hide() ########################################################### # Init Menu Widget ########################################################### self.mainMenu = mainMenuWidget.QMenuWidget(self) self.createDockWindows() self.createActions() self.updateMenuActions() self.embedSpreadsheet() self.connectSignals() self.resize(1150, 800) def initCustomize(self, customPath, styles): if customPath is None: customPath = os.path.join(os.environ["HOME"], ".uvcdat", "customizeUVCDAT.py") if os.path.exists(customPath): execfile(customPath, customizeUVCDAT.__dict__, customizeUVCDAT.__dict__) if styles is None: styles = customizeUVCDAT.appStyles icon = QtGui.QIcon(customizeUVCDAT.appIcon) self.setWindowIcon(icon) ## cdms2 setup section cdms2.axis.time_aliases += customizeUVCDAT.timeAliases cdms2.axis.level_aliases += customizeUVCDAT.levelAliases cdms2.axis.latitude_aliases += customizeUVCDAT.latitudeAliases cdms2.axis.longitude_aliases += customizeUVCDAT.longitudeAliases cdms2.setNetcdfShuffleFlag(customizeUVCDAT.ncShuffle) cdms2.setNetcdfDeflateFlag(customizeUVCDAT.ncDeflate) cdms2.setNetcdfDeflateLevelFlag(customizeUVCDAT.ncDeflateLevel) ## StylesSheet st = "" if isinstance(styles, str): st = styles elif isinstance(styles, dict): for k in styles.keys(): val = styles[k] if isinstance(val, QtGui.QColor): val = str(val.name()) st += "%s:%s; " % (k, val) if len(st) > 0: self.setStyleSheet(st) ########################################################### ########################################################### ## Prettyness ########################################################### ########################################################### #self.setGeometry(0,0, 1100,800) self.setWindowTitle( 'The Ultrascale Visualization Climate Data Analysis Tools - (UV-CDAT)' ) ## self.resize(1100,800) #self.setMinimumWidth(1100) self.main_window_placement() def main_window_placement(self): screen = QtGui.QDesktopWidget().screenGeometry() size = self.geometry() self.move((screen.width() - size.width()) / 4, (screen.height() - size.height()) / 5) def createDockWindows(self): animate = animationWidget.QAnimationView(self) self.dockAnimate = QtGui.QDockWidget(self) self.dockAnimate.setWidget(animate) self.dockAnimate.setWindowTitle("Animation") #self.dockTemplate = DockTemplate(self) self.dockPlot = DockPlot(self) self.dockVariable = DockVariable(self) self.workspace = Workspace(self) self.varProp = VariableProperties(self) #self.workspace.addProject("Relative Humidity") #self.workspace.addProject("Total Cloudiness") #self.workspace.addProject("Temperature Anomaly") #self.workspace.addProject() self.dockCalculator = DockCalculator(self) self.plotProp = PlotProperties.instance(self) self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, self.workspace) #self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, self.dockTemplate) self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, self.dockAnimate) #self.tabifyDockWidget(self.workspace, self.dockTemplate) self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, self.dockPlot) #self.tabifyDockWidget(self.dockTemplate, self.dockPlot) self.workspace.raise_() self.varProp.hide() self.plotProp.hide() self.dockAnimate.hide() self.addDockWidget(QtCore.Qt.RightDockWidgetArea, self.dockVariable) #self.addDockWidget(QtCore.Qt.RightDockWidgetArea, self.varProp) self.addDockWidget(QtCore.Qt.RightDockWidgetArea, self.dockCalculator) self.tabifyDockWidget(self.dockCalculator, self.plotProp) if 1: # For now only puts the diagnostics widget if the metrics module is present import metrics from gui.uvcdat.diagnosticsDockWidget import DiagnosticsDockWidget self.diagnosticsWidget = DiagnosticsDockWidget(self) self.diagnosticsWidget.hide() self.addDockWidget(QtCore.Qt.RightDockWidgetArea, self.diagnosticsWidget) self.tabifyDockWidget(self.plotProp, self.diagnosticsWidget) #except Exception,err: # print "import metrics section error:",err # pass def createActions(self): # Quit Action self.actionExit = QtGui.QAction("Quit", self, triggered=self.quit) #VisTrails Window self.showBuilderWindowAct = QtGui.QAction( "Builder", self, triggered=self.showBuilderWindowActTriggered) self.showVistrailsConsoleAct = QtGui.QAction( "Console", self, triggered=self.showVistrailsConsoleActTriggered) #About Message self.showAboutMessageAct = QtGui.QAction( "About UV-CDAT...", self, triggered=self.showAboutMessageActTriggered) def updateMenuActions(self): #menu File Actions self.ui.menuFile.addAction(self.workspace.btnNewProject) self.ui.menuFile.addAction(self.workspace.btnOpenProject) self.ui.menuFile.addSeparator() self.ui.menuFile.addAction(self.workspace.btnCloseProject) self.ui.menuFile.addSeparator() self.ui.menuFile.addAction(self.workspace.btnSaveProject) self.ui.menuFile.addAction(self.workspace.btnSaveProjectAs) self.ui.menuFile.addSeparator() self.ui.menuFile.addAction(self.actionExit) #menu View Actions self.ui.menuView.addAction(self.workspace.toggleViewAction()) #self.ui.menuView.addAction(self.dockTemplate.toggleViewAction()) self.ui.menuView.addAction(self.dockPlot.toggleViewAction()) self.ui.menuView.addAction(self.dockVariable.toggleViewAction()) self.ui.menuView.addAction(self.dockCalculator.toggleViewAction()) self.ui.menuView.addAction(self.plotProp.toggleViewAction()) #VisTrails Menu self.ui.menuVisTrails.addAction(self.showBuilderWindowAct) self.ui.menuVisTrails.addAction(self.showVistrailsConsoleAct) #About message self.ui.menuHelp.addAction(self.showAboutMessageAct) def showBuilderWindowActTriggered(self): from gui.vistrails_window import _app _app.show() _app.raise_() _app.qactions['history'].trigger() _app.get_current_tab().zoomToFit() _app.qactions['pipeline'].trigger() _app.get_current_tab().zoomToFit() #self.get_current_project_controller().re_layout_workflow() def showVistrailsConsoleActTriggered(self): from gui.shell import QShellDialog QShellDialog.instance().set_visible(True) def showAboutMessageActTriggered(self): import core.uvcdat import core.system class About(QtGui.QLabel): def mousePressEvent(self, e): self.emit(QtCore.SIGNAL("clicked()")) dlg = QtGui.QDialog(self, QtCore.Qt.FramelessWindowHint) layout = QtGui.QVBoxLayout() layout.setMargin(0) layout.setSpacing(0) bgimage = About(dlg) #The application disclaimer image pixmap = QtGui.QPixmap(core.system.vistrails_root_directory() + '/gui/uvcdat/resources/images/disclaimer.png') bgimage.setPixmap(pixmap) layout.addWidget(bgimage) dlg.setLayout(layout) text = "<font color=\"#105E99\"><b>%s</b></font>" % \ core.uvcdat.short_about_string() version = About(text, dlg) version.setGeometry(11, 50, 450, 30) self.connect(bgimage, QtCore.SIGNAL('clicked()'), dlg, QtCore.SLOT('accept()')) self.connect(version, QtCore.SIGNAL('clicked()'), dlg, QtCore.SLOT('accept()')) dlg.setSizeGripEnabled(False) dlg.exec_() def connectSignals(self): self.connect(self.spreadsheetWindow.tabControllerStack, QtCore.SIGNAL("add_tab"), self.workspace.add_sheet_tab) self.connect(self.spreadsheetWindow.tabControllerStack, QtCore.SIGNAL("remove_tab"), self.workspace.remove_sheet_tab) self.connect(self.spreadsheetWindow.tabControllerStack, QtCore.SIGNAL("change_tab_text"), self.workspace.change_tab_text) def closeEvent(self, e): """ closeEvent(e: QCloseEvent) -> None Only hide the builder window """ if not self.quit(): e.ignore() def quit(self): #FIXME #ask to save projects print "quitting" if self.preferences.confirmB4Exit.isChecked(): # put here code to confirm exit pass if self.preferences.saveB4Exit.isChecked(): self.preferences.saveState() from gui.vistrails_window import _app _app._is_quitting = True if _app.close_all_vistrails(): # DAK: removing this call as it seems to cause a # RuntimeError with QVersionTreeScene.selectionChanged; # it also does not appear in the VisTrails code # _app.deleteLater() QtCore.QCoreApplication.quit() # In case the quit() failed (when Qt doesn't have the main # event loop), we have to return True still return True _app._is_quitting = False return False QtGui.QApplication.instance().quit() def showVariableProperties(self): varProp = VariableProperties.instance() varProp.show() def showPlotProperties(self): plotProp = PlotProperties.instance() plotProp.show() def embedSpreadsheet(self): self.spreadsheetWindow = spreadsheetController.findSpreadsheetWindow( show=False) self.setCentralWidget(self.spreadsheetWindow) self.spreadsheetWindow.setVisible(True) def cleanup(self): self.setCentralWidget(QtGui.QWidget()) self.spreadsheetWindow.setParent(None) def stick_defvar_into_main_dict(self, var): __main__.__dict__[var.id] = var def stick_main_dict_into_defvar(self, results=None): #First evaluate if there's any var in the result res = None if results is not None: tmp = __main__.__dict__[results] else: tmp = None added = [] remove = [] if isinstance(tmp, cdms2.tvariable.TransientVariable): __main__.__dict__[tmp.id] = tmp added.append(tmp.id) res = tmp.id elif tmp is not None: self.processList(tmp, added) if results is not None: del (__main__.__dict__[results]) for k in __main__.__dict__: if isinstance(__main__.__dict__[k], cdms2.tvariable.TransientVariable): if __main__.__dict__[ k].id in added and k != __main__.__dict__[k].id: remove.append(__main__.__dict__[k].id) res = k if not k in remove: __main__.__dict__[k].id = k self.dockVariable.widget().addVariable( __main__.__dict__[k]) # # Send information to controller so the Variable can be reconstructed # # later. The best way is by emitting a signal to be processed by the # # main window. When this panel becomes a global panel, then we will do # # that. For now I will talk to the main window directly. # # from api import get_current_project_controller # from packages.uvcdat_cdms.init import CDMSVariable # controller = get_current_project_controller() # if controller.get_defined_variable(k) is None: # cdmsVar = CDMSVariable(filename=None, name=k) # controller.add_defined_variable(cdmsVar) for r in remove: del (__main__.__dict__[r]) return res def processList(self, myList, added): for v in myList: if isinstance(v, cdms2.tvariable.TransientVariable): __main__.__dict__[v.id] = v added.append(v.id) elif isinstance(v, (list, tuple)): self.processList(v, added) elif isinstance(v, dict): self.processList(dict.values(), added) return def get_current_project_controller(self): return self.workspace.get_current_project_controller() def get_project_controller_by_name(self, name): return self.workspace.get_project_controller_by_name(name) def link_registry(self): self.dockPlot.link_registry() def warning(self, msg): print "WARNING: %s" % msg if not get_vistrails_configuration().noDebugPopups: QtGui.QMessageBox.warning(self, "Warning", msg)