Skip to content
This repository was archived by the owner on Aug 28, 2020. It is now read-only.

Commit ddf4fab

Browse files
committed
Added a button to reset settings to their defaults
1 parent 429919f commit ddf4fab

File tree

2 files changed

+56
-13
lines changed

2 files changed

+56
-13
lines changed

pugdebug/gui/settings.py

Lines changed: 52 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,11 @@
1010
__author__ = "robertbasic"
1111

1212
from PyQt5.QtWidgets import (QDialog, QLineEdit, QFormLayout,
13-
QSpinBox, QCheckBox)
13+
QSpinBox, QCheckBox, QPushButton,
14+
QVBoxLayout, QHBoxLayout)
1415

15-
from pugdebug.models.settings import get_setting, set_setting
16+
from pugdebug.models.settings import (get_setting, set_setting,
17+
get_default_setting)
1618

1719

1820
class PugdebugSettingsWindow(QDialog):
@@ -91,18 +93,29 @@ def __init__(self, parent):
9193
max_data = get_setting('debugger/max_data')
9294
self.max_data.setText(max_data)
9395

94-
layout = QFormLayout()
95-
self.setLayout(layout)
96+
# Buttons
97+
self.reset_button = QPushButton("Reset to defaults")
98+
self.reset_button.clicked.connect(self.reset_defaults)
9699

97-
layout.addRow("Root:", self.project_root)
98-
layout.addRow("Maps from:", self.path_mapping)
99-
layout.addRow("Host", self.host)
100-
layout.addRow("Port", self.port_number)
101-
layout.addRow("IDE Key", self.idekey)
102-
layout.addRow("", self.break_at_first_line)
103-
layout.addRow("Max depth", self.max_depth)
104-
layout.addRow("Max children", self.max_children)
105-
layout.addRow("Max data", self.max_data)
100+
form_layout = QFormLayout()
101+
form_layout.addRow("Root:", self.project_root)
102+
form_layout.addRow("Maps from:", self.path_mapping)
103+
form_layout.addRow("Host", self.host)
104+
form_layout.addRow("Port", self.port_number)
105+
form_layout.addRow("IDE Key", self.idekey)
106+
form_layout.addRow("", self.break_at_first_line)
107+
form_layout.addRow("Max depth", self.max_depth)
108+
form_layout.addRow("Max children", self.max_children)
109+
form_layout.addRow("Max data", self.max_data)
110+
111+
button_layout = QHBoxLayout()
112+
button_layout.addWidget(self.reset_button)
113+
114+
box_layout = QVBoxLayout()
115+
box_layout.addLayout(form_layout)
116+
box_layout.addLayout(button_layout)
117+
118+
self.setLayout(box_layout)
106119

107120
def get_project_root(self):
108121
return self.project_root.text()
@@ -152,3 +165,29 @@ def handle_max_children_changed(self):
152165
def handle_max_data_changed(self):
153166
value = self.max_data.text()
154167
set_setting('debugger/max_data', value)
168+
169+
def reset_defaults(self):
170+
"""Resets all settings to their deafult values"""
171+
self.reset_default('debugger/host', self.host)
172+
self.reset_default('debugger/port_number', self.port_number)
173+
self.reset_default('debugger/idekey', self.idekey)
174+
self.reset_default('debugger/break_at_first_line',
175+
self.break_at_first_line)
176+
self.reset_default('debugger/max_depth', self.max_depth)
177+
self.reset_default('debugger/max_children', self.max_children)
178+
self.reset_default('debugger/max_data', self.max_data)
179+
self.reset_default('path/project_root', self.project_root)
180+
self.reset_default('path/path_mapping', self.path_mapping)
181+
182+
def reset_default(self, setting, widget):
183+
value = get_default_setting(setting)
184+
185+
if isinstance(widget, QLineEdit):
186+
widget.setText(value)
187+
elif isinstance(widget, QSpinBox):
188+
widget.setValue(value)
189+
elif isinstance(widget, QCheckBox):
190+
widget.setCheckState(value)
191+
else:
192+
name = type(widget).__name__
193+
raise Exception("Don't know how to set a value for %s" % name)

pugdebug/models/settings.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,10 @@ def get_setting(key):
7171
return settings.get(key)
7272

7373

74+
def get_default_setting(key):
75+
return settings.get_default(key)
76+
77+
7478
def has_setting(key):
7579
return settings.has(key)
7680

0 commit comments

Comments
 (0)