~mdoyen/homebank/5.2.x

« back to all changes in this revision

Viewing changes to src/ui-transaction.c

  • Committer: Maxime Doyen
  • Date: 2019-07-29 20:34:22 UTC
  • Revision ID: homebank@free.fr-20190729203422-hy3g4szjv3dbzmxu
5.2.7 release

Show diffs side-by-side

added added

removed removed

Lines of Context:
88
88
}
89
89
 
90
90
 
91
 
//1336928 combobox tags
92
 
static void deftransaction_update_tags(GtkWidget *widget, gpointer user_data)
93
 
{
94
 
struct deftransaction_data *data;
95
 
gchar *newtag;
96
 
        
97
 
        DB( g_print("\n[ui-transaction] update tags\n") );
98
 
 
99
 
        data = g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(widget, GTK_TYPE_WINDOW)), "inst_data");
100
 
 
101
 
        newtag = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(data->CY_tags));
102
 
        ui_gtk_entry_tag_name_append(GTK_ENTRY(data->ST_tags), newtag);
103
 
        g_free(newtag);
104
 
        
105
 
        //revert back to ----
106
 
        g_signal_handlers_block_by_func (G_OBJECT (data->CY_tags), G_CALLBACK (deftransaction_update_tags), NULL);
107
 
        hbtk_combo_box_set_active_id(GTK_COMBO_BOX_TEXT(data->CY_tags), 0);
108
 
        g_signal_handlers_unblock_by_func (G_OBJECT (data->CY_tags), G_CALLBACK (deftransaction_update_tags), NULL);
109
 
}
110
 
 
111
 
 
112
91
static void deftransaction_update_warnsign(GtkWidget *widget, gpointer user_data)
113
92
{
114
93
struct deftransaction_data *data;
115
94
gboolean warning = FALSE;
116
95
gdouble amount;
117
 
gint amttype;
 
96
gint paymode, type;
118
97
Category *cat;
119
98
 
120
99
        DB( g_print("\n[ui-transaction] update warning sign\n") );
121
100
 
122
101
        data = g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(widget, GTK_TYPE_WINDOW)), "inst_data");
123
102
 
124
 
        cat = ui_cat_comboboxentry_get(GTK_COMBO_BOX(data->PO_cat));
125
 
        if(cat != NULL && cat->key > 0)
 
103
        //#1830707 no warning for xfer
 
104
        paymode = gtk_combo_box_get_active(GTK_COMBO_BOX(data->NU_mode));
 
105
        if( paymode != PAYMODE_INTXFER )
126
106
        {
127
 
                amount = hb_amount_round(gtk_spin_button_get_value(GTK_SPIN_BUTTON(data->ST_amount)), 2);
128
 
                if(amount != 0.0)
 
107
                cat = ui_cat_comboboxentry_get(GTK_COMBO_BOX(data->PO_cat));
 
108
                if(cat != NULL && cat->key > 0)
129
109
                {
130
 
                        amttype = (amount > 0) ? 1 : -1;
131
 
                        warning = (category_type_get(cat) != amttype) ? TRUE : FALSE;
 
110
                        amount = hb_amount_round(gtk_spin_button_get_value(GTK_SPIN_BUTTON(data->ST_amount)), 2);
 
111
                        if(amount != 0.0)
 
112
                        {
 
113
                                type = (amount > 0) ? 1 : -1;
 
114
                                warning = (category_type_get(cat) != type) ? TRUE : FALSE;
 
115
                        }
132
116
                }
133
117
        }
134
118
 
211
195
 
212
196
        data = g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(widget, GTK_TYPE_WINDOW)), "inst_data");
213
197
 
214
 
        pay = ui_pay_comboboxentry_get(GTK_COMBO_BOX(data->PO_pay));
 
198
        //pay = ui_pay_comboboxentry_get(GTK_COMBO_BOX(data->PO_pay));
 
199
        pay = ui_pay_entry_popover_get(GTK_BOX(data->PO_pay));
215
200
        if( pay != NULL )
216
201
        {
217
202
                // only set for empty category
375
360
        txt = (entry->info != NULL) ? entry->info : "";
376
361
        gtk_entry_set_text(GTK_ENTRY(data->ST_info), txt);
377
362
        ui_cat_comboboxentry_set_active(GTK_COMBO_BOX(data->PO_cat), entry->kcat);
378
 
        ui_pay_comboboxentry_set_active(GTK_COMBO_BOX(data->PO_pay), entry->kpay);
 
363
        //ui_pay_comboboxentry_set_active(GTK_COMBO_BOX(data->PO_pay), entry->kpay);
 
364
        ui_pay_entry_popover_set_active(GTK_BOX(data->PO_pay), entry->kpay);
379
365
 
380
366
        tagstr = tags_tostring(entry->tags);
381
367
        DB( g_print(" - tags: '%s'\n", txt) );
485
471
 
486
472
        entry->paymode  = gtk_combo_box_get_active(GTK_COMBO_BOX(data->NU_mode));
487
473
        entry->kcat     = ui_cat_comboboxentry_get_key_add_new(GTK_COMBO_BOX(data->PO_cat));
488
 
        entry->kpay     = ui_pay_comboboxentry_get_key_add_new(GTK_COMBO_BOX(data->PO_pay));
 
474
        //entry->kpay     = ui_pay_comboboxentry_get_key_add_new(GTK_COMBO_BOX(data->PO_pay));
 
475
        entry->kpay     = ui_pay_entry_popover_get_key_add_new(GTK_BOX(data->PO_pay));
489
476
        entry->kacc     = ui_acc_comboboxentry_get_key(GTK_COMBO_BOX(data->PO_acc));
490
477
        entry->kxferacc = ui_acc_comboboxentry_get_key(GTK_COMBO_BOX(data->PO_accto));
491
478
 
825
812
 
826
813
        DB( g_print("\n[ui-transaction] setup\n") );
827
814
 
828
 
        ui_pay_comboboxentry_populate(GTK_COMBO_BOX(data->PO_pay), GLOBALS->h_pay);
829
 
        ui_cat_comboboxentry_populate(GTK_COMBO_BOX(data->PO_cat), GLOBALS->h_cat);
830
 
        ui_acc_comboboxentry_populate(GTK_COMBO_BOX(data->PO_acc), GLOBALS->h_acc, ACC_LST_INSERT_NORMAL);
831
 
        ui_acc_comboboxentry_populate(GTK_COMBO_BOX(data->PO_accto), GLOBALS->h_acc, ACC_LST_INSERT_NORMAL);
832
 
 
833
815
        if( data->showtemplate )
834
816
        {
835
817
                deftransaction_template_popover_populate (data, GLOBALS->arc_list);
836
818
                gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(data->modelfilter));
837
819
        }
838
820
 
839
 
        ui_tag_combobox_populate(GTK_COMBO_BOX_TEXT(data->CY_tags));
840
 
 
841
 
}
842
 
 
843
 
static GtkWidget *
844
 
create_popover (GtkWidget       *parent,
845
 
                GtkWidget       *child,
846
 
                GtkPositionType  pos)
847
 
{
848
 
GtkWidget *popover;
849
 
 
850
 
        popover = gtk_popover_new (parent);
851
 
        gtk_popover_set_position (GTK_POPOVER (popover), pos);
852
 
        gtk_container_add (GTK_CONTAINER (popover), child);
853
 
        gtk_widget_show (child);
854
 
 
855
 
        gtk_widget_set_margin_start (child, SPACING_POPOVER);
856
 
        gtk_widget_set_margin_end (child, SPACING_POPOVER);
857
 
        gtk_widget_set_margin_top (child, SPACING_POPOVER);
858
 
        gtk_widget_set_margin_bottom (child, SPACING_POPOVER);
859
 
 
860
 
        return popover;
 
821
        ui_acc_comboboxentry_populate(GTK_COMBO_BOX(data->PO_acc), GLOBALS->h_acc, ACC_LST_INSERT_NORMAL);
 
822
        ui_acc_comboboxentry_populate(GTK_COMBO_BOX(data->PO_accto), GLOBALS->h_acc, ACC_LST_INSERT_NORMAL);
 
823
 
 
824
        ui_cat_comboboxentry_populate(GTK_COMBO_BOX(data->PO_cat), GLOBALS->h_cat);
 
825
 
 
826
 
 
827
        //5.2.7 done in popover
 
828
        //ui_pay_comboboxentry_populate(GTK_COMBO_BOX(data->PO_pay), GLOBALS->h_pay);
 
829
        //ui_tag_combobox_populate(GTK_COMBO_BOX_TEXT(data->CY_tags));
 
830
 
861
831
}
862
832
 
863
833
 
1218
1188
        data->PO_date = widget;
1219
1189
        gtk_widget_set_halign(widget, GTK_ALIGN_START);
1220
1190
        gtk_grid_attach (GTK_GRID (group_grid), widget, 1, row, 1, 1);
1221
 
        gtk_widget_set_tooltip_text(widget, _("Date accepted here are:\nday,\nday/month or month/day,\nand complete date into your locale"));
 
1191
        //gtk_widget_set_tooltip_text(widget, _("Date accepted here are:\nday,\nday/month or month/day,\nand complete date into your locale"));
 
1192
        gtk_widget_set_tooltip_text(widget, _("- type: d, d/m, m/d a complete date\n- use arrow key + ctrl or shift\n- empty for today"));
1222
1193
 
1223
1194
        data->showtemplate = FALSE;
1224
1195
        if( data->type != TRANSACTION_EDIT_MODIFY && da_archive_length() > 0 && !postmode )
1291
1262
        gtk_widget_set_margin_bottom(widget, SPACING_SMALL);
1292
1263
 
1293
1264
 
1294
 
        row++;
 
1265
        /*row++;
1295
1266
        label = make_label_widget(_("_Payee:"));
1296
1267
        gtk_grid_attach (GTK_GRID (group_grid), label, 0, row, 1, 1);
1297
1268
        widget = ui_pay_comboboxentry_new(label);
1298
1269
        data->PO_pay = widget;
1299
1270
        gtk_grid_attach (GTK_GRID (group_grid), widget, 1, row, 2, 1);
1300
 
        gtk_widget_set_tooltip_text(widget, _("Autocompletion and direct seizure\nis available"));
 
1271
        //gtk_widget_set_tooltip_text(widget, _("Autocompletion and direct seizure\nis available"));
 
1272
        gtk_widget_set_tooltip_text(widget, _("- type some letter for autocompletion\n- type new text to create entry"));
 
1273
        */
 
1274
 
 
1275
        row++;
 
1276
        label = make_label_widget(_("_Payee:"));
 
1277
        gtk_grid_attach (GTK_GRID (group_grid), label, 0, row, 1, 1);
 
1278
 
 
1279
        hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, SPACING_MEDIUM);
 
1280
        gtk_widget_set_hexpand(hbox, TRUE);
 
1281
        gtk_grid_attach (GTK_GRID (group_grid), hbox, 1, row, 2, 1);
 
1282
 
 
1283
                widget = ui_pay_entry_popover_new(label);
 
1284
                data->PO_pay = widget;
 
1285
                gtk_widget_set_hexpand(widget, TRUE);
 
1286
                gtk_box_pack_start (GTK_BOX (hbox), widget, TRUE, TRUE, 0);
 
1287
                //widget = gtk_image_new_from_icon_name (ICONNAME_INFO, GTK_ICON_SIZE_BUTTON);
 
1288
                gtk_widget_set_tooltip_text(widget, _("- type some letter for autocompletion\n- type new text to create entry"));
 
1289
                //gtk_box_pack_start (GTK_BOX (hbox), widget, FALSE, FALSE, 0);
 
1290
 
 
1291
        gtk_widget_set_margin_bottom(label, SPACING_SMALL);
 
1292
        gtk_widget_set_margin_bottom(hbox, SPACING_SMALL);
1301
1293
 
1302
1294
        row++;
1303
1295
        label = make_label_widget(_("_Category:"));
1305
1297
        widget = ui_cat_comboboxentry_new(label);
1306
1298
        data->PO_cat = widget;
1307
1299
        gtk_grid_attach (GTK_GRID (group_grid), widget, 1, row, 2, 1);
1308
 
        gtk_widget_set_tooltip_text(widget, _("Autocompletion and direct seizure\nis available"));
1309
 
 
1310
 
        gtk_widget_set_margin_bottom(label, SPACING_SMALL);
1311
 
        gtk_widget_set_margin_bottom(widget, SPACING_SMALL);
1312
 
 
 
1300
        //gtk_widget_set_tooltip_text(widget, _("Autocompletion and direct seizure\nis available"));
 
1301
        gtk_widget_set_tooltip_text(widget, _("- type some letter for autocompletion\n- type new text to create entry"));
1313
1302
        
1314
1303
        row++;
1315
1304
        label = make_label_widget(_("_Status:"));
1331
1320
        gtk_grid_attach (GTK_GRID (group_grid), label, 0, row, 1, 1);
1332
1321
        hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
1333
1322
        gtk_widget_set_hexpand(hbox, TRUE);
 
1323
        gtk_style_context_add_class (gtk_widget_get_style_context (GTK_WIDGET(hbox)), GTK_STYLE_CLASS_LINKED);
1334
1324
        gtk_grid_attach (GTK_GRID (group_grid), hbox, 1, row, 2, 1);
1335
1325
 
1336
1326
                widget = make_string(label);
1337
1327
                data->ST_tags = widget;
1338
1328
                gtk_box_pack_start (GTK_BOX (hbox), widget, TRUE, TRUE, 0);
1339
1329
 
1340
 
                widget = ui_tag_combobox_new(NULL);
 
1330
                widget = ui_tag_popover_list(data->ST_tags);
1341
1331
                data->CY_tags = widget;
1342
1332
                gtk_box_pack_start (GTK_BOX (hbox), widget, FALSE, FALSE, 0);
1343
1333
        
1344
1334
        gtk_widget_show_all(mainvbox);
1345
 
        
 
1335
 
1346
1336
        bar = gtk_info_bar_new ();
1347
1337
        data->IB_warnsign = bar;
1348
1338
        gtk_info_bar_set_message_type (GTK_INFO_BAR (bar), GTK_MESSAGE_WARNING);
1365
1355
        g_signal_connect (data->NU_mode  , "changed", G_CALLBACK (deftransaction_paymode), NULL);
1366
1356
        g_signal_connect (data->CM_cheque, "toggled", G_CALLBACK (deftransaction_paymode), NULL);
1367
1357
 
1368
 
        g_signal_connect (data->PO_pay  , "changed", G_CALLBACK (deftransaction_update_payee), NULL);
 
1358
        //g_signal_connect (data->PO_pay  , "changed", G_CALLBACK (deftransaction_cb_payee_changed), NULL);
 
1359
        g_signal_connect (ui_pay_entry_popover_get_entry(GTK_BOX(data->PO_pay)), "changed", G_CALLBACK (deftransaction_update_payee), NULL);
1369
1360
        g_signal_connect (data->PO_cat  , "changed", G_CALLBACK (deftransaction_update_warnsign), NULL);
1370
1361
 
1371
 
        g_signal_connect (data->CY_tags , "changed", G_CALLBACK (deftransaction_update_tags), NULL);
1372
 
 
1373
1362
        //setup, init and show window
1374
1363
        deftransaction_setup(data);
1375
1364