Index: gazpacho/widgetclass.py
===================================================================
--- gazpacho/widgetclass.py	(revision 1051)
+++ gazpacho/widgetclass.py	(working copy)
@@ -84,6 +84,10 @@
         # value as specified in the xml file
         self.pre_create_function = None
 
+        # Executed to create a widget. It's used when the widger
+        # requires special initialization arguments
+        self.create_function = None
+
         # If the widget is a container, this method takes care of adding the
         # needed placeholders.
         self.fill_empty_function = None
@@ -199,6 +203,8 @@
 
             if func_name == tags.FILL_EMPTY:
                 function.override(func, self, 'fill_empty_function')
+            elif func_name == tags.CREATE:
+                function.override(func, self, 'create_function')
             elif func_name == tags.PRE_CREATE:
                 function.override(func, self, 'pre_create_function')
             elif func_name == tags.POST_CREATE:
Index: gazpacho/gladegtk.py
===================================================================
--- gazpacho/gladegtk.py	(revision 1051)
+++ gazpacho/gladegtk.py	(working copy)
@@ -215,6 +215,15 @@
 
 # Pre Create functions
 
+def glade_gtk_arrow_create():
+    return gtk.Arrow(gtk.ARROW_RIGHT, gtk.SHADOW_OUT)
+
+def glade_gtk_font_selection_dialog_create():
+    return gtk.FontSelectionDialog("Font Selection Dialog")
+
+def glade_gtk_color_selection_dialog_create():
+    return gtk.ColorSelectionDialog("Color Selection Dialog")
+
 def glade_gtk_tree_view_pre_create(context, tree_view, interactive=True):
     model = gtk.ListStore(gobject.TYPE_STRING) # dummy model
     tree_view.set_model(model)
Index: gazpacho/widget.py
===================================================================
--- gazpacho/widget.py	(revision 1051)
+++ gazpacho/widget.py	(working copy)
@@ -255,7 +255,10 @@
         ask for options
         """
 
-        gtk_widget = self.klass.library.create_widget(self.klass.type)
+        if self.klass.create_function:
+            gtk_widget = self.klass.create_function()
+        else:
+            gtk_widget = self.klass.library.create_widget(self.klass.type)
 
         if self.klass.pre_create_function:
             self.klass.pre_create_function(self.project.context, gtk_widget,
@@ -629,7 +632,7 @@
                                             self)
 
         # otherwise use the default saver
-        node = self.write_basic_information()
+        node = self.write_basic_information(document)
         
         self.write_properties(document, node)
 
Index: catalogs/gtk+.xml
===================================================================
--- catalogs/gtk+.xml	(revision 1051)
+++ catalogs/gtk+.xml	(working copy)
@@ -581,7 +581,10 @@
       </packing-defaults>      
     </glade-widget-class>
 
-    <glade-widget-class name="GtkArrow" generic-name="arrow" title="Arrow"/>
+    <glade-widget-class name="GtkArrow" generic-name="arrow" title="Arrow">
+      <function name="create" type="legacy" value="glade_gtk_arrow_create"/>
+    </glade-widget-class>
+
     <glade-widget-class name="GtkLayout" generic-name="layout" title="Layout"/>
     <glade-widget-class name="GtkFixed" generic-name="fixed" title="Fixed"/>
     <glade-widget-class name="GtkDrawingArea" generic-name="drawingarea" title="Drawing Area"/>
@@ -590,9 +593,13 @@
     <glade-widget-class name="GtkAlignment" generic-name="alignment" title="Alignment"/>
 
     
-    <glade-widget-class name="GtkColorSelectionDialog" generic-name="colorselectiondialog" title="Color Selection Dialog"/>
+    <glade-widget-class name="GtkColorSelectionDialog" generic-name="colorselectiondialog" title="Color Selection Dialog">
+      <function name="create" type="legacy" value="glade_gtk_color_selection_dialog_create"/>
+    </glade-widget-class>
     
-    <glade-widget-class name="GtkFontSelectionDialog" generic-name="fontselectiondialog" title="Font Selection Dialog"/>
+    <glade-widget-class name="GtkFontSelectionDialog" generic-name="fontselectiondialog" title="Font Selection Dialog">
+      <function name="create" type="legacy" value="glade_gtk_font_selection_dialog_create"/>
+    </glade-widget-class>
     
     <glade-widget-class name="GtkFileChooserDialog" generic-name="fileselection" title="File Chooser"/>
     
