self.delta = 1.0
self.last = 0.0
self.stack = []
- self.window_manager = context.window_manager
- self.window_manager.progress_begin(0.0, 1.0)
+ if context:
+ self.window_manager = context.window_manager
+ self.window_manager.progress_begin(0.0, 1.0)
+ else:
+ self.window_manager = None
def push_task(self, task, low, high):
- self.stack.append((task, low, high-low))
- self.set_task("init", 0.0, 0.0)
+ self.stack.append((self.task, self.start, self.delta))
+ self.set_task(task, low, high)
+
+ def push_task_slice(self, task, index, count):
+ self.push_task(task, index/count, (index+1)/count)
def pop_task(self):
- self.set_task("finish", 1.0, 1.0)
- self.stack.pop()
+ if not self.stack:
+ return
+
+ self.set_progress(1.0)
+ self.task, self.start, self.delta = self.stack.pop()
def set_task(self, task, low, high):
if self.stack:
- task = self.stack[-1][0]+": "+task
- low = self.stack[-1][1]+self.stack[-1][2]*low
- high = self.stack[-1][1]+self.stack[-1][2]*high
+ outer = self.stack[-1]
+ if outer[0]:
+ task = "{}: {}".format(outer[0], task)
+ low = outer[1]+low*outer[2]
+ high = outer[1]+high*outer[2]
self.task = task
self.start = low
self.delta = high-low
- self.set_progress(0)
+ self.set_progress(0.0)
+
+ def set_task_slice(self, task, index, count):
+ self.set_task(task, index/count, (index+1)/count)
def set_progress(self, value):
value = self.start+self.delta*value
if value>self.last+0.01:
- self.window_manager.progress_update(value)
+ if self.window_manager:
+ self.window_manager.progress_update(value)
self.last = value