Merge lp:~slodki/homebank/re into lp:homebank/trunk

Proposed by slodki
Status: Rejected
Rejected by: Maxime DOYEN
Proposed branch: lp:~slodki/homebank/re
Merge into: lp:homebank/trunk
Diff against target: 500 lines (+184/-28)
8 files modified
src/hb-assign.c (+1/-0)
src/hb-assign.h (+5/-0)
src/hb-hbfile.c (+2/-0)
src/hb-transaction.c (+33/-8)
src/hb-xml.c (+10/-2)
src/homebank.h (+1/-1)
src/ui-assign.c (+125/-14)
src/ui-assign.h (+7/-3)
To merge this branch: bzr merge lp:~slodki/homebank/re
Reviewer Review Type Date Requested Status
Maxime DOYEN Pending
Review via email: mp+273769@code.launchpad.net

Description of the change

See related bug description with examples and screenshots.
Manual should be also updated with reference to https://developer.gnome.org/glib/stable/glib-regex-syntax.html.

To post a comment you must log in.
lp:~slodki/homebank/re updated
37. By slodki

minor fix

38. By slodki

GUI for ASGF_OVW* added

39. By slodki

Don't allow to overwrite with empty payee or category in assignments

40. By slodki

Add ability to assign Payment

41. By slodki

Fixed typo in assign_rename()

42. By slodki

merged trunk

43. By slodki

fix for merging trunk

44. By slodki

fix for merging trunk

Unmerged revisions

44. By slodki

fix for merging trunk

43. By slodki

fix for merging trunk

42. By slodki

merged trunk

41. By slodki

Fixed typo in assign_rename()

40. By slodki

Add ability to assign Payment

39. By slodki

Don't allow to overwrite with empty payee or category in assignments

38. By slodki

GUI for ASGF_OVW* added

37. By slodki

minor fix

36. By slodki

update to latest trunk

35. By slodki

New attribute "patt" (pattern) added to assignment rule.
Changed assignment window layout - separate name and pattern fields
xhb file format version bumped to 1.2 (upgrade from <1.2 included).

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/hb-assign.c'
2--- src/hb-assign.c 2015-02-08 13:24:47 +0000
3+++ src/hb-assign.c 2015-10-24 13:51:48 +0000
4@@ -43,6 +43,7 @@
5 DB( g_print(" => %d, %s\n", item->key, item->name) );
6
7 g_free(item->name);
8+ g_free(item->patt);
9 g_free(item);
10 }
11 }
12
13=== modified file 'src/hb-assign.h'
14--- src/hb-assign.h 2015-10-04 09:22:24 +0000
15+++ src/hb-assign.h 2015-10-24 13:51:48 +0000
16@@ -30,8 +30,10 @@
17 gushort flags;
18 gushort field;
19 gchar *name;
20+ gchar *patt;
21 guint32 kpay;
22 guint32 kcat;
23+ gushort paymode;
24 };
25
26
27@@ -40,6 +42,9 @@
28 #define ASGF_DOCAT (1<<2)
29 #define ASGF_OVWPAY (1<<3)
30 #define ASGF_OVWCAT (1<<4)
31+#define ASGF_REMATCH (1<<5)
32+#define ASGF_DOMOD (1<<6)
33+#define ASGF_OVWMOD (1<<7)
34
35 void
36 da_asg_free(Assign *item);
37
38=== modified file 'src/hb-hbfile.c'
39--- src/hb-hbfile.c 2015-10-04 09:22:24 +0000
40+++ src/hb-hbfile.c 2015-10-24 13:51:48 +0000
41@@ -273,6 +273,8 @@
42 {
43 g_free(item->name);
44 item->name = g_strdup_printf("assign %d", item->key);
45+ g_free(item->patt);
46+ item->patt = g_strdup_printf("pattern %d", item->key);
47 GLOBALS->changes_count++;
48 }
49 list = g_list_next(list);
50
51=== modified file 'src/hb-transaction.c'
52--- src/hb-transaction.c 2015-10-18 12:22:35 +0000
53+++ src/hb-transaction.c 2015-10-24 13:51:48 +0000
54@@ -853,6 +853,22 @@
55 return match;
56 }
57
58+static gboolean misc_re_match(gchar *text, gchar *searchtext, gboolean exact)
59+{
60+gboolean match = FALSE;
61+
62+ if(text == NULL)
63+ return FALSE;
64+
65+ DB( g_print("match RE %s in %s\n", searchtext, text) );
66+ if( searchtext != NULL )
67+ {
68+ match = g_regex_match_simple(searchtext, text, ((exact == TRUE)?0:G_REGEX_CASELESS) | G_REGEX_OPTIMIZE, G_REGEX_MATCH_NOTEMPTY );
69+ if (match == TRUE) { DB( g_print(" found pattern '%s'\n", searchtext) ); }
70+ }
71+ return match;
72+}
73+
74
75 static Assign *transaction_auto_assign_eval_txn(GList *l_rul, Transaction *txn)
76 {
77@@ -874,7 +890,7 @@
78 if(pay)
79 text = pay->name;
80 }
81- if( misc_text_match(text, rul->name, rul->flags & ASGF_EXACT))
82+ if( (rul->flags & ASGF_REMATCH) ? misc_re_match(text, rul->patt, rul->flags & ASGF_EXACT) : misc_text_match(text, rul->patt, rul->flags & ASGF_EXACT) )
83 rule = rul;
84
85 list = g_list_next(list);
86@@ -898,7 +914,7 @@
87
88 if( rul->field == 0 ) //memo
89 {
90- if( misc_text_match(text, rul->name, rul->flags & ASGF_EXACT))
91+ if( (rul->flags & ASGF_REMATCH) ? misc_re_match(text, rul->patt, rul->flags & ASGF_EXACT) : misc_text_match(text, rul->patt, rul->flags & ASGF_EXACT) )
92 rule = rul;
93 }
94 list = g_list_next(list);
95@@ -934,17 +950,26 @@
96 rul = transaction_auto_assign_eval_txn(l_rul, ope);
97 if( rul != NULL )
98 {
99- if( (ope->kpay == 0 || (rul->flags & ASGF_OVWPAY)) && (rul->flags & ASGF_DOPAY) )
100+ if( (ope->kpay == 0 || (rul->flags & ASGF_OVWPAY)) && rul->kpay != 0 && ope->kpay != rul->kpay && (rul->flags & ASGF_DOPAY) )
101 {
102- if(ope->kpay != rul->kpay) { changed = TRUE; }
103+ changed = TRUE;
104 ope->kpay = rul->kpay;
105 }
106
107+ if( (ope->paymode == 0 || (rul->flags & ASGF_OVWMOD)) && rul->paymode != 0 && ope->paymode != rul->paymode && (rul->flags & ASGF_DOMOD) )
108+ {
109+ if(ope->paymode != PAYMODE_INTXFER && rul->paymode != PAYMODE_INTXFER) //ugly hack - don't allow modify intxfer
110+ {
111+ changed = TRUE;
112+ ope->paymode = rul->paymode;
113+ }
114+ }
115+
116 if( !(ope->flags & OF_SPLIT) )
117 {
118- if( (ope->kcat == 0 || (rul->flags & ASGF_OVWCAT)) && (rul->flags & ASGF_DOCAT) )
119+ if( (ope->kcat == 0 || (rul->flags & ASGF_OVWCAT)) && rul->kcat != 0 && ope->kcat != rul->kcat && (rul->flags & ASGF_DOCAT) )
120 {
121- if(ope->kcat != rul->kcat) { changed = TRUE; }
122+ changed = TRUE;
123 ope->kcat = rul->kcat;
124 }
125 }
126@@ -964,9 +989,9 @@
127 if( rul != NULL )
128 {
129 //#1501144: check if user wants to set category in rule
130- if( (split->kcat == 0 || (rul->flags & ASGF_OVWCAT)) && (rul->flags & ASGF_DOCAT) )
131+ if( (split->kcat == 0 || (rul->flags & ASGF_OVWCAT)) && rul->kcat != 0 && split->kcat != rul->kcat && (rul->flags & ASGF_DOCAT) )
132 {
133- if(split->kcat != rul->kcat) { changed = TRUE; }
134+ changed = TRUE;
135 split->kcat = rul->kcat;
136 }
137 }
138
139=== modified file 'src/hb-xml.c'
140--- src/hb-xml.c 2015-10-18 12:22:35 +0000
141+++ src/hb-xml.c 2015-10-24 13:51:48 +0000
142@@ -405,9 +405,10 @@
143 else if(!strcmp (attribute_names[i], "flags" )) { entry->flags = atoi(attribute_values[i]); }
144 else if(!strcmp (attribute_names[i], "field" )) { entry->field = atoi(attribute_values[i]); }
145 else if(!strcmp (attribute_names[i], "name" )) { if(strcmp(attribute_values[i],"(null)") && attribute_values[i] != NULL) entry->name = g_strdup(attribute_values[i]); }
146+ else if(!strcmp (attribute_names[i], "patt" )) { if(strcmp(attribute_values[i],"(null)") && attribute_values[i] != NULL) entry->patt = g_strdup(attribute_values[i]); }
147 else if(!strcmp (attribute_names[i], "payee" )) { entry->kpay = atoi(attribute_values[i]); }
148 else if(!strcmp (attribute_names[i], "category")) { entry->kcat = atoi(attribute_values[i]); }
149- //else if(!strcmp (attribute_names[i], "paymode" )) { entry->paymode = atoi(attribute_values[i]); }
150+ else if(!strcmp (attribute_names[i], "paymode" )) { entry->paymode = atoi(attribute_values[i]); }
151 // prior v08
152 else if(!strcmp (attribute_names[i], "exact" )) { exact = atoi(attribute_values[i]); }
153 }
154@@ -420,6 +421,12 @@
155 entry->flags |= ASGF_EXACT;
156 }
157
158+ /* in v1.2 pattern field added, value stored in name earlier */
159+ if( ctx->file_version < 1.2)
160+ {
161+ entry->patt = g_strdup(entry->name);
162+ }
163+
164 //all attribute loaded: append
165 da_asg_append(entry);
166
167@@ -1224,9 +1231,10 @@
168 hb_xml_append_int(node, "flags" , item->flags);
169 hb_xml_append_int(node, "field" , item->field);
170 hb_xml_append_txt(node, "name" , item->name);
171+ hb_xml_append_txt(node, "patt" , item->patt);
172 hb_xml_append_int(node, "payee" , item->kpay);
173 hb_xml_append_int(node, "category", item->kcat);
174- //hb_xml_append_int(node, "paymode" , item->paymode);
175+ hb_xml_append_int(node, "paymode" , item->paymode);
176
177 g_string_append(node, "/>\n");
178
179
180=== modified file 'src/homebank.h'
181--- src/homebank.h 2015-10-04 09:22:24 +0000
182+++ src/homebank.h 2015-10-24 13:51:48 +0000
183@@ -76,7 +76,7 @@
184 #define HB_VERSION "5.0.6"
185 #define HB_VERSION_NUM (HB_VERSION_MAJOR*10000) + (HB_VERSION_MINOR*100) + HB_VERSION_MICRO
186
187-#define FILE_VERSION 1.1
188+#define FILE_VERSION 1.2
189 #define PREF_VERSION 500
190
191 #if HB_UNSTABLE == FALSE
192
193=== modified file 'src/ui-assign.c'
194--- src/ui-assign.c 2015-10-18 12:22:35 +0000
195+++ src/ui-assign.c 2015-10-24 13:51:48 +0000
196@@ -312,7 +312,7 @@
197
198 item->field = radio_get_active(GTK_CONTAINER(data->CY_field));
199
200- /*txt = (gchar *)gtk_entry_get_text(GTK_ENTRY(data->ST_text));
201+ /*txt = (gchar *)gtk_entry_get_text(GTK_ENTRY(data->ST_name));
202 if (txt && *txt)
203 {
204 bool = assign_rename(item, txt);
205@@ -322,7 +322,7 @@
206 }
207 else
208 {
209- gtk_entry_set_text(GTK_ENTRY(data->ST_text), item->name);
210+ gtk_entry_set_text(GTK_ENTRY(data->ST_name), item->name);
211 }
212 }*/
213
214@@ -331,15 +331,30 @@
215 active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_exact));
216 if(active == 1) item->flags |= ASGF_EXACT;
217
218+ active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_re));
219+ if(active == 1) item->flags |= ASGF_REMATCH;
220+
221 active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_pay));
222 if(active == 1) item->flags |= ASGF_DOPAY;
223
224 active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_cat));
225 if(active == 1) item->flags |= ASGF_DOCAT;
226
227+ active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_mod));
228+ if(active == 1) item->flags |= ASGF_DOMOD;
229+
230 item->kcat = ui_cat_comboboxentry_get_key_add_new(GTK_COMBO_BOX(data->PO_cat));
231 item->kpay = ui_pay_comboboxentry_get_key_add_new(GTK_COMBO_BOX(data->PO_pay));
232-
233+ item->paymode = gtk_combo_box_get_active(GTK_COMBO_BOX(data->NU_mod));
234+
235+ active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_payovw));
236+ if(active == 1) item->flags |= ASGF_OVWPAY;
237+
238+ active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_catovw));
239+ if(active == 1) item->flags |= ASGF_OVWCAT;
240+
241+ active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_modovw));
242+ if(active == 1) item->flags |= ASGF_OVWMOD;
243 }
244
245 }
246@@ -371,15 +386,23 @@
247
248 radio_set_active(GTK_CONTAINER(data->CY_field), item->field);
249
250- gtk_entry_set_text(GTK_ENTRY(data->ST_text), item->name);
251+ gtk_entry_set_text(GTK_ENTRY(data->ST_name), item->name);
252+ gtk_entry_set_text(GTK_ENTRY(data->ST_patt), item->patt);
253
254 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_exact), (item->flags & ASGF_EXACT) ? 1 : 0);
255+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_re), (item->flags & ASGF_REMATCH) ? 1 : 0);
256
257 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_cat), (item->flags & ASGF_DOCAT) ? 1 : 0);
258 ui_cat_comboboxentry_set_active(GTK_COMBO_BOX(data->PO_cat), item->kcat);
259+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_catovw), (item->flags & ASGF_OVWCAT) ? 1 : 0);
260
261 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_pay), (item->flags & ASGF_DOPAY) ? 1 : 0);
262 ui_pay_comboboxentry_set_active(GTK_COMBO_BOX(data->PO_pay), item->kpay);
263+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_payovw), (item->flags & ASGF_OVWPAY) ? 1 : 0);
264+
265+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_mod), (item->flags & ASGF_DOMOD) ? 1 : 0);
266+ gtk_combo_box_set_active(GTK_COMBO_BOX(data->NU_mod), item->paymode);
267+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_modovw), (item->flags & ASGF_OVWMOD) ? 1 : 0);
268
269
270 }
271@@ -405,12 +428,15 @@
272
273 active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_pay));
274 gtk_widget_set_sensitive(data->PO_pay, active);
275+ gtk_widget_set_sensitive(data->CM_payovw, active);
276
277 active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_cat));
278 gtk_widget_set_sensitive(data->PO_cat, active);
279+ gtk_widget_set_sensitive(data->CM_catovw, active);
280
281- //active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_mod));
282- //gtk_widget_set_sensitive(data->NU_mod, active);
283+ active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_mod));
284+ gtk_widget_set_sensitive(data->NU_mod, active);
285+ gtk_widget_set_sensitive(data->CM_modovw, active);
286
287 }
288
289@@ -440,6 +466,7 @@
290
291
292 sensitive = (selected == TRUE) ? TRUE : FALSE;
293+ gtk_widget_set_sensitive(data->GR_name, sensitive);
294 gtk_widget_set_sensitive(data->GR_condition, sensitive);
295 gtk_widget_set_sensitive(data->GR_assignment, sensitive);
296
297@@ -481,6 +508,7 @@
298
299 item = da_asg_malloc();
300 item->name = g_strdup_printf( _("(assignment %d)"), da_asg_length()+1);
301+ item->patt = g_strdup(item->name);
302
303 da_asg_append(item);
304 ui_asg_listview_add(GTK_TREE_VIEW(data->LV_rul), item);
305@@ -550,7 +578,7 @@
306 {
307 Assign *item = da_asg_get(key);
308
309- txt = (gchar *)gtk_entry_get_text(GTK_ENTRY(data->ST_text));
310+ txt = (gchar *)gtk_entry_get_text(GTK_ENTRY(data->ST_name));
311 if( txt == NULL || *txt == '\0' )
312 {
313 error = TRUE;
314@@ -571,11 +599,40 @@
315 }
316
317 end:
318- gtk_style_context_remove_class (gtk_widget_get_style_context (GTK_WIDGET(data->ST_text)), GTK_STYLE_CLASS_ERROR);
319+ gtk_style_context_remove_class (gtk_widget_get_style_context (GTK_WIDGET(data->ST_name)), GTK_STYLE_CLASS_ERROR);
320
321 if( error == TRUE )
322- gtk_style_context_add_class (gtk_widget_get_style_context (GTK_WIDGET(data->ST_text)), GTK_STYLE_CLASS_ERROR);
323-}
324+ gtk_style_context_add_class (gtk_widget_get_style_context (GTK_WIDGET(data->ST_name)), GTK_STYLE_CLASS_ERROR);
325+}
326+
327+
328+
329+/*
330+**
331+*/
332+static void ui_asg_manage_update_pattern(GtkWidget *widget, gpointer user_data)
333+{
334+struct ui_asg_manage_data *data;
335+guint32 key;
336+gchar *txt;
337+
338+ data = g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(widget, GTK_TYPE_WINDOW)), "inst_data");
339+ DB( g_print("\n(ui_asg_manage_update_pattern) (data=%x)\n", (guint)data) );
340+
341+ key = ui_asg_listview_get_selected_key(GTK_TREE_VIEW(data->LV_rul));
342+ if( key > 0 )
343+ {
344+ Assign *item = da_asg_get(key);
345+ txt = (gchar *)gtk_entry_get_text(GTK_ENTRY(data->ST_patt));
346+ if (txt && *txt)
347+ {
348+ g_free(item->patt);
349+ item->patt = g_strdup(txt);
350+ }
351+ data->change++;
352+ }
353+}
354+
355
356
357 /*
358@@ -736,12 +793,27 @@
359 gtk_widget_set_margin_start(content_grid, SPACING_SMALL);
360 gtk_paned_pack2 (GTK_PANED(hpaned), content_grid, FALSE, FALSE);
361
362+ // group :: Name
363+ group_grid = gtk_grid_new ();
364+ data.GR_name = group_grid;
365+ gtk_grid_set_row_spacing (GTK_GRID (group_grid), SPACING_SMALL);
366+ gtk_grid_set_column_spacing (GTK_GRID (group_grid), SPACING_MEDIUM);
367+ gtk_grid_attach (GTK_GRID (content_grid), group_grid, 0, 0, 1, 1);
368+
369+ row = 0;
370+ label = make_label(_("_Name:"), 0.0, 0.5);
371+ gtk_grid_attach (GTK_GRID (group_grid), label, 0, row, 1, 1);
372+ entry1 = make_string(label);
373+ data.ST_name = entry1;
374+ gtk_widget_set_hexpand(entry1, TRUE);
375+ gtk_grid_attach (GTK_GRID (group_grid), entry1, 1, row, 1, 1);
376+
377 // group :: Condition
378 group_grid = gtk_grid_new ();
379 data.GR_condition = group_grid;
380 gtk_grid_set_row_spacing (GTK_GRID (group_grid), SPACING_SMALL);
381 gtk_grid_set_column_spacing (GTK_GRID (group_grid), SPACING_MEDIUM);
382- gtk_grid_attach (GTK_GRID (content_grid), group_grid, 0, 0, 1, 1);
383+ gtk_grid_attach (GTK_GRID (content_grid), group_grid, 0, 1, 1, 1);
384
385 row = 0;
386 label = make_label_group(_("Condition"));
387@@ -758,7 +830,7 @@
388 label = make_label(_("Con_tains:"), 0.0, 0.5);
389 gtk_grid_attach (GTK_GRID (group_grid), label, 1, row, 1, 1);
390 entry1 = make_string(label);
391- data.ST_text = entry1;
392+ data.ST_patt = entry1;
393 gtk_widget_set_hexpand(entry1, TRUE);
394 gtk_grid_attach (GTK_GRID (group_grid), entry1, 2, row, 2, 1);
395
396@@ -767,12 +839,17 @@
397 data.CM_exact = widget;
398 gtk_grid_attach (GTK_GRID (group_grid), widget, 1, row, 3, 1);
399
400+ row++;
401+ widget = gtk_check_button_new_with_mnemonic (_("Use _Regular Expressions"));
402+ data.CM_re = widget;
403+ gtk_grid_attach (GTK_GRID (group_grid), widget, 1, row, 3, 1);
404+
405 // group :: Assignments
406 group_grid = gtk_grid_new ();
407 data.GR_assignment = group_grid;
408 gtk_grid_set_row_spacing (GTK_GRID (group_grid), SPACING_SMALL);
409 gtk_grid_set_column_spacing (GTK_GRID (group_grid), SPACING_MEDIUM);
410- gtk_grid_attach (GTK_GRID (content_grid), group_grid, 0, 1, 1, 1);
411+ gtk_grid_attach (GTK_GRID (content_grid), group_grid, 0, 2, 1, 1);
412
413 row = 0;
414 label = make_label_group(_("Assignments"));
415@@ -793,6 +870,11 @@
416 gtk_widget_set_tooltip_text(widget, _("Autocompletion and direct seizure\nis available for Category"));
417
418 row++;
419+ widget = gtk_check_button_new_with_mnemonic (_("Allow overwrite"));
420+ data.CM_catovw = widget;
421+ gtk_grid_attach (GTK_GRID (group_grid), widget, 2, row, 2, 1);
422+
423+ row++;
424 label = gtk_label_new_with_mnemonic (_("_Payee:"));
425 gtk_grid_attach (GTK_GRID (group_grid), label, 1, row, 1, 1);
426 widget = gtk_check_button_new();
427@@ -806,6 +888,30 @@
428
429 gtk_widget_set_tooltip_text(widget, _("Autocompletion and direct seizure\nis available for Payee"));
430
431+ row++;
432+ widget = gtk_check_button_new_with_mnemonic (_("Allow overwrite"));
433+ data.CM_payovw = widget;
434+ gtk_grid_attach (GTK_GRID (group_grid), widget, 2, row, 2, 1);
435+
436+ row++;
437+ label = gtk_label_new_with_mnemonic (_("Pay_ment:"));
438+ gtk_grid_attach (GTK_GRID (group_grid), label, 1, row, 1, 1);
439+ widget = gtk_check_button_new();
440+ data.CM_mod = widget;
441+ gtk_widget_set_halign (widget, GTK_ALIGN_CENTER);
442+ gtk_grid_attach (GTK_GRID (group_grid), widget, 2, row, 1, 1);
443+ widget = make_paymode(label);
444+ data.NU_mod = widget;
445+ gtk_widget_set_hexpand(widget, TRUE);
446+ gtk_grid_attach (GTK_GRID (group_grid), widget, 3, row, 1, 1);
447+
448+ //ugly hack
449+ gtk_widget_set_tooltip_text(widget, _("Internal transfer unsupported\nin auto assignments"));
450+
451+ row++;
452+ widget = gtk_check_button_new_with_mnemonic (_("Allow overwrite"));
453+ data.CM_modovw = widget;
454+ gtk_grid_attach (GTK_GRID (group_grid), widget, 2, row, 2, 1);
455
456
457 //connect all our signals
458@@ -813,10 +919,15 @@
459
460 g_signal_connect (gtk_tree_view_get_selection(GTK_TREE_VIEW(data.LV_rul)), "changed", G_CALLBACK (ui_asg_manage_selection), NULL);
461
462- g_signal_connect (G_OBJECT (data.ST_text), "changed", G_CALLBACK (ui_asg_manage_rename), NULL);
463+ g_signal_connect (G_OBJECT (data.ST_name), "changed", G_CALLBACK (ui_asg_manage_rename), NULL);
464+ g_signal_connect (G_OBJECT (data.ST_patt), "changed", G_CALLBACK (ui_asg_manage_update_pattern), NULL);
465
466 g_signal_connect (G_OBJECT (data.CM_cat), "toggled", G_CALLBACK (ui_asg_manage_update_assignments), NULL);
467 g_signal_connect (G_OBJECT (data.CM_pay), "toggled", G_CALLBACK (ui_asg_manage_update_assignments), NULL);
468+ g_signal_connect (G_OBJECT (data.CM_mod), "toggled", G_CALLBACK (ui_asg_manage_update_assignments), NULL);
469+ g_signal_connect (G_OBJECT (data.CM_catovw), "toggled", G_CALLBACK (ui_asg_manage_update_assignments), NULL);
470+ g_signal_connect (G_OBJECT (data.CM_payovw), "toggled", G_CALLBACK (ui_asg_manage_update_assignments), NULL);
471+ g_signal_connect (G_OBJECT (data.CM_modovw), "toggled", G_CALLBACK (ui_asg_manage_update_assignments), NULL);
472
473 g_signal_connect (G_OBJECT (data.BT_add), "clicked", G_CALLBACK (ui_asg_manage_add), NULL);
474 g_signal_connect (G_OBJECT (data.BT_rem), "clicked", G_CALLBACK (ui_asg_manage_delete), NULL);
475
476=== modified file 'src/ui-assign.h'
477--- src/ui-assign.h 2015-02-08 13:24:47 +0000
478+++ src/ui-assign.h 2015-10-24 13:51:48 +0000
479@@ -57,14 +57,18 @@
480 GtkWidget *LV_rul;
481 GtkWidget *BT_add, *BT_rem;
482
483+ GtkWidget *GR_name;
484 GtkWidget *GR_condition;
485 GtkWidget *GR_assignment;
486 GtkWidget *CY_field;
487- GtkWidget *ST_text;
488+ GtkWidget *ST_name;
489+ GtkWidget *ST_patt;
490 GtkWidget *CM_exact;
491+ GtkWidget *CM_re;
492
493- GtkWidget *CM_pay, *PO_pay;
494- GtkWidget *CM_cat, *PO_cat;
495+ GtkWidget *CM_pay, *PO_pay, *CM_payovw;
496+ GtkWidget *CM_cat, *PO_cat, *CM_catovw;
497+ GtkWidget *CM_mod, *NU_mod, *CM_modovw;
498
499
500 };

Subscribers

People subscribed via source and target branches