diff --git a/forms.py b/forms.py index 78e866f..e40e2ae 100644 --- a/forms.py +++ b/forms.py @@ -10,6 +10,10 @@ ID_DUPLICATE_MODEL = wx.NewId() ID_DELETE_MODEL = wx.NewId() ID_PROCESS_MODEL = wx.NewId() +class MyTreeListCtrl(wx.gizmos.TreeListCtrl): + def Refresh(self, erase, rect): + wx.gizmos.TreeListCtrl.Refresh(False, rect) + class MainFrame (wx.Frame): def __init__(self, parent): @@ -27,8 +31,10 @@ class MainFrame (wx.Frame): bSizer4 = wx.BoxSizer(wx.VERTICAL) self.m_user_models = wx.gizmos.TreeListCtrl(self, - style = wx.TR_DEFAULT_STYLE | wx.TR_HIDE_ROOT | wx.TR_EDIT_LABELS) - self.m_user_models.SetMinSize(wx.Size(-1,200)) + #self.m_user_models = MyTreeListCtrl(self, + #self.m_user_models = wx.TreeCtrl(self, + style = wx.TR_DEFAULT_STYLE | wx.TR_HIDE_ROOT | wx.TR_EDIT_LABELS | wx.TR_ROW_LINES) + self.m_user_models.SetMinSize(wx.Size(-1, 200)) self.m_user_models.AddColumn("Model name") self.m_user_models.AddColumn("Status") self.m_user_models.AddColumn("Progress") diff --git a/opal.py b/opal.py index 4bc36ce..f60763f 100644 --- a/opal.py +++ b/opal.py @@ -64,47 +64,41 @@ class MainFrame(forms.MainFrame): self.server.Stop() self.Destroy() - # todo1 вменяемый цикл обхода! def Overseer(self): - - def SeeTheItem(item): - um = self.m_user_models - md = um.GetPyData(item) - print um.GetItemText(item) - job = md.job - if job: - t = os.path.basename(job.taskd.execpath) - p = job.percent * 100 - print t, p - um.SetItemText(item, '{}: {:.2F}%'.format(t, p), 1) - - child, cookie = um.GetFirstChild() - while child.IsOk(): - SeeTheItem(child) - child, cookie = um.GetNextChild(child, cookie) - - #try: - server = self.server + try: while True: - print 'cycle' - um = self.m_user_models - item = um.GetFirstVisibleItem() - SeeTheItem(item) + if True: + wx.MutexGuiEnter() + #print '-- cycle --' + um = self.m_user_models + #um.Freeze() + item = um.GetRootItem() + while item.IsOk(): + md = um.GetPyData(item) + job = md.job if md else None + if job and job.IsRunning(): + t = os.path.basename(job.taskd.execpath) + p = job.percent * 100 + #print t, p + um.SetItemText(item, str(job.GetState()), 1) + um.SetItemText(item, '{}: {:.2F}%'.format(t, p), 2) + item = um.GetNext(item) + #um.Thaw() + wx.MutexGuiLeave() time.sleep(0.5) - #except: - # pass + except Exception, e: + print 'Error in overseer: ', e def NewProject(self, project): # 1. загрузить спецификации модели # 2. создать одну модель по умолчанию model = project um = self.m_user_models - root = um.AddRoot('') + root = um.AddRoot('Root') data = task.DataDefinition(model) child = um.AppendItem(root, 'Default') um.SetPyData(child, data) - um.SetItemText(child, '234', 1) def SelectUserModel(self, model_def): @@ -169,6 +163,7 @@ class MainFrame(forms.MainFrame): md[param] = value def OnTest(self, event): + um = self.m_user_models id = um.GetSelection() md = um.GetItemPyData(id) @@ -184,19 +179,10 @@ class MainFrame(forms.MainFrame): md = um.GetItemPyData(id) child = um.AppendItem(parent, title + ' Copy') um.SetPyData(child, md.Copy()) + self.SetStatusText('Copy for "{}" created'.format(title), 0) def OnIdle(self, event): -## server = self.server -## self.m_job_list.Freeze() -## self.m_job_list.Clear() -## with server.queue_lock: -## for j in server.jobs_queue: -## t = os.path.dirname(j.taskd.execpath) -## p = j.percent * 100.0 -## self.m_job_list.Append('{}: {:.2}%'.format(t, p)) -## self.m_job_list.Thaw() pass - #time.sleep(1) #----------------------------------------------------------------------------- # Приложение diff --git a/server.py b/server.py index 11e5c67..21be3f3 100644 --- a/server.py +++ b/server.py @@ -184,6 +184,7 @@ class Job: self.comment = '' self.result = None self.proc = None + self.client_data = None def ProcessMsg(self, msg): # разбираем полученный ответ diff --git a/tasks/testt.py b/tasks/testt.py index aa2f8ec..6be521f 100644 --- a/tasks/testt.py +++ b/tasks/testt.py @@ -79,7 +79,7 @@ def main(): while l <= r: y = sin_taylor(l, d) res.append([l, y]) - write(answer(round(l / r, 2))) + write(answer(l / r)) l += h time.sleep(0.2)