GnuCash  5.6-150-g038405b370+
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
 
 Assistants
 
 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.
 
 Options Dialog
 
 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  _GncPeriodSelect
 Private Data Structure. More...
 
struct  _GncTreeViewClass
 

Macros

#define GNC_TYPE_PERIOD_SELECT   (gnc_period_select_get_type())
 
#define GNC_TYPE_TREE_VIEW_SX_LIST   (gnc_tree_view_sx_list_get_type ())
 
#define GNC_TYPE_TREE_VIEW   (gnc_tree_view_get_type ())
 
#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)
 
 GncOptionsDialog::GncOptionsDialog (const char *title, GtkWindow *parent)
 
 GncOptionsDialog::GncOptionsDialog (bool modal, const char *title, const char *component_class, GtkWindow *parent)
 Constructs a GncOptionsDialog. More...
 
 GncOptionsDialog::GncOptionsDialog (const GncOptionsDialog &)=default
 
 GncOptionsDialog::GncOptionsDialog (GncOptionsDialog &&)=default
 
GtkWidget * GncOptionsDialog::get_widget () const noexcept
 
GtkWidget * GncOptionsDialog::get_page_list () const noexcept
 
GtkWidget * GncOptionsDialog::get_page_list_view () const noexcept
 
GtkWidget * GncOptionsDialog::get_notebook () const noexcept
 
GncOptionDBGncOptionsDialog::get_option_db () noexcept
 
void GncOptionsDialog::build_contents (GncOptionDB *odb)
 
void GncOptionsDialog::build_contents (GncOptionDB *odb, bool show_dialog)
 Populate the dialog's notebook with the contents of odb. More...
 
void GncOptionsDialog::set_sensitive (bool sensitive) noexcept
 
void GncOptionsDialog::changed () noexcept
 
void GncOptionsDialog::set_apply_cb (GncOptionsDialogCallback, void *cb_data) noexcept
 
void GncOptionsDialog::call_apply_cb () noexcept
 
void GncOptionsDialog::set_help_cb (GncOptionsDialogCallback, void *cb_data) noexcept
 
void GncOptionsDialog::call_help_cb () noexcept
 
void GncOptionsDialog::set_close_cb (GncOptionsDialogCallback, void *cb_data) noexcept
 
void GncOptionsDialog::call_close_cb () noexcept
 
void GncOptionsDialog::set_book_help_cb () noexcept
 
void GncOptionsDialog::call_book_help_cb () noexcept
 
void GncOptionsDialog::set_style_sheet_help_cb () noexcept
 
void GncOptionsDialog::call_style_sheet_help_cb () noexcept
 
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...
 
 G_DECLARE_FINAL_TYPE (GncTreeViewSxList, gnc_tree_view_sx_list, GNC, TREE_VIEW_SX_LIST, GncTreeView) GtkTreeView *gnc_tree_view_sx_list_new(GncSxInstanceModel *sx_instances)
 
SchedXaction * gnc_tree_view_sx_list_get_sx_from_path (GncTreeViewSxList *view, GtkTreePath *path)
 

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...
 

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_pix_column (GncTreeView *view, const gchar *column_title, const gchar *pref_name, const gchar *sizing_text, gint model_data_column, gint model_visibility_column, GtkTreeIterCompareFunc column_sort_fn)
 This function adds a pixbuf view 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

◆ build_contents()

void GncOptionsDialog::build_contents ( GncOptionDB odb,
bool  show_dialog 
)

Populate the dialog's notebook with the contents of odb.

Parameters
odb- option database to use *
show_dialog- should dialog be made visible or not *

Definition at line 336 of file dialog-options.cpp.

337 {
338  gint default_page = -1;
339 
340  g_return_if_fail (odb != NULL);
341 
342  m_option_db = odb;
343 
344  auto default_section = odb->get_default_section();
345 
346  PINFO("Default Section name is %s",
347  default_section ? default_section->get_name().c_str() : "NULL");
348 
349  odb->foreach_section(
350  [this, default_section, &default_page]
351  (GncOptionSectionPtr& section) {
352  auto page = dialog_append_page(this, section);
353  if (default_section && section.get() == default_section)
354  default_page = page;
355  });
356 
357  gtk_notebook_popup_enable(GTK_NOTEBOOK(m_notebook));
358  if (default_page >= 0)
359  {
360  /* Find the page list and set the selection to the default page */
361  auto selection{gtk_tree_view_get_selection(GTK_TREE_VIEW(m_page_list_view))};
362  GtkTreeIter iter;
363 
364  auto model{gtk_tree_view_get_model(GTK_TREE_VIEW(m_page_list_view))};
365  gtk_tree_model_iter_nth_child(model, &iter, NULL, default_page);
366  gtk_tree_selection_select_iter (selection, &iter);
367  gtk_notebook_set_current_page(GTK_NOTEBOOK(m_notebook), default_page);
368  }
369  dialog_changed_internal(m_window, FALSE);
370  if (show_dialog)
371  gtk_widget_show(m_window);
372 }
#define PINFO(format, args...)
Print an informational note.
Definition: qoflog.h:256

◆ 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:1604
#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:1236
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:1499
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:1571
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:1638
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:1557
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:1467
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:1522
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:1541

◆ 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:1509
void gnc_gdate_set_today(GDate *gd)
Set a GDate to the current day.
Definition: gnc-date.cpp:1236
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:1564
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:1454
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:1580
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:1627
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:1534
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:1550
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:1485

◆ 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 686 of file gnc-period-select.c.

687 {
688  g_return_val_if_fail(period != NULL, -1);
689  g_return_val_if_fail(GNC_IS_PERIOD_SELECT(period), -1);
690 
691  return gtk_combo_box_get_active(GTK_COMBO_BOX(period->selector));
692 }

◆ 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 700 of file gnc-period-select.c.

701 {
702  GncAccountingPeriod which;
703 
704  g_return_val_if_fail(period != NULL, 0);
705  g_return_val_if_fail(GNC_IS_PERIOD_SELECT(period), 0);
706 
707  which = gtk_combo_box_get_active(GTK_COMBO_BOX(period->selector));
708  if (which == -1)
709  return NULL;
710 
711  if (period->start)
712  return gnc_accounting_period_start_gdate(which, period->fy_end,
713  period->date_base);
714  return gnc_accounting_period_end_gdate(which, period->fy_end,
715  period->date_base);
716 }
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 242 of file gnc-period-select.c.

243 {
244  g_return_val_if_fail(period != NULL, NULL);
245  g_return_val_if_fail(GNC_IS_PERIOD_SELECT(period), NULL);
246 
247  if (!period->fy_end)
248  return NULL;
249  return g_date_new_dmy(g_date_get_day(period->fy_end),
250  g_date_get_month(period->fy_end),
251  G_DATE_BAD_YEAR);
252 }

◆ 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 604 of file gnc-period-select.c.

605 {
606  GncPeriodSelect *period;
607  const gchar *label;
608  gint i;
609 
610  period = g_object_new(GNC_TYPE_PERIOD_SELECT, NULL);
611 
612  /* Set up private data structures */
613  period->selector = gtk_combo_box_text_new();
614  period->start = starting_labels;
615 
616  /* Add the internal widgets to the hbox */
617  gtk_box_pack_start(GTK_BOX(period), period->selector, TRUE, TRUE, 0);
618  gtk_widget_show(period->selector);
619 
620  /* Find out when the combo box changes */
621  g_signal_connect(G_OBJECT(period->selector), "changed",
622  G_CALLBACK(gnc_period_sample_combobox_changed), period);
623 
624  /* Build all the labels except the fiscal year labels */
625  for (i = 0; i < GNC_ACCOUNTING_PERIOD_CYEAR_LAST; i++)
626  {
627  label = starting_labels ? _(start_strings[i]) : _(end_strings[i]);
628  gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(period->selector), label);
629  }
630 
631  /* Track changes to date formatting */
632  gnc_prefs_register_cb (GNC_PREFS_GROUP_GENERAL, GNC_PREF_DATE_FORMAT,
633  gnc_period_sample_new_date_format, period);
634 
635  return GTK_WIDGET (period);
636 }
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 645 of file gnc-period-select.c.

648 {
649  GtkWidget *widget;
650  widget = gnc_period_select_new(int1 != 0);
651  if (int2)
652  gnc_period_select_set_show_date(GNC_PERIOD_SELECT(widget), TRUE);
653  gtk_widget_show(widget);
654  return widget;
655 }
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 669 of file gnc-period-select.c.

671 {
672  g_return_if_fail(period != NULL);
673  g_return_if_fail(GNC_IS_PERIOD_SELECT(period));
674  g_return_if_fail(which >= 0);
675  g_return_if_fail(which < GNC_ACCOUNTING_PERIOD_LAST);
676 
677  g_object_set (G_OBJECT (period), "active", which, NULL);
678 }

◆ 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 260 of file gnc-period-select.c.

261 {
262  const gchar *label;
263  gint i;
264 
265  g_return_if_fail(period != NULL);
266  g_return_if_fail(GNC_IS_PERIOD_SELECT(period));
267 
268  if (period->fy_end)
269  g_date_free(period->fy_end);
270 
271  if (fy_end)
272  {
273  period->fy_end = g_date_new_dmy(g_date_get_day(fy_end),
274  g_date_get_month(fy_end),
275  G_DATE_BAD_YEAR);
276  }
277  else
278  {
279  period->fy_end = NULL;
280  }
281 
282  if (fy_end)
283  {
284  for (i = GNC_ACCOUNTING_PERIOD_CYEAR_LAST; i < GNC_ACCOUNTING_PERIOD_FYEAR_LAST; i++)
285  {
286  label = period->start ? _(start_strings[i]) : _(end_strings[i]);
287  gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(period->selector), label);
288  }
289  }
290  else
291  {
292  for (i = GNC_ACCOUNTING_PERIOD_FYEAR_LAST - 1; i >= GNC_ACCOUNTING_PERIOD_FYEAR_LAST; i--)
293  {
294  gtk_combo_box_text_remove(GTK_COMBO_BOX_TEXT(period->selector), i);
295  }
296  }
297 }

◆ 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 348 of file gnc-period-select.c.

349 {
350  GDate date;
351 
352  g_return_if_fail(period != NULL);
353  g_return_if_fail(GNC_IS_PERIOD_SELECT(period));
354 
355  if (show_date)
356  {
357  g_date_clear(&date, 1);
358  gnc_gdate_set_time64(&date, gnc_time (NULL));
359  gnc_period_select_set_date_common(period, &date);
360  }
361  else
362  {
363  gnc_period_select_set_date_common(period, NULL);
364  }
365 }
void gnc_gdate_set_time64(GDate *gd, time64 time)
Set a GDate to a time64.
Definition: gnc-date.cpp:1244
time64 gnc_time(time64 *tbuf)
get the current time
Definition: gnc-date.cpp:261

◆ 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 2059 of file gnc-tree-view.c.

2067 {
2068  GtkTreeViewColumn *column;
2069  GtkCellRenderer *renderer;
2070  gfloat alignment = 1.0;
2071 
2072  column = gnc_tree_view_add_text_column (view, column_title, pref_name,
2073  NULL, sizing_text, model_data_column,
2074  model_visibility_column,
2075  column_sort_fn);
2076 
2077  renderer = gnc_tree_view_column_get_renderer (column);
2078 
2079  /* Right align the column title and data for both ltr and rtl */
2080  if (gtk_widget_get_direction (GTK_WIDGET(view)) == GTK_TEXT_DIR_RTL)
2081  alignment = 0.0;
2082 
2083  g_object_set (G_OBJECT(column), "alignment", alignment, NULL);
2084  g_object_set (G_OBJECT(renderer), "xalign", alignment, NULL);
2085 
2086  /* Change the text color */
2087  if (model_color_column != GNC_TREE_VIEW_COLUMN_COLOR_NONE)
2088  gtk_tree_view_column_add_attribute (column, renderer,
2089  "foreground", model_color_column);
2090 
2091  return column;
2092 }
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_pix_column()

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

This function adds a pixbuf 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.
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 "icon-name" 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.

This function adds a pixbuf view column to a GncTreeView base view.

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 1983 of file gnc-tree-view.c.

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

◆ 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 1919 of file gnc-tree-view.c.

1927 {
1928  GtkCellRenderer *renderer;
1929 
1930  g_return_val_if_fail (GNC_IS_TREE_VIEW(view), NULL);
1931 
1932  renderer = gtk_cell_renderer_text_new ();
1933 
1934  return add_text_column_variant (view, renderer,
1935  column_title, pref_name,
1936  icon_name, sizing_text,
1937  model_data_column,
1938  model_visibility_column,
1939  column_sort_fn);
1940 }

◆ 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 1951 of file gnc-tree-view.c.

1959 {
1960  GtkCellRenderer *renderer;
1961 
1962  g_return_val_if_fail (GNC_IS_TREE_VIEW(view), NULL);
1963 
1964  renderer = gnc_cell_renderer_text_view_new ();
1965 
1966  return add_text_column_variant (view, renderer,
1967  column_title, pref_name,
1968  icon_name, sizing_text,
1969  model_data_column,
1970  model_visibility_column,
1971  column_sort_fn);
1972 }

◆ 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 1766 of file gnc-tree-view.c.

1774 {
1775  GtkTreeViewColumn *column;
1776  GtkCellRenderer *renderer;
1777 
1778  g_return_val_if_fail (GNC_IS_TREE_VIEW(view), NULL);
1779 
1780  renderer = gtk_cell_renderer_toggle_new ();
1781  if (!toggle_edited_cb)
1782  {
1783  gtk_cell_renderer_toggle_set_activatable (GTK_CELL_RENDERER_TOGGLE(renderer), FALSE);
1784  }
1785  column =
1786  gtk_tree_view_column_new_with_attributes (column_short_title,
1787  renderer,
1788  "active", model_data_column,
1789  NULL);
1790 
1791  /* Add the full title to the object for menu creation */
1792  g_object_set_data_full (G_OBJECT(column), REAL_TITLE,
1793  g_strdup(column_title), g_free);
1794  if (toggle_edited_cb)
1795  g_signal_connect (G_OBJECT(renderer), "toggled",
1796  G_CALLBACK(toggle_edited_cb), view);
1797 
1798  if (model_visibility_column != GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS)
1799  gtk_tree_view_column_add_attribute (column, renderer,
1800  "visible", model_visibility_column);
1801 
1802 
1803  gnc_tree_view_column_properties (view, column, pref_name, model_data_column,
1804  0, FALSE, column_sort_fn);
1805 
1806  gnc_tree_view_append_column (view, column);
1807 
1808  /* Also add the full title to the object as a tooltip */
1809  gtk_widget_set_tooltip_text (gtk_tree_view_column_get_button (column), column_title);
1810 
1811  return column;
1812 }
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 2103 of file gnc-tree-view.c.

2105 {
2106  int n = gtk_tree_view_get_n_columns (GTK_TREE_VIEW(view));
2107 
2108  /* Ignore the initial column, the selection menu */
2109  if (n >= 1)
2110  n -= 1;
2111  return gtk_tree_view_insert_column (GTK_TREE_VIEW(view), column, n);
2112 }

◆ 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 2032 of file gnc-tree-view.c.

2033 {
2034  GList *renderers;
2035  GtkCellRenderer *cr = NULL;
2036 
2037  g_return_val_if_fail (GTK_TREE_VIEW_COLUMN(column), NULL);
2038 
2039  /* Get the list of one renderer */
2040  renderers = gtk_cell_layout_get_cells (GTK_CELL_LAYOUT(column));
2041  if (g_list_length (renderers) > 0)
2042  cr = GTK_CELL_RENDERER(renderers->data);
2043  g_list_free (renderers);
2044 
2045  return cr;
2046 }

◆ 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 1596 of file gnc-tree-view.c.

1597 {
1598  GncTreeViewPrivate *priv;
1599  GtkTreeViewColumn *column;
1600  GList *columns;
1601  gboolean hide_menu_column;
1602 
1603  g_return_if_fail (GNC_IS_TREE_VIEW(view));
1604 
1605  ENTER(" ");
1606 
1607  /* Update the view and saved state */
1608  columns = gtk_tree_view_get_columns (GTK_TREE_VIEW(view));
1609  g_list_foreach (columns, (GFunc)gnc_tree_view_update_visibility, view);
1610  g_list_free (columns);
1611 
1612  priv = GNC_TREE_VIEW_GET_PRIVATE(view);
1613  if (priv->state_section)
1614  priv->seen_state_visibility = TRUE;
1615 
1616  /* If only the first column is visible, hide the spacer and make that
1617  * column expand. */
1618  hide_menu_column = (gnc_tree_view_count_visible_columns (view) == 1);
1619  column = gtk_tree_view_get_column (GTK_TREE_VIEW(view), 0);
1620  gtk_tree_view_column_set_expand (column, hide_menu_column);
1621  gtk_tree_view_column_set_visible (priv->column_menu_column, !hide_menu_column);
1622 
1623  LEAVE(" ");
1624 }
#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 1431 of file gnc-tree-view.c.

1434 {
1435  GtkTreeViewColumn *column;
1436  GList *columns, *tmp;
1437  gchar *name, *pref_name;
1438  va_list args;
1439 
1440  g_return_if_fail (GNC_IS_TREE_VIEW(view));
1441  ENTER(" ");
1442  va_start (args, first_column_name);
1443  name = first_column_name;
1444 
1445  /* First disable the expand property on all (non-infrastructure) columns. */
1446  columns = gtk_tree_view_get_columns (GTK_TREE_VIEW(view));
1447  for (tmp = columns; tmp; tmp = g_list_next (tmp))
1448  {
1449  column = tmp->data;
1450  pref_name = g_object_get_data (G_OBJECT(column), PREF_NAME);
1451  if (pref_name != NULL)
1452  gtk_tree_view_column_set_expand (column, FALSE);
1453  }
1454  g_list_free(columns);
1455 
1456  /* Now enable it on the requested columns. */
1457  while (name != NULL)
1458  {
1459  column = gnc_tree_view_find_column_by_name (view, name);
1460  if (column != NULL)
1461  {
1462  gtk_tree_view_column_set_expand (column, TRUE);
1463  }
1464  name = va_arg (args, gchar*);
1465  }
1466  va_end (args);
1467 
1468  LEAVE(" ");
1469 }
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

◆ 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 537 of file gnc-tree-view.c.

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

◆ 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 1560 of file gnc-tree-view.c.

1561 {
1562  GncTreeViewPrivate *priv;
1563 
1564  g_return_val_if_fail (GNC_IS_TREE_VIEW(view), FALSE);
1565 
1566  priv = GNC_TREE_VIEW_GET_PRIVATE(view);
1567  return (priv->show_column_menu);
1568 }
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 1123 of file gnc-tree-view.c.

1124 {
1125  GncTreeViewPrivate *priv;
1126 
1127  g_return_val_if_fail (GNC_IS_TREE_VIEW(view), NULL);
1128 
1129  priv = GNC_TREE_VIEW_GET_PRIVATE (view);
1130  return priv->state_section;
1131 }
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 981 of file gnc-tree-view.c.

982 {
983  GncTreeViewPrivate *priv;
984  GKeyFile *state_file = gnc_state_get_current ();
985 
986  ENTER(" ");
987  priv = GNC_TREE_VIEW_GET_PRIVATE(view);
988  if (!priv->state_section)
989  {
990  LEAVE("no state section");
991  return;
992  }
993 
994  g_key_file_remove_group (state_file, priv->state_section, NULL);
995  g_free (priv->state_section);
996  priv->state_section = NULL;
997  LEAVE(" ");
998 }
#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 1133 of file gnc-tree-view.c.

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

1501 {
1502  GncTreeViewPrivate *priv;
1503 
1504  g_return_if_fail (GNC_IS_TREE_VIEW(view));
1505 
1506  ENTER("view %p, column %d, func %p", view, column, func);
1507  priv = GNC_TREE_VIEW_GET_PRIVATE(view);
1508 
1509  update_control_cell_renderers_background (view, priv->column_menu_column, column, func);
1510 
1511  LEAVE(" ");
1512 }
#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 1539 of file gnc-tree-view.c.

1541 {
1542  GncTreeViewPrivate *priv;
1543 
1544  g_return_if_fail (GNC_IS_TREE_VIEW(view));
1545 
1546  ENTER("view %p, show menu %d", view, visible);
1547  priv = GNC_TREE_VIEW_GET_PRIVATE(view);
1548  priv->show_column_menu = visible;
1549  gnc_tree_view_build_column_menu (view);
1550  LEAVE(" ");
1551 }
#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 1518 of file gnc-tree-view.c.

1519 {
1520  GncTreeViewPrivate *priv;
1521 
1522  g_return_if_fail (GNC_IS_TREE_VIEW(view));
1523 
1524  ENTER("view %p, sort_model %p", view, s_model);
1525  priv = GNC_TREE_VIEW_GET_PRIVATE(view);
1526 
1527  priv->sort_model = s_model;
1528  LEAVE(" ");
1529 }
#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 1008 of file gnc-tree-view.c.

1010 {
1011  GncTreeViewPrivate *priv;
1012  GKeyFile *state_file;
1013 
1014  g_return_if_fail (GNC_IS_TREE_VIEW(view));
1015 
1016  ENTER("view %p, section %s", view, section);
1017 
1018  priv = GNC_TREE_VIEW_GET_PRIVATE(view);
1019 
1020  /* Drop any previous state section */
1021  if (priv->state_section)
1023 
1024  if (!section)
1025  {
1026  LEAVE("cleared state section");
1027  return;
1028  }
1029 
1030  /* Catch changes in state. Propagate to view. */
1031  priv->state_section = g_strdup (section);
1032 
1033  state_file = gnc_state_get_current ();
1034  if (g_key_file_has_group (state_file, priv->state_section))
1035  {
1036  gsize num_keys, idx;
1037  gchar **keys = g_key_file_get_keys (state_file, priv->state_section, &num_keys, NULL);
1038  for (idx = 0; idx < num_keys; idx++)
1039  {
1040  gchar *key = keys[idx];
1041  if (g_strcmp0 (key, STATE_KEY_SORT_COLUMN) == 0)
1042  {
1043  gchar *name = g_key_file_get_string (state_file, priv->state_section,
1044  key, NULL);
1045  gnc_tree_view_set_sort_column (view, name);
1046  g_free (name);
1047  }
1048  else if (g_strcmp0 (key, STATE_KEY_SORT_ORDER) == 0)
1049  {
1050  gchar *name = g_key_file_get_string (state_file, priv->state_section,
1051  key, NULL);
1052  gnc_tree_view_set_sort_order (view, name);
1053  g_free (name);
1054  }
1055  else if (g_strcmp0 (key, STATE_KEY_COLUMN_ORDER) == 0)
1056  {
1057  gsize length;
1058  gchar **columns = g_key_file_get_string_list (state_file, priv->state_section,
1059  key, &length, NULL);
1060  gnc_tree_view_set_column_order (view, columns, length);
1061  g_strfreev (columns);
1062  }
1063  else
1064  {
1065  /* Make a copy of the local part of the key so it can be split
1066  * into column name and key type */
1067  gboolean known = FALSE;
1068  gchar *column_name = g_strdup (key);
1069  gchar *type_name = g_strrstr (column_name, "_");
1070 
1071  if (type_name != NULL) //guard against not finding '_'
1072  {
1073  *type_name++ = '\0';
1074 
1075  if (g_strcmp0 (type_name, STATE_KEY_SUFF_VISIBLE) == 0)
1076  {
1077  GtkTreeViewColumn *column = gnc_tree_view_find_column_by_name (view, column_name);
1078  if (column)
1079  {
1080  known = TRUE;
1081  if (!g_object_get_data (G_OBJECT (column), ALWAYS_VISIBLE))
1082  {
1083  gtk_tree_view_column_set_visible (column,
1084  g_key_file_get_boolean (state_file, priv->state_section, key, NULL));
1085  }
1086  }
1087  }
1088  else if (g_strcmp0 (type_name, STATE_KEY_SUFF_WIDTH) == 0)
1089  {
1090  gint width = g_key_file_get_integer (state_file, priv->state_section, key, NULL);
1091  GtkTreeViewColumn *column = gnc_tree_view_find_column_by_name (view, column_name);
1092  if (column)
1093  {
1094  known = TRUE;
1095  if (width && (width != gtk_tree_view_column_get_width (column)))
1096  {
1097  gtk_tree_view_column_set_fixed_width (column, width);
1098  }
1099  }
1100  }
1101  if (!known)
1102  DEBUG ("Ignored key %s", key);
1103 
1104  g_free (column_name);
1105  }
1106  }
1107  }
1108  g_strfreev (keys);
1109  }
1110 
1111  /* Rebuild the column visibility menu */
1112  gnc_tree_view_build_column_menu (view);
1113  LEAVE ("set state section");
1114 }
#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_acct_filters(GNC_ACCOUNT_SEL(cbw->income_acct_widget),
355  equity_list, NULL);
356  gnc_account_sel_set_new_account_ability(GNC_ACCOUNT_SEL(cbw->income_acct_widget), TRUE);
357  gtk_box_pack_start(GTK_BOX(box), cbw->income_acct_widget, TRUE, TRUE, 0);
358 
359  /* expense acct */
360  box = GTK_WIDGET(gtk_builder_get_object (builder, "expense_acct_box"));
361  cbw->expense_acct_widget = gnc_account_sel_new();
362  gnc_account_sel_set_acct_filters(GNC_ACCOUNT_SEL(cbw->expense_acct_widget),
363  equity_list, NULL);
364  gnc_account_sel_set_new_account_ability(GNC_ACCOUNT_SEL(cbw->expense_acct_widget), TRUE);
365  gtk_box_pack_start(GTK_BOX(box), cbw->expense_acct_widget, TRUE, TRUE, 0);
366 
367  /* desc */
368  cbw->desc_widget = GTK_WIDGET(gtk_builder_get_object (builder, "desc_entry"));
369 
370  /* Autoconnect signals */
371  gtk_builder_connect_signals_full (builder, gnc_builder_connect_full_func, cbw->dialog);
372 
373  /* Register dialog with component manager */
374  cbw->component_manager_id =
375  gnc_register_gui_component(DIALOG_BOOK_CLOSE_CM_CLASS, NULL, close_handler,
376  cbw->dialog);
377  gnc_gui_component_set_session(cbw->component_manager_id,
378  gnc_get_current_session());
379  g_signal_connect(cbw->dialog, "destroy", G_CALLBACK(destroy_cb), NULL);
380 
381  /* Clean up the data structure when the dialog is destroyed */
382  g_object_set_data_full(G_OBJECT(cbw->dialog), "CloseBookWindow", cbw, g_free);
383 
384  g_object_unref(G_OBJECT(builder));
385 
386  /* Run the dialog */
387  gtk_widget_show_all(cbw->dialog);
388 
389  g_list_free(equity_list);
390 }
#define PINFO(format, args...)
Print an informational note.
Definition: qoflog.h:256
time64 gnc_time(time64 *tbuf)
get the current time
Definition: gnc-date.cpp:261
Equity account is used to balance the balance sheet.
Definition: Account.h:146

◆ GncOptionsDialog()

GncOptionsDialog::GncOptionsDialog ( bool  modal,
const char *  title,
const char *  component_class,
GtkWindow *  parent 
)

Constructs a GncOptionsDialog.

Based on the description in the GtkBuilder file. Initializes signals. Two component classes might be used, DIALOG_BOOK_OPTIONS_CM_CLASS or DIALOG_OPTIONS_CM_CLASS of which the latter is the default.

Parameters
modalIf true the "Apply" button is hidden. It doesn't make the dialog run in its own event loop so it's not truly modal.
titleThe title that will appear in the dialog's title bar.
component_classFor registering the dialog in the component manager.
parentThe widget for which the dialog will be transient-for.

Definition at line 534 of file dialog-options.cpp.

536  :
537  m_component_class{component_class ? component_class : DIALOG_OPTIONS_CM_CLASS}
538 {
539  auto builder = gtk_builder_new();
540  gnc_builder_add_from_file (builder, "dialog-options.glade", "gnucash_options_window");
541  m_window = GTK_WIDGET(gtk_builder_get_object (builder, "gnucash_options_window"));
542  g_object_ref(m_window);
543  m_page_list = GTK_WIDGET(gtk_builder_get_object (builder, "page_list_scroll"));
544  g_object_set_data(G_OBJECT(m_window), "optionwin", this);
545 
546  // Set the name for this dialog so it can be easily manipulated with css
547  gtk_widget_set_name (GTK_WIDGET(m_window), "gnc-id-options");
548 
549  /* Page List */
550 
551  m_page_list_view = GTK_WIDGET(gtk_builder_get_object (builder, "page_list_treeview"));
552 
553  auto view = GTK_TREE_VIEW(m_page_list_view);
554 
555  auto store = gtk_list_store_new(NUM_COLUMNS, G_TYPE_INT, G_TYPE_STRING);
556  gtk_tree_view_set_model(view, GTK_TREE_MODEL(store));
557  g_object_unref(store);
558 
559  auto renderer = gtk_cell_renderer_text_new();
560  auto column =
561  gtk_tree_view_column_new_with_attributes(_("Page"), renderer,
562  "text", PAGE_NAME,
563  nullptr);
564  gtk_tree_view_append_column(view, column);
565 
566  gtk_tree_view_column_set_alignment(column, 0.5);
567 
568  auto selection = gtk_tree_view_get_selection(view);
569  gtk_tree_selection_set_mode(selection, GTK_SELECTION_BROWSE);
570  g_signal_connect (selection, "changed",
571  G_CALLBACK (dialog_list_select_cb), this);
572 
573  m_help_button = GTK_BUTTON(gtk_builder_get_object (builder, "helpbutton"));
574  g_signal_connect(m_help_button, "clicked",
575  G_CALLBACK(dialog_help_button_cb), this);
576  m_cancel_button = GTK_BUTTON(gtk_builder_get_object (builder, "cancelbutton"));
577  g_signal_connect(m_cancel_button, "clicked",
578  G_CALLBACK(dialog_cancel_button_cb), this);
579  m_apply_button = GTK_BUTTON(gtk_builder_get_object (builder, "applybutton"));
580  g_signal_connect(m_apply_button, "clicked",
581  G_CALLBACK(dialog_apply_button_cb), this);
582  m_ok_button = GTK_BUTTON(gtk_builder_get_object (builder, "okbutton"));
583  g_signal_connect(m_ok_button, "clicked",
584  G_CALLBACK(dialog_ok_button_cb), this);
585 
586  gtk_builder_connect_signals_full (builder, gnc_builder_connect_full_func,
587  this);
588 
589  // when added to a page of the hierarchy assistant there will be no parent
590  if (parent)
591  gnc_restore_window_size (GNC_PREFS_GROUP, GTK_WINDOW(m_window),
592  parent);
593 
594  if (title)
595  gtk_window_set_title(GTK_WINDOW(m_window), title);
596 
597  /* modal */
598  if (modal)
599  gtk_widget_hide (GTK_WIDGET(m_apply_button));
600 
601  /* glade doesn't support a notebook with zero pages */
602  auto hbox = GTK_WIDGET(gtk_builder_get_object (builder,
603  "notebook_placeholder"));
604  m_notebook = gtk_notebook_new();
605 
606  gtk_widget_set_vexpand (m_notebook, TRUE);
607 
608  gtk_widget_show(m_notebook);
609  gtk_box_pack_start(GTK_BOX(hbox), m_notebook, TRUE, TRUE, 5);
610 
611  auto component_id = gnc_register_gui_component (m_component_class,
612  nullptr,
613  component_close_handler,
614  this);
615  gnc_gui_component_set_session (component_id, gnc_get_current_session());
616 
617  g_signal_connect (m_window, "destroy", G_CALLBACK(dialog_destroy_cb), this);
618 
619  g_signal_connect (m_window, "key_press_event",
620  G_CALLBACK(dialog_window_key_press_cb), this);
621 
622  g_object_unref(G_OBJECT(builder));
623 }

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 78 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 62 of file gnc-period-select.c.