const gchar * ide_doap_get_category (IdeDoap *self) { g_return_val_if_fail (IDE_IS_DOAP (self), NULL); return self->category; }
const gchar * ide_doap_get_shortdesc (IdeDoap *self) { g_return_val_if_fail (IDE_IS_DOAP (self), NULL); return self->shortdesc; }
const gchar * ide_doap_get_name (IdeDoap *self) { g_return_val_if_fail (IDE_IS_DOAP (self), NULL); return self->name; }
const gchar * ide_doap_get_description (IdeDoap *self) { g_return_val_if_fail (IDE_IS_DOAP (self), NULL); return self->description; }
const gchar * ide_doap_get_download_page (IdeDoap *self) { g_return_val_if_fail (IDE_IS_DOAP (self), NULL); return self->download_page; }
/** * ide_doap_get_maintainers: * * * * Returns: (transfer none) (element-type IdeDoapPerson*): A #GList of #IdeDoapPerson. */ GList * ide_doap_get_maintainers (IdeDoap *self) { g_return_val_if_fail (IDE_IS_DOAP (self), NULL); return self->maintainers; }
const gchar * ide_doap_get_bug_database (IdeDoap *self) { g_return_val_if_fail (IDE_IS_DOAP (self), NULL); return self->bug_database; }
void ide_project_info_set_doap (IdeProjectInfo *self, IdeDoap *doap) { g_return_if_fail (IDE_IS_PROJECT_INFO (self)); g_return_if_fail (!doap || IDE_IS_DOAP (doap)); if (g_set_object (&self->doap, doap)) g_object_notify_by_pspec (G_OBJECT (self), gParamSpecs [PROP_DOAP]); }
static void ide_doap_set_shortdesc (IdeDoap *self, const gchar *shortdesc) { g_return_if_fail (IDE_IS_DOAP (self)); if (g_strcmp0 (self->shortdesc, shortdesc) != 0) { g_free (self->shortdesc); self->shortdesc = g_strdelimit (g_strdup (shortdesc), "\n", ' '); g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_SHORTDESC]); } }
static void ide_doap_set_name (IdeDoap *self, const gchar *name) { g_return_if_fail (IDE_IS_DOAP (self)); if (g_strcmp0 (self->name, name) != 0) { g_free (self->name); self->name = g_strdup (name); g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_NAME]); } }
static void ide_doap_set_homepage (IdeDoap *self, const gchar *homepage) { g_return_if_fail (IDE_IS_DOAP (self)); if (g_strcmp0 (self->homepage, homepage) != 0) { g_free (self->homepage); self->homepage = g_strdup (homepage); g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_HOMEPAGE]); } }
static void ide_doap_set_category (IdeDoap *self, const gchar *category) { g_return_if_fail (IDE_IS_DOAP (self)); if (!ide_str_equal0 (self->category, category)) { g_free (self->category); self->category = g_strdup (category); g_object_notify_by_pspec (G_OBJECT (self), gParamSpecs [PROP_CATEGORY]); } }
static void ide_doap_set_description (IdeDoap *self, const gchar *description) { g_return_if_fail (IDE_IS_DOAP (self)); if (g_strcmp0 (self->description, description) != 0) { g_free (self->description); self->description = g_strdup (description); g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_DESCRIPTION]); } }
static void ide_doap_set_category (IdeDoap *self, const gchar *category) { g_return_if_fail (IDE_IS_DOAP (self)); if (g_strcmp0 (self->category, category) != 0) { g_free (self->category); self->category = g_strdup (category); g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_CATEGORY]); } }
static void ide_doap_set_download_page (IdeDoap *self, const gchar *download_page) { g_return_if_fail (IDE_IS_DOAP (self)); if (!ide_str_equal0 (self->download_page, download_page)) { g_free (self->download_page); self->download_page = g_strdup (download_page); g_object_notify_by_pspec (G_OBJECT (self), gParamSpecs [PROP_DOWNLOAD_PAGE]); } }
static void ide_doap_set_name (IdeDoap *self, const gchar *name) { g_return_if_fail (IDE_IS_DOAP (self)); if (!ide_str_equal0 (self->name, name)) { g_free (self->name); self->name = g_strdup (name); g_object_notify_by_pspec (G_OBJECT (self), gParamSpecs [PROP_NAME]); } }
static void ide_doap_set_homepage (IdeDoap *self, const gchar *homepage) { g_return_if_fail (IDE_IS_DOAP (self)); if (!ide_str_equal0 (self->homepage, homepage)) { g_free (self->homepage); self->homepage = g_strdup (homepage); g_object_notify_by_pspec (G_OBJECT (self), gParamSpecs [PROP_HOMEPAGE]); } }
static void ide_doap_set_bug_database (IdeDoap *self, const gchar *bug_database) { g_return_if_fail (IDE_IS_DOAP (self)); if (g_strcmp0 (self->bug_database, bug_database) != 0) { g_free (self->bug_database); self->bug_database = g_strdup (bug_database); g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_BUG_DATABASE]); } }
static void ide_doap_set_description (IdeDoap *self, const gchar *description) { g_return_if_fail (IDE_IS_DOAP (self)); if (!ide_str_equal0 (self->description, description)) { g_free (self->description); self->description = g_strdup (description); g_object_notify_by_pspec (G_OBJECT (self), gParamSpecs [PROP_DESCRIPTION]); } }
static void ide_doap_set_download_page (IdeDoap *self, const gchar *download_page) { g_return_if_fail (IDE_IS_DOAP (self)); if (g_strcmp0 (self->download_page, download_page) != 0) { g_free (self->download_page); self->download_page = g_strdup (download_page); g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_DOWNLOAD_PAGE]); } }
static void ide_doap_set_bug_database (IdeDoap *self, const gchar *bug_database) { g_return_if_fail (IDE_IS_DOAP (self)); if (!ide_str_equal0 (self->bug_database, bug_database)) { g_free (self->bug_database); self->bug_database = g_strdup (bug_database); g_object_notify_by_pspec (G_OBJECT (self), gParamSpecs [PROP_BUG_DATABASE]); } }
static void ide_doap_set_languages (IdeDoap *self, gchar **languages) { gsize i; g_return_if_fail (IDE_IS_DOAP (self)); if ((self->languages != NULL) && (self->languages->len > 0)) g_ptr_array_remove_range (self->languages, 0, self->languages->len); g_object_freeze_notify (G_OBJECT (self)); for (i = 0; languages [i]; i++) ide_doap_add_language (self, languages [i]); g_object_thaw_notify (G_OBJECT (self)); }
gboolean ide_doap_load_from_data (IdeDoap *self, const gchar *data, gsize length, GError **error) { g_autoptr(XmlReader) reader = NULL; g_return_val_if_fail (IDE_IS_DOAP (self), FALSE); g_return_val_if_fail (data != NULL, FALSE); reader = xml_reader_new (); if (!xml_reader_load_from_data (reader, (const gchar *)data, length, NULL, NULL)) return FALSE; return load_doap (self, reader, error); }
gboolean ide_doap_load_from_file (IdeDoap *self, GFile *file, GCancellable *cancellable, GError **error) { g_autoptr(XmlReader) reader = NULL; g_return_val_if_fail (IDE_IS_DOAP (self), FALSE); g_return_val_if_fail (G_IS_FILE (file), FALSE); g_return_val_if_fail (!cancellable || G_IS_CANCELLABLE (cancellable), FALSE); reader = xml_reader_new (); if (!xml_reader_load_from_file (reader, file, cancellable, error)) return FALSE; return load_doap (self, reader, error); }
static gboolean ide_doap_parse_maintainer (IdeDoap *self, XmlReader *reader) { g_assert (IDE_IS_DOAP (self)); g_assert (XML_IS_READER (reader)); if (!xml_reader_read (reader)) return FALSE; do { if (xml_reader_is_a_local (reader, "Person") && xml_reader_read (reader)) { g_autoptr(IdeDoapPerson) person = ide_doap_person_new (); do { if (xml_reader_is_a_local (reader, "name")) { ide_doap_person_set_name (person, xml_reader_read_string (reader)); } else if (xml_reader_is_a_local (reader, "mbox")) { gchar *str; str = xml_reader_get_attribute (reader, "rdf:resource"); if (str != NULL && str[0] != '\0' && g_str_has_prefix (str, "mailto:")) ide_doap_person_set_email (person, str + strlen ("mailto:")); g_free (str); } } while (xml_reader_read_to_next (reader)); if (ide_doap_person_get_name (person) || ide_doap_person_get_email (person)) self->maintainers = g_list_append (self->maintainers, g_object_ref (person)); } } while (xml_reader_read_to_next (reader)); return TRUE; }
static void ide_doap_add_language (IdeDoap *self, const gchar *language) { g_return_if_fail (IDE_IS_DOAP (self)); g_return_if_fail (language != NULL); if (self->languages == NULL) { self->languages = g_ptr_array_new_with_free_func (g_free); g_ptr_array_add (self->languages, NULL); } g_assert (self->languages->len > 0); g_ptr_array_index (self->languages, self->languages->len - 1) = g_strdup (language); g_ptr_array_add (self->languages, NULL); g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_LANGUAGES]); }
gboolean ide_doap_load_from_file (IdeDoap *self, GFile *file, GCancellable *cancellable, GError **error) { g_autoptr(XmlReader) reader = NULL; g_return_val_if_fail (IDE_IS_DOAP (self), FALSE); g_return_val_if_fail (G_IS_FILE (file), FALSE); g_return_val_if_fail (!cancellable || G_IS_CANCELLABLE (cancellable), FALSE); reader = xml_reader_new (); if (!xml_reader_load_from_file (reader, file, cancellable, error)) return FALSE; if (!xml_reader_read_start_element (reader, "Project")) { g_set_error (error, IDE_DOAP_ERROR, IDE_DOAP_ERROR_INVALID_FORMAT, "Project element is missing from doap."); return FALSE; } g_object_freeze_notify (G_OBJECT (self)); xml_reader_read (reader); do { const gchar *element_name; element_name = xml_reader_get_local_name (reader); if (ide_str_equal0 (element_name, "name") || ide_str_equal0 (element_name, "shortdesc") || ide_str_equal0 (element_name, "description")) { gchar *str; str = xml_reader_read_string (reader); if (str != NULL) g_object_set (self, element_name, g_strstrip (str), NULL); g_free (str); } else if (ide_str_equal0 (element_name, "category") || ide_str_equal0 (element_name, "homepage") || ide_str_equal0 (element_name, "download-page") || ide_str_equal0 (element_name, "bug-database")) { gchar *str; str = xml_reader_get_attribute (reader, "rdf:resource"); if (str != NULL) g_object_set (self, element_name, g_strstrip (str), NULL); g_free (str); } else if (ide_str_equal0 (element_name, "programming-language")) { gchar *str; str = xml_reader_read_string (reader); if (!ide_str_empty0 (str)) ide_doap_add_language (self, g_strstrip (str)); g_free (str); } else if (ide_str_equal0 (element_name, "maintainer")) { if (!ide_doap_parse_maintainer (self, reader)) break; } } while (xml_reader_read_to_next (reader)); g_object_thaw_notify (G_OBJECT (self)); return TRUE; }