Esempio n. 1
0
/* ********************************************************************** */
gboolean change_choix_utilise_logo ( GtkWidget *check_button,
                        GtkWidget *hbox )
{

    etat.utilise_logo = gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON 
                            ( check_button ));
    gtk_widget_set_sensitive ( hbox, etat.utilise_logo );

    if ( etat.utilise_logo )
    {
        /* 	on recharge l'ancien logo */

        if ( GTK_IS_WIDGET ( logo_accueil ) )
            gtk_widget_hide ( logo_accueil );
        else
        {
            GdkPixbuf *pixbuf = NULL;

            /* Update homepage logo */
            pixbuf = gsb_select_icon_get_logo_pixbuf ( );
            if ( pixbuf == NULL )
            {
                pixbuf = gsb_select_icon_get_default_logo_pixbuf ( );
                etat.is_pixmaps_dir = TRUE;
            }
            logo_accueil =  gtk_image_new_from_pixbuf ( pixbuf );
            if ( logo_accueil )
            {
                gtk_box_pack_start ( GTK_BOX ( hbox_title ), logo_accueil, FALSE, FALSE, 0 );
                gtk_widget_set_size_request ( hbox_title, -1, -1 );
                gtk_widget_show ( logo_accueil );
            }
        }
    }
    else
    {
        gtk_widget_destroy ( logo_accueil );
        gtk_widget_set_size_request ( hbox_title, -1, -1 );
        if ( etat.name_logo && strlen ( etat.name_logo ) )
            g_free ( etat.name_logo );
        etat.name_logo = NULL;
        etat.is_pixmaps_dir = 0;
    }

    gsb_file_set_modified ( TRUE );

    return ( FALSE );
}
Esempio n. 2
0
/* **************************************************************************************************************************** */
void change_logo_accueil ( GtkWidget * file_selector )
{
    GdkPixbuf * pixbuf;

    const gchar *selected_filename;

    selected_filename = file_selection_get_filename ( GTK_FILE_CHOOSER ( file_selector ) );

    if ( gsb_data_account_get_accounts_amount () )
    {
        /* on change le logo */
        gchar * chemin_logo;

        gtk_container_remove ( GTK_CONTAINER ( logo_button ), preview );
        chemin_logo = g_strstrip ( g_strdup ( selected_filename ) );
        if ( !strlen ( chemin_logo ) )
        {
            if ( logo_accueil && GTK_IS_WIDGET ( logo_accueil ) )
                gtk_widget_hide ( logo_accueil );
            preview = gtk_image_new_from_stock ( GTK_STOCK_MISSING_IMAGE,
                             GTK_ICON_SIZE_BUTTON );
        }
        else
        {
            /* Update preview */
            pixbuf = gdk_pixbuf_new_from_file ( chemin_logo, NULL );
            if (!pixbuf)
            {
                if ( logo_accueil && GTK_IS_WIDGET ( logo_accueil ))
                    gtk_widget_hide ( logo_accueil );
                preview = gtk_image_new_from_stock ( GTK_STOCK_MISSING_IMAGE,
                                    GTK_ICON_SIZE_BUTTON );
            }
            else
            {
                if ( g_strcmp0 ( g_path_get_dirname ( chemin_logo ), gsb_dirs_get_pixmaps_dir ( ) ) == 0 )
                {
                    gchar *name_logo;

                    etat.is_pixmaps_dir = TRUE;

                    name_logo = g_path_get_basename ( chemin_logo );
                    if ( g_strcmp0 ( name_logo, "grisbi-logo.png" ) != 0 )
                        etat.name_logo = name_logo;
                    else
                        etat.name_logo = NULL;
                }
                else
                {
                    etat.is_pixmaps_dir = FALSE;
                    if ( etat.name_logo && strlen ( etat.name_logo ) )
                        g_free ( etat.name_logo );
                    etat.name_logo = NULL;
                }

                gsb_select_icon_set_logo_pixbuf ( pixbuf );
                preview = gtk_image_new_from_pixbuf ( 
                        gdk_pixbuf_scale_simple ( 
                        pixbuf, 48, 48, GDK_INTERP_BILINEAR ) );
                
                /* Update homepage logo */
                gtk_widget_destroy ( logo_accueil );
                
                logo_accueil =  gtk_image_new_from_pixbuf ( 
                                    gsb_select_icon_get_logo_pixbuf ( ) );
                gtk_box_pack_start ( GTK_BOX ( hbox_title ), logo_accueil, FALSE, FALSE, 0 );
                gtk_widget_show ( logo_accueil );
                /* modify the icon of grisbi (set in the panel of gnome or other) */
                gtk_window_set_default_icon ( 
                            gsb_select_icon_get_logo_pixbuf ( ) );
            }

            g_free ( chemin_logo );
        }
        gtk_widget_show ( preview );
        gtk_container_add ( GTK_CONTAINER ( logo_button ), preview );
        
        /* Mark file as modified */
        gsb_file_set_modified ( TRUE );
    }
}
Esempio n. 3
0
/**
 * Creates the "Fonts & logo" tab.  This function creates some buttons
 * that are borrowed from applications like gedit.
 *
 * \returns A newly allocated vbox
 */
GtkWidget * onglet_display_fonts ( void )
{
    GtkWidget *hbox, *vbox_pref, *label, *paddingbox, *font_button;
    GtkWidget *check_button, *vbox;
    GdkPixbuf * pixbuf = NULL;
    GtkWidget *button;
    GtkWidget *color_combobox;
    GtkWidget *color_button;

    vbox_pref = new_vbox_with_title_and_icon ( _("Fonts & logo"), "fonts.png" );

    /* Change Grisbi Logo */
    paddingbox = new_paddingbox_with_title ( vbox_pref, FALSE, _("Grisbi logo") );

    hbox = gtk_hbox_new ( FALSE, 5 );
    gtk_box_pack_start ( GTK_BOX ( paddingbox ), hbox, FALSE, FALSE, 0 );

    check_button = gtk_check_button_new_with_label ( _("Display a logo"));
    gtk_box_pack_start ( GTK_BOX ( hbox ), check_button, FALSE, FALSE, 0 );

    gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( check_button ),
				   etat.utilise_logo );

    hbox = gtk_hbox_new ( FALSE, 5 );
    gtk_box_pack_start ( GTK_BOX ( paddingbox ), hbox, FALSE, FALSE, 0 );

    /*     le logo est grisé ou non suivant qu'on l'utilise ou pas */
    gtk_widget_set_sensitive ( hbox, etat.utilise_logo );
    g_signal_connect ( G_OBJECT ( check_button ),
                        "toggled",
                        G_CALLBACK ( change_choix_utilise_logo ),
                        hbox );

    logo_button = gtk_button_new ();
    gtk_button_set_relief ( GTK_BUTTON ( logo_button ), GTK_RELIEF_NONE );

	pixbuf = gsb_select_icon_get_logo_pixbuf ( );

    if (!pixbuf)
    {
        preview = gtk_image_new_from_pixbuf ( gsb_select_icon_get_default_logo_pixbuf ( ) );
    }
    else
    {
        if ( gdk_pixbuf_get_width(pixbuf) > 64 ||
             gdk_pixbuf_get_height(pixbuf) > 64 )
        {
            GdkPixbuf * tmp;
            tmp = gdk_pixbuf_new ( GDK_COLORSPACE_RGB, TRUE, 8,
                       gdk_pixbuf_get_width(pixbuf)/2,
                       gdk_pixbuf_get_height(pixbuf)/2 );
            gdk_pixbuf_scale ( pixbuf, tmp, 0, 0,
                       gdk_pixbuf_get_width(pixbuf)/2,
                       gdk_pixbuf_get_height(pixbuf)/2,
                       0, 0, 0.5, 0.5, GDK_INTERP_HYPER );
            pixbuf = tmp;
        }
        preview = gtk_image_new_from_pixbuf (pixbuf);
    }

    gtk_container_add (GTK_CONTAINER(logo_button), preview);
    g_signal_connect_swapped ( G_OBJECT ( logo_button ), "clicked",
			       G_CALLBACK ( modification_logo_accueil ), NULL );
    gtk_box_pack_start ( GTK_BOX ( hbox ), logo_button, FALSE, FALSE, 0 );

    label = gtk_label_new ( _("Click on preview to change logo") );
    gtk_box_pack_start ( GTK_BOX ( hbox ), label, FALSE, FALSE, 0 );

    /* Change fonts */
    paddingbox = new_paddingbox_with_title ( vbox_pref, FALSE, _("Fonts") );

    hbox = gtk_hbox_new ( FALSE, 10 );
    gtk_box_pack_start ( GTK_BOX ( paddingbox ), hbox, FALSE, FALSE, 0 );

    check_button = gtk_check_button_new_with_label ( 
                        _("Use a custom font for the transactions: "));
    gtk_box_pack_start ( GTK_BOX ( hbox ), check_button, FALSE, FALSE, 0 );
    gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( check_button ),
				        conf.utilise_fonte_listes );

    /*     on crée la vbox qui contiendra la font button et le raz */
    vbox = gtk_vbox_new ( FALSE, 10 );
    gtk_box_pack_start ( GTK_BOX ( hbox ), vbox, FALSE, FALSE, 0 );

    gtk_widget_set_sensitive ( vbox, conf.utilise_fonte_listes );
    g_signal_connect ( G_OBJECT ( check_button ), "toggled",
		       G_CALLBACK ( change_choix_utilise_fonte_liste ), vbox );


    /* Create font button */
    font_button = utils_font_create_button ( &conf.font_string,
					    G_CALLBACK (update_fonte_listes), NULL);
    gtk_box_pack_start ( GTK_BOX (vbox), font_button, FALSE, FALSE, 0 );

    if ( !gsb_data_account_get_accounts_amount () )
    {
	gtk_widget_set_sensitive ( vbox_pref, FALSE );
    }

    /* change colors */
    paddingbox = new_paddingbox_with_title ( vbox_pref, FALSE, _("Colors") );

    vbox = gtk_vbox_new ( FALSE, 10 );
    gtk_box_pack_start ( GTK_BOX ( paddingbox ), vbox, FALSE, FALSE, 10 );

    hbox = gtk_hbox_new ( FALSE, 10 );
    gtk_box_pack_start ( GTK_BOX ( vbox ), hbox, FALSE, FALSE, 10 );

    color_combobox = gsb_color_create_color_combobox ( );
    gtk_box_pack_start ( GTK_BOX (hbox),
			 color_combobox,
			 FALSE, FALSE, 0);

    color_button = gtk_color_button_new ();
    gtk_color_button_set_title ( GTK_COLOR_BUTTON(color_button), _("Choosing color") );
    g_signal_connect ( G_OBJECT (color_button),
		       "color-set",
		       G_CALLBACK (preferences_view_color_changed),
		       G_OBJECT (color_combobox));
    gtk_box_pack_start ( GTK_BOX (hbox),
			 color_button,
			 FALSE, FALSE, 0);

    /* connect the color button to the combobox if changed */
    g_signal_connect ( G_OBJECT (color_combobox),
		       "changed",
		       G_CALLBACK (preferences_view_color_combobox_changed),
		       G_OBJECT (color_button));

    button = gtk_button_new_with_label (_("Back to default"));
    g_signal_connect ( G_OBJECT (button),
		       "clicked",
		       G_CALLBACK (preferences_view_color_default),
		       G_OBJECT (color_combobox));
    gtk_box_pack_start ( GTK_BOX (vbox),
			 button,
			 FALSE, FALSE, 0);

    gtk_combo_box_set_active ( GTK_COMBO_BOX (color_combobox), 0);

    return vbox_pref;
}
Esempio n. 4
0
File: help.c Progetto: grisbi/grisbi
/**
 * Create and run an About dialog.
 *
 * \param bouton	Widget that triggered this handler (not used).
 * \param data		Not used.
 */
void a_propos ( GtkWidget *bouton, gint data )
{
    GtkWidget *about;
    GdkPixbuf *logo;
    gchar *chemin_logo ;

#define CSUFFIX "\n"

    const gchar *auteurs[] = {
_("Programming"),
"Benjamin Drieu <*****@*****.**>",
"Cedric Auger <*****@*****.**>",
"Francois Terrot <*****@*****.**>",
"Pierre Biava <*****@*****.**>",
"Mickaël Remars <*****@*****.**>",
"William Ollivier <*****@*****.**>",
"Rémi Cardona <*****@*****.**>",
"Ludovic Rousseau <*****@*****.**>"
"\n",

_("Packaging"),
"Alain Pichon <*****@*****.**>",
"Baluchiterium  <*****@*****.**>",
"Francois Terrot <*****@*****.**>",
"Gerald Niel <*****@*****.**>",
"Gilles Morel <*****@*****.**>",
"PMF <*****@*****.**>",
"Pascal Bleser <*****@*****.**>",
"Sylvain Glaize <*****@*****.**>",
"Thierry Thomas <*****@*****.**>",
"Vincent Marqueton <*****@*****.**>",
"William Ollivier <*****@*****.**>",
"Frederic Trouche <*****@*****.**>",
"\n",

_("Other"),
"Axel Rousseau <*****@*****.**>",
"Dominique Parisot <*****@*****.**>",
"Gerald Niel <*****@*****.**>", CSUFFIX,
NULL };

  gchar * translators = g_strconcat(
"Alain Portal <*****@*****.**>: ", _("English"), CSUFFIX,
"Benjamin Drieu <*****@*****.**>: ", _("English"), CSUFFIX,
"Carlos M. Cámara Mora <*****@*****.**>: ", _("Spanish"), CSUFFIX,
"Daniel Cartron <*****@*****.**>: ", _("English"), CSUFFIX,
"Edwin Huijsing <*****@*****.**>: ", _("Dutch"), CSUFFIX,
"Fabio Erculiani <*****@*****.**>: ", _("Italian"), CSUFFIX,
"Flavio Henrique Somensi <*****@*****.**>: ", _("Brazilian Portuguese"), CSUFFIX,
"Giorgio Mandolfo <*****@*****.**>: ", _("Italian"), CSUFFIX,
"Martin Stromberger <*****@*****.**>: ", _("German"), CSUFFIX,
"Ryszard Jeziorski <rjeziorski@eagleW>: ", _("Polish"), CSUFFIX,
"Achilleas Kaskamanidis <*****@*****.**>: ", _("Greek"), CSUFFIX,
NULL);

  const gchar *documenters [] = {
"Alain Portal <*****@*****.**>",
"Benjamin Drieu <*****@*****.**>",
"Daniel Cartron <*****@*****.**>",
"Jean-Luc Duflot <*****@*****.**>",
"Loic Breilloux <*****@*****.**>", CSUFFIX,
NULL};

  const gchar *artists [] = {
"Andre Pascual <*****@*****.**>",
"Jakub 'jimmac' Steiner <*****@*****.**>",
"Jean-Baptiste Renard <*****@*****.**>",
"Tuomas 'tigert' Kuosmanen <*****@*****.**>",
NULL};

  const gchar *license = "This program is free software; you can redistribute "
                        "it and/or modify it under the terms of the GNU General "
                        "Public License as published by the Free Software Foundation; "
                        "either version 2 of the License, or (at your option) any later "
                        "version.\n\nThis 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 General Public License for more details.\n\n"
                        "You should have received a copy of the GNU 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\n\n"
                        "This product includes software developed by the OpenSSL Project "
                        "for use in the OpenSSL Toolkit.\n(http://www.openssl.org/)";

    /* Others info */
    gchar *comments;
    gchar *extra;
    gchar *version_to_string;

    extra = extra_support ( );
    version_to_string = get_gtk_run_version ( );

#ifdef DEBUG
    {
        gchar *compiled_time;

        compiled_time = gsb_date_get_compiled_time ( );
        comments = g_strconcat ( _("Personal finance manager for everyone\n"),
                        extra,
                        "Version de GTK : ",
                        version_to_string,
                        "\n",
                        _("This instance of Grisbi was compiled on\n"),
                        compiled_time,
                        " ",
                        _("at"),
                        " ",
                        __TIME__,
                        NULL );

        g_free ( compiled_time );
    }
#else
	comments = g_strconcat ( _("Personal finance manager for everyone\n"),
					extra,
					"Version de GTK : ",
					version_to_string,
					NULL );
#endif

    /* Logo */
    logo = gsb_select_icon_get_logo_pixbuf ( );
    if (logo == NULL )
    {
        chemin_logo = my_strdup ( LOGO_PATH );
        logo =  gdk_pixbuf_new_from_file ( chemin_logo, NULL );

        g_free ( chemin_logo );
    }

    about = gtk_about_dialog_new ( );
    gtk_about_dialog_set_program_name ( GTK_ABOUT_DIALOG (about), "Grisbi" );
    gtk_about_dialog_set_logo ( GTK_ABOUT_DIALOG (about), logo );
    gtk_about_dialog_set_comments ( GTK_ABOUT_DIALOG (about), comments );
    gtk_about_dialog_set_website ( GTK_ABOUT_DIALOG (about), "http://www.grisbi.org/");
    gtk_about_dialog_set_license ( GTK_ABOUT_DIALOG (about), license );
    gtk_about_dialog_set_wrap_license ( GTK_ABOUT_DIALOG (about), TRUE );
    gtk_about_dialog_set_version ( GTK_ABOUT_DIALOG (about), VERSION );
    gtk_about_dialog_set_artists ( GTK_ABOUT_DIALOG (about), artists );
    gtk_about_dialog_set_documenters ( GTK_ABOUT_DIALOG (about), documenters );
    gtk_about_dialog_set_authors ( GTK_ABOUT_DIALOG (about), auteurs );
    gtk_about_dialog_set_translator_credits ( GTK_ABOUT_DIALOG (about), translators );

    gtk_window_set_position ( GTK_WINDOW ( about ), GTK_WIN_POS_CENTER_ON_PARENT );
    gtk_window_set_resizable ( GTK_WINDOW ( about ), TRUE );
    gtk_window_set_modal ( GTK_WINDOW ( about ), TRUE );
    gtk_window_set_transient_for ( GTK_WINDOW ( about ), GTK_WINDOW ( grisbi_app_get_active_window (NULL) ) );

    g_free ( extra );
    g_free ( version_to_string );
    g_free ( comments );
    g_signal_connect ( G_OBJECT ( about ),
                        "activate-link",
                        G_CALLBACK ( url_clicked ),
                        NULL );

    gtk_dialog_run ( GTK_DIALOG (about)) ;

    gtk_widget_destroy (about);

    if (logo)
    g_object_unref (logo);

    return;
}