From fdae3172d9a76d8c675d7acdbe33ace31af7109a Mon Sep 17 00:00:00 2001
From: Johannes Kung <johku144@student.liu.se>
Date: Thu, 1 Aug 2024 17:09:26 +0200
Subject: [PATCH] Implemented more formats

---
 src/simudator/gui/formatting.py | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/src/simudator/gui/formatting.py b/src/simudator/gui/formatting.py
index ed57c8f..85ce411 100644
--- a/src/simudator/gui/formatting.py
+++ b/src/simudator/gui/formatting.py
@@ -82,17 +82,17 @@ def format_to_str(format_info: FormatInfo, value: Any) -> str:
     """
     match format_info.selected_format:
         case Format.Int:
-            pass
+            return str(value)
         case Format.Str:
-            pass
+            return str(value)
         case Format.Bin:
             return f"{value:0{format_info.kwargs['bit_length']}b}"
         case Format.Hex:
             return f"{value:0{math.ceil(format_info.kwargs['bit_length']/4)}x}"
         case Format.Decimal:
-            pass
+            return str(value)
         case Format.DecimalSigned:
-            pass
+            return str(value - 2 ** format_info.kwargs['bit_length'])
 
 
 def parse_str(format_info: FormatInfo, value: str) -> Any:
@@ -114,5 +114,13 @@ def parse_str(format_info: FormatInfo, value: str) -> Any:
     match format_info.selected_format:
         case Format.Int:
             return int(value)
+        case Format.Bin:
+            return int(value, base=2)
         case Format.Hex:
             return int(value, base=16)
+        case Format.Decimal:
+            return int(value)
+        case Format.DecimalSigned:
+            # Turn negative numbers into the correct unsigned value
+            # e.g. bit length 3: -1 (0b111 in 2's complement) => 7
+            return int(value) % 2 ** format_info.kwargs['bit_length']
-- 
GitLab