[gtksourceview] Completion: simplify icon cell renderer
- From: SÃbastien Wilmet <swilmet src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtksourceview] Completion: simplify icon cell renderer
- Date: Thu, 14 Feb 2013 23:07:43 +0000 (UTC)
commit 7cd5383cdcede4f46fe05b89888af1d167388481
Author: SÃbastien Wilmet <swilmet gnome org>
Date: Thu Feb 14 23:22:26 2013 +0100
Completion: simplify icon cell renderer
Instead of using a cell data func, add a boolean column in the model,
IS_HEADER, and use this column for setting the attributes of the icon
cell renderer.
It also moves all the init stuff of the TreeView in the new function
initialize_tree_view().
gtksourceview/gtksourcecompletion.c | 158 +++++++++++++-----------------
gtksourceview/gtksourcecompletionmodel.c | 9 ++-
gtksourceview/gtksourcecompletionmodel.h | 1 +
3 files changed, 77 insertions(+), 91 deletions(-)
---
diff --git a/gtksourceview/gtksourcecompletion.c b/gtksourceview/gtksourcecompletion.c
index e308ca2..2178aa6 100644
--- a/gtksourceview/gtksourcecompletion.c
+++ b/gtksourceview/gtksourcecompletion.c
@@ -2666,48 +2666,6 @@ update_transient_for_info (GObject *window,
}
static void
-render_proposal_icon_func (GtkTreeViewColumn *column,
- GtkCellRenderer *cell,
- GtkTreeModel *model,
- GtkTreeIter *iter,
- GtkSourceCompletion *completion)
-{
- GdkPixbuf *icon = NULL;
-
- if (gtk_source_completion_model_iter_is_header (completion->priv->model_proposals, iter))
- {
- GtkStyleContext *context;
- GdkRGBA color;
-
- context = gtk_widget_get_style_context (completion->priv->tree_view_proposals);
- gtk_style_context_get_background_color (context,
- GTK_STATE_FLAG_INSENSITIVE,
- &color);
-
- g_object_set (cell,
- "cell-background-rgba", &color,
- NULL);
- }
- else
- {
- g_object_set (cell,
- "cell-background-set", FALSE,
- NULL);
- }
-
- gtk_tree_model_get (model, iter,
- GTK_SOURCE_COMPLETION_MODEL_COLUMN_ICON, &icon,
- -1);
-
- g_object_set (cell, "pixbuf", icon, NULL);
-
- if (icon != NULL)
- {
- g_object_unref (icon);
- }
-}
-
-static void
render_proposal_text_func (GtkTreeViewColumn *column,
GtkCellRenderer *cell,
GtkTreeModel *model,
@@ -2885,46 +2843,66 @@ replace_model (GtkSourceCompletion *completion)
}
static void
-initialize_ui (GtkSourceCompletion *completion)
+initialize_tree_view (GtkSourceCompletion *completion,
+ GtkBuilder *builder)
{
- GtkBuilder *builder;
- GtkTreeViewColumn *column;
GtkTreeSelection *selection;
+ GtkTreeViewColumn *column;
+ GtkStyleContext *style_context;
+ GdkRGBA color;
- builder = gtk_builder_new ();
- gtk_builder_set_translation_domain (builder, GETTEXT_PACKAGE);
+ completion->priv->tree_view_proposals = GTK_WIDGET (gtk_builder_get_object (builder,
"tree_view_proposals"));
- gtk_builder_add_from_resource (builder,
- "/org/gnome/gtksourceview/ui/gtksourcecompletion.ui",
- NULL);
+ g_signal_connect (completion->priv->tree_view_proposals,
+ "row-activated",
+ G_CALLBACK (row_activated_cb),
+ completion);
- completion->priv->main_window = GTK_WIDGET (gtk_builder_get_object (builder, "main_window"));
- completion->priv->tree_view_proposals = GTK_WIDGET (gtk_builder_get_object (builder,
"tree_view_proposals"));
- completion->priv->selection_image = GTK_WIDGET (gtk_builder_get_object (builder, "selection_image"));
- completion->priv->selection_label = GTK_WIDGET (gtk_builder_get_object (builder, "selection_label"));
- completion->priv->info_button = GTK_WIDGET (gtk_builder_get_object (builder, "info_button"));
+ g_signal_connect_after (completion->priv->tree_view_proposals,
+ "size-allocate",
+ G_CALLBACK (gtk_source_completion_size_allocate),
+ completion);
- gtk_window_set_attached_to (GTK_WINDOW (completion->priv->main_window),
- GTK_WIDGET (completion->priv->view));
+ g_signal_connect_after (completion->priv->tree_view_proposals,
+ "style-updated",
+ G_CALLBACK (gtk_source_completion_style_updated),
+ completion);
+
+ /* Selection */
- /* Tree view */
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (completion->priv->tree_view_proposals));
+
gtk_tree_selection_set_select_function (selection,
(GtkTreeSelectionFunc)selection_func,
completion,
NULL);
- column = GTK_TREE_VIEW_COLUMN (gtk_builder_get_object (builder,
- "tree_view_column_proposal"));
+ g_signal_connect (selection,
+ "changed",
+ G_CALLBACK (selection_changed_cb),
+ completion);
- completion->priv->cell_renderer_icon = GTK_CELL_RENDERER (gtk_builder_get_object (builder,
-
"cell_renderer_icon"));
+ /* Icon cell renderer */
- gtk_tree_view_column_set_cell_data_func (column,
- completion->priv->cell_renderer_icon,
- (GtkTreeCellDataFunc)render_proposal_icon_func,
- completion,
- NULL);
+ completion->priv->cell_renderer_icon = GTK_CELL_RENDERER (gtk_builder_get_object (builder,
"cell_renderer_icon"));
+
+ column = GTK_TREE_VIEW_COLUMN (gtk_builder_get_object (builder, "tree_view_column_proposal"));
+
+ gtk_tree_view_column_set_attributes (column, completion->priv->cell_renderer_icon,
+ "pixbuf", GTK_SOURCE_COMPLETION_MODEL_COLUMN_ICON,
+ "cell-background-set",
GTK_SOURCE_COMPLETION_MODEL_COLUMN_IS_HEADER,
+ NULL);
+
+ style_context = gtk_widget_get_style_context (completion->priv->tree_view_proposals);
+ gtk_style_context_get_background_color (style_context,
+ GTK_STATE_FLAG_INSENSITIVE,
+ &color);
+
+ g_object_set (completion->priv->cell_renderer_icon,
+ "cell-background-rgba", &color,
+ NULL);
+
+ /* Text cell renderer */
gtk_tree_view_column_set_cell_data_func (column,
GTK_CELL_RENDERER (gtk_builder_get_object (builder,
@@ -2933,13 +2911,13 @@ initialize_ui (GtkSourceCompletion *completion)
completion,
NULL);
+ /* Accelerators cell renderer */
+
completion->priv->tree_view_column_accelerator =
- GTK_TREE_VIEW_COLUMN (gtk_builder_get_object (builder,
- "tree_view_column_accelerator"));
+ GTK_TREE_VIEW_COLUMN (gtk_builder_get_object (builder, "tree_view_column_accelerator"));
completion->priv->cell_renderer_accelerator =
- GTK_CELL_RENDERER (gtk_builder_get_object (builder,
- "cell_renderer_accelerator"));
+ GTK_CELL_RENDERER (gtk_builder_get_object (builder, "cell_renderer_accelerator"));
gtk_tree_view_column_set_visible (completion->priv->tree_view_column_accelerator,
completion->priv->num_accelerators > 0);
@@ -2949,16 +2927,28 @@ initialize_ui (GtkSourceCompletion *completion)
(GtkTreeCellDataFunc)render_proposal_accelerator_func,
completion,
NULL);
+}
- g_signal_connect (completion->priv->tree_view_proposals,
- "row-activated",
- G_CALLBACK (row_activated_cb),
- completion);
+static void
+initialize_ui (GtkSourceCompletion *completion)
+{
+ GtkBuilder *builder = gtk_builder_new ();
- g_signal_connect (selection,
- "changed",
- G_CALLBACK (selection_changed_cb),
- completion);
+ gtk_builder_set_translation_domain (builder, GETTEXT_PACKAGE);
+
+ gtk_builder_add_from_resource (builder,
+ "/org/gnome/gtksourceview/ui/gtksourcecompletion.ui",
+ NULL);
+
+ initialize_tree_view (completion, builder);
+
+ completion->priv->main_window = GTK_WIDGET (gtk_builder_get_object (builder, "main_window"));
+ completion->priv->selection_image = GTK_WIDGET (gtk_builder_get_object (builder, "selection_image"));
+ completion->priv->selection_label = GTK_WIDGET (gtk_builder_get_object (builder, "selection_label"));
+ completion->priv->info_button = GTK_WIDGET (gtk_builder_get_object (builder, "info_button"));
+
+ gtk_window_set_attached_to (GTK_WINDOW (completion->priv->main_window),
+ GTK_WIDGET (completion->priv->view));
g_signal_connect (completion->priv->info_button,
"toggled",
@@ -2996,16 +2986,6 @@ initialize_ui (GtkSourceCompletion *completion)
G_CALLBACK (gtk_source_completion_configure_event),
completion);
- g_signal_connect_after (completion->priv->tree_view_proposals,
- "size-allocate",
- G_CALLBACK (gtk_source_completion_size_allocate),
- completion);
-
- g_signal_connect_after (completion->priv->tree_view_proposals,
- "style-updated",
- G_CALLBACK (gtk_source_completion_style_updated),
- completion);
-
g_signal_connect (completion->priv->main_window,
"delete-event",
G_CALLBACK (gtk_widget_hide_on_delete),
diff --git a/gtksourceview/gtksourcecompletionmodel.c b/gtksourceview/gtksourcecompletionmodel.c
index 27c30ed..c02a72e 100644
--- a/gtksourceview/gtksourcecompletionmodel.c
+++ b/gtksourceview/gtksourcecompletionmodel.c
@@ -499,6 +499,10 @@ tree_model_get_value (GtkTreeModel *tree_model,
}
break;
+ case GTK_SOURCE_COMPLETION_MODEL_COLUMN_IS_HEADER:
+ g_value_set_boolean (value, is_header (proposal_info));
+ break;
+
default:
g_assert_not_reached ();
}
@@ -699,11 +703,12 @@ gtk_source_completion_model_init (GtkSourceCompletionModel *self)
{
self->priv = GTK_SOURCE_COMPLETION_MODEL_GET_PRIVATE (self);
- self->priv->column_types[GTK_SOURCE_COMPLETION_MODEL_COLUMN_PROVIDER] = G_TYPE_OBJECT;
- self->priv->column_types[GTK_SOURCE_COMPLETION_MODEL_COLUMN_PROPOSAL] = G_TYPE_OBJECT;
self->priv->column_types[GTK_SOURCE_COMPLETION_MODEL_COLUMN_LABEL] = G_TYPE_STRING;
self->priv->column_types[GTK_SOURCE_COMPLETION_MODEL_COLUMN_MARKUP] = G_TYPE_STRING;
self->priv->column_types[GTK_SOURCE_COMPLETION_MODEL_COLUMN_ICON] = GDK_TYPE_PIXBUF;
+ self->priv->column_types[GTK_SOURCE_COMPLETION_MODEL_COLUMN_PROPOSAL] = G_TYPE_OBJECT;
+ self->priv->column_types[GTK_SOURCE_COMPLETION_MODEL_COLUMN_PROVIDER] = G_TYPE_OBJECT;
+ self->priv->column_types[GTK_SOURCE_COMPLETION_MODEL_COLUMN_IS_HEADER] = G_TYPE_BOOLEAN;
self->priv->show_headers = 1;
self->priv->providers = NULL;
diff --git a/gtksourceview/gtksourcecompletionmodel.h b/gtksourceview/gtksourcecompletionmodel.h
index 4804066..b0e141f 100644
--- a/gtksourceview/gtksourcecompletionmodel.h
+++ b/gtksourceview/gtksourcecompletionmodel.h
@@ -58,6 +58,7 @@ enum
GTK_SOURCE_COMPLETION_MODEL_COLUMN_ICON,
GTK_SOURCE_COMPLETION_MODEL_COLUMN_PROPOSAL,
GTK_SOURCE_COMPLETION_MODEL_COLUMN_PROVIDER,
+ GTK_SOURCE_COMPLETION_MODEL_COLUMN_IS_HEADER,
GTK_SOURCE_COMPLETION_MODEL_N_COLUMNS
};
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]