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

config_dialog.py « length_notifier - dev.gajim.org/gajim/gajim-plugins.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: b25e8af0ac56c24455cf7bbbc3a67b1eeebae0f1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# This file is part of Gajim.
#
# Gajim is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Gajim is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Gajim. If not, see <http://www.gnu.org/licenses/>.

from __future__ import annotations

from typing import Any
from typing import TYPE_CHECKING

from gi.repository import GObject
from gi.repository import Gtk

from gajim.gtk.settings import SettingsDialog
from gajim.gtk.settings import SpinSetting
from gajim.gtk.const import Setting
from gajim.gtk.const import SettingKind
from gajim.gtk.const import SettingType

from gajim.plugins.plugins_i18n import _

if TYPE_CHECKING:
    from .length_notifier import LengthNotifierPlugin


class LengthNotifierConfigDialog(SettingsDialog):
    def __init__(self,
                 plugin: LengthNotifierPlugin,
                 parent: Gtk.Window
                 ) -> None:

        self.plugin = plugin
        jids = self.plugin.config['JIDS'] or ''
        settings = [
            Setting('MessageLengthSpinSetting',  # type: ignore
                    _('Message Length'),
                    SettingType.VALUE,
                    self.plugin.config['MESSAGE_WARNING_LENGTH'],
                    callback=self._on_setting,
                    data='MESSAGE_WARNING_LENGTH',
                    desc=_('Message length at which the highlight is shown'),
                    props={'range_': (1, 1000)},
                    ),
            Setting(SettingKind.COLOR,
                    _('Color'),
                    SettingType.VALUE,
                    self.plugin.config['WARNING_COLOR'],
                    callback=self._on_setting,
                    data='WARNING_COLOR',
                    desc=_('Highlight color for the message input'),
                    ),
            Setting(SettingKind.ENTRY,
                    _('Selected Addresses'),
                    SettingType.VALUE,
                    jids,
                    callback=self._on_setting,
                    data='JIDS',
                    desc=_('Enable the plugin for selected XMPP addresses '
                           'only (comma separated)'),
                    ),
            ]

        SettingsDialog.__init__(self, parent,
                                _('Length Notifier Configuration'),
                                Gtk.DialogFlags.MODAL,
                                settings,
                                '',
                                extend=[('MessageLengthSpinSetting',  # type: ignore
                                         SizeSpinSetting)])

    def _on_setting(self, value: Any, data: Any) -> None:
        if isinstance(value, str):
            value.strip()
        self.plugin.config[data] = value
        self.plugin.update()


class SizeSpinSetting(SpinSetting):

    __gproperties__ = {
        'setting-value': (int,
                          'Size',
                          '',
                          1,
                          1000,
                          140,
                          GObject.ParamFlags.READWRITE),
    }

    def __init__(self, *args: Any, **kwargs: Any) -> None:
        SpinSetting.__init__(self, *args, **kwargs)