Skip to content

Commit b0cd45e

Browse files
authored
fix: raise dialog to inform user of issues encountered while running application (#1023)
* refactor: update do_log_debug to do_log_debug_msg in calls * refactor: update information to info in logger calls * refactor: add DEBUG as message dialog type with MessageType as OTHER * refactor: add method to raise a message dialog in response to logger messages * fix: add message dialog notifying user why the Revision module was default selected * style: update stub file
1 parent bd380d8 commit b0cd45e

11 files changed

Lines changed: 273 additions & 204 deletions

File tree

src/ramstk/models/dbrecords/programdb_design_electric_record.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -408,7 +408,7 @@ def do_calculate_current_ratio(self) -> None:
408408
)
409409
except ZeroDivisionError:
410410
pub.sendMessage(
411-
"do_log_debug",
411+
"do_log_debug_msg",
412412
logger_name="DEBUG",
413413
message=_(
414414
f"Failed to calculate current ratio for hardware ID "
@@ -430,7 +430,7 @@ def do_calculate_power_ratio(self) -> None:
430430
)
431431
except ZeroDivisionError:
432432
pub.sendMessage(
433-
"do_log_debug",
433+
"do_log_debug_msg",
434434
logger_name="DEBUG",
435435
message=_(
436436
f"Failed to calculate power ratio for hardware ID "
@@ -453,7 +453,7 @@ def do_calculate_voltage_ratio(self) -> None:
453453
)
454454
except ZeroDivisionError:
455455
pub.sendMessage(
456-
"do_log_debug",
456+
"do_log_debug_msg",
457457
logger_name="DEBUG",
458458
message=_(
459459
f"Failed to calculate voltage ratio for hardware ID "

src/ramstk/models/dbtables/basetable.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ def do_delete(self, node_id: int) -> None: # sourcery skip: extract-method
172172
)
173173
except (AttributeError, DataAccessError, NodeIDAbsentError):
174174
pub.sendMessage(
175-
"do_log_debug",
175+
"do_log_debug_msg",
176176
logger_name="DEBUG",
177177
message=_(
178178
f"Attempted to delete non-existent "
@@ -194,7 +194,7 @@ def do_get_attributes(self, node_id: int) -> None:
194194
)
195195
except AttributeError:
196196
pub.sendMessage(
197-
"do_log_debug",
197+
"do_log_debug_msg",
198198
logger_name="DEBUG",
199199
message=_(
200200
f"No attributes found for record ID {node_id} in {self._tag} table."
@@ -245,13 +245,13 @@ def do_insert(
245245
)
246246
except DataAccessError as _error:
247247
pub.sendMessage(
248-
"do_log_debug",
248+
"do_log_debug_msg",
249249
logger_name="DEBUG",
250250
message=str(_error.msg),
251251
)
252252
except NodeIDAbsentError as _error:
253253
pub.sendMessage(
254-
"do_log_debug",
254+
"do_log_debug_msg",
255255
logger_name="DEBUG",
256256
message=str(_error),
257257
)
@@ -274,7 +274,7 @@ def do_select(self, node_id: Any) -> Any:
274274
TypeError,
275275
):
276276
pub.sendMessage(
277-
"do_log_debug",
277+
"do_log_debug_msg",
278278
logger_name="DEBUG",
279279
message=_(
280280
f"No data package for node ID {node_id} in module {self._tag}."
@@ -341,7 +341,7 @@ def do_set_attributes(
341341
_attributes = self.do_select(node_id).get_attributes()
342342
except (AttributeError, KeyError):
343343
pub.sendMessage(
344-
"do_log_debug",
344+
"do_log_debug_msg",
345345
logger_name="DEBUG",
346346
message=_(
347347
f"No data package for node ID {node_id} in module {self._tag}."
@@ -405,7 +405,7 @@ def do_update(self, node_id: int) -> None:
405405
)
406406
except AttributeError:
407407
pub.sendMessage(
408-
"do_log_debug",
408+
"do_log_debug_msg",
409409
logger_name="DEBUG",
410410
message=_(
411411
f"Attempted to save non-existent {self._tag.replace('_', ' ')} "
@@ -414,7 +414,7 @@ def do_update(self, node_id: int) -> None:
414414
)
415415
except KeyError:
416416
pub.sendMessage(
417-
"do_log_debug",
417+
"do_log_debug_msg",
418418
logger_name="DEBUG",
419419
message=_(
420420
f"No data package found for {self._tag.replace('_', ' ')} ID "
@@ -430,7 +430,7 @@ def do_update(self, node_id: int) -> None:
430430
else:
431431
_error_msg = _(f"Attempting to update the root node {node_id}.")
432432
pub.sendMessage(
433-
"do_log_debug",
433+
"do_log_debug_msg",
434434
logger_name="DEBUG",
435435
message=_error_msg,
436436
)

src/ramstk/models/dbtables/programdb_similar_item_table.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ def do_calculate_similar_item(self, node_id: int) -> None:
116116
)
117117
except KeyError:
118118
pub.sendMessage(
119-
"do_log_debug",
119+
"do_log_debug_msg",
120120
logger_name="DEBUG",
121121
message=_(
122122
f"Failed to calculate similar item reliability for hardware ID "

src/ramstk/views/gtk3/assistants/project.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ def __project_is_open(self) -> None:
222222
)
223223
_dialog = RAMSTKMessageDialog(parent=self._parent)
224224
_dialog.do_set_message(_prompt)
225-
_dialog.do_set_message_type("information")
225+
_dialog.do_set_message_type("info")
226226

227227
if _dialog.run() == Gtk.ResponseType.OK:
228228
_dialog.destroy()

src/ramstk/views/gtk3/books/modulebook.py

Lines changed: 54 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,17 @@
66
# Copyright since 2007 Doyle "weibullguy" Rowland doyle.rowland <AT> reliaqual <DOT> com
77
"""RAMSTK Module Book Module."""
88

9+
# Standard Library Imports
10+
from typing import Dict
11+
912
# Third Party Imports
1013
from pubsub import pub
1114
from treelib import Tree
1215

1316
# RAMSTK Package Imports
1417
from ramstk.configuration import RAMSTKUserConfiguration
1518
from ramstk.logger import RAMSTKLogManager
16-
from ramstk.views.gtk3 import Gtk
19+
from ramstk.views.gtk3 import Gtk, _
1720
from ramstk.views.gtk3.function import FunctionModuleView
1821
from ramstk.views.gtk3.hardware import HardwareModuleView
1922
from ramstk.views.gtk3.requirement import RequirementModuleView
@@ -44,7 +47,7 @@ def __init__(
4447
RAMSTKBaseBook.__init__(self, configuration)
4548

4649
# Initialize private dictionary attributes.
47-
self._dic_module_views = {
50+
self._dic_module_views: Dict[str, object] = {
4851
"revision": RevisionModuleView(configuration, logger),
4952
"function": FunctionModuleView(configuration, logger),
5053
"requirement": RequirementModuleView(configuration, logger),
@@ -68,35 +71,13 @@ def __init__(
6871
self.__set_callbacks()
6972

7073
# Subscribe to PyPubSub messages.
71-
pub.subscribe(self._on_open, "succeed_retrieve_all_revision")
72-
pub.subscribe(self._on_close, "succeed_closed_program")
73-
74-
def __make_ui(self) -> None:
75-
"""Build the user interface.
76-
77-
:return: None
78-
:rtype: None
79-
"""
80-
self.insert_page(
81-
self._dic_module_views["revision"],
82-
tab_label=self._dic_module_views["revision"].hbx_tab_label,
83-
position=0,
74+
pub.subscribe(
75+
self._on_open,
76+
"succeed_retrieve_all_revision",
8477
)
85-
86-
self.show_all()
87-
self.set_current_page(0)
88-
89-
def __set_callbacks(self) -> None:
90-
"""Set callback methods for the RAMSTKModuleBook and widgets.
91-
92-
:return: None
93-
:rtype: None
94-
"""
95-
self.dic_handler_id["select-page"] = self.connect(
96-
"select-page", self._on_switch_page
97-
)
98-
self.dic_handler_id["switch-page"] = self.connect(
99-
"switch-page", self._on_switch_page
78+
pub.subscribe(
79+
self._on_close,
80+
"succeed_closed_program",
10081
)
10182

10283
def _on_close(self) -> None:
@@ -108,11 +89,11 @@ def _on_close(self) -> None:
10889
# Remove all the non-Revision pages.
10990
_n_pages = self.get_n_pages()
11091
# pylint: disable=unused-variable
111-
for _page in range(_n_pages - 1):
92+
for __ in range(_n_pages - 1):
11293
self.remove_page(-1)
11394

11495
# Clear the Revision page treeview.
115-
_model = self._dic_module_views["revision"].treeview.get_model()
96+
_model = self._dic_module_views["revision"].treeview.get_model() # type: ignore
11697
_model.clear()
11798

11899
# pylint: disable=unused-argument
@@ -133,7 +114,9 @@ def _on_open(self, tree: Tree) -> None:
133114
try:
134115
_module = self._dic_module_views[_mkey]
135116
self.insert_page(
136-
_module, tab_label=_module.hbx_tab_label, position=_key
117+
_module,
118+
tab_label=_module.hbx_tab_label, # type: ignore
119+
position=_key,
137120
)
138121
except KeyError:
139122
pass
@@ -163,10 +146,47 @@ def _on_switch_page(
163146
:return: None
164147
:rtype: None
165148
"""
166-
# See ISSUE #1005
167149
try:
168150
_module = self.RAMSTK_USER_CONFIGURATION.RAMSTK_PAGE_NUMBER[page_num]
169151
except KeyError:
170152
_module = "revision"
153+
pub.sendMessage(
154+
"do_log_debug_msg",
155+
logger_name="DEBUG",
156+
message=_(
157+
f"Page number {page_num} is not active in this Program. "
158+
f"Active page numbers and their associated work flow "
159+
f"module are {self.RAMSTK_USER_CONFIGURATION.RAMSTK_PAGE_NUMBER}. "
160+
f"Selecting the Revision work flow module by default."
161+
),
162+
)
171163

172164
pub.sendMessage("mvwSwitchedPage", module=_module)
165+
166+
def __make_ui(self) -> None:
167+
"""Build the user interface.
168+
169+
:return: None
170+
:rtype: None
171+
"""
172+
self.insert_page(
173+
self._dic_module_views["revision"],
174+
tab_label=self._dic_module_views["revision"].hbx_tab_label, # type: ignore
175+
position=0,
176+
)
177+
178+
self.show_all()
179+
self.set_current_page(0)
180+
181+
def __set_callbacks(self) -> None:
182+
"""Set callback methods for the RAMSTKModuleBook and widgets.
183+
184+
:return: None
185+
:rtype: None
186+
"""
187+
self.dic_handler_id["select-page"] = self.connect(
188+
"select-page", self._on_switch_page
189+
)
190+
self.dic_handler_id["switch-page"] = self.connect(
191+
"switch-page", self._on_switch_page
192+
)

src/ramstk/views/gtk3/books/modulebook.pyi

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Standard Library Imports
2-
from typing import Any
2+
from typing import Dict
33

44
# Third Party Imports
55
from treelib import Tree as Tree
@@ -13,8 +13,8 @@ from ramstk.views.gtk3.revision import RevisionModuleView as RevisionModuleView
1313
from ramstk.views.gtk3.widgets import RAMSTKBaseBook as RAMSTKBaseBook
1414

1515
class RAMSTKModuleBook(RAMSTKBaseBook):
16-
_dic_module_views: Any
17-
icoStatus: Any
16+
_dic_module_views: Dict[str, object]
17+
icoStatus: Gtk.StatusIcon
1818
def __init__(
1919
self, configuration: RAMSTKUserConfiguration, logger: RAMSTKLogManager
2020
) -> None: ...

0 commit comments

Comments
 (0)