gtkshortcutaction.h 5.71 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/*
 * Copyright © 2018 Benjamin Otte
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library 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
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library. If not, see <http://www.gnu.org/licenses/>.
 *
 * Authors: Benjamin Otte <otte@gnome.org>
 */

#ifndef __GTK_SHORTCUT_ACTION_H__
#define __GTK_SHORTCUT_ACTION_H__

#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif

#include <gtk/gtktypes.h>

G_BEGIN_DECLS

#define GTK_TYPE_SHORTCUT_ACTION (gtk_shortcut_action_get_type ())

/**
 * GtkShortcutFunc:
 * @widget: The widget passed to the activation
36
37
 * @args: (nullable): The arguments passed to the activation
 * @user_data: (nullable): The user data provided when activating the action
38
39
 *
 * Prototype for shortcuts based on user callbacks.
40
41
 *
 * Returns: %TRUE if the action was successful.
42
43
44
45
46
47
48
49
 */
typedef gboolean (* GtkShortcutFunc) (GtkWidget *widget,
                                      GVariant  *args,
                                      gpointer   user_data);

/**
 * GtkShortcutActionFlags:
 * @GTK_SHORTCUT_ACTION_EXCLUSIVE: The action is the only
Matthias Clasen's avatar
Matthias Clasen committed
50
51
 *   action that can be activated. If this flag is not set,
 *   a future activation may select a different action.
52
53
 *
 * List of flags that can be passed to action activation.
Matthias Clasen's avatar
Matthias Clasen committed
54
 *
55
56
57
58
59
60
61
 * More flags may be added in the future.
 **/
typedef enum {
  GTK_SHORTCUT_ACTION_EXCLUSIVE = 1 << 0
} GtkShortcutActionFlags;

GDK_AVAILABLE_IN_ALL
62
GDK_DECLARE_INTERNAL_TYPE (GtkShortcutAction, gtk_shortcut_action, GTK, SHORTCUT_ACTION, GObject)
63

64
65
GDK_AVAILABLE_IN_ALL
char *                  gtk_shortcut_action_to_string           (GtkShortcutAction      *self);
66
67
68
GDK_AVAILABLE_IN_ALL
GtkShortcutAction *     gtk_shortcut_action_parse_string        (const char *            string);

69
70
71
GDK_AVAILABLE_IN_ALL
void                    gtk_shortcut_action_print               (GtkShortcutAction      *self,
                                                                 GString                *string);
72
73
74
75
76
77
GDK_AVAILABLE_IN_ALL
gboolean                gtk_shortcut_action_activate            (GtkShortcutAction      *self,
                                                                 GtkShortcutActionFlags  flags,
                                                                 GtkWidget              *widget,
                                                                 GVariant               *args);

78
79
80
81
82
#define GTK_TYPE_NOTHING_ACTION (gtk_nothing_action_get_type())

/**
 * GtkNothingAction:
 *
Matthias Clasen's avatar
Matthias Clasen committed
83
 * A `GtkShortcutAction` that does nothing.
84
85
86
87
88
89
90
91
92
93
94
95
 */
GDK_AVAILABLE_IN_ALL
GDK_DECLARE_INTERNAL_TYPE (GtkNothingAction, gtk_nothing_action, GTK, NOTHING_ACTION, GtkShortcutAction)

GDK_AVAILABLE_IN_ALL
GtkShortcutAction *     gtk_nothing_action_get                  (void);

#define GTK_TYPE_CALLBACK_ACTION (gtk_callback_action_get_type())

/**
 * GtkCallbackAction:
 *
Matthias Clasen's avatar
Matthias Clasen committed
96
 * A `GtkShortcutAction` that invokes a callback.
97
 */
98
GDK_AVAILABLE_IN_ALL
99
GDK_DECLARE_INTERNAL_TYPE (GtkCallbackAction, gtk_callback_action, GTK, CALLBACK_ACTION, GtkShortcutAction)
100
101
102
103
104
105

GDK_AVAILABLE_IN_ALL
GtkShortcutAction *     gtk_callback_action_new                 (GtkShortcutFunc         callback,
                                                                 gpointer                data,
                                                                 GDestroyNotify          destroy);

106
107
108
109
110
#define GTK_TYPE_MNEMONIC_ACTION (gtk_mnemonic_action_get_type())

/**
 * GtkMnemonicAction:
 *
Matthias Clasen's avatar
Matthias Clasen committed
111
 * A `GtkShortcutAction` that calls gtk_widget_mnemonic_activate().
112
113
114
115
116
117
118
119
120
121
122
123
 */
GDK_AVAILABLE_IN_ALL
GDK_DECLARE_INTERNAL_TYPE (GtkMnemonicAction, gtk_mnemonic_action, GTK, MNEMONIC_ACTION, GtkShortcutAction)

GDK_AVAILABLE_IN_ALL
GtkShortcutAction *     gtk_mnemonic_action_get                 (void);

#define GTK_TYPE_ACTIVATE_ACTION (gtk_activate_action_get_type())

/**
 * GtkActivateAction:
 *
Matthias Clasen's avatar
Matthias Clasen committed
124
 * A `GtkShortcutAction` that calls gtk_widget_activate().
125
126
127
128
 */
GDK_AVAILABLE_IN_ALL
GDK_DECLARE_INTERNAL_TYPE (GtkActivateAction, gtk_activate_action, GTK, ACTIVATE_ACTION, GtkShortcutAction)

129
GDK_AVAILABLE_IN_ALL
130
131
132
133
134
135
136
GtkShortcutAction *     gtk_activate_action_get                 (void);

#define GTK_TYPE_SIGNAL_ACTION (gtk_signal_action_get_type())

/**
 * GtkSignalAction:
 *
Matthias Clasen's avatar
Matthias Clasen committed
137
 * A `GtkShortcut`Action that emits a signal.
138
139
140
 *
 * Signals that are used in this way are referred to as keybinding signals,
 * and they are expected to be defined with the %G_SIGNAL_ACTION flag.
141
 */
142
GDK_AVAILABLE_IN_ALL
143
GDK_DECLARE_INTERNAL_TYPE (GtkSignalAction, gtk_signal_action, GTK, SIGNAL_ACTION, GtkShortcutAction)
144
145

GDK_AVAILABLE_IN_ALL
146
147
148
149
150
151
152
153
154
GtkShortcutAction *     gtk_signal_action_new                   (const char      *signal_name);
GDK_AVAILABLE_IN_ALL
const char *            gtk_signal_action_get_signal_name       (GtkSignalAction *self);

#define GTK_TYPE_NAMED_ACTION (gtk_named_action_get_type())

/**
 * GtkNamedAction:
 *
Matthias Clasen's avatar
Matthias Clasen committed
155
 * A `GtkShortcutAction` that activates an action by name.
156
 */
157
GDK_AVAILABLE_IN_ALL
158
GDK_DECLARE_INTERNAL_TYPE (GtkNamedAction, gtk_named_action, GTK, NAMED_ACTION, GtkShortcutAction)
159
160

GDK_AVAILABLE_IN_ALL
161
GtkShortcutAction *     gtk_named_action_new                    (const char     *name);
162
GDK_AVAILABLE_IN_ALL
163
const char *            gtk_named_action_get_action_name        (GtkNamedAction *self);
164
165
166
167

G_END_DECLS

#endif /* __GTK_SHORTCUT_ACTION_H__ */