diff options
| author | Lex Neva <github.com@lexneva.name> | 2018-01-01 14:56:27 -0500 |
|---|---|---|
| committer | Lex Neva <github.com@lexneva.name> | 2018-01-01 14:56:27 -0500 |
| commit | e9bddedf36e91f33b13a22997872812e849b2157 (patch) | |
| tree | f612036f386aa49a1e60f4166e6599d86c7f7ec0 | |
| parent | 3cb4427fe6a5bdc83e08bc4e1c970598609a5f49 (diff) | |
render objects in the correct order
| -rw-r--r-- | embroider_params.py | 49 | ||||
| -rw-r--r-- | embroider_simulate.py | 1 |
2 files changed, 28 insertions, 22 deletions
diff --git a/embroider_params.py b/embroider_params.py index 289f0d8e..88d5772c 100644 --- a/embroider_params.py +++ b/embroider_params.py @@ -424,28 +424,34 @@ class SettingsFrame(wx.Frame): def generate_patches(self): patches = [] + nodes = [] for tab in self.tabs: tab.apply() - try: - if tab.enabled() and not tab.is_dependent_tab(): - for node in tab.nodes: - if self.simulate_refresh_needed.is_set(): - # cancel, we need to start over - return [] - - # Making a copy of the embroidery element is an easy - # way to drop the cache in the @cache decorators used - # for many params in embroider.py. - - patches.extend(copy(node).to_patches(None)) - except SystemExit: - raise - except: - # Ignore errors. This can be things like incorrect paths for - # satins or division by zero caused by incorrect param values. - pass + if tab.enabled() and not tab.is_dependent_tab(): + nodes.extend(tab.nodes) + + # sort nodes into the proper stacking order + nodes.sort(key=lambda node: node.order) + + try: + for node in nodes: + if self.simulate_refresh_needed.is_set(): + # cancel; params were updated and we need to start over + return [] + + # Making a copy of the embroidery element is an easy + # way to drop the cache in the @cache decorators used + # for many params in embroider.py. + + patches.extend(copy(node).to_patches(None)) + except SystemExit: + raise + except: + # Ignore errors. This can be things like incorrect paths for + # satins or division by zero caused by incorrect param values. + pass return patches @@ -631,9 +637,11 @@ class EmbroiderParams(inkex.Effect): nodes = self.get_nodes() nodes_by_class = defaultdict(list) - for node in self.get_nodes(): + for z, node in enumerate(self.get_nodes()): for cls in self.embroidery_classes(node): - nodes_by_class[cls].append(node) + element = cls(node) + element.order = z + nodes_by_class[cls].append(element) return sorted(nodes_by_class.items(), key=lambda (cls, nodes): cls.__name__) @@ -659,7 +667,6 @@ class EmbroiderParams(inkex.Effect): def create_tabs(self, parent): tabs = [] for cls, nodes in self.get_nodes_by_class(): - nodes = [cls(node) for node in nodes] params = cls.get_params() for param in params: diff --git a/embroider_simulate.py b/embroider_simulate.py index 0bee6327..5654b9c3 100644 --- a/embroider_simulate.py +++ b/embroider_simulate.py @@ -177,7 +177,6 @@ class EmbroiderySimulator(wx.Frame): min_x = min(min_x, x) min_y = min(min_y, y) - new_segments = [] for segment in self.segments: |
