Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions news.d/bugfix/1789.ui.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Fix default window sizes and extensions config table.
54 changes: 37 additions & 17 deletions plover/gui_qt/config_window.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,22 @@
Signal,
Slot,
)
from typing import Set

from PySide6.QtWidgets import (
QAbstractScrollArea,
QCheckBox,
QComboBox,
QDialog,
QDialogButtonBox,
QFileDialog,
QFormLayout,
QFrame,
QHeaderView,
QGroupBox,
QLabel,
QScrollArea,
QSizePolicy,
QSpinBox,
QStyledItemDelegate,
QTableWidget,
Expand Down Expand Up @@ -120,7 +125,7 @@ def handle_edited_path(self):
class TableOption(QTableWidget):
def __init__(self):
super().__init__()
self.horizontalHeader().setStretchLastSection(True)
self.horizontalHeader().setStretchLastSection(False)
self.setSelectionMode(self.SelectionMode.SingleSelection)
self.setTabKeyNavigation(False)
self.setVerticalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOff)
Expand Down Expand Up @@ -212,31 +217,40 @@ class MultipleChoicesOption(TableOption):
valueChanged = Signal(object)

LABELS = (
# i18n: Widget: “MultipleChoicesOption”.
_("Choice"),
# i18n: Widget: “MultipleChoicesOption”.
_("Selected"),
# i18n: Widget: “MultipleChoicesOption”.
_("Choice"),
)

# i18n: Widget: “MultipleChoicesOption”.
def __init__(self, choices=None, labels=None):
super().__init__()
if labels is None:
labels = self.LABELS
self._value = {}
self._value: Set[str] = set()
self._updating = False
self._choices = {} if choices is None else choices
self._reversed_choices = {
translation: choice for choice, translation in choices.items()
}
self.setSizeAdjustPolicy(
QAbstractScrollArea.SizeAdjustPolicy.AdjustToContentsOnFirstShow
)
self.setSizePolicy(
QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Fixed)
)
self.setColumnCount(2)
self.setHorizontalHeaderLabels(labels)
header = self.horizontalHeader()
header.setSectionResizeMode(0, QHeaderView.ResizeMode.ResizeToContents)
header.setSectionResizeMode(1, QHeaderView.ResizeMode.ResizeToContents)
header.setStretchLastSection(True)
header.setStretchLastSection(True)
self.cellChanged.connect(self._on_cell_changed)

def setValue(self, value):
self._updating = True
self.resizeColumnsToContents()
self.setMinimumSize(self.viewportSizeHint())
self.setRowCount(0)
if value is None:
value = set()
Expand All @@ -248,9 +262,6 @@ def setValue(self, value):
for choice in sorted(self._reversed_choices):
row += 1
self.insertRow(row)
item = QTableWidgetItem(self._choices[choice])
item.setFlags(item.flags() & ~Qt.ItemFlag.ItemIsEditable)
self.setItem(row, 0, item)
item = QTableWidgetItem()
item.setFlags(
(item.flags() & ~Qt.ItemFlag.ItemIsEditable)
Expand All @@ -259,19 +270,28 @@ def setValue(self, value):
item.setCheckState(
Qt.CheckState.Checked if choice in value else Qt.CheckState.Unchecked
)
self.setItem(row, 0, item)
item = QTableWidgetItem(self._choices[choice])
item.setFlags(item.flags() & ~Qt.ItemFlag.ItemIsEditable)
self.setItem(row, 1, item)
self.resizeColumnsToContents()
self.setMinimumSize(self.viewportSizeHint())
self._updating = False

def _on_cell_changed(self, row, column):
if self._updating:
return
assert column == 1
choice = self._reversed_choices[
self.item(row, 0).data(Qt.ItemDataRole.DisplayRole)
]
if self.item(row, 1).checkState():
assert column == 0
name_item = self.item(row, 1)
state_item = self.item(row, 0)
if name_item is None or state_item is None:
return
name = name_item.data(Qt.ItemDataRole.DisplayRole)
if name is None:
return
choice = self._reversed_choices.get(name)
if choice is None:
return
if state_item.checkState() == Qt.CheckState.Checked:
self._value.add(choice)
else:
self._value.discard(choice)
Expand Down Expand Up @@ -515,15 +535,15 @@ def __init__(self, engine):
_("Plugins"),
(
ConfigOption(
_("Extension:"),
_("Extensions:"),
"enabled_extensions",
partial(
MultipleChoicesOption,
choices={
plugin.name: plugin.name
for plugin in registry.list_plugins("extension")
},
labels=(_("Name"), _("Enabled")),
labels=(_("Enabled"), _("Name")),
),
_("Configure enabled plugin extensions."),
),
Expand Down
4 changes: 2 additions & 2 deletions plover/gui_qt/config_window.ui
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>471</width>
<height>480</height>
<width>500</width>
<height>500</height>
</rect>
</property>
<property name="windowTitle">
Expand Down
64 changes: 43 additions & 21 deletions plover/gui_qt/main_window.ui
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>329</width>
<height>427</height>
<width>700</width>
<height>500</height>
</rect>
</property>
<property name="minimumSize">
Expand Down Expand Up @@ -40,7 +40,22 @@
</size>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<item row="0" column="0" colspan="3">
<spacer name="topSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<height>4</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="0">
<widget class="QGroupBox" name="groupBox">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
Expand Down Expand Up @@ -107,14 +122,29 @@
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="2" column="0" colspan="3">
<widget class="DictionariesWidget" name="dictionaries" native="true"/>
</item>
<item row="0" column="1">
<widget class="QGroupBox" name="groupBox">
</layout>
</widget>
</item>
<item row="2" column="0" colspan="3">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<height>10</height>
</size>
</property>
</spacer>
</item>
<item row="3" column="0" colspan="3">
<widget class="DictionariesWidget" name="dictionaries" native="true"/>
</item>
<item row="1" column="1">
<widget class="QGroupBox" name="groupBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
Expand Down Expand Up @@ -143,19 +173,11 @@
</widget>
</item>
</layout>
</widget>
</item>
</widget>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>329</width>
<height>25</height>
</rect>
</property>
<widget class="QMenu" name="menu_File">
<property name="title">
<string>&amp;File</string>
Expand Down
4 changes: 2 additions & 2 deletions plover/gui_qt/plugins_manager.ui
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>600</height>
<width>1000</width>
<height>700</height>
</rect>
</property>
<property name="windowTitle">
Expand Down
Loading