Changeset 367

Show
Ignore:
Timestamp:
11/11/02 17:57:44 (6 years ago)
Author:
sholloway
Message:

*** empty log message ***

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/RBFoundation/RBFoundation/TaskProgress.py

    r365 r367  
    5353    ProgressStart = 0 
    5454    ProgressEnd = 1 
    55     ProgressUpdateDelta = 0 
     55    ProgressUpdateSteps = 0 
    5656    ProgressUpdateThreshold = 0 
    5757    _Progress = 0 
     
    6161    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    6262 
    63     def __init__(self, *args, **kw): 
     63    def __init__(self, name, *args, **kw): 
     64        self.Name = name 
    6465        self.OnProgress = self.SubjectFactory() 
     66        self.OnAddSubtask = self.SubjectFactory() 
    6567        if args or kw: 
    6668            self.SetProgressRange(*args, **kw) 
     
    7375        return self 
    7476 
    75     def NewSubtask(self, *args, **kw): 
    76         subtask = self.SubtaskFactory(*args, **kw) 
    77         subtask.OnProgress.Add(self._OnSubtaskUpdate) 
     77    def NewSubtask(self, Name, Start=0., Stop=1., UpdateSteps=None): 
     78        subtask = self.SubtaskFactory(Name, Start, Stop, UpdateSteps or self.ProgressUpdateSteps) 
     79        return self.AddSubtask(subtask) 
     80 
     81    def AddSubtask(self, subtask): 
    7882        try:  
    7983            self.Subtasks.append(subtask) 
    8084        except AttributeError:  
    8185            self.Subtasks = [subtask] 
     86        subtask.OnProgress.Add(self._OnSubtaskUpdate) 
     87        self.OnAddSubtask.Update(self, subtask) 
    8288        self._OnSubtaskUpdate(subtask, subtask.Progress) 
    8389        return subtask 
     
    8793    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    8894 
    89     def SetProgressRange(self, Start, Stop, UpdateSteps=100, bSetProgress=1): 
    90         self.ProgressUpdateDelta = (Stop - Start) / max(1, UpdateSteps-1) 
     95    def SetProgressRange(self, Start, Stop, UpdateSteps=10, bSetProgress=1): 
     96        self.ProgressUpdateSteps = UpdateSteps 
    9197        self.ProgressUpdateThreshold = Start 
    9298        self.ProgressStart = Start 
     
    107113        if Progress >= self.ProgressUpdateThreshold: 
    108114            self.OnProgress.Update(self, Progress) 
    109             self.ProgressUpdateThreshold += self.ProgressUpdateDelta 
     115            self.ProgressUpdateThreshold += float(self.ProgressEnd - self.ProgressStart) / self.ProgressUpdateSteps 
    110116        elif Progress >= self.ProgressEnd: 
    111117            self.OnProgress.Update(self, Progress) 
     
    138144    print "Testing..." 
    139145 
    140     task = TaskProgress(0, 10000, 15) 
     146    task = TaskProgress('Test task', 0, 10000, 15) 
    141147 
    142148    task += 10 
    143     print task.Progress, task.ProgressStart, task.ProgressEnd, task.ProgressUpdateDelta 
     149    print task.Progress, task.ProgressStart, task.ProgressEnd, task.ProgressUpdateSteps 
    144150 
    145151    def PrintProgress(task, progress): 
    146         print task.Percentage 
     152        print '%-20s [%5.1f%%]' % (task.Name, task.Percentage * 100) 
     153 
    147154    task.OnProgress.Add(PrintProgress) 
    148155 
    149156    print 
    150157    print "==", "Task progress", "="*20 
    151     for p in range(task.ProgressStart, task.ProgressEnd, task.ProgressUpdateDelta * .160): 
     158    for p in range(task.ProgressStart, task.ProgressEnd, (task.ProgressEnd - task.ProgressStart)/task.ProgressUpdateSteps * .4): 
    152159        task.Progress = p 
    153160    task.Progress = task.ProgressEnd 
     
    155162    print 
    156163    print "==", "Subtasks", "="*20 
    157     task.SetProgressRange(0.,1.,12.
     164    task.SetProgressRange(0.,1.,5
    158165    for each in xrange(5):  
    159         task.NewSubtask(0., 1., 20) 
     166        subtask = task.NewSubtask('   Subtask %s' % each, 0., 1., 4) 
     167        subtask.OnProgress.Add(PrintProgress) 
    160168 
    161169    while task.Percent < 1.: