From 768a11ae5fe37dba37f94d79c3e5bcd9ce9863f9 Mon Sep 17 00:00:00 2001
From: "Anders H. Rebner" <anderhre@stud.ntnu.no>
Date: Sat, 25 Apr 2020 17:41:36 +0200
Subject: [PATCH] #95 funksjonene read_from_dialog og create_tables er endret

---
 soitool/modules/module_predefined_codes.py | 52 +++++++++++-----------
 1 file changed, 26 insertions(+), 26 deletions(-)

diff --git a/soitool/modules/module_predefined_codes.py b/soitool/modules/module_predefined_codes.py
index 725d9ac..2b16384 100644
--- a/soitool/modules/module_predefined_codes.py
+++ b/soitool/modules/module_predefined_codes.py
@@ -120,10 +120,10 @@ class PredefinedCodesModule(ModuleBase, QWidget, metaclass=Meta):
         dialog.exec_()
 
         # Read dialog-input
-        self.categories, expressions = self.read_from_dialog(dialog)
+        categories_and_expressions = self.read_from_dialog(dialog)
 
         # Create tables and set layout
-        self.create_tables(self.categories, expressions)
+        self.create_tables(categories_and_expressions)
         self.create_and_set_layout()
 
     def read_from_dialog(self, dialog):
@@ -136,48 +136,48 @@ class PredefinedCodesModule(ModuleBase, QWidget, metaclass=Meta):
 
         Returns
         -------
-        tuple
-            Containing two lists: one containing categories, the other
-            containing all expressions.
+        dict
+            With categories as keys and list of expressions as values.
         """
         self.headline = QLabel(dialog.edit_headline.text())
         self.warning_word = QLabel(dialog.edit_warning_word.text())
         self.maximum_column_height = dialog.edit_column_height.value()
 
-        categories = []
+        # Read categories in order
+        self.categories.clear()
         for i in range(dialog.list_category_order.count()):
-            categories.append(dialog.list_category_order.item(i).text())
+            self.categories.append(dialog.list_category_order.item(i).text())
 
-        # Get expressions for all categories from database
-        all_expressions = []
-        for category in categories:
-            # Get expressions in category
+        # Create dict containing categories and their expressions
+        categories_and_expressions = {}
+        for category in self.categories:
             expressions = self.database.get_codebook_expressions_in_category(
                 category, small=True
             )
-            # Randomly sort expressions
-            all_expressions.append(sample(expressions, len(expressions)))
-        return categories, all_expressions
+            # Add expressions sorted randomly
+            categories_and_expressions[category] = sample(
+                expressions, len(expressions)
+            )
 
-    def create_tables(self, categories, expressions):
+        return categories_and_expressions
+
+    def create_tables(self, categories_and_expressions):
         """Create PredefinedCodesTable-objects.
-        
+
         Parameters
         ----------
-        categories : list
-            Containing categories (string).
-        expressions : list
-            Containing list of expressions (string) in each category.
-            expressions[i] is a list of expressions from categories[i].
+        categories_and_expressions : dict
+            With categories as keys and list of expressions as values.
         """
         # Delete previous tables
         del self.tables[:]
 
         # Create new tables
-        for i, category in enumerate(categories):
+        for i, category in enumerate(categories_and_expressions.keys()):
             headline = " " + ALPHABET[i] + "   " + category
-            table = PredefinedCodesTable(headline, expressions[i])
-
+            table = PredefinedCodesTable(
+                headline, categories_and_expressions[category]
+            )
             self.tables.append(table)
 
     def create_tables_from_data(self, data):
@@ -413,9 +413,9 @@ class PredefinedCodesModule(ModuleBase, QWidget, metaclass=Meta):
             # If user accepted, read dialog, create tables and set a
             # new table-layout
             if dialog_code == QDialog.DialogCode.Accepted:
-                self.categories, expressions = self.read_from_dialog(dialog)
+                categories_and_expressions = self.read_from_dialog(dialog)
 
-                self.create_tables(self.categories, expressions)
+                self.create_tables(categories_and_expressions)
                 self.new_table_layout()
 
         super().keyPressEvent(event)
-- 
GitLab