X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fhomebank;a=blobdiff_plain;f=src%2Fui-account.c;fp=src%2Fui-account.c;h=725ee5ee9d1066bc108d433ea3423b0347279baa;hp=661c9d18d08ced13bf6d7e854b0ff23c1f1b16a2;hb=a6c6b0df5492c2160ed97e3a376bdb2fe7c5ebc4;hpb=cd13d9691c46c2b2d6d459e9e6a76bed1c21b7a6 diff --git a/src/ui-account.c b/src/ui-account.c index 661c9d1..725ee5e 100644 --- a/src/ui-account.c +++ b/src/ui-account.c @@ -1,5 +1,5 @@ /* HomeBank -- Free, easy, personal accounting for everyone. - * Copyright (C) 1995-2018 Maxime DOYEN + * Copyright (C) 1995-2019 Maxime DOYEN * * This file is part of HomeBank. * @@ -35,16 +35,7 @@ extern struct HomeBank *GLOBALS; extern struct Preferences *PREFS; -gchar *CYA_ACC_TYPE[] = -{ - N_("(no type)"), - N_("Bank"), - N_("Cash"), - N_("Asset"), - N_("Credit card"), - N_("Liability"), - NULL -}; +extern HbKvData CYA_ACC_TYPE[]; /* = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = */ @@ -56,32 +47,6 @@ gchar *CYA_ACC_TYPE[] = /* = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = */ -/** - * ui_acc_comboboxentry_get_name: - * - * get the name of the active account or -1 - * - * Return value: a new allocated name tobe freed with g_free - * - */ -gchar * -ui_acc_comboboxentry_get_name(GtkComboBox *entry_box) -{ -gchar *cbname; -gchar *name = NULL; - - cbname = (gchar *)gtk_entry_get_text(GTK_ENTRY (gtk_bin_get_child(GTK_BIN (entry_box)))); - - if( cbname != NULL) - { - - name = g_strdup(cbname); - g_strstrip(name); - } - - return name; -} - /** * ui_acc_comboboxentry_get_key: @@ -98,26 +63,15 @@ ui_acc_comboboxentry_get_key(GtkComboBox *entry_box) gchar *name; Account *item; - name = ui_acc_comboboxentry_get_name(entry_box); - + name = (gchar *)gtk_entry_get_text(GTK_ENTRY (gtk_bin_get_child(GTK_BIN (entry_box)))); item = da_acc_get_by_name(name); - g_free(name); - if( item == NULL ) { - //todo: ask the user here - /* - item = da_acc_malloc(); - item->name = g_strdup(name); - da_acc_insert(item); - ui_acc_comboboxentry_add(entry_box, item); - */ + //todo: future : ask the user here return 0; } - - return item->key; } @@ -177,7 +131,6 @@ Account *acc = value; if( (acc->flags & AF_CLOSED) ) return; if( (ctx->insert_type == ACC_LST_INSERT_REPORT) && (acc->flags & AF_NOREPORT) ) return; if( (acc->key == ctx->except_key) ) return; - if( (acc->imported == TRUE) ) return; //todo check this if( (ctx->kcur > 0 ) && (acc->kcur != ctx->kcur) ) return; @@ -639,7 +592,7 @@ gint field = GPOINTER_TO_INT(user_data); case FIELD_BANK: g_free(item->bankname); - item->bankname = g_strdup(gtk_entry_get_text(GTK_ENTRY(data->ST_bank))); + item->bankname = g_strdup(gtk_entry_get_text(GTK_ENTRY(data->ST_institution))); break; case FIELD_NUMBER: @@ -757,12 +710,12 @@ Account *item; { data->change++; - item->type = gtk_combo_box_get_active(GTK_COMBO_BOX(data->CY_type)); + item->type = hbtk_combo_box_get_active_id(GTK_COMBO_BOX_TEXT(data->CY_type)); account_set_currency(item, ui_cur_combobox_get_key(GTK_COMBO_BOX(data->CY_curr)) ); g_free(item->bankname); - item->bankname = g_strdup(gtk_entry_get_text(GTK_ENTRY(data->ST_bank))); + item->bankname = g_strdup(gtk_entry_get_text(GTK_ENTRY(data->ST_institution))); g_free(item->number); item->number = g_strdup(gtk_entry_get_text(GTK_ENTRY(data->ST_number))); @@ -807,12 +760,36 @@ Account *item; gtk_spin_button_update(GTK_SPIN_BUTTON(data->ST_cheque2)); item->cheque2 = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(data->ST_cheque2)); - + item->karc= hbtk_combo_box_get_active_id(GTK_COMBO_BOX_TEXT(data->CY_template)); + //active_id = gtk_combo_box_get_active_id(GTK_COMBO_BOX(data->CY_template)); + //item->karc = atoi(active_id); } } +//#1743254 set frac digits as well +static void ui_acc_manage_changed_curr_cb(GtkWidget *widget, gpointer user_data) +{ +struct ui_acc_manage_data *data; +guint32 key; +Currency *cur; + + DB( g_print("\n(ui_acc_manage changed_curr_cb)\n") ); + + data = g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(widget, GTK_TYPE_WINDOW)), "inst_data"); + + key = ui_cur_combobox_get_key(GTK_COMBO_BOX(data->CY_curr)); + cur = da_cur_get (key); + if( cur != NULL ) + { + DB( g_print("- set digits to '%s' %d\n", cur->name, cur->frac_digits) ); + gtk_spin_button_set_digits (GTK_SPIN_BUTTON(data->ST_initial), cur->frac_digits); + gtk_spin_button_set_digits (GTK_SPIN_BUTTON(data->ST_overdraft), cur->frac_digits); + } + +} + /* ** set widgets contents from the selected account @@ -837,14 +814,14 @@ Account *item; DB( g_print(" -> set acc id=%d\n", item->key) ); - gtk_combo_box_set_active(GTK_COMBO_BOX(data->CY_type), item->type ); + hbtk_combo_box_set_active_id(GTK_COMBO_BOX_TEXT(data->CY_type), item->type ); ui_cur_combobox_set_active(GTK_COMBO_BOX(data->CY_curr), item->kcur); if(item->bankname != NULL) - gtk_entry_set_text(GTK_ENTRY(data->ST_bank), item->bankname); + gtk_entry_set_text(GTK_ENTRY(data->ST_institution), item->bankname); else - gtk_entry_set_text(GTK_ENTRY(data->ST_bank), ""); + gtk_entry_set_text(GTK_ENTRY(data->ST_institution), ""); if(item->number != NULL) gtk_entry_set_text(GTK_ENTRY(data->ST_number), item->number); @@ -870,6 +847,10 @@ Account *item; gtk_spin_button_set_value(GTK_SPIN_BUTTON(data->ST_cheque1), item->cheque1); gtk_spin_button_set_value(GTK_SPIN_BUTTON(data->ST_cheque2), item->cheque2); + hbtk_combo_box_set_active_id(GTK_COMBO_BOX_TEXT(data->CY_template), item->karc); + //g_snprintf(idbuffer, 11, "%d", item->karc); + //gtk_combo_box_set_active_id(GTK_COMBO_BOX(data->CY_template), idbuffer); + } } @@ -977,7 +958,7 @@ struct ui_acc_manage_data *data; Account *item; data = g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(widget, GTK_TYPE_WINDOW)), "inst_data"); - DB( g_print("\n(ui_acc_manage_add) (data=%x)\n", (guint)data) ); + DB( g_print("\n(ui_acc_manage_add) data=%p\n", data) ); gchar *name = dialog_get_name(_("Account name"), NULL, GTK_WINDOW(data->window)); if(name != NULL) @@ -997,10 +978,16 @@ Account *item; item->name = name; //g_strdup_printf( _("(account %d)"), da_acc_length()+1); item->kcur = GLOBALS->kcur; - da_acc_append(item); - ui_acc_listview_add(GTK_TREE_VIEW(data->LV_acc), item); - - data->change++; + g_strstrip(item->name); + + if( strlen(item->name) > 0 ) + { + if( da_acc_append(item) ) + { + ui_acc_listview_add(GTK_TREE_VIEW(data->LV_acc), item); + data->change++; + } + } } } } @@ -1016,7 +1003,7 @@ guint32 key; gint result; data = g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(widget, GTK_TYPE_WINDOW)), "inst_data"); - DB( g_print("\n(ui_acc_manage_remove) (data=%x)\n", (guint)data) ); + DB( g_print("\n(ui_acc_manage_remove) data=%p\n", data) ); key = ui_acc_listview_get_selected_key(GTK_TREE_VIEW(data->LV_acc)); if( key > 0 ) @@ -1079,7 +1066,7 @@ guint32 key; gboolean bool; data = g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(widget, GTK_TYPE_WINDOW)), "inst_data"); - DB( g_print("\n(ui_acc_manage_rename) (data=%x)\n", (guint)data) ); + DB( g_print("\n(ui_acc_manage_rename) data=%p\n", data) ); key = ui_acc_listview_get_selected_key(GTK_TREE_VIEW(data->LV_acc)); if( key > 0 ) @@ -1126,7 +1113,7 @@ Account *accitem; gboolean selected, bool; data = g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(widget, GTK_TYPE_WINDOW)), "inst_data"); - DB( g_print("\n(ui_acc_manage_toggled_closed) (data=%x)\n", (guint)data) ); + DB( g_print("\n(ui_acc_manage_toggled_closed) data=%p\n", data) ); selected = gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(data->LV_acc)), &model, &iter); @@ -1184,7 +1171,7 @@ guint32 i; guint32 key; gboolean doupdate = FALSE; - DB( g_print("\n(ui_acc_manage_cleanup) %x\n", (guint)data) ); + DB( g_print("\n(ui_acc_manage_cleanup) %p\n", data) ); key = ui_acc_listview_get_selected_key(GTK_TREE_VIEW(data->LV_acc)); if(key > 0) @@ -1226,6 +1213,7 @@ gboolean doupdate = FALSE; */ static void ui_acc_manage_setup(struct ui_acc_manage_data *data) { +GList *tmplist; DB( g_print("\n(ui_acc_manage_setup)\n") ); @@ -1238,6 +1226,22 @@ static void ui_acc_manage_setup(struct ui_acc_manage_data *data) ui_acc_listview_populate(data->LV_acc, ACC_LST_INSERT_NORMAL); ui_cur_combobox_populate(GTK_COMBO_BOX(data->CY_curr), GLOBALS->h_cur); //populate_view_acc(data->LV_acc, GLOBALS->acc_list, TRUE); + + //populate template + hbtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(data->CY_template), 0, _("(none)")); + gtk_combo_box_set_active(GTK_COMBO_BOX(data->CY_template), 0); + tmplist = g_list_first(GLOBALS->arc_list); + while (tmplist != NULL) + { + Archive *item = tmplist->data; + + if( !(item->flags & OF_AUTO) ) + { + hbtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(data->CY_template), item->key, item->memo); + } + tmplist = g_list_next(tmplist); + } + } /* @@ -1269,7 +1273,7 @@ gint w, h, row; //store our dialog private data g_object_set_data(G_OBJECT(dialog), "inst_data", (gpointer)&data); - DB( g_print("(ui_acc_manage_) dialog=%x, inst_data=%x\n", (guint)dialog, (guint)&data) ); + DB( g_print("(ui_acc_manage_) dialog=%p, inst_data=%p\n", dialog, &data) ); //window contents content = gtk_dialog_get_content_area(GTK_DIALOG (dialog)); @@ -1344,7 +1348,8 @@ gint w, h, row; row = 1; label = make_label_widget(_("_Type:")); gtk_grid_attach (GTK_GRID (group_grid), label, 1, row, 1, 1); - widget = make_cycle(label, CYA_ACC_TYPE); + //widget = make_cycle(label, CYA_ACC_TYPE); + widget = hbtk_combo_box_new_with_data(label, CYA_ACC_TYPE); data.CY_type = widget; gtk_grid_attach (GTK_GRID (group_grid), widget, 2, row, 1, 1); @@ -1430,7 +1435,7 @@ gint w, h, row; label = make_label_widget(_("_Name:")); gtk_grid_attach (GTK_GRID (group_grid), label, 1, row, 1, 1); widget = make_string(label); - data.ST_bank = widget; + data.ST_institution = widget; gtk_widget_set_hexpand(widget, TRUE); gtk_grid_attach (GTK_GRID (group_grid), widget, 2, row, 2, 1); @@ -1460,12 +1465,30 @@ gint w, h, row; data.ST_overdraft = widget; gtk_grid_attach (GTK_GRID (group_grid), widget, 2, row, 1, 1); - // group :: Report exclusion + // group :: miscelleaneous 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, 2, 1, 1); + label = make_label_group(_("Miscellaneous")); + gtk_grid_attach (GTK_GRID (group_grid), label, 0, 0, 2, 1); + + row = 1; + label = make_label_widget(_("Default _Template:")); + gtk_grid_attach (GTK_GRID (group_grid), label, 1, row, 1, 1); + widget = hbtk_combo_box_new(label); + data.CY_template = widget; + gtk_widget_set_hexpand(widget, TRUE); + gtk_grid_attach (GTK_GRID (group_grid), widget, 2, row, 2, 1); + + + // group :: Report exclusion + 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, 3, 1, 1); + label = make_label_group(_("Report exclusion")); gtk_grid_attach (GTK_GRID (group_grid), label, 0, 0, 2, 1); @@ -1489,7 +1512,8 @@ gint w, h, row; g_signal_connect (dialog, "destroy", G_CALLBACK (gtk_widget_destroyed), &dialog); g_signal_connect (gtk_tree_view_get_selection(GTK_TREE_VIEW(data.LV_acc)), "changed", G_CALLBACK (ui_acc_manage_selection), NULL); g_signal_connect (GTK_TREE_VIEW(data.LV_acc), "row-activated", G_CALLBACK (ui_acc_manage_rowactivated), GINT_TO_POINTER(2)); - + + g_signal_connect (data.CY_curr , "changed", G_CALLBACK (ui_acc_manage_changed_curr_cb), NULL); g_signal_connect (data.CM_closed, "toggled", G_CALLBACK (ui_acc_manage_toggled_closed), NULL); g_signal_connect (G_OBJECT (data.BT_add), "clicked", G_CALLBACK (ui_acc_manage_add), NULL);