Overseer partly worked
This commit is contained in:
		@@ -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,7 +31,9 @@ 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 = 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")
 | 
			
		||||
 
 | 
			
		||||
@@ -64,47 +64,41 @@ class MainFrame(forms.MainFrame):
 | 
			
		||||
        self.server.Stop()
 | 
			
		||||
        self.Destroy()
 | 
			
		||||
 | 
			
		||||
    # todo1 вменяемый цикл обхода!
 | 
			
		||||
    def Overseer(self):
 | 
			
		||||
 | 
			
		||||
        def SeeTheItem(item):
 | 
			
		||||
        try:
 | 
			
		||||
            while True:
 | 
			
		||||
                if True:
 | 
			
		||||
                    wx.MutexGuiEnter()
 | 
			
		||||
                    #print '-- cycle --'
 | 
			
		||||
                    um = self.m_user_models
 | 
			
		||||
                    #um.Freeze()
 | 
			
		||||
                    item = um.GetRootItem()
 | 
			
		||||
                    while item.IsOk():
 | 
			
		||||
                        md = um.GetPyData(item)
 | 
			
		||||
            print um.GetItemText(item)
 | 
			
		||||
            job = md.job
 | 
			
		||||
            if job:
 | 
			
		||||
                        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, '{}: {:.2F}%'.format(t, p), 1)
 | 
			
		||||
 | 
			
		||||
            child, cookie = um.GetFirstChild()
 | 
			
		||||
            while child.IsOk():
 | 
			
		||||
                SeeTheItem(child)
 | 
			
		||||
                child, cookie = um.GetNextChild(child, cookie)
 | 
			
		||||
 | 
			
		||||
        #try:
 | 
			
		||||
            server = self.server
 | 
			
		||||
            while True:
 | 
			
		||||
                print 'cycle'
 | 
			
		||||
                um = self.m_user_models
 | 
			
		||||
                item = um.GetFirstVisibleItem()
 | 
			
		||||
                SeeTheItem(item)
 | 
			
		||||
                            #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)
 | 
			
		||||
 | 
			
		||||
#-----------------------------------------------------------------------------
 | 
			
		||||
# Приложение
 | 
			
		||||
 
 | 
			
		||||
@@ -184,6 +184,7 @@ class Job:
 | 
			
		||||
        self.comment = ''
 | 
			
		||||
        self.result  = None
 | 
			
		||||
        self.proc    = None
 | 
			
		||||
        self.client_data = None
 | 
			
		||||
 | 
			
		||||
    def ProcessMsg(self, msg):
 | 
			
		||||
        # разбираем полученный ответ
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user