1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/plover-gtk/package.c Sat Feb 20 12:11:02 2010 +0000
1.3 @@ -0,0 +1,179 @@
1.4 +/*
1.5 + * Copyright (C) 2010 J. Ali Harlow <ali@juiblex.co.uk>
1.6 + *
1.7 + * This program is free software; you can redistribute it and/or modify
1.8 + * it under the terms of the GNU General Public License as published by
1.9 + * the Free Software Foundation; either version 2 of the License, or
1.10 + * (at your option) any later version.
1.11 + *
1.12 + * This program is distributed in the hope that it will be useful,
1.13 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
1.14 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1.15 + * GNU General Public License for more details.
1.16 + *
1.17 + * You should have received a copy of the GNU General Public License along
1.18 + * with this program; if not, write to the Free Software Foundation, Inc.,
1.19 + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
1.20 + */
1.21 +
1.22 +#include "config.h"
1.23 +#include <stdlib.h>
1.24 +#include <string.h>
1.25 +#include <glib-object.h>
1.26 +#include <razor.h>
1.27 +#include "plover-gtk/package.h"
1.28 +
1.29 +G_DEFINE_TYPE(PloverPackage,plover_package,G_TYPE_OBJECT);
1.30 +
1.31 +typedef struct _PloverPackagePrivate {
1.32 + struct razor_set *set;
1.33 + struct razor_package *pkg;
1.34 + PloverPackageFileStore *file_store;
1.35 +} PloverPackagePrivate;
1.36 +
1.37 +#define PLOVER_PACKAGE_GET_PRIVATE(obj)\
1.38 + G_TYPE_INSTANCE_GET_PRIVATE(obj,\
1.39 + PLOVER_TYPE_PACKAGE,PloverPackagePrivate)
1.40 +
1.41 +enum {
1.42 + CHANGED=0,
1.43 + N_SIGNALS
1.44 +};
1.45 +
1.46 +static guint signals[N_SIGNALS];
1.47 +
1.48 +static void plover_package_dispose(GObject *obj)
1.49 +{
1.50 + PloverPackagePrivate *priv=PLOVER_PACKAGE_GET_PRIVATE(obj);
1.51 + if (priv->file_store)
1.52 + {
1.53 + g_object_unref(priv->file_store);
1.54 + priv->file_store=NULL;
1.55 + }
1.56 + if (G_OBJECT_CLASS(plover_package_parent_class)->dispose)
1.57 + G_OBJECT_CLASS(plover_package_parent_class)->dispose(obj);
1.58 +}
1.59 +
1.60 +static void plover_package_class_init(PloverPackageClass *klass)
1.61 +{
1.62 + GObjectClass *oclass=G_OBJECT_CLASS(klass);
1.63 + oclass->dispose=plover_package_dispose;
1.64 + g_type_class_add_private(klass,sizeof(PloverPackagePrivate));
1.65 + signals[CHANGED]=g_signal_newv("changed",
1.66 + G_TYPE_FROM_CLASS(klass),G_SIGNAL_RUN_LAST,NULL,NULL,NULL,
1.67 + g_cclosure_marshal_VOID__VOID,G_TYPE_NONE,0,NULL);
1.68 +}
1.69 +
1.70 +static void plover_package_init(PloverPackage *package)
1.71 +{
1.72 +}
1.73 +
1.74 +PloverPackage *plover_package_new(struct razor_set *set,
1.75 + struct razor_package *pkg)
1.76 +{
1.77 + PloverPackage *package;
1.78 + PloverPackagePrivate *priv;
1.79 + package=g_object_new(PLOVER_TYPE_PACKAGE,NULL);
1.80 + priv=PLOVER_PACKAGE_GET_PRIVATE(package);
1.81 + priv->set=set;
1.82 + priv->pkg=pkg;
1.83 + return package;
1.84 +}
1.85 +
1.86 +const char *plover_package_get_name(PloverPackage *package)
1.87 +{
1.88 + PloverPackagePrivate *priv;
1.89 + const char *name;
1.90 + g_return_val_if_fail(PLOVER_IS_PACKAGE(package),NULL);
1.91 + priv=PLOVER_PACKAGE_GET_PRIVATE(package);
1.92 + razor_package_get_details(priv->set,priv->pkg,RAZOR_DETAIL_NAME,&name,
1.93 + RAZOR_DETAIL_LAST);
1.94 + return name;
1.95 +}
1.96 +
1.97 +const char *plover_package_get_summary(PloverPackage *package)
1.98 +{
1.99 + PloverPackagePrivate *priv;
1.100 + const char *summary;
1.101 + g_return_val_if_fail(PLOVER_IS_PACKAGE(package),NULL);
1.102 + priv=PLOVER_PACKAGE_GET_PRIVATE(package);
1.103 + razor_package_get_details(priv->set,priv->pkg,RAZOR_DETAIL_SUMMARY,&summary,
1.104 + RAZOR_DETAIL_LAST);
1.105 + return summary;
1.106 +}
1.107 +
1.108 +const char *plover_package_get_version(PloverPackage *package)
1.109 +{
1.110 + PloverPackagePrivate *priv;
1.111 + const char *version;
1.112 + g_return_val_if_fail(PLOVER_IS_PACKAGE(package),NULL);
1.113 + priv=PLOVER_PACKAGE_GET_PRIVATE(package);
1.114 + razor_package_get_details(priv->set,priv->pkg,RAZOR_DETAIL_VERSION,&version,
1.115 + RAZOR_DETAIL_LAST);
1.116 + return version;
1.117 +}
1.118 +
1.119 +const char *plover_package_get_license(PloverPackage *package)
1.120 +{
1.121 + PloverPackagePrivate *priv;
1.122 + const char *license;
1.123 + g_return_val_if_fail(PLOVER_IS_PACKAGE(package),NULL);
1.124 + priv=PLOVER_PACKAGE_GET_PRIVATE(package);
1.125 + razor_package_get_details(priv->set,priv->pkg,RAZOR_DETAIL_LICENSE,&license,
1.126 + RAZOR_DETAIL_LAST);
1.127 + return license;
1.128 +}
1.129 +
1.130 +const char *plover_package_get_arch(PloverPackage *package)
1.131 +{
1.132 + PloverPackagePrivate *priv;
1.133 + const char *arch;
1.134 + g_return_val_if_fail(PLOVER_IS_PACKAGE(package),NULL);
1.135 + priv=PLOVER_PACKAGE_GET_PRIVATE(package);
1.136 + razor_package_get_details(priv->set,priv->pkg,RAZOR_DETAIL_ARCH,&arch,
1.137 + RAZOR_DETAIL_LAST);
1.138 + return arch;
1.139 +}
1.140 +
1.141 +const char *plover_package_get_description(PloverPackage *package)
1.142 +{
1.143 + PloverPackagePrivate *priv;
1.144 + const char *description;
1.145 + g_return_val_if_fail(PLOVER_IS_PACKAGE(package),NULL);
1.146 + priv=PLOVER_PACKAGE_GET_PRIVATE(package);
1.147 + razor_package_get_details(priv->set,priv->pkg,RAZOR_DETAIL_DESCRIPTION,
1.148 + &description,RAZOR_DETAIL_LAST);
1.149 + return description;
1.150 +}
1.151 +
1.152 +const char *plover_package_get_URL(PloverPackage *package)
1.153 +{
1.154 + PloverPackagePrivate *priv;
1.155 + const char *URL;
1.156 + g_return_val_if_fail(PLOVER_IS_PACKAGE(package),NULL);
1.157 + priv=PLOVER_PACKAGE_GET_PRIVATE(package);
1.158 + razor_package_get_details(priv->set,priv->pkg,RAZOR_DETAIL_URL,&URL,
1.159 + RAZOR_DETAIL_LAST);
1.160 + return URL;
1.161 +}
1.162 +
1.163 +GdkPixbuf *plover_package_get_icon(PloverPackage *package)
1.164 +{
1.165 + g_return_val_if_fail(PLOVER_IS_PACKAGE(package),NULL);
1.166 + return NULL;
1.167 +}
1.168 +
1.169 +PloverPackageFileStore *plover_package_get_file_store(PloverPackage *package)
1.170 +{
1.171 + PloverPackagePrivate *priv;
1.172 + struct razor_file_iterator *iter;
1.173 + g_return_val_if_fail(PLOVER_IS_PACKAGE(package),NULL);
1.174 + priv=PLOVER_PACKAGE_GET_PRIVATE(package);
1.175 + if (!priv->file_store)
1.176 + {
1.177 + iter=razor_file_iterator_create(priv->set,priv->pkg,0);
1.178 + priv->file_store=plover_package_file_store_new(iter);
1.179 + razor_file_iterator_destroy(iter);
1.180 + }
1.181 + return priv->file_store;
1.182 +}