diff --git a/plugins/layout_replicator/__init__.py b/plugins/layout_replicator/__init__.py index a248160..c91040b 100644 --- a/plugins/layout_replicator/__init__.py +++ b/plugins/layout_replicator/__init__.py @@ -182,6 +182,7 @@ class Layout_Replicator_Dialog(wx.Dialog): self.Centre() self.source_choice.Bind(wx.EVT_CHOICE, lambda e: self._refresh_ref_list()) + self.hierarchical_cb.Bind(wx.EVT_CHECKBOX, lambda e: self._refresh_ref_list()) if sheets: self.source_choice.SetSelection(0) @@ -194,7 +195,12 @@ class Layout_Replicator_Dialog(wx.Dialog): if idx == wx.NOT_FOUND: return sheet = self.source_choice.GetString(idx) - fps = sorted(get_sheet_fps(self.board, sheet), key=lambda f: f.GetReference()) + if self.hierarchical_cb.IsChecked(): + prefix = get_sheet_prefix(self.board, sheet) + fps = get_sheet_fps_hierarchical(self.board, prefix) if prefix else [] + else: + fps = get_sheet_fps(self.board, sheet) + fps = sorted(fps, key=lambda f: f.GetReference()) self._ref_fps = fps for i, fp in enumerate(fps): self.ref_list.InsertItem(i, fp.GetReference())