[Gnucash-changes] Migrate the business "test" menu to a GtkAction
based menu.
David Hampton
hampton at cvs.gnucash.org
Sat Apr 30 19:23:05 EDT 2005
Log Message:
-----------
Migrate the business "test" menu to a GtkAction based menu.
Tags:
----
gnucash-gnome2-dev
Modified Files:
--------------
gnucash/src/business/business-gnome:
business-gnome.scm
gnc-plugin-business.c
gnucash/src/business/business-gnome/ui:
gnc-plugin-business-ui.xml
gnucash/src/scm:
main.scm
Revision Data
-------------
Index: gnc-plugin-business.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/business/business-gnome/Attic/gnc-plugin-business.c,v
retrieving revision 1.1.2.9
retrieving revision 1.1.2.10
diff -Lsrc/business/business-gnome/gnc-plugin-business.c -Lsrc/business/business-gnome/gnc-plugin-business.c -u -r1.1.2.9 -r1.1.2.10
--- src/business/business-gnome/gnc-plugin-business.c
+++ src/business/business-gnome/gnc-plugin-business.c
@@ -1,8 +1,9 @@
/*
* gnc-plugin-business.c --
*
- * Copyright (C) 2003 Jan Arne Petersen
* Author: Jan Arne Petersen <jpetersen at uni-bonn.de>
+ * Copyright (C) 2003 Jan Arne Petersen
+ * Copyright (C) 2005 David Hampton <hampton at employees.org>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -39,8 +40,11 @@
#include "gncOwner.h"
#include "messages.h"
#include "gnc-ui-util.h"
+#include "gnc-date.h"
#include "gnc-file-dialog.h"
#include "gnc-file.h"
+#include "guile-mappings.h"
+#include "global-options.h"
/* g_object functions */
static void gnc_plugin_business_class_init (GncPluginBusinessClass *klass);
@@ -108,6 +112,21 @@
static void gnc_plugin_business_cmd_export_employee (GtkAction *action,
GncMainWindowActionData *data);
+static void gnc_plugin_business_cmd_test_search (GtkAction *action,
+ GncMainWindowActionData *data);
+
+static void gnc_plugin_business_cmd_test_reload_invoice_report (GtkAction *action,
+ GncMainWindowActionData *data);
+
+static void gnc_plugin_business_cmd_test_reload_owner_report (GtkAction *action,
+ GncMainWindowActionData *data);
+
+static void gnc_plugin_business_cmd_test_reload_receivable_report (GtkAction *action,
+ GncMainWindowActionData *data);
+
+static void gnc_plugin_business_cmd_test_init_data (GtkAction *action,
+ GncMainWindowActionData *data);
+
/*static void gnc_plugin_business_cmd_export_report (GtkAction *action,
GncMainWindowActionData *data);*/
@@ -208,6 +227,24 @@
{ "QSFEmployeeAction", NULL, N_("QSF _Employee"), NULL,
N_("Export one or more employees to QSF"),
G_CALLBACK (gnc_plugin_business_cmd_export_employee) },
+
+ /* Extensions Menu */
+ { "BusinessTestAction", NULL, N_("_Business"), NULL, NULL, NULL },
+ { "BusinessTestSearchAction", NULL, N_("Test Search Dialog"), NULL,
+ N_("Test Search Dialog"),
+ G_CALLBACK (gnc_plugin_business_cmd_test_search) },
+ { "BusinessTestReloadInvoiceAction", NULL, N_("Reload invoice report"), NULL,
+ N_("Reload invoice report scheme file"),
+ G_CALLBACK (gnc_plugin_business_cmd_test_reload_invoice_report) },
+ { "BusinessTestReloadOwnerAction", NULL, N_("Reload owner report"), NULL,
+ N_("Reload owner report scheme file"),
+ G_CALLBACK (gnc_plugin_business_cmd_test_reload_owner_report) },
+ { "BusinessTestReloadReceivableAction", NULL, N_("Reload receivable report"), NULL,
+ N_("Reload receivable report scheme file"),
+ G_CALLBACK (gnc_plugin_business_cmd_test_reload_receivable_report) },
+ { "BusinessTestInitDataAction", NULL, N_("Initialize Test Data"), NULL,
+ N_("Initialize Test Data"),
+ G_CALLBACK (gnc_plugin_business_cmd_test_init_data) },
};
static guint gnc_plugin_n_actions = G_N_ELEMENTS (gnc_plugin_actions);
@@ -730,3 +767,114 @@
g_free(filename);
qof_session_set_current_session(current_session);
}
+
+static void
+gnc_plugin_business_cmd_test_search (GtkAction *action,
+ GncMainWindowActionData *data)
+{
+ gnc_search_dialog_test();
+}
+
+static void
+gnc_plugin_business_reload_module (const gchar *name)
+{
+ SCM file_scm;
+
+ file_scm = scm_makfrom0str (name);
+ scm_call_1(scm_c_eval_string("gnc:reload-module"), file_scm);
+}
+
+static void
+gnc_plugin_business_cmd_test_reload_invoice_report (GtkAction *action,
+ GncMainWindowActionData *data)
+{
+ gnc_plugin_business_reload_module("gnucash/report/invoice.scm");
+}
+
+static void
+gnc_plugin_business_cmd_test_reload_owner_report (GtkAction *action,
+ GncMainWindowActionData *data)
+{
+ gnc_plugin_business_reload_module("gnucash/report/owner-report.scm");
+}
+
+static void
+gnc_plugin_business_cmd_test_reload_receivable_report (GtkAction *action,
+ GncMainWindowActionData *data)
+{
+ gnc_plugin_business_reload_module("gnucash/report/receivable-report.scm");
+}
+
+static void
+gnc_plugin_business_cmd_test_init_data (GtkAction *action,
+ GncMainWindowActionData *data)
+{
+ QofBook *book = gnc_get_current_book();
+ GncCustomer *customer = gncCustomerCreate(book);
+ GncAddress *address = gncCustomerGetAddr(customer);
+ GncInvoice *invoice = gncInvoiceCreate(book);
+ GncOwner *owner = gncOwnerCreate();
+ GncJob *job = gncJobCreate(book);
+ AccountGroup *group = xaccGetAccountGroup(book);
+ Account *inc_acct = xaccMallocAccount(book);
+ Account *bank_acct = xaccMallocAccount(book);
+ Account *tax_acct = xaccMallocAccount(book);
+ Account *ar_acct = xaccMallocAccount(book);
+ Timespec now;
+
+ // Create Customer
+ gncCustomerSetID(customer, "000001");
+ gncCustomerSetName(customer, "Test Customer");
+ gncCustomerSetCurrency(customer, gnc_default_currency());
+ gncAddressSetName(address, "Contact Person");
+ gncAddressSetAddr1(address, "20 Customer Lane");
+ gncAddressSetAddr2(address, "Customer M/S");
+ gncAddressSetAddr3(address, "Addr3, XXX 12345");
+
+ // Create the Owner
+ gncOwnerInitCustomer(owner, customer);
+
+ // Create the Invoice
+ timespecFromTime_t(&now, time(NULL));
+ gncInvoiceSetID(invoice, "000012");
+ gncInvoiceSetOwner(invoice, owner);
+ gncInvoiceSetDateOpened(invoice, now);
+ gncInvoiceSetCurrency(invoice, gnc_default_currency());
+
+ // Create the Job
+ gncJobSetID(job, "000025");
+ gncJobSetName(job, "Test Job");
+ gncJobSetReference(job, "Customer's ref#");
+ gncJobSetOwner(job, owner);
+
+ // MODIFY THE OWNER
+ gncOwnerInitJob(owner, job);
+
+ // Create the A/R account
+ xaccAccountSetType(ar_acct, RECEIVABLE);
+ xaccAccountSetName(ar_acct, "A/R");
+ xaccAccountSetCommodity(ar_acct, gnc_default_currency());
+ xaccGroupInsertAccount(group, ar_acct);
+
+ // Create the Income account
+ xaccAccountSetType(inc_acct, INCOME);
+ xaccAccountSetName(inc_acct, "Income");
+ xaccAccountSetCommodity(inc_acct, gnc_default_currency());
+ xaccGroupInsertAccount(group, inc_acct);
+
+ // Create the Bank account
+ xaccAccountSetType(bank_acct, BANK);
+ xaccAccountSetName(bank_acct, "Bank");
+ xaccAccountSetCommodity(bank_acct, gnc_default_currency());
+ xaccGroupInsertAccount(group, bank_acct);
+
+ // Create the Tax account
+ xaccAccountSetType(tax_acct, LIABILITY);
+ xaccAccountSetName(tax_acct, "Tax-Holding");
+ xaccAccountSetCommodity(tax_acct, gnc_default_currency());
+ xaccGroupInsertAccount(group, tax_acct);
+
+ // Launch the invoice editor
+ gnc_ui_invoice_edit(invoice);
+}
+
Index: business-gnome.scm
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/business/business-gnome/business-gnome.scm,v
retrieving revision 1.47.4.4
retrieving revision 1.47.4.5
diff -Lsrc/business/business-gnome/business-gnome.scm -Lsrc/business/business-gnome/business-gnome.scm -u -r1.47.4.4 -r1.47.4.5
--- src/business/business-gnome/business-gnome.scm
+++ src/business/business-gnome/business-gnome.scm
@@ -36,135 +36,6 @@
(gnc:make-menu gnc:menuname-business-reports
(list "Main" gnc:menuname-reports))))
-
-
-(define (add-business-test)
-
- (define test-search
- (gnc:make-menu-item (N_ "Test Search Dialog")
- (N_ "Test Search Dialog")
- (list main-window "Extensions" "")
- (lambda ()
- (gnc:search-dialog-test))))
-
-
- (define reload-invoice
- (gnc:make-menu-item (N_ "Reload invoice report")
- (N_ "Reload invoice report scheme file")
- (list main-window "Extensions" "")
- (lambda ()
- (let ((m (current-module)))
- (load-from-path "gnucash/report/invoice.scm")
- (set-current-module m)))))
-
- (define reload-owner
- (gnc:make-menu-item (N_ "Reload owner report")
- (N_ "Reload owner report scheme file")
- (list main-window "Extensions" "")
- (lambda ()
- (let ((m (current-module)))
- (load-from-path "gnucash/report/owner-report.scm")
- (set-current-module m)))))
-
- (define reload-receivable
- (gnc:make-menu-item (N_ "Reload receivable report")
- (N_ "Reload receivable report scheme file")
- (list main-window "Extensions" "")
- (lambda ()
- (let ((m (current-module)))
- (load-from-path "gnucash/report/aging.scm")
- (set-current-module m)
- (load-from-path "gnucash/report/receivables.scm")
- (set-current-module m)))))
-
- (define init-data
- (gnc:make-menu-item (N_ "Initialize Test Data")
- (N_ "Initialize Test Data")
- (list main-window "Extensions" "")
- (lambda ()
- (let* ((book (gnc:get-current-book))
- (customer (gnc:customer-create book))
- (address (gnc:customer-get-addr customer))
- (invoice (gnc:invoice-create book))
- (owner (gnc:owner-create))
- (job (gnc:job-create book))
- (group (gnc:book-get-group book))
- (inc-acct (gnc:malloc-account book))
- (bank-acct (gnc:malloc-account book))
- (tax-acct (gnc:malloc-account book))
- (ar-acct (gnc:malloc-account book)))
-
- ;; Create Customer
- (gnc:customer-set-id customer "000001")
- (gnc:customer-set-name customer "Test Customer")
- (gnc:customer-set-currency customer
- (gnc:default-currency))
- (gnc:address-set-name address "Contact Person")
- (gnc:address-set-addr1 address
- "20 Customer Lane")
- (gnc:address-set-addr2 address "Customer M/S")
- (gnc:address-set-addr3 address "Addr3, XXX 12345")
-
- ;; Create the Owner
- (gnc:owner-init-customer owner customer)
-
- ;; Create the Invoice
- (gnc:invoice-set-id invoice "000012")
- (gnc:invoice-set-owner invoice owner)
- (gnc:invoice-set-date-opened
- invoice (cons (current-time) 0))
- (gnc:invoice-set-currency
- invoice (gnc:default-currency))
-
- ;; Create the Job
- (gnc:job-set-id job "000025")
- (gnc:job-set-name job "Test Job")
- (gnc:job-set-reference job "Customer's ref#")
- (gnc:job-set-owner job owner)
-
- ;; MODIFY THE OWNER
- (gnc:owner-init-job owner job)
-
- ;; Create the A/R account
- (gnc:account-set-type ar-acct 'receivable)
- (gnc:account-set-name ar-acct "A/R")
- (gnc:account-set-commodity ar-acct
- (gnc:default-currency))
- (gnc:group-insert-account group ar-acct)
-
- ;; Create the Income account
- (gnc:account-set-type inc-acct 'income)
- (gnc:account-set-name inc-acct "Income")
- (gnc:account-set-commodity inc-acct
- (gnc:default-currency))
- (gnc:group-insert-account group inc-acct)
-
- ;; Create the Bank account
- (gnc:account-set-type bank-acct 'bank)
- (gnc:account-set-name bank-acct "Bank")
- (gnc:account-set-commodity bank-acct
- (gnc:default-currency))
- (gnc:group-insert-account group bank-acct)
-
- ;; Create the Tax account
- (gnc:account-set-type tax-acct 'liability)
- (gnc:account-set-name tax-acct "Tax-Holding")
- (gnc:account-set-commodity tax-acct
- (gnc:default-currency))
- (gnc:group-insert-account group tax-acct)
-
- ;; Launch the invoice editor
- (gnc:invoice-edit invoice)
- ))))
-
-
- (gnc:add-extension init-data)
- (gnc:add-extension reload-receivable)
- (gnc:add-extension reload-invoice)
- (gnc:add-extension reload-owner)
- (gnc:add-extension test-search)
-)
-
(define (business-book-opened session)
(remind-bills-due session))
@@ -175,4 +46,3 @@
(gnc:hook-add-dangler gnc:*report-hook* business-report-function)
;(gnc:hook-add-dangler gnc:*ui-post-startup-hook* business-ui-started)
(gnc:hook-add-dangler gnc:*book-opened-hook* business-book-opened)
-(gnc:hook-add-dangler gnc:*add-extension-hook* add-business-test)
Index: gnc-plugin-business-ui.xml
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/business/business-gnome/ui/Attic/gnc-plugin-business-ui.xml,v
retrieving revision 1.1.2.3
retrieving revision 1.1.2.4
diff -Lsrc/business/business-gnome/ui/gnc-plugin-business-ui.xml -Lsrc/business/business-gnome/ui/gnc-plugin-business-ui.xml -u -r1.1.2.3 -r1.1.2.4
--- src/business/business-gnome/ui/gnc-plugin-business-ui.xml
+++ src/business/business-gnome/ui/gnc-plugin-business-ui.xml
@@ -42,5 +42,18 @@
</menu>
</menu>
</placeholder>
+
+ <menu name="Extensions" action="ExtensionsAction">
+ <placeholder name="ExtensionsPlaceholder">
+ <menu name="BusinessTest" action="BusinessTestAction">
+ <menuitem name="BusinessTestSearch" action="BusinessTestSearchAction"/>
+ <menuitem name="BusinessTestReloadInvoice" action="BusinessTestReloadInvoiceAction"/>
+ <menuitem name="BusinessTestReloadOwner" action="BusinessTestReloadOwnerAction"/>
+ <menuitem name="BusinessTestReloadReceivable" action="BusinessTestReloadReceivableAction"/>
+ <menuitem name="BusinessTestInitData" action="BusinessTestInitDataAction"/>
+ </menu>
+ </placeholder>
+ </menu>
+
</menubar>
</ui>
Index: main.scm
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/scm/main.scm,v
retrieving revision 1.109.2.14
retrieving revision 1.109.2.15
diff -Lsrc/scm/main.scm -Lsrc/scm/main.scm -u -r1.109.2.14 -r1.109.2.15
--- src/scm/main.scm
+++ src/scm/main.scm
@@ -55,6 +55,7 @@
(export gnc:find-localized-file)
(export gnc:main)
(export gnc:safe-strcmp) ;; only used by aging.scm atm...
+(export gnc:reload-module)
(re-export hash-fold)
(re-export string-split)
@@ -167,6 +168,11 @@
(b -1)
(else 0)))))
+(define (gnc:reload-module name)
+ (let ((m (current-module)))
+ (load-from-path name)
+ (set-current-module m)))
+
(if (not (defined? 'hash-fold))
(define (hash-fold proc init table)
(for-each
More information about the gnucash-changes
mailing list