X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fhomebank;a=blobdiff_plain;f=src%2Fui-dialogs.c;h=81092ac109f6c5d0960655fe5820015e62705f3a;hp=18d1f9d3e35a4f665477c4f49461bc46361f7eb8;hb=cd13d9691c46c2b2d6d459e9e6a76bed1c21b7a6;hpb=b84403141a4c3a32a594800eb3fcabdc856461f8 diff --git a/src/ui-dialogs.c b/src/ui-dialogs.c index 18d1f9d..81092ac 100644 --- a/src/ui-dialogs.c +++ b/src/ui-dialogs.c @@ -1,5 +1,5 @@ /* HomeBank -- Free, easy, personal accounting for everyone. - * Copyright (C) 1995-2017 Maxime DOYEN + * Copyright (C) 1995-2018 Maxime DOYEN * * This file is part of HomeBank. * @@ -277,15 +277,18 @@ struct dialog_currency_data static void ui_dialog_upgrade_choose_currency_change_action(GtkWidget *widget, gpointer user_data) { struct dialog_currency_data *data = user_data; -Currency4217 *curfmt; +struct curSelectContext selectCtx; data->curfmt = NULL; - curfmt = ui_cur_select_dialog_new(GTK_WINDOW(data->window), CUR_SELECT_MODE_BASE); - if( curfmt != NULL ) + ui_cur_select_dialog_new(GTK_WINDOW(data->window), CUR_SELECT_MODE_BASE, &selectCtx); + if( selectCtx.cur_4217 != NULL ) { + Currency4217 *curfmt; gchar label[128]; gchar *name; + + curfmt = selectCtx.cur_4217; DB( g_printf("- user selected: '%s' '%s'\n", curfmt->curr_iso_code, curfmt->name) ); @@ -330,6 +333,9 @@ gint crow, row; data.window = dialog; + widget = gtk_dialog_get_widget_for_response(GTK_DIALOG(dialog), GTK_RESPONSE_ACCEPT); + gtk_window_set_focus(GTK_WINDOW(dialog), widget); + content_area = gtk_dialog_get_content_area(GTK_DIALOG (dialog)); content_grid = gtk_grid_new(); @@ -445,7 +451,7 @@ gboolean retval; { gchar *tmpfilename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (chooser)); - *storage_ptr = hb_util_filename_new_with_extension(tmpfilename, "qif"); + *storage_ptr = hb_filename_new_with_extension(tmpfilename, "qif"); g_free(tmpfilename); retval = TRUE; } @@ -505,7 +511,7 @@ gchar *path; if( action == GTK_FILE_CHOOSER_ACTION_SAVE ) { - *storage_ptr = hb_util_filename_new_with_extension(tmpfilename, "csv"); + *storage_ptr = hb_filename_new_with_extension(tmpfilename, "csv"); g_free(tmpfilename); } else @@ -551,6 +557,7 @@ gboolean retval; NULL); ui_file_chooser_add_filter(GTK_FILE_CHOOSER(chooser), _("HomeBank files"), "*.[Xx][Hh][Bb]"); + //ui_file_chooser_add_filter(GTK_FILE_CHOOSER(chooser), _("Backup files"), "*.[Bb][Aa][Kk]"); ui_file_chooser_add_filter(GTK_FILE_CHOOSER(chooser), _("All files"), "*"); if( action == GTK_FILE_CHOOSER_ACTION_OPEN ) @@ -668,29 +675,121 @@ GtkWidget *dialog = NULL; gtk_dialog_set_default_response(GTK_DIALOG( dialog ), 2); - result = gtk_dialog_run( GTK_DIALOG( dialog ) ); - gtk_widget_destroy( dialog ); + result = gtk_dialog_run( GTK_DIALOG( dialog ) ); + gtk_widget_destroy( dialog ); - if(result == 1 || result == GTK_RESPONSE_DELETE_EVENT) + if(result == 1 || result == GTK_RESPONSE_DELETE_EVENT) { - retval = FALSE; + retval = FALSE; } else { - if(result == 2) - { - DB( g_print(" + should quick save %s\n", GLOBALS->xhb_filepath) ); - homebank_save_xml(GLOBALS->xhb_filepath); - } + if(result == 2) + { + DB( g_print(" + should quick save %s\n", GLOBALS->xhb_filepath) ); + //todo: should migrate this + //#1720377 also backup + homebank_file_ensure_xhb(NULL); + homebank_backup_current_file(); + homebank_save_xml(GLOBALS->xhb_filepath); + } } + } + return retval; +} + + +/* = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = */ + + +gint ui_dialog_export_pdf(GtkWindow *parent, gchar **storage_ptr) +{ +GtkWidget *dialog, *content_area, *content_grid, *group_grid; +GtkWidget *label, *widget, *BT_folder, *ST_name; +gchar *tmpstr; +gint crow, row; + + dialog = gtk_dialog_new_with_buttons (_("Export PDF"), + GTK_WINDOW (parent), + 0, + _("_Cancel"), GTK_RESPONSE_CANCEL, + _("_Export"), GTK_RESPONSE_ACCEPT, + NULL); + + gtk_window_set_default_size (GTK_WINDOW(dialog), HB_MINWIDTH_LIST, -1); + + content_area = gtk_dialog_get_content_area(GTK_DIALOG (dialog)); + + content_grid = gtk_grid_new(); + gtk_grid_set_row_spacing (GTK_GRID (content_grid), SPACING_LARGE); + gtk_orientable_set_orientation(GTK_ORIENTABLE(content_grid), GTK_ORIENTATION_VERTICAL); + gtk_container_set_border_width (GTK_CONTAINER(content_grid), SPACING_MEDIUM); + gtk_box_pack_start (GTK_BOX (content_area), content_grid, TRUE, TRUE, 0); + + crow = 0; + // group :: file title + group_grid = gtk_grid_new (); + gtk_grid_set_row_spacing (GTK_GRID (group_grid), SPACING_SMALL); + gtk_grid_set_column_spacing (GTK_GRID (group_grid), SPACING_MEDIUM); + gtk_grid_attach (GTK_GRID (content_grid), group_grid, 0, crow++, 1, 1); + + row = 0; + widget = gtk_image_new_from_icon_name (ICONNAME_WARNING, GTK_ICON_SIZE_DIALOG); + gtk_grid_attach (GTK_GRID (group_grid), widget, 0, row, 1, 1); + label = gtk_label_new("This feature is still in development state,\n(maybe not stable) so use it at your own risk!"); + gtk_grid_attach (GTK_GRID (group_grid), label, 1, row, 1, 1); + + row++; + label = make_label_widget(_("Folder:")); + gtk_grid_attach (GTK_GRID (group_grid), label, 0, row, 1, 1); + BT_folder = gtk_file_chooser_button_new (_("Pick a Folder"), GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER); + gtk_grid_attach (GTK_GRID (group_grid), BT_folder, 1, row, 1, 1); + + row++; + label = make_label_widget(_("Filename:")); + gtk_grid_attach (GTK_GRID (group_grid), label, 0, row, 1, 1); + ST_name = make_string (label); + gtk_grid_attach (GTK_GRID (group_grid), ST_name, 1, row, 1, 1); + //setup + tmpstr = g_path_get_dirname(*storage_ptr); + gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(BT_folder), tmpstr); + g_free(tmpstr); + + tmpstr = g_path_get_basename(*storage_ptr); + gtk_entry_set_text(GTK_ENTRY(ST_name), tmpstr); + g_free(tmpstr); + + + gtk_widget_show_all(content_grid); + + //wait for the user + gint result = gtk_dialog_run (GTK_DIALOG (dialog)); + + if(result == GTK_RESPONSE_ACCEPT) + { + gchar *nufolder = gtk_file_chooser_get_current_folder(GTK_FILE_CHOOSER(BT_folder)); + gchar *nufilename = hb_filename_new_with_extension((gchar *)gtk_entry_get_text (GTK_ENTRY(ST_name)), "pdf"); + + g_free(*storage_ptr); + *storage_ptr = g_build_filename(nufolder, nufilename, NULL); + + g_free(nufilename); + g_free(nufolder); } - return retval; + + // cleanup and destroy + gtk_widget_destroy (dialog); + + return result; } + + + /* = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = */ struct xfer_data @@ -841,7 +940,7 @@ Transaction *retval = NULL; LST_DSPOPE_DATAS, tmp, -1); - //DB( g_print(" - fill: %s %.2f %x\n", item->wording, item->amount, (unsigned int)item->same) ); + //DB( g_print(" - fill: %s %.2f %x\n", item->memo, item->amount, (unsigned int)item->same) ); tmplist = g_list_next(tmplist); }