/* HomeBank -- Free, easy, personal ruleing for everyone.
- * Copyright (C) 1995-2014 Maxime DOYEN
+ * Copyright (C) 1995-2016 Maxime DOYEN
*
* This file is part of HomeBank.
*
gtk_tree_model_get(model, a, LST_DEFASG_DATAS, &entry1, -1);
gtk_tree_model_get(model, b, LST_DEFASG_DATAS, &entry2, -1);
- return hb_string_utf8_compare(entry1->name, entry2->name);
+ return hb_string_utf8_compare(entry1->text, entry2->text);
}
static void
#endif
gtk_tree_model_get(model, iter, LST_DEFASG_DATAS, &entry, -1);
- if(entry->name == NULL)
+ if(entry->text == NULL)
name = _("(none)"); // can never occurs also
else
- name = entry->name;
+ name = entry->text;
#if MYDEBUG
string = g_strdup_printf ("[%d] %s", entry->key, name );
void
ui_asg_listview_add(GtkTreeView *treeview, Assign *item)
{
- if( item->name != NULL )
+ if( item->text != NULL )
{
GtkTreeModel *model;
GtkTreeIter iter;
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);
-
// column 1: toggle
if( withtoggle == TRUE )
{
// column 2: name
renderer = gtk_cell_renderer_text_new ();
+ g_object_set(renderer,
+ "ellipsize", PANGO_ELLIPSIZE_END,
+ "ellipsize-set", TRUE,
+ NULL);
+
column = gtk_tree_view_column_new();
+ gtk_tree_view_column_set_title(column, _("Text"));
gtk_tree_view_column_pack_start(column, renderer, TRUE);
gtk_tree_view_column_set_cell_data_func(column, renderer, ui_asg_listview_name_cell_data_function, GINT_TO_POINTER(LST_DEFASG_DATAS), NULL);
+ gtk_tree_view_column_set_alignment (column, 0.5);
+ gtk_tree_view_column_set_resizable(column, TRUE);
gtk_tree_view_append_column (GTK_TREE_VIEW(treeview), column);
// treeviewattribute
- gtk_tree_view_set_headers_visible (GTK_TREE_VIEW(treeview), FALSE);
+ //gtk_tree_view_set_headers_visible (GTK_TREE_VIEW(treeview), FALSE);
gtk_tree_view_set_reorderable (GTK_TREE_VIEW(treeview), TRUE);
gtk_tree_sortable_set_default_sort_func(GTK_TREE_SORTABLE(store), ui_asg_listview_compare_func, NULL, NULL);
static gboolean
assign_rename(Assign *item, gchar *newname)
{
-Account *existitem;
+Assign *existitem;
- existitem = da_acc_get_by_name(newname);
+ existitem = da_asg_get_by_name(newname);
if( existitem == NULL )
{
- g_free(item->name);
- item->name = g_strdup(newname);
+ g_free(item->text);
+ item->text = g_strdup(newname);
return TRUE;
}
static void ui_asg_manage_getlast(struct ui_asg_manage_data *data)
{
-gchar *txt;
-gboolean bool;
Assign *item;
gint active;
item->field = radio_get_active(GTK_CONTAINER(data->CY_field));
- txt = (gchar *)gtk_entry_get_text(GTK_ENTRY(data->ST_text));
+ /*txt = (gchar *)gtk_entry_get_text(GTK_ENTRY(data->ST_text));
if (txt && *txt)
{
bool = assign_rename(item, txt);
}
else
{
- gtk_entry_set_text(GTK_ENTRY(data->ST_text), item->name);
+ gtk_entry_set_text(GTK_ENTRY(data->ST_text), item->text);
}
- }
+ }*/
item->flags = 0;
-
- active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_exact));
+
+ active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_exact));
if(active == 1) item->flags |= ASGF_EXACT;
- active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_pay));
- if(active == 1) item->flags |= ASGF_DOPAY;
+ active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_re));
+ if(active == 1) item->flags |= ASGF_REGEX;
- active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_cat));
+ active = radio_get_active (GTK_CONTAINER(data->RA_pay));
+ if(active == 1) item->flags |= ASGF_DOPAY;
+ else
+ if(active == 2) item->flags |= ASGF_OVWPAY;
+
+ active = radio_get_active (GTK_CONTAINER(data->RA_cat));
if(active == 1) item->flags |= ASGF_DOCAT;
+ else
+ if(active == 2) item->flags |= ASGF_OVWCAT;
+
+ active = radio_get_active (GTK_CONTAINER(data->RA_mod));
+ if(active == 1) item->flags |= ASGF_DOMOD;
+ else
+ if(active == 2) item->flags |= ASGF_OVWMOD;
item->kcat = ui_cat_comboboxentry_get_key_add_new(GTK_COMBO_BOX(data->PO_cat));
item->kpay = ui_pay_comboboxentry_get_key_add_new(GTK_COMBO_BOX(data->PO_pay));
+ item->paymode = gtk_combo_box_get_active(GTK_COMBO_BOX(data->NU_mod));
}
GtkTreeModel *model;
GtkTreeIter iter;
Assign *item;
+gint active;
DB( g_print("\n(ui_asg_manage_set)\n") );
radio_set_active(GTK_CONTAINER(data->CY_field), item->field);
- gtk_entry_set_text(GTK_ENTRY(data->ST_text), item->name);
+ gtk_entry_set_text(GTK_ENTRY(data->ST_text), item->text);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_exact), (item->flags & ASGF_EXACT) ? 1 : 0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_re), (item->flags & ASGF_REGEX) ? 1 : 0);
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_cat), (item->flags & ASGF_DOCAT) ? 1 : 0);
- ui_cat_comboboxentry_set_active(GTK_COMBO_BOX(data->PO_cat), item->kcat);
-
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_pay), (item->flags & ASGF_DOPAY) ? 1 : 0);
+ active = 0;
+ if(item->flags & ASGF_DOPAY) active = 1;
+ else if(item->flags & ASGF_OVWPAY) active = 2;
+ radio_set_active(GTK_CONTAINER(data->RA_pay), active);
ui_pay_comboboxentry_set_active(GTK_COMBO_BOX(data->PO_pay), item->kpay);
+ active = 0;
+ if(item->flags & ASGF_DOCAT) active = 1;
+ else if(item->flags & ASGF_OVWCAT) active = 2;
+ radio_set_active(GTK_CONTAINER(data->RA_cat), active);
+ ui_cat_comboboxentry_set_active(GTK_COMBO_BOX(data->PO_cat), item->kcat);
+
+ active = 0;
+ if(item->flags & ASGF_DOMOD) active = 1;
+ else if(item->flags & ASGF_OVWMOD) active = 2;
+ radio_set_active(GTK_CONTAINER(data->RA_mod), active);
+ gtk_combo_box_set_active(GTK_COMBO_BOX(data->NU_mod), item->paymode);
}
static void ui_asg_manage_update_assignments(GtkWidget *widget, gpointer user_data)
{
struct ui_asg_manage_data *data;
-gboolean active;
+gboolean sensitive;
DB( g_print("\n(ui_asg_manage_update_assignments)\n") );
data = g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(widget, GTK_TYPE_WINDOW)), "inst_data");
- active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_pay));
- gtk_widget_set_sensitive(data->PO_pay, active);
+ sensitive = (radio_get_active (GTK_CONTAINER(data->RA_pay)) > 0) ? TRUE : FALSE;
+ gtk_widget_set_sensitive(data->LB_pay, sensitive);
+ gtk_widget_set_sensitive(data->PO_pay, sensitive);
- active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_cat));
- gtk_widget_set_sensitive(data->PO_cat, active);
+ sensitive = (radio_get_active (GTK_CONTAINER(data->RA_cat)) > 0) ? TRUE : FALSE;
+ gtk_widget_set_sensitive(data->LB_cat, sensitive);
+ gtk_widget_set_sensitive(data->PO_cat, sensitive);
- //active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_mod));
- //gtk_widget_set_sensitive(data->NU_mod, active);
+ sensitive = (radio_get_active (GTK_CONTAINER(data->RA_mod)) > 0) ? TRUE : FALSE;
+ gtk_widget_set_sensitive(data->LB_mod, sensitive);
+ gtk_widget_set_sensitive(data->NU_mod, sensitive);
}
GtkTreeIter iter;
gboolean selected, sensitive;
guint32 key;
-//todo: for stock assign
//gboolean is_new;
DB( g_print("\n(ui_asg_manage_update)\n") );
sensitive = (selected == TRUE) ? TRUE : FALSE;
- gtk_widget_set_sensitive(data->CY_field, sensitive);
- gtk_widget_set_sensitive(data->ST_text, sensitive);
- gtk_widget_set_sensitive(data->CM_exact, sensitive);
-
- gtk_widget_set_sensitive(data->CM_pay, sensitive);
- gtk_widget_set_sensitive(data->CM_cat, sensitive);
-
- gtk_widget_set_sensitive(data->PO_pay, sensitive);
- gtk_widget_set_sensitive(data->PO_cat, sensitive);
-
+ gtk_widget_set_sensitive(data->GR_condition, sensitive);
+ gtk_widget_set_sensitive(data->GR_pay, sensitive);
+ gtk_widget_set_sensitive(data->GR_cat, sensitive);
+ gtk_widget_set_sensitive(data->GR_mod, sensitive);
//sensitive = (data->action == 0) ? TRUE : FALSE;
//gtk_widget_set_sensitive(data->LV_rul, sensitive);
DB( g_print("\n(ui_asg_manage_add) (data=%x)\n", (guint)data) );
item = da_asg_malloc();
- item->name = g_strdup_printf( _("(assignment %d)"), da_asg_length()+1);
+ item->text = g_strdup_printf( _("(assignment %d)"), da_asg_length()+1);
da_asg_append(item);
ui_asg_listview_add(GTK_TREE_VIEW(data->LV_rul), item);
}
/*
-** remove the selected assign to our treeview and temp GList
+** delete the selected assign to our treeview and temp GList
*/
-static void ui_asg_manage_remove(GtkWidget *widget, gpointer user_data)
+static void ui_asg_manage_delete(GtkWidget *widget, gpointer user_data)
{
struct ui_asg_manage_data *data;
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_asg_manage_remove) (data=%x)\n", (guint)data) );
- do_remove = TRUE;
key = ui_asg_listview_get_selected_key(GTK_TREE_VIEW(data->LV_rul));
if( key > 0 )
{
- if( do_remove )
+ Assign *item = da_asg_get(key);
+ gchar *title = NULL;
+ gchar *secondtext;
+
+ title = g_strdup_printf (
+ _("Are you sure you want to permanently delete '%s'?"), item->text);
+
+ secondtext = _("If you delete an assignment, 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_asg_remove(key);
ui_asg_listview_remove_selected(GTK_TREE_VIEW(data->LV_rul));
{
struct ui_asg_manage_data *data;
guint32 key;
-gboolean ok;
+gboolean error;
gchar *txt;
data = g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(widget, GTK_TYPE_WINDOW)), "inst_data");
DB( g_print("\n(ui_asg_manage_rename) (data=%x)\n", (guint)data) );
+ error = FALSE;
+
key = ui_asg_listview_get_selected_key(GTK_TREE_VIEW(data->LV_rul));
if( key > 0 )
{
- Assign *item = da_asg_get(key);
+ Assign *item = da_asg_get(key);
+
txt = (gchar *)gtk_entry_get_text(GTK_ENTRY(data->ST_text));
- if (txt && *txt)
+ if( txt == NULL || *txt == '\0' )
+ {
+ error = TRUE;
+ goto end;
+ }
+
+ if( strcmp(txt, item->text) )
{
- ok = assign_rename(item, txt);
- if(ok)
+ if( assign_rename(item, txt) == TRUE )
{
+ //todo: review this count
+ data->change++;
gtk_tree_view_columns_autosize (GTK_TREE_VIEW(data->LV_rul));
}
-
+ else
+ error = TRUE;
}
-
- data->change++;
}
-}
-
+end:
+ gtk_style_context_remove_class (gtk_widget_get_style_context (GTK_WIDGET(data->ST_text)), GTK_STYLE_CLASS_ERROR);
+ if( error == TRUE )
+ gtk_style_context_add_class (gtk_widget_get_style_context (GTK_WIDGET(data->ST_text)), GTK_STYLE_CLASS_ERROR);
+}
/*
LST_DEFASG_DATAS, &item,
-1);
- DB( g_print(" -> check rul %d, pos is %d, %s\n", i, item->pos, item->name) );
+ DB( g_print(" -> check rul %d, pos is %d, %s\n", i, item->pos, item->text) );
if(item->pos != i)
data->change++;
ui_cat_comboboxentry_populate(GTK_COMBO_BOX(data->PO_cat), GLOBALS->h_cat);
}
+static gchar *CYA_ASG_ACTION[] = {
+ N_("Disabled"),
+ N_("If empty"),
+ N_("Overwrite"),
+ NULL
+};
+
+
+
/*
**
*/
{
struct ui_asg_manage_data data;
GtkWidget *window, *content, *mainbox;
+GtkWidget *content_grid, *group_grid;
GtkWidget *table, *label, *entry1;
GtkWidget *scrollwin;
-GtkWidget *hpaned;
-GtkWidget *alignment, *widget;
-gint row;
+GtkWidget *widget, *hpaned;
+gint w, h, crow, row;
window = gtk_dialog_new_with_buttons (_("Manage Assignments"),
GTK_WINDOW(GLOBALS->mainwindow),
0,
- GTK_STOCK_CLOSE,
+ _("_Close"),
GTK_RESPONSE_ACCEPT,
NULL);
data.window = window;
//set the window icon
- //homebank_window_set_icon_from_file(GTK_WINDOW (window), "assign.svg");
- gtk_window_set_icon_name(GTK_WINDOW (window), HB_STOCK_ASSIGN);
+ gtk_window_set_icon_name(GTK_WINDOW (window), ICONNAME_HB_ASSIGN);
//set a nice dialog size
- //gint w, h;
- //gtk_window_get_size(GTK_WINDOW(GLOBALS->mainwindow), &w, &h);
- //gtk_window_set_default_size (GTK_WINDOW(window), w/PHI, h/PHI);
+ gtk_window_get_size(GTK_WINDOW(GLOBALS->mainwindow), &w, &h);
+ gtk_window_set_default_size (GTK_WINDOW(window), -1, h/PHI);
//store our window private data
g_object_set_data(G_OBJECT(window), "inst_data", (gpointer)&data);
DB( g_print("(ui_asg_manage_) window=%x, inst_data=%x\n", (guint)window, (guint)&data) );
//window contents
- content = gtk_dialog_get_content_area(GTK_DIALOG (window));
- mainbox = gtk_hbox_new (FALSE, HB_BOX_SPACING);
+ content = gtk_dialog_get_content_area(GTK_DIALOG (window)); // return a vbox
+
+
+ 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);
/* 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);
+ 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 (mainbox), table, FALSE, FALSE, 0);
+ gtk_widget_set_margin_right(table, SPACING_SMALL);
gtk_paned_pack1 (GTK_PANED(hpaned), table, FALSE, FALSE);
row = 0;
data.LV_rul = ui_asg_listview_new(FALSE);
gtk_widget_set_size_request(data.LV_rul, HB_MINWIDTH_LIST, -1);
gtk_container_add(GTK_CONTAINER(scrollwin), data.LV_rul);
- 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);
+ gtk_grid_attach (GTK_GRID(table), widget, 0, row, 1, 1);
+
+ widget = gtk_button_new_with_mnemonic(_("_Delete"));
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, 1, row, 1, 1);
/* right area */
- table = gtk_table_new (12, 4, FALSE);
- //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.0, 1.0, 0.0);
- gtk_container_add(GTK_CONTAINER(alignment), table);
- //gtk_box_pack_start (GTK_BOX (mainbox), alignment, TRUE, TRUE, 0);
- gtk_paned_pack2 (GTK_PANED(hpaned), alignment, FALSE, FALSE);
+ 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_widget_set_margin_left(content_grid, SPACING_SMALL);
+ gtk_paned_pack2 (GTK_PANED(hpaned), content_grid, FALSE, FALSE);
+
+ // group :: Condition
+ crow = 0;
+ group_grid = gtk_grid_new ();
+ data.GR_condition = group_grid;
+ 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;
- label = make_label(_("Condition"), 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, 4, row, row+1);
-
+ label = make_label_group(_("Condition"));
+ gtk_grid_attach (GTK_GRID (group_grid), label, 0, row, 3, 1);
+
row++;
- label = make_label(_("_Field:"), 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_radio(label, CYA_ASG_FIELD, GTK_ORIENTATION_VERTICAL);
+ label = make_label_widget(_("Search _in:"));
+ gtk_grid_attach (GTK_GRID (group_grid), label, 1, row, 1, 1);
+ widget = make_radio(CYA_ASG_FIELD, FALSE, GTK_ORIENTATION_HORIZONTAL);
data.CY_field = widget;
- gtk_table_attach (GTK_TABLE (table), widget, 2, 4, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0);
+ gtk_grid_attach (GTK_GRID (group_grid), widget, 2, row, 2, 1);
row++;
- label = make_label(_("Con_tains:"), 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(_("Con_tains:"));
+ label = make_label_widget(_("Fi_nd:"));
+ gtk_grid_attach (GTK_GRID (group_grid), label, 1, row, 1, 1);
entry1 = make_string(label);
data.ST_text = entry1;
- gtk_table_attach (GTK_TABLE (table), entry1, 2, 4, row, row+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0);
+ gtk_widget_set_hexpand(entry1, TRUE);
+ gtk_grid_attach (GTK_GRID (group_grid), entry1, 2, row, 2, 1);
row++;
- widget = gtk_check_button_new_with_mnemonic (_("Case _sensitive"));
+ widget = gtk_check_button_new_with_mnemonic (_("Match _case"));
data.CM_exact = widget;
- gtk_table_attach (GTK_TABLE (table), widget, 1, 4, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0);
+ gtk_grid_attach (GTK_GRID (group_grid), widget, 2, row, 2, 1);
+
+ row++;
+ widget = gtk_check_button_new_with_mnemonic (_("Use _regular expressions"));
+ data.CM_re = widget;
+ gtk_grid_attach (GTK_GRID (group_grid), widget, 2, row, 2, 1);
+
+ // Assignments
+
+ // group :: Assign payee
+ crow++;
+ group_grid = gtk_grid_new ();
+ data.GR_pay = group_grid;
+ 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;
+ label = make_label_group(_("Assign payee"));
+ gtk_grid_attach (GTK_GRID (group_grid), label, 0, row, 3, 1);
+
+ row++;
+ widget = make_radio(CYA_ASG_ACTION, FALSE, GTK_ORIENTATION_HORIZONTAL);
+ data.RA_pay = widget;
+ gtk_grid_attach (GTK_GRID (group_grid), widget, 2, row, 1, 1);
+
+ row++;
+ label = make_label_widget (_("_Payee:"));
+ data.LB_pay = label;
+ gtk_grid_attach (GTK_GRID (group_grid), label, 1, row, 1, 1);
+
+ widget = ui_pay_comboboxentry_new(label);
+ data.PO_pay = widget;
+ gtk_widget_set_hexpand(widget, TRUE);
+ gtk_grid_attach (GTK_GRID (group_grid), widget, 2, row, 1, 1);
+
+
+ //gtk_widget_set_tooltip_text(widget, _("Autocompletion and direct seizure\nis available for Payee"));
+
+ crow++;
+ group_grid = gtk_grid_new ();
+ data.GR_cat = group_grid;
+ 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;
+ label = make_label_group(_("Assign category"));
+ gtk_grid_attach (GTK_GRID (group_grid), label, 0, row, 3, 1);
-
- //other
row++;
- label = make_label(NULL, 0.0, 0.5);
- gtk_label_set_markup (GTK_LABEL(label), _("Assignments"));
- gimp_label_set_attributes(GTK_LABEL(label), PANGO_ATTR_WEIGHT, PANGO_WEIGHT_BOLD, -1);
- gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 4, row, row+1);
+ widget = make_radio(CYA_ASG_ACTION, FALSE, GTK_ORIENTATION_HORIZONTAL);
+ data.RA_cat = widget;
+ gtk_grid_attach (GTK_GRID (group_grid), widget, 2, row, 1, 1);
row++;
- label = gtk_label_new_with_mnemonic (_("_Category:"));
- gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
- gtk_table_attach (GTK_TABLE (table), label, 1, 2, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0);
- widget = gtk_check_button_new();
- data.CM_cat = widget;
- gtk_table_attach (GTK_TABLE (table), widget, 2, 3, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0);
+ label = make_label_widget (_("_Category:"));
+ data.LB_cat = label;
+ gtk_grid_attach (GTK_GRID (group_grid), label, 1, row, 1, 1);
+
widget = ui_cat_comboboxentry_new(label);
data.PO_cat = widget;
- gtk_table_attach (GTK_TABLE (table), widget, 3, 4, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0);
+ gtk_widget_set_hexpand(widget, TRUE);
+ gtk_grid_attach (GTK_GRID (group_grid), widget, 2, row, 1, 1);
- gtk_widget_set_tooltip_text(widget, _("Autocompletion and direct seizure\nis available for Category"));
+ //gtk_widget_set_tooltip_text(widget, _("Autocompletion and direct seizure\nis available for Category"));
+
+ crow++;
+ group_grid = gtk_grid_new ();
+ data.GR_mod = group_grid;
+ 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;
+ label = make_label_group(_("Assign payment"));
+ gtk_grid_attach (GTK_GRID (group_grid), label, 0, row, 3, 1);
-
row++;
- label = gtk_label_new_with_mnemonic (_("_Payee:"));
- gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
- gtk_table_attach (GTK_TABLE (table), label, 1, 2, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0);
- widget = gtk_check_button_new();
- data.CM_pay = widget;
- gtk_table_attach (GTK_TABLE (table), widget, 2, 3, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0);
- widget = ui_pay_comboboxentry_new(label);
- data.PO_pay = widget;
- gtk_table_attach_defaults (GTK_TABLE (table), widget, 3, 4, row, row+1);
+ widget = make_radio(CYA_ASG_ACTION, FALSE, GTK_ORIENTATION_HORIZONTAL);
+ data.RA_mod = widget;
+ gtk_grid_attach (GTK_GRID (group_grid), widget, 2, row, 1, 1);
+
+ row++;
+ label = make_label_widget (_("Pay_ment:"));
+ data.LB_mod = label;
+ gtk_grid_attach (GTK_GRID (group_grid), label, 1, row, 1, 1);
- gtk_widget_set_tooltip_text(widget, _("Autocompletion and direct seizure\nis available for Payee"));
+ widget = make_paymode_nointxfer (label);
+ data.NU_mod = widget;
+ gtk_widget_set_hexpand(widget, TRUE);
+ gtk_grid_attach (GTK_GRID (group_grid), widget, 2, row, 1, 1);
+ //ugly hack
+ //gtk_widget_set_tooltip_text(widget, _("Internal transfer unsupported\nin auto assignments"));
//connect all our signals
g_signal_connect (G_OBJECT (data.ST_text), "changed", G_CALLBACK (ui_asg_manage_rename), NULL);
- g_signal_connect (G_OBJECT (data.CM_cat), "toggled", G_CALLBACK (ui_asg_manage_update_assignments), NULL);
- g_signal_connect (G_OBJECT (data.CM_pay), "toggled", G_CALLBACK (ui_asg_manage_update_assignments), NULL);
+ widget = radio_get_nth_widget(GTK_CONTAINER(data.RA_pay), 0);
+ if(widget)
+ g_signal_connect (widget, "toggled", G_CALLBACK (ui_asg_manage_update_assignments), NULL);
+
+ widget = radio_get_nth_widget(GTK_CONTAINER(data.RA_cat), 0);
+ if(widget)
+ g_signal_connect (widget, "toggled", G_CALLBACK (ui_asg_manage_update_assignments), NULL);
+
+ widget = radio_get_nth_widget(GTK_CONTAINER(data.RA_mod), 0);
+ if(widget)
+ g_signal_connect (widget, "toggled", G_CALLBACK (ui_asg_manage_update_assignments), NULL);
g_signal_connect (G_OBJECT (data.BT_add), "clicked", G_CALLBACK (ui_asg_manage_add), NULL);
- g_signal_connect (G_OBJECT (data.BT_rem), "clicked", G_CALLBACK (ui_asg_manage_remove), NULL);
+ g_signal_connect (G_OBJECT (data.BT_rem), "clicked", G_CALLBACK (ui_asg_manage_delete), NULL);
//setup, init and show window
ui_asg_manage_setup(&data);