diff --git a/soitool/setup_settings.py b/soitool/setup_settings.py index 7e3d623a35b0f776da2cc8b6c9e0946d52afaf01..fc05e1a3c196af66a5178b1263af660c97d19417 100644 --- a/soitool/setup_settings.py +++ b/soitool/setup_settings.py @@ -16,6 +16,11 @@ from PySide2.QtWidgets import ( QComboBox, QGroupBox, ) +from soitool.soi import ( + STRING_TO_ALGORITHM_RECTPACK_BIN, + STRING_TO_ALGORITHM_RECTPACK_PACK, + STRING_TO_ALGORITHM_INITIAL_SORT, +) class Setup(QDialog): # pylint: disable = R0902 @@ -120,28 +125,25 @@ class Setup(QDialog): # pylint: disable = R0902 # placement algorithm self.layout_setup.addWidget(self.label_algorithm) - self.rbutton_bin1 = QRadioButton("BFF") - self.rbutton_bin2 = QRadioButton("BBF") - self.rbutton_pack1 = QRadioButton("MaxRectsBI") - self.rbutton_pack2 = QRadioButton("SkylinBl") - self.rbutton_pack3 = QRadioButton("GuillotineBssfSas") - self.rbutton_sort1 = QRadioButton("none") - self.rbutton_sort2 = QRadioButton("area") - self.rbutton_sort3 = QRadioButton("width") - self.rbutton_sort4 = QRadioButton("height") + self.rbuttons_option_bin = [ + QRadioButton(name) for name in STRING_TO_ALGORITHM_RECTPACK_BIN + ] + self.rbuttons_option_pack = [ + QRadioButton(name) for name in STRING_TO_ALGORITHM_RECTPACK_PACK + ] + self.rbuttons_option_sort = [ + QRadioButton(name) for name in STRING_TO_ALGORITHM_INITIAL_SORT + ] self.layout_alg_button_bin.addWidget(QLabel("Bin")) - self.layout_alg_button_bin.addWidget(self.rbutton_bin1) - self.layout_alg_button_bin.addWidget(self.rbutton_bin2) + for rbutton in self.rbuttons_option_bin: + self.layout_alg_button_bin.addWidget(rbutton) self.layout_alg_button_pack.addWidget(QLabel("Pack")) - self.layout_alg_button_pack.addWidget(self.rbutton_pack1) - self.layout_alg_button_pack.addWidget(self.rbutton_pack2) - self.layout_alg_button_pack.addWidget(self.rbutton_pack3) + for rbutton in self.rbuttons_option_pack: + self.layout_alg_button_pack.addWidget(rbutton) self.layout_alg_button_sort.addWidget(QLabel("Sort")) - self.layout_alg_button_sort.addWidget(self.rbutton_sort1) - self.layout_alg_button_sort.addWidget(self.rbutton_sort2) - self.layout_alg_button_sort.addWidget(self.rbutton_sort3) - self.layout_alg_button_sort.addWidget(self.rbutton_sort4) + for rbutton in self.rbuttons_option_sort: + self.layout_alg_button_sort.addWidget(rbutton) self.group_algorithm_bin.setLayout(self.layout_alg_button_bin) self.group_algorithm_pack.setLayout(self.layout_alg_button_pack) diff --git a/soitool/soi.py b/soitool/soi.py index 7ca6689565adc76aea657f5661119664c28cdbbc..36b454a53c5de44dd52988372ab5a8504595bd4c 100644 --- a/soitool/soi.py +++ b/soitool/soi.py @@ -557,6 +557,9 @@ class SOI: All properties except "modules" and "attachements" can be updated using this function. + If a change is made that affects placement of modules this function + will call `reorganize` + Parameters ---------- **kwargs : key, value pairs of properties to update @@ -603,3 +606,13 @@ class SOI: for listener in self.update_property_listeners: listener() + + # If any properties relating to module placement were touched, + # reorganize + if ( + "placement_strategy" in kwargs + or "algorithm_bin" in kwargs + or "algorithm_pack" in kwargs + or "algorithm_sort" in kwargs + ): + self.reorganize()