[gimp] app: Keep GimpDocks in GtkPaneds in GimpDockColumns



commit 6f95bc68885ba7832f38d4d61a0d5cf94ecb46d4
Author: Martin Nordholts <martinn src gnome org>
Date:   Sat Oct 24 20:08:58 2009 +0200

    app: Keep GimpDocks in GtkPaneds in GimpDockColumns
    
    Use the new GimpPanedBox to make the space for GimpDocks in
    GimpDockColumns manually distributable by the use of GtkPaneds.

 app/gui/gimpuiconfigurer.c    |    2 +-
 app/widgets/gimpdockcolumns.c |   69 +++++++++++++++++++++++++++++++++++++---
 app/widgets/gimpdockcolumns.h |    4 ++
 3 files changed, 68 insertions(+), 7 deletions(-)
---
diff --git a/app/gui/gimpuiconfigurer.c b/app/gui/gimpuiconfigurer.c
index fafaac2..46abff0 100644
--- a/app/gui/gimpuiconfigurer.c
+++ b/app/gui/gimpuiconfigurer.c
@@ -160,7 +160,7 @@ gimp_ui_configurer_move_docks_to_columns (GimpUIConfigurer  *ui_configurer,
        */
       g_object_ref (dock);
       gtk_container_remove (GTK_CONTAINER (dock_window), GTK_WIDGET (dock));
-      gimp_dock_columns_add_dock (dock_columns, dock);
+      gimp_dock_columns_add_dock (dock_columns, dock, -1);
       g_object_unref (dock);
 
       /* Queue for removal from the dialog factory. (We can't remove
diff --git a/app/widgets/gimpdockcolumns.c b/app/widgets/gimpdockcolumns.c
index dd082b6..dee49a6 100644
--- a/app/widgets/gimpdockcolumns.c
+++ b/app/widgets/gimpdockcolumns.c
@@ -26,14 +26,22 @@
 
 #include "gimpdock.h"
 #include "gimpdockcolumns.h"
+#include "gimppanedbox.h"
 
 
 struct _GimpDockColumnsPrivate
 {
-  int dummy;
+  GList     *docks;
+
+  GtkWidget *paned_hbox;
 };
 
 
+static gboolean   gimp_dock_columns_dropped_cb        (GimpDockSeparator *separator,
+                                                       GtkWidget         *source,
+                                                       gpointer           data);
+
+
 G_DEFINE_TYPE (GimpDockColumns, gimp_dock_columns, GTK_TYPE_HBOX)
 
 #define parent_class gimp_dock_columns_parent_class
@@ -49,17 +57,66 @@ static void
 gimp_dock_columns_init (GimpDockColumns *dock_columns)
 {
   dock_columns->p = G_TYPE_INSTANCE_GET_PRIVATE (dock_columns,
-                                                GIMP_TYPE_DOCK_COLUMNS,
-                                                GimpDockColumnsPrivate);
+                                                 GIMP_TYPE_DOCK_COLUMNS,
+                                                 GimpDockColumnsPrivate);
+
+  dock_columns->p->paned_hbox = gimp_paned_box_new (FALSE, 0,
+                                                    GTK_ORIENTATION_HORIZONTAL);
+  gimp_paned_box_set_dropped_cb (GIMP_PANED_BOX (dock_columns->p->paned_hbox),
+                                 gimp_dock_columns_dropped_cb,
+                                 dock_columns);
+  gtk_container_add (GTK_CONTAINER (dock_columns), dock_columns->p->paned_hbox);
+  gtk_widget_show (dock_columns->p->paned_hbox);
 }
 
+static gboolean
+gimp_dock_columns_dropped_cb (GimpDockSeparator *separator,
+                              GtkWidget         *source,
+                              gpointer           data)
+{
+  g_printerr ("%s: WiP: Will create a new column soon!\n", G_STRFUNC);
+
+  return FALSE;
+}
+
+/**
+ * gimp_dock_columns_add_dock:
+ * @dock_columns:
+ * @dock:
+ *
+ * Add a dock, added to a horizontal GimpPanedBox.
+ **/
 void
 gimp_dock_columns_add_dock (GimpDockColumns *dock_columns,
-                            GimpDock        *dock)
+                            GimpDock        *dock,
+                            gint             index)
+{
+  g_return_if_fail (GIMP_IS_DOCK_COLUMNS (dock_columns));
+  g_return_if_fail (GIMP_IS_DOCK (dock));
+
+  dock_columns->p->docks = g_list_prepend (dock_columns->p->docks, dock);
+
+  gimp_paned_box_add_widget (GIMP_PANED_BOX (dock_columns->p->paned_hbox),
+                             GTK_WIDGET (dock),
+                             index);
+}
+
+
+void
+gimp_dock_columns_remove_dock (GimpDockColumns *dock_columns,
+                               GimpDock        *dock)
 {
   g_return_if_fail (GIMP_IS_DOCK_COLUMNS (dock_columns));
   g_return_if_fail (GIMP_IS_DOCK (dock));
 
-  gtk_box_pack_start (GTK_BOX (dock_columns), GTK_WIDGET (dock),
-                      TRUE, TRUE, 0);
+  dock_columns->p->docks = g_list_remove (dock_columns->p->docks, dock);
+
+  gimp_paned_box_remove_widget (GIMP_PANED_BOX (dock_columns->p->paned_hbox),
+                                GTK_WIDGET (dock));
+}
+
+GList *
+gimp_dock_columns_get_docks (GimpDockColumns *dock_columns)
+{
+  return g_list_copy (dock_columns->p->docks);
 }
diff --git a/app/widgets/gimpdockcolumns.h b/app/widgets/gimpdockcolumns.h
index 144748a..be3f82d 100644
--- a/app/widgets/gimpdockcolumns.h
+++ b/app/widgets/gimpdockcolumns.h
@@ -54,7 +54,11 @@ struct _GimpDockColumnsClass
 
 GType               gimp_dock_columns_get_type       (void) G_GNUC_CONST;
 void                gimp_dock_columns_add_dock       (GimpDockColumns *dock_columns,
+                                                      GimpDock        *dock,
+                                                      gint             index);
+void                gimp_dock_columns_remove_dock    (GimpDockColumns *dock_columns,
                                                       GimpDock        *dock);
+GList             * gimp_dock_columns_get_docks      (GimpDockColumns *dock_columns);
 
 
 #endif /* __GIMP_DOCK_COLUMNS_H__ */



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]