27 #include <glib/gi18n.h>
30 #include "business-gnome-utils.h"
31 #include "dialog-invoice.h"
32 #include "gnc-ledger-display.h"
36 #include "gnc-component-manager.h"
39 #include "gnc-icons.h"
40 #include "gnucash-sheet.h"
50 static void gnc_plugin_page_invoice_finalize (GObject *
object);
52 static GtkWidget *gnc_plugin_page_invoice_create_widget (
GncPluginPage *plugin_page);
53 static void gnc_plugin_page_invoice_destroy_widget (
GncPluginPage *plugin_page);
54 static void gnc_plugin_page_invoice_save_page (
GncPluginPage *plugin_page, GKeyFile *file,
const gchar *group);
55 static GncPluginPage *gnc_plugin_page_invoice_recreate_page (GtkWidget *window, GKeyFile *file,
const gchar *group);
56 static void gnc_plugin_page_invoice_window_changed (
GncPluginPage *plugin_page, GtkWidget *window);
58 static void gnc_plugin_page_invoice_summarybar_position_changed(gpointer prefs, gchar* pref, gpointer user_data);
61 static void gnc_plugin_page_invoice_cmd_new_invoice (GtkAction *action,
GncPluginPageInvoice *plugin_page);
62 static void gnc_plugin_page_invoice_cmd_new_account (GtkAction *action,
GncPluginPageInvoice *plugin_page);
63 static void gnc_plugin_page_invoice_cmd_print (GtkAction *action,
GncPluginPageInvoice *plugin_page);
64 static void gnc_plugin_page_invoice_cmd_cut (GtkAction *action,
GncPluginPageInvoice *plugin_page);
65 static void gnc_plugin_page_invoice_cmd_copy (GtkAction *action,
GncPluginPageInvoice *plugin_page);
66 static void gnc_plugin_page_invoice_cmd_paste (GtkAction *action,
GncPluginPageInvoice *plugin_page);
67 static void gnc_plugin_page_invoice_cmd_edit (GtkAction *action,
GncPluginPageInvoice *plugin_page);
68 static void gnc_plugin_page_invoice_cmd_duplicateInvoice (GtkAction *action,
GncPluginPageInvoice *plugin_page);
69 static void gnc_plugin_page_invoice_cmd_post (GtkAction *action,
GncPluginPageInvoice *plugin_page);
70 static void gnc_plugin_page_invoice_cmd_unpost (GtkAction *action,
GncPluginPageInvoice *plugin_page);
72 static void gnc_plugin_page_invoice_cmd_sort_changed (GtkAction *action,
73 GtkRadioAction *current,
76 static void gnc_plugin_page_invoice_cmd_enter (GtkAction *action,
GncPluginPageInvoice *plugin_page);
77 static void gnc_plugin_page_invoice_cmd_cancel (GtkAction *action,
GncPluginPageInvoice *plugin_page);
78 static void gnc_plugin_page_invoice_cmd_delete (GtkAction *action,
GncPluginPageInvoice *plugin_page);
79 static void gnc_plugin_page_invoice_cmd_blank (GtkAction *action,
GncPluginPageInvoice *plugin_page);
80 static void gnc_plugin_page_invoice_cmd_duplicateEntry (GtkAction *action,
GncPluginPageInvoice *plugin_page);
81 static void gnc_plugin_page_invoice_cmd_pay_invoice (GtkAction *action,
GncPluginPageInvoice *plugin_page);
82 static void gnc_plugin_page_invoice_cmd_company_report (GtkAction *action,
GncPluginPageInvoice *plugin_page);
85 static void gnc_plugin_page_invoice_refresh_cb (GHashTable *changes, gpointer user_data);
87 static void gnc_plugin_page_invoice_cmd_entryUp (GtkAction *action,
GncPluginPageInvoice *plugin_page);
88 static void gnc_plugin_page_invoice_cmd_entryDown (GtkAction *action,
GncPluginPageInvoice *plugin_page);
94 static GtkActionEntry gnc_plugin_page_invoice_actions [] =
97 {
"FakeToplevel", NULL,
"", NULL, NULL, NULL },
98 {
"SortOrderAction", NULL, N_(
"Sort _Order"), NULL, NULL, NULL },
102 "FileNewAccountAction", GNC_STOCK_NEW_ACCOUNT, N_(
"New _Account..."), NULL,
103 N_(
"Create a new account"),
104 G_CALLBACK (gnc_plugin_page_invoice_cmd_new_account)
107 "FilePrintAction", GTK_STOCK_PRINT, N_(
"Print Invoice"),
"<control>p",
108 N_(
"Make a printable invoice"),
109 G_CALLBACK (gnc_plugin_page_invoice_cmd_print)
114 "EditCutAction", GTK_STOCK_CUT, N_(
"_Cut"), NULL,
116 G_CALLBACK (gnc_plugin_page_invoice_cmd_cut)
119 "EditCopyAction", GTK_STOCK_COPY, N_(
"Copy"), NULL,
121 G_CALLBACK (gnc_plugin_page_invoice_cmd_copy)
124 "EditPasteAction", GTK_STOCK_PASTE, N_(
"_Paste"), NULL,
126 G_CALLBACK (gnc_plugin_page_invoice_cmd_paste)
129 "EditEditInvoiceAction", GNC_STOCK_INVOICE_EDIT, N_(
"_Edit Invoice"), NULL,
130 N_(
"Edit this invoice"),
131 G_CALLBACK (gnc_plugin_page_invoice_cmd_edit)
134 "EditDuplicateInvoiceAction", GNC_STOCK_INVOICE_DUPLICATE, N_(
"_Duplicate Invoice"),
135 NULL, N_(
"Create a new invoice as a duplicate of the current one"),
136 G_CALLBACK (gnc_plugin_page_invoice_cmd_duplicateInvoice)
139 "EditPostInvoiceAction", GNC_STOCK_INVOICE_POST, N_(
"_Post Invoice"), NULL,
140 N_(
"Post this Invoice to your Chart of Accounts"),
141 G_CALLBACK (gnc_plugin_page_invoice_cmd_post)
144 "EditUnpostInvoiceAction", GNC_STOCK_INVOICE_UNPOST, N_(
"_Unpost Invoice"), NULL,
145 N_(
"Unpost this Invoice and make it editable"),
146 G_CALLBACK (gnc_plugin_page_invoice_cmd_unpost)
151 "RecordEntryAction", GTK_STOCK_ADD, N_(
"_Enter"), NULL,
152 N_(
"Record the current entry"),
153 G_CALLBACK (gnc_plugin_page_invoice_cmd_enter)
156 "CancelEntryAction", GTK_STOCK_CANCEL, N_(
"_Cancel"), NULL,
157 N_(
"Cancel the current entry"),
158 G_CALLBACK (gnc_plugin_page_invoice_cmd_cancel)
161 "DeleteEntryAction", GTK_STOCK_DELETE, N_(
"_Delete"), NULL,
162 N_(
"Delete the current entry"),
163 G_CALLBACK (gnc_plugin_page_invoice_cmd_delete)
166 "BlankEntryAction", GTK_STOCK_GOTO_BOTTOM, N_(
"_Blank"), NULL,
167 N_(
"Move to the blank entry at the bottom of the Invoice"),
168 G_CALLBACK (gnc_plugin_page_invoice_cmd_blank)
171 "DuplicateEntryAction", GTK_STOCK_COPY, N_(
"Dup_licate Entry"), NULL,
172 N_(
"Make a copy of the current entry"),
173 G_CALLBACK (gnc_plugin_page_invoice_cmd_duplicateEntry)
176 "EntryUpAction", GTK_STOCK_GO_UP, N_(
"Move Entry _Up"), NULL,
177 N_(
"Move the current entry one row upwards"),
178 G_CALLBACK (gnc_plugin_page_invoice_cmd_entryUp)
181 "EntryDownAction", GTK_STOCK_GO_DOWN, N_(
"Move Entry Do_wn"), NULL,
182 N_(
"Move the current entry one row downwards"),
183 G_CALLBACK (gnc_plugin_page_invoice_cmd_entryDown)
188 "BusinessNewInvoiceAction", GNC_STOCK_INVOICE_NEW, N_(
"New _Invoice"),
"",
189 N_(
"Create a new invoice for the same owner as the current one"),
190 G_CALLBACK (gnc_plugin_page_invoice_cmd_new_invoice)
193 "ToolsProcessPaymentAction", GNC_STOCK_INVOICE_PAY, N_(
"_Pay Invoice"), NULL,
194 N_(
"Enter a payment for the owner of this Invoice"),
195 G_CALLBACK (gnc_plugin_page_invoice_cmd_pay_invoice)
200 "ReportsCompanyReportAction", NULL, N_(
"_Company Report"), NULL,
201 N_(
"Open a company report window for the owner of this Invoice"),
202 G_CALLBACK (gnc_plugin_page_invoice_cmd_company_report)
205 static guint gnc_plugin_page_invoice_n_actions = G_N_ELEMENTS (gnc_plugin_page_invoice_actions);
207 static GtkRadioActionEntry radio_entries [] =
209 {
"SortStandardAction", NULL, N_(
"_Standard"), NULL, N_(
"Keep normal invoice order"), INVSORT_BY_STANDARD },
210 {
"SortDateAction", NULL, N_(
"_Date"), NULL, N_(
"Sort by date"), INVSORT_BY_DATE },
211 {
"SortDateEntryAction", NULL, N_(
"Date of _Entry"), NULL, N_(
"Sort by the date of entry"), INVSORT_BY_DATE_ENTERED },
212 {
"SortQuantityAction", NULL, N_(
"_Quantity"), NULL, N_(
"Sort by quantity"), INVSORT_BY_QTY },
213 {
"SortPriceAction", NULL, N_(
"_Price"), NULL, N_(
"Sort by price"), INVSORT_BY_PRICE },
214 {
"SortDescriptionAction", NULL, N_(
"Descri_ption"), NULL, N_(
"Sort by description"), INVSORT_BY_DESC },
216 static guint n_radio_entries = G_N_ELEMENTS (radio_entries);
218 static const gchar *invoice_book_readwrite_actions[] =
221 "FileNewAccountAction",
222 "EditDuplicateInvoiceAction",
223 "BusinessNewInvoiceAction",
224 "ToolsProcessPaymentAction",
228 static const gchar *posted_actions[] =
233 static const gchar *unposted_actions[] =
237 "EditEditInvoiceAction",
238 "EditPostInvoiceAction",
242 "DuplicateEntryAction",
249 static const gchar *can_unpost_actions[] =
251 "EditUnpostInvoiceAction",
258 {
"RecordEntryAction", N_(
"Enter") },
259 {
"CancelEntryAction", N_(
"Cancel") },
260 {
"DeleteEntryAction", N_(
"Delete") },
261 {
"DuplicateEntryAction", N_(
"Duplicate") },
262 {
"EntryUpAction", N_(
"Up") },
263 {
"EntryDownAction", N_(
"Down") },
264 {
"BlankEntryAction", N_(
"Blank") },
265 {
"EditPostInvoiceAction", N_(
"Post") },
266 {
"EditUnpostInvoiceAction", N_(
"Unpost") },
281 gint component_manager_id;
284 #define GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(o) \
285 (G_TYPE_INSTANCE_GET_PRIVATE ((o), GNC_TYPE_PLUGIN_PAGE_INVOICE, GncPluginPageInvoicePrivate))
287 static GObjectClass *parent_class = NULL;
296 static GType gnc_plugin_page_invoice_type = 0;
298 if (gnc_plugin_page_invoice_type == 0)
300 static const GTypeInfo our_info =
305 (GClassInitFunc) gnc_plugin_page_invoice_class_init,
310 (GInstanceInitFunc) gnc_plugin_page_invoice_init
313 gnc_plugin_page_invoice_type = g_type_register_static (GNC_TYPE_PLUGIN_PAGE,
314 "GncPluginPageInvoice",
318 return gnc_plugin_page_invoice_type;
331 for ( ; item; item = g_list_next(item))
334 priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(invoice_page);
336 return GNC_PLUGIN_PAGE(invoice_page);
339 invoice_page = g_object_new (GNC_TYPE_PLUGIN_PAGE_INVOICE, (
char *)NULL);
340 priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(invoice_page);
343 plugin_page = GNC_PLUGIN_PAGE(invoice_page);
347 priv->component_manager_id = 0;
354 GObjectClass *object_class = G_OBJECT_CLASS (klass);
357 parent_class = g_type_class_peek_parent (klass);
359 object_class->finalize = gnc_plugin_page_invoice_finalize;
362 gnc_plugin_class->
plugin_name = GNC_PLUGIN_PAGE_INVOICE_NAME;
363 gnc_plugin_class->
create_widget = gnc_plugin_page_invoice_create_widget;
364 gnc_plugin_class->
destroy_widget = gnc_plugin_page_invoice_destroy_widget;
365 gnc_plugin_class->
save_page = gnc_plugin_page_invoice_save_page;
366 gnc_plugin_class->
recreate_page = gnc_plugin_page_invoice_recreate_page;
367 gnc_plugin_class->
window_changed = gnc_plugin_page_invoice_window_changed;
376 GtkActionGroup *action_group;
380 parent = GNC_PLUGIN_PAGE(plugin_page);
382 g_object_set(G_OBJECT(plugin_page),
383 "page-name", _(
"Invoice"),
384 "page-uri",
"default:",
385 "ui-description",
"gnc-plugin-page-invoice-ui.xml",
386 "use-new-window", use_new,
395 "GncPluginPageInvoiceActions");
396 gtk_action_group_add_actions (action_group, gnc_plugin_page_invoice_actions,
397 gnc_plugin_page_invoice_n_actions, plugin_page);
398 gtk_action_group_add_radio_actions (action_group,
399 radio_entries, n_radio_entries,
401 G_CALLBACK(gnc_plugin_page_invoice_cmd_sort_changed),
408 gnc_plugin_page_invoice_finalize (GObject *
object)
410 g_return_if_fail (GNC_IS_PLUGIN_PAGE_INVOICE (
object));
412 ENTER(
"object %p",
object);
413 G_OBJECT_CLASS (parent_class)->finalize (
object);
421 GtkActionGroup *action_group;
424 g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(page));
435 "sensitive", is_posted);
437 "sensitive", !is_posted);
439 "sensitive", can_unpost);
441 "sensitive", !is_readonly);
448 gnc_plugin_page_invoice_create_widget (
GncPluginPage *plugin_page)
452 GtkWidget *regWidget, *widget;
454 ENTER(
"page %p", plugin_page);
455 page = GNC_PLUGIN_PAGE_INVOICE (plugin_page);
456 priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(page);
457 if (priv->widget != NULL)
463 priv->widget = gtk_vbox_new (FALSE, 0);
464 gtk_widget_show (priv->widget);
466 widget = gnc_invoice_create_page(priv->iw, page);
467 gtk_widget_show (widget);
468 gtk_box_pack_start(GTK_BOX (priv->widget), widget, TRUE, TRUE, 0);
470 plugin_page->
summarybar = gnc_invoice_window_create_summary_bar(priv->iw);
471 gtk_box_pack_start(GTK_BOX (priv->widget), plugin_page->
summarybar, FALSE, FALSE, 0);
472 gnc_plugin_page_invoice_summarybar_position_changed(NULL, NULL, page);
474 GNC_PREF_SUMMARYBAR_POSITION_TOP,
475 gnc_plugin_page_invoice_summarybar_position_changed,
478 GNC_PREF_SUMMARYBAR_POSITION_BOTTOM,
479 gnc_plugin_page_invoice_summarybar_position_changed,
482 regWidget = gnc_invoice_get_register(priv->iw);
485 g_signal_connect (G_OBJECT (regWidget),
"redraw-help",
486 G_CALLBACK (gnc_plugin_page_redraw_help_cb), page);
489 priv->component_manager_id =
490 gnc_register_gui_component(GNC_PLUGIN_PAGE_INVOICE_NAME,
491 gnc_plugin_page_invoice_refresh_cb,
499 gnc_plugin_page_invoice_destroy_widget (
GncPluginPage *plugin_page)
504 ENTER(
"page %p", plugin_page);
505 page = GNC_PLUGIN_PAGE_INVOICE (plugin_page);
506 priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(page);
509 GNC_PREF_SUMMARYBAR_POSITION_TOP,
510 gnc_plugin_page_invoice_summarybar_position_changed,
513 GNC_PREF_SUMMARYBAR_POSITION_BOTTOM,
514 gnc_plugin_page_invoice_summarybar_position_changed,
517 if (priv->widget == NULL)
523 if (priv->component_manager_id)
525 gnc_unregister_gui_component(priv->component_manager_id);
526 priv->component_manager_id = 0;
529 gtk_widget_hide(priv->widget);
530 gnc_invoice_window_destroy_cb(priv->widget, priv->iw);
545 gnc_plugin_page_invoice_save_page (
GncPluginPage *plugin_page,
547 const gchar *group_name)
552 g_return_if_fail (GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page));
553 g_return_if_fail (key_file != NULL);
554 g_return_if_fail (group_name != NULL);
556 ENTER(
"page %p, key_file %p, group_name %s", plugin_page, key_file,
559 invoice = GNC_PLUGIN_PAGE_INVOICE(plugin_page);
560 priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(invoice);
562 gnc_invoice_save_page(priv->iw, key_file, group_name);
578 gnc_plugin_page_invoice_recreate_page (GtkWidget *window,
580 const gchar *group_name)
584 g_return_val_if_fail(GNC_IS_MAIN_WINDOW(window), NULL);
585 g_return_val_if_fail(key_file, NULL);
586 g_return_val_if_fail(group_name, NULL);
587 ENTER(
"key_file %p, group_name %s", key_file, group_name);
590 page = gnc_invoice_recreate_page(GNC_MAIN_WINDOW(window),
591 key_file, group_name);
599 gnc_plugin_page_invoice_window_changed (
GncPluginPage *plugin_page,
605 g_return_if_fail (GNC_IS_PLUGIN_PAGE_INVOICE (plugin_page));
607 page = GNC_PLUGIN_PAGE_INVOICE(plugin_page);
608 priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(page);
609 gnc_invoice_window_changed (priv->iw, window);
614 gnc_plugin_page_invoice_summarybar_position_changed(gpointer prefs, gchar *pref, gpointer user_data)
619 GtkPositionType position = GTK_POS_BOTTOM;
621 g_return_if_fail(user_data != NULL);
623 plugin_page = GNC_PLUGIN_PAGE(user_data);
624 page = GNC_PLUGIN_PAGE_INVOICE (user_data);
625 priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(page);
628 position = GTK_POS_TOP;
630 gtk_box_reorder_child(GTK_BOX(priv->widget),
632 (position == GTK_POS_TOP ? 0 : -1) );
641 gnc_plugin_page_invoice_cmd_new_invoice (GtkAction *action,
646 g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page));
648 ENTER(
"(action %p, plugin_page %p)", action, plugin_page);
649 priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page);
650 gnc_invoice_window_new_invoice_cb(NULL, priv->iw);
655 gnc_plugin_page_invoice_cmd_new_account (GtkAction *action,
658 g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page));
660 ENTER(
"(action %p, plugin_page %p)", action, plugin_page);
666 gnc_plugin_page_invoice_cmd_print (GtkAction *action,
671 g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page));
673 ENTER(
"(action %p, plugin_page %p)", action, plugin_page);
674 priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page);
675 gnc_invoice_window_printCB(NULL, priv->iw);
680 gnc_plugin_page_invoice_cmd_cut (GtkAction *action,
685 g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page));
687 ENTER(
"(action %p, plugin_page %p)", action, plugin_page);
688 priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page);
689 gnc_invoice_window_cut_cb(NULL, priv->iw);
694 gnc_plugin_page_invoice_cmd_copy (GtkAction *action,
699 g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page));
701 ENTER(
"(action %p, plugin_page %p)", action, plugin_page);
702 priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page);
703 gnc_invoice_window_copy_cb(NULL, priv->iw);
708 gnc_plugin_page_invoice_cmd_paste (GtkAction *action,
713 g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page));
715 ENTER(
"(action %p, plugin_page %p)", action, plugin_page);
716 priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page);
717 gnc_invoice_window_paste_cb(NULL, priv->iw);
722 gnc_plugin_page_invoice_cmd_edit (GtkAction *action,
727 g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page));
729 ENTER(
"(action %p, plugin_page %p)", action, plugin_page);
730 priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page);
731 gnc_invoice_window_editCB(NULL, priv->iw);
736 gnc_plugin_page_invoice_cmd_duplicateInvoice (GtkAction *action,
741 g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page));
743 ENTER(
"(action %p, plugin_page %p)", action, plugin_page);
744 priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page);
745 gnc_invoice_window_duplicateInvoiceCB(NULL, priv->iw);
750 gnc_plugin_page_invoice_cmd_post (GtkAction *action,
755 g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page));
757 ENTER(
"(action %p, plugin_page %p)", action, plugin_page);
758 priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page);
759 gnc_invoice_window_postCB(NULL, priv->iw);
764 gnc_plugin_page_invoice_cmd_unpost (GtkAction *action,
769 g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page));
771 ENTER(
"(action %p, plugin_page %p)", action, plugin_page);
772 priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page);
773 gnc_invoice_window_unpostCB(NULL, priv->iw);
778 gnc_plugin_page_invoice_cmd_sort_changed (GtkAction *action,
779 GtkRadioAction *current,
783 invoice_sort_type_t value;
785 ENTER(
"(action %p, radio action %p, plugin_page %p)",
786 action, current, plugin_page);
787 LEAVE(
"g_return testing...");
789 g_return_if_fail(GTK_IS_ACTION(action));
790 g_return_if_fail(GTK_IS_RADIO_ACTION(current));
791 g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page));
793 ENTER(
"...passed (action %p, radio action %p, plugin_page %p)",
794 action, current, plugin_page);
795 priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page);
796 value = gtk_radio_action_get_current_value(current);
797 gnc_invoice_window_sort (priv->iw, value);
803 gnc_plugin_page_invoice_cmd_enter (GtkAction *action,
808 g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page));
810 ENTER(
"(action %p, plugin_page %p)", action, plugin_page);
811 priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page);
812 gnc_invoice_window_recordCB(NULL, priv->iw);
817 gnc_plugin_page_invoice_cmd_cancel (GtkAction *action,
822 g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page));
824 ENTER(
"(action %p, plugin_page %p)", action, plugin_page);
825 priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page);
826 gnc_invoice_window_cancelCB(NULL, priv->iw);
831 gnc_plugin_page_invoice_cmd_delete (GtkAction *action,
836 g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page));
838 ENTER(
"(action %p, plugin_page %p)", action, plugin_page);
839 priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page);
840 gnc_invoice_window_deleteCB(NULL, priv->iw);
845 gnc_plugin_page_invoice_cmd_blank (GtkAction *action,
850 g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page));
852 ENTER(
"(action %p, plugin_page %p)", action, plugin_page);
853 priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page);
854 gnc_invoice_window_blankCB(NULL, priv->iw);
859 gnc_plugin_page_invoice_cmd_duplicateEntry (GtkAction *action,
864 g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page));
866 ENTER(
"(action %p, plugin_page %p)", action, plugin_page);
867 priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page);
868 gnc_invoice_window_duplicateCB(NULL, priv->iw);
873 gnc_plugin_page_invoice_cmd_entryUp (GtkAction *action,
877 g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page));
879 ENTER(
"(action %p, plugin_page %p)", action, plugin_page);
880 priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page);
881 gnc_invoice_window_entryUpCB(NULL, priv->iw);
886 gnc_plugin_page_invoice_cmd_entryDown (GtkAction *action,
890 g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page));
892 ENTER(
"(action %p, plugin_page %p)", action, plugin_page);
893 priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page);
894 gnc_invoice_window_entryDownCB(NULL, priv->iw);
899 gnc_plugin_page_invoice_cmd_pay_invoice (GtkAction *action,
904 g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page));
906 ENTER(
"(action %p, plugin_page %p)", action, plugin_page);
907 priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page);
908 gnc_invoice_window_payment_cb(NULL, priv->iw);
913 gnc_plugin_page_invoice_cmd_company_report (GtkAction *action,
918 g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page));
920 ENTER(
"(action %p, plugin_page %p)", action, plugin_page);
921 priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page);
922 gnc_invoice_window_report_owner_cb(NULL, priv->iw);
939 g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(invoice_page));
941 window = GNC_WINDOW(GNC_PLUGIN_PAGE(invoice_page)->window);
944 priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(invoice_page);
945 help = gnc_invoice_get_help(priv->iw);
946 status = help ? help : g_strdup(
"");
947 gnc_window_set_status(window, GNC_PLUGIN_PAGE(invoice_page), status);
959 g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page));
961 page = GNC_PLUGIN_PAGE_INVOICE(plugin_page);
962 priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(page);
963 title = gnc_invoice_get_title(priv->iw);
969 gnc_plugin_page_invoice_refresh_cb (GHashTable *changes, gpointer user_data)
975 g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(page));
981 priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(page);
982 reg = gnc_invoice_get_register(priv->iw);
983 gnucash_register_refresh_from_prefs(GNUCASH_REGISTER(reg));
984 gtk_widget_queue_draw(priv->widget);
utility functions for the GnuCash UI
GType gnc_plugin_page_invoice_get_type(void)
const GList * gnc_gobject_tracking_get_list(const gchar *name)
GncPluginPage *(* recreate_page)(GtkWidget *window, GKeyFile *file, const gchar *group)
gulong gnc_prefs_register_cb(const char *group, const gchar *pref_name, gpointer func, gpointer user_data)
Dialog for create/edit an account.
utility functions for the GnuCash UI
void gnc_plugin_page_set_uri(GncPluginPage *page, const char *name)
Functions that are supported by all types of windows.
GtkActionGroup * gnc_plugin_page_get_action_group(GncPluginPage *page)
#define ENTER(format, args...)
void gnc_plugin_page_invoice_update_menus(GncPluginPage *page, gboolean is_posted, gboolean can_unpost)
void(* destroy_widget)(GncPluginPage *plugin_page)
GncPluginPage * gnc_plugin_page_invoice_new(InvoiceWindow *iw)
const gchar * plugin_name
Gnome specific utility functions.
void(* window_changed)(GncPluginPage *plugin_page, GtkWidget *window)
Generic api to store and retrieve preferences.
gboolean qof_book_is_readonly(const QofBook *book)
void gnc_ui_new_account_window(QofBook *book, Account *parent)
GtkWidget *(* create_widget)(GncPluginPage *plugin_page)
gboolean gnc_prefs_get_bool(const gchar *group, const gchar *pref_name)
Functions for adding plugins to a GnuCash window.
#define LEAVE(format, args...)
void(* save_page)(GncPluginPage *page, GKeyFile *file, const gchar *group)
void gnc_plugin_page_add_book(GncPluginPage *page, QofBook *book)
GtkActionGroup * gnc_plugin_page_create_action_group(GncPluginPage *page, const gchar *group_name)
void main_window_update_page_name(GncPluginPage *page, const gchar *name_in)
void gnc_plugin_page_invoice_update_title(GncPluginPage *plugin_page)
const gchar * QofLogModule
void gnc_prefs_remove_cb_by_func(const gchar *group, const gchar *pref_name, gpointer func, gpointer user_data)