Thanks for all the background, I understand it a lot better now. Indeed,
I've noticed the intermingled UI/logic code in places, and I agree
that's not good.
What I want to try is launch the reconcile from the import, exactly like
aqbanking, so that shouldn't be a problem. No specific implementation
function.
Jean
On 4/18/2020 12:02 PM, John Ralls wrote:
One other consideration: The dependency should make sense architecturally: A
dependency on code in libgnucash/engine nearly always makes sense; a dependency
in the register on a function in import/export does not. That doesn't mean that
you should copy-and-paste the code instead, it means that the code should be
extracted from import/export and moved somewhere that does make sense. The
logical place for GUI code is gnome-utils while business logic code belongs in
libgnucash/engine--and note that there is a *lot* of business logic code that
has gotten intermingled with GUI code and needs to be refactored out. It's a
major maintenance headache because it often means that the same business logic
is implemented in more than one place, often with subtle differences.
Whether that's the case for your window-reconcile.c example depends on what you
need to do: If you want to launch the reconcile window from the OFX importer
the way AQBanking does, no problem. If you need some implementation function in
window-reconcile.c then it strongly suggests that that function is of more
general use than just the reconcile window and probably belongs somewhere else.
Regards,
John Ralls
On Apr 18, 2020, at 5:29 AM, Geert Janssens <geert.gnuc...@kobaltwit.be> wrote:
First off, modules are mostly on the way out. I have been working on removing
most uses of
those and plan to eliminate even more. The gnc_module code itself will remain
until we have a
better alternative.
Other than that, yes, you are allowed to include headers from other "modules".
Or more
generally from other compile units (the objects defined with add_library or
add_object). There
are other restrictions though:
1. you may have to add the proper include and library directories to the
compile unit's
CMakeLists.txt file. Without this the compiler won't find the header file (and
later the library to
link to)
2. In doing so you should be careful not to introduce circular dependencies.
That is if unit A
already depends on unit B, you can't make unit B also depend unit A.
3. reconcile-window.h is a C header file, while gnc-ofx-import.cpp is a C++
source file. You may
have to include it inside an 'extern "C"' block.
You didn't provide any details as to what errors you got, so at this point it's
hard to tell what
exactly went wrong.
Regards,
Geert
Op zaterdag 18 april 2020 07:29:15 CEST schreef jeanl:
Devs, I have a question to which I can't find an answer. It is possible for
a function from a module (say import-ofx) to call a function from another
module (declared in "reconcile-window.h" for example).
I'm not able to include reconcile-window.h from gnc-ofx-import.cpp , I
assume the build isn't setup to include the right headers.
But perhaps this is by design and a module isn't supposed to be able to call
another one. In that case, how can we make it so a function from a certain
module is followed by a call to a function from a different module
automatically?
J.
--
Sent from: http://gnucash.1415818.n4.nabble.com/GnuCash-Dev-f1435356.html
_______________________________________________
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel
_______________________________________________
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel
_______________________________________________
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel
_______________________________________________
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel