libpurple/dbus-analyze-types.py

Wed, 20 Jun 2018 02:13:44 -0400

author
Elliott Sales de Andrade <qulogic@pidgin.im>
date
Wed, 20 Jun 2018 02:13:44 -0400
changeset 39181
f0cd633d86d4
parent 38358
30ba44276e74
permissions
-rw-r--r--

prefs: Add binding versions of pref widget functions.

These just bind settings to existing widgets and copy the saved value to
the widget, except for combos which are produced from runtime lists.
Those are populated in a similar way as before.

There are some extra _bind_ words that will probably be dropped once the
other functions are unused.

11146
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
1 # This program takes a C header/source as the input and produces
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
2 #
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
3 # with --keyword=enum: the list of all enums
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
4 # with --keyword=struct: the list of all structs
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
5 #
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
6 # the output styles:
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
7 #
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
8 # --enum DBUS_POINTER_NAME1,
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
9 # DBUS_POINTER_NAME2,
33932
c49bfe98716d Fix build and other scripts on Python3.
Ashish Gupta <ashmew2@gmail.com>
parents: 15435
diff changeset
10 # DBUS_POINTER_NAME3,
c49bfe98716d Fix build and other scripts on Python3.
Ashish Gupta <ashmew2@gmail.com>
parents: 15435
diff changeset
11 #
11146
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
12 # --list NAME1
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
13 # NAME2
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
14 # NAME3
33932
c49bfe98716d Fix build and other scripts on Python3.
Ashish Gupta <ashmew2@gmail.com>
parents: 15435
diff changeset
15 #
11146
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
16
38313
38a40ddbb9b7 Ensure all Python scripts are Py3k compatible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
17 from __future__ import absolute_import, division, print_function
37936
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
18
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
19 import argparse
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
20 import fileinput
11146
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
21 import re
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
22 import sys
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
23
11331
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11171
diff changeset
24
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11171
diff changeset
25 def toprint(match, line):
37936
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
26 if args.verbatim:
11331
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11171
diff changeset
27 return line
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11171
diff changeset
28 else:
37936
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
29 return args.pattern % match
11146
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
30
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
31
37936
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
32 parser = argparse.ArgumentParser()
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
33 parser.add_argument('input', nargs='*',
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
34 help='Input files (or stdin if not specified)')
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
35 parser.add_argument('-o', '--output', type=argparse.FileType('w'),
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
36 help='Output to file instead of stdout')
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
37 parser.add_argument('--keyword', default='struct',
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
38 help='What keyword to search')
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
39 parser.add_argument('--pattern', default='%s',
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
40 help='String pattern used to print matches')
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
41 parser.add_argument('--verbatim', action='store_true',
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
42 help='Return full line of match instead of match itself')
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
43 args = parser.parse_args()
11331
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11171
diff changeset
44
37984
6a5ca046a90d Make all Python files PEP8 compatible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37983
diff changeset
45 structregexp1 = re.compile(
6a5ca046a90d Make all Python files PEP8 compatible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37983
diff changeset
46 r"^(typedef\s+)?%s\s+\w+\s+(\w+)\s*;" % (args.keyword, ))
6a5ca046a90d Make all Python files PEP8 compatible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37983
diff changeset
47 structregexp2 = re.compile(r"^(typedef\s+)?%s" % (args.keyword, ))
11146
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
48 structregexp3 = re.compile(r"^}\s+(\w+)\s*;")
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
49
37984
6a5ca046a90d Make all Python files PEP8 compatible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37983
diff changeset
50 print("/* Generated by %s. Do not edit! */" % (sys.argv[0], ),
37936
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
51 file=args.output)
11331
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11171
diff changeset
52
37936
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
53 myinput = fileinput.input(args.input)
11171
a25653d60f9c [gaim-migrate @ 13272]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11146
diff changeset
54
11146
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
55 for line in myinput:
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
56 match = structregexp1.match(line)
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
57 if match is not None:
37936
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
58 print(toprint(match.group(2), line), file=args.output)
11146
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
59 continue
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
60
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
61 match = structregexp2.match(line)
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
62 if match is not None:
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
63 while True:
37936
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
64 if args.verbatim:
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
65 print(line.rstrip(), file=args.output)
33932
c49bfe98716d Fix build and other scripts on Python3.
Ashish Gupta <ashmew2@gmail.com>
parents: 15435
diff changeset
66 line = next(myinput)
11146
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
67 match = structregexp3.match(line)
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
68 if match is not None:
37936
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
69 print(toprint(match.group(1), line), file=args.output)
11146
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
70 break
37985
c3bab3be9695 Remove some "clever" Python code.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37984
diff changeset
71 if line[0] not in " \t{\n":
37936
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
72 if args.verbatim:
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
73 print(line, file=args.output)
11146
c56333373e3c [gaim-migrate @ 13217]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
74 break

mercurial