def __init__(self, parent, id, dataSet): super(DataBrowser, self).__init__(parent) self.setupUi(self) self._simWorkbench = None self.dataService = None self.id = id self.data = dataSet self.optionsService = OptionsService() # create the custom selectable table header self.selectableHeader = SelectableTableHeader(Qt.Horizontal, self.tableView) self.selectableHeader.setNonSelectableIndexes([0]) self.selectableHeader.sectionSelectionChanged.connect( self.on_columnSelectionChanged) self.tableView.setHorizontalHeader(self.selectableHeader) # create the data model self.dataModel = DataBrowserModel(self, self.id, self.data) self.tableView.setModel(self.dataModel) self._setUpSelectionCheckBox() self._updateInfoPane() if not self.optionsService.getDebug(): self.groupBoxPerturbation.setVisible(False)
def __init__(self, args, parent=None): """ This initialization does a lot of stuff. :) * State variables are set up * Views are created and tied to UI parts (e.g. Docks) * Logging is set up * Services (StatusBar, Data, ...) are started * Necessary slots are connected """ super(BioParkinController, self).__init__(parent) #locale.setlocale(locale.LC_ALL, 'de_DE') # locale.setlocale(locale.LC_ALL, 'deu_deu') self.startTime = time.localtime() # set file logger self.rotatingFileHandler = logging.handlers.RotatingFileHandler(_LOG_FILENAME, maxBytes=1000000, backupCount=5) self.rotatingFileHandler.setFormatter(logging.Formatter("%(asctime)s | %(levelname)s | %(message)s")) self.logger = logging.getLogger() #gets root logger self.logger.addHandler(self.rotatingFileHandler) # Status bar logger self.statusBarLoggingHandler = StatusBarLoggingHandler() self.statusBarLoggingHandler.setLevel(logging.INFO) # only log on info level self.logger.addHandler(self.statusBarLoggingHandler) # set GUI logger # self.loggingView = QtLoggingView(self) # loggingHandler = QtLoggingHandler(self.loggingView) # loggingHandler.setLevel(logging.INFO) # self.logger.addHandler(loggingHandler) # filling log dock area (was set up in QtDesigner) # self._logDockWidget.setWidget(self.loggingView) # self._logDockWidget.hide() # parse command line arguments parser = OptionParser() parser.add_option("-d", "--debug", action="store_true", dest=OPTION_DEBUG, default=False, help="Include debugging information in console and file log") self.options, args = parser.parse_args() self.optionsService = OptionsService() self.optionsService.setDebug(self.options.debug) # set logging options if self.options.debug: self.logger.setLevel(logging.DEBUG) self.rotatingFileHandler.setLevel(logging.DEBUG) logging.info("Debug logging active.") else: self.logger.setLevel(logging.INFO) self.rotatingFileHandler.setLevel(logging.INFO) logging.info("Debug logging not active.") logging.debug("Starting BioPARKIN... %s" % self.startTime) ##### LOGGING ##### logging.info("BioPARKIN started (version %s)" % BioParkinController.__version__) logging.info("Command line arguments: %s" % args) logging.info("Python version: %s" % sys.version) # logging.info("SIP version: %s" % sip.SIP_VERSION_STR) #logging.info("PyQt version: %s" % PYQT_VERSION_STR) logging.info("PySide version: %s" % PySide.__version__) logging.info("libSBML version: %s" % LIBSBML_VERSION_STRING) logging.info("Matplotlib version: %s" % matplotlib.__version__) # logging.info("NetworkX version: %s" % networkx.__version__) logging.info("Python Image Library version: %s" % Image.VERSION) self.setupUi(self) self._mdiArea.hide() self.setWindowTitle("BioPARKIN v%s" % BioParkinController.__version__) # restore previous settings settings = QSettings() try: self.recentFiles = settings.value("RecentFiles", []) # handles the case if only one file is in the "list" in Linux (it's retrieved as unicode string in this case) if type(self.recentFiles) is str or type(self.recentFiles) is unicode: self.recentFiles = [self.recentFiles] logging.info("Recently opened files: %s" % self.recentFiles) except: logging.warning("Can't access list of recently opened files. Resetting the list.") self.recentFiles = [] self.updateFileMenu() self.aboutDialog = None geometry = settings.value("Geometry") if geometry: self.restoreGeometry(geometry) state = settings.value("MainWindow/State") if state: self.restoreState(state) self.ModelControllers = {} # self.SubWindowToModelControllers = {} # self.NetworkWindowCount = 0 # self.ActiveNetworkWindow = None self.ActiveModelController = None # self.networkSubWindows = {} self.integrator = None self.odeViewer = None self.ModelView = ModelView(self.masterDetailSplitter, self) self.ModelTreeView = SBMLEntityWidget(self.masterDetailSplitter) self.EntityTableView = EntityTableView(self.masterDetailSplitter) # self.masterDetailSplitter.widget(0).destroy() # logging.debug("1st Child of Splitter: %s" % self.masterDetailSplitter.widget(0)) self.mainWindowViews = [self.ModelTreeView, self.EntityTableView] #used to iterate over Views # set up Data Service and Data Viewer datahandling.parkinController = self self.dataService = DataService() # debugging############# BASE_PATH = reduce(lambda l, r: l + os.path.sep + r, os.path.dirname(os.path.realpath(__file__)).split(os.path.sep)[:-1]) #BASE_PATH = os.path.dirname(os.path.realpath(__file__)) # add ../../templates (relative to the file (!) and not to the CWD) dataPath = os.path.join(BASE_PATH, "data") ####################### self.SimulationWorkbenchController = SimulationWorkbenchController(parent=None, parkinController=self) self.mainTabWidget.addTab(self.SimulationWorkbenchController, "Workbench") # hook up status bar with progress service (that threads can connect to) self.statusBarService = StatusBarService(self.statusBar()) # first time, service is instantiated => give statusBar reference! # self.statusBarService.setStatusBar(self.statusBar()) self.progressBarService = ProgressBarService(self, self.statusBarService) self.statusBarLoggingHandler.setStatusBar(self.statusBarService) self.warningsService = WarningService.getInstance() self.warningsDialog = WarningsDialog(self, self.actionShow_Warnings, self.warningsService) # register signals # self.connect(self._mdiArea, SIGNAL("subWindowActivated(QMdiSubWindow*)"), self.on_networkwindow_raised) self.activeModelChanged.connect(self.on_activeModelChanged) # self.activeModelChanged.connect(self.selectNetworkView) # put into own method -> easier to put in own class later self.modelClosed.connect(self.on_modelClosed) # self.modelClosed.connect(self.closeNetworkWindow) # put into own method -> easier to put in own class later self.menuFile.aboutToShow.connect(self.updateFileMenu) # for debugging self.dummyThread = None try: # try to set correct taskbar icon in Windows 7 myappid = 'ZIB.BioPARKIN' # arbitrary string ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(myappid) except: pass