39 #include <glib/gi18n.h> 44 #include "gnc-sx-list-tree-model-adapter.h" 46 #define LOG_MOD "gnc.ui.tree-view.sx-list" 47 static QofLogModule log_module = LOG_MOD;
49 #define G_LOG_DOMAIN LOG_MOD 51 static void gnc_tree_view_sx_list_dispose (GObject *
object);
52 static void gnc_tree_view_sx_list_finalize (GObject *
object);
56 GncTreeView gnc_tree_view;
58 GtkTreeModel *tree_model;
61 GtkAdjustment *adjustment;
67 G_DEFINE_TYPE(GncTreeViewSxList, gnc_tree_view_sx_list, GNC_TYPE_TREE_VIEW)
70 gnc_tree_view_sx_list_class_init (GncTreeViewSxListClass *klass)
72 GObjectClass *o_class = G_OBJECT_CLASS(klass);
74 o_class->dispose = gnc_tree_view_sx_list_dispose;
75 o_class->finalize = gnc_tree_view_sx_list_finalize;
79 gnc_tree_view_sx_list_init (GncTreeViewSxList *view)
85 gnc_tree_view_sx_list_dispose (GObject *
object)
87 GncTreeViewSxList *view;
92 view = GNC_TREE_VIEW_SX_LIST(
object);
96 view->disposed = TRUE;
98 g_object_unref (G_OBJECT(view->tree_model));
99 view->tree_model = NULL;
101 G_OBJECT_CLASS(gnc_tree_view_sx_list_parent_class)->dispose (
object);
105 gnc_tree_view_sx_list_finalize(GObject *
object)
110 G_OBJECT_CLASS(gnc_tree_view_sx_list_parent_class)->finalize (
object);
118 gnc_tree_view_sx_list_restore (gpointer user_data)
120 GncTreeViewSxList *view = user_data;
122 if (view->adjustment)
124 gtk_adjustment_set_value (view->adjustment, view->position);
125 view->adjustment = NULL;
129 SchedXaction *sx = view->sx;
130 GtkTreePath *path = gtk_tree_path_new_first ();
132 while (gnc_tree_view_path_is_valid (GNC_TREE_VIEW(view), path))
134 if (sx == gnc_tree_view_sx_list_get_sx_from_path (view, path))
136 GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(view));
138 gtk_tree_selection_unselect_all (selection);
139 gtk_tree_selection_select_path (selection, path);
140 gtk_tree_view_set_cursor (GTK_TREE_VIEW(view), path, NULL, FALSE);
141 gtk_widget_grab_focus (GTK_WIDGET(view));
142 gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW(view), path, NULL, FALSE, 0.0, 0.0);
145 gtk_tree_path_next (path);
147 gtk_tree_path_free (path);
156 gnc_tree_view_sx_list_enabled_toggled (GtkCellRendererToggle *cell,
157 const gchar *path_str,
160 GncTreeViewSxList *view = user_data;
161 GtkTreePath *path = gtk_tree_path_new_from_string (path_str);
162 SchedXaction *sx = gnc_tree_view_sx_list_get_sx_from_path (view, path);
166 GtkTreeSortable *sortable = GTK_TREE_SORTABLE(view->tree_model);
168 GtkSortType sort_order;
170 if (gtk_tree_sortable_get_sort_column_id (sortable, &sort_column_id, &sort_order) &&
171 sort_column_id == SXLTMA_COL_ENABLED)
177 view->adjustment = gtk_scrollable_get_vadjustment (GTK_SCROLLABLE(view));
178 view->position = gtk_adjustment_get_value (view->adjustment);
181 gboolean enabled = !gtk_cell_renderer_toggle_get_active (cell);
183 xaccSchedXactionSetEnabled (sx, enabled);
185 g_idle_add((GSourceFunc)gnc_tree_view_sx_list_restore, user_data);
188 gtk_tree_path_free (path);
193 gnc_tree_view_sx_list_new (GncSxInstanceModel *sx_instances)
195 GncTreeViewSxList *view = (GncTreeViewSxList*)g_object_new (GNC_TYPE_TREE_VIEW_SX_LIST, NULL);
196 g_object_set (view,
"name",
"gnc-id-sx-list-tree", NULL);
198 view->tree_model = GTK_TREE_MODEL(gnc_sx_list_tree_model_adapter_new (sx_instances));
199 gtk_tree_view_set_model (GTK_TREE_VIEW(view), GTK_TREE_MODEL(view->tree_model));
202 "Semi-Monthly Paycheck",
203 SXLTMA_COL_NAME, -1, NULL);
204 g_object_set_data (G_OBJECT(col), DEFAULT_VISIBLE, GINT_TO_POINTER(1));
207 C_(
"Single-character short column-title form of 'Enabled'",
"E"),
208 "enabled", SXLTMA_COL_ENABLED,
209 GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS,
210 NULL, gnc_tree_view_sx_list_enabled_toggled);
211 g_object_set_data (G_OBJECT(col), DEFAULT_VISIBLE, GINT_TO_POINTER(1));
214 "Weekly (x3): -------",
215 SXLTMA_COL_FREQUENCY, -1, NULL);
216 g_object_set_data (G_OBJECT(col), DEFAULT_VISIBLE, GINT_TO_POINTER(1));
219 "postponed",
" Postponed",
220 SXLTMA_COL_NUM_POSTPONED,
221 GNC_TREE_VIEW_COLUMN_COLOR_NONE,
222 GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, NULL);
223 g_object_set_data (G_OBJECT(col), DEFAULT_VISIBLE, GINT_TO_POINTER(0));
227 SXLTMA_COL_LAST_OCCUR, -1, NULL);
228 g_object_set_data (G_OBJECT(col), DEFAULT_VISIBLE, GINT_TO_POINTER(1));
232 SXLTMA_COL_NEXT_OCCUR, -1, NULL);
233 g_object_set_data (G_OBJECT(col), DEFAULT_VISIBLE, GINT_TO_POINTER(1));
237 gtk_widget_show (GTK_WIDGET(view));
238 return GTK_TREE_VIEW(view);
242 gnc_tree_view_sx_list_get_sx_from_path (GncTreeViewSxList *view, GtkTreePath *path)
245 gtk_tree_model_get_iter (GTK_TREE_MODEL(view->tree_model), &iter, path);
246 return gnc_sx_list_tree_model_adapter_get_sx_instances(
247 GNC_SX_LIST_TREE_MODEL_ADAPTER(view->tree_model), &iter)->sx;
GncTreeView implementation for Scheduled Transaction List.
common utilities for manipulating a GtkTreeView within gnucash
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.
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.
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.
#define gnc_leave_return_if_fail(test)
Replacement for g_return_if_fail, but calls LEAVE if the test fails.
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.