GnuCash  4.13-177-g21dd8aa057+
Modules | Files | Data Structures | Macros | Typedefs | Enumerations | Functions | Variables
GUI

gnc-plugin-page-report.h – A GncPlugin page for a report. More...

Modules

 Window/Plugin Structure
 
 Dialogs
 
 Druids
 
 Utility functions for the GnuCash GUI
 
 Auto-complete typed user input.
 QuickFill is meant to be used by the GUI to auto-complete (e.g.
 
 Reports
 
 Creating and editing accounts in the GUI
 
 Commodity windows
 
 GncCurrencyEdit
 
 Gnome-specific GUI handling.
 
 GUIUtility
 
 GnuCash Tree Model
 
 GncTreeView
 
 Registers, Ledgers and Journals
 

Files

file  gnc-accounting-period.c
 General utilities for dealing with accounting periods.
 
file  gnc-accounting-period.h
 General utilities for dealing with accounting periods.
 
file  dialog-book-close.h
 This file contains the functions to present a GUI to select a book closing date and accounts into which to close the Income and Expense accounts.
 
file  dialog-file-access.h
 This file contains the functions to present a GUI to select a file or a database connection.
 
file  dialog-object-references.h
 This file contains the functions to present a dialog box with a list of object references and an explanation that these objects must be modified to not refer to another specific object so that that object may be deleted.
 
file  gnc-period-select.c
 A custom widget for selecting accounting periods.
 
file  gnc-period-select.h
 A custom widget for selecting accounting periods.
 
file  gnc-tree-view-sx-list.h
 GncTreeView implementation for Scheduled Transaction List.
 
file  gnc-tree-view.h
 common utilities for manipulating a GtkTreeView within gnucash
 

Data Structures

struct  GncPeriodSelectPrivate
 Private Data Structure. More...
 
struct  GncPeriodSelect
 
struct  GncPeriodSelectClass
 
struct  GncTreeViewSxList
 
struct  GncTreeViewSxListClass
 
struct  GncTreeView
 
struct  GncTreeViewClass
 

Macros

#define GNC_PERIOD_SELECT_GET_PRIVATE(o)   ((GncPeriodSelectPrivate*)gnc_period_select_get_instance_private((GncPeriodSelect*)o))
 
#define GNC_TYPE_PERIOD_SELECT   (gnc_period_select_get_type())
 
#define GNC_PERIOD_SELECT(o)   (G_TYPE_CHECK_INSTANCE_CAST ((o), GNC_TYPE_PERIOD_SELECT, GncPeriodSelect))
 
#define GNC_PERIOD_SELECT_CLASS(k)   (G_TYPE_CHECK_CLASS_CAST ((k), GNC_TYPE_PERIOD_SELECT, GncPeriodSelectClass))
 
#define GNC_IS_PERIOD_SELECT(o)   (G_TYPE_CHECK_INSTANCE_TYPE ((o), GNC_TYPE_PERIOD_SELECT))
 
#define GNC_TYPE_TREE_VIEW_SX_LIST   (gnc_tree_view_sx_list_get_type ())
 
#define GNC_TREE_VIEW_SX_LIST(obj)   (G_TYPE_CHECK_INSTANCE_CAST ((obj), GNC_TYPE_TREE_VIEW_SX_LIST, GncTreeViewSxList))
 
#define GNC_TREE_VIEW_SX_LIST_CLASS(klass)   (G_TYPE_CHECK_CLASS_CAST ((klass), GNC_TYPE_TREE_VIEW_SX_LIST, GncTreeViewSxListClass))
 
#define GNC_IS_TREE_VIEW_SX_LIST(obj)   (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GNC_TYPE_TREE_VIEW_SX_LIST))
 
#define GNC_IS_TREE_VIEW_SX_LIST_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE ((klass), GNC_TYPE_TREE_VIEW_SX_LIST))
 
#define GNC_TREE_VIEW_SX_LIST_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), GNC_TYPE_TREE_VIEW_SX_LIST, GncTreeViewSxListClass))
 
#define GNC_TYPE_TREE_VIEW   (gnc_tree_view_get_type ())
 
#define GNC_TREE_VIEW(obj)   (G_TYPE_CHECK_INSTANCE_CAST ((obj), GNC_TYPE_TREE_VIEW, GncTreeView))
 
#define GNC_TREE_VIEW_CLASS(klass)   (G_TYPE_CHECK_CLASS_CAST ((klass), GNC_TYPE_TREE_VIEW, GncTreeViewClass))
 
#define GNC_IS_TREE_VIEW(obj)   (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GNC_TYPE_TREE_VIEW))
 
#define GNC_IS_TREE_VIEW_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE ((klass), GNC_TYPE_TREE_VIEW))
 
#define GNC_TREE_VIEW_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), GNC_TYPE_TREE_VIEW, GncTreeViewClass))
 
#define GNC_TREE_VIEW_NAME   "GncTreeView"
 
#define MODEL_COLUMN   "model_column"
 
#define REAL_TITLE   "real_title"
 
#define PREF_NAME   "pref-name"
 
#define ALWAYS_VISIBLE   "always-visible"
 
#define DEFAULT_VISIBLE   "default-visible"
 
#define GNC_TREE_VIEW_COLUMN_DATA_NONE   -1
 
#define GNC_TREE_VIEW_COLUMN_COLOR_NONE   -1
 
#define GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS   -1
 

Typedefs

typedef void(* renderer_toggled) (GtkCellRendererToggle *cell_renderer_toggle, const gchar *path, gpointer user_data)
 

Enumerations

enum  GncAccountingPeriod {
  GNC_ACCOUNTING_PERIOD_INVALID = -1, GNC_ACCOUNTING_PERIOD_TODAY, GNC_ACCOUNTING_PERIOD_MONTH, GNC_ACCOUNTING_PERIOD_MONTH_PREV,
  GNC_ACCOUNTING_PERIOD_QUARTER, GNC_ACCOUNTING_PERIOD_QUARTER_PREV, GNC_ACCOUNTING_PERIOD_CYEAR, GNC_ACCOUNTING_PERIOD_CYEAR_PREV,
  GNC_ACCOUNTING_PERIOD_CYEAR_LAST, GNC_ACCOUNTING_PERIOD_FYEAR = GNC_ACCOUNTING_PERIOD_CYEAR_LAST, GNC_ACCOUNTING_PERIOD_FYEAR_PREV, GNC_ACCOUNTING_PERIOD_FYEAR_LAST,
  GNC_ACCOUNTING_PERIOD_LAST = GNC_ACCOUNTING_PERIOD_FYEAR_LAST
}
 This specifies a time interval.
 
enum  {
  PROP_0, PROP_FY_END, PROP_SHOW_DATE, PROP_DATE_BASE,
  PROP_PS_ACTIVE
}
 
enum  { CHANGED, LAST_SIGNAL }
 

Functions

void gnc_ui_close_book (QofBook *book, GtkWindow *parent)
 Create and run the dialog to close the book. More...
 
void gnc_ui_file_access_for_open (GtkWindow *parent)
 
void gnc_ui_file_access_for_save_as (GtkWindow *parent)
 
void gnc_ui_file_access_for_export (GtkWindow *parent)
 
void gnc_ui_object_references_show (const gchar *explanation, GList *objlist)
 
void gnc_period_select_set_active (GncPeriodSelect *period, GncAccountingPeriod which)
 Set which item in the GncPeriodSelect is initially selected. More...
 
GncAccountingPeriod gnc_period_select_get_active (GncPeriodSelect *period)
 Get the currently selected accounting period from a GncPeriodSelect widget. More...
 
GDate * gnc_period_select_get_date (GncPeriodSelect *period)
 Get the currently selected accounting period choice from a GncPeriodSelect widget. More...
 
GType gnc_tree_view_sx_list_get_type (void)
 
GtkTreeView * gnc_tree_view_sx_list_new (GncSxInstanceModel *sx_instances)
 
SchedXaction * gnc_tree_view_sx_list_get_sx_from_path (GncTreeViewSxList *view, GtkTreePath *path)
 
GType gnc_tree_view_get_type (void)
 

Variables

const gchar * start_strings [GNC_ACCOUNTING_PERIOD_LAST]
 
const gchar * end_strings [GNC_ACCOUNTING_PERIOD_LAST]
 

Accounting Periods

time64 gnc_accounting_period_fiscal_start (void)
 
time64 gnc_accounting_period_fiscal_end (void)
 
GDate * gnc_accounting_period_start_gdate (GncAccountingPeriod which, const GDate *fy_end, const GDate *contains)
 This function returns the starting date for an accounting period. More...
 
GDate * gnc_accounting_period_end_gdate (GncAccountingPeriod which, const GDate *fy_end, const GDate *contains)
 This function returns the ending date for an accounting period. More...
 

GncPeriodSelect Properties

GDate * gnc_period_select_get_fy_end (GncPeriodSelect *period)
 Get the current value of the fiscal year end setting from a GncPeriodSelect widget. More...
 
void gnc_period_select_set_fy_end (GncPeriodSelect *period, const GDate *fy_end)
 Set the fiscal year end on a GncPeriodSelect widget. More...
 
gboolean gnc_period_select_get_show_date (GncPeriodSelect *period)
 Get the current value of the "show sample" setting from a GncPeriodSelect widget.
 
void gnc_period_select_set_show_date (GncPeriodSelect *period, const gboolean show_date)
 Set the "show sample" setting on a GncPeriodSelect widget. More...
 
GDate * gnc_period_select_get_date_base (GncPeriodSelect *period)
 
void gnc_period_select_set_date_base (GncPeriodSelect *period, const GDate *date_base)
 

GncPeriodSelect Core Implementation

GtkWidget * gnc_period_select_new (gboolean starting_labels)
 Create a new GncPeriodSelect widget which is used to select a accounting period like "previous month" or "this year". More...
 
GtkWidget * gnc_period_select_new_glade (gchar *widget_name, gchar *string1, gchar *string2, gint int1, gint int2)
 Create a new GncPeriodSelect widget from a glade file. More...
 

GncPeriodSelect Widget Implementation

GType gnc_period_select_get_type (void)
 Returns the GType of a GncPeriodSelect widget.
 

Tree View Creation

GtkTreeViewColumn * gnc_tree_view_add_toggle_column (GncTreeView *view, const gchar *column_title, const gchar *column_short_title, const gchar *pref_name, gint model_data_column, gint model_visibility_column, GtkTreeIterCompareFunc column_sort_fn, renderer_toggled toggle_edited_cb)
 This function adds a new toggle column to a GncTreeView base view. More...
 
GtkTreeViewColumn * gnc_tree_view_add_text_column (GncTreeView *view, const gchar *column_title, const gchar *pref_name, const gchar *icon_name, const gchar *sizing_text, gint model_data_column, gint model_visibility_column, GtkTreeIterCompareFunc column_sort_fn)
 This function adds a new text column to a GncTreeView base view. More...
 
GtkTreeViewColumn * gnc_tree_view_add_text_view_column (GncTreeView *view, const gchar *column_title, const gchar *pref_name, const gchar *icon_name, const gchar *sizing_text, gint model_data_column, gint model_visibility_column, GtkTreeIterCompareFunc column_sort_fn)
 This function adds a new text view column to a GncTreeView base view. More...
 
GtkTreeViewColumn * gnc_tree_view_add_combo_column (GncTreeView *view, const gchar *column_title, const gchar *pref_name, const gchar *sizing_text, gint model_data_column, gint model_visibility_column, GtkTreeModel *combo_tree_model, gint combo_model_text_column, GtkTreeIterCompareFunc column_sort_fn)
 This function adds a new combobox column to a GncTreeView base view. More...
 
GtkTreeViewColumn * gnc_tree_view_add_date_column (GncTreeView *view, const gchar *column_title, const gchar *pref_name, const gchar *icon_name, const gchar *sizing_text, gint model_data_column, gint model_visibility_column, GtkTreeIterCompareFunc column_sort_fn)
 This function adds a new date column to a GncTreeView base view. More...
 
GtkTreeViewColumn * gnc_tree_view_add_numeric_column (GncTreeView *view, const gchar *column_title, const gchar *pref_name, const gchar *sizing_text, gint model_data_column, gint model_color_column, gint model_visibility_column, GtkTreeIterCompareFunc column_sort_fn)
 This function adds a new numeric column to a GncTreeView base view. More...
 
gint gnc_tree_view_append_column (GncTreeView *view, GtkTreeViewColumn *column)
 Add a column to a view based upon a GncTreeView. More...
 

Tree View Properties

void gnc_tree_view_configure_columns (GncTreeView *view)
 Make all the correct columns visible, respecting their default visibility setting, their "always" visibility setting, and the last saved state if available. More...
 
GtkTreeViewColumn * gnc_tree_view_find_column_by_name (GncTreeView *view, const gchar *wanted)
 Find a tree column given the "pref name". More...
 
void gnc_tree_view_set_state_section (GncTreeView *view, const gchar *section)
 This function is called to set up or remove an association between a saved state section and the display of a view. More...
 
const gchar * gnc_tree_view_get_state_section (GncTreeView *view)
 This function is called to get the current association between a saved state section and the display of a view. More...
 
void gnc_tree_view_remove_state_information (GncTreeView *view)
 This function is called to completely wipe the treeview's state information (column visibility, width, sorting order,..). More...
 
void gnc_tree_view_save_state (GncTreeView *view)
 This function is called to write the treeview's state information (column visibility, width, sorting order,..) to the state file. More...
 
void gnc_tree_view_expand_columns (GncTreeView *view, gchar *first_column_name,...)
 This function set the columns that will be allocated the free space in the view. More...
 
void gnc_tree_view_set_control_column_background (GncTreeView *view, gint column, GtkTreeCellDataFunc func)
 This function links the cell backgrounds of the two control columns to a column in the model that has color strings or a cell data function that sets the "cell-background" property. More...
 
void gnc_tree_view_set_sort_user_data (GncTreeView *view, GtkTreeModel *s_model)
 This allows the columns to be setup without the model connected. More...
 
void gnc_tree_view_set_show_column_menu (GncTreeView *view, gboolean visible)
 This function is called to set the "show-column-menu" property on this view. More...
 
gboolean gnc_tree_view_get_show_column_menu (GncTreeView *view)
 This function is called to get the current value of the "show-column-menu" property. More...
 
GtkCellRenderer * gnc_tree_view_column_get_renderer (GtkTreeViewColumn *column)
 Return the "main" cell renderer from a GtkTreeViewColumn added to a GncTreeView my one of the convenience routines. More...
 
void gnc_tree_view_keynav (GncTreeView *view, GtkTreeViewColumn **col, GtkTreePath *path, GdkEventKey *event)
 
gboolean gnc_tree_view_path_is_valid (GncTreeView *view, GtkTreePath *path)
 
void gnc_tree_view_set_editing_started_cb (GncTreeView *view, GFunc editing_started_cb, gpointer editing_cb_data)
 Setup a callback for when the user starts editing so appropriate actions can be taken like disable the actions delete menu option.
 
void gnc_tree_view_set_editing_finished_cb (GncTreeView *view, GFunc editing_finished_cb, gpointer editing_cb_data)
 Setup a callback for when the user finishes editing so appropriate actions can be taken like enable the actions delete menu option.
 

Detailed Description

gnc-plugin-page-report.h – A GncPlugin page for a report.

Copyright (C) 2004 Joshua Sled Author: Joshua Sled jsled.nosp@m.@asy.nosp@m.nchro.nosp@m.nous.nosp@m..org

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, contact:

Free Software Foundation Voice: +1-617-542-5942 51 Franklin Street, Fifth Floor Fax: +1-617-542-2652 Boston, MA 02110-1301, USA gnu@g.nosp@m.nu.o.nosp@m.rg

Function Documentation

◆ gnc_accounting_period_end_gdate()

GDate * gnc_accounting_period_end_gdate ( GncAccountingPeriod  which,
const GDate *  fy_end,
const GDate *  contains 
)

This function returns the ending date for an accounting period.

The date will be computed based upon the type of accounting interval requested, an optional fiscal year end value, and an optional time value.

Parameters
whichAn enum specifying the type of accounting period.
fy_endThis argument specifies the month and day of the fiscal year end. If the accounting period specified in the 'which' parameter is not a fiscal accounting period, this variable is ignored and may be NULL. Note: the year field of this argument is always ignored.
containsThis argument specifies the origin time value used by the calculations in this function. If this value is NULL, the origin will be the current time.
Returns
The final day of the specified time interval, as a GDate.

Definition at line 229 of file gnc-accounting-period.c.

232 {
233  GDate *date;
234 
235  if (contains)
236  {
237  date = g_date_new_dmy (g_date_get_day (contains),
238  g_date_get_month (contains),
239  g_date_get_year (contains));
240  }
241  else
242  {
243  date = g_date_new ();
244  gnc_gdate_set_today (date);
245  }
246 
247  switch (which)
248  {
249  default:
250  PINFO ("Undefined relative time constant %d", which);
251  g_date_free (date);
252  return 0;
253 
254  case GNC_ACCOUNTING_PERIOD_TODAY:
255  /* Already have today's date */
256  break;
257 
258  case GNC_ACCOUNTING_PERIOD_MONTH:
260  break;
261 
262  case GNC_ACCOUNTING_PERIOD_MONTH_PREV:
264  break;
265 
266  case GNC_ACCOUNTING_PERIOD_QUARTER:
268  break;
269 
270  case GNC_ACCOUNTING_PERIOD_QUARTER_PREV:
272  break;
273 
274  case GNC_ACCOUNTING_PERIOD_CYEAR:
275  gnc_gdate_set_year_end (date);
276  break;
277 
278  case GNC_ACCOUNTING_PERIOD_CYEAR_PREV:
280  break;
281 
282  case GNC_ACCOUNTING_PERIOD_FYEAR:
283  if (fy_end == NULL)
284  {
285  PINFO ("Request for fisal year value but no fiscal year end value provided.");
286  g_date_free (date);
287  return 0;
288  }
289  gnc_gdate_set_fiscal_year_end (date, fy_end);
290  break;
291 
292  case GNC_ACCOUNTING_PERIOD_FYEAR_PREV:
293  if (fy_end == NULL)
294  {
295  PINFO ("Request for fisal year value but no fiscal year end value provided.");
296  g_date_free (date);
297  return 0;
298  }
299  gnc_gdate_set_prev_fiscal_year_end (date, fy_end);
300  break;
301  }
302 
303  return date;
304 }
void gnc_gdate_set_fiscal_year_end(GDate *date, const GDate *year_end)
This function modifies a GDate to set it to the last day of the fiscal year in which it falls...
Definition: gnc-date.cpp:1622
#define PINFO(format, args...)
Print an informational note.
Definition: qoflog.h:256
void gnc_gdate_set_today(GDate *gd)
Set a GDate to the current day.
Definition: gnc-date.cpp:1240
void gnc_gdate_set_prev_month_end(GDate *date)
This function modifies a GDate to set it to the last day of the month prior to the one in which it fa...
Definition: gnc-date.cpp:1517
void gnc_gdate_set_prev_year_end(GDate *date)
This function modifies a GDate to set it to the last day of the year prior to the one in which it fal...
Definition: gnc-date.cpp:1589
void gnc_gdate_set_prev_fiscal_year_end(GDate *date, const GDate *year_end)
This function modifies a GDate to set it to the last day of the fiscal year prior to the one in which...
Definition: gnc-date.cpp:1656
void gnc_gdate_set_year_end(GDate *date)
This function modifies a GDate to set it to the last day of the year in which it falls.
Definition: gnc-date.cpp:1575
void gnc_gdate_set_month_end(GDate *date)
This function modifies a GDate to set it to the last day of the month in which it falls...
Definition: gnc-date.cpp:1485
void gnc_gdate_set_quarter_end(GDate *date)
This function modifies a GDate to set it to the last day of the quarter in which it falls...
Definition: gnc-date.cpp:1540
void gnc_gdate_set_prev_quarter_end(GDate *date)
This function modifies a GDate to set it to the last day of the quarter prior to the one in which it ...
Definition: gnc-date.cpp:1559

◆ gnc_accounting_period_start_gdate()

GDate * gnc_accounting_period_start_gdate ( GncAccountingPeriod  which,
const GDate *  fy_end,
const GDate *  contains 
)

This function returns the starting date for an accounting period.

The date will be computed based upon the type of accounting interval requested, an optional fiscal year end value, and an optional time value.

Parameters
whichAn enum specifying the type of accounting period.
fy_endThis argument specifies the month and day of the fiscal year end. If the accounting period specified in the 'which' parameter is not a fiscal accounting period, this variable is ignored and may be NULL. Note: the year field of this argument is always ignored.
containsThis argument specifies the origin time value used by the calculations in this function. If this value is NULL, the origin will be the current time.
Returns
The starting day of the specified time interval, as a GDate.

Definition at line 135 of file gnc-accounting-period.c.

138 {
139  GDate *date;
140 
141  if (contains)
142  {
143  date = g_date_new_dmy (g_date_get_day (contains),
144  g_date_get_month (contains),
145  g_date_get_year (contains));
146  }
147  else
148  {
149  date = g_date_new ();
150  gnc_gdate_set_today (date);
151  }
152 
153  switch (which)
154  {
155  default:
156  PINFO ("Undefined relative time constant %d", which);
157  g_date_free (date);
158  return NULL;
159 
160  case GNC_ACCOUNTING_PERIOD_TODAY:
161  /* Already have today's date */
162  break;
163 
164  case GNC_ACCOUNTING_PERIOD_MONTH:
166  break;
167 
168  case GNC_ACCOUNTING_PERIOD_MONTH_PREV:
170  break;
171 
172  case GNC_ACCOUNTING_PERIOD_QUARTER:
174  break;
175 
176  case GNC_ACCOUNTING_PERIOD_QUARTER_PREV:
178  break;
179 
180  case GNC_ACCOUNTING_PERIOD_CYEAR:
182  break;
183 
184  case GNC_ACCOUNTING_PERIOD_CYEAR_PREV:
186  break;
187 
188  case GNC_ACCOUNTING_PERIOD_FYEAR:
189  if (fy_end == NULL)
190  {
191  PINFO ("Request for fisal year value but no fiscal year end value provided.");
192  g_date_free (date);
193  return NULL;
194  }
195  gnc_gdate_set_fiscal_year_start (date, fy_end);
196  break;
197 
198  case GNC_ACCOUNTING_PERIOD_FYEAR_PREV:
199  if (fy_end == NULL)
200  {
201  PINFO ("Request for fisal year value but no fiscal year end value provided.");
202  g_date_free (date);
203  return NULL;
204  }
206  break;
207  }
208  return date;
209 }
#define PINFO(format, args...)
Print an informational note.
Definition: qoflog.h:256
void gnc_gdate_set_quarter_start(GDate *date)
This function modifies a GDate to set it to the first day of the quarter in which it falls...
Definition: gnc-date.cpp:1527
void gnc_gdate_set_today(GDate *gd)
Set a GDate to the current day.
Definition: gnc-date.cpp:1240
void gnc_gdate_set_prev_year_start(GDate *date)
This function modifies a GDate to set it to the first day of the year prior to the one in which it fa...
Definition: gnc-date.cpp:1582
void gnc_gdate_set_month_start(GDate *date)
This function modifies a GDate to set it to the first day of the month in which it falls...
Definition: gnc-date.cpp:1472
void gnc_gdate_set_fiscal_year_start(GDate *date, const GDate *year_end)
This function modifies a GDate to set it to the first day of the fiscal year in which it falls...
Definition: gnc-date.cpp:1598
void gnc_gdate_set_prev_fiscal_year_start(GDate *date, const GDate *year_end)
This function modifies a GDate to set it to the first day of the fiscal year prior to the one in whic...
Definition: gnc-date.cpp:1645
void gnc_gdate_set_prev_quarter_start(GDate *date)
This function modifies a GDate to set it to the first day of the quarter prior to the one in which it...
Definition: gnc-date.cpp:1552
void gnc_gdate_set_year_start(GDate *date)
This function modifies a GDate to set it to the first day of the year in which it falls...
Definition: gnc-date.cpp:1568
void gnc_gdate_set_prev_month_start(GDate *date)
This function modifies a GDate to set it to the first day of the month prior to the one in which it f...
Definition: gnc-date.cpp:1503

◆ gnc_period_select_get_active()

GncAccountingPeriod gnc_period_select_get_active ( GncPeriodSelect period)

Get the currently selected accounting period from a GncPeriodSelect widget.

This is used to retrieve the user's selection in the form of an enum.

Parameters
periodThe selection widget to query.
Returns
An enum indicating the user's choice of accounting period.

Definition at line 723 of file gnc-period-select.c.

724 {
725  GncPeriodSelectPrivate *priv;
726 
727  g_return_val_if_fail(period != NULL, -1);
728  g_return_val_if_fail(GNC_IS_PERIOD_SELECT(period), -1);
729 
730  priv = GNC_PERIOD_SELECT_GET_PRIVATE(period);
731  return gtk_combo_box_get_active(GTK_COMBO_BOX(priv->selector));
732 }

◆ gnc_period_select_get_date()

GDate * gnc_period_select_get_date ( GncPeriodSelect period)

Get the currently selected accounting period choice from a GncPeriodSelect widget.

This is used to retrieve the user's selection in the form of a GDate.

Parameters
periodThe selection widget to query.
Returns
The starting/ending time.

Definition at line 740 of file gnc-period-select.c.

741 {
742  GncPeriodSelectPrivate *priv;
743  GncAccountingPeriod which;
744 
745  g_return_val_if_fail(period != NULL, 0);
746  g_return_val_if_fail(GNC_IS_PERIOD_SELECT(period), 0);
747 
748  priv = GNC_PERIOD_SELECT_GET_PRIVATE(period);
749  which = gtk_combo_box_get_active(GTK_COMBO_BOX(priv->selector));
750  if (which == -1)
751  return NULL;
752 
753  if (priv->start)
754  return gnc_accounting_period_start_gdate(which, priv->fy_end,
755  priv->date_base);
756  return gnc_accounting_period_end_gdate(which, priv->fy_end,
757  priv->date_base);
758 }
GncAccountingPeriod
This specifies a time interval.
GDate * gnc_accounting_period_end_gdate(GncAccountingPeriod which, const GDate *fy_end, const GDate *contains)
This function returns the ending date for an accounting period.
GDate * gnc_accounting_period_start_gdate(GncAccountingPeriod which, const GDate *fy_end, const GDate *contains)
This function returns the starting date for an accounting period.

◆ gnc_period_select_get_fy_end()

GDate * gnc_period_select_get_fy_end ( GncPeriodSelect period)

Get the current value of the fiscal year end setting from a GncPeriodSelect widget.

If the result is NULL then fiscal years are not currently supported.

Parameters
periodThe GncPeriodSelect widget to query.
Returns
A pointer to a GDate containing the fiscal year end value, or NULL if no fiscal year end is set. Note that only the month and day fields are valid in the returned GDate.

Definition at line 255 of file gnc-period-select.c.

256 {
257  GncPeriodSelectPrivate *priv;
258 
259  g_return_val_if_fail(period != NULL, NULL);
260  g_return_val_if_fail(GNC_IS_PERIOD_SELECT(period), NULL);
261 
262  priv = GNC_PERIOD_SELECT_GET_PRIVATE(period);
263  if (!priv->fy_end)
264  return NULL;
265  return g_date_new_dmy(g_date_get_day(priv->fy_end),
266  g_date_get_month(priv->fy_end),
267  G_DATE_BAD_YEAR);
268 }

◆ gnc_period_select_new()

GtkWidget * gnc_period_select_new ( gboolean  starting_labels)

Create a new GncPeriodSelect widget which is used to select a accounting period like "previous month" or "this year".

Parameters
starting_labelsIf set to TRUE then all the labels will refer to the "Start of...". If FALSE, labels will refer to "End of...".
Returns
A newly created GncPeriodSelect widget.

Definition at line 639 of file gnc-period-select.c.

640 {
641  GncPeriodSelectPrivate *priv;
642  GncPeriodSelect *period;
643  const gchar *label;
644  gint i;
645 
646  period = g_object_new(GNC_TYPE_PERIOD_SELECT, NULL);
647 
648  /* Set up private data structures */
649  priv = GNC_PERIOD_SELECT_GET_PRIVATE(period);
650  priv->selector = gtk_combo_box_text_new();
651  priv->start = starting_labels;
652 
653  /* Add the internal widgets to the hbox */
654  gtk_box_pack_start(GTK_BOX(period), priv->selector, TRUE, TRUE, 0);
655  gtk_widget_show(priv->selector);
656 
657  /* Find out when the combo box changes */
658  g_signal_connect(G_OBJECT(priv->selector), "changed",
659  G_CALLBACK(gnc_period_sample_combobox_changed), period);
660 
661  /* Build all the labels except the fiscal year labels */
662  for (i = 0; i < GNC_ACCOUNTING_PERIOD_CYEAR_LAST; i++)
663  {
664  label = starting_labels ? _(start_strings[i]) : _(end_strings[i]);
665  gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(priv->selector), label);
666  }
667 
668  /* Track changes to date formatting */
669  gnc_prefs_register_cb (GNC_PREFS_GROUP_GENERAL, GNC_PREF_DATE_FORMAT,
670  gnc_period_sample_new_date_format, period);
671 
672  return GTK_WIDGET (period);
673 }
gulong gnc_prefs_register_cb(const char *group, const gchar *pref_name, gpointer func, gpointer user_data)
Register a callback that gets triggered when the given preference changes.
Definition: gnc-prefs.c:128

◆ gnc_period_select_new_glade()

GtkWidget * gnc_period_select_new_glade ( gchar *  widget_name,
gchar *  string1,
gchar *  string2,
gint  int1,
gint  int2 
)

Create a new GncPeriodSelect widget from a glade file.

The int1 argument passed from glade is used to determine whether the widget uses labels for start times or end times. A non-zero int2 argument indicates that an example date should be shown.

Returns
A newly created GncPeriodSelect widget.

Definition at line 682 of file gnc-period-select.c.

685 {
686  GtkWidget *widget;
687  widget = gnc_period_select_new(int1 != 0);
688  if (int2)
689  gnc_period_select_set_show_date(GNC_PERIOD_SELECT(widget), TRUE);
690  gtk_widget_show(widget);
691  return widget;
692 }
void gnc_period_select_set_show_date(GncPeriodSelect *period, const gboolean show_date)
Set the "show sample" setting on a GncPeriodSelect widget.
GtkWidget * gnc_period_select_new(gboolean starting_labels)
Create a new GncPeriodSelect widget which is used to select a accounting period like "previous month"...

◆ gnc_period_select_set_active()

void gnc_period_select_set_active ( GncPeriodSelect period,
GncAccountingPeriod  which 
)

Set which item in the GncPeriodSelect is initially selected.

This is used to set the initial selection before the widget is shown to the user.

Parameters
periodThe selection widget to update.
whichThe accounting period that should be selected.

Definition at line 706 of file gnc-period-select.c.

708 {
709  g_return_if_fail(period != NULL);
710  g_return_if_fail(GNC_IS_PERIOD_SELECT(period));
711  g_return_if_fail(which >= 0);
712  g_return_if_fail(which < GNC_ACCOUNTING_PERIOD_LAST);
713 
714  g_object_set (G_OBJECT (period), "active", which, NULL);
715 }

◆ gnc_period_select_set_fy_end()

void gnc_period_select_set_fy_end ( GncPeriodSelect period,
const GDate *  fy_end 
)

Set the fiscal year end on a GncPeriodSelect widget.

If set to a value other than NULL then widget will include fiscal accounting period like "this fiscal year".

Parameters
periodThe GncPeriodSelect widget to update.
fy_endThe new fiscal year end value, or NULL if no fiscal year is set. Note that only the month and day fields need be valid in the provided GDate.

Definition at line 276 of file gnc-period-select.c.

277 {
278  GncPeriodSelectPrivate *priv;
279  const gchar *label;
280  gint i;
281 
282  g_return_if_fail(period != NULL);
283  g_return_if_fail(GNC_IS_PERIOD_SELECT(period));
284 
285  priv = GNC_PERIOD_SELECT_GET_PRIVATE(period);
286  if (priv->fy_end)
287  g_date_free(priv->fy_end);
288 
289  if (fy_end)
290  {
291  priv->fy_end = g_date_new_dmy(g_date_get_day(fy_end),
292  g_date_get_month(fy_end),
293  G_DATE_BAD_YEAR);
294  }
295  else
296  {
297  priv->fy_end = NULL;
298  }
299 
300  if (fy_end)
301  {
302  for (i = GNC_ACCOUNTING_PERIOD_CYEAR_LAST; i < GNC_ACCOUNTING_PERIOD_FYEAR_LAST; i++)
303  {
304  label = priv->start ? _(start_strings[i]) : _(end_strings[i]);
305  gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(priv->selector), label);
306  }
307  }
308  else
309  {
310  for (i = GNC_ACCOUNTING_PERIOD_FYEAR_LAST - 1; i >= GNC_ACCOUNTING_PERIOD_FYEAR_LAST; i--)
311  {
312  gtk_combo_box_text_remove(GTK_COMBO_BOX_TEXT(priv->selector), i);
313  }
314  }
315 }

◆ gnc_period_select_set_show_date()

void gnc_period_select_set_show_date ( GncPeriodSelect period,
const gboolean  show_date 
)

Set the "show sample" setting on a GncPeriodSelect widget.

If set to TRUE then a GtkLabel will be used to show the date corresponding to the selected time period.

Definition at line 372 of file gnc-period-select.c.

373 {
374  GDate date;
375 
376  g_return_if_fail(period != NULL);
377  g_return_if_fail(GNC_IS_PERIOD_SELECT(period));
378 
379  if (show_date)
380  {
381  g_date_clear(&date, 1);
382  gnc_gdate_set_time64(&date, gnc_time (NULL));
383  gnc_period_select_set_date_common(period, &date);
384  }
385  else
386  {
387  gnc_period_select_set_date_common(period, NULL);
388  }
389 }
void gnc_gdate_set_time64(GDate *gd, time64 time)
Set a GDate to a time64.
Definition: gnc-date.cpp:1248
time64 gnc_time(time64 *tbuf)
get the current local time
Definition: gnc-date.cpp:273

◆ gnc_tree_view_add_combo_column()

GtkTreeViewColumn* gnc_tree_view_add_combo_column ( GncTreeView view,
const gchar *  column_title,
const gchar *  pref_name,
const gchar *  sizing_text,
gint  model_data_column,
gint  model_visibility_column,
GtkTreeModel *  combo_tree_model,
gint  combo_model_text_column,
GtkTreeIterCompareFunc  column_sort_fn 
)

This function adds a new combobox column to a GncTreeView base view.

The parameters it takes in common with gnc_tree_view_add_text_column() behave the same as there. In addition, it will use combo_tree_model as the GtkTreeModel for the combobox, and combo_model_text_column will be the column in the model used for displaying the text in the combobox.

Definition at line 2028 of file gnc-tree-view.c.

2037 {
2038  GtkTreeViewColumn *column;
2039  GtkCellRenderer *renderer;
2040  PangoLayout* layout;
2041  int default_width, title_width;
2042 
2043  g_return_val_if_fail (GNC_IS_TREE_VIEW(view), NULL);
2044 
2045  column = gtk_tree_view_column_new ();
2046  gtk_tree_view_column_set_title (column, gettext(column_title));
2047 
2048  /* Set up a renderer and attributes */
2049  renderer = gtk_cell_renderer_combo_new ();
2050  gtk_tree_view_column_pack_start (column, renderer, TRUE);
2051 
2052  /* Set renderer attributes controlled by the model */
2053  if (model_data_column != GNC_TREE_VIEW_COLUMN_DATA_NONE)
2054  gtk_tree_view_column_add_attribute (column, renderer,
2055  "text", model_data_column);
2056  if (model_visibility_column != GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS)
2057  gtk_tree_view_column_add_attribute (column, renderer,
2058  "visible", model_visibility_column);
2059 
2060  /* Default size is the larger of the column title and the sizing text */
2061  layout = gtk_widget_create_pango_layout (GTK_WIDGET(view), column_title);
2062  pango_layout_get_pixel_size (layout, &title_width, NULL);
2063  g_object_unref (layout);
2064  layout = gtk_widget_create_pango_layout (GTK_WIDGET(view), sizing_text);
2065  pango_layout_get_pixel_size (layout, &default_width, NULL);
2066  g_object_unref (layout);
2067  default_width = MAX(default_width, title_width);
2068  if (default_width)
2069  default_width += 10; /* padding on either side */
2070 
2071  gnc_tree_view_column_properties (view, column, pref_name, model_data_column,
2072  default_width, TRUE, column_sort_fn);
2073 
2074  /* Stuff specific to combo */
2075  if (combo_tree_model)
2076  {
2077  g_object_set (G_OBJECT(renderer), "model", combo_tree_model,
2078  "text-column", combo_model_text_column, NULL);
2079  }
2080  /* TODO: has-entry? */
2081 
2082  gnc_tree_view_append_column (view, column);
2083  return column;
2084 }
gint gnc_tree_view_append_column(GncTreeView *view, GtkTreeViewColumn *column)
Add a column to a view based upon a GncTreeView.

◆ gnc_tree_view_add_date_column()

GtkTreeViewColumn* gnc_tree_view_add_date_column ( GncTreeView view,
const gchar *  column_title,
const gchar *  pref_name,
const gchar *  icon_name,
const gchar *  sizing_text,
gint  model_data_column,
gint  model_visibility_column,
GtkTreeIterCompareFunc  column_sort_fn 
)

This function adds a new date column to a GncTreeView base view.

The parameters it takes in common with gnc_tree_view_add_text_column() behave the same as there.

It takes all the parameters necessary to hook a GtkTreeModel column to a GtkTreeViewColumn. If the tree has a state section associated with it, this function also wires up the column so that its visibility and width are remembered.

Parameters are defined in gnc-tree-view.h

Definition at line 1970 of file gnc-tree-view.c.

1978 {
1979  GtkTreeViewColumn *column;
1980  GtkCellRenderer *renderer;
1981  PangoLayout* layout;
1982  int default_width, title_width;
1983 
1984  g_return_val_if_fail (GNC_IS_TREE_VIEW(view), NULL);
1985 
1986  column = gtk_tree_view_column_new ();
1987  gtk_tree_view_column_set_title (column, column_title);
1988 
1989  /* Set up an icon renderer if requested */
1990  if (icon_name)
1991  {
1992  renderer = gtk_cell_renderer_pixbuf_new ();
1993  g_object_set (renderer, "icon-name", icon_name, NULL);
1994  gtk_tree_view_column_pack_start (column, renderer, FALSE);
1995  }
1996 
1997  /* Set up a text renderer and attributes */
1998  renderer = gnc_cell_renderer_date_new (TRUE);
1999  gtk_tree_view_column_pack_start (column, renderer, TRUE);
2000 
2001  /* Set renderer attributes controlled by the model */
2002  if (model_data_column != GNC_TREE_VIEW_COLUMN_DATA_NONE)
2003  gtk_tree_view_column_add_attribute (column, renderer,
2004  "text", model_data_column);
2005  if (model_visibility_column != GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS)
2006  gtk_tree_view_column_add_attribute (column, renderer,
2007  "visible", model_visibility_column);
2008 
2009  /* Default size is the larger of the column title and the sizing text */
2010  layout = gtk_widget_create_pango_layout (GTK_WIDGET(view), column_title);
2011  pango_layout_get_pixel_size (layout, &title_width, NULL);
2012  g_object_unref (layout);
2013  layout = gtk_widget_create_pango_layout (GTK_WIDGET(view), sizing_text);
2014  pango_layout_get_pixel_size (layout, &default_width, NULL);
2015  g_object_unref (layout);
2016  default_width = MAX(default_width, title_width);
2017  if (default_width)
2018  default_width += 10; /* padding on either side */
2019  gnc_tree_view_column_properties (view, column, pref_name, model_data_column,
2020  default_width, TRUE, column_sort_fn);
2021 
2022  gnc_tree_view_append_column (view, column);
2023  return column;
2024 }
gint gnc_tree_view_append_column(GncTreeView *view, GtkTreeViewColumn *column)
Add a column to a view based upon a GncTreeView.

◆ gnc_tree_view_add_numeric_column()

GtkTreeViewColumn* gnc_tree_view_add_numeric_column ( GncTreeView view,
const gchar *  column_title,
const gchar *  pref_name,
const gchar *  sizing_text,
gint  model_data_column,
gint  model_color_column,
gint  model_visibility_column,
GtkTreeIterCompareFunc  column_sort_fn 
)

This function adds a new numeric column to a GncTreeView base view.

It takes all the parameters necessary to hook a GtkTreeModel column to a GtkTreeViewColumn. A numeric column is nothing more then a text column with a few extra attributes.

Parameters
viewA pointer to a generic GncTreeView.
column_titleThe title for this column.
pref_nameThe internal name of this column. This name is used in several functions to look up the column, and it is also used when saving/restoring the view's state.
sizing_textA string used to compute the default width of the column. This text is never displayed.
model_data_columnThe index of the GtkTreeModel data column used to determine the data that will be displayed in this column for each row in the view. Use GNC_TREE_VIEW_COLUMN_DATA_NONE if you plan on using an non-model data source for this column.
model_color_columnThe index of the GtkTreeModel data column used to determine the foreground color of any text in this column. It should be used to display negative numbers in red. Use GNC_TREE_VIEW_COLUMN_COLOR_NONE if the text in this column should always be displayed in the default theme color for text.
model_visibility_columnThe index of the GtkTreeModel data column used to determine whether or not a checkbox for each row will be displayed at all. Use GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS if the checkbox should be displayed in all rows.
column_sort_fnThe function that GtkTreeModelSort will call to compare two rows to determine their displayed order.
Returns
The newly created GtkTreeViewColumn.

It takes all the parameters necessary to hook a GtkTreeModel column to a GtkTreeViewColumn. If the tree has a state section associated with it, this function also wires up the column so that its visibility and width are remembered. A numeric column is nothing more then a text column with a few extra attributes.

Parameters are defined in gnc-tree-view.h

Definition at line 2114 of file gnc-tree-view.c.

2122 {
2123  GtkTreeViewColumn *column;
2124  GtkCellRenderer *renderer;
2125  gfloat alignment = 1.0;
2126 
2127  column = gnc_tree_view_add_text_column (view, column_title, pref_name,
2128  NULL, sizing_text, model_data_column,
2129  model_visibility_column,
2130  column_sort_fn);
2131 
2132  renderer = gnc_tree_view_column_get_renderer (column);
2133 
2134  /* Right align the column title and data for both ltr and rtl */
2135  if (gtk_widget_get_direction (GTK_WIDGET(view)) == GTK_TEXT_DIR_RTL)
2136  alignment = 0.0;
2137 
2138  g_object_set (G_OBJECT(column), "alignment", alignment, NULL);
2139  g_object_set (G_OBJECT(renderer), "xalign", alignment, NULL);
2140 
2141  /* Change the text color */
2142  if (model_color_column != GNC_TREE_VIEW_COLUMN_COLOR_NONE)
2143  gtk_tree_view_column_add_attribute (column, renderer,
2144  "foreground", model_color_column);
2145 
2146  return column;
2147 }
GtkCellRenderer * gnc_tree_view_column_get_renderer(GtkTreeViewColumn *column)
Return the "main" cell renderer from a GtkTreeViewColumn added to a GncTreeView my one of the conveni...
GtkTreeViewColumn * gnc_tree_view_add_text_column(GncTreeView *view, const gchar *column_title, const gchar *pref_name, const gchar *icon_name, const gchar *sizing_text, gint model_data_column, gint model_visibility_column, GtkTreeIterCompareFunc column_sort_fn)
This function adds a new text column to a GncTreeView base view.

◆ gnc_tree_view_add_text_column()

GtkTreeViewColumn* gnc_tree_view_add_text_column ( GncTreeView view,
const gchar *  column_title,
const gchar *  pref_name,
const gchar *  icon_name,
const gchar *  sizing_text,
gint  model_data_column,
gint  model_visibility_column,
GtkTreeIterCompareFunc  column_sort_fn 
)

This function adds a new text column to a GncTreeView base view.

It takes all the parameters necessary to hook a GtkTreeModel column to a GtkTreeViewColumn.

Parameters
viewA pointer to a generic GncTreeView.
column_titleThe title for this column.
pref_nameThe internal name of this column. This name is used in several functions to look up the column, and it is also used when saving/restoring the view's state.
icon_nameThe name of the icon to display to the left of the text in this column. Used for adding icons like the "account" icon to a view. This must be a registered icon, not a filename.
sizing_textA string used to compute the default width of the column. This text is never displayed.
model_data_columnThe index of the GtkTreeModel data column used to determine the data that will be displayed in this column for each row in the view. Use GNC_TREE_VIEW_COLUMN_DATA_NONE if you plan on using a non-model data source for this column. This index is connected to the "text" attribute of the cell renderer.
model_visibility_columnThe index of the GtkTreeModel data column used to determine whether or not a checkbox for each row will be displayed at all. Use GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS if the checkbox should be displayed in all rows.
column_sort_fnThe function that GtkTreeModelSort will call to compare two rows to determine their displayed order.
Returns
The newly created GtkTreeViewColumn.

It takes all the parameters necessary to hook a GtkTreeModel column to a GtkTreeViewColumn. If the tree has a state section associated with it, this function also wires up the column so that its visibility and width are remembered.

Parameters are defined in gnc-tree-view.h

Definition at line 1905 of file gnc-tree-view.c.

1913 {
1914  GtkCellRenderer *renderer;
1915 
1916  g_return_val_if_fail (GNC_IS_TREE_VIEW(view), NULL);
1917 
1918  renderer = gtk_cell_renderer_text_new ();
1919 
1920  return add_text_column_variant (view, renderer,
1921  column_title, pref_name,
1922  icon_name, sizing_text,
1923  model_data_column,
1924  model_visibility_column,
1925  column_sort_fn);
1926 }

◆ gnc_tree_view_add_text_view_column()

GtkTreeViewColumn* gnc_tree_view_add_text_view_column ( GncTreeView view,
const gchar *  column_title,
const gchar *  pref_name,
const gchar *  icon_name,
const gchar *  sizing_text,
gint  model_data_column,
gint  model_visibility_column,
GtkTreeIterCompareFunc  column_sort_fn 
)

This function adds a new text view column to a GncTreeView base view.

It takes all the parameters necessary to hook a GtkTreeModel column to a GtkTreeViewColumn.

Parameters
viewA pointer to a generic GncTreeView.
column_titleThe title for this column.
pref_nameThe internal name of this column. This name is used in several functions to look up the column, and it is also used when saving/restoring the view's state.
icon_nameThe name of the icon to display to the left of the text in this column. Used for adding icons like the "account" icon to a view. This must be a registered icon, not a filename.
sizing_textA string used to compute the default width of the column. This text is never displayed.
model_data_columnThe index of the GtkTreeModel data column used to determine the data that will be displayed in this column for each row in the view. Use GNC_TREE_VIEW_COLUMN_DATA_NONE if you plan on using a non-model data source for this column. This index is connected to the "text" attribute of the cell renderer.
model_visibility_columnThe index of the GtkTreeModel data column used to determine whether or not a checkbox for each row will be displayed at all. Use GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS if the checkbox should be displayed in all rows.
column_sort_fnThe function that GtkTreeModelSort will call to compare two rows to determine their displayed order.
Returns
The newly created GtkTreeViewColumn.

It takes all the parameters necessary to hook a GtkTreeModel column to a GtkTreeViewColumn. If the tree has a state section associated with it, this function also wires up the column so that its visibility and width are remembered.

Parameters are defined in gnc-tree-view.h

Definition at line 1937 of file gnc-tree-view.c.

1945 {
1946  GtkCellRenderer *renderer;
1947 
1948  g_return_val_if_fail (GNC_IS_TREE_VIEW(view), NULL);
1949 
1950  renderer = gnc_cell_renderer_text_view_new ();
1951 
1952  return add_text_column_variant (view, renderer,
1953  column_title, pref_name,
1954  icon_name, sizing_text,
1955  model_data_column,
1956  model_visibility_column,
1957  column_sort_fn);
1958 }

◆ gnc_tree_view_add_toggle_column()

GtkTreeViewColumn* gnc_tree_view_add_toggle_column ( GncTreeView view,
const gchar *  column_title,
const gchar *  column_short_title,
const gchar *  pref_name,
gint  model_data_column,
gint  model_visibility_column,
GtkTreeIterCompareFunc  column_sort_fn,
renderer_toggled  toggle_edited_cb 
)

This function adds a new toggle column to a GncTreeView base view.

It takes all the parameters necessary to hook a GtkTreeModel column to a GtkTreeViewColumn. It handles creating a tooltip to show the full title name, and setting the sort and edit callback functions.

Parameters
viewA pointer to a generic GncTreeView.
column_titleThe full title for this column. This will be added as a tooltip what will be displayed when the mouse is hovered over the column title button.
column_short_titleThis is what will actually be displayed as the title of the column. This should be a single character, as anything more will unnecessarily expand the width of the column.
pref_nameThe internal name of this column. This name is used in several functions to look up the column, and it is also used when saving/restoring the view's state.
model_data_columnThe index of the GtkTreeModel data column used to determine whether the displayed checkbox for each row will be show as checked or empty. Use GNC_TREE_VIEW_COLUMN_DATA_NONE if you plan on using an non-model data source for this column.
model_visibility_columnThe index of the GtkTreeModel data column used to determine whether or not a checkbox for each row will be displayed at all. Use GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS if the checkbox should be displayed in all rows.
column_sort_fnThe function that GtkTreeModelSort will call to compare two rows to determine their displayed order.
toggle_edited_cbThe function to call when the user toggles the state of a checkbox.
Returns
The newly created GtkTreeViewColumn.

It takes all the parameters necessary to hook a GtkTreeModel column to a GtkTreeViewColumn. It handles creating a tooltip to show the full title name, and setting the sort and edit callback functions. If the tree has a state section associated with it, this function also wires up the column so that its visibility and width are remembered.

Parameters are defined in gnc-tree-view.h

Definition at line 1752 of file gnc-tree-view.c.

1760 {
1761  GtkTreeViewColumn *column;
1762  GtkCellRenderer *renderer;
1763 
1764  g_return_val_if_fail (GNC_IS_TREE_VIEW(view), NULL);
1765 
1766  renderer = gtk_cell_renderer_toggle_new ();
1767  if (!toggle_edited_cb)
1768  {
1769  gtk_cell_renderer_toggle_set_activatable (GTK_CELL_RENDERER_TOGGLE(renderer), FALSE);
1770  }
1771  column =
1772  gtk_tree_view_column_new_with_attributes (column_short_title,
1773  renderer,
1774  "active", model_data_column,
1775  NULL);
1776 
1777  /* Add the full title to the object for menu creation */
1778  g_object_set_data_full (G_OBJECT(column), REAL_TITLE,
1779  g_strdup(column_title), g_free);
1780  if (toggle_edited_cb)
1781  g_signal_connect (G_OBJECT(renderer), "toggled",
1782  G_CALLBACK(toggle_edited_cb), view);
1783 
1784  if (model_visibility_column != GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS)
1785  gtk_tree_view_column_add_attribute (column, renderer,
1786  "visible", model_visibility_column);
1787 
1788 
1789  gnc_tree_view_column_properties (view, column, pref_name, model_data_column,
1790  0, FALSE, column_sort_fn);
1791 
1792  gnc_tree_view_append_column (view, column);
1793 
1794  /* Also add the full title to the object as a tooltip */
1795  gtk_widget_set_tooltip_text (gtk_tree_view_column_get_button (column), column_title);
1796 
1797  return column;
1798 }
gint gnc_tree_view_append_column(GncTreeView *view, GtkTreeViewColumn *column)
Add a column to a view based upon a GncTreeView.

◆ gnc_tree_view_append_column()

gint gnc_tree_view_append_column ( GncTreeView view,
GtkTreeViewColumn *  column 
)

Add a column to a view based upon a GncTreeView.

This function knows about the two special columns on the right side of this type of view, and adds the new column before these two columns. You could say that it appends to the data columns and ignores the infrastructure columns.

Parameters
viewA pointer to a generic GncTreeView.
columnThe column to append.
Returns
The index of the newly added column.

This function knows about the two special columns on the right side of this type of view, and adds the new column before these two columns. You could say that it appends to the data columns and ignores the infrastructure columns.

Parameters are defined in gnc-tree-view.h

Definition at line 2158 of file gnc-tree-view.c.

2160 {
2161  int n = gtk_tree_view_get_n_columns (GTK_TREE_VIEW(view));
2162 
2163  /* Ignore the initial column, the selection menu */
2164  if (n >= 1)
2165  n -= 1;
2166  return gtk_tree_view_insert_column (GTK_TREE_VIEW(view), column, n);
2167 }

◆ gnc_tree_view_column_get_renderer()

GtkCellRenderer* gnc_tree_view_column_get_renderer ( GtkTreeViewColumn *  column)

Return the "main" cell renderer from a GtkTreeViewColumn added to a GncTreeView my one of the convenience routines.

Parameters
columnThe tree view column that was added to the GncTreeView
Returns
The cell renderer in use in the column.

Definition at line 2087 of file gnc-tree-view.c.

2088 {
2089  GList *renderers;
2090  GtkCellRenderer *cr = NULL;
2091 
2092  g_return_val_if_fail (GTK_TREE_VIEW_COLUMN(column), NULL);
2093 
2094  /* Get the list of one renderer */
2095  renderers = gtk_cell_layout_get_cells (GTK_CELL_LAYOUT(column));
2096  if (g_list_length (renderers) > 0)
2097  cr = GTK_CELL_RENDERER(renderers->data);
2098  g_list_free (renderers);
2099 
2100  return cr;
2101 }

◆ gnc_tree_view_configure_columns()

void gnc_tree_view_configure_columns ( GncTreeView view)

Make all the correct columns visible, respecting their default visibility setting, their "always" visibility setting, and the last saved state if available.

Parameters
viewA pointer to an gnc tree view.

Definition at line 1582 of file gnc-tree-view.c.

1583 {
1584  GncTreeViewPrivate *priv;
1585  GtkTreeViewColumn *column;
1586  GList *columns;
1587  gboolean hide_menu_column;
1588 
1589  g_return_if_fail (GNC_IS_TREE_VIEW(view));
1590 
1591  ENTER(" ");
1592 
1593  /* Update the view and saved state */
1594  columns = gtk_tree_view_get_columns (GTK_TREE_VIEW(view));
1595  g_list_foreach (columns, (GFunc)gnc_tree_view_update_visibility, view);
1596  g_list_free (columns);
1597 
1598  priv = GNC_TREE_VIEW_GET_PRIVATE(view);
1599  if (priv->state_section)
1600  priv->seen_state_visibility = TRUE;
1601 
1602  /* If only the first column is visible, hide the spacer and make that
1603  * column expand. */
1604  hide_menu_column = (gnc_tree_view_count_visible_columns (view) == 1);
1605  column = gtk_tree_view_get_column (GTK_TREE_VIEW(view), 0);
1606  gtk_tree_view_column_set_expand (column, hide_menu_column);
1607  gtk_tree_view_column_set_visible (priv->column_menu_column, !hide_menu_column);
1608 
1609  LEAVE(" ");
1610 }
#define ENTER(format, args...)
Print a function entry debugging message.
Definition: qoflog.h:272
#define LEAVE(format, args...)
Print a function exit debugging message.
Definition: qoflog.h:282
Private Data Structure.

◆ gnc_tree_view_expand_columns()

void gnc_tree_view_expand_columns ( GncTreeView view,
gchar *  first_column_name,
  ... 
)

This function set the columns that will be allocated the free space in the view.

Parameters
viewThe tree view.
listof column names.

Definition at line 1412 of file gnc-tree-view.c.

1415 {
1416  GncTreeViewPrivate *priv;
1417  GtkTreeViewColumn *column;
1418  gboolean hide_spacer;
1419  GList *columns, *tmp;
1420  gchar *name, *pref_name;
1421  va_list args;
1422 
1423  g_return_if_fail (GNC_IS_TREE_VIEW(view));
1424  ENTER(" ");
1425  va_start (args, first_column_name);
1426  priv = GNC_TREE_VIEW_GET_PRIVATE(view);
1427  name = first_column_name;
1428  hide_spacer = FALSE;
1429 
1430  /* First disable the expand property on all (non-infrastructure) columns. */
1431  columns = gtk_tree_view_get_columns (GTK_TREE_VIEW(view));
1432  for (tmp = columns; tmp; tmp = g_list_next (tmp))
1433  {
1434  column = tmp->data;
1435  pref_name = g_object_get_data (G_OBJECT(column), PREF_NAME);
1436  if (pref_name != NULL)
1437  gtk_tree_view_column_set_expand (column, FALSE);
1438  }
1439  g_list_free(columns);
1440 
1441  /* Now enable it on the requested columns. */
1442  while (name != NULL)
1443  {
1444  column = gnc_tree_view_find_column_by_name (view, name);
1445  if (column != NULL)
1446  {
1447  gtk_tree_view_column_set_expand (column, TRUE);
1448  hide_spacer = TRUE;
1449  }
1450  name = va_arg (args, gchar*);
1451  }
1452  va_end (args);
1453 
1454  LEAVE(" ");
1455 }
GtkTreeViewColumn * gnc_tree_view_find_column_by_name(GncTreeView *view, const gchar *wanted)
Find a tree column given the "pref name" used with saved state.
#define ENTER(format, args...)
Print a function entry debugging message.
Definition: qoflog.h:272
#define LEAVE(format, args...)
Print a function exit debugging message.
Definition: qoflog.h:282
Private Data Structure.

◆ gnc_tree_view_find_column_by_name()

GtkTreeViewColumn* gnc_tree_view_find_column_by_name ( GncTreeView view,
const gchar *  wanted 
)

Find a tree column given the "pref name".

This function simply runs the list of all (visible and invisible) columns looking for a match. Column names were attached to each column at the time the column was created.

Parameters
viewThe visible tree widget.
wantedThe "pref name" to find.

Find a tree column given the "pref name".

This function simply runs the list of all (visible and invisible) columns looking for a match. Column names were attached to each column at the time the column was created.

Parameters
viewThe visible tree widget.
wantedThe "pref name" to find.

Definition at line 534 of file gnc-tree-view.c.

536 {
537  GtkTreeViewColumn *column, *found = NULL;
538  GList *column_list, *tmp;
539  const gchar *name;
540 
541  // ENTER("view %p, wanted %s", view, wanted);
542  column_list = gtk_tree_view_get_columns(GTK_TREE_VIEW(view));
543  for (tmp = column_list; tmp; tmp = g_list_next (tmp))
544  {
545  column = tmp->data;
546  name = g_object_get_data (G_OBJECT(column), PREF_NAME);
547  if (!name || (strcmp(name, wanted) != 0))
548  continue;
549  found = column;
550  break;
551  }
552  g_list_free (column_list);
553 
554  // LEAVE("column %p", found);
555  return found;
556 }

◆ gnc_tree_view_get_show_column_menu()

gboolean gnc_tree_view_get_show_column_menu ( GncTreeView view)

This function is called to get the current value of the "show-column-menu" property.

It returns the same value passed to gnc_tree_view_set_show_menu_column().

Parameters
viewThe tree view.
Returns
Whether or not the column selection menu should be shown.

It returns the same value passed to gnc_tree_view_set_show_menu_column().

Parameters are defined in gnc-tree-view.h

Definition at line 1546 of file gnc-tree-view.c.

1547 {
1548  GncTreeViewPrivate *priv;
1549 
1550  g_return_val_if_fail (GNC_IS_TREE_VIEW(view), FALSE);
1551 
1552  priv = GNC_TREE_VIEW_GET_PRIVATE(view);
1553  return (priv->show_column_menu);
1554 }
Private Data Structure.

◆ gnc_tree_view_get_state_section()

const gchar* gnc_tree_view_get_state_section ( GncTreeView view)

This function is called to get the current association between a saved state section and the display of a view.

It returns the same value passed to gnc_tree_view_set_state_section().

Parameters
viewThe tree view.
Returns
The current state section.

This function is called to get the current association between a saved state section and the display of a view.

It returns the same value passed to gnc_tree_view_set_state_section(); i.e. a string like "dialogs/edit_prices".

Parameters are defined in gnc-tree-view.h

Definition at line 1120 of file gnc-tree-view.c.

1121 {
1122  GncTreeViewPrivate *priv;
1123 
1124  g_return_val_if_fail (GNC_IS_TREE_VIEW(view), NULL);
1125 
1126  priv = GNC_TREE_VIEW_GET_PRIVATE (view);
1127  return priv->state_section;
1128 }
Private Data Structure.

◆ gnc_tree_view_remove_state_information()

void gnc_tree_view_remove_state_information ( GncTreeView view)

This function is called to completely wipe the treeview's state information (column visibility, width, sorting order,..).

This function may be called at any time; either when the user wants to disconnect or when the view object is being destroyed.

Parameters
viewThe tree view.

This function is called to completely wipe the treeview's state information (column visibility, width, sorting order,..).

This function may be called at any time; either when the user wants to disconnect or when the view object is being destroyed.

Parameters
viewThe tree view.

Definition at line 978 of file gnc-tree-view.c.

979 {
980  GncTreeViewPrivate *priv;
981  GKeyFile *state_file = gnc_state_get_current ();
982 
983  ENTER(" ");
984  priv = GNC_TREE_VIEW_GET_PRIVATE(view);
985  if (!priv->state_section)
986  {
987  LEAVE("no state section");
988  return;
989  }
990 
991  g_key_file_remove_group (state_file, priv->state_section, NULL);
992  g_free (priv->state_section);
993  priv->state_section = NULL;
994  LEAVE(" ");
995 }
#define ENTER(format, args...)
Print a function entry debugging message.
Definition: qoflog.h:272
GKeyFile * gnc_state_get_current(void)
Returns a pointer to the most recently loaded state.
Definition: gnc-state.c:248
#define LEAVE(format, args...)
Print a function exit debugging message.
Definition: qoflog.h:282
Private Data Structure.

◆ gnc_tree_view_save_state()

void gnc_tree_view_save_state ( GncTreeView view)

This function is called to write the treeview's state information (column visibility, width, sorting order,..) to the state file.

Parameters
viewThe tree view.

Definition at line 1130 of file gnc-tree-view.c.

1131 {
1132  GncTreeViewPrivate *priv;
1133 
1134  ENTER("view %p", view);
1135  g_return_if_fail (view != NULL);
1136  g_return_if_fail (GNC_IS_TREE_VIEW(view));
1137 
1138  priv = GNC_TREE_VIEW_GET_PRIVATE(view);
1139 
1140  if (priv->state_section)
1141  {
1142  /* Save state. Only store non-default values when possible. */
1143  GList *column_list, *tmp;
1144  GKeyFile *state_file = gnc_state_get_current();
1145  gsize num_cols = 0;
1146  gchar *sort_column = gnc_tree_view_get_sort_column (view);
1147  gchar *sort_order = gnc_tree_view_get_sort_order (view);
1148  gchar **col_order = gnc_tree_view_get_column_order (view, &num_cols);
1149 
1150  /* Default sort column is the name column */
1151  if (sort_column && (g_strcmp0 (sort_column, "name") != 0))
1152  g_key_file_set_string (state_file, priv->state_section, STATE_KEY_SORT_COLUMN, sort_column);
1153  else if (g_key_file_has_key (state_file, priv->state_section, STATE_KEY_SORT_COLUMN, NULL))
1154  g_key_file_remove_key (state_file, priv->state_section, STATE_KEY_SORT_COLUMN, NULL);
1155  g_free (sort_column);
1156 
1157 
1158  /* Default sort order is "ascending" */
1159  if (g_strcmp0 (sort_order, "descending") == 0)
1160  g_key_file_set_string (state_file, priv->state_section, STATE_KEY_SORT_ORDER, sort_order);
1161  else if (g_key_file_has_key (state_file, priv->state_section, STATE_KEY_SORT_ORDER, NULL))
1162  g_key_file_remove_key (state_file, priv->state_section, STATE_KEY_SORT_ORDER, NULL);
1163  g_free (sort_order);
1164 
1165  if (col_order && (num_cols > 0))
1166  g_key_file_set_string_list (state_file, priv->state_section, STATE_KEY_COLUMN_ORDER,
1167  (const gchar**) col_order, num_cols);
1168  else if (g_key_file_has_key (state_file, priv->state_section, STATE_KEY_COLUMN_ORDER, NULL))
1169  g_key_file_remove_key (state_file, priv->state_section, STATE_KEY_COLUMN_ORDER, NULL);
1170 
1171  g_strfreev (col_order);
1172 
1173 
1174  // ENTER("view %p, wanted %s", view, wanted);
1175  column_list = gtk_tree_view_get_columns (GTK_TREE_VIEW(view));
1176  for (tmp = column_list; tmp; tmp = g_list_next (tmp))
1177  {
1178  GtkTreeViewColumn *column = tmp->data;
1179  gchar *key=NULL;
1180  const gchar *name = g_object_get_data (G_OBJECT(column), PREF_NAME);
1181  if (!name)
1182  continue;
1183 
1184  if (!g_object_get_data (G_OBJECT(column), ALWAYS_VISIBLE))
1185  {
1186  key = g_strjoin ("_", name, STATE_KEY_SUFF_VISIBLE, NULL);
1187  g_key_file_set_boolean (state_file, priv->state_section, key,
1188  gtk_tree_view_column_get_visible (column));
1189  g_free (key);
1190  }
1191 
1192  key = g_strjoin ("_", name, STATE_KEY_SUFF_WIDTH, NULL);
1193  if (g_object_get_data (G_OBJECT(column), "default-width") &&
1194  (GPOINTER_TO_INT((g_object_get_data (G_OBJECT(column), "default-width")))
1195  != gtk_tree_view_column_get_width (column)))
1196  {
1197  g_key_file_set_integer (state_file, priv->state_section, key,
1198  gtk_tree_view_column_get_width (column));
1199  }
1200  else if (g_key_file_has_key (state_file, priv->state_section, key, NULL))
1201  g_key_file_remove_key (state_file, priv->state_section, key, NULL);
1202  g_free (key);
1203  }
1204  g_list_free (column_list);
1205  }
1206 
1207  LEAVE(" ");
1208 }
#define ENTER(format, args...)
Print a function entry debugging message.
Definition: qoflog.h:272
GKeyFile * gnc_state_get_current(void)
Returns a pointer to the most recently loaded state.
Definition: gnc-state.c:248
#define LEAVE(format, args...)
Print a function exit debugging message.
Definition: qoflog.h:282
Private Data Structure.

◆ gnc_tree_view_set_control_column_background()

void gnc_tree_view_set_control_column_background ( GncTreeView view,
gint  column,
GtkTreeCellDataFunc  func 
)

This function links the cell backgrounds of the two control columns to a column in the model that has color strings or a cell data function that sets the "cell-background" property.

Parameters
viewThe tree view.
columnThe column in the model containing color strings.
funcThis is a cell data function that sets the "cell-background".

Definition at line 1486 of file gnc-tree-view.c.

1487 {
1488  GncTreeViewPrivate *priv;
1489 
1490  g_return_if_fail (GNC_IS_TREE_VIEW(view));
1491 
1492  ENTER("view %p, column %d, func %p", view, column, func);
1493  priv = GNC_TREE_VIEW_GET_PRIVATE(view);
1494 
1495  update_control_cell_renderers_background (view, priv->column_menu_column, column, func);
1496 
1497  LEAVE(" ");
1498 }
#define ENTER(format, args...)
Print a function entry debugging message.
Definition: qoflog.h:272
#define LEAVE(format, args...)
Print a function exit debugging message.
Definition: qoflog.h:282
Private Data Structure.

◆ gnc_tree_view_set_show_column_menu()

void gnc_tree_view_set_show_column_menu ( GncTreeView view,
gboolean  visible 
)

This function is called to set the "show-column-menu" property on this view.

This function has no visible effect if the "state-section" property has not been set.

Parameters
viewThe tree view.
visibleCreate the column selection menu if TRUE.

This function has no visible effect if the "state-section" property has not been set.

Parameters are defined in gnc-tree-view.h

Definition at line 1525 of file gnc-tree-view.c.

1527 {
1528  GncTreeViewPrivate *priv;
1529 
1530  g_return_if_fail (GNC_IS_TREE_VIEW(view));
1531 
1532  ENTER("view %p, show menu %d", view, visible);
1533  priv = GNC_TREE_VIEW_GET_PRIVATE(view);
1534  priv->show_column_menu = visible;
1535  gnc_tree_view_build_column_menu (view);
1536  LEAVE(" ");
1537 }
#define ENTER(format, args...)
Print a function entry debugging message.
Definition: qoflog.h:272
#define LEAVE(format, args...)
Print a function exit debugging message.
Definition: qoflog.h:282
Private Data Structure.

◆ gnc_tree_view_set_sort_user_data()

void gnc_tree_view_set_sort_user_data ( GncTreeView view,
GtkTreeModel *  s_model 
)

This allows the columns to be setup without the model connected.

Parameters
viewThe tree view.
sortmodel.

Definition at line 1504 of file gnc-tree-view.c.

1505 {
1506  GncTreeViewPrivate *priv;
1507 
1508  g_return_if_fail (GNC_IS_TREE_VIEW(view));
1509 
1510  ENTER("view %p, sort_model %p", view, s_model);
1511  priv = GNC_TREE_VIEW_GET_PRIVATE(view);
1512 
1513  priv->sort_model = s_model;
1514  LEAVE(" ");
1515 }
#define ENTER(format, args...)
Print a function entry debugging message.
Definition: qoflog.h:272
#define LEAVE(format, args...)
Print a function exit debugging message.
Definition: qoflog.h:282
Private Data Structure.

◆ gnc_tree_view_set_state_section()

void gnc_tree_view_set_state_section ( GncTreeView view,
const gchar *  section 
)

This function is called to set up or remove an association between a saved state section and the display of a view.

It will first remove any existing association, and then install the new one.

Note
This function currently marks the first column as autosized and all other columns as fixed size. This may change in the future. It must change if we want to take advantage of the "fixed row height" performance enhancements added to GtkTreeView in gtk-2.4
Parameters
viewThe tree view.
sectionLink the view to this saved state section. Use NULL to disconnect saved state association.

This function is called to set up or remove an association between a saved state section and the display of a view.

It will first remove any existing association, and then install the new one. If the new section has state information, update the view with this information.

Parameters are defined in gnc-tree-view.h

Definition at line 1005 of file gnc-tree-view.c.

1007 {
1008  GncTreeViewPrivate *priv;
1009  GKeyFile *state_file;
1010 
1011  g_return_if_fail (GNC_IS_TREE_VIEW(view));
1012 
1013  ENTER("view %p, section %s", view, section);
1014 
1015  priv = GNC_TREE_VIEW_GET_PRIVATE(view);
1016 
1017  /* Drop any previous state section */
1018  if (priv->state_section)
1020 
1021  if (!section)
1022  {
1023  LEAVE("cleared state section");
1024  return;
1025  }
1026 
1027  /* Catch changes in state. Propagate to view. */
1028  priv->state_section = g_strdup (section);
1029 
1030  state_file = gnc_state_get_current ();
1031  if (g_key_file_has_group (state_file, priv->state_section))
1032  {
1033  gsize num_keys, idx;
1034  gchar **keys = g_key_file_get_keys (state_file, priv->state_section, &num_keys, NULL);
1035  for (idx = 0; idx < num_keys; idx++)
1036  {
1037  gchar *key = keys[idx];
1038  if (g_strcmp0 (key, STATE_KEY_SORT_COLUMN) == 0)
1039  {
1040  gchar *name = g_key_file_get_string (state_file, priv->state_section,
1041  key, NULL);
1042  gnc_tree_view_set_sort_column (view, name);
1043  g_free (name);
1044  }
1045  else if (g_strcmp0 (key, STATE_KEY_SORT_ORDER) == 0)
1046  {
1047  gchar *name = g_key_file_get_string (state_file, priv->state_section,
1048  key, NULL);
1049  gnc_tree_view_set_sort_order (view, name);
1050  g_free (name);
1051  }
1052  else if (g_strcmp0 (key, STATE_KEY_COLUMN_ORDER) == 0)
1053  {
1054  gsize length;
1055  gchar **columns = g_key_file_get_string_list (state_file, priv->state_section,
1056  key, &length, NULL);
1057  gnc_tree_view_set_column_order (view, columns, length);
1058  g_strfreev (columns);
1059  }
1060  else
1061  {
1062  /* Make a copy of the local part of the key so it can be split
1063  * into column name and key type */
1064  gboolean known = FALSE;
1065  gchar *column_name = g_strdup (key);
1066  gchar *type_name = g_strrstr (column_name, "_");
1067 
1068  if (type_name != NULL) //guard against not finding '_'
1069  {
1070  *type_name++ = '\0';
1071 
1072  if (g_strcmp0 (type_name, STATE_KEY_SUFF_VISIBLE) == 0)
1073  {
1074  GtkTreeViewColumn *column = gnc_tree_view_find_column_by_name (view, column_name);
1075  if (column)
1076  {
1077  known = TRUE;
1078  if (!g_object_get_data (G_OBJECT (column), ALWAYS_VISIBLE))
1079  {
1080  gtk_tree_view_column_set_visible (column,
1081  g_key_file_get_boolean (state_file, priv->state_section, key, NULL));
1082  }
1083  }
1084  }
1085  else if (g_strcmp0 (type_name, STATE_KEY_SUFF_WIDTH) == 0)
1086  {
1087  gint width = g_key_file_get_integer (state_file, priv->state_section, key, NULL);
1088  GtkTreeViewColumn *column = gnc_tree_view_find_column_by_name (view, column_name);
1089  if (column)
1090  {
1091  known = TRUE;
1092  if (width && (width != gtk_tree_view_column_get_width (column)))
1093  {
1094  gtk_tree_view_column_set_fixed_width (column, width);
1095  }
1096  }
1097  }
1098  if (!known)
1099  DEBUG ("Ignored key %s", key);
1100 
1101  g_free (column_name);
1102  }
1103  }
1104  }
1105  g_strfreev (keys);
1106  }
1107 
1108  /* Rebuild the column visibility menu */
1109  gnc_tree_view_build_column_menu (view);
1110  LEAVE ("set state section");
1111 }
#define DEBUG(format, args...)
Print a debugging message.
Definition: qoflog.h:264
void gnc_tree_view_remove_state_information(GncTreeView *view)
Completely wipe the treeview&#39;s state information (column visibility, width, sorting order...
GtkTreeViewColumn * gnc_tree_view_find_column_by_name(GncTreeView *view, const gchar *wanted)
Find a tree column given the "pref name" used with saved state.
#define ENTER(format, args...)
Print a function entry debugging message.
Definition: qoflog.h:272
GKeyFile * gnc_state_get_current(void)
Returns a pointer to the most recently loaded state.
Definition: gnc-state.c:248
#define LEAVE(format, args...)
Print a function exit debugging message.
Definition: qoflog.h:282
Private Data Structure.

◆ gnc_ui_close_book()

void gnc_ui_close_book ( QofBook *  book,
GtkWindow *  parent 
)

Create and run the dialog to close the book.

Parameters
bookThis parameter specifies the book whose data will be closed.
parentThis parameter specifies the parent window

Definition at line 318 of file dialog-book-close.c.

319 {
320  struct CloseBookWindow *cbw;
321  GtkBuilder* builder;
322  GtkWidget* box;
323  GList* equity_list = NULL;
324 
325  g_return_if_fail(book);
326 
327  cbw = g_new0(struct CloseBookWindow, 1);
328  g_return_if_fail(cbw);
329  cbw->book = book;
330 
331  /* Open the dialog */
332  builder = gtk_builder_new();
333  gnc_builder_add_from_file (builder, "dialog-book-close.glade", "close_book_dialog");
334  cbw->dialog = GTK_WIDGET(gtk_builder_get_object (builder, "close_book_dialog"));
335 
336  // Set the name for this dialog so it can be easily manipulated with css
337  gtk_widget_set_name (GTK_WIDGET(cbw->dialog), "gnc-id-book-close");
338 
339  /* parent */
340  if (parent != NULL)
341  gtk_window_set_transient_for (GTK_WINDOW(cbw->dialog), GTK_WINDOW(parent));
342 
343  PINFO("Closed Book Window is %p, Dialog is %p", cbw, cbw->dialog);
344 
345  /* close date */
346  box = GTK_WIDGET(gtk_builder_get_object (builder, "date_box"));
347  cbw->close_date_widget = gnc_date_edit_new(gnc_time (NULL), FALSE, FALSE);
348  gtk_box_pack_start(GTK_BOX(box), cbw->close_date_widget, TRUE, TRUE, 0);
349 
350  /* income acct */
351  equity_list = g_list_prepend(equity_list, GINT_TO_POINTER(ACCT_TYPE_EQUITY));
352  box = GTK_WIDGET(gtk_builder_get_object (builder, "income_acct_box"));
353  cbw->income_acct_widget = gnc_account_sel_new();
354  gnc_account_sel_set_hexpand (GNC_ACCOUNT_SEL(cbw->income_acct_widget), TRUE);
355  gnc_account_sel_set_acct_filters(GNC_ACCOUNT_SEL(cbw->income_acct_widget),
356  equity_list, NULL);
357  gnc_account_sel_set_new_account_ability(GNC_ACCOUNT_SEL(cbw->income_acct_widget), TRUE);
358  gtk_box_pack_start(GTK_BOX(box), cbw->income_acct_widget, TRUE, TRUE, 0);
359 
360  /* expense acct */
361  box = GTK_WIDGET(gtk_builder_get_object (builder, "expense_acct_box"));
362  cbw->expense_acct_widget = gnc_account_sel_new();
363  gnc_account_sel_set_hexpand (GNC_ACCOUNT_SEL(cbw->expense_acct_widget), TRUE);
364  gnc_account_sel_set_acct_filters(GNC_ACCOUNT_SEL(cbw->expense_acct_widget),
365  equity_list, NULL);
366  gnc_account_sel_set_new_account_ability(GNC_ACCOUNT_SEL(cbw->expense_acct_widget), TRUE);
367  gtk_box_pack_start(GTK_BOX(box), cbw->expense_acct_widget, TRUE, TRUE, 0);
368 
369  /* desc */
370  cbw->desc_widget = GTK_WIDGET(gtk_builder_get_object (builder, "desc_entry"));
371 
372  /* Autoconnect signals */
373  gtk_builder_connect_signals_full (builder, gnc_builder_connect_full_func, cbw->dialog);
374 
375  /* Register dialog with component manager */
376  cbw->component_manager_id =
377  gnc_register_gui_component(DIALOG_BOOK_CLOSE_CM_CLASS, NULL, close_handler,
378  cbw->dialog);
379  gnc_gui_component_set_session(cbw->component_manager_id,
380  gnc_get_current_session());
381  g_signal_connect(cbw->dialog, "destroy", G_CALLBACK(destroy_cb), NULL);
382 
383  /* Clean up the data structure when the dialog is destroyed */
384  g_object_set_data_full(G_OBJECT(cbw->dialog), "CloseBookWindow", cbw, g_free);
385 
386  g_object_unref(G_OBJECT(builder));
387 
388  /* Run the dialog */
389  gtk_widget_show_all(cbw->dialog);
390 
391  g_list_free(equity_list);
392 }
#define PINFO(format, args...)
Print an informational note.
Definition: qoflog.h:256
time64 gnc_time(time64 *tbuf)
get the current local time
Definition: gnc-date.cpp:273
Equity account is used to balance the balance sheet.
Definition: Account.h:149

Variable Documentation

◆ end_strings

const gchar* end_strings[GNC_ACCOUNTING_PERIOD_LAST]
Initial value:
=
{
N_("Today"),
N_("End of this month"),
N_("End of previous month"),
N_("End of this quarter"),
N_("End of previous quarter"),
N_("End of this year"),
N_("End of previous year"),
N_("End of this accounting period"),
N_("End of previous accounting period"),
}

Definition at line 83 of file gnc-period-select.c.

◆ start_strings

const gchar* start_strings[GNC_ACCOUNTING_PERIOD_LAST]
Initial value:
=
{
N_("Today"),
N_("Start of this month"),
N_("Start of previous month"),
N_("Start of this quarter"),
N_("Start of previous quarter"),
N_("Start of this year"),
N_("Start of previous year"),
N_("Start of this accounting period"),
N_("Start of previous accounting period"),
}

Definition at line 67 of file gnc-period-select.c.