plover-gtk/package.c
author J. Ali Harlow <ali@juiblex.co.uk>
Fri Mar 23 20:29:50 2012 +0000 (2012-03-23)
changeset 22 5cbb66c24fc6
parent 9 8d3b1ddf789c
permissions -rw-r--r--
Fix confusing error message
ali@9
     1
/*
ali@9
     2
 * Copyright (C) 2010  J. Ali Harlow <ali@juiblex.co.uk>
ali@9
     3
 *
ali@9
     4
 * This program is free software; you can redistribute it and/or modify
ali@9
     5
 * it under the terms of the GNU General Public License as published by
ali@9
     6
 * the Free Software Foundation; either version 2 of the License, or
ali@9
     7
 * (at your option) any later version.
ali@9
     8
 *
ali@9
     9
 * This program is distributed in the hope that it will be useful,
ali@9
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
ali@9
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
ali@9
    12
 * GNU General Public License for more details.
ali@9
    13
 *
ali@9
    14
 * You should have received a copy of the GNU General Public License along
ali@9
    15
 * with this program; if not, write to the Free Software Foundation, Inc.,
ali@9
    16
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
ali@9
    17
 */
ali@9
    18
ali@9
    19
#include "config.h"
ali@9
    20
#include <stdlib.h>
ali@9
    21
#include <string.h>
ali@9
    22
#include <glib-object.h>
ali@10
    23
#include <gtk/gtk.h>
ali@9
    24
#include <razor.h>
ali@9
    25
#include "plover-gtk/package.h"
ali@9
    26
ali@9
    27
G_DEFINE_TYPE(PloverPackage,plover_package,G_TYPE_OBJECT);
ali@9
    28
ali@9
    29
typedef struct _PloverPackagePrivate {
ali@9
    30
    struct razor_set *set;
ali@9
    31
    struct razor_package *pkg;
ali@9
    32
    PloverPackageFileStore *file_store;
ali@9
    33
} PloverPackagePrivate;
ali@9
    34
ali@9
    35
#define PLOVER_PACKAGE_GET_PRIVATE(obj)\
ali@9
    36
				G_TYPE_INSTANCE_GET_PRIVATE(obj,\
ali@9
    37
				  PLOVER_TYPE_PACKAGE,PloverPackagePrivate)
ali@9
    38
ali@9
    39
enum {
ali@9
    40
    CHANGED=0,
ali@9
    41
    N_SIGNALS
ali@9
    42
};
ali@9
    43
ali@9
    44
static guint signals[N_SIGNALS];
ali@9
    45
ali@9
    46
static void plover_package_dispose(GObject *obj)
ali@9
    47
{
ali@9
    48
    PloverPackagePrivate *priv=PLOVER_PACKAGE_GET_PRIVATE(obj);
ali@9
    49
    if (priv->file_store)
ali@9
    50
    {
ali@9
    51
	g_object_unref(priv->file_store);
ali@9
    52
	priv->file_store=NULL;
ali@9
    53
    }
ali@9
    54
    if (G_OBJECT_CLASS(plover_package_parent_class)->dispose)
ali@9
    55
	G_OBJECT_CLASS(plover_package_parent_class)->dispose(obj);
ali@9
    56
}
ali@9
    57
ali@9
    58
static void plover_package_class_init(PloverPackageClass *klass)
ali@9
    59
{
ali@9
    60
    GObjectClass *oclass=G_OBJECT_CLASS(klass);
ali@9
    61
    oclass->dispose=plover_package_dispose;
ali@9
    62
    g_type_class_add_private(klass,sizeof(PloverPackagePrivate));
ali@9
    63
    signals[CHANGED]=g_signal_newv("changed",
ali@9
    64
      G_TYPE_FROM_CLASS(klass),G_SIGNAL_RUN_LAST,NULL,NULL,NULL,
ali@9
    65
      g_cclosure_marshal_VOID__VOID,G_TYPE_NONE,0,NULL);
ali@9
    66
}
ali@9
    67
ali@9
    68
static void plover_package_init(PloverPackage *package)
ali@9
    69
{
ali@9
    70
}
ali@9
    71
ali@9
    72
PloverPackage *plover_package_new(struct razor_set *set,
ali@9
    73
  struct razor_package *pkg)
ali@9
    74
{
ali@9
    75
    PloverPackage *package;
ali@9
    76
    PloverPackagePrivate *priv;
ali@9
    77
    package=g_object_new(PLOVER_TYPE_PACKAGE,NULL);
ali@9
    78
    priv=PLOVER_PACKAGE_GET_PRIVATE(package);
ali@9
    79
    priv->set=set;
ali@9
    80
    priv->pkg=pkg;
ali@9
    81
    return package;
ali@9
    82
}
ali@9
    83
ali@9
    84
const char *plover_package_get_name(PloverPackage *package)
ali@9
    85
{
ali@9
    86
    PloverPackagePrivate *priv;
ali@10
    87
    const char *name=NULL;
ali@9
    88
    g_return_val_if_fail(PLOVER_IS_PACKAGE(package),NULL);
ali@9
    89
    priv=PLOVER_PACKAGE_GET_PRIVATE(package);
ali@9
    90
    razor_package_get_details(priv->set,priv->pkg,RAZOR_DETAIL_NAME,&name,
ali@9
    91
      RAZOR_DETAIL_LAST);
ali@9
    92
    return name;
ali@9
    93
}
ali@9
    94
ali@9
    95
const char *plover_package_get_summary(PloverPackage *package)
ali@9
    96
{
ali@9
    97
    PloverPackagePrivate *priv;
ali@10
    98
    const char *summary=NULL;
ali@9
    99
    g_return_val_if_fail(PLOVER_IS_PACKAGE(package),NULL);
ali@9
   100
    priv=PLOVER_PACKAGE_GET_PRIVATE(package);
ali@9
   101
    razor_package_get_details(priv->set,priv->pkg,RAZOR_DETAIL_SUMMARY,&summary,
ali@9
   102
      RAZOR_DETAIL_LAST);
ali@9
   103
    return summary;
ali@9
   104
}
ali@9
   105
ali@9
   106
const char *plover_package_get_version(PloverPackage *package)
ali@9
   107
{
ali@9
   108
    PloverPackagePrivate *priv;
ali@10
   109
    const char *version=NULL;
ali@9
   110
    g_return_val_if_fail(PLOVER_IS_PACKAGE(package),NULL);
ali@9
   111
    priv=PLOVER_PACKAGE_GET_PRIVATE(package);
ali@9
   112
    razor_package_get_details(priv->set,priv->pkg,RAZOR_DETAIL_VERSION,&version,
ali@9
   113
      RAZOR_DETAIL_LAST);
ali@9
   114
    return version;
ali@9
   115
}
ali@9
   116
ali@9
   117
const char *plover_package_get_license(PloverPackage *package)
ali@9
   118
{
ali@9
   119
    PloverPackagePrivate *priv;
ali@10
   120
    const char *license=NULL;
ali@9
   121
    g_return_val_if_fail(PLOVER_IS_PACKAGE(package),NULL);
ali@9
   122
    priv=PLOVER_PACKAGE_GET_PRIVATE(package);
ali@9
   123
    razor_package_get_details(priv->set,priv->pkg,RAZOR_DETAIL_LICENSE,&license,
ali@9
   124
      RAZOR_DETAIL_LAST);
ali@9
   125
    return license;
ali@9
   126
}
ali@9
   127
ali@9
   128
const char *plover_package_get_arch(PloverPackage *package)
ali@9
   129
{
ali@9
   130
    PloverPackagePrivate *priv;
ali@10
   131
    const char *arch=NULL;
ali@9
   132
    g_return_val_if_fail(PLOVER_IS_PACKAGE(package),NULL);
ali@9
   133
    priv=PLOVER_PACKAGE_GET_PRIVATE(package);
ali@9
   134
    razor_package_get_details(priv->set,priv->pkg,RAZOR_DETAIL_ARCH,&arch,
ali@9
   135
      RAZOR_DETAIL_LAST);
ali@9
   136
    return arch;
ali@9
   137
}
ali@9
   138
ali@9
   139
const char *plover_package_get_description(PloverPackage *package)
ali@9
   140
{
ali@9
   141
    PloverPackagePrivate *priv;
ali@10
   142
    const char *description=NULL;
ali@9
   143
    g_return_val_if_fail(PLOVER_IS_PACKAGE(package),NULL);
ali@9
   144
    priv=PLOVER_PACKAGE_GET_PRIVATE(package);
ali@9
   145
    razor_package_get_details(priv->set,priv->pkg,RAZOR_DETAIL_DESCRIPTION,
ali@9
   146
      &description,RAZOR_DETAIL_LAST);
ali@9
   147
    return description;
ali@9
   148
}
ali@9
   149
ali@9
   150
const char *plover_package_get_URL(PloverPackage *package)
ali@9
   151
{
ali@9
   152
    PloverPackagePrivate *priv;
ali@10
   153
    const char *URL=NULL;
ali@9
   154
    g_return_val_if_fail(PLOVER_IS_PACKAGE(package),NULL);
ali@9
   155
    priv=PLOVER_PACKAGE_GET_PRIVATE(package);
ali@9
   156
    razor_package_get_details(priv->set,priv->pkg,RAZOR_DETAIL_URL,&URL,
ali@9
   157
      RAZOR_DETAIL_LAST);
ali@9
   158
    return URL;
ali@9
   159
}
ali@9
   160
ali@9
   161
GdkPixbuf *plover_package_get_icon(PloverPackage *package)
ali@9
   162
{
ali@9
   163
    g_return_val_if_fail(PLOVER_IS_PACKAGE(package),NULL);
ali@9
   164
    return NULL;
ali@9
   165
}
ali@9
   166
ali@9
   167
PloverPackageFileStore *plover_package_get_file_store(PloverPackage *package)
ali@9
   168
{
ali@9
   169
    PloverPackagePrivate *priv;
ali@9
   170
    struct razor_file_iterator *iter;
ali@9
   171
    g_return_val_if_fail(PLOVER_IS_PACKAGE(package),NULL);
ali@9
   172
    priv=PLOVER_PACKAGE_GET_PRIVATE(package);
ali@9
   173
    if (!priv->file_store)
ali@9
   174
    {
ali@9
   175
	iter=razor_file_iterator_create(priv->set,priv->pkg,0);
ali@9
   176
	priv->file_store=plover_package_file_store_new(iter);
ali@9
   177
	razor_file_iterator_destroy(iter);
ali@9
   178
    }
ali@9
   179
    return priv->file_store;
ali@9
   180
}