/*
This source file is part of Scol
For the latest info, see http://www.scolring.org

Copyright (c) 2010 Stephane Bisaro, aka Iri <iri@irizone.net>

This program is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the Free Software
Foundation; either version 2 of the License, or (at your option) any later
version.

This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place - Suite 330, Boston, MA 02111-1307, USA, or go to
http://www.gnu.org/copyleft/lesser.txt

For others informations, please contact us from http://www.scolring.org/
*/

#include "../include/scol_gtk_builder_refexes.h"

static int scol_gtk_builder_reflexes_beginreflex (GtkWidget *widget, mmachine m, int c)
{
    int cb = OBJbeginreflex (m, ObjGtkWidgetType, (int) widget, c);
    if (cb)
    {
        g_message ("scol_gtk_builder_reflexes_beginreflex error : no callback defined ! errcode = %d", cb);
        return 1;
    }
    return 0;
}

void scol_gtk_builder_reflexes_nodeWidgetM (GtkWidget *widget, mmachine m)
{
    if (scol_gtk_builder_reflexes_beginreflex (widget, m, MMget (m, MMget (m, 1))))
        return;

    OBJcallreflex (m, 0);
    return;
}

void scol_gtk_builder_reflexes_nodeWindowWidgetM (GtkWindow *win, GtkWidget *widget, mmachine m)
{
    return;
}

void scol_gtk_builder_reflexes_nodeWidgetGintM (GtkWidget *widget, gint v, mmachine m)
{
    return;
}

static GCallback scol_gtk_builder_cb_define_fun (GCallback fun, const gchar *t, const gchar *s)
{
    /*if (!strcmp (t, "GtkDialog"))
        if (!strcmp (s, "response"))
            fun = G_CALLBACK (scol_gtk_builder_reflexes_nodeWidgetGintM);
        else
            fun = G_CALLBACK (scol_gtk_builder_reflexes_nodeWidgetM);

    else if (!strcmp (t, "GtkWindow"))
        if (!strcmp (s, "set-focus"))
            fun = G_CALLBACK (scol_gtk_builder_reflexes_nodeWindowWidgetM);
        else
            fun = G_CALLBACK (scol_gtk_builder_reflexes_nodeWidgetM);

    else if (!strcmp (t, "GtkButton"))
        fun = G_CALLBACK (scol_gtk_builder_reflexes_nodeWidgetM);

    else */if (!strcmp (s, "clicked"))
        fun = G_CALLBACK (scol_gtk_builder_reflexes_nodeWidgetM);

    else
        fun = G_CALLBACK (NULL);
    return fun;
}


void scol_gtk_builder_cb_define (GObject *object, const gchar *ssignal, mmachine m)
{
    const gchar *t_object;
    GCallback fun = NULL;
MMechostr (0, "...................TESTTTTTT\n");
    g_message ("scol_gtk_builder_cb_define : entering");

    /*mmachine m2m;
    m2m = g_malloc (sizeof (struct Mmachine));
    memcpy (&m2m, &m, sizeof (m2m));*/

    t_object = G_OBJECT_TYPE_NAME (object);

    fun = scol_gtk_builder_cb_define_fun (fun, t_object, ssignal);

    g_signal_connect (object, ssignal, fun, m);
    return;
}
