From f1d5b1a12d51c050f65e14d074dacd2734fc9c7a Mon Sep 17 00:00:00 2001
From: Srikanth Ravipati <rsri131@gmail.com>
Date: Tue, 16 Mar 2021 14:18:37 +0000
Subject: [PATCH] Made changes to display more info on memory usage

and a few other changes
---
 .../workbench/workbench/app/mainwindow.py           |  2 +-
 .../workbench/workbench/plugins/memoryinfo.py       | 13 ++++++++-----
 .../workbench/workbench/plugins/memorypresenter.py  |  6 ++----
 .../workbench/workbench/plugins/memoryview.py       |  9 +++++----
 .../workbench/workbench/plugins/memorywidget.py     |  2 +-
 .../workbench/plugins/test/test_memoryinfo.py       |  8 ++++----
 6 files changed, 21 insertions(+), 19 deletions(-)

diff --git a/qt/applications/workbench/workbench/app/mainwindow.py b/qt/applications/workbench/workbench/app/mainwindow.py
index 5c70508df96..29faf569841 100644
--- a/qt/applications/workbench/workbench/app/mainwindow.py
+++ b/qt/applications/workbench/workbench/app/mainwindow.py
@@ -493,7 +493,7 @@ class MainWindow(QMainWindow):
             'height-fraction': [
                 [0.5, 0.5],  # column 0 row heights
                 [1.0],  # column 1 row heights
-                [0.1, 0.9]
+                [0.05, 0.95]
             ]  # column 2 row heights
         }
 
diff --git a/qt/applications/workbench/workbench/plugins/memoryinfo.py b/qt/applications/workbench/workbench/plugins/memoryinfo.py
index 634e3e8924c..719c0d635f4 100644
--- a/qt/applications/workbench/workbench/plugins/memoryinfo.py
+++ b/qt/applications/workbench/workbench/plugins/memoryinfo.py
@@ -10,8 +10,11 @@
 from psutil import virtual_memory
 
 def getMemoryUsed():
-    memory_used  = virtual_memory().used
-    memory_available = virtual_memory().available
-    memory_free = round(memory_used * 100 / memory_available)
-    memory_free_percent = min(int(memory_free), 100)
-    return memory_free_percent
+    mem_used  = virtual_memory().used
+    mem_avail = virtual_memory().available
+    mem_used_percent = min(int(round(mem_used * 100 / mem_avail)),100)
+    conversion_factor_to_GB = 1.0 / 1024 / 1024 / 1024
+    mem_used_GB = mem_used * conversion_factor_to_GB
+    mem_avail_GB = mem_avail * conversion_factor_to_GB
+    return mem_used_percent, mem_used_GB, mem_avail_GB
+
diff --git a/qt/applications/workbench/workbench/plugins/memorypresenter.py b/qt/applications/workbench/workbench/plugins/memorypresenter.py
index e6593ef8523..cb9092a6c9b 100644
--- a/qt/applications/workbench/workbench/plugins/memorypresenter.py
+++ b/qt/applications/workbench/workbench/plugins/memorypresenter.py
@@ -1,6 +1,5 @@
 from qtpy.QtCore import QTimer
 
-from random import random
 from workbench.plugins.memoryinfo import getMemoryUsed
 
 class MemoryPresenter(object):
@@ -15,7 +14,6 @@ class MemoryPresenter(object):
         self.timer.start(10)
 
     def updateMemoryUsage(self):
-        memory_used = getMemoryUsed()
-        #memory_used = int(random() * 100)
-        self.view.setValue(memory_used)
+        mem_used_percent, mem_used, mem_avail = getMemoryUsed()
+        self.view.setValue(mem_used_percent, mem_used, mem_avail)
 
diff --git a/qt/applications/workbench/workbench/plugins/memoryview.py b/qt/applications/workbench/workbench/plugins/memoryview.py
index c9dc44c2065..c40390d6c37 100644
--- a/qt/applications/workbench/workbench/plugins/memoryview.py
+++ b/qt/applications/workbench/workbench/plugins/memoryview.py
@@ -9,7 +9,6 @@
 #
 from qtpy.QtWidgets import QWidget, QProgressBar
 from qtpy.QtCore import Signal
-from mantidqt.utils.qt import load_ui
 
 NORMAL_STYLE = """
 QProgressBar::chunk {
@@ -37,8 +36,6 @@ class MemoryView(QWidget):
         super(MemoryView, self).__init__(parent)
 
         self.critical = 90
-        # For the future use, if needed
-        #self.ui = load_ui(__file__, 'memorybar.ui', baseinstance=self)
         self.memory_bar = QProgressBar(self)
 
     def setBarColor(self, currentValue, newValue):
@@ -49,11 +46,15 @@ class MemoryView(QWidget):
         else:
             pass
 
-    def setValue(self, newValue):
+    def setValue(self, newValue, mem_used, mem_avail):
+        # newValue is the mem_used_percent(int)
         currentValue = self.memory_bar.value()
         if currentValue != newValue:
             self.setBarColor(currentValue, newValue)
             self.memory_bar.setValue(newValue)
+            display_str = "%3.1f"%mem_used + "/" + "%3.1f"%mem_avail + " GB " + \
+                        "(" + "%d"%newValue+"%" +")"
+            self.memory_bar.setFormat(display_str)
 
     def onUpdateRequest(self):
         self.updateSignal.emit()
diff --git a/qt/applications/workbench/workbench/plugins/memorywidget.py b/qt/applications/workbench/workbench/plugins/memorywidget.py
index 2d4a0e83c1c..dbd59f67df9 100644
--- a/qt/applications/workbench/workbench/plugins/memorywidget.py
+++ b/qt/applications/workbench/workbench/plugins/memorywidget.py
@@ -30,7 +30,7 @@ class MemoryWidget(PluginWidget):
     # ----------------- Plugin API --------------------
 
     def get_plugin_title(self):
-        return "Memory"
+        return "Memory Usage"
 
     def readSettings(self, _):
         pass
diff --git a/qt/applications/workbench/workbench/plugins/test/test_memoryinfo.py b/qt/applications/workbench/workbench/plugins/test/test_memoryinfo.py
index 80e1f09deb1..8ad2446e5b1 100644
--- a/qt/applications/workbench/workbench/plugins/test/test_memoryinfo.py
+++ b/qt/applications/workbench/workbench/plugins/test/test_memoryinfo.py
@@ -13,9 +13,9 @@ from workbench.plugins.memoryinfo import getMemoryUsed
 class MemoryInfoTest(unittest.TestCase):
 
     def test_MemoryInfo(self):
-        mem_used = getMemoryUsed()
-        self.assertTrue(isinstance(mem_used, int))
-        self.assertTrue(0 <= mem_used <= 100)
+        mem_used_percent, mem_used, mem_avail = getMemoryUsed()
+        self.assertTrue(isinstance(mem_used_percent, int))
+        self.assertTrue(0 <= mem_used_percent <= 100)
 
 if __name__ == "__main__":
-    unittest.main()
\ No newline at end of file
+    unittest.main()
-- 
GitLab