Rename all Transaction and Invoice Association identifiers to DocLink.

To better reflect the purpose and for consistency with other software
(e.g. Libre Office).
This commit is contained in:
John Ralls 2020-08-15 17:05:21 -07:00
parent 50bf59d62e
commit db626de68a
50 changed files with 780 additions and 701 deletions

View File

@ -30,7 +30,7 @@ set (gnome_utils_SOURCES
assistant-xml-encoding.c assistant-xml-encoding.c
cursors.c cursors.c
dialog-account.c dialog-account.c
dialog-assoc-utils.c dialog-doclink-utils.c
dialog-book-close.c dialog-book-close.c
dialog-commodity.c dialog-commodity.c
dialog-dup-trans.c dialog-dup-trans.c
@ -124,7 +124,7 @@ set (gnome_utils_HEADERS
account-quickfill.h account-quickfill.h
assistant-xml-encoding.h assistant-xml-encoding.h
dialog-account.h dialog-account.h
dialog-assoc-utils.h dialog-doclink-utils.h
dialog-book-close.h dialog-book-close.h
dialog-commodity.h dialog-commodity.h
dialog-dup-trans.h dialog-dup-trans.h

View File

@ -1,5 +1,5 @@
/********************************************************************\ /********************************************************************\
* dialog-assoc-utils.c -- Associations dialog Utils * * dialog-doclink-utils.c -- Document link dialog Utils *
* Copyright (C) 2020 Robert Fewell * * Copyright (C) 2020 Robert Fewell *
* * * *
* This program is free software; you can redistribute it and/or * * This program is free software; you can redistribute it and/or *
@ -25,7 +25,7 @@
#include <gtk/gtk.h> #include <gtk/gtk.h>
#include <glib/gi18n.h> #include <glib/gi18n.h>
#include "dialog-assoc-utils.h" #include "dialog-doclink-utils.h"
#include "dialog-utils.h" #include "dialog-utils.h"
#include "Transaction.h" #include "Transaction.h"
@ -75,7 +75,7 @@ convert_uri_to_abs_path (const gchar *path_head, const gchar *uri,
} }
gchar * gchar *
gnc_assoc_get_unescape_uri (const gchar *path_head, const gchar *uri, gchar *uri_scheme) gnc_doclink_get_unescape_uri (const gchar *path_head, const gchar *uri, gchar *uri_scheme)
{ {
gchar *display_str = NULL; gchar *display_str = NULL;
@ -100,7 +100,7 @@ gnc_assoc_get_unescape_uri (const gchar *path_head, const gchar *uri, gchar *uri
} }
gchar * gchar *
gnc_assoc_get_use_uri (const gchar *path_head, const gchar *uri, gchar *uri_scheme) gnc_doclink_get_use_uri (const gchar *path_head, const gchar *uri, gchar *uri_scheme)
{ {
gchar *use_str = NULL; gchar *use_str = NULL;
@ -121,11 +121,11 @@ gnc_assoc_get_use_uri (const gchar *path_head, const gchar *uri, gchar *uri_sche
} }
gchar * gchar *
gnc_assoc_get_unescaped_just_uri (const gchar *uri) gnc_doclink_get_unescaped_just_uri (const gchar *uri)
{ {
gchar *path_head = gnc_assoc_get_path_head (); gchar *path_head = gnc_doclink_get_path_head ();
gchar *uri_scheme = gnc_uri_get_scheme (uri); gchar *uri_scheme = gnc_uri_get_scheme (uri);
gchar *ret_uri = gnc_assoc_get_unescape_uri (path_head, uri, uri_scheme); gchar *ret_uri = gnc_doclink_get_unescape_uri (path_head, uri, uri_scheme);
g_free (path_head); g_free (path_head);
g_free (uri_scheme); g_free (uri_scheme);
@ -133,9 +133,9 @@ gnc_assoc_get_unescaped_just_uri (const gchar *uri)
} }
gchar * gchar *
gnc_assoc_convert_trans_associate_uri (gpointer trans, gboolean book_ro) gnc_doclink_convert_trans_link_uri (gpointer trans, gboolean book_ro)
{ {
const gchar *uri = xaccTransGetAssociation (trans); // get the existing uri const gchar *uri = xaccTransGetDocLink (trans); // get the existing uri
const gchar *part = NULL; const gchar *part = NULL;
if (!uri) if (!uri)
@ -153,7 +153,7 @@ gnc_assoc_convert_trans_associate_uri (gpointer trans, gboolean book_ro)
part = uri + strlen ("file:"); part = uri + strlen ("file:");
if (!xaccTransGetReadOnly (trans) && !book_ro) if (!xaccTransGetReadOnly (trans) && !book_ro)
xaccTransSetAssociation (trans, part); xaccTransSetDocLink (trans, part);
return g_strdup (part); return g_strdup (part);
} }
@ -163,10 +163,10 @@ gnc_assoc_convert_trans_associate_uri (gpointer trans, gboolean book_ro)
/* =================================================================== */ /* =================================================================== */
static gchar * static gchar *
assoc_get_path_head_and_set (gboolean *path_head_set) doclink_get_path_head_and_set (gboolean *path_head_set)
{ {
gchar *ret_path = NULL; gchar *ret_path = NULL;
gchar *path_head = gnc_prefs_get_string (GNC_PREFS_GROUP_GENERAL, "assoc-head"); gchar *path_head = gnc_prefs_get_string (GNC_PREFS_GROUP_GENERAL, "doclink-head");
*path_head_set = FALSE; *path_head_set = FALSE;
if (path_head && *path_head) // not default entry if (path_head && *path_head) // not default entry
@ -191,11 +191,11 @@ assoc_get_path_head_and_set (gboolean *path_head_set)
ret_path = g_strdup (folder_with_slash); ret_path = g_strdup (folder_with_slash);
g_free (folder_with_slash); g_free (folder_with_slash);
if (*path_head_set) // prior to 3.5, assoc-head could be with or without a trailing '/' if (*path_head_set) // prior to 3.5, doclink-head could be with or without a trailing '/'
{ {
if (!gnc_prefs_set_string (GNC_PREFS_GROUP_GENERAL, "assoc-head", ret_path)) if (!gnc_prefs_set_string (GNC_PREFS_GROUP_GENERAL, "doclink-head", ret_path))
PINFO ("Failed to save preference at %s, %s with %s", PINFO ("Failed to save preference at %s, %s with %s",
GNC_PREFS_GROUP_GENERAL, "assoc-head", ret_path); GNC_PREFS_GROUP_GENERAL, "doclink-head", ret_path);
} }
} }
g_free (path_head); g_free (path_head);
@ -203,15 +203,15 @@ assoc_get_path_head_and_set (gboolean *path_head_set)
} }
gchar * gchar *
gnc_assoc_get_path_head (void) gnc_doclink_get_path_head (void)
{ {
gboolean path_head_set = FALSE; gboolean path_head_set = FALSE;
return assoc_get_path_head_and_set (&path_head_set); return doclink_get_path_head_and_set (&path_head_set);
} }
void void
gnc_assoc_set_path_head_label (GtkWidget *path_head_label, const gchar *incoming_path_head, const gchar *prefix) gnc_doclink_set_path_head_label (GtkWidget *path_head_label, const gchar *incoming_path_head, const gchar *prefix)
{ {
gboolean path_head_set = FALSE; gboolean path_head_set = FALSE;
gchar *path_head = NULL; gchar *path_head = NULL;
@ -225,10 +225,10 @@ gnc_assoc_set_path_head_label (GtkWidget *path_head_label, const gchar *incoming
path_head_set = TRUE; path_head_set = TRUE;
} }
else else
path_head = assoc_get_path_head_and_set (&path_head_set); path_head = doclink_get_path_head_and_set (&path_head_set);
scheme = gnc_uri_get_scheme (path_head); scheme = gnc_uri_get_scheme (path_head);
path_head_str = gnc_assoc_get_unescape_uri (NULL, path_head, scheme); path_head_str = gnc_doclink_get_unescape_uri (NULL, path_head, scheme);
if (path_head_set) if (path_head_set)
{ {
@ -271,14 +271,14 @@ typedef struct
const gchar *new_path_head_uri; const gchar *new_path_head_uri;
gboolean change_new; gboolean change_new;
gboolean book_ro; gboolean book_ro;
}AssocUpdate; }DoclinkUpdate;
static void static void
update_invoice_uri (QofInstance* data, gpointer user_data) update_invoice_uri (QofInstance* data, gpointer user_data)
{ {
AssocUpdate *assoc_update = user_data; DoclinkUpdate *doclink_update = user_data;
GncInvoice *invoice = GNC_INVOICE(data); GncInvoice *invoice = GNC_INVOICE(data);
const gchar* uri = gncInvoiceGetAssociation (invoice); const gchar* uri = gncInvoiceGetDocLink (invoice);
if (uri && *uri) if (uri && *uri)
{ {
@ -289,22 +289,22 @@ update_invoice_uri (QofInstance* data, gpointer user_data)
rel = TRUE; rel = TRUE;
// check for relative and we want to change them // check for relative and we want to change them
if (rel && assoc_update->change_old) if (rel && doclink_update->change_old)
{ {
gchar *new_uri = gnc_assoc_get_use_uri (assoc_update->old_path_head_uri, uri, scheme); gchar *new_uri = gnc_doclink_get_use_uri (doclink_update->old_path_head_uri, uri, scheme);
gncInvoiceSetAssociation (invoice, new_uri); gncInvoiceSetDocLink (invoice, new_uri);
g_free (new_uri); g_free (new_uri);
} }
g_free (scheme); g_free (scheme);
// check for not relative and we want to change them // check for not relative and we want to change them
if (!rel && assoc_update->change_new && g_str_has_prefix (uri, assoc_update->new_path_head_uri)) if (!rel && doclink_update->change_new && g_str_has_prefix (uri, doclink_update->new_path_head_uri))
{ {
// relative paths do not start with a '/' // relative paths do not start with a '/'
const gchar *part = uri + strlen (assoc_update->new_path_head_uri); const gchar *part = uri + strlen (doclink_update->new_path_head_uri);
gchar *new_uri = g_strdup (part); gchar *new_uri = g_strdup (part);
gncInvoiceSetAssociation (invoice, new_uri); gncInvoiceSetDocLink (invoice, new_uri);
g_free (new_uri); g_free (new_uri);
} }
} }
@ -313,12 +313,12 @@ update_invoice_uri (QofInstance* data, gpointer user_data)
static void static void
update_trans_uri (QofInstance* data, gpointer user_data) update_trans_uri (QofInstance* data, gpointer user_data)
{ {
AssocUpdate *assoc_update = user_data; DoclinkUpdate *doclink_update = user_data;
Transaction *trans = GNC_TRANSACTION(data); Transaction *trans = GNC_TRANSACTION(data);
gchar *uri; gchar *uri;
// fix an earlier error when storing relative paths before version 3.5 // fix an earlier error when storing relative paths before version 3.5
uri = gnc_assoc_convert_trans_associate_uri (trans, assoc_update->book_ro); uri = gnc_doclink_convert_trans_link_uri (trans, doclink_update->book_ro);
if (uri && *uri) if (uri && *uri)
{ {
@ -329,26 +329,26 @@ update_trans_uri (QofInstance* data, gpointer user_data)
rel = TRUE; rel = TRUE;
// check for relative and we want to change them // check for relative and we want to change them
if (rel && assoc_update->change_old) if (rel && doclink_update->change_old)
{ {
gchar *new_uri = gnc_assoc_get_use_uri (assoc_update->old_path_head_uri, uri, scheme); gchar *new_uri = gnc_doclink_get_use_uri (doclink_update->old_path_head_uri, uri, scheme);
if (!xaccTransGetReadOnly (trans)) if (!xaccTransGetReadOnly (trans))
xaccTransSetAssociation (trans, new_uri); xaccTransSetDocLink (trans, new_uri);
g_free (new_uri); g_free (new_uri);
} }
g_free (scheme); g_free (scheme);
// check for not relative and we want to change them // check for not relative and we want to change them
if (!rel && assoc_update->change_new && g_str_has_prefix (uri, assoc_update->new_path_head_uri)) if (!rel && doclink_update->change_new && g_str_has_prefix (uri, doclink_update->new_path_head_uri))
{ {
// relative paths do not start with a '/' // relative paths do not start with a '/'
const gchar *part = uri + strlen (assoc_update->new_path_head_uri); const gchar *part = uri + strlen (doclink_update->new_path_head_uri);
gchar *new_uri = g_strdup (part); gchar *new_uri = g_strdup (part);
if (!xaccTransGetReadOnly (trans)) if (!xaccTransGetReadOnly (trans))
xaccTransSetAssociation (trans, new_uri); xaccTransSetDocLink (trans, new_uri);
g_free (new_uri); g_free (new_uri);
} }
@ -362,33 +362,33 @@ change_relative_and_absolute_uri_paths (const gchar *old_path_head_uri, gboolean
{ {
QofBook *book = gnc_get_current_book(); QofBook *book = gnc_get_current_book();
gboolean book_ro = qof_book_is_readonly (book); gboolean book_ro = qof_book_is_readonly (book);
AssocUpdate *assoc_update; DoclinkUpdate *doclink_update;
/* if book is read only, nothing to do */ /* if book is read only, nothing to do */
if (book_ro) if (book_ro)
return; return;
assoc_update = g_new0 (AssocUpdate, 1); doclink_update = g_new0 (DoclinkUpdate, 1);
assoc_update->old_path_head_uri = old_path_head_uri; doclink_update->old_path_head_uri = old_path_head_uri;
assoc_update->new_path_head_uri = new_path_head_uri; doclink_update->new_path_head_uri = new_path_head_uri;
assoc_update->change_old = change_old; doclink_update->change_old = change_old;
assoc_update->change_new = change_new; doclink_update->change_new = change_new;
assoc_update->book_ro = book_ro; doclink_update->book_ro = book_ro;
/* Loop through the transactions */ /* Loop through the transactions */
qof_collection_foreach (qof_book_get_collection (book, GNC_ID_TRANS), qof_collection_foreach (qof_book_get_collection (book, GNC_ID_TRANS),
update_trans_uri, assoc_update); update_trans_uri, doclink_update);
/* Loop through the invoices */ /* Loop through the invoices */
qof_collection_foreach (qof_book_get_collection (book, GNC_ID_INVOICE), qof_collection_foreach (qof_book_get_collection (book, GNC_ID_INVOICE),
update_invoice_uri, assoc_update); update_invoice_uri, doclink_update);
g_free (assoc_update); g_free (doclink_update);
} }
void void
gnc_assoc_pref_path_head_changed (GtkWindow *parent, const gchar *old_path_head_uri) gnc_doclink_pref_path_head_changed (GtkWindow *parent, const gchar *old_path_head_uri)
{ {
GtkWidget *dialog; GtkWidget *dialog;
GtkBuilder *builder; GtkBuilder *builder;
@ -396,7 +396,7 @@ gnc_assoc_pref_path_head_changed (GtkWindow *parent, const gchar *old_path_head_
GtkWidget *old_head_label, *new_head_label; GtkWidget *old_head_label, *new_head_label;
GtkWidget *old_hbox, *new_hbox; GtkWidget *old_hbox, *new_hbox;
gint result; gint result;
gchar *new_path_head_uri = gnc_assoc_get_path_head (); gchar *new_path_head_uri = gnc_doclink_get_path_head ();
if (g_strcmp0 (old_path_head_uri, new_path_head_uri) == 0) if (g_strcmp0 (old_path_head_uri, new_path_head_uri) == 0)
{ {
@ -406,15 +406,15 @@ gnc_assoc_pref_path_head_changed (GtkWindow *parent, const gchar *old_path_head_
/* Create the dialog box */ /* Create the dialog box */
builder = gtk_builder_new(); builder = gtk_builder_new();
gnc_builder_add_from_file (builder, "dialog-assoc.glade", "association_path_head_changed_dialog"); gnc_builder_add_from_file (builder, "dialog-doclink.glade", "link_path_head_changed_dialog");
dialog = GTK_WIDGET(gtk_builder_get_object (builder, "association_path_head_changed_dialog")); dialog = GTK_WIDGET(gtk_builder_get_object (builder, "link_path_head_changed_dialog"));
if (parent != NULL) if (parent != NULL)
gtk_window_set_transient_for (GTK_WINDOW(dialog), GTK_WINDOW(parent)); gtk_window_set_transient_for (GTK_WINDOW(dialog), GTK_WINDOW(parent));
// Set the name and style context for this widget so it can be easily manipulated with css // Set the name and style context for this widget so it can be easily manipulated with css
gtk_widget_set_name (GTK_WIDGET(dialog), "gnc-id-association-change"); gtk_widget_set_name (GTK_WIDGET(dialog), "gnc-id-doclink-change");
gnc_widget_style_context_add_class (GTK_WIDGET(dialog), "gnc-class-association"); gnc_widget_style_context_add_class (GTK_WIDGET(dialog), "gnc-class-doclink");
old_head_label = GTK_WIDGET(gtk_builder_get_object (builder, "existing_path_head")); old_head_label = GTK_WIDGET(gtk_builder_get_object (builder, "existing_path_head"));
new_head_label = GTK_WIDGET(gtk_builder_get_object (builder, "new_path_head")); new_head_label = GTK_WIDGET(gtk_builder_get_object (builder, "new_path_head"));
@ -423,8 +423,8 @@ gnc_assoc_pref_path_head_changed (GtkWindow *parent, const gchar *old_path_head_
use_new_path_head = GTK_WIDGET(gtk_builder_get_object (builder, "use_new_path_head")); use_new_path_head = GTK_WIDGET(gtk_builder_get_object (builder, "use_new_path_head"));
// display path head text and test if present // display path head text and test if present
gnc_assoc_set_path_head_label (old_head_label, old_path_head_uri, _("Existing")); gnc_doclink_set_path_head_label (old_head_label, old_path_head_uri, _("Existing"));
gnc_assoc_set_path_head_label (new_head_label, new_path_head_uri, _("New")); gnc_doclink_set_path_head_label (new_head_label, new_path_head_uri, _("New"));
gtk_widget_show (dialog); gtk_widget_show (dialog);
g_object_unref (G_OBJECT(builder)); g_object_unref (G_OBJECT(builder));

View File

@ -1,5 +1,5 @@
/********************************************************************\ /********************************************************************\
* dialog-assoc-utils.h -- Associations dialog Utils * * dialog-doclink-utils.h -- Document link dialog Utils *
* Copyright (C) 2020 Robert Fewell * * Copyright (C) 2020 Robert Fewell *
* * * *
* This program is free software; you can redistribute it and/or * * This program is free software; you can redistribute it and/or *
@ -20,21 +20,21 @@
* Boston, MA 02110-1301, USA gnu@gnu.org * * Boston, MA 02110-1301, USA gnu@gnu.org *
\********************************************************************/ \********************************************************************/
#ifndef DIALOG_ASSOC_UTILS_H #ifndef DIALOG_DOCLINK_UTILS_H
#define DIALOG_ASSOC_UTILS_H #define DIALOG_DOCLINK_UTILS_H
/** Return the current associate path head uri. /** Return the current documentation-link file path head uri.
* *
* This function will get the current associate path head from pref's. * This function will get the current documentation-link path head from prefs.
* If it is not set then a default path head is set based on either * If it is not set then a default path head is set based on either
* the home directory or the user data directory. * the home directory or the user data directory.
* *
* The calling function should free the returned value with g_free when * The calling function should free the returned value with g_free when
* the it is no longer needed. * the it is no longer needed.
* *
* @return The current associate path head. * @return The current documentation-link file path head.
*/ */
gchar * gnc_assoc_get_path_head (void); gchar * gnc_doclink_get_path_head (void);
/** Sets the label text for displaying the path head in a dialog. /** Sets the label text for displaying the path head in a dialog.
* *
@ -42,7 +42,7 @@ gchar * gnc_assoc_get_path_head (void);
* @param incoming_path_head The starting common path head * @param incoming_path_head The starting common path head
* @param prefix A text string to place infront of the path head text * @param prefix A text string to place infront of the path head text
*/ */
void gnc_assoc_set_path_head_label (GtkWidget *path_head_label, void gnc_doclink_set_path_head_label (GtkWidget *path_head_label,
const gchar *incoming_path_head, const gchar *incoming_path_head,
const gchar *prefix); const gchar *prefix);
@ -55,23 +55,23 @@ void gnc_assoc_set_path_head_label (GtkWidget *path_head_label,
* otherwise the uri is returned. * otherwise the uri is returned.
* *
* @param path_head The starting common path head * @param path_head The starting common path head
* @param uri The association * @param uri The document link URI
* @param uri_scheme * @param uri_scheme http:, https:, or file:
* *
* @return The uri used for opening the association. * @return The uri used for opening the link.
*/ */
gchar * gnc_assoc_get_use_uri (const gchar *path_head, const gchar *uri, gchar *uri_scheme); gchar * gnc_doclink_get_use_uri (const gchar *path_head, const gchar *uri, gchar *uri_scheme);
/** Corrects an earlier relative file association forrmat. /** Corrects an earlier relative file documentation link uri forrmat.
* *
* Prior to version 3.5, relative paths were stored starting as 'file:' * Prior to version 3.5, relative paths were stored starting as 'file:'
* or 'file:/' depending on OS. This function changes them so that * or 'file:/' depending on OS. This function changes them so that
* relative paths are stored without a leading "/" and in native form. * relative paths are stored without a leading "/" and in native form.
* *
* @param trans The Transaction holding the association * @param trans The Transaction holding the document link
* @param book_ro TRUE if the book is read only * @param book_ro TRUE if the book is read only
*/ */
gchar * gnc_assoc_convert_trans_associate_uri (gpointer trans, gboolean book_ro); gchar * gnc_doclink_convert_trans_link_uri (gpointer trans, gboolean book_ro);
/** Return an unescaped uri for display use. /** Return an unescaped uri for display use.
* *
@ -82,12 +82,12 @@ gchar * gnc_assoc_convert_trans_associate_uri (gpointer trans, gboolean book_ro)
* '/' to '\' to look like a traditional windows path * '/' to '\' to look like a traditional windows path
* *
* @param path_head The starting common path head * @param path_head The starting common path head
* @param uri The association * @param uri The document link
* @param uri_scheme * @param uri_scheme
* *
* @return The unescaped uri used for display purposes. * @return The unescaped uri used for display purposes.
*/ */
gchar * gnc_assoc_get_unescape_uri (const gchar *path_head, const gchar *uri, gchar *uri_scheme); gchar * gnc_doclink_get_unescape_uri (const gchar *path_head, const gchar *uri, gchar *uri_scheme);
/** Return an unescaped uri for display use just based on the uri. /** Return an unescaped uri for display use just based on the uri.
* *
@ -97,22 +97,22 @@ gchar * gnc_assoc_get_unescape_uri (const gchar *path_head, const gchar *uri, gc
* Return an unesacped uri for displaying and if OS is windows change the * Return an unesacped uri for displaying and if OS is windows change the
* '/' to '\' to look like a traditional windows path * '/' to '\' to look like a traditional windows path
* *
* @param uri The association * @param uri The document link
* *
* @return The unescaped uri used for display purposes. * @return The unescaped uri used for display purposes.
*/ */
gchar * gnc_assoc_get_unescaped_just_uri (const gchar *uri); gchar * gnc_doclink_get_unescaped_just_uri (const gchar *uri);
/** Presents a dialog when the path head is changed. /** Presents a dialog when the path head is changed.
* *
* When the path head is changed a dialog is raised that allows for * When the path head is changed a dialog is raised that allows for
* existing relative file associations to be made absolute based on the * existing relative file document links to be made absolute based on the
* old_path_head_uri and existing absolute file associations to be made * old_path_head_uri and existing absolute file document links to be made
* relative based on the new_path_head_uri. * relative based on the new_path_head_uri.
* *
* @param parent The GtkWindow for the parent widget * @param parent The GtkWindow for the parent widget
* @param old_path_head_uri The old path head uri * @param old_path_head_uri The old path head uri
*/ */
void gnc_assoc_pref_path_head_changed (GtkWindow *parent, const gchar *old_path_head_uri); void gnc_doclink_pref_path_head_changed (GtkWindow *parent, const gchar *old_path_head_uri);
#endif #endif

View File

@ -45,14 +45,14 @@ typedef struct
GtkWidget * date_edit; GtkWidget * date_edit;
GtkWidget * num_edit; GtkWidget * num_edit;
GtkWidget * tnum_edit; GtkWidget * tnum_edit;
GtkWidget * assoc_edit; GtkWidget * link_edit;
GtkWidget *duplicate_title_label; // GtkLabel GtkWidget *duplicate_title_label; // GtkLabel
GtkWidget *duplicate_table; // GtkTable GtkWidget *duplicate_table; // GtkTable
GtkWidget *date_label; // GtkLabel GtkWidget *date_label; // GtkLabel
GtkWidget *num_label; // GtkLabel GtkWidget *num_label; // GtkLabel
GtkWidget *tnum_label; // GtkLabel GtkWidget *tnum_label; // GtkLabel
GtkWidget *assoc_label; //GtkLabel GtkWidget *link_label; //GtkLabel
} DupTransDialog; } DupTransDialog;
/* Parses the string value and returns true if it is a /* Parses the string value and returns true if it is a
@ -172,10 +172,10 @@ gnc_dup_trans_dialog_create (GtkWidget * parent, DupTransDialog *dt_dialog,
else else
gtk_entry_set_text (GTK_ENTRY (tnum_spin), ""); gtk_entry_set_text (GTK_ENTRY (tnum_spin), "");
} }
/* Transaction Association */ /* Transaction Linked Document */
{ {
dt_dialog->assoc_label = GTK_WIDGET(gtk_builder_get_object (builder, "assoc_label")); dt_dialog->link_label = GTK_WIDGET(gtk_builder_get_object (builder, "link_label"));
dt_dialog->assoc_edit = GTK_WIDGET(gtk_builder_get_object (builder, "assoc_check_button")); dt_dialog->link_edit = GTK_WIDGET(gtk_builder_get_object (builder, "link_check_button"));
} }
gtk_builder_connect_signals_full (builder, gnc_builder_connect_full_func, dt_dialog); gtk_builder_connect_signals_full (builder, gnc_builder_connect_full_func, dt_dialog);
@ -189,7 +189,7 @@ gnc_dup_trans_dialog_internal (GtkWidget * parent,
gboolean show_date, time64 *date_p, gboolean show_date, time64 *date_p,
GDate *gdate_p, const char *num, char **out_num, GDate *gdate_p, const char *num, char **out_num,
const char *tnum, char **out_tnum, const char *tnum, char **out_tnum,
const char *tassoc, char **out_tassoc) const char *tlink, char **out_tlink)
{ {
DupTransDialog *dt_dialog; DupTransDialog *dt_dialog;
GtkWidget *entry; GtkWidget *entry;
@ -256,15 +256,15 @@ gnc_dup_trans_dialog_internal (GtkWidget * parent,
gtk_entry_set_activates_default(GTK_ENTRY(dt_dialog->tnum_edit), TRUE); gtk_entry_set_activates_default(GTK_ENTRY(dt_dialog->tnum_edit), TRUE);
} }
if (tassoc) if (tlink)
{ {
gtk_widget_set_visible(dt_dialog->assoc_label, TRUE); gtk_widget_set_visible(dt_dialog->link_label, TRUE);
gtk_widget_set_visible(dt_dialog->assoc_edit, TRUE); gtk_widget_set_visible(dt_dialog->link_edit, TRUE);
} }
else else
{ {
gtk_widget_set_visible(dt_dialog->assoc_label, FALSE); gtk_widget_set_visible(dt_dialog->link_label, FALSE);
gtk_widget_set_visible(dt_dialog->assoc_edit, FALSE); gtk_widget_set_visible(dt_dialog->link_edit, FALSE);
} }
result = gtk_dialog_run (GTK_DIALOG (dt_dialog->dialog)); result = gtk_dialog_run (GTK_DIALOG (dt_dialog->dialog));
@ -279,10 +279,10 @@ gnc_dup_trans_dialog_internal (GtkWidget * parent,
*out_num = g_strdup (gtk_entry_get_text (GTK_ENTRY (dt_dialog->num_edit))); *out_num = g_strdup (gtk_entry_get_text (GTK_ENTRY (dt_dialog->num_edit)));
if (tnum) if (tnum)
*out_tnum = g_strdup (gtk_entry_get_text (GTK_ENTRY (dt_dialog->tnum_edit))); *out_tnum = g_strdup (gtk_entry_get_text (GTK_ENTRY (dt_dialog->tnum_edit)));
if (tassoc) if (tlink)
{ {
if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(dt_dialog->assoc_edit))) if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(dt_dialog->link_edit)))
*out_tassoc = g_strdup (tassoc); *out_tlink = g_strdup (tlink);
} }
ok = TRUE; ok = TRUE;
} }
@ -299,10 +299,10 @@ gboolean
gnc_dup_trans_dialog (GtkWidget * parent, const char* title, gboolean show_date, gnc_dup_trans_dialog (GtkWidget * parent, const char* title, gboolean show_date,
time64 *date_p, const char *num, char **out_num, time64 *date_p, const char *num, char **out_num,
const char *tnum, char **out_tnum, const char *tnum, char **out_tnum,
const char *tassoc, char **out_tassoc) const char *tlink, char **out_tlink)
{ {
return gnc_dup_trans_dialog_internal(parent, NULL, title, show_date, date_p, NULL, return gnc_dup_trans_dialog_internal(parent, NULL, title, show_date, date_p, NULL,
num, out_num, tnum, out_tnum, tassoc, out_tassoc); num, out_num, tnum, out_tnum, tlink, out_tlink);
} }
gboolean gboolean

View File

@ -77,7 +77,7 @@
#include "gnc-ui-util.h" #include "gnc-ui-util.h"
#include "gnc-component-manager.h" #include "gnc-component-manager.h"
#include "dialog-preferences.h" #include "dialog-preferences.h"
#include "dialog-assoc-utils.h" #include "dialog-doclink-utils.h"
#define DIALOG_PREFERENCES_CM_CLASS "dialog-newpreferences" #define DIALOG_PREFERENCES_CM_CLASS "dialog-newpreferences"
#define GNC_PREFS_GROUP "dialogs.preferences" #define GNC_PREFS_GROUP "dialogs.preferences"
@ -752,7 +752,7 @@ file_chooser_selected_cb (GtkFileChooser *fc, gpointer user_data)
const gchar *group = g_object_get_data (G_OBJECT(fc), "group"); const gchar *group = g_object_get_data (G_OBJECT(fc), "group");
const gchar *pref = g_object_get_data (G_OBJECT(fc), "pref"); const gchar *pref = g_object_get_data (G_OBJECT(fc), "pref");
gchar *folder_uri = gtk_file_chooser_get_uri (fc); gchar *folder_uri = gtk_file_chooser_get_uri (fc);
gchar *old_path_head_uri = gnc_assoc_get_path_head (); gchar *old_path_head_uri = gnc_doclink_get_path_head ();
// make sure path_head ends with a trailing '/', 3.5 onwards // make sure path_head ends with a trailing '/', 3.5 onwards
if (!g_str_has_suffix (folder_uri, "/")) if (!g_str_has_suffix (folder_uri, "/"))
@ -768,8 +768,9 @@ file_chooser_selected_cb (GtkFileChooser *fc, gpointer user_data)
if (!gnc_prefs_set_string (group, pref, folder_uri)) if (!gnc_prefs_set_string (group, pref, folder_uri))
PINFO("Failed to save preference at %s, %s with %s", group, pref, folder_uri); PINFO("Failed to save preference at %s, %s with %s", group, pref, folder_uri);
else else
gnc_assoc_pref_path_head_changed (GTK_WINDOW(gtk_widget_get_toplevel ( gnc_doclink_pref_path_head_changed (
GTK_WIDGET(fc))), old_path_head_uri); GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (fc))),
old_path_head_uri);
g_free (old_path_head_uri); g_free (old_path_head_uri);
g_free (folder_uri); g_free (folder_uri);
@ -821,7 +822,7 @@ gnc_prefs_connect_file_chooser_button (GtkFileChooserButton *fcb, const gchar *b
gtk_widget_hide (GTK_WIDGET(image)); gtk_widget_hide (GTK_WIDGET(image));
else else
{ {
gchar *path_head = gnc_assoc_get_unescape_uri (NULL, uri, "file"); gchar *path_head = gnc_doclink_get_unescape_uri (NULL, uri, "file");
gchar *ttip = g_strconcat (_("Path does not exist, "), path_head, NULL); gchar *ttip = g_strconcat (_("Path does not exist, "), path_head, NULL);
gtk_widget_set_tooltip_text (GTK_WIDGET(image), ttip); gtk_widget_set_tooltip_text (GTK_WIDGET(image), ttip);
@ -862,7 +863,7 @@ file_chooser_clear_cb (GtkButton *button, gpointer user_data)
GtkWidget *box; GtkWidget *box;
GtkWidget *fcb_new; GtkWidget *fcb_new;
gchar *boxname; gchar *boxname;
gchar *old_path_head_uri = gnc_assoc_get_path_head (); gchar *old_path_head_uri = gnc_doclink_get_path_head ();
/* We need to destroy the GtkFileChooserButton and recreate as there /* We need to destroy the GtkFileChooserButton and recreate as there
does not seem to be away of resetting the folder path to NONE */ does not seem to be away of resetting the folder path to NONE */
@ -872,8 +873,9 @@ file_chooser_clear_cb (GtkButton *button, gpointer user_data)
if (!gnc_prefs_set_string (group, pref, "")) if (!gnc_prefs_set_string (group, pref, ""))
PINFO("Failed to Clear preference at %s, %s", group, pref); PINFO("Failed to Clear preference at %s, %s", group, pref);
else else
gnc_assoc_pref_path_head_changed (GTK_WINDOW(gtk_widget_get_toplevel ( gnc_doclink_pref_path_head_changed (
GTK_WIDGET(fcb))), old_path_head_uri); GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (fcb))),
old_path_head_uri);
gtk_widget_destroy (GTK_WIDGET(fcb)); gtk_widget_destroy (GTK_WIDGET(fcb));

View File

@ -40,7 +40,7 @@
#include "gnc-splash.h" #include "gnc-splash.h"
#include "gnc-window.h" #include "gnc-window.h"
#include "gnc-icons.h" #include "gnc-icons.h"
#include "dialog-assoc-utils.h" #include "dialog-doclink-utils.h"
#include "dialog-options.h" #include "dialog-options.h"
#include "dialog-commodity.h" #include "dialog-commodity.h"
#include "dialog-totd.h" #include "dialog-totd.h"
@ -437,13 +437,13 @@ gnc_gnome_help (const char *file_name, const char *anchor)
* toolkit. * toolkit.
*/ */
void void
gnc_launch_assoc (GtkWindow *parent, const char *uri) gnc_launch_doclink (GtkWindow *parent, const char *uri)
{ {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSString *uri_str = [NSString stringWithUTF8String: uri]; NSString *uri_str = [NSString stringWithUTF8String: uri];
NSURL *url = [[[NSURL alloc] initWithString: uri_str] autorelease]; NSURL *url = [[[NSURL alloc] initWithString: uri_str] autorelease];
const gchar *message = const gchar *message =
_("GnuCash could not find the associated file."); _("GnuCash could not find the linked document.");
if (url) if (url)
{ {
@ -459,7 +459,7 @@ gnc_launch_assoc (GtkWindow *parent, const char *uri)
} }
#elif defined G_OS_WIN32 /* G_OS_WIN32 */ #elif defined G_OS_WIN32 /* G_OS_WIN32 */
void void
gnc_launch_assoc (GtkWindow *parent, const char *uri) gnc_launch_doclink (GtkWindow *parent, const char *uri)
{ {
wchar_t *winuri = NULL; wchar_t *winuri = NULL;
gchar *filename = NULL; gchar *filename = NULL;
@ -468,7 +468,7 @@ gnc_launch_assoc (GtkWindow *parent, const char *uri)
if (gnc_uri_is_file_uri (uri)) if (gnc_uri_is_file_uri (uri))
{ {
gchar *uri_scheme = gnc_uri_get_scheme (uri); gchar *uri_scheme = gnc_uri_get_scheme (uri);
filename = gnc_assoc_get_unescape_uri (NULL, uri, uri_scheme); filename = gnc_doclink_get_unescape_uri (NULL, uri, uri_scheme);
winuri = (wchar_t *)g_utf8_to_utf16(filename, -1, NULL, NULL, NULL); winuri = (wchar_t *)g_utf8_to_utf16(filename, -1, NULL, NULL, NULL);
g_free (uri_scheme); g_free (uri_scheme);
} }
@ -483,7 +483,7 @@ gnc_launch_assoc (GtkWindow *parent, const char *uri)
NULL, NULL, SW_SHOWNORMAL) <= 32) NULL, NULL, SW_SHOWNORMAL) <= 32)
{ {
const gchar *message = const gchar *message =
_("GnuCash could not find the associated file."); _("GnuCash could not find the linked document.");
gnc_error_dialog (parent, "%s:\n%s", message, filename); gnc_error_dialog (parent, "%s:\n%s", message, filename);
} }
g_free (wincmd); g_free (wincmd);
@ -494,7 +494,7 @@ gnc_launch_assoc (GtkWindow *parent, const char *uri)
#else #else
void void
gnc_launch_assoc (GtkWindow *parent, const char *uri) gnc_launch_doclink (GtkWindow *parent, const char *uri)
{ {
GError *error = NULL; GError *error = NULL;
gboolean success; gboolean success;
@ -513,12 +513,12 @@ gnc_launch_assoc (GtkWindow *parent, const char *uri)
{ {
gchar *error_uri = NULL; gchar *error_uri = NULL;
const gchar *message = const gchar *message =
_("GnuCash could not open the associated file:"); _("GnuCash could not open the linked document:");
if (gnc_uri_is_file_uri (uri)) if (gnc_uri_is_file_uri (uri))
{ {
gchar *uri_scheme = gnc_uri_get_scheme (uri); gchar *uri_scheme = gnc_uri_get_scheme (uri);
error_uri = gnc_assoc_get_unescape_uri (NULL, uri, uri_scheme); error_uri = gnc_doclink_get_unescape_uri (NULL, uri, uri_scheme);
g_free (uri_scheme); g_free (uri_scheme);
} }
else else

View File

@ -61,7 +61,7 @@ void gnc_gnome_help (const char *file_name,
const char *anchor); const char *anchor);
/** Launch the default browser and open the provided URI. /** Launch the default browser and open the provided URI.
*/ */
void gnc_launch_assoc (GtkWindow *parent, const char *uri); void gnc_launch_doclink (GtkWindow *parent, const char *uri);
/** Set the help callback to 'gnc_book_options_help_cb' to open a help browser /** Set the help callback to 'gnc_book_options_help_cb' to open a help browser
* and point it to the Book Options link in the Help file. * and point it to the Book Options link in the Help file.

View File

@ -4490,7 +4490,7 @@ get_file_strsplit (const gchar *partial)
static gboolean static gboolean
url_signal_cb (GtkAboutDialog *dialog, gchar *uri, gpointer data) url_signal_cb (GtkAboutDialog *dialog, gchar *uri, gpointer data)
{ {
gnc_launch_assoc (GTK_WINDOW(dialog), uri); gnc_launch_doclink (GTK_WINDOW(dialog), uri);
return TRUE; return TRUE;
} }

View File

@ -1314,7 +1314,7 @@ gnc_tree_control_split_reg_duplicate_current (GncTreeViewSplitReg *view)
const char *in_tnum = NULL; const char *in_tnum = NULL;
char *out_num; char *out_num;
char *out_tnum; char *out_tnum;
char *out_tassoc = NULL; char *out_tdoclink = NULL;
time64 date; time64 date;
gboolean use_autoreadonly = qof_book_uses_autoreadonly (gnc_get_current_book()); gboolean use_autoreadonly = qof_book_uses_autoreadonly (gnc_get_current_book());
@ -1337,7 +1337,7 @@ gnc_tree_control_split_reg_duplicate_current (GncTreeViewSplitReg *view)
if (!gnc_dup_trans_dialog (GTK_WIDGET (window), NULL, TRUE, if (!gnc_dup_trans_dialog (GTK_WIDGET (window), NULL, TRUE,
&date, in_num, &out_num, in_tnum, &out_tnum, &date, in_num, &out_num, in_tnum, &out_tnum,
xaccTransGetAssociation (trans), &out_tassoc)) xaccTransGetDocLink (trans), &out_tdoclink))
{ {
LEAVE("dup cancelled"); LEAVE("dup cancelled");
return FALSE; return FALSE;
@ -1382,11 +1382,11 @@ gnc_tree_control_split_reg_duplicate_current (GncTreeViewSplitReg *view)
* because otherwise the ordering is not deterministic */ * because otherwise the ordering is not deterministic */
xaccTransSetDateEnteredSecs(new_trans, gnc_time(NULL)); xaccTransSetDateEnteredSecs(new_trans, gnc_time(NULL));
/* clear the associated entry if returned value NULL */ /* clear the linked document entry if returned value NULL */
if (out_tassoc == NULL) if (out_tdoclink == NULL)
xaccTransSetAssociation (new_trans, ""); xaccTransSetDocLink (new_trans, "");
else else
g_free (out_tassoc); g_free (out_tdoclink);
/* set per book option */ /* set per book option */
gnc_set_num_action (new_trans, NULL, out_num, out_tnum); gnc_set_num_action (new_trans, NULL, out_num, out_tnum);
@ -2171,9 +2171,9 @@ gnc_tree_control_auto_complete (GncTreeViewSplitReg *view, Transaction *trans,
if (g_strcmp0 (text, new_text) == 0) if (g_strcmp0 (text, new_text) == 0)
{ {
xaccTransCopyOnto (trans_from, trans); xaccTransCopyOnto (trans_from, trans);
/* if there is an association, lets clear it */ /* if there is a doclink, lets clear it */
if (xaccTransGetAssociation (trans_from) != NULL) if (xaccTransGetDocLink (trans_from) != NULL)
xaccTransSetAssociation (trans, ""); xaccTransSetDocLink (trans, "");
g_free (text); g_free (text);
break; break;
} }

View File

@ -7,7 +7,7 @@ set (gnc_gnome_noinst_HEADERS
business-options-gnome.h business-options-gnome.h
business-urls.h business-urls.h
business-gnome-utils.h business-gnome-utils.h
dialog-assoc.h dialog-doclink.h
dialog-billterms.h dialog-billterms.h
dialog-choose-owner.h dialog-choose-owner.h
dialog-customer.h dialog-customer.h
@ -75,7 +75,7 @@ set (gnc_gnome_SOURCES
business-options-gnome.c business-options-gnome.c
business-urls.c business-urls.c
business-gnome-utils.c business-gnome-utils.c
dialog-assoc.c dialog-doclink.c
dialog-billterms.c dialog-billterms.c
dialog-choose-owner.c dialog-choose-owner.c
dialog-commodities.c dialog-commodities.c

View File

@ -1,5 +1,5 @@
/********************************************************************\ /********************************************************************\
* dialog-assoc.c -- Associations dialog * * dialog-doclink.c -- Document link dialog *
* Copyright (C) 2020 Robert Fewell * * Copyright (C) 2020 Robert Fewell *
* * * *
* This program is free software; you can redistribute it and/or * * This program is free software; you can redistribute it and/or *
@ -25,8 +25,8 @@
#include <gtk/gtk.h> #include <gtk/gtk.h>
#include <glib/gi18n.h> #include <glib/gi18n.h>
#include "dialog-assoc.h" #include "dialog-doclink.h"
#include "dialog-assoc-utils.h" #include "dialog-doclink-utils.h"
#include "dialog-utils.h" #include "dialog-utils.h"
#include "gnc-component-manager.h" #include "gnc-component-manager.h"
@ -45,12 +45,12 @@
#include "Account.h" #include "Account.h"
#include "dialog-invoice.h" #include "dialog-invoice.h"
#define DIALOG_ASSOC_CM_CLASS "dialog-assoc" #define DIALOG_DOCLINK_CM_CLASS "dialog-doclink"
#define GNC_PREFS_GROUP_BUS "dialogs.business-assoc" #define GNC_PREFS_GROUP_BUS "dialogs.business-doclink"
#define GNC_PREFS_GROUP_TRANS "dialogs.trans-assoc" #define GNC_PREFS_GROUP_TRANS "dialogs.trans-doclink"
/** Enumeration for the tree-store */ /** Enumeration for the tree-store */
enum GncAssocColumn enum GncDoclinkColumn
{ {
DATE_ITEM, DATE_ITEM,
DATE_INT64, // used just for sorting date_trans DATE_INT64, // used just for sorting date_trans
@ -76,7 +76,7 @@ typedef struct
GtkTreeModel *model; GtkTreeModel *model;
gint component_id; gint component_id;
QofSession *session; QofSession *session;
}AssocDialog; }DoclinkDialog;
/* This static indicates the debugging module that this .o belongs to. */ /* This static indicates the debugging module that this .o belongs to. */
static QofLogModule log_module = GNC_MOD_GUI; static QofLogModule log_module = GNC_MOD_GUI;
@ -84,20 +84,20 @@ static QofLogModule log_module = GNC_MOD_GUI;
/* =================================================================== */ /* =================================================================== */
void void
gnc_assoc_open_uri (GtkWindow *parent, const gchar *uri) gnc_doclink_open_uri (GtkWindow *parent, const gchar *uri)
{ {
if (uri && *uri) if (uri && *uri)
{ {
gchar *scheme = gnc_uri_get_scheme (uri); gchar *scheme = gnc_uri_get_scheme (uri);
gchar *path_head = gnc_assoc_get_path_head (); gchar *path_head = gnc_doclink_get_path_head ();
gchar *run_uri = gnc_assoc_get_use_uri (path_head, uri, scheme); gchar *run_uri = gnc_doclink_get_use_uri (path_head, uri, scheme);
gchar *run_scheme = gnc_uri_get_scheme (run_uri); gchar *run_scheme = gnc_uri_get_scheme (run_uri);
PINFO("Open uri scheme is '%s', uri is '%s'", run_scheme, run_uri); PINFO("Open uri scheme is '%s', uri is '%s'", run_scheme, run_uri);
if (run_scheme) // make sure we have a scheme entry if (run_scheme) // make sure we have a scheme entry
{ {
gnc_launch_assoc (GTK_WINDOW (parent), run_uri); gnc_launch_doclink (GTK_WINDOW (parent), run_uri);
g_free (run_scheme); g_free (run_scheme);
} }
g_free (run_uri); g_free (run_uri);
@ -194,14 +194,14 @@ static void
setup_file_dialog (GtkBuilder *builder, GtkFileChooserButton *fcb, setup_file_dialog (GtkBuilder *builder, GtkFileChooserButton *fcb,
const gchar *path_head, const gchar *uri, gchar *scheme) const gchar *path_head, const gchar *uri, gchar *scheme)
{ {
gchar *display_uri = gnc_assoc_get_unescape_uri (path_head, uri, scheme); gchar *display_uri = gnc_doclink_get_unescape_uri (path_head, uri, scheme);
if (display_uri) if (display_uri)
{ {
GtkWidget *label; GtkWidget *label;
GtkWidget *existing_hbox = GTK_WIDGET(gtk_builder_get_object (builder, "existing_hbox")); GtkWidget *existing_hbox = GTK_WIDGET(gtk_builder_get_object (builder, "existing_hbox"));
GtkWidget *image = gtk_image_new_from_icon_name ("dialog-warning", GTK_ICON_SIZE_SMALL_TOOLBAR); GtkWidget *image = gtk_image_new_from_icon_name ("dialog-warning", GTK_ICON_SIZE_SMALL_TOOLBAR);
gchar *use_uri = gnc_assoc_get_use_uri (path_head, uri, scheme); gchar *use_uri = gnc_doclink_get_use_uri (path_head, uri, scheme);
gchar *uri_label = g_strdup_printf ("%s '%s'", _("Existing Document Link is"), display_uri); gchar *uri_label = g_strdup_printf ("%s '%s'", _("Existing Document Link is"), display_uri);
label = gtk_label_new (uri_label); label = gtk_label_new (uri_label);
@ -230,7 +230,8 @@ setup_file_dialog (GtkBuilder *builder, GtkFileChooserButton *fcb,
} }
gchar * gchar *
gnc_assoc_get_uri_dialog (GtkWindow *parent, const gchar *title, const gchar *uri) gnc_doclink_get_uri_dialog (GtkWindow *parent, const gchar *title,
const gchar *uri)
{ {
GtkWidget *dialog, *button_loc, *button_file, *ok_button, *warning_hbox; GtkWidget *dialog, *button_loc, *button_file, *ok_button, *warning_hbox;
GtkBuilder *builder; GtkBuilder *builder;
@ -240,21 +241,22 @@ gnc_assoc_get_uri_dialog (GtkWindow *parent, const gchar *title, const gchar *ur
GtkWidget *head_label; GtkWidget *head_label;
int result; int result;
gchar *ret_uri = NULL; gchar *ret_uri = NULL;
gchar *path_head = gnc_assoc_get_path_head (); gchar *path_head = gnc_doclink_get_path_head ();
gchar *scheme = NULL; gchar *scheme = NULL;
/* Create the dialog box */ /* Create the dialog box */
builder = gtk_builder_new(); builder = gtk_builder_new();
gnc_builder_add_from_file (builder, "dialog-assoc.glade", "association_dialog"); gnc_builder_add_from_file (builder, "dialog-doclink.glade",
dialog = GTK_WIDGET(gtk_builder_get_object (builder, "association_dialog")); "linked_doc_dialog");
dialog = GTK_WIDGET(gtk_builder_get_object (builder, "linked_doc_dialog"));
gtk_window_set_title (GTK_WINDOW(dialog), title); gtk_window_set_title (GTK_WINDOW(dialog), title);
if (parent != NULL) if (parent != NULL)
gtk_window_set_transient_for (GTK_WINDOW(dialog), GTK_WINDOW(parent)); gtk_window_set_transient_for (GTK_WINDOW(dialog), GTK_WINDOW(parent));
// Set the name and style context for this widget so it can be easily manipulated with css // Set the name and style context for this widget so it can be easily manipulated with css
gtk_widget_set_name (GTK_WIDGET(dialog), "gnc-id-association"); gtk_widget_set_name (GTK_WIDGET(dialog), "gnc-id-doclink");
gnc_widget_style_context_add_class (GTK_WIDGET(dialog), "gnc-class-association"); gnc_widget_style_context_add_class (GTK_WIDGET(dialog), "gnc-class-doclink");
head_label = GTK_WIDGET(gtk_builder_get_object (builder, "path_head_label")); head_label = GTK_WIDGET(gtk_builder_get_object (builder, "path_head_label"));
ok_button = GTK_WIDGET(gtk_builder_get_object (builder, "ok_button")); ok_button = GTK_WIDGET(gtk_builder_get_object (builder, "ok_button"));
@ -263,7 +265,7 @@ gnc_assoc_get_uri_dialog (GtkWindow *parent, const gchar *title, const gchar *ur
g_object_set_data (G_OBJECT(fcb), "okbut", ok_button); g_object_set_data (G_OBJECT(fcb), "okbut", ok_button);
g_signal_connect (fcb, "file-set", G_CALLBACK(file_set_cb), ok_button); g_signal_connect (fcb, "file-set", G_CALLBACK(file_set_cb), ok_button);
button_file = GTK_WIDGET(gtk_builder_get_object (builder, "file_assoc")); button_file = GTK_WIDGET(gtk_builder_get_object (builder, "linked_file"));
g_signal_connect (button_file, "toggled", G_CALLBACK(uri_type_selected_cb), fcb); g_signal_connect (button_file, "toggled", G_CALLBACK(uri_type_selected_cb), fcb);
gtk_widget_show_all (GTK_WIDGET(gtk_builder_get_object (builder, "file_hbox"))); gtk_widget_show_all (GTK_WIDGET(gtk_builder_get_object (builder, "file_hbox")));
@ -275,11 +277,11 @@ gnc_assoc_get_uri_dialog (GtkWindow *parent, const gchar *title, const gchar *ur
g_signal_connect (entry, "changed", G_CALLBACK(location_ok_cb), ok_button); g_signal_connect (entry, "changed", G_CALLBACK(location_ok_cb), ok_button);
button_loc = GTK_WIDGET(gtk_builder_get_object (builder, "loc_assoc")); button_loc = GTK_WIDGET(gtk_builder_get_object (builder, "linked_loc"));
g_signal_connect (button_loc, "toggled", G_CALLBACK(uri_type_selected_cb), entry); g_signal_connect (button_loc, "toggled", G_CALLBACK(uri_type_selected_cb), entry);
// display path head text and test if present // display path head text and test if present
gnc_assoc_set_path_head_label (head_label, NULL, NULL); gnc_doclink_set_path_head_label (head_label, NULL, NULL);
// Check for uri is empty or NULL // Check for uri is empty or NULL
if (uri && *uri) if (uri && *uri)
@ -360,31 +362,32 @@ gnc_assoc_get_uri_dialog (GtkWindow *parent, const gchar *title, const gchar *ur
static void close_handler (gpointer user_data); static void close_handler (gpointer user_data);
static void static void
gnc_assoc_dialog_window_destroy_cb (GtkWidget *object, gpointer user_data) gnc_doclink_dialog_window_destroy_cb (GtkWidget *object, gpointer user_data)
{ {
AssocDialog *assoc_dialog = user_data; DoclinkDialog *doclink_dialog = user_data;
ENTER(" "); ENTER(" ");
gnc_unregister_gui_component (assoc_dialog->component_id); gnc_unregister_gui_component (doclink_dialog->component_id);
if (assoc_dialog->window) if (doclink_dialog->window)
{ {
g_free (assoc_dialog->path_head); g_free (doclink_dialog->path_head);
gtk_widget_destroy (assoc_dialog->window); gtk_widget_destroy (doclink_dialog->window);
assoc_dialog->window = NULL; doclink_dialog->window = NULL;
} }
g_free (assoc_dialog); g_free (doclink_dialog);
LEAVE(" "); LEAVE(" ");
} }
static gboolean static gboolean
gnc_assoc_dialog_window_key_press_cb (GtkWidget *widget, GdkEventKey *event, gpointer user_data) gnc_doclink_dialog_window_key_press_cb (GtkWidget *widget, GdkEventKey *event,
gpointer user_data)
{ {
AssocDialog *assoc_dialog = user_data; DoclinkDialog *doclink_dialog = user_data;
if (event->keyval == GDK_KEY_Escape) if (event->keyval == GDK_KEY_Escape)
{ {
close_handler (assoc_dialog); close_handler (doclink_dialog);
return TRUE; return TRUE;
} }
else else
@ -392,16 +395,16 @@ gnc_assoc_dialog_window_key_press_cb (GtkWidget *widget, GdkEventKey *event, gpo
} }
static void static void
assoc_dialog_update (AssocDialog *assoc_dialog) doclink_dialog_update (DoclinkDialog *doclink_dialog)
{ {
GtkTreeModel *model; GtkTreeModel *model;
GtkTreeIter iter; GtkTreeIter iter;
gboolean valid; gboolean valid;
/* disconnect the model from the treeview */ /* disconnect the model from the treeview */
model = gtk_tree_view_get_model (GTK_TREE_VIEW(assoc_dialog->view)); model = gtk_tree_view_get_model (GTK_TREE_VIEW (doclink_dialog->view));
g_object_ref (G_OBJECT(model)); g_object_ref (G_OBJECT(model));
gtk_tree_view_set_model (GTK_TREE_VIEW(assoc_dialog->view), NULL); gtk_tree_view_set_model (GTK_TREE_VIEW (doclink_dialog->view), NULL);
/* Get first row in list store */ /* Get first row in list store */
valid = gtk_tree_model_get_iter_first (model, &iter); valid = gtk_tree_model_get_iter_first (model, &iter);
@ -417,7 +420,9 @@ assoc_dialog_update (AssocDialog *assoc_dialog)
if (!scheme || gnc_uri_is_file_scheme (scheme)) if (!scheme || gnc_uri_is_file_scheme (scheme))
{ {
gchar *filename = gnc_assoc_get_unescape_uri (assoc_dialog->path_head, uri, scheme); gchar *filename =
gnc_doclink_get_unescape_uri (doclink_dialog->path_head,
uri, scheme);
if (g_file_test (filename, G_FILE_TEST_EXISTS)) if (g_file_test (filename, G_FILE_TEST_EXISTS))
gtk_list_store_set (GTK_LIST_STORE(model), &iter, AVAILABLE, _("File Found"), -1); gtk_list_store_set (GTK_LIST_STORE(model), &iter, AVAILABLE, _("File Found"), -1);
@ -447,12 +452,13 @@ assoc_dialog_update (AssocDialog *assoc_dialog)
valid = gtk_tree_model_iter_next (model, &iter); valid = gtk_tree_model_iter_next (model, &iter);
} }
/* reconnect the model to the treeview */ /* reconnect the model to the treeview */
gtk_tree_view_set_model (GTK_TREE_VIEW(assoc_dialog->view), model); gtk_tree_view_set_model (GTK_TREE_VIEW (doclink_dialog->view), model);
g_object_unref (G_OBJECT(model)); g_object_unref (G_OBJECT(model));
} }
static void static void
update_model_with_changes (AssocDialog *assoc_dialog, GtkTreeIter *iter, const gchar *uri) update_model_with_changes (DoclinkDialog *doclink_dialog, GtkTreeIter *iter,
const gchar *uri)
{ {
gchar *display_uri; gchar *display_uri;
gboolean rel = FALSE; gboolean rel = FALSE;
@ -461,53 +467,61 @@ update_model_with_changes (AssocDialog *assoc_dialog, GtkTreeIter *iter, const g
if (!scheme) // path is relative if (!scheme) // path is relative
rel = TRUE; rel = TRUE;
display_uri = gnc_assoc_get_unescape_uri (assoc_dialog->path_head, uri, scheme); display_uri = gnc_doclink_get_unescape_uri (doclink_dialog->path_head,
gtk_list_store_set (GTK_LIST_STORE(assoc_dialog->model), iter, uri, scheme);
gtk_list_store_set (GTK_LIST_STORE (doclink_dialog->model), iter,
DISPLAY_URI, display_uri, AVAILABLE, _("File Found"), DISPLAY_URI, display_uri, AVAILABLE, _("File Found"),
URI, uri, URI, uri,
URI_RELATIVE, rel, // used just for sorting relative column URI_RELATIVE, rel, // used just for sorting relative column
URI_RELATIVE_PIX, (rel == TRUE ? "emblem-default" : NULL), -1); URI_RELATIVE_PIX, (rel == TRUE ? "emblem-default" : NULL), -1);
if (!rel && !gnc_uri_is_file_scheme (scheme)) if (!rel && !gnc_uri_is_file_scheme (scheme))
gtk_list_store_set (GTK_LIST_STORE(assoc_dialog->model), iter, AVAILABLE, _("Unknown"), -1); gtk_list_store_set (GTK_LIST_STORE (doclink_dialog->model), iter,
AVAILABLE, _("Unknown"), -1);
g_free (display_uri); g_free (display_uri);
g_free (scheme); g_free (scheme);
} }
static void static void
update_total_entries (AssocDialog *assoc_dialog) update_total_entries (DoclinkDialog *doclink_dialog)
{ {
gint entries = gtk_tree_model_iter_n_children (GTK_TREE_MODEL(assoc_dialog->model), NULL); gint entries =
gtk_tree_model_iter_n_children (GTK_TREE_MODEL (doclink_dialog->model),
NULL);
if (entries > 0) if (entries > 0)
{ {
gchar *total = g_strdup_printf ("%s %d", _("Total Entries"), entries); gchar *total = g_strdup_printf ("%s %d", _("Total Entries"), entries);
gtk_label_set_text (GTK_LABEL(assoc_dialog->total_entries_label), total); gtk_label_set_text (GTK_LABEL (doclink_dialog->total_entries_label),
gtk_widget_show (assoc_dialog->total_entries_label); total);
gtk_widget_show (doclink_dialog->total_entries_label);
g_free (total); g_free (total);
} }
else else
gtk_widget_hide (assoc_dialog->total_entries_label); gtk_widget_hide (doclink_dialog->total_entries_label);
} }
static void static void
row_selected_bus_cb (GtkTreeView *view, GtkTreePath *path, row_selected_bus_cb (GtkTreeView *view, GtkTreePath *path,
GtkTreeViewColumn *col, gpointer user_data) GtkTreeViewColumn *col, gpointer user_data)
{ {
AssocDialog *assoc_dialog = user_data; DoclinkDialog *doclink_dialog = user_data;
GtkTreeIter iter; GtkTreeIter iter;
GncInvoice *invoice; GncInvoice *invoice;
gchar *uri = NULL; gchar *uri = NULL;
// path describes a non-existing row - should not happen // path describes a non-existing row - should not happen
g_return_if_fail (gtk_tree_model_get_iter (assoc_dialog->model, &iter, path)); g_return_if_fail (gtk_tree_model_get_iter (doclink_dialog->model,
&iter, path));
gtk_tree_model_get (assoc_dialog->model, &iter, URI, &uri, ITEM_POINTER, &invoice, -1); gtk_tree_model_get (doclink_dialog->model, &iter, URI,
&uri, ITEM_POINTER, &invoice, -1);
// Open associated link, subtract 1 to allow for date_int64 // Open linked document, subtract 1 to allow for date_int64
if (gtk_tree_view_get_column (GTK_TREE_VIEW(assoc_dialog->view), DISPLAY_URI - 1) == col) if (gtk_tree_view_get_column (GTK_TREE_VIEW (doclink_dialog->view),
gnc_assoc_open_uri (GTK_WINDOW(assoc_dialog->window), uri); DISPLAY_URI - 1) == col)
gnc_doclink_open_uri (GTK_WINDOW (doclink_dialog->window), uri);
if (!invoice) if (!invoice)
{ {
@ -516,53 +530,60 @@ row_selected_bus_cb (GtkTreeView *view, GtkTreePath *path,
} }
// Open Invoice, subtract 1 to allow for date_int64 // Open Invoice, subtract 1 to allow for date_int64
if (gtk_tree_view_get_column (GTK_TREE_VIEW(assoc_dialog->view), DESC_ID - 1) == col) if (gtk_tree_view_get_column (GTK_TREE_VIEW (doclink_dialog->view),
DESC_ID - 1) == col)
{ {
GncPluginPage *page; GncPluginPage *page;
InvoiceWindow *iw; InvoiceWindow *iw;
iw = gnc_ui_invoice_edit (GTK_WINDOW(assoc_dialog->window), invoice); iw = gnc_ui_invoice_edit (GTK_WINDOW (doclink_dialog->window),
invoice);
gnc_plugin_page_invoice_new (iw); gnc_plugin_page_invoice_new (iw);
} }
// Open Invoice association dialog, subtract 1 to allow for date_int64 // Open Invoice document link dialog, subtract 1 to allow for date_int64
if (gtk_tree_view_get_column (GTK_TREE_VIEW(assoc_dialog->view), AVAILABLE - 1) == col) if (gtk_tree_view_get_column (GTK_TREE_VIEW (doclink_dialog->view),
AVAILABLE - 1) == col)
{ {
gchar *ret_uri = NULL; gchar *ret_uri = NULL;
if (assoc_dialog->book_ro) if (doclink_dialog->book_ro)
{ {
gnc_warning_dialog (GTK_WINDOW(assoc_dialog->window), "%s", _("Business item can not be modified.")); gnc_warning_dialog (GTK_WINDOW (doclink_dialog->window), "%s",
_("Business item can not be modified."));
g_free (uri); g_free (uri);
return; return;
} }
/* Translators: This is the title of a dialog box for linking an external /* Translators: This is the title of a dialog box for linking an external
file or URI with the current bill, invoice, transaction, or voucher. */ file or URI with the current bill, invoice, transaction, or voucher. */
ret_uri = gnc_assoc_get_uri_dialog (GTK_WINDOW(assoc_dialog->window), _("Manage Document Link"), uri); ret_uri =
gnc_doclink_get_uri_dialog (GTK_WINDOW (doclink_dialog->window),
_("Manage Document Link"), uri);
if (ret_uri && g_strcmp0 (uri, ret_uri) != 0) if (ret_uri && g_strcmp0 (uri, ret_uri) != 0)
{ {
gncInvoiceSetAssociation (invoice, ret_uri); gncInvoiceSetDocLink (invoice, ret_uri);
if (g_strcmp0 (ret_uri, "") == 0) // delete uri if (g_strcmp0 (ret_uri, "") == 0) // delete uri
{ {
// update the asooc parts for invoice window if present // update the asooc parts for invoice window if present
gnc_invoice_update_assoc_for_window (invoice, ret_uri); gnc_invoice_update_doclink_for_window (invoice, ret_uri);
gtk_list_store_remove (GTK_LIST_STORE(assoc_dialog->model), &iter); gtk_list_store_remove (GTK_LIST_STORE (doclink_dialog->model),
update_total_entries (assoc_dialog); &iter);
update_total_entries (doclink_dialog);
} }
else // update uri else // update uri
{ {
gchar *display_uri; gchar *display_uri;
gchar *scheme = gnc_uri_get_scheme (ret_uri); gchar *scheme = gnc_uri_get_scheme (ret_uri);
display_uri = gnc_assoc_get_unescape_uri (assoc_dialog->path_head, ret_uri, scheme); display_uri = gnc_doclink_get_unescape_uri (doclink_dialog->path_head, ret_uri, scheme);
update_model_with_changes (assoc_dialog, &iter, ret_uri); update_model_with_changes (doclink_dialog, &iter, ret_uri);
// update the asooc parts for invoice window if present // update the asooc parts for invoice window if present
gnc_invoice_update_assoc_for_window (invoice, display_uri); gnc_invoice_update_doclink_for_window (invoice, display_uri);
g_free (scheme); g_free (scheme);
g_free (display_uri); g_free (display_uri);
@ -577,19 +598,22 @@ static void
row_selected_trans_cb (GtkTreeView *view, GtkTreePath *path, row_selected_trans_cb (GtkTreeView *view, GtkTreePath *path,
GtkTreeViewColumn *col, gpointer user_data) GtkTreeViewColumn *col, gpointer user_data)
{ {
AssocDialog *assoc_dialog = user_data; DoclinkDialog *doclink_dialog = user_data;
GtkTreeIter iter; GtkTreeIter iter;
Split *split; Split *split;
gchar *uri = NULL; gchar *uri = NULL;
// path describes a non-existing row - should not happen // path describes a non-existing row - should not happen
g_return_if_fail (gtk_tree_model_get_iter (assoc_dialog->model, &iter, path)); g_return_if_fail (gtk_tree_model_get_iter (doclink_dialog->model,
&iter, path));
gtk_tree_model_get (assoc_dialog->model, &iter, URI, &uri, ITEM_POINTER, &split, -1); gtk_tree_model_get (doclink_dialog->model, &iter, URI,
&uri, ITEM_POINTER, &split, -1);
// Open linked document, subtract 1 to allow for date_int64 // Open linked document, subtract 1 to allow for date_int64
if (gtk_tree_view_get_column (GTK_TREE_VIEW(assoc_dialog->view), DISPLAY_URI - 1) == col) if (gtk_tree_view_get_column (GTK_TREE_VIEW (doclink_dialog->view),
gnc_assoc_open_uri (GTK_WINDOW(assoc_dialog->window), uri); DISPLAY_URI - 1) == col)
gnc_doclink_open_uri (GTK_WINDOW (doclink_dialog->window), uri);
if (!split) if (!split)
{ {
@ -598,7 +622,8 @@ row_selected_trans_cb (GtkTreeView *view, GtkTreePath *path,
} }
// Open transaction, subtract 1 to allow for date_int64 // Open transaction, subtract 1 to allow for date_int64
if (gtk_tree_view_get_column (GTK_TREE_VIEW(assoc_dialog->view), DESC_ITEM - 1) == col) if (gtk_tree_view_get_column (GTK_TREE_VIEW(doclink_dialog->view),
DESC_ITEM - 1) == col)
{ {
GncPluginPage *page; GncPluginPage *page;
GNCSplitReg *gsr; GNCSplitReg *gsr;
@ -616,32 +641,38 @@ row_selected_trans_cb (GtkTreeView *view, GtkTreePath *path,
gnc_split_reg_jump_to_split (gsr, split); gnc_split_reg_jump_to_split (gsr, split);
} }
// Open transaction association dialog, subtract 1 to allow for date_int64 // Open transaction document link dialog, subtract 1 to allow for date_int64
if (gtk_tree_view_get_column (GTK_TREE_VIEW(assoc_dialog->view), AVAILABLE - 1) == col) if (gtk_tree_view_get_column (GTK_TREE_VIEW(doclink_dialog->view), AVAILABLE - 1) == col)
{ {
Transaction *trans; Transaction *trans;
gchar *ret_uri = NULL; gchar *ret_uri = NULL;
trans = xaccSplitGetParent (split); trans = xaccSplitGetParent (split);
if (xaccTransIsReadonlyByPostedDate (trans) || xaccTransGetReadOnly (trans) || assoc_dialog->book_ro) if (xaccTransIsReadonlyByPostedDate (trans) ||
xaccTransGetReadOnly (trans) ||
doclink_dialog->book_ro)
{ {
gnc_warning_dialog (GTK_WINDOW(assoc_dialog->window), "%s", _("Transaction can not be modified.")); gnc_warning_dialog (GTK_WINDOW (doclink_dialog->window), "%s",
_("Transaction can not be modified."));
g_free (uri); g_free (uri);
return; return;
} }
ret_uri = gnc_assoc_get_uri_dialog (GTK_WINDOW(assoc_dialog->window), _("Manage Document Link"), uri); ret_uri =
gnc_doclink_get_uri_dialog (GTK_WINDOW (doclink_dialog->window),
_("Manage Document Link"), uri);
if (ret_uri && g_strcmp0 (uri, ret_uri) != 0) if (ret_uri && g_strcmp0 (uri, ret_uri) != 0)
{ {
xaccTransSetAssociation (trans, ret_uri); xaccTransSetDocLink (trans, ret_uri);
if (g_strcmp0 (ret_uri, "") == 0) // deleted uri if (g_strcmp0 (ret_uri, "") == 0) // deleted uri
{ {
gtk_list_store_remove (GTK_LIST_STORE(assoc_dialog->model), &iter); gtk_list_store_remove (GTK_LIST_STORE (doclink_dialog->model),
update_total_entries (assoc_dialog); &iter);
update_total_entries (doclink_dialog);
} }
else // updated uri else // updated uri
update_model_with_changes (assoc_dialog, &iter, ret_uri); update_model_with_changes (doclink_dialog, &iter, ret_uri);
} }
g_free (ret_uri); g_free (ret_uri);
} }
@ -651,9 +682,9 @@ row_selected_trans_cb (GtkTreeView *view, GtkTreePath *path,
static void static void
add_bus_info_to_model (QofInstance* data, gpointer user_data) add_bus_info_to_model (QofInstance* data, gpointer user_data)
{ {
AssocDialog *assoc_dialog = user_data; DoclinkDialog *doclink_dialog = user_data;
GncInvoice *invoice = GNC_INVOICE(data); GncInvoice *invoice = GNC_INVOICE(data);
const gchar* uri = gncInvoiceGetAssociation (invoice); const gchar *uri = gncInvoiceGetDocLink (invoice);
GtkTreeIter iter; GtkTreeIter iter;
if (uri && *uri) if (uri && *uri)
@ -690,11 +721,12 @@ add_bus_info_to_model (QofInstance* data, gpointer user_data)
if (!scheme) // path is relative if (!scheme) // path is relative
rel = TRUE; rel = TRUE;
display_uri = gnc_assoc_get_unescape_uri (assoc_dialog->path_head, uri, scheme); display_uri = gnc_doclink_get_unescape_uri (doclink_dialog->path_head,
uri, scheme);
gtk_list_store_append (GTK_LIST_STORE(assoc_dialog->model), &iter); gtk_list_store_append (GTK_LIST_STORE (doclink_dialog->model), &iter);
gtk_list_store_set (GTK_LIST_STORE(assoc_dialog->model), &iter, gtk_list_store_set (GTK_LIST_STORE (doclink_dialog->model), &iter,
DATE_ITEM, datebuff, DATE_ITEM, datebuff,
DATE_INT64, t, // used just for sorting date column DATE_INT64, t, // used just for sorting date column
DESC_ID, gncInvoiceGetID (invoice), DESC_ID, gncInvoiceGetID (invoice),
@ -711,13 +743,13 @@ add_bus_info_to_model (QofInstance* data, gpointer user_data)
static void static void
add_trans_info_to_model (QofInstance* data, gpointer user_data) add_trans_info_to_model (QofInstance* data, gpointer user_data)
{ {
AssocDialog *assoc_dialog = user_data; DoclinkDialog *doclink_dialog = user_data;
Transaction *trans = GNC_TRANSACTION(data); Transaction *trans = GNC_TRANSACTION(data);
gchar *uri; gchar *uri;
GtkTreeIter iter; GtkTreeIter iter;
// fix an earlier error when storing relative paths before version 3.5 // fix an earlier error when storing relative paths before version 3.5
uri = gnc_assoc_convert_trans_associate_uri (trans, assoc_dialog->book_ro); uri = gnc_doclink_convert_trans_link_uri (trans, doclink_dialog->book_ro);
if (uri && *uri) if (uri && *uri)
{ {
@ -731,14 +763,15 @@ add_trans_info_to_model (QofInstance* data, gpointer user_data)
if (t == 0) if (t == 0)
t = gnc_time (NULL); t = gnc_time (NULL);
qof_print_date_buff (datebuff, MAX_DATE_LENGTH, t); qof_print_date_buff (datebuff, MAX_DATE_LENGTH, t);
gtk_list_store_append (GTK_LIST_STORE(assoc_dialog->model), &iter); gtk_list_store_append (GTK_LIST_STORE (doclink_dialog->model), &iter);
if (!scheme) // path is relative if (!scheme) // path is relative
rel = TRUE; rel = TRUE;
display_uri = gnc_assoc_get_unescape_uri (assoc_dialog->path_head, uri, scheme); display_uri = gnc_doclink_get_unescape_uri (doclink_dialog->path_head,
uri, scheme);
gtk_list_store_set (GTK_LIST_STORE(assoc_dialog->model), &iter, gtk_list_store_set (GTK_LIST_STORE (doclink_dialog->model), &iter,
DATE_ITEM, datebuff, DATE_ITEM, datebuff,
DATE_INT64, t, // used just for sorting date column DATE_INT64, t, // used just for sorting date column
DESC_ITEM, xaccTransGetDescription (trans), DESC_ITEM, xaccTransGetDescription (trans),
@ -753,102 +786,108 @@ add_trans_info_to_model (QofInstance* data, gpointer user_data)
} }
static void static void
get_bus_info (AssocDialog *assoc_dialog) get_bus_info (DoclinkDialog *doclink_dialog)
{ {
QofBook *book = gnc_get_current_book(); QofBook *book = gnc_get_current_book();
/* disconnect the model from the treeview */ /* disconnect the model from the treeview */
assoc_dialog->model = gtk_tree_view_get_model (GTK_TREE_VIEW(assoc_dialog->view)); doclink_dialog->model =
g_object_ref (G_OBJECT(assoc_dialog->model)); gtk_tree_view_get_model (GTK_TREE_VIEW (doclink_dialog->view));
gtk_tree_view_set_model (GTK_TREE_VIEW(assoc_dialog->view), NULL); g_object_ref (G_OBJECT (doclink_dialog->model));
gtk_tree_view_set_model (GTK_TREE_VIEW (doclink_dialog->view), NULL);
/* Clear the list store */ /* Clear the list store */
gtk_list_store_clear (GTK_LIST_STORE(assoc_dialog->model)); gtk_list_store_clear (GTK_LIST_STORE (doclink_dialog->model));
/* Loop through the invoices */ /* Loop through the invoices */
qof_collection_foreach (qof_book_get_collection (book, GNC_ID_INVOICE), qof_collection_foreach (qof_book_get_collection (book, GNC_ID_INVOICE),
add_bus_info_to_model, assoc_dialog); add_bus_info_to_model, doclink_dialog);
update_total_entries (assoc_dialog); update_total_entries (doclink_dialog);
/* reconnect the model to the treeview */ /* reconnect the model to the treeview */
gtk_tree_view_set_model (GTK_TREE_VIEW(assoc_dialog->view), assoc_dialog->model); gtk_tree_view_set_model (GTK_TREE_VIEW (doclink_dialog->view),
g_object_unref (G_OBJECT(assoc_dialog->model)); doclink_dialog->model);
g_object_unref (G_OBJECT (doclink_dialog->model));
} }
static void static void
get_trans_info (AssocDialog *assoc_dialog) get_trans_info (DoclinkDialog *doclink_dialog)
{ {
QofBook *book = gnc_get_current_book(); QofBook *book = gnc_get_current_book();
assoc_dialog->book_ro = qof_book_is_readonly (book); doclink_dialog->book_ro = qof_book_is_readonly (book);
/* disconnect the model from the treeview */ /* disconnect the model from the treeview */
assoc_dialog->model = gtk_tree_view_get_model (GTK_TREE_VIEW(assoc_dialog->view)); doclink_dialog->model =
g_object_ref (G_OBJECT(assoc_dialog->model)); gtk_tree_view_get_model (GTK_TREE_VIEW (doclink_dialog->view));
gtk_tree_view_set_model (GTK_TREE_VIEW(assoc_dialog->view), NULL); g_object_ref (G_OBJECT (doclink_dialog->model));
gtk_tree_view_set_model (GTK_TREE_VIEW (doclink_dialog->view), NULL);
/* Clear the list store */ /* Clear the list store */
gtk_list_store_clear (GTK_LIST_STORE(assoc_dialog->model)); gtk_list_store_clear (GTK_LIST_STORE (doclink_dialog->model));
/* Loop through the transactions */ /* Loop through the transactions */
qof_collection_foreach (qof_book_get_collection (book, GNC_ID_TRANS), qof_collection_foreach (qof_book_get_collection (book, GNC_ID_TRANS),
add_trans_info_to_model, assoc_dialog); add_trans_info_to_model, doclink_dialog);
update_total_entries (assoc_dialog); update_total_entries (doclink_dialog);
/* reconnect the model to the treeview */ /* reconnect the model to the treeview */
gtk_tree_view_set_model (GTK_TREE_VIEW(assoc_dialog->view), assoc_dialog->model); gtk_tree_view_set_model (GTK_TREE_VIEW (doclink_dialog->view),
g_object_unref (G_OBJECT(assoc_dialog->model)); doclink_dialog->model);
g_object_unref (G_OBJECT (doclink_dialog->model));
} }
static void static void
gnc_assoc_dialog_reload_button_cb (GtkWidget *widget, gpointer user_data) gnc_doclink_dialog_reload_button_cb (GtkWidget *widget, gpointer user_data)
{ {
AssocDialog *assoc_dialog = user_data; DoclinkDialog *doclink_dialog = user_data;
gchar *path_head = gnc_assoc_get_path_head (); gchar *path_head = gnc_doclink_get_path_head ();
if (g_strcmp0 (path_head, assoc_dialog->path_head) != 0) if (g_strcmp0 (path_head, doclink_dialog->path_head) != 0)
{ {
g_free (assoc_dialog->path_head); g_free (doclink_dialog->path_head);
assoc_dialog->path_head = g_strdup (path_head); doclink_dialog->path_head = g_strdup (path_head);
// display path head text and test if present // display path head text and test if present
gnc_assoc_set_path_head_label (assoc_dialog->path_head_label, NULL, NULL); gnc_doclink_set_path_head_label (doclink_dialog->path_head_label,
NULL, NULL);
} }
g_free (path_head); g_free (path_head);
if (assoc_dialog->is_list_trans) if (doclink_dialog->is_list_trans)
get_trans_info (assoc_dialog); get_trans_info (doclink_dialog);
else else
get_bus_info (assoc_dialog); get_bus_info (doclink_dialog);
} }
static void static void
gnc_assoc_dialog_reload_check_button_cb (GtkWidget *widget, gpointer user_data) gnc_doclink_dialog_reload_check_button_cb (GtkWidget *widget,
gpointer user_data)
{ {
AssocDialog *assoc_dialog = user_data; DoclinkDialog *doclink_dialog = user_data;
gnc_assoc_dialog_reload_button_cb (widget, user_data); gnc_doclink_dialog_reload_button_cb (widget, user_data);
assoc_dialog_update (assoc_dialog); doclink_dialog_update (doclink_dialog);
} }
static void static void
gnc_assoc_dialog_check_button_cb (GtkWidget *widget, gpointer user_data) gnc_doclink_dialog_check_button_cb (GtkWidget *widget, gpointer user_data)
{ {
AssocDialog *assoc_dialog = user_data; DoclinkDialog *doclink_dialog = user_data;
assoc_dialog_update (assoc_dialog); doclink_dialog_update (doclink_dialog);
} }
static void static void
gnc_assoc_dialog_close_button_cb (GtkWidget *widget, gpointer user_data) gnc_doclink_dialog_close_button_cb (GtkWidget *widget, gpointer user_data)
{ {
AssocDialog *assoc_dialog = user_data; DoclinkDialog *doclink_dialog = user_data;
gnc_close_gui_component (assoc_dialog->component_id); gnc_close_gui_component (doclink_dialog->component_id);
} }
static void static void
gnc_assoc_dialog_create (GtkWindow *parent, AssocDialog *assoc_dialog) gnc_doclink_dialog_create (GtkWindow *parent, DoclinkDialog *doclink_dialog)
{ {
GtkWidget *window; GtkWidget *window;
GtkBuilder *builder; GtkBuilder *builder;
@ -858,73 +897,92 @@ gnc_assoc_dialog_create (GtkWindow *parent, AssocDialog *assoc_dialog)
ENTER(" "); ENTER(" ");
builder = gtk_builder_new(); builder = gtk_builder_new();
gnc_builder_add_from_file (builder, "dialog-assoc.glade", "list-store"); gnc_builder_add_from_file (builder, "dialog-doclink.glade", "list-store");
gnc_builder_add_from_file (builder, "dialog-assoc.glade", "association_window"); gnc_builder_add_from_file (builder, "dialog-doclink.glade",
"linked_doc_window");
window = GTK_WIDGET(gtk_builder_get_object (builder, "association_window")); window = GTK_WIDGET(gtk_builder_get_object (builder, "linked_doc_window"));
assoc_dialog->window = window; doclink_dialog->window = window;
assoc_dialog->session = gnc_get_current_session(); doclink_dialog->session = gnc_get_current_session();
button = GTK_WIDGET(gtk_builder_get_object (builder, "reload_button")); button = GTK_WIDGET(gtk_builder_get_object (builder, "reload_button"));
g_signal_connect(button, "clicked", G_CALLBACK(gnc_assoc_dialog_reload_button_cb), assoc_dialog); g_signal_connect (button, "clicked",
G_CALLBACK (gnc_doclink_dialog_reload_button_cb),
doclink_dialog);
button = GTK_WIDGET(gtk_builder_get_object (builder, "reload_and_check_button")); button = GTK_WIDGET(gtk_builder_get_object (builder, "reload_and_check_button"));
g_signal_connect(button, "clicked", G_CALLBACK(gnc_assoc_dialog_reload_check_button_cb), assoc_dialog); g_signal_connect (button, "clicked",
G_CALLBACK (gnc_doclink_dialog_reload_check_button_cb),
doclink_dialog);
button = GTK_WIDGET(gtk_builder_get_object (builder, "check_button")); button = GTK_WIDGET(gtk_builder_get_object (builder, "check_button"));
g_signal_connect(button, "clicked", G_CALLBACK(gnc_assoc_dialog_check_button_cb), assoc_dialog); g_signal_connect (button, "clicked",
G_CALLBACK (gnc_doclink_dialog_check_button_cb),
doclink_dialog);
button = GTK_WIDGET(gtk_builder_get_object (builder, "close_button")); button = GTK_WIDGET(gtk_builder_get_object (builder, "close_button"));
g_signal_connect(button, "clicked", G_CALLBACK(gnc_assoc_dialog_close_button_cb), assoc_dialog); g_signal_connect (button, "clicked",
G_CALLBACK (gnc_doclink_dialog_close_button_cb),
doclink_dialog);
// Set the widget name and style context for this dialog so it can be easily manipulated with css // Set the widget name and style context for this dialog so it can be easily manipulated with css
gtk_widget_set_name (GTK_WIDGET(window), "gnc-id-transaction-associations"); gtk_widget_set_name (GTK_WIDGET (window), "gnc-id-transaction-doclinks");
gnc_widget_style_context_add_class (GTK_WIDGET(window), "gnc-class-association"); gnc_widget_style_context_add_class (GTK_WIDGET (window),
"gnc-class-doclink");
assoc_dialog->view = GTK_WIDGET(gtk_builder_get_object (builder, "treeview")); doclink_dialog->view =
assoc_dialog->path_head_label = GTK_WIDGET(gtk_builder_get_object (builder, "path-head")); GTK_WIDGET (gtk_builder_get_object (builder, "treeview"));
assoc_dialog->total_entries_label = GTK_WIDGET(gtk_builder_get_object (builder, "total_entries_label")); doclink_dialog->path_head_label =
assoc_dialog->path_head = gnc_assoc_get_path_head (); GTK_WIDGET (gtk_builder_get_object (builder, "path-head"));
doclink_dialog->total_entries_label =
GTK_WIDGET (gtk_builder_get_object (builder, "total_entries_label"));
doclink_dialog->path_head = gnc_doclink_get_path_head ();
// display path head text and test if present // display path head text and test if present
gnc_assoc_set_path_head_label (assoc_dialog->path_head_label, NULL, NULL); gnc_doclink_set_path_head_label (doclink_dialog->path_head_label, NULL, NULL);
// set the Associate column to be the one that expands // set the Linked column to be the one that expands
tree_column = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object (builder, "assoc")); tree_column =
GTK_TREE_VIEW_COLUMN (gtk_builder_get_object (builder, "doclink"));
gtk_tree_view_column_set_expand (tree_column, TRUE); gtk_tree_view_column_set_expand (tree_column, TRUE);
/* default sort order */ /* default sort order */
gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE(gtk_tree_view_get_model( gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE(gtk_tree_view_get_model(
GTK_TREE_VIEW(assoc_dialog->view))), GTK_TREE_VIEW (doclink_dialog->view))),
DATE_INT64, GTK_SORT_ASCENDING); DATE_INT64, GTK_SORT_ASCENDING);
// Set grid lines option to preference // Set grid lines option to preference
gtk_tree_view_set_grid_lines (GTK_TREE_VIEW(assoc_dialog->view), gnc_tree_view_get_grid_lines_pref ()); gtk_tree_view_set_grid_lines (GTK_TREE_VIEW (doclink_dialog->view),
gnc_tree_view_get_grid_lines_pref ());
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(assoc_dialog->view)); selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (doclink_dialog->view));
gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE); gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
g_signal_connect (assoc_dialog->window, "destroy", g_signal_connect (doclink_dialog->window, "destroy",
G_CALLBACK(gnc_assoc_dialog_window_destroy_cb), assoc_dialog); G_CALLBACK (gnc_doclink_dialog_window_destroy_cb),
doclink_dialog);
g_signal_connect (assoc_dialog->window, "key_press_event", g_signal_connect (doclink_dialog->window, "key_press_event",
G_CALLBACK(gnc_assoc_dialog_window_key_press_cb), assoc_dialog); G_CALLBACK (gnc_doclink_dialog_window_key_press_cb),
doclink_dialog);
// Setup the correct parts for each dialog // Setup the correct parts for each dialog
if (assoc_dialog->is_list_trans) if (doclink_dialog->is_list_trans)
{ {
GObject *desc_item_tree_column = G_OBJECT(gtk_builder_get_object (builder, "desc_item")); GObject *desc_item_tree_column = G_OBJECT(gtk_builder_get_object (builder, "desc_item"));
GObject *desc_id_tree_column = G_OBJECT(gtk_builder_get_object (builder, "desc_id")); GObject *desc_id_tree_column = G_OBJECT(gtk_builder_get_object (builder, "desc_id"));
/* Translators: This is the label of a dialog box that lists all of the /* Translators: This is the label of a dialog box that lists all of the
transaction that have files or URIs linked with them. */ transaction that have files or URIs linked with them. */
gtk_window_set_title (GTK_WINDOW(window), _("Transaction Document Links")); gtk_window_set_title (GTK_WINDOW (window), _("Transaction Document Links"));
gtk_tree_view_column_set_visible (GTK_TREE_VIEW_COLUMN(desc_id_tree_column), FALSE); gtk_tree_view_column_set_visible (GTK_TREE_VIEW_COLUMN(desc_id_tree_column), FALSE);
gtk_tree_view_column_set_title (GTK_TREE_VIEW_COLUMN(desc_item_tree_column), _("Description")); gtk_tree_view_column_set_title (GTK_TREE_VIEW_COLUMN(desc_item_tree_column), _("Description"));
g_signal_connect (assoc_dialog->view, "row-activated", g_signal_connect (doclink_dialog->view, "row-activated",
G_CALLBACK(row_selected_trans_cb), (gpointer)assoc_dialog); G_CALLBACK (row_selected_trans_cb),
gnc_restore_window_size (GNC_PREFS_GROUP_TRANS, GTK_WINDOW(assoc_dialog->window), parent); (gpointer)doclink_dialog);
get_trans_info (assoc_dialog); gnc_restore_window_size (GNC_PREFS_GROUP_TRANS,
GTK_WINDOW (doclink_dialog->window), parent);
get_trans_info (doclink_dialog);
} }
else else
{ {
@ -938,36 +996,42 @@ gnc_assoc_dialog_create (GtkWindow *parent, AssocDialog *assoc_dialog)
/* Translators: This is the label of a dialog box that lists all of the /* Translators: This is the label of a dialog box that lists all of the
invoices, bills, and vouchers that have files or URIs linked with invoices, bills, and vouchers that have files or URIs linked with
them. */ them. */
gtk_window_set_title (GTK_WINDOW(assoc_dialog->window), _("Business Document Links")); gtk_window_set_title (GTK_WINDOW (doclink_dialog->window),
_("Business Document Links"));
gtk_label_set_text (GTK_LABEL(help_label), gettext (item_string)); gtk_label_set_text (GTK_LABEL(help_label), gettext (item_string));
g_signal_connect (assoc_dialog->view, "row-activated", g_signal_connect (doclink_dialog->view, "row-activated",
G_CALLBACK(row_selected_bus_cb), (gpointer)assoc_dialog); G_CALLBACK (row_selected_bus_cb),
gnc_restore_window_size (GNC_PREFS_GROUP_BUS, GTK_WINDOW(assoc_dialog->window), parent); (gpointer)doclink_dialog);
get_bus_info (assoc_dialog); gnc_restore_window_size (GNC_PREFS_GROUP_BUS,
GTK_WINDOW (doclink_dialog->window), parent);
get_bus_info (doclink_dialog);
} }
gtk_builder_connect_signals_full (builder, gnc_builder_connect_full_func, assoc_dialog); gtk_builder_connect_signals_full (builder, gnc_builder_connect_full_func,
doclink_dialog);
g_object_unref (G_OBJECT(builder)); g_object_unref (G_OBJECT(builder));
gtk_widget_show_all (GTK_WIDGET(window)); gtk_widget_show_all (GTK_WIDGET(window));
gtk_tree_view_columns_autosize (GTK_TREE_VIEW(assoc_dialog->view)); gtk_tree_view_columns_autosize (GTK_TREE_VIEW(doclink_dialog->view));
LEAVE(" "); LEAVE(" ");
} }
static void static void
close_handler (gpointer user_data) close_handler (gpointer user_data)
{ {
AssocDialog *assoc_dialog = user_data; DoclinkDialog *doclink_dialog = user_data;
ENTER(" "); ENTER(" ");
if (assoc_dialog->is_list_trans) if (doclink_dialog->is_list_trans)
gnc_save_window_size (GNC_PREFS_GROUP_TRANS, GTK_WINDOW(assoc_dialog->window)); gnc_save_window_size (GNC_PREFS_GROUP_TRANS,
GTK_WINDOW (doclink_dialog->window));
else else
gnc_save_window_size (GNC_PREFS_GROUP_BUS, GTK_WINDOW(assoc_dialog->window)); gnc_save_window_size (GNC_PREFS_GROUP_BUS,
gtk_widget_destroy (GTK_WIDGET(assoc_dialog->window)); GTK_WINDOW (doclink_dialog->window));
gtk_widget_destroy (GTK_WIDGET (doclink_dialog->window));
LEAVE(" "); LEAVE(" ");
} }
@ -982,74 +1046,78 @@ static gboolean
show_handler (const char *klass, gint component_id, show_handler (const char *klass, gint component_id,
gpointer user_data, gpointer iter_data) gpointer user_data, gpointer iter_data)
{ {
AssocDialog *assoc_dialog = user_data; DoclinkDialog *doclink_dialog = user_data;
gboolean is_bus = GPOINTER_TO_INT(iter_data); gboolean is_bus = GPOINTER_TO_INT(iter_data);
ENTER(" "); ENTER(" ");
if (!assoc_dialog) if (!doclink_dialog)
{ {
LEAVE("No data structure"); LEAVE("No data structure");
return (FALSE); return (FALSE);
} }
// test if the dialog is the right one // test if the dialog is the right one
if (is_bus == assoc_dialog->is_list_trans) if (is_bus == doclink_dialog->is_list_trans)
return (FALSE); return (FALSE);
gtk_window_present (GTK_WINDOW(assoc_dialog->window)); gtk_window_present (GTK_WINDOW(doclink_dialog->window));
LEAVE(" "); LEAVE(" ");
return (TRUE); return (TRUE);
} }
void void
gnc_assoc_business_dialog (GtkWindow *parent) gnc_doclink_business_dialog (GtkWindow *parent)
{ {
AssocDialog *assoc_dialog; DoclinkDialog *doclink_dialog;
ENTER(" "); ENTER(" ");
if (gnc_forall_gui_components (DIALOG_ASSOC_CM_CLASS, show_handler, GINT_TO_POINTER(1))) if (gnc_forall_gui_components (DIALOG_DOCLINK_CM_CLASS,
show_handler, GINT_TO_POINTER(1)))
{ {
LEAVE("Existing dialog raised"); LEAVE("Existing dialog raised");
return; return;
} }
assoc_dialog = g_new0 (AssocDialog, 1); doclink_dialog = g_new0 (DoclinkDialog, 1);
assoc_dialog->is_list_trans = FALSE; doclink_dialog->is_list_trans = FALSE;
gnc_assoc_dialog_create (parent, assoc_dialog); gnc_doclink_dialog_create (parent, doclink_dialog);
assoc_dialog->component_id = gnc_register_gui_component (DIALOG_ASSOC_CM_CLASS, doclink_dialog->component_id =
gnc_register_gui_component (DIALOG_DOCLINK_CM_CLASS,
refresh_handler, close_handler, refresh_handler, close_handler,
assoc_dialog); doclink_dialog);
gnc_gui_component_set_session (assoc_dialog->component_id, gnc_gui_component_set_session (doclink_dialog->component_id,
assoc_dialog->session); doclink_dialog->session);
LEAVE(" "); LEAVE(" ");
} }
void void
gnc_assoc_trans_dialog (GtkWindow *parent) gnc_doclink_trans_dialog (GtkWindow *parent)
{ {
AssocDialog *assoc_dialog; DoclinkDialog *doclink_dialog;
ENTER(" "); ENTER(" ");
if (gnc_forall_gui_components (DIALOG_ASSOC_CM_CLASS, show_handler, GINT_TO_POINTER(0))) if (gnc_forall_gui_components (DIALOG_DOCLINK_CM_CLASS,
show_handler, GINT_TO_POINTER(0)))
{ {
LEAVE("Existing dialog raised"); LEAVE("Existing dialog raised");
return; return;
} }
assoc_dialog = g_new0 (AssocDialog, 1); doclink_dialog = g_new0 (DoclinkDialog, 1);
assoc_dialog->is_list_trans = TRUE; doclink_dialog->is_list_trans = TRUE;
gnc_assoc_dialog_create (parent, assoc_dialog); gnc_doclink_dialog_create (parent, doclink_dialog);
assoc_dialog->component_id = gnc_register_gui_component (DIALOG_ASSOC_CM_CLASS, doclink_dialog->component_id =
gnc_register_gui_component (DIALOG_DOCLINK_CM_CLASS,
refresh_handler, close_handler, refresh_handler, close_handler,
assoc_dialog); doclink_dialog);
gnc_gui_component_set_session (assoc_dialog->component_id, gnc_gui_component_set_session (doclink_dialog->component_id,
assoc_dialog->session); doclink_dialog->session);
LEAVE(" "); LEAVE(" ");
} }

View File

@ -1,5 +1,5 @@
/********************************************************************\ /********************************************************************\
* dialog-assoc.h -- Associations dialog * * dialog-doclink.h -- Document links dialog *
* Copyright (C) 2020 Robert Fewell * * Copyright (C) 2020 Robert Fewell *
* * * *
* This program is free software; you can redistribute it and/or * * This program is free software; you can redistribute it and/or *
@ -20,8 +20,8 @@
* Boston, MA 02110-1301, USA gnu@gnu.org * * Boston, MA 02110-1301, USA gnu@gnu.org *
\********************************************************************/ \********************************************************************/
#ifndef DIALOG_ASSOC_H #ifndef DIALOG_DOCLINK_H
#define DIALOG_ASSOC_H #define DIALOG_DOCLINK_H
/** Present the right edit dialog for the uri. /** Present the right edit dialog for the uri.
* *
@ -34,37 +34,38 @@
* *
* @return The ammeded uri, can be NULL if deletion required. * @return The ammeded uri, can be NULL if deletion required.
*/ */
gchar * gnc_assoc_get_uri_dialog (GtkWindow *parent, const gchar *title, const gchar *uri); gchar * gnc_doclink_get_uri_dialog (GtkWindow *parent, const gchar *title,
const gchar *uri);
/** Open the association uri. /** Open the doclink uri.
* *
* A check is made for the uri being valid and then gnc_launch_assoc is used * A check is made for the uri being valid and then gnc_launch_doclink is used
* *
* @param parent The GtkWindow for the parent widget * @param parent The GtkWindow for the parent widget
* @param uri The association * @param uri The doclink
*/ */
void gnc_assoc_open_uri (GtkWindow *parent, const gchar *uri); void gnc_doclink_open_uri (GtkWindow *parent, const gchar *uri);
/** Present a dialog to list all the Invoice associations. /** Present a dialog to list all the Invoice linked documents.
* *
* A query is run to return all the invoice associations which * A query is run to return all the invoice linked documents which
* are then added to a tree view. From this tree view the invoice * are then added to a tree view. From this tree view the invoice
* and association can be opened along with a dialog to edit the * and linked document can be opened along with a dialog to edit the
* association. * document link.
* *
* @param parent The GtkWindow for the parent widget * @param parent The GtkWindow for the parent widget
*/ */
void gnc_assoc_business_dialog (GtkWindow *parent); void gnc_doclink_business_dialog (GtkWindow *parent);
/** Present a dialog to list all the Transaction associations. /** Present a dialog to list all the Transaction linked documents.
* *
* A query is run to return all the transaction associations which * A query is run to return all the transaction linked documents which
* are then added to a tree view. From this tree view the transaction * are then added to a tree view. From this tree view the transaction
* and association can be opened along with a dialog to edit the * and linked document can be opened along with a dialog to edit the
* association. * document link.
* *
* @param parent The GtkWindow for the parent widget * @param parent The GtkWindow for the parent widget
*/ */
void gnc_assoc_trans_dialog (GtkWindow *parent); void gnc_doclink_trans_dialog (GtkWindow *parent);
#endif #endif

View File

@ -73,8 +73,8 @@
#include "gnc-main-window.h" #include "gnc-main-window.h"
#include "gnc-state.h" #include "gnc-state.h"
#include "dialog-assoc.h" #include "dialog-doclink.h"
#include "dialog-assoc-utils.h" #include "dialog-doclink-utils.h"
#include "dialog-transfer.h" #include "dialog-transfer.h"
#include "gnc-uri-utils.h" #include "gnc-uri-utils.h"
@ -169,7 +169,7 @@ struct _invoice_window
GtkWidget * active_check; GtkWidget * active_check;
GtkWidget * paid_label; GtkWidget * paid_label;
GtkWidget * assoc_link_button; GtkWidget * doclink_button;
GtkWidget * owner_box; GtkWidget * owner_box;
GtkWidget * owner_label; GtkWidget * owner_label;
@ -328,12 +328,12 @@ gnc_invoice_window_get_invoice (InvoiceWindow *iw)
} }
GtkWidget * GtkWidget *
gnc_invoice_window_get_assoc_link_button (InvoiceWindow *iw) gnc_invoice_window_get_doclink_button (InvoiceWindow *iw)
{ {
if (!iw) if (!iw)
return NULL; return NULL;
return iw->assoc_link_button; return iw->doclink_button;
} }
static void static void
@ -2407,10 +2407,10 @@ gnc_invoice_save_page (InvoiceWindow *iw,
} }
static gboolean static gboolean
assoc_link_button_cb (GtkLinkButton *button, InvoiceWindow *iw) doclink_button_cb (GtkLinkButton *button, InvoiceWindow *iw)
{ {
GncInvoice *invoice = gncInvoiceLookup (iw->book, &iw->invoice_guid); GncInvoice *invoice = gncInvoiceLookup (iw->book, &iw->invoice_guid);
gnc_assoc_open_uri (GTK_WINDOW(iw->dialog), gncInvoiceGetAssociation (invoice)); gnc_doclink_open_uri (GTK_WINDOW(iw->dialog), gncInvoiceGetDocLink (invoice));
return TRUE; return TRUE;
} }
@ -2427,7 +2427,7 @@ gnc_invoice_create_page (InvoiceWindow *iw, gpointer page)
const gchar *prefs_group = NULL; const gchar *prefs_group = NULL;
gboolean is_credit_note = FALSE; gboolean is_credit_note = FALSE;
const gchar *style_label = NULL; const gchar *style_label = NULL;
const gchar *assoc_uri; const gchar *doclink_uri;
invoice = gncInvoiceLookup (iw->book, &iw->invoice_guid); invoice = gncInvoiceLookup (iw->book, &iw->invoice_guid);
is_credit_note = gncInvoiceGetIsCreditNote (invoice); is_credit_note = gncInvoiceGetIsCreditNote (invoice);
@ -2458,22 +2458,24 @@ gnc_invoice_create_page (InvoiceWindow *iw, gpointer page)
iw->job_box = GTK_WIDGET (gtk_builder_get_object (builder, "page_job_hbox")); iw->job_box = GTK_WIDGET (gtk_builder_get_object (builder, "page_job_hbox"));
iw->paid_label = GTK_WIDGET (gtk_builder_get_object (builder, "paid_label")); iw->paid_label = GTK_WIDGET (gtk_builder_get_object (builder, "paid_label"));
iw->assoc_link_button = GTK_WIDGET(gtk_builder_get_object (builder, "assoc_link_button")); iw->doclink_button = GTK_WIDGET(gtk_builder_get_object (builder, "doclink_button"));
g_signal_connect (G_OBJECT(iw->assoc_link_button), "activate-link", g_signal_connect (G_OBJECT (iw->doclink_button), "activate-link",
G_CALLBACK(assoc_link_button_cb), iw); G_CALLBACK (doclink_button_cb), iw);
/* invoice association */ /* invoice doclink */
assoc_uri = gncInvoiceGetAssociation (invoice); doclink_uri = gncInvoiceGetDocLink (invoice);
if (assoc_uri) if (doclink_uri)
{ {
gchar *display_uri = gnc_assoc_get_unescaped_just_uri (assoc_uri); gchar *display_uri = gnc_doclink_get_unescaped_just_uri (doclink_uri);
gtk_button_set_label (GTK_BUTTON(iw->assoc_link_button), _("Open Linked Document:")); gtk_button_set_label (GTK_BUTTON (iw->doclink_button),
gtk_link_button_set_uri (GTK_LINK_BUTTON(iw->assoc_link_button), display_uri); _("Open Linked Document:"));
gtk_widget_show (GTK_WIDGET (iw->assoc_link_button)); gtk_link_button_set_uri (GTK_LINK_BUTTON (iw->doclink_button),
display_uri);
gtk_widget_show (GTK_WIDGET (iw->doclink_button));
g_free (display_uri); g_free (display_uri);
} }
else else
gtk_widget_hide (GTK_WIDGET (iw->assoc_link_button)); gtk_widget_hide (GTK_WIDGET (iw->doclink_button));
// Add a style context for this label so it can be easily manipulated with css // Add a style context for this label so it can be easily manipulated with css
gnc_widget_style_context_add_class (GTK_WIDGET(iw->paid_label), "gnc-class-highlight"); gnc_widget_style_context_add_class (GTK_WIDGET(iw->paid_label), "gnc-class-highlight");
@ -2665,30 +2667,30 @@ gnc_invoice_create_page (InvoiceWindow *iw, gpointer page)
} }
void void
gnc_invoice_update_assoc_for_window (GncInvoice *invoice, const gchar *uri) gnc_invoice_update_doclink_for_window (GncInvoice *invoice, const gchar *uri)
{ {
InvoiceWindow *iw = gnc_plugin_page_invoice_get_window (invoice); InvoiceWindow *iw = gnc_plugin_page_invoice_get_window (invoice);
if (iw) if (iw)
{ {
GtkWidget *assoc_link_button = gnc_invoice_window_get_assoc_link_button (iw); GtkWidget *doclink_button = gnc_invoice_window_get_doclink_button (iw);
if (g_strcmp0 (uri, "") == 0) // deleted uri if (g_strcmp0 (uri, "") == 0) // deleted uri
{ {
GtkAction *uri_action; GtkAction *uri_action;
// update the menu actions // update the menu actions
uri_action = gnc_plugin_page_get_action (GNC_PLUGIN_PAGE(iw->page), "BusinessAssociationOpenAction"); uri_action = gnc_plugin_page_get_action (GNC_PLUGIN_PAGE(iw->page), "BusinessLinkOpenAction");
gtk_action_set_sensitive (uri_action, FALSE);
gtk_action_set_sensitive (uri_action, FALSE); gtk_action_set_sensitive (uri_action, FALSE);
gtk_widget_hide (assoc_link_button); gtk_widget_hide (doclink_button);
} }
else else
{ {
gchar *display_uri = gnc_assoc_get_unescaped_just_uri (uri); gchar *display_uri = gnc_doclink_get_unescaped_just_uri (uri);
gtk_link_button_set_uri (GTK_LINK_BUTTON(assoc_link_button), display_uri); gtk_link_button_set_uri (GTK_LINK_BUTTON (doclink_button),
gtk_widget_show (GTK_WIDGET(assoc_link_button)); display_uri);
gtk_widget_show (GTK_WIDGET (doclink_button));
g_free (display_uri); g_free (display_uri);
} }
} }

View File

@ -84,9 +84,10 @@ gchar *gnc_invoice_get_title (InvoiceWindow *iw);
GncInvoice * gnc_invoice_window_get_invoice (InvoiceWindow *iw); GncInvoice * gnc_invoice_window_get_invoice (InvoiceWindow *iw);
GtkWidget * gnc_invoice_window_get_assoc_link_button (InvoiceWindow *iw); GtkWidget * gnc_invoice_window_get_doclink_button (InvoiceWindow *iw);
void gnc_invoice_update_assoc_for_window (GncInvoice *invoice, const gchar *uri); void gnc_invoice_update_doclink_for_window (GncInvoice *invoice,
const gchar *uri);
GncInvoiceType gnc_invoice_get_type_from_window(InvoiceWindow *iw); GncInvoiceType gnc_invoice_get_type_from_window(InvoiceWindow *iw);

View File

@ -39,7 +39,7 @@
#include "gnc-plugin-basic-commands.h" #include "gnc-plugin-basic-commands.h"
#include "gnc-ui-util.h" #include "gnc-ui-util.h"
#include "dialog-assoc.h" #include "dialog-doclink.h"
#include "dialog-book-close.h" #include "dialog-book-close.h"
#include "dialog-file-access.h" #include "dialog-file-access.h"
#include "dialog-fincalc.h" #include "dialog-fincalc.h"
@ -213,8 +213,8 @@ static GtkActionEntry gnc_plugin_actions [] =
G_CALLBACK (gnc_main_window_cmd_tools_imap_editor) G_CALLBACK (gnc_main_window_cmd_tools_imap_editor)
}, },
{ {
"ToolsTransAssocAction", NULL, N_("_Transaction Associations"), NULL, "ToolsTransLinkedDocsAction", NULL, N_("_Transaction Linked Documents"), NULL,
N_("View all Transaction Associations"), N_("View all Transaction Linked Documents"),
G_CALLBACK (gnc_main_window_cmd_tools_trans_assoc) G_CALLBACK (gnc_main_window_cmd_tools_trans_assoc)
}, },
@ -606,7 +606,7 @@ static void
gnc_main_window_cmd_tools_trans_assoc (GtkAction *action, GncMainWindowActionData *data) gnc_main_window_cmd_tools_trans_assoc (GtkAction *action, GncMainWindowActionData *data)
{ {
gnc_set_busy_cursor (NULL, TRUE); gnc_set_busy_cursor (NULL, TRUE);
gnc_assoc_trans_dialog (GTK_WINDOW (data->window)); gnc_doclink_trans_dialog (GTK_WINDOW (data->window));
gnc_unset_busy_cursor (NULL); gnc_unset_busy_cursor (NULL);
} }

View File

@ -29,7 +29,7 @@
#include <glib/gi18n.h> #include <glib/gi18n.h>
#include <string.h> #include <string.h>
#include "dialog-assoc.h" #include "dialog-doclink.h"
#include "dialog-billterms.h" #include "dialog-billterms.h"
#include "dialog-customer.h" #include "dialog-customer.h"
#include "dialog-employee.h" #include "dialog-employee.h"
@ -275,8 +275,8 @@ static GtkActionEntry gnc_plugin_actions [] =
/* Other menu items */ /* Other menu items */
{ {
"BusinessAssocOpenAction", NULL, N_("Business _Associations"), NULL, "BusinessLinkOpenAction", NULL, N_("Business Links"), NULL,
N_("View all Business Associations"), N_("View all Linked Business Documents"),
G_CALLBACK (gnc_plugin_business_cmd_assoc) G_CALLBACK (gnc_plugin_business_cmd_assoc)
}, },
{ {
@ -759,7 +759,7 @@ gnc_plugin_business_cmd_assoc (GtkAction *action,
g_return_if_fail (mw != NULL); g_return_if_fail (mw != NULL);
g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (mw->data)); g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (mw->data));
gnc_assoc_business_dialog (GTK_WINDOW (mw->window)); gnc_doclink_business_dialog (GTK_WINDOW (mw->window));
} }
static void static void

View File

@ -43,8 +43,8 @@
#include "gnc-uri-utils.h" #include "gnc-uri-utils.h"
#include "gnc-window.h" #include "gnc-window.h"
#include "dialog-utils.h" #include "dialog-utils.h"
#include "dialog-assoc.h" #include "dialog-doclink.h"
#include "dialog-assoc-utils.h" #include "dialog-doclink-utils.h"
#include "gncInvoice.h" #include "gncInvoice.h"
/* This static indicates the debugging module that this .o belongs to. */ /* This static indicates the debugging module that this .o belongs to. */
@ -88,9 +88,9 @@ static void gnc_plugin_page_invoice_cmd_duplicateEntry (GtkAction *action, GncPl
static void gnc_plugin_page_invoice_cmd_pay_invoice (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_save_layout (GtkAction *action, GncPluginPageInvoice *plugin_page); static void gnc_plugin_page_invoice_cmd_save_layout (GtkAction *action, GncPluginPageInvoice *plugin_page);
static void gnc_plugin_page_invoice_cmd_reset_layout (GtkAction *action, GncPluginPageInvoice *plugin_page); static void gnc_plugin_page_invoice_cmd_reset_layout (GtkAction *action, GncPluginPageInvoice *plugin_page);
static void gnc_plugin_page_invoice_cmd_associate (GtkAction *action, GncPluginPageInvoice *plugin_page); static void gnc_plugin_page_invoice_cmd_link (GtkAction *action, GncPluginPageInvoice *plugin_page);
static void gnc_plugin_page_invoice_cmd_associate_remove (GtkAction *action, GncPluginPageInvoice *plugin_page); static void gnc_plugin_page_invoice_cmd_link_remove (GtkAction *action, GncPluginPageInvoice *plugin_page);
static void gnc_plugin_page_invoice_cmd_associate_open (GtkAction *action, GncPluginPageInvoice *plugin_page); static void gnc_plugin_page_invoice_cmd_link_open (GtkAction *action, GncPluginPageInvoice *plugin_page);
static void gnc_plugin_page_invoice_cmd_company_report (GtkAction *action, GncPluginPageInvoice *plugin_page); static void gnc_plugin_page_invoice_cmd_company_report (GtkAction *action, GncPluginPageInvoice *plugin_page);
static void gnc_plugin_page_redraw_help_cb( GnucashRegister *gsr, GncPluginPageInvoice *invoice_page ); static void gnc_plugin_page_redraw_help_cb( GnucashRegister *gsr, GncPluginPageInvoice *invoice_page );
@ -218,14 +218,14 @@ static GtkActionEntry gnc_plugin_page_invoice_actions [] =
G_CALLBACK (gnc_plugin_page_invoice_cmd_new_invoice) G_CALLBACK (gnc_plugin_page_invoice_cmd_new_invoice)
}, },
{ {
"BusinessAssociationAction", NULL, "_Manage Document Link...", NULL, "BusinessLinkAction", NULL, "_Manage Document Link...", NULL,
"Manage link of an external document to this item.", "Manage link of an external document to this item.",
G_CALLBACK (gnc_plugin_page_invoice_cmd_associate) G_CALLBACK (gnc_plugin_page_invoice_cmd_link)
}, },
{ {
"BusinessAssociationOpenAction", NULL, "_Open Linked Document", NULL, "BusinessLinkOpenAction", NULL, "_Open Linked Document", NULL,
"Open the linked document", "Open the linked document",
G_CALLBACK (gnc_plugin_page_invoice_cmd_associate_open) G_CALLBACK (gnc_plugin_page_invoice_cmd_link_open)
}, },
{ {
"ToolsProcessPaymentAction", GNC_ICON_INVOICE_PAY, "_Pay Invoice", NULL, "ToolsProcessPaymentAction", GNC_ICON_INVOICE_PAY, "_Pay Invoice", NULL,
@ -260,8 +260,7 @@ static const gchar *invoice_book_readwrite_actions[] =
"EditDuplicateInvoiceAction", "EditDuplicateInvoiceAction",
"BusinessNewInvoiceAction", "BusinessNewInvoiceAction",
"ToolsProcessPaymentAction", "ToolsProcessPaymentAction",
"BusinessAssociationAction", "BusinessLinkAction",
"BusinessAssociationRemoveAction",
NULL NULL
}; };
@ -301,8 +300,8 @@ static action_toolbar_labels invoice_action_labels[] =
{"EditUnpostInvoiceAction", N_("_Unpost Invoice")}, {"EditUnpostInvoiceAction", N_("_Unpost Invoice")},
{"BusinessNewInvoiceAction", N_("New _Invoice")}, {"BusinessNewInvoiceAction", N_("New _Invoice")},
{"ToolsProcessPaymentAction", N_("_Pay Invoice")}, {"ToolsProcessPaymentAction", N_("_Pay Invoice")},
{"BusinessAssociationAction", N_("_Manage Document Link")}, {"BusinessLinkAction", N_("_Manage Document Link")},
{"BusinessAssociationOpenAction", N_("_Open Linked Document")}, {"BusinessLinkOpenAction", N_("_Open Linked Document")},
{NULL, NULL}, {NULL, NULL},
}; };
@ -322,8 +321,8 @@ static action_toolbar_labels bill_action_labels[] =
{"EditUnpostInvoiceAction", N_("_Unpost Bill")}, {"EditUnpostInvoiceAction", N_("_Unpost Bill")},
{"BusinessNewInvoiceAction", N_("New _Bill")}, {"BusinessNewInvoiceAction", N_("New _Bill")},
{"ToolsProcessPaymentAction", N_("_Pay Bill")}, {"ToolsProcessPaymentAction", N_("_Pay Bill")},
{"BusinessAssociationAction", N_("_Manage Document Link")}, {"BusinessLinkAction", N_("_Manage Document Link")},
{"BusinessAssociationOpenAction", N_("_Open Linked Document")}, {"BusinessLinkOpenAction", N_("_Open Linked Document")},
{NULL, NULL}, {NULL, NULL},
}; };
@ -343,8 +342,8 @@ static action_toolbar_labels voucher_action_labels[] =
{"EditUnpostInvoiceAction", N_("_Unpost Voucher")}, {"EditUnpostInvoiceAction", N_("_Unpost Voucher")},
{"BusinessNewInvoiceAction", N_("New _Voucher")}, {"BusinessNewInvoiceAction", N_("New _Voucher")},
{"ToolsProcessPaymentAction", N_("_Pay Voucher")}, {"ToolsProcessPaymentAction", N_("_Pay Voucher")},
{"BusinessAssociationAction", N_("_Manage Document Link")}, {"BusinessLinkAction", N_("_Manage Document Link")},
{"BusinessAssociationOpenAction", N_("_Open Linked Document")}, {"BusinessLinkOpenAction", N_("_Open Linked Document")},
{NULL, NULL}, {NULL, NULL},
}; };
@ -364,8 +363,8 @@ static action_toolbar_labels creditnote_action_labels[] =
{"EditUnpostInvoiceAction", N_("_Unpost Credit Note")}, {"EditUnpostInvoiceAction", N_("_Unpost Credit Note")},
{"BusinessNewInvoiceAction", N_("New _Credit Note")}, {"BusinessNewInvoiceAction", N_("New _Credit Note")},
{"ToolsProcessPaymentAction", N_("_Pay Credit Note")}, {"ToolsProcessPaymentAction", N_("_Pay Credit Note")},
{"BusinessAssociationAction", N_("_Manage Document Link")}, {"BusinessLinkAction", N_("_Manage Document Link")},
{"BusinessAssociationOpenAction", N_("_Open Linked Document")}, {"BusinessLinkOpenAction", N_("_Open Linked Document")},
{NULL, NULL}, {NULL, NULL},
}; };
@ -380,8 +379,8 @@ static action_toolbar_labels invoice_action_tooltips[] = {
{"BlankEntryAction", N_("Move to the blank entry at the bottom of the invoice")}, {"BlankEntryAction", N_("Move to the blank entry at the bottom of the invoice")},
{"ToolsProcessPaymentAction", N_("Enter a payment for the owner of this invoice") }, {"ToolsProcessPaymentAction", N_("Enter a payment for the owner of this invoice") },
{"ReportsCompanyReportAction", N_("Open a company report window for the owner of this invoice") }, {"ReportsCompanyReportAction", N_("Open a company report window for the owner of this invoice") },
{"BusinessAssociationAction", N_("Manage Document Link")}, {"BusinessLinkAction", N_("Manage Document Link")},
{"BusinessAssociationOpenAction", N_("Open Linked Document")}, {"BusinessLinkOpenAction", N_("Open Linked Document")},
{NULL, NULL}, {NULL, NULL},
}; };
@ -401,8 +400,8 @@ static action_toolbar_labels bill_action_tooltips[] = {
{"BlankEntryAction", N_("Move to the blank entry at the bottom of the bill")}, {"BlankEntryAction", N_("Move to the blank entry at the bottom of the bill")},
{"ToolsProcessPaymentAction", N_("Enter a payment for the owner of this bill") }, {"ToolsProcessPaymentAction", N_("Enter a payment for the owner of this bill") },
{"ReportsCompanyReportAction", N_("Open a company report window for the owner of this bill") }, {"ReportsCompanyReportAction", N_("Open a company report window for the owner of this bill") },
{"BusinessAssociationAction", N_("Manage Document Link")}, {"BusinessLinkAction", N_("Manage Document Link")},
{"BusinessAssociationOpenAction", N_("Open Linked Document")}, {"BusinessLinkOpenAction", N_("Open Linked Document")},
{NULL, NULL}, {NULL, NULL},
}; };
@ -422,8 +421,8 @@ static action_toolbar_labels voucher_action_tooltips[] = {
{"BlankEntryAction", N_("Move to the blank entry at the bottom of the voucher")}, {"BlankEntryAction", N_("Move to the blank entry at the bottom of the voucher")},
{"ToolsProcessPaymentAction", N_("Enter a payment for the owner of this voucher") }, {"ToolsProcessPaymentAction", N_("Enter a payment for the owner of this voucher") },
{"ReportsCompanyReportAction", N_("Open a company report window for the owner of this voucher") }, {"ReportsCompanyReportAction", N_("Open a company report window for the owner of this voucher") },
{"BusinessAssociationAction", N_("Manage Document Link")}, {"BusinessLinkAction", N_("Manage Document Link")},
{"BusinessAssociationOpenAction", N_("Open Linked Document")}, {"BusinessLinkOpenAction", N_("Open Linked Document")},
{NULL, NULL}, {NULL, NULL},
}; };
@ -443,8 +442,8 @@ static action_toolbar_labels creditnote_action_tooltips[] = {
{"BlankEntryAction", N_("Move to the blank entry at the bottom of the credit note")}, {"BlankEntryAction", N_("Move to the blank entry at the bottom of the credit note")},
{"ToolsProcessPaymentAction", N_("Enter a payment for the owner of this credit note") }, {"ToolsProcessPaymentAction", N_("Enter a payment for the owner of this credit note") },
{"ReportsCompanyReportAction", N_("Open a company report window for the owner of this credit note") }, {"ReportsCompanyReportAction", N_("Open a company report window for the owner of this credit note") },
{"BusinessAssociationAction", N_("_Manage Document Link")}, {"BusinessLinkAction", N_("_Manage Document Link")},
{"BusinessAssociationOpenAction", N_("Open Linked Document")}, {"BusinessLinkOpenAction", N_("Open Linked Document")},
{NULL, NULL}, {NULL, NULL},
}; };
@ -607,8 +606,7 @@ update_assoc_actions (GncPluginPage *plugin_page, gboolean has_uri)
{ {
GtkAction *uri_action; GtkAction *uri_action;
uri_action = gnc_plugin_page_get_action (GNC_PLUGIN_PAGE(plugin_page), "BusinessAssociationOpenAction"); uri_action = gnc_plugin_page_get_action (GNC_PLUGIN_PAGE(plugin_page), "BusinessLinkOpenAction");
gtk_action_set_sensitive (uri_action, has_uri);
gtk_action_set_sensitive (uri_action, has_uri); gtk_action_set_sensitive (uri_action, has_uri);
} }
@ -743,9 +741,9 @@ gnc_plugin_page_invoice_update_menus (GncPluginPage *page, gboolean is_posted, g
/* update the layout action tooltips */ /* update the layout action tooltips */
gnc_plugin_page_invoice_action_update (action_group, tooltip_layout_list, (void*)gtk_action_set_tooltip); gnc_plugin_page_invoice_action_update (action_group, tooltip_layout_list, (void*)gtk_action_set_tooltip);
// update association buttons // update doclink buttons
invoice = gnc_invoice_window_get_invoice (priv->iw); invoice = gnc_invoice_window_get_invoice (priv->iw);
if (gncInvoiceGetAssociation (invoice)) if (gncInvoiceGetDocLink (invoice))
has_uri = TRUE; has_uri = TRUE;
update_assoc_actions (page, has_uri); update_assoc_actions (page, has_uri);
@ -1341,7 +1339,7 @@ gnc_plugin_page_invoice_cmd_reset_layout (GtkAction *action,
} }
static void static void
gnc_plugin_page_invoice_cmd_associate (GtkAction *action, gnc_plugin_page_invoice_cmd_link (GtkAction *action,
GncPluginPageInvoice *plugin_page) GncPluginPageInvoice *plugin_page)
{ {
GncPluginPageInvoicePrivate *priv; GncPluginPageInvoicePrivate *priv;
@ -1358,27 +1356,30 @@ gnc_plugin_page_invoice_cmd_associate (GtkAction *action,
parent = GTK_WINDOW(gnc_plugin_page_get_window (GNC_PLUGIN_PAGE(plugin_page))); parent = GTK_WINDOW(gnc_plugin_page_get_window (GNC_PLUGIN_PAGE(plugin_page)));
invoice = gnc_invoice_window_get_invoice (priv->iw); invoice = gnc_invoice_window_get_invoice (priv->iw);
uri = gncInvoiceGetAssociation (invoice); uri = gncInvoiceGetDocLink (invoice);
ret_uri = gnc_assoc_get_uri_dialog (parent, _("Manage Document Link"), uri); ret_uri = gnc_doclink_get_uri_dialog (parent, _("Manage Document Link"), uri);
if (ret_uri && g_strcmp0 (uri, ret_uri) != 0) if (ret_uri && g_strcmp0 (uri, ret_uri) != 0)
{ {
GtkWidget *assoc_link_button = gnc_invoice_window_get_assoc_link_button (priv->iw); GtkWidget *doclink_button =
gnc_invoice_window_get_doclink_button (priv->iw);
if (assoc_link_button) if (doclink_button)
{ {
if (g_strcmp0 (ret_uri, "") == 0) if (g_strcmp0 (ret_uri, "") == 0)
gtk_widget_hide (GTK_WIDGET(assoc_link_button)); gtk_widget_hide (GTK_WIDGET(doclink_button));
else else
{ {
gchar *display_uri = gnc_assoc_get_unescaped_just_uri (ret_uri); gchar *display_uri =
gtk_link_button_set_uri (GTK_LINK_BUTTON(assoc_link_button), display_uri); gnc_doclink_get_unescaped_just_uri (ret_uri);
gtk_widget_show (GTK_WIDGET(assoc_link_button)); gtk_link_button_set_uri (GTK_LINK_BUTTON(doclink_button),
display_uri);
gtk_widget_show (GTK_WIDGET(doclink_button));
g_free (display_uri); g_free (display_uri);
} }
} }
gncInvoiceSetAssociation (invoice, ret_uri); gncInvoiceSetDocLink (invoice, ret_uri);
has_uri = TRUE; has_uri = TRUE;
} }
@ -1390,14 +1391,14 @@ gnc_plugin_page_invoice_cmd_associate (GtkAction *action,
} }
static void static void
gnc_plugin_page_invoice_cmd_associate_remove (GtkAction *action, gnc_plugin_page_invoice_cmd_link_remove (GtkAction *action,
GncPluginPageInvoice *plugin_page) GncPluginPageInvoice *plugin_page)
{ {
GncPluginPageInvoicePrivate *priv; GncPluginPageInvoicePrivate *priv;
GtkWindow *parent; GtkWindow *parent;
GtkAction *uri_action; GtkAction *uri_action;
GncInvoice *invoice; GncInvoice *invoice;
GtkWidget *assoc_link_button; GtkWidget *doclink_button;
g_return_if_fail (GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page)); g_return_if_fail (GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page));
ENTER("(action %p, plugin_page %p)", action, plugin_page); ENTER("(action %p, plugin_page %p)", action, plugin_page);
@ -1405,12 +1406,12 @@ gnc_plugin_page_invoice_cmd_associate_remove (GtkAction *action,
parent = GTK_WINDOW(gnc_plugin_page_get_window (GNC_PLUGIN_PAGE(plugin_page))); parent = GTK_WINDOW(gnc_plugin_page_get_window (GNC_PLUGIN_PAGE(plugin_page)));
invoice = gnc_invoice_window_get_invoice (priv->iw); invoice = gnc_invoice_window_get_invoice (priv->iw);
gncInvoiceSetAssociation (invoice, ""); gncInvoiceSetDocLink (invoice, "");
assoc_link_button = gnc_invoice_window_get_assoc_link_button (priv->iw); doclink_button = gnc_invoice_window_get_doclink_button (priv->iw);
if (assoc_link_button) if (doclink_button)
gtk_widget_hide (GTK_WIDGET(assoc_link_button)); gtk_widget_hide (GTK_WIDGET(doclink_button));
// update the menu actions // update the menu actions
update_assoc_actions (GNC_PLUGIN_PAGE(plugin_page), FALSE); update_assoc_actions (GNC_PLUGIN_PAGE(plugin_page), FALSE);
@ -1419,7 +1420,7 @@ gnc_plugin_page_invoice_cmd_associate_remove (GtkAction *action,
} }
static void static void
gnc_plugin_page_invoice_cmd_associate_open (GtkAction *action, gnc_plugin_page_invoice_cmd_link_open (GtkAction *action,
GncPluginPageInvoice *plugin_page) GncPluginPageInvoice *plugin_page)
{ {
GncPluginPageInvoicePrivate *priv; GncPluginPageInvoicePrivate *priv;
@ -1433,10 +1434,10 @@ gnc_plugin_page_invoice_cmd_associate_open (GtkAction *action,
parent = GTK_WINDOW(gnc_plugin_page_get_window (GNC_PLUGIN_PAGE(plugin_page))); parent = GTK_WINDOW(gnc_plugin_page_get_window (GNC_PLUGIN_PAGE(plugin_page)));
invoice = gnc_invoice_window_get_invoice (priv->iw); invoice = gnc_invoice_window_get_invoice (priv->iw);
uri = gncInvoiceGetAssociation (invoice); uri = gncInvoiceGetDocLink (invoice);
if (uri) if (uri)
gnc_assoc_open_uri (parent, uri); gnc_doclink_open_uri (parent, uri);
LEAVE(" "); LEAVE(" ");
} }

View File

@ -256,13 +256,13 @@ static void gnc_plugin_page_register_cmd_account_report (GtkAction* action,
GncPluginPageRegister* plugin_page); GncPluginPageRegister* plugin_page);
static void gnc_plugin_page_register_cmd_transaction_report (GtkAction* action, static void gnc_plugin_page_register_cmd_transaction_report (GtkAction* action,
GncPluginPageRegister* plugin_page); GncPluginPageRegister* plugin_page);
static void gnc_plugin_page_register_cmd_associate_transaction (GtkAction *action, static void gnc_plugin_page_register_cmd_linked_transaction (GtkAction *action,
GncPluginPageRegister *plugin_page); GncPluginPageRegister *plugin_page);
static void gnc_plugin_page_register_cmd_associate_transaction_open (GtkAction *action, static void gnc_plugin_page_register_cmd_linked_transaction_open (GtkAction *action,
GncPluginPageRegister *plugin_page); GncPluginPageRegister *plugin_page);
static void gnc_plugin_page_register_cmd_associate_transaction_remove (GtkAction *action, static void gnc_plugin_page_register_cmd_linked_transaction_remove (GtkAction *action,
GncPluginPageRegister *plugin_page); GncPluginPageRegister *plugin_page);
static void gnc_plugin_page_register_cmd_jump_associated_invoice (GtkAction* action, static void gnc_plugin_page_register_cmd_jump_linked_invoice (GtkAction* action,
GncPluginPageRegister* plugin_page); GncPluginPageRegister* plugin_page);
static void gnc_plugin_page_help_changed_cb (GNCSplitReg* gsr, static void gnc_plugin_page_help_changed_cb (GNCSplitReg* gsr,
GncPluginPageRegister* register_page); GncPluginPageRegister* register_page);
@ -295,14 +295,14 @@ static GList* invoices_from_transaction (Transaction* trans);
/* Translators: This is a menu item that opens a dialog for linking an /* Translators: This is a menu item that opens a dialog for linking an
external file or URL with the bill, invoice, transaction, or voucher or external file or URL with the bill, invoice, transaction, or voucher or
removing such an link. */ removing such an link. */
#define ASSOCIATE_TRANSACTION_LABEL N_("_Manage Document Link...") #define LINK_TRANSACTION_LABEL N_("_Manage Document Link...")
/* Translators: This is a menu item that opens an external file or URI that may /* Translators: This is a menu item that opens an external file or URI that may
be linked to the current bill, invoice, transaction, or voucher using be linked to the current bill, invoice, transaction, or voucher using
the operating system's default application for the file or URI mime type. */ the operating system's default application for the file or URI mime type. */
#define ASSOCIATE_TRANSACTION_OPEN_LABEL N_("_Open Linked Document") #define LINK_TRANSACTION_OPEN_LABEL N_("_Open Linked Document")
/* Translators: This is a menu item that will open the bill, invoice, or voucher /* Translators: This is a menu item that will open the bill, invoice, or voucher
that is posted to the current transaction if there is one. */ that is posted to the current transaction if there is one. */
#define JUMP_ASSOCIATED_INVOICE_LABEL N_("Jump to Invoice") #define JUMP_LINKED_INVOICE_LABEL N_("Jump to Invoice")
#define CUT_SPLIT_LABEL N_("Cu_t Split") #define CUT_SPLIT_LABEL N_("Cu_t Split")
#define COPY_SPLIT_LABEL N_("_Copy Split") #define COPY_SPLIT_LABEL N_("_Copy Split")
#define PASTE_SPLIT_LABEL N_("_Paste Split") #define PASTE_SPLIT_LABEL N_("_Paste Split")
@ -313,9 +313,9 @@ static GList* invoices_from_transaction (Transaction* trans);
#define PASTE_TRANSACTION_TIP N_("Paste the transaction from the clipboard") #define PASTE_TRANSACTION_TIP N_("Paste the transaction from the clipboard")
#define DUPLICATE_TRANSACTION_TIP N_("Make a copy of the current transaction") #define DUPLICATE_TRANSACTION_TIP N_("Make a copy of the current transaction")
#define DELETE_TRANSACTION_TIP N_("Delete the current transaction") #define DELETE_TRANSACTION_TIP N_("Delete the current transaction")
#define ASSOCIATE_TRANSACTION_TIP N_("Add, change, or unlink the document linked with the current transaction") #define LINK_TRANSACTION_TIP N_("Add, change, or unlink the document linked with the current transaction")
#define ASSOCIATE_TRANSACTION_OPEN_TIP N_("Open the linked document for the current transaction") #define LINK_TRANSACTION_OPEN_TIP N_("Open the linked document for the current transaction")
#define JUMP_ASSOCIATED_INVOICE_TIP N_("Jump to the linked bill, invoice, or voucher") #define JUMP_LINKED_INVOICE_TIP N_("Jump to the linked bill, invoice, or voucher")
#define CUT_SPLIT_TIP N_("Cut the selected split into clipboard") #define CUT_SPLIT_TIP N_("Cut the selected split into clipboard")
#define COPY_SPLIT_TIP N_("Copy the selected split into clipboard") #define COPY_SPLIT_TIP N_("Copy the selected split into clipboard")
#define PASTE_SPLIT_TIP N_("Paste the split from the clipboard") #define PASTE_SPLIT_TIP N_("Paste the split from the clipboard")
@ -419,19 +419,19 @@ static GtkActionEntry gnc_plugin_page_register_actions [] =
G_CALLBACK (gnc_plugin_page_register_cmd_reverse_transaction) G_CALLBACK (gnc_plugin_page_register_cmd_reverse_transaction)
}, },
{ {
"AssociateTransactionAction", NULL, ASSOCIATE_TRANSACTION_LABEL, NULL, "LinkTransactionAction", NULL, LINK_TRANSACTION_LABEL, NULL,
ASSOCIATE_TRANSACTION_TIP, LINK_TRANSACTION_TIP,
G_CALLBACK (gnc_plugin_page_register_cmd_associate_transaction) G_CALLBACK (gnc_plugin_page_register_cmd_linked_transaction)
}, },
{ {
"AssociateTransactionOpenAction", NULL, ASSOCIATE_TRANSACTION_OPEN_LABEL, NULL, "LinkedTransactionOpenAction", NULL, LINK_TRANSACTION_OPEN_LABEL, NULL,
ASSOCIATE_TRANSACTION_OPEN_TIP, LINK_TRANSACTION_OPEN_TIP,
G_CALLBACK (gnc_plugin_page_register_cmd_associate_transaction_open) G_CALLBACK (gnc_plugin_page_register_cmd_linked_transaction_open)
}, },
{ {
"JumpAssociatedInvoiceAction", NULL, JUMP_ASSOCIATED_INVOICE_LABEL, NULL, "JumpLinkedInvoiceAction", NULL, JUMP_LINKED_INVOICE_LABEL, NULL,
JUMP_ASSOCIATED_INVOICE_TIP, JUMP_LINKED_INVOICE_TIP,
G_CALLBACK (gnc_plugin_page_register_cmd_jump_associated_invoice) G_CALLBACK (gnc_plugin_page_register_cmd_jump_linked_invoice)
}, },
/* View menu */ /* View menu */
@ -614,9 +614,9 @@ static action_toolbar_labels toolbar_labels[] =
{ "BlankTransactionAction", N_ ("Blank") }, { "BlankTransactionAction", N_ ("Blank") },
{ "ActionsReconcileAction", N_ ("Reconcile") }, { "ActionsReconcileAction", N_ ("Reconcile") },
{ "ActionsAutoClearAction", N_ ("Auto-clear") }, { "ActionsAutoClearAction", N_ ("Auto-clear") },
{ "AssociateTransactionAction", N_ ("Manage Document Link") }, { "LinkTransactionAction", N_ ("Manage Document Link") },
{ "AssociateTransactionOpenAction", N_ ("Open Linked Document") }, { "LinkedTransactionOpenAction", N_ ("Open Linked Document") },
{ "JumpAssociatedInvoiceAction", N_ ("Invoice") }, { "JumpLinkedInvoiceAction", N_ ("Invoice") },
{ NULL, NULL }, { NULL, NULL },
}; };
@ -999,7 +999,7 @@ static const char* readonly_inactive_actions[] =
"ScheduleTransactionAction", "ScheduleTransactionAction",
"ScrubAllAction", "ScrubAllAction",
"ScrubCurrentAction", "ScrubCurrentAction",
"AssociateTransactionAction", "LinkTransactionAction",
NULL NULL
}; };
@ -1023,9 +1023,9 @@ static const char* tran_action_labels[] =
PASTE_TRANSACTION_LABEL, PASTE_TRANSACTION_LABEL,
DUPLICATE_TRANSACTION_LABEL, DUPLICATE_TRANSACTION_LABEL,
DELETE_TRANSACTION_LABEL, DELETE_TRANSACTION_LABEL,
ASSOCIATE_TRANSACTION_LABEL, LINK_TRANSACTION_LABEL,
ASSOCIATE_TRANSACTION_OPEN_LABEL, LINK_TRANSACTION_OPEN_LABEL,
JUMP_ASSOCIATED_INVOICE_LABEL, JUMP_LINKED_INVOICE_LABEL,
NULL NULL
}; };
@ -1037,9 +1037,9 @@ static const char* tran_action_tips[] =
PASTE_TRANSACTION_TIP, PASTE_TRANSACTION_TIP,
DUPLICATE_TRANSACTION_TIP, DUPLICATE_TRANSACTION_TIP,
DELETE_TRANSACTION_TIP, DELETE_TRANSACTION_TIP,
ASSOCIATE_TRANSACTION_TIP, LINK_TRANSACTION_TIP,
ASSOCIATE_TRANSACTION_OPEN_TIP, LINK_TRANSACTION_OPEN_TIP,
JUMP_ASSOCIATED_INVOICE_TIP, JUMP_LINKED_INVOICE_TIP,
NULL NULL
}; };
@ -1141,11 +1141,11 @@ gnc_plugin_page_register_ui_update (gpointer various,
"UnvoidTransactionAction"); "UnvoidTransactionAction");
gtk_action_set_sensitive (GTK_ACTION (action), voided); gtk_action_set_sensitive (GTK_ACTION (action), voided);
/* Set 'Open and Remove Associated' */ /* Set 'Open and Remove Linked Documents' */
uri = xaccTransGetAssociation (trans); uri = xaccTransGetDocLink (trans);
action = gnc_plugin_page_get_action (GNC_PLUGIN_PAGE(page), action = gnc_plugin_page_get_action (GNC_PLUGIN_PAGE(page),
"AssociateTransactionOpenAction"); "LinkedTransactionOpenAction");
gtk_action_set_sensitive (GTK_ACTION(action), (uri ? TRUE:FALSE)); gtk_action_set_sensitive (GTK_ACTION(action), (uri ? TRUE:FALSE));
/* Set 'ExecAssociatedInvoice' /* Set 'ExecAssociatedInvoice'
@ -1154,7 +1154,7 @@ gnc_plugin_page_register_ui_update (gpointer various,
- it has splits with an invoice associated with it - it has splits with an invoice associated with it
*/ */
action = gnc_plugin_page_get_action (GNC_PLUGIN_PAGE (page), action = gnc_plugin_page_get_action (GNC_PLUGIN_PAGE (page),
"JumpAssociatedInvoiceAction"); "JumpLinkedInvoiceAction");
invoices = invoices_from_transaction (trans); invoices = invoices_from_transaction (trans);
gtk_action_set_sensitive (GTK_ACTION (action), (invoices != NULL)); gtk_action_set_sensitive (GTK_ACTION (action), (invoices != NULL));
@ -4547,7 +4547,7 @@ gnc_plugin_page_register_cmd_delete_transaction (GtkAction* action,
} }
static void static void
gnc_plugin_page_register_cmd_associate_transaction (GtkAction *action, gnc_plugin_page_register_cmd_linked_transaction (GtkAction *action,
GncPluginPageRegister* plugin_page) GncPluginPageRegister* plugin_page)
{ {
GncPluginPageRegisterPrivate* priv; GncPluginPageRegisterPrivate* priv;
@ -4563,7 +4563,7 @@ gnc_plugin_page_register_cmd_associate_transaction (GtkAction *action,
} }
static void static void
gnc_plugin_page_register_cmd_associate_transaction_open (GtkAction *action, gnc_plugin_page_register_cmd_linked_transaction_open (GtkAction *action,
GncPluginPageRegister* plugin_page) GncPluginPageRegister* plugin_page)
{ {
GncPluginPageRegisterPrivate* priv; GncPluginPageRegisterPrivate* priv;
@ -4578,7 +4578,7 @@ gnc_plugin_page_register_cmd_associate_transaction_open (GtkAction *action,
} }
static void static void
gnc_plugin_page_register_cmd_associate_transaction_remove (GtkAction *action, gnc_plugin_page_register_cmd_linked_transaction_remove (GtkAction *action,
GncPluginPageRegister* plugin_page) GncPluginPageRegister* plugin_page)
{ {
GncPluginPageRegisterPrivate* priv; GncPluginPageRegisterPrivate* priv;
@ -4628,7 +4628,7 @@ GList* invoices_from_transaction (Transaction* trans)
} }
static void static void
gnc_plugin_page_register_cmd_jump_associated_invoice (GtkAction* action, gnc_plugin_page_register_cmd_jump_linked_invoice (GtkAction* action,
GncPluginPageRegister* plugin_page) GncPluginPageRegister* plugin_page)
{ {
GncPluginPageRegisterPrivate* priv; GncPluginPageRegisterPrivate* priv;
@ -4678,7 +4678,7 @@ gnc_plugin_page_register_cmd_jump_associated_invoice (GtkAction* action,
details = g_list_reverse (details); details = g_list_reverse (details);
choice = gnc_choose_radio_option_dialog choice = gnc_choose_radio_option_dialog
(GNC_PLUGIN_PAGE (plugin_page)->window, _("Select document"), (GNC_PLUGIN_PAGE (plugin_page)->window, _("Select document"),
_("Several documents are associated with this transaction. \ _("Several documents are linked with this transaction. \
Please choose one:"), _("Select"), 0, details); Please choose one:"), _("Select"), 0, details);
if (choice >= 0) if (choice >= 0)
invoice = (GncInvoice *)(g_list_nth (invoices, choice))->data; invoice = (GncInvoice *)(g_list_nth (invoices, choice))->data;

View File

@ -408,7 +408,7 @@ static GtkToggleActionEntry toggle_entries[] =
{ {
{ {
"ViewStyleDoubleLineAction", NULL, N_("_Double Line"), NULL, "ViewStyleDoubleLineAction", NULL, N_("_Double Line"), NULL,
N_("Show a second line with \"Action\", \"Notes\", and \"File Association\" for each transaction."), N_("Show a second line with \"Action\", \"Notes\", and \"Linked Document\" for each transaction."),
G_CALLBACK (gnc_plugin_page_register2_cmd_style_double_line), FALSE G_CALLBACK (gnc_plugin_page_register2_cmd_style_double_line), FALSE
}, },

View File

@ -37,8 +37,8 @@
#include "qof.h" #include "qof.h"
#include "SX-book.h" #include "SX-book.h"
#include "dialog-account.h" #include "dialog-account.h"
#include "dialog-assoc.h" #include "dialog-doclink.h"
#include "dialog-assoc-utils.h" #include "dialog-doclink-utils.h"
#include "dialog-sx-editor.h" #include "dialog-sx-editor.h"
#include "dialog-sx-from-trans.h" #include "dialog-sx-from-trans.h"
#include "gnc-component-manager.h" #include "gnc-component-manager.h"
@ -1292,12 +1292,15 @@ gsr_default_associate_handler (GNCSplitReg *gsr)
return; return;
// fix an earlier error when storing relative paths before version 3.5 // fix an earlier error when storing relative paths before version 3.5
uri = gnc_assoc_convert_trans_associate_uri (trans, gsr->read_only); uri = gnc_doclink_convert_trans_link_uri (trans, gsr->read_only);
ret_uri = gnc_assoc_get_uri_dialog (GTK_WINDOW(gsr->window), _("Change a Transaction Association"), uri); ret_uri =
gnc_doclink_get_uri_dialog (GTK_WINDOW (gsr->window),
_("Change a Transaction Linked Document"),
uri);
if (ret_uri && g_strcmp0 (uri, ret_uri) != 0) if (ret_uri && g_strcmp0 (uri, ret_uri) != 0)
xaccTransSetAssociation (trans, ret_uri); xaccTransSetDocLink (trans, ret_uri);
g_free (ret_uri); g_free (ret_uri);
g_free (uri); g_free (uri);
@ -1327,9 +1330,9 @@ gsr_default_associate_open_handler (GNCSplitReg *gsr)
return; return;
// fix an earlier error when storing relative paths before version 3.5 // fix an earlier error when storing relative paths before version 3.5
uri = gnc_assoc_convert_trans_associate_uri (trans, gsr->read_only); uri = gnc_doclink_convert_trans_link_uri (trans, gsr->read_only);
gnc_assoc_open_uri (GTK_WINDOW (gsr->window), uri); gnc_doclink_open_uri (GTK_WINDOW (gsr->window), uri);
g_free (uri); g_free (uri);
} }
@ -1358,7 +1361,7 @@ gsr_default_associate_remove_handler (GNCSplitReg *gsr)
if (is_trans_readonly_and_warn (GTK_WINDOW(gsr->window), trans)) if (is_trans_readonly_and_warn (GTK_WINDOW(gsr->window), trans))
return; return;
xaccTransSetAssociation (trans, ""); xaccTransSetDocLink (trans, "");
} }
static void static void
@ -1378,10 +1381,10 @@ gsr_default_associate_from_sheet_handler (GNCSplitReg *gsr)
trans = xaccSplitGetParent (split); trans = xaccSplitGetParent (split);
// fix an earlier error when storing relative paths before version 3.5 // fix an earlier error when storing relative paths before version 3.5
uri = gnc_assoc_convert_trans_associate_uri (trans, gsr->read_only); uri = gnc_doclink_convert_trans_link_uri (trans, gsr->read_only);
if (uri) if (uri)
gnc_assoc_open_uri (GTK_WINDOW (gsr->window), uri); gnc_doclink_open_uri (GTK_WINDOW (gsr->window), uri);
g_free (uri); g_free (uri);
} }

View File

@ -33,7 +33,7 @@
#include "business-urls.h" #include "business-urls.h"
#include "combocell.h" #include "combocell.h"
#include "dialog-account.h" #include "dialog-account.h"
#include "dialog-assoc.h" #include "dialog-doclink.h"
#include "dialog-commodity.h" #include "dialog-commodity.h"
#include "dialog-invoice.h" #include "dialog-invoice.h"
#include "dialog-preferences.h" #include "dialog-preferences.h"
@ -167,13 +167,16 @@ gnc_html_register_url_cb (const char *location, const char *label,
} }
} }
else if (strncmp ("trans-association-guid=", location, strlen ("trans-association-guid=")) == 0) else if (strncmp ("trans-doclink-guid=", location,
strlen ("trans-doclink-guid=")) == 0)
{ {
if (!validate_type("trans-association-guid=", location, GNC_ID_TRANS, result, &guid, &entity)) if (!validate_type("trans-doclink-guid=", location, GNC_ID_TRANS,
result, &guid, &entity))
return FALSE; return FALSE;
trans = (Transaction *) entity; trans = (Transaction *) entity;
gnc_assoc_open_uri (gnc_ui_get_gtk_window (GTK_WIDGET(result->parent)), xaccTransGetAssociation (trans)); gnc_doclink_open_uri (gnc_ui_get_gtk_window (GTK_WIDGET (result->parent)),
xaccTransGetDocLink (trans));
return TRUE; return TRUE;
} }

View File

@ -20,8 +20,8 @@
<child name="new-hierarchy" schema="org.gnucash.dialogs.new-hierarchy"/> <child name="new-hierarchy" schema="org.gnucash.dialogs.new-hierarchy"/>
<child name="search" schema="org.gnucash.dialogs.search"/> <child name="search" schema="org.gnucash.dialogs.search"/>
<child name="transfer" schema="org.gnucash.dialogs.transfer"/> <child name="transfer" schema="org.gnucash.dialogs.transfer"/>
<child name="business-assoc" schema="org.gnucash.dialogs.business-assoc"/> <child name="business-doclink" schema="org.gnucash.dialogs.business-doclink"/>
<child name="trans-assoc" schema="org.gnucash.dialogs.trans-assoc"/> <child name="trans-doclink" schema="org.gnucash.dialogs.trans-doclink"/>
<child name="options" schema="org.gnucash.dialogs.options"/> <child name="options" schema="org.gnucash.dialogs.options"/>
</schema> </schema>
@ -238,7 +238,7 @@
</key> </key>
</schema> </schema>
<schema id="org.gnucash.dialogs.business-assoc" path="/org/gnucash/dialogs/business-assoc/"> <schema id="org.gnucash.dialogs.business-doclink" path="/org/gnucash/dialogs/business-doclink/">
<key type="(iiii)" name="last-geometry"> <key type="(iiii)" name="last-geometry">
<default>(-1,-1,-1,-1)</default> <default>(-1,-1,-1,-1)</default>
<summary>Last window position and size</summary> <summary>Last window position and size</summary>
@ -248,7 +248,7 @@
</key> </key>
</schema> </schema>
<schema id="org.gnucash.dialogs.trans-assoc" path="/org/gnucash/dialogs/trans-assoc/"> <schema id="org.gnucash.dialogs.trans-doclink" path="/org/gnucash/dialogs/trans-doclink/">
<key type="(iiii)" name="last-geometry"> <key type="(iiii)" name="last-geometry">
<default>(-1,-1,-1,-1)</default> <default>(-1,-1,-1,-1)</default>
<summary>Last window position and size</summary> <summary>Last window position and size</summary>

View File

@ -20,7 +20,7 @@
<summary>Character to use as separator between account names</summary> <summary>Character to use as separator between account names</summary>
<description>This setting determines the character that will be used between components of an account name. Possible values are any single non-alphanumeric unicode character, or any of the following strings: "colon", "slash", "backslash", "dash" and "period".</description> <description>This setting determines the character that will be used between components of an account name. Possible values are any single non-alphanumeric unicode character, or any of the following strings: "colon", "slash", "backslash", "dash" and "period".</description>
</key> </key>
<key name="assoc-head" type="s"> <key name="doclink-head" type="s">
<default>''</default> <default>''</default>
<summary>Transaction Linked Files head path</summary> <summary>Transaction Linked Files head path</summary>
<description>This is the path head for the Transaction Linked Files with relative paths</description> <description>This is the path head for the Transaction Linked Files with relative paths</description>

View File

@ -13,7 +13,7 @@ set (gtkbuilder_SOURCES
business-prefs.glade business-prefs.glade
dialog-account-picker.glade dialog-account-picker.glade
dialog-account.glade dialog-account.glade
dialog-assoc.glade dialog-doclink.glade
dialog-bi-import-gui.glade dialog-bi-import-gui.glade
dialog-billterms.glade dialog-billterms.glade
dialog-book-close.glade dialog-book-close.glade

View File

@ -2,7 +2,7 @@
<!-- Generated with glade 3.22.2 --> <!-- Generated with glade 3.22.2 -->
<interface> <interface>
<requires lib="gtk+" version="3.10"/> <requires lib="gtk+" version="3.10"/>
<object class="GtkDialog" id="association_dialog"> <object class="GtkDialog" id="linked_doc_dialog">
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="default_width">600</property> <property name="default_width">600</property>
<property name="type_hint">dialog</property> <property name="type_hint">dialog</property>
@ -489,7 +489,7 @@
<column type="gchararray"/> <column type="gchararray"/>
</columns> </columns>
</object> </object>
<object class="GtkWindow" id="association_window"> <object class="GtkWindow" id="linked_doc_window">
<property name="can_focus">False</property> <property name="can_focus">False</property>
<child type="titlebar"> <child type="titlebar">
<placeholder/> <placeholder/>
@ -652,7 +652,7 @@
</object> </object>
</child> </child>
<child> <child>
<object class="GtkTreeViewColumn" id="assoc"> <object class="GtkTreeViewColumn" id="doclink">
<property name="resizable">True</property> <property name="resizable">True</property>
<property name="title" translatable="yes">Linked Document</property> <property name="title" translatable="yes">Linked Document</property>
<property name="alignment">0.5</property> <property name="alignment">0.5</property>

View File

@ -411,11 +411,11 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkBox" id="assoc_hbox"> <object class="GtkBox" id="link_hbox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<child> <child>
<object class="GtkLinkButton" id="doc_link_button"> <object class="GtkLinkButton" id="doclink_button">
<property name="label" translatable="yes">Open Document Link</property> <property name="label" translatable="yes">Open Document Link</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>

View File

@ -1081,7 +1081,7 @@ If 0, all previous days included</property>
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkCheckButton" id="assoc_check_button"> <object class="GtkCheckButton" id="link_check_button">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="receives_default">False</property> <property name="receives_default">False</property>
@ -1096,7 +1096,7 @@ If 0, all previous days included</property>
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkLabel" id="assoc_label"> <object class="GtkLabel" id="link_label">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="halign">end</property> <property name="halign">end</property>

View File

@ -888,9 +888,9 @@ gnc_split_register_auto_completion (SplitRegister *reg,
g_assert(pending_trans == trans); g_assert(pending_trans == trans);
gnc_copy_trans_onto_trans (auto_trans, trans, FALSE, FALSE); gnc_copy_trans_onto_trans (auto_trans, trans, FALSE, FALSE);
/* if there is an association, lets clear it */ /* if there is an doclink, let's clear it */
if (xaccTransGetAssociation (auto_trans) != NULL) if (xaccTransGetDocLink (auto_trans) != NULL)
xaccTransSetAssociation (trans, ""); xaccTransSetDocLink (trans, "");
blank_split = NULL; blank_split = NULL;
if (gnc_split_register_get_default_account (reg) != NULL) if (gnc_split_register_get_default_account (reg) != NULL)

View File

@ -229,10 +229,10 @@ const char *gnc_float_txn_get_notes (const FloatingTxn *ft)
return ft->m_notes; return ft->m_notes;
} }
const char *gnc_float_txn_get_association (const FloatingTxn *ft) const char *gnc_float_txn_get_doclink (const FloatingTxn *ft)
{ {
g_return_val_if_fail (ft, NULL); g_return_val_if_fail (ft, NULL);
return ft->m_association; return ft->m_doclink;
} }
SplitList *gnc_float_txn_get_splits (const FloatingTxn *ft) SplitList *gnc_float_txn_get_splits (const FloatingTxn *ft)
@ -309,10 +309,10 @@ void gnc_float_txn_set_notes (FloatingTxn *ft, const char *notes)
ft->m_notes = notes; ft->m_notes = notes;
}; };
void gnc_float_txn_set_association (FloatingTxn *ft, const char *association) void gnc_float_txn_set_doclink (FloatingTxn *ft, const char *doclink)
{ {
g_return_if_fail (ft); g_return_if_fail (ft);
ft->m_association = association; ft->m_doclink = doclink;
}; };
void gnc_float_txn_set_splits (FloatingTxn *ft, SplitList *splits) void gnc_float_txn_set_splits (FloatingTxn *ft, SplitList *splits)
@ -346,7 +346,7 @@ FloatingTxn *gnc_txn_to_float_txn (Transaction *txn, gboolean use_cut_semantics)
} }
ft->m_description = xaccTransGetDescription (txn); ft->m_description = xaccTransGetDescription (txn);
ft->m_notes = xaccTransGetNotes (txn); ft->m_notes = xaccTransGetNotes (txn);
ft->m_association = xaccTransGetAssociation (txn); ft->m_doclink = xaccTransGetDocLink (txn);
for (iter = xaccTransGetSplitList (txn); iter ; iter = iter->next) for (iter = xaccTransGetSplitList (txn); iter ; iter = iter->next)
{ {
@ -388,8 +388,8 @@ void gnc_float_txn_to_txn_swap_accounts (const FloatingTxn *ft, Transaction *txn
xaccTransSetNum (txn, ft->m_num); xaccTransSetNum (txn, ft->m_num);
if (ft->m_notes) if (ft->m_notes)
xaccTransSetNotes (txn, ft->m_notes); xaccTransSetNotes (txn, ft->m_notes);
if (ft->m_association) if (ft->m_doclink)
xaccTransSetAssociation (txn, ft->m_association); xaccTransSetDocLink (txn, ft->m_doclink);
if (ft->m_date_posted) if (ft->m_date_posted)
xaccTransSetDatePostedSecs (txn, ft->m_date_posted); xaccTransSetDatePostedSecs (txn, ft->m_date_posted);

View File

@ -55,7 +55,7 @@ typedef struct
const char *m_num; const char *m_num;
const char *m_description; const char *m_description;
const char *m_notes; const char *m_notes;
const char *m_association; const char *m_doclink;
SplitList *m_splits; SplitList *m_splits;
} FloatingTxn; } FloatingTxn;
@ -92,7 +92,7 @@ time64 gnc_float_txn_get_date_posted (const FloatingTxn *ft);
const char *gnc_float_txn_get_num (const FloatingTxn *ft); const char *gnc_float_txn_get_num (const FloatingTxn *ft);
const char *gnc_float_txn_get_description (const FloatingTxn *ft); const char *gnc_float_txn_get_description (const FloatingTxn *ft);
const char *gnc_float_txn_get_notes (const FloatingTxn *ft); const char *gnc_float_txn_get_notes (const FloatingTxn *ft);
const char *gnc_float_txn_get_association (const FloatingTxn *ft); const char *gnc_float_txn_get_doclink (const FloatingTxn *ft);
SplitList *gnc_float_txn_get_splits (const FloatingTxn *ft); SplitList *gnc_float_txn_get_splits (const FloatingTxn *ft);
FloatingSplit *gnc_float_txn_get_float_split (const FloatingTxn *ft, guint index); FloatingSplit *gnc_float_txn_get_float_split (const FloatingTxn *ft, guint index);
@ -106,7 +106,7 @@ void gnc_float_txn_set_date_posted (FloatingTxn *ft, time64 date_posted);
void gnc_float_txn_set_num (FloatingTxn *ft, const char *num); void gnc_float_txn_set_num (FloatingTxn *ft, const char *num);
void gnc_float_txn_set_description (FloatingTxn *ft, const char *description); void gnc_float_txn_set_description (FloatingTxn *ft, const char *description);
void gnc_float_txn_set_notes (FloatingTxn *ft, const char *notes); void gnc_float_txn_set_notes (FloatingTxn *ft, const char *notes);
void gnc_float_txn_set_association (FloatingTxn *ft, const char *association); void gnc_float_txn_set_doclink (FloatingTxn *ft, const char *doclink);
void gnc_float_txn_set_splits (FloatingTxn *ft, SplitList *splits); void gnc_float_txn_set_splits (FloatingTxn *ft, SplitList *splits);
void gnc_float_txn_append_float_split (FloatingTxn *ft, FloatingSplit *fs); void gnc_float_txn_append_float_split (FloatingTxn *ft, FloatingSplit *fs);

View File

@ -34,7 +34,7 @@
#include "gnc-gui-query.h" #include "gnc-gui-query.h"
#include "numcell.h" #include "numcell.h"
#include "quickfillcell.h" #include "quickfillcell.h"
#include "assoccell.h" #include "doclinkcell.h"
#include "recncell.h" #include "recncell.h"
#include "split-register.h" #include "split-register.h"
#include "split-register-p.h" #include "split-register-p.h"
@ -72,22 +72,22 @@ gnc_split_register_load_recn_cells (SplitRegister* reg)
static void static void
gnc_split_register_load_associate_cells (SplitRegister* reg) gnc_split_register_load_associate_cells (SplitRegister* reg)
{ {
AssocCell *cell; Doclinkcell *cell;
const char * s; const char * s;
if (!reg) return; if (!reg) return;
cell = (AssocCell *) cell = (Doclinkcell *)
gnc_table_layout_get_cell (reg->table->layout, ASSOC_CELL); gnc_table_layout_get_cell (reg->table->layout, ASSOC_CELL);
if (!cell) return; if (!cell) return;
/* FIXME: These should get moved to an i18n function */ /* FIXME: These should get moved to an i18n function */
s = gnc_get_association_valid_flags (); s = gnc_get_doclink_valid_flags ();
gnc_assoc_cell_set_valid_flags (cell, s, ' '); gnc_doclink_cell_set_valid_flags (cell, s, ' ');
gnc_assoc_cell_set_flag_order (cell, gnc_get_association_flag_order ()); gnc_doclink_cell_set_flag_order (cell, gnc_get_doclink_flag_order ());
gnc_assoc_cell_set_string_getter (cell, gnc_get_association_str); gnc_doclink_cell_set_string_getter (cell, gnc_get_doclink_str);
gnc_assoc_cell_set_read_only (cell, TRUE); gnc_doclink_cell_set_read_only (cell, TRUE);
} }
static void static void
@ -416,8 +416,8 @@ gnc_split_register_load (SplitRegister* reg, GList* slist,
((PriceCell*) gnc_table_layout_get_cell (table->layout, CRED_CELL), ((PriceCell*) gnc_table_layout_get_cell (table->layout, CRED_CELL),
gnc_account_print_info (default_account, FALSE)); gnc_account_print_info (default_account, FALSE));
gnc_assoc_cell_set_use_glyphs gnc_doclink_cell_set_use_glyphs
((AssocCell *) gnc_table_layout_get_cell (table->layout, ASSOC_CELL)); ((Doclinkcell *) gnc_table_layout_get_cell (table->layout, ASSOC_CELL));
/* make sure we have a blank split */ /* make sure we have a blank split */
if (blank_split == NULL) if (blank_split == NULL)

View File

@ -27,14 +27,14 @@
#include "datecell.h" #include "datecell.h"
#include "dialog-utils.h" #include "dialog-utils.h"
#include "dialog-assoc-utils.h" #include "dialog-doclink-utils.h"
#include "gnc-engine.h" #include "gnc-engine.h"
#include "gnc-prefs.h" #include "gnc-prefs.h"
#include "gnc-ui.h" #include "gnc-ui.h"
#include "gnc-uri-utils.h" #include "gnc-uri-utils.h"
#include "gnc-filepath-utils.h" #include "gnc-filepath-utils.h"
#include "gnc-warnings.h" #include "gnc-warnings.h"
#include "assoccell.h" #include "doclinkcell.h"
#include "pricecell.h" #include "pricecell.h"
#include "recncell.h" #include "recncell.h"
#include "split-register.h" #include "split-register.h"
@ -557,11 +557,11 @@ gnc_split_register_get_associate_tooltip (VirtualLocation virt_loc,
return NULL; return NULL;
// get the existing uri // get the existing uri
uri = xaccTransGetAssociation (trans); uri = xaccTransGetDocLink (trans);
// Check for uri is empty or NULL // Check for uri is empty or NULL
if (uri && *uri) if (uri && *uri)
return gnc_assoc_get_unescaped_just_uri (uri); return gnc_doclink_get_unescaped_just_uri (uri);
else else
return NULL; return NULL;
} }
@ -804,11 +804,11 @@ gnc_split_register_get_associate_entry (VirtualLocation virt_loc,
{ {
SplitRegister* reg = user_data; SplitRegister* reg = user_data;
Transaction* trans; Transaction* trans;
char associate; char link_flag;
const char* uri; const char* uri;
AssocCell *cell; Doclinkcell *cell;
cell = (AssocCell *)gnc_table_layout_get_cell (reg->table->layout, ASSOC_CELL); cell = (Doclinkcell *)gnc_table_layout_get_cell (reg->table->layout, ASSOC_CELL);
if (!cell) if (!cell)
return NULL; return NULL;
@ -818,7 +818,7 @@ gnc_split_register_get_associate_entry (VirtualLocation virt_loc,
return NULL; return NULL;
// get the existing uri // get the existing uri
uri = xaccTransGetAssociation (trans); uri = xaccTransGetDocLink (trans);
// Check for uri is empty or NULL // Check for uri is empty or NULL
if (uri && *uri) if (uri && *uri)
@ -826,25 +826,25 @@ gnc_split_register_get_associate_entry (VirtualLocation virt_loc,
gchar* scheme = gnc_uri_get_scheme (uri); gchar* scheme = gnc_uri_get_scheme (uri);
if (!scheme || g_strcmp0 (scheme, "file") == 0) if (!scheme || g_strcmp0 (scheme, "file") == 0)
associate = FASSOC; link_flag = FLINK;
else else
associate = WASSOC; link_flag = WLINK;
g_free (scheme); g_free (scheme);
} }
else else
associate = ' '; link_flag = ' ';
if (gnc_assoc_get_use_glyphs (cell)) if (gnc_doclink_get_use_glyphs (cell))
return gnc_assoc_get_glyph_from_flag (associate); return gnc_doclink_get_glyph_from_flag (link_flag);
if (translate) if (translate)
return gnc_get_association_str (associate); return gnc_get_doclink_str (link_flag);
else else
{ {
static char s[2]; static char s[2];
s[0] = associate; s[0] = link_flag;
s[1] = '\0'; s[1] = '\0';
return s; return s;
} }
@ -864,13 +864,13 @@ static char
gnc_split_register_get_associate_value (SplitRegister* reg, gnc_split_register_get_associate_value (SplitRegister* reg,
VirtualLocation virt_loc) VirtualLocation virt_loc)
{ {
AssocCell *cell; Doclinkcell *cell;
cell = (AssocCell *)gnc_table_layout_get_cell (reg->table->layout, ASSOC_CELL); cell = (Doclinkcell *)gnc_table_layout_get_cell (reg->table->layout, ASSOC_CELL);
if (!cell) if (!cell)
return '\0'; return '\0';
return gnc_assoc_cell_get_flag (cell); return gnc_doclink_cell_get_flag (cell);
} }
#endif #endif

View File

@ -602,7 +602,7 @@ gnc_split_register_duplicate_current (SplitRegister* reg)
if (!gnc_dup_trans_dialog (gnc_split_register_get_parent (reg), NULL, if (!gnc_dup_trans_dialog (gnc_split_register_get_parent (reg), NULL,
TRUE, &date, in_num, &out_num, in_tnum, &out_tnum, TRUE, &date, in_num, &out_num, in_tnum, &out_tnum,
xaccTransGetAssociation (trans), &out_tassoc)) xaccTransGetDocLink (trans), &out_tassoc))
{ {
gnc_resume_gui_refresh (); gnc_resume_gui_refresh ();
LEAVE ("dup cancelled"); LEAVE ("dup cancelled");
@ -656,7 +656,7 @@ gnc_split_register_duplicate_current (SplitRegister* reg)
/* clear the associated entry if returned value NULL */ /* clear the associated entry if returned value NULL */
if (out_tassoc == NULL) if (out_tassoc == NULL)
xaccTransSetAssociation (new_trans, ""); xaccTransSetDocLink (new_trans, "");
else else
g_free (out_tassoc); g_free (out_tassoc);

View File

@ -141,7 +141,7 @@ flsetup( FlFixture *fixture, gconstpointer pData )
fixture->ft.m_num = CACHE_INSERT ("FtNum"); fixture->ft.m_num = CACHE_INSERT ("FtNum");
fixture->ft.m_description = CACHE_INSERT ("FtDescription"); fixture->ft.m_description = CACHE_INSERT ("FtDescription");
fixture->ft.m_notes = CACHE_INSERT ("FtNotes"); fixture->ft.m_notes = CACHE_INSERT ("FtNotes");
fixture->ft.m_association = CACHE_INSERT ("FtAssociation"); fixture->ft.m_doclink = CACHE_INSERT ("FtDocLink");
fixture->fs1.m_split = NULL; fixture->fs1.m_split = NULL;
fixture->fs1.m_account = fixture->acc1; fixture->fs1.m_account = fixture->acc1;
@ -340,8 +340,8 @@ void gnc_float_txn_set_description (FloatingTxn *ft, const char *description)//
void gnc_float_txn_set_notes (FloatingTxn *ft, const char *notes)// Local: 0:0:0 void gnc_float_txn_set_notes (FloatingTxn *ft, const char *notes)// Local: 0:0:0
*/ */
// Not Used // Not Used
/* gnc_float_txn_set_association - trivial setter, skipping /* gnc_float_txn_set_doclink - trivial setter, skipping
void gnc_float_txn_set_association (FloatingTxn *ft, const char *association)// Local: 0:0:0 void gnc_float_txn_set_doclink (FloatingTxn *ft, const char *doclink)// Local: 0:0:0
*/ */
// Not Used // Not Used
/* gnc_float_txn_set_splits - trivial setter, skipping /* gnc_float_txn_set_splits - trivial setter, skipping
@ -376,7 +376,7 @@ test_gnc_txn_to_float_txn (Fixture *fixture, gconstpointer pData)
g_assert_null (ft->m_num); g_assert_null (ft->m_num);
g_assert_cmpstr (ft->m_description, ==, xaccTransGetDescription (fixture->txn)); g_assert_cmpstr (ft->m_description, ==, xaccTransGetDescription (fixture->txn));
g_assert_cmpstr (ft->m_notes, ==, xaccTransGetNotes (fixture->txn)); g_assert_cmpstr (ft->m_notes, ==, xaccTransGetNotes (fixture->txn));
g_assert_cmpstr (ft->m_association, ==, xaccTransGetAssociation (fixture->txn)); g_assert_cmpstr (ft->m_doclink, ==, xaccTransGetDocLink (fixture->txn));
/* Check split fields of first split */ /* Check split fields of first split */
siter = sl; siter = sl;
@ -435,7 +435,7 @@ test_gnc_txn_to_float_txn_cut_semantics (Fixture *fixture, gconstpointer pData)
g_assert_cmpstr (ft->m_num, ==, xaccTransGetNum (fixture->txn)); g_assert_cmpstr (ft->m_num, ==, xaccTransGetNum (fixture->txn));
g_assert_cmpstr (ft->m_description, ==, xaccTransGetDescription (fixture->txn)); g_assert_cmpstr (ft->m_description, ==, xaccTransGetDescription (fixture->txn));
g_assert_cmpstr (ft->m_notes, ==, xaccTransGetNotes (fixture->txn)); g_assert_cmpstr (ft->m_notes, ==, xaccTransGetNotes (fixture->txn));
g_assert_cmpstr (ft->m_association, ==, xaccTransGetAssociation (fixture->txn)); g_assert_cmpstr (ft->m_doclink, ==, xaccTransGetDocLink (fixture->txn));
/* Check split fields of first split */ /* Check split fields of first split */
siter = sl; siter = sl;
@ -557,7 +557,7 @@ test_gnc_float_txn_to_txn_swap_accounts (FlFixture *fixture, gconstpointer pData
g_assert_cmpstr (fixture->ft.m_description, ==, "FtDescription"); g_assert_cmpstr (fixture->ft.m_description, ==, "FtDescription");
g_assert_cmpstr (fixture->ft.m_num, ==, "FtNum"); g_assert_cmpstr (fixture->ft.m_num, ==, "FtNum");
g_assert_cmpstr (fixture->ft.m_notes, ==, "FtNotes"); g_assert_cmpstr (fixture->ft.m_notes, ==, "FtNotes");
g_assert_cmpstr (fixture->ft.m_association, ==, "FtAssociation"); g_assert_cmpstr (fixture->ft.m_doclink, ==, "FtDocLink");
g_assert_cmpint (fixture->ft.m_date_posted, ==, xaccTransGetDate (txn)); g_assert_cmpint (fixture->ft.m_date_posted, ==, xaccTransGetDate (txn));
/* Next compare values for first split */ /* Next compare values for first split */

View File

@ -1,5 +1,5 @@
set (register_core_SOURCES set (register_core_SOURCES
assoccell.c doclinkcell.c
basiccell.c basiccell.c
cell-factory.c cell-factory.c
cellblock.c cellblock.c
@ -19,7 +19,7 @@ set (register_core_SOURCES
set (register_core_HEADERS set (register_core_HEADERS
assoccell.h doclinkcell.h
basiccell.h basiccell.h
cell-factory.h cell-factory.h
cellblock.h cellblock.h

View File

@ -1,5 +1,5 @@
/********************************************************************\ /********************************************************************\
* assoccell.c -- association checkbox cell * * doclinkcell.c -- Document Link checkbox cell *
* * * *
* This program is free software; you can redistribute it and/or * * This program is free software; you can redistribute it and/or *
* modify it under the terms of the GNU General Public License as * * modify it under the terms of the GNU General Public License as *
@ -22,7 +22,7 @@
/* /*
* FILE: * FILE:
* assoccell.c * doclinkcell.c
* *
* FUNCTION: * FUNCTION:
* Implements a mouse-click cell that allows a series * Implements a mouse-click cell that allows a series
@ -44,19 +44,19 @@
#include "basiccell.h" #include "basiccell.h"
#include "gnc-engine.h" #include "gnc-engine.h"
#include "assoccell.h" #include "doclinkcell.h"
#include "gnc-ui-util.h" #include "gnc-ui-util.h"
static void gnc_assoc_cell_set_value (BasicCell *_cell, const char *value); static void gnc_doclink_cell_set_value (BasicCell *_cell, const char *value);
const char * const char *
gnc_assoc_get_glyph_from_flag (char association_flag) gnc_doclink_get_glyph_from_flag (char link_flag)
{ {
switch (association_flag) switch (link_flag)
{ {
case WASSOC: case WLINK:
return GLYPH_LINK; return GLYPH_LINK;
case FASSOC: case FLINK:
return GLYPH_PAPERCLIP; return GLYPH_PAPERCLIP;
default: default:
return " "; return " ";
@ -64,29 +64,29 @@ gnc_assoc_get_glyph_from_flag (char association_flag)
} }
static const char static const char
gnc_assoc_get_flag_from_glyph (const char *glyph) gnc_doclink_get_flag_from_glyph (const char *glyph)
{ {
if (strcmp (glyph, GLYPH_LINK) == 0) if (strcmp (glyph, GLYPH_LINK) == 0)
return WASSOC; return WLINK;
else if (strcmp (glyph, GLYPH_PAPERCLIP) == 0) else if (strcmp (glyph, GLYPH_PAPERCLIP) == 0)
return FASSOC; return FLINK;
else else
return ' '; return ' ';
} }
gboolean gboolean
gnc_assoc_get_use_glyphs (AssocCell *cell) gnc_doclink_get_use_glyphs (Doclinkcell *cell)
{ {
return cell->use_glyphs; return cell->use_glyphs;
} }
static const char * static const char *
gnc_assoc_cell_get_string (AssocCell *cell, char flag) gnc_doclink_cell_get_string (Doclinkcell *cell, char flag)
{ {
static char str[2] = { 0, 0 }; static char str[2] = { 0, 0 };
if (cell->use_glyphs) if (cell->use_glyphs)
return gnc_assoc_get_glyph_from_flag (flag); return gnc_doclink_get_glyph_from_flag (flag);
if (cell->get_string != NULL) if (cell->get_string != NULL)
return (cell->get_string)(flag); return (cell->get_string)(flag);
@ -97,12 +97,12 @@ gnc_assoc_cell_get_string (AssocCell *cell, char flag)
} }
static gboolean static gboolean
gnc_assoc_cell_enter (BasicCell *_cell, gnc_doclink_cell_enter (BasicCell *_cell,
int *cursor_position, int *cursor_position,
int *start_selection, int *start_selection,
int *end_selection) int *end_selection)
{ {
AssocCell *cell = (AssocCell *) _cell; Doclinkcell *cell = (Doclinkcell *) _cell;
char * this_flag; char * this_flag;
if (cell->confirm_cb && if (cell->confirm_cb &&
@ -133,17 +133,17 @@ gnc_assoc_cell_enter (BasicCell *_cell,
} }
/* And set the display */ /* And set the display */
gnc_assoc_cell_set_flag (cell, cell->flag); gnc_doclink_cell_set_flag (cell, cell->flag);
return FALSE; return FALSE;
} }
static void static void
gnc_assoc_cell_init (AssocCell *cell) gnc_doclink_cell_init (Doclinkcell *cell)
{ {
gnc_basic_cell_init (&cell->cell); gnc_basic_cell_init (&cell->cell);
gnc_assoc_cell_set_flag (cell, '\0'); gnc_doclink_cell_set_flag (cell, '\0');
cell->confirm_cb = NULL; cell->confirm_cb = NULL;
cell->get_string = NULL; cell->get_string = NULL;
cell->valid_flags = ""; cell->valid_flags = "";
@ -151,27 +151,27 @@ gnc_assoc_cell_init (AssocCell *cell)
cell->read_only = FALSE; cell->read_only = FALSE;
cell->use_glyphs = FALSE; cell->use_glyphs = FALSE;
cell->cell.enter_cell = gnc_assoc_cell_enter; cell->cell.enter_cell = gnc_doclink_cell_enter;
cell->cell.set_value = gnc_assoc_cell_set_value; cell->cell.set_value = gnc_doclink_cell_set_value;
} }
BasicCell * BasicCell *
gnc_assoc_cell_new (void) gnc_doclink_cell_new (void)
{ {
AssocCell * cell; Doclinkcell * cell;
cell = g_new0 (AssocCell, 1); cell = g_new0 (Doclinkcell, 1);
gnc_assoc_cell_init (cell); gnc_doclink_cell_init (cell);
return &cell->cell; return &cell->cell;
} }
/* assumes we are given the untranslated form */ /* assumes we are given the untranslated form */
static void static void
gnc_assoc_cell_set_value (BasicCell *_cell, const char *value) gnc_doclink_cell_set_value (BasicCell *_cell, const char *value)
{ {
AssocCell *cell = (AssocCell *) _cell; Doclinkcell *cell = (Doclinkcell *) _cell;
char flag; char flag;
if (!value || *value == '\0') if (!value || *value == '\0')
@ -182,31 +182,31 @@ gnc_assoc_cell_set_value (BasicCell *_cell, const char *value)
} }
if (cell->use_glyphs) if (cell->use_glyphs)
flag = gnc_assoc_get_flag_from_glyph (value); flag = gnc_doclink_get_flag_from_glyph (value);
else else
{ {
flag = cell->default_flag; flag = cell->default_flag;
if (strchr (cell->valid_flags, *value) != NULL) if (strchr (cell->valid_flags, *value) != NULL)
flag = *value; flag = *value;
} }
gnc_assoc_cell_set_flag (cell, flag); gnc_doclink_cell_set_flag (cell, flag);
} }
void void
gnc_assoc_cell_set_flag (AssocCell *cell, char flag) gnc_doclink_cell_set_flag (Doclinkcell *cell, char flag)
{ {
const char *string; const char *string;
g_return_if_fail (cell != NULL); g_return_if_fail (cell != NULL);
cell->flag = flag; cell->flag = flag;
string = gnc_assoc_cell_get_string (cell, flag); string = gnc_doclink_cell_get_string (cell, flag);
gnc_basic_cell_set_value_internal (&cell->cell, string); gnc_basic_cell_set_value_internal (&cell->cell, string);
} }
char char
gnc_assoc_cell_get_flag (AssocCell *cell) gnc_doclink_cell_get_flag (Doclinkcell *cell)
{ {
g_return_val_if_fail (cell != NULL, '\0'); g_return_val_if_fail (cell != NULL, '\0');
@ -214,8 +214,8 @@ gnc_assoc_cell_get_flag (AssocCell *cell)
} }
void void
gnc_assoc_cell_set_string_getter (AssocCell *cell, gnc_doclink_cell_set_string_getter (Doclinkcell *cell,
AssocCellStringGetter get_string) DoclinkcellStringGetter get_string)
{ {
g_return_if_fail (cell != NULL); g_return_if_fail (cell != NULL);
@ -223,7 +223,7 @@ gnc_assoc_cell_set_string_getter (AssocCell *cell,
} }
void void
gnc_assoc_cell_set_confirm_cb (AssocCell *cell, AssocCellConfirm confirm_cb, gnc_doclink_cell_set_confirm_cb (Doclinkcell *cell, DoclinkcellConfirm confirm_cb,
gpointer data) gpointer data)
{ {
g_return_if_fail (cell != NULL); g_return_if_fail (cell != NULL);
@ -233,7 +233,7 @@ gnc_assoc_cell_set_confirm_cb (AssocCell *cell, AssocCellConfirm confirm_cb,
} }
void void
gnc_assoc_cell_set_valid_flags (AssocCell *cell, const char *flags, gnc_doclink_cell_set_valid_flags (Doclinkcell *cell, const char *flags,
char default_flag) char default_flag)
{ {
g_return_if_fail (cell != NULL); g_return_if_fail (cell != NULL);
@ -244,7 +244,7 @@ gnc_assoc_cell_set_valid_flags (AssocCell *cell, const char *flags,
} }
void void
gnc_assoc_cell_set_flag_order (AssocCell *cell, const char *flags) gnc_doclink_cell_set_flag_order (Doclinkcell *cell, const char *flags)
{ {
g_return_if_fail (cell != NULL); g_return_if_fail (cell != NULL);
g_return_if_fail (flags != NULL); g_return_if_fail (flags != NULL);
@ -253,7 +253,7 @@ gnc_assoc_cell_set_flag_order (AssocCell *cell, const char *flags)
} }
void void
gnc_assoc_cell_set_read_only (AssocCell *cell, gboolean read_only) gnc_doclink_cell_set_read_only (Doclinkcell *cell, gboolean read_only)
{ {
g_return_if_fail (cell != NULL); g_return_if_fail (cell != NULL);
@ -261,7 +261,7 @@ gnc_assoc_cell_set_read_only (AssocCell *cell, gboolean read_only)
} }
void void
gnc_assoc_cell_set_use_glyphs (AssocCell *cell) gnc_doclink_cell_set_use_glyphs (Doclinkcell *cell)
{ {
#ifdef MAC_INTEGRATION #ifdef MAC_INTEGRATION
cell->use_glyphs = FALSE; cell->use_glyphs = FALSE;

View File

@ -1,5 +1,5 @@
/********************************************************************\ /********************************************************************\
* assoccell.h -- association checkbox cell * * doclinkcell.h -- Document link checkbox cell *
* * * *
* This program is free software; you can redistribute it and/or * * This program is free software; you can redistribute it and/or *
* modify it under the terms of the GNU General Public License as * * modify it under the terms of the GNU General Public License as *
@ -22,9 +22,9 @@
/** @addtogroup Cell Cell /** @addtogroup Cell Cell
* @{ * @{
* @file assoccell.h * @file doclinkcell.h
* @struct AssocCell * @struct Doclinkcell
* @brief The AssocCell object implements a cell handler * @brief The Doclinkcell object implements a cell handler
* that will cycle through a series of single-character * that will cycle through a series of single-character
* values when clicked upon by the mouse and will return a glyph * values when clicked upon by the mouse and will return a glyph
* if font can show it. * if font can show it.
@ -36,8 +36,8 @@
* Copyright (c) 2020 Robert Fewell * Copyright (c) 2020 Robert Fewell
*/ */
#ifndef ASSOC_CELL_H #ifndef DOC_LINK_CELL_H
#define ASSOC_CELL_H #define DOC_LINK_CELL_H
#include <glib.h> #include <glib.h>
@ -46,8 +46,8 @@
#define GLYPH_PAPERCLIP "\360\237\223\216" // Codepoint U+1F4CE #define GLYPH_PAPERCLIP "\360\237\223\216" // Codepoint U+1F4CE
#define GLYPH_LINK "\360\237\224\227" // Codepoint U+1F517 #define GLYPH_LINK "\360\237\224\227" // Codepoint U+1F517
typedef const char * (*AssocCellStringGetter) (char flag); typedef const char * (*DoclinkcellStringGetter) (char flag);
typedef gboolean (*AssocCellConfirm) (char old_flag, gpointer data); typedef gboolean (*DoclinkcellConfirm) (char old_flag, gpointer data);
typedef struct typedef struct
{ {
@ -59,42 +59,42 @@ typedef struct
char * flag_order; /** Automatic flag selection order */ char * flag_order; /** Automatic flag selection order */
char default_flag; /** Default flag for unknown user input */ char default_flag; /** Default flag for unknown user input */
AssocCellStringGetter get_string; DoclinkcellStringGetter get_string;
AssocCellConfirm confirm_cb; DoclinkcellConfirm confirm_cb;
gpointer confirm_data; gpointer confirm_data;
gboolean read_only; gboolean read_only;
gboolean use_glyphs; gboolean use_glyphs;
} AssocCell; } Doclinkcell;
BasicCell * gnc_assoc_cell_new (void); BasicCell * gnc_doclink_cell_new (void);
void gnc_assoc_cell_set_flag (AssocCell *cell, char flag); void gnc_doclink_cell_set_flag (Doclinkcell *cell, char flag);
char gnc_assoc_cell_get_flag (AssocCell *cell); char gnc_doclink_cell_get_flag (Doclinkcell *cell);
void gnc_assoc_cell_set_confirm_cb (AssocCell *cell, void gnc_doclink_cell_set_confirm_cb (Doclinkcell *cell,
AssocCellConfirm confirm_cb, DoclinkcellConfirm confirm_cb,
gpointer data); gpointer data);
void gnc_assoc_cell_set_string_getter (AssocCell *cell, void gnc_doclink_cell_set_string_getter (Doclinkcell *cell,
AssocCellStringGetter getter); DoclinkcellStringGetter getter);
/** note that @param flags is copied into the RecnCell directly, but /** note that @param flags is copied into the RecnCell directly, but
* remains the "property" of the caller. The caller must maintain the * remains the "property" of the caller. The caller must maintain the
* chars pointer, and the caller must setup a mechanism to 'free' the * chars pointer, and the caller must setup a mechanism to 'free' the
* chars pointer. The rationale is that you may have many AssocCell * chars pointer. The rationale is that you may have many Doclinkcell
* objects that use the same set of flags. * objects that use the same set of flags.
*/ */
void gnc_assoc_cell_set_valid_flags (AssocCell *cell, const char *flags, void gnc_doclink_cell_set_valid_flags (Doclinkcell *cell, const char *flags,
char default_flag); char default_flag);
void gnc_assoc_cell_set_flag_order (AssocCell *cell, const char *flags); void gnc_doclink_cell_set_flag_order (Doclinkcell *cell, const char *flags);
void gnc_assoc_cell_set_read_only (AssocCell *cell, gboolean read_only); void gnc_doclink_cell_set_read_only (Doclinkcell *cell, gboolean read_only);
void gnc_assoc_cell_set_use_glyphs (AssocCell *cell); void gnc_doclink_cell_set_use_glyphs (Doclinkcell *cell);
gboolean gnc_assoc_get_use_glyphs (AssocCell *cell); gboolean gnc_doclink_get_use_glyphs (Doclinkcell *cell);
const char * gnc_assoc_get_glyph_from_flag (char association_flag); const char * gnc_doclink_get_glyph_from_flag (char link_flag);
/** @} */ /** @} */
#endif #endif

View File

@ -23,7 +23,7 @@
#include <config.h> #include <config.h>
#include "assoccell.h" #include "doclinkcell.h"
#include "basiccell.h" #include "basiccell.h"
#include "cell-factory.h" #include "cell-factory.h"
#include "combocell.h" #include "combocell.h"
@ -58,7 +58,7 @@ gnc_register_init (void)
gnc_register_add_cell_type (RECN_CELL_TYPE_NAME, gnc_recn_cell_new); gnc_register_add_cell_type (RECN_CELL_TYPE_NAME, gnc_recn_cell_new);
gnc_register_add_cell_type (ASSOC_CELL_TYPE_NAME, gnc_assoc_cell_new); gnc_register_add_cell_type (ASSOC_CELL_TYPE_NAME, gnc_doclink_cell_new);
gnc_register_add_cell_type (QUICKFILL_CELL_TYPE_NAME, gnc_register_add_cell_type (QUICKFILL_CELL_TYPE_NAME,
gnc_quickfill_cell_new); gnc_quickfill_cell_new);

View File

@ -45,8 +45,8 @@
(define (gnc:transaction-anchor-text trans) (define (gnc:transaction-anchor-text trans)
(gnc:register-guid "trans-guid=" (gncTransGetGUID trans))) (gnc:register-guid "trans-guid=" (gncTransGetGUID trans)))
(define (gnc:transaction-association-anchor-text trans) (define (gnc:transaction-doclink-anchor-text trans)
(gnc:register-guid "trans-association-guid=" (gncTransGetGUID trans))) (gnc:register-guid "trans-doclink-guid=" (gncTransGetGUID trans)))
(define (gnc:report-anchor-text report-id) (define (gnc:report-anchor-text report-id)
(gnc-build-url URL-TYPE-REPORT (gnc-build-url URL-TYPE-REPORT
@ -154,9 +154,9 @@
(gnc:transaction-anchor-text trans) (gnc:transaction-anchor-text trans)
text))) text)))
(define (gnc:html-transaction-association-anchor trans text) (define (gnc:html-transaction-doclink-anchor trans text)
(gnc:make-html-text (gnc:html-markup-anchor (gnc:make-html-text (gnc:html-markup-anchor
(gnc:transaction-association-anchor-text trans) (gnc:transaction-doclink-anchor-text trans)
text))) text)))
(define (gnc:html-price-anchor price value) (define (gnc:html-price-anchor price value)

View File

@ -86,13 +86,13 @@
(export gnc:account-anchor-text) (export gnc:account-anchor-text)
(export gnc:split-anchor-text) (export gnc:split-anchor-text)
(export gnc:transaction-anchor-text) (export gnc:transaction-anchor-text)
(export gnc:transaction-association-anchor-text) (export gnc:transaction-doclink-anchor-text)
(export gnc:report-anchor-text) (export gnc:report-anchor-text)
(export gnc:make-report-anchor) (export gnc:make-report-anchor)
(export gnc:html-account-anchor) (export gnc:html-account-anchor)
(export gnc:html-split-anchor) (export gnc:html-split-anchor)
(export gnc:html-transaction-anchor) (export gnc:html-transaction-anchor)
(export gnc:html-transaction-association-anchor) (export gnc:html-transaction-doclink-anchor)
(export gnc:html-price-anchor) (export gnc:html-price-anchor)
(export gnc:customer-anchor-text) (export gnc:customer-anchor-text)
(export gnc:job-anchor-text) (export gnc:job-anchor-text)

View File

@ -1243,13 +1243,13 @@ be excluded from periodic reporting.")
(add-if (column-uses? 'link) (add-if (column-uses? 'link)
(vector "" (vector ""
(lambda (split transaction-row?) (lambda (split transaction-row?)
(let ((url (xaccTransGetAssociation (let ((url (xaccTransGetDocLink
(xaccSplitGetParent split)))) (xaccSplitGetParent split))))
(and (not (string-null? url)) (and (not (string-null? url))
(gnc:make-html-table-cell/markup (gnc:make-html-table-cell/markup
"text-cell" "text-cell"
(if opt-use-links? (if opt-use-links?
(gnc:html-transaction-association-anchor (gnc:html-transaction-doclink-anchor
(xaccSplitGetParent split) (xaccSplitGetParent split)
;; Translators: 'L' is short for Linked Document ;; Translators: 'L' is short for Linked Document
(G_ "L")) (G_ "L"))

View File

@ -44,8 +44,8 @@
<menu name="Business" action="BusinessAction"> <menu name="Business" action="BusinessAction">
<placeholder name="BusinessPlaceholderMiddle"> <placeholder name="BusinessPlaceholderMiddle">
<separator name="BusinessSep1"/> <separator name="BusinessSep1"/>
<menuitem name="BusinessAssociation" action="BusinessAssociationAction"/> <menuitem name="BusinessLink" action="BusinessLinkAction"/>
<menuitem name="BusinessAssociationOpen" action="BusinessAssociationOpenAction"/> <menuitem name="BusinessLinkOpen" action="BusinessLinkOpenAction"/>
<separator name="BusinessSep2"/> <separator name="BusinessSep2"/>
<menuitem name="ToolsProcessPayment" action="ToolsProcessPaymentAction"/> <menuitem name="ToolsProcessPayment" action="ToolsProcessPaymentAction"/>
</placeholder> </placeholder>

View File

@ -22,11 +22,10 @@
<menuitem name="UnvoidTransaction" action="UnvoidTransactionAction"/> <menuitem name="UnvoidTransaction" action="UnvoidTransactionAction"/>
<menuitem name="ReverseTransaction" action="ReverseTransactionAction"/> <menuitem name="ReverseTransaction" action="ReverseTransactionAction"/>
<separator name="TransactionSep3"/> <separator name="TransactionSep3"/>
<menuitem name="AssociateTransaction" action="AssociateTransactionAction"/> <menuitem name="LinkTransaction" action="LinkTransactionAction"/>
<menuitem name="AssociateTransactionOpen" action="AssociateTransactionOpenAction"/> <menuitem name="LinkedTransactionOpen" action="LinkedTransactionOpenAction"/>
<menuitem name="AssociateTransactionRemove" action="AssociateTransactionRemoveAction"/>
<separator name="TransactionSep4"/> <separator name="TransactionSep4"/>
<menuitem name="JumpAssociateInvoice" action="JumpAssociatedInvoiceAction"/> <menuitem name="JumpLinkInvoice" action="JumpLinkedInvoiceAction"/>
</menu> </menu>
<menu name="View" action="ViewAction"> <menu name="View" action="ViewAction">
@ -100,11 +99,10 @@
<menuitem name="RecordTransaction" action="RecordTransactionAction"/> <menuitem name="RecordTransaction" action="RecordTransactionAction"/>
<menuitem name="CancelTransaction" action="CancelTransactionAction"/> <menuitem name="CancelTransaction" action="CancelTransactionAction"/>
<separator name="PopupSep3"/> <separator name="PopupSep3"/>
<menuitem name="AssociateTransaction" action="AssociateTransactionAction"/> <menuitem name="LinkTransaction" action="LinkTransactionAction"/>
<menuitem name="AssociateTransactionOpen" action="AssociateTransactionOpenAction"/> <menuitem name="LinkedTransactionOpen" action="LinkedTransactionOpenAction"/>
<menuitem name="AssociateTransactionRemove" action="AssociateTransactionRemoveAction"/>
<separator name="PopupSep4"/> <separator name="PopupSep4"/>
<menuitem name="JumpAssociateInvoice" action="JumpAssociatedInvoiceAction"/> <menuitem name="JumpLinkedInvoice" action="JumpLinkedInvoiceAction"/>
<separator name="PopupSep5"/> <separator name="PopupSep5"/>
<menuitem name="BlankTransaction" action="BlankTransactionAction"/> <menuitem name="BlankTransaction" action="BlankTransactionAction"/>
<menuitem name="GotoDate" action="GotoDateAction"/> <menuitem name="GotoDate" action="GotoDateAction"/>

View File

@ -903,13 +903,13 @@ gnc_get_reconcile_flag_order (void)
} }
const char * const char *
gnc_get_association_str (char association_flag) gnc_get_doclink_str (char link_flag)
{ {
switch (association_flag) switch (link_flag)
{ {
case WASSOC: case WLINK:
return C_("Document Link flag for 'web'", "w"); return C_("Document Link flag for 'web'", "w");
case FASSOC: case FLINK:
return C_("Document Link flag for 'file'", "f"); return C_("Document Link flag for 'file'", "f");
case ' ': case ' ':
return " "; return " ";
@ -920,16 +920,16 @@ gnc_get_association_str (char association_flag)
} }
const char * const char *
gnc_get_association_valid_flags (void) gnc_get_doclink_valid_flags (void)
{ {
static const char flags[] = { FASSOC, WASSOC, ' ', 0 }; static const char flags[] = { FLINK, WLINK, ' ', 0 };
return flags; return flags;
} }
const char * const char *
gnc_get_association_flag_order (void) gnc_get_doclink_flag_order (void)
{ {
static const char flags[] = { FASSOC, WASSOC, ' ', 0 }; static const char flags[] = { FLINK, WLINK, ' ', 0 };
return flags; return flags;
} }

View File

@ -189,28 +189,28 @@ const char * gnc_get_reconcile_str (char reconciled_flag);
const char * gnc_get_reconcile_valid_flags (void); const char * gnc_get_reconcile_valid_flags (void);
const char * gnc_get_reconcile_flag_order (void); const char * gnc_get_reconcile_flag_order (void);
#define WASSOC 'w' #define WLINK 'w'
#define FASSOC 'f' #define FLINK 'f'
/** Get a string containing association valid flags /** Get a string containing documentation link valid flags
* *
* @return a string containing the list of associated flags * @return a string containing the list of valid link_flags
*/ */
const char *gnc_get_association_valid_flags (void); const char *gnc_get_doclink_valid_flags (void);
/** Get a string containing association flag order /** Get a string containing document link flag order
* *
* @return a string containing the association flag change order * @return a string containing the document link flag change order
*/ */
const char *gnc_get_association_flag_order (void); const char *gnc_get_doclink_flag_order (void);
/** Get a string representing the association type /** Get a string representing the document link type
* *
* @param association_flag The flag to convert into a string * @param link_flag The flag to convert into a string
* *
* @return the i18n'd association string * @return the i18n'd doclink string
*/ */
const char *gnc_get_association_str (char association_flag); const char *gnc_get_doclink_str (char link_flag);
typedef enum typedef enum
{ {

View File

@ -175,7 +175,7 @@ const char *void_reason_str = "void-reason";
const char *void_time_str = "void-time"; const char *void_time_str = "void-time";
const char *void_former_notes_str = "void-former-notes"; const char *void_former_notes_str = "void-former-notes";
const char *trans_is_closing_str = "book_closing"; const char *trans_is_closing_str = "book_closing";
const char *assoc_uri_str = "assoc_uri"; const char *doclink_uri_str = "doclink_uri";
/* KVP entry for date-due value */ /* KVP entry for date-due value */
#define TRANS_DATE_DUE_KVP "trans-date-due" #define TRANS_DATE_DUE_KVP "trans-date-due"
@ -769,7 +769,7 @@ xaccTransCopyFromClipBoard(const Transaction *from_trans, Transaction *to_trans,
xaccTransSetNum(to_trans, xaccTransGetNum(from_trans)); xaccTransSetNum(to_trans, xaccTransGetNum(from_trans));
xaccTransSetNotes(to_trans, xaccTransGetNotes(from_trans)); xaccTransSetNotes(to_trans, xaccTransGetNotes(from_trans));
xaccTransSetAssociation(to_trans, xaccTransGetAssociation (from_trans)); xaccTransSetDocLink(to_trans, xaccTransGetDocLink (from_trans));
if(!no_date) if(!no_date)
{ {
xaccTransSetDatePostedSecs(to_trans, xaccTransRetDatePosted (from_trans)); xaccTransSetDatePostedSecs(to_trans, xaccTransRetDatePosted (from_trans));
@ -2156,18 +2156,18 @@ xaccTransSetDescription (Transaction *trans, const char *desc)
} }
void void
xaccTransSetAssociation (Transaction *trans, const char *assoc) xaccTransSetDocLink (Transaction *trans, const char *doclink)
{ {
if (!trans || !assoc) return; if (!trans || !doclink) return;
xaccTransBeginEdit(trans); xaccTransBeginEdit(trans);
if (g_strcmp0 (assoc, "") == 0) if (g_strcmp0 (doclink, "") == 0)
qof_instance_set_kvp (QOF_INSTANCE (trans), NULL, 1, assoc_uri_str); qof_instance_set_kvp (QOF_INSTANCE (trans), NULL, 1, doclink_uri_str);
else else
{ {
GValue v = G_VALUE_INIT; GValue v = G_VALUE_INIT;
g_value_init (&v, G_TYPE_STRING); g_value_init (&v, G_TYPE_STRING);
g_value_set_string (&v, assoc); g_value_set_string (&v, doclink);
qof_instance_set_kvp (QOF_INSTANCE (trans), &v, 1, assoc_uri_str); qof_instance_set_kvp (QOF_INSTANCE (trans), &v, 1, doclink_uri_str);
} }
qof_instance_set_dirty(QOF_INSTANCE(trans)); qof_instance_set_dirty(QOF_INSTANCE(trans));
xaccTransCommitEdit(trans); xaccTransCommitEdit(trans);
@ -2347,11 +2347,11 @@ xaccTransGetDescription (const Transaction *trans)
} }
const char * const char *
xaccTransGetAssociation (const Transaction *trans) xaccTransGetDocLink (const Transaction *trans)
{ {
GValue v = G_VALUE_INIT; GValue v = G_VALUE_INIT;
if (!trans) return NULL; if (!trans) return NULL;
qof_instance_get_kvp (QOF_INSTANCE (trans), &v, 1, assoc_uri_str); qof_instance_get_kvp (QOF_INSTANCE (trans), &v, 1, doclink_uri_str);
if (G_VALUE_HOLDS_STRING (&v)) if (G_VALUE_HOLDS_STRING (&v))
return g_value_get_string (&v); return g_value_get_string (&v);
return NULL; return NULL;
@ -3033,9 +3033,9 @@ gboolean xaccTransRegister (void)
(QofSetterFunc)qofTransSetNotes (QofSetterFunc)qofTransSetNotes
}, },
{ {
TRANS_ASSOCIATION, QOF_TYPE_STRING, TRANS_DOCLINK, QOF_TYPE_STRING,
(QofAccessFunc)xaccTransGetAssociation, (QofAccessFunc)xaccTransGetDocLink,
(QofSetterFunc)xaccTransSetAssociation (QofSetterFunc)xaccTransSetDocLink
}, },
{ {
TRANS_IS_CLOSING, QOF_TYPE_BOOLEAN, TRANS_IS_CLOSING, QOF_TYPE_BOOLEAN,

View File

@ -320,8 +320,8 @@ void xaccTransSetNum (Transaction *trans, const char *num);
/** Sets the transaction Description */ /** Sets the transaction Description */
void xaccTransSetDescription (Transaction *trans, const char *desc); void xaccTransSetDescription (Transaction *trans, const char *desc);
/** Sets the transaction Association */ /** Sets the transaction Document Link */
void xaccTransSetAssociation (Transaction *trans, const char *assoc); void xaccTransSetDocLink (Transaction *trans, const char *doclink);
/** Sets the transaction Notes /** Sets the transaction Notes
* *
@ -336,8 +336,8 @@ void xaccTransSetNotes (Transaction *trans, const char *notes);
const char * xaccTransGetNum (const Transaction *trans); const char * xaccTransGetNum (const Transaction *trans);
/** Gets the transaction Description */ /** Gets the transaction Description */
const char * xaccTransGetDescription (const Transaction *trans); const char * xaccTransGetDescription (const Transaction *trans);
/** Gets the transaction association */ /** Gets the transaction Document Link */
const char * xaccTransGetAssociation(const Transaction *trans); const char * xaccTransGetDocLink(const Transaction *trans);
/** Gets the transaction Notes /** Gets the transaction Notes
* *
The Notes field is only visible in the register in double-line mode */ The Notes field is only visible in the register in double-line mode */
@ -755,7 +755,7 @@ time64 xaccTransGetVoidTime(const Transaction *tr);
#define TRANS_IS_BALANCED "trans-balanced?" #define TRANS_IS_BALANCED "trans-balanced?"
#define TRANS_IS_CLOSING "trans-is-closing?" #define TRANS_IS_CLOSING "trans-is-closing?"
#define TRANS_NOTES "notes" #define TRANS_NOTES "notes"
#define TRANS_ASSOCIATION "assoc" #define TRANS_DOCLINK "doclink"
#define TRANS_TYPE "type" #define TRANS_TYPE "type"
#define TRANS_VOID_STATUS "void-p" #define TRANS_VOID_STATUS "void-p"
#define TRANS_VOID_REASON "void-reason" #define TRANS_VOID_REASON "void-reason"

View File

@ -84,7 +84,7 @@ static QofLogModule log_module = GNC_MOD_BUSINESS;
#define _GNC_MOD_NAME GNC_ID_INVOICE #define _GNC_MOD_NAME GNC_ID_INVOICE
#define GNC_INVOICE_IS_CN "credit-note" #define GNC_INVOICE_IS_CN "credit-note"
#define GNC_INVOICE_ASSOC "assoc_uri" #define GNC_INVOICE_DOCLINK "doclink_uri"
#define SET_STR(obj, member, str) { \ #define SET_STR(obj, member, str) { \
char * tmp; \ char * tmp; \
@ -538,18 +538,18 @@ void gncInvoiceSetNotes (GncInvoice *invoice, const char *notes)
gncInvoiceCommitEdit (invoice); gncInvoiceCommitEdit (invoice);
} }
void gncInvoiceSetAssociation (GncInvoice *invoice, const char *assoc) void gncInvoiceSetDocLink (GncInvoice *invoice, const char *doclink)
{ {
if (!invoice || !assoc) return; if (!invoice || !doclink) return;
gncInvoiceBeginEdit (invoice); gncInvoiceBeginEdit (invoice);
if (g_strcmp0 (assoc, "") == 0) if (g_strcmp0 (doclink, "") == 0)
qof_instance_set_kvp (QOF_INSTANCE (invoice), NULL, 1, GNC_INVOICE_ASSOC); qof_instance_set_kvp (QOF_INSTANCE (invoice), NULL, 1, GNC_INVOICE_DOCLINK);
else else
{ {
GValue v = G_VALUE_INIT; GValue v = G_VALUE_INIT;
g_value_init (&v, G_TYPE_STRING); g_value_init (&v, G_TYPE_STRING);
g_value_set_string (&v, assoc); g_value_set_string (&v, doclink);
qof_instance_set_kvp (QOF_INSTANCE (invoice), &v, 1, GNC_INVOICE_ASSOC); qof_instance_set_kvp (QOF_INSTANCE (invoice), &v, 1, GNC_INVOICE_DOCLINK);
} }
qof_instance_set_dirty (QOF_INSTANCE(invoice)); qof_instance_set_dirty (QOF_INSTANCE(invoice));
gncInvoiceCommitEdit (invoice); gncInvoiceCommitEdit (invoice);
@ -863,11 +863,11 @@ const char * gncInvoiceGetNotes (const GncInvoice *invoice)
return invoice->notes; return invoice->notes;
} }
const char * gncInvoiceGetAssociation (const GncInvoice *invoice) const char * gncInvoiceGetDocLink (const GncInvoice *invoice)
{ {
GValue v = G_VALUE_INIT; GValue v = G_VALUE_INIT;
if (!invoice) return NULL; if (!invoice) return NULL;
qof_instance_get_kvp (QOF_INSTANCE(invoice), &v, 1, GNC_INVOICE_ASSOC); qof_instance_get_kvp (QOF_INSTANCE(invoice), &v, 1, GNC_INVOICE_DOCLINK);
if (G_VALUE_HOLDS_STRING(&v)) if (G_VALUE_HOLDS_STRING(&v))
return g_value_get_string (&v); return g_value_get_string (&v);
return NULL; return NULL;
@ -2237,7 +2237,7 @@ gboolean gncInvoiceRegister (void)
{ INVOICE_IS_PAID, QOF_TYPE_BOOLEAN, (QofAccessFunc)gncInvoiceIsPaid, NULL }, { INVOICE_IS_PAID, QOF_TYPE_BOOLEAN, (QofAccessFunc)gncInvoiceIsPaid, NULL },
{ INVOICE_BILLINGID, QOF_TYPE_STRING, (QofAccessFunc)gncInvoiceGetBillingID, (QofSetterFunc)gncInvoiceSetBillingID }, { INVOICE_BILLINGID, QOF_TYPE_STRING, (QofAccessFunc)gncInvoiceGetBillingID, (QofSetterFunc)gncInvoiceSetBillingID },
{ INVOICE_NOTES, QOF_TYPE_STRING, (QofAccessFunc)gncInvoiceGetNotes, (QofSetterFunc)gncInvoiceSetNotes }, { INVOICE_NOTES, QOF_TYPE_STRING, (QofAccessFunc)gncInvoiceGetNotes, (QofSetterFunc)gncInvoiceSetNotes },
{ INVOICE_ASSOCIATION, QOF_TYPE_STRING, (QofAccessFunc)gncInvoiceGetAssociation, (QofSetterFunc)gncInvoiceSetAssociation }, { INVOICE_DOCLINK, QOF_TYPE_STRING, (QofAccessFunc)gncInvoiceGetDocLink, (QofSetterFunc)gncInvoiceSetDocLink },
{ INVOICE_ACC, GNC_ID_ACCOUNT, (QofAccessFunc)gncInvoiceGetPostedAcc, (QofSetterFunc)gncInvoiceSetPostedAcc }, { INVOICE_ACC, GNC_ID_ACCOUNT, (QofAccessFunc)gncInvoiceGetPostedAcc, (QofSetterFunc)gncInvoiceSetPostedAcc },
{ INVOICE_POST_TXN, GNC_ID_TRANS, (QofAccessFunc)gncInvoiceGetPostedTxn, (QofSetterFunc)gncInvoiceSetPostedTxn }, { INVOICE_POST_TXN, GNC_ID_TRANS, (QofAccessFunc)gncInvoiceGetPostedTxn, (QofSetterFunc)gncInvoiceSetPostedTxn },
{ INVOICE_POST_LOT, GNC_ID_LOT, (QofAccessFunc)gncInvoiceGetPostedLot, NULL/*(QofSetterFunc)gncInvoiceSetPostedLot*/ }, { INVOICE_POST_LOT, GNC_ID_LOT, (QofAccessFunc)gncInvoiceGetPostedLot, NULL/*(QofSetterFunc)gncInvoiceSetPostedLot*/ },

View File

@ -108,7 +108,7 @@ void gncInvoiceSetDatePosted (GncInvoice *invoice, time64 date);
void gncInvoiceSetTerms (GncInvoice *invoice, GncBillTerm *terms); void gncInvoiceSetTerms (GncInvoice *invoice, GncBillTerm *terms);
void gncInvoiceSetBillingID (GncInvoice *invoice, const char *billing_id); void gncInvoiceSetBillingID (GncInvoice *invoice, const char *billing_id);
void gncInvoiceSetNotes (GncInvoice *invoice, const char *notes); void gncInvoiceSetNotes (GncInvoice *invoice, const char *notes);
void gncInvoiceSetAssociation (GncInvoice *invoice, const char *assoc); void gncInvoiceSetDocLink (GncInvoice *invoice, const char *doclink);
void gncInvoiceSetCurrency (GncInvoice *invoice, gnc_commodity *currency); void gncInvoiceSetCurrency (GncInvoice *invoice, gnc_commodity *currency);
void gncInvoiceSetActive (GncInvoice *invoice, gboolean active); void gncInvoiceSetActive (GncInvoice *invoice, gboolean active);
void gncInvoiceSetIsCreditNote (GncInvoice *invoice, gboolean credit_note); void gncInvoiceSetIsCreditNote (GncInvoice *invoice, gboolean credit_note);
@ -144,7 +144,7 @@ time64 gncInvoiceGetDateDue (const GncInvoice *invoice);
GncBillTerm * gncInvoiceGetTerms (const GncInvoice *invoice); GncBillTerm * gncInvoiceGetTerms (const GncInvoice *invoice);
const char * gncInvoiceGetBillingID (const GncInvoice *invoice); const char * gncInvoiceGetBillingID (const GncInvoice *invoice);
const char * gncInvoiceGetNotes (const GncInvoice *invoice); const char * gncInvoiceGetNotes (const GncInvoice *invoice);
const char * gncInvoiceGetAssociation (const GncInvoice *invoice); const char * gncInvoiceGetDocLink (const GncInvoice *invoice);
GncOwnerType gncInvoiceGetOwnerType (const GncInvoice *invoice); GncOwnerType gncInvoiceGetOwnerType (const GncInvoice *invoice);
GList * gncInvoiceGetTypeListForOwnerType (const GncOwnerType type); GList * gncInvoiceGetTypeListForOwnerType (const GncOwnerType type);
GncInvoiceType gncInvoiceGetType (const GncInvoice *invoice); GncInvoiceType gncInvoiceGetType (const GncInvoice *invoice);
@ -293,7 +293,7 @@ gboolean gncInvoiceIsPaid (const GncInvoice *invoice);
#define INVOICE_TERMS "terms" #define INVOICE_TERMS "terms"
#define INVOICE_BILLINGID "billing_id" #define INVOICE_BILLINGID "billing_id"
#define INVOICE_NOTES "notes" #define INVOICE_NOTES "notes"
#define INVOICE_ASSOCIATION "assoc" #define INVOICE_DOCLINK "doclink"
#define INVOICE_ACC "account" #define INVOICE_ACC "account"
#define INVOICE_POST_TXN "posted_txn" #define INVOICE_POST_TXN "posted_txn"
#define INVOICE_POST_LOT "posted_lot" #define INVOICE_POST_LOT "posted_lot"

View File

@ -55,13 +55,13 @@ gnucash/gnome/assistant-stock-split.c
gnucash/gnome/business-gnome-utils.c gnucash/gnome/business-gnome-utils.c
gnucash/gnome/business-options-gnome.c gnucash/gnome/business-options-gnome.c
gnucash/gnome/business-urls.c gnucash/gnome/business-urls.c
gnucash/gnome/dialog-assoc.c
gnucash/gnome/dialog-billterms.c gnucash/gnome/dialog-billterms.c
gnucash/gnome/dialog-choose-owner.c gnucash/gnome/dialog-choose-owner.c
gnucash/gnome/dialog-commodities.c gnucash/gnome/dialog-commodities.c
gnucash/gnome/dialog-customer.c gnucash/gnome/dialog-customer.c
gnucash/gnome/dialog-custom-report.c gnucash/gnome/dialog-custom-report.c
gnucash/gnome/dialog-date-close.c gnucash/gnome/dialog-date-close.c
gnucash/gnome/dialog-doclink.c
gnucash/gnome/dialog-employee.c gnucash/gnome/dialog-employee.c
gnucash/gnome/dialog-fincalc.c gnucash/gnome/dialog-fincalc.c
gnucash/gnome/dialog-find-account.c gnucash/gnome/dialog-find-account.c
@ -130,9 +130,9 @@ gnucash/gnome-utils/account-quickfill.c
gnucash/gnome-utils/assistant-xml-encoding.c gnucash/gnome-utils/assistant-xml-encoding.c
gnucash/gnome-utils/cursors.c gnucash/gnome-utils/cursors.c
gnucash/gnome-utils/dialog-account.c gnucash/gnome-utils/dialog-account.c
gnucash/gnome-utils/dialog-assoc-utils.c
gnucash/gnome-utils/dialog-book-close.c gnucash/gnome-utils/dialog-book-close.c
gnucash/gnome-utils/dialog-commodity.c gnucash/gnome-utils/dialog-commodity.c
gnucash/gnome-utils/dialog-doclink-utils.c
gnucash/gnome-utils/dialog-dup-trans.c gnucash/gnome-utils/dialog-dup-trans.c
gnucash/gnome-utils/dialog-file-access.c gnucash/gnome-utils/dialog-file-access.c
gnucash/gnome-utils/dialog-object-references.c gnucash/gnome-utils/dialog-object-references.c
@ -248,7 +248,6 @@ gnucash/gtkbuilder/business-options-gnome.glade
gnucash/gtkbuilder/business-prefs.glade gnucash/gtkbuilder/business-prefs.glade
gnucash/gtkbuilder/dialog-account.glade gnucash/gtkbuilder/dialog-account.glade
gnucash/gtkbuilder/dialog-account-picker.glade gnucash/gtkbuilder/dialog-account-picker.glade
gnucash/gtkbuilder/dialog-assoc.glade
gnucash/gtkbuilder/dialog-bi-import-gui.glade gnucash/gtkbuilder/dialog-bi-import-gui.glade
gnucash/gtkbuilder/dialog-billterms.glade gnucash/gtkbuilder/dialog-billterms.glade
gnucash/gtkbuilder/dialog-book-close.glade gnucash/gtkbuilder/dialog-book-close.glade
@ -259,6 +258,7 @@ gnucash/gtkbuilder/dialog-customer.glade
gnucash/gtkbuilder/dialog-customer-import-gui.glade gnucash/gtkbuilder/dialog-customer-import-gui.glade
gnucash/gtkbuilder/dialog-custom-report.glade gnucash/gtkbuilder/dialog-custom-report.glade
gnucash/gtkbuilder/dialog-date-close.glade gnucash/gtkbuilder/dialog-date-close.glade
gnucash/gtkbuilder/dialog-doclink.glade
gnucash/gtkbuilder/dialog-employee.glade gnucash/gtkbuilder/dialog-employee.glade
gnucash/gtkbuilder/dialog-file-access.glade gnucash/gtkbuilder/dialog-file-access.glade
gnucash/gtkbuilder/dialog-fincalc.glade gnucash/gtkbuilder/dialog-fincalc.glade
@ -402,11 +402,11 @@ gnucash/register/ledger-core/split-register-load.c
gnucash/register/ledger-core/split-register-model.c gnucash/register/ledger-core/split-register-model.c
gnucash/register/ledger-core/split-register-model-save.c gnucash/register/ledger-core/split-register-model-save.c
gnucash/register/ledger-core/split-register-util.c gnucash/register/ledger-core/split-register-util.c
gnucash/register/register-core/assoccell.c
gnucash/register/register-core/basiccell.c gnucash/register/register-core/basiccell.c
gnucash/register/register-core/cellblock.c gnucash/register/register-core/cellblock.c
gnucash/register/register-core/cell-factory.c gnucash/register/register-core/cell-factory.c
gnucash/register/register-core/checkboxcell.c gnucash/register/register-core/checkboxcell.c
gnucash/register/register-core/doclinkcell.c
gnucash/register/register-core/formulacell.c gnucash/register/register-core/formulacell.c
gnucash/register/register-core/gtable.c gnucash/register/register-core/gtable.c
gnucash/register/register-core/numcell.c gnucash/register/register-core/numcell.c