Home modules.gotpike.org
Username: Password: [Create Account]
[Forgot Password?]

Modules

ADT
Database
GTK2
GUI
IP
PiJAX
Public
Sql
Stdio
Subversion
System
Tools
Xosd
lua
v4l2
wx

Recent Changes

Public.Parser.XML2 1.50
Public.ZeroMQ 1.1
Public.Template.Mustache 1.0
Public.Protocols.XMPP 1.4
Sql.Provider.jdbc 1.0

Popular Downloads

Public.Parser.JSON2 1.0
Public.Parser.JSON 0.2
GTK2 2.23
Public.Web.FCGI 1.8
Public.Parser.XML2 1.48


Module Information
GUI.GTK2
Viewing contents of GUI_GTK2-0.1/object.cmod

#include "global.h"
#include "svalue.h"
#include "interpret.h"
#include "constants.h"

#include 

#define THIS_IS_PGTK2_OBJECT
#include "gtk2.h"
#undef THIS_IS_PGTK2_OBJECT

/* This must be included last! */
#include "module.h"

/* Global variables
 */


/*! @module GUI */
/*! @module GTK2 */
/*! @class Object
 *!
 *!   The base class of the GTK+ type hierarchy.
 *!
 *! @b{Signal Prototypes@}
 *!
 *! @i{"destroy"@} void user_function (Object object,mixed user_data)
 */

PIKECLASS Object
{
  /* The C level GTK object */
  CVAR void* data;


  /*! @decl int signal_connect(string signal, function callback,mixed|void callback_arg)
   *!
   *! FIXME: add doc
   */
PIKEFUN int signal_connect(string signal,function callback,mixed|void callback_arg)
{
  gchar* gsignal;
  push_string(signal);
  f_string_to_utf8(1);
  gsignal=g_strdup(Pike_sp[-1].u.string->str);
  pop_stack();

  struct pgtk2_signal_data* sigdata;
  sigdata=g_malloc(sizeof(struct pgtk2_signal_data));
  sigdata->cb=*callback;
  if (args>2)
  {
    sigdata->args=*callback_arg;
    sigdata->argc=1;
  }
  else
  {
    sigdata->argc=0;
  }


  {
    guint sig_id;
    GSignalQuery sig_query;
    GClosure* closure=g_cclosure_new((void*)pgtk2_call_signal,sigdata,pgtk2_destroy_signal);

    g_closure_set_meta_marshal(closure,sigdata,pgtk2_call_signal);

    sig_id = g_signal_lookup(gsignal,(GTK_OBJECT_TYPE(GTK2_LOW)));
    g_signal_query(sig_id,&sig_query);

    if (sig_id==0 || sig_query.signal_id==0)
    {
      RETURN 0;
    }

    g_signal_connect_closure(GTK2_LOW,gsignal,closure,0);
  }

  RETURN 0;
}

  INIT
  {
    gtk2_check_init();
    THIS_OBJECT->data=NULL;
  }

  EXIT
  {
/*    gtk_object_destroy(GTK_OBJECT(THIS_OBJECT->data=NULL));
    THIS_OBJECT->data=NULL; */
  }
}

/*! @endclass */
/*! @endmodule */
/*! @endmodule */

void pike_init_gtk2_object(void)
{
  INIT
}

void pike_exit_gtk2_object(void)
{
  EXIT
}


gotpike.org | Copyright © 2004 - 2019 | Pike is a trademark of Department of Computer and Information Science, Linköping University