|
3 | 3 | (Eclipse IDE plug-in) for GIMP modules. |
4 | 4 | """ |
5 | 5 |
|
| 6 | +from __future__ import absolute_import, print_function, division |
| 7 | + |
6 | 8 | import os |
7 | 9 |
|
8 | 10 | import importlib |
9 | 11 |
|
| 12 | +import gimp |
10 | 13 | import gimpfu |
11 | 14 |
|
12 | 15 | import pypredef_generator |
|
18 | 21 | def generate_predefined_completions_for_pydev(generate_from_modules, generate_from_pdb): |
19 | 22 | if generate_from_modules: |
20 | 23 | 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: |
22 | 30 | _make_dirs(pypredef_generator.PYPREDEF_FILES_DIR) |
23 | 31 |
|
24 | 32 | for module_name in module_names: |
25 | 33 | module = importlib.import_module(module_name) |
26 | 34 | pypredef_generator.generate_predefined_completions(module) |
| 35 | + gimp_progress.update() |
27 | 36 |
|
28 | 37 | if generate_from_pdb: |
29 | 38 | pypredef_generator_pdb.generate_predefined_completions_for_gimp_pdb() |
| 39 | + gimp_progress.update() |
30 | 40 |
|
31 | 41 |
|
32 | 42 | def _get_module_names(modules_file_path): |
@@ -56,6 +66,43 @@ def _make_dirs(path): |
56 | 66 | else: |
57 | 67 | raise |
58 | 68 |
|
| 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 | + |
59 | 106 | #=============================================================================== |
60 | 107 |
|
61 | 108 | gimpfu.register( |
|
0 commit comments