123 lines
4.0 KiB
Diff
123 lines
4.0 KiB
Diff
Add compatibility with Python 3 (keeping compatibility with Python 2.7)
|
|
|
|
--- gtk+-2.24.32/gtk/gtk-builder-convert (original)
|
|
+++ gtk+-2.24.32/gtk/gtk-builder-convert (refactored)
|
|
@@ -36,10 +36,11 @@
|
|
|
|
Report bugs to http://bugzilla.gnome.org/."""
|
|
|
|
+from __future__ import print_function
|
|
import getopt
|
|
import os
|
|
import sys
|
|
-
|
|
+import subprocess
|
|
from xml.dom import minidom, Node
|
|
|
|
DIALOGS = ['GtkDialog',
|
|
@@ -47,13 +48,6 @@
|
|
'GtkMessageDialog']
|
|
WINDOWS = ['GtkWindow'] + DIALOGS
|
|
|
|
-# The subprocess is only available in Python 2.4+
|
|
-try:
|
|
- import subprocess
|
|
- subprocess # pyflakes
|
|
-except ImportError:
|
|
- subprocess = None
|
|
-
|
|
def get_child_nodes(node):
|
|
assert node.tagName == 'object'
|
|
nodes = []
|
|
@@ -167,7 +161,11 @@
|
|
|
|
def to_xml(self):
|
|
xml = self._dom.toprettyxml("", "")
|
|
- return xml.encode('utf-8')
|
|
+ if sys.version_info < (3, 0):
|
|
+ # Python 2: convert with explicit encoding
|
|
+ # (For Python 3, the result is left as text)
|
|
+ xml = xml.encode('utf-8')
|
|
+ return xml
|
|
|
|
#
|
|
# Private
|
|
@@ -259,7 +257,7 @@
|
|
for node in objects:
|
|
self._convert(node.getAttribute("class"), node)
|
|
if self._get_object(node.getAttribute('id')) is not None:
|
|
- print "WARNING: duplicate id \"" + node.getAttribute('id') + "\""
|
|
+ print("WARNING: duplicate id \"" + node.getAttribute('id') + "\"")
|
|
self.objects[node.getAttribute('id')] = node
|
|
|
|
# Convert Gazpachos UI tag
|
|
@@ -272,13 +270,9 @@
|
|
|
|
# Output the newly created root objects and sort them
|
|
# by attribute id
|
|
- # FIXME: Use sorted(self.root_objects,
|
|
- # key=lambda n: n.getAttribute('id'),
|
|
- # reverse=True):
|
|
- # when we can depend on python 2.4 or higher
|
|
- root_objects = self.root_objects[:]
|
|
- root_objects.sort(lambda a, b: cmp(b.getAttribute('id'),
|
|
- a.getAttribute('id')))
|
|
+ root_objects = sorted(self.root_objects,
|
|
+ key=lambda n: n.getAttribute('id'),
|
|
+ reverse=True)
|
|
for obj in root_objects:
|
|
self._interface.childNodes.insert(0, obj)
|
|
|
|
@@ -461,8 +455,8 @@
|
|
if signal_name in ['activate', 'toggled']:
|
|
action.appendChild(signal)
|
|
else:
|
|
- print 'Unhandled signal %s::%s' % (node.getAttribute('class'),
|
|
- signal_name)
|
|
+ print('Unhandled signal %s::%s' % (node.getAttribute('class'),
|
|
+ signal_name))
|
|
|
|
if not uimgr.childNodes:
|
|
child = self._dom.createElement('child')
|
|
@@ -481,8 +475,8 @@
|
|
for accelerator in get_accelerator_nodes(node):
|
|
signal_name = accelerator.getAttribute('signal')
|
|
if signal_name != 'activate':
|
|
- print 'Unhandled accelerator signal for %s::%s' % (
|
|
- node.getAttribute('class'), signal_name)
|
|
+ print('Unhandled accelerator signal for %s::%s' % (
|
|
+ node.getAttribute('class'), signal_name))
|
|
continue
|
|
accelerator.removeAttribute('signal')
|
|
child.appendChild(accelerator)
|
|
@@ -741,13 +735,14 @@
|
|
|
|
s = subprocess.Popen([filename, '--format', '-'],
|
|
stdin=subprocess.PIPE,
|
|
- stdout=subprocess.PIPE)
|
|
+ stdout=subprocess.PIPE,
|
|
+ universal_newlines=True)
|
|
s.stdin.write(output)
|
|
s.stdin.close()
|
|
return s.stdout.read()
|
|
|
|
def usage():
|
|
- print __doc__
|
|
+ print(__doc__)
|
|
|
|
def main(args):
|
|
try:
|
|
@@ -788,10 +783,10 @@
|
|
|
|
xml = _indent(conv.to_xml())
|
|
if output_filename == "-":
|
|
- print xml
|
|
+ print(xml)
|
|
else:
|
|
open(output_filename, 'w').write(xml)
|
|
- print "Wrote", output_filename
|
|
+ print("Wrote", output_filename)
|
|
|
|
return 0
|
|
|