glib2 4.2.2 → 4.2.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/ext/glib2/rbglib-option.c +28 -0
- data/ext/glib2/rbglib-variant-dict.c +84 -0
- data/ext/glib2/rbglib.c +3 -1
- data/ext/glib2/rbglib.h +1 -1
- data/ext/glib2/rbglib2conversions.h +5 -1
- data/ext/glib2/rbglib_utils.c +37 -1
- data/ext/glib2/rbgobj_object.c +7 -21
- data/ext/glib2/rbgobj_paramspecs.c +91 -48
- data/ext/glib2/rbgprivate.h +3 -1
- data/glib2.gemspec +1 -1
- data/lib/gnome/rake/package-task.rb +1 -1
- data/sample/bookmarkfile.rb +1 -1
- data/test/test-binding.rb +8 -11
- data/test/test-option.rb +27 -0
- data/test/test-unicode.rb +5 -4
- data/test/test-utils.rb +11 -1
- data/test/test-variant-dict.rb +40 -0
- metadata +7 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 75f66210f00c8c877df17742b6e6e0648bce06d88b427b59671a7953d5c90bc0
|
4
|
+
data.tar.gz: 9485c80fd6515568f1f7e3eca427b940c23308e1998875d9475d4f9e6877a466
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 334279af523347fca47aa14d0e7a68e0159994eec798135c0fa383815a8e206aeb6c07c149bc51c63b5c446b6791a060890ff1a77ec6d254360986e85d9d75c8
|
7
|
+
data.tar.gz: ce13e24f8b66e55ccc47639494c97aac8c5dd2b9d8fc28a385bca7f2bd39acfae349375ba75d146bb0849efd41c165febaf6697fefa87586a4ff6cf0bb8ee378
|
data/README.md
CHANGED
@@ -0,0 +1,28 @@
|
|
1
|
+
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
|
+
/*
|
3
|
+
* Copyright (C) 2024 Ruby-GNOME Project Team
|
4
|
+
*
|
5
|
+
* This library is free software; you can redistribute it and/or
|
6
|
+
* modify it under the terms of the GNU Lesser General Public
|
7
|
+
* License as published by the Free Software Foundation; either
|
8
|
+
* version 2.1 of the License, or (at your option) any later version.
|
9
|
+
*
|
10
|
+
* This library is distributed in the hope that it will be useful,
|
11
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
13
|
+
* Lesser General Public License for more details.
|
14
|
+
*
|
15
|
+
* You should have received a copy of the GNU Lesser General Public
|
16
|
+
* License along with this library; if not, write to the Free Software
|
17
|
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
18
|
+
* MA 02110-1301 USA
|
19
|
+
*/
|
20
|
+
|
21
|
+
#include "rbgprivate.h"
|
22
|
+
|
23
|
+
void
|
24
|
+
Init_glib_option(void)
|
25
|
+
{
|
26
|
+
G_DEF_CLASS(G_TYPE_OPTION_ARG, "OptionArg", rbg_mGLib());
|
27
|
+
G_DEF_CLASS(G_TYPE_OPTION_FLAGS, "OptionFlags", rbg_mGLib());
|
28
|
+
}
|
@@ -0,0 +1,84 @@
|
|
1
|
+
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
|
+
/*
|
3
|
+
* Copyright (C) 2024 Ruby-GNOME Project Team
|
4
|
+
*
|
5
|
+
* This library is free software; you can redistribute it and/or
|
6
|
+
* modify it under the terms of the GNU Lesser General Public
|
7
|
+
* License as published by the Free Software Foundation; either
|
8
|
+
* version 2.1 of the License, or (at your option) any later version.
|
9
|
+
*
|
10
|
+
* This library is distributed in the hope that it will be useful,
|
11
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
13
|
+
* Lesser General Public License for more details.
|
14
|
+
*
|
15
|
+
* You should have received a copy of the GNU Lesser General Public
|
16
|
+
* License along with this library; if not, write to the Free Software
|
17
|
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
18
|
+
* MA 02110-1301 USA
|
19
|
+
*/
|
20
|
+
|
21
|
+
#include "rbgprivate.h"
|
22
|
+
|
23
|
+
#define RG_TARGET_NAMESPACE cVariantDict
|
24
|
+
|
25
|
+
#define _SELF(s) (RVAL2GVARIANTDICT(s))
|
26
|
+
|
27
|
+
static VALUE RG_TARGET_NAMESPACE;
|
28
|
+
|
29
|
+
static VALUE
|
30
|
+
rg_initialize(int argc, VALUE *argv, VALUE self)
|
31
|
+
{
|
32
|
+
VALUE rb_variant;
|
33
|
+
rb_scan_args(argc, argv, "01", &rb_variant);
|
34
|
+
GVariant *variant = NULL;
|
35
|
+
if (!RB_NIL_P(rb_variant)) {
|
36
|
+
variant = RVAL2GVARIANT(rb_variant);
|
37
|
+
}
|
38
|
+
GVariantDict *dict = g_variant_dict_new(variant);
|
39
|
+
G_INITIALIZE(self, dict);
|
40
|
+
|
41
|
+
return Qnil;
|
42
|
+
}
|
43
|
+
|
44
|
+
static VALUE
|
45
|
+
rg_insert(VALUE self, VALUE rb_key, VALUE rb_value)
|
46
|
+
{
|
47
|
+
GVariantDict *dict = _SELF(self);
|
48
|
+
const gchar *key = RVAL2CSTR(rb_key);
|
49
|
+
GVariant *value = RVAL2GVARIANT(rb_value);
|
50
|
+
g_variant_dict_insert_value(dict, key, value);
|
51
|
+
return Qnil;
|
52
|
+
}
|
53
|
+
|
54
|
+
static VALUE
|
55
|
+
rg_lookup(VALUE self, VALUE rb_key, VALUE rb_expected_type)
|
56
|
+
{
|
57
|
+
GVariantDict *dict = _SELF(self);
|
58
|
+
const gchar *key = RVAL2CSTR(rb_key);
|
59
|
+
const GVariantType *expected_type = RVAL2GVARIANTTYPE(rb_expected_type);
|
60
|
+
GVariant *value = g_variant_dict_lookup_value(dict, key, expected_type);
|
61
|
+
return GVARIANT2RVAL(value);
|
62
|
+
}
|
63
|
+
|
64
|
+
static VALUE
|
65
|
+
rg_contains_p(VALUE self, VALUE rb_key)
|
66
|
+
{
|
67
|
+
GVariantDict *dict = _SELF(self);
|
68
|
+
const gchar *key = RVAL2CSTR(rb_key);
|
69
|
+
gboolean contains = g_variant_dict_contains(dict, key);
|
70
|
+
return CBOOL2RVAL(contains);
|
71
|
+
}
|
72
|
+
|
73
|
+
void
|
74
|
+
Init_glib_variant_dict(void)
|
75
|
+
{
|
76
|
+
RG_TARGET_NAMESPACE =
|
77
|
+
G_DEF_CLASS(G_TYPE_VARIANT_DICT, "VariantDict", rbg_mGLib());
|
78
|
+
|
79
|
+
RG_DEF_METHOD(initialize, -1);
|
80
|
+
|
81
|
+
RG_DEF_METHOD(insert, 2);
|
82
|
+
RG_DEF_METHOD(lookup, 2);
|
83
|
+
RG_DEF_METHOD_P(contains, 1);
|
84
|
+
}
|
data/ext/glib2/rbglib.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-2024 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
|
@@ -1284,9 +1284,11 @@ union GDoubleIEEE754;
|
|
1284
1284
|
Init_glib_bookmark_file();
|
1285
1285
|
Init_glib_variant_type();
|
1286
1286
|
Init_glib_variant();
|
1287
|
+
Init_glib_variant_dict();
|
1287
1288
|
Init_glib_regex();
|
1288
1289
|
Init_glib_matchinfo();
|
1289
1290
|
Init_glib_date_time();
|
1290
1291
|
Init_glib_time_zone();
|
1291
1292
|
Init_glib_bytes();
|
1293
|
+
Init_glib_option();
|
1292
1294
|
}
|
data/ext/glib2/rbglib.h
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-2024 Ruby-GNOME Project Team
|
4
4
|
*
|
5
5
|
* This library is free software; you can redistribute it and/or
|
6
6
|
* modify it under the terms of the GNU Lesser General Public
|
@@ -43,6 +43,10 @@
|
|
43
43
|
#define GVALUE2RVAL(o) (BOXED2RVAL(o, G_TYPE_VALUE))
|
44
44
|
#define RVAL2GVARIANTTYPE(o) (rbg_variant_type_from_ruby(o))
|
45
45
|
#define GVARIANTTYPE2RVAL(o) (BOXED2RVAL(o, G_TYPE_VARIANT_TYPE))
|
46
|
+
#define RVAL2GVARIANT(o) (rbg_variant_from_ruby(o))
|
47
|
+
#define GVARIANT2RVAL(o) (rbg_variant_to_ruby(o))
|
48
|
+
#define RVAL2GVARIANTDICT(o) ((GVariantDict *)RVAL2BOXED(o, G_TYPE_VARIANT_DICT))
|
49
|
+
#define GVARIANTDICT2RVAL(o) (BOXED2RVAL(o, G_TYPE_VARIANT_DICT))
|
46
50
|
|
47
51
|
#define RVAL2GIOCONDITION(o) (RVAL2GFLAGS(o, G_TYPE_IO_CONDITION))
|
48
52
|
#define GIOCONDITION2RVAL(o) (GFLAGS2RVAL(o, G_TYPE_IO_CONDITION))
|
data/ext/glib2/rbglib_utils.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-2024 Ruby-GNOME Project Team
|
4
4
|
* Copyright (C) 2004 Pascal Terjan
|
5
5
|
*
|
6
6
|
* This library is free software; you can redistribute it and/or
|
@@ -279,6 +279,20 @@ rg_s_check_version_p(G_GNUC_UNUSED VALUE self, VALUE major, VALUE minor, VALUE m
|
|
279
279
|
glib_micro_version >= NUM2UINT(micro)));
|
280
280
|
}
|
281
281
|
|
282
|
+
#if GLIB_CHECK_VERSION(2, 64, 0)
|
283
|
+
static VALUE
|
284
|
+
rg_s_get_os_info(G_GNUC_UNUSED VALUE self, VALUE rb_key)
|
285
|
+
{
|
286
|
+
if (RB_SYMBOL_P(rb_key)) {
|
287
|
+
VALUE mOSInfoKey = rb_const_get(rbg_mGLib(), rb_intern("OSInfoKey"));
|
288
|
+
VALUE rb_KEY = rb_funcall(rb_sym2str(rb_key), rb_intern("upcase"), 0);
|
289
|
+
rb_key = rb_const_get(mOSInfoKey, rb_intern_str(rb_KEY));
|
290
|
+
}
|
291
|
+
return CSTR2RVAL_FREE(g_get_os_info(RVAL2CSTR(rb_key)));
|
292
|
+
}
|
293
|
+
#endif
|
294
|
+
|
295
|
+
|
282
296
|
void
|
283
297
|
Init_glib_utils(void)
|
284
298
|
{
|
@@ -323,4 +337,26 @@ Init_glib_utils(void)
|
|
323
337
|
RG_DEF_SMETHOD(parse_debug_string, 2);
|
324
338
|
RG_DEF_SMETHOD_P(check_version, 3);
|
325
339
|
|
340
|
+
#if GLIB_CHECK_VERSION(2, 64, 0)
|
341
|
+
RG_DEF_SMETHOD(get_os_info, 1);
|
342
|
+
|
343
|
+
VALUE mOSInfoKey = rb_define_module_under(RG_TARGET_NAMESPACE, "OSInfoKey");
|
344
|
+
# define RG_DEF_OS_INFO_KEY(NAME) \
|
345
|
+
rb_define_const(mOSInfoKey, \
|
346
|
+
G_STRINGIFY(NAME), \
|
347
|
+
CSTR2RVAL(G_OS_INFO_KEY_ ## NAME))
|
348
|
+
|
349
|
+
RG_DEF_OS_INFO_KEY(NAME);
|
350
|
+
RG_DEF_OS_INFO_KEY(PRETTY_NAME);
|
351
|
+
RG_DEF_OS_INFO_KEY(VERSION);
|
352
|
+
RG_DEF_OS_INFO_KEY(VERSION_CODENAME);
|
353
|
+
RG_DEF_OS_INFO_KEY(VERSION_ID);
|
354
|
+
RG_DEF_OS_INFO_KEY(ID);
|
355
|
+
RG_DEF_OS_INFO_KEY(HOME_URL);
|
356
|
+
RG_DEF_OS_INFO_KEY(DOCUMENTATION_URL);
|
357
|
+
RG_DEF_OS_INFO_KEY(SUPPORT_URL);
|
358
|
+
RG_DEF_OS_INFO_KEY(BUG_REPORT_URL);
|
359
|
+
RG_DEF_OS_INFO_KEY(PRIVACY_POLICY_URL);
|
360
|
+
# undef RG_DEF_OS_INFO_KEY
|
361
|
+
#endif
|
326
362
|
}
|
data/ext/glib2/rbgobj_object.c
CHANGED
@@ -987,7 +987,6 @@ void
|
|
987
987
|
rbgobj_register_type(VALUE klass, VALUE type_name, GClassInitFunc class_init)
|
988
988
|
{
|
989
989
|
GType parent_type;
|
990
|
-
GTypeInfo *info;
|
991
990
|
|
992
991
|
{
|
993
992
|
const RGObjClassInfo *cinfo = rbgobj_lookup_class(klass);
|
@@ -1025,26 +1024,13 @@ rbgobj_register_type(VALUE klass, VALUE type_name, GClassInitFunc class_init)
|
|
1025
1024
|
GTypeQuery query;
|
1026
1025
|
g_type_query(parent_type, &query);
|
1027
1026
|
|
1028
|
-
|
1029
|
-
|
1030
|
-
|
1031
|
-
|
1032
|
-
|
1033
|
-
|
1034
|
-
|
1035
|
-
info->class_finalize = NULL;
|
1036
|
-
info->class_data = NULL;
|
1037
|
-
info->instance_size = query.instance_size;
|
1038
|
-
info->n_preallocs = 0;
|
1039
|
-
info->instance_init = NULL;
|
1040
|
-
info->value_table = NULL;
|
1041
|
-
}
|
1042
|
-
|
1043
|
-
{
|
1044
|
-
GType type = g_type_register_static(parent_type,
|
1045
|
-
StringValueCStr(type_name),
|
1046
|
-
info,
|
1047
|
-
0);
|
1027
|
+
GType type = g_type_register_static_simple(parent_type,
|
1028
|
+
StringValueCStr(type_name),
|
1029
|
+
query.class_size,
|
1030
|
+
class_init,
|
1031
|
+
query.instance_size,
|
1032
|
+
NULL,
|
1033
|
+
0);
|
1048
1034
|
if (type == G_TYPE_INVALID) {
|
1049
1035
|
rb_raise(rb_eArgError,
|
1050
1036
|
"failed to register type: <%s>",
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
2
|
/*
|
3
|
-
* Copyright (C) 2004-
|
3
|
+
* Copyright (C) 2004-2024 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
|
@@ -25,6 +25,49 @@
|
|
25
25
|
|
26
26
|
#include "rbgprivate.h"
|
27
27
|
|
28
|
+
static GParamFlags
|
29
|
+
resolve_flags(VALUE rb_flags)
|
30
|
+
{
|
31
|
+
GParamFlags flags = 0;
|
32
|
+
|
33
|
+
switch (rb_type(rb_flags)) {
|
34
|
+
case RUBY_T_NIL:
|
35
|
+
flags = 0;
|
36
|
+
break;
|
37
|
+
case RUBY_T_FIXNUM:
|
38
|
+
case RUBY_T_BIGNUM:
|
39
|
+
flags = NUM2UINT(rb_flags);
|
40
|
+
break;
|
41
|
+
case RUBY_T_SYMBOL:
|
42
|
+
rb_flags = rb_sym2str(rb_flags);
|
43
|
+
/* fallthrough */
|
44
|
+
case RUBY_T_STRING:
|
45
|
+
{
|
46
|
+
VALUE rb_FLAGS = rb_funcall(rb_flags, rb_intern("upcase"), 0);
|
47
|
+
VALUE mGLibParam = rb_const_get(rbg_mGLib(), rb_intern("Param"));
|
48
|
+
flags = NUM2UINT(rb_const_get(mGLibParam, rb_intern_str(rb_FLAGS)));
|
49
|
+
}
|
50
|
+
break;
|
51
|
+
case RUBY_T_ARRAY:
|
52
|
+
{
|
53
|
+
long i, n;
|
54
|
+
n = RARRAY_LEN(rb_flags);
|
55
|
+
for (i = 0; i < n; i++) {
|
56
|
+
flags |= resolve_flags(RARRAY_PTR(rb_flags)[i]);
|
57
|
+
}
|
58
|
+
break;
|
59
|
+
}
|
60
|
+
default:
|
61
|
+
rb_raise(rb_eArgError,
|
62
|
+
"flag value must be one of "
|
63
|
+
"nil, Integer, String, Symbol or Array of them: %s",
|
64
|
+
RBG_INSPECT(rb_flags));
|
65
|
+
break;
|
66
|
+
}
|
67
|
+
|
68
|
+
return flags;
|
69
|
+
}
|
70
|
+
|
28
71
|
#define DEF_NUMERIC_PSPEC_METHODS_FUNC(pspec_type, typename, from_ruby, to_ruby, pspec_cast) \
|
29
72
|
static VALUE \
|
30
73
|
typename##_initialize(VALUE self, VALUE name, VALUE nick, VALUE blurb, \
|
@@ -32,13 +75,13 @@ typename##_initialize(VALUE self, VALUE name, VALUE nick, VALUE blurb, \
|
|
32
75
|
VALUE flags) \
|
33
76
|
{ \
|
34
77
|
GParamSpec* pspec; \
|
35
|
-
pspec = g_param_spec_##typename(
|
36
|
-
|
37
|
-
|
78
|
+
pspec = g_param_spec_##typename(RVAL2CSTR(name), \
|
79
|
+
RVAL2CSTR_ACCEPT_NIL(nick), \
|
80
|
+
RVAL2CSTR_ACCEPT_NIL(blurb), \
|
38
81
|
from_ruby(minimum), \
|
39
82
|
from_ruby(maximum), \
|
40
83
|
from_ruby(default_value), \
|
41
|
-
|
84
|
+
resolve_flags(flags)); \
|
42
85
|
rbgobj_param_spec_initialize(self, pspec); \
|
43
86
|
return Qnil; \
|
44
87
|
} \
|
@@ -91,11 +134,11 @@ boolean_initialize(VALUE self, VALUE name, VALUE nick, VALUE blurb,
|
|
91
134
|
VALUE default_value, VALUE flags)
|
92
135
|
{
|
93
136
|
GParamSpec* pspec;
|
94
|
-
pspec = g_param_spec_boolean(
|
95
|
-
|
96
|
-
|
137
|
+
pspec = g_param_spec_boolean(RVAL2CSTR(name),
|
138
|
+
RVAL2CSTR_ACCEPT_NIL(nick),
|
139
|
+
RVAL2CSTR_ACCEPT_NIL(blurb),
|
97
140
|
RVAL2CBOOL(default_value),
|
98
|
-
|
141
|
+
resolve_flags(flags));
|
99
142
|
rbgobj_param_spec_initialize(self, pspec);
|
100
143
|
return Qnil;
|
101
144
|
}
|
@@ -105,11 +148,11 @@ unichar_initialize(VALUE self, VALUE name, VALUE nick, VALUE blurb,
|
|
105
148
|
VALUE default_value, VALUE flags)
|
106
149
|
{
|
107
150
|
GParamSpec* pspec;
|
108
|
-
pspec = g_param_spec_unichar(
|
109
|
-
|
110
|
-
|
151
|
+
pspec = g_param_spec_unichar(RVAL2CSTR(name),
|
152
|
+
RVAL2CSTR_ACCEPT_NIL(nick),
|
153
|
+
RVAL2CSTR_ACCEPT_NIL(blurb),
|
111
154
|
NUM2UINT(default_value),
|
112
|
-
|
155
|
+
resolve_flags(flags));
|
113
156
|
rbgobj_param_spec_initialize(self, pspec);
|
114
157
|
return Qnil;
|
115
158
|
}
|
@@ -121,12 +164,12 @@ enum_initialize(VALUE self, VALUE name, VALUE nick, VALUE blurb,
|
|
121
164
|
GParamSpec* pspec;
|
122
165
|
GType gtype = rbgobj_gtype_from_ruby(enum_type);
|
123
166
|
|
124
|
-
pspec = g_param_spec_enum(
|
125
|
-
|
126
|
-
|
167
|
+
pspec = g_param_spec_enum(RVAL2CSTR(name),
|
168
|
+
RVAL2CSTR_ACCEPT_NIL(nick),
|
169
|
+
RVAL2CSTR_ACCEPT_NIL(blurb),
|
127
170
|
gtype,
|
128
171
|
RVAL2GENUM(default_value, gtype),
|
129
|
-
|
172
|
+
resolve_flags(flags));
|
130
173
|
rbgobj_param_spec_initialize(self, pspec);
|
131
174
|
return Qnil;
|
132
175
|
}
|
@@ -138,12 +181,12 @@ flags_initialize(VALUE self, VALUE name, VALUE nick, VALUE blurb,
|
|
138
181
|
GParamSpec* pspec;
|
139
182
|
GType gtype = rbgobj_gtype_from_ruby(flags_type);
|
140
183
|
|
141
|
-
pspec = g_param_spec_flags(
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
184
|
+
pspec = g_param_spec_flags(RVAL2CSTR(name),
|
185
|
+
RVAL2CSTR_ACCEPT_NIL(nick),
|
186
|
+
RVAL2CSTR_ACCEPT_NIL(blurb),
|
187
|
+
gtype,
|
188
|
+
RVAL2GFLAGS(default_value, gtype),
|
189
|
+
resolve_flags(flags));
|
147
190
|
rbgobj_param_spec_initialize(self, pspec);
|
148
191
|
return Qnil;
|
149
192
|
}
|
@@ -153,11 +196,11 @@ string_initialize(VALUE self, VALUE name, VALUE nick, VALUE blurb,
|
|
153
196
|
VALUE default_value, VALUE flags)
|
154
197
|
{
|
155
198
|
GParamSpec* pspec;
|
156
|
-
pspec = g_param_spec_string(
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
199
|
+
pspec = g_param_spec_string(RVAL2CSTR(name),
|
200
|
+
RVAL2CSTR_ACCEPT_NIL(nick),
|
201
|
+
RVAL2CSTR_ACCEPT_NIL(blurb),
|
202
|
+
RVAL2CSTR_ACCEPT_NIL(default_value),
|
203
|
+
resolve_flags(flags));
|
161
204
|
rbgobj_param_spec_initialize(self, pspec);
|
162
205
|
return Qnil;
|
163
206
|
}
|
@@ -167,11 +210,11 @@ param_initialize(VALUE self, VALUE name, VALUE nick, VALUE blurb,
|
|
167
210
|
VALUE param_type, VALUE flags)
|
168
211
|
{
|
169
212
|
GParamSpec* pspec;
|
170
|
-
pspec = g_param_spec_param(
|
171
|
-
|
172
|
-
|
213
|
+
pspec = g_param_spec_param(RVAL2CSTR(name),
|
214
|
+
RVAL2CSTR_ACCEPT_NIL(nick),
|
215
|
+
RVAL2CSTR_ACCEPT_NIL(blurb),
|
173
216
|
rbgobj_gtype_from_ruby(param_type),
|
174
|
-
|
217
|
+
resolve_flags(flags));
|
175
218
|
rbgobj_param_spec_initialize(self, pspec);
|
176
219
|
return Qnil;
|
177
220
|
}
|
@@ -181,11 +224,11 @@ boxed_initialize(VALUE self, VALUE name, VALUE nick, VALUE blurb,
|
|
181
224
|
VALUE boxed_type, VALUE flags)
|
182
225
|
{
|
183
226
|
GParamSpec* pspec;
|
184
|
-
pspec = g_param_spec_boxed(
|
185
|
-
|
186
|
-
|
227
|
+
pspec = g_param_spec_boxed(RVAL2CSTR(name),
|
228
|
+
RVAL2CSTR_ACCEPT_NIL(nick),
|
229
|
+
RVAL2CSTR_ACCEPT_NIL(blurb),
|
187
230
|
rbgobj_gtype_from_ruby(boxed_type),
|
188
|
-
|
231
|
+
resolve_flags(flags));
|
189
232
|
rbgobj_param_spec_initialize(self, pspec);
|
190
233
|
return Qnil;
|
191
234
|
}
|
@@ -194,10 +237,10 @@ static VALUE
|
|
194
237
|
pointer_initialize(VALUE self, VALUE name, VALUE nick, VALUE blurb, VALUE flags)
|
195
238
|
{
|
196
239
|
GParamSpec* pspec;
|
197
|
-
pspec = g_param_spec_pointer(
|
198
|
-
|
199
|
-
|
200
|
-
|
240
|
+
pspec = g_param_spec_pointer(RVAL2CSTR(name),
|
241
|
+
RVAL2CSTR_ACCEPT_NIL(nick),
|
242
|
+
RVAL2CSTR_ACCEPT_NIL(blurb),
|
243
|
+
resolve_flags(flags));
|
201
244
|
rbgobj_param_spec_initialize(self, pspec);
|
202
245
|
return Qnil;
|
203
246
|
}
|
@@ -207,11 +250,11 @@ value_array_initialize(VALUE self, VALUE name, VALUE nick, VALUE blurb,
|
|
207
250
|
VALUE element_spec, VALUE flags)
|
208
251
|
{
|
209
252
|
GParamSpec *pspec;
|
210
|
-
pspec = g_param_spec_value_array(
|
211
|
-
|
212
|
-
|
253
|
+
pspec = g_param_spec_value_array(RVAL2CSTR(name),
|
254
|
+
RVAL2CSTR_ACCEPT_NIL(nick),
|
255
|
+
RVAL2CSTR_ACCEPT_NIL(blurb),
|
213
256
|
RVAL2GOBJ(element_spec),
|
214
|
-
|
257
|
+
resolve_flags(flags));
|
215
258
|
rbgobj_param_spec_initialize(self, pspec);
|
216
259
|
return Qnil;
|
217
260
|
}
|
@@ -221,11 +264,11 @@ object_initialize(VALUE self, VALUE name, VALUE nick, VALUE blurb,
|
|
221
264
|
VALUE object_type, VALUE flags)
|
222
265
|
{
|
223
266
|
GParamSpec* pspec;
|
224
|
-
pspec = g_param_spec_object(
|
225
|
-
|
226
|
-
|
267
|
+
pspec = g_param_spec_object(RVAL2CSTR(name),
|
268
|
+
RVAL2CSTR_ACCEPT_NIL(nick),
|
269
|
+
RVAL2CSTR_ACCEPT_NIL(blurb),
|
227
270
|
rbgobj_gtype_from_ruby(object_type),
|
228
|
-
|
271
|
+
resolve_flags(flags));
|
229
272
|
rbgobj_param_spec_initialize(self, pspec);
|
230
273
|
return Qnil;
|
231
274
|
}
|
data/ext/glib2/rbgprivate.h
CHANGED
@@ -21,11 +21,11 @@
|
|
21
21
|
#pragma once
|
22
22
|
|
23
23
|
/*
|
24
|
-
* CentOS 7: GLib 2.56
|
25
24
|
* AlmaLinux 8: GLib 2.56
|
26
25
|
* AlmaLinux 9: GLib 2.68
|
27
26
|
* Ubuntu 20.04: GLib 2.64
|
28
27
|
* Ubuntu 22.04: GLib 2.72
|
28
|
+
* Ubuntu 24.04: GLib 2.80
|
29
29
|
*/
|
30
30
|
#ifndef GLIB_VERSION_MIN_REQUIRED
|
31
31
|
# define GLIB_VERSION_MIN_REQUIRED GLIB_VERSION_2_56
|
@@ -179,11 +179,13 @@ G_GNUC_INTERNAL void Init_glib_keyfile(void);
|
|
179
179
|
G_GNUC_INTERNAL void Init_glib_bookmark_file(void);
|
180
180
|
G_GNUC_INTERNAL void Init_glib_variant_type(void);
|
181
181
|
G_GNUC_INTERNAL void Init_glib_variant(void);
|
182
|
+
G_GNUC_INTERNAL void Init_glib_variant_dict(void);
|
182
183
|
G_GNUC_INTERNAL void Init_glib_regex(void);
|
183
184
|
G_GNUC_INTERNAL void Init_glib_matchinfo(void);
|
184
185
|
G_GNUC_INTERNAL void Init_glib_date_time(void);
|
185
186
|
G_GNUC_INTERNAL void Init_glib_time_zone(void);
|
186
187
|
G_GNUC_INTERNAL void Init_glib_bytes(void);
|
188
|
+
G_GNUC_INTERNAL void Init_glib_option(void);
|
187
189
|
|
188
190
|
G_GNUC_INTERNAL void Init_gobject_convert(void);
|
189
191
|
G_GNUC_INTERNAL void Init_gobject_gtype(void);
|
data/glib2.gemspec
CHANGED
@@ -27,7 +27,7 @@ Gem::Specification.new do |s|
|
|
27
27
|
"many useful utility features."
|
28
28
|
s.author = "The Ruby-GNOME Project Team"
|
29
29
|
s.email = "ruby-gnome2-devel-en@lists.sourceforge.net"
|
30
|
-
s.homepage = "https://ruby-
|
30
|
+
s.homepage = "https://ruby-gnome.github.io/"
|
31
31
|
s.licenses = ["LGPL-2.1+"]
|
32
32
|
s.version = ruby_glib2_version
|
33
33
|
s.extensions = ["ext/#{s.name}/extconf.rb"]
|
@@ -126,7 +126,7 @@ module GNOME
|
|
126
126
|
@description = ""
|
127
127
|
@author = "The Ruby-GNOME2 Project Team"
|
128
128
|
@email = "ruby-gnome2-devel-en@lists.sourceforge.net"
|
129
|
-
@homepage = "https://ruby-
|
129
|
+
@homepage = "https://ruby-gnome.github.io/"
|
130
130
|
@external_packages = []
|
131
131
|
end
|
132
132
|
|
data/sample/bookmarkfile.rb
CHANGED
@@ -17,7 +17,7 @@ $KCODE = "U"
|
|
17
17
|
URI = "https://ruby-gnome2.osdn.jp/"
|
18
18
|
bf = GLib::BookmarkFile.new
|
19
19
|
bf.set_title(URI, "Ruby-GNOME2 sample")
|
20
|
-
bf.set_description(URI, "Ruby-GNOME2
|
20
|
+
bf.set_description(URI, "Ruby-GNOME2 Sample for GLib::BookmarkFile")
|
21
21
|
bf.set_mime_type(URI, "text/html")
|
22
22
|
bf.set_private(URI, false)
|
23
23
|
bf.set_icon(URI, "https://ruby-gnome2.osdn.jp/logo-gy.png", "image/png")
|
data/test/test-binding.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2015-
|
1
|
+
# Copyright (C) 2015-2024 Ruby-GNOME Project Team
|
2
2
|
#
|
3
3
|
# This library is free software; you can redistribute it and/or
|
4
4
|
# modify it under the terms of the GNU Lesser General Public
|
@@ -21,21 +21,19 @@ class TestGLibBinding < Test::Unit::TestCase
|
|
21
21
|
type_register
|
22
22
|
|
23
23
|
install_property(GLib::Param::Int.new("source", # name
|
24
|
-
|
25
|
-
|
24
|
+
nil, # nick
|
25
|
+
nil, # blurb
|
26
26
|
0, # min
|
27
27
|
100, # max
|
28
28
|
0, # default
|
29
|
-
|
30
|
-
GLib::Param::WRITABLE))
|
29
|
+
[:readable, :writable]))
|
31
30
|
install_property(GLib::Param::Int.new("target", # name
|
32
|
-
|
33
|
-
|
31
|
+
nil, # nick
|
32
|
+
nil, # blurb
|
34
33
|
0, # min
|
35
34
|
100, # max
|
36
35
|
0, # default
|
37
|
-
|
38
|
-
GLib::Param::WRITABLE))
|
36
|
+
:readwrite))
|
39
37
|
|
40
38
|
attr_reader :source, :target
|
41
39
|
def initialize
|
@@ -106,8 +104,7 @@ class TestGLibBinding < Test::Unit::TestCase
|
|
106
104
|
"Target", # nick
|
107
105
|
"The target data", # blurb
|
108
106
|
"", # default
|
109
|
-
GLib::Param::
|
110
|
-
GLib::Param::WRITABLE))
|
107
|
+
GLib::Param::READWRITE))
|
111
108
|
|
112
109
|
attr_reader :source, :target
|
113
110
|
def initialize
|
data/test/test-option.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# Copyright (C) 2024 Ruby-GNOME Project Team
|
2
|
+
#
|
3
|
+
# This library is free software; you can redistribute it and/or
|
4
|
+
# modify it under the terms of the GNU Lesser General Public
|
5
|
+
# License as published by the Free Software Foundation; either
|
6
|
+
# version 2.1 of the License, or (at your option) any later version.
|
7
|
+
#
|
8
|
+
# This library is distributed in the hope that it will be useful,
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
11
|
+
# Lesser General Public License for more details.
|
12
|
+
#
|
13
|
+
# You should have received a copy of the GNU Lesser General Public
|
14
|
+
# License along with this library; if not, write to the Free Software
|
15
|
+
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
16
|
+
|
17
|
+
class TestGLibOption < Test::Unit::TestCase
|
18
|
+
include GLibTestUtils
|
19
|
+
|
20
|
+
def test_arg
|
21
|
+
assert_equal(0, GLib::OptionArg::NONE.to_i)
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_flags
|
25
|
+
assert_equal(0, GLib::OptionFlags::NONE.to_i)
|
26
|
+
end
|
27
|
+
end
|
data/test/test-unicode.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2015-
|
1
|
+
# Copyright (C) 2015-2024 Ruby-GNOME Project Team
|
2
2
|
#
|
3
3
|
# This library is free software; you can redistribute it and/or
|
4
4
|
# modify it under the terms of the GNU Lesser General Public
|
@@ -400,10 +400,11 @@ class TestGLibUnicode < Test::Unit::TestCase
|
|
400
400
|
end
|
401
401
|
|
402
402
|
def binary(string)
|
403
|
-
if string.respond_to?(:
|
404
|
-
string.
|
403
|
+
if string.respond_to?(:b)
|
404
|
+
string.b
|
405
|
+
else
|
406
|
+
string
|
405
407
|
end
|
406
|
-
string
|
407
408
|
end
|
408
409
|
|
409
410
|
def little_endian?
|
data/test/test-utils.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2015-
|
1
|
+
# Copyright (C) 2015-2024 Ruby-GNOME Project Team
|
2
2
|
#
|
3
3
|
# This library is free software; you can redistribute it and/or
|
4
4
|
# modify it under the terms of the GNU Lesser General Public
|
@@ -42,4 +42,14 @@ class TestGLibUtils < Test::Unit::TestCase
|
|
42
42
|
GLib.get_user_special_dir(GLib::UserDirectory::DESKTOP)
|
43
43
|
end
|
44
44
|
end
|
45
|
+
|
46
|
+
def test_get_os_info
|
47
|
+
only_glib_version(2, 64, 0)
|
48
|
+
assert_kind_of(String, GLib.get_os_info(GLib::OSInfoKey::NAME))
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_get_os_info_symbol
|
52
|
+
only_glib_version(2, 64, 0)
|
53
|
+
assert_kind_of(String, GLib.get_os_info(:name))
|
54
|
+
end
|
45
55
|
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# Copyright (C) 2024 Ruby-GNOME Project Team
|
2
|
+
#
|
3
|
+
# This library is free software; you can redistribute it and/or
|
4
|
+
# modify it under the terms of the GNU Lesser General Public
|
5
|
+
# License as published by the Free Software Foundation; either
|
6
|
+
# version 2.1 of the License, or (at your option) any later version.
|
7
|
+
#
|
8
|
+
# This library is distributed in the hope that it will be useful,
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
11
|
+
# Lesser General Public License for more details.
|
12
|
+
#
|
13
|
+
# You should have received a copy of the GNU Lesser General Public
|
14
|
+
# License along with this library; if not, write to the Free Software
|
15
|
+
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
16
|
+
|
17
|
+
class TestGLibVariantDict < Test::Unit::TestCase
|
18
|
+
include GLibTestUtils
|
19
|
+
|
20
|
+
def setup
|
21
|
+
@dict = GLib::VariantDict.new
|
22
|
+
@dict.insert("hello", GLib::Variant.new("world", "s"))
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_lookup
|
26
|
+
assert_equal("world", @dict.lookup("hello", "s"))
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_contains_true
|
30
|
+
assert do
|
31
|
+
@dict.contains?("hello")
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_contains_false
|
36
|
+
assert do
|
37
|
+
not @dict.contains?("nonexistent")
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: glib2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.2.
|
4
|
+
version: 4.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- The Ruby-GNOME Project Team
|
8
8
|
bindir: bin
|
9
9
|
cert_chain: []
|
10
|
-
date: 2024-
|
10
|
+
date: 2024-09-23 00:00:00.000000000 Z
|
11
11
|
dependencies:
|
12
12
|
- !ruby/object:Gem::Dependency
|
13
13
|
name: pkg-config
|
@@ -68,6 +68,8 @@ files:
|
|
68
68
|
- ext/glib2/rbgcompat.h
|
69
69
|
- ext/glib2/rbglib-bytes.c
|
70
70
|
- ext/glib2/rbglib-gc.c
|
71
|
+
- ext/glib2/rbglib-option.c
|
72
|
+
- ext/glib2/rbglib-variant-dict.c
|
71
73
|
- ext/glib2/rbglib-variant-type.c
|
72
74
|
- ext/glib2/rbglib-variant.c
|
73
75
|
- ext/glib2/rbglib.c
|
@@ -187,6 +189,7 @@ files:
|
|
187
189
|
- test/test-key-file.rb
|
188
190
|
- test/test-match-info.rb
|
189
191
|
- test/test-mkenums.rb
|
192
|
+
- test/test-option.rb
|
190
193
|
- test/test-pointer.rb
|
191
194
|
- test/test-poll-fd.rb
|
192
195
|
- test/test-regex.rb
|
@@ -200,12 +203,13 @@ files:
|
|
200
203
|
- test/test-unicode.rb
|
201
204
|
- test/test-utils.rb
|
202
205
|
- test/test-value.rb
|
206
|
+
- test/test-variant-dict.rb
|
203
207
|
- test/test-variant-type.rb
|
204
208
|
- test/test-variant.rb
|
205
209
|
- test/test-version.rb
|
206
210
|
- test/test-win32.rb
|
207
211
|
- version.rb
|
208
|
-
homepage: https://ruby-
|
212
|
+
homepage: https://ruby-gnome.github.io/
|
209
213
|
licenses:
|
210
214
|
- LGPL-2.1+
|
211
215
|
metadata:
|