]> Dogcows Code - chaz/homebank/blobdiff - src/ui-account.c
import homebank-5.2.4
[chaz/homebank] / src / ui-account.c
index 9e0780e04a988cd35ee0b499ad21626d97ebc6b8..725ee5ee9d1066bc108d433ea3423b0347279baa 100644 (file)
@@ -1,5 +1,5 @@
 /*  HomeBank -- Free, easy, personal accounting for everyone.
- *  Copyright (C) 1995-2014 Maxime DOYEN
+ *  Copyright (C) 1995-2019 Maxime DOYEN
  *
  *  This file is part of HomeBank.
  *
@@ -20,6 +20,7 @@
 #include "homebank.h"
 #include "hb-account.h"
 #include "ui-account.h"
+#include "ui-currency.h"
 
 #define MYDEBUG 0
 
 
 /* our global datas */
 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[];
 
 
 /* = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = */
 
-/**
- * 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;
-}
+
+/* = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = */
 
 
 /**
@@ -89,38 +63,28 @@ 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;
 }
 
+
 gboolean
 ui_acc_comboboxentry_set_active(GtkComboBox *entry_box, guint32 key)
 {
 Account *item;
-       
+
        if( key > 0 )
        {       
                item = da_acc_get(key);
-               if( item != NULL)
+               if( (item != NULL) )
                {
                        gtk_entry_set_text(GTK_ENTRY (gtk_bin_get_child(GTK_BIN (entry_box))), item->name);
                        return TRUE;
@@ -167,8 +131,10 @@ 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;
+
     DB( g_print (" -> append %s\n", acc->name) );
        
        
@@ -217,9 +183,9 @@ struct accPopContext ctx;
        ctx.except_key = except_key;
        ctx.kcur = 0;
        ctx.insert_type = insert_type;
-/*     Account *acc = da_acc_get(except_key);
+       Account *acc = da_acc_get(except_key);
        if(acc != NULL)
-               ctx.kcur = acc->kcur;*/
+               ctx.kcur = acc->kcur;
        
        gtk_list_store_clear (GTK_LIST_STORE(model));
        g_hash_table_foreach(hash, (GHFunc)ui_acc_comboboxentry_populate_ghfunc, &ctx);
@@ -289,7 +255,7 @@ GtkEntryCompletion *completion;
        if(label)
                gtk_label_set_mnemonic_widget (GTK_LABEL(label), comboboxentry);
 
-       gtk_widget_set_size_request(comboboxentry, HB_MINWIDTH_COMBO, -1);
+       gtk_widget_set_size_request(comboboxentry, HB_MINWIDTH_LIST, -1);
        
        return comboboxentry;
 }
@@ -336,6 +302,24 @@ Account *entry1, *entry2;
     return retval;
 }
 
+
+static void
+ui_acc_listview_icon_cell_data_function (GtkTreeViewColumn *col,
+                               GtkCellRenderer *renderer,
+                               GtkTreeModel *model,
+                               GtkTreeIter *iter,
+                               gpointer user_data)
+{
+Account *entry;
+gchar *iconname = NULL;
+
+       gtk_tree_model_get(model, iter, LST_DEFACC_DATAS, &entry, -1);
+       if( entry->flags & AF_CLOSED )
+               iconname = ICONNAME_CHANGES_PREVENT;
+       g_object_set(renderer, "icon-name", iconname, NULL);
+}
+
+
 static void
 ui_acc_listview_name_cell_data_function (GtkTreeViewColumn *col,
                                GtkCellRenderer *renderer,
@@ -463,7 +447,8 @@ GList *lacc, *list;
        
                if( insert_type == ACC_LST_INSERT_REPORT )
                {
-                       if( (item->flags & AF_CLOSED) ) goto next1;
+                       //#1674045 ony rely on nosummary
+                       //if( (item->flags & AF_CLOSED) ) goto next1;
                        if( (item->flags & AF_NOREPORT) ) goto next1;
                }
                
@@ -503,7 +488,7 @@ GtkTreeViewColumn   *column;
        treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));
        g_object_unref(store);
 
-       //gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (treeview), TRUE);
+       gtk_tree_view_set_grid_lines (GTK_TREE_VIEW (treeview), PREFS->grid_lines);
 
        // column 1: toggle
        if( withtoggle == TRUE )
@@ -521,10 +506,23 @@ GtkTreeViewColumn *column;
        }
 
        // column 2: name
-       renderer = gtk_cell_renderer_text_new ();
        column = gtk_tree_view_column_new();
+
+       renderer = gtk_cell_renderer_text_new ();
+       g_object_set(renderer, 
+               "ellipsize", PANGO_ELLIPSIZE_END,
+           "ellipsize-set", TRUE,
+           NULL);
+
        gtk_tree_view_column_pack_start(column, renderer, TRUE);
        gtk_tree_view_column_set_cell_data_func(column, renderer, ui_acc_listview_name_cell_data_function, GINT_TO_POINTER(LST_DEFACC_DATAS), NULL);
+
+    renderer = gtk_cell_renderer_pixbuf_new ();
+    gtk_tree_view_column_pack_start(column, renderer, TRUE);
+    gtk_tree_view_column_set_cell_data_func(column, renderer, ui_acc_listview_icon_cell_data_function, GINT_TO_POINTER(LST_DEFACC_DATAS), NULL);
+
+
+       gtk_tree_view_column_set_resizable(column, TRUE);
        gtk_tree_view_append_column (GTK_TREE_VIEW(treeview), column);
 
        // treeviewattribute
@@ -587,8 +585,6 @@ gint field = GPOINTER_TO_INT(user_data);
                                        }
                                }
                                break;
-
-               //todo: for stock account                       
                
                        //case FIELD_TYPE:
                        //      item->type = gtk_combo_box_get_active(GTK_COMBO_BOX(data->CY_type));
@@ -596,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:
@@ -622,7 +618,7 @@ gint field = GPOINTER_TO_INT(user_data);
                                break;
 
                        case FIELD_MINIMUM:
-                               value = gtk_spin_button_get_value(GTK_SPIN_BUTTON(data->ST_minimum));
+                               value = gtk_spin_button_get_value(GTK_SPIN_BUTTON(data->ST_overdraft));
                                item->minimum = value;
                                break;
 
@@ -648,17 +644,17 @@ gchar *retval = NULL;
                dialog = gtk_dialog_new_with_buttons (title,
                                                    GTK_WINDOW (parentwindow),
                                                    0,
-                                                   GTK_STOCK_CANCEL,
+                                                   _("_Cancel"),
                                                    GTK_RESPONSE_REJECT,
-                                                   GTK_STOCK_OK,
+                                                   _("_OK"),
                                                    GTK_RESPONSE_ACCEPT,
                                                    NULL);
 
                content = gtk_dialog_get_content_area(GTK_DIALOG (dialog));
        
-               mainvbox = gtk_vbox_new (FALSE, 0);
+               mainvbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
                gtk_box_pack_start (GTK_BOX (content), mainvbox, TRUE, TRUE, 0);
-               gtk_container_set_border_width (GTK_CONTAINER (mainvbox), HB_BOX_SPACING);
+               gtk_container_set_border_width (GTK_CONTAINER (mainvbox), SPACING_SMALL);
 
                getwidget = gtk_entry_new();
                gtk_box_pack_start (GTK_BOX (mainvbox), getwidget, TRUE, TRUE, 0);
@@ -714,16 +710,26 @@ 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)) );
+               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)));
 
+               GtkTextBuffer *buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (data->TB_notes));
+               GtkTextIter siter, eiter;
+               gchar *notes;
+               
+               gtk_text_buffer_get_iter_at_offset (buffer, &siter, 0);
+               gtk_text_buffer_get_end_iter(buffer, &eiter);
+               notes = gtk_text_buffer_get_text(buffer, &siter, &eiter, FALSE);
+               if(notes != NULL)
+                       item->notes = g_strdup(notes);
+               
                item->flags &= ~(AF_CLOSED);
                bool = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_closed));
                if(bool) item->flags |= AF_CLOSED;
@@ -744,8 +750,8 @@ Account *item;
                value = gtk_spin_button_get_value(GTK_SPIN_BUTTON(data->ST_initial));
                item->initial = value;
 
-               gtk_spin_button_update(GTK_SPIN_BUTTON(data->ST_minimum));
-               value = gtk_spin_button_get_value(GTK_SPIN_BUTTON(data->ST_minimum));
+               gtk_spin_button_update(GTK_SPIN_BUTTON(data->ST_overdraft));
+               value = gtk_spin_button_get_value(GTK_SPIN_BUTTON(data->ST_overdraft));
                item->minimum = value;
 
                gtk_spin_button_update(GTK_SPIN_BUTTON(data->ST_cheque1));
@@ -754,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
@@ -784,20 +814,27 @@ 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);
+               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);
                else
                        gtk_entry_set_text(GTK_ENTRY(data->ST_number), "");
 
+               GtkTextBuffer *buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (data->TB_notes));
+               GtkTextIter iter;
+
+               gtk_text_buffer_set_text (buffer, "", 0);
+               gtk_text_buffer_get_iter_at_offset (buffer, &iter, 0);
+               if(item->notes != NULL)
+                       gtk_text_buffer_insert (buffer, &iter, item->notes, -1);        
 
                gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_nobudget), item->flags & AF_NOBUDGET);
                gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_nosummary), item->flags & AF_NOSUMMARY);
@@ -805,11 +842,15 @@ Account *item;
                gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_closed), item->flags & AF_CLOSED);
 
                gtk_spin_button_set_value(GTK_SPIN_BUTTON(data->ST_initial), item->initial);
-               gtk_spin_button_set_value(GTK_SPIN_BUTTON(data->ST_minimum), item->minimum);
+               gtk_spin_button_set_value(GTK_SPIN_BUTTON(data->ST_overdraft), item->minimum);
 
                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);
+
        }
 
 }
@@ -832,7 +873,6 @@ GtkTreeModel                 *model;
 GtkTreeIter                     iter;
 gboolean selected, sensitive;
 guint32 key;
-//todo: for stock account
 //gboolean is_new;
 
        DB( g_print("\n(ui_acc_manage_update)\n") );
@@ -874,7 +914,6 @@ guint32 key;
                }
        }       */
 
-       //todo: for stock account
        //todo: lock type if oldpos!=0
 /*
        if( selected )
@@ -887,24 +926,8 @@ guint32 key;
 */
 
        sensitive = (selected == TRUE) ? TRUE : FALSE;
-       gtk_widget_set_sensitive(data->CY_type, sensitive);
-       //gtk_widget_set_sensitive(data->CY_curr, sensitive);
-       gtk_widget_set_sensitive(data->ST_number, sensitive);
-       gtk_widget_set_sensitive(data->ST_bank, sensitive);
-       gtk_widget_set_sensitive(data->CM_nobudget, sensitive);
-       gtk_widget_set_sensitive(data->CM_nosummary, sensitive);
-       gtk_widget_set_sensitive(data->CM_noreport, sensitive);
-       gtk_widget_set_sensitive(data->CM_closed, sensitive);
-
-       gtk_widget_set_sensitive(data->ST_initial, sensitive);
-       gtk_widget_set_sensitive(data->ST_minimum, sensitive);
-       gtk_widget_set_sensitive(data->ST_cheque1, sensitive);
-       gtk_widget_set_sensitive(data->ST_cheque2, sensitive);
 
-
-       //sensitive = (data->action == 0) ? TRUE : FALSE;
-       //gtk_widget_set_sensitive(data->LV_acc, sensitive);
-       //gtk_widget_set_sensitive(data->BT_new, sensitive);
+       gtk_widget_set_sensitive(data->notebook, sensitive);
 
        sensitive = (selected == TRUE && data->action == 0) ? TRUE : FALSE;
        //gtk_widget_set_sensitive(data->BT_mod, sensitive);
@@ -935,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)
@@ -953,56 +976,83 @@ Account *item;
                {
                        item = da_acc_malloc();
                        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);
+                       item->kcur = GLOBALS->kcur;
 
-                       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++;
+                               }
+                       }
                }
        }
 }
 
 /*
-** remove the selected account to our treeview and temp GList
+** delete the selected account to our treeview and temp GList
 */
-static void ui_acc_manage_remove(GtkWidget *widget, gpointer user_data)
+static void ui_acc_manage_delete(GtkWidget *widget, gpointer user_data)
 {
 struct ui_acc_manage_data *data;
-//Account *item;
+Account *item;
 guint32 key;
-gboolean do_remove;
+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) );
 
-       do_remove = TRUE;
        key = ui_acc_listview_get_selected_key(GTK_TREE_VIEW(data->LV_acc));
        if( key > 0 )
        {
+               item = da_acc_get(key);
+
                if( account_is_used(key) == TRUE )
-               {               
-                       //item = da_acc_get(key);
-                       do_remove = FALSE;
-                       ui_dialog_msg_infoerror(GTK_WINDOW(data->window), GTK_MESSAGE_INFO,
-                               _("Remove not allowed"),
-                               _("This account is used and cannot be removed.")
+               {
+               gchar *title;
+
+                       title = g_strdup_printf (
+                               _("Cannot delete account '%s'"), item->name);
+
+                       ui_dialog_msg_infoerror(GTK_WINDOW(data->window), GTK_MESSAGE_ERROR,
+                               title,
+                               _("This account contains transactions and/or is part of internal transfers.")
                        );
-                       
-               }
 
-               if( do_remove )
-               {
-                       da_acc_remove(key);
-                       ui_acc_listview_remove_selected(GTK_TREE_VIEW(data->LV_acc));
-                       data->change++;
+                       g_free(title);
                }
-       }
-}
+               else
+               {
+               gchar *title;
+               gchar *secondtext;
 
+                       title = g_strdup_printf (
+                               _("Are you sure you want to permanently delete '%s'?"), item->name);
 
+                       secondtext = _("If you delete an account, it will be permanently lost.");
+                       
+                       result = ui_dialog_msg_confirm_alert(
+                                       GTK_WINDOW(data->window),
+                                       title,
+                                       secondtext,
+                                       _("_Delete")
+                               );
 
+                       g_free(title);
 
+                       if( result == GTK_RESPONSE_OK )
+                       {
+                               da_acc_remove(key);
+                               ui_acc_listview_remove_selected(GTK_TREE_VIEW(data->LV_acc));
+                               data->change++;
+                       }
+               
+               }
+       }
+}
 
 
 /*
@@ -1016,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 )
@@ -1053,6 +1103,39 @@ gboolean bool;
 }
 
 
+static void ui_acc_manage_toggled_closed(GtkWidget *widget, gpointer user_data)
+{
+struct ui_acc_manage_data *data;
+GtkTreeModel            *model;
+GtkTreeIter                     iter;
+GtkTreePath                    *path;
+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=%p\n", data) );
+
+       selected = gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(data->LV_acc)), &model, &iter);
+
+       if(selected)
+       {
+               gtk_tree_model_get(model, &iter, LST_DEFACC_DATAS, &accitem, -1);
+               accitem->flags &= ~(AF_CLOSED);
+               bool = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_closed));
+               if(bool) accitem->flags |= AF_CLOSED;
+
+               /* redraw the row to display/hide the icon */
+               path = gtk_tree_model_get_path(model, &iter);
+               gtk_tree_model_row_changed(model, path, &iter);
+               gtk_tree_path_free (path);
+
+               //      gtk_tree_view_columns_autosize (GTK_TREE_VIEW(data->LV_arc));
+               //gtk_widget_queue_draw (GTK_WIDGET(data->LV_arc));
+       }       
+
+}
+
+
 static void ui_acc_manage_rowactivated (GtkTreeView *treeview, GtkTreePath *path, GtkTreeViewColumn *col, gpointer userdata)
 {
 //struct account_data *data;
@@ -1088,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)
@@ -1130,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") );
 
@@ -1140,8 +1224,24 @@ static void ui_acc_manage_setup(struct ui_acc_manage_data *data)
        data->lastkey = 0;
 
        ui_acc_listview_populate(data->LV_acc, ACC_LST_INSERT_NORMAL);
-       //ui_cur_combobox_populate(data->CY_curr, GLOBALS->h_cur);
+       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);
+       }
+
 }
 
 /*
@@ -1150,41 +1250,54 @@ static void ui_acc_manage_setup(struct ui_acc_manage_data *data)
 GtkWidget *ui_acc_manage_dialog (void)
 {
 struct ui_acc_manage_data data;
-GtkWidget *dialog, *content, *mainbox, *scrollwin, *notebook, *alignment;
+GtkWidget *dialog, *content, *mainbox, *vbox, *scrollwin, *notebook;
+GtkWidget *content_grid, *group_grid;
 GtkWidget *table, *label, *widget, *hpaned;
-gint row;
+gint w, h, row;
 
        dialog = gtk_dialog_new_with_buttons (_("Manage Accounts"),
                                GTK_WINDOW(GLOBALS->mainwindow),
                                0,
-                           GTK_STOCK_CLOSE,
+                           _("_Close"),
                            GTK_RESPONSE_ACCEPT,
                                NULL);
 
        data.window = dialog;
 
        //set the dialog icon
-       //homebank_window_set_icon_from_file(GTK_WINDOW (dialog), "account.svg");       
-       gtk_window_set_icon_name(GTK_WINDOW (dialog), HB_STOCK_ACCOUNT);
+       gtk_window_set_icon_name(GTK_WINDOW (dialog), ICONNAME_HB_ACCOUNT);
+
+       //set a nice dialog size
+       gtk_window_get_size(GTK_WINDOW(GLOBALS->mainwindow), &w, &h);
+       gtk_window_set_default_size (GTK_WINDOW(dialog), -1, h/PHI);
 
        //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));
-       mainbox = gtk_hbox_new (FALSE, HB_BOX_SPACING);
+       mainbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, SPACING_SMALL);
        gtk_box_pack_start (GTK_BOX (content), mainbox, TRUE, TRUE, 0);
-       gtk_container_set_border_width (GTK_CONTAINER(mainbox), HB_MAINBOX_SPACING);
+       gtk_container_set_border_width (GTK_CONTAINER(mainbox), SPACING_MEDIUM);
 
-       hpaned = gtk_hpaned_new();
+       hpaned = gtk_paned_new(GTK_ORIENTATION_HORIZONTAL);
        gtk_box_pack_start (GTK_BOX (mainbox), hpaned, TRUE, TRUE, 0);
 
+       // set paned position
+       //w = w/PHI;
+       //gtk_paned_set_position(GTK_PANED(hpaned), w - (w/PHI));
+
        /* left area */
-       table = gtk_table_new (2, 2, FALSE);
-       gtk_table_set_row_spacings (GTK_TABLE (table), HB_TABROW_SPACING);
-       gtk_table_set_col_spacings (GTK_TABLE (table), HB_TABCOL_SPACING);
-       gtk_paned_pack1 (GTK_PANED(hpaned), table, FALSE, FALSE);
+       vbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, SPACING_SMALL);
+       //gtk_box_pack_start (GTK_BOX (mainbox), vbox, FALSE, FALSE, 0);
+       gtk_widget_set_margin_right(vbox, SPACING_TINY);
+       gtk_paned_pack1 (GTK_PANED(hpaned), vbox, FALSE, FALSE);
+
+       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_box_pack_start (GTK_BOX (vbox), table, TRUE, TRUE, 0);
 
        row = 0;
        scrollwin = gtk_scrolled_window_new(NULL,NULL);
@@ -1194,170 +1307,222 @@ gint row;
        gtk_widget_set_size_request(data.LV_acc, HB_MINWIDTH_LIST, -1);
        gtk_container_add(GTK_CONTAINER(scrollwin), data.LV_acc);
        gtk_widget_set_tooltip_text(data.LV_acc, _("Drag & drop to change the order\nDouble-click to rename"));
-       gtk_table_attach_defaults (GTK_TABLE (table), scrollwin, 0, 2, row, row+1);
+       gtk_widget_set_vexpand (scrollwin, TRUE);
+       gtk_widget_set_hexpand (scrollwin, TRUE);
+       gtk_grid_attach (GTK_GRID(table), scrollwin, 0, row, 2, 1);
 
-       // tools buttons
        row++;
-       widget = gtk_button_new_from_stock(GTK_STOCK_ADD);
+       widget = gtk_button_new_with_mnemonic(_("_Add"));
        data.BT_add = widget;
-       gtk_table_attach (GTK_TABLE (table), widget, 0, 1, row, row+1, (GtkAttachOptions) (GTK_FILL|GTK_EXPAND), (GtkAttachOptions) (0), 0, 0);
-       widget = gtk_button_new_from_stock(GTK_STOCK_REMOVE);
-       data.BT_rem = widget;
-       gtk_table_attach (GTK_TABLE (table), widget, 1, 2, row, row+1, (GtkAttachOptions) (GTK_FILL|GTK_EXPAND), (GtkAttachOptions) (0), 0, 0);
+       gtk_grid_attach (GTK_GRID(table), widget, 0, row, 1, 1);
+
+       widget = gtk_button_new_with_mnemonic(_("_Delete"));
+       data.BT_rem = widget; 
+       gtk_grid_attach (GTK_GRID(table), widget, 1, row, 1, 1);
 
 
        /* right area */
        notebook = gtk_notebook_new();
+       data.notebook = notebook;
        //gtk_box_pack_start (GTK_BOX (mainbox), notebook, TRUE, TRUE, 0);
+       gtk_widget_set_margin_left(notebook, SPACING_TINY);
        gtk_paned_pack2 (GTK_PANED(hpaned), notebook, FALSE, FALSE);
-       
-       /* page general */
-       table = gtk_table_new (8, 3, FALSE);
-       gtk_table_set_row_spacings (GTK_TABLE (table), HB_TABROW_SPACING);
-       gtk_table_set_col_spacings (GTK_TABLE (table), HB_TABCOL_SPACING);
-       gtk_container_set_border_width (GTK_CONTAINER(table), HB_MAINBOX_SPACING);
-       //                      gtk_alignment_new(xalign, yalign, xscale, yscale)
-       alignment = gtk_alignment_new(0.5, 0, 1.0, 0.0);
-       gtk_container_add(GTK_CONTAINER(alignment), table);
-       label = gtk_label_new(_("General"));
-       gtk_notebook_append_page(GTK_NOTEBOOK(notebook), alignment, label);
-
-       row = 0;
-       label = make_label(_("Account"), 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);
 
-       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);
-       widget = make_cycle(label, CYA_ACC_TYPE);
+       /* page :: General */
+       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);
+       label = gtk_label_new(_("General"));
+       gtk_notebook_append_page(GTK_NOTEBOOK(notebook), content_grid, label);
+
+       // group :: Account
+    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, 0, 1, 1);
+
+       label = make_label_group(_("Account"));
+       gtk_grid_attach (GTK_GRID (group_grid), label, 0, 0, 3, 1);
+
+       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 = hbtk_combo_box_new_with_data(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_grid_attach (GTK_GRID (group_grid), widget, 2, row, 1, 1);
 
-       /*
        row++;
-       label = make_label(_("_Currency:"), 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(_("_Currency:"));
+       gtk_grid_attach (GTK_GRID (group_grid), label, 1, row, 1, 1);
        widget = ui_cur_combobox_new(label);
        data.CY_curr = 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 (group_grid), widget, 2, row, 1, 1);
 
        row++;
-       label = make_label (_("Start _balance:"), 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(_("Start _balance:"));
+       gtk_grid_attach (GTK_GRID (group_grid), label, 1, row, 1, 1);
        widget = make_amount(label);
        data.ST_initial = 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 (group_grid), widget, 2, row, 1, 1);
 
        //TODO: notes
-
+       row++;
+       label = make_label_widget(_("Notes:"));
+       gtk_grid_attach (GTK_GRID (group_grid), label, 1, row, 1, 1);
+       widget = gtk_text_view_new ();
+       //#1697171 add wrap
+       gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(widget), GTK_WRAP_WORD);
+    scrollwin = gtk_scrolled_window_new (NULL, NULL);
+       gtk_widget_set_size_request (scrollwin, -1, 48);
+       gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+       gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrollwin), GTK_SHADOW_ETCHED_IN);
+       gtk_container_add (GTK_CONTAINER (scrollwin), widget);
+       gtk_widget_set_hexpand (scrollwin, TRUE);
+       gtk_widget_set_vexpand (scrollwin, TRUE);
+       data.TB_notes = widget;
+       gtk_grid_attach (GTK_GRID (group_grid), scrollwin, 2, row, 1, 1);
+       
        row++;
        widget = gtk_check_button_new_with_mnemonic (_("this account was _closed"));
        data.CM_closed = 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 (group_grid), widget, 2, row, 1, 1);
 
        
-       row++;
-       label = make_label(_("Current check number"), 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);
-
-       row++;
-       label = make_label(_("Checkbook _1:"), 0.0, 0.5);
-       gtk_table_attach (GTK_TABLE (table), label, 1, 2, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0);
+       // group :: Current check number
+    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, 1, 1, 1);
+
+       label = make_label_group(_("Current check number"));
+       gtk_grid_attach (GTK_GRID (group_grid), label, 0, 0, 3, 1);
+
+       row = 1;
+       label = make_label_widget(_("Checkbook _1:"));
+       gtk_grid_attach (GTK_GRID (group_grid), label, 1, row, 1, 1);
        widget = make_long (label);
        data.ST_cheque1 = 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 (group_grid), widget, 2, row, 1, 1);
 
        row++;
-       label = make_label(_("Checkbook _2:"), 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(_("Checkbook _2:"));
+       gtk_grid_attach (GTK_GRID (group_grid), label, 1, row, 1, 1);
        widget = make_long (label);
        data.ST_cheque2 = 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 (group_grid), widget, 2, row, 1, 1);
 
-       /* page options */
-       table = gtk_table_new (9, 3, FALSE);
-       gtk_table_set_row_spacings (GTK_TABLE (table), HB_TABROW_SPACING);
-       gtk_table_set_col_spacings (GTK_TABLE (table), HB_TABCOL_SPACING);
-       gtk_container_set_border_width (GTK_CONTAINER(table), HB_MAINBOX_SPACING);
-       //                      gtk_alignment_new(xalign, yalign, xscale, yscale)
-       alignment = gtk_alignment_new(0.5, 0, 1.0, 0.0);
-       gtk_container_add(GTK_CONTAINER(alignment), table);
+       
+       /* page :: Options */
+       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);
        label = gtk_label_new(_("Options"));
-       gtk_notebook_append_page(GTK_NOTEBOOK(notebook), alignment, label);
+       gtk_notebook_append_page(GTK_NOTEBOOK(notebook), content_grid, label);
 
-       
-       row = 0;
-       label = make_label(_("Institution"), 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);
+       // group :: Institution
+    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, 0, 1, 1);
 
-       row++;
-       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_group(_("Institution"));
+       gtk_grid_attach (GTK_GRID (group_grid), label, 0, 0, 3, 1);
+       
+       row = 1;
+       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;
-       gtk_table_attach (GTK_TABLE (table), widget, 2, 3, row, row+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0);
+       data.ST_institution = widget;
+       gtk_widget_set_hexpand(widget, TRUE);
+       gtk_grid_attach (GTK_GRID (group_grid), widget, 2, row, 2, 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 (group_grid), 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 (group_grid), widget, 2, row, 2, 1);
 
-       row++;
-       label = make_label(_("Limits"), 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);
+       // group :: Limits
+    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, 1, 1, 1);
 
+       label = make_label_group(_("Balance limits"));
+       gtk_grid_attach (GTK_GRID (group_grid), label, 0, 0, 3, 1);
+       
        //TODO: warning/absolute minimum balance
 
-       row++;
-       label = make_label (_("_Min. balance:"), 0.0, 0.5);
-       gtk_table_attach (GTK_TABLE (table), label, 1, 2, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0);
+       row = 1;
+       label = make_label_widget(_("_Overdraft at:"));
+       gtk_grid_attach (GTK_GRID (group_grid), label, 1, row, 1, 1);
        widget = make_amount(label);
-       data.ST_minimum = widget;
-       gtk_table_attach (GTK_TABLE (table), widget, 2, 3, row, row+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0);
+       data.ST_overdraft = widget;
+       gtk_grid_attach (GTK_GRID (group_grid), widget, 2, row, 1, 1);
 
-       row++;
-       label = make_label(_("Report exclusion"), 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);
+       // 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);
 
-       row++;
+       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);
+
+       row = 1;
        widget = gtk_check_button_new_with_mnemonic (_("exclude from account _summary"));
        data.CM_nosummary = 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 (group_grid), widget, 1, row, 1, 1);
 
        row++;
        widget = gtk_check_button_new_with_mnemonic (_("exclude from the _budget"));
        data.CM_nobudget = 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 (group_grid), widget, 1, row, 1, 1);
 
        row++;
        widget = gtk_check_button_new_with_mnemonic (_("exclude from any _reports"));
        data.CM_noreport = 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 (group_grid), widget, 1, row, 1, 1);
 
 
        //connect all our signals
        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);
-       g_signal_connect (G_OBJECT (data.BT_rem), "clicked", G_CALLBACK (ui_acc_manage_remove), NULL);
+       g_signal_connect (G_OBJECT (data.BT_rem), "clicked", G_CALLBACK (ui_acc_manage_delete), NULL);
 
        //setup, init and show window
        ui_acc_manage_setup(&data);
        ui_acc_manage_update(data.LV_acc, NULL);
 
-//     gtk_window_set_default_size (GTK_WINDOW (window), 640, 480);
-
        gtk_widget_show_all (dialog);
 
        //wait for the user
This page took 0.043913 seconds and 4 git commands to generate.