glib2 4.2.4 → 4.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +3 -3
- data/Rakefile +2 -2
- data/ext/glib2/extconf.rb +2 -2
- data/ext/glib2/glib2.def +2 -5
- data/ext/glib2/rbglib-variant.c +1 -1
- data/ext/glib2/rbglib.c +10 -7
- data/ext/glib2/rbglib.h +12 -45
- data/ext/glib2/rbglib_fileutils.c +5 -4
- data/ext/glib2/rbglib_int64.c +9 -125
- data/ext/glib2/rbglib_maincontext.c +12 -21
- data/ext/glib2/rbglib_unichar.c +31 -31
- data/ext/glib2/rbglib_unicode.c +2 -2
- data/ext/glib2/rbglib_utils.c +2 -2
- data/ext/glib2/rbglib_win32.c +4 -4
- data/ext/glib2/rbgobj_boxed.c +7 -7
- data/ext/glib2/rbgobj_enums.c +3 -4
- data/ext/glib2/rbgobj_flags.c +11 -11
- data/ext/glib2/rbgobj_object.c +99 -113
- data/ext/glib2/rbgobj_param.c +24 -24
- data/ext/glib2/rbgobj_paramspecs.c +18 -18
- data/ext/glib2/rbgobj_signal.c +26 -26
- data/ext/glib2/rbgobj_type.c +11 -19
- data/ext/glib2/rbgobj_typeinstance.c +88 -4
- data/ext/glib2/rbgobj_typeinterface.c +6 -6
- data/ext/glib2/rbgobj_value.c +14 -5
- data/ext/glib2/rbgobj_valuetypes.c +5 -5
- data/ext/glib2/rbgobject.c +20 -7
- data/ext/glib2/rbgobject.h +1 -2
- data/ext/glib2/rbgprivate.h +5 -2
- data/ext/glib2/rbgutil.c +20 -37
- data/ext/glib2/rbgutil.h +25 -7
- data/lib/glib2/deprecated.rb +11 -1
- data/lib/glib2/value.rb +46 -0
- data/lib/glib2.rb +2 -1
- data/test/test-glib2.rb +7 -6
- data/test/test-value.rb +38 -3
- data/test/test-variant.rb +1 -1
- metadata +4 -3
data/ext/glib2/rbgobj_enums.c
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
2
|
/*
|
3
|
-
* Copyright (C)
|
4
|
-
* Copyright (C) 2004-2006 Ruby-GNOME Project Team
|
3
|
+
* Copyright (C) 2004-2025 Ruby-GNOME Project Team
|
5
4
|
* Copyright (C) 2002,2003 Masahiro Sakai
|
6
5
|
*
|
7
6
|
* This library is free software; you can redistribute it and/or
|
@@ -417,8 +416,8 @@ Init_gobject_genums(void)
|
|
417
416
|
|
418
417
|
RG_TARGET_NAMESPACE = G_DEF_CLASS(G_TYPE_ENUM, "Enum", rbg_mGLib());
|
419
418
|
|
420
|
-
|
421
|
-
|
419
|
+
rb_define_singleton_method(RG_TARGET_NAMESPACE, "gtype", generic_s_gtype, 0);
|
420
|
+
rb_define_method(RG_TARGET_NAMESPACE, "gtype", generic_gtype, 0);
|
422
421
|
|
423
422
|
RG_DEF_SMETHOD(range, 0);
|
424
423
|
RG_DEF_SMETHOD(values, 0);
|
data/ext/glib2/rbgobj_flags.c
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
2
|
/*
|
3
|
-
* Copyright (C) 2004-
|
3
|
+
* Copyright (C) 2004-2025 Ruby-GNOME Project Team
|
4
4
|
* Copyright (C) 2002,2003 Masahiro Sakai
|
5
5
|
*
|
6
6
|
* This library is free software; you can redistribute it and/or
|
@@ -546,13 +546,13 @@ Init_gobject_gflags(void)
|
|
546
546
|
|
547
547
|
RG_TARGET_NAMESPACE = G_DEF_CLASS(G_TYPE_FLAGS, "Flags", rbg_mGLib());
|
548
548
|
|
549
|
-
|
550
|
-
|
551
|
-
|
552
|
-
|
553
|
-
|
549
|
+
rb_define_singleton_method(RG_TARGET_NAMESPACE, "gtype", generic_s_gtype, 0);
|
550
|
+
rb_define_singleton_method(RG_TARGET_NAMESPACE,
|
551
|
+
"to_s",
|
552
|
+
rbgutil_generic_s_to_s_gtype_name_fallback,
|
553
|
+
0);
|
554
554
|
RG_DEF_SALIAS("inspect", "to_s");
|
555
|
-
|
555
|
+
rb_define_method(RG_TARGET_NAMESPACE, "gtype", generic_gtype, 0);
|
556
556
|
|
557
557
|
RG_DEF_SMETHOD(mask, 0);
|
558
558
|
RG_DEF_SMETHOD(values, 0);
|
@@ -567,7 +567,7 @@ Init_gobject_gflags(void)
|
|
567
567
|
RG_DEF_METHOD(nick, 0);
|
568
568
|
|
569
569
|
/*
|
570
|
-
|
570
|
+
rb_define_method(RG_TARGET_NAMESPACE, "inspect", flags_inspect, 0);
|
571
571
|
*/
|
572
572
|
|
573
573
|
RG_DEF_METHOD_OPERATOR("<=>", flags_compare, 1);
|
@@ -577,9 +577,9 @@ Init_gobject_gflags(void)
|
|
577
577
|
RG_DEF_METHOD_OPERATOR(">", flags_gt, 1);
|
578
578
|
RG_DEF_METHOD_OPERATOR("<", flags_lt, 1);
|
579
579
|
RG_DEF_METHOD_OPERATOR("~", flags_not, 0);
|
580
|
-
|
581
|
-
|
582
|
-
|
580
|
+
rb_define_method(RG_TARGET_NAMESPACE, "&", flags_and, 1);
|
581
|
+
rb_define_method(RG_TARGET_NAMESPACE, "|", flags_or, 1);
|
582
|
+
rb_define_method(RG_TARGET_NAMESPACE, "^", flags_xor, 1);
|
583
583
|
RG_DEF_METHOD_OPERATOR("-", flags_minus, 1);
|
584
584
|
|
585
585
|
RG_DEF_METHOD_P(empty, 0);
|
data/ext/glib2/rbgobj_object.c
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
2
|
/*
|
3
|
-
* Copyright (C) 2002-
|
3
|
+
* Copyright (C) 2002-2025 Ruby-GNOME Project Team
|
4
4
|
* Copyright (C) 2002-2003 Masahiro Sakai
|
5
5
|
* Copyright (C) 1998-2000 Yukihiro Matsumoto,
|
6
6
|
* Daisuke Kanda,
|
@@ -112,7 +112,7 @@ static const rb_data_type_t rg_glib_object_type = {
|
|
112
112
|
holder_mark,
|
113
113
|
holder_free,
|
114
114
|
},
|
115
|
-
|
115
|
+
&rbg_glib_instantiatable_type,
|
116
116
|
NULL,
|
117
117
|
RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_FROZEN_SHAREABLE,
|
118
118
|
};
|
@@ -301,144 +301,136 @@ gobj_mark(gpointer ptr)
|
|
301
301
|
g_free(properties);
|
302
302
|
}
|
303
303
|
|
304
|
-
|
305
|
-
|
306
|
-
{
|
307
|
-
const RGObjClassInfo* cinfo = rbgobj_lookup_class(self);
|
308
|
-
VALUE params_hash;
|
309
|
-
GObject* gobj;
|
310
|
-
VALUE result;
|
311
|
-
|
312
|
-
rb_scan_args(argc, argv, "01", ¶ms_hash);
|
313
|
-
|
314
|
-
if (!NIL_P(params_hash))
|
315
|
-
Check_Type(params_hash, RUBY_T_HASH);
|
316
|
-
|
317
|
-
if (cinfo->klass != self)
|
318
|
-
rb_raise(rb_eTypeError, "%s isn't registered class",
|
319
|
-
rb_class2name(self));
|
320
|
-
|
321
|
-
gobj = rbgobj_gobject_new(cinfo->gtype, params_hash);
|
322
|
-
result = GOBJ2RVAL(gobj);
|
323
|
-
g_object_unref(gobj);
|
324
|
-
|
325
|
-
return result;
|
326
|
-
}
|
327
|
-
|
328
|
-
static VALUE
|
329
|
-
rg_s_init(VALUE self)
|
330
|
-
{
|
331
|
-
return RUBY_Qnil;
|
332
|
-
}
|
333
|
-
|
334
|
-
struct param_setup_arg {
|
304
|
+
typedef struct {
|
305
|
+
VALUE rb_properties;
|
335
306
|
GObjectClass* gclass;
|
336
|
-
|
337
|
-
|
338
|
-
|
307
|
+
guint n_properties;
|
308
|
+
const char **names;
|
309
|
+
GValue* values;
|
339
310
|
guint index;
|
340
|
-
};
|
311
|
+
} rbgobj_new_data;
|
341
312
|
|
342
|
-
static
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
G_GNUC_UNUSED const VALUE *argv,
|
347
|
-
G_GNUC_UNUSED VALUE block)
|
313
|
+
static int
|
314
|
+
rbgobj_new_set_property(VALUE key,
|
315
|
+
VALUE value,
|
316
|
+
VALUE rb_data)
|
348
317
|
{
|
349
|
-
|
350
|
-
(struct param_setup_arg *)rb_param_setup_arg;
|
351
|
-
guint index;
|
352
|
-
VALUE name, val;
|
353
|
-
GParamSpec* pspec;
|
354
|
-
|
355
|
-
index = param_setup_arg->index;
|
356
|
-
if (index >= param_setup_arg->param_size)
|
357
|
-
rb_raise(rb_eArgError, "too many parameters");
|
318
|
+
rbgobj_new_data *data = (rbgobj_new_data *)rb_data;
|
358
319
|
|
359
|
-
|
360
|
-
|
320
|
+
guint index = data->index;
|
321
|
+
if (index >= data->n_properties)
|
322
|
+
rb_raise(rb_eArgError, "too many properties");
|
361
323
|
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
324
|
+
const char *name;
|
325
|
+
if (SYMBOL_P(key)) {
|
326
|
+
name = rb_id2name(SYM2ID(key));
|
327
|
+
} else {
|
328
|
+
name = StringValueCStr(key);
|
329
|
+
}
|
366
330
|
|
367
|
-
pspec = g_object_class_find_property(
|
368
|
-
param_setup_arg->gclass,
|
369
|
-
param_setup_arg->params[index].name);
|
331
|
+
GParamSpec *pspec = g_object_class_find_property(data->gclass, name);
|
370
332
|
if (!pspec)
|
371
|
-
rb_raise(rb_eArgError, "No such property: %s",
|
372
|
-
param_setup_arg->params[index].name);
|
333
|
+
rb_raise(rb_eArgError, "No such property: %s", name);
|
373
334
|
|
374
|
-
|
375
|
-
|
376
|
-
rbgobj_rvalue_to_gvalue(
|
335
|
+
data->names[index] = pspec->name;
|
336
|
+
g_value_init(&(data->values[index]), G_PARAM_SPEC_VALUE_TYPE(pspec));
|
337
|
+
rbgobj_rvalue_to_gvalue(value, &(data->values[index]));
|
377
338
|
|
378
|
-
|
339
|
+
data->index++;
|
379
340
|
|
380
|
-
return
|
341
|
+
return ST_CONTINUE;
|
381
342
|
}
|
382
343
|
|
383
344
|
static VALUE
|
384
|
-
|
345
|
+
rbgobj_new_body(VALUE rb_data)
|
385
346
|
{
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
347
|
+
rbgobj_new_data *data = (rbgobj_new_data *)rb_data;
|
348
|
+
rb_hash_foreach(data->rb_properties, rbgobj_new_set_property, rb_data);
|
349
|
+
return (VALUE)g_object_new_with_properties(G_TYPE_FROM_CLASS(data->gclass),
|
350
|
+
data->n_properties,
|
351
|
+
data->names,
|
352
|
+
data->values);
|
392
353
|
}
|
393
354
|
|
394
355
|
static VALUE
|
395
|
-
|
356
|
+
rbgobj_new_ensure(VALUE rb_data)
|
396
357
|
{
|
397
|
-
|
358
|
+
rbgobj_new_data *data = (rbgobj_new_data *)rb_data;
|
398
359
|
guint i;
|
399
|
-
|
400
|
-
|
401
|
-
if (G_IS_VALUE(&arg->params[i].value))
|
402
|
-
g_value_unset(&arg->params[i].value);
|
360
|
+
for (i = 0; i < data->n_properties; i++) {
|
361
|
+
g_value_unset(&(data->values[i]));
|
403
362
|
}
|
363
|
+
g_type_class_unref(data->gclass);
|
404
364
|
return Qnil;
|
405
365
|
}
|
406
366
|
|
407
|
-
GObject*
|
408
|
-
rbgobj_gobject_new(
|
367
|
+
static GObject *
|
368
|
+
rbgobj_gobject_new(int argc, VALUE *argv, GType gtype)
|
409
369
|
{
|
410
|
-
GObject* result;
|
411
|
-
|
412
370
|
if (!g_type_is_a(gtype, G_TYPE_OBJECT))
|
413
371
|
rb_raise(rb_eArgError,
|
414
372
|
"type \"%s\" is not descendant of GObject",
|
415
373
|
g_type_name(gtype));
|
416
374
|
|
417
|
-
|
418
|
-
|
375
|
+
VALUE rb_properties = Qnil;
|
376
|
+
/* TODO: Can we use rb_get_kwargs()? */
|
377
|
+
rb_scan_args_kw(RB_SCAN_ARGS_LAST_HASH_KEYWORDS,
|
378
|
+
argc, argv, "0:", &rb_properties);
|
379
|
+
|
380
|
+
GObject *gobject;
|
381
|
+
if (NIL_P(rb_properties)) {
|
382
|
+
gobject = g_object_new_with_properties(gtype, 0, NULL, NULL);
|
419
383
|
} else {
|
420
|
-
|
421
|
-
|
384
|
+
rbgobj_new_data data;
|
385
|
+
data.rb_properties = rb_properties;
|
386
|
+
data.gclass = G_OBJECT_CLASS(g_type_class_ref(gtype));
|
387
|
+
data.n_properties = RHASH_SIZE(rb_properties);
|
388
|
+
data.names = NULL;
|
389
|
+
data.values = NULL;
|
390
|
+
data.names = ALLOCA_N(const char *, data.n_properties);
|
391
|
+
data.values = ALLOCA_N(GValue, data.n_properties);
|
392
|
+
guint i;
|
393
|
+
GValue empty_value = G_VALUE_INIT;
|
394
|
+
for (i = 0; i < data.n_properties; i++) {
|
395
|
+
data.names[i] = NULL;
|
396
|
+
data.values[i] = empty_value;
|
397
|
+
}
|
398
|
+
data.index = 0;
|
422
399
|
|
423
|
-
|
400
|
+
gobject = (GObject *)rb_ensure(&rbgobj_new_body, (VALUE)(&data),
|
401
|
+
&rbgobj_new_ensure, (VALUE)(&data));
|
402
|
+
}
|
424
403
|
|
425
|
-
|
426
|
-
|
427
|
-
arg.params = ALLOCA_N(GParameter, param_size);
|
428
|
-
memset(arg.params, 0, sizeof(GParameter) * param_size);
|
429
|
-
arg.params_hash = params_hash;
|
430
|
-
arg.index = 0;
|
404
|
+
if (!gobject)
|
405
|
+
rb_raise(rb_eRuntimeError, "g_object_new_with_properties() failed");
|
431
406
|
|
432
|
-
|
433
|
-
|
434
|
-
|
407
|
+
return gobject;
|
408
|
+
}
|
409
|
+
|
410
|
+
static VALUE
|
411
|
+
rg_s_new_bang(int argc, VALUE *argv, VALUE self)
|
412
|
+
{
|
413
|
+
const RGObjClassInfo* cinfo = rbgobj_lookup_class(self);
|
414
|
+
GObject* gobj;
|
415
|
+
VALUE result;
|
416
|
+
|
417
|
+
if (cinfo->klass != self)
|
418
|
+
rb_raise(rb_eTypeError, "%s isn't registered class",
|
419
|
+
rb_class2name(self));
|
435
420
|
|
436
|
-
|
437
|
-
|
421
|
+
gobj = rbgobj_gobject_new(argc, argv, cinfo->gtype);
|
422
|
+
result = GOBJ2RVAL(gobj);
|
423
|
+
g_object_unref(gobj);
|
438
424
|
|
439
425
|
return result;
|
440
426
|
}
|
441
427
|
|
428
|
+
static VALUE
|
429
|
+
rg_s_init(VALUE self)
|
430
|
+
{
|
431
|
+
return RUBY_Qnil;
|
432
|
+
}
|
433
|
+
|
442
434
|
static VALUE
|
443
435
|
rg_s_install_property(int argc, VALUE* argv, VALUE self)
|
444
436
|
{
|
@@ -867,7 +859,6 @@ static VALUE
|
|
867
859
|
rg_initialize(int argc, VALUE *argv, VALUE self)
|
868
860
|
{
|
869
861
|
GType gtype;
|
870
|
-
VALUE params_hash;
|
871
862
|
GObject* gobj;
|
872
863
|
|
873
864
|
gtype = CLASS2GTYPE(CLASS_OF(self));
|
@@ -877,12 +868,7 @@ rg_initialize(int argc, VALUE *argv, VALUE self)
|
|
877
868
|
RBG_INSPECT(CLASS_OF(self)));
|
878
869
|
}
|
879
870
|
|
880
|
-
|
881
|
-
|
882
|
-
if (!NIL_P(params_hash))
|
883
|
-
Check_Type(params_hash, RUBY_T_HASH);
|
884
|
-
|
885
|
-
gobj = rbgobj_gobject_new(RVAL2GTYPE(self), params_hash);
|
871
|
+
gobj = rbgobj_gobject_new(argc, argv, gtype);
|
886
872
|
|
887
873
|
G_INITIALIZE(self, gobj);
|
888
874
|
|
@@ -1052,8 +1038,8 @@ rbgobj_register_type(VALUE klass, VALUE type_name, GClassInitFunc class_init)
|
|
1052
1038
|
initialize_module = rb_define_module_under(klass,
|
1053
1039
|
RubyGObjectHookModule);
|
1054
1040
|
if (!(cinfo->flags & RBGOBJ_DEFINED_BY_RUBY)) {
|
1055
|
-
|
1056
|
-
|
1041
|
+
rb_define_method(initialize_module,
|
1042
|
+
"initialize", rg_initialize, -1);
|
1057
1043
|
}
|
1058
1044
|
|
1059
1045
|
rb_include_module(klass, initialize_module);
|
@@ -1092,8 +1078,8 @@ Init_gobject_gobject(void)
|
|
1092
1078
|
|
1093
1079
|
RG_DEF_SMETHOD(init, 0);
|
1094
1080
|
|
1095
|
-
|
1096
|
-
|
1081
|
+
rb_define_singleton_method(RG_TARGET_NAMESPACE, "property", gobj_s_property, 1);
|
1082
|
+
rb_define_singleton_method(RG_TARGET_NAMESPACE, "properties", gobj_s_properties, -1);
|
1097
1083
|
RG_DEF_SMETHOD(install_property, -1);
|
1098
1084
|
q_ruby_getter = g_quark_from_static_string("__ruby_getter");
|
1099
1085
|
q_ruby_setter = g_quark_from_static_string("__ruby_setter");
|
@@ -1108,7 +1094,7 @@ Init_gobject_gobject(void)
|
|
1108
1094
|
|
1109
1095
|
RG_DEF_METHOD(initialize, -1);
|
1110
1096
|
RG_DEF_PRIVATE_METHOD(initialize_post, 0);
|
1111
|
-
|
1097
|
+
rb_define_method(RG_TARGET_NAMESPACE, "ref_count", gobj_ref_count, 0); /* for debugging */
|
1112
1098
|
RG_DEF_METHOD_P(floating, 0); /* for debugging */
|
1113
1099
|
RG_DEF_METHOD(unref, 0);
|
1114
1100
|
RG_DEF_METHOD(inspect, 0);
|
data/ext/glib2/rbgobj_param.c
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
2
|
/*
|
3
|
-
* Copyright (C) 2011-
|
3
|
+
* Copyright (C) 2011-2025 Ruby-GNOME Project Team
|
4
4
|
* Copyright (C) 2002,2003 Masahiro Sakai
|
5
5
|
*
|
6
6
|
* This library is free software; you can redistribute it and/or
|
@@ -59,7 +59,7 @@ static const rb_data_type_t rg_glib_param_type = {
|
|
59
59
|
pspec_mark,
|
60
60
|
pspec_free,
|
61
61
|
},
|
62
|
-
|
62
|
+
&rbg_glib_instantiatable_type,
|
63
63
|
NULL,
|
64
64
|
RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_FROZEN_SHAREABLE,
|
65
65
|
};
|
@@ -410,26 +410,26 @@ Init_gobject_gparam(void)
|
|
410
410
|
/* for debugging */
|
411
411
|
RG_DEF_METHOD(ref_count, 0);
|
412
412
|
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
413
|
+
rb_define_method(RG_TARGET_NAMESPACE, "readable?",
|
414
|
+
param_is_G_PARAM_READABLE, 0);
|
415
|
+
rb_define_method(RG_TARGET_NAMESPACE, "writable?",
|
416
|
+
param_is_G_PARAM_WRITABLE, 0);
|
417
|
+
rb_define_method(RG_TARGET_NAMESPACE, "readwrite?",
|
418
|
+
param_is_G_PARAM_READWRITE, 0);
|
419
|
+
rb_define_method(RG_TARGET_NAMESPACE, "construct?",
|
420
|
+
param_is_G_PARAM_CONSTRUCT, 0);
|
421
|
+
rb_define_method(RG_TARGET_NAMESPACE, "construct_only?",
|
422
|
+
param_is_G_PARAM_CONSTRUCT_ONLY, 0);
|
423
|
+
rb_define_method(RG_TARGET_NAMESPACE, "lax_validation?",
|
424
|
+
param_is_G_PARAM_LAX_VALIDATION, 0);
|
425
|
+
rb_define_method(RG_TARGET_NAMESPACE, "static_name?",
|
426
|
+
param_is_G_PARAM_STATIC_NAME, 0);
|
427
|
+
rb_define_method(RG_TARGET_NAMESPACE, "static_nick?",
|
428
|
+
param_is_G_PARAM_STATIC_NICK, 0);
|
429
|
+
rb_define_method(RG_TARGET_NAMESPACE, "static_blurb?",
|
430
|
+
param_is_G_PARAM_STATIC_BLURB, 0);
|
431
|
+
rb_define_method(RG_TARGET_NAMESPACE, "explicit_notify?",
|
432
|
+
param_is_G_PARAM_EXPLICIT_NOTIFY, 0);
|
433
|
+
rb_define_method(RG_TARGET_NAMESPACE, "deprecated?",
|
434
|
+
param_is_G_PARAM_DEPRECATED, 0);
|
435
435
|
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
2
|
/*
|
3
|
-
* Copyright (C) 2004-
|
3
|
+
* Copyright (C) 2004-2025 Ruby-GNOME Project Team
|
4
4
|
* Copyright (C) 2002,2003 Masahiro Sakai
|
5
5
|
*
|
6
6
|
* This library is free software; you can redistribute it and/or
|
@@ -281,14 +281,14 @@ Init_gobject_gparamspecs(void)
|
|
281
281
|
|
282
282
|
#define DEF_NUMERIC_PSPEC_METHODS(c, typename) \
|
283
283
|
G_STMT_START {\
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
284
|
+
rb_define_method(c, "initialize", typename##_initialize, 7); \
|
285
|
+
rb_define_method(c, "minimum", typename##_minimum, 0); \
|
286
|
+
rb_define_method(c, "maximum", typename##_maximum, 0); \
|
287
|
+
rb_define_method(c, "range", typename##_range, 0); \
|
288
288
|
} G_STMT_END
|
289
289
|
|
290
290
|
#if 0
|
291
|
-
|
291
|
+
rb_define_method(c, "default_value", typename##_default_value, 0); \
|
292
292
|
rb_define_alias(c, "default", "default_value"); \
|
293
293
|
|
294
294
|
#endif
|
@@ -319,39 +319,39 @@ Init_gobject_gparamspecs(void)
|
|
319
319
|
|
320
320
|
c = G_DEF_CLASS(G_TYPE_PARAM_FLOAT, "Float", cParamSpec);
|
321
321
|
DEF_NUMERIC_PSPEC_METHODS(c, float);
|
322
|
-
|
322
|
+
rb_define_method(c, "epsilon", float_epsilon, 0);
|
323
323
|
|
324
324
|
c = G_DEF_CLASS(G_TYPE_PARAM_DOUBLE, "Double", cParamSpec);
|
325
325
|
DEF_NUMERIC_PSPEC_METHODS(c, double);
|
326
|
-
|
326
|
+
rb_define_method(c, "epsilon", double_epsilon, 0);
|
327
327
|
|
328
328
|
c = G_DEF_CLASS(G_TYPE_PARAM_BOOLEAN, "Boolean", cParamSpec);
|
329
|
-
|
329
|
+
rb_define_method(c, "initialize", boolean_initialize, 5);
|
330
330
|
|
331
331
|
c = G_DEF_CLASS(G_TYPE_PARAM_UNICHAR, "UniChar", cParamSpec);
|
332
|
-
|
332
|
+
rb_define_method(c, "initialize", unichar_initialize, 5);
|
333
333
|
|
334
334
|
c = G_DEF_CLASS(G_TYPE_PARAM_ENUM, "Enum", cParamSpec);
|
335
|
-
|
335
|
+
rb_define_method(c, "initialize", enum_initialize, 6);
|
336
336
|
|
337
337
|
c = G_DEF_CLASS(G_TYPE_PARAM_FLAGS, "Flags", cParamSpec);
|
338
|
-
|
338
|
+
rb_define_method(c, "initialize", flags_initialize, 6);
|
339
339
|
|
340
340
|
c = G_DEF_CLASS(G_TYPE_PARAM_STRING, "String", cParamSpec);
|
341
|
-
|
341
|
+
rb_define_method(c, "initialize", string_initialize, 5);
|
342
342
|
|
343
343
|
c = G_DEF_CLASS(G_TYPE_PARAM_PARAM, "Param", cParamSpec);
|
344
|
-
|
344
|
+
rb_define_method(c, "initialize", param_initialize, 5);
|
345
345
|
|
346
346
|
c = G_DEF_CLASS(G_TYPE_PARAM_BOXED, "Boxed", cParamSpec);
|
347
|
-
|
347
|
+
rb_define_method(c, "initialize", boxed_initialize, 5);
|
348
348
|
|
349
349
|
c = G_DEF_CLASS(G_TYPE_PARAM_POINTER, "Pointer", cParamSpec);
|
350
|
-
|
350
|
+
rb_define_method(c, "initialize", pointer_initialize, 4);
|
351
351
|
|
352
352
|
c = G_DEF_CLASS(G_TYPE_PARAM_VALUE_ARRAY, "ValueArray", cParamSpec);
|
353
|
-
|
353
|
+
rb_define_method(c, "initialize", value_array_initialize, 5);
|
354
354
|
|
355
355
|
c = G_DEF_CLASS(G_TYPE_PARAM_OBJECT, "Object", cParamSpec);
|
356
|
-
|
356
|
+
rb_define_method(c, "initialize", object_initialize, 5);
|
357
357
|
}
|
data/ext/glib2/rbgobj_signal.c
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
2
|
/*
|
3
|
-
* Copyright (C) 2002-
|
3
|
+
* Copyright (C) 2002-2025 Ruby-GNOME Project Team
|
4
4
|
* Copyright (C) 2002,2003 Masahiro Sakai
|
5
5
|
*
|
6
6
|
* This library is free software; you can redistribute it and/or
|
@@ -769,7 +769,7 @@ gobj_s_signal_handler_attach(VALUE klass,
|
|
769
769
|
{
|
770
770
|
VALUE mod = rb_define_module_under(klass, RubyGObjectHookModule);
|
771
771
|
rb_include_module(klass, mod);
|
772
|
-
|
772
|
+
rb_define_method(mod, handler_name, gobj_sig_chain_from_overridden, -1);
|
773
773
|
}
|
774
774
|
|
775
775
|
return Qnil;
|
@@ -1026,13 +1026,13 @@ Init_gobject_gsignal(void)
|
|
1026
1026
|
rb_define_const(cSignalFlags, "MASK", INT2NUM(G_SIGNAL_FLAGS_MASK));
|
1027
1027
|
rb_define_const(RG_TARGET_NAMESPACE, "FLAGS_MASK", INT2NUM(G_SIGNAL_FLAGS_MASK));
|
1028
1028
|
|
1029
|
-
|
1030
|
-
|
1031
|
-
|
1032
|
-
|
1033
|
-
|
1034
|
-
|
1035
|
-
|
1029
|
+
rb_define_method(RG_TARGET_NAMESPACE, "run_first?", query_is_G_SIGNAL_RUN_FIRST, 0);
|
1030
|
+
rb_define_method(RG_TARGET_NAMESPACE, "run_last?", query_is_G_SIGNAL_RUN_LAST, 0);
|
1031
|
+
rb_define_method(RG_TARGET_NAMESPACE, "run_cleanup?", query_is_G_SIGNAL_RUN_CLEANUP, 0);
|
1032
|
+
rb_define_method(RG_TARGET_NAMESPACE, "no_recurse?", query_is_G_SIGNAL_NO_RECURSE, 0);
|
1033
|
+
rb_define_method(RG_TARGET_NAMESPACE, "detailed?", query_is_G_SIGNAL_DETAILED, 0);
|
1034
|
+
rb_define_method(RG_TARGET_NAMESPACE, "action?", query_is_G_SIGNAL_ACTION, 0);
|
1035
|
+
rb_define_method(RG_TARGET_NAMESPACE, "no_hooks?", query_is_G_SIGNAL_NO_HOOKS, 0);
|
1036
1036
|
|
1037
1037
|
/* GConnectFlags */
|
1038
1038
|
G_DEF_CLASS(G_TYPE_CONNECT_FLAGS, "ConnectFlags", rbg_mGLib());
|
@@ -1056,40 +1056,40 @@ Init_gobject_gsignal(void)
|
|
1056
1056
|
g_mutex_init(&rbg_signal_call_func_table_mutex);
|
1057
1057
|
|
1058
1058
|
rbgobj_mMetaSignal = rb_define_module_under(rbg_mGLib(), "MetaSignal");
|
1059
|
-
|
1059
|
+
rb_define_method(rbgobj_mMetaSignal, "define_signal", gobj_s_define_signal, -1);
|
1060
1060
|
rb_define_alias(rbgobj_mMetaSignal, "signal_new", "define_signal");
|
1061
|
-
|
1062
|
-
|
1061
|
+
rb_define_method(rbgobj_mMetaSignal, "signals", gobj_s_signals, -1);
|
1062
|
+
rb_define_method(rbgobj_mMetaSignal, "signal", gobj_s_signal, 1);
|
1063
1063
|
rb_extend_object(rbgobj_cObject, rbgobj_mMetaSignal);
|
1064
1064
|
rb_extend_object(rbgobj_mInterface, rbgobj_mMetaSignal);
|
1065
1065
|
|
1066
|
-
|
1066
|
+
rb_define_method(cInstantiatable, "signal_has_handler_pending?",
|
1067
1067
|
gobj_sig_has_handler_pending, -1);
|
1068
|
-
|
1069
|
-
|
1068
|
+
rb_define_method(cInstantiatable, "signal_connect", gobj_sig_connect, -1);
|
1069
|
+
rb_define_method(cInstantiatable, "signal_connect_after",
|
1070
1070
|
gobj_sig_connect_after, -1);
|
1071
1071
|
|
1072
1072
|
#if 0
|
1073
|
-
|
1073
|
+
rb_define_method(cInstantiatable, "signal_invocation_hint",
|
1074
1074
|
gobj_sig_get_invocation_hint, 0);
|
1075
1075
|
#endif
|
1076
1076
|
|
1077
|
-
|
1077
|
+
rb_define_method(cInstantiatable, "signal_emit",
|
1078
1078
|
gobj_sig_emit, -1);
|
1079
|
-
|
1079
|
+
rb_define_method(cInstantiatable, "signal_emit_stop",
|
1080
1080
|
gobj_sig_emit_stop, 1);
|
1081
|
-
|
1081
|
+
rb_define_method(cInstantiatable, "signal_handler_block",
|
1082
1082
|
gobj_sig_handler_block, 1);
|
1083
|
-
|
1083
|
+
rb_define_method(cInstantiatable, "signal_handler_unblock",
|
1084
1084
|
gobj_sig_handler_unblock, 1);
|
1085
|
-
|
1085
|
+
rb_define_method(cInstantiatable, "signal_handler_disconnect",
|
1086
1086
|
gobj_sig_handler_disconnect, 1);
|
1087
1087
|
|
1088
|
-
|
1088
|
+
rb_define_method(cInstantiatable, "signal_handler_is_connected?",
|
1089
1089
|
gobj_sig_handler_is_connected, 1);
|
1090
1090
|
|
1091
|
-
|
1092
|
-
|
1093
|
-
|
1094
|
-
|
1091
|
+
rb_define_singleton_method(cInstantiatable,
|
1092
|
+
"signal_handler_attach",
|
1093
|
+
gobj_s_signal_handler_attach,
|
1094
|
+
2);
|
1095
1095
|
}
|