GnuCash c935c2f+
Loading...
Searching...
No Matches
Files | Functions

Files

file  gnc-features.h
 Utility functions for file access.
 

Functions

gchar * gnc_features_test_unknown (QofBook *book)
 Test if the current book relies on features only introduced in a more recent version of GnuCash.
 
void gnc_features_set_unused (QofBook *book, const gchar *feature)
 Indicate that the current book does not use the given feature.
 
void gnc_features_set_used (QofBook *book, const gchar *feature)
 Indicate that the current book uses the given feature.
 
gboolean gnc_features_check_used (QofBook *, char const *feature)
 

Defined features

#define GNC_FEATURE_CREDIT_NOTES   "Credit Notes"
 
#define GNC_FEATURE_NUM_FIELD_SOURCE   "Number Field Source"
 
#define GNC_FEATURE_KVP_EXTRA_DATA   "Extra data in addresses, jobs or invoice entries"
 
#define GNC_FEATURE_BOOK_CURRENCY   "Use a Book-Currency"
 
#define GNC_FEATURE_GUID_BAYESIAN   "Account GUID based Bayesian data"
 
#define GNC_FEATURE_GUID_FLAT_BAYESIAN   "Account GUID based bayesian with flat KVP"
 
#define GNC_FEATURE_SQLITE3_ISO_DATES   "ISO-8601 formatted date strings in SQLite3 databases."
 
#define GNC_FEATURE_REG_SORT_FILTER   "Register sort and filter settings stored in .gcm file"
 
#define GNC_FEATURE_BUDGET_UNREVERSED   "Use natural signs in budget amounts"
 
#define GNC_FEATURE_BUDGET_SHOW_EXTRA_ACCOUNT_COLS   "Show extra account columns in the Budget View"
 
#define GNC_FEATURE_EQUITY_TYPE_OPENING_BALANCE   "Use a dedicated opening balance account identified by an 'equity-type' slot"
 

Detailed Description

Macro Definition Documentation

◆ GNC_FEATURE_BOOK_CURRENCY

#define GNC_FEATURE_BOOK_CURRENCY   "Use a Book-Currency"

Definition at line 57 of file gnc-features.h.

◆ GNC_FEATURE_BUDGET_SHOW_EXTRA_ACCOUNT_COLS

#define GNC_FEATURE_BUDGET_SHOW_EXTRA_ACCOUNT_COLS   "Show extra account columns in the Budget View"

Definition at line 63 of file gnc-features.h.

◆ GNC_FEATURE_BUDGET_UNREVERSED

#define GNC_FEATURE_BUDGET_UNREVERSED   "Use natural signs in budget amounts"

Definition at line 62 of file gnc-features.h.

◆ GNC_FEATURE_CREDIT_NOTES

#define GNC_FEATURE_CREDIT_NOTES   "Credit Notes"

Definition at line 54 of file gnc-features.h.

◆ GNC_FEATURE_EQUITY_TYPE_OPENING_BALANCE

#define GNC_FEATURE_EQUITY_TYPE_OPENING_BALANCE   "Use a dedicated opening balance account identified by an 'equity-type' slot"

Definition at line 64 of file gnc-features.h.

◆ GNC_FEATURE_GUID_BAYESIAN

#define GNC_FEATURE_GUID_BAYESIAN   "Account GUID based Bayesian data"

Definition at line 58 of file gnc-features.h.

◆ GNC_FEATURE_GUID_FLAT_BAYESIAN

#define GNC_FEATURE_GUID_FLAT_BAYESIAN   "Account GUID based bayesian with flat KVP"

Definition at line 59 of file gnc-features.h.

◆ GNC_FEATURE_KVP_EXTRA_DATA

#define GNC_FEATURE_KVP_EXTRA_DATA   "Extra data in addresses, jobs or invoice entries"

Definition at line 56 of file gnc-features.h.

◆ GNC_FEATURE_NUM_FIELD_SOURCE

#define GNC_FEATURE_NUM_FIELD_SOURCE   "Number Field Source"

Definition at line 55 of file gnc-features.h.

◆ GNC_FEATURE_REG_SORT_FILTER

#define GNC_FEATURE_REG_SORT_FILTER   "Register sort and filter settings stored in .gcm file"

Definition at line 61 of file gnc-features.h.

◆ GNC_FEATURE_SQLITE3_ISO_DATES

#define GNC_FEATURE_SQLITE3_ISO_DATES   "ISO-8601 formatted date strings in SQLite3 databases."

Definition at line 60 of file gnc-features.h.

Function Documentation

◆ gnc_features_set_unused()

void gnc_features_set_unused ( QofBook book,
const gchar *  feature 
)

Indicate that the current book does not use the given feature.

This will allow older versions of GnuCash that don't support this feature to load this book.

Definition at line 124 of file gnc-features.cpp.

125{
126 g_return_if_fail (book);
127 g_return_if_fail (feature);
128
129 /* Can't set an unknown feature */
130 auto iter = features_table.find (feature);
131 if (iter == features_table.end ())
132 {
133 PWARN("Tried to set unknown feature as unused.");
134 return;
135 }
136
137 qof_book_unset_feature (book, feature);
138}
#define PWARN(format, args...)
Log a warning.
Definition qoflog.h:250

◆ gnc_features_set_used()

void gnc_features_set_used ( QofBook book,
const gchar *  feature 
)

Indicate that the current book uses the given feature.

This will prevent older versions of GnuCash that don't support this feature to refuse to load this book.

Definition at line 107 of file gnc-features.cpp.

108{
109 g_return_if_fail (book);
110 g_return_if_fail (feature);
111
112 /* Can't set an unknown feature */
113 auto iter = features_table.find (feature);
114 if (iter == features_table.end ())
115 {
116 PWARN("Tried to set unknown feature as used.");
117 return;
118 }
119
120 qof_book_set_feature (book, feature, iter->second.data());
121}

◆ gnc_features_test_unknown()

gchar * gnc_features_test_unknown ( QofBook book)

Test if the current book relies on features only introduced in a more recent version of GnuCash.

Returns a message to display if we found unknown features, NULL if we're okay.

Definition at line 82 of file gnc-features.cpp.

83{
84 auto unknowns {qof_book_get_unknown_features (book, features_table)};
85 if (unknowns.empty())
86 return nullptr;
87
88 auto obsolete = std::remove_if(unknowns.begin(), unknowns.end(),
89 [](auto& unknown){
90 return obsolete_features.find(unknown.first) != obsolete_features.end();
91 });
92 while (obsolete != unknowns.end())
93 {
94 qof_book_unset_feature(book, obsolete->first.data());
95 obsolete = unknowns.erase(obsolete);
96 }
97
98 if (unknowns.empty())
99 return nullptr;
100
101 auto accum = [](const auto& a, const auto& b){ return a + "\n* " + b.second.data(); };
102 auto msg {std::accumulate (unknowns.begin(), unknowns.end(),
103 std::string (_(header)), accum)};
104 return g_strdup (msg.c_str());
105}