File tree Expand file tree Collapse file tree 2 files changed +35
-6
lines changed Expand file tree Collapse file tree 2 files changed +35
-6
lines changed Original file line number Diff line number Diff line change @@ -129,6 +129,19 @@ def values_for_enum(gtype):
129
129
130
130
return values
131
131
132
+ def values_for_flag (gtype ):
133
+ """Get all values for a flag (gtype)."""
134
+
135
+ g_type_class = gobject_lib .g_type_class_ref (gtype )
136
+ g_flags_class = ffi .cast ('GFlagsClass *' , g_type_class )
137
+
138
+ values = []
139
+
140
+ for i in range (0 , g_flags_class .n_values ):
141
+ value = _to_string (g_flags_class .values [i ].value_nick )
142
+ values .append (value )
143
+
144
+ return values
132
145
133
146
__all__ = [
134
147
'leak_set' ,
@@ -142,5 +155,6 @@ def values_for_enum(gtype):
142
155
'type_name' ,
143
156
'type_map' ,
144
157
'type_from_name' ,
145
- 'values_for_enum'
158
+ 'values_for_enum' ,
159
+ 'values_for_flag'
146
160
]
Original file line number Diff line number Diff line change @@ -177,14 +177,29 @@ def cdefs(features):
177
177
} GEnumValue;
178
178
179
179
typedef struct _GEnumClass {
180
- GTypeClass *g_type_class;
180
+ GTypeClass *g_type_class;
181
181
182
- int minimum;
183
- int maximum;
184
- unsigned int n_values;
185
- GEnumValue *values;
182
+ int minimum;
183
+ int maximum;
184
+ unsigned int n_values;
185
+ GEnumValue *values;
186
186
} GEnumClass;
187
187
188
+ typedef struct _GFlagsValue {
189
+ unsigned int value;
190
+
191
+ const char *value_name;
192
+ const char *value_nick;
193
+ } GFlagsValue;
194
+
195
+ typedef struct _GFlagsClass {
196
+ GTypeClass *g_type_class;
197
+
198
+ unsigned int mask;
199
+ unsigned int n_values;
200
+ GFlagsValue *values;
201
+ } GFlagsClass;
202
+
188
203
void* g_type_class_ref (GType type);
189
204
190
205
void* g_object_new (GType type, void*);
You can’t perform that action at this time.
0 commit comments