void gnc_plugin_page_invoice_update_menus (GncPluginPage *page, gboolean is_posted, gboolean can_unpost) { GtkActionGroup *action_group; gboolean is_readonly = qof_book_is_readonly(gnc_get_current_book()); g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(page)); if (is_readonly) { // Are we readonly? Then don't allow any actions. is_posted = TRUE; can_unpost = FALSE; } action_group = gnc_plugin_page_get_action_group(page); gnc_plugin_update_actions (action_group, posted_actions, "sensitive", is_posted); gnc_plugin_update_actions (action_group, unposted_actions, "sensitive", !is_posted); gnc_plugin_update_actions (action_group, can_unpost_actions, "sensitive", can_unpost); gnc_plugin_update_actions (action_group, invoice_book_readwrite_actions, "sensitive", !is_readonly); }
/** * Whenever the current page is changed, if an invoice page is * the current page, set focus on the sheet or notes field. */ static void gnc_plugin_page_invoice_main_window_page_changed (GncMainWindow *window, GncPluginPage *plugin_page, gpointer user_data) { // We continue only if the plugin_page is a valid if (!plugin_page || !GNC_IS_PLUGIN_PAGE(plugin_page)) return; if (gnc_main_window_get_current_page (window) == plugin_page) { GncPluginPageInvoice *page; GncPluginPageInvoicePrivate *priv; if (!GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page)) return; page = GNC_PLUGIN_PAGE_INVOICE(plugin_page); priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(page); // The page changed signal is emitted multiple times so we need // to use an idle_add to change the focus to the sheet g_idle_remove_by_data (priv->iw); g_idle_add ((GSourceFunc)gnc_plugin_page_invoice_focus, priv->iw); } }
static void gnc_plugin_page_invoice_finalize (GObject *object) { g_return_if_fail (GNC_IS_PLUGIN_PAGE_INVOICE (object)); ENTER("object %p", object); G_OBJECT_CLASS (parent_class)->finalize (object); LEAVE(" "); }
static void gnc_plugin_page_invoice_cmd_new_account (GtkAction *action, GncPluginPageInvoice *plugin_page) { g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page)); ENTER("(action %p, plugin_page %p)", action, plugin_page); gnc_ui_new_account_window (gnc_get_current_book(), NULL); LEAVE(" "); }
static void gnc_plugin_page_invoice_cmd_entryDown (GtkAction *action, GncPluginPageInvoice *plugin_page) { GncPluginPageInvoicePrivate *priv; g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page)); ENTER("(action %p, plugin_page %p)", action, plugin_page); priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page); gnc_invoice_window_entryDownCB(NULL, priv->iw); LEAVE(" "); }
static void gnc_plugin_page_invoice_window_changed (GncPluginPage *plugin_page, GtkWidget *window) { GncPluginPageInvoice *page; GncPluginPageInvoicePrivate *priv; g_return_if_fail (GNC_IS_PLUGIN_PAGE_INVOICE (plugin_page)); page = GNC_PLUGIN_PAGE_INVOICE(plugin_page); priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(page); gnc_invoice_window_changed (priv->iw, window); }
static void gnc_plugin_page_invoice_cmd_company_report (GtkAction *action, GncPluginPageInvoice *plugin_page) { GncPluginPageInvoicePrivate *priv; GtkWindow *parent; g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page)); ENTER("(action %p, plugin_page %p)", action, plugin_page); priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page); parent = GTK_WINDOW (gnc_plugin_page_get_window (GNC_PLUGIN_PAGE (plugin_page))); gnc_invoice_window_report_owner_cb (parent, priv->iw); LEAVE(" "); }
void gnc_plugin_page_invoice_update_title (GncPluginPage *plugin_page) { GncPluginPageInvoice *page; GncPluginPageInvoicePrivate *priv; gchar *title; g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page)); page = GNC_PLUGIN_PAGE_INVOICE(plugin_page); priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(page); title = gnc_invoice_get_title(priv->iw); main_window_update_page_name(plugin_page, title); g_free(title); }
static void gnc_plugin_page_invoice_refresh_cb (GHashTable *changes, gpointer user_data) { GncPluginPageInvoice *page = user_data; GncPluginPageInvoicePrivate *priv; GtkWidget *reg; g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(page)); /* We're only looking for forced updates here. */ if (changes) return; priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(page); reg = gnc_invoice_get_register(priv->iw); gnucash_register_refresh_from_prefs(GNUCASH_REGISTER(reg)); gtk_widget_queue_draw(priv->widget); }
static void gnc_plugin_page_redraw_help_cb (GnucashRegister *g_reg, GncPluginPageInvoice *invoice_page) { GncPluginPageInvoicePrivate *priv; GncWindow *window; const char *status; char *help; g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(invoice_page)); window = GNC_WINDOW(GNC_PLUGIN_PAGE(invoice_page)->window); /* Get the text from the ledger */ priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(invoice_page); help = gnc_invoice_get_help(priv->iw); status = help ? help : g_strdup(""); gnc_window_set_status(window, GNC_PLUGIN_PAGE(invoice_page), status); g_free(help); }
/** Save enough information about this invoice page that it can be * recreated next time the user starts gnucash. * * @param page The page to save. * * @param key_file A pointer to the GKeyFile data structure where the * page information should be written. * * @param group_name The group name to use when saving data. */ static void gnc_plugin_page_invoice_save_page (GncPluginPage *plugin_page, GKeyFile *key_file, const gchar *group_name) { GncPluginPageInvoice *invoice; GncPluginPageInvoicePrivate *priv; g_return_if_fail (GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page)); g_return_if_fail (key_file != NULL); g_return_if_fail (group_name != NULL); ENTER("page %p, key_file %p, group_name %s", plugin_page, key_file, group_name); invoice = GNC_PLUGIN_PAGE_INVOICE(plugin_page); priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(invoice); gnc_invoice_save_page(priv->iw, key_file, group_name); LEAVE(" "); }
static void gnc_plugin_page_invoice_cmd_sort_changed (GtkAction *action, GtkRadioAction *current, GncPluginPageInvoice *plugin_page) { GncPluginPageInvoicePrivate *priv; invoice_sort_type_t value; ENTER("(action %p, radio action %p, plugin_page %p)", action, current, plugin_page); LEAVE("g_return testing..."); g_return_if_fail(GTK_IS_ACTION(action)); g_return_if_fail(GTK_IS_RADIO_ACTION(current)); g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page)); ENTER("...passed (action %p, radio action %p, plugin_page %p)", action, current, plugin_page); priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page); value = gtk_radio_action_get_current_value(current); gnc_invoice_window_sort (priv->iw, value); LEAVE(" "); }