Skip to content

Commit 093d2f3

Browse files
authored
Fix default window sizes and extensions config table (#1789)
1 parent 9220e32 commit 093d2f3

File tree

5 files changed

+85
-42
lines changed

5 files changed

+85
-42
lines changed

news.d/bugfix/1789.ui.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix default window sizes and extensions config table.

plover/gui_qt/config_window.py

Lines changed: 37 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,22 @@
77
Signal,
88
Slot,
99
)
10+
from typing import Set
11+
1012
from PySide6.QtWidgets import (
13+
QAbstractScrollArea,
1114
QCheckBox,
1215
QComboBox,
1316
QDialog,
1417
QDialogButtonBox,
1518
QFileDialog,
1619
QFormLayout,
1720
QFrame,
21+
QHeaderView,
1822
QGroupBox,
1923
QLabel,
2024
QScrollArea,
25+
QSizePolicy,
2126
QSpinBox,
2227
QStyledItemDelegate,
2328
QTableWidget,
@@ -120,7 +125,7 @@ def handle_edited_path(self):
120125
class TableOption(QTableWidget):
121126
def __init__(self):
122127
super().__init__()
123-
self.horizontalHeader().setStretchLastSection(True)
128+
self.horizontalHeader().setStretchLastSection(False)
124129
self.setSelectionMode(self.SelectionMode.SingleSelection)
125130
self.setTabKeyNavigation(False)
126131
self.setVerticalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOff)
@@ -212,31 +217,40 @@ class MultipleChoicesOption(TableOption):
212217
valueChanged = Signal(object)
213218

214219
LABELS = (
215-
# i18n: Widget: “MultipleChoicesOption”.
216-
_("Choice"),
217220
# i18n: Widget: “MultipleChoicesOption”.
218221
_("Selected"),
222+
# i18n: Widget: “MultipleChoicesOption”.
223+
_("Choice"),
219224
)
220225

221226
# i18n: Widget: “MultipleChoicesOption”.
222227
def __init__(self, choices=None, labels=None):
223228
super().__init__()
224229
if labels is None:
225230
labels = self.LABELS
226-
self._value = {}
231+
self._value: Set[str] = set()
227232
self._updating = False
228233
self._choices = {} if choices is None else choices
229234
self._reversed_choices = {
230235
translation: choice for choice, translation in choices.items()
231236
}
237+
self.setSizeAdjustPolicy(
238+
QAbstractScrollArea.SizeAdjustPolicy.AdjustToContentsOnFirstShow
239+
)
240+
self.setSizePolicy(
241+
QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Fixed)
242+
)
232243
self.setColumnCount(2)
233244
self.setHorizontalHeaderLabels(labels)
245+
header = self.horizontalHeader()
246+
header.setSectionResizeMode(0, QHeaderView.ResizeMode.ResizeToContents)
247+
header.setSectionResizeMode(1, QHeaderView.ResizeMode.ResizeToContents)
248+
header.setStretchLastSection(True)
249+
header.setStretchLastSection(True)
234250
self.cellChanged.connect(self._on_cell_changed)
235251

236252
def setValue(self, value):
237253
self._updating = True
238-
self.resizeColumnsToContents()
239-
self.setMinimumSize(self.viewportSizeHint())
240254
self.setRowCount(0)
241255
if value is None:
242256
value = set()
@@ -248,9 +262,6 @@ def setValue(self, value):
248262
for choice in sorted(self._reversed_choices):
249263
row += 1
250264
self.insertRow(row)
251-
item = QTableWidgetItem(self._choices[choice])
252-
item.setFlags(item.flags() & ~Qt.ItemFlag.ItemIsEditable)
253-
self.setItem(row, 0, item)
254265
item = QTableWidgetItem()
255266
item.setFlags(
256267
(item.flags() & ~Qt.ItemFlag.ItemIsEditable)
@@ -259,19 +270,28 @@ def setValue(self, value):
259270
item.setCheckState(
260271
Qt.CheckState.Checked if choice in value else Qt.CheckState.Unchecked
261272
)
273+
self.setItem(row, 0, item)
274+
item = QTableWidgetItem(self._choices[choice])
275+
item.setFlags(item.flags() & ~Qt.ItemFlag.ItemIsEditable)
262276
self.setItem(row, 1, item)
263277
self.resizeColumnsToContents()
264-
self.setMinimumSize(self.viewportSizeHint())
265278
self._updating = False
266279

267280
def _on_cell_changed(self, row, column):
268281
if self._updating:
269282
return
270-
assert column == 1
271-
choice = self._reversed_choices[
272-
self.item(row, 0).data(Qt.ItemDataRole.DisplayRole)
273-
]
274-
if self.item(row, 1).checkState():
283+
assert column == 0
284+
name_item = self.item(row, 1)
285+
state_item = self.item(row, 0)
286+
if name_item is None or state_item is None:
287+
return
288+
name = name_item.data(Qt.ItemDataRole.DisplayRole)
289+
if name is None:
290+
return
291+
choice = self._reversed_choices.get(name)
292+
if choice is None:
293+
return
294+
if state_item.checkState() == Qt.CheckState.Checked:
275295
self._value.add(choice)
276296
else:
277297
self._value.discard(choice)
@@ -515,15 +535,15 @@ def __init__(self, engine):
515535
_("Plugins"),
516536
(
517537
ConfigOption(
518-
_("Extension:"),
538+
_("Extensions:"),
519539
"enabled_extensions",
520540
partial(
521541
MultipleChoicesOption,
522542
choices={
523543
plugin.name: plugin.name
524544
for plugin in registry.list_plugins("extension")
525545
},
526-
labels=(_("Name"), _("Enabled")),
546+
labels=(_("Enabled"), _("Name")),
527547
),
528548
_("Configure enabled plugin extensions."),
529549
),

plover/gui_qt/config_window.ui

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
<rect>
77
<x>0</x>
88
<y>0</y>
9-
<width>471</width>
10-
<height>480</height>
9+
<width>500</width>
10+
<height>500</height>
1111
</rect>
1212
</property>
1313
<property name="windowTitle">

plover/gui_qt/main_window.ui

Lines changed: 43 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99
<rect>
1010
<x>0</x>
1111
<y>0</y>
12-
<width>329</width>
13-
<height>427</height>
12+
<width>700</width>
13+
<height>500</height>
1414
</rect>
1515
</property>
1616
<property name="minimumSize">
@@ -40,7 +40,22 @@
4040
</size>
4141
</property>
4242
<layout class="QGridLayout" name="gridLayout">
43-
<item row="0" column="0">
43+
<item row="0" column="0" colspan="3">
44+
<spacer name="topSpacer">
45+
<property name="orientation">
46+
<enum>Qt::Vertical</enum>
47+
</property>
48+
<property name="sizeType">
49+
<enum>QSizePolicy::Fixed</enum>
50+
</property>
51+
<property name="sizeHint" stdset="0">
52+
<size>
53+
<height>4</height>
54+
</size>
55+
</property>
56+
</spacer>
57+
</item>
58+
<item row="1" column="0">
4459
<widget class="QGroupBox" name="groupBox">
4560
<property name="sizePolicy">
4661
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
@@ -107,14 +122,29 @@
107122
</property>
108123
</widget>
109124
</item>
110-
</layout>
111-
</widget>
112-
</item>
113-
<item row="2" column="0" colspan="3">
114-
<widget class="DictionariesWidget" name="dictionaries" native="true"/>
115-
</item>
116-
<item row="0" column="1">
117-
<widget class="QGroupBox" name="groupBox">
125+
</layout>
126+
</widget>
127+
</item>
128+
<item row="2" column="0" colspan="3">
129+
<spacer name="verticalSpacer">
130+
<property name="orientation">
131+
<enum>Qt::Vertical</enum>
132+
</property>
133+
<property name="sizeType">
134+
<enum>QSizePolicy::Fixed</enum>
135+
</property>
136+
<property name="sizeHint" stdset="0">
137+
<size>
138+
<height>10</height>
139+
</size>
140+
</property>
141+
</spacer>
142+
</item>
143+
<item row="3" column="0" colspan="3">
144+
<widget class="DictionariesWidget" name="dictionaries" native="true"/>
145+
</item>
146+
<item row="1" column="1">
147+
<widget class="QGroupBox" name="groupBox">
118148
<property name="sizePolicy">
119149
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
120150
<horstretch>0</horstretch>
@@ -143,19 +173,11 @@
143173
</widget>
144174
</item>
145175
</layout>
146-
</widget>
147-
</item>
176+
</widget>
177+
</item>
148178
</layout>
149179
</widget>
150180
<widget class="QMenuBar" name="menubar">
151-
<property name="geometry">
152-
<rect>
153-
<x>0</x>
154-
<y>0</y>
155-
<width>329</width>
156-
<height>25</height>
157-
</rect>
158-
</property>
159181
<widget class="QMenu" name="menu_File">
160182
<property name="title">
161183
<string>&amp;File</string>

plover/gui_qt/plugins_manager.ui

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
<rect>
77
<x>0</x>
88
<y>0</y>
9-
<width>800</width>
10-
<height>600</height>
9+
<width>1000</width>
10+
<height>700</height>
1111
</rect>
1212
</property>
1313
<property name="windowTitle">

0 commit comments

Comments
 (0)