[GNC-dev] Bug 796778 Feature Request Multiple Selection in Import- matcher

David Cousens davidcousens at bigpond.com
Sun Aug 12 03:22:17 EDT 2018


Hi,

I raised the above bug as a feature request then I decided to try and tackle
it myself. My concept was to have a popup menu activated by a right click in
the matcher window area from which the user could enable and disable
multiple selection of transactions in the window and elect to assign a
transfer account to a selection of multiple rows. My reason for doing this
is I often have within an imported set of transactions, sets of multiple
transactions which have the same transfer account and processing an import
would be speeded up if these could be selected as a group and the the
transfer account selected and applied to the group. 

I now have a lot of the basic code in place to process a selection and to
create and view a popup menu, activate and disable multiple selection and
process a group of selected rows, partially tested but I have struck a
problem in that the GtkTreeView does not implement Ctrl-click selection in
the API and i am going to have to provide that myself.

As far as I can see from the code in import-main-matcher.c GnuCash does not
seem to implement anything other than a mouse double click to select a
single row which is processed by the callback initiated by the TreeView
"row-activated" event. I.e. there is no selection by pressing "Enter" while
the focus is on a given row. 

My plan is to detect Ctrl-Left click (implemented) and use that to add rows
to the selection and then initiate the processing of the selection using the
right click (implemented) popup menu. To do this, I have to detect a
GDK_BUTTON_PRESS event and then use the event->state to determine whether
Ctrl is pressed simultaneously (implemented) or whether the third mouse
button has been clicked (implemented) . This however appears to short
circuit the "row-activated" event detection by the GtkTreeView as it detects
the sequence:
GDK_BUTTON_PRESS
GDK_BUTTON_RELEASE
GDK_BUTTON_PRESS
GDK_BUTTON_RELEASE if it occurs within 0.25 s
so I am going to have to provide my own double click detection within the
callback I use to process the initial button press.

My question is is this. Is what I have outlined above likely to interfere
with any non mouse based selection of transactions for applying a transfer
account and does the approach seem reasonable? I can't see that occurring in
the code for the main matcher, but I am a relative novice in using Gdk and
Gtk so I could be easily missing something. E.g. Up, Down keys to shift the
row focus and Enter to select for example. 

David Cousens.



-----
David Cousens
--
Sent from: http://gnucash.1415818.n4.nabble.com/GnuCash-Dev-f1435356.html


More information about the gnucash-devel mailing list