Skip to content

Commit 53c5c10

Browse files
committed
Update progress bar after each processed module
1 parent 4ffff33 commit 53c5c10

File tree

1 file changed

+48
-1
lines changed

1 file changed

+48
-1
lines changed

pypredef_generator_plugin.py

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,13 @@
33
(Eclipse IDE plug-in) for GIMP modules.
44
"""
55

6+
from __future__ import absolute_import, print_function, division
7+
68
import os
79

810
import importlib
911

12+
import gimp
1013
import gimpfu
1114

1215
import pypredef_generator
@@ -18,15 +21,22 @@
1821
def generate_predefined_completions_for_pydev(generate_from_modules, generate_from_pdb):
1922
if generate_from_modules:
2023
module_names = _get_module_names(pypredef_generator.MODULES_FILE_PATH)
21-
24+
25+
gimp_progress = GimpProgress(
26+
_get_num_progress_items(generate_from_modules, module_names, generate_from_pdb))
27+
gimp_progress.initialize()
28+
29+
if generate_from_modules:
2230
_make_dirs(pypredef_generator.PYPREDEF_FILES_DIR)
2331

2432
for module_name in module_names:
2533
module = importlib.import_module(module_name)
2634
pypredef_generator.generate_predefined_completions(module)
35+
gimp_progress.update()
2736

2837
if generate_from_pdb:
2938
pypredef_generator_pdb.generate_predefined_completions_for_gimp_pdb()
39+
gimp_progress.update()
3040

3141

3242
def _get_module_names(modules_file_path):
@@ -56,6 +66,43 @@ def _make_dirs(path):
5666
else:
5767
raise
5868

69+
70+
#===============================================================================
71+
72+
73+
class GimpProgress(object):
74+
75+
def __init__(self, num_total_tasks=0):
76+
self.num_total_tasks = num_total_tasks
77+
self._num_finished_tasks = 0
78+
79+
@property
80+
def num_finished_tasks(self):
81+
return self._num_finished_tasks
82+
83+
def initialize(self, message=None):
84+
gimp.progress_init(message if message is not None else "")
85+
86+
def update(self, num_tasks=1):
87+
if self._num_finished_tasks + num_tasks > self.num_total_tasks:
88+
raise ValueError("number of finished tasks exceeds the number of total tasks")
89+
90+
self._num_finished_tasks += num_tasks
91+
92+
gimp.progress_update(self._num_finished_tasks / self.num_total_tasks)
93+
94+
95+
def _get_num_progress_items(generate_from_modules, module_names, generate_from_pdb):
96+
num_progress_items = 0
97+
if generate_from_modules:
98+
num_progress_items += len(module_names)
99+
100+
if generate_from_pdb:
101+
num_progress_items += 1
102+
103+
return num_progress_items
104+
105+
59106
#===============================================================================
60107

61108
gimpfu.register(

0 commit comments

Comments
 (0)