/** * called by file -> open * open a new file * * \param * * \return FALSE * */ gboolean gsb_file_open_menu ( void ) { GtkWidget *selection_fichier; GtkFileFilter * filter; selection_fichier = gtk_file_chooser_dialog_new ( _("Open an accounts file"), GTK_WINDOW ( run.window ), GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_OK, NULL); gtk_file_chooser_set_current_folder ( GTK_FILE_CHOOSER ( selection_fichier ), gsb_file_get_last_path () ); gtk_window_set_position ( GTK_WINDOW ( selection_fichier ), GTK_WIN_POS_CENTER_ON_PARENT ); filter = gtk_file_filter_new (); gtk_file_filter_set_name ( filter, _("Grisbi files (*.gsb)") ); gtk_file_filter_add_pattern ( filter, "*.gsb" ); gtk_file_chooser_add_filter ( GTK_FILE_CHOOSER ( selection_fichier ), filter ); gtk_file_chooser_set_filter ( GTK_FILE_CHOOSER ( selection_fichier ), filter ); filter = gtk_file_filter_new (); gtk_file_filter_set_name ( filter, _("All files") ); gtk_file_filter_add_pattern ( filter, "*" ); gtk_file_chooser_add_filter ( GTK_FILE_CHOOSER ( selection_fichier ), filter ); switch ( gtk_dialog_run ( GTK_DIALOG (selection_fichier))) { case GTK_RESPONSE_OK: if ( gsb_file_close() ) { gtk_widget_hide ( selection_fichier ); nom_fichier_comptes = file_selection_get_filename ( GTK_FILE_CHOOSER ( selection_fichier ) ); gsb_file_update_last_path ( file_selection_get_last_directory ( GTK_FILE_CHOOSER ( selection_fichier), TRUE ) ); gsb_file_open_file (nom_fichier_comptes); } break; default: break; } gsb_file_update_last_path (file_selection_get_last_directory (GTK_FILE_CHOOSER (selection_fichier), TRUE)); gtk_widget_destroy ( selection_fichier ); return FALSE; }
/** * ask the name of the file to save it * * \param * * \return a newly allocated string containing the new name * */ static gchar *gsb_file_dialog_ask_name ( void ) { gchar *new_name; GtkWidget *dialog; gint result; dialog = gtk_file_chooser_dialog_new ( _("Name the accounts file"), GTK_WINDOW ( run.window ), GTK_FILE_CHOOSER_ACTION_SAVE, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_SAVE, GTK_RESPONSE_OK, NULL); gtk_file_chooser_set_current_folder ( GTK_FILE_CHOOSER ( dialog ), gsb_file_get_last_path () ); gtk_file_chooser_set_do_overwrite_confirmation ( GTK_FILE_CHOOSER ( dialog ), TRUE); gtk_window_set_position ( GTK_WINDOW ( dialog ), GTK_WIN_POS_CENTER_ON_PARENT ); if ( ! nom_fichier_comptes ) { gchar* tmp_str; tmp_str = g_strconcat ( titre_fichier, ".gsb", NULL ); gtk_file_chooser_set_current_name ( GTK_FILE_CHOOSER ( dialog ), tmp_str); g_free ( tmp_str ); } else gtk_file_chooser_select_filename ( GTK_FILE_CHOOSER (dialog), nom_fichier_comptes ); result = gtk_dialog_run ( GTK_DIALOG ( dialog )); switch ( result ) { case GTK_RESPONSE_OK : new_name = file_selection_get_filename ( GTK_FILE_CHOOSER ( dialog )); gsb_file_update_last_path (file_selection_get_last_directory (GTK_FILE_CHOOSER (dialog), TRUE)); gtk_widget_destroy ( GTK_WIDGET ( dialog )); break; default : gtk_widget_destroy ( GTK_WIDGET ( dialog )); return NULL; } if ( ! g_strrstr ( new_name, "." ) ) { gchar* tmpstr = new_name; new_name = g_strconcat ( tmpstr, ".gsb", NULL ); g_free ( tmpstr ); } return new_name; }
/* **************************************************************************************************************************** */ gboolean modification_logo_accueil ( ) { GtkWidget *file_selector; GtkWidget *preview; file_selector = gtk_file_chooser_dialog_new ( _("Select a new logo"), GTK_WINDOW ( fenetre_preferences ), GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_OK, NULL); if ( etat.is_pixmaps_dir ) gtk_file_chooser_set_current_folder ( GTK_FILE_CHOOSER ( file_selector ), gsb_dirs_get_pixmaps_dir ( ) ); else gtk_file_chooser_set_current_folder ( GTK_FILE_CHOOSER ( file_selector ), gsb_file_get_last_path () ); gtk_window_set_position ( GTK_WINDOW ( file_selector ), GTK_WIN_POS_CENTER_ON_PARENT ); /* create the preview */ preview = gtk_image_new (); gtk_file_chooser_set_preview_widget ( GTK_FILE_CHOOSER ( file_selector ), preview ); g_signal_connect (G_OBJECT (file_selector), "update-preview", G_CALLBACK ( preferences_view_update_preview_logo ), preview ); switch ( gtk_dialog_run ( GTK_DIALOG ( file_selector ) ) ) { case GTK_RESPONSE_OK: change_logo_accueil ( file_selector ); gsb_file_update_last_path ( file_selection_get_last_directory ( GTK_FILE_CHOOSER ( file_selector ), TRUE ) ); default: gtk_widget_destroy ( file_selector ); break; } return ( FALSE ); }
/** * Handler triggered by clicking on the button of a "print to file" * combo. Pop ups a file selector. * * \param button GtkButton widget that triggered this handler. * \param data A pointer to a GtkEntry that will be filled with the * result of the file selector. */ void browse_file ( GtkButton *button, gpointer data ) { GtkWidget * file_selector; file_selector = file_selection_new (_("Print to file"),FILE_SELECTION_IS_SAVE_DIALOG); gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (file_selector), gsb_file_get_last_path ()); gtk_window_set_transient_for ( GTK_WINDOW ( file_selector ), GTK_WINDOW ( run.window )); gtk_window_set_modal ( GTK_WINDOW ( file_selector ), TRUE ); switch ( gtk_dialog_run ( GTK_DIALOG (file_selector))) { case GTK_RESPONSE_OK: gtk_entry_set_text ( GTK_ENTRY(data), file_selection_get_filename (GTK_FILE_CHOOSER (file_selector))); gsb_file_update_last_path (file_selection_get_last_directory (GTK_FILE_CHOOSER (file_selector), TRUE)); default: gtk_widget_destroy ( file_selector ); break; } }