symbol-db: Get rid of useless queued-multi
[anjuta.git] / libanjuta / gbf-project.c
blobb6f74922081bace6a75b1ec045c451b553312885
1 /* gbf-project.c
3 * Copyright (C) 2002 Jeroen Zwartepoorte
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
10 * This program 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
13 * GNU Library General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20 #ifdef HAVE_CONFIG_H
21 #include <config.h>
22 #endif
24 #include "gbf-project.h"
26 G_DEFINE_TYPE (GbfProject, gbf_project, G_TYPE_OBJECT);
28 void
29 gbf_project_load (GbfProject *project,
30 const gchar *path,
31 GError **error)
33 g_return_if_fail (project != NULL);
34 g_return_if_fail (GBF_IS_PROJECT (project));
35 g_return_if_fail (path != NULL);
36 g_return_if_fail (error == NULL || *error == NULL);
38 GBF_PROJECT_GET_CLASS (project)->load (project, path, error);
41 gboolean
42 gbf_project_probe (GbfProject *project,
43 const gchar *path,
44 GError **error)
46 g_return_val_if_fail (project != NULL, FALSE);
47 g_return_val_if_fail (GBF_IS_PROJECT (project), FALSE);
48 g_return_val_if_fail (path != NULL, FALSE);
49 g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
51 return GBF_PROJECT_GET_CLASS (project)->probe (project, path, error);
54 void
55 gbf_project_refresh (GbfProject *project,
56 GError **error)
58 g_return_if_fail (project != NULL);
59 g_return_if_fail (GBF_IS_PROJECT (project));
60 g_return_if_fail (error == NULL || *error == NULL);
62 GBF_PROJECT_GET_CLASS (project)->refresh (project, error);
65 GbfProjectCapabilities
66 gbf_project_get_capabilities (GbfProject *project,
67 GError **error)
69 g_return_val_if_fail (project != NULL, GBF_PROJECT_CAN_ADD_NONE);
70 g_return_val_if_fail (GBF_IS_PROJECT (project), GBF_PROJECT_CAN_ADD_NONE);
71 g_return_val_if_fail (error == NULL || *error == NULL, GBF_PROJECT_CAN_ADD_NONE);
73 return GBF_PROJECT_GET_CLASS (project)->get_capabilities (project, error);
76 /* Groups. */
77 gchar *
78 gbf_project_add_group (GbfProject *project,
79 const gchar *parent_id,
80 const gchar *name,
81 GError **error)
83 g_return_val_if_fail (project != NULL, NULL);
84 g_return_val_if_fail (GBF_IS_PROJECT (project), NULL);
85 g_return_val_if_fail (parent_id != NULL, NULL);
86 g_return_val_if_fail (name != NULL, NULL);
87 g_return_val_if_fail (error == NULL || *error == NULL, NULL);
89 return GBF_PROJECT_GET_CLASS (project)->add_group (project,
90 parent_id,
91 name,
92 error);
95 void
96 gbf_project_remove_group (GbfProject *project,
97 const gchar *id,
98 GError **error)
100 g_return_if_fail (project != NULL);
101 g_return_if_fail (GBF_IS_PROJECT (project));
102 g_return_if_fail (id != NULL);
103 g_return_if_fail (error == NULL || *error == NULL);
105 GBF_PROJECT_GET_CLASS (project)->remove_group (project, id, error);
108 GbfProjectGroup *
109 gbf_project_get_group (GbfProject *project,
110 const gchar *id,
111 GError **error)
113 g_return_val_if_fail (project != NULL, NULL);
114 g_return_val_if_fail (GBF_IS_PROJECT (project), NULL);
115 g_return_val_if_fail (id != NULL, NULL);
116 g_return_val_if_fail (error == NULL || *error == NULL, NULL);
118 return GBF_PROJECT_GET_CLASS (project)->get_group (project, id, error);
121 GtkWidget *
122 gbf_project_configure_group (GbfProject *project,
123 const gchar *id,
124 GError **error)
126 g_return_val_if_fail (project != NULL, NULL);
127 g_return_val_if_fail (GBF_IS_PROJECT (project), NULL);
128 g_return_val_if_fail (id != NULL, NULL);
129 g_return_val_if_fail (error == NULL || *error == NULL, NULL);
131 return GBF_PROJECT_GET_CLASS (project)->configure_group (project,
132 id,
133 error);
136 GtkWidget *
137 gbf_project_configure_new_group (GbfProject *project,
138 GError **error)
140 g_return_val_if_fail (project != NULL, NULL);
141 g_return_val_if_fail (GBF_IS_PROJECT (project), NULL);
142 g_return_val_if_fail (error == NULL || *error == NULL, NULL);
144 return GBF_PROJECT_GET_CLASS (project)->configure_new_group (project,
145 error);
148 /* Targets. */
149 gchar *
150 gbf_project_add_target (GbfProject *project,
151 const gchar *group_id,
152 const gchar *name,
153 const gchar *type,
154 GError **error)
156 g_return_val_if_fail (project != NULL, NULL);
157 g_return_val_if_fail (GBF_IS_PROJECT (project), NULL);
158 g_return_val_if_fail (group_id != NULL, NULL);
159 g_return_val_if_fail (name != NULL, NULL);
160 g_return_val_if_fail (type != NULL, NULL);
161 g_return_val_if_fail (error == NULL || *error == NULL, NULL);
163 return GBF_PROJECT_GET_CLASS (project)->add_target (project,
164 group_id,
165 name,
166 type,
167 error);
170 void
171 gbf_project_remove_target (GbfProject *project,
172 const gchar *id,
173 GError **error)
175 g_return_if_fail (project != NULL);
176 g_return_if_fail (GBF_IS_PROJECT (project));
177 g_return_if_fail (id != NULL);
178 g_return_if_fail (error == NULL || *error == NULL);
180 GBF_PROJECT_GET_CLASS (project)->remove_target (project, id, error);
183 GbfProjectTarget *
184 gbf_project_get_target (GbfProject *project,
185 const gchar *id,
186 GError **error)
188 g_return_val_if_fail (project != NULL, NULL);
189 g_return_val_if_fail (GBF_IS_PROJECT (project), NULL);
190 g_return_val_if_fail (id != NULL, NULL);
191 g_return_val_if_fail (error == NULL || *error == NULL, NULL);
193 return GBF_PROJECT_GET_CLASS (project)->get_target (project,
194 id,
195 error);
198 GList *
199 gbf_project_get_all_targets (GbfProject *project,
200 GError **error)
202 g_return_val_if_fail (project != NULL, NULL);
203 g_return_val_if_fail (GBF_IS_PROJECT (project), NULL);
204 g_return_val_if_fail (error == NULL || *error == NULL, NULL);
206 return GBF_PROJECT_GET_CLASS (project)->get_all_targets (project,
207 error);
210 GList *
211 gbf_project_get_all_groups (GbfProject *project,
212 GError **error)
214 g_return_val_if_fail (project != NULL, NULL);
215 g_return_val_if_fail (GBF_IS_PROJECT (project), NULL);
216 g_return_val_if_fail (error == NULL || *error == NULL, NULL);
218 return GBF_PROJECT_GET_CLASS (project)->get_all_groups (project,
219 error);
222 GtkWidget *
223 gbf_project_configure_target (GbfProject *project,
224 const gchar *id,
225 GError **error)
227 g_return_val_if_fail (project != NULL, NULL);
228 g_return_val_if_fail (GBF_IS_PROJECT (project), NULL);
229 g_return_val_if_fail (id != NULL, NULL);
230 g_return_val_if_fail (error == NULL || *error == NULL, NULL);
232 return GBF_PROJECT_GET_CLASS (project)->configure_target (project,
233 id,
234 error);
236 GtkWidget *
237 gbf_project_configure_new_target (GbfProject *project,
238 GError **error)
240 g_return_val_if_fail (project != NULL, NULL);
241 g_return_val_if_fail (GBF_IS_PROJECT (project), NULL);
242 g_return_val_if_fail (error == NULL || *error == NULL, NULL);
244 return GBF_PROJECT_GET_CLASS (project)->configure_new_target (project,
245 error);
248 /* Sources. */
249 gchar *
250 gbf_project_add_source (GbfProject *project,
251 const gchar *target_id,
252 const gchar *uri,
253 GError **error)
255 g_return_val_if_fail (project != NULL, NULL);
256 g_return_val_if_fail (GBF_IS_PROJECT (project), NULL);
257 g_return_val_if_fail (target_id != NULL, NULL);
258 g_return_val_if_fail (uri != NULL, NULL);
259 g_return_val_if_fail (error == NULL || *error == NULL, NULL);
261 return GBF_PROJECT_GET_CLASS (project)->add_source (project,
262 target_id,
263 uri,
264 error);
267 void
268 gbf_project_remove_source (GbfProject *project,
269 const gchar *id,
270 GError **error)
272 g_return_if_fail (project != NULL);
273 g_return_if_fail (GBF_IS_PROJECT (project));
274 g_return_if_fail (id != NULL);
275 g_return_if_fail (error == NULL || *error == NULL);
277 GBF_PROJECT_GET_CLASS (project)->remove_source (project, id, error);
280 GbfProjectTargetSource *
281 gbf_project_get_source (GbfProject *project,
282 const gchar *id,
283 GError **error)
285 g_return_val_if_fail (project != NULL, NULL);
286 g_return_val_if_fail (GBF_IS_PROJECT (project), NULL);
287 g_return_val_if_fail (id != NULL, NULL);
288 g_return_val_if_fail (error == NULL || *error == NULL, NULL);
290 return GBF_PROJECT_GET_CLASS (project)->get_source (project,
291 id,
292 error);
295 GList *
296 gbf_project_get_all_sources (GbfProject *project,
297 GError **error)
299 g_return_val_if_fail (project != NULL, NULL);
300 g_return_val_if_fail (GBF_IS_PROJECT (project), NULL);
301 g_return_val_if_fail (error == NULL || *error == NULL, NULL);
303 return GBF_PROJECT_GET_CLASS (project)->get_all_sources (project,
304 error);
307 GtkWidget *
308 gbf_project_configure_source (GbfProject *project,
309 const gchar *id,
310 GError **error)
312 g_return_val_if_fail (project != NULL, NULL);
313 g_return_val_if_fail (GBF_IS_PROJECT (project), NULL);
314 g_return_val_if_fail (id != NULL, NULL);
315 g_return_val_if_fail (error == NULL || *error == NULL, NULL);
317 return GBF_PROJECT_GET_CLASS (project)->configure_source (project,
318 id,
319 error);
322 GtkWidget *
323 gbf_project_configure_new_source (GbfProject *project,
324 GError **error)
326 g_return_val_if_fail (project != NULL, NULL);
327 g_return_val_if_fail (GBF_IS_PROJECT (project), NULL);
328 g_return_val_if_fail (error == NULL || *error == NULL, NULL);
330 return GBF_PROJECT_GET_CLASS (project)->configure_new_source (project,
331 error);
334 /* Project */
336 GtkWidget *
337 gbf_project_configure (GbfProject *project, GError **error)
339 g_return_val_if_fail (project != NULL, NULL);
340 g_return_val_if_fail (GBF_IS_PROJECT (project), NULL);
341 g_return_val_if_fail (error == NULL || *error == NULL, NULL);
343 return GBF_PROJECT_GET_CLASS (project)->configure (project, error);
346 GList *
347 gbf_project_get_config_modules (GbfProject *project, GError **error)
349 g_return_val_if_fail (project != NULL, NULL);
350 g_return_val_if_fail (GBF_IS_PROJECT (project), NULL);
352 return GBF_PROJECT_GET_CLASS (project)->get_config_modules (project, error);
355 GList *
356 gbf_project_get_config_packages (GbfProject *project,
357 const gchar* module,
358 GError **error)
360 g_return_val_if_fail (project != NULL, NULL);
361 g_return_val_if_fail (module != NULL, NULL);
362 g_return_val_if_fail (GBF_IS_PROJECT (project), NULL);
364 return GBF_PROJECT_GET_CLASS (project)->get_config_packages (project, module,
365 error);
368 /* Types. */
369 const gchar *
370 gbf_project_name_for_type (GbfProject *project,
371 const gchar *type)
373 g_return_val_if_fail (project != NULL, NULL);
374 g_return_val_if_fail (GBF_IS_PROJECT (project), NULL);
375 g_return_val_if_fail (type != NULL, NULL);
377 return GBF_PROJECT_GET_CLASS (project)->name_for_type (project, type);
380 const gchar *
381 gbf_project_mimetype_for_type (GbfProject *project,
382 const gchar *type)
384 g_return_val_if_fail (project != NULL, NULL);
385 g_return_val_if_fail (GBF_IS_PROJECT (project), NULL);
386 g_return_val_if_fail (type != NULL, NULL);
388 return GBF_PROJECT_GET_CLASS (project)->mimetype_for_type (project, type);
391 gchar **
392 gbf_project_get_types (GbfProject *project)
394 g_return_val_if_fail (project != NULL, NULL);
395 g_return_val_if_fail (GBF_IS_PROJECT (project), NULL);
396 g_return_val_if_fail (
397 GBF_PROJECT_GET_CLASS (project)->get_types != NULL, NULL);
399 return GBF_PROJECT_GET_CLASS (project)->get_types (project);
402 static void
403 gbf_project_class_init (GbfProjectClass *klass)
405 g_signal_new ("project-updated",
406 G_TYPE_FROM_CLASS (klass),
407 G_SIGNAL_RUN_LAST,
408 G_STRUCT_OFFSET (GbfProjectClass, project_updated),
409 NULL, NULL,
410 g_cclosure_marshal_VOID__VOID,
411 G_TYPE_NONE, 0);
414 static void
415 gbf_project_init (GbfProject *project)
419 GQuark
420 gbf_project_error_quark (void)
422 static GQuark quark = 0;
424 if (quark == 0)
425 quark = g_quark_from_string ("gbf-project-quark");
427 return quark;
430 GbfProjectGroup *
431 gbf_project_group_copy (GbfProjectGroup *group)
433 GbfProjectGroup *new_group;
434 GList *l;
436 new_group = g_new0 (GbfProjectGroup, 1);
437 new_group->id = g_strdup (group->id);
438 new_group->parent_id = g_strdup (group->parent_id);
439 new_group->name = g_strdup (group->name);
441 for (l = group->groups; l; l = l->next)
442 new_group->groups = g_list_prepend (new_group->groups, g_strdup (l->data));
443 new_group->groups = g_list_reverse (new_group->groups);
445 for (l = group->targets; l; l = l->next)
446 new_group->targets = g_list_prepend (new_group->targets, g_strdup (l->data));
447 new_group->targets = g_list_reverse (new_group->targets);
449 return new_group;
452 void
453 gbf_project_group_free (GbfProjectGroup *group)
455 g_free (group->id);
456 g_free (group->parent_id);
457 g_free (group->name);
459 while (group->groups) {
460 g_free (group->groups->data);
461 group->groups = g_list_delete_link (group->groups, group->groups);
464 while (group->targets) {
465 g_free (group->targets->data);
466 group->targets = g_list_delete_link (group->targets, group->targets);
468 g_free (group);
471 GbfProjectTarget *
472 gbf_project_target_copy (GbfProjectTarget *target)
474 GbfProjectTarget *new_target;
475 GList *l;
477 new_target = g_new0 (GbfProjectTarget, 1);
478 new_target->id = g_strdup (target->id);
479 new_target->group_id = g_strdup (target->group_id);
480 new_target->name = g_strdup (target->name);
481 new_target->type = g_strdup (target->type);
483 for (l = target->sources; l; l = l->next)
484 new_target->sources = g_list_prepend (new_target->sources, g_strdup (l->data));
485 new_target->sources = g_list_reverse (new_target->sources);
487 return new_target;
490 void
491 gbf_project_target_free (GbfProjectTarget *target)
493 g_free (target->id);
494 g_free (target->group_id);
495 g_free (target->name);
496 g_free (target->type);
498 while (target->sources) {
499 g_free (target->sources->data);
500 target->sources = g_list_delete_link (target->sources, target->sources);
503 g_free (target);
506 GbfProjectTargetSource *
507 gbf_project_target_source_copy (GbfProjectTargetSource *source)
509 GbfProjectTargetSource *new_source;
511 new_source = g_new0 (GbfProjectTargetSource, 1);
512 new_source->id = g_strdup (source->id);
513 new_source->target_id = g_strdup (source->target_id);
514 new_source->source_uri = g_strdup (source->source_uri);
516 return new_source;
519 void
520 gbf_project_target_source_free (GbfProjectTargetSource *source)
522 g_free (source->id);
523 g_free (source->target_id);
524 g_free (source->source_uri);
525 g_free (source);
528 GType
529 gbf_project_group_get_type (void)
531 static GType our_type = 0;
533 if (our_type == 0)
534 our_type = g_boxed_type_register_static ("GbfProjectGroup",
535 (GBoxedCopyFunc) gbf_project_group_copy,
536 (GBoxedFreeFunc) gbf_project_group_free);
538 return our_type;
541 GType
542 gbf_project_target_get_type (void)
544 static GType our_type = 0;
546 if (our_type == 0)
547 our_type = g_boxed_type_register_static ("GbfProjectTarget",
548 (GBoxedCopyFunc) gbf_project_target_copy,
549 (GBoxedFreeFunc) gbf_project_target_free);
551 return our_type;
554 GType
555 gbf_project_target_source_get_type (void)
557 static GType our_type = 0;
559 if (our_type == 0)
560 our_type = g_boxed_type_register_static ("GbfProjectTargetSource",
561 (GBoxedCopyFunc) gbf_project_target_source_copy,
562 (GBoxedFreeFunc) gbf_project_target_source_free);
564 return our_type;