From 39aa6c31a7ad45306e2bf3f2132bc8d12324d16c Mon Sep 17 00:00:00 2001
From: thomahl <thomahl@stud.ntnu.no>
Date: Mon, 30 Mar 2020 11:39:19 +0200
Subject: [PATCH] =?UTF-8?q?#81=20reorganiserer=20n=C3=A5r=20rel.=20alt.=20?=
 =?UTF-8?q?endrer=20seg=20&=20oppsett=20henter=20algoritmer?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Før var algoritmevalgene hardkodet i oppsett dialogen, nå hentes de direkte fra kilden
---
 soitool/setup_settings.py | 38 ++++++++++++++++++++------------------
 soitool/soi.py            | 13 +++++++++++++
 2 files changed, 33 insertions(+), 18 deletions(-)

diff --git a/soitool/setup_settings.py b/soitool/setup_settings.py
index 7e3d623..fc05e1a 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 7ca6689..36b454a 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()
-- 
GitLab