|
GnuCash 2.3.0
|
Data Structures | |
| struct | status_action |
| struct | GncPluginPageRegisterPrivate |
| struct | GncPluginPageRegister |
| struct | GncPluginPageRegisterClass |
Files | |
| file | gnc-plugin-page-register.c |
Functions providing a register page for the GnuCash UI. | |
| file | gnc-plugin-page-register.h |
Functions providing a register page for the GnuCash UI. | |
Defines | |
| #define | DEFAULT_LINES_AMOUNT 50 |
| #define | CLEARED_VALUE "cleared_value" |
| #define | DEFAULT_FILTER "0x001f" |
| #define | DEFAULT_SORT_ORDER "BY_STANDARD" |
| #define | GNC_PLUGIN_PAGE_REGISTER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GNC_TYPE_PLUGIN_PAGE_REGISTER, GncPluginPageRegisterPrivate)) |
| #define | KEY_REGISTER_TYPE "RegisterType" |
| #define | KEY_ACCOUNT_NAME "AccountName" |
| #define | KEY_REGISTER_STYLE "RegisterStyle" |
| #define | KEY_DOUBLE_LINE "DoubleLineMode" |
| #define | LABEL_ACCOUNT "Account" |
| #define | LABEL_SUBACCOUNT "SubAccount" |
| #define | LABEL_GL "GL" |
| #define | LABEL_SEARCH "Search" |
| #define | GNC_TYPE_PLUGIN_PAGE_REGISTER (gnc_plugin_page_register_get_type ()) |
| #define | GNC_PLUGIN_PAGE_REGISTER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GNC_TYPE_PLUGIN_PAGE_REGISTER, GncPluginPageRegister)) |
| #define | GNC_PLUGIN_PAGE_REGISTER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GNC_TYPE_PLUGIN_PAGE_REGISTER, GncPluginPageRegisterClass)) |
| #define | GNC_IS_PLUGIN_PAGE_REGISTER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GNC_TYPE_PLUGIN_PAGE_REGISTER)) |
| #define | GNC_IS_PLUGIN_PAGE_REGISTER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GNC_TYPE_PLUGIN_PAGE_REGISTER)) |
| #define | GNC_PLUGIN_PAGE_REGISTER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GNC_TYPE_PLUGIN_PAGE_REGISTER, GncPluginPageRegisterClass)) |
| #define | GNC_PLUGIN_PAGE_REGISTER_NAME "GncPluginPageRegister" |
Typedefs | |
|
typedef struct GncPluginPageRegisterPrivate | GncPluginPageRegisterPrivate |
Functions | |
| void | gnc_plugin_page_register_sort_button_cb (GtkToggleButton *button, GncPluginPageRegister *page) |
| void | gnc_plugin_page_register_sort_response_cb (GtkDialog *dialog, gint response, GncPluginPageRegister *plugin_page) |
| void | gnc_plugin_page_register_sort_order_save_cb (GtkToggleButton *button, GncPluginPageRegister *page) |
| void | gnc_plugin_page_register_set_sort_order (GncPluginPage *plugin_page, const gchar *sort_order) |
| void | gnc_plugin_page_register_filter_select_range_cb (GtkRadioButton *button, GncPluginPageRegister *page) |
| void | gnc_plugin_page_register_filter_start_cb (GtkWidget *radio, GncPluginPageRegister *page) |
| void | gnc_plugin_page_register_filter_end_cb (GtkWidget *radio, GncPluginPageRegister *page) |
| void | gnc_plugin_page_register_filter_response_cb (GtkDialog *dialog, gint response, GncPluginPageRegister *plugin_page) |
| void | gnc_plugin_page_register_filter_status_all_cb (GtkButton *button, GncPluginPageRegister *plugin_page) |
| void | gnc_plugin_page_register_filter_status_one_cb (GtkToggleButton *button, GncPluginPageRegister *page) |
| void | gnc_plugin_page_register_filter_save_cb (GtkToggleButton *button, GncPluginPageRegister *page) |
| void | gnc_plugin_page_register_set_filter (GncPluginPage *plugin_page, const gchar *filter) |
| GType | gnc_plugin_page_register_get_type (void) |
| GncPluginPage * | gnc_plugin_page_register_new (Account *account, gboolean subaccounts) |
| GncPluginPage * | gnc_plugin_page_register_new_gl (void) |
| GncPluginPage * | gnc_plugin_page_register_new_ledger (GNCLedgerDisplay *ledger) |
| Account * | gnc_plugin_page_register_get_account (GncPluginPageRegister *page) |
| void | gnc_plugin_page_register_set_options (GncPluginPage *plugin_page, gint lines_default, gboolean read_only) |
| GNCSplitReg * | gnc_plugin_page_register_get_gsr (GncPluginPage *plugin_page) |
| void gnc_plugin_page_register_filter_end_cb | ( | GtkWidget * | radio, |
| GncPluginPageRegister * | page | ||
| ) |
This function is called when one of the end date radio buttons is selected. It updates the sensitivity of the date entry widget, then calls a common routine to determine the start/end times and update the register query.
*Note: This function is actually called twice for each new radio button selection. The first time call is to uncheck the old button, and the second time to check the new button. This does make a kind of sense, as radio buttons are nothing more than linked toggle buttons where only one can be active.
| radio | The button whose state is changing. This will be the previously selected button the first of the pair of calls to this function, and will be the newly selected button the second time. |
| page | A pointer to the GncPluginPageRegister that is associated with this filter dialog. |
Definition at line 2170 of file gnc-plugin-page-register.c.
{
GncPluginPageRegisterPrivate *priv;
const gchar *name;
gboolean active;
g_return_if_fail(GTK_IS_RADIO_BUTTON(radio));
g_return_if_fail(GNC_IS_PLUGIN_PAGE_REGISTER(page));
ENTER("(radio %s(%p), page %p)", gtk_buildable_get_name(GTK_BUILDABLE(radio)), radio, page);
priv = GNC_PLUGIN_PAGE_REGISTER_GET_PRIVATE(page);
if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(radio)))
{
LEAVE("1st callback of pair. Defer to 2nd callback.");
return;
}
name = gtk_buildable_get_name(GTK_BUILDABLE(radio));
active = ( g_strcmp0(name, g_strdup("end_date_choose")) == 0 ? 1 : 0 );
gtk_widget_set_sensitive(priv->fd.end_date, active);
get_filter_times(page);
gnc_ppr_update_date_query(page);
LEAVE(" ");
}
| void gnc_plugin_page_register_filter_response_cb | ( | GtkDialog * | dialog, |
| gint | response, | ||
| GncPluginPageRegister * | page | ||
| ) |
This function is called when the "Filter By..." dialog is closed. If the dialog was closed by any method other than clicking the OK button, the original sorting order will be restored.
| dialog | A pointer to the dialog box. |
| response | A numerical value indicating why the dialog box was closed. |
| page | A pointer to the GncPluginPageRegister associated with this dialog box. |
Definition at line 2238 of file gnc-plugin-page-register.c.
{
GncPluginPageRegisterPrivate *priv;
GncPluginPage *plugin_page;
g_return_if_fail(GTK_IS_DIALOG(dialog));
g_return_if_fail(GNC_IS_PLUGIN_PAGE_REGISTER(page));
ENTER(" ");
priv = GNC_PLUGIN_PAGE_REGISTER_GET_PRIVATE(page);
plugin_page = GNC_PLUGIN_PAGE(page);
if (response != GTK_RESPONSE_OK)
{
/* Remove the old status match */
priv->fd.cleared_match = priv->fd.original_cleared_match;
gnc_ppr_update_status_query(page);
priv->fd.start_time = priv->fd.original_start_time;
priv->fd.end_time = priv->fd.original_end_time;
priv->fd.save_filter = priv->fd.original_save_filter;
gnc_ppr_update_date_query(page);
}
else
{
priv->fd.original_save_filter = priv->fd.save_filter;
if (priv->fd.save_filter)
{
gchar* filter;
filter = g_strdup_printf("0x%04x", priv->fd.cleared_match);
if ( gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(priv->fd.start_date_choose)) && priv->fd.start_time != 0 )
{
gchar *timeval = gnc_plugin_page_register_filter_time2dmy(priv->fd.start_time);
filter = g_strconcat ( filter, ",", timeval, NULL);
g_free (timeval);
}
else
filter = g_strconcat ( filter, ",0", NULL);
if ( gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(priv->fd.end_date_choose)) && priv->fd.end_time != 0 )
{
gchar *timeval = gnc_plugin_page_register_filter_time2dmy(priv->fd.end_time);
filter = g_strconcat ( filter, ",", timeval, NULL);
g_free (timeval);
}
else
filter = g_strconcat ( filter, ",0", NULL);
PINFO("The filter to save is %s", filter);
gnc_plugin_page_register_set_filter (plugin_page, filter);
g_free (filter);
}
}
priv->fd.dialog = NULL;
gtk_widget_destroy(GTK_WIDGET(dialog));
LEAVE(" ");
}
| void gnc_plugin_page_register_filter_save_cb | ( | GtkToggleButton * | button, |
| GncPluginPageRegister * | page | ||
| ) |
This function is called whenever the save status is checked or unchecked. It will allow saving of the filter if required.
| button | The toggle button that was changed. |
| page | A pointer to the GncPluginPageRegister that is associated with this filter dialog. |
Definition at line 2206 of file gnc-plugin-page-register.c.
{
GncPluginPageRegisterPrivate *priv;
g_return_if_fail(GTK_IS_CHECK_BUTTON(button));
g_return_if_fail(GNC_IS_PLUGIN_PAGE_REGISTER(page));
ENTER("Save toggle button (%p), plugin_page %p", button, page);
/* Compute the new save filter status */
priv = GNC_PLUGIN_PAGE_REGISTER_GET_PRIVATE(page);
if (gtk_toggle_button_get_active(button))
priv->fd.save_filter = TRUE;
else
priv->fd.save_filter = FALSE;
LEAVE(" ");
}
| void gnc_plugin_page_register_filter_select_range_cb | ( | GtkRadioButton * | button, |
| GncPluginPageRegister * | page | ||
| ) |
This function is called when the "select range" radio button changes state. Since there are only two choices in this radio group, this one signal can be used to handle all cases. This function is responsible for setting the sensitivity of the table of widgets underneath the "select range" choice, and updating the time limitation on the register query. This is handled by a helper function when the radio button is selected (as potentially all the widgets in the table need to be inspected), and is trivial for the other case.
| button | A pointer to the "select range" radio button. |
| page | A pointer to the GncPluginPageRegister that is associated with this filter dialog. |
Definition at line 2053 of file gnc-plugin-page-register.c.
{
GncPluginPageRegisterPrivate *priv;
gboolean active;
g_return_if_fail(GTK_IS_RADIO_BUTTON(button));
g_return_if_fail(GNC_IS_PLUGIN_PAGE_REGISTER(page));
ENTER("(button %p, page %p)", button, page);
priv = GNC_PLUGIN_PAGE_REGISTER_GET_PRIVATE(page);
active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button));
gtk_widget_set_sensitive(priv->fd.table, active);
if (active)
{
get_filter_times(page);
}
else
{
priv->fd.start_time = 0;
priv->fd.end_time = 0;
}
gnc_ppr_update_date_query(page);
LEAVE(" ");
}
| void gnc_plugin_page_register_filter_start_cb | ( | GtkWidget * | radio, |
| GncPluginPageRegister * | page | ||
| ) |
This function is called when one of the start date radio buttons is selected. It updates the sensitivity of the date entry widget, then calls a common routine to determine the start/end times and update the register query.
*Note: This function is actually called twice for each new radio button selection. The first time call is to uncheck the old button, and the second time to check the new button. This does make a kind of sense, as radio buttons are nothing more than linked toggle buttons where only one can be active.
| radio | The button whose state is changing. This will be the previously selected button the first of the pair of calls to this function, and will be the newly selected button the second time. |
| page | A pointer to the GncPluginPageRegister that is associated with this filter dialog. |
Definition at line 2123 of file gnc-plugin-page-register.c.
{
GncPluginPageRegisterPrivate *priv;
const gchar *name;
gboolean active;
g_return_if_fail(GTK_IS_RADIO_BUTTON(radio));
g_return_if_fail(GNC_IS_PLUGIN_PAGE_REGISTER(page));
ENTER("(radio %s(%p), page %p)", gtk_buildable_get_name(GTK_BUILDABLE(radio)), radio, page);
priv = GNC_PLUGIN_PAGE_REGISTER_GET_PRIVATE(page);
if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(radio)))
{
LEAVE("1st callback of pair. Defer to 2nd callback.");
return;
}
name = gtk_buildable_get_name(GTK_BUILDABLE(radio));
active = ( g_strcmp0(name, g_strdup("start_date_choose")) == 0 ? 1 : 0 );
gtk_widget_set_sensitive(priv->fd.start_date, active);
get_filter_times(page);
gnc_ppr_update_date_query(page);
LEAVE(" ");
}
| void gnc_plugin_page_register_filter_status_all_cb | ( | GtkButton * | button, |
| GncPluginPageRegister * | page | ||
| ) |
This function is called whenever the "select all" status button is clicked. It updates all of the checkbox widgets, then updates the query on the register.
| button | The button that was clicked. |
| page | A pointer to the GncPluginPageRegister that is associated with this filter dialog. |
Definition at line 1951 of file gnc-plugin-page-register.c.
{
GncPluginPageRegisterPrivate *priv;
GtkWidget *widget;
gint i;
g_return_if_fail(GTK_IS_BUTTON(button));
g_return_if_fail(GNC_IS_PLUGIN_PAGE_REGISTER(page));
ENTER("(button %p, page %p)", button, page);
/* Turn on all the check menu items */
for (i = 0; status_actions[i].action_name; i++)
{
widget = status_actions[i].widget;
g_signal_handlers_block_by_func(widget, gnc_plugin_page_register_filter_status_one_cb, page);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(widget), TRUE);
g_signal_handlers_unblock_by_func(widget, gnc_plugin_page_register_filter_status_one_cb, page);
}
/* Set the requested status */
priv = GNC_PLUGIN_PAGE_REGISTER_GET_PRIVATE(page);
priv->fd.cleared_match = CLEARED_ALL;
gnc_ppr_update_status_query(page);
LEAVE(" ");
}
| void gnc_plugin_page_register_filter_status_one_cb | ( | GtkToggleButton * | button, |
| GncPluginPageRegister * | page | ||
| ) |
This function is called whenever one of the status entries is checked or unchecked. It updates the status value maintained for the filter dialog, and calls another function to do the work of applying the change to the register itself.
| button | The toggle button that was changed. |
| page | A pointer to the GncPluginPageRegister that is associated with this filter dialog. |
Definition at line 1906 of file gnc-plugin-page-register.c.
{
GncPluginPageRegisterPrivate *priv;
const gchar *name;
gint i, value;
g_return_if_fail(GTK_IS_CHECK_BUTTON(button));
g_return_if_fail(GNC_IS_PLUGIN_PAGE_REGISTER(page));
name = gtk_buildable_get_name(GTK_BUILDABLE(button));
ENTER("toggle button %s (%p), plugin_page %p", name, button, page);
/* Determine what status bit to change */
value = CLEARED_NONE;
for (i = 0; status_actions[i].action_name; i++)
{
if (g_strcmp0(name, status_actions[i].action_name) == 0)
{
value = status_actions[i].value;
break;
}
}
/* Compute the new match status */
priv = GNC_PLUGIN_PAGE_REGISTER_GET_PRIVATE(page);
if (gtk_toggle_button_get_active(button))
priv->fd.cleared_match |= value;
else
priv->fd.cleared_match &= ~value;
gnc_ppr_update_status_query(page);
LEAVE(" ");
}
| Account * gnc_plugin_page_register_get_account | ( | GncPluginPageRegister * | page | ) |
Get the Account associated with this register page.
| page | A "register" page. |
Definition at line 733 of file gnc-plugin-page-register.c.
{
GncPluginPageRegisterPrivate *priv;
GNCLedgerDisplayType ledger_type;
Account *leader;
priv = GNC_PLUGIN_PAGE_REGISTER_GET_PRIVATE(page);
ledger_type = gnc_ledger_display_type (priv->ledger);
leader = gnc_ledger_display_leader (priv->ledger);
if ((ledger_type == LD_SINGLE) || (ledger_type == LD_SUBACCOUNT))
return leader;
return NULL;
}
| GNCSplitReg * gnc_plugin_page_register_get_gsr | ( | GncPluginPage * | plugin_page | ) |
Get the GNCSplitReg data structure associated with this register page.
| plugin_page | A "register" page. |
Definition at line 3543 of file gnc-plugin-page-register.c.
{
GncPluginPageRegister *page;
GncPluginPageRegisterPrivate *priv;
g_return_val_if_fail(GNC_IS_PLUGIN_PAGE_REGISTER(plugin_page), NULL);
page = GNC_PLUGIN_PAGE_REGISTER (plugin_page);
priv = GNC_PLUGIN_PAGE_REGISTER_GET_PRIVATE(page);
return priv->gsr;
}
| GType gnc_plugin_page_register_get_type | ( | void | ) |
Retrieve the type number for the plugin page.
Definition at line 523 of file gnc-plugin-page-register.c.
{
static GType gnc_plugin_page_register_type = 0;
if (gnc_plugin_page_register_type == 0)
{
static const GTypeInfo our_info =
{
sizeof (GncPluginPageRegisterClass),
NULL,
NULL,
(GClassInitFunc) gnc_plugin_page_register_class_init,
NULL,
NULL,
sizeof (GncPluginPageRegister),
0,
(GInstanceInitFunc) gnc_plugin_page_register_init
};
gnc_plugin_page_register_type = g_type_register_static (GNC_TYPE_PLUGIN_PAGE,
GNC_PLUGIN_PAGE_REGISTER_NAME,
&our_info, 0);
}
return gnc_plugin_page_register_type;
}
| GncPluginPage * gnc_plugin_page_register_new | ( | Account * | account, |
| gboolean | subaccounts | ||
| ) |
Create a new "register" plugin page, given a pointer to an account.
| account | The pointer to the account to embed in the register. |
| subaccounts | TRUE if all the sub-accounts of the specified account should be included in the register. |
Definition at line 611 of file gnc-plugin-page-register.c.
{
GNCLedgerDisplay *ledger;
GncPluginPage *page;
GncPluginPageRegisterPrivate *priv;
ENTER("account=%p, subaccounts=%s", account,
subaccounts ? "TRUE" : "FALSE");
if (subaccounts)
ledger = gnc_ledger_display_subaccounts (account);
else
ledger = gnc_ledger_display_simple (account);
page = gnc_plugin_page_register_new_common(ledger);
priv = GNC_PLUGIN_PAGE_REGISTER_GET_PRIVATE(page);
priv->key = *xaccAccountGetGUID(account);
LEAVE("%p", page);
return page;
}
| GncPluginPage * gnc_plugin_page_register_new_gl | ( | void | ) |
Create a new "register" plugin page containing a general ledger.
Definition at line 634 of file gnc-plugin-page-register.c.
{
GNCLedgerDisplay *ledger;
ledger = gnc_ledger_display_gl ();
return gnc_plugin_page_register_new_common(ledger);
}
| GncPluginPage * gnc_plugin_page_register_new_ledger | ( | GNCLedgerDisplay * | ledger | ) |
Create a new "register" plugin page, given a pointer to an already created ledger. This function should be used when the ledger already exists. (E.G. From the "find transaction" code, or from the scheduled transaction code.)
| ledger | The pointer to the ledger to embed into the register. |
Definition at line 643 of file gnc-plugin-page-register.c.
{
return gnc_plugin_page_register_new_common(ledger);
}
| void gnc_plugin_page_register_set_options | ( | GncPluginPage * | plugin_page, |
| gint | lines_default, | ||
| gboolean | read_only | ||
| ) |
Set various register options on a newly created "register" plugin page.
| plugin_page | The "register" page to modify. |
| lines_default | Used to calculate the minimum preferred height of the plugin page. |
| read_only | True if the register should be read-only. |
Definition at line 3527 of file gnc-plugin-page-register.c.
{
GncPluginPageRegister *page;
GncPluginPageRegisterPrivate *priv;
g_return_if_fail(GNC_IS_PLUGIN_PAGE_REGISTER(plugin_page));
page = GNC_PLUGIN_PAGE_REGISTER (plugin_page);
priv = GNC_PLUGIN_PAGE_REGISTER_GET_PRIVATE(page);
priv->lines_default = lines_default;
priv->read_only = read_only;
}
| void gnc_plugin_page_register_sort_button_cb | ( | GtkToggleButton * | button, |
| GncPluginPageRegister * | page | ||
| ) |
This function is called when a radio button in the "Sort By..." dialog is clicked.
| button | The button that was toggled. |
| page | A pointer to the GncPluginPageRegister associated with this dialog box. |
Definition at line 1701 of file gnc-plugin-page-register.c.
{
GncPluginPageRegisterPrivate *priv;
const gchar *name;
SortType type;
g_return_if_fail(GTK_IS_TOGGLE_BUTTON(button));
g_return_if_fail(GNC_IS_PLUGIN_PAGE_REGISTER(page));
priv = GNC_PLUGIN_PAGE_REGISTER_GET_PRIVATE(page);
name = gtk_buildable_get_name(GTK_BUILDABLE(button));
ENTER("button %s(%p), page %p", name, button, page);
type = SortTypefromString(name);
gnc_split_reg_set_sort_type(priv->gsr, type);
LEAVE(" ");
}
| void gnc_plugin_page_register_sort_order_save_cb | ( | GtkToggleButton * | button, |
| GncPluginPageRegister * | page | ||
| ) |
This function is called whenever the save sort order is checked or unchecked which allows saving of the sort order.
| button | The toggle button that was changed. |
| page | A pointer to the GncPluginPageRegister that is associated with this sort order dialog. |
Definition at line 1729 of file gnc-plugin-page-register.c.
{
GncPluginPageRegisterPrivate *priv;
g_return_if_fail(GTK_IS_CHECK_BUTTON(button));
g_return_if_fail(GNC_IS_PLUGIN_PAGE_REGISTER(page));
ENTER("Save toggle button (%p), plugin_page %p", button, page);
/* Compute the new save sort order */
priv = GNC_PLUGIN_PAGE_REGISTER_GET_PRIVATE(page);
if (gtk_toggle_button_get_active(button))
priv->sd.save_order = TRUE;
else
priv->sd.save_order = FALSE;
LEAVE(" ");
}
| void gnc_plugin_page_register_sort_response_cb | ( | GtkDialog * | dialog, |
| gint | response, | ||
| GncPluginPageRegister * | page | ||
| ) |
This function is called when the "Sort By..." dialog is closed. If the dialog was closed by any method other than clicking the OK button, the original sorting order will be restored.
| dialog | A pointer to the dialog box. |
| response | A numerical value indicating why the dialog box was closed. |
| page | A pointer to the GncPluginPageRegister associated with this dialog box. |
Definition at line 1653 of file gnc-plugin-page-register.c.
{
GncPluginPageRegisterPrivate *priv;
GncPluginPage *plugin_page;
SortType type;
const gchar *order;
g_return_if_fail(GTK_IS_DIALOG(dialog));
g_return_if_fail(GNC_IS_PLUGIN_PAGE_REGISTER(page));
ENTER(" ");
priv = GNC_PLUGIN_PAGE_REGISTER_GET_PRIVATE(page);
plugin_page = GNC_PLUGIN_PAGE(page);
if (response != GTK_RESPONSE_OK)
{
/* Restore the original sort order */
gnc_split_reg_set_sort_type(priv->gsr, priv->sd.original_sort_type);
priv->sd.save_order = priv->sd.original_save_order;
}
else
{
priv->sd.original_save_order = priv->sd.save_order;
if (priv->sd.save_order)
{
type = gnc_split_reg_get_sort_type(priv->gsr);
order = SortTypeasString(type);
gnc_plugin_page_register_set_sort_order (plugin_page, order);
}
}
priv->sd.dialog = NULL;
gtk_widget_destroy(GTK_WIDGET(dialog));
LEAVE(" ");
}
1.7.4