[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