def onSave(self, event=None): outfile = FileSave(self, 'Save Instrument File As', wildcard=EIN_WILDCARD, default_file=self.dbname) # save current tab/instrument mapping fulldbname = os.path.abspath(self.dbname) if outfile not in (None, self.dbname, fulldbname): self.db.close() try: shutil.copy(self.dbname, outfile) except shutil.Error: pass time.sleep(1.0) self.dbname = outfile self.config.set_current_db(outfile) self.config.write() self.db = InstrumentDB(outfile) # set current tabs to the new db insts = [(i, self.nb.GetPageText(i)) for i in range(self.nb.GetPageCount())] for nbpage, name in insts: self.nb.GetPage(nbpage).db = self.db self.nb.GetPage(nbpage).inst = self.db.get_instrument(name) self.write_message("Saved Instrument File: %s" % outfile)
def connect_db(self, dbname=None, new=False): """connects to a db, possibly creating a new one""" if dbname is None: filelist = self.config.get_dblist() if new: filelist = None dlg = ConnectDialog(filelist=filelist) dlg.Raise() if dlg.ShowModal() == wx.ID_OK: dbname = dlg.filebrowser.GetValue() if not dbname.endswith('.ein'): dbname = "%s.ein" % dbname else: return None, dbname dlg.Destroy() db = InstrumentDB() if isInstrumentDB(dbname): db.connect(dbname) set_hostpid = True if not db.check_hostpid(): hostname = db.get_info('host_name') pid = db.get_info('process_id') ret = popup(None, FILE_IN_USE_MSG % (os.path.abspath(dbname), hostname, pid), 'Database in use', style=wx.YES_NO | wx.ICON_EXCLAMATION) set_hostpid = (ret != wx.ID_YES) if set_hostpid: db.set_hostpid() else: db.create_newdb(dbname, connect=True) self.config.set_current_db(dbname) return db, dbname