Thu, 17 Apr 2025 23:35:53 -0500
Add keybinding support to the channel join dialog
Pressing enter in any of the fields will now attempt to join the channel and
pressing escape anywhere will close the dialog.
Testing Done:
Opened the dialog and used the keyboard to join a channel and to close the dialog. Also called in the turtles.
Reviewed at https://reviews.imfreedom.org/r/3971/
|
38538
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
1 | #!/usr/bin/env python3 |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
2 | # |
|
42357
0073491e35ff
Fix postconf script when used as a subproject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
38653
diff
changeset
|
3 | # Purple - Internet Messaging Library |
|
0073491e35ff
Fix postconf script when used as a subproject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
38653
diff
changeset
|
4 | # Copyright (C) Pidgin Developers <devel@pidgin.im> |
|
0073491e35ff
Fix postconf script when used as a subproject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
38653
diff
changeset
|
5 | # |
|
38538
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
6 | # Purple is the legal property of its developers, whose names are too numerous |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
7 | # to list here. Please refer to the COPYRIGHT file distributed with this |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
8 | # source distribution. |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
9 | # |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
10 | # This program is free software; you can redistribute it and/or modify |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
11 | # it under the terms of the GNU General Public License as published by |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
12 | # the Free Software Foundation; either version 2 of the License, or |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
13 | # (at your option) any later version. |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
14 | # |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
15 | # This program is distributed in the hope that it will be useful, |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
16 | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
17 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
18 | # GNU General Public License for more details. |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
19 | # |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
20 | # You should have received a copy of the GNU General Public License |
|
42357
0073491e35ff
Fix postconf script when used as a subproject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
38653
diff
changeset
|
21 | # along with this program; if not, see <https://www.gnu.org/licenses/>. |
|
38538
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
22 | |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
23 | """ |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
24 | Produce meson-config.h in a build directory. |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
25 | |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
26 | This should not really be run manually. It is used by Meson as a |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
27 | post-configuration script to create meson-config.h which for now simply |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
28 | contains information about the configuration used to create the build |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
29 | directory. |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
30 | """ |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
31 | |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
32 | import html |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
33 | import json |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
34 | import os |
|
38653
f5810607660c
Split MESONINTROSPECT input before executing subprocess.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38538
diff
changeset
|
35 | import shlex |
|
38538
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
36 | import subprocess |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
37 | import sys |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
38 | |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
39 | |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
40 | try: |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
41 | introspect = os.environ['MESONINTROSPECT'] |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
42 | except KeyError: |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
43 | print('Meson is too old; ' |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
44 | 'it does not set MESONINTROSPECT for postconf scripts.') |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
45 | sys.exit(1) |
|
38653
f5810607660c
Split MESONINTROSPECT input before executing subprocess.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38538
diff
changeset
|
46 | else: |
|
f5810607660c
Split MESONINTROSPECT input before executing subprocess.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38538
diff
changeset
|
47 | introspect = shlex.split(introspect) |
|
38538
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
48 | |
|
42357
0073491e35ff
Fix postconf script when used as a subproject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
38653
diff
changeset
|
49 | # This is the top-most Meson build root. |
|
38538
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
50 | try: |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
51 | build_root = os.environ['MESON_BUILD_ROOT'] |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
52 | except KeyError: |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
53 | print('Meson is too old; ' |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
54 | 'it does not set MESON_BUILD_ROOT for postconf scripts.') |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
55 | sys.exit(1) |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
56 | |
|
42357
0073491e35ff
Fix postconf script when used as a subproject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
38653
diff
changeset
|
57 | # This is the build root for the Pidgin project itself, which may be different |
|
0073491e35ff
Fix postconf script when used as a subproject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
38653
diff
changeset
|
58 | # if it's used as a subproject. |
|
0073491e35ff
Fix postconf script when used as a subproject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
38653
diff
changeset
|
59 | project_build_root = sys.argv[1] |
|
0073491e35ff
Fix postconf script when used as a subproject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
38653
diff
changeset
|
60 | |
|
38538
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
61 | |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
62 | def tostr(obj): |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
63 | if isinstance(obj, str): |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
64 | return html.escape(repr(obj)) |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
65 | else: |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
66 | return repr(obj) |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
67 | |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
68 | |
|
42357
0073491e35ff
Fix postconf script when used as a subproject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
38653
diff
changeset
|
69 | def normalize_pidgin_option(option): |
|
0073491e35ff
Fix postconf script when used as a subproject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
38653
diff
changeset
|
70 | """Promote Pidgin-as-subproject options to global options.""" |
|
0073491e35ff
Fix postconf script when used as a subproject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
38653
diff
changeset
|
71 | name = option['name'] |
|
0073491e35ff
Fix postconf script when used as a subproject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
38653
diff
changeset
|
72 | # Option names for subprojects are determined by the wrap file name + the |
|
0073491e35ff
Fix postconf script when used as a subproject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
38653
diff
changeset
|
73 | # subproject option. Unfortunately, the wrap file name is determined by the |
|
0073491e35ff
Fix postconf script when used as a subproject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
38653
diff
changeset
|
74 | # superproject, so we can't know what it is. Just assume it is something |
|
0073491e35ff
Fix postconf script when used as a subproject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
38653
diff
changeset
|
75 | # semi-standard. |
|
0073491e35ff
Fix postconf script when used as a subproject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
38653
diff
changeset
|
76 | if ':' in name and name.startswith('pidgin'): |
|
0073491e35ff
Fix postconf script when used as a subproject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
38653
diff
changeset
|
77 | option['name'] = name.split(':')[1] |
|
0073491e35ff
Fix postconf script when used as a subproject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
38653
diff
changeset
|
78 | return option |
|
0073491e35ff
Fix postconf script when used as a subproject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
38653
diff
changeset
|
79 | |
|
0073491e35ff
Fix postconf script when used as a subproject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
38653
diff
changeset
|
80 | |
|
38653
f5810607660c
Split MESONINTROSPECT input before executing subprocess.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38538
diff
changeset
|
81 | conf = subprocess.check_output(introspect + ['--buildoptions', build_root], |
|
38538
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
82 | universal_newlines=True) |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
83 | conf = json.loads(conf) |
|
b542a6787116
Add meson arguments to About dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff
changeset
|
84 | |
|
42357
0073491e35ff
Fix postconf script when used as a subproject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
38653
diff
changeset
|
85 | # Skip all subproject options, or else the config string explodes. |
|
0073491e35ff
Fix postconf script when used as a subproject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
38653
diff
changeset
|
86 | conf = [normalize_pidgin_option(option) for option in conf] |
|
0073491e35ff
Fix postconf script when used as a subproject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
38653
diff
changeset
|
87 | conf = [option for option in conf if ':' not in option['name']] |
|
0073491e35ff
Fix postconf script when used as a subproject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
38653
diff
changeset
|
88 | |
|
0073491e35ff
Fix postconf script when used as a subproject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
38653
diff
changeset
|
89 | with open(os.path.join(project_build_root, 'meson-config.h'), 'w') as f: |
|
42457
d9c2194dbc2b
Fix build information when config uses lists
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42357
diff
changeset
|
90 | f.write('#include <purple.h>\n') |
|
d9c2194dbc2b
Fix build information when config uses lists
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42357
diff
changeset
|
91 | f.write('const PurpleKeyValuePair MESON_ARGS[] = {\n') |
|
d9c2194dbc2b
Fix build information when config uses lists
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42357
diff
changeset
|
92 | for option in sorted(conf, key=lambda x: x['name']): |
|
d9c2194dbc2b
Fix build information when config uses lists
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42357
diff
changeset
|
93 | f.write('{ .key= "' + option['name'] + '",' + |
|
d9c2194dbc2b
Fix build information when config uses lists
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42357
diff
changeset
|
94 | ' .value="' + tostr(option['value']) + '" },\n') |
|
d9c2194dbc2b
Fix build information when config uses lists
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42357
diff
changeset
|
95 | f.write('{ .key=NULL, .value=NULL },\n') |
|
d9c2194dbc2b
Fix build information when config uses lists
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42357
diff
changeset
|
96 | f.write('};\n') |