glib2 4.2.4 → 4.2.6
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
}
|