ali@9: /* ali@9: * Copyright (C) 2010 J. Ali Harlow ali@9: * ali@9: * This program is free software; you can redistribute it and/or modify ali@9: * it under the terms of the GNU General Public License as published by ali@9: * the Free Software Foundation; either version 2 of the License, or ali@9: * (at your option) any later version. ali@9: * ali@9: * This program is distributed in the hope that it will be useful, ali@9: * but WITHOUT ANY WARRANTY; without even the implied warranty of ali@9: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ali@9: * GNU General Public License for more details. ali@9: * ali@9: * You should have received a copy of the GNU General Public License along ali@9: * with this program; if not, write to the Free Software Foundation, Inc., ali@9: * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ali@9: */ ali@9: ali@9: #include "config.h" ali@9: #include ali@9: #include ali@9: #include ali@9: #include ali@9: #include "plover-gtk/package.h" ali@9: ali@9: G_DEFINE_TYPE(PloverPackage,plover_package,G_TYPE_OBJECT); ali@9: ali@9: typedef struct _PloverPackagePrivate { ali@9: struct razor_set *set; ali@9: struct razor_package *pkg; ali@9: PloverPackageFileStore *file_store; ali@9: } PloverPackagePrivate; ali@9: ali@9: #define PLOVER_PACKAGE_GET_PRIVATE(obj)\ ali@9: G_TYPE_INSTANCE_GET_PRIVATE(obj,\ ali@9: PLOVER_TYPE_PACKAGE,PloverPackagePrivate) ali@9: ali@9: enum { ali@9: CHANGED=0, ali@9: N_SIGNALS ali@9: }; ali@9: ali@9: static guint signals[N_SIGNALS]; ali@9: ali@9: static void plover_package_dispose(GObject *obj) ali@9: { ali@9: PloverPackagePrivate *priv=PLOVER_PACKAGE_GET_PRIVATE(obj); ali@9: if (priv->file_store) ali@9: { ali@9: g_object_unref(priv->file_store); ali@9: priv->file_store=NULL; ali@9: } ali@9: if (G_OBJECT_CLASS(plover_package_parent_class)->dispose) ali@9: G_OBJECT_CLASS(plover_package_parent_class)->dispose(obj); ali@9: } ali@9: ali@9: static void plover_package_class_init(PloverPackageClass *klass) ali@9: { ali@9: GObjectClass *oclass=G_OBJECT_CLASS(klass); ali@9: oclass->dispose=plover_package_dispose; ali@9: g_type_class_add_private(klass,sizeof(PloverPackagePrivate)); ali@9: signals[CHANGED]=g_signal_newv("changed", ali@9: G_TYPE_FROM_CLASS(klass),G_SIGNAL_RUN_LAST,NULL,NULL,NULL, ali@9: g_cclosure_marshal_VOID__VOID,G_TYPE_NONE,0,NULL); ali@9: } ali@9: ali@9: static void plover_package_init(PloverPackage *package) ali@9: { ali@9: } ali@9: ali@9: PloverPackage *plover_package_new(struct razor_set *set, ali@9: struct razor_package *pkg) ali@9: { ali@9: PloverPackage *package; ali@9: PloverPackagePrivate *priv; ali@9: package=g_object_new(PLOVER_TYPE_PACKAGE,NULL); ali@9: priv=PLOVER_PACKAGE_GET_PRIVATE(package); ali@9: priv->set=set; ali@9: priv->pkg=pkg; ali@9: return package; ali@9: } ali@9: ali@9: const char *plover_package_get_name(PloverPackage *package) ali@9: { ali@9: PloverPackagePrivate *priv; ali@9: const char *name; ali@9: g_return_val_if_fail(PLOVER_IS_PACKAGE(package),NULL); ali@9: priv=PLOVER_PACKAGE_GET_PRIVATE(package); ali@9: razor_package_get_details(priv->set,priv->pkg,RAZOR_DETAIL_NAME,&name, ali@9: RAZOR_DETAIL_LAST); ali@9: return name; ali@9: } ali@9: ali@9: const char *plover_package_get_summary(PloverPackage *package) ali@9: { ali@9: PloverPackagePrivate *priv; ali@9: const char *summary; ali@9: g_return_val_if_fail(PLOVER_IS_PACKAGE(package),NULL); ali@9: priv=PLOVER_PACKAGE_GET_PRIVATE(package); ali@9: razor_package_get_details(priv->set,priv->pkg,RAZOR_DETAIL_SUMMARY,&summary, ali@9: RAZOR_DETAIL_LAST); ali@9: return summary; ali@9: } ali@9: ali@9: const char *plover_package_get_version(PloverPackage *package) ali@9: { ali@9: PloverPackagePrivate *priv; ali@9: const char *version; ali@9: g_return_val_if_fail(PLOVER_IS_PACKAGE(package),NULL); ali@9: priv=PLOVER_PACKAGE_GET_PRIVATE(package); ali@9: razor_package_get_details(priv->set,priv->pkg,RAZOR_DETAIL_VERSION,&version, ali@9: RAZOR_DETAIL_LAST); ali@9: return version; ali@9: } ali@9: ali@9: const char *plover_package_get_license(PloverPackage *package) ali@9: { ali@9: PloverPackagePrivate *priv; ali@9: const char *license; ali@9: g_return_val_if_fail(PLOVER_IS_PACKAGE(package),NULL); ali@9: priv=PLOVER_PACKAGE_GET_PRIVATE(package); ali@9: razor_package_get_details(priv->set,priv->pkg,RAZOR_DETAIL_LICENSE,&license, ali@9: RAZOR_DETAIL_LAST); ali@9: return license; ali@9: } ali@9: ali@9: const char *plover_package_get_arch(PloverPackage *package) ali@9: { ali@9: PloverPackagePrivate *priv; ali@9: const char *arch; ali@9: g_return_val_if_fail(PLOVER_IS_PACKAGE(package),NULL); ali@9: priv=PLOVER_PACKAGE_GET_PRIVATE(package); ali@9: razor_package_get_details(priv->set,priv->pkg,RAZOR_DETAIL_ARCH,&arch, ali@9: RAZOR_DETAIL_LAST); ali@9: return arch; ali@9: } ali@9: ali@9: const char *plover_package_get_description(PloverPackage *package) ali@9: { ali@9: PloverPackagePrivate *priv; ali@9: const char *description; ali@9: g_return_val_if_fail(PLOVER_IS_PACKAGE(package),NULL); ali@9: priv=PLOVER_PACKAGE_GET_PRIVATE(package); ali@9: razor_package_get_details(priv->set,priv->pkg,RAZOR_DETAIL_DESCRIPTION, ali@9: &description,RAZOR_DETAIL_LAST); ali@9: return description; ali@9: } ali@9: ali@9: const char *plover_package_get_URL(PloverPackage *package) ali@9: { ali@9: PloverPackagePrivate *priv; ali@9: const char *URL; ali@9: g_return_val_if_fail(PLOVER_IS_PACKAGE(package),NULL); ali@9: priv=PLOVER_PACKAGE_GET_PRIVATE(package); ali@9: razor_package_get_details(priv->set,priv->pkg,RAZOR_DETAIL_URL,&URL, ali@9: RAZOR_DETAIL_LAST); ali@9: return URL; ali@9: } ali@9: ali@9: GdkPixbuf *plover_package_get_icon(PloverPackage *package) ali@9: { ali@9: g_return_val_if_fail(PLOVER_IS_PACKAGE(package),NULL); ali@9: return NULL; ali@9: } ali@9: ali@9: PloverPackageFileStore *plover_package_get_file_store(PloverPackage *package) ali@9: { ali@9: PloverPackagePrivate *priv; ali@9: struct razor_file_iterator *iter; ali@9: g_return_val_if_fail(PLOVER_IS_PACKAGE(package),NULL); ali@9: priv=PLOVER_PACKAGE_GET_PRIVATE(package); ali@9: if (!priv->file_store) ali@9: { ali@9: iter=razor_file_iterator_create(priv->set,priv->pkg,0); ali@9: priv->file_store=plover_package_file_store_new(iter); ali@9: razor_file_iterator_destroy(iter); ali@9: } ali@9: return priv->file_store; ali@9: }