1#include "iconbrowsericon.h"
2
3struct _IbIcon
4{
5 GObject parent_instance;
6
7 gboolean use_symbolic;
8
9 char *regular_name;
10 char *symbolic_name;
11 char *description;
12 char *context;
13};
14
15struct _IbIconClass
16{
17 GObjectClass parent_class;
18};
19
20enum {
21 PROP_NAME = 1,
22 PROP_REGULAR_NAME,
23 PROP_SYMBOLIC_NAME,
24 PROP_USE_SYMBOLIC,
25 PROP_DESCRIPTION,
26 PROP_CONTEXT,
27 PROP_NUM_PROPERTIES
28};
29
30G_DEFINE_TYPE (IbIcon, ib_icon, G_TYPE_OBJECT)
31
32static void
33ib_icon_init (IbIcon *icon)
34{
35}
36
37static void
38ib_icon_finalize (GObject *object)
39{
40 IbIcon *icon = IB_ICON (ptr: object);
41
42 g_free (mem: icon->regular_name);
43 g_free (mem: icon->symbolic_name);
44 g_free (mem: icon->description);
45 g_free (mem: icon->context);
46
47 G_OBJECT_CLASS (ib_icon_parent_class)->finalize (object);
48}
49
50static void
51ib_icon_set_property (GObject *object,
52 guint property_id,
53 const GValue *value,
54 GParamSpec *pspec)
55{
56 IbIcon *icon = IB_ICON (ptr: object);
57
58 switch (property_id)
59 {
60 case PROP_REGULAR_NAME:
61 g_free (mem: icon->regular_name);
62 icon->regular_name = g_value_dup_string (value);
63 if (!icon->use_symbolic)
64 g_object_notify (object, property_name: "name");
65 break;
66
67 case PROP_SYMBOLIC_NAME:
68 g_free (mem: icon->symbolic_name);
69 icon->symbolic_name = g_value_dup_string (value);
70 if (icon->use_symbolic)
71 g_object_notify (object, property_name: "name");
72 break;
73
74 case PROP_USE_SYMBOLIC:
75 icon->use_symbolic = g_value_get_boolean (value);
76 g_object_notify (object, property_name: "name");
77 break;
78
79 case PROP_DESCRIPTION:
80 g_free (mem: icon->description);
81 icon->description = g_value_dup_string (value);
82 break;
83
84 case PROP_CONTEXT:
85 g_free (mem: icon->context);
86 icon->context = g_value_dup_string (value);
87 break;
88
89 default:
90 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
91 break;
92 }
93}
94
95static void
96ib_icon_get_property (GObject *object,
97 guint property_id,
98 GValue *value,
99 GParamSpec *pspec)
100{
101 IbIcon *icon = IB_ICON (ptr: object);
102
103 switch (property_id)
104 {
105 case PROP_NAME:
106 g_value_set_string (value, v_string: ib_icon_get_name (icon));
107 break;
108
109 case PROP_REGULAR_NAME:
110 g_value_set_string (value, v_string: icon->regular_name);
111 break;
112
113 case PROP_SYMBOLIC_NAME:
114 g_value_set_string (value, v_string: icon->symbolic_name);
115 break;
116
117 case PROP_USE_SYMBOLIC:
118 g_value_set_boolean (value, v_boolean: icon->use_symbolic);
119 break;
120
121 case PROP_DESCRIPTION:
122 g_value_set_string (value, v_string: icon->description);
123 break;
124
125 case PROP_CONTEXT:
126 g_value_set_string (value, v_string: icon->context);
127 break;
128
129 default:
130 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
131 break;
132 }
133}
134
135static void
136ib_icon_class_init (IbIconClass *class)
137{
138 GObjectClass *object_class = G_OBJECT_CLASS (class);
139 GParamSpec *pspec;
140
141 object_class->finalize = ib_icon_finalize;
142 object_class->set_property = ib_icon_set_property;
143 object_class->get_property = ib_icon_get_property;
144
145 pspec = g_param_spec_string (name: "name", nick: "Name", blurb: "Name",
146 NULL,
147 flags: G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
148 g_object_class_install_property (oclass: object_class, property_id: PROP_NAME, pspec);
149
150 pspec = g_param_spec_string (name: "regular-name", nick: "Regular Name", blurb: "Regular Name",
151 NULL,
152 flags: G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
153 g_object_class_install_property (oclass: object_class, property_id: PROP_REGULAR_NAME, pspec);
154
155 pspec = g_param_spec_string (name: "symbolic-name", nick: "Symbolic Name", blurb: "Symbolic Name",
156 NULL,
157 flags: G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
158 g_object_class_install_property (oclass: object_class, property_id: PROP_SYMBOLIC_NAME, pspec);
159
160 pspec = g_param_spec_boolean (name: "use-symbolic", nick: "Use Symbolic", blurb: "Use Symbolic",
161 FALSE,
162 flags: G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
163 g_object_class_install_property (oclass: object_class, property_id: PROP_USE_SYMBOLIC, pspec);
164
165 pspec = g_param_spec_string (name: "description", nick: "Description", blurb: "Description",
166 NULL,
167 flags: G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
168 g_object_class_install_property (oclass: object_class, property_id: PROP_DESCRIPTION, pspec);
169
170 pspec = g_param_spec_string (name: "context", nick: "Context", blurb: "Context",
171 NULL,
172 flags: G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
173 g_object_class_install_property (oclass: object_class, property_id: PROP_CONTEXT, pspec);
174}
175
176IbIcon *
177ib_icon_new (const char *regular_name,
178 const char *symbolic_name,
179 const char *description,
180 const char *context)
181{
182 return g_object_new (IB_TYPE_ICON,
183 first_property_name: "regular-name", regular_name,
184 "symbolic-name", symbolic_name,
185 "description", description,
186 "context", context,
187 NULL);
188}
189
190const char *
191ib_icon_get_name (IbIcon *icon)
192{
193 if (icon->use_symbolic)
194 return icon->symbolic_name;
195 else
196 return icon->regular_name;
197}
198
199const char *
200ib_icon_get_regular_name (IbIcon *icon)
201{
202 return icon->regular_name;
203}
204
205const char *
206ib_icon_get_symbolic_name (IbIcon *icon)
207{
208 return icon->symbolic_name;
209}
210
211gboolean
212ib_icon_get_use_symbolic (IbIcon *icon)
213{
214 return icon->use_symbolic;
215}
216
217const char *
218ib_icon_get_description (IbIcon *icon)
219{
220 return icon->description;
221}
222
223const char *
224ib_icon_get_context (IbIcon *icon)
225{
226 return icon->context;
227}
228
229

source code of gtk/demos/icon-browser/iconbrowsericon.c