README: add deprecation notice
[nautilus-actions.git] / src / api / fma-object-item.h
blob77a933c89b4943b01edc752086a16377b77f00da
1 /*
2 * FileManager-Actions
3 * A file-manager extension which offers configurable context menu actions.
5 * Copyright (C) 2005 The GNOME Foundation
6 * Copyright (C) 2006-2008 Frederic Ruaudel and others (see AUTHORS)
7 * Copyright (C) 2009-2015 Pierre Wieser and others (see AUTHORS)
9 * FileManager-Actions is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU General Public License as
11 * published by the Free Software Foundation; either version 2 of
12 * the License, or (at your option) any later version.
14 * FileManager-Actions is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 * General Public License for more details.
19 * You should have received a copy of the GNU General Public License
20 * along with FileManager-Actions; see the file COPYING. If not, see
21 * <http://www.gnu.org/licenses/>.
23 * Authors:
24 * Frederic Ruaudel <grumz@grumz.net>
25 * Rodrigo Moya <rodrigo@gnome-db.org>
26 * Pierre Wieser <pwieser@trychlos.org>
27 * ... and many others (see AUTHORS)
30 #ifndef __FILEMANAGER_ACTIONS_API_OBJECT_ITEM_H__
31 #define __FILEMANAGER_ACTIONS_API_OBJECT_ITEM_H__
33 /**
34 * SECTION: object-item
35 * @title: FMAObjectItem
36 * @short_description: The Object Item Base Class Definition
37 * @include: filemanager-actions/fma-object-item.h
39 * This is a pure virtual class, i.e. not an instantiatable one, but
40 * serves as the base class for #FMAObjectAction and #FMAObjectMenu.
43 #include "fma-object-id.h"
45 G_BEGIN_DECLS
47 #define FMA_TYPE_OBJECT_ITEM ( fma_object_item_get_type())
48 #define FMA_OBJECT_ITEM( object ) ( G_TYPE_CHECK_INSTANCE_CAST( object, FMA_TYPE_OBJECT_ITEM, FMAObjectItem ))
49 #define FMA_OBJECT_ITEM_CLASS( klass ) ( G_TYPE_CHECK_CLASS_CAST( klass, FMA_TYPE_OBJECT_ITEM, FMAObjectItemClass ))
50 #define FMA_IS_OBJECT_ITEM( object ) ( G_TYPE_CHECK_INSTANCE_TYPE( object, FMA_TYPE_OBJECT_ITEM ))
51 #define FMA_IS_OBJECT_ITEM_CLASS( klass ) ( G_TYPE_CHECK_CLASS_TYPE(( klass ), FMA_TYPE_OBJECT_ITEM ))
52 #define FMA_OBJECT_ITEM_GET_CLASS( object ) ( G_TYPE_INSTANCE_GET_CLASS(( object ), FMA_TYPE_OBJECT_ITEM, FMAObjectItemClass ))
54 typedef struct _FMAObjectItemPrivate FMAObjectItemPrivate;
56 typedef struct {
57 /*< private >*/
58 FMAObjectId parent;
59 FMAObjectItemPrivate *private;
61 FMAObjectItem;
63 typedef struct _FMAObjectItemClassPrivate FMAObjectItemClassPrivate;
65 typedef struct {
66 /*< private >*/
67 FMAObjectIdClass parent;
68 FMAObjectItemClassPrivate *private;
70 FMAObjectItemClass;
72 /**
73 * FMAItemTarget:
74 * @ITEM_TARGET_SELECTION: when targeting the selection context menu.
75 * @ITEM_TARGET_LOCATION: when targeting the background context menu.
76 * @ITEM_TARGET_TOOLBAR: when targeting the toolbar.
77 * @ITEM_TARGET_ANY: a wilcard target defined in order to be able
78 * to activate an action from a keyboard shortcut,
79 * while keeping this same action hidden from the UI.
81 * The #FMAItemTarget mode is driven by the file manager. It determines
82 * in which part of the file manager UI our actions will be displayed.
84 typedef enum {
85 ITEM_TARGET_SELECTION = 1,
86 ITEM_TARGET_LOCATION,
87 ITEM_TARGET_TOOLBAR,
88 ITEM_TARGET_ANY
90 FMAItemTarget;
92 GType fma_object_item_get_type ( void );
94 FMAObjectId *fma_object_item_get_item ( const FMAObjectItem *item, const gchar *id );
95 gint fma_object_item_get_position ( const FMAObjectItem *item, const FMAObjectId *child );
96 void fma_object_item_append_item ( FMAObjectItem *item, const FMAObjectId *child );
97 void fma_object_item_insert_at ( FMAObjectItem *item, const FMAObjectId *child, gint pos );
98 void fma_object_item_insert_item ( FMAObjectItem *item, const FMAObjectId *child, const FMAObjectId *before );
99 void fma_object_item_remove_item ( FMAObjectItem *item, const FMAObjectId *child );
101 guint fma_object_item_get_items_count ( const FMAObjectItem *item );
103 void fma_object_item_count_items ( GList *items, gint *menus, gint *actions, gint *profiles, gboolean recurse );
104 GList *fma_object_item_copyref_items ( GList *items );
105 GList *fma_object_item_free_items ( GList *items );
107 void fma_object_item_deals_with_version ( FMAObjectItem *item );
108 void fma_object_item_rebuild_children_slist( FMAObjectItem *item );
110 gboolean fma_object_item_is_finally_writable ( const FMAObjectItem *item, guint *reason );
111 void fma_object_item_set_writability_status( FMAObjectItem *item, gboolean writable, guint reason );
113 G_END_DECLS
115 #endif /* __FILEMANAGER_ACTIONS_API_OBJECT_ITEM_H__ */