plover-gtk/package.c
author J. Ali Harlow <ali@juiblex.co.uk>
Sat Feb 20 12:11:02 2010 +0000 (2010-02-20)
changeset 9 8d3b1ddf789c
child 10 8b50be3e2998
permissions -rw-r--r--
First cut at an applications manager
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@9
    23
#include <razor.h>
ali@9
    24
#include "plover-gtk/package.h"
ali@9
    25
ali@9
    26
G_DEFINE_TYPE(PloverPackage,plover_package,G_TYPE_OBJECT);
ali@9
    27
ali@9
    28
typedef struct _PloverPackagePrivate {
ali@9
    29
    struct razor_set *set;
ali@9
    30
    struct razor_package *pkg;
ali@9
    31
    PloverPackageFileStore *file_store;
ali@9
    32
} PloverPackagePrivate;
ali@9
    33
ali@9
    34
#define PLOVER_PACKAGE_GET_PRIVATE(obj)\
ali@9
    35
				G_TYPE_INSTANCE_GET_PRIVATE(obj,\
ali@9
    36
				  PLOVER_TYPE_PACKAGE,PloverPackagePrivate)
ali@9
    37
ali@9
    38
enum {
ali@9
    39
    CHANGED=0,
ali@9
    40
    N_SIGNALS
ali@9
    41
};
ali@9
    42
ali@9
    43
static guint signals[N_SIGNALS];
ali@9
    44
ali@9
    45
static void plover_package_dispose(GObject *obj)
ali@9
    46
{
ali@9
    47
    PloverPackagePrivate *priv=PLOVER_PACKAGE_GET_PRIVATE(obj);
ali@9
    48
    if (priv->file_store)
ali@9
    49
    {
ali@9
    50
	g_object_unref(priv->file_store);
ali@9
    51
	priv->file_store=NULL;
ali@9
    52
    }
ali@9
    53
    if (G_OBJECT_CLASS(plover_package_parent_class)->dispose)
ali@9
    54
	G_OBJECT_CLASS(plover_package_parent_class)->dispose(obj);
ali@9
    55
}
ali@9
    56
ali@9
    57
static void plover_package_class_init(PloverPackageClass *klass)
ali@9
    58
{
ali@9
    59
    GObjectClass *oclass=G_OBJECT_CLASS(klass);
ali@9
    60
    oclass->dispose=plover_package_dispose;
ali@9
    61
    g_type_class_add_private(klass,sizeof(PloverPackagePrivate));
ali@9
    62
    signals[CHANGED]=g_signal_newv("changed",
ali@9
    63
      G_TYPE_FROM_CLASS(klass),G_SIGNAL_RUN_LAST,NULL,NULL,NULL,
ali@9
    64
      g_cclosure_marshal_VOID__VOID,G_TYPE_NONE,0,NULL);
ali@9
    65
}
ali@9
    66
ali@9
    67
static void plover_package_init(PloverPackage *package)
ali@9
    68
{
ali@9
    69
}
ali@9
    70
ali@9
    71
PloverPackage *plover_package_new(struct razor_set *set,
ali@9
    72
  struct razor_package *pkg)
ali@9
    73
{
ali@9
    74
    PloverPackage *package;
ali@9
    75
    PloverPackagePrivate *priv;
ali@9
    76
    package=g_object_new(PLOVER_TYPE_PACKAGE,NULL);
ali@9
    77
    priv=PLOVER_PACKAGE_GET_PRIVATE(package);
ali@9
    78
    priv->set=set;
ali@9
    79
    priv->pkg=pkg;
ali@9
    80
    return package;
ali@9
    81
}
ali@9
    82
ali@9
    83
const char *plover_package_get_name(PloverPackage *package)
ali@9
    84
{
ali@9
    85
    PloverPackagePrivate *priv;
ali@9
    86
    const char *name;
ali@9
    87
    g_return_val_if_fail(PLOVER_IS_PACKAGE(package),NULL);
ali@9
    88
    priv=PLOVER_PACKAGE_GET_PRIVATE(package);
ali@9
    89
    razor_package_get_details(priv->set,priv->pkg,RAZOR_DETAIL_NAME,&name,
ali@9
    90
      RAZOR_DETAIL_LAST);
ali@9
    91
    return name;
ali@9
    92
}
ali@9
    93
ali@9
    94
const char *plover_package_get_summary(PloverPackage *package)
ali@9
    95
{
ali@9
    96
    PloverPackagePrivate *priv;
ali@9
    97
    const char *summary;
ali@9
    98
    g_return_val_if_fail(PLOVER_IS_PACKAGE(package),NULL);
ali@9
    99
    priv=PLOVER_PACKAGE_GET_PRIVATE(package);
ali@9
   100
    razor_package_get_details(priv->set,priv->pkg,RAZOR_DETAIL_SUMMARY,&summary,
ali@9
   101
      RAZOR_DETAIL_LAST);
ali@9
   102
    return summary;
ali@9
   103
}
ali@9
   104
ali@9
   105
const char *plover_package_get_version(PloverPackage *package)
ali@9
   106
{
ali@9
   107
    PloverPackagePrivate *priv;
ali@9
   108
    const char *version;
ali@9
   109
    g_return_val_if_fail(PLOVER_IS_PACKAGE(package),NULL);
ali@9
   110
    priv=PLOVER_PACKAGE_GET_PRIVATE(package);
ali@9
   111
    razor_package_get_details(priv->set,priv->pkg,RAZOR_DETAIL_VERSION,&version,
ali@9
   112
      RAZOR_DETAIL_LAST);
ali@9
   113
    return version;
ali@9
   114
}
ali@9
   115
ali@9
   116
const char *plover_package_get_license(PloverPackage *package)
ali@9
   117
{
ali@9
   118
    PloverPackagePrivate *priv;
ali@9
   119
    const char *license;
ali@9
   120
    g_return_val_if_fail(PLOVER_IS_PACKAGE(package),NULL);
ali@9
   121
    priv=PLOVER_PACKAGE_GET_PRIVATE(package);
ali@9
   122
    razor_package_get_details(priv->set,priv->pkg,RAZOR_DETAIL_LICENSE,&license,
ali@9
   123
      RAZOR_DETAIL_LAST);
ali@9
   124
    return license;
ali@9
   125
}
ali@9
   126
ali@9
   127
const char *plover_package_get_arch(PloverPackage *package)
ali@9
   128
{
ali@9
   129
    PloverPackagePrivate *priv;
ali@9
   130
    const char *arch;
ali@9
   131
    g_return_val_if_fail(PLOVER_IS_PACKAGE(package),NULL);
ali@9
   132
    priv=PLOVER_PACKAGE_GET_PRIVATE(package);
ali@9
   133
    razor_package_get_details(priv->set,priv->pkg,RAZOR_DETAIL_ARCH,&arch,
ali@9
   134
      RAZOR_DETAIL_LAST);
ali@9
   135
    return arch;
ali@9
   136
}
ali@9
   137
ali@9
   138
const char *plover_package_get_description(PloverPackage *package)
ali@9
   139
{
ali@9
   140
    PloverPackagePrivate *priv;
ali@9
   141
    const char *description;
ali@9
   142
    g_return_val_if_fail(PLOVER_IS_PACKAGE(package),NULL);
ali@9
   143
    priv=PLOVER_PACKAGE_GET_PRIVATE(package);
ali@9
   144
    razor_package_get_details(priv->set,priv->pkg,RAZOR_DETAIL_DESCRIPTION,
ali@9
   145
      &description,RAZOR_DETAIL_LAST);
ali@9
   146
    return description;
ali@9
   147
}
ali@9
   148
ali@9
   149
const char *plover_package_get_URL(PloverPackage *package)
ali@9
   150
{
ali@9
   151
    PloverPackagePrivate *priv;
ali@9
   152
    const char *URL;
ali@9
   153
    g_return_val_if_fail(PLOVER_IS_PACKAGE(package),NULL);
ali@9
   154
    priv=PLOVER_PACKAGE_GET_PRIVATE(package);
ali@9
   155
    razor_package_get_details(priv->set,priv->pkg,RAZOR_DETAIL_URL,&URL,
ali@9
   156
      RAZOR_DETAIL_LAST);
ali@9
   157
    return URL;
ali@9
   158
}
ali@9
   159
ali@9
   160
GdkPixbuf *plover_package_get_icon(PloverPackage *package)
ali@9
   161
{
ali@9
   162
    g_return_val_if_fail(PLOVER_IS_PACKAGE(package),NULL);
ali@9
   163
    return NULL;
ali@9
   164
}
ali@9
   165
ali@9
   166
PloverPackageFileStore *plover_package_get_file_store(PloverPackage *package)
ali@9
   167
{
ali@9
   168
    PloverPackagePrivate *priv;
ali@9
   169
    struct razor_file_iterator *iter;
ali@9
   170
    g_return_val_if_fail(PLOVER_IS_PACKAGE(package),NULL);
ali@9
   171
    priv=PLOVER_PACKAGE_GET_PRIVATE(package);
ali@9
   172
    if (!priv->file_store)
ali@9
   173
    {
ali@9
   174
	iter=razor_file_iterator_create(priv->set,priv->pkg,0);
ali@9
   175
	priv->file_store=plover_package_file_store_new(iter);
ali@9
   176
	razor_file_iterator_destroy(iter);
ali@9
   177
    }
ali@9
   178
    return priv->file_store;
ali@9
   179
}