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