[turbine] Add support for creating abstract types
- From: Thomas Wood <thos src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [turbine] Add support for creating abstract types
- Date: Sun, 27 Sep 2009 13:31:49 +0000 (UTC)
commit 5287f59670fb207b1fbb14fa03bcfcf408548cc4
Author: Thomas Wood <thos gnome org>
Date: Sun Sep 27 14:31:44 2009 +0100
Add support for creating abstract types
src/turbine/__init__.py | 28 ++++++++++++++++++++++------
src/turbine/turbine.xml | 24 +++++++++++++++++++-----
2 files changed, 41 insertions(+), 11 deletions(-)
---
diff --git a/src/turbine/__init__.py b/src/turbine/__init__.py
index 1183a79..5b85787 100755
--- a/src/turbine/__init__.py
+++ b/src/turbine/__init__.py
@@ -43,11 +43,23 @@ PACKAGE_COPYRIGHT = "Copyright 2009 Intel Corporation\n" \
def make_iface_init_func_name (iface):
return (iface.replace ('_TYPE', '') + '_iface_init').lower()
+def make_indent (str):
+ result = ""
+ while (len (str) > len (result)):
+ result += ' '
+ return result
+
def make_type_definition (data):
define_type = ''
define_extra = ''
if (len (data['interfaces']) > 0):
+
+ if (data['abstract']):
+ define_macro = "G_DEFINE_ABSTRACT_TYPE_WITH_CODE";
+ else:
+ define_macro = "G_DEFINE_TYPE_WITH_CODE"
+
define_extra = "\n"
for row in data['interfaces']:
define_type += "static void " + make_iface_init_func_name (row[0]) \
@@ -56,18 +68,22 @@ def make_type_definition (data):
+ make_iface_init_func_name (row[0]) \
+ " (" + row[1] + " *iface)\n" \
+ "{\n\n}\n\n";
- define_type += "\nG_DEFINE_TYPE_WITH_CODE ("+ data['class_camel'] \
+ define_type += "\n" + define_macro + " ("+ data['class_camel'] \
+ ", " \
+ data['class_lower'] + ", " + data['parent'] + ","
for row in data['interfaces']:
iface = row[0]
- define_type = define_type + '\n ' + \
- "G_IMPLEMENT_INTERFACE (" + iface + ', ' + \
+ define_type = define_type + '\n' + make_indent (define_macro) + \
+ " G_IMPLEMENT_INTERFACE (" + iface + ', ' + \
make_iface_init_func_name (iface) + ')'
define_type += ')'
else:
- define_type = "G_DEFINE_TYPE ("+ data['class_camel'] + ", " \
- + data['class_lower'] + ", " + data['parent'] + ')'
+ if (data['abstract']):
+ define_macro = "G_DEFINE_ABSTRACT_TYPE"
+ else:
+ define_macro = "G_DEFINE_TYPE"
+ define_type = define_macro + " ("+ data['class_camel'] + ", " \
+ + data['class_lower'] + ", " + data['parent'] + ')'
return (define_type, define_extra)
@@ -107,7 +123,7 @@ def make_class_init(data):
def handle_post(button, ui):
string_keys = ("class_camel", "class_lower", "package_upper",
"object_upper", "parent", "parent_camel");
- bool_keys = ("props", "finalize", "dispose", "private");
+ bool_keys = ("props", "finalize", "dispose", "private", "abstract");
data = {}
model = ui.get_object ('interfaces-model')
diff --git a/src/turbine/turbine.xml b/src/turbine/turbine.xml
index 853763a..b4b4767 100644
--- a/src/turbine/turbine.xml
+++ b/src/turbine/turbine.xml
@@ -80,7 +80,7 @@
<property name="left_padding">12</property>
<child>
<object class="GtkTable" id="table1">
- <property name="n_rows">4</property>
+ <property name="n_rows">5</property>
<property name="n_columns">2</property>
<property name="column_spacing">6</property>
<property name="row_spacing">6</property>
@@ -181,6 +181,20 @@
<property name="bottom_attach">2</property>
</packing>
</child>
+ <child>
+ <object class="GtkCheckButton" id="abstract">
+ <property name="label" translatable="yes">Abstract type</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="right_attach">2</property>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ </packing>
+ </child>
</object>
</child>
</object>
@@ -423,8 +437,8 @@
</packing>
</child>
<child>
- <object class="GtkCheckButton" id="props">
- <property name="label" translatable="yes">Include GObject property get/set</property>
+ <object class="GtkCheckButton" id="finalize">
+ <property name="label" translatable="yes">Include finalize</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="active">True</property>
@@ -435,8 +449,8 @@
</packing>
</child>
<child>
- <object class="GtkCheckButton" id="finalize">
- <property name="label" translatable="yes">Include finalize</property>
+ <object class="GtkCheckButton" id="props">
+ <property name="label" translatable="yes">Include GObject property get/set</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="active">True</property>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]