コード例 #1
0
ファイル: py_solver.py プロジェクト: jhillairet/piScope
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
コード例 #2
0
    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
コード例 #3
0
    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')
コード例 #4
0
 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)
コード例 #5
0
ファイル: py_solver.py プロジェクト: piScope/piScope
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
コード例 #6
0
 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
コード例 #7
0
 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
コード例 #8
0
 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
コード例 #9
0
 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
コード例 #10
0
ファイル: py_solver.py プロジェクト: jhillairet/piScope
    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())
コード例 #11
0
 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