X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=blender%2Fio_mspgl%2Futil.py;h=7e932df382791007e3151beff6d4cc41bf5301ad;hb=e891021affc89a329d65b526744ebd38589cae32;hp=000190fe05e2cb80510121c90afd945378dd3ba6;hpb=820d8ff86b911f1119b8cde03839687176b9b1ee;p=libs%2Fgl.git diff --git a/blender/io_mspgl/util.py b/blender/io_mspgl/util.py index 000190fe..7e932df3 100644 --- a/blender/io_mspgl/util.py +++ b/blender/io_mspgl/util.py @@ -1,20 +1,60 @@ +import os + class Progress: def __init__(self, context): self.task = "" self.start = 0.0 self.delta = 1.0 self.last = 0.0 - self.window_manager = context.window_manager - self.window_manager.progress_begin(0.0, 1.0) + self.stack = [] + 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((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): + 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: + 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 + + +def image_name(img): + fp = img.filepath + if fp: + return os.path.split(fp)[1] + else: + return img.name