def onCheckPackageUpdate(self, e): from ifigure.mto.hg_support import hg_check_all_incoming_outgoing, hg_verify_all_repo broken_repo = hg_verify_all_repo(self) if len(broken_repo) != 0: txt = ['Some repo are broken\n'] + '\n'.join([' ' + str(o) for o in broken_repo]) ret=dialog.message(e.GetEventObject(), txt,'Broken Repo', 0) return updated_obj, newer_obj, both_obj = hg_check_all_incoming_outgoing(self) #app = wx.GetApp().TopWindow #app.proj_tree_viewer.update_widget()#_request2() labels = ['pull ' + obj.get_full_path()+ '(local:'+str(rev) + ' <<-- repo' + str(rev2) + ')' for obj, l, rev, rev2 in updated_obj] + ['push ' + obj.get_full_path()+ '(local:'+str(rev) + ' -->> repo: ' + str(rev2) + ')' for obj, l, rev, rev2 in newer_obj] if len(labels) == 0: ret=dialog.message(e.GetEventObject(), 'No update is found','No Update', 0) return #print labels, e.GetEventObject() from ifigure.utils.checkbox_panel import checkbox_panel value = checkbox_panel(e.GetEventObject(), col = 1, labels = labels, values = [True]*len(updated_obj) + [False]*len(newer_obj), message = 'Select packages to update', title = 'Package updage', blabel='Update') if value is None: return from ifigure.mto.hg_support import update_to_latest for i, v in enumerate(value): label, flag = v if flag: if i < len(updated_obj): new_rev, new_obj = update_to_latest(updated_obj[i][0]) dprint1(str(new_obj)+'was updated to ' + str(new_rev)) else: new_rev, url = update_to_latest(newer_obj[i-len(updated_obj)][0], rev = True) dprint1('repo('+url+') was updated to ' + str(new_rev)) #dprint1('skipping') e.Skip() # this will update widget
def Run(self, filename, d, odir): if not self.isReady(): return False print("starting tar....(save)") try: tarname = self.make_tar(filename, d) except PermissionError: message(wx.GetApp().TopWindow, 'Permission error', 'Error', 0) return False except: showtraceback(wx.GetApp().TopWindow, txt=traceback.format_exc()) return False print("starting tar.gz....(save)") MPTarzip.worker = Process(target=do_zip, args=(filename, tarname, d)) try: MPTarzip.worker.start() except: showtraceback(wx.GetApp().TopWindow, txt=traceback.format_exc()) return False self.odir = odir self.d = d wx.CallLater(100, self.CheckFinished) return True
def onClosePage(self, evt): # print("onClose") ipage = self.nb.GetSelection() label = str(self.nb.GetPageText(ipage)) if label.startswith('*'): label = label[1:] mods = [self.nb.GetPage(x).GetModify() for x in range(self.nb.GetPageCount())] del mods[ipage] if str(label) in self._rvars: ret = dialog.message(self, '"'+label+'"' + " cannot deleted for current plot type\n(Leave it empty, if you don't need it)", 'Error', 0) evt.Veto() return npage = self.nb.GetPageCount() if npage == 1 or npage == 0: ret = dialog.message(self, '"'+label+'"' + " cannot deleted since this is the last page.", 'Error', 0) evt.Veto() return else: ret = dialog.message(self, 'Do you want to delete "'+label+'"', 'Error', 2) if ret != 'ok': evt.Veto() return # if label == 'script.py' or label == '*script.py': # fmds = self.figmds() # if fmds is not None: # if (fmds.has_owndir() and # fmds.hasvar('path')): # fname = os.path.join(fmds.owndir(), fmds.getvar('path')) # if os.path.exists(fname): # os.remove(fname) # fmds.delvar('pathmode') # fmds.delvar('path') self.data = None # print label if str(label) == 'script.py': self.bt_script.Enable(True) wx.CallAfter(self._set_save_point, mods)
def onSubmit(self, evt): self.value = self.elp.GetValue() if (self.value[6].strip() == '' or not any([x[1] for x in self.value[7]])): from ifigure.widgets.dialog import message message( self, title="Error", message="Enter job description and select at least one keyword" ) return self.EndModal(wx.ID_OK)
def onCheckPackageUpdate(self, e): from ifigure.mto.hg_support import hg_check_all_incoming_outgoing, hg_verify_all_repo broken_repo = hg_verify_all_repo(self) if len(broken_repo) != 0: txt = ['Some repo are broken\n'] + '\n'.join( [' ' + str(o) for o in broken_repo]) ret = dialog.message(e.GetEventObject(), txt, 'Broken Repo', 0) return updated_obj, newer_obj, both_obj = hg_check_all_incoming_outgoing(self) #app = wx.GetApp().TopWindow #app.proj_tree_viewer.update_widget()#_request2() labels = [ 'pull ' + obj.get_full_path() + '(local:' + str(rev) + ' <<-- repo' + str(rev2) + ')' for obj, l, rev, rev2 in updated_obj ] + [ 'push ' + obj.get_full_path() + '(local:' + str(rev) + ' -->> repo: ' + str(rev2) + ')' for obj, l, rev, rev2 in newer_obj ] if len(labels) == 0: ret = dialog.message(e.GetEventObject(), 'No update is found', 'No Update', 0) return #print labels, e.GetEventObject() from ifigure.utils.checkbox_panel import checkbox_panel value = checkbox_panel(e.GetEventObject(), col=1, labels=labels, values=[True] * len(updated_obj) + [False] * len(newer_obj), message='Select packages to update', title='Package updage', blabel='Update') if value is None: return from ifigure.mto.hg_support import update_to_latest for i, v in enumerate(value): label, flag = v if flag: if i < len(updated_obj): new_rev, new_obj = update_to_latest(updated_obj[i][0]) dprint1(str(new_obj) + 'was updated to ' + str(new_rev)) else: new_rev, url = update_to_latest( newer_obj[i - len(updated_obj)][0], rev=True) dprint1('repo(' + url + ') was updated to ' + str(new_rev)) #dprint1('skipping') e.Skip() # this will update widget
def onImportScriptFile(self, e=None, file=None): from ifigure.utils.addon_utils import onLoadFile ret = onLoadFile(self, message="Enter script file name", modename='pathmode', pathname='path', extname='.py', reject_loc=['wdir', 'owndir'], file=file, wildcard='*.py') if not ret: return file = self.path2fullpath() if self.getvar('pathmode') == 'owndir': newname = str(os.path.basename(file).split('.')[0]) self.rename(newname) else: self.load_script(file) # ifigure.events.SendFileSystemChangedEvent(self) # self.load_script(file) return file = dialog.read(None, message="Select script", wildcard='*.py') mode, path = FileHolder.fullpath2path(self, file) if (mode == 'wdir' or mode == 'owndir'): m = 'Import should import from somewhere outside project directory', ret = dialog.message(None, message=m, title='Import error') return self.import_script(file)
def onImportScriptFile(self, e=None, file = None): from ifigure.utils.addon_utils import onLoadFile ret = onLoadFile(self, message="Enter script file name", modename = 'pathmode', pathname = 'path', extname = '.py', reject_loc = ['wdir', 'owndir'], file = file, wildcard='*.py') if not ret: return file=self.path2fullpath() if self.getvar('pathmode') == 'owndir': newname = str(os.path.basename(file).split('.')[0]) self.rename(newname) else: self.load_script(file) # ifigure.events.SendFileSystemChangedEvent(self) # self.load_script(file) return file = dialog.read(None, message="Select script", wildcard='*.py') mode, path = FileHolder.fullpath2path(self, file) if (mode == 'wdir' or mode == 'owndir'): m = 'Import should import from somewhere outside project directory', ret=dialog.message(None, message=m, title='Import error') return self.import_script(file)
def onClosePage(self, evt): # print("onClose") ipage = self.nb.GetSelection() label = str(self.nb.GetPageText(ipage)) if label.startswith('*'): label = label[1:] mods = [self.nb.GetPage(x).GetModify() for x in range(self.nb.GetPageCount())] del mods[ipage] if str(label) in self._rvars: ret=dialog.message(self, '"'+label+'"' + " cannot deleted for current plot type\n(Leave it empty, if you don't need it)", 'Error', 0) evt.Veto() return npage = self.nb.GetPageCount() if npage == 1 or npage == 0: ret=dialog.message(self, '"'+label+'"' + " cannot deleted since this is the last page.", 'Error', 0) evt.Veto() return else: ret=dialog.message(self, 'Do you want to delete "'+label+'"', 'Error', 2) if ret != 'ok': evt.Veto() return # if label == 'script.py' or label == '*script.py': # fmds = self.figmds() # if fmds is not None: # if (fmds.has_owndir() and # fmds.hasvar('path')): # fname = os.path.join(fmds.owndir(), fmds.getvar('path')) # if os.path.exists(fname): # os.remove(fname) # fmds.delvar('pathmode') # fmds.delvar('path') self.data = None # print label if str(label) == 'script.py': self.bt_script.Enable(True) wx.CallAfter(self._set_save_point, mods)
def Debug(self, *args, **kargs): se = wx.GetApp().TopWindow.script_editor if not se.CheckDebuggerStatus(): ret=dialog.message(self, 'Debugger is running.','Please wait', 0) return self._script._debug = 2 se.GoDebugMode(self.path2fullpath(), enter = True) wx.CallAfter(self.Run, *args, **kargs)
def onImportModuleFile(self, e=None): file = dialog.read(None, message="Select Module", wildcard='*.py') mode, path = self.fullpath2path(file) if (mode == 'wdir' or mode == 'owndir'): m = 'Import should import from somewhere outside project directory', ret = dialog.message(None, message=m, title='Import error') return self.import_module(file)
def onDebug2(self, e): se = wx.GetApp().TopWindow.script_editor if not se.CheckDebuggerStatus(): ret=dialog.message(self, 'Debugger is running.','Please wait', 0) return self._script._debug = 2 se.GoDebugMode(self.path2fullpath(), enter = True) self.onRunFull(e, title = 'Debug run...')
def onDebug2(self, e): se = wx.GetApp().TopWindow.script_editor if not se.CheckDebuggerStatus(): ret = dialog.message(self, 'Debugger is running.', 'Please wait', 0) return self._script._debug = 2 se.GoDebugMode(self.path2fullpath(), enter=True) self.onRunFull(e, title='Debug run...')
def Debug(self, *args, **kargs): se = wx.GetApp().TopWindow.script_editor if not se.CheckDebuggerStatus(): ret = dialog.message(self, 'Debugger is running.', 'Please wait', 0) return self._script._debug = 2 se.GoDebugMode(self.path2fullpath(), enter=True) wx.CallAfter(self.Run, *args, **kargs)
def Toggle3D(self): asel = self.GetParent().axes_selection if asel is None: return a = asel() if a is not None: figobj = a.figobj if figobj is None: return if a.figobj.get_3d(): if sum([len(x._member) for x in figobj._zaxis]) != 0: dialog.message(self, 'panel has 3D plot', 'error') return figobj.set_3d(False) else: figobj.set_3d(True) # figobj.reset_artist() canvas = self.GetParent().canvas canvas.draw() self.GetParent().set_axes_selection(figobj._artists[0])
def OnExportToShell(self, evt): indices = self.tree.GetIndexOfItem(self.tree.GetSelection()) mm = self.model.GetItem(indices) import wx app = wx.GetApp().TopWindow app.shell.lvar[mm.name()] = mm app.shell.SendShellEnterEvent() ret = dialog.message(app, mm.name() + ' is exported', 'Export', 0)
def onImportModuleFile(self, e=None): file = dialog.read(None, message="Select Module", wildcard='*.py') mode, path=self.fullpath2path(file) if (mode == 'wdir' or mode == 'owndir'): m = 'Import should import from somewhere outside project directory', ret=dialog.message(None, message=m, title='Import error') return self.import_module(file)
def onExport(self, evt): import ifigure.widgets.dialog as dialog flags = self.model.export_flag dataset = self.model.dataset metadata = self.model.metadata path = self.filepicker.GetPath() try: hdf_data_export(data=dataset, metadata=metadata, export_flag=flags, filename=path, verbose=True) print('HDF export finished : ' + path) except: dialog.showtraceback(parent=self, txt='Failed to export HDF', title='Error during HDF export', traceback=traceback.format_exc()) dialog.message(parent=self, style=0, message='Export finished') # self.Close() evt.Skip()
def callback(parent, value, setting, gwparam): gs = gwparam.getvar('globalsets') gv = gwparam.getvar() if not '_flag' in gs: gs['_flag'] = [[], [], [], []] for m in range(4): for key in value[m][0]: if not key in gs: gs[key] = [None] * 4 gs[key][m] = value[m][0][key] gv['event'] = str(value[4][1]) gv['shot_global'] = str(value[4][5]) gv['use_shot_global'] = (value[4][6] == 'on') parent.book.setvar('global_tdi', str(value[4][2])) parent.book.setvar('global_tdi_event', str(value[4][3])) parent.book._use_global_tdi = value[4][4] == 'on' gv['global_choice'] = value[4][7] parent.mpanalysis = (value[4][8] == "on") if not value[5][1][0]: parent.book._parallel_page = False parent.book._parallel_shot = False parent.book._parallel_sec = False else: parent.book._parallel_page = True if not value[5][1][1][0][0]: parent.book._parallel_shot = False parent.book._parallel_sec = False else: parent.book._parallel_shot = True parent.book._parallel_sec = value[5][1][1][0][1][0] parent.book.setvar('mdsscript_main', value[5][2]) parent.book.setvar('mdsplus_server', str(value[4][0])) from ifigure.utils.setting_parser import iFigureSettingParser as SettingParser p = SettingParser() v = p.read_setting('mdsplus.default_mdsserver') if str(v['server']) != str(value[4][0]): ret = dialog.message( parent, '\n'.join([ 'Selected MDS+ server is different from your default setting', 'Do you want to use this server as your default server?' ]), 'MDS+ server setting', 4, icon=wx.ICON_QUESTION) # print ret if ret == 'yes': v['server'] = str(value[4][0]) p.write_setting('mdsplus.default_mdsserver', v)
def onAddScriptFromFile(self, e): file = dialog.read(None, message="Select script", wildcard='*.py') if file == '': e.Skip() return # this call is just import check.. from ifigure.mto.py_script import PyScript tmp_child=PyScript() idx=self.add_child('_tempraroy_script', tmp_child) mode, path = tmp_child.fullpath2path(file) if (mode == 'wdir' or mode == 'owndir'): m = 'Import should import from somewhere outside project directory' ret=dialog.message(None, message=m, title='Import error') return if not file.endswith('.py'): m = 'Script fils should be a .py file' ret=dialog.message(None, message=m, title='Import error') return name = os.path.basename(file)[:-3] from ifigure.widgets.dlg_fileimportmode import DlgFileimportmode copy, modes, copy_org = DlgFileimportmode(self, parent = e.GetEventObject()) if copy: newfile = os.path.join(self.owndir() , os.path.basename(file)) if not self.has_owndir(): self.mk_owndir() shutil.copyfile(file, newfile) file = newfile modes = ['owndir'] mode, path = tmp_child.fullpath2path(file, modes) tmp_child.destroy() self.onAddAbsScript(e, file=file, name=name) e.Skip()
def onClosePage(self, evt): print('onClose') ipage = self.nb.GetSelection() label = str(self.nb.GetPageText(ipage)) if label.startswith('*'): label = label[1:] mods = [ self.nb.GetPage(x).GetModify() for x in range(self.nb.GetPageCount()) ] del mods[ipage] if str(label) in self._rvars: ret = dialog.message( self, '"' + label + '"' + " cannot be deleted for current plot type\n(Leave it empty, if you don't need it)", 'Error', 0) evt.Veto() return npage = self.nb.GetPageCount() if npage == 1 or npage == 0: ret = dialog.message( None, '"' + label + '"' + " cannot be deleted since this is the last page.", 'Error', 0) evt.Veto() return else: ret = dialog.message(self, 'Do you want to delete "' + label + '"', 'Error', 2) if ret != 'ok': evt.Veto() return self.data = None if str(label) == 'script.py': self.bt_script.Enable(True) if self.cb is not None: v = self.elp2.GetValue() self.cb(v) wx.CallAfter(self._set_save_point, mods)
def setSetting(solver, value): app = solver.get_app() try: root = solver.get_root_parent() exec root._name + ' = root' if len(value[1].split()) != 0: a = eval(value[1]) if isinstance(a, PyModel): solver._model = weakref.proxy(a) else: dialog.message(app, 'Model should be PyModel', 'Error') solver._model = None if len(value[2].split()) != 0: b = eval(value[2]) if isinstance(b, PySol): solver._sol = weakref.proxy(b) else: dialog.message(app, 'Sol should be PySol', 'Error') solver._sol = None if len(value[3].split()) != 0: b = eval(value[3]) if isinstance(b, PyParam): solver._param = weakref.proxy(b) else: dialog.message(app, 'Parameter should be PyParam', 'Error') solver._param = None except Exception: logging.exception("Solver Setting Failed")
def onExport(self, evt): import ifigure.widgets.dialog as dialog flags = self.model.export_flag dataset = self.model.dataset metadata = self.model.metadata path = self.filepicker.GetPath() try: hdf_data_export(data = dataset, metadata = metadata, export_flag = flags, filename = path, verbose = True) print('HDF export finished : '+path) except: dialog.showtraceback(parent = self, txt='Failed to export HDF', title='Error during HDF export', traceback=traceback.format_exc()) dialog.message(parent = self, style = 0, message = 'Export finished') #self.Close() evt.Skip()
def onRun(self, e=None): if not self.is_valid_setting(): return if self._sol: ret = dialog.message(message="Solution folder exists. Do you want to erase it?\n (No: New Sol, Yes:Overwrite, Cancel:Stop)", style = 5) if ret == 'cancel': return if ret == 'yes': self._sol.destroy() ifigure.events.SendChangedEvent(self, wx.GetApp().TopWindow) self.init_sol() self.solver_script.Run() if e is not None: e.Skip() return
def onInitSol(self, e): if not cbook.ProxyAlive(self._model): ret = dialog.message(None, 'Set working model in setting panel', 'Model is not specified', ) return val = self.init_sol() # if not cbook.ProxyAlive(self._param): # ret=dialog.message(None, # 'global parameter is not specified and was not copied', # 'Warning: No global parameter copied') ifigure.events.SendChangedEvent(self, e.GetEventObject())
def callback(parent, value, setting, gwparam): gs = gwparam.getvar('globalsets') gv = gwparam.getvar() if not '_flag' in gs: gs['_flag'] = [[],[],[],[]] for m in range(4): for key in value[m][0].keys(): if not key in gs: gs[key] = [None]*4 gs[key][m] = value[m][0][key] gv['event'] = str(value[4][1]) gv['shot_global'] = str(value[4][5]) gv['use_shot_global'] = (value[4][6] == 'on') parent.book.setvar('global_tdi', str(value[4][2])) parent.book.setvar('global_tdi_event', str(value[4][3])) parent.book._use_global_tdi = value[4][4] == 'on' gv['global_choice'] = value[4][7] parent.mpanalysis = (value[4][8] == "on") if not value[5][1][0]: parent.book._parallel_page=False parent.book._parallel_shot=False parent.book._parallel_sec=False else: parent.book._parallel_page=True if not value[5][1][1][0][0]: parent.book._parallel_shot=False parent.book._parallel_sec=False else: parent.book._parallel_shot=True parent.book._parallel_sec=value[5][1][1][0][1][0] parent.book.setvar('mdsscript_main', value[5][2]) parent.book.setvar('mdsplus_server', str(value[4][0])) from ifigure.utils.setting_parser import iFigureSettingParser as SettingParser p = SettingParser() v = p.read_setting('mdsplus.default_mdsserver') if str(v['server']) != str(value[4][0]): ret=dialog.message(parent, '\n'.join(['Selected MDS+ server is different from your default setting', 'Do you want to use this server as your default server?']), 'MDS+ server setting', 4, icon=wx.ICON_QUESTION) # print ret if ret == 'yes': v['server'] = str(value[4][0]) p.write_setting('mdsplus.default_mdsserver', v)
def onInitSol(self, e): if not cbook.ProxyAlive(self._model): ret = dialog.message( None, 'Set working model in setting panel', 'Model is not specified', ) return val = self.init_sol() # if not cbook.ProxyAlive(self._param): # ret=dialog.message(None, # 'global parameter is not specified and was not copied', # 'Warning: No global parameter copied') ifigure.events.SendChangedEvent(self, e.GetEventObject())
def onExportFile(self, e): opath = self.path2fullpath('file_pathmode', 'file_path') file = dialog.write(None, defaultfile=opath, message="Enter file name") if file == '': return mode, path = self.fullpath2path(file) if (mode == 'wdir' or mode == 'owndir'): m = 'Export should export to somewhere outside project directory', ret = dialog.message(None, message=m, title='Import error') return shutil.copyfile(opath, file)
def onExportScriptFile(self, e): opath=self.path2fullpath() file = dialog.write(None, defaultfile=opath, message="Enter script file name", wildcard='*.py') if file == '': return mode, path=FileHolder.fullpath2path(self, file) if (mode == 'wdir' or mode == 'owndir'): m = 'Export should export to somewhere outside project directory', ret=dialog.message(None, message=m, title='Import error') return path = FileHolder.path2fullpath(self) shutil.copyfile(path, file)
def onExportFile(self, e): opath=self.path2fullpath('file_pathmode', 'file_path') file = dialog.write(None, defaultfile=opath, message="Enter file name") if file == '': return mode, path=self.fullpath2path(file) if (mode == 'wdir' or mode == 'owndir'): m = 'Export should export to somewhere outside project directory', ret=dialog.message(None, message=m, title='Import error') return shutil.copyfile(opath, file)
def onImportFile(self, e): ''' import file from outside project directory pathmode will be set to 'owndir' ''' file = dialog.read(None, message="Select file") if file == '': return mode, path=self.fullpath2path(file) if (mode == 'wdir' or mode == 'owndir'): m = 'Import should import from somewhere outside project directory', ret=dialog.message(None, message=m, title='Import error') return self.import_file(file)
def onExportScriptFile(self, e): opath = self.path2fullpath() file = dialog.write(None, defaultfile=opath, message="Enter script file name", wildcard='*.py') if file == '': return mode, path = FileHolder.fullpath2path(self, file) if (mode == 'wdir' or mode == 'owndir'): m = 'Export should export to somewhere outside project directory', ret = dialog.message(None, message=m, title='Import error') return path = FileHolder.path2fullpath(self) shutil.copyfile(path, file)
def onExportModuleFile(self, e=None): opath = self.path2fullpath() file = dialog.write(None, defaultfile=opath, message="Select script", wildcard='*.py') if file == '': return mode, path = self.fullpath2path(file) if (mode == 'wdir' or mode == 'owndir'): m = 'Export should export to somewhere outside project directory', ret = dialog.message(None, message=m, title='Import error') return shutil.copyfile(opath, file)
def onExportModuleFile(self, e=None): opath=self.path2fullpath() file = dialog.write(None, defaultfile=opath, message="Select script", wildcard='*.py') if file == '': return mode, path=self.fullpath2path(file) if (mode == 'wdir' or mode == 'owndir'): m = 'Export should export to somewhere outside project directory', ret=dialog.message(None, message=m, title='Import error') return shutil.copyfile(opath, file)
def onRun(self, evt): if not self.is_valid_setting(): return if self._sol: ret = dialog.message(message="Solution folder exists. Do you want to erase it?\n(No: New Sol, Yes:Overwrite, Cancel:Stop)", style = 5) if ret == 'cancel': return if ret == 'yes': self._sol.destroy() ifigure.events.SendChangedEvent(self, wx.GetApp().TopWindow) self.init_sol() sc=self.solver_script self._run_cases = [True]*len(self._pvalue) sc.setvar("task", 2) sc.do_run() sc.setvar("task", 2) if evt is not None: evt.Skip()
def onRun(self, e=None): if not self.is_valid_setting(): return if self._sol: ret = dialog.message( message= "Solution folder exists. Do you want to erase it?\n (No: New Sol, Yes:Overwrite, Cancel:Stop)", style=5) if ret == 'cancel': return if ret == 'yes': self._sol.destroy() ifigure.events.SendChangedEvent(self, wx.GetApp().TopWindow) self.init_sol() self.solver_script.Run() if e is not None: e.Skip() return
def onDelete(self, e): row=self.parent._startrow2 if row == -1:return gt=self.parent.grid.GetTable() obj=gt.GetTreeDict() name=(get_varlist(obj))[row] name = gt.get_row_name(row) ret = dialog.message(parent=self.parent.GetTopLevelParent(), message='Do you want to delete '+ name + '?', title= "Delete variable", style=4) if ret != 'yes': return obj.delvar(name) if hasattr(obj, '_local_vars'): if name in obj._local_vars: obj._local_vars.remove(name) gt.SetTreeDict(obj)
def onDelete(self, e): row = self.parent._startrow2 if row == -1: return gt = self.parent.grid.GetTable() obj = gt.GetTreeDict() name = (get_varlist(obj))[row] name = gt.get_row_name(row) ret = dialog.message(parent=self.parent.GetTopLevelParent(), message='Do you want to delete ' + name + '?', title="Delete variable", style=4) if ret != 'yes': return obj.delvar(name) if hasattr(obj, '_local_vars'): if name in obj._local_vars: obj._local_vars.remove(name) gt.SetTreeDict(obj)
def onRun(self, evt): if not self.is_valid_setting(): return if self._sol: ret = dialog.message( message= "Solution folder exists. Do you want to erase it?\n(No: New Sol, Yes:Overwrite, Cancel:Stop)", style=5) if ret == 'cancel': return if ret == 'yes': self._sol.destroy() ifigure.events.SendChangedEvent(self, wx.GetApp().TopWindow) self.init_sol() sc = self.solver_script self._run_cases = [True] * len(self._pvalue) sc.setvar("task", 2) sc.do_run() sc.setvar("task", 2) if evt is not None: evt.Skip()
def onClearMeshSq(self, evt): dlg = evt.GetEventObject().GetTopLevelParent() viewer = dlg.GetParent() engine = viewer.engine import ifigure.widgets.dialog as dialog ret = dialog.message( parent=dlg, message='Are you sure to delete all Mesh sequence', title='Mesh Sequence Delete', style=2) if ret == 'ok': dialog.showtraceback(parent=dlg, txt='Failed to generate meshing script', title='Error', traceback=traceback.format_exc()) for x in self.keys(): del self[x] dlg.tree.RefreshItems()
def onRename(self, evt): ret = dialog.message(wx.GetApp().TopWindow, 'Rename to this object is not implemented', 'Not Inmplemented', 0) return
def MDS_setting(parent, setting, gwparam, mds_server, thread_main): def make_gs_arr(gs, s): return [gs[key][s] for key in pkeys] gs = gwparam.getvar('globalsets') gv = gwparam.getvar() tab = ['Set1', 'Set2', 'Set3', 'Set4','config', 'more'] list1 = [[None, make_gs_arr(gs, 0), 118, None]] list2 = [[None, make_gs_arr(gs, 1), 118, None]] list3 = [[None, make_gs_arr(gs, 2), 118, None]] list4 = [[None, make_gs_arr(gs, 3), 118, None]] txt = "on" if parent.mpanalysis else "off" txt2 = "on" if gv['use_shot_global'] else "off" txt7 = "on" if parent.init_beginning else "off" txt6 = "on" if parent.init_sec else "off" txt5 = "on" if parent.init_page else "off" list5 = [["MDSconnect", mds_server, 204, None], ["Update", gv['event'], 0, None], ["Common vars", gv['shot_global'], 0, None], ["Use common vars", txt2, 1, {"values":["on", "off"]}], ["Global setting", gv['global_choice'], 21, None], ["Multipage mode", txt, 1, {"values":["on", "off"]}], # ["Color Order", gv['color_order'], 22, {}],] ] tmp2= [[None, parent.parallel_sec, 3, {"text":'Parallelize Panels', "noindent":True}],] tmp = [[None, (parent.parallel_shot, [parent.parallel_sec]), 27, ({"text":'Parallelize Pages'}, {"elp": tmp2})]] list6 = [[None,"MDSplus session parallelization", 102, None], [None, (parent.parallel_page, [(parent.parallel_shot, [parent.parallel_sec])]), 27, ({"text":'Parallelize Shots', "space":15},{"elp":tmp})], #["At session start",txt7, 1, {"values":["on", "off"]}], #["At every page", txt5, 1, {"values":["on", "off"]}], #["At every panel", txt6, 1, {"values":["on", "off"]}], [None, thread_main, 3, {"text":"Run python script in main thread", "noindent":None }], [None, "(!) MDS+ connection is initialized when opening new tree", 102, None],] tip1 = None tip2 = None tip3 = None tip4 = None tip5 = ['MDSplus server and default Tree', 'Update event', 'MDS command called at the begining of page', 'MDS command called at the begining of section', 'Global setting selection for shots', 'Use the same shot numbers for all pages. (shot numbers after semi-colon are ignored)',] tip6 = [ None, 'Parallelization of MDS session', None, #'Initialize global/local variables when analysis loop starts', #'Initialize global/local variables when analyzing a new panel', #'Initialize global/local variables when analyzing a new page', None, ] l = [list1, list2, list3, list4, list5, list6] tip= [tip1, tip2, tip3, tip4, tip5, tip6] value = DialogEditListTab(tab, l, modal=False,tip=tip, parent=parent, title = 'Global Setting', style = wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER) if value[0]: for m in range(4): for i, v in enumerate(value[1][m][0]): gs[pkeys[i]][m] = str(v[1]) gv['event'] = str(value[1][4][1]) gv['shot_global'] = str(value[1][4][2]) gv['use_shot_global'] = (value[1][4][3] == 'on') gv['global_choice'] = value[1][4][4] parent.mpanalysis = (value[1][4][5] == "on") # gv['color_order'] = value[1][4][5] # parent.init_beginning = (value[1][5][3] == "on") # parent.init_page = (value[1][5][4] == "on") # parent.init_sec = (value[1][5][5] == "on") if not value[1][5][1][0]: parent.parallel_page=False parent.parallel_shot=False parent.parallel_sec=False else: parent.parallel_page=True if not value[1][5][1][1][0][0]: parent.parallel_shot=False parent.parallel_sec=False else: parent.parallel_shot=True parent.parallel_sec=value[1][5][1][1][0][1][0] parent.book.setvar('mdsscript_main', value[1][5][2]) parent.book.setvar('mdsplus_server', str(value[1][4][0])) from ifigure.utils.setting_parser import iFigureSettingParser as SettingParser p = SettingParser() v = p.read_setting('mdsplus.default_mdsserver') if str(v['server']) != str(value[1][4][0]): ret=dialog.message(parent, '\n'.join(['Selected MDS+ server is different from your default setting', 'Do you want to use this server as your default server?']), 'MDS+ server setting', 2, icon=wx.ICON_QUESTION) print(ret) if ret == 'ok': v['server'] = str(value[1][4][0]) p.write_setting('mdsplus.default_mdsserver', v) return value
def MDS_setting(parent, setting, gwparam, mds_server, thread_main): def make_gs_arr(gs, s): return [gs[key][s] for key in pkeys] gs = gwparam.getvar('globalsets') gv = gwparam.getvar() tab = ['Set1', 'Set2', 'Set3', 'Set4', 'config', 'more'] list1 = [[None, make_gs_arr(gs, 0), 118, None]] list2 = [[None, make_gs_arr(gs, 1), 118, None]] list3 = [[None, make_gs_arr(gs, 2), 118, None]] list4 = [[None, make_gs_arr(gs, 3), 118, None]] txt = "on" if parent.mpanalysis else "off" txt2 = "on" if gv['use_shot_global'] else "off" txt7 = "on" if parent.init_beginning else "off" txt6 = "on" if parent.init_sec else "off" txt5 = "on" if parent.init_page else "off" list5 = [ ["MDSconnect", mds_server, 204, None], ["Update", gv['event'], 0, None], ["Common vars", gv['shot_global'], 0, None], ["Use common vars", txt2, 1, { "values": ["on", "off"] }], ["Global setting", gv['global_choice'], 21, None], ["Multipage mode", txt, 1, { "values": ["on", "off"] }], # ["Color Order", gv['color_order'], 22, {}],] ] tmp2 = [ [ None, parent.parallel_sec, 3, { "text": 'Parallelize Panels', "noindent": True } ], ] tmp = [[ None, (parent.parallel_shot, [parent.parallel_sec]), 27, ({ "text": 'Parallelize Pages' }, { "elp": tmp2 }) ]] list6 = [ [None, "MDSplus session parallelization", 102, None], [ None, (parent.parallel_page, [(parent.parallel_shot, [parent.parallel_sec])]), 27, ({ "text": 'Parallelize Shots', "space": 15 }, { "elp": tmp }) ], #["At session start",txt7, 1, {"values":["on", "off"]}], #["At every page", txt5, 1, {"values":["on", "off"]}], #["At every panel", txt6, 1, {"values":["on", "off"]}], [ None, thread_main, 3, { "text": "Run python script in main thread", "noindent": None } ], [ None, "(!) MDS+ connection is initialized when opening new tree", 102, None ], ] tip1 = None tip2 = None tip3 = None tip4 = None tip5 = [ 'MDSplus server and default Tree', 'Update event', 'MDS command called at the begining of page', 'MDS command called at the begining of section', 'Global setting selection for shots', 'Use the same shot numbers for all pages. (shot numbers after semi-colon are ignored)', ] tip6 = [ None, 'Parallelization of MDS session', None, #'Initialize global/local variables when analysis loop starts', #'Initialize global/local variables when analyzing a new panel', #'Initialize global/local variables when analyzing a new page', None, ] l = [list1, list2, list3, list4, list5, list6] tip = [tip1, tip2, tip3, tip4, tip5, tip6] value = DialogEditListTab(tab, l, modal=False, tip=tip, parent=parent, title='Global Setting', style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER) if value[0]: for m in range(4): for i, v in enumerate(value[1][m][0]): gs[pkeys[i]][m] = str(v[1]) gv['event'] = str(value[1][4][1]) gv['shot_global'] = str(value[1][4][2]) gv['use_shot_global'] = (value[1][4][3] == 'on') gv['global_choice'] = value[1][4][4] parent.mpanalysis = (value[1][4][5] == "on") # gv['color_order'] = value[1][4][5] # parent.init_beginning = (value[1][5][3] == "on") # parent.init_page = (value[1][5][4] == "on") # parent.init_sec = (value[1][5][5] == "on") if not value[1][5][1][0]: parent.parallel_page = False parent.parallel_shot = False parent.parallel_sec = False else: parent.parallel_page = True if not value[1][5][1][1][0][0]: parent.parallel_shot = False parent.parallel_sec = False else: parent.parallel_shot = True parent.parallel_sec = value[1][5][1][1][0][1][0] parent.book.setvar('mdsscript_main', value[1][5][2]) parent.book.setvar('mdsplus_server', str(value[1][4][0])) from ifigure.utils.setting_parser import iFigureSettingParser as SettingParser p = SettingParser() v = p.read_setting('mdsplus.default_mdsserver') if str(v['server']) != str(value[1][4][0]): ret = dialog.message( parent, '\n'.join([ 'Selected MDS+ server is different from your default setting', 'Do you want to use this server as your default server?' ]), 'MDS+ server setting', 2, icon=wx.ICON_QUESTION) print(ret) if ret == 'ok': v['server'] = str(value[1][4][0]) p.write_setting('mdsplus.default_mdsserver', v) return value
def onHGupdate(self, evt=None, m=None): repo = hgapi.Repo(self.owndir()) app0 = wx.GetApp().TopWindow if m is None: latest = repo.revisions(slice(-1, -1))[0].rev ret, m = dialog.textentry(app0, "Enter revision #", "Mercurial Update", str(latest)) if not ret: return None status = repo.hg_status() for key in status: if key == '?': continue if len(status[key]) != 0: print(status) ret, m = dialog.message( app0, "Local repo status is not clean. \n(" + self.get_full_path() + ')', "Mercurial Update Error") self.hg_set_projtreeviewer_status(repo) # self._status = '!' return None repo.hg_update(long(m)) parent = self.get_parent() owndir = self.owndir() name = self._name ichild = self.get_ichild() url, root, path = self.get_mercurial_url() self.destroy(clean_owndir=False) del_old_treedata = False load_fpath = True fpath = os.path.join(owndir, ".tree_data_hg") if not os.path.exists(fpath): fpath = os.path.join(owndir, ".tree_data") if not os.path.exists(fpath): print((url, root, path)) td = handle_pure_file_repo(parent, name, owndir) load_fpath = False else: dlg = wx.MessageDialog( None, 'HG update succeeded but .tree_data_hg is not found.', 'Old style for HG repo', wx.OK) ret = dlg.ShowModal() dlg.Destroy() fpath = os.path.join(owndir, ".tree_data") del_old_treedata = True if load_fpath: fid = open(fpath, 'rb') td, olist, nlist = TreeDict().load(fid, keep_zorder=True) fid.close() parent.add_child(name, td, keep_zorder=True) parent.move_child(td.get_ichild(), ichild) if load_fpath: for obj in td.walk_tree(): obj.init_after_load(olist, nlist) if del_old_treedata: os.remove(fpath) if url is not None: td.set_mercurial_url(root, path) if evt is not None: # evt.GetEventObject().update_widget_request2() ifigure.events.SendFileSystemChangedEvent(parent, reload=True) evt.Skip() return td
def onHGupdate(self, evt=None, m=None): repo = hgapi.Repo(self.owndir()) app0 = wx.GetApp().TopWindow if m is None: latest = repo.revisions(slice(-1,-1))[0].rev ret, m = dialog.textentry(app0, "Enter revision #", "Mercurial Update", str(latest)) if not ret: return None status = repo.hg_status() for key in status: if key == '?': continue if len(status[key]) != 0: print(status) ret, m = dialog.message(app0, "Local repo status is not clean. \n(" + self.get_full_path()+')', "Mercurial Update Error") self.hg_set_projtreeviewer_status(repo) # self._status = '!' return None repo.hg_update(long(m)) parent = self.get_parent() owndir = self.owndir() name = self._name ichild = self.get_ichild() url, root, path = self.get_mercurial_url() self.destroy(clean_owndir=False) del_old_treedata = False load_fpath = True fpath=os.path.join(owndir, ".tree_data_hg") if not os.path.exists(fpath): fpath=os.path.join(owndir, ".tree_data") if not os.path.exists(fpath): print((url, root, path)) td = handle_pure_file_repo(parent, name, owndir) load_fpath = False else: dlg=wx.MessageDialog(None, 'HG update succeeded but .tree_data_hg is not found.', 'Old style for HG repo', wx.OK) ret=dlg.ShowModal() dlg.Destroy() fpath=os.path.join(owndir, ".tree_data") del_old_treedata = True if load_fpath: fid= open(fpath, 'rb') td, olist, nlist = TreeDict().load(fid, keep_zorder=True) fid.close() parent.add_child(name, td, keep_zorder = True) parent.move_child(td.get_ichild(), ichild) if load_fpath: for obj in td.walk_tree(): obj.init_after_load(olist, nlist) if del_old_treedata: os.remove(fpath) if url is not None: td.set_mercurial_url(root, path) if evt is not None: # evt.GetEventObject().update_widget_request2() ifigure.events.SendFileSystemChangedEvent(parent, reload = True) evt.Skip() return td