From f8af7c036f1bbba82831e1a39b299a7413dd89c8 Mon Sep 17 00:00:00 2001
From: Martin <martin.hogstedt@hotmail.com>
Date: Tue, 2 Jul 2024 13:32:35 +0200
Subject: [PATCH] editing memory now takes bit length into account for negative
 values aswell. Fixed type and tells the user size of memory addresses when
 input doesnt fit

---
 .../module_graphics_item/integer_memory_graphic.py    | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/src/simudator/gui/module_graphics_item/integer_memory_graphic.py b/src/simudator/gui/module_graphics_item/integer_memory_graphic.py
index ecf598b..a177b62 100644
--- a/src/simudator/gui/module_graphics_item/integer_memory_graphic.py
+++ b/src/simudator/gui/module_graphics_item/integer_memory_graphic.py
@@ -17,7 +17,7 @@ class Base(Enum):
     HEXADECIMAL = 4
 
 
-class ValueToBig(Exception):
+class ValueTooBig(Exception):
     """
     A class representing the error of a user inputting a value that does not fit in the memory.
 
@@ -199,6 +199,7 @@ class IntegerMemoryTable(MemoryTable):
         item = self.item(row, col)
         value = item.text()
         max_value = 2**self._bit_length
+        min_value = -(2 ** (self._bit_length - 1))
 
         # Turn every value into a positive int
         # in base 10
@@ -216,8 +217,8 @@ class IntegerMemoryTable(MemoryTable):
             ):
                 value = int(value)
 
-            if value > max_value:
-                raise ValueToBig
+            if value > max_value or value < min_value:
+                raise ValueTooBig
 
         except ValueError:
             msg = None
@@ -233,9 +234,9 @@ class IntegerMemoryTable(MemoryTable):
             self.update()
             return
 
-        except ValueToBig:
+        except ValueTooBig:
             self._errorMessageWidget.showMessage(
-                "Input value does not fit within the bit length."
+                f"Input value does not fit within the bit length of {self._bit_length}."
             )
             self.update()
             return
-- 
GitLab