Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dev.gajim.org/gajim/gajim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwurstsalat <mailtrash@posteo.de>2023-10-28 00:06:39 +0300
committerwurstsalat <mailtrash@posteo.de>2023-10-29 13:20:17 +0300
commitd6b85870903d00c1f84f8d879b25e9b197b1f0c6 (patch)
tree5d0d7cc5368722ce69bea6c05af05449a91e0676
parent079f4a629abc000936dd22fa0d6c030696b6dcde (diff)
imprv: Settings: Allow to set step size for spin settings; bind setting value
-rw-r--r--gajim/gtk/accounts.py6
-rw-r--r--gajim/gtk/preferences.py6
-rw-r--r--gajim/gtk/settings.py29
3 files changed, 31 insertions, 10 deletions
diff --git a/gajim/gtk/accounts.py b/gajim/gtk/accounts.py
index 580044cb7..5adab8813 100644
--- a/gajim/gtk/accounts.py
+++ b/gajim/gtk/accounts.py
@@ -1071,9 +1071,9 @@ class PriorityDialog(SettingsDialog):
neg_priority = app.settings.get('enable_negative_priority')
if neg_priority:
- range_ = (-128, 127)
+ range_ = (-128, 127, 1)
else:
- range_ = (0, 127)
+ range_ = (0, 127, 1)
settings = [
Setting(SettingKind.SWITCH,
@@ -1127,7 +1127,7 @@ class CutstomHostnameDialog(SettingsDialog):
SettingType.ACCOUNT_CONFIG,
'custom_port',
bind='account::use_custom_host',
- props={'range_': (0, 65535)}),
+ props={'range_': (0, 65535, 1)}),
Setting(SettingKind.COMBO,
_('Type'),
diff --git a/gajim/gtk/preferences.py b/gajim/gtk/preferences.py
index a7a71abfe..6264ecb56 100644
--- a/gajim/gtk/preferences.py
+++ b/gajim/gtk/preferences.py
@@ -419,7 +419,7 @@ class FilePreview(PreferenceBox):
'preview_size',
desc=_('Size of preview images in pixels'),
bind='enable_file_preview',
- props={'range_': (100, 1000)}),
+ props={'range_': (100, 1000, 1)}),
Setting(SettingKind.POPOVER,
_('File Size Limit'),
@@ -589,7 +589,7 @@ class AutoAwayDialog(SettingsDialog):
SettingType.CONFIG,
'autoawaytime',
desc=_('Minutes until your status gets changed'),
- props={'range_': (1, 720)},
+ props={'range_': (1, 720, 1)},
bind='autoaway'),
Setting(SettingKind.ENTRY,
@@ -617,7 +617,7 @@ class AutoExtendedAwayDialog(SettingsDialog):
SettingType.CONFIG,
'autoxatime',
desc=_('Minutes until your status gets changed'),
- props={'range_': (1, 720)},
+ props={'range_': (1, 720, 1)},
bind='autoxa'),
Setting(SettingKind.ENTRY,
diff --git a/gajim/gtk/settings.py b/gajim/gtk/settings.py
index 715c8db1c..3dbc7b1a7 100644
--- a/gajim/gtk/settings.py
+++ b/gajim/gtk/settings.py
@@ -18,6 +18,7 @@ from __future__ import annotations
from typing import Any
from typing import cast
+from typing import get_args
import logging
from collections.abc import Callable
@@ -33,6 +34,7 @@ from gajim.common import passwords
from gajim.common.i18n import _
from gajim.common.i18n import p_
from gajim.common.setting_values import AllSettingsT
+from gajim.common.setting_values import FloatSettings
from gajim.gtk.const import Setting
from gajim.gtk.const import SettingKind
@@ -562,14 +564,14 @@ class DialogSetting(GenericSetting):
class SpinSetting(GenericSetting):
- def __init__(self, *args: Any, range_: tuple[float, float]) -> None:
+ def __init__(self, *args: Any, range_: tuple[float, float, float]) -> None:
GenericSetting.__init__(self, *args)
- lower, upper = range_
+ lower, upper, step = range_
adjustment = Gtk.Adjustment(value=0,
lower=lower,
upper=upper,
- step_increment=1,
+ step_increment=step,
page_increment=10,
page_size=0)
@@ -579,6 +581,9 @@ class SpinSetting(GenericSetting):
self.spin.set_update_policy(Gtk.SpinButtonUpdatePolicy.IF_VALID)
assert self.setting_value is not None
+ if isinstance(self.setting_value, float):
+ self.spin.set_digits(3)
+
self.spin.set_value(float(self.setting_value))
self.spin.set_halign(Gtk.Align.FILL)
self.spin.set_valign(Gtk.Align.CENTER)
@@ -586,13 +591,29 @@ class SpinSetting(GenericSetting):
self.setting_box.pack_start(self.spin, True, True, 0)
+ assert isinstance(self.value, str)
+ app.settings.connect_signal(self.value,
+ self._on_setting_changed,
+ account=self.account,
+ jid=self.jid)
+ self.connect('destroy', self._on_destroy)
+
self.show_all()
+ def _on_setting_changed(self, value: float, *args: Any) -> None:
+ self.spin.set_value(value)
+
+ def _on_destroy(self, *args: Any) -> None:
+ app.settings.disconnect_signals(self)
+
def on_row_activated(self) -> None:
self.spin.grab_focus()
def on_value_change(self, spin: Gtk.SpinButton, *args: Any) -> None:
- value = spin.get_value_as_int()
+ if self.value in list(get_args(FloatSettings)):
+ value = spin.get_value()
+ else:
+ value = spin.get_value_as_int()
self.set_value(value)