/*
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_misc.h"


gchar * test_g_get_user_special_dir ()
{
    const gchar* const *system_data_dirs;
    gchar *pathname = NULL;
    const gchar *progam_name = "Scol.Exe";
    const gchar *filename = "C:\\Program Files\\Scol Voyager\\Scol.exe";

    /* for (system_data_dirs = g_get_system_data_dirs (); *system_data_dirs != NULL; system_data_dirs++) */
    for (system_data_dirs = g_get_system_config_dirs (); *system_data_dirs != NULL; system_data_dirs++)
    {
		g_message (*system_data_dirs);
		pathname = g_build_filename(*system_data_dirs, progam_name, filename, NULL);
		if (g_file_test(pathname, G_FILE_TEST_EXISTS))
		{
            break;
		}
		else
		{
            g_free (pathname);
            pathname = NULL;
		}
	}
	return pathname;
}

int SCOL_gkMisc (mmachine m)
{
    /* http://library.gnome.org/devel/glib/unstable/glib-Miscellaneous-Utility-Functions.html */

    /* Sous MS Windows 7 / XP :
    g_get_application_name ()  retourne Scol.exe
    g_get_prgname() : retourne Scol.exe
    g_get_environ : à partir de 2.28
    g_getenv ("variable d'environnement") : retourne la valeur (ne pas mettre les % autour du nom de la variable)
    g_get_user_name() : retourne le nom d'utilisateur (login)
    g_get_real_name() : retourne la valueur
    g_get_user_cache_dir() : C:\Users\seven\AppData\Local\Microsoft\Windows\Temporary Internet Files
                            C:\Documents and Settings\xp\Local Settings\Temporary Internet Files selon version de windows
    g_get_user_data_dir() : C:\Users\seven\Documents
    g_get_user_config_dir() : C:\Users\seven\AppData\Roaming
    g_get_user_runtime_dir : à partir de 2.28
    g_get_user_special_dir (G_USER_DIRECTORY_DESKTOP) : C:\Users\seven\Desktop
    g_get_user_special_dir (G_USER_DIRECTORY_DOCUMENTS) : C:\Users\seven\Documents
    g_get_user_special_dir (G_USER_DIRECTORY_DOWNLOAD) : C:\Users\seven\Downloads
    g_get_user_special_dir (G_USER_DIRECTORY_MUSIC) :  C:\Users\seven\Music
    g_get_user_special_dir (G_USER_DIRECTORY_PICTURES) : C:\Users\seven\Pictures
    g_get_user_special_dir (G_USER_DIRECTORY_PUBLIC_SHARE) : C:\Users\Public
    g_get_user_special_dir (G_USER_DIRECTORY_TEMPLATES) : C:\Users\seven\AppData\Roaming\Microsoft\Windows\Templates
    g_get_user_special_dir (G_USER_DIRECTORY_VIDEOS) : C:\Users\seven\Videos
    g_get_system_data_dirs () avec  test_g_get_user_special_dir() [ci-dessus] retourne :
            C:\ProgramData
            C:\Users\Public\Documents
            C:\Program Files\Scol Voyager\plugins\share
            C:\Program Files\Scol Voyager\share
            C:\Program Files\Scol Voyager\share
            NIL
    g_get_system_config_dirs avec test_g_get_user_special_dir() [ci-dessus] retourne :
            C:\ProgramData
            NIL
    g_get_host_name () : SEVEN-PC
    g_get_home_dir () : C:\Users\seven
            const char *homedir = g_getenv ("HOME");
            if (!homedir)
                homedir = g_get_home_dir ();
    g_get_tmp_dir () : C:\Users\seven\AppData\Local\Temp
    g_get_current_dir () : C:\Program Files\Scol Voyager
    g_path_is_absolute (any path) : true or false
    g_path_skip_root ("C:\\Program Files\\Scol Voyager") : Program Files\Scol Voyager
    g_path_get_basename ("C:\\Program Files\\Scol Voyager\\Scol.exe") : Scol.exe
    g_path_get_dirname ("C:\\Program Files\\Scol Voyager\\Scol.exe") : C:\Program Files\Scol Voyager
    g_build_filename ("C:", "Program Files", "Scol Voyager", "Scol.exe", NULL) : C:\Program Files\Scol Voyager\Scol.exe
    g_build_path () : ressemble à la précédente et renvoie le même résultat
    g_format_size_for_display (368740864) : 351,7 Mo
    g_find_program_in_path ("Scol.exe") : C:\Program Files\Scol Voyager\Scol.exe
    */
    Mpushstrbloc (m, (char *) g_win32_get_package_installation_directory_of_module (NULL) );
    return 0;
}






/* API definitions : */

char* gtk_misc_name[GTK_MISC_PKG_NB]=
{
    "_gtkMisc" /* at test purpose only */
};

int (*gtk_misc_fun[GTK_MISC_PKG_NB])(mmachine m)=
{
    SCOL_gkMisc
};

int gtk_misc_narg[GTK_MISC_PKG_NB]=
{
    0
};

char* gtk_misc_type[GTK_MISC_PKG_NB]=
{
    "fun [] S"
};

int SCOLloadGTKmisc (mmachine m)
{
    int k;

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

    k = PKhardpak (m, "GTK2DmiscEngine", GTK_MISC_PKG_NB, gtk_misc_name, gtk_misc_fun, gtk_misc_narg, gtk_misc_type);
    return k;
}

