]> Dogcows Code - chaz/homebank/blobdiff - src/ui-account.c
import homebank-5.2.4
[chaz/homebank] / src / ui-account.c
index 661c9d18d08ced13bf6d7e854b0ff23c1f1b16a2..725ee5ee9d1066bc108d433ea3423b0347279baa 100644 (file)
@@ -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);
This page took 0.032551 seconds and 4 git commands to generate.