1 /* GIMP - The GNU Image Manipulation Program
2  * Copyright (C) 1995 Spencer Kimball and Peter Mattis
3  *
4  * gimpdock.h
5  * Copyright (C) 2001-2005 Michael Natterer <mitch@gimp.org>
6  *
7  * This program is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 3 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
19  */
20 
21 #ifndef __GIMP_DOCK_H__
22 #define __GIMP_DOCK_H__
23 
24 
25 #define GIMP_TYPE_DOCK            (gimp_dock_get_type ())
26 #define GIMP_DOCK(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GIMP_TYPE_DOCK, GimpDock))
27 #define GIMP_DOCK_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GIMP_TYPE_DOCK, GimpDockClass))
28 #define GIMP_IS_DOCK(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GIMP_TYPE_DOCK))
29 #define GIMP_IS_DOCK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GIMP_TYPE_DOCK))
30 #define GIMP_DOCK_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), GIMP_TYPE_DOCK, GimpDockClass))
31 
32 
33 /* String used to separate dockables, e.g. "Tool Options, Layers" */
34 #define GIMP_DOCK_DOCKABLE_SEPARATOR C_("dock", ", ")
35 
36 /* String used to separate books (GtkNotebooks) within a dock,
37    e.g. "Tool Options, Layers - Brushes"
38  */
39 #define GIMP_DOCK_BOOK_SEPARATOR C_("dock", " - ")
40 
41 /* String used to separate dock columns,
42    e.g. "Tool Options, Layers - Brushes | Gradients"
43  */
44 #define GIMP_DOCK_COLUMN_SEPARATOR C_("dock", " | ")
45 
46 
47 typedef struct _GimpDockClass    GimpDockClass;
48 typedef struct _GimpDockPrivate  GimpDockPrivate;
49 
50 /**
51  * GimpDock:
52  *
53  * Contains a column of GimpDockbooks.
54  */
55 struct _GimpDock
56 {
57   GtkBox           parent_instance;
58 
59   GimpDockPrivate *p;
60 };
61 
62 struct _GimpDockClass
63 {
64   GtkBoxClass  parent_class;
65 
66   /*  virtual functions  */
67   gchar * (* get_description)         (GimpDock       *dock,
68                                        gboolean        complete);
69   void    (* set_host_geometry_hints) (GimpDock       *dock,
70                                        GtkWindow      *window);
71 
72   /*  signals  */
73   void    (* book_added)              (GimpDock       *dock,
74                                        GimpDockbook   *dockbook);
75   void    (* book_removed)            (GimpDock       *dock,
76                                        GimpDockbook   *dockbook);
77   void    (* description_invalidated) (GimpDock       *dock);
78   void    (* geometry_invalidated)    (GimpDock       *dock);
79 };
80 
81 
82 GType               gimp_dock_get_type                (void) G_GNUC_CONST;
83 
84 gchar             * gimp_dock_get_description         (GimpDock       *dock,
85                                                        gboolean        complete);
86 void                gimp_dock_set_host_geometry_hints (GimpDock       *dock,
87                                                        GtkWindow      *window);
88 void                gimp_dock_invalidate_geometry     (GimpDock       *dock);
89 void                gimp_dock_update_with_context     (GimpDock       *dock,
90                                                        GimpContext    *context);
91 GimpContext       * gimp_dock_get_context             (GimpDock       *dock);
92 GimpDialogFactory * gimp_dock_get_dialog_factory      (GimpDock       *dock);
93 GimpUIManager     * gimp_dock_get_ui_manager          (GimpDock       *dock);
94 GList             * gimp_dock_get_dockbooks           (GimpDock       *dock);
95 gint                gimp_dock_get_n_dockables         (GimpDock       *dock);
96 GtkWidget         * gimp_dock_get_main_vbox           (GimpDock       *dock);
97 GtkWidget         * gimp_dock_get_vbox                (GimpDock       *dock);
98 gint                gimp_dock_get_id                  (GimpDock       *dock);
99 void                gimp_dock_set_id                  (GimpDock       *dock,
100                                                        gint            ID);
101 
102 void                gimp_dock_add                     (GimpDock       *dock,
103                                                        GimpDockable   *dockable,
104                                                        gint            book,
105                                                        gint            index);
106 void                gimp_dock_remove                  (GimpDock       *dock,
107                                                        GimpDockable   *dockable);
108 
109 void                gimp_dock_add_book                (GimpDock       *dock,
110                                                        GimpDockbook   *dockbook,
111                                                        gint            index);
112 void                gimp_dock_remove_book             (GimpDock       *dock,
113                                                        GimpDockbook   *dockbook);
114 void                gimp_dock_temp_add                (GimpDock       *dock,
115                                                        GtkWidget      *widget);
116 void                gimp_dock_temp_remove             (GimpDock       *dock,
117                                                        GtkWidget      *widget);
118 
119 
120 #endif /* __GIMP_DOCK_H__ */
121