X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fhomebank;a=blobdiff_plain;f=src%2Fui-assist-start.c;h=786689fffecfd3d5b740c5ba3871e49cc265b9c6;hp=aea516014428dd9499f94fdacbf06f396ba5197a;hb=996fa4ab9f6b836001f8ad0eecbfd3821687fea7;hpb=27f6e3b112df235c8e9afc9911b1f6bce208a001 diff --git a/src/ui-assist-start.c b/src/ui-assist-start.c index aea5160..786689f 100644 --- a/src/ui-assist-start.c +++ b/src/ui-assist-start.c @@ -1,5 +1,5 @@ /* HomeBank -- Free, easy, personal accounting for everyone. - * Copyright (C) 1995-2014 Maxime DOYEN + * Copyright (C) 1995-2016 Maxime DOYEN * * This file is part of HomeBank. * @@ -21,6 +21,7 @@ #include "ui-assist-start.h" #include "dsp_mainwindow.h" +#include "ui-currency.h" #define MYDEBUG 0 @@ -54,6 +55,10 @@ gdouble value; GLOBALS->changes_count++; } + if( data->curfmt != NULL ) + { + hbfile_replace_basecurrency(data->curfmt); + } /* load preset categories */ if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_load))) @@ -75,6 +80,8 @@ gdouble value; item->name = g_strdup(txt); } + item->kcur = GLOBALS->kcur; + item->type = gtk_combo_box_get_active(GTK_COMBO_BOX(data->CY_type)); item->number = g_strdup(gtk_entry_get_text(GTK_ENTRY(data->ST_number))); @@ -101,7 +108,7 @@ on_assistant_close_cancel (GtkWidget *widget, gpointer user_data) struct assist_start_data *data = user_data; //data = g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(widget, GTK_TYPE_WINDOW)), "inst_data"); - gtk_widget_destroy (data->assistant); + gtk_widget_destroy (data->window); g_free(data->pathfilename); @@ -183,83 +190,132 @@ on_entry_changed (GtkWidget *widget, gpointer data) gtk_assistant_set_page_complete (assistant, current_page, FALSE); } + +static void ui_start_assistant_property_change_action(GtkWidget *widget, gpointer user_data) +{ +struct assist_start_data *data; +Currency4217 *curfmt; + + DB( g_print("\n[ui-start] property_change_action\n") ); + + data = g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(widget, GTK_TYPE_WINDOW)), "inst_data"); + + data->curfmt = NULL; + + curfmt = ui_cur_select_dialog_new(GTK_WINDOW(data->window), CUR_SELECT_MODE_BASE); + if( curfmt != NULL ) + { + gchar label[128]; + gchar *name; + + DB( g_printf("- user selected: '%s' '%s'\n", curfmt->curr_iso_code, curfmt->name) ); + + data->curfmt = curfmt; + + name = curfmt->name; + + g_snprintf(label, 127, "%s - %s", curfmt->curr_iso_code, name); + gtk_label_set_text (GTK_LABEL(data->LB_currency), label); + } +} + + static void -ui_start_assistant_create_page1 (GtkWidget *assistant, struct assist_start_data *data) +ui_start_assistant_property_fill (GtkWidget *assistant, struct assist_start_data *data) { - GtkWidget *box, *label, *entry; - GdkPixbuf *pixbuf; +Currency *cur; +gchar label[128]; - box = gtk_hbox_new (FALSE, HB_BOX_SPACING); - gtk_container_set_border_width (GTK_CONTAINER (box), HB_MAINBOX_SPACING); + gtk_entry_set_text(GTK_ENTRY(data->ST_owner), g_get_real_name ()); + cur = da_cur_get (GLOBALS->kcur); - label = gtk_label_new (_("Owner:")); - gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 0); + g_snprintf(label, 127, "%s - %s", cur->iso_code, cur->name); + gtk_label_set_text (GTK_LABEL(data->LB_currency), label); + +} - entry = gtk_entry_new (); - data->ST_owner = entry; - gtk_box_pack_start (GTK_BOX (box), entry, TRUE, TRUE, 0); - g_signal_connect (G_OBJECT (entry), "changed", - G_CALLBACK (on_entry_changed), assistant); - gtk_widget_show_all (box); - gtk_assistant_append_page (GTK_ASSISTANT (assistant), box); +static void +ui_start_assistant_property_create (GtkWidget *assistant, struct assist_start_data *data) +{ +GtkWidget *table, *label, *widget; +gint row; + + table = gtk_grid_new (); + gtk_grid_set_row_spacing (GTK_GRID (table), SPACING_SMALL); + gtk_grid_set_column_spacing (GTK_GRID (table), SPACING_MEDIUM); + //gtk_container_set_border_width (GTK_CONTAINER (table), SPACING_MEDIUM); + gtk_widget_set_valign (table, GTK_ALIGN_CENTER); + + row = 0; + label = make_label_widget(_("_Owner:")); + gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1); + widget = make_string(label); + data->ST_owner = widget; + gtk_widget_set_hexpand(widget, TRUE); + gtk_grid_attach (GTK_GRID (table), widget, 2, row, 2, 1); + + row++; + label = make_label_widget(_("Currency:")); + gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1); + widget = make_label (NULL, 0, 0.5); + data->LB_currency = widget; + gtk_grid_attach (GTK_GRID (table), widget, 2, row, 1, 1); + widget = gtk_button_new_with_mnemonic (_("_Change")); + data->BT_change = widget; + gtk_grid_attach (GTK_GRID (table), widget, 3, row, 1, 1); + + g_signal_connect (G_OBJECT (data->ST_owner), "changed", G_CALLBACK (on_entry_changed), assistant); + g_signal_connect (G_OBJECT (data->BT_change), "clicked", G_CALLBACK (ui_start_assistant_property_change_action), data); + + + gtk_widget_show_all (table); + gtk_assistant_append_page (GTK_ASSISTANT (assistant), table); - gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), box, _("File properties")); - gtk_assistant_set_page_type (GTK_ASSISTANT (assistant), box, GTK_ASSISTANT_PAGE_INTRO); + gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), table, _("File properties")); + gtk_assistant_set_page_type (GTK_ASSISTANT (assistant), table, GTK_ASSISTANT_PAGE_INTRO); - pixbuf = gtk_widget_render_icon (assistant, GTK_STOCK_FILE, GTK_ICON_SIZE_DIALOG, NULL); - gtk_assistant_set_page_header_image (GTK_ASSISTANT (assistant), box, pixbuf); - g_object_unref (pixbuf); } static void ui_start_assistant_create_page2 (GtkWidget *assistant, struct assist_start_data *data) { - GtkWidget *box, *hbox, *label, *table, *widget, *alignment; - GdkPixbuf *pixbuf; +GtkWidget *box, *hbox, *label, *table, *widget; gint row; - box = gtk_vbox_new (FALSE, HB_BOX_SPACING); - gtk_container_set_border_width (GTK_CONTAINER (box), HB_MAINBOX_SPACING); + box = gtk_box_new (GTK_ORIENTATION_VERTICAL, SPACING_SMALL); + gtk_container_set_border_width (GTK_CONTAINER (box), SPACING_MEDIUM); - table = gtk_table_new (12, 3, FALSE); + table = gtk_grid_new (); //gtk_container_set_border_width (GTK_CONTAINER (table), SP_BORDER); - gtk_table_set_row_spacings (GTK_TABLE (table), HB_TABROW_SPACING*2); - gtk_table_set_col_spacings (GTK_TABLE (table), HB_TABCOL_SPACING*2); + gtk_grid_set_row_spacing (GTK_GRID (table), SPACING_SMALL*2); + gtk_grid_set_column_spacing (GTK_GRID (table), SPACING_MEDIUM*2); - // gtk_alignment_new(xalign, yalign, xscale, yscale) - alignment = gtk_alignment_new(0.5, 0.5, 1.0, 0.0); - gtk_container_add(GTK_CONTAINER(alignment), table); - gtk_box_pack_start (GTK_BOX (box), alignment, TRUE, TRUE, 0); + gtk_box_pack_start (GTK_BOX (box), table, TRUE, TRUE, 0); row = 0; - label = make_label(_("System detection"), 0.0, 0.5); - gimp_label_set_attributes(GTK_LABEL(label), PANGO_ATTR_WEIGHT, PANGO_WEIGHT_BOLD, -1); - gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 3, row, row+1); + label = make_label_group(_("System detection")); + gtk_grid_attach (GTK_GRID (table), label, 0, row, 3, 1); row++; - label = make_label("", 0.0, 0.5); - gtk_misc_set_padding (GTK_MISC (label), HB_BOX_SPACING, 0); - gtk_table_attach (GTK_TABLE (table), label, 0, 1, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); - - label = make_label(_("Languages:"), 0.0, 0.5); - gtk_table_attach (GTK_TABLE (table), label, 1, 2, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); + label = make_label_widget(_("Languages:")); + gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1); widget = make_label(NULL, 0.0, 0.5); data->TX_lang = widget; - gtk_table_attach (GTK_TABLE (table), widget, 2, 3, row, row+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); + gtk_grid_attach (GTK_GRID (table), widget, 2, row, 1, 1); row++; - label = make_label(_("Preset file:"), 0.0, 0.5); - gtk_table_attach (GTK_TABLE (table), label, 1, 2, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); - hbox = gtk_hbox_new (FALSE, HB_BOX_SPACING); - gtk_table_attach (GTK_TABLE (table), hbox, 2, 3, row, row+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); + label = make_label_widget(_("Preset file:")); + gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1); + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, SPACING_SMALL); + gtk_grid_attach (GTK_GRID (table), hbox, 2, row, 1, 1); - widget = gtk_image_new_from_stock(GTK_STOCK_YES, GTK_ICON_SIZE_BUTTON); + widget = gtk_image_new_from_icon_name(ICONNAME_HB_FILE_VALID, GTK_ICON_SIZE_LARGE_TOOLBAR); data->ok_image = widget; gtk_box_pack_start (GTK_BOX (hbox), widget, FALSE, FALSE, 0); - widget = gtk_image_new_from_stock(GTK_STOCK_NO, GTK_ICON_SIZE_BUTTON); + widget = gtk_image_new_from_icon_name(ICONNAME_HB_FILE_INVALID, GTK_ICON_SIZE_LARGE_TOOLBAR); data->ko_image = widget; gtk_box_pack_start (GTK_BOX (hbox), widget, FALSE, FALSE, 0); @@ -271,133 +327,100 @@ gint row; widget = gtk_check_button_new_with_mnemonic (_("Initialize my categories with this file")); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), TRUE); data->CM_load = widget; - gtk_table_attach (GTK_TABLE (table), widget, 1, 3, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); + gtk_grid_attach (GTK_GRID (table), widget, 1, row, 3, 1); - gtk_widget_show_all (box); + gtk_widget_show_all (box); gtk_widget_hide(data->ok_image); gtk_widget_hide(data->ko_image); - gtk_assistant_append_page (GTK_ASSISTANT (assistant), box); - gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), box, TRUE); - gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), box, _("Preset categories")); + gtk_assistant_append_page (GTK_ASSISTANT (assistant), box); + gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), box, TRUE); + gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), box, _("Preset categories")); - pixbuf = gtk_widget_render_icon (assistant, GTK_STOCK_FILE, GTK_ICON_SIZE_DIALOG, NULL); - gtk_assistant_set_page_header_image (GTK_ASSISTANT (assistant), box, pixbuf); - g_object_unref (pixbuf); } static void ui_start_assistant_create_page3 (GtkWidget *assistant, struct assist_start_data *data) { - GtkWidget *box, *label, *widget, *table, *alignment; - GdkPixbuf *pixbuf; +GtkWidget *box, *label, *widget, *table; gint row; - box = gtk_vbox_new (FALSE, HB_BOX_SPACING); - gtk_container_set_border_width (GTK_CONTAINER (box), HB_MAINBOX_SPACING); + box = gtk_box_new (GTK_ORIENTATION_VERTICAL, SPACING_SMALL); + gtk_container_set_border_width (GTK_CONTAINER (box), SPACING_MEDIUM); - table = gtk_table_new (12, 3, FALSE); + table = gtk_grid_new (); //gtk_container_set_border_width (GTK_CONTAINER (table), SP_BORDER); - gtk_table_set_row_spacings (GTK_TABLE (table), HB_TABROW_SPACING); - gtk_table_set_col_spacings (GTK_TABLE (table), HB_TABCOL_SPACING); - - // gtk_alignment_new(xalign, yalign, xscale, yscale) - alignment = gtk_alignment_new(0.5, 0.5, 1.0, 0.0); - gtk_container_add(GTK_CONTAINER(alignment), table); - gtk_box_pack_start (GTK_BOX (box), alignment, TRUE, TRUE, 0); + gtk_grid_set_row_spacing (GTK_GRID (table), SPACING_SMALL); + gtk_grid_set_column_spacing (GTK_GRID (table), SPACING_MEDIUM); + gtk_box_pack_start (GTK_BOX (box), table, TRUE, TRUE, 0); row = 0; - label = make_label(_("Informations"), 0.0, 0.5); - gimp_label_set_attributes(GTK_LABEL(label), PANGO_ATTR_WEIGHT, PANGO_WEIGHT_BOLD, -1); - gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 3, row, row+1); + label = make_label_group(_("Informations")); + gtk_grid_attach (GTK_GRID (table), label, 0, row, 3, 1); row++; - label = make_label("", 0.0, 0.5); - gtk_misc_set_padding (GTK_MISC (label), HB_BOX_SPACING, 0); - gtk_table_attach (GTK_TABLE (table), label, 0, 1, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); - - label = make_label(_("_Name:"), 0.0, 0.5); - gtk_table_attach (GTK_TABLE (table), label, 1, 2, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); + label = make_label_widget(_("_Name:")); + gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1); widget = make_string(label); data->ST_name = widget; - gtk_table_attach (GTK_TABLE (table), widget, 2, 3, row, row+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); + gtk_widget_set_hexpand(widget, TRUE); + gtk_grid_attach (GTK_GRID (table), widget, 2, row, 1, 1); g_signal_connect (G_OBJECT (widget), "changed", G_CALLBACK (on_entry_changed), assistant); row++; - label = make_label(_("_Type:"), 0.0, 0.5); - gtk_table_attach (GTK_TABLE (table), label, 1, 2, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); + label = make_label_widget(_("_Type:")); + gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1); widget = make_cycle(label, CYA_ACC_TYPE); data->CY_type = widget; - gtk_table_attach (GTK_TABLE (table), widget, 2, 3, row, row+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); + gtk_widget_set_hexpand(widget, TRUE); + gtk_grid_attach (GTK_GRID (table), widget, 2, row, 1, 1); row++; - label = make_label(_("N_umber:"), 0.0, 0.5); - gtk_table_attach (GTK_TABLE (table), label, 1, 2, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); + label = make_label_widget(_("N_umber:")); + gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1); widget = make_string(label); data->ST_number = widget; - gtk_table_attach (GTK_TABLE (table), widget, 2, 3, row, row+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); - + gtk_widget_set_hexpand(widget, TRUE); + gtk_grid_attach (GTK_GRID (table), widget, 2, row, 1, 1); //other - //row = 0; row++; - label = make_label(_("Balances"), 0.0, 0.5); - gimp_label_set_attributes(GTK_LABEL(label), PANGO_ATTR_WEIGHT, PANGO_WEIGHT_BOLD, -1); - gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 3, row, row+1); + label = make_label_group(_("Balances")); + gtk_grid_attach (GTK_GRID (table), label, 0, row, 3, 1); row++; - label = gtk_label_new_with_mnemonic (_("_Initial:")); - gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); - gtk_table_attach (GTK_TABLE (table), label, 1, 2, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); + label = make_label_widget(_("_Initial:")); + gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1); widget = make_amount(label); data->ST_initial = widget; - - // gtk_alignment_new(xalign, yalign, xscale, yscale) - alignment = gtk_alignment_new(0.0, 0.5, 0.33, 0.0); - gtk_container_add(GTK_CONTAINER(alignment), widget); - gtk_table_attach (GTK_TABLE (table), alignment, 2, 3, row, row+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); + gtk_grid_attach (GTK_GRID (table), widget, 2, row, 1, 1); row++; - label = gtk_label_new_with_mnemonic (_("_Overdrawn at:")); - gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); - gtk_table_attach (GTK_TABLE (table), label, 1, 2, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); + label = make_label_widget(_("_Overdrawn at:")); + gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1); widget = make_amount(label); data->ST_minimum = widget; + gtk_grid_attach (GTK_GRID (table), widget, 2, row, 1, 1); - // gtk_alignment_new(xalign, yalign, xscale, yscale) - alignment = gtk_alignment_new(0.0, 0.5, 0.33, 0.0); - gtk_container_add(GTK_CONTAINER(alignment), widget); - gtk_table_attach (GTK_TABLE (table), alignment, 2, 3, row, row+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); - - - - - gtk_widget_show_all (box); - gtk_assistant_append_page (GTK_ASSISTANT (assistant), box); + gtk_widget_show_all (box); + gtk_assistant_append_page (GTK_ASSISTANT (assistant), box); gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), box, _("Create an account")); - - pixbuf = gtk_widget_render_icon (assistant, GTK_STOCK_FILE, GTK_ICON_SIZE_DIALOG, NULL); - gtk_assistant_set_page_header_image (GTK_ASSISTANT (assistant), box, pixbuf); - g_object_unref (pixbuf); } - - - static void ui_start_assistant_create_page4 (GtkWidget *assistant, struct assist_start_data *data) { GtkWidget *label; - GdkPixbuf *pixbuf; + label = gtk_label_new (_("This is a confirmation page, press 'Apply' to apply changes")); @@ -407,9 +430,7 @@ ui_start_assistant_create_page4 (GtkWidget *assistant, struct assist_start_data gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), label, TRUE); gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), label, _("Confirmation")); - pixbuf = gtk_widget_render_icon (assistant, GTK_STOCK_FILE, GTK_ICON_SIZE_DIALOG, NULL); - gtk_assistant_set_page_header_image (GTK_ASSISTANT (assistant), label, pixbuf); - g_object_unref (pixbuf); + } @@ -426,7 +447,7 @@ GtkWidget *assistant, *page; if(!data) return NULL; assistant = gtk_assistant_new (); - data->assistant = assistant; + data->window = assistant; //store our window private data g_object_set_data(G_OBJECT(assistant), "inst_data", (gpointer)data); @@ -437,12 +458,13 @@ GtkWidget *assistant, *page; gtk_window_set_modal(GTK_WINDOW (assistant), TRUE); gtk_window_set_transient_for(GTK_WINDOW(assistant), GTK_WINDOW(GLOBALS->mainwindow)); - ui_start_assistant_create_page1 (assistant, data); + ui_start_assistant_property_create (assistant, data); ui_start_assistant_create_page2 (assistant, data); ui_start_assistant_create_page3 (assistant, data); ui_start_assistant_create_page4 (assistant, data); - gtk_entry_set_text(GTK_ENTRY(data->ST_owner), g_get_real_name ()); + ui_start_assistant_property_fill(assistant, data); + page = gtk_assistant_get_nth_page(GTK_ASSISTANT (assistant), 0); gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), page, TRUE);