com gtk/php-gtk: Make libglade constructor work out of the box in most cases.: ext/libglade/libglade.overrides

[email protected] (David Soria Parra) Sun, 16 Oct 2005 21:03:02 +0000
Newsgroups php.gtk.cvs
Message-ID <[email protected]>
Commit:    e328d04b672ccd83b78749e52038c8fa18154926
Author:    Steph Fox <[email protected]>         Sun, 16 Oct 2005 21:03:02 +0000
Parents:   9c8b550720501b04ff4d32d1bfcda60cb824baec
Branches:  master

Link:       http://git.php.net/?p=gtk/php-gtk.git;a=commitdiff;h=e328d04b672ccd83b78749e52038c8fa18154926

Log:
Make libglade constructor work out of the box in most cases.

Changed paths:
  M  ext/libglade/libglade.overrides


Diff:
e328d04b672ccd83b78749e52038c8fa18154926
diff --git a/ext/libglade/libglade.overrides b/ext/libglade/libglade.overrides
index 7d4de89..6a77a32 100644
--- a/ext/libglade/libglade.overrides
+++ b/ext/libglade/libglade.overrides
@@ -8,8 +8,33 @@ ignore-glob
   *_get_type
 %%
 ignore
-  glade_xml_new
-  glade_xml_signal_connect_full
-  glade_xml_signal_connect_data
-  glade_xml_signal_autoconnect_full
+  glade_xml_construct
 
+%% {{{ GladeXML
+%%
+override glade_xml_new
+PHP_METHOD
+{
+    char *fname, *root = NULL, *domain = NULL;
+    zend_bool free_fname, free_root, free_domain;
+    GObject *wrapped_obj;
+
+    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u|uu", &fname, &free_fname, &root, &free_root, &domain, &free_domain)) {
+        PHPG_THROW_CONSTRUCT_EXCEPTION(GladeXML);
+    }
+
+    /* Glade's default name for the toplevel window is hard-coded - but there may be a better way */
+    if (!root) root = (char *)"window1";
+
+    wrapped_obj = (GObject *) glade_xml_new(fname, root, domain);
+    if (free_fname) g_free(fname);
+    if (free_root) g_free(root);
+    if (free_domain) g_free(domain);
+
+    if (!wrapped_obj) {
+        PHPG_THROW_CONSTRUCT_EXCEPTION(GladeXML);
+    }
+    phpg_gobject_set_wrapper(this_ptr, wrapped_obj TSRMLS_CC);
+}
+
+%% }}}