aboutsummaryrefslogtreecommitdiffstats
path: root/widgets/menus
diff options
context:
space:
mode:
Diffstat (limited to 'widgets/menus')
-rw-r--r--widgets/menus/gal-define-views-dialog.c262
-rw-r--r--widgets/menus/gal-define-views-dialog.h7
-rw-r--r--widgets/menus/gal-define-views.glade366
3 files changed, 332 insertions, 303 deletions
diff --git a/widgets/menus/gal-define-views-dialog.c b/widgets/menus/gal-define-views-dialog.c
index 3630780817..54dff638dd 100644
--- a/widgets/menus/gal-define-views-dialog.c
+++ b/widgets/menus/gal-define-views-dialog.c
@@ -24,9 +24,9 @@
#include <config.h>
#include <gtk/gtk.h>
-
-#include "table/e-table-scrolled.h"
+#include <gtk/gtklabel.h>
#include <glib/gi18n.h>
+
#include "e-util/e-util.h"
#include "e-util/e-util-private.h"
@@ -49,9 +49,17 @@ enum {
PROP_COLLECTION
};
+enum {
+ COL_GALVIEW_NAME,
+ COL_GALVIEW_DATA
+};
+
typedef struct {
char *title;
- ETableModel *model;
+
+ GtkTreeView *treeview;
+ GtkTreeModel *model;
+
GalDefineViewsDialog *names;
} GalDefineViewsDialogChild;
@@ -79,51 +87,44 @@ gal_define_views_dialog_class_init (GalDefineViewsDialogClass *klass)
G_PARAM_READWRITE));
}
-/* ETable creation */
-#define SPEC "<ETableSpecification cursor-mode=\"line\" draw-grid=\"true\" selection-mode=\"single\" gettext-domain=\"" GETTEXT_PACKAGE "\">" \
- "<ETableColumn model_col= \"0\" _title=\"Name\" expansion=\"1.0\" minimum_width=\"18\" resizable=\"true\" cell=\"string\" compare=\"string\"/>" \
- "<ETableState> <column source=\"0\"/> <grouping> </grouping> </ETableState>" \
- "</ETableSpecification>"
-
-/* For use from libglade. */
-GtkWidget *gal_define_views_dialog_create_etable(char *name, char *string1, char *string2, int int1, int int2);
-
-GtkWidget *
-gal_define_views_dialog_create_etable(char *name, char *string1, char *string2, int int1, int int2)
-{
- GtkWidget *table;
- ETableModel *model;
- model = gal_define_views_model_new();
- table = e_table_scrolled_new(model, NULL, SPEC, NULL);
- g_object_set_data(G_OBJECT (table), "GalDefineViewsDialog::model", model);
- return table;
-}
-
/* Button callbacks */
static void
-gdvd_button_new_dialog_callback(GtkWidget *widget, int id, GalDefineViewsDialog *dialog)
+gdvd_button_new_dialog_callback (GtkWidget *widget, int id, GalDefineViewsDialog *dialog)
{
gchar *name;
+ GtkTreeIter iter;
GalView *view;
+ GalViewCollectionItem *item;
GalViewFactory *factory;
+
switch (id) {
case GTK_RESPONSE_OK:
- g_object_get(widget,
+ g_object_get (widget,
"name", &name,
"factory", &factory,
NULL);
+
if (name && factory) {
g_strchomp(name);
if (*name != '\0') {
- view = gal_view_factory_new_view(factory, name);
- gal_define_views_model_append(GAL_DEFINE_VIEWS_MODEL(dialog->model), view);
- gal_view_edit(view, GTK_WINDOW (dialog));
- g_object_unref(view);
+ view = gal_view_factory_new_view (factory, name);
+ gal_view_collection_append(dialog->collection, view);
+
+ item = dialog->collection->view_data[dialog->collection->view_count-1];
+ gtk_list_store_append (GTK_LIST_STORE (dialog->model), &iter);
+ gtk_list_store_set (GTK_LIST_STORE (dialog->model), &iter,
+ COL_GALVIEW_NAME, name,
+ COL_GALVIEW_DATA, item,
+ -1);
+
+ g_warning ("Built-in: %d", item->built_in);
+ gal_view_edit (view, GTK_WINDOW (dialog));
+ g_object_unref (view);
}
}
- g_object_unref(factory);
- g_free(name);
+ g_object_unref (factory);
+ g_free (name);
break;
}
gtk_widget_destroy (widget);
@@ -132,29 +133,24 @@ gdvd_button_new_dialog_callback(GtkWidget *widget, int id, GalDefineViewsDialog
static void
gdvd_button_new_callback(GtkWidget *widget, GalDefineViewsDialog *dialog)
{
- GtkWidget *view_new_dialog = gal_view_new_dialog_new(dialog->collection);
+ GtkWidget *view_new_dialog = gal_view_new_dialog_new (dialog->collection);
gtk_window_set_transient_for (GTK_WINDOW (view_new_dialog), GTK_WINDOW (dialog));
- g_signal_connect(view_new_dialog, "response",
- G_CALLBACK(gdvd_button_new_dialog_callback), dialog);
- gtk_widget_show(view_new_dialog);
+ g_signal_connect (view_new_dialog, "response",
+ G_CALLBACK (gdvd_button_new_dialog_callback), dialog);
+ gtk_widget_show (view_new_dialog);
}
static void
gdvd_button_modify_callback(GtkWidget *widget, GalDefineViewsDialog *dialog)
{
- int row;
- GtkWidget *scrolled;
- ETable *etable;
-
- scrolled = glade_xml_get_widget(dialog->gui, "custom-table");
- etable = e_table_scrolled_get_table(E_TABLE_SCROLLED(scrolled));
- row = e_table_get_cursor_row (E_TABLE(etable));
-
- if (row != -1) {
- GalView *view;
- view = gal_define_views_model_get_view(GAL_DEFINE_VIEWS_MODEL(dialog->model),
- row);
- gal_view_edit(view, GTK_WINDOW (dialog));
+ GtkTreeIter iter;
+ GalViewCollectionItem *item;
+
+ if (gtk_tree_selection_get_selected (gtk_tree_view_get_selection (dialog->treeview),
+ &dialog->model,
+ &iter)) {
+ gtk_tree_model_get (dialog->model, &iter, COL_GALVIEW_DATA, &item, -1);
+ gal_view_edit (item->view, GTK_WINDOW (dialog));
}
}
@@ -162,18 +158,35 @@ static void
gdvd_button_delete_callback(GtkWidget *widget, GalDefineViewsDialog *dialog)
{
int row;
- GtkWidget *scrolled;
- ETable *etable;
-
- scrolled = glade_xml_get_widget(dialog->gui, "custom-table");
- etable = e_table_scrolled_get_table(E_TABLE_SCROLLED(scrolled));
- row = e_table_get_cursor_row (E_TABLE(etable));
-
- if (row != -1) {
- gal_define_views_model_delete_view(GAL_DEFINE_VIEWS_MODEL(dialog->model),
- row);
+ GtkTreeIter iter;
+ GtkTreePath *path;
+ GtkTreeSelection *selection;
+ GalViewCollectionItem *item;
+
+ selection = gtk_tree_view_get_selection (dialog->treeview);
+
+ if (gtk_tree_selection_get_selected (selection,
+ &dialog->model,
+ &iter)) {
+ gtk_tree_model_get (dialog->model, &iter, COL_GALVIEW_DATA, &item, -1);
+
+ for (row=0; row<dialog->collection->view_count; row++) {
+ if (item == dialog->collection->view_data[row]) {
+ gal_view_collection_delete_view (dialog->collection, row);
+ path = gtk_tree_model_get_path (dialog->model, &iter);
+ gtk_list_store_remove (GTK_LIST_STORE (dialog->model), &iter);
+
+ if (gtk_tree_path_prev (path)) {
+ gtk_tree_model_get_iter (dialog->model, &iter, path);
+ } else {
+ gtk_tree_model_get_iter_first (dialog->model, &iter);
+ }
+
+ gtk_tree_selection_select_iter (selection, &iter);
+ break;
+ }
+ }
}
-
}
#if 0
@@ -195,41 +208,36 @@ gdvd_button_copy_callback(GtkWidget *widget, GalDefineViewsDialog *dialog)
}
#endif
-
+
static void
-gdvd_connect_signal(GalDefineViewsDialog *dialog, char *widget_name, char *signal, GCallback handler)
+gdvd_cursor_changed_callback (GtkWidget *widget, GalDefineViewsDialog *dialog)
{
- GtkWidget *widget;
+ GtkWidget *button;
+ GtkTreeIter iter;
+ GalViewCollectionItem *item;
- widget = glade_xml_get_widget(dialog->gui, widget_name);
+ if (gtk_tree_selection_get_selected (gtk_tree_view_get_selection (dialog->treeview),
+ &dialog->model,
+ &iter)) {
+ gtk_tree_model_get (dialog->model, &iter, COL_GALVIEW_DATA, &item, -1);
- if (widget)
- g_signal_connect(widget, signal, handler, dialog);
-}
+ button = glade_xml_get_widget (dialog->gui, "button-delete");
+ gtk_widget_set_sensitive (GTK_WIDGET (button), !item->built_in);
-static void
-etable_selection_change_forall_cb (int row, GalDefineViewsDialog *dialog)
-{
- if (row != -1) {
- GalViewCollectionItem *item = gal_view_collection_get_view_item (dialog->collection, row);
-
- if (item) {
- gtk_widget_set_sensitive (glade_xml_get_widget (dialog->gui, "button-delete"),
- !item->built_in);
- if (GAL_VIEW_GET_CLASS (item->view)->edit)
- gtk_widget_set_sensitive (glade_xml_get_widget (dialog->gui, "button-modify"),
- !item->built_in);
- else
- gtk_widget_set_sensitive (glade_xml_get_widget (dialog->gui, "button-modify"),
- FALSE);
- }
+ button = glade_xml_get_widget (dialog->gui, "button-modify");
+ gtk_widget_set_sensitive (GTK_WIDGET (button), !item->built_in);
}
}
static void
-etable_selection_change (ETable *etable, GalDefineViewsDialog *dialog)
+gdvd_connect_signal(GalDefineViewsDialog *dialog, char *widget_name, char *signal, GCallback handler)
{
- e_table_selected_row_foreach (etable, (EForeachFunc) etable_selection_change_forall_cb, dialog);
+ GtkWidget *widget;
+
+ widget = glade_xml_get_widget (dialog->gui, widget_name);
+
+ if (widget)
+ g_signal_connect (widget, signal, handler, dialog);
}
static void
@@ -243,7 +251,7 @@ gal_define_views_dialog_init (GalDefineViewsDialog *dialog)
{
GladeXML *gui;
GtkWidget *widget;
- GtkWidget *etable;
+
gchar *filename = g_build_filename (EVOLUTION_GLADEDIR,
"gal-define-views.glade",
NULL);
@@ -258,41 +266,35 @@ gal_define_views_dialog_init (GalDefineViewsDialog *dialog)
if (!widget) {
return;
}
- g_object_ref(widget);
+
+ g_object_ref (widget);
gtk_container_remove (GTK_CONTAINER (widget->parent), widget);
- gtk_window_set_default_size(GTK_WINDOW(dialog), 360, 270);
- gtk_container_set_border_width(GTK_CONTAINER(dialog), 6);
- gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), widget, TRUE, TRUE, 0);
+ gtk_window_set_default_size (GTK_WINDOW (dialog), 360, 270);
+ gtk_container_set_border_width (GTK_CONTAINER (dialog), 6);
+ gtk_container_set_border_width (GTK_CONTAINER (widget), 6);
+ gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), widget, TRUE, TRUE, 0);
g_object_unref(widget);
gtk_dialog_add_buttons (GTK_DIALOG (dialog),
GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE,
NULL);
+ dialog->treeview = GTK_TREE_VIEW (glade_xml_get_widget (dialog->gui, "treeview1"));
+ gtk_tree_view_set_reorderable (GTK_TREE_VIEW (dialog->treeview), FALSE);
+ gtk_tree_view_set_headers_visible (dialog->treeview, TRUE);
+
+ gtk_window_set_policy (GTK_WINDOW (dialog), FALSE, TRUE, FALSE);
+
gdvd_connect_signal(dialog, "button-new", "clicked", G_CALLBACK(gdvd_button_new_callback));
gdvd_connect_signal(dialog, "button-modify", "clicked", G_CALLBACK(gdvd_button_modify_callback));
gdvd_connect_signal(dialog, "button-delete", "clicked", G_CALLBACK(gdvd_button_delete_callback));
#if 0
gdvd_connect_signal(dialog, "button-copy", "clicked", G_CALLBACK(gdvd_button_copy_callback));
#endif
-
- dialog->model = NULL;
- etable = glade_xml_get_widget(dialog->gui, "custom-table");
- if (etable) {
- dialog->model = g_object_get_data(G_OBJECT (etable), "GalDefineViewsDialog::model");
- g_object_set(dialog->model,
- "collection", dialog->collection,
- NULL);
- g_signal_connect (e_table_scrolled_get_table (E_TABLE_SCROLLED (etable)),
- "selection_change",
- G_CALLBACK (etable_selection_change), dialog);
- gtk_widget_show_all (etable);
- }
-
- gtk_window_set_policy(GTK_WINDOW(dialog), FALSE, TRUE, FALSE);
-
+ gdvd_connect_signal(dialog, "treeview1", "cursor-changed", G_CALLBACK(gdvd_cursor_changed_callback));
g_signal_connect (dialog, "response", G_CALLBACK (dialog_response), NULL);
+ gtk_widget_show (GTK_WIDGET (dialog));
}
static void
@@ -312,12 +314,52 @@ static void
gal_define_views_dialog_set_collection(GalDefineViewsDialog *dialog,
GalViewCollection *collection)
{
+ int i;
+ GtkListStore *store;
+ GtkCellRenderer *renderer;
dialog->collection = collection;
- if (dialog->model) {
- g_object_set(dialog->model,
- "collection", collection,
- NULL);
+
+ store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_POINTER);
+
+ for (i=0; i<collection->view_count; i++) {
+ GalViewCollectionItem *item = collection->view_data[i];
+ GtkTreeIter iter;
+
+ /* hide built in views */
+ /*if (item->built_in == 1)
+ continue;*/
+
+ char *title = NULL;
+ title = e_str_without_underscores (item->title);
+
+ gtk_list_store_append (store, &iter);
+ gtk_list_store_set (store, &iter,
+ COL_GALVIEW_NAME, title,
+ COL_GALVIEW_DATA, item,
+ -1);
+
+ g_free (title);
}
+
+ gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (store),
+ COL_GALVIEW_NAME, GTK_SORT_ASCENDING);
+
+ /* attaching treeview to model */
+ gtk_tree_view_set_model (dialog->treeview, GTK_TREE_MODEL (store));
+ gtk_tree_view_set_search_column (dialog->treeview, COL_GALVIEW_NAME);
+
+ dialog->model = GTK_TREE_MODEL (store);
+
+ renderer = gtk_cell_renderer_text_new ();
+ gtk_tree_view_insert_column_with_attributes (dialog->treeview,
+ COL_GALVIEW_NAME, _("Name"),
+ renderer, "text", COL_GALVIEW_NAME,
+ NULL);
+
+ /* set sort column */
+ gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (dialog->model),
+ COL_GALVIEW_NAME, GTK_SORT_ASCENDING);
+
if (dialog->gui) {
GtkWidget *widget = glade_xml_get_widget(dialog->gui, "label-views");
if (widget && GTK_IS_LABEL (widget)) {
@@ -349,7 +391,7 @@ GtkWidget*
gal_define_views_dialog_new (GalViewCollection *collection)
{
GtkWidget *widget = g_object_new (GAL_DEFINE_VIEWS_DIALOG_TYPE, NULL);
- gal_define_views_dialog_set_collection(GAL_DEFINE_VIEWS_DIALOG (widget), collection);
+ gal_define_views_dialog_set_collection (GAL_DEFINE_VIEWS_DIALOG (widget), collection);
return widget;
}
diff --git a/widgets/menus/gal-define-views-dialog.h b/widgets/menus/gal-define-views-dialog.h
index 52636f7444..0cf53bb2a6 100644
--- a/widgets/menus/gal-define-views-dialog.h
+++ b/widgets/menus/gal-define-views-dialog.h
@@ -25,8 +25,10 @@
#define __GAL_DEFINE_VIEWS_DIALOG_H__
#include <gtk/gtkdialog.h>
+#include <gtk/gtktreeview.h>
+#include <gtk/gtktreemodel.h>
#include <glade/glade.h>
-#include <table/e-table-model.h>
+
#include <widgets/menus/gal-view-collection.h>
#ifdef __cplusplus
@@ -57,7 +59,8 @@ struct _GalDefineViewsDialog
/* item specific fields */
GladeXML *gui;
- ETableModel *model;
+ GtkTreeView *treeview;
+ GtkTreeModel *model;
GalViewCollection *collection;
};
diff --git a/widgets/menus/gal-define-views.glade b/widgets/menus/gal-define-views.glade
index a863632208..26976c4857 100644
--- a/widgets/menus/gal-define-views.glade
+++ b/widgets/menus/gal-define-views.glade
@@ -1,192 +1,176 @@
-<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
-<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
-
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
+<!--*- mode: xml -*-->
<glade-interface>
-
-<widget class="GtkDialog" id="dialog1">
- <property name="title" translatable="yes">Define Views for &quot;%s&quot;</property>
- <property name="type">GTK_WINDOW_TOPLEVEL</property>
- <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
- <property name="modal">False</property>
- <property name="resizable">True</property>
- <property name="destroy_with_parent">False</property>
- <property name="has_separator">True</property>
-
- <child internal-child="vbox">
- <widget class="GtkVBox" id="dialog-vbox1">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">6</property>
-
- <child internal-child="action_area">
- <widget class="GtkHButtonBox" id="dialog-action_area1">
- <property name="visible">True</property>
- <property name="layout_style">GTK_BUTTONBOX_END</property>
-
- <child>
- <widget class="GtkButton" id="button7">
- <property name="visible">True</property>
- <property name="can_default">True</property>
- <property name="can_focus">True</property>
- <property name="label">gtk-close</property>
- <property name="use_stock">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="response_id">-5</property>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="pack_type">GTK_PACK_END</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkTable" id="table-top">
- <property name="visible">True</property>
- <property name="n_rows">4</property>
- <property name="n_columns">1</property>
- <property name="homogeneous">False</property>
- <property name="row_spacing">6</property>
- <property name="column_spacing">6</property>
-
- <child>
- <widget class="GtkHBox" id="hbox1">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">6</property>
-
- <child>
- <widget class="Custom" id="custom-table">
- <property name="visible">True</property>
- <property name="creation_function">gal_define_views_dialog_create_etable</property>
- <property name="int1">0</property>
- <property name="int2">0</property>
- <property name="last_modification_time">Fri, 10 Nov 2000 16:37:39 GMT</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkVBox" id="vbox1">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">6</property>
-
- <child>
- <widget class="GtkButton" id="button-new">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label">gtk-new</property>
- <property name="use_stock">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkButton" id="button-modify">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">_Edit...</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkButton" id="button-delete">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label">gtk-delete</property>
- <property name="use_stock">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="left_attach">0</property>
- <property name="right_attach">1</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkHButtonBox" id="hbuttonbox1">
- <property name="visible">True</property>
- <property name="layout_style">GTK_BUTTONBOX_END</property>
- <property name="spacing">6</property>
- </widget>
- <packing>
- <property name="left_attach">0</property>
- <property name="right_attach">1</property>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
- <property name="x_options">fill</property>
- <property name="y_options">fill</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkLabel" id="label-views">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Define Views for %s</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- </widget>
- <packing>
- <property name="left_attach">0</property>
- <property name="right_attach">1</property>
- <property name="top_attach">0</property>
- <property name="bottom_attach">1</property>
- <property name="x_options">fill</property>
- <property name="y_options"></property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">12</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
- </widget>
- </child>
-</widget>
-
-</glade-interface>
+ <widget class="GtkDialog" id="dialog1">
+ <property name="title" translatable="yes">Define Views for "%s"</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+ <child internal-child="vbox">
+ <widget class="GtkVBox" id="dialog-vbox1">
+ <property name="visible">True</property>
+ <property name="spacing">6</property>
+ <child>
+ <widget class="GtkTable" id="table-top">
+ <property name="visible">True</property>
+ <property name="n_rows">2</property>
+ <property name="n_columns">1</property>
+ <property name="column_spacing">6</property>
+ <property name="row_spacing">6</property>
+ <child>
+ <widget class="GtkLabel" id="label-views">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Define Views for %s</property>
+ </widget>
+ <packing>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="hbox1">
+ <property name="visible">True</property>
+ <property name="border_width">6</property>
+ <property name="spacing">6</property>
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <child>
+ <widget class="GtkTreeView" id="treeview1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="headers_clickable">True</property>
+ <property name="reorderable">True</property>
+ <property name="fixed_height_mode">True</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkVButtonBox" id="vbuttonbox1">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="spacing">6</property>
+ <property name="layout_style">GTK_BUTTONBOX_START</property>
+ <child>
+ <widget class="GtkButton" id="button-new">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-new</property>
+ <property name="use_stock">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkButton" id="button-modify">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <child>
+ <widget class="GtkAlignment" id="alignment33">
+ <property name="visible">True</property>
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
+ <child>
+ <widget class="GtkHBox" id="hbox224">
+ <property name="visible">True</property>
+ <property name="spacing">2</property>
+ <child>
+ <widget class="GtkImage" id="image8">
+ <property name="visible">True</property>
+ <property name="stock">gtk-properties</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label557">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Edit</property>
+ <property name="use_underline">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkButton" id="button-delete">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-delete</property>
+ <property name="use_stock">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">12</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child internal-child="action_area">
+ <widget class="GtkHButtonBox" id="dialog-action_area1">
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
+ <child>
+ <widget class="GtkButton" id="button7">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="label">gtk-close</property>
+ <property name="use_stock">True</property>
+ <property name="response_id">-5</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+</glade-interface> \ No newline at end of file