From c96d18cfb80bc48486806bb6216465594ae5f978 Mon Sep 17 00:00:00 2001 From: sezanzeb Date: Sun, 27 Dec 2020 13:27:49 +0100 Subject: [PATCH] highlighting error status messages with an icon --- data/key-mapper.glade | 29 +++++++++++++++++++---------- keymapper/gtk/window.py | 5 +++++ tests/testcases/test_integration.py | 13 +++++++++++++ 3 files changed, 37 insertions(+), 10 deletions(-) diff --git a/data/key-mapper.glade b/data/key-mapper.glade index 0b8c4690..6ec429cf 100644 --- a/data/key-mapper.glade +++ b/data/key-mapper.glade @@ -66,7 +66,7 @@ 0 12 12 - cancel + dialog-error 6 @@ -202,7 +202,7 @@ 0 12 12 - cancel + dialog-error 6 @@ -756,18 +756,27 @@ True False + + + False + 10 + dialog-error + + + False + True + 0 + + True False - 10 - 10 - 10 - 10 + 7 + 7 6 6 vertical - 2 @@ -775,7 +784,7 @@ True True - 0 + 1 @@ -786,7 +795,7 @@ False True - 1 + 2 @@ -801,7 +810,7 @@ False True - 2 + 3 diff --git a/keymapper/gtk/window.py b/keymapper/gtk/window.py index b536db2d..7507420e 100755 --- a/keymapper/gtk/window.py +++ b/keymapper/gtk/window.py @@ -343,6 +343,11 @@ class Window: if tooltip is None: tooltip = message + if context_id == CTX_ERROR: + self.get('error_status_icon').show() + else: + self.get('error_status_icon').hide() + status_bar = self.get('status_bar') status_bar.push(context_id, message) status_bar.set_tooltip_text(tooltip) diff --git a/tests/testcases/test_integration.py b/tests/testcases/test_integration.py index 924c0f89..fe70f75c 100644 --- a/tests/testcases/test_integration.py +++ b/tests/testcases/test_integration.py @@ -496,19 +496,28 @@ class TestIntegration(unittest.TestCase): self.assertTrue(os.path.exists(f'{CONFIG_PATH}/presets/device 1/asdf.json')) self.assertEqual(custom_mapping.get_character((EV_KEY, 14, 1)), 'b') + error_icon = self.window.get('error_status_icon') + status = self.window.get('status_bar') + tooltip = status.get_tooltip_text().lower() + self.assertIn('saved', tooltip) + self.assertFalse(error_icon.get_visible()) + def test_check_macro_syntax(self): status = self.window.get('status_bar') + error_icon = self.window.get('error_status_icon') custom_mapping.change((EV_KEY, 9, 1), 'k(1))', None) self.window.on_save_preset_clicked(None) tooltip = status.get_tooltip_text().lower() self.assertIn('brackets', tooltip) + self.assertTrue(error_icon.get_visible()) custom_mapping.change((EV_KEY, 9, 1), 'k(1)', None) self.window.on_save_preset_clicked(None) tooltip = status.get_tooltip_text().lower() self.assertNotIn('brackets', tooltip) self.assertIn('saved', tooltip) + self.assertFalse(error_icon.get_visible()) self.assertEqual(custom_mapping.get_character((EV_KEY, 9, 1)), 'k(1)') @@ -694,6 +703,7 @@ class TestPermissions(unittest.TestCase): self.window = launch() status = self.window.get('status_bar') + error_icon = self.window.get('error_status_icon') tooltip = status.get_tooltip_text() self.assertIn('sudo', tooltip) @@ -701,6 +711,7 @@ class TestPermissions(unittest.TestCase): self.assertIn('error1', tooltip) self.assertIn('error2', tooltip) self.assertIn('error3', tooltip) + self.assertTrue(error_icon.get_visible()) def test_good(self): def fake(): @@ -710,8 +721,10 @@ class TestPermissions(unittest.TestCase): self.window = launch() status = self.window.get('status_bar') + error_icon = self.window.get('error_status_icon') self.assertIsNone(status.get_tooltip_text()) + self.assertFalse(error_icon.get_visible()) if __name__ == "__main__":