aboutsummaryrefslogtreecommitdiffstats
path: root/filter/e-rule-editor.c
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2009-09-25 06:04:36 +0800
committerMatthew Barnes <mbarnes@redhat.com>2009-11-17 08:33:32 +0800
commit054c0881696a85f537e93b4950a28f505a3dc0f7 (patch)
treee63cfece426e2de5898c926eb6737cff229bb38b /filter/e-rule-editor.c
parent6348266ee635db59a12d75497f980dd85d0fcf58 (diff)
downloadgsoc2013-evolution-054c0881696a85f537e93b4950a28f505a3dc0f7.tar
gsoc2013-evolution-054c0881696a85f537e93b4950a28f505a3dc0f7.tar.gz
gsoc2013-evolution-054c0881696a85f537e93b4950a28f505a3dc0f7.tar.bz2
gsoc2013-evolution-054c0881696a85f537e93b4950a28f505a3dc0f7.tar.lz
gsoc2013-evolution-054c0881696a85f537e93b4950a28f505a3dc0f7.tar.xz
gsoc2013-evolution-054c0881696a85f537e93b4950a28f505a3dc0f7.tar.zst
gsoc2013-evolution-054c0881696a85f537e93b4950a28f505a3dc0f7.zip
BugĀ 589153 - Use GtkBuilder instead of libglade
Diffstat (limited to 'filter/e-rule-editor.c')
-rw-r--r--filter/e-rule-editor.c146
1 files changed, 56 insertions, 90 deletions
diff --git a/filter/e-rule-editor.c b/filter/e-rule-editor.c
index 59b0d5de07..119c27a04d 100644
--- a/filter/e-rule-editor.c
+++ b/filter/e-rule-editor.c
@@ -33,6 +33,7 @@
#include "e-util/e-error.h"
#include "e-util/e-util-private.h"
+#include "e-util/e-util.h"
#include "e-rule-editor.h"
@@ -693,17 +694,14 @@ e_rule_editor_new (ERuleContext *context,
const gchar *label)
{
ERuleEditor *editor = (ERuleEditor *) g_object_new (E_TYPE_RULE_EDITOR, NULL);
- GladeXML *gui;
- gchar *filter_glade = g_build_filename (EVOLUTION_GLADEDIR,
- "filter.glade",
- NULL);
-
- gui = glade_xml_new (filter_glade, "rule_editor", NULL);
- g_free (filter_glade);
- e_rule_editor_construct (editor, context, gui, source, label);
- gtk_widget_hide (glade_xml_get_widget (gui, "label17"));
- gtk_widget_hide (glade_xml_get_widget (gui, "filter_source_combobox"));
- g_object_unref (gui);
+ GtkBuilder *builder;
+
+ builder = gtk_builder_new ();
+ e_load_ui_builder_definition (builder, "filter.ui");
+ e_rule_editor_construct (editor, context, builder, source, label);
+ gtk_widget_hide (e_builder_get_widget (builder, "label17"));
+ gtk_widget_hide (e_builder_get_widget (builder, "filter_source_combobox"));
+ g_object_unref (builder);
return editor;
}
@@ -765,7 +763,7 @@ double_click (GtkTreeView *treeview, GtkTreePath *path, GtkTreeViewColumn *colum
static void
rule_able_toggled (GtkCellRendererToggle *renderer,
- gchar *arg1,
+ gchar *path_string,
gpointer user_data)
{
GtkWidget *table = user_data;
@@ -774,7 +772,7 @@ rule_able_toggled (GtkCellRendererToggle *renderer,
GtkTreePath *path;
GtkTreeIter iter;
- path = gtk_tree_path_new_from_string (arg1);
+ path = gtk_tree_path_new_from_string (path_string);
model = gtk_tree_view_get_model (GTK_TREE_VIEW (table));
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (table));
@@ -792,83 +790,27 @@ rule_able_toggled (GtkCellRendererToggle *renderer,
gtk_tree_path_free (path);
}
-GtkWidget *
-rule_editor_treeview_new (gchar *widget_name,
- gchar *string1,
- gchar *string2,
- gint int1,
- gint int2);
-
-GtkWidget *
-rule_editor_treeview_new (gchar *widget_name,
- gchar *string1,
- gchar *string2,
- gint int1,
- gint int2)
-{
- GtkWidget *table, *scrolled;
- GtkTreeSelection *selection;
- GtkCellRenderer *renderer;
- GtkListStore *model;
- GtkTreeViewColumn *column;
-
- scrolled = gtk_scrolled_window_new (NULL, NULL);
- gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled), GTK_SHADOW_IN);
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled),
- GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
-
- model = gtk_list_store_new (3, G_TYPE_STRING, G_TYPE_POINTER, G_TYPE_BOOLEAN);
- table = gtk_tree_view_new_with_model ((GtkTreeModel *) model);
- gtk_tree_view_set_headers_visible ((GtkTreeView *) table, FALSE);
-
- renderer = gtk_cell_renderer_toggle_new ();
- g_object_set (G_OBJECT (renderer), "activatable", TRUE, NULL);
- gtk_tree_view_insert_column_with_attributes ((GtkTreeView *) table, -1,
- _("Enabled"), renderer,
- "active", 2, NULL);
- g_signal_connect (renderer, "toggled", G_CALLBACK (rule_able_toggled), table);
-
- /* hide enable column by default */
- column = gtk_tree_view_get_column (GTK_TREE_VIEW (table), 0);
- gtk_tree_view_column_set_visible (column, FALSE);
-
- renderer = gtk_cell_renderer_text_new ();
- gtk_tree_view_insert_column_with_attributes ((GtkTreeView *) table, -1,
- _("Rule name"), renderer,
- "text", 0, NULL);
-
- selection = gtk_tree_view_get_selection ((GtkTreeView *) table);
- gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
-
- gtk_container_add (GTK_CONTAINER (scrolled), table);
-
- g_object_set_data ((GObject *) scrolled, "table", table);
- g_object_set_data ((GObject *) scrolled, "model", model);
-
- gtk_widget_show (scrolled);
- gtk_widget_show (table);
-
- g_object_unref (model);
-
- return scrolled;
-}
-
void
e_rule_editor_construct (ERuleEditor *editor,
ERuleContext *context,
- GladeXML *gui,
+ GtkBuilder *builder,
const gchar *source,
const gchar *label)
{
- GtkWidget *w;
+ GtkWidget *widget;
GtkWidget *action_area;
GtkWidget *content_area;
+ GtkTreeViewColumn *column;
+ GtkCellRenderer *renderer;
+ GtkTreeSelection *selection;
+ GObject *object;
+ GList *list;
gint i;
gchar *tmp;
g_return_if_fail (E_IS_RULE_EDITOR (editor));
g_return_if_fail (E_IS_RULE_CONTEXT (context));
- g_return_if_fail (GLADE_IS_XML (gui));
+ g_return_if_fail (GTK_IS_BUILDER (builder));
editor->context = g_object_ref (context);
@@ -880,28 +822,52 @@ e_rule_editor_construct (ERuleEditor *editor,
gtk_widget_realize ((GtkWidget *) editor);
gtk_container_set_border_width (GTK_CONTAINER (action_area), 12);
- w = glade_xml_get_widget(gui, "rule_editor");
- gtk_box_pack_start (GTK_BOX (content_area), w, TRUE, TRUE, 3);
+ widget = e_builder_get_widget (builder, "rule_editor");
+ gtk_box_pack_start (GTK_BOX (content_area), widget, TRUE, TRUE, 0);
for (i = 0; i < BUTTON_LAST; i++) {
- editor->priv->buttons[i] = (GtkButton *) (w = glade_xml_get_widget (gui, edit_buttons[i].name));
- g_signal_connect (w, "clicked", edit_buttons[i].func, editor);
+ widget = e_builder_get_widget (builder, edit_buttons[i].name);
+ editor->priv->buttons[i] = GTK_BUTTON (widget);
+ g_signal_connect (
+ widget, "clicked",
+ G_CALLBACK (edit_buttons[i].func), editor);
}
- w = glade_xml_get_widget (gui, "rule_list");
- editor->list = (GtkTreeView *) g_object_get_data ((GObject *) w, "table");
- editor->model = (GtkListStore *) g_object_get_data ((GObject *) w, "model");
+ object = gtk_builder_get_object (builder, "rule_tree_view");
+ editor->list = GTK_TREE_VIEW (object);
+
+ column = gtk_tree_view_get_column (GTK_TREE_VIEW (object), 0);
+ list = gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (column));
+ renderer = GTK_CELL_RENDERER (list->data);
+ g_warn_if_fail (GTK_IS_CELL_RENDERER_TOGGLE (renderer));
+
+ g_signal_connect (
+ renderer, "toggled",
+ G_CALLBACK (rule_able_toggled), editor->list);
+
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (object));
+ gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
+
+ object = gtk_builder_get_object (builder, "rule_list_store");
+ editor->model = GTK_LIST_STORE (object);
- g_signal_connect (editor->list, "cursor-changed", G_CALLBACK (cursor_changed), editor);
- g_signal_connect (editor->list, "row-activated", G_CALLBACK (double_click), editor);
+ g_signal_connect (
+ editor->list, "cursor-changed",
+ G_CALLBACK (cursor_changed), editor);
+ g_signal_connect (
+ editor->list, "row-activated",
+ G_CALLBACK (double_click), editor);
- w = glade_xml_get_widget (gui, "rule_label");
+ widget = e_builder_get_widget (builder, "rule_label");
tmp = alloca(strlen(label)+8);
sprintf(tmp, "<b>%s</b>", label);
- gtk_label_set_label((GtkLabel *)w, tmp);
- gtk_label_set_mnemonic_widget ((GtkLabel *) w, (GtkWidget *) editor->list);
+ gtk_label_set_label (GTK_LABEL (widget), tmp);
+ gtk_label_set_mnemonic_widget (
+ GTK_LABEL (widget), GTK_WIDGET (editor->list));
- g_signal_connect (editor, "response", G_CALLBACK (editor_response), editor);
+ g_signal_connect (
+ editor, "response",
+ G_CALLBACK (editor_response), editor);
rule_editor_set_source (editor, source);
gtk_dialog_set_has_separator ((GtkDialog *) editor, FALSE);