<cmdsynopsis>
<command>gtk-builder-convert</command>
<arg choice="opt">--skip-windows</arg>
+<arg choice="opt">--target-version <replaceable>version</replaceable></arg>
<arg choice="opt">--root <replaceable>name</replaceable></arg>
<arg choice="req">input</arg>
<arg choice="req">output</arg>
<term>-w</term>
<listitem><para>Convert everything but GtkWindow subclasses.</para></listitem>
</varlistentry>
+ <varlistentry>
+ <term>--target-version</term>
+ <term>-t</term>
+ <listitem>
+ <para>
+ Some widgets and properties are different between GTK+ versions 2.0 and
+ 3.0, so this option allows to set the desired GTK+ target version.
+ </para>
+ </listitem>
+ </varlistentry>
<varlistentry>
<term>--root</term>
<term>-r</term>
class GtkBuilderConverter(object):
- def __init__(self, skip_windows, root):
+ def __init__(self, skip_windows, target_version, root):
self.skip_windows = skip_windows
+ self.target_version = target_version
self.root = root
self.root_objects = []
self.objects = {}
self._convert_menu(node, popup=True)
elif klass in WINDOWS and self.skip_windows:
self._remove_window(node)
+
+ if self.target_version == "3.0":
+ if klass == "GtkComboBoxEntry":
+ node.setAttribute("class","GtkComboBox")
+ prop = self._dom.createElement("property")
+ prop.setAttribute("name", "has-entry")
+ prop.appendChild(self._dom.createTextNode("True"))
+ node.appendChild(prop)
+ elif klass == "GtkDialog":
+ for child in node.childNodes:
+ if child.nodeType != Node.ELEMENT_NODE:
+ continue
+ if child.tagName != 'property':
+ continue
+ if (child.getAttribute("name") not in ("has-separator", "has_separator")):
+ continue;
+ node.removeChild(child)
+ break
+
self._default_widget_converter(node)
def _default_widget_converter(self, node):
def main(args):
try:
opts, args = getopt.getopt(args[1:], "hwr:",
- ["help", "skip-windows", "root="])
+ ["help",
+ "skip-windows",
+ "target-version=",
+ "root="])
except getopt.GetoptError:
usage()
return 2
skip_windows = False
split = False
root = None
+ target_version = "3.0"
for o, a in opts:
if o in ("-h", "--help"):
usage()
root = a
elif o in ("-w", "--skip-windows"):
skip_windows = True
+ elif o in ("-t", "--target-version"):
+ target_version = a
conv = GtkBuilderConverter(skip_windows=skip_windows,
+ target_version=target_version,
root=root)
conv.parse_file(input_filename)