Additionally, make the "Duplicate Invoice" feature available as menu item and toolbar button when viewing an invoice.

git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@20116 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
Christian Stimming
2011-01-16 21:10:05 +00:00
parent 9675bc0ef4
commit c870169c3c
4 changed files with 37 additions and 3 deletions

View File

@@ -464,6 +464,16 @@ gnc_invoice_window_editCB (GtkWidget *widget, gpointer data)
gnc_ui_invoice_modify (invoice);
}
void
gnc_invoice_window_duplicateInvoiceCB (GtkWidget *widget, gpointer data)
{
InvoiceWindow *iw = data;
GncInvoice *invoice = iw_get_invoice (iw);
if (invoice)
gnc_ui_invoice_duplicate (invoice);
}
void
gnc_invoice_window_recordCB (GtkWidget *widget, gpointer data)
{

View File

@@ -101,6 +101,7 @@ void gnc_invoice_window_cut_cb (GtkWidget *widget, gpointer data);
void gnc_invoice_window_copy_cb (GtkWidget *widget, gpointer data);
void gnc_invoice_window_paste_cb (GtkWidget *widget, gpointer data);
void gnc_invoice_window_editCB (GtkWidget *widget, gpointer data);
void gnc_invoice_window_duplicateInvoiceCB (GtkWidget *widget, gpointer data);
void gnc_invoice_window_postCB (GtkWidget *widget, gpointer data);
void gnc_invoice_window_unpostCB (GtkWidget *widget, gpointer data);
void gnc_invoice_window_recordCB (GtkWidget *widget, gpointer data);

View File

@@ -67,6 +67,7 @@ static void gnc_plugin_page_invoice_cmd_cut (GtkAction *action, GncPluginPageInv
static void gnc_plugin_page_invoice_cmd_copy (GtkAction *action, GncPluginPageInvoice *plugin_page);
static void gnc_plugin_page_invoice_cmd_paste (GtkAction *action, GncPluginPageInvoice *plugin_page);
static void gnc_plugin_page_invoice_cmd_edit (GtkAction *action, GncPluginPageInvoice *plugin_page);
static void gnc_plugin_page_invoice_cmd_duplicateInvoice (GtkAction *action, GncPluginPageInvoice *plugin_page);
static void gnc_plugin_page_invoice_cmd_post (GtkAction *action, GncPluginPageInvoice *plugin_page);
static void gnc_plugin_page_invoice_cmd_unpost (GtkAction *action, GncPluginPageInvoice *plugin_page);
@@ -78,7 +79,7 @@ static void gnc_plugin_page_invoice_cmd_enter (GtkAction *action, GncPluginPageI
static void gnc_plugin_page_invoice_cmd_cancel (GtkAction *action, GncPluginPageInvoice *plugin_page);
static void gnc_plugin_page_invoice_cmd_delete (GtkAction *action, GncPluginPageInvoice *plugin_page);
static void gnc_plugin_page_invoice_cmd_blank (GtkAction *action, GncPluginPageInvoice *plugin_page);
static void gnc_plugin_page_invoice_cmd_duplicate (GtkAction *action, GncPluginPageInvoice *plugin_page);
static void gnc_plugin_page_invoice_cmd_duplicateEntry (GtkAction *action, GncPluginPageInvoice *plugin_page);
static void gnc_plugin_page_invoice_cmd_pay_invoice (GtkAction *action, GncPluginPageInvoice *plugin_page);
static void gnc_plugin_page_invoice_cmd_company_report (GtkAction *action, GncPluginPageInvoice *plugin_page);
@@ -133,6 +134,12 @@ static GtkActionEntry gnc_plugin_page_invoice_actions [] =
N_("Edit this invoice"),
G_CALLBACK (gnc_plugin_page_invoice_cmd_edit)
},
{
"EditDuplicateInvoiceAction", GTK_STOCK_COPY, N_("_Duplicate Invoice"),
"", /* empty accelerator string to avoid Ctrl+C here! */
N_("Create a new invoice as a duplicate of the current one"),
G_CALLBACK (gnc_plugin_page_invoice_cmd_duplicateInvoice)
},
{
"EditPostInvoiceAction", GNC_STOCK_INVOICE_POST, N_("_Post Invoice"), NULL,
N_("Post this Invoice to your Chart of Accounts"),
@@ -168,7 +175,7 @@ static GtkActionEntry gnc_plugin_page_invoice_actions [] =
{
"DuplicateEntryAction", GTK_STOCK_COPY, N_("Dup_licate Entry"), NULL,
N_("Make a copy of the current entry"),
G_CALLBACK (gnc_plugin_page_invoice_cmd_duplicate)
G_CALLBACK (gnc_plugin_page_invoice_cmd_duplicateEntry)
},
/* Business menu */
@@ -697,6 +704,20 @@ gnc_plugin_page_invoice_cmd_edit (GtkAction *action,
LEAVE(" ");
}
static void
gnc_plugin_page_invoice_cmd_duplicateInvoice (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_duplicateInvoiceCB(NULL, priv->iw);
LEAVE(" ");
}
static void
gnc_plugin_page_invoice_cmd_post (GtkAction *action,
GncPluginPageInvoice *plugin_page)
@@ -807,7 +828,7 @@ gnc_plugin_page_invoice_cmd_blank (GtkAction *action,
}
static void
gnc_plugin_page_invoice_cmd_duplicate (GtkAction *action,
gnc_plugin_page_invoice_cmd_duplicateEntry (GtkAction *action,
GncPluginPageInvoice *plugin_page)
{
GncPluginPageInvoicePrivate *priv;

View File

@@ -3,6 +3,7 @@
<menu name="Edit" action="EditAction">
<placeholder name="EditSelectedPlaceholder">
<menuitem name="EditEditInvoice" action="EditEditInvoiceAction"/>
<menuitem name="EditDuplicateInvoice" action="EditDuplicateInvoiceAction"/>
<menuitem name="EditPostInvoice" action="EditPostInvoiceAction"/>
<menuitem name="EditUnpostInvoice" action="EditUnpostInvoiceAction"/>
</placeholder>
@@ -51,6 +52,7 @@
<toolbar name="DefaultToolbar">
<placeholder name="DefaultToolbarPlaceholder">
<toolitem name="ToolbarEditInvoice" action="EditEditInvoiceAction"/>
<toolitem name="ToolbarDuplicateInvoice" action="EditDuplicateInvoiceAction"/>
<toolitem name="ToolbarRecordEntry" action="RecordEntryAction"/>
<toolitem name="ToolbarCancelEntry" action="CancelEntryAction"/>
<toolitem name="ToolbarDeleteEntry" action="DeleteEntryAction"/>