QIF doc pages

Charles Day cedayiv at gmail.com
Thu Mar 13 02:07:51 EDT 2008


On Sat, Mar 8, 2008 at 4:54 PM, Charles Day <cedayiv at gmail.com> wrote:

> On Thu, Feb 28, 2008 at 1:14 PM, Andreas Köhler <andi5.py at gmx.net> wrote:
>
> > Hi Charles,
> >
> > Am Donnerstag, den 28.02.2008, 12:50 -0800 schrieb Charles Day:
> > > On Thu, Feb 28, 2008 at 11:50 AM, Derek Atkins <warlord at mit.edu>
> > wrote:
> > >
> > > > "Charles Day" <cedayiv at gmail.com> writes:
> > > >
> > > > > OK, that's sounds like what Ian is also saying, and that sounds
> > good to
> > > > me
> > > > > too. So under which of the following conditions would a new
> > account tab
> > > > be
> > > > > automatically created and displayed after the QIF import finishes?
> > > > >   (a) the QIF import is launched though the "new user" dialog
> > > > >   (b) no accounts exist prior to import (and no Accounts tab
> > exists
> > > > either)
> > > > >   (c) any others?
> > > >
> > > > I think anytime that the importer completes, regardless of how it's
> > > > called, iff there is no Account Tree Page.
> > > >
> > >
> > > What's the easiest way to test for an existing Account tab?
> > >
> > > After that, creating the new accounts tab seems pretty easy:
> > >   GncPluginPage *page;
> > >
> > >   page = gnc_plugin_page_account_tree_new();
> > >   gnc_main_window_open_page(NULL, page);
> > >
> > > -Charles
> >
> > maybe something like
> >
> > gnc_find_first_gui_component(PLUGIN_PAGE_ACCT_TREE_CM_CLASS, [...])
> > as can be seen in
> > src/business/business-gnome/dialog-invoice.c:gnc_invoice_new_page()
> >
>
> Andreas, I have tried the following code but I cannot get it to compile
> because PLUGIN_PAGE_ACCT_TREE_CM_CLASS is only defined inside gnome/gnc-
> plugin-page-account-tree.c. If it were defined in a .h instead, then
> obviously I could just #include it. Should I move the definition to
> gnome/gnc-plugin-page-account-tree.h or does this break some design goal?
> Or is there another way to determine whether an account tab is already open?
>
>   GncPluginPage *page;
>
>   /* Open an account tab in the main window if one doesn't exist already.
> */
>   if (!gnc_find_first_gui_component(PLUGIN_PAGE_ACCT_TREE_CM_CLASS, NULL,
> NULL))
>   {
>     page = gnc_plugin_page_account_tree_new();
>     gnc_main_window_open_page(NULL, page);
>   }
>
> Thanks,
> Charles
>
>
I took another stab at this, using a completely different approach (below).
It seems to work perfectly, but since this is my first time using this
particular method, I hope that one of you could point out anything that
looks obviously wrong or seems inappropriate. If I don't hear anything back
in the next week, I'll just go ahead and commit it.

  GncPluginPage *page;
  gboolean acct_tree_found = FALSE;

  /* Open an account tab in the main window if one doesn't exist already. */
  gnc_main_window_foreach_page(gnc_ui_qif_import_check_acct_tree,
                               &acct_tree_found);
  if (!acct_tree_found)
  {
    page = gnc_plugin_page_account_tree_new();
    gnc_main_window_open_page(NULL, page);
  }

And that function I'm passing to gnc_main_window_foreach_page() is defined
as:

static void
gnc_ui_qif_import_check_acct_tree(GncPluginPage *page, gpointer user_data)
{
  gboolean *found = user_data;

  if (GNC_IS_PLUGIN_PAGE_ACCOUNT_TREE(page) && found)
    *found = TRUE;
}

Cheers,
Charles



>
>
> > Please note that there are other situations we lack an account tree as
> > well, e.g.
> >
> > (1) open new window with account tree page (window > new window with
> > page), then close that window... i am not sure whether that situation
> > survives a restart though
> > (2) cancel hierarchy druid or do not spawn it on "file > new" at all
> >
> > Maybe those could be handled equally well?
> >
> > Thanks,
> > -- andi5
> >
> >
>


More information about the gnucash-devel mailing list