view libpurple/dbus-analyze-signals.py @ 29804:93876452633b

Pull in GtkComboBox changes from GTK+3 branch. Refs #1332, since I seem to have just found it. *** Plucked rev c27b04bb38032682dfa343b38090df1c6eea4edd (qulogic@pidgin.im): Use GtkComboBox instead of GtkOptionMenu in the choice request field for GTK+ 2.4 and up. *** Plucked rev d440cb6510a85d0451248d51de56b02a3a60afd2 (qulogic@pidgin.im): Replace the GtkOptionMenu with a GtkComboBox for the privacy options list on GTK+ 2.4 and up. *** Plucked rev c32e5afffcda0d82fe8b69752ae91ce3dc3bcc61 (qulogic@pidgin.im): Replace GtkOptionMenu with GtkComboBox in the saved status editor for GTK+ 2.4 and up. *** Plucked rev fbe77efc06ba98af604ef878b97fd55924daa018 (qulogic@pidgin.im): Replace GtkOptionMenu with GtkComboBox in the gestures plugin for GTK+ 2.4 and up. But that code's commented out, so this is totally untested. *** Plucked rev 9d8f789a57f4477db7d3cfbb9752b7842ff790dd (qulogic@pidgin.im): Add an enumeration to replace a couple hardcoded numbers in the combo box code for saved statuses. *** Plucked rev c27b04bb38032682dfa343b38090df1c6eea4edd (qulogic@pidgin.im): Use GtkComboBox instead of GtkOptionMenu in the choice request field for GTK+ 2.4 and up. *** Plucked rev d440cb6510a85d0451248d51de56b02a3a60afd2 (qulogic@pidgin.im): Replace the GtkOptionMenu with a GtkComboBox for the privacy options list on GTK+ 2.4 and up. *** Plucked rev c32e5afffcda0d82fe8b69752ae91ce3dc3bcc61 (qulogic@pidgin.im): Replace GtkOptionMenu with GtkComboBox in the saved status editor for GTK+ 2.4 and up. *** Plucked rev fbe77efc06ba98af604ef878b97fd55924daa018 (qulogic@pidgin.im): Replace GtkOptionMenu with GtkComboBox in the gestures plugin for GTK+ 2.4 and up. But that code's commented out, so this is totally untested. *** Plucked rev 9d8f789a57f4477db7d3cfbb9752b7842ff790dd (qulogic@pidgin.im): Add an enumeration to replace a couple hardcoded numbers in the combo box code for saved statuses.
author Elliott Sales de Andrade <qulogic@pidgin.im>
date Fri, 19 Feb 2010 07:29:30 +0000
parents 3a0552df3379
children 9f6b8e5998ec
line wrap: on
line source

# This program takes a C source as the input and produces the list of
# all signals registered.
#
# Output is:
#   <signal name="Changed">
#       <arg name="new_value" type="b"/>
#   </signal>

import re
import sys

# List "excluded" contains signals that shouldn't be exported via
# DBus.  If you remove a signal from this list, please make sure
# that it does not break "make" with the configure option
# "--enable-dbus" turned on.

excluded = [\
    # purple_dbus_signal_emit_purple prevents our "dbus-method-called"
    # signal from being propagated to dbus.
	"dbus-method-called",
    ]

registerregex = re.compile("purple_signal_register[^;]+\"([\w\-]+)\"[^;]+(purple_marshal_\w+)[^;]+;")
nameregex = re.compile('[-_][a-z]')

print "/* Generated by %s.  Do not edit! */" % sys.argv[0]
print "const char *dbus_signals = "
for match in registerregex.finditer(sys.stdin.read()):
    signal = match.group(1)
    marshal = match.group(2)
    if signal in excluded:
        continue

    signal = nameregex.sub(lambda x:x.group()[1].upper(), '-'+signal)
    print "\"<signal name='%s'>\\n\""%signal

    args = marshal.split('_')
    # ['purple', 'marshal', <return type>, '', args...]
    if len(args) > 4:
        for arg in args[4:]:
            if arg == "POINTER":
                type = 'p'
            elif arg == "ENUM":
                type = 'i'
            elif arg == "INT":
                type = 'i'
            elif arg == "UINT":
                type = 'u'
            elif arg == "INT64":
                type = 'x'
            elif arg == "UINT64":
                type = 't'
            elif arg == "BOOLEAN":
                type = 'b'
            print "\"<arg type='%s'/>\\n\""%type

    print "\"</signal>\\n\""

print ";"