1 | #include "iconbrowsericon.h" |
2 | |
3 | struct _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 | |
15 | struct _IbIconClass |
16 | { |
17 | GObjectClass parent_class; |
18 | }; |
19 | |
20 | enum { |
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 | |
30 | G_DEFINE_TYPE (IbIcon, ib_icon, G_TYPE_OBJECT) |
31 | |
32 | static void |
33 | ib_icon_init (IbIcon *icon) |
34 | { |
35 | } |
36 | |
37 | static void |
38 | ib_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 | |
50 | static void |
51 | ib_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 | |
95 | static void |
96 | ib_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 | |
135 | static void |
136 | ib_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 | |
176 | IbIcon * |
177 | ib_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 | |
190 | const char * |
191 | ib_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 | |
199 | const char * |
200 | ib_icon_get_regular_name (IbIcon *icon) |
201 | { |
202 | return icon->regular_name; |
203 | } |
204 | |
205 | const char * |
206 | ib_icon_get_symbolic_name (IbIcon *icon) |
207 | { |
208 | return icon->symbolic_name; |
209 | } |
210 | |
211 | gboolean |
212 | ib_icon_get_use_symbolic (IbIcon *icon) |
213 | { |
214 | return icon->use_symbolic; |
215 | } |
216 | |
217 | const char * |
218 | ib_icon_get_description (IbIcon *icon) |
219 | { |
220 | return icon->description; |
221 | } |
222 | |
223 | const char * |
224 | ib_icon_get_context (IbIcon *icon) |
225 | { |
226 | return icon->context; |
227 | } |
228 | |
229 | |