summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Valavanis <valavanisalex@gmail.com>2011-07-11 08:19:35 +0000
committerAlex Valavanis <valavanisalex@gmail.com>2011-07-11 08:19:35 +0000
commit476773dea7a4bf2136beba4b31f44a0dca16fa40 (patch)
treea30d35fb8ca8e5beb0bff27e178fb522773799e2
parentMerge from trunk. (diff)
downloadinkscape-476773dea7a4bf2136beba4b31f44a0dca16fa40.tar.gz
inkscape-476773dea7a4bf2136beba4b31f44a0dca16fa40.zip
Drop some unused gdl files that cause build failure on Windows
(bzr r10440)
-rw-r--r--src/libgdl/gdl-dock-layout.c1437
-rw-r--r--src/libgdl/gdl-dock-layout.h98
-rw-r--r--src/libgdl/gdl.h1
-rw-r--r--src/libgdl/test-combo-button.c111
-rw-r--r--src/libgdl/test-dock.c314
5 files changed, 0 insertions, 1961 deletions
diff --git a/src/libgdl/gdl-dock-layout.c b/src/libgdl/gdl-dock-layout.c
deleted file mode 100644
index 7c5279507..000000000
--- a/src/libgdl/gdl-dock-layout.c
+++ /dev/null
@@ -1,1437 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
- *
- * This file is part of the GNOME Devtools Libraries.
- *
- * Copyright (C) 2002 Gustavo Giráldez <gustavo.giraldez@gmx.net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "gdl-i18n.h"
-#include <string.h>
-#include <stdlib.h>
-#include <libxml/parser.h>
-#include <gtk/gtk.h>
-
-#include "gdl-dock-layout.h"
-#include "gdl-tools.h"
-#include "gdl-dock-placeholder.h"
-
-
-/* ----- Private variables ----- */
-
-enum {
- PROP_0,
- PROP_MASTER,
- PROP_DIRTY
-};
-
-#define ROOT_ELEMENT "dock-layout"
-#define DEFAULT_LAYOUT "__default__"
-#define LAYOUT_ELEMENT_NAME "layout"
-#define NAME_ATTRIBUTE_NAME "name"
-
-#define LAYOUT_UI_FILE "layout.ui"
-
-enum {
- COLUMN_NAME,
- COLUMN_SHOW,
- COLUMN_LOCKED,
- COLUMN_ITEM
-};
-
-#define COLUMN_EDITABLE COLUMN_SHOW
-
-struct _GdlDockLayoutPrivate {
- xmlDocPtr doc;
-
- /* layout list models */
- GtkListStore *items_model;
- GtkListStore *layouts_model;
-
- /* idle control */
- gboolean idle_save_pending;
-};
-
-typedef struct _GdlDockLayoutUIData GdlDockLayoutUIData;
-
-struct _GdlDockLayoutUIData {
- GdlDockLayout *layout;
- GtkWidget *locked_check;
- GtkTreeSelection *selection;
-};
-
-
-/* ----- Private prototypes ----- */
-
-static void gdl_dock_layout_class_init (GdlDockLayoutClass *klass);
-
-static void gdl_dock_layout_instance_init (GdlDockLayout *layout);
-
-static void gdl_dock_layout_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec);
-
-static void gdl_dock_layout_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec);
-
-static void gdl_dock_layout_dispose (GObject *object);
-
-static void gdl_dock_layout_build_doc (GdlDockLayout *layout);
-
-static xmlNodePtr gdl_dock_layout_find_layout (GdlDockLayout *layout,
- const gchar *name);
-
-static void gdl_dock_layout_build_models (GdlDockLayout *layout);
-
-
-/* ----- Private implementation ----- */
-
-GDL_CLASS_BOILERPLATE (GdlDockLayout, gdl_dock_layout, GObject, G_TYPE_OBJECT);
-
-static void
-gdl_dock_layout_class_init (GdlDockLayoutClass *klass)
-{
- GObjectClass *g_object_class = (GObjectClass *) klass;
-
- g_object_class->set_property = gdl_dock_layout_set_property;
- g_object_class->get_property = gdl_dock_layout_get_property;
- g_object_class->dispose = gdl_dock_layout_dispose;
-
- g_object_class_install_property (
- g_object_class, PROP_MASTER,
- g_param_spec_object ("master", _("Master"),
- _("GdlDockMaster object which the layout object "
- "is attached to"),
- GDL_TYPE_DOCK_MASTER,
- G_PARAM_READWRITE));
-
- g_object_class_install_property (
- g_object_class, PROP_DIRTY,
- g_param_spec_boolean ("dirty", _("Dirty"),
- _("True if the layouts have changed and need to be "
- "saved to a file"),
- FALSE,
- G_PARAM_READABLE));
-}
-
-static void
-gdl_dock_layout_instance_init (GdlDockLayout *layout)
-{
- layout->master = NULL;
- layout->dirty = FALSE;
- layout->_priv = g_new0 (GdlDockLayoutPrivate, 1);
- layout->_priv->idle_save_pending = FALSE;
-
- gdl_dock_layout_build_models (layout);
-}
-
-static void
-gdl_dock_layout_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- GdlDockLayout *layout = GDL_DOCK_LAYOUT (object);
-
- switch (prop_id) {
- case PROP_MASTER:
- gdl_dock_layout_attach (layout, g_value_get_object (value));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- };
-}
-
-static void
-gdl_dock_layout_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- GdlDockLayout *layout = GDL_DOCK_LAYOUT (object);
-
- switch (prop_id) {
- case PROP_MASTER:
- g_value_set_object (value, layout->master);
- break;
- case PROP_DIRTY:
- g_value_set_boolean (value, layout->dirty);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- };
-}
-
-static void
-gdl_dock_layout_dispose (GObject *object)
-{
- GdlDockLayout *layout;
-
- g_return_if_fail (object != NULL);
- g_return_if_fail (GDL_IS_DOCK_LAYOUT (object));
-
- layout = GDL_DOCK_LAYOUT (object);
-
- if (layout->master)
- gdl_dock_layout_attach (layout, NULL);
-
- if (layout->_priv) {
- if (layout->_priv->idle_save_pending) {
- layout->_priv->idle_save_pending = FALSE;
- g_idle_remove_by_data (layout);
- }
-
- if (layout->_priv->doc) {
- xmlFreeDoc (layout->_priv->doc);
- layout->_priv->doc = NULL;
- }
-
- if (layout->_priv->items_model) {
- g_object_unref (layout->_priv->items_model);
- g_object_unref (layout->_priv->layouts_model);
- layout->_priv->items_model = NULL;
- layout->_priv->layouts_model = NULL;
- }
-
- xmlFreeDoc(layout->_priv->doc);
- g_free (layout->_priv);
- layout->_priv = NULL;
- }
-}
-
-static void
-gdl_dock_layout_build_doc (GdlDockLayout *layout)
-{
- g_return_if_fail (layout->_priv->doc == NULL);
-
- layout->_priv->doc = xmlNewDoc (BAD_CAST "1.0");
- layout->_priv->doc->children = xmlNewDocNode (layout->_priv->doc, NULL,
- BAD_CAST ROOT_ELEMENT, NULL);
-}
-
-static xmlNodePtr
-gdl_dock_layout_find_layout (GdlDockLayout *layout,
- const gchar *name)
-{
- xmlNodePtr node;
- gboolean found = FALSE;
-
- g_return_val_if_fail (layout != NULL, NULL);
-
- if (!layout->_priv->doc)
- return NULL;
-
- /* get document root */
- node = layout->_priv->doc->children;
- for (node = node->children; node; node = node->next) {
- xmlChar *layout_name;
-
- if (strcmp ((char*)node->name, LAYOUT_ELEMENT_NAME))
- /* skip non-layout element */
- continue;
-
- /* we want the first layout */
- if (!name)
- break;
-
- layout_name = xmlGetProp (node, BAD_CAST NAME_ATTRIBUTE_NAME);
- if (!strcmp (name, (char*)layout_name))
- found = TRUE;
- xmlFree (layout_name);
-
- if (found)
- break;
- };
- return node;
-}
-
-static void
-gdl_dock_layout_build_models (GdlDockLayout *layout)
-{
- if (!layout->_priv->items_model) {
- layout->_priv->items_model = gtk_list_store_new (4,
- G_TYPE_STRING,
- G_TYPE_BOOLEAN,
- G_TYPE_BOOLEAN,
- G_TYPE_POINTER);
- gtk_tree_sortable_set_sort_column_id (
- GTK_TREE_SORTABLE (layout->_priv->items_model),
- COLUMN_NAME, GTK_SORT_ASCENDING);
- }
-
- if (!layout->_priv->layouts_model) {
- layout->_priv->layouts_model = gtk_list_store_new (2, G_TYPE_STRING,
- G_TYPE_BOOLEAN);
- gtk_tree_sortable_set_sort_column_id (
- GTK_TREE_SORTABLE (layout->_priv->layouts_model),
- COLUMN_NAME, GTK_SORT_ASCENDING);
- }
-}
-
-static void
-build_list (GdlDockObject *object, GList **list)
-{
- /* add only items, not toplevels */
- if (GDL_IS_DOCK_ITEM (object))
- *list = g_list_prepend (*list, object);
-}
-
-static void
-update_items_model (GdlDockLayout *layout)
-{
- GList *items, *l;
- GtkTreeIter iter;
- GtkListStore *store;
- gchar *long_name;
- gboolean locked;
-
- g_return_if_fail (layout != NULL);
- g_return_if_fail (layout->_priv->items_model != NULL);
-
- if (!layout->master)
- return;
-
- /* build items list */
- items = NULL;
- gdl_dock_master_foreach (layout->master, (GFunc) build_list, &items);
-
- /* walk the current model */
- store = layout->_priv->items_model;
-
- /* update items model data after a layout load */
- if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter)) {
- gboolean valid = TRUE;
-
- while (valid) {
- GdlDockItem *item;
-
- gtk_tree_model_get (GTK_TREE_MODEL (store), &iter,
- COLUMN_ITEM, &item,
- -1);
- if (item) {
- /* look for the object in the items list */
- for (l = items; l && l->data != item; l = l->next);
-
- if (l) {
- /* found, update data */
- g_object_get (item,
- "long-name", &long_name,
- "locked", &locked,
- NULL);
- gtk_list_store_set (store, &iter,
- COLUMN_NAME, long_name,
- COLUMN_SHOW, GDL_DOCK_OBJECT_ATTACHED (item),
- COLUMN_LOCKED, locked,
- -1);
- g_free (long_name);
-
- /* remove the item from the linked list and keep on walking the model */
- items = g_list_delete_link (items, l);
- valid = gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter);
-
- } else {
- /* not found, which means the item has been removed */
- valid = gtk_list_store_remove (store, &iter);
-
- }
-
- } else {
- /* not a valid row */
- valid = gtk_list_store_remove (store, &iter);
- }
- }
- }
-
- /* add any remaining objects */
- for (l = items; l; l = l->next) {
- GdlDockObject *object = l->data;
-
- g_object_get (object,
- "long-name", &long_name,
- "locked", &locked,
- NULL);
- gtk_list_store_append (store, &iter);
- gtk_list_store_set (store, &iter,
- COLUMN_ITEM, object,
- COLUMN_NAME, long_name,
- COLUMN_SHOW, GDL_DOCK_OBJECT_ATTACHED (object),
- COLUMN_LOCKED, locked,
- -1);
- g_free (long_name);
- }
-
- g_list_free (items);
-}
-
-static void
-update_layouts_model (GdlDockLayout *layout)
-{
- GList *items, *l;
- GtkTreeIter iter;
-
- g_return_if_fail (layout != NULL);
- g_return_if_fail (layout->_priv->layouts_model != NULL);
-
- /* build layouts list */
- gtk_list_store_clear (layout->_priv->layouts_model);
- items = gdl_dock_layout_get_layouts (layout, FALSE);
- for (l = items; l; l = l->next) {
- gtk_list_store_append (layout->_priv->layouts_model, &iter);
- gtk_list_store_set (layout->_priv->layouts_model, &iter,
- COLUMN_NAME, l->data, COLUMN_EDITABLE, TRUE,
- -1);
- g_free (l->data);
- };
- g_list_free (items);
-}
-
-
-/* ------- UI functions & callbacks ------ */
-
-static void
-load_layout_cb (GtkWidget *w,
- gpointer data)
-{
- GdlDockLayoutUIData *ui_data = (GdlDockLayoutUIData *) data;
-
- GtkTreeModel *model;
- GtkTreeIter iter;
- GdlDockLayout *layout = ui_data->layout;
- gchar *name;
-
- g_return_if_fail (layout != NULL);
-
- if (gtk_tree_selection_get_selected (ui_data->selection, &model, &iter)) {
- gtk_tree_model_get (model, &iter,
- COLUMN_NAME, &name,
- -1);
- gdl_dock_layout_load_layout (layout, name);
- g_free (name);
- }
-}
-
-static void
-delete_layout_cb (GtkWidget *w, gpointer data)
-{
- GdlDockLayoutUIData *ui_data = (GdlDockLayoutUIData *) data;
-
- GtkTreeModel *model;
- GtkTreeIter iter;
- GdlDockLayout *layout = ui_data->layout;
- gchar *name;
-
- g_return_if_fail (layout != NULL);
-
- if (gtk_tree_selection_get_selected (ui_data->selection, &model, &iter)) {
- gtk_tree_model_get (model, &iter,
- COLUMN_NAME, &name,
- -1);
- gdl_dock_layout_delete_layout (layout, name);
- gtk_list_store_remove (GTK_LIST_STORE (model), &iter);
- g_free (name);
- };
-}
-
-static void
-show_toggled_cb (GtkCellRendererToggle *renderer,
- gchar *path_str,
- gpointer data)
-{
- GdlDockLayoutUIData *ui_data = (GdlDockLayoutUIData *) data;
-
- GdlDockLayout *layout = ui_data->layout;
- GtkTreeModel *model;
- GtkTreeIter iter;
- GtkTreePath *path = gtk_tree_path_new_from_string (path_str);
- gboolean value;
- GdlDockItem *item;
-
- g_return_if_fail (layout != NULL);
-
- model = GTK_TREE_MODEL (layout->_priv->items_model);
- gtk_tree_model_get_iter (model, &iter, path);
- gtk_tree_model_get (model, &iter,
- COLUMN_SHOW, &value,
- COLUMN_ITEM, &item,
- -1);
-
- value = !value;
- if (value)
- gdl_dock_item_show_item (item);
- else
- gdl_dock_item_hide_item (item);
-
- gtk_tree_path_free (path);
-}
-
-static void
-all_locked_toggled_cb (GtkWidget *widget,
- gpointer data)
-{
- GdlDockLayoutUIData *ui_data = (GdlDockLayoutUIData *) data;
- GdlDockMaster *master;
- gboolean locked;
-
- g_return_if_fail (ui_data->layout != NULL);
- master = ui_data->layout->master;
- g_return_if_fail (master != NULL);
-
- locked = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
- g_object_set (master, "locked", locked ? 1 : 0, NULL);
-}
-
-static void
-layout_ui_destroyed (GtkWidget *widget,
- gpointer user_data)
-{
- GdlDockLayoutUIData *ui_data;
-
- /* widget is the GtkContainer */
- ui_data = g_object_get_data (G_OBJECT (widget), "ui_data");
- if (ui_data) {
- if (ui_data->layout) {
- if (ui_data->layout->master)
- /* disconnet the notify handler */
- g_signal_handlers_disconnect_matched (ui_data->layout->master,
- G_SIGNAL_MATCH_DATA,
- 0, 0, NULL, NULL,
- ui_data);
-
- g_object_remove_weak_pointer (G_OBJECT (ui_data->layout),
- (gpointer *) &ui_data->layout);
- ui_data->layout = NULL;
- }
- g_object_set_data (G_OBJECT (widget), "ui_data", NULL);
- g_free (ui_data);
- }
-}
-
-static void
-master_locked_notify_cb (GdlDockMaster *master,
- GParamSpec *pspec,
- gpointer user_data)
-{
- GdlDockLayoutUIData *ui_data = (GdlDockLayoutUIData *) user_data;
- gint locked;
-
- g_object_get (master, "locked", &locked, NULL);
- if (locked == -1) {
- gtk_toggle_button_set_inconsistent (
- GTK_TOGGLE_BUTTON (ui_data->locked_check), TRUE);
- }
- else {
- gtk_toggle_button_set_inconsistent (
- GTK_TOGGLE_BUTTON (ui_data->locked_check), FALSE);
- gtk_toggle_button_set_active (
- GTK_TOGGLE_BUTTON (ui_data->locked_check), (locked == 1));
- }
-}
-
-static GtkBuilder *
-load_interface ()
-{
- GtkBuilder *gui;
- gchar *gui_file;
- GError* error = NULL;
-
- /* load ui */
- gui_file = g_build_filename (GDL_UIDIR, LAYOUT_UI_FILE, NULL);
- gui = gtk_builder_new();
- gtk_builder_add_from_file (gui, gui_file, &error);
- g_free (gui_file);
- if (error) {
- g_warning (_("Could not load layout user interface file '%s'"),
- LAYOUT_UI_FILE);
- g_object_unref (gui);
- g_error_free (error);
- return NULL;
- };
- return gui;
-}
-
-static GtkWidget *
-gdl_dock_layout_construct_items_ui (GdlDockLayout *layout)
-{
- GtkBuilder *gui;
- GtkWidget *dialog;
- GtkWidget *items_list;
- GtkCellRenderer *renderer;
- GtkTreeViewColumn *column;
-
- GdlDockLayoutUIData *ui_data;
-
- /* load the interface if it wasn't provided */
- gui = load_interface ();
-
- if (!gui)
- return NULL;
-
- /* get the container */
- dialog = GTK_WIDGET (gtk_builder_get_object (gui, "layout_dialog"));
-
- ui_data = g_new0 (GdlDockLayoutUIData, 1);
- ui_data->layout = layout;
- g_object_add_weak_pointer (G_OBJECT (layout),
- (gpointer *) &ui_data->layout);
- g_object_set_data (G_OBJECT (dialog), "ui_data", ui_data);
-
- /* get ui widget references */
- ui_data->locked_check = GTK_WIDGET (gtk_builder_get_object (gui, "locked_check"));
- items_list = GTK_WIDGET (gtk_builder_get_object(gui, "items_list"));
-
- /* locked check connections */
- g_signal_connect (ui_data->locked_check, "toggled",
- (GCallback) all_locked_toggled_cb, ui_data);
- if (layout->master) {
- g_signal_connect (layout->master, "notify::locked",
- (GCallback) master_locked_notify_cb, ui_data);
- /* force update now */
- master_locked_notify_cb (layout->master, NULL, ui_data);
- }
-
- /* set models */
- gtk_tree_view_set_model (GTK_TREE_VIEW (items_list),
- GTK_TREE_MODEL (layout->_priv->items_model));
-
- /* construct list views */
- renderer = gtk_cell_renderer_toggle_new ();
- g_signal_connect (renderer, "toggled",
- G_CALLBACK (show_toggled_cb), ui_data);
- column = gtk_tree_view_column_new_with_attributes (_("Visible"),
- renderer,
- "active", COLUMN_SHOW,
- NULL);
- gtk_tree_view_append_column (GTK_TREE_VIEW (items_list), column);
-
- renderer = gtk_cell_renderer_text_new ();
- column = gtk_tree_view_column_new_with_attributes (_("Item"),
- renderer,
- "text", COLUMN_NAME,
- NULL);
- gtk_tree_view_append_column (GTK_TREE_VIEW (items_list), column);
-
- /* connect signals */
- g_signal_connect (dialog, "destroy", (GCallback) layout_ui_destroyed, NULL);
-
- g_object_unref (gui);
-
- return dialog;
-}
-
-static void
-cell_edited_cb (GtkCellRendererText *cell,
- const gchar *path_string,
- const gchar *new_text,
- gpointer data)
-{
- GdlDockLayoutUIData *ui_data = data;
- GtkTreeModel *model;
- GtkTreePath *path;
- GtkTreeIter iter;
- gchar *name;
- xmlNodePtr node;
-
- model = GTK_TREE_MODEL (ui_data->layout->_priv->layouts_model);
- path = gtk_tree_path_new_from_string (path_string);
-
- gtk_tree_model_get_iter (model, &iter, path);
- gtk_tree_model_get (model, &iter, COLUMN_NAME, &name, -1);
-
- node = gdl_dock_layout_find_layout (ui_data->layout, name);
- g_free (name);
- g_return_if_fail (node != NULL);
-
- xmlSetProp (node, BAD_CAST NAME_ATTRIBUTE_NAME, BAD_CAST new_text);
- gtk_list_store_set (GTK_LIST_STORE (model), &iter, COLUMN_NAME, new_text,
- COLUMN_EDITABLE, TRUE, -1);
-
- gdl_dock_layout_save_layout (ui_data->layout, new_text);
-
- gtk_tree_path_free (path);
-}
-
-static GtkWidget *
-gdl_dock_layout_construct_layouts_ui (GdlDockLayout *layout)
-{
- GtkBuilder *gui;
- GtkWidget *container;
- GtkWidget *layouts_list;
- GtkCellRenderer *renderer;
- GtkTreeViewColumn *column;
- GtkWidget *load_button;
- GtkWidget *delete_button;
-
- GdlDockLayoutUIData *ui_data;
-
- /* load the interface if it wasn't provided */
- gui = load_interface ();
-
- if (!gui)
- return NULL;
-
- /* get the container */
- container = GTK_WIDGET (gtk_builder_get_object(gui, "layouts_vbox"));
-
- ui_data = g_new0 (GdlDockLayoutUIData, 1);
- ui_data->layout = layout;
- g_object_add_weak_pointer (G_OBJECT (layout),
- (gpointer *) &ui_data->layout);
- g_object_set_data (G_OBJECT (container), "ui-data", ui_data);
-
- /* get ui widget references */
- layouts_list = GTK_WIDGET (gtk_builder_get_object(gui, "layouts_list"));
-
- /* set models */
- gtk_tree_view_set_model (GTK_TREE_VIEW (layouts_list),
- GTK_TREE_MODEL (layout->_priv->layouts_model));
-
- /* construct list views */
- renderer = gtk_cell_renderer_text_new ();
- g_signal_connect (G_OBJECT (renderer), "edited",
- G_CALLBACK (cell_edited_cb), ui_data);
- column = gtk_tree_view_column_new_with_attributes (_("Name"), renderer,
- "text", COLUMN_NAME,
- "editable", COLUMN_EDITABLE,
- NULL);
- gtk_tree_view_append_column (GTK_TREE_VIEW (layouts_list), column);
-
- ui_data->selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (layouts_list));
-
- /* connect signals */
- load_button = GTK_WIDGET (gtk_builder_get_object(gui, "load_button"));
- delete_button = GTK_WIDGET (gtk_builder_get_object(gui, "delete_button"));
-
- g_signal_connect (load_button, "clicked", (GCallback) load_layout_cb, ui_data);
- g_signal_connect (delete_button, "clicked", (GCallback) delete_layout_cb, ui_data);
-
-
- g_signal_connect (container, "destroy", (GCallback) layout_ui_destroyed, NULL);
-
- g_object_unref (gui);
-
- return container;
-}
-
-/* ----- Save & Load layout functions --------- */
-
-#define GDL_DOCK_PARAM_CONSTRUCTION(p) \
- (((p)->flags & (G_PARAM_CONSTRUCT | G_PARAM_CONSTRUCT_ONLY)) != 0)
-
-static GdlDockObject *
-gdl_dock_layout_setup_object (GdlDockMaster *master,
- xmlNodePtr node,
- gint *n_after_params,
- GParameter **after_params)
-{
- GdlDockObject *object = NULL;
- GType object_type;
- xmlChar *object_name;
- GObjectClass *object_class = NULL;
-
- GParamSpec **props;
- guint n_props, i;
- GParameter *params = NULL;
- gint n_params = 0;
- GValue serialized = { 0, };
-
- object_name = xmlGetProp (node, BAD_CAST GDL_DOCK_NAME_PROPERTY);
- if (object_name && strlen ((char*)object_name) > 0) {
- /* the object must already be bound to the master */
- object = gdl_dock_master_get_object (master, (char*)object_name);
-
- xmlFree (object_name);
- object_type = object ? G_TYPE_FROM_INSTANCE (object) : G_TYPE_NONE;
- }
- else {
- /* the object should be automatic, so create it by
- retrieving the object type from the dock registry */
- object_type = gdl_dock_object_type_from_nick ((char*)node->name);
- if (object_type == G_TYPE_NONE) {
- g_warning (_("While loading layout: don't know how to create "
- "a dock object whose nick is '%s'"), node->name);
- }
- }
-
- if (object_type == G_TYPE_NONE || !G_TYPE_IS_CLASSED (object_type))
- return NULL;
-
- object_class = g_type_class_ref (object_type);
- props = g_object_class_list_properties (object_class, &n_props);
-
- /* create parameter slots */
- /* extra parameter is the master */
- params = g_new0 (GParameter, n_props + 1);
- *after_params = g_new0 (GParameter, n_props);
- *n_after_params = 0;
-
- /* initialize value used for transformations */
- g_value_init (&serialized, GDL_TYPE_DOCK_PARAM);
-
- for (i = 0; i < n_props; i++) {
- xmlChar *xml_prop;
-
- /* process all exported properties, skip
- GDL_DOCK_NAME_PROPERTY, since named items should
- already by in the master */
- if (!(props [i]->flags & GDL_DOCK_PARAM_EXPORT) ||
- !strcmp (props [i]->name, GDL_DOCK_NAME_PROPERTY))
- continue;
-
- /* get the property from xml if there is one */
- xml_prop = xmlGetProp (node, BAD_CAST props [i]->name);
- if (xml_prop) {
- g_value_set_static_string (&serialized, (char*)xml_prop);
-
- if (!GDL_DOCK_PARAM_CONSTRUCTION (props [i]) &&
- (props [i]->flags & GDL_DOCK_PARAM_AFTER)) {
- (*after_params) [*n_after_params].name = props [i]->name;
- g_value_init (&((* after_params) [*n_after_params].value),
- props [i]->value_type);
- g_value_transform (&serialized,
- &((* after_params) [*n_after_params].value));
- (*n_after_params)++;
- }
- else if (!object || (!GDL_DOCK_PARAM_CONSTRUCTION (props [i]) && object)) {
- params [n_params].name = props [i]->name;
- g_value_init (&(params [n_params].value), props [i]->value_type);
- g_value_transform (&serialized, &(params [n_params].value));
- n_params++;
- }
- xmlFree (xml_prop);
- }
- }
- g_value_unset (&serialized);
- g_free (props);
-
- if (!object) {
- params [n_params].name = GDL_DOCK_MASTER_PROPERTY;
- g_value_init (&params [n_params].value, GDL_TYPE_DOCK_MASTER);
- g_value_set_object (&params [n_params].value, master);
- n_params++;
-
- /* construct the object if we have to */
- /* set the master, so toplevels are created correctly and
- other objects are bound */
- object = g_object_newv (object_type, n_params, params);
- }
- else {
- /* set the parameters to the existing object */
- for (i = 0; i < n_params; i++)
- g_object_set_property (G_OBJECT (object),
- params [i].name,
- &params [i].value);
- }
-
- /* free the parameters (names are static/const strings) */
- for (i = 0; i < n_params; i++)
- g_value_unset (&params [i].value);
- g_free (params);
-
- /* finally unref object class */
- g_type_class_unref (object_class);
-
- return object;
-}
-
-static void
-gdl_dock_layout_recursive_build (GdlDockMaster *master,
- xmlNodePtr parent_node,
- GdlDockObject *parent)
-{
- GdlDockObject *object;
- xmlNodePtr node;
-
- g_return_if_fail (master != NULL && parent_node != NULL);
-
- /* if parent is NULL we should build toplevels */
- for (node = parent_node->children; node; node = node->next) {
- GParameter *after_params = NULL;
- gint n_after_params = 0, i;
-
- object = gdl_dock_layout_setup_object (master, node,
- &n_after_params,
- &after_params);
-
- if (object) {
- gdl_dock_object_freeze (object);
-
- /* recurse here to catch placeholders */
- gdl_dock_layout_recursive_build (master, node, object);
-
- if (GDL_IS_DOCK_PLACEHOLDER (object))
- /* placeholders are later attached to the parent */
- gdl_dock_object_detach (object, FALSE);
-
- /* apply "after" parameters */
- for (i = 0; i < n_after_params; i++) {
- g_object_set_property (G_OBJECT (object),
- after_params [i].name,
- &after_params [i].value);
- /* unset and free the value */
- g_value_unset (&after_params [i].value);
- }
- g_free (after_params);
-
- /* add the object to the parent */
- if (parent) {
- if (GDL_IS_DOCK_PLACEHOLDER (object))
- gdl_dock_placeholder_attach (GDL_DOCK_PLACEHOLDER (object),
- parent);
- else if (gdl_dock_object_is_compound (parent)) {
- gtk_container_add (GTK_CONTAINER (parent), GTK_WIDGET (object));
- if (GTK_WIDGET_VISIBLE (parent))
- gtk_widget_show (GTK_WIDGET (object));
- }
- }
- else {
- GdlDockObject *controller = gdl_dock_master_get_controller (master);
- if (controller != object && GTK_WIDGET_VISIBLE (controller))
- gtk_widget_show (GTK_WIDGET (object));
- }
-
- /* call reduce just in case any child is missing */
- if (gdl_dock_object_is_compound (object))
- gdl_dock_object_reduce (object);
-
- gdl_dock_object_thaw (object);
- }
- }
-}
-
-static void
-_gdl_dock_layout_foreach_detach (GdlDockObject *object)
-{
- gdl_dock_object_detach (object, TRUE);
-}
-
-static void
-gdl_dock_layout_foreach_toplevel_detach (GdlDockObject *object)
-{
- gtk_container_foreach (GTK_CONTAINER (object),
- (GtkCallback) _gdl_dock_layout_foreach_detach,
- NULL);
-}
-
-static void
-gdl_dock_layout_load (GdlDockMaster *master, xmlNodePtr node)
-{
- g_return_if_fail (master != NULL && node != NULL);
-
- /* start by detaching all items from the toplevels */
- gdl_dock_master_foreach_toplevel (master, TRUE,
- (GFunc) gdl_dock_layout_foreach_toplevel_detach,
- NULL);
-
- gdl_dock_layout_recursive_build (master, node, NULL);
-}
-
-static void
-gdl_dock_layout_foreach_object_save (GdlDockObject *object,
- gpointer user_data)
-{
- struct {
- xmlNodePtr where;
- GHashTable *placeholders;
- } *info = user_data, info_child;
-
- xmlNodePtr node;
- guint n_props, i;
- GParamSpec **props;
- GValue attr = { 0, };
-
- g_return_if_fail (object != NULL && GDL_IS_DOCK_OBJECT (object));
- g_return_if_fail (info->where != NULL);
-
- node = xmlNewChild (info->where,
- NULL, /* ns */
- BAD_CAST gdl_dock_object_nick_from_type (G_TYPE_FROM_INSTANCE (object)),
- BAD_CAST NULL); /* contents */
-
- /* get object exported attributes */
- props = g_object_class_list_properties (G_OBJECT_GET_CLASS (object),
- &n_props);
- g_value_init (&attr, GDL_TYPE_DOCK_PARAM);
- for (i = 0; i < n_props; i++) {
- GParamSpec *p = props [i];
-
- if (p->flags & GDL_DOCK_PARAM_EXPORT) {
- GValue v = { 0, };
-
- /* export this parameter */
- /* get the parameter value */
- g_value_init (&v, p->value_type);
- g_object_get_property (G_OBJECT (object),
- p->name,
- &v);
-
- /* only save the object "name" if it is set
- (i.e. don't save the empty string) */
- if (strcmp (p->name, GDL_DOCK_NAME_PROPERTY) ||
- g_value_get_string (&v)) {
- if (g_value_transform (&v, &attr))
- xmlSetProp (node, BAD_CAST p->name, BAD_CAST g_value_get_string (&attr));
- }
-
- /* free the parameter value */
- g_value_unset (&v);
- }
- }
- g_value_unset (&attr);
- g_free (props);
-
- info_child = *info;
- info_child.where = node;
-
- /* save placeholders for the object */
- if (info->placeholders && !GDL_IS_DOCK_PLACEHOLDER (object)) {
- GList *lph = g_hash_table_lookup (info->placeholders, object);
- for (; lph; lph = lph->next)
- gdl_dock_layout_foreach_object_save (GDL_DOCK_OBJECT (lph->data),
- (gpointer) &info_child);
- }
-
- /* recurse the object if appropiate */
- if (gdl_dock_object_is_compound (object)) {
- gtk_container_foreach (GTK_CONTAINER (object),
- (GtkCallback) gdl_dock_layout_foreach_object_save,
- (gpointer) &info_child);
- }
-}
-
-static void
-add_placeholder (GdlDockObject *object,
- GHashTable *placeholders)
-{
- if (GDL_IS_DOCK_PLACEHOLDER (object)) {
- GdlDockObject *host;
- GList *l;
-
- g_object_get (object, "host", &host, NULL);
- if (host) {
- l = g_hash_table_lookup (placeholders, host);
- /* add the current placeholder to the list of placeholders
- for that host */
- if (l)
- g_hash_table_steal (placeholders, host);
-
- l = g_list_prepend (l, object);
- g_hash_table_insert (placeholders, host, l);
- g_object_unref (host);
- }
- }
-}
-
-static void
-gdl_dock_layout_save (GdlDockMaster *master,
- xmlNodePtr where)
-{
- struct {
- xmlNodePtr where;
- GHashTable *placeholders;
- } info;
-
- GHashTable *placeholders;
-
- g_return_if_fail (master != NULL && where != NULL);
-
- /* build the placeholder's hash: the hash keeps lists of
- * placeholders associated to each object, so that we can save the
- * placeholders when we are saving the object (since placeholders
- * don't show up in the normal widget hierarchy) */
- placeholders = g_hash_table_new_full (g_direct_hash, g_direct_equal,
- NULL, (GDestroyNotify) g_list_free);
- gdl_dock_master_foreach (master, (GFunc) add_placeholder, placeholders);
-
- /* save the layout recursively */
- info.where = where;
- info.placeholders = placeholders;
-
- gdl_dock_master_foreach_toplevel (master, TRUE,
- (GFunc) gdl_dock_layout_foreach_object_save,
- (gpointer) &info);
-
- g_hash_table_destroy (placeholders);
-}
-
-
-/* ----- Public interface ----- */
-
-/**
- * gdl_dock_layout_new:
- * @dock: The dock item.
- * Creates a new #GdlDockLayout
- *
- * Returns: New #GdlDockLayout item.
- */
-GdlDockLayout *
-gdl_dock_layout_new (GdlDock *dock)
-{
- GdlDockMaster *master = NULL;
-
- /* get the master of the given dock */
- if (dock)
- master = GDL_DOCK_OBJECT_GET_MASTER (dock);
-
- return g_object_new (GDL_TYPE_DOCK_LAYOUT,
- "master", master,
- NULL);
-}
-
-static gboolean
-gdl_dock_layout_idle_save (GdlDockLayout *layout)
-{
- /* save default layout */
- gdl_dock_layout_save_layout (layout, NULL);
-
- layout->_priv->idle_save_pending = FALSE;
-
- return FALSE;
-}
-
-static void
-gdl_dock_layout_layout_changed_cb (GdlDockMaster *master,
- GdlDockLayout *layout)
-{
- /* update model */
- update_items_model (layout);
-
- if (!layout->_priv->idle_save_pending) {
- g_idle_add ((GSourceFunc) gdl_dock_layout_idle_save, layout);
- layout->_priv->idle_save_pending = TRUE;
- }
-}
-
-
-/**
- * gdl_dock_layout_attach:
- * @layout: The layout item
- * @master: The master item to which the layout will be attached
- *
- * Attach the @layout to the @master and delete the reference to
- * the master that the layout attached previously
- */
-void
-gdl_dock_layout_attach (GdlDockLayout *layout,
- GdlDockMaster *master)
-{
- g_return_if_fail (layout != NULL);
- g_return_if_fail (master == NULL || GDL_IS_DOCK_MASTER (master));
-
- if (layout->master) {
- g_signal_handlers_disconnect_matched (layout->master, G_SIGNAL_MATCH_DATA,
- 0, 0, NULL, NULL, layout);
- g_object_unref (layout->master);
- }
-
- gtk_list_store_clear (layout->_priv->items_model);
-
- layout->master = master;
- if (layout->master) {
- g_object_ref (layout->master);
- g_signal_connect (layout->master, "layout-changed",
- (GCallback) gdl_dock_layout_layout_changed_cb,
- layout);
- }
-
- update_items_model (layout);
-}
-
-/**
-* gdl_dock_layout_load_layout:
-* @layout: The dock item.
-* @name: The name of the layout to load.
-*
-* Loads the layout with the given name to the memory.
-* This will set #GdlDockLayout:dirty to %TRUE.
-*
-* See also gdl_dock_layout_load_from_file()
-* Returns: %TRUE if layout successfully loaded else %FALSE
-*/
-gboolean
-gdl_dock_layout_load_layout (GdlDockLayout *layout,
- const gchar *name)
-{
- xmlNodePtr node;
- gchar *layout_name;
-
- g_return_val_if_fail (layout != NULL, FALSE);
-
- if (!layout->_priv->doc || !layout->master)
- return FALSE;
-
- if (!name)
- layout_name = DEFAULT_LAYOUT;
- else
- layout_name = (gchar *) name;
-
- node = gdl_dock_layout_find_layout (layout, layout_name);
- if (!node && !name)
- /* return the first layout if the default name failed to load */
- node = gdl_dock_layout_find_layout (layout, NULL);
-
- if (node) {
- gdl_dock_layout_load (layout->master, node);
- return TRUE;
- } else
- return FALSE;
-}
-
-/**
-* gdl_dock_layout_save_layout:
-* @layout: The dock item.
-* @name: The name of the layout to save.
-*
-* Saves the @layout with the given name to the memory.
-* This will set #GdlDockLayout:dirty to %TRUE.
-*
-* See also gdl_dock_layout_save_to_file().
-*/
-
-void
-gdl_dock_layout_save_layout (GdlDockLayout *layout,
- const gchar *name)
-{
- xmlNodePtr node;
- gchar *layout_name;
-
- g_return_if_fail (layout != NULL);
- g_return_if_fail (layout->master != NULL);
-
- if (!layout->_priv->doc)
- gdl_dock_layout_build_doc (layout);
-
- if (!name)
- layout_name = DEFAULT_LAYOUT;
- else
- layout_name = (gchar *) name;
-
- /* delete any previously node with the same name */
- node = gdl_dock_layout_find_layout (layout, layout_name);
- if (node) {
- xmlUnlinkNode (node);
- xmlFreeNode (node);
- };
-
- /* create the new node */
- node = xmlNewChild (layout->_priv->doc->children, NULL,
- BAD_CAST LAYOUT_ELEMENT_NAME, NULL);
- xmlSetProp (node, BAD_CAST NAME_ATTRIBUTE_NAME, BAD_CAST layout_name);
-
- /* save the layout */
- gdl_dock_layout_save (layout->master, node);
- layout->dirty = TRUE;
- g_object_notify (G_OBJECT (layout), "dirty");
-}
-
-/**
-* gdl_dock_layout_delete_layout:
-* @layout: The dock item.
-* @name: The name of the layout to delete.
-*
-* Deletes the layout with the given name from the memory.
-* This will set #GdlDockLayout:dirty to %TRUE.
-*/
-
-void
-gdl_dock_layout_delete_layout (GdlDockLayout *layout,
- const gchar *name)
-{
- xmlNodePtr node;
-
- g_return_if_fail (layout != NULL);
-
- /* don't allow the deletion of the default layout */
- if (!name || !strcmp (DEFAULT_LAYOUT, name))
- return;
-
- node = gdl_dock_layout_find_layout (layout, name);
- if (node) {
- xmlUnlinkNode (node);
- xmlFreeNode (node);
- layout->dirty = TRUE;
- g_object_notify (G_OBJECT (layout), "dirty");
- }
-}
-
-/**
-* gdl_dock_layout_run_manager:
-* @layout: The dock item.
-*
-* Runs the layout manager.
-*/
-
-void
-gdl_dock_layout_run_manager (GdlDockLayout *layout)
-{
- GtkWidget *dialog;
- GtkWidget *parent = NULL;
-
- g_return_if_fail (layout != NULL);
-
- if (!layout->master)
- /* not attached to a dock yet */
- return;
-
- dialog = gdl_dock_layout_construct_items_ui (layout);
-
- gtk_dialog_run (GTK_DIALOG (dialog));
-
- gtk_widget_destroy (dialog);
-}
-
-/**
-* gdl_dock_layout_load_from_file:
-* @layout: The layout item.
-* @filename: The name of the file to load.
-*
-* Loads the layout from file with the given @filename.
-* This will set #GdlDockLayout:dirty to %FALSE.
-*
-* Returns: %TRUE if @layout successfully loaded else %FALSE
-*/
-
-gboolean
-gdl_dock_layout_load_from_file (GdlDockLayout *layout,
- const gchar *filename)
-{
- gboolean retval = FALSE;
-
- if (layout->_priv->doc) {
- xmlFreeDoc (layout->_priv->doc);
- layout->_priv->doc = NULL;
- layout->dirty = FALSE;
- g_object_notify (G_OBJECT (layout), "dirty");
- }
-
- /* FIXME: cannot open symlinks */
- if (g_file_test (filename, G_FILE_TEST_IS_REGULAR)) {
- layout->_priv->doc = xmlParseFile (filename);
- if (layout->_priv->doc) {
- xmlNodePtr root = layout->_priv->doc->children;
- /* minimum validation: test the root element */
- if (root && !strcmp ((char*)root->name, ROOT_ELEMENT)) {
- update_layouts_model (layout);
- retval = TRUE;
- } else {
- xmlFreeDoc (layout->_priv->doc);
- layout->_priv->doc = NULL;
- }
- }
- }
-
- return retval;
-}
-
-/**
- * gdl_dock_layout_save_to_file:
- * @layout: The layout item.
- * @filename: Name of the file we want to save in layout
- *
- * This function saves the current layout in XML format to
- * the file with the given @filename.
- *
- * Returns: %TRUE if @layout successfuly save to the file, otherwise %FALSE.
- */
-gboolean
-gdl_dock_layout_save_to_file (GdlDockLayout *layout,
- const gchar *filename)
-{
- FILE *file_handle;
- int bytes;
- gboolean retval = FALSE;
-
- g_return_val_if_fail (layout != NULL, FALSE);
- g_return_val_if_fail (filename != NULL, FALSE);
-
- /* if there is still no xml doc, create an empty one */
- if (!layout->_priv->doc)
- gdl_dock_layout_build_doc (layout);
-
- file_handle = fopen (filename, "w");
- if (file_handle) {
- bytes = xmlDocDump (file_handle, layout->_priv->doc);
- if (bytes >= 0) {
- layout->dirty = FALSE;
- g_object_notify (G_OBJECT (layout), "dirty");
- retval = TRUE;
- };
- fclose (file_handle);
- };
-
- return retval;
-}
-
-/**
- * gdl_dock_layout_is_dirty:
- * @layout: The layout item.
- *
- * Checks whether the XML tree in memory is different from the file where the layout was saved.
- * Returns: %TRUE is the layout in the memory is different from the file, else %FALSE.
- */
-gboolean
-gdl_dock_layout_is_dirty (GdlDockLayout *layout)
-{
- g_return_val_if_fail (layout != NULL, FALSE);
-
- return layout->dirty;
-};
-
-GList *
-gdl_dock_layout_get_layouts (GdlDockLayout *layout,
- gboolean include_default)
-{
- GList *retval = NULL;
- xmlNodePtr node;
-
- g_return_val_if_fail (layout != NULL, NULL);
-
- if (!layout->_priv->doc)
- return NULL;
-
- node = layout->_priv->doc->children;
- for (node = node->children; node; node = node->next) {
- xmlChar *name;
-
- if (strcmp ((char*)node->name, LAYOUT_ELEMENT_NAME))
- continue;
-
- name = xmlGetProp (node, BAD_CAST NAME_ATTRIBUTE_NAME);
- if (include_default || strcmp ((char*)name, DEFAULT_LAYOUT))
- retval = g_list_prepend (retval, g_strdup ((char*)name));
- xmlFree (name);
- };
- retval = g_list_reverse (retval);
-
- return retval;
-}
-
-GtkWidget *
-gdl_dock_layout_get_layouts_ui (GdlDockLayout *layout)
-{
- GtkWidget *ui;
-
- g_return_val_if_fail (layout != NULL, NULL);
- ui = gdl_dock_layout_construct_layouts_ui (layout);
-
- return ui;
-}
diff --git a/src/libgdl/gdl-dock-layout.h b/src/libgdl/gdl-dock-layout.h
deleted file mode 100644
index 82dce5de8..000000000
--- a/src/libgdl/gdl-dock-layout.h
+++ /dev/null
@@ -1,98 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
- *
- * This file is part of the GNOME Devtools Libraries.
- *
- * Copyright (C) 2002 Gustavo Giráldez <gustavo.giraldez@gmx.net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-
-#ifndef __GDL_DOCK_LAYOUT_H__
-#define __GDL_DOCK_LAYOUT_H__
-
-#include <glib-object.h>
-#include "libgdl/gdl-dock-master.h"
-#include "libgdl/gdl-dock.h"
-
-G_BEGIN_DECLS
-
-/* standard macros */
-#define GDL_TYPE_DOCK_LAYOUT (gdl_dock_layout_get_type ())
-#define GDL_DOCK_LAYOUT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDL_TYPE_DOCK_LAYOUT, GdlDockLayout))
-#define GDL_DOCK_LAYOUT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDL_TYPE_DOCK_LAYOUT, GdlDockLayoutClass))
-#define GDL_IS_DOCK_LAYOUT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDL_TYPE_DOCK_LAYOUT))
-#define GDL_IS_DOCK_LAYOUT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDL_TYPE_DOCK_LAYOUT))
-#define GDL_DOCK_LAYOUT_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS ((object), GDL_TYPE_DOCK_LAYOUT, GdlDockLayoutClass))
-
-/* data types & structures */
-typedef struct _GdlDockLayout GdlDockLayout;
-typedef struct _GdlDockLayoutClass GdlDockLayoutClass;
-typedef struct _GdlDockLayoutPrivate GdlDockLayoutPrivate;
-
-struct _GdlDockLayout {
- GObject g_object;
-
- gboolean dirty;
- GdlDockMaster *master;
-
- GdlDockLayoutPrivate *_priv;
-};
-
-struct _GdlDockLayoutClass {
- GObjectClass g_object_class;
-};
-
-
-/* public interface */
-
-GType gdl_dock_layout_get_type (void);
-
-GdlDockLayout *gdl_dock_layout_new (GdlDock *dock);
-
-void gdl_dock_layout_attach (GdlDockLayout *layout,
- GdlDockMaster *master);
-
-gboolean gdl_dock_layout_load_layout (GdlDockLayout *layout,
- const gchar *name);
-
-void gdl_dock_layout_save_layout (GdlDockLayout *layout,
- const gchar *name);
-
-void gdl_dock_layout_delete_layout (GdlDockLayout *layout,
- const gchar *name);
-
-GList *gdl_dock_layout_get_layouts (GdlDockLayout *layout,
- gboolean include_default);
-
-void gdl_dock_layout_run_manager (GdlDockLayout *layout);
-
-gboolean gdl_dock_layout_load_from_file (GdlDockLayout *layout,
- const gchar *filename);
-
-gboolean gdl_dock_layout_save_to_file (GdlDockLayout *layout,
- const gchar *filename);
-
-gboolean gdl_dock_layout_is_dirty (GdlDockLayout *layout);
-
-GtkWidget *gdl_dock_layout_get_ui (GdlDockLayout *layout);
-GtkWidget *gdl_dock_layout_get_items_ui (GdlDockLayout *layout);
-GtkWidget *gdl_dock_layout_get_layouts_ui (GdlDockLayout *layout);
-
-G_END_DECLS
-
-#endif
-
-
diff --git a/src/libgdl/gdl.h b/src/libgdl/gdl.h
index 467b2b67e..d136b9295 100644
--- a/src/libgdl/gdl.h
+++ b/src/libgdl/gdl.h
@@ -28,7 +28,6 @@
#include "libgdl/gdl-dock.h"
#include "libgdl/gdl-dock-item.h"
#include "libgdl/gdl-dock-item-grip.h"
-#include "libgdl/gdl-dock-layout.h"
#include "libgdl/gdl-dock-bar.h"
#endif
diff --git a/src/libgdl/test-combo-button.c b/src/libgdl/test-combo-button.c
deleted file mode 100644
index 35ce3fff3..000000000
--- a/src/libgdl/test-combo-button.c
+++ /dev/null
@@ -1,111 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* test-combo-button.c
- *
- * Copyright (C) 2003 Jeroen Zwartepoorte
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * 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, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <gtk/gtk.h>
-#include "gdl-combo-button.h"
-
-static void
-combo_button_activate_default_cb (GdlComboButton *combo,
- gpointer data)
-{
- g_message ("combo_button_activate_default_cb");
-}
-
-int
-main (int argc, char **argv)
-{
- GtkWidget *window, *hbox, *combo, *menu, *menuitem;
- GdkPixbuf *icon;
-
- gtk_init (&argc, &argv);
-
- window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
- g_signal_connect (G_OBJECT (window), "delete_event",
- G_CALLBACK (gtk_main_quit), NULL);
- gtk_window_set_title (GTK_WINDOW (window), "Combo button test");
- gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
-
- hbox = gtk_hbox_new (FALSE, 0);
- gtk_container_add (GTK_CONTAINER (window), hbox);
-
- combo = gtk_button_new_from_stock (GTK_STOCK_OPEN);
- gtk_button_set_relief (GTK_BUTTON (combo), GTK_RELIEF_NONE);
- gtk_box_pack_start (GTK_BOX (hbox), combo, FALSE, FALSE, 0);
-
- menu = gtk_menu_new ();
- menuitem = gtk_image_menu_item_new_from_stock (GTK_STOCK_OPEN, NULL);
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
- menuitem = gtk_image_menu_item_new_from_stock (GTK_STOCK_SAVE, NULL);
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
- gtk_widget_show_all (menu);
-
- combo = gdl_combo_button_new ();
- gdl_combo_button_set_label (GDL_COMBO_BUTTON (combo), "Run");
- gdl_combo_button_set_menu (GDL_COMBO_BUTTON (combo), GTK_MENU (menu));
- icon = gtk_widget_render_icon (combo, GTK_STOCK_EXECUTE,
- GTK_ICON_SIZE_LARGE_TOOLBAR, NULL);
- gdl_combo_button_set_icon (GDL_COMBO_BUTTON (combo), icon);
- gtk_box_pack_start (GTK_BOX (hbox), combo, FALSE, FALSE, 0);
-
- g_signal_connect (combo, "activate_default",
- G_CALLBACK (combo_button_activate_default_cb), NULL);
-
- combo = gtk_button_new_from_stock (GTK_STOCK_SAVE);
- gtk_button_set_relief (GTK_BUTTON (combo), GTK_RELIEF_NONE);
- gtk_box_pack_start (GTK_BOX (hbox), combo, FALSE, FALSE, 0);
-
- menu = gtk_menu_new ();
- menuitem = gtk_image_menu_item_new_from_stock (GTK_STOCK_OPEN, NULL);
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
- menuitem = gtk_image_menu_item_new_from_stock (GTK_STOCK_SAVE, NULL);
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
- gtk_widget_show_all (menu);
-
- combo = gdl_combo_button_new ();
- gdl_combo_button_set_label (GDL_COMBO_BUTTON (combo), "Open");
- gdl_combo_button_set_menu (GDL_COMBO_BUTTON (combo), GTK_MENU (menu));
- icon = gtk_widget_render_icon (combo, GTK_STOCK_OPEN,
- GTK_ICON_SIZE_LARGE_TOOLBAR, NULL);
- gdl_combo_button_set_icon (GDL_COMBO_BUTTON (combo), icon);
- gtk_widget_set_sensitive (combo, FALSE);
- gtk_box_pack_start (GTK_BOX (hbox), combo, FALSE, FALSE, 0);
-
- g_signal_connect (combo, "activate_default",
- G_CALLBACK (combo_button_activate_default_cb), NULL);
-
- menu = gtk_menu_new ();
- combo = gdl_combo_button_new ();
- gdl_combo_button_set_label (GDL_COMBO_BUTTON (combo), "Open");
- gdl_combo_button_set_menu (GDL_COMBO_BUTTON (combo), GTK_MENU (menu));
- icon = gtk_widget_render_icon (combo, GTK_STOCK_OPEN,
- GTK_ICON_SIZE_LARGE_TOOLBAR, NULL);
- gdl_combo_button_set_icon (GDL_COMBO_BUTTON (combo), icon);
- gtk_box_pack_start (GTK_BOX (hbox), combo, FALSE, FALSE, 0);
-
- gtk_widget_show_all (window);
-
- gtk_main ();
-
- return 0;
-}
diff --git a/src/libgdl/test-dock.c b/src/libgdl/test-dock.c
deleted file mode 100644
index abaecf703..000000000
--- a/src/libgdl/test-dock.c
+++ /dev/null
@@ -1,314 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <signal.h>
-#include <stdio.h>
-#include <string.h>
-#include <gtk/gtk.h>
-
-#include "gdl-tools.h"
-
-#include "gdl-dock.h"
-#include "gdl-dock-item.h"
-#include "gdl-dock-notebook.h"
-#include "gdl-dock-layout.h"
-#include "gdl-dock-placeholder.h"
-#include "gdl-dock-bar.h"
-#include "gdl-switcher.h"
-
-#include <glib.h>
-
-/* ---- end of debugging code */
-
-static void
-on_style_button_toggled (GtkRadioButton *button, GdlDock *dock)
-{
- gboolean active;
- GdlDockMaster *master = GDL_DOCK_OBJECT_GET_MASTER (dock);
- GdlSwitcherStyle style =
- GPOINTER_TO_INT (g_object_get_data (G_OBJECT (button),
- "__style_id"));
- active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button));
- if (active) {
- g_object_set (master, "switcher-style", style, NULL);
- }
-}
-
-static GtkWidget *
-create_style_button (GtkWidget *dock, GtkWidget *box, GtkWidget *group,
- GdlSwitcherStyle style, const gchar *style_text)
-{
- GdlSwitcherStyle current_style;
- GtkWidget *button1;
- GdlDockMaster *master = GDL_DOCK_OBJECT_GET_MASTER (dock);
-
- g_object_get (master, "switcher-style", &current_style, NULL);
- button1 = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (group),
- style_text);
- gtk_widget_show (button1);
- g_object_set_data (G_OBJECT (button1), "__style_id",
- GINT_TO_POINTER (style));
- if (current_style == style) {
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button1), TRUE);
- }
- g_signal_connect (button1, "toggled",
- G_CALLBACK (on_style_button_toggled),
- dock);
- gtk_box_pack_start (GTK_BOX (box), button1, FALSE, FALSE, 0);
- return button1;
-}
-
-static GtkWidget *
-create_styles_item (GtkWidget *dock)
-{
- GtkWidget *vbox1;
- GtkWidget *group;
-
- vbox1 = gtk_vbox_new (FALSE, 0);
- gtk_widget_show (vbox1);
-
- group = create_style_button (dock, vbox1, NULL,
- GDL_SWITCHER_STYLE_ICON, "Only icon");
- group = create_style_button (dock, vbox1, group,
- GDL_SWITCHER_STYLE_TEXT, "Only text");
- group = create_style_button (dock, vbox1, group,
- GDL_SWITCHER_STYLE_BOTH,
- "Both icons and texts");
- group = create_style_button (dock, vbox1, group,
- GDL_SWITCHER_STYLE_TOOLBAR,
- "Desktop toolbar style");
- group = create_style_button (dock, vbox1, group,
- GDL_SWITCHER_STYLE_TABS,
- "Notebook tabs");
- group = create_style_button (dock, vbox1, group,
- GDL_SWITCHER_STYLE_NONE,
- "None of the above");
- return vbox1;
-}
-
-static GtkWidget *
-create_item (const gchar *button_title)
-{
- GtkWidget *vbox1;
- GtkWidget *button1;
-
- vbox1 = gtk_vbox_new (FALSE, 0);
- gtk_widget_show (vbox1);
-
- button1 = gtk_button_new_with_label (button_title);
- gtk_widget_show (button1);
- gtk_box_pack_start (GTK_BOX (vbox1), button1, TRUE, TRUE, 0);
-
- return vbox1;
-}
-
-/* creates a simple widget with a textbox inside */
-static GtkWidget *
-create_text_item ()
-{
- GtkWidget *vbox1;
- GtkWidget *scrolledwindow1;
- GtkWidget *text;
-
- vbox1 = gtk_vbox_new (FALSE, 0);
- gtk_widget_show (vbox1);
-
- scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL);
- gtk_widget_show (scrolledwindow1);
- gtk_box_pack_start (GTK_BOX (vbox1), scrolledwindow1, TRUE, TRUE, 0);
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow1),
- GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
- gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow1),
- GTK_SHADOW_ETCHED_IN);
- text = gtk_text_view_new ();
- g_object_set (text, "wrap-mode", GTK_WRAP_WORD, NULL);
- gtk_widget_show (text);
- gtk_container_add (GTK_CONTAINER (scrolledwindow1), text);
-
- return vbox1;
-}
-
-static void
-button_dump_cb (GtkWidget *button, gpointer data)
-{
- /* Dump XML tree. */
- gdl_dock_layout_save_to_file (GDL_DOCK_LAYOUT (data), "layout.xml");
- g_spawn_command_line_async ("cat layout.xml", NULL);
-}
-
-static void
-run_layout_manager_cb (GtkWidget *w, gpointer data)
-{
- GdlDockLayout *layout = GDL_DOCK_LAYOUT (data);
- gdl_dock_layout_run_manager (layout);
-}
-
-static void
-save_layout_cb (GtkWidget *w, gpointer data)
-{
- GdlDockLayout *layout = GDL_DOCK_LAYOUT (data);
- GtkWidget *dialog, *hbox, *label, *entry;
- gint response;
-
- dialog = gtk_dialog_new_with_buttons ("New Layout",
- NULL,
- GTK_DIALOG_MODAL |
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_STOCK_OK,
- GTK_RESPONSE_OK,
- NULL);
-
- hbox = gtk_hbox_new (FALSE, 8);
- gtk_container_set_border_width (GTK_CONTAINER (hbox), 8);
- gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), hbox, FALSE, FALSE, 0);
-
- label = gtk_label_new ("Name:");
- gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
-
- entry = gtk_entry_new ();
- gtk_box_pack_start (GTK_BOX (hbox), entry, TRUE, TRUE, 0);
-
- gtk_widget_show_all (hbox);
- response = gtk_dialog_run (GTK_DIALOG (dialog));
-
- if (response == GTK_RESPONSE_OK) {
- const gchar *name = gtk_entry_get_text (GTK_ENTRY (entry));
- gdl_dock_layout_save_layout (layout, name);
- }
-
- gtk_widget_destroy (dialog);
-}
-
-int
-main (int argc, char **argv)
-{
- GtkWidget *item1, *item2, *item3;
- GtkWidget *items [4];
- GtkWidget *win, *table, *button, *box;
- int i;
- GdlDockLayout *layout;
- GtkWidget *dock, *dockbar;
-
- gtk_init (&argc, &argv);
-
- /*gtk_widget_set_default_direction (GTK_TEXT_DIR_RTL);*/
-
- /* window creation */
- win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
- g_signal_connect (win, "delete_event",
- G_CALLBACK (gtk_main_quit), NULL);
- gtk_window_set_title (GTK_WINDOW (win), "Docking widget test");
- gtk_window_set_default_size (GTK_WINDOW (win), 400, 400);
-
- /* table */
- table = gtk_vbox_new (FALSE, 5);
- gtk_container_add (GTK_CONTAINER (win), table);
- gtk_container_set_border_width (GTK_CONTAINER (table), 10);
-
- /* create the dock */
- dock = gdl_dock_new ();
-
- /* ... and the layout manager */
- layout = gdl_dock_layout_new (GDL_DOCK (dock));
-
- /* create the dockbar */
- dockbar = gdl_dock_bar_new (GDL_DOCK (dock));
- gdl_dock_bar_set_style(GDL_DOCK_BAR(dockbar), GDL_DOCK_BAR_TEXT);
-
- box = gtk_hbox_new (FALSE, 5);
- gtk_box_pack_start (GTK_BOX (table), box, TRUE, TRUE, 0);
-
- gtk_box_pack_start (GTK_BOX (box), dockbar, FALSE, FALSE, 0);
- gtk_box_pack_end (GTK_BOX (box), dock, TRUE, TRUE, 0);
-
- /* create the dock items */
- item1 = gdl_dock_item_new ("item1", "Item #1", GDL_DOCK_ITEM_BEH_LOCKED);
- gtk_container_add (GTK_CONTAINER (item1), create_text_item ());
- gdl_dock_add_item (GDL_DOCK (dock), GDL_DOCK_ITEM (item1),
- GDL_DOCK_TOP);
- gtk_widget_show (item1);
-
- item2 = gdl_dock_item_new_with_stock ("item2", "Item #2: Select the switcher style for notebooks",
- GTK_STOCK_EXECUTE,
- GDL_DOCK_ITEM_BEH_NORMAL);
- g_object_set (item2, "resize", FALSE, NULL);
- gtk_container_add (GTK_CONTAINER (item2), create_styles_item (dock));
- gdl_dock_add_item (GDL_DOCK (dock), GDL_DOCK_ITEM (item2),
- GDL_DOCK_RIGHT);
- gtk_widget_show (item2);
-
- item3 = gdl_dock_item_new_with_stock ("item3", "Item #3 has accented characters (áéíóúñ)",
- GTK_STOCK_CONVERT,
- GDL_DOCK_ITEM_BEH_NORMAL |
- GDL_DOCK_ITEM_BEH_CANT_CLOSE);
- gtk_container_add (GTK_CONTAINER (item3), create_item ("Button 3"));
- gdl_dock_add_item (GDL_DOCK (dock), GDL_DOCK_ITEM (item3),
- GDL_DOCK_BOTTOM);
- gtk_widget_show (item3);
-
- items [0] = gdl_dock_item_new_with_stock ("Item #4", "Item #4",
- GTK_STOCK_JUSTIFY_FILL,
- GDL_DOCK_ITEM_BEH_NORMAL |
- GDL_DOCK_ITEM_BEH_CANT_ICONIFY);
- gtk_container_add (GTK_CONTAINER (items [0]), create_text_item ());
- gtk_widget_show (items [0]);
- gdl_dock_add_item (GDL_DOCK (dock), GDL_DOCK_ITEM (items [0]), GDL_DOCK_BOTTOM);
- for (i = 1; i < 3; i++) {
- gchar name[10];
-
- snprintf (name, sizeof (name), "Item #%d", i + 4);
- items [i] = gdl_dock_item_new_with_stock (name, name, GTK_STOCK_NEW,
- GDL_DOCK_ITEM_BEH_NORMAL);
- gtk_container_add (GTK_CONTAINER (items [i]), create_text_item ());
- gtk_widget_show (items [i]);
-
- gdl_dock_object_dock (GDL_DOCK_OBJECT (items [0]),
- GDL_DOCK_OBJECT (items [i]),
- GDL_DOCK_CENTER, NULL);
- };
-
- /* tests: manually dock and move around some of the items */
- gdl_dock_item_dock_to (GDL_DOCK_ITEM (item3), GDL_DOCK_ITEM (item1),
- GDL_DOCK_TOP, -1);
-
- gdl_dock_item_dock_to (GDL_DOCK_ITEM (item2), GDL_DOCK_ITEM (item3),
- GDL_DOCK_RIGHT, -1);
-
- gdl_dock_item_dock_to (GDL_DOCK_ITEM (item2), GDL_DOCK_ITEM (item3),
- GDL_DOCK_LEFT, -1);
-
- gdl_dock_item_dock_to (GDL_DOCK_ITEM (item2), NULL,
- GDL_DOCK_FLOATING, -1);
-
- box = gtk_hbox_new (TRUE, 5);
- gtk_box_pack_end (GTK_BOX (table), box, FALSE, FALSE, 0);
-
- button = gtk_button_new_from_stock (GTK_STOCK_SAVE);
- g_signal_connect (button, "clicked",
- G_CALLBACK (save_layout_cb), layout);
- gtk_box_pack_end (GTK_BOX (box), button, FALSE, TRUE, 0);
-
- button = gtk_button_new_with_label ("Layout Manager");
- g_signal_connect (button, "clicked",
- G_CALLBACK (run_layout_manager_cb), layout);
- gtk_box_pack_end (GTK_BOX (box), button, FALSE, TRUE, 0);
-
- button = gtk_button_new_with_label ("Dump XML");
- g_signal_connect (button, "clicked",
- G_CALLBACK (button_dump_cb), layout);
- gtk_box_pack_end (GTK_BOX (box), button, FALSE, TRUE, 0);
-
- gtk_widget_show_all (win);
-
- gdl_dock_placeholder_new ("ph1", GDL_DOCK_OBJECT (dock), GDL_DOCK_TOP, FALSE);
- gdl_dock_placeholder_new ("ph2", GDL_DOCK_OBJECT (dock), GDL_DOCK_BOTTOM, FALSE);
- gdl_dock_placeholder_new ("ph3", GDL_DOCK_OBJECT (dock), GDL_DOCK_LEFT, FALSE);
- gdl_dock_placeholder_new ("ph4", GDL_DOCK_OBJECT (dock), GDL_DOCK_RIGHT, FALSE);
-
- gtk_main ();
-
- g_object_unref (layout);
-
- return 0;
-}