Skip to content

Commit

Permalink
Merge pull request #6 from Zubax/reset_all_butt
Browse files Browse the repository at this point in the history
Reset all registers button
  • Loading branch information
pavel-kirienko committed Aug 18, 2018
2 parents 424f8ed + 1ed90b9 commit 83737ba
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 18 deletions.
Binary file added kucher/view/icons/fire-extinguisher.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added kucher/view/icons/skull-crossbones.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
56 changes: 38 additions & 18 deletions kucher/view/main_window/register_view_widget/__init__.py
Expand Up @@ -18,7 +18,7 @@
from logging import getLogger
from PyQt5.QtCore import Qt, QModelIndex
from PyQt5.QtWidgets import QWidget, QTreeView, QHeaderView, QStyleOptionViewItem, QComboBox, QAbstractItemView, \
QLabel, QAction
QLabel, QAction, QGridLayout

from kucher.view.widgets import WidgetBase
from kucher.view.utils import gui_test, make_button, lay_out_vertically, lay_out_horizontally, show_error, get_icon
Expand Down Expand Up @@ -58,6 +58,13 @@ def __init__(self, parent: QWidget):
f'default value is defined. [{RESET_SELECTED_SHORTCUT}]',
on_clicked=self._do_reset_selected)

self._reset_all_button = make_button(self, 'Reset all',
icon_name='skull-crossbones',
tool_tip=f'Reset the all registers to their default '
f'values. The restored values will be committed '
f'immediately.',
on_clicked=self._do_reset_all)

self._read_selected_button = make_button(self, 'Read selected',
icon_name='process',
tool_tip=f'Read the currently selected registers only '
Expand All @@ -83,6 +90,7 @@ def __init__(self, parent: QWidget):
self._status_display.setWordWrap(True)

self._reset_selected_button.setEnabled(False)
self._reset_all_button.setEnabled(False)
self._read_selected_button.setEnabled(False)
self._read_all_button.setEnabled(False)

Expand Down Expand Up @@ -134,25 +142,28 @@ def add_action(callback: typing.Callable[[], None],
header.setSectionResizeMode(QHeaderView.ResizeToContents)
header.setStretchLastSection(False) # Horizontal scroll bar doesn't work if this is enabled

self.setLayout(
lay_out_vertically(
(self._tree, 1),
lay_out_horizontally(
self._read_all_button,
self._read_selected_button,
self._reset_selected_button,
(None, 1),
),
lay_out_horizontally(
self._visibility_selector,
(None, 1),
self._expand_all_button,
self._collapse_all_button,
),
self._status_display
)
buttons_layout = QGridLayout()
buttons_layout.addWidget(self._read_selected_button, 0, 0)
buttons_layout.addWidget(self._reset_selected_button, 0, 2)
buttons_layout.addWidget(self._read_all_button, 1, 0)
buttons_layout.addWidget(self._reset_all_button, 1, 2)
for col in range(3):
buttons_layout.setColumnStretch(col, 1)

layout = lay_out_vertically(
(self._tree, 1),
buttons_layout,
lay_out_horizontally(
self._visibility_selector,
(None, 1),
self._expand_all_button,
self._collapse_all_button,
),
self._status_display
)

self.setLayout(layout)

def reset(self):
self.setup([])

Expand Down Expand Up @@ -197,6 +208,7 @@ def _replace_model(self, register_visibility_predicate: typing.Callable[[Registe
self._reset_selected_button.setEnabled(False)
self._read_selected_button.setEnabled(False)
self._read_all_button.setEnabled(len(filtered_registers) > 0)
self._reset_all_button.setEnabled(len(filtered_registers) > 0)

self._display_status(f'{len(filtered_registers)} registers loaded')

Expand Down Expand Up @@ -224,6 +236,14 @@ def _do_reset_selected(self):

self._write_specific(rv)

def _do_reset_all(self):
rv = {}
for r in self._registers:
if r.has_default_value:
rv[r] = r.default_value

self._write_specific(rv)

def _do_read_all(self):
self._read_specific(self._tree.model().registers)

Expand Down

0 comments on commit 83737ba

Please sign in to comment.