def onSettingList(solver): app = wx.GetApp().TopWindow model = '' if cbook.ProxyAlive(solver._model): model = solver._model.get_full_path() else: solver._model = None sol = '' if cbook.ProxyAlive(solver._sol): sol = solver._sol.get_full_path() else: solver._sol = None param = '' if cbook.ProxyAlive(solver._param): param = solver._param.get_full_path() else: solver._param = None list = [ ["", "Solver Setting", 2], ["Model", model, 0], ["Solution", sol, 0], ["Global", param, 0], ] return list
def save_data2(self, data): def get_right_path(self, obj): if self.isdescendant(obj): return self.get_td_path(obj) else: return self.get_td_path(obj, True) h2 = {} # if cbook.ProxyAlive(self._psetting): h2["isetting"]=self._psetting.id # if cbook.ProxyAlive(self._pmodel): h2["imodel"]=self._pmodel.id # if cbook.ProxyAlive(self._psolver): h2["isolver"]=self._psolver.id # if cbook.ProxyAlive(self._pbook): h2["ibook"]=self._pbook.id # if cbook.ProxyAlive(self._psol): h2["isol"]=self._psol.id if cbook.ProxyAlive(self._psetting): h2["isetting_path"] = get_right_path(self, self._psetting) if cbook.ProxyAlive(self._pmodel): h2["imodel_path"] = get_right_path(self, self._pmodel) if cbook.ProxyAlive(self._psolver): h2["isolver_path"] = get_right_path(self, self._psolver) if cbook.ProxyAlive(self._pbook): h2["ibook_path"] = get_right_path(self, self._pbook) if cbook.ProxyAlive(self._psol): h2["isol_path"] = get_right_path(self, self._psol) data['ProjectTop'] = (1, h2) return data
def onSetting(self, e): id = e.GetEventObject() app = id.GetTopLevelParent() setting = '' model = '' solver = '' sol = '' book = '' if cbook.ProxyAlive(self._psetting): setting = self._psetting.get_full_path() if cbook.ProxyAlive(self._pmodel): model = self._pmodel.get_full_path() if cbook.ProxyAlive(self._psolver): solver = self._psolver.get_full_path() if cbook.ProxyAlive(self._psol): sol = self._psol.get_full_path() if cbook.ProxyAlive(self._pbook): book = self._pbook.get_full_path() list = [["", "Project Setting", 2], ["Setting", setting, 0], ["Model", model, 0], ["Solver", solver, 0], ["Solution", sol, 0], ["Book", book, 0]] app.proj_tree_viewer.OpenPanel(list, self, 'setSetting')
def save_data(self, fid): h2 = {} if cbook.ProxyAlive(self._psetting): h2["isetting"] = self._psetting.id if cbook.ProxyAlive(self._pmodel): h2["imodel"] = self._pmodel.id if cbook.ProxyAlive(self._psolver): h2["isolver"] = self._psolver.id if cbook.ProxyAlive(self._pbook): h2["ibook"] = self._pbook.id if cbook.ProxyAlive(self._psol): h2["isol"] = self._psol.id pickle.dump(h2, fid)
def init_sol(solver, sol=None, mode=0, tmpdir=None): ''' mode = 0: standard mode mode = 1: mode 0 + backup tmpdir and return it to caller mode = 2: read data from tmpdir ''' # cleaning folder if not cbook.ProxyAlive(solver._model): print("can not initialize solution folder. model is not spedified") solver._model = None return False if sol is None: if cbook.ProxyAlive(solver._sol): sol = solver._sol if sol is None: print("can not initialize solution folder. sol is not spedified") return False for name, child in sol.get_children(): child.destroy() root = solver.get_root_parent() wdir = root.getvar('wdir') if mode != 2: fpath = os.path.join(wdir, '.tmp' + str(solver.id)) if os.path.exists(fpath): os.remove(fpath) rm = solver._model.get_root_model() scripts = [obj for obj in rm.walk_tree() if isinstance(obj, PyScript)] for s in scripts: s._save_link = True flag, tmpdir = rm.save_subtree(fpath, maketar=False) for s in scripts: s._save_link = False else: shutil.copytree(tmpdir + '_bk', tmpdir) if mode == 1: shutil.copytree(tmpdir, tmpdir + '_bk') sol.load_subtree(tmpdir, usetar=False) sol.setvar('source_model', solver._model.get_root_model().get_full_path()) # os.remove(fpath) if not sol.has_child('parameters'): sol.add_child('parameters', PyParam()) if cbook.ProxyAlive(solver._param): # psetting = root.setting.parameters param = solver._param vars = param.getvar_copy() sol.parameters.setvar(vars) if mode == 1: return True, tmpdir return True
def onAddBook(self, e=None, basename=None): book = FigBook() self._onAddSomething(book, basename=basename) if not cbook.ProxyAlive(self._pbook): self._pbook = weakref.proxy(book) if e is not None: e.Skip() return book
def onAddSol(self, e=None): sol = PySol() self._onAddSomething(sol, ['isFigBook']) if not cbook.ProxyAlive(self._psol): self._psol = weakref.proxy(sol) if e is not None: e.Skip() return sol
def onAddSolver(self, e=None): solver = PySolver() self._onAddSomething(solver, ['isFigBook', 'isPySol']) if not cbook.ProxyAlive(self._psolver): self._psolver = weakref.proxy(solver) if e is not None: e.Skip() return solver
def onAddSetting(self, e=None): setting = PySetting() self._onAddSomething( setting, ['isPySolver', 'isFigBook', 'isPyModel', 'isPySol']) if not cbook.ProxyAlive(self._psetting): self._psetting = weakref.proxy(setting) if e is not None: e.Skip() return setting
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 onAddModel(self, e=None): model = PyModel() basename = model.get_namebase() name = self.get_next_name(basename) if e is not None: id = e.GetEventObject() app = id.GetTopLevelParent() ret, new_name = dialog.textentry(app, "Enter the name of new model", "Add Model", name) if not ret: return else: new_name = name self._onAddSomething(model, ['isPySolver', 'isFigBook', 'isPySol'], name=new_name) if not cbook.ProxyAlive(self._pmodel): self._pmodel = weakref.proxy(model) if e is not None: e.Skip() return model