/*
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/main.h"


void scol_gtk_common_object_type (GtkWidget *widget, char *s, size_t len)
{
    strncpy (s, G_OBJECT_TYPE_NAME (G_OBJECT (widget)), len);
    s[len] = '\0';
    return;
}

/* Flags */
int SCOL_WIDGET_WITH_SIMPLETEXT (mmachine m) { MMpush (m, ITOM (WIDGET_WITH_SIMPLETEXT)); return 0; }
int SCOL_WIDGET_WITH_MNEMONIC (mmachine m) { MMpush (m, ITOM (WIDGET_WITH_MNEMONIC)); return 0; }
int SCOL_WIDGET_WITH_MARKUP (mmachine m) { MMpush (m, ITOM (WIDGET_WITH_MARKUP)); return 0; }

int SCOL_DEVICE_MOUSE (mmachine m) { MMpush (m, ITOM (DEVICE_MOUSE)); return 0; }
int SCOL_DEVICE_PEN (mmachine m) { MMpush (m, ITOM (DEVICE_PEN)); return 0; }
int SCOL_DEVICE_ERASER (mmachine m) { MMpush (m, ITOM (DEVICE_ERASER)); return 0; }
int SCOL_DEVICE_CURSOR (mmachine m) { MMpush (m, ITOM (DEVICE_CURSOR)); return 0; }
int SCOL_DEVICE_KEYBOARD (mmachine m) { MMpush (m, ITOM (DEVICE_KEYBOARD)); return 0; }
int SCOL_DEVICE_UNKNOWN (mmachine m) { MMpush (m, ITOM (DEVICE_UNKNOWN)); return 0; }

int SCOL_WINDOW_NOTSHOWN (mmachine m) { MMpush (m, ITOM (WINDOW_NOTSHOWN)); return 0; }
int SCOL_WINDOW_ICONIFIED (mmachine m) { MMpush (m, ITOM (WINDOW_ICONIFIED)); return 0; }
int SCOL_WINDOW_MAXIMIZED (mmachine m) { MMpush (m, ITOM (WINDOW_MAXIMIZED)); return 0; }
int SCOL_WINDOW_STICKY (mmachine m) { MMpush (m, ITOM (WINDOW_STICKY)); return 0; }
int SCOL_WINDOW_FULLSCREEN (mmachine m) { MMpush (m, ITOM (WINDOW_FULLSCREEN)); return 0; }
int SCOL_WINDOW_ABOVE (mmachine m) { MMpush (m, ITOM (WINDOW_ABOVE)); return 0; }
int SCOL_WINDOW_BELOW (mmachine m) { MMpush (m, ITOM (WINDOW_BELOW)); return 0; }
int SCOL_WINDOW_STATE_UNKNOWN (mmachine m) { MMpush (m, ITOM (WINDOW_STATE_UNKNOWN)); return 0; }

int SCOL_ICON_SIZE_MENU (mmachine m) { MMpush (m, ITOM (ICON_SIZE_MENU)); return 0; }
int SCOL_ICON_SIZE_SMALL_TOOLBAR (mmachine m) { MMpush (m, ITOM (ICON_SIZE_SMALL_TOOLBAR)); return 0; }
int SCOL_ICON_SIZE_LARGE_TOOLBAR (mmachine m) { MMpush (m, ITOM (ICON_SIZE_LARGE_TOOLBAR)); return 0; }
int SCOL_ICON_SIZE_BUTTON (mmachine m) { MMpush (m, ITOM (ICON_SIZE_BUTTON)); return 0; }
int SCOL_ICON_SIZE_DND (mmachine m) { MMpush (m, ITOM (ICON_SIZE_DND)); return 0; }
int SCOL_ICON_SIZE_DIALOG (mmachine m) { MMpush (m, ITOM (ICON_SIZE_DIALOG)); return 0; }


/* API definitions : */

#define GTK_COMMON_PKG_NB           23


char* gtk_common_name[GTK_COMMON_PKG_NB]=
{
    "SCOL_WIDGET_WITH_SIMPLETEXT", "SCOL_WIDGET_WITH_MNEMONIC", "SCOL_WIDGET_WITH_MARKUP",

    "SCOL_DEVICE_MOUSE", "SCOL_DEVICE_PEN", "SCOL_DEVICE_ERASER",
    "SCOL_DEVICE_CURSOR", "SCOL_DEVICE_KEYBOARD", "SCOL_DEVICE_UNKNOWN",

    "SCOL_WINDOW_NOTSHOWN", "SCOL_WINDOW_ICONIFIED", "SCOL_WINDOW_MAXIMIZED",
    "SCOL_WINDOW_STICKY", "SCOL_WINDOW_FULLSCREEN", "SCOL_WINDOW_ABOVE",
    "SCOL_WINDOW_BELOW", "SCOL_WINDOW_STATE_UNKNOWN",

    "SCOL_ICON_SIZE_MENU", "SCOL_ICON_SIZE_SMALL_TOOLBAR", "SCOL_ICON_SIZE_LARGE_TOOLBAR",
    "SCOL_ICON_SIZE_BUTTON", "SCOL_ICON_SIZE_DND", "SCOL_ICON_SIZE_DIALOG"
};

int (*gtk_common_fun[GTK_COMMON_PKG_NB])(mmachine m)=
{
    SCOL_WIDGET_WITH_SIMPLETEXT, SCOL_WIDGET_WITH_MNEMONIC, SCOL_WIDGET_WITH_MARKUP,

    SCOL_DEVICE_MOUSE, SCOL_DEVICE_PEN, SCOL_DEVICE_ERASER,
    SCOL_DEVICE_CURSOR, SCOL_DEVICE_KEYBOARD, SCOL_DEVICE_UNKNOWN,

    SCOL_WINDOW_NOTSHOWN, SCOL_WINDOW_ICONIFIED, SCOL_WINDOW_MAXIMIZED,
    SCOL_WINDOW_STICKY, SCOL_WINDOW_FULLSCREEN, SCOL_WINDOW_ABOVE,
    SCOL_WINDOW_BELOW, SCOL_WINDOW_STATE_UNKNOWN,

    SCOL_ICON_SIZE_MENU, SCOL_ICON_SIZE_SMALL_TOOLBAR, SCOL_ICON_SIZE_LARGE_TOOLBAR,
    SCOL_ICON_SIZE_BUTTON, SCOL_ICON_SIZE_DND, SCOL_ICON_SIZE_DIALOG
};

int gtk_common_narg[GTK_COMMON_PKG_NB]=
{
    0, 0, 0,

    0, 0, 0,
    0, 0, 0,

    0, 0, 0,
    0, 0, 0,
    0, 0,

    0, 0, 0,
    0, 0, 0,
};

char* gtk_common_type[GTK_COMMON_PKG_NB]=
{
    "fun [] I", "fun [] I", "fun [] I",

    "fun [] I", "fun [] I", "fun [] I",
    "fun [] I", "fun [] I", "fun [] I",

    "fun [] I", "fun [] I", "fun [] I",
    "fun [] I", "fun [] I", "fun [] I",
    "fun [] I", "fun [] I",

    "fun [] I", "fun [] I", "fun [] I",
    "fun [] I", "fun [] I", "fun [] I"
};

int SCOLloadGTKcommon (mmachine m)
{
    int k;

    MMechostr (0, "SCOLloadGTKcommon : entering\n");

    k = PKhardpak (m, "GTK2DcommonEngine", GTK_COMMON_PKG_NB, gtk_common_name, gtk_common_fun, gtk_common_narg, gtk_common_type);
    return k;
}
