]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkuimanager.h
stylecontext: Do invalidation on first resize container
[~andy/gtk] / gtk / gtkuimanager.h
index 90e4e52191b0608b82f99bac69df2335108dfbfa..85f945affd2fbc0e48fcd56c303d2d21a4633c04 100644 (file)
@@ -14,9 +14,7 @@
  * Library General Public License for more details.
  *
  * You should have received a copy of the GNU Library General Public
- * License along with the Gnome Library; see the file COPYING.LIB.  If not,
- * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
  * Modified by the GTK+ Team and others 2003.  See the AUTHORS
  * file for a list of people on the GTK+ Team.  See the ChangeLog
  * files for a list of changes.  These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/. 
+ * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
  */
+
 #ifndef __GTK_UI_MANAGER_H__
 #define __GTK_UI_MANAGER_H__
 
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#error "Only <gtk/gtk.h> can be included directly."
+#endif
 
-#include <glib.h>
-#include <glib-object.h>
 #include <gtk/gtkaccelgroup.h>
 #include <gtk/gtkwidget.h>
 #include <gtk/gtkaction.h>
 #include <gtk/gtkactiongroup.h>
 
+G_BEGIN_DECLS
+
 #define GTK_TYPE_UI_MANAGER            (gtk_ui_manager_get_type ())
-#define GTK_UI_MANAGER(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_UI_MANAGER, GtkMenuMerge))
+#define GTK_UI_MANAGER(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_UI_MANAGER, GtkUIManager))
 #define GTK_UI_MANAGER_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_UI_MANAGER, GtkUIManagerClass))
 #define GTK_IS_UI_MANAGER(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_UI_MANAGER))
-#define GTK_IS_UI_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), GTK_TYPE_UI_MANAGER))
+#define GTK_IS_UI_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_UI_MANAGER))
 #define GTK_UI_MANAGER_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS((obj), GTK_TYPE_UI_MANAGER, GtkUIManagerClass))
 
 typedef struct _GtkUIManager      GtkUIManager;
@@ -54,17 +56,32 @@ struct _GtkUIManager {
   GObject parent;
 
   /*< private >*/
-
   GtkUIManagerPrivate *private_data;
 };
 
 struct _GtkUIManagerClass {
   GObjectClass parent_class;
 
-  void (* add_widget)    (GtkUIManager *merge, 
-                          GtkWidget    *widget);
-  void (* remove_widget) (GtkUIManager *merge, 
-                          GtkWidget    *widget);
+  /* Signals */
+  void (* add_widget)       (GtkUIManager *manager,
+                             GtkWidget    *widget);
+  void (* actions_changed)  (GtkUIManager *manager);
+  void (* connect_proxy)    (GtkUIManager *manager,
+                            GtkAction    *action,
+                            GtkWidget    *proxy);
+  void (* disconnect_proxy) (GtkUIManager *manager,
+                            GtkAction    *action,
+                            GtkWidget    *proxy);
+  void (* pre_activate)     (GtkUIManager *manager,
+                            GtkAction    *action);
+  void (* post_activate)    (GtkUIManager *manager,
+                            GtkAction    *action);
+
+  /* Virtual functions */
+  GtkWidget * (* get_widget) (GtkUIManager *manager,
+                              const gchar  *path);
+  GtkAction * (* get_action) (GtkUIManager *manager,
+                              const gchar  *path);
 
   /* Padding for future expansion */
   void (*_gtk_reserved1) (void);
@@ -73,37 +90,82 @@ struct _GtkUIManagerClass {
   void (*_gtk_reserved4) (void);
 };
 
-GType          gtk_ui_manager_get_type            (void);
+/**
+ * GtkUIManagerItemType:
+ * @GTK_UI_MANAGER_AUTO: Pick the type of the UI element according to context.
+ * @GTK_UI_MANAGER_MENUBAR: Create a menubar.
+ * @GTK_UI_MANAGER_MENU: Create a menu.
+ * @GTK_UI_MANAGER_TOOLBAR: Create a toolbar.
+ * @GTK_UI_MANAGER_PLACEHOLDER: Insert a placeholder.
+ * @GTK_UI_MANAGER_POPUP: Create a popup menu.
+ * @GTK_UI_MANAGER_MENUITEM: Create a menuitem.
+ * @GTK_UI_MANAGER_TOOLITEM: Create a toolitem.
+ * @GTK_UI_MANAGER_SEPARATOR: Create a separator.
+ * @GTK_UI_MANAGER_ACCELERATOR: Install an accelerator.
+ * @GTK_UI_MANAGER_POPUP_WITH_ACCELS: Same as %GTK_UI_MANAGER_POPUP, but the
+ *   actions' accelerators are shown.
+ *
+ * These enumeration values are used by gtk_ui_manager_add_ui() to determine
+ * what UI element to create.
+ */
+typedef enum {
+  GTK_UI_MANAGER_AUTO              = 0,
+  GTK_UI_MANAGER_MENUBAR           = 1 << 0,
+  GTK_UI_MANAGER_MENU              = 1 << 1,
+  GTK_UI_MANAGER_TOOLBAR           = 1 << 2,
+  GTK_UI_MANAGER_PLACEHOLDER       = 1 << 3,
+  GTK_UI_MANAGER_POPUP             = 1 << 4,
+  GTK_UI_MANAGER_MENUITEM          = 1 << 5,
+  GTK_UI_MANAGER_TOOLITEM          = 1 << 6,
+  GTK_UI_MANAGER_SEPARATOR         = 1 << 7,
+  GTK_UI_MANAGER_ACCELERATOR       = 1 << 8,
+  GTK_UI_MANAGER_POPUP_WITH_ACCELS = 1 << 9
+} GtkUIManagerItemType;
+
+GType          gtk_ui_manager_get_type            (void) G_GNUC_CONST;
 GtkUIManager  *gtk_ui_manager_new                 (void);
-
-/* these two functions will dirty all merge nodes, as they may need to
- * be connected up to different actions */
-void           gtk_ui_manager_insert_action_group (GtkUIManager   *self,
-                                                  GtkActionGroup *action_group,
-                                                  gint            pos);
-void           gtk_ui_manager_remove_action_group (GtkUIManager   *self,
-                                                  GtkActionGroup *action_group);
-GList         *gtk_ui_manager_get_action_groups   (GtkUIManager   *self);
-GtkAccelGroup *gtk_ui_manager_get_accel_group     (GtkUIManager   *self);
-
-
-
-GtkWidget     *gtk_ui_manager_get_widget          (GtkUIManager   *self,
-                                                  const gchar    *path);
-
-/* these two functions are for adding UI elements to the merged user
- * interface */
-guint          gtk_ui_manager_add_ui_from_string  (GtkUIManager   *self,
-                                                  const gchar    *buffer,
-                                                  gsize           length,
-                                                  GError        **error);
-guint          gtk_ui_manager_add_ui_from_file    (GtkUIManager   *self,
-                                                  const gchar    *filename,
-                                                  GError        **error);
-void           gtk_ui_manager_remove_ui           (GtkUIManager   *self,
-                                                  guint           merge_id);
-
-gchar         *gtk_ui_manager_get_ui              (GtkUIManager   *self);
-
+GDK_DEPRECATED_IN_3_4
+void           gtk_ui_manager_set_add_tearoffs    (GtkUIManager          *manager,
+                                                   gboolean               add_tearoffs);
+GDK_DEPRECATED_IN_3_4
+gboolean       gtk_ui_manager_get_add_tearoffs    (GtkUIManager          *manager);
+
+void           gtk_ui_manager_insert_action_group (GtkUIManager          *manager,
+                                                  GtkActionGroup        *action_group,
+                                                  gint                   pos);
+void           gtk_ui_manager_remove_action_group (GtkUIManager          *manager,
+                                                  GtkActionGroup        *action_group);
+GList         *gtk_ui_manager_get_action_groups   (GtkUIManager          *manager);
+GtkAccelGroup *gtk_ui_manager_get_accel_group     (GtkUIManager          *manager);
+GtkWidget     *gtk_ui_manager_get_widget          (GtkUIManager          *manager,
+                                                  const gchar           *path);
+GSList        *gtk_ui_manager_get_toplevels       (GtkUIManager          *manager,
+                                                  GtkUIManagerItemType   types);
+GtkAction     *gtk_ui_manager_get_action          (GtkUIManager          *manager,
+                                                  const gchar           *path);
+guint          gtk_ui_manager_add_ui_from_string  (GtkUIManager          *manager,
+                                                  const gchar           *buffer,
+                                                  gssize                 length,
+                                                  GError               **error);
+guint          gtk_ui_manager_add_ui_from_file    (GtkUIManager          *manager,
+                                                  const gchar           *filename,
+                                                  GError               **error);
+guint          gtk_ui_manager_add_ui_from_resource(GtkUIManager          *manager,
+                                                  const gchar           *resource_path,
+                                                  GError               **error);
+void           gtk_ui_manager_add_ui              (GtkUIManager          *manager,
+                                                  guint                  merge_id,
+                                                  const gchar           *path,
+                                                  const gchar           *name,
+                                                  const gchar           *action,
+                                                  GtkUIManagerItemType   type,
+                                                  gboolean               top);
+void           gtk_ui_manager_remove_ui           (GtkUIManager          *manager,
+                                                  guint                  merge_id);
+gchar         *gtk_ui_manager_get_ui              (GtkUIManager          *manager);
+void           gtk_ui_manager_ensure_update       (GtkUIManager          *manager);
+guint          gtk_ui_manager_new_merge_id        (GtkUIManager          *manager);
+
+G_END_DECLS
 
 #endif /* __GTK_UI_MANAGER_H__ */