]> git.sur5r.net Git - glabels/commitdiff
Removed all remnants of MDI/BONOBO-MDI. We now use an SDI application model.
authorJim Evins <evins@snaught.com>
Sun, 29 Sep 2002 07:20:26 +0000 (07:20 +0000)
committerJim Evins <evins@snaught.com>
Sun, 29 Sep 2002 07:20:26 +0000 (07:20 +0000)
git-svn-id: https://glabels.svn.sourceforge.net/svnroot/glabels/trunk@137 f5e0f49d-192f-0410-a22d-a8d8700d0965

35 files changed:
glabels2/AUTHORS
glabels2/TODO
glabels2/po/POTFILES.in
glabels2/src/Makefile.am
glabels2/src/bonobo-mdi-child.c [deleted file]
glabels2/src/bonobo-mdi-child.h [deleted file]
glabels2/src/bonobo-mdi.c [deleted file]
glabels2/src/bonobo-mdi.h [deleted file]
glabels2/src/commands.c
glabels2/src/commands.h
glabels2/src/debug.c
glabels2/src/debug.h
glabels2/src/file.c
glabels2/src/file.h
glabels2/src/glabels-ui.xml
glabels2/src/glabels.c
glabels2/src/glabels.h [deleted file]
glabels2/src/mdi-child.c [deleted file]
glabels2/src/mdi-child.h [deleted file]
glabels2/src/mdi.c [deleted file]
glabels2/src/mdi.h [deleted file]
glabels2/src/merge-properties.c
glabels2/src/prefs-dialog.c
glabels2/src/prefs.c
glabels2/src/print-dialog.c
glabels2/src/print-dialog.h
glabels2/src/tools.c
glabels2/src/ui.c
glabels2/src/ui.h
glabels2/src/view-barcode.c
glabels2/src/view-box.c
glabels2/src/view-ellipse.c
glabels2/src/view-image.c
glabels2/src/view-line.c
glabels2/src/view-text.c

index 52bc2eceaba1194f7ed6872bd75b4ac083f7fdba..fa0c81d1a413ea739ef34c73bc84d657b484cbcc 100644 (file)
@@ -29,20 +29,11 @@ canvas item:
        Lauris Kaplinski <lauris@helixcode.com>
 
 
-I borrowed quite a bit of code from gedit2 to create the bonobo-mdi shell for
-gLabels.  The authors of gedit2:
-
-       Paolo Maggi <maggi@athena.polito.it>
-       Chema Celorio <chema@ximian.com>
-       James Willcox <jwillcox@cs.indiana.edu>
-       Federico Mena Quintero <federico@ximian.com>
-
-
 Translations:
 
        Olivier Berger <oberger@april.org> -- French
        Marcus Bauer <m@7n7.de> -- German (original)
-       Christian Neumair <christian-neumair@web.de> -- German
+       Christian Neumair <christian-neumair@web.de> -- German (1.89.1)
        Takeshi AIHANA <aihana@gnome.gr.jp> -- Japanese
        Paulo Rogério Ormenese <pormenese@uol.com.br> -- Brazilian Portuguese
        Víctor Moral <victor@pasmao.net> -- Spanish translations
index 225202593a3b140a079cbe30dcce9293b7a8b0ab..d0f8de3c301200c2f216e42a43236bd7ee621563 100644 (file)
@@ -7,7 +7,7 @@ to version 2.0 are fairly well defined.
 
 Basically the goal of version 1.90 is to port all current
 features/capabilities to the GNOME 2.0 platform, clean up the architecture,
-and create a bonobo-mdi shell.
+and create a bonobo shell.
 
 The goal for version 1.92 is to improve several user interface capabilities
 and add drawing capabilities.
@@ -16,8 +16,8 @@ The goal for version 2.0 is to realize the fully developed template feature
 set, add tools for creating and downloading new templates, and add inline
 images to glabels files.
 
-The goals for version 2.2 and beyond is to add sophisticated text effects
-and support vector images.
+The goals for version 2.2 and beyond is to add rich text objects,
+add sophisticated text effects and support vector images.
 
 
 Detailed Outline:
@@ -31,7 +31,7 @@ VERSION 1.90:
 
                - Port to Gnome 2.0 Platform
 
-               - Create a new MDI shell based on bonoboMDI (see gedit2).
+               - Create a new SDI shell based on bonobo (no more MDI!).
 
                - Migrate to a more faithful MVC architecture:
                        - Migrate models (labels, label objects, and templates)
@@ -56,12 +56,8 @@ VERSION 1.90:
 
        Other:
                - Add preferences options:
-                       - MDI style [*]
                        - object defaults (colors, line widths, fonts)
 
-                       [*] These only need to be supported through gconf.
-
-
                - Support all paper sizes that gnome-print knows about
 
                - Recent documents
@@ -154,6 +150,9 @@ VERSION 2.2:
 
        - support for the import of vector graphics formats such as EPS or SVG.
 
+       - Make text items rich.  I.e. allow multiple characteristics to
+         exist within a single object.
+
        - Text effects.  (follow contour, shadows, ...)
 
 
@@ -173,9 +172,6 @@ Odds and ends WISHLIST for future versions:
          part of the underlying print system but is currently difficult to
          accomplish, so I may want to add the hack.
 
-       - Make text items rich.  I.e. allow multiple characteristics to
-         exist within a single object.
-
        - Add a mini style preview for barcode properties (possibly text too?).
 
        - Eye candy: Create a custom widget to replace spin buttons for
index b517e35bcb48de67e325a929318061f0c97ba33c..87bde91c911afec08f61867a29701267e21b62aa 100644 (file)
@@ -6,10 +6,8 @@ src/glabels.h
 src/glabels-batch.c
 src/splash.c
 src/splash.h
-src/mdi.c
-src/mdi.h
-src/mdi-child.c
-src/mdi-child.h
+src/window.c
+src/window.h
 src/stock.c
 src/stock.h
 src/ui.h
@@ -128,10 +126,6 @@ src/color.c
 src/color.h
 src/canvas-hacktext.c
 src/canvas-hacktext.h
-src/bonobo-mdi-child.c
-src/bonobo-mdi-child.h
-src/bonobo-mdi.c
-src/bonobo-mdi.h
 src/gnome-recent-model.c
 src/gnome-recent-model.h
 src/gnome-recent-util.c
index a50c6a1ae7bb5d215b3318a18e15cdbc9c94d6a7..be37c9f75306202bcc594cf687303c841536d9f7 100644 (file)
@@ -44,13 +44,10 @@ BUILT_SOURCES =                     \
 
 glabels_SOURCES =                      \
        glabels.c                       \
-       glabels.h                       \
        splash.c                        \
        splash.h                        \
-       mdi.c                           \
-       mdi.h                           \
-       mdi-child.c                     \
-       mdi-child.h                     \
+       window.c                        \
+       window.h                        \
        stock.c                         \
        stock.h                         \
        ui.h                            \
@@ -169,10 +166,6 @@ glabels_SOURCES =                  \
        color.h                         \
        canvas-hacktext.c               \
        canvas-hacktext.h               \
-       bonobo-mdi-child.c              \
-       bonobo-mdi-child.h              \
-       bonobo-mdi.c                    \
-       bonobo-mdi.h                    \
        gnome-recent-model.c            \
        gnome-recent-model.h            \
        gnome-recent-util.c             \
diff --git a/glabels2/src/bonobo-mdi-child.c b/glabels2/src/bonobo-mdi-child.c
deleted file mode 100644 (file)
index 09dd381..0000000
+++ /dev/null
@@ -1,316 +0,0 @@
-/*
- * bonobo-mdi-child.c - implementation of a BonoboMDI object
- *
- * Copyright (C) 2001-2002 Free Software Foundation
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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.
- *
- * Author: Paolo Maggi 
- */
-
-#include "bonobo-mdi-child.h"
-
-struct _BonoboMDIChildPrivate
-{
-       GObject         *parent;
-
-       gchar           *name;
-       GList           *views;
-};
-
-enum {
-       NAME_CHANGED,
-       LAST_SIGNAL
-};
-
-static void       bonobo_mdi_child_class_init       (BonoboMDIChildClass *klass);
-static void       bonobo_mdi_child_instance_init    (BonoboMDIChild *);
-static void       bonobo_mdi_child_finalize         (GObject *);
-
-static GtkWidget *bonobo_mdi_child_set_label        (BonoboMDIChild *, GtkWidget *, gpointer);
-static GtkWidget *bonobo_mdi_child_create_view      (BonoboMDIChild *);
-
-static void bonobo_mdi_child_real_name_changed (BonoboMDIChild *child, gchar* old_name);
-
-static GObjectClass *parent_class = NULL;
-static guint mdi_child_signals [LAST_SIGNAL] = { 0 };
-
-GType
-bonobo_mdi_child_get_type (void)
-{
-       static GType bonobo_mdi_child_type = 0;
-
-       if (bonobo_mdi_child_type == 0)
-       {
-               static const GTypeInfo our_info =
-               {
-                       sizeof (BonoboMDIChildClass),
-                       NULL,           /* base_init */
-                       NULL,           /* base_finalize */
-                       (GClassInitFunc) bonobo_mdi_child_class_init,
-                       NULL,           /* class_finalize */
-                       NULL,           /* class_data */
-                       sizeof (BonoboMDIChild),
-                       0,              /* n_preallocs */
-                       (GInstanceInitFunc) bonobo_mdi_child_instance_init
-               };
-
-               bonobo_mdi_child_type = g_type_register_static (G_TYPE_OBJECT,
-                                                   "BonoboMDIChild",
-                                                           &our_info,
-                                                           0);
-       }
-
-       return bonobo_mdi_child_type;
-}
-
-static void 
-bonobo_mdi_child_class_init (BonoboMDIChildClass *klass)
-{
-       GObjectClass *gobject_class;
-
-       parent_class = g_type_class_peek_parent (klass);
-
-       gobject_class = (GObjectClass*)klass;
-  
-       gobject_class->finalize = bonobo_mdi_child_finalize;
-  
-       klass->create_view = NULL;
-       klass->get_config_string = NULL;
-       klass->set_label = bonobo_mdi_child_set_label;
-
-       klass->name_changed = bonobo_mdi_child_real_name_changed;
-
-       mdi_child_signals[NAME_CHANGED] =
-               g_signal_new ("name_changed",
-                             G_OBJECT_CLASS_TYPE (gobject_class),
-                             G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
-                             G_STRUCT_OFFSET (BonoboMDIChildClass, name_changed),
-                             NULL, NULL,
-                             g_cclosure_marshal_VOID__STRING,
-                             G_TYPE_NONE, 
-                             1, 
-                             G_TYPE_STRING);
-}
-
-static void
-bonobo_mdi_child_instance_init (BonoboMDIChild *mdi_child)
-{
-       g_return_if_fail (BONOBO_IS_MDI_CHILD (mdi_child));
-
-       mdi_child->priv = g_new0 (BonoboMDIChildPrivate, 1);
-       
-       mdi_child->priv->name = NULL;
-       mdi_child->priv->parent = NULL;
-       mdi_child->priv->views = NULL;
-}
-
-
-/* the default set_label function: returns a GtkLabel with child->priv->name
- * if you provide your own, it should return a new widget if its old_label
- * parameter is NULL and modify and return the old widget otherwise. it
- * should (obviously) NOT call the parent class handler!
- */
-static GtkWidget *
-bonobo_mdi_child_set_label (BonoboMDIChild *child, GtkWidget *old_label, gpointer data)
-{
-       g_return_val_if_fail (BONOBO_IS_MDI_CHILD (child), NULL);
-       g_return_val_if_fail (child->priv != NULL, NULL);
-
-       if (old_label != NULL) 
-       {
-               gtk_label_set_text (GTK_LABEL (old_label), child->priv->name);
-               return old_label;
-       }
-       else 
-       {
-               GtkWidget *label;
-
-               label = gtk_label_new (child->priv->name);
-               gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
-               
-               return label;
-       }
-}
-
-static void 
-bonobo_mdi_child_finalize (GObject *obj)
-{
-       BonoboMDIChild *mdi_child;
-
-       g_return_if_fail (BONOBO_IS_MDI_CHILD (obj));
-
-       mdi_child = BONOBO_MDI_CHILD (obj);
-       g_return_if_fail (mdi_child->priv != NULL);
-
-       while (mdi_child->priv->views)
-               bonobo_mdi_child_remove_view (mdi_child, 
-                               GTK_WIDGET (mdi_child->priv->views->data));
-
-       if (mdi_child->priv->name != NULL)
-               g_free (mdi_child->priv->name);
-
-       if (mdi_child->priv != NULL)
-               g_free (mdi_child->priv);
-       
-       if (G_OBJECT_CLASS (parent_class)->finalize)
-               (* G_OBJECT_CLASS (parent_class)->finalize)(obj);
-}
-
-/**
- * bonobo_mdi_child_add_view:
- * @mdi_child: A pointer to a BonoboMDIChild object.
- * 
- * Description:
- * Creates a new view of a child (a GtkWidget) adds it to the list
- * of the views and returns a pointer to it. Virtual function
- * that has to be specified for classes derived from BonoboMDIChild
- * is used to create the new view.
- * 
- * Return value:
- * A pointer to the new view.
- **/
-GtkWidget *
-bonobo_mdi_child_add_view (BonoboMDIChild *mdi_child)
-{
-       GtkWidget *view = NULL;
-
-       g_return_val_if_fail (BONOBO_IS_MDI_CHILD (mdi_child), NULL);
-       g_return_val_if_fail (mdi_child->priv != NULL, NULL);
-
-       view = bonobo_mdi_child_create_view (mdi_child);
-
-       if (view) {
-               mdi_child->priv->views = g_list_append (mdi_child->priv->views, view);
-
-               g_object_set_data (G_OBJECT (view), "BonoboMDIChild", mdi_child);
-       }
-
-       return view;
-}
-
-/**
- * bonobo_mdi_child_remove_view:
- * @mdi_child: A pointer to a BonoboMDIChild object.
- * @view: View to be removed.
- * 
- * Description:
- * Removes view @view from the list of @mdi_child's views and
- * unrefs it.
- **/
-void 
-bonobo_mdi_child_remove_view (BonoboMDIChild *mdi_child, GtkWidget *view)
-{
-       g_return_if_fail (BONOBO_IS_MDI_CHILD (mdi_child));
-       g_return_if_fail (mdi_child->priv != NULL);
-       g_return_if_fail (GTK_IS_WIDGET (view));
-
-       mdi_child->priv->views = g_list_remove (mdi_child->priv->views, view);
-
-       g_object_unref (G_OBJECT (view));       
-}
-
-/**
- * bonobo_mdi_child_set_name:
- * @mdi_child: A pointer to a BonoboMDIChild object.
- * @name: String containing the new name for the child.
- * 
- * Description:
- * Changes name of @mdi_child to @name. @name is duplicated and stored
- * in @mdi_child. If @mdi_child has already been added to BonoboMDI,
- * it also takes care of updating it.
- **/
-void 
-bonobo_mdi_child_set_name (BonoboMDIChild *mdi_child, const gchar *name)
-{
-       gchar *old_name;
-               
-       g_return_if_fail (BONOBO_IS_MDI_CHILD (mdi_child));
-       g_return_if_fail (mdi_child->priv != NULL);
-
-       old_name = mdi_child->priv->name;
-
-       if (old_name == name)
-               return;
-       
-       mdi_child->priv->name = (gchar *)g_strdup (name);
-
-       g_signal_emit (G_OBJECT (mdi_child),
-                      mdi_child_signals [NAME_CHANGED], 0,
-                      old_name);
-
-       if (old_name)
-               g_free (old_name);
-}
-
-static GtkWidget *
-bonobo_mdi_child_create_view (BonoboMDIChild *child)
-{
-       g_return_val_if_fail (BONOBO_IS_MDI_CHILD (child), NULL);
-
-       if (BONOBO_MDI_CHILD_GET_CLASS (child)->create_view)
-               return BONOBO_MDI_CHILD_GET_CLASS (child)->create_view (child, NULL);
-
-       return NULL;
-}
-
-static void 
-bonobo_mdi_child_real_name_changed (BonoboMDIChild *child, gchar* old_name)
-{
-       g_return_if_fail (BONOBO_IS_MDI_CHILD (child));
-
-       return;
-}
-
-gchar * 
-bonobo_mdi_child_get_name (const BonoboMDIChild *mdi_child)
-{
-       g_return_val_if_fail (BONOBO_IS_MDI_CHILD (mdi_child), NULL);
-       g_return_val_if_fail (mdi_child->priv != NULL, NULL);
-
-       if (mdi_child->priv->name)
-               return g_strdup (mdi_child->priv->name);
-       else
-               return NULL;
-}
-
-GList *              
-bonobo_mdi_child_get_views (const BonoboMDIChild *mdi_child)
-{
-       g_return_val_if_fail (BONOBO_IS_MDI_CHILD (mdi_child), NULL);
-       g_return_val_if_fail (mdi_child->priv != NULL, NULL);
-
-       return mdi_child->priv->views;
-}
-
-GObject *
-bonobo_mdi_child_get_parent (const BonoboMDIChild *mdi_child)
-{
-       g_return_val_if_fail (BONOBO_IS_MDI_CHILD (mdi_child), NULL);
-       g_return_val_if_fail (mdi_child->priv != NULL, NULL);
-
-       return G_OBJECT (mdi_child->priv->parent);
-       
-}
-
-void
-bonobo_mdi_child_set_parent (BonoboMDIChild *mdi_child, GObject *parent)
-{
-       g_return_if_fail (BONOBO_IS_MDI_CHILD (mdi_child));
-       g_return_if_fail (mdi_child->priv != NULL);
-
-       mdi_child->priv->parent = parent;
-}
diff --git a/glabels2/src/bonobo-mdi-child.h b/glabels2/src/bonobo-mdi-child.h
deleted file mode 100644 (file)
index 49d9b66..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * bonobo-mdi-child.h - definition of a BonoboMDI object
- *
- * Copyright (C) 2001-2002 Free Software Foundation
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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.
- *
- * Author: Paolo Maggi 
- */
-
-#ifndef _BONOBO_MDI_CHILD_H_
-#define _BONOBO_MDI_CHILD_H_
-
-#include <gtk/gtk.h>
-#include <bonobo/bonobo-window.h>
-
-#define BONOBO_TYPE_MDI_CHILD            (bonobo_mdi_child_get_type ())
-#define BONOBO_MDI_CHILD(obj)            (GTK_CHECK_CAST ((obj), BONOBO_TYPE_MDI_CHILD, BonoboMDIChild))
-#define BONOBO_MDI_CHILD_CLASS(klass)    (GTK_CHECK_CLASS_CAST ((klass), BONOBO_TYPE_MDI_CHILD, BonoboMDIChildClass))
-#define BONOBO_IS_MDI_CHILD(obj)         (GTK_CHECK_TYPE ((obj), BONOBO_TYPE_MDI_CHILD))
-#define BONOBO_IS_MDI_CHILD_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), BONOBO_TYPE_MDI_CHILD))
-#define BONOBO_MDI_CHILD_GET_CLASS(obj)  (GTK_CHECK_GET_CLASS ((obj), BONOBO_TYPE_MDI_CHILD, BonoboMDIChildClass))
-
-/* BonoboMDIChild
- * is an abstract class. In order to use it, you have to either derive a
- * new class from it and set the proper virtual functions in its parent
- * BonoboMDIChildClass structure or use the BonoboMDIGenericChild class
- * that allows to specify the relevant functions on a per-instance basis
- * and can directly be used with BonoboMDI.
- */
-
-typedef struct _BonoboMDIChildPrivate BonoboMDIChildPrivate;
-
-typedef struct
-{
-       GObject object;
-
-       BonoboMDIChildPrivate *priv;
-} BonoboMDIChild;
-
-
-typedef GtkWidget *(*BonoboMDIChildViewCreator) (BonoboMDIChild *, gpointer);
-typedef GList     *(*BonoboMDIChildMenuCreator) (BonoboMDIChild *, GtkWidget *, gpointer);
-typedef gchar     *(*BonoboMDIChildConfigFunc)  (BonoboMDIChild *, gpointer);
-typedef GtkWidget *(*BonoboMDIChildLabelFunc)   (BonoboMDIChild *, GtkWidget *, gpointer);
-
-/* 
- * Note that if you override the set_label virtual function, it should return
- * a new widget if its GtkWidget* parameter is NULL and modify and return the
- * old widget otherwise.
- * (see bonobo-mdi-child.c/bonobo_mdi_child_set_book_label() for an example).
- */
-
-typedef struct
-{
-       GObjectClass parent_class;
-
-       /* Virtual functions */
-       BonoboMDIChildViewCreator create_view;
-       BonoboMDIChildConfigFunc  get_config_string;
-       BonoboMDIChildLabelFunc   set_label;
-
-       void (* name_changed)           (BonoboMDIChild *mdi_child, gchar* old_name);
-
-} BonoboMDIChildClass;
-
-GType         bonobo_mdi_child_get_type         (void) G_GNUC_CONST;
-
-GtkWidget    *bonobo_mdi_child_add_view        (BonoboMDIChild *mdi_child);
-void          bonobo_mdi_child_remove_view      (BonoboMDIChild *mdi_child, 
-                                                GtkWidget *view);
-
-GList        *bonobo_mdi_child_get_views        (const BonoboMDIChild *mdi_child);
-
-void          bonobo_mdi_child_set_name         (BonoboMDIChild *mdi_child, 
-                                                const gchar *name);
-gchar        *bonobo_mdi_child_get_name         (const BonoboMDIChild *mdi_child);
-
-void          bonobo_mdi_child_set_parent       (BonoboMDIChild *mdi_child, 
-                                                GObject *parent);
-GObject      *bonobo_mdi_child_get_parent       (const BonoboMDIChild *mdi_child);
-
-G_END_DECLS
-
-#endif /* _BONOBO_MDI_CHILD_H_ */
-
-
-
diff --git a/glabels2/src/bonobo-mdi.c b/glabels2/src/bonobo-mdi.c
deleted file mode 100644 (file)
index fb30969..0000000
+++ /dev/null
@@ -1,2197 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * bonobo-mdi.c - implementation of a BonoboMDI object
- *
- * Copyright (C) 2001-2002 Free Software Foundation
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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.
- *
- * Author: Paolo Maggi 
- */
-
-/*
- * Modified by the gedit Team, 2001-2002. See the AUTHORS file for a 
- * list of people on the gedit Team.  
- * See the ChangeLog files for a list of changes. 
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "bonobo-mdi.h"
-
-#include <bonobo/bonobo-i18n.h>
-#include <marshal.h>
-#include <bonobo/bonobo-dock-layout.h>
-#include <bonobo/bonobo-ui-util.h>
-
-#include "debug.h"
-
-#include <string.h>
-#include <time.h>
-#include <unistd.h>
-
-#define BONOBO_MDI_KEY                 "BonoboMDI"
-#define BONOBO_MDI_CHILD_KEY   "BonoboMDIChild"
-#define UI_COMPONENT_KEY       "UIComponent"
-#define BOOK_KEY               "Book"
-#define WINDOW_INFO_KEY                "BonoboMDIWindowInfo"
-
-static void            bonobo_mdi_class_init     (BonoboMDIClass  *);
-static void            bonobo_mdi_instance_init  (BonoboMDI *);
-static void            bonobo_mdi_finalize       (GObject *);
-static void            child_list_menu_create    (BonoboMDI *, BonoboWindow *);
-
-static void            child_list_activated_cb   (BonoboUIComponent *uic, gpointer user_data, 
-                                                 const gchar* verbname);
-
-void                   child_list_menu_remove_item(BonoboMDI *, BonoboMDIChild *);
-void                   child_list_menu_add_item   (BonoboMDI *, BonoboMDIChild *);
-
-static void            app_create               (BonoboMDI *, gchar *, const char *);
-static void            app_clone                (BonoboMDI *, BonoboWindow *, const char *);
-static void            app_destroy              (BonoboWindow *, BonoboMDI *);
-static void            app_set_view             (BonoboMDI *, BonoboWindow *, GtkWidget *);
-
-static gboolean        app_close_book           (BonoboWindow *, GdkEventAny *, BonoboMDI *);
-
-static GtkWidget      *book_create                     (BonoboMDI *);
-static void            book_switch_page         (GtkNotebook *, GtkNotebookPage *,
-                                                gint, BonoboMDI *);
-static gboolean        book_motion              (GtkWidget *widget, GdkEventMotion *e,
-                                                gpointer data);
-static gboolean        book_button_press        (GtkWidget *widget, GdkEventButton *e,
-                                                gpointer data);
-static gboolean        book_button_release      (GtkWidget *widget, GdkEventButton *e,
-                                                gpointer data);
-static void            book_add_view            (GtkNotebook *, GtkWidget *);
-static void            set_page_by_widget       (GtkNotebook *, GtkWidget *);
-
-static gboolean        toplevel_focus           (BonoboWindow *, GdkEventFocus *, BonoboMDI *);
-
-static void            set_active_view          (BonoboMDI *, GtkWidget *);
-
-/* convenience functions that call child's "virtual" functions */
-static GtkWidget      *child_set_label         (BonoboMDIChild *, GtkWidget *);
-
-static void           child_name_changed       (BonoboMDIChild *mdi_child, 
-                                                gchar* old_name, 
-                                                BonoboMDI *mdi);
-static void            bonobo_mdi_update_child         (BonoboMDI *mdi, BonoboMDIChild *child);
-
-static gchar*         escape_underscores       (const gchar* text);
-
-static GtkWidget*      get_book_from_window    (BonoboWindow *window);
-
-static GdkCursor *drag_cursor = NULL;
-
-enum {
-       ADD_CHILD,
-       REMOVE_CHILD,
-       ADD_VIEW,
-       REMOVE_VIEW,
-       CHILD_CHANGED,
-       VIEW_CHANGED,
-       TOP_WINDOW_CREATED,
-       TOP_WINDOW_DESTROY,
-       ALL_WINDOWS_DESTROYED,
-       LAST_SIGNAL
-};
-
-
-struct _BonoboMDIPrivate
-{
-       GtkPositionType tab_pos;
-
-       guint            signal_id;
-       gint             in_drag : 1;
-
-       gchar           *mdi_name; 
-       gchar           *title;
-
-       gchar           *ui_xml;
-       gchar           *ui_file_name;
-       BonoboUIVerb    *verbs;
-
-       /* Probably only one of these would do, but... redundancy rules ;) */
-       BonoboMDIChild  *active_child;
-       GtkWidget       *active_view;  
-       BonoboWindow    *active_window;
-
-       GList           *windows;       /* toplevel windows -  BonoboWindow widgets */
-       GList           *children;      /* children - BonoboMDIChild objects*/
-
-       GSList          *registered;    /* see comment for bonobo_mdi_(un)register() functions 
-                                        * below for an explanation. */
-       
-       /* Paths for insertion of mdi-child list menu via */
-       gchar           *child_list_path;
-
-       gint             default_window_height;
-       gint             default_window_width;
-};
-
-typedef gboolean   (*BonoboMDISignal1) (GObject *, gpointer, gpointer);
-typedef void       (*BonoboMDISignal2) (GObject *, gpointer, gpointer);
-
-static GObjectClass *parent_class = NULL;
-static guint mdi_signals [LAST_SIGNAL] = { 0 };
-
-GType
-bonobo_mdi_get_type (void)
-{
-       static GType bonobo_mdi_type = 0;
-
-       if (bonobo_mdi_type == 0)
-       {
-               static const GTypeInfo our_info =
-               {
-                       sizeof (BonoboMDIClass),
-                       NULL,           /* base_init */
-                       NULL,           /* base_finalize */
-                       (GClassInitFunc) bonobo_mdi_class_init,
-                       NULL,           /* class_finalize */
-                       NULL,           /* class_data */
-                       sizeof (BonoboMDI),
-                       0,              /* n_preallocs */
-                       (GInstanceInitFunc) bonobo_mdi_instance_init
-               };
-
-               bonobo_mdi_type = g_type_register_static (G_TYPE_OBJECT,
-                                                   "BonoboMDI",
-                                                           &our_info,
-                                                           0);
-       }
-
-       return bonobo_mdi_type;
-}
-
-static void 
-bonobo_mdi_class_init (BonoboMDIClass *class)
-{
-       GObjectClass *object_class;
-       
-       object_class = (GObjectClass*) class;
-       
-       object_class->finalize = bonobo_mdi_finalize;
-
-       mdi_signals[ADD_CHILD] = 
-               g_signal_new ("add_child",
-                             G_OBJECT_CLASS_TYPE (object_class),
-                             G_SIGNAL_RUN_LAST,
-                             G_STRUCT_OFFSET (BonoboMDIClass, add_child),
-                             NULL, NULL,
-                             gl_marshal_BOOLEAN__OBJECT,
-                             G_TYPE_BOOLEAN, 
-                             1, 
-                             BONOBO_TYPE_MDI_CHILD);
-       
-       mdi_signals[REMOVE_CHILD] = 
-               g_signal_new ("remove_child",
-                             G_OBJECT_CLASS_TYPE (object_class),
-                             G_SIGNAL_RUN_LAST,
-                             G_STRUCT_OFFSET (BonoboMDIClass, remove_child),
-                             NULL, NULL,
-                             gl_marshal_BOOLEAN__OBJECT,
-                             G_TYPE_BOOLEAN, 
-                             1, 
-                             BONOBO_TYPE_MDI_CHILD);
-       
-       mdi_signals[ADD_VIEW] = 
-               g_signal_new ("add_view",
-                             G_OBJECT_CLASS_TYPE (object_class),
-                             G_SIGNAL_RUN_LAST,
-                             G_STRUCT_OFFSET (BonoboMDIClass, add_view),
-                             NULL, NULL,                            
-                             gl_marshal_BOOLEAN__OBJECT,
-                             G_TYPE_BOOLEAN, 
-                             1, 
-                             GTK_TYPE_WIDGET);
-       
-       mdi_signals[REMOVE_VIEW] = 
-               g_signal_new ("remove_view",
-                             G_OBJECT_CLASS_TYPE (object_class),
-                             G_SIGNAL_RUN_LAST,
-                             G_STRUCT_OFFSET (BonoboMDIClass, remove_view),
-                             NULL, NULL,
-                             gl_marshal_BOOLEAN__OBJECT,
-                             G_TYPE_BOOLEAN, 
-                             1, 
-                             GTK_TYPE_WIDGET);
-
-       mdi_signals[CHILD_CHANGED] = 
-               g_signal_new ("child_changed",
-                             G_OBJECT_CLASS_TYPE (object_class),
-                             G_SIGNAL_RUN_LAST,
-                             G_STRUCT_OFFSET (BonoboMDIClass, child_changed),
-                             NULL, NULL,
-                             g_cclosure_marshal_VOID__OBJECT,
-                             G_TYPE_NONE, 
-                             1, 
-                             BONOBO_TYPE_MDI_CHILD);
-
-       mdi_signals[VIEW_CHANGED] = 
-               g_signal_new ("view_changed",
-                             G_OBJECT_CLASS_TYPE (object_class),
-                             G_SIGNAL_RUN_LAST,
-                             G_STRUCT_OFFSET(BonoboMDIClass, view_changed),
-                             NULL, NULL,
-                             g_cclosure_marshal_VOID__OBJECT,
-                             G_TYPE_NONE, 
-                             1, 
-                             GTK_TYPE_WIDGET);
-
-       mdi_signals[TOP_WINDOW_CREATED] = 
-               g_signal_new ("top_window_created",
-                             G_OBJECT_CLASS_TYPE (object_class),
-                             G_SIGNAL_RUN_LAST,
-                             G_STRUCT_OFFSET (BonoboMDIClass, top_window_created),
-                             NULL, NULL,
-                             g_cclosure_marshal_VOID__OBJECT,
-                             G_TYPE_NONE, 
-                             1, 
-                             BONOBO_TYPE_WINDOW);
-
-       mdi_signals[TOP_WINDOW_DESTROY] = 
-               g_signal_new ("top_window_destroy",
-                             G_OBJECT_CLASS_TYPE (object_class),
-                             G_SIGNAL_RUN_LAST,
-                             G_STRUCT_OFFSET (BonoboMDIClass, top_window_destroy),
-                             NULL, NULL,
-                             g_cclosure_marshal_VOID__OBJECT,
-                             G_TYPE_NONE, 
-                             1, 
-                             BONOBO_TYPE_WINDOW);
-
-       mdi_signals[ALL_WINDOWS_DESTROYED] = 
-               g_signal_new ("all_windows_destroyed",
-                             G_OBJECT_CLASS_TYPE (object_class),
-                             G_SIGNAL_RUN_LAST,
-                             G_STRUCT_OFFSET (BonoboMDIClass, all_windows_destroyed),
-                             NULL, NULL,
-                             g_cclosure_marshal_VOID__VOID,
-                             G_TYPE_NONE, 
-                             0);
-
-       
-       class->add_child                = NULL;
-       class->remove_child             = NULL;
-       class->add_view                 = NULL;
-       class->remove_view              = NULL;
-       class->child_changed            = NULL;
-       class->view_changed             = NULL;
-       class->top_window_created       = NULL;
-
-       parent_class = gtk_type_class (G_TYPE_OBJECT);
-}
-
-static void 
-bonobo_mdi_finalize (GObject *object)
-{
-       BonoboMDI *mdi;
-
-       gl_debug (DEBUG_MDI, "");
-
-       g_return_if_fail (BONOBO_IS_MDI (object));
-       
-       mdi = BONOBO_MDI (object);
-       g_return_if_fail (mdi->priv != NULL);
-       
-       bonobo_mdi_remove_all (mdi, TRUE);
-
-       if (mdi->priv->child_list_path != NULL)
-               g_free (mdi->priv->child_list_path);
-       
-       if (mdi->priv->mdi_name != NULL)
-               g_free (mdi->priv->mdi_name);
-       
-       if (mdi->priv->title != NULL)
-               g_free (mdi->priv->title);
-
-       if (mdi->priv->ui_xml != NULL)
-               g_free (mdi->priv->ui_xml);
-       
-       if (mdi->priv->ui_file_name != NULL)
-               g_free (mdi->priv->ui_file_name);
-       
-       g_free (mdi->priv);
-       mdi->priv = NULL;
-
-       if (G_OBJECT_CLASS (parent_class)->finalize)
-               (* G_OBJECT_CLASS (parent_class)->finalize)(object);
-
-       gl_debug (DEBUG_MDI, "END");
-}
-
-
-static void 
-bonobo_mdi_instance_init (BonoboMDI *mdi)
-{
-       gl_debug (DEBUG_MDI, "");
-
-       g_return_if_fail (BONOBO_IS_MDI (mdi));
-
-       mdi->priv = g_new0 (BonoboMDIPrivate, 1);
-       g_return_if_fail (mdi->priv != NULL);
-               
-       mdi->priv->tab_pos              = GTK_POS_TOP;
-               
-       mdi->priv->signal_id            = 0;
-       mdi->priv->in_drag              = FALSE;
-
-       mdi->priv->children             = NULL;
-       mdi->priv->windows              = NULL;
-       mdi->priv->registered           = NULL;
-       
-       mdi->priv->active_child         = NULL;
-       mdi->priv->active_window        = NULL;
-       mdi->priv->active_view          = NULL;
-
-       mdi->priv->ui_xml               = NULL;
-       mdi->priv->ui_file_name         = NULL;
-       mdi->priv->verbs                = NULL; 
-       
-       mdi->priv->child_list_path      = NULL;
-
-       gl_debug (DEBUG_MDI, "END");
-}
-
-
-/**
- * bonobo_mdi_new:
- * @mdi_name: Application name as used in filenames and paths.
- * @title: Title of the application windows.
- * 
- * Description:
- * Creates a new MDI object. @mdi_name and @title are used for
- * MDI's calling bonobo_window_new (). 
- * 
- * Return value:
- * A pointer to a new BonoboMDI object.
- **/
-GObject*
-bonobo_mdi_new (const gchar *mdi_name, const gchar *title,
-               gint default_window_width, gint default_window_height) 
-{
-       BonoboMDI *mdi;
-
-       gl_debug (DEBUG_MDI, "");
-       
-       mdi = g_object_new (BONOBO_TYPE_MDI, NULL);
-  
-       mdi->priv->mdi_name = g_strdup (mdi_name);
-       mdi->priv->title    = g_strdup (title);
-
-       mdi->priv->default_window_width = default_window_width;
-       mdi->priv->default_window_height = default_window_height;
-
-       gl_debug (DEBUG_MDI, "END");
-
-       return G_OBJECT (mdi);
-}
-
-static GtkWidget *
-child_set_label (BonoboMDIChild *child, GtkWidget *label)
-{
-       GtkWidget *w;
-       w = BONOBO_MDI_CHILD_GET_CLASS (child)->set_label (child, label, NULL);
-       
-       return w;
-}
-
-static void 
-set_page_by_widget (GtkNotebook *book, GtkWidget *view)
-{
-       gint i;
-       
-       i = gtk_notebook_page_num (book, view);
-       
-       if (gtk_notebook_get_current_page (book) != i)
-               gtk_notebook_set_current_page (book, i);
-}
-
-static void 
-child_list_activated_cb (BonoboUIComponent *uic, gpointer user_data, const gchar* verbname)
-{
-       BonoboMDI* mdi;
-       BonoboMDIChild *child = BONOBO_MDI_CHILD (user_data);
-       g_return_if_fail (child != NULL);
-
-       gl_debug (DEBUG_MDI, "");
-
-       mdi = BONOBO_MDI (g_object_get_data (G_OBJECT (child), BONOBO_MDI_KEY));
-       g_return_if_fail (mdi != NULL);
-               
-       if (child && (child != mdi->priv->active_child)) 
-       {
-               GList *views = bonobo_mdi_child_get_views (child);
-               
-               if (views)
-                       bonobo_mdi_set_active_view (mdi, views->data);
-               else
-                       bonobo_mdi_add_view (mdi, child);
-       }
-
-       gl_debug (DEBUG_MDI, "END");
-}
-
-static gchar* 
-escape_underscores (const gchar* text)
-{
-       GString *str;
-       gint length;
-       const gchar *p;
-       const gchar *end;
-
-       g_return_val_if_fail (text != NULL, NULL);
-
-       length = strlen (text);
-
-       str = g_string_new ("");
-
-       p = text;
-       end = text + length;
-
-       while (p != end)
-       {
-               const gchar *next;
-               next = g_utf8_next_char (p);
-
-               switch (*p)
-               {
-                               case '_':
-                               g_string_append (str, "__");
-                               break;
-                       default:
-                               g_string_append_len (str, p, next - p);
-                               break;
-               }
-
-               p = next;
-       }
-
-       return g_string_free (str, FALSE);
-}
-
-static void 
-child_list_menu_create (BonoboMDI *mdi, BonoboWindow *win)
-{
-       GList *child;
-       BonoboUIComponent *ui_component;
-
-       if (mdi->priv->child_list_path == NULL)
-               return;
-       
-       ui_component = BONOBO_UI_COMPONENT (
-                       g_object_get_data (G_OBJECT (win), UI_COMPONENT_KEY));
-                       
-       child = mdi->priv->children;
-       
-       bonobo_ui_component_freeze (ui_component, NULL);
-       
-       while (child) 
-       {
-               gchar *xml = NULL;
-               gchar *cmd = NULL;
-               gchar *verb_name = NULL;
-               gchar *tip;
-               gchar *escaped_name;
-               gchar *safe_name;
-               gchar *child_name = bonobo_mdi_child_get_name (BONOBO_MDI_CHILD (child->data));
-
-               safe_name = g_markup_escape_text (child_name, strlen (child_name));
-               g_return_if_fail (safe_name != NULL);
-
-               escaped_name = escape_underscores (safe_name);
-               g_return_if_fail (escaped_name != NULL);
-
-               tip =  g_strdup_printf (_("Activate %s"), safe_name);
-               verb_name = g_strdup_printf ("Child_%p", child->data);
-               xml = g_strdup_printf ("<menuitem name=\"%s\" verb=\"%s\""
-                               " _label=\"%s\"/>", verb_name, verb_name, escaped_name);
-               cmd =  g_strdup_printf ("<cmd name = \"%s\" _label=\"%s\""
-                               " _tip=\"%s\"/>", verb_name, escaped_name, tip);
-
-               g_free (tip);
-               g_free (child_name);
-               g_free (safe_name);
-               g_free (escaped_name);
-
-               bonobo_ui_component_set_translate (ui_component, mdi->priv->child_list_path, xml, NULL);
-               bonobo_ui_component_set_translate (ui_component, "/commands/", cmd, NULL);
-               bonobo_ui_component_add_verb (ui_component, verb_name, child_list_activated_cb, child->data); 
-               
-               g_free (xml); 
-               g_free (cmd);
-               g_free (verb_name);
-
-               child = g_list_next (child);
-       }
-
-       bonobo_ui_component_thaw (ui_component, NULL);
-}
-
-
-void 
-child_list_menu_remove_item (BonoboMDI *mdi, BonoboMDIChild *child)
-{
-       GList *win_node;
-       gchar *path, *cmd, *verb_name;
-       
-       gl_debug (DEBUG_MDI, "");
-
-       if(mdi->priv->child_list_path == NULL)
-               return;
-       
-       win_node = mdi->priv->windows;
-
-       verb_name = g_strdup_printf ("Child_%p", child);
-       path = g_strdup_printf ("%s%s", mdi->priv->child_list_path, verb_name);
-       cmd = g_strdup_printf ("/commands/%s", verb_name);
-
-       while (win_node) 
-       {
-               BonoboUIComponent *ui_component;
-               
-               ui_component = BONOBO_UI_COMPONENT (
-                       g_object_get_data (G_OBJECT (win_node->data), UI_COMPONENT_KEY));
-               
-               bonobo_ui_component_remove_verb (ui_component, verb_name);
-               bonobo_ui_component_rm (ui_component, path, NULL);
-               bonobo_ui_component_rm (ui_component, cmd, NULL);
-               win_node = g_list_next (win_node);
-       }
-
-       g_free (path);
-       g_free (cmd);
-       g_free (verb_name);
-
-       gl_debug (DEBUG_MDI, "END");
-}
-
-
-void 
-child_list_menu_add_item (BonoboMDI *mdi, BonoboMDIChild *child)
-{
-       GList *win_node;
-       gchar *child_name, *escaped_name, *safe_name;
-       gchar* xml, *cmd, *verb_name, *tip;
-       int accel_num;
-       
-       if(mdi->priv->child_list_path == NULL)
-               return;
-
-       accel_num = g_list_length (mdi->priv->children);
-       
-       win_node = mdi->priv->windows;
-
-       child_name = bonobo_mdi_child_get_name (child);
-
-       safe_name = g_markup_escape_text (child_name, strlen (child_name));
-       g_return_if_fail (safe_name != NULL);
-
-       escaped_name = escape_underscores (safe_name);
-       g_return_if_fail (escaped_name != NULL);
-
-       verb_name = g_strdup_printf ("Child_%p", child);
-       
-       tip = g_strdup_printf (_("Activate %s"), safe_name);
-       xml = g_strdup_printf ("<menuitem name=\"%s\" verb=\"%s\""
-                               " _label=\"%s\"/>", verb_name, verb_name, escaped_name);
-
-       if (accel_num > 9)
-               cmd =  g_strdup_printf ("<cmd name = \"%s\" _label=\"%s\""
-                               " _tip=\"%s\"/>", verb_name, escaped_name, tip);
-       else
-               cmd =  g_strdup_printf ("<cmd name = \"%s\" _label=\"%s\""
-                       " _tip=\"%s\" accel=\"*Alt*%d\"/>", verb_name,
-                       escaped_name, tip, accel_num);
-
-       
-       while (win_node) 
-       {
-               BonoboUIComponent *ui_component;
-               
-               ui_component = BONOBO_UI_COMPONENT (
-                       g_object_get_data (G_OBJECT (win_node->data), UI_COMPONENT_KEY));
-               
-
-               bonobo_ui_component_set_translate (ui_component, mdi->priv->child_list_path, xml, NULL);
-               bonobo_ui_component_set_translate (ui_component, "/commands/", cmd, NULL);
-               bonobo_ui_component_add_verb (ui_component, verb_name, child_list_activated_cb, child); 
-
-               win_node = g_list_next (win_node);
-       }
-       
-       g_free (tip);
-       g_free (escaped_name);
-       g_free (child_name);
-       g_free (xml);
-       g_free (cmd);
-       g_free (verb_name);
-       g_free (safe_name);
-}
-
-static gboolean 
-book_motion (GtkWidget *widget, GdkEventMotion *e, gpointer data)
-{
-       BonoboMDI *mdi;
-
-       mdi = BONOBO_MDI (data);
-
-       if (!drag_cursor)
-               drag_cursor = gdk_cursor_new (GDK_HAND2);
-
-       if (e->window == GTK_NOTEBOOK (widget)->event_window) 
-       {
-               mdi->priv->in_drag = TRUE;
-               gtk_grab_add (widget);
-               gdk_pointer_grab (widget->window, FALSE,
-                                                GDK_POINTER_MOTION_MASK |
-                                                GDK_BUTTON_RELEASE_MASK, NULL,
-                                                drag_cursor, GDK_CURRENT_TIME);
-               if (mdi->priv->signal_id) 
-               {
-                       g_signal_handler_disconnect (G_OBJECT (widget), 
-                                                    mdi->priv->signal_id);
-                       mdi->priv->signal_id = 0;
-               }
-       }
-
-       return FALSE;
-}
-
-static gboolean 
-book_button_press (GtkWidget *widget, GdkEventButton *e, gpointer data)
-{
-       BonoboMDI *mdi;
-
-       mdi = BONOBO_MDI (data);
-
-       if ((e->button == 1) && (e->window == GTK_NOTEBOOK (widget)->event_window))
-               mdi->priv->signal_id = g_signal_connect (
-                               G_OBJECT (widget), 
-                               "motion_notify_event",
-                               G_CALLBACK (book_motion), 
-                               mdi);
-
-       return FALSE;
-}
-
-static gboolean
-book_button_release (GtkWidget *widget, GdkEventButton *e, gpointer data)
-{
-       gint x = e->x_root, y = e->y_root;
-       BonoboMDI *mdi;
-
-       mdi = BONOBO_MDI(data);
-       
-       if (mdi->priv->signal_id) 
-       {
-               g_signal_handler_disconnect (G_OBJECT (widget), mdi->priv->signal_id);
-               mdi->priv->signal_id = 0;
-       }
-
-       if ((e->button == 1) && mdi->priv->in_drag) 
-       {       
-               GdkWindow *window;
-               GList *child;
-               BonoboWindow *win;
-               GtkWidget *view, *new_book;
-               GtkNotebook *old_book = GTK_NOTEBOOK (widget);
-
-               mdi->priv->in_drag = FALSE;
-               gdk_pointer_ungrab (GDK_CURRENT_TIME);
-               gtk_grab_remove (widget);
-
-               window = gdk_window_at_pointer (&x, &y);
-               if (window)
-                       window = gdk_window_get_toplevel (window);
-
-               child = mdi->priv->windows;
-               
-               while (child) 
-               {
-                       if (window == GTK_WIDGET (child->data)->window) 
-                       {
-                               int cur_page;
-
-                               /* page was dragged to another notebook */
-
-                               old_book = GTK_NOTEBOOK(widget);
-                               new_book = get_book_from_window (BONOBO_WINDOW (child->data));
-
-                               if (old_book == (GtkNotebook *) new_book) 
-                                       /* page has been dropped on the source notebook */
-                                       return FALSE;
-
-                               cur_page = gtk_notebook_get_current_page (GTK_NOTEBOOK (old_book));
-       
-                               if (cur_page >= 0) 
-                               {
-                                       view = gtk_notebook_get_nth_page (GTK_NOTEBOOK (old_book), cur_page);
-                                       gtk_container_remove (GTK_CONTAINER(old_book), view);
-
-                                       book_add_view (GTK_NOTEBOOK (new_book), view);
-
-                                       win = bonobo_mdi_get_window_from_view (view);
-                                       gdk_window_raise (GTK_WIDGET(win)->window);
-
-                                       mdi->priv->active_window = win;
-
-                                       cur_page = gtk_notebook_get_current_page (GTK_NOTEBOOK (old_book));
-
-                                       if (cur_page < 0) 
-                                       {
-                                               mdi->priv->active_window = win;
-                                               win = BONOBO_WINDOW (gtk_widget_get_toplevel (
-                                                                       GTK_WIDGET (old_book)));
-                                               mdi->priv->windows = g_list_remove(mdi->priv->windows, win);
-                                               gtk_widget_destroy (GTK_WIDGET (win));
-                                       }                                       
-                                                                               
-                                       g_signal_emit (G_OBJECT (mdi), 
-                                                      mdi_signals [CHILD_CHANGED], 
-                                                      0,
-                                                      NULL);
-
-                                       g_signal_emit (G_OBJECT (mdi), 
-                                                      mdi_signals [VIEW_CHANGED], 
-                                                      0,
-                                                      view);
-                               }
-
-                               return FALSE;
-                       }
-                               
-                       child = child->next;
-               }
-
-               if (g_list_length (old_book->children) == 1)
-                       return FALSE;
-
-               /* create a new toplevel */
-               if (old_book->cur_page) 
-               {
-                       gint width, height;
-                       int cur_page = gtk_notebook_get_current_page (old_book);
-
-                       view = gtk_notebook_get_nth_page (old_book, cur_page);
-                               
-                       win = bonobo_mdi_get_window_from_view (view);
-
-                       gtk_window_get_size (GTK_WINDOW (win), &width, &height);
-               
-                       gtk_container_remove (GTK_CONTAINER (old_book), view);
-                       
-                       app_clone (mdi, win, NULL);
-                               
-                       new_book = book_create (mdi);
-       
-                       book_add_view (GTK_NOTEBOOK (new_book), view);
-
-                       gtk_window_set_position (GTK_WINDOW (mdi->priv->active_window), GTK_WIN_POS_MOUSE);
-       
-                       gtk_window_set_default_size (GTK_WINDOW (mdi->priv->active_window), width, height);
-
-                       if (!GTK_WIDGET_VISIBLE (mdi->priv->active_window))
-                               gtk_widget_show (GTK_WIDGET (mdi->priv->active_window));
-               }
-       }
-
-       return FALSE;
-}
-
-static GtkWidget *
-book_create (BonoboMDI *mdi)
-{
-       GtkWidget *us;
-       GtkWidget *vbox;
-
-       gl_debug (DEBUG_MDI, "");
-
-       g_return_val_if_fail (mdi->priv->active_window != NULL, NULL);
-       
-       vbox = gtk_vbox_new (FALSE, 0);
-       us = gtk_notebook_new ();
-
-       gtk_notebook_set_tab_pos (GTK_NOTEBOOK (us), mdi->priv->tab_pos);
-
-       gtk_box_pack_start (GTK_BOX (vbox), us, TRUE, TRUE, 0); 
-
-       gtk_widget_show_all (vbox);
-
-       bonobo_window_set_contents (mdi->priv->active_window, vbox);
-       g_object_set_data (G_OBJECT (mdi->priv->active_window), BOOK_KEY, us);
-       
-       gtk_widget_add_events (us, GDK_BUTTON1_MOTION_MASK);
-
-       g_signal_connect (G_OBJECT (us), "switch_page",
-                         G_CALLBACK (book_switch_page), mdi);
-
-       g_signal_connect (G_OBJECT (us), "button_press_event",
-                         G_CALLBACK (book_button_press), mdi);
-       g_signal_connect (G_OBJECT (us), "button_release_event",
-                         G_CALLBACK (book_button_release), mdi);
-
-       gtk_notebook_set_scrollable (GTK_NOTEBOOK (us), TRUE);
-       
-       gl_debug (DEBUG_MDI, "END");
-
-       return us;
-}
-
-static void 
-book_add_view (GtkNotebook *book, GtkWidget *view)
-{
-       BonoboMDIChild *child;
-       GtkWidget *title;
-
-       gl_debug (DEBUG_MDI, "");
-
-       child = bonobo_mdi_get_child_from_view (view);
-
-       title = child_set_label (child, NULL);
-
-       gtk_notebook_append_page (book, view, title);
-
-       if (g_list_length (book->children) > 1)
-               set_page_by_widget (book, view);
-
-       gl_debug (DEBUG_MDI, "END");
-}
-
-static void 
-book_switch_page (GtkNotebook *book, GtkNotebookPage *pg, gint page_num, BonoboMDI *mdi)
-{
-       BonoboWindow *win;
-       GtkWidget *page;
-       
-       gl_debug (DEBUG_MDI, "");
-
-       win = BONOBO_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (book)));
-
-       page = gtk_notebook_get_nth_page (book, page_num);
-
-       if (page != NULL) 
-       {
-               if (page != mdi->priv->active_view)
-                       app_set_view (mdi, win, page);
-       }
-       else 
-               app_set_view (mdi, win, NULL);  
-
-       gl_debug (DEBUG_MDI, "END");
-
-}
-
-static GtkWidget*
-get_book_from_window (BonoboWindow *window)
-{
-       gpointer *book;
-
-       g_return_val_if_fail (window != NULL, NULL);
-
-       book = g_object_get_data (G_OBJECT (window), BOOK_KEY);
-
-       return (book != NULL) ? GTK_WIDGET (book) : NULL;
-}
-
-static gboolean
-toplevel_focus (BonoboWindow *win, GdkEventFocus *event, BonoboMDI *mdi)
-{
-       GtkWidget *contents;
-       
-       gl_debug (DEBUG_MDI, "");
-
-       /* updates active_view and active_child when a new toplevel receives focus */
-       g_return_val_if_fail (BONOBO_IS_WINDOW (win), FALSE);
-       
-       mdi->priv->active_window = win;
-       
-       contents = get_book_from_window (win);
-       
-       if (GTK_NOTEBOOK (contents)->cur_page) 
-       {
-               int cur_page;
-               GtkWidget *child;
-                       
-               cur_page = gtk_notebook_get_current_page (GTK_NOTEBOOK (contents));
-               child = gtk_notebook_get_nth_page (GTK_NOTEBOOK (contents), cur_page);
-               set_active_view (mdi, child);
-       } 
-       else 
-               set_active_view (mdi, NULL);
-       
-       gl_debug (DEBUG_MDI, "END");
-
-       return FALSE;
-}
-
-static gboolean 
-app_configure_event_handler (GtkWidget *widget, GdkEventConfigure *event)
-{
-       BonoboMDIWindowInfo *window_info;
-
-       g_return_val_if_fail (BONOBO_IS_WINDOW (widget), FALSE);
-       g_return_val_if_fail (event != NULL, FALSE);
-       
-       window_info = (BonoboMDIWindowInfo*) 
-                       g_object_get_data (G_OBJECT (widget), WINDOW_INFO_KEY);
-       g_return_val_if_fail (window_info != NULL, FALSE);
-
-       window_info->width = event->width;
-       window_info->height = event->height;
-
-       return FALSE;
-}
-
-static gboolean 
-app_window_state_event_handler (GtkWidget *widget, GdkEventWindowState *event)
-{
-       BonoboMDIWindowInfo *window_info;
-
-       g_return_val_if_fail (BONOBO_IS_WINDOW (widget), FALSE);
-       g_return_val_if_fail (event != NULL, FALSE);
-       
-       window_info = (BonoboMDIWindowInfo*) 
-                       g_object_get_data (G_OBJECT (widget), WINDOW_INFO_KEY);
-       g_return_val_if_fail (window_info != NULL, FALSE);
-       
-       window_info->state = event->new_window_state;
-       
-       return FALSE;
-}
-
-
-static void 
-app_clone (BonoboMDI *mdi, BonoboWindow *win, const char *window_role)
-{
-       gl_debug (DEBUG_MDI, "");
-       
-       app_create (mdi, NULL, window_role);
-
-       if (win != NULL)
-       {
-               const BonoboMDIWindowInfo *window_info = bonobo_mdi_get_window_info (win);
-               g_return_if_fail (window_info != NULL);
-
-               if ((window_info->state & GDK_WINDOW_STATE_MAXIMIZED) != 0)
-                       gtk_window_maximize (GTK_WINDOW (mdi->priv->active_window));
-               else
-               {
-                       gtk_window_set_default_size (GTK_WINDOW (mdi->priv->active_window), 
-                                            window_info->width,
-                                            window_info->height);
-                       
-                       gtk_window_unmaximize (GTK_WINDOW (mdi->priv->active_window));
-               }
-
-               if ((window_info->state & GDK_WINDOW_STATE_STICKY ) != 0)
-                       gtk_window_stick (GTK_WINDOW (mdi->priv->active_window));
-               else
-                       gtk_window_unstick (GTK_WINDOW (mdi->priv->active_window));
-       }
-
-       gl_debug (DEBUG_MDI, "END");
-}
-
-
-static gboolean
-app_close_book (BonoboWindow *win, GdkEventAny *event, BonoboMDI *mdi)
-{
-       BonoboMDIChild *child;
-       GtkWidget *view;
-       gint handler_ret = TRUE;
-       
-       gl_debug (DEBUG_MDI, "");
-
-       if (g_list_length (mdi->priv->windows) == 1) 
-       {               
-               if (!bonobo_mdi_remove_all (mdi, FALSE))
-               {
-                       gl_debug (DEBUG_MDI, "END1");
-
-                       return TRUE;
-               }
-
-               mdi->priv->windows = g_list_remove (mdi->priv->windows, win);
-               gtk_widget_destroy (GTK_WIDGET (win));
-               
-               /* only emit al_windows_destroyed signal if there are no non-MDI windows registered
-                  with it. */
-               if (mdi->priv->registered == NULL)
-                       g_signal_emit (G_OBJECT (mdi), mdi_signals [ALL_WINDOWS_DESTROYED], 0);
-       }
-       else 
-       {
-               GList *children = gtk_container_get_children (
-                                       GTK_CONTAINER (get_book_from_window (win)));
-               GList *li;
-
-               if (children == NULL) 
-               {
-                       mdi->priv->windows = g_list_remove (mdi->priv->windows, win);
-                       gtk_widget_destroy (GTK_WIDGET (win));
-
-                       gl_debug (DEBUG_MDI, "END2");
-
-                       return FALSE;
-               }
-
-               /* first check if all the children in this notebook can be removed */
-               for (li = children; li != NULL; li = li->next) 
-               {
-                       GList *node;
-                       view = li->data;
-
-                       child = bonobo_mdi_get_child_from_view (view);
-                       
-                       node = bonobo_mdi_child_get_views (child);
-                       
-                       while (node) 
-                       {
-                               if (bonobo_mdi_get_window_from_view (node->data) != win)
-                                       break;
-                               
-                               node = node->next;
-                       }
-                       
-                       if (node == NULL) 
-                       {   
-                               /* all the views reside in this BonoboWindow */
-                               g_signal_emit (G_OBJECT(mdi), 
-                                             mdi_signals [REMOVE_CHILD],
-                                             0,
-                                             child, 
-                                             &handler_ret);
-
-                               if (handler_ret == FALSE) 
-                               {
-                                       g_list_free (children);
-
-                                       gl_debug (DEBUG_MDI, "END3");
-
-                                       return TRUE;
-                               }
-                       }
-               }
-               
-               /* now actually remove all children/views! */
-               for (li = children; li != NULL; li = li->next) 
-               {
-                       view = li->data;
-
-                       child = bonobo_mdi_get_child_from_view (view);
-                       
-                       /* if this is the last view, remove the child */
-                       if (g_list_length (bonobo_mdi_child_get_views (child)) == 1)
-                               bonobo_mdi_remove_child (mdi, child, TRUE);
-                       else
-                               bonobo_mdi_remove_view (mdi, view, TRUE);
-               }
-
-               g_list_free (children);
-       }
-
-       gl_debug (DEBUG_MDI, "END");
-       
-       return FALSE;
-}
-
-static void 
-app_set_view (BonoboMDI *mdi, BonoboWindow *win, GtkWidget *view)
-{
-       gl_debug (DEBUG_MDI, "");
-
-       gtk_window_set_title (GTK_WINDOW (win), mdi->priv->title);
-       
-       set_active_view (mdi, view);
-
-       gl_debug (DEBUG_MDI, "END");
-}
-
-static void 
-app_destroy (BonoboWindow *win, BonoboMDI *mdi)
-{
-       gl_debug (DEBUG_MDI, "");
-       
-       if (mdi->priv->active_window == win)
-               mdi->priv->active_window = 
-                       (mdi->priv->windows != NULL) ? BONOBO_WINDOW (mdi->priv->windows->data) : NULL;
-
-       g_signal_emit (G_OBJECT (mdi), mdi_signals [TOP_WINDOW_DESTROY], 0, win);
-
-       gl_debug (DEBUG_MDI, "END");
-}
-
-/* Generates a unique string for a window role.
- *
- * Taken from EOG.
- */
-static char *
-gen_role (void)
-{
-        char *ret;
-       static char *hostname;
-       time_t t;
-       static int serial;
-
-       t = time (NULL);
-
-       if (!hostname) {
-               static char buffer [512];
-
-               if ((gethostname (buffer, sizeof (buffer) - 1) == 0) &&
-                   (buffer [0] != 0))
-                       hostname = buffer;
-               else
-                       hostname = "localhost";
-       }
-
-       ret = g_strdup_printf ("bonobo-mdi-window-%d-%d-%d-%ld-%d@%s",
-                              getpid (),
-                              getgid (),
-                              getppid (),
-                              (long) t,
-                              serial++,
-                              hostname);
-
-       return ret;
-}
-
-static void 
-app_create (BonoboMDI *mdi, gchar *layout_string, const char *window_role)
-{
-       GtkWidget *window;
-       BonoboWindow *bw;
-       gchar* config_path;
-       BonoboUIContainer *ui_container = NULL;
-       BonoboUIComponent *ui_component = NULL;
-       BonoboMDIWindowInfo *window_info = NULL;
-
-       gl_debug (DEBUG_MDI, "");
-
-       window = bonobo_window_new (mdi->priv->mdi_name, mdi->priv->title);
-       g_return_if_fail (window != NULL);
-
-       gtk_window_set_default_size (GTK_WINDOW (window),
-                                    mdi->priv->default_window_width,
-                                    mdi->priv->default_window_height);
-
-       if (window_role)
-               gtk_window_set_role (GTK_WINDOW (window), window_role);
-       else {
-               char *role;
-
-               role = gen_role ();
-               gtk_window_set_role (GTK_WINDOW (window), role);
-               g_free (role);
-       }
-       
-       bw = BONOBO_WINDOW (window);
-
-       mdi->priv->windows = g_list_append (mdi->priv->windows, window);
-
-       g_signal_connect (G_OBJECT (window), "delete_event", 
-                         G_CALLBACK (app_close_book), mdi);
-       g_signal_connect (G_OBJECT (window), "focus_in_event",
-                         G_CALLBACK (toplevel_focus), mdi);
-       g_signal_connect (G_OBJECT (window), "destroy",
-                         G_CALLBACK (app_destroy), mdi);
-       g_signal_connect (G_OBJECT (window), "configure_event",
-                         G_CALLBACK (app_configure_event_handler), NULL);
-       g_signal_connect (G_OBJECT (window), "window_state_event",
-                         G_CALLBACK (app_window_state_event_handler), NULL);
-
-       /* Create Container: */
-       ui_container = bonobo_window_get_ui_container (bw);
-
-       config_path = g_strdup_printf ("/%s/UIConfig/kvps", mdi->priv->mdi_name);
-
-       bonobo_ui_engine_config_set_path (bonobo_window_get_ui_engine (bw),
-                                     config_path);
-       g_free (config_path);
-
-       /* Create a UI component with which to communicate with the window */
-       ui_component = bonobo_ui_component_new_default ();
-
-       /* Associate the BonoboUIComponent with the container */
-       bonobo_ui_component_set_container (
-               ui_component, BONOBO_OBJREF (ui_container), NULL);
-
-       /* set up UI */
-       if (mdi->priv->ui_xml != NULL)
-       {
-               bonobo_ui_component_set_translate (ui_component, 
-                               "/", mdi->priv->ui_xml, NULL);
-       }
-       else
-               if (mdi->priv->ui_file_name)
-               {
-                       bonobo_ui_util_set_ui (ui_component, "", mdi->priv->ui_file_name,
-                                      mdi->priv->mdi_name, NULL);
-               }
-
-       if (mdi->priv->verbs)
-               bonobo_ui_component_add_verb_list_with_data (ui_component, 
-                               mdi->priv->verbs, mdi);
-       
-       mdi->priv->active_window = bw;
-       mdi->priv->active_child = NULL;
-       mdi->priv->active_view = NULL;
-
-       window_info = g_new0 (BonoboMDIWindowInfo, 1);
-                       
-       g_object_set_data (G_OBJECT (bw), UI_COMPONENT_KEY, ui_component);
-       g_object_set_data_full (G_OBJECT (bw), WINDOW_INFO_KEY, window_info, g_free);
-
-       g_signal_emit (G_OBJECT (mdi), mdi_signals [TOP_WINDOW_CREATED], 0, window);
-
-       child_list_menu_create (mdi, bw);
-
-       gl_debug (DEBUG_MDI, "END");
-}
-
-static void 
-set_active_view (BonoboMDI *mdi, GtkWidget *view)
-{
-       BonoboMDIChild *old_child;
-       GtkWidget *old_view;
-               
-       gl_debug (DEBUG_MDI, "");
-
-       old_child = mdi->priv->active_child;
-       old_view = mdi->priv->active_view;
-
-       mdi->priv->active_view = view;
-
-       if (!view) 
-               mdi->priv->active_child = NULL;
-       else
-       {
-               
-               mdi->priv->active_child = bonobo_mdi_get_child_from_view (view);
-               mdi->priv->active_window = bonobo_mdi_get_window_from_view (view);
-       
-               gtk_widget_grab_focus (GTK_WIDGET (view));
-       }
-       
-       if (view == old_view)
-       {
-               gl_debug (DEBUG_MDI, "END1");
-
-               return;
-       }
-       
-       if (mdi->priv->active_child != old_child)
-       {
-               gl_debug (DEBUG_MDI, "Emit child_changed");
-
-               g_signal_emit (G_OBJECT (mdi), mdi_signals [CHILD_CHANGED], 0, old_child);
-       }
-
-       gl_debug (DEBUG_MDI, "Emit view_changed");
-       
-       g_signal_emit (G_OBJECT (mdi), mdi_signals [VIEW_CHANGED], 0, old_view);
-
-       gl_debug (DEBUG_MDI, "END2");
-}
-
-/**
- * bonobo_mdi_set_active_view:
- * @mdi: A pointer to an MDI object.
- * @view: A pointer to the view that is to become the active one.
- * 
- * Description:
- * Sets the active view to @view. It also raises the window containing it
- * and gives it focus.
- **/
-void 
-bonobo_mdi_set_active_view (BonoboMDI *mdi, GtkWidget *view)
-{
-       GtkWindow *window;
-       
-       gl_debug (DEBUG_MDI, "");
-
-       g_return_if_fail (mdi != NULL);
-       g_return_if_fail (BONOBO_IS_MDI (mdi));
-       g_return_if_fail (view != NULL);
-       g_return_if_fail (GTK_IS_WIDGET (view));
-       
-       set_page_by_widget (GTK_NOTEBOOK (view->parent), view);
-       
-       window = GTK_WINDOW (bonobo_mdi_get_window_from_view (view));
-       
-       gtk_window_present (window);
-
-       set_active_view (mdi, view);
-
-       gl_debug (DEBUG_MDI, "END");
-}
-
-/**
- * bonobo_mdi_add_view:
- * @mdi: A pointer to a BonoboMDI object.
- * @child: A pointer to a child.
- * 
- * Description:
- * Creates a new view of the child and adds it to the MDI. BonoboMDIChild
- * @child has to be added to the MDI with a call to bonobo_mdi_add_child
- * before its views are added to the MDI. 
- * An "add_view" signal is emitted to the MDI after the view has been
- * created, but before it is shown and added to the MDI, with a pointer to
- * the created view as its parameter. The view is added to the MDI only if
- * the signal handler (if it exists) returns %TRUE. If the handler returns
- * %FALSE, the created view is destroyed and not added to the MDI. 
- * 
- * Return value:
- * %TRUE if adding the view succeeded and %FALSE otherwise.
- **/
-gboolean 
-bonobo_mdi_add_view (BonoboMDI *mdi, BonoboMDIChild *child)
-{
-       GtkWidget *view;
-       GtkWidget *book;
-       gint ret = TRUE;
-       
-       gl_debug (DEBUG_MDI, "");
-
-       g_return_val_if_fail (mdi != NULL, FALSE);
-       g_return_val_if_fail (BONOBO_IS_MDI (mdi), FALSE);
-       g_return_val_if_fail (child != NULL, FALSE);
-       g_return_val_if_fail (BONOBO_IS_MDI_CHILD (child), FALSE);
-       
-       view = bonobo_mdi_child_add_view (child);
-
-       g_return_val_if_fail (view != NULL, FALSE);
-
-       g_signal_emit (G_OBJECT (mdi), mdi_signals [ADD_VIEW], 0, view, &ret);
-
-       if (!ret) 
-       {
-               bonobo_mdi_child_remove_view (child, view);
-               
-               gl_debug (DEBUG_MDI, "END1");
-
-               return FALSE;
-       }
-
-       if (mdi->priv->active_window == NULL) 
-       {
-               app_create (mdi, NULL, NULL);
-               gtk_widget_show (GTK_WIDGET (mdi->priv->active_window));
-       }
-
-       
-       if (!GTK_WIDGET_VISIBLE (view))
-               gtk_widget_show (view);
-
-       book = get_book_from_window (mdi->priv->active_window);
-       
-       if (book == NULL)
-               book = book_create (mdi);
-       
-       book_add_view (GTK_NOTEBOOK (book), view);
-       
-       /* this reference will compensate the view's unrefing
-          when removed from its parent later, as we want it to
-          stay valid until removed from the child with a call
-          to bonobo_mdi_child_remove_view() */
-       g_object_ref (G_OBJECT (view));
-       gtk_object_sink (GTK_OBJECT (view));
-       
-       g_object_set_data (G_OBJECT (view), BONOBO_MDI_CHILD_KEY, child);
-       
-       gl_debug (DEBUG_MDI, "END2");
-
-       return TRUE;
-}
-
-/**
- * bonobo_mdi_add_toplevel_view:
- * @mdi: A pointer to a BonoboMDI object.
- * @child: A pointer to a BonoboMDIChild object to be added to the MDI.
- * @window_role: X window role to use for the window, for session-management
- * purposes.  If this is %NULL, a unique role string will be automatically
- * generated.
- * 
- * Description:
- * Creates a new view of the child and adds it to the MDI; it behaves the
- * same way as bonobo_mdi_add_view in %BONOBO_MDI_MODAL and %BONOBO_MDI_TOPLEVEL
- * modes, but in %BONOBO_MDI_NOTEBOOK mode, the view is added in a new
- * toplevel window unless the active one has no views in it. 
- * 
- * Return value: 
- * %TRUE if adding the view succeeded and %FALSE otherwise.
- **/
-gboolean
-bonobo_mdi_add_toplevel_view (BonoboMDI *mdi, BonoboMDIChild *child, const char *window_role)
-{
-       GtkWidget *view;
-       gint ret = TRUE;
-       
-       gl_debug (DEBUG_MDI, "");
-
-       g_return_val_if_fail (mdi != NULL, FALSE);
-       g_return_val_if_fail (BONOBO_IS_MDI (mdi), FALSE);
-       g_return_val_if_fail (child != NULL, FALSE);
-       g_return_val_if_fail (BONOBO_IS_MDI_CHILD (child), FALSE);
-       
-       view = bonobo_mdi_child_add_view (child);
-
-       g_return_val_if_fail (view != NULL, FALSE);
-
-       g_signal_emit (G_OBJECT (mdi), mdi_signals [ADD_VIEW], 0, view, &ret);
-
-       if (ret == FALSE) 
-       {
-               bonobo_mdi_child_remove_view (child, view);
-
-               gl_debug (DEBUG_MDI, "END1");
-
-               return FALSE;
-       }
-
-       bonobo_mdi_open_toplevel (mdi, window_role);
-       
-       if (!GTK_WIDGET_VISIBLE (view))
-               gtk_widget_show (view);
-
-       book_add_view (GTK_NOTEBOOK (get_book_from_window (mdi->priv->active_window)), view);
-       
-       /* this reference will compensate the view's unrefing
-          when removed from its parent later, as we want it to
-          stay valid until removed from the child with a call
-          to bonobo_mdi_child_remove_view() */
-       g_object_ref (G_OBJECT (view)); 
-       gtk_object_sink (GTK_OBJECT (view));
-       
-       g_object_set_data (G_OBJECT (view), BONOBO_MDI_CHILD_KEY, child);
-       
-       gl_debug (DEBUG_MDI, "END2");
-
-       return TRUE;
-}
-
-/**
- * bonobo_mdi_remove_view:
- * @mdi: A pointer to a BonoboMDI object.
- * @view: View to remove.
- * @force: If TRUE, the "remove_view" signal is not emitted.
- * 
- * Description:
- * Removes a view from an MDI. 
- * A "remove_view" signal is emitted to the MDI before actually removing
- * view. The view is removed only if the signal handler (if it exists and
- * the @force is set to %FALSE) returns %TRUE. 
- * 
- * Return value: 
- * %TRUE if the view was removed and %FALSE otherwise.
- **/
-gboolean
-bonobo_mdi_remove_view (BonoboMDI *mdi, GtkWidget *view, gint force)
-{
-       GtkWidget *book;
-       BonoboWindow *window;
-       BonoboMDIChild *child;
-       gint ret = TRUE;
-       gint pn;
-       gboolean was_active_window = FALSE;
-               
-       gl_debug (DEBUG_MDI, "");
-       
-       g_return_val_if_fail (mdi != NULL, FALSE);
-       g_return_val_if_fail (BONOBO_IS_MDI (mdi), FALSE);
-       g_return_val_if_fail (view != NULL, FALSE);
-       g_return_val_if_fail (GTK_IS_WIDGET (view), FALSE);
-
-       if (!force)
-               g_signal_emit (G_OBJECT (mdi), mdi_signals [REMOVE_VIEW], 0, view, &ret);
-
-       if (ret == FALSE)
-       {
-               gl_debug (DEBUG_MDI, "END1");
-
-               return FALSE;
-       }
-
-       was_active_window = (view == mdi->priv->active_view);
-       
-       child = bonobo_mdi_get_child_from_view (view);
-       window = bonobo_mdi_get_window_from_view (view);
-       
-       book = get_book_from_window (window);
-       g_return_val_if_fail (book != NULL, TRUE);
-
-       if (g_list_length (GTK_NOTEBOOK (book)->children) == 1)
-               app_set_view (mdi, window, NULL);
-               
-       bonobo_mdi_child_remove_view (child, view);
-
-       pn = gtk_notebook_page_num (GTK_NOTEBOOK (book), view);
-       gtk_notebook_remove_page (GTK_NOTEBOOK (book), pn);
-
-       if (GTK_NOTEBOOK (book)->cur_page == NULL) 
-       {
-               if ((g_list_length (mdi->priv->windows) > 1) || 
-                   (mdi->priv->registered != NULL)) 
-               {
-                       gl_debug (DEBUG_VIEW, "Destroy window");
-
-                       /* if this is NOT the last toplevel or a registered object
-                       exists, destroy the toplevel */
-                       mdi->priv->windows = g_list_remove (mdi->priv->windows, window);
-                       gtk_widget_destroy (GTK_WIDGET (window));
-       
-                       if (mdi->priv->active_window && was_active_window)
-                               mdi->priv->active_view = bonobo_mdi_get_view_from_window (
-                                                                       mdi, 
-                                                                       mdi->priv->active_window);
-               }
-       }
-       else
-       {
-               pn = gtk_notebook_get_current_page (GTK_NOTEBOOK (book));
-               app_set_view (mdi, window, gtk_notebook_get_nth_page (GTK_NOTEBOOK (book), pn));
-       }
-
-               
-       gl_debug (DEBUG_MDI, "END2");
-
-       return TRUE;
-}
-
-static void 
-child_name_changed (BonoboMDIChild *mdi_child, gchar* old_name, BonoboMDI *mdi)
-{
-       bonobo_mdi_update_child (mdi, mdi_child);
-}
-
-/**
- * bonobo_mdi_add_child:
- * @mdi: A pointer to a BonoboMDI object.
- * @child: A pointer to a BonoboMDIChild to add to the MDI.
- * 
- * Description:
- * Adds a new child to the MDI. No views are added: this has to be done with
- * a call to bonobo_mdi_add_view. 
- * First an "add_child" signal is emitted to the MDI with a pointer to the
- * child as its parameter. The child is added to the MDI only if the signal
- * handler (if it exists) returns %TRUE. If the handler returns %FALSE, the
- * child is not added to the MDI. 
- * 
- * Return value: 
- * %TRUE if the child was added successfully and %FALSE otherwise.
- **/
-gint 
-bonobo_mdi_add_child (BonoboMDI *mdi, BonoboMDIChild *child)
-{
-       gint ret = TRUE;
-
-       gl_debug (DEBUG_MDI, "");
-
-       g_return_val_if_fail (mdi != NULL, FALSE);
-       g_return_val_if_fail (BONOBO_IS_MDI (mdi), FALSE);
-       g_return_val_if_fail (child != NULL, FALSE);
-       g_return_val_if_fail (BONOBO_IS_MDI_CHILD (child), FALSE);
-
-       g_signal_emit (G_OBJECT (mdi), mdi_signals [ADD_CHILD], 0, child, &ret);
-
-       if (ret == FALSE)
-       {
-               gl_debug (DEBUG_MDI, "END1");
-
-               return FALSE;
-       }
-
-       bonobo_mdi_child_set_parent (child, G_OBJECT (mdi));
-
-       mdi->priv->children = g_list_append (mdi->priv->children, child);
-
-       g_signal_connect (G_OBJECT (child), "name_changed",
-                         G_CALLBACK (child_name_changed), mdi);
-
-       child_list_menu_add_item (mdi, child);
-
-       g_object_set_data (G_OBJECT (child), BONOBO_MDI_KEY, mdi);
-
-       gl_debug (DEBUG_MDI, "END2");
-
-       return TRUE;
-}
-
-/**
- * bonobo_mdi_remove_child:
- * @mdi: A pointer to a BonoboMDI object.
- * @child: Child to remove.
- * @force: If TRUE, the "remove_child" signal is not emitted
- * 
- * Description:
- * Removes a child and all of its views from the MDI. 
- * A "remove_child" signal is emitted to the MDI with @child as its parameter
- * before actually removing the child. The child is removed only if the signal
- * handler (if it exists and the @force is set to %FALSE) returns %TRUE. 
- * 
- * Return value: 
- * %TRUE if the removal was successful and %FALSE otherwise.
- **/
-gint 
-bonobo_mdi_remove_child (BonoboMDI *mdi, BonoboMDIChild *child, gint force)
-{
-       gint ret = TRUE;
-       GList *view_node;
-       GtkWidget *view;
-
-       gl_debug (DEBUG_MDI, "");
-       
-       g_return_val_if_fail (mdi != NULL, FALSE);
-       g_return_val_if_fail (BONOBO_IS_MDI (mdi), FALSE);
-       g_return_val_if_fail (child != NULL, FALSE);
-       g_return_val_if_fail (BONOBO_IS_MDI_CHILD (child), FALSE);
-
-       /* if force is set to TRUE, don't call the remove_child handler (ie there is no way for the
-          user to stop removal of the child) */
-
-       if (!force)
-               g_signal_emit (G_OBJECT (mdi), mdi_signals [REMOVE_CHILD], 0, child, &ret);
-
-       if (ret == FALSE)
-       {
-               gl_debug (DEBUG_MDI, "END1");
-
-               return FALSE;
-       }
-
-       view_node = bonobo_mdi_child_get_views (child);
-       
-       while (view_node) 
-       {
-               view = GTK_WIDGET (view_node->data);
-               view_node = view_node->next;
-               bonobo_mdi_remove_view (mdi, GTK_WIDGET (view), TRUE);
-       }
-
-       mdi->priv->children = g_list_remove (mdi->priv->children, child);
-
-       child_list_menu_remove_item (mdi, child);
-
-       if (child == mdi->priv->active_child)
-               mdi->priv->active_child = NULL;
-
-       bonobo_mdi_child_set_parent (child, NULL);
-
-       g_signal_handlers_disconnect_by_func (G_OBJECT (child), G_CALLBACK (child_name_changed), mdi);
-
-       g_object_unref (G_OBJECT (child));
-
-       gl_debug (DEBUG_MDI, "END2");
-
-       return TRUE;
-}
-
-/**
- * bonobo_mdi_remove_all:
- * @mdi: A pointer to a BonoboMDI object.
- * @force: If TRUE, the "remove_child" signal is not emitted
- * 
- * Description:
- * Removes all children and all views from the MDI. 
- * A "remove_child" signal is emitted to the MDI for each child before
- * actually trying to remove any. If signal handlers for all children (if
- * they exist and the @force is set to %FALSE) return %TRUE, all children
- * and their views are removed and none otherwise. 
- * 
- * Return value:
- * %TRUE if the removal was successful and %FALSE otherwise.
- **/
-gint 
-bonobo_mdi_remove_all (BonoboMDI *mdi, gint force)
-{
-       GList *child_node;
-       gint handler_ret = TRUE;
-
-       gl_debug (DEBUG_MDI, "");
-
-       g_return_val_if_fail (mdi != NULL, FALSE);
-       g_return_val_if_fail (BONOBO_IS_MDI (mdi), FALSE);
-
-       /* first check if removal of any child will be prevented by the
-          remove_child signal handler */
-       if (!force) 
-       {
-               child_node = mdi->priv->children;
-               while (child_node) 
-               {
-                       g_signal_emit (G_OBJECT (mdi), 
-                                      mdi_signals [REMOVE_CHILD],
-                                      0,
-                                      child_node->data, 
-                                      &handler_ret);
-
-                       /* if any of the children may not be removed, none will be */
-                       if (handler_ret == FALSE)
-                       {
-                               gl_debug (DEBUG_MDI, "END1");
-
-                               return FALSE;
-                       }
-
-                       child_node = child_node->next;
-               }
-       }
-
-       /* remove all the children with force arg set to true so that remove_child
-          handlers are not called again */
-       while (mdi->priv->children)
-               bonobo_mdi_remove_child (mdi, BONOBO_MDI_CHILD (mdi->priv->children->data), TRUE);
-
-       gl_debug (DEBUG_MDI, "END2");
-
-       return TRUE;
-}
-
-/**
- * bonobo_mdi_open_toplevel:
- * @mdi: A pointer to a BonoboMDI object.
- * @window_role: X window role to use for the window, for session-management
- * purposes.  If this is %NULL, a unique role string will be automatically
- * generated.
- * 
- * Description:
- * Opens a new toplevel window. This is usually used only for opening
- * the initial window on startup (just before calling gtkmain()) if no
- * windows were open because a session was restored or children were added
- * because of command line args).
- **/
-void 
-bonobo_mdi_open_toplevel (BonoboMDI *mdi, const char *window_role)
-{
-       gl_debug (DEBUG_MDI, "");
-
-       g_return_if_fail (mdi != NULL);
-       g_return_if_fail (BONOBO_IS_MDI (mdi));
-
-       app_clone (mdi, mdi->priv->active_window, window_role);
-
-       book_create (mdi);
-               
-       gtk_widget_show (GTK_WIDGET (mdi->priv->active_window));
-
-       gl_debug (DEBUG_MDI, "END1");
-}
-
-/**
- * bonobo_mdi_update_child:
- * @mdi: A pointer to a BonoboMDI object.
- * @child: Child to update.
- * 
- * Description:
- * Updates all notebook labels of @child's views and their window titles
- * after its name changes. It is not required if bonobo_mdi_child_set_name()
- * is used for setting the child's name.
- **/
-static void 
-bonobo_mdi_update_child (BonoboMDI *mdi, BonoboMDIChild *child)
-{
-       GtkWidget *view, *title;
-       GList *view_node;
-       GList *win_node;
-       gchar* child_name, *path, *path_cmd, *tip, *escaped_name;
-
-       gl_debug (DEBUG_MDI, "");
-
-       g_return_if_fail (mdi != NULL);
-       g_return_if_fail (BONOBO_IS_MDI (mdi));
-       g_return_if_fail (child != NULL);
-       g_return_if_fail (BONOBO_IS_MDI_CHILD (child));
-
-       view_node = bonobo_mdi_child_get_views (child);
-       
-       while (view_node) 
-       {
-               view = GTK_WIDGET (view_node->data);
-
-               title = child_set_label (child, NULL);
-               
-               gtk_notebook_set_tab_label (GTK_NOTEBOOK (view->parent), view, title);
-               
-               view_node = g_list_next (view_node);
-       }
-
-       /* Update child list menus */   
-       if(mdi->priv->child_list_path == NULL)
-       {
-               gl_debug (DEBUG_MDI, "END1");
-
-               return;
-       }
-       
-       win_node = mdi->priv->windows;
-
-       child_name = bonobo_mdi_child_get_name (child);
-       escaped_name = escape_underscores (child_name);
-       path = g_strdup_printf ("%sChild_%p", mdi->priv->child_list_path, child);
-       path_cmd =  g_strdup_printf ("/commands/Child_%p", child);
-       tip = g_strdup_printf (_("Activate %s"), child_name);
-                       
-       while (win_node) 
-       {
-               BonoboUIComponent *ui_component;
-               
-               ui_component = BONOBO_UI_COMPONENT (
-                       g_object_get_data (G_OBJECT (win_node->data), UI_COMPONENT_KEY));
-
-               bonobo_ui_component_set_prop (ui_component, path, "label", escaped_name, NULL);
-               bonobo_ui_component_set_prop (ui_component, path, "tip", tip, NULL);
-
-               win_node = g_list_next (win_node);
-       }
-
-       g_free (escaped_name);
-       g_free (path);
-       g_free (path_cmd);
-       g_free (tip);
-       g_free (child_name);
-
-       gl_debug (DEBUG_MDI, "END2");
-}
-
-/**
- * bonobo_mdi_find_child:
- * @mdi: A pointer to a BonoboMDI object.
- * @name: A string with a name of the child to find.
- * 
- * Description:
- * Finds a child named @name.
- * 
- * Return value: 
- * A pointer to the BonoboMDIChild object if the child was found and NULL
- * otherwise.
- **/
-BonoboMDIChild *
-bonobo_mdi_find_child (BonoboMDI *mdi, const gchar *name)
-{
-       GList *child_node;
-
-       gl_debug (DEBUG_MDI, "");
-
-       g_return_val_if_fail (mdi != NULL, NULL);
-       g_return_val_if_fail (BONOBO_IS_MDI (mdi), NULL);
-
-       child_node = mdi->priv->children;
-       while (child_node) 
-       {
-               gchar* child_name = bonobo_mdi_child_get_name (BONOBO_MDI_CHILD (child_node->data));
-                
-               if (strcmp (child_name, name) == 0)
-               {
-                       g_free (child_name);    
-
-                       gl_debug (DEBUG_MDI, "END1");
-
-                       return BONOBO_MDI_CHILD (child_node->data);
-               }
-               
-               g_free (child_name);
-               
-               child_node = g_list_next (child_node);
-       }
-
-       gl_debug (DEBUG_MDI, "END2");
-
-       return NULL;
-}
-
-/**
- * bonobo_mdi_get_active_child:
- * @mdi: A pointer to a BonoboMDI object.
- * 
- * Description:
- * Returns a pointer to the active BonoboMDIChild object.
- * 
- * Return value: 
- * A pointer to the active BonoboMDIChild object. %NULL, if there is none.
- **/
-BonoboMDIChild *
-bonobo_mdi_get_active_child (BonoboMDI *mdi)
-{
-       g_return_val_if_fail (mdi != NULL, NULL);
-       g_return_val_if_fail (BONOBO_IS_MDI (mdi), NULL);
-
-       if (mdi->priv->active_view)
-               return (bonobo_mdi_get_child_from_view (mdi->priv->active_view));
-
-       return NULL;
-}
-
-/**
- * bonobo_mdi_get_active_view:
- * @mdi: A pointer to a BonoboMDI object.
- * 
- * Description:
- * Returns a pointer to the active view (the one with the focus).
- * 
- * Return value: 
- * A pointer to a GtkWidget *.
- **/
-GtkWidget *
-bonobo_mdi_get_active_view (BonoboMDI *mdi)
-{
-       g_return_val_if_fail (mdi != NULL, NULL);
-       g_return_val_if_fail (BONOBO_IS_MDI (mdi), NULL);
-
-       return mdi->priv->active_view;
-}
-
-/**
- * bonobo_mdi_get_active_window:
- * @mdi: A pointer to a BonoboMDI object.
- * 
- * Description:
- * Returns a pointer to the toplevel window containing the active view.
- * 
- * Return value:
- * A pointer to a BonoboWindow that has the focus.
- **/
-BonoboWindow *
-bonobo_mdi_get_active_window (BonoboMDI *mdi)
-{
-       g_return_val_if_fail (mdi != NULL, NULL);
-       g_return_val_if_fail (BONOBO_IS_MDI (mdi), NULL);
-
-       return mdi->priv->active_window;
-}
-
-void 
-bonobo_mdi_set_ui_template (BonoboMDI *mdi, const gchar *xml, BonoboUIVerb verbs[])
-{
-       g_return_if_fail (mdi != NULL);
-       g_return_if_fail (BONOBO_IS_MDI (mdi));
-       g_return_if_fail (xml != NULL);
-
-       if (mdi->priv->ui_xml != NULL)
-              g_free (mdi->priv->ui_xml);
-       
-       mdi->priv->ui_xml = g_strdup (xml);
-
-       /* FIXME */
-       mdi->priv->verbs = verbs;
-}
-
-void          
-bonobo_mdi_set_ui_template_file (BonoboMDI *mdi, const gchar *file_name, BonoboUIVerb verbs[])
-{
-       g_return_if_fail (mdi != NULL);
-       g_return_if_fail (BONOBO_IS_MDI (mdi));
-       g_return_if_fail (file_name != NULL);
-
-       if (mdi->priv->ui_file_name != NULL)
-               g_free (mdi->priv->ui_file_name);
-       
-       mdi->priv->ui_file_name = g_strdup (file_name);
-
-       /* FIXME */
-       mdi->priv->verbs = verbs;
-}
-
-/**
- * bonobo_mdi_set_child_list_path:
- * @mdi: A pointer to a BonoboMDI object.
- * @path: A menu path where the child list menu should be inserted
- * 
- * Description:
- * Sets the position for insertion of menu items used to activate the MDI
- * children that were added to the MDI. See gnome_app_find_menu_pos for
- * details on menu paths. If the path is not set or set to %NULL, these menu
- * items aren't going to be inserted in the MDI menu structure. Note that if
- * you want all menu items to be inserted in their own submenu, you have to
- * create that submenu (and leave it empty, of course).
- **/
-void 
-bonobo_mdi_set_child_list_path (BonoboMDI *mdi, const gchar *path)
-{
-       g_return_if_fail (mdi != NULL);
-       g_return_if_fail (BONOBO_IS_MDI (mdi));
-
-       if (mdi->priv->child_list_path)
-               g_free (mdi->priv->child_list_path);
-
-       mdi->priv->child_list_path = g_strdup (path);
-}
-
-/**
- * bonobo_mdi_register:
- * @mdi: A pointer to a BonoboMDI object.
- * @object: Object to register.
- * 
- * Description:
- * Registers GObject @object with MDI. 
- * This is mostly intended for applications that open other windows besides
- * those opened by the MDI and want to continue to run even when no MDI
- * windows exist (an example of this would be GIMP's window with tools, if
- * the pictures were MDI children). As long as there is an object registered
- * with the MDI, the MDI will not destroy itself when the last of its windows
- * is closed. If no objects are registered, closing the last MDI window
- * results in MDI being destroyed. 
- **/
-void 
-bonobo_mdi_register (BonoboMDI *mdi, GObject *object)
-{
-       if (!g_slist_find (mdi->priv->registered, object))
-               mdi->priv->registered = g_slist_append (mdi->priv->registered, object);
-}
-
-/**
- * bonobo_mdi_unregister:
- * @mdi: A pointer to a BonoboMDI object.
- * @object: Object to unregister.
- * 
- * Description:
- * Removes GObject @object from the list of registered objects. 
- **/
-void 
-bonobo_mdi_unregister (BonoboMDI *mdi, GObject *object)
-{
-       mdi->priv->registered = g_slist_remove (mdi->priv->registered, object);
-}
-
-/**
- * bonobo_mdi_get_child_from_view:
- * @view: A pointer to a GtkWidget.
- * 
- * Description:
- * Returns a child that @view is a view of.
- * 
- * Return value:
- * A pointer to the BonoboMDIChild the view belongs to.
- **/
-BonoboMDIChild *
-bonobo_mdi_get_child_from_view (GtkWidget *view)
-{
-       return BONOBO_MDI_CHILD (g_object_get_data (G_OBJECT(view), BONOBO_MDI_CHILD_KEY));
-}
-
-/**
- * bonobo_mdi_get_window_from_view:
- * @view: A pointer to a GtkWidget.
- * 
- * Description:
- * Returns the toplevel window for this view.
- * 
- * Return value:
- * A pointer to the BonoboWindow containg the specified view.
- **/
-BonoboWindow *
-bonobo_mdi_get_window_from_view (GtkWidget *view)
-{
-       return BONOBO_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (view)));
-}
-
-/**
- * bonobo_mdi_get_view_from_window:
- * @mdi: A pointer to a BonoboMDI object.
- * @win: A pointer to a BonoboWindow widget.
- * 
- * Description:
- * Returns the pointer to the view in the MDI toplevel window @win.
- * If the mode is set to %GNOME_MDI_NOTEBOOK, the view in the current
- * page is returned.
- * 
- * Return value: 
- * A pointer to a view.
- **/
-GtkWidget *
-bonobo_mdi_get_view_from_window (BonoboMDI *mdi, BonoboWindow *win)
-{
-       GtkWidget *book;
-       
-       gl_debug (DEBUG_MDI, "");
-
-       g_return_val_if_fail (mdi != NULL, NULL);
-       g_return_val_if_fail (BONOBO_IS_MDI (mdi), NULL);
-       g_return_val_if_fail (win != NULL, NULL);
-       g_return_val_if_fail (BONOBO_IS_WINDOW (win), NULL);
-
-       book = get_book_from_window (win);
-       g_return_val_if_fail (book != NULL, NULL);
-       
-       if (GTK_NOTEBOOK (book)->cur_page) 
-       {
-               int cur_page = gtk_notebook_get_current_page (GTK_NOTEBOOK (book));
-
-               gl_debug (DEBUG_MDI, "END1");
-
-               return gtk_notebook_get_nth_page (GTK_NOTEBOOK (book), cur_page);
-       } 
-       else 
-       {
-               gl_debug (DEBUG_MDI, "END2");
-
-               return NULL;
-       }
-}
-
-void 
-bonobo_mdi_construct (BonoboMDI *mdi, const gchar* name, const gchar* title,
-               gint default_window_width, gint default_window_height)
-{
-       g_return_if_fail (mdi->priv->mdi_name == NULL);
-       g_return_if_fail (mdi->priv->title == NULL);
-
-       g_return_if_fail (name != NULL);
-       g_return_if_fail (title != NULL);
-
-       mdi->priv->mdi_name = g_strdup (name);
-       mdi->priv->title = g_strdup (title);
-
-       mdi->priv->default_window_width = default_window_width;
-       mdi->priv->default_window_height = default_window_height;
-
-}
-
-GList *
-bonobo_mdi_get_children (BonoboMDI *mdi)
-{
-       g_return_val_if_fail (BONOBO_IS_MDI (mdi), FALSE);
-
-       return mdi->priv->children;
-}
-
-GList *
-bonobo_mdi_get_windows (BonoboMDI *mdi)
-{
-       g_return_val_if_fail (BONOBO_IS_MDI (mdi), FALSE);
-
-       return mdi->priv->windows;
-}
-
-       
-
-BonoboUIComponent*
-bonobo_mdi_get_ui_component_from_window (BonoboWindow* win)
-{
-       return BONOBO_UI_COMPONENT (
-                       g_object_get_data (G_OBJECT (win), UI_COMPONENT_KEY));
-}
-
-const BonoboMDIWindowInfo *
-bonobo_mdi_get_window_info (BonoboWindow *win)
-{
-       return (const BonoboMDIWindowInfo *) 
-                       g_object_get_data (G_OBJECT (win), WINDOW_INFO_KEY);
-}
diff --git a/glabels2/src/bonobo-mdi.h b/glabels2/src/bonobo-mdi.h
deleted file mode 100644 (file)
index 9355687..0000000
+++ /dev/null
@@ -1,204 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * bonobo-mdi.h - definition of a BonoboMDI object
- *
- * Copyright (C) 2001-2002 Free Software Foundation
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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.
- *
- * Author: Paolo Maggi 
- */
-
-/*
- * Modified by the gedit Team, 2001-2002. See the AUTHORS file for a 
- * list of people on the gedit Team.  
- * See the ChangeLog files for a list of changes. 
- */
-
-#ifndef _BONOBO_MDI_H_
-#define _BONOBO_MDI_H_
-
-#include <gtk/gtk.h>
-#include <bonobo/bonobo-window.h>
-#include <bonobo/bonobo-ui-component.h>
-
-
-#include "bonobo-mdi-child.h"
-
-#define BONOBO_TYPE_MDI            (bonobo_mdi_get_type ())
-#define BONOBO_MDI(obj)            (GTK_CHECK_CAST ((obj), BONOBO_TYPE_MDI, BonoboMDI))
-#define BONOBO_MDI_CLASS(klass)    (GTK_CHECK_CLASS_CAST ((klass), BONOBO_TYPE_MDI, BonoboMDIClass))
-#define BONOBO_IS_MDI(obj)         (GTK_CHECK_TYPE ((obj), BONOBO_TYPE_MDI))
-#define BONOBO_IS_MDI_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), BONOBO_TYPE_MDI))
-#define BONOBO_MDI_GET_CLASS(obj)  (GTK_CHECK_GET_CLASS ((obj), BONOBO_TYPE_MDI, BonoboMDIClass))
-
-typedef struct _BonoboMDIPrivate BonoboMDIPrivate;
-
-typedef struct {
-       GObject                  object;
-
-       BonoboMDIPrivate        *priv;
-} BonoboMDI;
-
-typedef struct {
-       GObjectClass    parent_class;
-
-       /* Signals */
-       gboolean        (*add_child)            (BonoboMDI *mdi, BonoboMDIChild *child); 
-       gboolean        (*remove_child)         (BonoboMDI *mdi, BonoboMDIChild *child); 
-       gboolean        (*add_view)             (BonoboMDI *mdi, GtkWidget *view); 
-       gboolean        (*remove_view)          (BonoboMDI *mdi, GtkWidget *view); 
-       void            (*child_changed)        (BonoboMDI *mdi, BonoboMDIChild *child);
-       void            (*view_changed)         (BonoboMDI *mdi, GtkWidget *view);
-       void            (*top_window_created)   (BonoboMDI *mdi, BonoboWindow *window);
-       void            (*top_window_destroy)   (BonoboMDI *mdi, BonoboWindow *window);
-       void            (*all_windows_destroyed)(BonoboMDI *mdi);
-} BonoboMDIClass;
-
-typedef struct _BonoboMDIWindowInfo BonoboMDIWindowInfo;
-
-struct _BonoboMDIWindowInfo {
-       gint width;
-       gint height;
-       
-       GdkWindowState state;
-};
-
-/*
- * description of BonoboMDI signals:
- *
- * gboolean add_child(BonoboMDI *, BonoboMDIChild *)
- * gboolean add_view(BonoboMDI *, GtkWidget *)
- *   are called before actually adding a mdi_child or a view to the MDI. if the handler returns
- *   TRUE, the action proceeds otherwise the mdi_child or view are not added.
- *
- * gboolean remove_child(BonoboMDI *, BonoboMDIChild *)
- * gboolean remove_view(BonoboMDI *, GtkWidget *)
- *   are called before removing mdi_child or view. the handler should return true if the object
- *   is to be removed from MDI
- *
- * void child_changed(BonoboMDI *, BonoboMDIChild *)
- *   gets called each time when active child is changed with the second argument
- *   pointing to the old child. mdi->active_view and mdi->active_child still already
- *   hold the new values
- *
- * void view_changed(BonoboMDI *, GtkWidget *)
- *   is emitted whenever a view is changed, regardless of it being the view of the same child as
- *   the old view or not. the second argument points to the old view, mdi->active_view and
- *   mdi->active_child hold the new values. if the child has also been changed, this signal is
- *   emitted after the child_changed signal.
- * 
- * void top_window_created(BonoboMDI *, BonoboWindow *)
- *   is called with each newly created BonoboWindow to allow the MDI user to customize it (add a
- *   statusbar, toolbars or menubar if the method with ui templates is not sufficient,
- *   etc.).
- *   no contents may be set since BonoboMDI uses them for storing either a view of a child
- *   or a notebook
- */
-
-GType         bonobo_mdi_get_type              (void);
-
-GObject      *bonobo_mdi_new                   (const gchar *mdi_name, 
-                                                const gchar *title,
-                                                gint default_window_width,
-                                                gint default_window_height);
-
-void         bonobo_mdi_construct              (BonoboMDI *mdi, 
-                                                const gchar *name, 
-                                                const gchar *title,
-                                                gint default_window_width,
-                                                gint default_window_height);
-
-/* setting the ui template*/
-void          bonobo_mdi_set_ui_template       (BonoboMDI *mdi, 
-                                                const gchar *xml, 
-                                                BonoboUIVerb verbs[]);
-void          bonobo_mdi_set_ui_template_file  (BonoboMDI *mdi, 
-                                                const gchar *file_name, 
-                                                BonoboUIVerb verbs[]);
-
-void          bonobo_mdi_set_child_list_path   (BonoboMDI *mdi, 
-                                                const gchar *path);
-
-/* manipulating views */
-gboolean      bonobo_mdi_add_view              (BonoboMDI *mdi, 
-                                                BonoboMDIChild *child);
-gboolean      bonobo_mdi_add_toplevel_view     (BonoboMDI *mdi, 
-                                                BonoboMDIChild *child,
-                                                const char *window_role);
-gboolean      bonobo_mdi_remove_view           (BonoboMDI *mdi, 
-                                                GtkWidget *view, 
-                                                gboolean force);
-
-GtkWidget    *bonobo_mdi_get_active_view       (BonoboMDI *mdi);
-void          bonobo_mdi_set_active_view       (BonoboMDI *mdi, 
-                                                GtkWidget *view);
-
-/* manipulating children */
-gint          bonobo_mdi_add_child             (BonoboMDI *mdi, 
-                                                BonoboMDIChild *child);
-gint          bonobo_mdi_remove_child          (BonoboMDI *mdi, 
-                                                BonoboMDIChild *child, 
-                                                gboolean force);
-gint          bonobo_mdi_remove_all            (BonoboMDI *mdi, 
-                                                gboolean force);
-
-void          bonobo_mdi_open_toplevel         (BonoboMDI *mdi,
-                                                const char *window_role);
-
-BonoboMDIChild *bonobo_mdi_get_active_child    (BonoboMDI *mdi);
-BonoboMDIChild *bonobo_mdi_find_child          (BonoboMDI *mdi, 
-                                                const gchar *name);
-
-BonoboWindow   *bonobo_mdi_get_active_window   (BonoboMDI *mdi);
-
-/*
- * the following two functions are here to make life easier if an application
- * creates objects (like opening a window) that should "keep the application
- * alive" even if there are no MDI windows open. any such windows should be
- * registered with the MDI: as long as there is a window registered, the MDI
- * will not destroy itself (even if the last of its windows is closed). on the
- * other hand, closing the last MDI window when no objects are registered
- * with the MDI will result in MDI being gtk_object_destroy()ed.
- */
-void          bonobo_mdi_register              (BonoboMDI *mdi, 
-                                                GObject *object);
-void          bonobo_mdi_unregister            (BonoboMDI *mdi, 
-                                                GObject *object);
-
-/*
- * convenience functions for retrieveing BonoboMDIChild and BonoboApp
- * objects associated with a particular view and for retrieveing the
- * visible view of a certain BonoboWindow.
- */
-BonoboWindow           *bonobo_mdi_get_window_from_view        (GtkWidget *view);
-BonoboMDIChild         *bonobo_mdi_get_child_from_view         (GtkWidget *view);
-GtkWidget              *bonobo_mdi_get_view_from_window        (BonoboMDI *mdi, 
-                                                                BonoboWindow *window);
-
-GList                          *bonobo_mdi_get_children                (BonoboMDI *mdi);
-GList                          *bonobo_mdi_get_windows                 (BonoboMDI *mdi);
-
-BonoboUIComponent      *bonobo_mdi_get_ui_component_from_window (BonoboWindow *win);
-
-/* Utility function to generate unique window roles */
-char *bonobo_mdi_generate_window_role (void);
-
-const BonoboMDIWindowInfo *bonobo_mdi_get_window_info          (BonoboWindow *win);
-
-#endif /* _BONOBO_MDI_H_ */
-
-
index 7d7b34d0fa835c965933125e5859ea3646a32f8c..7812764c681350958986d096392a5d59578c955b 100644 (file)
@@ -27,8 +27,6 @@
 #include <libgnomeui/libgnomeui.h>
 
 #include "commands.h"
-#include "glabels.h"
-#include "mdi-child.h"
 #include "view.h"
 #include "file.h"
 #include "print.h"
@@ -50,9 +48,11 @@ gl_cmd_file_new (BonoboUIComponent *uic,
                 gpointer           user_data,
                 const gchar       *verbname)
 {
-       gl_debug (DEBUG_COMMANDS, "verbname: %s", verbname);
+       glWindow *window = GL_WINDOW (user_data);
+
+       gl_debug (DEBUG_COMMANDS, "");
        
-       gl_file_new ();
+       gl_file_new (GTK_WINDOW(window));
 }
 
 /****************************************************************************/
@@ -63,13 +63,13 @@ gl_cmd_file_open (BonoboUIComponent *uic,
                  gpointer           user_data,
                  const gchar       *verbname)
 {
-       BonoboMDIChild *active_child;
-       
+       glWindow *window = GL_WINDOW (user_data);
+
        gl_debug (DEBUG_COMMANDS, "");
 
-       active_child = bonobo_mdi_get_active_child (BONOBO_MDI (glabels_mdi));
-       
-       gl_file_open ((glMDIChild*) active_child);
+       g_return_if_fail (window && GL_IS_WINDOW(window));
+
+       gl_file_open (GTK_WINDOW(window));
 }
 
 /****************************************************************************/
@@ -80,15 +80,13 @@ gl_cmd_file_save (BonoboUIComponent *uic,
                  gpointer           user_data,
                  const gchar       *verbname)
 {
-       glMDIChild *active_child;
-       
+       glWindow *window = GL_WINDOW (user_data);
+
        gl_debug (DEBUG_COMMANDS, "");
 
-       active_child = GL_MDI_CHILD (bonobo_mdi_get_active_child (BONOBO_MDI (glabels_mdi)));
-       if (active_child == NULL)
-               return;
-       
-       gl_file_save (active_child);
+       g_return_if_fail (window && GL_IS_WINDOW(window));
+
+       gl_file_save (GL_VIEW(window->view)->label, GTK_WINDOW(window));
 }
 
 /****************************************************************************/
@@ -99,15 +97,13 @@ gl_cmd_file_save_as (BonoboUIComponent *uic,
                     gpointer           user_data,
                     const gchar       *verbname)
 {
-       glMDIChild *active_child;
-       
+       glWindow *window = GL_WINDOW (user_data);
+
        gl_debug (DEBUG_COMMANDS, "");
 
-       active_child = GL_MDI_CHILD (bonobo_mdi_get_active_child (BONOBO_MDI (glabels_mdi)));
-       if (active_child == NULL)
-               return;
-       
-       gl_file_save_as (active_child);
+       g_return_if_fail (window && GL_IS_WINDOW(window));
+
+       gl_file_save_as (GL_VIEW(window->view)->label, GTK_WINDOW(window));
 }
 
 /****************************************************************************/
@@ -118,15 +114,13 @@ gl_cmd_file_print (BonoboUIComponent *uic,
                   gpointer           user_data,
                   const gchar       *verbname)
 {
-       glLabel      *label = glabels_get_active_label ();
-       BonoboWindow *win = glabels_get_active_window ();
-       
+       glWindow *window = GL_WINDOW (user_data);
+
        gl_debug (DEBUG_COMMANDS, "");
 
-       g_return_if_fail (label != NULL);
-       g_return_if_fail (win != NULL);
+       g_return_if_fail (window && GL_IS_WINDOW(window));
 
-       gl_print_dialog (label, win);
+       gl_print_dialog (GL_VIEW(window->view)->label, GTK_WINDOW(window));
 
 }
 
@@ -138,37 +132,13 @@ gl_cmd_file_close (BonoboUIComponent *uic,
                   gpointer           user_data,
                   const gchar       *verbname)
 {
-       GtkWidget *active_view;
-       
-       gl_debug (DEBUG_COMMANDS, "");
+       glWindow *window = GL_WINDOW (user_data);
 
-       active_view = GTK_WIDGET (glabels_get_active_view ());
-       
-       if (active_view == NULL)
-               return;
-       
-       glabels_close_x_button_pressed = TRUE;
-       
-       gl_file_close (active_view);
-
-       glabels_close_x_button_pressed = FALSE;
-}
-
-/****************************************************************************/
-/* File->Close_all command.                                                 */
-/****************************************************************************/
-void 
-gl_cmd_file_close_all (BonoboUIComponent *uic,
-                      gpointer           user_data,
-                      const gchar       *verbname)
-{
        gl_debug (DEBUG_COMMANDS, "");
 
-       glabels_close_x_button_pressed = TRUE;
-       
-       gl_file_close_all ();
+       g_return_if_fail (window && GL_IS_WINDOW(window));
 
-       glabels_close_x_button_pressed = FALSE;
+       gl_file_close (window);
 }
 
 /****************************************************************************/
@@ -179,13 +149,13 @@ gl_cmd_file_exit (BonoboUIComponent *uic,
                  gpointer           user_data,
                  const gchar       *verbname)
 {
+       glWindow *window = GL_WINDOW (user_data);
+
        gl_debug (DEBUG_COMMANDS, "");
 
-       glabels_exit_button_pressed = TRUE;
-       
-       gl_file_exit ();        
+       g_return_if_fail (window && GL_IS_WINDOW(window));
 
-       glabels_exit_button_pressed = FALSE;
+       gl_file_exit ();
 }
 
 
@@ -197,12 +167,13 @@ gl_cmd_edit_cut (BonoboUIComponent *uic,
                 gpointer           user_data,
                 const gchar       *verbname)
 {
-       glView* active_view;
+       glWindow *window = GL_WINDOW (user_data);
 
-       active_view = glabels_get_active_view ();
-       g_return_if_fail (active_view);
-       
-       gl_view_cut (active_view); 
+       gl_debug (DEBUG_COMMANDS, "");
+
+       g_return_if_fail (window && GL_IS_WINDOW(window));
+
+       gl_view_cut (GL_VIEW(window->view)); 
 }
 
 /****************************************************************************/
@@ -213,12 +184,13 @@ gl_cmd_edit_copy (BonoboUIComponent *uic,
                  gpointer           user_data,
                  const gchar       *verbname)
 {
-       glView* active_view;
+       glWindow *window = GL_WINDOW (user_data);
 
-       active_view = glabels_get_active_view ();
-       g_return_if_fail (active_view);
-       
-       gl_view_copy (active_view); 
+       gl_debug (DEBUG_COMMANDS, "");
+
+       g_return_if_fail (window && GL_IS_WINDOW(window));
+
+       gl_view_copy (GL_VIEW(window->view)); 
 }
 
 /****************************************************************************/
@@ -229,12 +201,13 @@ gl_cmd_edit_paste (BonoboUIComponent *uic,
                   gpointer           user_data,
                   const gchar       *verbname)
 {
-       glView* active_view;
+       glWindow *window = GL_WINDOW (user_data);
 
-       active_view = glabels_get_active_view ();
-       g_return_if_fail (active_view);
-       
-       gl_view_paste (active_view); 
+       gl_debug (DEBUG_COMMANDS, "");
+
+       g_return_if_fail (window && GL_IS_WINDOW(window));
+
+       gl_view_paste (GL_VIEW(window->view)); 
 }
 
 
@@ -246,12 +219,13 @@ gl_cmd_edit_delete (BonoboUIComponent *uic,
                    gpointer           user_data,
                    const gchar       *verbname)
 {
-       glView* active_view;
+       glWindow *window = GL_WINDOW (user_data);
 
-       active_view = glabels_get_active_view ();
-       g_return_if_fail (active_view);
-       
-       gl_view_delete_selection (active_view); 
+       gl_debug (DEBUG_COMMANDS, "");
+
+       g_return_if_fail (window && GL_IS_WINDOW(window));
+
+       gl_view_delete_selection (GL_VIEW(window->view)); 
 }
 
 
@@ -263,13 +237,13 @@ gl_cmd_edit_select_all (BonoboUIComponent *uic,
                        gpointer           user_data,
                        const gchar       *verbname)
 {
-       glView* active_view;
+       glWindow *window = GL_WINDOW (user_data);
 
-       active_view = glabels_get_active_view ();
+       gl_debug (DEBUG_COMMANDS, "");
 
-       g_return_if_fail (active_view);
-       
-       gl_view_select_all (active_view); 
+       g_return_if_fail (window && GL_IS_WINDOW(window));
+
+       gl_view_select_all (GL_VIEW(window->view)); 
 }
 
 /****************************************************************************/
@@ -280,13 +254,13 @@ gl_cmd_edit_unselect_all (BonoboUIComponent *uic,
                          gpointer           user_data,
                          const gchar       *verbname)
 {
-       glView* active_view;
+       glWindow *window = GL_WINDOW (user_data);
+
+       gl_debug (DEBUG_COMMANDS, "");
 
-       active_view = glabels_get_active_view ();
+       g_return_if_fail (window && GL_IS_WINDOW(window));
 
-       g_return_if_fail (active_view);
-       
-       gl_view_unselect_all (active_view); 
+       gl_view_unselect_all (GL_VIEW(window->view)); 
 }
 
 /****************************************************************************/
@@ -297,20 +271,23 @@ gl_cmd_settings_preferences (BonoboUIComponent *uic,
                             gpointer           user_data,
                             const gchar       *verbname)
 {
+       glWindow *window = GL_WINDOW (user_data);
        static GtkWidget *dlg = NULL;
 
        gl_debug (DEBUG_COMMANDS, "");
 
+       g_return_if_fail (window && GL_IS_WINDOW(window));
+
        if (dlg != NULL)
        {
                gtk_window_present (GTK_WINDOW (dlg));
                gtk_window_set_transient_for (GTK_WINDOW (dlg), 
-                                             GTK_WINDOW (glabels_get_active_window ()));
+                                             GTK_WINDOW(window));
 
                return;
        }
                
-       dlg = gl_prefs_dialog_new (GTK_WINDOW (glabels_get_active_window ()));
+       dlg = gl_prefs_dialog_new (GTK_WINDOW(window));
 
        g_signal_connect (G_OBJECT (dlg), "destroy",
                          G_CALLBACK (gtk_widget_destroyed), &dlg);
@@ -326,10 +303,13 @@ gl_cmd_help_contents (BonoboUIComponent *uic,
                      gpointer           user_data,
                      const gchar       *verbname)
 {
+       glWindow *window = GL_WINDOW (user_data);
        GError *error = NULL;
 
        gl_debug (DEBUG_COMMANDS, "");
 
+       g_return_if_fail (window && GL_IS_WINDOW(window));
+
        gnome_help_display_with_doc_id (NULL, NULL, "glabels.xml", NULL, &error);
        
        if (error != NULL)
@@ -348,6 +328,7 @@ gl_cmd_help_about (BonoboUIComponent *uic,
                   gpointer           user_data,
                   const gchar       *verbname)
 {
+       glWindow *window = GL_WINDOW (user_data);
        static GtkWidget *about = NULL;
        GdkPixbuf        *pixbuf = NULL;
        
@@ -381,6 +362,8 @@ gl_cmd_help_about (BonoboUIComponent *uic,
 
        gl_debug (DEBUG_COMMANDS, "");
 
+       g_return_if_fail (window && GL_IS_WINDOW(window));
+
        if (about != NULL)
        {
                gdk_window_show (about->window);
@@ -399,7 +382,7 @@ gl_cmd_help_about (BonoboUIComponent *uic,
                                pixbuf);
 
        gtk_window_set_transient_for (GTK_WINDOW (about),
-                       GTK_WINDOW (glabels_get_active_window ()));
+                                     GTK_WINDOW (window));
 
        gtk_window_set_destroy_with_parent (GTK_WINDOW (about), TRUE);
 
index d2aca54ba6b04b054404eecf0f3300c6a3a9005f..4da034c26b91783f3507fb639e147e0491d22224 100644 (file)
@@ -55,10 +55,6 @@ void gl_cmd_file_close           (BonoboUIComponent *uic,
                                  gpointer           user_data,
                                  const gchar       *verbname);
 
-void gl_cmd_file_close_all       (BonoboUIComponent *uic,
-                                 gpointer           user_data,
-                                 const gchar       *verbname);
-
 void gl_cmd_file_exit            (BonoboUIComponent *uic,
                                  gpointer           user_data,
                                  const gchar       *verbname);
index 53b2440faf06c88150b9226466644fb2d780067e..ddf0677b5c357a973136fba965f57ee362b2831f 100644 (file)
@@ -45,7 +45,8 @@ gint gl_debug_merge = 0;
 gint gl_debug_commands = 0;
 gint gl_debug_undo = 0;
 gint gl_debug_recent = 0;
-gint gl_debug_mdi = 0;
+gint gl_debug_window = 0;
+gint gl_debug_ui = 0;
 gint gl_debug_media_select = 0;
 gint gl_debug_mini_preview = 0;
 gint gl_debug_wdgt = 0;
@@ -83,7 +84,8 @@ gl_debug (gint   section,
            (gl_debug_commands     && section == GL_DEBUG_COMMANDS)       ||
            (gl_debug_undo         && section == GL_DEBUG_UNDO)           ||
            (gl_debug_recent       && section == GL_DEBUG_RECENT)         ||
-           (gl_debug_mdi          && section == GL_DEBUG_MDI)            ||
+           (gl_debug_window       && section == GL_DEBUG_WINDOW)         ||
+           (gl_debug_ui           && section == GL_DEBUG_UI)             ||
            (gl_debug_media_select && section == GL_DEBUG_MEDIA_SELECT)   ||
            (gl_debug_mini_preview && section == GL_DEBUG_MINI_PREVIEW)   ||
            (gl_debug_wdgt         && section == GL_DEBUG_WDGT) )
index 0b51ecc2f12ce1d80b2cf5c38247da45186aedac..485b54bfc08c2c863ab937739dae20498395ce4a 100644 (file)
@@ -45,7 +45,8 @@ typedef enum {
        GL_DEBUG_UNDO,
        GL_DEBUG_RECENT,
        GL_DEBUG_COMMANDS,
-       GL_DEBUG_MDI,
+       GL_DEBUG_WINDOW,
+       GL_DEBUG_UI,
        GL_DEBUG_MEDIA_SELECT,
        GL_DEBUG_MINI_PREVIEW,
        GL_DEBUG_WDGT,
@@ -64,7 +65,8 @@ extern gint gl_debug_merge;
 extern gint gl_debug_commands;
 extern gint gl_debug_undo;
 extern gint gl_debug_recent;
-extern gint gl_debug_mdi;
+extern gint gl_debug_window;
+extern gint gl_debug_ui;
 extern gint gl_debug_media_select;
 extern gint gl_debug_mini_preview;
 extern gint gl_debug_wdgt;
@@ -85,7 +87,8 @@ extern gint gl_debug_wdgt;
 #define        DEBUG_UNDO      GL_DEBUG_UNDO,    __FILE__, __LINE__, __FUNCTION__
 #define        DEBUG_RECENT    GL_DEBUG_RECENT,  __FILE__, __LINE__, __FUNCTION__
 #define        DEBUG_COMMANDS  GL_DEBUG_COMMANDS,__FILE__, __LINE__, __FUNCTION__
-#define        DEBUG_MDI       GL_DEBUG_MDI,     __FILE__, __LINE__, __FUNCTION__
+#define        DEBUG_WINDOW    GL_DEBUG_WINDOW,  __FILE__, __LINE__, __FUNCTION__
+#define        DEBUG_UI        GL_DEBUG_UI,      __FILE__, __LINE__, __FUNCTION__
 #define        DEBUG_MEDIA_SELECT      GL_DEBUG_MEDIA_SELECT,     __FILE__, __LINE__, __FUNCTION__
 #define        DEBUG_MINI_PREVIEW      GL_DEBUG_MINI_PREVIEW,     __FILE__, __LINE__, __FUNCTION__
 #define        DEBUG_WDGT      GL_DEBUG_WDGT,    __FILE__, __LINE__, __FUNCTION__
index bea137a44f7498ece1a5e59a5cb888dd7d778858..7c498bc73a5b8bdb2a643a5d94843f0efdbea698 100644 (file)
 #include <gnome.h>
 #include <string.h>
 
-#include "glabels.h"
 #include "xml-label.h"
 #include "file.h"
-#include "mdi.h"
 #include "recent.h"
 #include "hig.h"
 #include "alert.h"
@@ -74,18 +72,16 @@ static void save_as_destroy_cb        (GtkWidget         *widget,
 /* "New" menu callback.                                                      */
 /*****************************************************************************/
 void
-gl_file_new (void)
+gl_file_new (GtkWindow *window)
 {
        GtkWidget    *dlg;
-       BonoboWindow *win = glabels_get_active_window ();
 
        gl_debug (DEBUG_FILE, "START");
 
-       g_return_if_fail (glabels_mdi != NULL);
-       g_return_if_fail (win != NULL);
+       g_return_if_fail (window != NULL);
 
        dlg = gl_hig_dialog_new_with_buttons (_("New Label or Card"),
-                                             GTK_WINDOW (win),
+                                             window,
                                              GTK_DIALOG_DESTROY_WITH_PARENT,
                                              GTK_STOCK_OK, GTK_RESPONSE_OK,
                                              GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
@@ -93,6 +89,8 @@ gl_file_new (void)
 
        create_new_dialog_widgets (GL_HIG_DIALOG (dlg));
 
+       g_object_set_data (G_OBJECT (dlg), "parent_window", window);
+
        g_signal_connect (G_OBJECT(dlg), "response",
                          G_CALLBACK (new_response), dlg);
 
@@ -124,8 +122,7 @@ create_new_dialog_widgets (glHigDialog *dlg)
        rotate_sel = gl_wdgt_rotate_label_new ();
        gl_hig_category_add_widget (GL_HIG_CATEGORY(wframe), rotate_sel);
 
-       g_object_set_data (G_OBJECT (dlg), "template_entry",
-                            template_entry);
+       g_object_set_data (G_OBJECT (dlg), "template_entry", template_entry);
        g_object_set_data (G_OBJECT (dlg), "rotate_sel", rotate_sel);
 
        g_signal_connect (G_OBJECT (template_entry), "changed",
@@ -181,9 +178,11 @@ new_response (GtkDialog *dlg,
              gint       response,
              gpointer   user_data)
 {
-       GtkWidget  *template_entry, *rotate_sel;
-       glMDIChild *new_child = NULL;
+       GtkWidget  *template_entry, *rotate_sel, *new_window;
+       glTemplate *template;
+       glLabel    *label;
        gint        ret;
+       glWindow   *window;
 
        gl_debug (DEBUG_FILE, "START");
 
@@ -191,9 +190,9 @@ new_response (GtkDialog *dlg,
        case GTK_RESPONSE_OK:
                template_entry =
                        GTK_WIDGET (g_object_get_data (G_OBJECT (dlg),
-                                                        "template_entry"));
+                                                      "template_entry"));
                rotate_sel = GTK_WIDGET (g_object_get_data (G_OBJECT (dlg),
-                                                             "rotate_sel"));
+                                                           "rotate_sel"));
 
                if (page_size != NULL)
                        g_free (page_size);
@@ -208,20 +207,23 @@ new_response (GtkDialog *dlg,
                rotate_flag =
                        gl_wdgt_rotate_label_get_state (GL_WDGT_ROTATE_LABEL (rotate_sel));
 
-               new_child = gl_mdi_child_new (sheet_name, rotate_flag);
-               gl_debug (DEBUG_FILE, "template set.");
+               template = gl_template_from_name (sheet_name);
 
-               ret = bonobo_mdi_add_child (BONOBO_MDI (glabels_mdi),
-                                           BONOBO_MDI_CHILD (new_child));
-               g_return_if_fail (ret != FALSE);
-               gl_debug (DEBUG_FILE, "Child added.");
+               label = GL_LABEL(gl_label_new ());
+               gl_label_set_template (label, template);
+               gl_label_set_rotate_flag (label, rotate_flag);
 
-               ret = bonobo_mdi_add_view (BONOBO_MDI (glabels_mdi),
-                                          BONOBO_MDI_CHILD (new_child));
-               g_return_if_fail (ret != FALSE);
-               gl_debug (DEBUG_FILE, "View added.");
+               window =
+                       GL_WINDOW (g_object_get_data (G_OBJECT (dlg),
+                                                     "parent_window"));
+               if ( gl_window_is_empty (window) ) {
+                       gl_window_set_label (window, label);
+               } else {
+                       new_window = gl_window_new_from_label (label);
+                       gtk_widget_show_all (new_window);
+               }
+               
 
-               gtk_widget_grab_focus (GTK_WIDGET (glabels_get_active_view ()));
                break;
        }
 
@@ -234,17 +236,16 @@ new_response (GtkDialog *dlg,
 /* "Open" menu callback.                                                     */
 /*****************************************************************************/
 void
-gl_file_open (glMDIChild *active_child)
+gl_file_open (GtkWindow *window)
 {
        GtkFileSelection *fsel;
-       BonoboWindow     *app = glabels_get_active_window ();
 
        gl_debug (DEBUG_FILE, "START");
 
-       g_return_if_fail (app != NULL);
+       g_return_if_fail (window != NULL);
 
        fsel = GTK_FILE_SELECTION (gtk_file_selection_new (_("Open")));
-       gtk_window_set_transient_for (GTK_WINDOW (fsel), GTK_WINDOW (app));
+       gtk_window_set_transient_for (GTK_WINDOW (fsel), window);
        gtk_window_set_title (GTK_WINDOW (fsel), _("Open label"));
 
        g_signal_connect (G_OBJECT (fsel->ok_button), "clicked",
@@ -274,7 +275,6 @@ open_ok (GtkWidget        *widget,
 {
        gchar            *filename;
        GtkWidget        *dlg;
-       glMDIChild       *new_child = NULL;
        gint              ret;
        GnomeRecentModel *recent;
 
@@ -333,11 +333,11 @@ open_ok (GtkWidget        *widget,
 gboolean
 gl_file_open_recent (GnomeRecentView *view,
                     const gchar     *filename,
-                    BonoboWindow    *win)
+                    GtkWindow       *window)
 {
        gl_debug (DEBUG_FILE, "");
 
-       return gl_file_open_real (filename, GTK_WINDOW(win));
+       return gl_file_open_real (filename, window);
 }
 
 /*---------------------------------------------------------------------------*/
@@ -345,18 +345,20 @@ gl_file_open_recent (GnomeRecentView *view,
 /*---------------------------------------------------------------------------*/
 gboolean
 gl_file_open_real (const gchar     *filename,
-                  GtkWindow       *win)
+                  GtkWindow       *window)
 {
        gchar            *abs_filename;
-       glMDIChild       *new_child = NULL;
+       glLabel          *label;
+       glXMLLabelStatus  status;
        GnomeRecentModel *recent;
        gint              ret;
+       GtkWidget        *new_window;
 
        gl_debug (DEBUG_FILE, "START");
 
        abs_filename = gl_util_make_absolute (filename);
-       new_child = gl_mdi_child_new_with_uri (filename, NULL);
-       if (!new_child) {
+       label = gl_xml_label_open (abs_filename, &status);
+       if (!label) {
                GtkWidget *dlg;
                gchar *primary_msg;
 
@@ -365,7 +367,7 @@ gl_file_open_real (const gchar     *filename,
                primary_msg = g_strdup_printf (_("Could not open file \"%s\""),
                                               filename);
 
-               dlg = gl_alert_dialog_new (GTK_WINDOW(win),
+               dlg = gl_alert_dialog_new (window,
                                           GTK_DIALOG_DESTROY_WITH_PARENT,
                                           GTK_MESSAGE_ERROR,
                                           GTK_BUTTONS_CLOSE,
@@ -385,17 +387,12 @@ gl_file_open_real (const gchar     *filename,
 
        } else {
 
-               ret = bonobo_mdi_add_child (BONOBO_MDI (glabels_mdi),
-                                           BONOBO_MDI_CHILD (new_child));
-               g_return_if_fail (ret != FALSE);
-               gl_debug (DEBUG_FILE, "Child added.");
-
-               ret = bonobo_mdi_add_view (BONOBO_MDI (glabels_mdi),
-                                          BONOBO_MDI_CHILD (new_child));
-               g_return_if_fail (ret != FALSE);
-               gl_debug (DEBUG_FILE, "View added.");
-
-               gtk_widget_grab_focus (GTK_WIDGET (glabels_get_active_view ()));
+               if ( gl_window_is_empty (GL_WINDOW(window)) ) {
+                       gl_window_set_label (GL_WINDOW(window), label);
+               } else {
+                       new_window = gl_window_new_from_label (label);
+                       gtk_widget_show_all (new_window);
+               }
 
                recent = gl_recent_get_model ();
                gnome_recent_model_add (recent, abs_filename);
@@ -419,26 +416,23 @@ gl_file_open_real (const gchar     *filename,
 /* "Save" menu callback.                                                     */
 /*****************************************************************************/
 gboolean
-gl_file_save (glMDIChild *child)
+gl_file_save (glLabel   *label,
+             GtkWindow *window)
 {
        glXMLLabelStatus  status;
-       glLabel          *label = NULL;
        GError           *error = NULL;
        gchar            *filename = NULL;
        GnomeRecentModel *recent;
 
        gl_debug (DEBUG_FILE, "");
 
-       g_return_val_if_fail (child != NULL, FALSE);
-       
-       label = child->label;
        g_return_val_if_fail (label != NULL, FALSE);
        
        if (gl_label_is_untitled (label))
        {
                gl_debug (DEBUG_FILE, "Untitled");
 
-               return gl_file_save_as (child);
+               return gl_file_save_as (label, window);
        }
 
        if (!gl_label_is_modified (label))      
@@ -463,7 +457,7 @@ gl_file_save (glMDIChild *child)
                primary_msg = g_strdup_printf (_("Could not save file \"%s\""),
                                               filename);
 
-               dialog = gl_alert_dialog_new (GTK_WINDOW(glabels_get_active_window()),
+               dialog = gl_alert_dialog_new (window,
                                              GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
                                              GTK_MESSAGE_ERROR,
                                              GTK_BUTTONS_CLOSE,
@@ -496,24 +490,24 @@ gl_file_save (glMDIChild *child)
 /* "Save As" menu callback.                                                  */
 /*****************************************************************************/
 gboolean
-gl_file_save_as (glMDIChild *child)
+gl_file_save_as (glLabel   *label,
+                GtkWindow *window)
 {
        GtkFileSelection *fsel;
-       BonoboWindow     *app = glabels_get_active_window ();
        gboolean          saved_flag = FALSE;
        gboolean          destroy_flag = FALSE;
 
        gl_debug (DEBUG_FILE, "START");
 
-       g_return_val_if_fail (child != NULL, FALSE);
-       g_return_val_if_fail (app != NULL, FALSE);
+       g_return_val_if_fail (label != NULL, FALSE);
+       g_return_val_if_fail (window != NULL, FALSE);
 
 
        fsel = GTK_FILE_SELECTION (gtk_file_selection_new (_("Save label as")));
        gtk_window_set_modal (GTK_WINDOW (fsel), TRUE);
-       gtk_window_set_transient_for (GTK_WINDOW (fsel), GTK_WINDOW (app));
+       gtk_window_set_transient_for (GTK_WINDOW (fsel), window);
 
-       g_object_set_data (G_OBJECT (fsel), "child", child);
+       g_object_set_data (G_OBJECT (fsel), "label", label);
        g_object_set_data (G_OBJECT (fsel), "saved_flag", &saved_flag);
 
        g_signal_connect (G_OBJECT (fsel->ok_button), "clicked",
@@ -561,7 +555,6 @@ save_as_ok_cb (GtkWidget        *widget,
 {
        gchar            *raw_filename, *filename;
        GtkWidget        *dlg;
-       glMDIChild       *child;
        glLabel          *label;
        glXMLLabelStatus  status;
        GnomeRecentModel *recent;
@@ -573,15 +566,9 @@ save_as_ok_cb (GtkWidget        *widget,
 
        g_return_if_fail (GTK_IS_FILE_SELECTION (fsel));
 
-       child = g_object_get_data (G_OBJECT(fsel), "child");
+       label = g_object_get_data (G_OBJECT(fsel), "label");
        saved_flag = g_object_get_data (G_OBJECT(fsel), "saved_flag");
 
-       g_return_if_fail (child != NULL);
-       g_return_if_fail (GL_IS_MDI_CHILD (child));
-       gl_debug (DEBUG_FILE, "Got child");
-
-       label = child->label;
-
        /* get the filename */
        raw_filename = g_strdup (gtk_file_selection_get_filename (fsel));
 
@@ -707,61 +694,94 @@ save_as_destroy_cb (GtkWidget *widget,
 /*****************************************************************************/
 /* "Close" menu callback.                                                    */
 /*****************************************************************************/
-void
-gl_file_close (GtkWidget *view)
+gboolean
+gl_file_close (glWindow *window)
 {
-       gint            ret;
-       BonoboMDIChild *child;
+       glView  *view;
+       glLabel *label;
+       gboolean close = TRUE;
 
        gl_debug (DEBUG_FILE, "START");
 
-       g_return_if_fail (view != NULL);
+       g_return_val_if_fail (window && GL_IS_WINDOW(window), TRUE);
 
-       child = bonobo_mdi_get_child_from_view (view);
-       g_return_if_fail (child != NULL);
+       if ( !gl_window_is_empty (window) ) {
 
-       if (g_list_length (bonobo_mdi_child_get_views (child)) > 1)
-       {               
-               ret = bonobo_mdi_remove_view (BONOBO_MDI (glabels_mdi), view, FALSE);
-               gl_debug (DEBUG_FILE, "View removed.");
-       }
-       else
-       {
-               ret = bonobo_mdi_remove_child (BONOBO_MDI (glabels_mdi), child, FALSE);
-               gl_debug (DEBUG_FILE, "Child removed.");
-       }
+               view = GL_VIEW(window->view);
+               label = view->label;
 
-       if (ret)
-               gl_mdi_set_active_window_title (BONOBO_MDI (glabels_mdi));
+               if (gl_label_is_modified (label))       {
+                       GtkWidget *msgbox, *w;
+                       gchar *fname = NULL, *msg = NULL;
+                       gint ret;
+                       gboolean exiting;
 
-       if (bonobo_mdi_get_active_child (BONOBO_MDI (glabels_mdi)) == NULL)
-       {
-               gl_mdi_set_active_window_verbs_sensitivity (BONOBO_MDI (glabels_mdi));
-       }
+                       fname = gl_label_get_short_name (label);
+                       
+                       msg = g_strdup_printf (_("Save changes to document \"%s\" before closing?"),
+                                              fname);
+                       
+                       msgbox = gl_alert_dialog_new (GTK_WINDOW(window),
+                                                     GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
+                                                     GTK_MESSAGE_WARNING,
+                                                     GTK_BUTTONS_NONE,
+                                                     msg,
+                                                     _("Your changes will be lost if you don't save them."));
 
-       gl_debug (DEBUG_FILE, "END");
-}
+                       gtk_dialog_add_button (GTK_DIALOG (msgbox),
+                                              _("Close without saving"),
+                                              GTK_RESPONSE_NO);
 
-/*****************************************************************************/
-/* "Close all"                                                               */
-/*****************************************************************************/
-gboolean
-gl_file_close_all (void)
-{
-       gboolean ret;
+                       gtk_dialog_add_button (GTK_DIALOG (msgbox),
+                                              GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL);
 
-       gl_debug (DEBUG_FILE, "START");
+                       gtk_dialog_add_button (GTK_DIALOG (msgbox),
+                                              GTK_STOCK_SAVE, GTK_RESPONSE_YES);
 
-       ret = bonobo_mdi_remove_all (BONOBO_MDI (glabels_mdi), FALSE);
+                       gtk_dialog_set_default_response (GTK_DIALOG (msgbox), GTK_RESPONSE_YES);
+
+                       gtk_window_set_resizable (GTK_WINDOW (msgbox), FALSE);
+
+                       ret = gtk_dialog_run (GTK_DIALOG (msgbox));
+               
+                       gtk_widget_destroy (msgbox);
+
+                       g_free (fname);
+                       g_free (msg);
+               
+                       switch (ret)
+                       {
+                       case GTK_RESPONSE_YES:
+                               close = gl_file_save (label,
+                                                     GTK_WINDOW(window));
+                               break;
+                       case GTK_RESPONSE_NO:
+                               close = TRUE;
+                               break;
+                       default:
+                               close = FALSE;
+                       }
+
+                       gl_debug (DEBUG_FILE, "CLOSE: %s", close ? "TRUE" : "FALSE");
+               }
+
+       }
+
+       if (close) {
+               gtk_widget_destroy (GTK_WIDGET(window));
+
+               if ( gl_window_get_window_list () == NULL ) {
+                       
+                       gl_debug (DEBUG_FILE, "All windows closed.");
+       
+                       bonobo_main_quit ();
+               }
 
-       if (bonobo_mdi_get_active_child (BONOBO_MDI (glabels_mdi)) == NULL)
-       {
-               gl_mdi_set_active_window_verbs_sensitivity (BONOBO_MDI (glabels_mdi));
        }
 
        gl_debug (DEBUG_FILE, "END");
 
-       return ret;
+       return close;
 }
 
 /*****************************************************************************/
@@ -770,27 +790,18 @@ gl_file_close_all (void)
 void
 gl_file_exit (void)
 {
-       gl_debug (DEBUG_FILE, "START");
-       
-       if (!gl_file_close_all ())
-               return;
-
-       gl_debug (DEBUG_FILE, "All files closed.");
-       
-       /* We need to disconnect the signal because mdi "destroy" event
-          is connected to gl_file_exit ( i.e. this function ). */
-       g_signal_handlers_disconnect_by_func (G_OBJECT (glabels_mdi),
-                                             G_CALLBACK (gl_file_exit), NULL);
-       
-       gl_prefs_save_settings ();
+       const GList *window_list;
+       GList       *p, *p_next;
 
-       gl_debug (DEBUG_FILE, "Unref glabels_mdi.");
+       gl_debug (DEBUG_FILE, "START");
 
-       g_object_unref (G_OBJECT (glabels_mdi));
+       window_list = gl_window_get_window_list ();
 
-       gl_debug (DEBUG_FILE, "Unref glabels_mdi: DONE");
+       for (p=(GList *)window_list; p != NULL; p=p_next) {
+               p_next = p->next;
 
-       gtk_main_quit ();
+               gl_file_close (GL_WINDOW(p->data));
+       }
 
        gl_debug (DEBUG_FILE, "END");
 }
index ed91748dd8e06eda787ed43eb76f8cfa7825ea02..f6b67368c74f58dcabcd448ff1d84716c7b23746 100644 (file)
 #ifndef __FILE_H__
 #define __FILE_H__
 
-#include "mdi-child.h"
 #include "gnome-recent-view.h"
+#include <gtk/gtk.h>
+
+#include "label.h"
+#include "window.h"
 
 G_BEGIN_DECLS
 
-void     gl_file_new         (void);
+void     gl_file_new         (GtkWindow       *window);
+
 
+void     gl_file_open        (GtkWindow       *window);
 
-void     gl_file_open        (glMDIChild      *active_child);
 
 gboolean gl_file_open_recent (GnomeRecentView *view,
                              const gchar     *filename,
-                             BonoboWindow    *win);
+                             GtkWindow       *window);;
 
 gboolean gl_file_open_real   (const gchar     *filename,
-                             GtkWindow       *win);
-
+                             GtkWindow       *window);
 
-gboolean gl_file_save        (glMDIChild      *child);
 
-gboolean gl_file_save_as     (glMDIChild      *child);
+gboolean gl_file_save        (glLabel         *label,
+                             GtkWindow       *window);
 
+gboolean gl_file_save_as     (glLabel         *label,
+                             GtkWindow       *window);
 
-void     gl_file_close       (GtkWidget       *view);
 
-gboolean gl_file_close_all   (void);
+gboolean gl_file_close       (glWindow        *window);
 
 void     gl_file_exit        (void);
 
index df2c0e600b71171db8887ba29d685c4da77d1ed6..b1220a7dd11126caa4ffa1376981de8ffbd71bf0 100644 (file)
        _tip="Close the current file" pixtype="stock" pixname="gtk-close"
        accel="*Alt*F4"/>
 
-       <cmd name="FileCloseAll" _label="Close All"
-       _tip="Close all open files" pixtype="stock" pixname="gtk-close"
-       accel="*Shift**Alt*F4"/>
-
         <cmd name="FileExit" _label="Quit" _tip="Quit the program"
         pixtype="stock" pixname="gtk-quit" accel="*Control*Q"/>
 
        
         <menuitem name="FileClose" verb="" _label="_Close"/>
 
-       <menuitem name="FileCloseAll" verb="" _label="Clos_e All"/>
-
         <menuitem name="FileExit" verb="" _label="_Quit"/>
 
 </submenu>
 </submenu>
 
 
-<submenu name="Documents" _label="_Documents">
-
-       <placeholder name="DocumentsOps_1" delimit="bottom"/>
-
-       <placeholder name="OpenDocuments" />
-
-       <placeholder name="DocumentsOps_2" delimit="top"/>
-
-</submenu>
-
 <submenu name="Help" _label="_Help">
        
        <menuitem name="HelpContents" verb="" _label="_Contents"/>
index 455a075c2c88e58097588f315e778f9fc0aae991..7838f09bdafed3a5b2575057b860bec90598b08e 100644 (file)
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
  */
 
-/*
- * This file is based on gedit2.c from gedit2:
- *
- * Copyright (C) 1998, 1999 Alex Roberts, Evan Lawrence
- * Copyright (C) 2000, 2001 Chema Celorio, Paolo Maggi 
- *
- */
 #include <config.h>
 
 #include <libgnome/libgnome.h>
 #include <libgnomeui/libgnomeui.h>
 #include <libgnomeui/gnome-window-icon.h>
 
-#include "glabels.h"
 #include "splash.h"
 #include "stock.h"
 #include "merge.h"
 #include "template.h"
-#include "mdi.h"
 #include "prefs.h"
-#include "file.h"
 #include "debug.h"
+#include "window.h"
 
 #define ICON_PIXMAP gnome_program_locate_file (NULL,\
                                               GNOME_FILE_DOMAIN_APP_PIXMAP,\
                                               "glabels/glabels-icon.png",\
                                               FALSE, NULL)
 
-glMDI *glabels_mdi = NULL;
-gboolean glabels_close_x_button_pressed = FALSE;
-gboolean glabels_exit_button_pressed = FALSE; 
-
 static const struct poptOption options [] =
 {
        { "debug-view", '\0', POPT_ARG_NONE, &gl_debug_view, 0,
@@ -90,8 +77,11 @@ static const struct poptOption options [] =
        { "debug-recent", '\0', POPT_ARG_NONE, &gl_debug_recent, 0,
          N_("Show recent debugging messages."), NULL },
 
-       { "debug-mdi", '\0', POPT_ARG_NONE, &gl_debug_mdi, 0,
-         N_("Show mdi debugging messages."), NULL },
+       { "debug-window", '\0', POPT_ARG_NONE, &gl_debug_window, 0,
+         N_("Show window debugging messages."), NULL },
+
+       { "debug-ui", '\0', POPT_ARG_NONE, &gl_debug_ui, 0,
+         N_("Show ui debugging messages."), NULL },
 
        { "debug-media-select", '\0', POPT_ARG_NONE, &gl_debug_media_select, 0,
          N_("Show media select widget debugging messages."), NULL },
@@ -118,6 +108,7 @@ main (int argc, char **argv)
        char         **args;
        GList         *file_list = NULL, *p;
        gint           i;
+       GtkWidget     *win;
 
        bindtextdomain (GETTEXT_PACKAGE, GLABELS_LOCALEDIR);
        bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
@@ -154,6 +145,10 @@ main (int argc, char **argv)
        gl_merge_ui_init();
        gl_recent_init();
 
+       if (bonobo_ui_init ("glabels", VERSION, &argc, argv) == FALSE) {
+               g_error (_("Could not initialize Bonobo!\n"));
+       }
+
        /* Parse args and build the list of files to be loaded at startup */
        g_value_init (&value, G_TYPE_POINTER);
        g_object_get_property (G_OBJECT (program),
@@ -166,65 +161,22 @@ main (int argc, char **argv)
                file_list = g_list_append (file_list, args[i]);
        }
 
-       /* Create glabels_mdi and open the first top level window */
-       glabels_mdi = gl_mdi_new ();
-       bonobo_mdi_open_toplevel (BONOBO_MDI (glabels_mdi), NULL); 
-
+       /* Open files or create empty top-level window. */
        for (p = file_list; p; p = p->next) {
-               gl_file_open_real (p->data,
-                                  GTK_WINDOW(glabels_get_active_window()));
+               win = gl_window_new_from_file (p->data);
+               gtk_widget_show_all (win);
+       }
+       if ( gl_window_get_window_list() == NULL ) {
+               win = gl_window_new ();
+               gtk_widget_show_all (win);
        }
        g_list_free (file_list);
 
-       gtk_main();
+       
+       /* Begin main loop */
+       bonobo_main();
                
        return 0;
 }
 
 
-BonoboWindow*
-glabels_get_active_window (void)
-{
-       g_return_val_if_fail (glabels_mdi != NULL, NULL);
-
-       return  bonobo_mdi_get_active_window (BONOBO_MDI (glabels_mdi));
-}
-
-glLabel*
-glabels_get_active_label (void)
-{
-       BonoboMDIChild *active_child;
-
-       g_return_val_if_fail (glabels_mdi != NULL, NULL);
-
-       active_child = bonobo_mdi_get_active_child (BONOBO_MDI (glabels_mdi));
-
-       if (active_child == NULL)
-               return NULL;
-
-       return GL_MDI_CHILD (active_child)->label;
-}
-
-glView*
-glabels_get_active_view (void)
-{
-       GtkWidget *active_view;
-
-       g_return_val_if_fail (glabels_mdi != NULL, NULL);
-
-       active_view = bonobo_mdi_get_active_view (BONOBO_MDI (glabels_mdi));
-       
-       if (active_view == NULL)
-               return NULL;
-
-       return GL_VIEW (active_view);
-}
-
-GList* 
-glabels_get_top_windows (void)
-{
-       g_return_val_if_fail (glabels_mdi != NULL, NULL);
-
-       return  bonobo_mdi_get_windows (BONOBO_MDI (glabels_mdi));
-}
-
diff --git a/glabels2/src/glabels.h b/glabels2/src/glabels.h
deleted file mode 100644 (file)
index 1ac54b2..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- *  (GLABELS) Label and Business Card Creation program for GNOME
- *
- *  glabels.h:  GLabels main module header file
- *
- *  Copyright (C) 2001-2002  Jim Evins <evins@snaught.com>.
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  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
- */
-
-/*
- * This file is based on gedit.h from gedit2:
- *
- * Copyright (C) 1998, 1999 Alex Roberts, Evan Lawrence
- * Copyright (C) 2000, 2001 Chema Celorio, Paolo Maggi 
- *
- */
-#ifndef __GLABELS_H__
-#define __GLABELS_H__
-
-#include <gmodule.h>
-#include <glib/glist.h>
-#include <bonobo/bonobo-window.h>
-
-#include "mdi.h"
-#include "label.h"
-#include "view.h" 
-
-G_BEGIN_DECLS
-
-extern glMDI*   glabels_mdi;
-extern gboolean glabels_close_x_button_pressed;
-extern gboolean glabels_exit_button_pressed;
-
-BonoboWindow*          glabels_get_active_window               (void);
-glLabel*               glabels_get_active_label                (void);
-glView*                glabels_get_active_view                 (void);
-GList*                         glabels_get_top_windows                 (void);
-
-G_END_DECLS
-
-#endif /* __GLABELS_H__ */
-
-
-
diff --git a/glabels2/src/mdi-child.c b/glabels2/src/mdi-child.c
deleted file mode 100644 (file)
index 093f958..0000000
+++ /dev/null
@@ -1,365 +0,0 @@
-/*
- *  (GLABELS) Label and Business Card Creation program for GNOME
- *
- *  mdi-child.c:  gLabels MDI child module
- *
- *  Copyright (C) 2001-2002  Jim Evins <evins@snaught.com>.
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  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
- */
-
-/*
- * This file is based on gedit-mdi-child.c from gedit2:
- *
- * Copyright (C) 1998, 1999 Alex Roberts, Evan Lawrence
- * Copyright (C) 2000, 2001 Chema Celorio, Paolo Maggi 
- * Copyright (C) 2002  Paolo Maggi 
- *
- */
-#include <config.h>
-
-#include "mdi-child.h"
-#include "xml-label.h"
-#include "label.h"
-#include "view.h"
-#include "marshal.h"
-#include "debug.h"
-
-struct _glMDIChildPrivate
-{
-       GtkWidget *tab_label;
-};
-
-enum {
-       STATE_CHANGED,
-       UNDO_REDO_STATE_CHANGED,
-       LAST_SIGNAL
-};
-
-static void gl_mdi_child_class_init (glMDIChildClass *klass);
-static void gl_mdi_child_init       (glMDIChild      *mdi);
-static void gl_mdi_child_finalize   (GObject         *obj);
-static void gl_mdi_child_destroy    (GtkObject       *obj);
-
-static void       gl_mdi_child_real_state_changed (glMDIChild* child);
-
-static GtkWidget *gl_mdi_child_create_view (BonoboMDIChild *child);
-
-static void       gl_mdi_child_document_state_changed_handler (glLabel *label, 
-                                                              glMDIChild* child);
-
-static void       gl_mdi_child_document_can_undo_redo_handler (glLabel *label, 
-                                                              gboolean can,
-                                                              glMDIChild* child);
-
-static gchar*     gl_mdi_child_get_config_string (BonoboMDIChild *child,
-                                                 gpointer data);
-
-static BonoboMDIChildClass *parent_class = NULL;
-static guint mdi_child_signals[LAST_SIGNAL] = { 0 };
-
-
-GType
-gl_mdi_child_get_type (void)
-{
-       static GType mdi_child_type = 0;
-
-       gl_debug (DEBUG_MDI, "START");
-
-       if (mdi_child_type == 0)
-       {
-               static const GTypeInfo our_info =
-               {
-                       sizeof (glMDIChildClass),
-                       NULL,           /* base_init */
-                       NULL,           /* base_finalize */
-                       (GClassInitFunc) gl_mdi_child_class_init,
-                       NULL,           /* class_finalize */
-                       NULL,           /* class_data */
-                       sizeof (glMDIChild),
-                       0,              /* n_preallocs */
-                       (GInstanceInitFunc) gl_mdi_child_init
-               };
-
-               mdi_child_type = g_type_register_static (BONOBO_TYPE_MDI_CHILD,
-                                                         "glMDIChild",
-                                                                 &our_info,
-                                                                 0);
-       }
-
-       gl_debug (DEBUG_MDI, "END");
-
-       return mdi_child_type;
-}
-
-static void
-gl_mdi_child_class_init (glMDIChildClass *klass)
-{
-       GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
-
-       gl_debug (DEBUG_MDI, "START");
-
-       parent_class = g_type_class_peek_parent (klass);
-
-       gobject_class->finalize = gl_mdi_child_finalize;
-
-       klass->state_changed            = gl_mdi_child_real_state_changed;
-       klass->undo_redo_state_changed  = NULL;
-               
-       mdi_child_signals [STATE_CHANGED] =
-               g_signal_new ("state_changed",
-                             G_OBJECT_CLASS_TYPE (gobject_class),
-                             G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
-                             G_STRUCT_OFFSET (glMDIChildClass, state_changed),
-                             NULL, NULL,
-                             gl_marshal_VOID__VOID,
-                             G_TYPE_NONE, 
-                             0);
-
-       mdi_child_signals [UNDO_REDO_STATE_CHANGED] =
-               g_signal_new ("undo_redo_state_changed",
-                             G_OBJECT_CLASS_TYPE (gobject_class),
-                             G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
-                             G_STRUCT_OFFSET (glMDIChildClass, undo_redo_state_changed),
-                             NULL, NULL,
-                             gl_marshal_VOID__VOID,
-                             G_TYPE_NONE, 
-                             0);
-                    
-       BONOBO_MDI_CHILD_CLASS (klass)->create_view = 
-               (BonoboMDIChildViewCreator)(gl_mdi_child_create_view);
-
-       BONOBO_MDI_CHILD_CLASS (klass)->get_config_string = 
-               (BonoboMDIChildConfigFunc)(gl_mdi_child_get_config_string);
-
-       gl_debug (DEBUG_MDI, "END");
-}
-
-static void 
-gl_mdi_child_init (glMDIChild  *child)
-{
-       gl_debug (DEBUG_MDI, "START");
-
-       child->priv = g_new0 (glMDIChildPrivate, 1);
-
-       child->priv->tab_label = NULL;
-
-       gl_debug (DEBUG_MDI, "END");
-}
-
-static void 
-gl_mdi_child_finalize (GObject *obj)
-{
-       glMDIChild *child;
-
-       gl_debug (DEBUG_MDI, "START");
-
-       g_return_if_fail (obj != NULL);
-       
-       child = GL_MDI_CHILD (obj);
-
-       g_return_if_fail (GL_IS_MDI_CHILD (child));
-       g_return_if_fail (child->priv != NULL);
-
-       if (child->label != NULL)
-               g_object_unref (G_OBJECT (child->label));
-
-       g_free (child->priv);
-
-       G_OBJECT_CLASS (parent_class)->finalize (obj);
-
-       gl_debug (DEBUG_MDI, "END");
-}
-
-static void gl_mdi_child_real_state_changed (glMDIChild* child)
-{
-       gchar* docname = NULL;
-       gchar* tab_name = NULL;
-
-       gl_debug (DEBUG_MDI, "START");
-
-       g_return_if_fail (child != NULL);
-       g_return_if_fail (child->label != NULL);
-
-       docname = gl_label_get_short_name (child->label);
-       g_return_if_fail (docname != NULL);
-       
-       if (gl_label_is_modified (child->label))
-       {
-               tab_name = g_strdup_printf ("%s*", docname);
-       } 
-       else 
-       {
-               tab_name = g_strdup_printf ("%s", docname);
-       }
-       
-       g_free (docname);
-
-       g_return_if_fail (tab_name != NULL);
-
-       bonobo_mdi_child_set_name (BONOBO_MDI_CHILD (child), tab_name);
-
-       g_free (tab_name);      
-
-       gl_debug (DEBUG_MDI, "END");
-}
-
-static void 
-gl_mdi_child_document_state_changed_handler (glLabel *label, glMDIChild* child)
-{
-       gl_debug (DEBUG_MDI, "");
-       g_return_if_fail (child->label == label);
-
-       g_signal_emit (G_OBJECT (child), mdi_child_signals [STATE_CHANGED], 0);
-}
-
-static void 
-gl_mdi_child_document_can_undo_redo_handler (glLabel *label, gboolean can, 
-                                               glMDIChild* child)
-{
-       gl_debug (DEBUG_MDI, "");
-       g_return_if_fail (child->label == label);
-
-       g_signal_emit (G_OBJECT (child), mdi_child_signals [UNDO_REDO_STATE_CHANGED], 0);
-}
-
-
-static void
-gl_mdi_child_connect_signals (glMDIChild *child)
-{
-       gl_debug (DEBUG_MDI, "START");
-
-       g_signal_connect (G_OBJECT (child->label), "name_changed",
-                         G_CALLBACK (gl_mdi_child_document_state_changed_handler), 
-                         child);
-       g_signal_connect (G_OBJECT (child->label), "modified_changed",
-                         G_CALLBACK (gl_mdi_child_document_state_changed_handler), 
-                         child);
-#if 0
-       g_signal_connect (G_OBJECT (child->label), "can_undo",
-                         G_CALLBACK (gl_mdi_child_document_can_undo_redo_handler), 
-                         child);
-       g_signal_connect (G_OBJECT (child->label), "can_redo",
-                         G_CALLBACK (gl_mdi_child_document_can_undo_redo_handler), 
-                         child);
-#endif
-
-       gl_debug (DEBUG_MDI, "END");
-}
-
-/**
- * gl_mdi_child_new:
- * 
- * Creates a new #glMDIChild object.
- *
- * Return value: a new #glMDIChild
- **/
-glMDIChild*
-gl_mdi_child_new (const gchar *tmplt_name,
-                 gboolean rotate_flag)
-{
-       glMDIChild *child;
-       gchar *doc_name;
-       glTemplate *template;
-       
-       gl_debug (DEBUG_MDI, "START");
-
-       child = GL_MDI_CHILD (g_object_new (GL_TYPE_MDI_CHILD, NULL));
-       g_return_val_if_fail (child != NULL, NULL);
-       
-       child->label = GL_LABEL (gl_label_new ());
-       g_return_val_if_fail (child->label != NULL, NULL);
-       
-       template = gl_template_from_name (tmplt_name);
-       gl_label_set_template (child->label, template);
-       gl_template_free (&template);
-       gl_label_set_rotate_flag (child->label, rotate_flag);
-       gl_label_clear_modified (child->label);
-
-       doc_name = gl_label_get_short_name (child->label);
-       bonobo_mdi_child_set_name (BONOBO_MDI_CHILD (child), doc_name);
-       g_free(doc_name);
-
-       gl_mdi_child_connect_signals (child);
-       
-       gl_debug (DEBUG_MDI, "END");
-       
-       return child;
-}
-
-glMDIChild*
-gl_mdi_child_new_with_uri (const gchar *uri, GError **error)
-{
-       glMDIChild *child;
-       glLabel    *doc;
-       glXMLLabelStatus status;
-       
-       gl_debug (DEBUG_MDI, "START");
-
-       doc = gl_xml_label_open (uri, &status);
-
-       if (doc == NULL)
-       {
-               return NULL;
-       }
-
-       child = GL_MDI_CHILD (g_object_new (GL_TYPE_MDI_CHILD, NULL));
-       g_return_val_if_fail (child != NULL, NULL);
-       
-       child->label = doc;
-       g_return_val_if_fail (child->label != NULL, NULL);
-       
-       gl_mdi_child_real_state_changed (child);
-       
-       gl_mdi_child_connect_signals (child);
-
-       gl_debug (DEBUG_MDI, "END");
-       
-       return child;
-}
-               
-static GtkWidget *
-gl_mdi_child_create_view (BonoboMDIChild *child)
-{
-       glView  *new_view;
-
-       gl_debug (DEBUG_MDI, "START");
-
-       g_return_val_if_fail (child != NULL, NULL);
-       g_return_val_if_fail (GL_IS_MDI_CHILD (child), NULL);
-
-       new_view = GL_VIEW(gl_view_new (GL_MDI_CHILD (child)->label));
-
-       gtk_widget_show_all (GTK_WIDGET (new_view));
-
-       gl_debug (DEBUG_MDI, "END");
-
-       return GTK_WIDGET (new_view);
-}
-
-static gchar* 
-gl_mdi_child_get_config_string (BonoboMDIChild *child, gpointer data)
-{
-       glMDIChild *c;
-       
-       gl_debug (DEBUG_MDI, "");
-
-       g_return_val_if_fail (child != NULL, NULL);
-       g_return_val_if_fail (GL_IS_MDI_CHILD (child), NULL);
-
-       c = GL_MDI_CHILD (child);
-       
-       return gl_label_get_filename (c->label);
-}
diff --git a/glabels2/src/mdi-child.h b/glabels2/src/mdi-child.h
deleted file mode 100644 (file)
index 070404c..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- *  (GLABELS) Label and Business Card Creation program for GNOME
- *
- *  mdi-child.h:  gLabels MDI child module header file
- *
- *  Copyright (C) 2001-2002  Jim Evins <evins@snaught.com>.
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  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
- */
-
-/*
- * This file is based on gedit-mdi-child.h from gedit2:
- *
- * Copyright (C) 1998, 1999 Alex Roberts, Evan Lawrence
- * Copyright (C) 2000, 2001 Chema Celorio, Paolo Maggi 
- * Copyright (C) 2002  Paolo Maggi 
- *
- */
-#ifndef __MDI_CHILD_H__
-#define __MDI_CHILD_H__
-
-#include <bonobo-mdi.h>
-
-#include "label.h"
-
-G_BEGIN_DECLS
-
-#define GL_TYPE_MDI_CHILD            (gl_mdi_child_get_type ())
-#define GL_MDI_CHILD(o)                     (GTK_CHECK_CAST ((o), GL_TYPE_MDI_CHILD, glMDIChild))
-#define GL_MDI_CHILD_CLASS(klass)    (GTK_CHECK_CLASS_CAST ((klass), GL_TYPE_MDI_CHILD, \
-                                     glMDIChildClass))
-#define GL_IS_MDI_CHILD(o)          (GTK_CHECK_TYPE ((o), GL_TYPE_MDI_CHILD))
-#define GL_IS_MDI_CHILD_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GL_TYPE_MDI_CHILD))
-#define GL_MDI_CHILD_GET_CLASS(o)    (GTK_CHECK_GET_CLASS ((o), GL_TYPE_MDI_CHILD, glMdiChildClass))
-
-
-typedef struct _glMDIChild       glMDIChild;
-typedef struct _glMDIChildClass   glMDIChildClass;
-
-typedef struct _glMDIChildPrivate glMDIChildPrivate;
-
-struct _glMDIChild
-{
-       BonoboMDIChild      child;
-       
-       glLabel            *label;
-       glMDIChildPrivate  *priv;
-};
-
-struct _glMDIChildClass
-{
-       BonoboMDIChildClass parent_class;
-
-       /* MDI child state changed */
-       void (*state_changed)           (glMDIChild *child);
-
-       void (*undo_redo_state_changed) (glMDIChild *child);
-};
-
-
-GtkType                gl_mdi_child_get_type     (void) G_GNUC_CONST;
-
-glMDIChild*    gl_mdi_child_new          (const gchar *tmplt_name,
-                                          gboolean     rotate_flag);
-
-glMDIChild*    gl_mdi_child_new_with_uri (const gchar *uri,
-                                          GError     **error);
-
-G_END_DECLS
-
-#endif /* __MDI_CHILD_H__ */
-
diff --git a/glabels2/src/mdi.c b/glabels2/src/mdi.c
deleted file mode 100644 (file)
index d2b79b6..0000000
+++ /dev/null
@@ -1,612 +0,0 @@
-/*
- *  (GLABELS) Label and Business Card Creation program for GNOME
- *
- *  mdi.c:  gLabels MDI module
- *
- *  Copyright (C) 2001-2002  Jim Evins <evins@snaught.com>.
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  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
- */
-
-/*
- * This file is based on gedit-mdi.c from gedit2:
- *
- * Copyright (C) 1998, 1999 Alex Roberts, Evan Lawrence
- * Copyright (C) 2000, 2001 Chema Celorio, Paolo Maggi 
- * Copyright (C) 2002  Paolo Maggi 
- *
- */
-#include <config.h>
-
-#include <libgnome/libgnome.h>
-#include <libgnomeui/libgnomeui.h>
-#include <libgnomevfs/gnome-vfs.h>
-
-#include <string.h>
-
-#include "mdi.h"
-#include "mdi-child.h"
-#include "glabels.h"
-#include "ui.h"
-#include "prefs.h"
-#include "file.h"
-#include "view.h"
-#include "debug.h"
-#include "alert.h"
-
-#include <bonobo/bonobo-ui-util.h>
-#include <bonobo/bonobo-control.h>
-
-/*========================================================*/
-/* Private macros and constants.                          */
-/*========================================================*/
-
-#define DEFAULT_WINDOW_WIDTH  500
-#define DEFAULT_WINDOW_HEIGHT 375
-
-/*========================================================*/
-/* Private types.                                         */
-/*========================================================*/
-
-struct _glMDIPrivate
-{
-       gint untitled_number;
-};
-
-
-/*========================================================*/
-/* Private globals.                                       */
-/*========================================================*/
-
-static BonoboMDIClass *parent_class = NULL;
-
-
-/*========================================================*/
-/* Private function prototypes.                           */
-/*========================================================*/
-
-static void gl_mdi_class_init  (glMDIClass *klass);
-static void gl_mdi_init        (glMDI      *mdi);
-static void gl_mdi_finalize    (GObject    *object);
-
-static void gl_mdi_app_created_cb   (BonoboMDI *mdi, BonoboWindow   *win);
-
-static gint gl_mdi_add_child_cb     (BonoboMDI *mdi, BonoboMDIChild *child);
-static gint gl_mdi_add_view_cb      (BonoboMDI *mdi, GtkWidget      *view);
-static gint gl_mdi_remove_child_cb  (BonoboMDI *mdi, BonoboMDIChild *child);
-static gint gl_mdi_remove_view_cb   (BonoboMDI *mdi, GtkWidget      *view);
-
-static void gl_mdi_view_changed_cb  (BonoboMDI *mdi, GtkWidget      *old_view);
-static void gl_mdi_child_changed_cb (BonoboMDI *mdi, BonoboMDIChild *old_child);
-static void gl_mdi_child_state_changed_cb (glMDIChild *child);
-
-static void gl_mdi_set_active_window_undo_redo_verbs_sensitivity (BonoboMDI *mdi);
-static void gl_mdi_set_active_window_selection_verbs_sensitivity (BonoboMDI *mdi);
-
-
-\f
-/*****************************************************************************/
-/* Boilerplate object stuff.                                                 */
-/*****************************************************************************/
-GType
-gl_mdi_get_type (void)
-{
-       static GType mdi_type = 0;
-
-       if (mdi_type == 0)
-       {
-               static const GTypeInfo our_info =
-               {
-                       sizeof (glMDIClass),
-                       NULL,           /* base_init */
-                       NULL,           /* base_finalize */
-                       (GClassInitFunc) gl_mdi_class_init,
-                       NULL,           /* class_finalize */
-                       NULL,           /* class_data */
-                       sizeof (glMDI),
-                       0,              /* n_preallocs */
-                       (GInstanceInitFunc) gl_mdi_init
-               };
-
-               mdi_type = g_type_register_static (BONOBO_TYPE_MDI,
-                                                   "glMDI",
-                                                           &our_info,
-                                                           0);
-       }
-
-       return mdi_type;
-}
-
-static void
-gl_mdi_class_init (glMDIClass *klass)
-{
-       GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
-       gl_debug (DEBUG_MDI, "START");
-
-       parent_class = g_type_class_peek_parent (klass);
-
-       object_class->finalize = gl_mdi_finalize;
-
-       gl_debug (DEBUG_MDI, "END");
-}
-
-static void 
-gl_mdi_init (glMDI  *mdi)
-{
-       gl_debug (DEBUG_MDI, "START");
-
-       bonobo_mdi_construct (BONOBO_MDI (mdi), "glabels", "gLabels",
-                             DEFAULT_WINDOW_WIDTH, DEFAULT_WINDOW_HEIGHT);
-       
-       mdi->priv = g_new0 (glMDIPrivate, 1);
-
-       mdi->priv->untitled_number = 0; 
-
-       bonobo_mdi_set_ui_template_file (BONOBO_MDI (mdi),
-                                        GLABELS_UI_DIR "glabels-ui.xml",
-                                        gl_ui_verbs);
-       
-       bonobo_mdi_set_child_list_path (BONOBO_MDI (mdi), "/menu/Documents/");
-
-       /* Connect signals */
-       g_signal_connect (G_OBJECT (mdi), "top_window_created",
-                         G_CALLBACK (gl_mdi_app_created_cb), NULL);
-       
-       g_signal_connect (G_OBJECT (mdi), "add_child",
-                         G_CALLBACK (gl_mdi_add_child_cb), NULL);
-       g_signal_connect (G_OBJECT (mdi), "add_view",
-                         G_CALLBACK (gl_mdi_add_view_cb), NULL);
-       
-       g_signal_connect (G_OBJECT (mdi), "remove_child",
-                         G_CALLBACK (gl_mdi_remove_child_cb), NULL);
-       g_signal_connect (G_OBJECT (mdi), "remove_view",
-                         G_CALLBACK (gl_mdi_remove_view_cb), NULL);
-
-       g_signal_connect (G_OBJECT (mdi), "child_changed",
-                         G_CALLBACK (gl_mdi_child_changed_cb), NULL);
-       g_signal_connect (G_OBJECT (mdi), "view_changed",
-                         G_CALLBACK (gl_mdi_view_changed_cb), NULL);
-
-       g_signal_connect (G_OBJECT (mdi), "all_windows_destroyed",
-                         G_CALLBACK (gl_file_exit), NULL);
-
-       gl_debug (DEBUG_MDI, "END");
-}
-
-static void
-gl_mdi_finalize (GObject *object)
-{
-       glMDI *mdi;
-
-       gl_debug (DEBUG_MDI, "START");
-
-       g_return_if_fail (object != NULL);
-       
-       mdi = GL_MDI (object);
-
-       g_return_if_fail (GL_IS_MDI (mdi));
-       g_return_if_fail (mdi->priv != NULL);
-
-       G_OBJECT_CLASS (parent_class)->finalize (object);
-
-       g_free (mdi->priv);
-
-       gl_debug (DEBUG_MDI, "END");
-}
-
-
-/*****************************************************************************/
-/* NEW mdi object.                                                           */
-/*****************************************************************************/
-glMDI*
-gl_mdi_new (void)
-{
-       glMDI *mdi;
-
-       gl_debug (DEBUG_MDI, "START");
-
-       mdi = GL_MDI (g_object_new (GL_TYPE_MDI, NULL));
-       g_return_val_if_fail (mdi != NULL, NULL);
-       
-       gl_debug (DEBUG_MDI, "END");
-       return mdi;
-}
-
-/*---------------------------------------------------------------------------*/
-/* App created callback.                                                     */
-/*---------------------------------------------------------------------------*/
-static void
-gl_mdi_app_created_cb (BonoboMDI    *mdi,
-                      BonoboWindow *win)
-{
-       GtkWidget         *widget;
-       BonoboControl     *control;
-       BonoboUIComponent *ui_component;
-
-       gl_debug (DEBUG_MDI, "START");
-       
-       ui_component = bonobo_mdi_get_ui_component_from_window (win);
-       g_return_if_fail (ui_component != NULL);
-
-       gl_ui_init (ui_component, win);
-
-       gl_debug (DEBUG_MDI, "END");
-}
-
-/*---------------------------------------------------------------------------*/
-/* Child state changed callback.                                             */
-/*---------------------------------------------------------------------------*/
-static void 
-gl_mdi_child_state_changed_cb (glMDIChild *child)
-{
-       gl_debug (DEBUG_MDI, "START");
-
-       if (bonobo_mdi_get_active_child (BONOBO_MDI (glabels_mdi)) != BONOBO_MDI_CHILD (child))
-               return;
-       
-       gl_mdi_set_active_window_title (BONOBO_MDI (glabels_mdi));
-       gl_mdi_set_active_window_verbs_sensitivity (BONOBO_MDI (glabels_mdi));
-
-       gl_debug (DEBUG_MDI, "END");
-}
-
-/*---------------------------------------------------------------------------*/
-/* Child undo/redo state changed callback.                                   */
-/*---------------------------------------------------------------------------*/
-static void 
-gl_mdi_child_undo_redo_state_changed_cb (glMDIChild *child)
-{
-       gl_debug (DEBUG_MDI, "START");
-
-       if (bonobo_mdi_get_active_child (BONOBO_MDI (glabels_mdi)) != BONOBO_MDI_CHILD (child))
-               return;
-       
-       gl_mdi_set_active_window_undo_redo_verbs_sensitivity (BONOBO_MDI (glabels_mdi));
-       gl_debug (DEBUG_MDI, "END");
-}
-
-/*---------------------------------------------------------------------------*/
-/* Add child callback.                                                       */
-/*---------------------------------------------------------------------------*/
-static gint 
-gl_mdi_add_child_cb (BonoboMDI      *mdi,
-                    BonoboMDIChild *child)
-{
-       gl_debug (DEBUG_MDI, "START");
-
-       g_signal_connect (G_OBJECT (child), "state_changed",
-                         G_CALLBACK (gl_mdi_child_state_changed_cb), 
-                         NULL);
-       g_signal_connect (G_OBJECT (child), "undo_redo_state_changed",
-                         G_CALLBACK (gl_mdi_child_undo_redo_state_changed_cb), 
-                         NULL);
-
-       gl_debug (DEBUG_MDI, "END");
-       return TRUE;
-}
-
-/*---------------------------------------------------------------------------*/
-/* View selection state changed callback.                                    */
-/*---------------------------------------------------------------------------*/
-static void 
-gl_mdi_view_selection_state_changed_cb (glView *view)
-{
-       gl_debug (DEBUG_MDI, "START");
-
-       if (bonobo_mdi_get_active_view (BONOBO_MDI (glabels_mdi)) != GTK_WIDGET (view))
-               return;
-       
-       gl_mdi_set_active_window_selection_verbs_sensitivity (BONOBO_MDI (glabels_mdi));
-       gl_debug (DEBUG_MDI, "END");
-}
-
-/*---------------------------------------------------------------------------*/
-/* Add view callback.                                                        */
-/*---------------------------------------------------------------------------*/
-static gint 
-gl_mdi_add_view_cb (BonoboMDI *mdi,
-                   GtkWidget *view)
-{
-       gl_debug (DEBUG_MDI, "START");
-
-       g_signal_connect (G_OBJECT (view), "selection_changed",
-                         G_CALLBACK (gl_mdi_view_selection_state_changed_cb), 
-                         NULL);
-
-       gl_debug (DEBUG_MDI, "END");
-       return TRUE;
-}
-
-/*---------------------------------------------------------------------------*/
-/* Remove child callback.                                                    */
-/*---------------------------------------------------------------------------*/
-static gint 
-gl_mdi_remove_child_cb (BonoboMDI      *mdi,
-                       BonoboMDIChild *child)
-{
-       glLabel *doc;
-       gboolean close = TRUE;
-       
-       gl_debug (DEBUG_MDI, "START");
-
-       g_return_val_if_fail (child != NULL, FALSE);
-       g_return_val_if_fail (GL_MDI_CHILD (child)->label != NULL, FALSE);
-
-       doc = GL_MDI_CHILD (child)->label;
-
-       if (gl_label_is_modified (doc))
-       {
-               GtkWidget *msgbox, *w;
-               gchar *fname = NULL, *msg = NULL;
-               gint ret;
-               gboolean exiting;
-
-               w = GTK_WIDGET (g_list_nth_data (bonobo_mdi_child_get_views (child), 0));
-                       
-               if(w != NULL)
-                       bonobo_mdi_set_active_view (mdi, w);
-
-               fname = gl_label_get_short_name (doc);
-
-               msg = g_strdup_printf (_("Save changes to document \"%s\" before closing?"),
-                                       fname);
-
-               msgbox = gl_alert_dialog_new (GTK_WINDOW (bonobo_mdi_get_active_window (mdi)),
-                               GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
-                               GTK_MESSAGE_WARNING,
-                               GTK_BUTTONS_NONE,
-                               msg,
-                               _("Your changes will be lost if you don't save them."));
-
-               gtk_dialog_add_button (GTK_DIALOG (msgbox),
-                                      _("Close without saving"),
-                                      GTK_RESPONSE_NO);
-
-               if (glabels_close_x_button_pressed)
-                       exiting = FALSE;
-               else if (glabels_exit_button_pressed)
-                       exiting = TRUE;
-               else
-               {
-                       /* Delete event generated */
-                       if (g_list_length (bonobo_mdi_get_windows (BONOBO_MDI (glabels_mdi))) == 1)
-                               exiting = TRUE;
-                       else
-                               exiting = FALSE;
-               }
-
-               
-               gtk_dialog_add_button (GTK_DIALOG (msgbox),
-                                      GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL);
-
-               gtk_dialog_add_button (GTK_DIALOG (msgbox),
-                                      GTK_STOCK_SAVE, GTK_RESPONSE_YES);
-
-               gtk_dialog_set_default_response (GTK_DIALOG (msgbox), GTK_RESPONSE_YES);
-
-               gtk_window_set_resizable (GTK_WINDOW (msgbox), FALSE);
-
-               ret = gtk_dialog_run (GTK_DIALOG (msgbox));
-               
-               gtk_widget_destroy (msgbox);
-
-               g_free (fname);
-               g_free (msg);
-               
-               switch (ret)
-               {
-                       case GTK_RESPONSE_YES:
-                               close = gl_file_save (GL_MDI_CHILD (child));
-                               break;
-                       case GTK_RESPONSE_NO:
-                               close = TRUE;
-                               break;
-                       default:
-                               close = FALSE;
-               }
-
-               gl_debug (DEBUG_MDI, "CLOSE: %s", close ? "TRUE" : "FALSE");
-       }
-       
-       gl_debug (DEBUG_MDI, "END");
-       return close;
-}
-
-/*---------------------------------------------------------------------------*/
-/* Remove view callback.                                                     */
-/*---------------------------------------------------------------------------*/
-static gint 
-gl_mdi_remove_view_cb (BonoboMDI *mdi,
-                      GtkWidget *view)
-{
-       gl_debug (DEBUG_MDI, "");
-       gl_debug (DEBUG_MDI, "END");
-
-       return TRUE;
-}
-
-/*****************************************************************************/
-/* Set title of active window.                                               */
-/*****************************************************************************/
-void 
-gl_mdi_set_active_window_title (BonoboMDI *mdi)
-{
-       BonoboMDIChild *active_child = NULL;
-       glLabel        *doc          = NULL;
-       gchar          *docname      = NULL;
-       gchar          *title        = NULL;
-       
-       gl_debug (DEBUG_MDI, "START");
-
-       
-       active_child = bonobo_mdi_get_active_child (mdi);
-       if (active_child == NULL)
-               return;
-
-       doc = GL_MDI_CHILD (active_child)->label;
-       g_return_if_fail (doc != NULL);
-       
-       /* Set active window title */
-       docname = gl_label_get_short_name (doc);
-       g_return_if_fail (docname != NULL);
-
-       if (gl_label_is_modified (doc))
-       {
-               title = g_strdup_printf ("%s %s - glabels",
-                                        docname, _("(modified)"));
-       } 
-       else 
-       {
-               title = g_strdup_printf ("%s - glabels", docname);
-
-       }
-
-       gtk_window_set_title (GTK_WINDOW (bonobo_mdi_get_active_window (mdi)), title);
-       
-       g_free (docname);
-       g_free (title);
-
-       gl_debug (DEBUG_MDI, "END");
-}
-
-/*---------------------------------------------------------------------------*/
-/* Child changed callback.                                                   */
-/*---------------------------------------------------------------------------*/
-static 
-void gl_mdi_child_changed_cb (BonoboMDI      *mdi,
-                             BonoboMDIChild *old_child)
-{
-       gl_debug (DEBUG_MDI, "START");
-
-       gl_mdi_set_active_window_title (mdi);   
-
-       gl_debug (DEBUG_MDI, "END");
-}
-
-/*---------------------------------------------------------------------------*/
-/* View changed callback.                                                    */
-/*---------------------------------------------------------------------------*/
-static 
-void gl_mdi_view_changed_cb (BonoboMDI *mdi,
-                            GtkWidget *old_view)
-{
-       BonoboWindow *win;
-       GtkWidget    *status;
-       GtkWidget    *active_view;
-       
-       gl_debug (DEBUG_MDI, "START");
-
-       gl_mdi_set_active_window_verbs_sensitivity (mdi);
-
-       active_view = bonobo_mdi_get_active_view (mdi);
-               
-       win = bonobo_mdi_get_active_window (mdi);
-       g_return_if_fail (win != NULL);
-
-       gl_debug (DEBUG_MDI, "END");
-}
-
-/*****************************************************************************/
-/* Set sensitivity of verbs in active window.                                */
-/*****************************************************************************/
-void 
-gl_mdi_set_active_window_verbs_sensitivity (BonoboMDI *mdi)
-{
-       BonoboWindow      *active_window = NULL;
-       BonoboMDIChild    *active_child  = NULL;
-       glView            *view          = NULL;
-       BonoboUIComponent *ui_component;
-       
-       gl_debug (DEBUG_MDI, "START");
-       
-       active_window = bonobo_mdi_get_active_window (mdi);
-
-       if (active_window == NULL)
-               return;
-       
-       ui_component = bonobo_mdi_get_ui_component_from_window (active_window);
-       g_return_if_fail (ui_component != NULL);
-       
-       active_child = bonobo_mdi_get_active_child (mdi);
-
-       if (active_child == NULL)
-       {
-               gl_ui_update_nodoc (ui_component);
-               return;
-       }
-
-       view = GL_VIEW (bonobo_mdi_get_active_view (mdi));
-
-       gl_ui_update_all (ui_component, view);
-
-       gl_debug (DEBUG_MDI, "END");
-}
-
-
-/*****************************************************************************/
-/* Set sensitivity of undo/redo verbs in active window.                      */
-/*****************************************************************************/
-static void 
-gl_mdi_set_active_window_undo_redo_verbs_sensitivity (BonoboMDI *mdi)
-{
-       BonoboWindow      *active_window = NULL;
-       BonoboMDIChild    *active_child  = NULL;
-       glLabel           *doc           = NULL;
-       BonoboUIComponent *ui_component;
-       
-       gl_debug (DEBUG_MDI, "START");
-       
-       active_window = bonobo_mdi_get_active_window (mdi);
-       g_return_if_fail (active_window != NULL);
-       
-       ui_component = bonobo_mdi_get_ui_component_from_window (active_window);
-       g_return_if_fail (ui_component != NULL);
-       
-       active_child = bonobo_mdi_get_active_child (mdi);
-       doc = GL_MDI_CHILD (active_child)->label;
-       g_return_if_fail (doc != NULL);
-
-       gl_ui_update_undo_redo_verbs (ui_component, doc);
-
-       gl_debug (DEBUG_MDI, "END");
-}
-
-/*****************************************************************************/
-/* Set sensitivity of selection verbs in active window.                      */
-/*****************************************************************************/
-static void 
-gl_mdi_set_active_window_selection_verbs_sensitivity (BonoboMDI *mdi)
-{
-       BonoboWindow      *active_window = NULL;
-       glView            *view          = NULL;
-       BonoboUIComponent *ui_component;
-       
-       gl_debug (DEBUG_MDI, "START");
-       
-       active_window = bonobo_mdi_get_active_window (mdi);
-       g_return_if_fail (active_window != NULL);
-       
-       ui_component = bonobo_mdi_get_ui_component_from_window (active_window);
-       g_return_if_fail (ui_component != NULL);
-       
-       view = GL_VIEW (bonobo_mdi_get_active_view (mdi));
-       g_return_if_fail (view != NULL);
-
-       gl_ui_update_selection_verbs (ui_component, view);
-
-       gl_debug (DEBUG_MDI, "END");
-}
-
diff --git a/glabels2/src/mdi.h b/glabels2/src/mdi.h
deleted file mode 100644 (file)
index 5b0dfcd..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- *  (GLABELS) Label and Business Card Creation program for GNOME
- *
- *  mdi.h:  gLabels MDI module header file
- *
- *  Copyright (C) 2001-2002  Jim Evins <evins@snaught.com>.
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  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
- */
-
-/*
- * This file is based on gedit-mdi.h from gedit2:
- *
- * Copyright (C) 1998, 1999 Alex Roberts, Evan Lawrence
- * Copyright (C) 2000, 2001 Chema Celorio, Paolo Maggi 
- * Copyright (C) 2002  Paolo Maggi 
- *
- */
-#ifndef __MDI_H__
-#define __MDI_H__
-
-#include <bonobo-mdi.h>
-
-G_BEGIN_DECLS
-
-#define GL_TYPE_MDI            (gl_mdi_get_type ())
-#define GL_MDI(obj)            (GTK_CHECK_CAST ((obj), GL_TYPE_MDI, glMDI))
-#define GL_MDI_CLASS(klass)    (GTK_CHECK_CLASS_CAST ((klass), GL_TYPE_MDI, glMDIClass))
-#define GL_IS_MDI(obj)         (GTK_CHECK_TYPE ((obj), GL_TYPE_MDI))
-#define GL_IS_MDI_CLASS(klass)  (GTK_CHECK_CLASS_TYPE ((klass), GL_TYPE_MDI))
-#define GL_MDI_GET_CLASS(obj)          (GTK_CHECK_GET_CLASS ((obj), GL_TYPE_MDI, glMdiClass))
-
-
-typedef struct _glMDI                  glMDI;
-typedef struct _glMDIClass             glMDIClass;
-
-typedef struct _glMDIPrivate           glMDIPrivate;
-
-struct _glMDI
-{
-       BonoboMDI       mdi;
-       
-       glMDIPrivate   *priv;
-};
-
-struct _glMDIClass
-{
-       BonoboMDIClass  parent_class;
-};
-
-
-GtkType                gl_mdi_get_type                            (void) G_GNUC_CONST;
-
-glMDI*         gl_mdi_new                                 (void);
-
-void           gl_mdi_set_active_window_title             (BonoboMDI *mdi);
-
-void           gl_mdi_update_ui_according_to_preferences  (glMDI     *mdi);
-
-void           gl_mdi_set_active_window_verbs_sensitivity (BonoboMDI *mdi);
-
-G_END_DECLS
-
-#endif /* __MDI_H__ */
-
index a97ce502b869a163460be552451169db4b76a843..c82e433999499e133b0ae57b33c705c8ed968752 100644 (file)
@@ -21,8 +21,6 @@
  */
 #include <config.h>
 
-#include "glabels.h"
-#include "mdi.h"
 #include "view.h"
 #include "merge.h"
 #include "merge-ui.h"
@@ -79,7 +77,6 @@ gl_merge_properties_dialog (glView *view)
 {
        static PropertyDialogPassback *data = NULL;
        GtkWidget *dialog;
-       BonoboWindow *win = glabels_get_active_window ();
 
        if (data == NULL) {
                data = g_new0 (PropertyDialogPassback, 1);
@@ -87,7 +84,7 @@ gl_merge_properties_dialog (glView *view)
 
        dialog = gl_hig_dialog_new_with_buttons (
                _("Edit document-merge properties"),
-               GTK_WINDOW (win),
+               NULL,
                GTK_DIALOG_DESTROY_WITH_PARENT,
                GTK_STOCK_OK, GTK_RESPONSE_OK,
                GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
index 1a5240d9d9459741ed50584bf46679a288323ebf..0ae8a59d80d39d325014d5f99dcb4ea9aacd6dca 100644 (file)
 #include <libgnome/libgnome.h>
 #include <libgnomeui/libgnomeui.h>
 
-#include "bonobo-mdi.h"
 #include "prefs-dialog.h"
 #include "prefs.h"
-#include "glabels.h"
 #include "wdgt-line.h"
 #include "wdgt-fill.h"
 #include "wdgt-text-props.h"
index 6376d85c5ab1bef30f82ac8966e7bed5de61d444..8ea1a589888832f23cc40b238e198af5d695e1c7 100644 (file)
 #include <libgnome/libgnome.h>
 #include <libgnomeui/libgnomeui.h>
 
-#include <bonobo-mdi.h>
 #include <gconf/gconf-client.h>
 
 #include "prefs.h"
-#include "glabels.h"
 #include "util.h"
 
 #include "debug.h"
@@ -64,9 +62,6 @@ glPreferences      *gl_prefs     = NULL;
 #define PREF_DRAWING_TOOLBAR_BUTTONS_STYLE  "/drawing-toolbar-buttons-style"
 #define PREF_DRAWING_TOOLBAR_VIEW_TOOLTIPS  "/drawing-toolbar-view-tooltips"
 
-#define PREF_MDI_MODE                      "/mdi-mode"
-#define PREF_TABS_POSITION                 "/mdi-tabs-position"
-
 #define PREF_MAX_RECENTS                    "/max-recents"
 
 /* Default values */
@@ -144,8 +139,6 @@ gl_prefs_init (void)
 void 
 gl_prefs_save_settings (void)
 {
-       BonoboWindow* active_window = NULL;             
-
        gl_debug (DEBUG_PREFS, "START");
        
        g_return_if_fail (gconf_client != NULL);
@@ -243,18 +236,6 @@ gl_prefs_save_settings (void)
                               NULL);
 
 
-       /* MDI */
-       gconf_client_set_int (gconf_client,
-                             BASE_KEY PREF_MDI_MODE,
-                             gl_prefs->mdi_mode,
-                             NULL);
-
-       gconf_client_set_int (gconf_client,
-                             BASE_KEY PREF_TABS_POSITION,
-                             gl_prefs->mdi_tabs_position,
-                             NULL);
-
-
        /* Recent files */
        gconf_client_set_int (gconf_client,
                              BASE_KEY PREF_MAX_RECENTS,
@@ -385,18 +366,6 @@ gl_prefs_load_settings (void)
                          TRUE);
 
 
-       /* User Inferface/MDI */                
-       gl_prefs->mdi_mode =
-               get_int (gconf_client,
-                        BASE_KEY PREF_MDI_MODE,
-                        0);
-
-       gl_prefs->mdi_tabs_position =
-               get_int (gconf_client,
-                        BASE_KEY PREF_TABS_POSITION,
-                        0);
-
-
        /* Recent files */
        gl_prefs->max_recents =
                get_int (gconf_client,
index f11e53b0a1161b5c6af5869abffad1d5dcfc4d7f..05bca590a1859f53ea3d2fe754f3b173234c33ff 100644 (file)
@@ -37,8 +37,6 @@
 #include "label.h"
 #include "bc.h"
 #include "template.h"
-#include "mdi.h"
-#include "glabels.h"
 
 #include "wdgt-print-copies.h"
 #include "wdgt-print-merge.h"
index af1cd6f4a05dbba29e63b02e02c7f3a9c96885ca..1114786291fa8f77bdaa72930061ddd4759effb9 100644 (file)
@@ -22,8 +22,7 @@
 #ifndef __PRINT_DIALOG_H__
 #define __PRINT_DIALOG_H__
 
-#include <gnome.h>
-#include <bonobo-mdi.h>
+#include <bonobo/bonobo-window.h>
 #include "label.h"
 
 extern void gl_print_dialog (glLabel *label, BonoboWindow *win);
index ca271c2a0acc8cf4e54c3a65608ac8919c854bda..a57e06237fa75526372bd6129566336952957148 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *  (GLABELS) Label and Business Card Creation program for GNOME
  *
- *  tools.c:  toolbar module
+ *  tools.c:  implementation of drawing toolbar verbs
  *
  *  Copyright (C) 2001-2002  Jim Evins <evins@snaught.com>.
  *
@@ -23,7 +23,7 @@
 #include <config.h>
 
 #include "tools.h"
-#include "glabels.h"
+#include "window.h"
 #include "merge-properties.h"
 
 /*===========================================*/
 /*****************************************************************************/
 void
 gl_tools_arrow (BonoboUIComponent *uic,
-               gpointer user_data,
-               const gcharverbname)
+               gpointer           user_data,
+               const gchar       *verbname)
 {
-       glView *view;
+       glWindow *window;
 
-       view = glabels_get_active_view ();
-       if (view != NULL) {
-               gl_view_arrow_mode (view);
+       window = GL_WINDOW (user_data);
+
+       if (window->view != NULL) {
+               gl_view_arrow_mode (GL_VIEW(window->view));
        }
 }
 
@@ -61,15 +62,17 @@ gl_tools_arrow (BonoboUIComponent *uic,
 /*****************************************************************************/
 void
 gl_tools_text (BonoboUIComponent *uic,
-              gpointer user_data,
-              const gcharverbname)
+              gpointer           user_data,
+              const gchar       *verbname)
 
 {
-       glView *view;
+       glWindow *window;
+
+       window = GL_WINDOW (user_data);
 
-       view = glabels_get_active_view ();
-       if (view != NULL) {
-               gl_view_object_create_mode (view, GL_LABEL_OBJECT_TEXT);
+       if (window->view != NULL) {
+               gl_view_object_create_mode (GL_VIEW(window->view),
+                                           GL_LABEL_OBJECT_TEXT);
        }
 }
 
@@ -78,15 +81,17 @@ gl_tools_text (BonoboUIComponent *uic,
 /*****************************************************************************/
 void
 gl_tools_box (BonoboUIComponent *uic,
-             gpointer user_data,
-             const gcharverbname)
+             gpointer           user_data,
+             const gchar       *verbname)
 
 {
-       glView *view;
+       glWindow *window;
 
-       view = glabels_get_active_view ();
-       if (view != NULL) {
-               gl_view_object_create_mode (view, GL_LABEL_OBJECT_BOX);
+       window = GL_WINDOW (user_data);
+
+       if (window->view != NULL) {
+               gl_view_object_create_mode (GL_VIEW(window->view),
+                                           GL_LABEL_OBJECT_BOX);
        }
 }
 
@@ -95,15 +100,17 @@ gl_tools_box (BonoboUIComponent *uic,
 /*****************************************************************************/
 void
 gl_tools_line (BonoboUIComponent *uic,
-              gpointer user_data,
-              const gcharverbname)
+              gpointer           user_data,
+              const gchar       *verbname)
 
 {
-       glView *view;
+       glWindow *window;
+
+       window = GL_WINDOW (user_data);
 
-       view = glabels_get_active_view ();
-       if (view != NULL) {
-               gl_view_object_create_mode (view, GL_LABEL_OBJECT_LINE);
+       if (window->view != NULL) {
+               gl_view_object_create_mode (GL_VIEW(window->view),
+                                           GL_LABEL_OBJECT_LINE);
        }
 }
 
@@ -112,16 +119,17 @@ gl_tools_line (BonoboUIComponent *uic,
 /*****************************************************************************/
 void
 gl_tools_ellipse (BonoboUIComponent *uic,
-                 gpointer user_data,
-                 const gcharverbname)
+                 gpointer           user_data,
+                 const gchar       *verbname)
 
 {
-       glView *view;
+       glWindow *window;
 
-       view = glabels_get_active_view ();
-       if (view != NULL) {
-               gl_view_object_create_mode (view,
-                                              GL_LABEL_OBJECT_ELLIPSE);
+       window = GL_WINDOW (user_data);
+
+       if (window->view != NULL) {
+               gl_view_object_create_mode (GL_VIEW(window->view),
+                                           GL_LABEL_OBJECT_ELLIPSE);
        }
 }
 
@@ -130,15 +138,17 @@ gl_tools_ellipse (BonoboUIComponent *uic,
 /*****************************************************************************/
 void
 gl_tools_image (BonoboUIComponent *uic,
-               gpointer user_data,
-               const gcharverbname)
+               gpointer           user_data,
+               const gchar       *verbname)
 
 {
-       glView *view;
+       glWindow *window;
+
+       window = GL_WINDOW (user_data);
 
-       view = glabels_get_active_view ();
-       if (view != NULL) {
-               gl_view_object_create_mode (view, GL_LABEL_OBJECT_IMAGE);
+       if (window->view != NULL) {
+               gl_view_object_create_mode (GL_VIEW(window->view),
+                                           GL_LABEL_OBJECT_IMAGE);
        }
 }
 
@@ -147,16 +157,17 @@ gl_tools_image (BonoboUIComponent *uic,
 /*****************************************************************************/
 void
 gl_tools_barcode (BonoboUIComponent *uic,
-                 gpointer user_data,
-                 const gcharverbname)
+                 gpointer           user_data,
+                 const gchar       *verbname)
 
 {
-       glView *view;
+       glWindow *window;
+
+       window = GL_WINDOW (user_data);
 
-       view = glabels_get_active_view ();
-       if (view != NULL) {
-               gl_view_object_create_mode (view,
-                                              GL_LABEL_OBJECT_BARCODE);
+       if (window->view != NULL) {
+               gl_view_object_create_mode (GL_VIEW(window->view),
+                                           GL_LABEL_OBJECT_BARCODE);
        }
 }
 
@@ -165,15 +176,16 @@ gl_tools_barcode (BonoboUIComponent *uic,
 /*****************************************************************************/
 void
 gl_tools_zoomin (BonoboUIComponent *uic,
-                gpointer user_data,
-                const gcharverbname)
+                gpointer           user_data,
+                const gchar       *verbname)
 
 {
-       glView *view;
+       glWindow *window;
 
-       view = glabels_get_active_view ();
-       if (view != NULL) {
-               gl_view_zoom_in (view);
+       window = GL_WINDOW (user_data);
+
+       if (window->view != NULL) {
+               gl_view_zoom_in (GL_VIEW(window->view));
        }
 }
 
@@ -182,15 +194,16 @@ gl_tools_zoomin (BonoboUIComponent *uic,
 /*****************************************************************************/
 void
 gl_tools_zoomout (BonoboUIComponent *uic,
-                 gpointer user_data,
-                 const gcharverbname)
+                 gpointer           user_data,
+                 const gchar       *verbname)
 
 {
-       glView *view;
+       glWindow *window;
+
+       window = GL_WINDOW (user_data);
 
-       view = glabels_get_active_view ();
-       if (view != NULL) {
-               gl_view_zoom_out (view);
+       if (window->view != NULL) {
+               gl_view_zoom_out (GL_VIEW(window->view));
        }
 }
 
@@ -199,15 +212,16 @@ gl_tools_zoomout (BonoboUIComponent *uic,
 /*****************************************************************************/
 void
 gl_tools_zoom1to1 (BonoboUIComponent *uic,
-                  gpointer user_data,
-                  const gcharverbname)
+                  gpointer           user_data,
+                  const gchar       *verbname)
 
 {
-       glView *view;
+       glWindow *window;
 
-       view = glabels_get_active_view ();
-       if (view != NULL) {
-               gl_view_set_zoom (view, 1.0);
+       window = GL_WINDOW (user_data);
+
+       if (window->view != NULL) {
+               gl_view_set_zoom (GL_VIEW(window->view), 1.0);
        }
 }
 
@@ -216,15 +230,16 @@ gl_tools_zoom1to1 (BonoboUIComponent *uic,
 /*****************************************************************************/
 void
 gl_tools_merge_properties (BonoboUIComponent *uic,
-                          gpointer user_data,
-                          const gcharverbname)
+                          gpointer           user_data,
+                          const gchar       *verbname)
 
 {
-       glView *view;
+       glWindow *window;
+
+       window = GL_WINDOW (user_data);
 
-       view = glabels_get_active_view ();
-       if (view != NULL) {
-               gl_merge_properties_dialog (view);
+       if (window->view != NULL) {
+               gl_merge_properties_dialog (GL_VIEW(window->view));
        }
 }
 
@@ -233,15 +248,16 @@ gl_tools_merge_properties (BonoboUIComponent *uic,
 /*****************************************************************************/
 void
 gl_tools_object_properties (BonoboUIComponent *uic,
-                           gpointer user_data,
-                           const gcharverbname)
+                           gpointer           user_data,
+                           const gchar       *verbname)
 
 {
-       glView *view;
+       glWindow *window;
 
-       view = glabels_get_active_view ();
-       if (view != NULL) {
-               gl_view_edit_object_props (view);
+       window = GL_WINDOW (user_data);
+
+       if (window->view != NULL) {
+               gl_view_edit_object_props (GL_VIEW(window->view));
        }
 }
 
@@ -250,15 +266,16 @@ gl_tools_object_properties (BonoboUIComponent *uic,
 /*****************************************************************************/
 void
 gl_tools_raise_objects (BonoboUIComponent *uic,
-                       gpointer user_data,
-                       const gcharverbname)
+                       gpointer           user_data,
+                       const gchar       *verbname)
 
 {
-       glView *view;
+       glWindow *window;
+
+       window = GL_WINDOW (user_data);
 
-       view = glabels_get_active_view ();
-       if (view != NULL) {
-               gl_view_raise_selection (view);
+       if (window->view != NULL) {
+               gl_view_raise_selection (GL_VIEW(window->view));
        }
 }
 
@@ -267,15 +284,16 @@ gl_tools_raise_objects (BonoboUIComponent *uic,
 /*****************************************************************************/
 void
 gl_tools_lower_objects (BonoboUIComponent *uic,
-                       gpointer user_data,
-                       const gcharverbname)
+                       gpointer           user_data,
+                       const gchar       *verbname)
 
 {
-       glView *view;
+       glWindow *window;
+
+       window = GL_WINDOW (user_data);
 
-       view = glabels_get_active_view ();
-       if (view != NULL) {
-               gl_view_lower_selection (view);
+       if (window->view != NULL) {
+               gl_view_lower_selection (GL_VIEW(window->view));
        }
 }
 
index efe5103dfe7b988b32143926bcaea8a346f0eecd..8280b3571623edd9cffd9a9a2daaed6215487126 100644 (file)
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
  */
-
-/*
- * This file is based on gedit-menus.c from gedit2:
- *
- * Copyright (C) 1998, 1999 Alex Roberts, Evan Lawrence
- * Copyright (C) 2000, 2001 Chema Celorio, Paolo Maggi 
- *
- */
 #include <config.h>
 
 #include "gnome-recent-view.h"
 #include "ui.h"
 #include "commands.h"
 #include "tools.h"
-#include "glabels.h"
 #include "recent.h" 
 #include "file.h"
 #include "prefs.h"
 
+#include "debug.h"
+
+/*========================================================*/
+/* Private macros and constants.                          */
+/*========================================================*/
+#define GLABELS_UI_XML GLABELS_UI_DIR "glabels-ui.xml"
+
+/*========================================================*/
+/* Private types.                                         */
+/*========================================================*/
+
+
 /*===========================================*/
-/* Public globals                            */
+/* Private globals                           */
 /*===========================================*/
-BonoboUIVerb gl_ui_verbs [] = {
+
+static BonoboUIVerb gl_ui_verbs [] = {
        BONOBO_UI_VERB ("FileNew", gl_cmd_file_new),
        BONOBO_UI_VERB ("FileOpen", gl_cmd_file_open),
        BONOBO_UI_VERB ("FileSave", gl_cmd_file_save),
        BONOBO_UI_VERB ("FileSaveAs", gl_cmd_file_save_as),
        BONOBO_UI_VERB ("FilePrint", gl_cmd_file_print),
        BONOBO_UI_VERB ("FileClose", gl_cmd_file_close),
-       BONOBO_UI_VERB ("FileCloseAll", gl_cmd_file_close_all),
        BONOBO_UI_VERB ("FileExit", gl_cmd_file_exit),
        BONOBO_UI_VERB ("EditCut", gl_cmd_edit_cut),
        BONOBO_UI_VERB ("EditCopy", gl_cmd_edit_copy),
@@ -79,20 +82,6 @@ BonoboUIVerb gl_ui_verbs [] = {
        BONOBO_UI_VERB_END
 };
 
-/*========================================================*/
-/* Private macros and constants.                          */
-/*========================================================*/
-
-
-/*========================================================*/
-/* Private types.                                         */
-/*========================================================*/
-
-
-/*===========================================*/
-/* Private globals                           */
-/*===========================================*/
-
 static gchar* doc_verbs [] = {
        "/commands/FileSave",
        "/commands/FileSaveAs",
@@ -161,8 +150,8 @@ static void view_menu_item_toggled_cb (
                        const char                  *state,
                        BonoboWindow                *win);
 
-static void set_app_main_toolbar_style          (BonoboWindow *win);
-static void set_app_drawing_toolbar_style (BonoboWindow *win);
+static void set_app_main_toolbar_style           (BonoboUIComponent *ui_component);
+static void set_app_drawing_toolbar_style (BonoboUIComponent *ui_component);
 
 static void
 set_verb_sensitive (BonoboUIComponent  *ui_component,
@@ -182,18 +171,35 @@ set_verb_state (BonoboUIComponent   *ui_component,
 /*****************************************************************************/
 /* Initialize UI component for given window.                                 */
 /*****************************************************************************/
-void gl_ui_init   (BonoboUIComponent *ui_component,
-                  BonoboWindow      *win)
+void
+gl_ui_init (BonoboUIComponent *ui_component,
+           BonoboWindow      *win)
 {
         GnomeRecentView *recent_view;
         GnomeRecentModel *recent_model;
 
+       gl_debug (DEBUG_UI, "START");
+
+       gl_debug (DEBUG_UI, "window = %p", win);
+
        g_return_if_fail (ui_component != NULL);
 
+       bonobo_ui_engine_config_set_path (bonobo_window_get_ui_engine (win),
+                                         "/glabels/UIConfig/kvps");
+       gl_debug (DEBUG_UI, "Path set");
+
+       bonobo_ui_util_set_ui (ui_component,
+                              "", GLABELS_UI_XML, "gLabels", NULL);
+       gl_debug (DEBUG_UI, "UI set");
+
+       bonobo_ui_component_add_verb_list_with_data(ui_component,
+                                                   gl_ui_verbs, win);
+       gl_debug (DEBUG_UI, "verb list added");
+
        /* Set the toolbar style according to prefs */
-       set_app_main_toolbar_style (win);
+       set_app_main_toolbar_style (ui_component);
                
-       /* Add listener fo the view menu */
+       /* Add listener for the view menu */
        bonobo_ui_component_add_listener (ui_component, "ViewMainToolbar", 
                        (BonoboUIListenerFn)view_menu_item_toggled_cb, 
                        (gpointer)win);
@@ -212,9 +218,9 @@ void gl_ui_init   (BonoboUIComponent *ui_component,
                        (gpointer)win);
 
        /* Set the toolbar style according to prefs */
-       set_app_drawing_toolbar_style (win);
+       set_app_drawing_toolbar_style (ui_component);
                
-       /* Add listener fo the view menu */
+       /* Add listener for the view menu */
        bonobo_ui_component_add_listener (ui_component, "ViewDrawingToolbar", 
                        (BonoboUIListenerFn)view_menu_item_toggled_cb, 
                        (gpointer)win);
@@ -245,16 +251,20 @@ void gl_ui_init   (BonoboUIComponent *ui_component,
         g_signal_connect (G_OBJECT (recent_view), "activate",
                           G_CALLBACK (gl_file_open_recent), win);
 
+       gl_debug (DEBUG_UI, "END");
 }
 
 /*****************************************************************************/
 /* Update all verbs of given UI component.                                   */
 /*****************************************************************************/
-void gl_ui_update_all (BonoboUIComponent *ui_component,
-                      glView            *view)
+void
+gl_ui_update_all (BonoboUIComponent *ui_component,
+                 glView            *view)
 {
        glLabel *label;
 
+       gl_debug (DEBUG_UI, "START");
+
        bonobo_ui_component_freeze (ui_component, NULL);
 
        set_verb_list_sensitive (ui_component, doc_verbs, TRUE);
@@ -281,43 +291,56 @@ void gl_ui_update_all (BonoboUIComponent *ui_component,
                                 gl_view_is_selection_atomic (view));
 
        bonobo_ui_component_thaw (ui_component, NULL);
+
+       gl_debug (DEBUG_UI, "END");
 }
 
 /*****************************************************************************/
 /* Update all verbs of given UI component to "no document" state.            */
 /*****************************************************************************/
-void gl_ui_update_nodoc           (BonoboUIComponent *ui_component)
+void
+gl_ui_update_nodoc (BonoboUIComponent *ui_component)
 {
+       gl_debug (DEBUG_UI, "START");
+
        bonobo_ui_component_freeze (ui_component, NULL);
        
        set_verb_list_sensitive (ui_component, doc_verbs, FALSE);
 
        bonobo_ui_component_thaw (ui_component, NULL);
+
+       gl_debug (DEBUG_UI, "END");
 }
 
 /*****************************************************************************/
-/* Update undo/redo verbs of given UI component.                             */
+/* Update label modified verbs of given UI component.                        */
 /*****************************************************************************/
-void gl_ui_update_undo_redo_verbs (BonoboUIComponent *ui_component,
-                                  glLabel           *label)
+void
+gl_ui_update_modified_verbs (BonoboUIComponent *ui_component,
+                            glLabel           *label)
 {
-       bonobo_ui_component_freeze (ui_component, NULL);
+       gl_debug (DEBUG_UI, "START");
 
-       set_verb_sensitive (ui_component,
-                           "/commands/EditUndo", gl_label_can_undo (label));
+       bonobo_ui_component_freeze (ui_component, NULL);
 
-       set_verb_sensitive (ui_component,
-                           "/commands/EditRedo", gl_label_can_redo (label));
+       set_verb_list_sensitive (ui_component, 
+                                doc_modified_verbs,
+                                gl_label_is_modified (label));
 
        bonobo_ui_component_thaw (ui_component, NULL);
+
+       gl_debug (DEBUG_UI, "END");
 }
 
 /*****************************************************************************/
 /* Update verbs associated with selection state of given UI component.       */
 /*****************************************************************************/
-void gl_ui_update_selection_verbs (BonoboUIComponent *ui_component,
-                                  glView            *view)
+void
+gl_ui_update_selection_verbs (BonoboUIComponent *ui_component,
+                             glView            *view)
 {
+       gl_debug (DEBUG_UI, "START");
+
        bonobo_ui_component_freeze (ui_component, NULL);
 
        set_verb_list_sensitive (ui_component,
@@ -329,6 +352,30 @@ void gl_ui_update_selection_verbs (BonoboUIComponent *ui_component,
                                 gl_view_is_selection_atomic (view));
 
        bonobo_ui_component_thaw (ui_component, NULL);
+
+       gl_debug (DEBUG_UI, "END");
+}
+
+/*****************************************************************************/
+/* Update undo/redo verbs of given UI component.                             */
+/*****************************************************************************/
+void
+gl_ui_update_undo_redo_verbs (BonoboUIComponent *ui_component,
+                             glLabel           *label)
+{
+       gl_debug (DEBUG_UI, "START");
+
+       bonobo_ui_component_freeze (ui_component, NULL);
+
+       set_verb_sensitive (ui_component,
+                           "/commands/EditUndo", gl_label_can_undo (label));
+
+       set_verb_sensitive (ui_component,
+                           "/commands/EditRedo", gl_label_can_redo (label));
+
+       bonobo_ui_component_thaw (ui_component, NULL);
+
+       gl_debug (DEBUG_UI, "END");
 }
 
 /*---------------------------------------------------------------------------*/
@@ -343,13 +390,15 @@ view_menu_item_toggled_cb (BonoboUIComponent           *ui_component,
 {
        gboolean s;
 
+       gl_debug (DEBUG_UI, "");
+
        s = (strcmp (state, "1") == 0);
 
        if ((strcmp (path, "ViewMainToolbar") == 0) &&
            (s != gl_prefs->main_toolbar_visible))
        {
                gl_prefs->main_toolbar_visible = s;
-               set_app_main_toolbar_style (win);
+               set_app_main_toolbar_style (ui_component);
 
                return;
        }
@@ -358,7 +407,7 @@ view_menu_item_toggled_cb (BonoboUIComponent           *ui_component,
            (gl_prefs->main_toolbar_buttons_style != GL_TOOLBAR_SYSTEM))
        {               
                gl_prefs->main_toolbar_buttons_style = GL_TOOLBAR_SYSTEM;
-               set_app_main_toolbar_style (win);
+               set_app_main_toolbar_style (ui_component);
 
                return;
        }
@@ -367,7 +416,7 @@ view_menu_item_toggled_cb (BonoboUIComponent           *ui_component,
            (gl_prefs->main_toolbar_buttons_style != GL_TOOLBAR_ICONS))
        {               
                gl_prefs->main_toolbar_buttons_style = GL_TOOLBAR_ICONS;
-               set_app_main_toolbar_style (win);
+               set_app_main_toolbar_style (ui_component);
 
                return;
        }
@@ -376,7 +425,7 @@ view_menu_item_toggled_cb (BonoboUIComponent           *ui_component,
            (gl_prefs->main_toolbar_buttons_style != GL_TOOLBAR_ICONS_AND_TEXT))
        {               
                gl_prefs->main_toolbar_buttons_style = GL_TOOLBAR_ICONS_AND_TEXT;
-               set_app_main_toolbar_style (win);
+               set_app_main_toolbar_style (ui_component);
 
                return;
        }
@@ -385,7 +434,7 @@ view_menu_item_toggled_cb (BonoboUIComponent           *ui_component,
            (s != gl_prefs->main_toolbar_view_tooltips))
        {
                gl_prefs->main_toolbar_view_tooltips = s;
-               set_app_main_toolbar_style (win);
+               set_app_main_toolbar_style (ui_component);
 
                return;
        }
@@ -394,7 +443,7 @@ view_menu_item_toggled_cb (BonoboUIComponent           *ui_component,
            (s != gl_prefs->drawing_toolbar_visible))
        {
                gl_prefs->drawing_toolbar_visible = s;
-               set_app_drawing_toolbar_style (win);
+               set_app_drawing_toolbar_style (ui_component);
 
                return;
        }
@@ -403,7 +452,7 @@ view_menu_item_toggled_cb (BonoboUIComponent           *ui_component,
            (gl_prefs->drawing_toolbar_buttons_style != GL_TOOLBAR_SYSTEM))
        {               
                gl_prefs->drawing_toolbar_buttons_style = GL_TOOLBAR_SYSTEM;
-               set_app_drawing_toolbar_style (win);
+               set_app_drawing_toolbar_style (ui_component);
 
                return;
        }
@@ -412,7 +461,7 @@ view_menu_item_toggled_cb (BonoboUIComponent           *ui_component,
            (gl_prefs->drawing_toolbar_buttons_style != GL_TOOLBAR_ICONS))
        {               
                gl_prefs->drawing_toolbar_buttons_style = GL_TOOLBAR_ICONS;
-               set_app_drawing_toolbar_style (win);
+               set_app_drawing_toolbar_style (ui_component);
 
                return;
        }
@@ -421,7 +470,7 @@ view_menu_item_toggled_cb (BonoboUIComponent           *ui_component,
            (gl_prefs->drawing_toolbar_buttons_style != GL_TOOLBAR_ICONS_AND_TEXT))
        {               
                gl_prefs->drawing_toolbar_buttons_style = GL_TOOLBAR_ICONS_AND_TEXT;
-               set_app_drawing_toolbar_style (win);
+               set_app_drawing_toolbar_style (ui_component);
 
                return;
        }
@@ -430,7 +479,7 @@ view_menu_item_toggled_cb (BonoboUIComponent           *ui_component,
            (s != gl_prefs->drawing_toolbar_view_tooltips))
        {
                gl_prefs->drawing_toolbar_view_tooltips = s;
-               set_app_drawing_toolbar_style (win);
+               set_app_drawing_toolbar_style (ui_component);
 
                return;
        }
@@ -441,16 +490,14 @@ view_menu_item_toggled_cb (BonoboUIComponent           *ui_component,
 /* PRIVATE.  Set main toolbar style.                                         */
 /*---------------------------------------------------------------------------*/
 static void
-set_app_main_toolbar_style (BonoboWindow *win)
+set_app_main_toolbar_style (BonoboUIComponent *ui_component)
 {
-       BonoboUIComponent *ui_component;
        GConfClient *client;
        gboolean labels;
 
-       g_return_if_fail (BONOBO_IS_WINDOW (win));
-                       
-       ui_component = bonobo_mdi_get_ui_component_from_window (win);
-       g_return_if_fail (ui_component != NULL);
+       gl_debug (DEBUG_UI, "START");
+
+       g_return_if_fail (BONOBO_IS_UI_COMPONENT (ui_component));
                        
        bonobo_ui_component_freeze (ui_component, NULL);
 
@@ -545,6 +592,7 @@ set_app_main_toolbar_style (BonoboWindow *win)
  error:
        bonobo_ui_component_thaw (ui_component, NULL);
 
+       gl_debug (DEBUG_UI, "END");
 }
 
 
@@ -552,17 +600,14 @@ set_app_main_toolbar_style (BonoboWindow *win)
 /* PRIVATE.  Set drawing toolbar style.                                      */
 /*---------------------------------------------------------------------------*/
 static void
-set_app_drawing_toolbar_style (BonoboWindow *win)
+set_app_drawing_toolbar_style (BonoboUIComponent *ui_component)
 {
-       BonoboUIComponent *ui_component;
        GConfClient *client;
        gboolean labels;
 
-       
-       g_return_if_fail (BONOBO_IS_WINDOW (win));
-                       
-       ui_component = bonobo_mdi_get_ui_component_from_window (win);
-       g_return_if_fail (ui_component != NULL);
+       gl_debug (DEBUG_UI, "START");
+
+       g_return_if_fail (BONOBO_IS_UI_COMPONENT(ui_component));
                        
        bonobo_ui_component_freeze (ui_component, NULL);
 
@@ -660,6 +705,7 @@ set_app_drawing_toolbar_style (BonoboWindow *win)
  error:
        bonobo_ui_component_thaw (ui_component, NULL);
 
+       gl_debug (DEBUG_UI, "END");
 }
 
 
@@ -671,6 +717,8 @@ set_verb_sensitive (BonoboUIComponent  *ui_component,
                    gchar              *cname,
                    gboolean            sensitive)
 {
+       gl_debug (DEBUG_UI, "START");
+
        g_return_if_fail (cname != NULL);
        g_return_if_fail (BONOBO_IS_UI_COMPONENT (ui_component));
 
@@ -679,6 +727,8 @@ set_verb_sensitive (BonoboUIComponent  *ui_component,
                                      "sensitive",
                                      sensitive ? "1" : "0",
                                      NULL);
+
+       gl_debug (DEBUG_UI, "END");
 }
 
 /*---------------------------------------------------------------------------*/
@@ -689,6 +739,8 @@ set_verb_list_sensitive (BonoboUIComponent   *ui_component,
                         gchar              **vlist,
                         gboolean             sensitive)
 {
+       gl_debug (DEBUG_UI, "START");
+
        g_return_if_fail (vlist != NULL);
        g_return_if_fail (BONOBO_IS_UI_COMPONENT (ui_component));
 
@@ -700,6 +752,8 @@ set_verb_list_sensitive (BonoboUIComponent   *ui_component,
                                              sensitive ? "1" : "0",
                                              NULL);
        }
+
+       gl_debug (DEBUG_UI, "END");
 }
 
 /*---------------------------------------------------------------------------*/
@@ -710,6 +764,8 @@ set_verb_state (BonoboUIComponent   *ui_component,
                gchar               *cname,
                gboolean             state)
 {
+       gl_debug (DEBUG_UI, "START");
+
        g_return_if_fail (cname != NULL);
        g_return_if_fail (BONOBO_IS_UI_COMPONENT (ui_component));
 
@@ -718,5 +774,7 @@ set_verb_state (BonoboUIComponent   *ui_component,
                                      "state",
                                      state ? "1" : "0",
                                      NULL);
+
+       gl_debug (DEBUG_UI, "END");
 }
 
index 541ae121dbc1604b3f884a53c37d093cb8d44979..aa8e3723d9ad283f2789658359ed121c58107d89 100644 (file)
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
  */
-
-/*
- * This file is based on gedit-menus.h from gedit2:
- *
- * Copyright (C) 1998, 1999 Alex Roberts, Evan Lawrence
- * Copyright (C) 2000, 2001 Chema Celorio, Paolo Maggi 
- *
- */
 #ifndef __GL_UI_H__
 #define __GL_UI_H__
 
 
 #include "view.h"
 
-extern BonoboUIVerb gl_ui_verbs [];
-
-
 extern void gl_ui_init                   (BonoboUIComponent *ui_component,
                                          BonoboWindow      *win);
+
 extern void gl_ui_update_all             (BonoboUIComponent *ui_component,
                                          glView            *view);
+
 extern void gl_ui_update_nodoc           (BonoboUIComponent *ui_component);
-extern void gl_ui_update_undo_redo_verbs (BonoboUIComponent *ui_component,
+
+extern void gl_ui_update_modified_verbs  (BonoboUIComponent *ui_component,
                                          glLabel           *label);
+
 extern void gl_ui_update_selection_verbs (BonoboUIComponent *ui_component,
                                          glView            *view);
 
+extern void gl_ui_update_undo_redo_verbs (BonoboUIComponent *ui_component,
+                                         glLabel           *label);
+
 #endif /* __GL_UI_H__ */
index 6d2441e78bce7f2556fd7ad0b40963342968fbf9..8f4d71900995077577ed79f9bfb1e935798f944e 100644 (file)
@@ -29,7 +29,6 @@
 
 #include "view-highlight.h"
 
-#include "glabels.h"
 #include "wdgt-bc-data.h"
 #include "wdgt-bc-props.h"
 #include "wdgt-bc-style.h"
@@ -245,7 +244,6 @@ static GtkWidget *
 construct_properties_dialog (glViewBarcode *view_barcode)
 {
        GtkWidget          *dialog, *wsection;
-       BonoboWindow       *win = glabels_get_active_window ();
        glLabelObject      *object;
        gdouble            x, y, w, h, label_width, label_height;
        glTextNode         *text_node;
@@ -272,7 +270,7 @@ construct_properties_dialog (glViewBarcode *view_barcode)
        /* Build dialog.                                                   */
        /*-----------------------------------------------------------------*/
        dialog = gl_hig_dialog_new_with_buttons ( _("Edit barcode object properties"),
-                                                 GTK_WINDOW (win),
+                                                 NULL,
                                                  GTK_DIALOG_DESTROY_WITH_PARENT,
                                                  GTK_STOCK_CLOSE,
                                                           GTK_RESPONSE_CLOSE,
index 6472350e5fe37b8b304e060f3b20f83c31989591..67233f0f84d041fa5a5e305839b70d7fd8955c8c 100644 (file)
@@ -26,7 +26,6 @@
 
 #include "view-highlight.h"
 
-#include "glabels.h"
 #include "wdgt-line.h"
 #include "wdgt-fill.h"
 #include "wdgt-size.h"
@@ -271,7 +270,6 @@ static GtkWidget *
 construct_properties_dialog (glViewBox *view_box)
 {
        GtkWidget          *dialog, *wsection;
-       BonoboWindow       *win = glabels_get_active_window ();
        glLabelObject      *object;
        gdouble            line_width;
        guint              line_color, fill_color;
@@ -294,7 +292,7 @@ construct_properties_dialog (glViewBox *view_box)
        /* Build dialog with notebook.                                     */
        /*-----------------------------------------------------------------*/
        dialog = gl_hig_dialog_new_with_buttons ( _("Edit box object properties"),
-                                                 GTK_WINDOW (win),
+                                                 NULL,
                                                  GTK_DIALOG_DESTROY_WITH_PARENT,
                                                  GTK_STOCK_CLOSE,
                                                           GTK_RESPONSE_CLOSE,
index d18fff7c3a8190bef5132bf08c1582a79b35033a..41836c3aafc5dd57b4b201343a9bb14fea5529ee 100644 (file)
@@ -26,7 +26,6 @@
 
 #include "view-highlight.h"
 
-#include "glabels.h"
 #include "wdgt-line.h"
 #include "wdgt-fill.h"
 #include "wdgt-size.h"
@@ -271,7 +270,6 @@ static GtkWidget *
 construct_properties_dialog (glViewEllipse *view_ellipse)
 {
        GtkWidget          *dialog, *wsection;
-       BonoboWindow       *win = glabels_get_active_window ();
        glLabelObject      *object;
        gdouble            line_width;
        guint              line_color, fill_color;
@@ -294,7 +292,7 @@ construct_properties_dialog (glViewEllipse *view_ellipse)
        /* Build dialog with notebook.                                     */
        /*-----------------------------------------------------------------*/
        dialog = gl_hig_dialog_new_with_buttons ( _("Edit ellipse object properties"),
-                                                 GTK_WINDOW (win),
+                                                 NULL,
                                                  GTK_DIALOG_DESTROY_WITH_PARENT,
                                                  GTK_STOCK_CLOSE,
                                                           GTK_RESPONSE_CLOSE,
index 06f52ee0f58ccb270dcfff412a8d5fe61dc49a1f..0a30f06541e2590179dd67933d6f99fd38d2b5cf 100644 (file)
@@ -26,7 +26,6 @@
 
 #include "view-highlight.h"
 
-#include "glabels.h"
 #include "wdgt-line.h"
 #include "wdgt-fill.h"
 #include "wdgt-size.h"
@@ -265,7 +264,6 @@ static GtkWidget *
 construct_properties_dialog (glViewImage *view_image)
 {
        GtkWidget          *dialog, *wsection, *wbutton;
-       BonoboWindow       *win = glabels_get_active_window ();
        glLabelObject      *object;
        gdouble            x, y, w, h, label_width, label_height;
        gchar              *filename;
@@ -285,7 +283,7 @@ construct_properties_dialog (glViewImage *view_image)
        /* Build dialog.                                                   */
        /*-----------------------------------------------------------------*/
        dialog = gl_hig_dialog_new_with_buttons ( _("Edit image object properties"),
-                                                 GTK_WINDOW (win),
+                                                 NULL,
                                                  GTK_DIALOG_DESTROY_WITH_PARENT,
                                                  GTK_STOCK_CLOSE,
                                                           GTK_RESPONSE_CLOSE,
index 2cd987f8383be6fa1b6d9eaf30a2b12f2e255705..a6313893cf2402a37b68c85f83caedec2920ecd1 100644 (file)
@@ -26,7 +26,6 @@
 
 #include "view-highlight.h"
 
-#include "glabels.h"
 #include "wdgt-line.h"
 #include "wdgt-vector.h"
 #include "wdgt-position.h"
@@ -271,7 +270,6 @@ static GtkWidget *
 construct_properties_dialog (glViewLine *view_line)
 {
        GtkWidget          *dialog, *wsection;
-       BonoboWindow       *win = glabels_get_active_window ();
        glLabelObject      *object;
        gdouble            line_width;
        guint              line_color;
@@ -293,7 +291,7 @@ construct_properties_dialog (glViewLine *view_line)
        /* Build dialog with notebook.                                     */
        /*-----------------------------------------------------------------*/
        dialog = gl_hig_dialog_new_with_buttons ( _("Edit line object properties"),
-                                                 GTK_WINDOW (win),
+                                                 NULL,
                                                  GTK_DIALOG_DESTROY_WITH_PARENT,
                                                  GTK_STOCK_CLOSE,
                                                           GTK_RESPONSE_CLOSE,
index 2092a23d141bbdd535aa575fe84d170d8dedb38d..1cab9af52b41aa4d519ba044cbd4b6b2e331428d 100644 (file)
@@ -27,7 +27,6 @@
 #include "view-text.h"
 #include "canvas-hacktext.h"
 #include "view-highlight.h"
-#include "glabels.h"
 #include "wdgt-text-entry.h"
 #include "wdgt-text-props.h"
 #include "wdgt-position.h"
@@ -238,7 +237,6 @@ static GtkWidget *
 construct_properties_dialog (glViewText *view_text)
 {
        GtkWidget          *dialog, *wsection, *wbutton;
-       BonoboWindow       *win = glabels_get_active_window ();
        glLabelObject      *object;
        gdouble            x, y, w, h, label_width, label_height;
        GList              *lines;
@@ -269,7 +267,7 @@ construct_properties_dialog (glViewText *view_text)
        /* Build dialog.                                                   */
        /*-----------------------------------------------------------------*/
        dialog = gl_hig_dialog_new_with_buttons ( _("Edit text object properties"),
-                                                 GTK_WINDOW (win),
+                                                 NULL,
                                                  GTK_DIALOG_DESTROY_WITH_PARENT,
                                                  GTK_STOCK_CLOSE,
                                                           GTK_RESPONSE_CLOSE,