|
10 | 10 | __author__ = "robertbasic" |
11 | 11 |
|
12 | 12 | from PyQt5.QtWidgets import (QDialog, QLineEdit, QFormLayout, |
13 | | - QSpinBox, QCheckBox) |
| 13 | + QSpinBox, QCheckBox, QPushButton, |
| 14 | + QVBoxLayout, QHBoxLayout) |
14 | 15 |
|
15 | | -from pugdebug.models.settings import get_setting, set_setting |
| 16 | +from pugdebug.models.settings import (get_setting, set_setting, |
| 17 | + get_default_setting) |
16 | 18 |
|
17 | 19 |
|
18 | 20 | class PugdebugSettingsWindow(QDialog): |
@@ -91,18 +93,29 @@ def __init__(self, parent): |
91 | 93 | max_data = get_setting('debugger/max_data') |
92 | 94 | self.max_data.setText(max_data) |
93 | 95 |
|
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) |
96 | 99 |
|
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) |
106 | 119 |
|
107 | 120 | def get_project_root(self): |
108 | 121 | return self.project_root.text() |
@@ -152,3 +165,29 @@ def handle_max_children_changed(self): |
152 | 165 | def handle_max_data_changed(self): |
153 | 166 | value = self.max_data.text() |
154 | 167 | 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) |
0 commit comments