[gnome-software] Show core packages as installed, but don't allow them to be removed
- From: Richard Hughes <rhughes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-software] Show core packages as installed, but don't allow them to be removed
- Date: Mon, 4 Mar 2013 17:25:53 +0000 (UTC)
commit 91c11bc61acef41d8582948cf8f477f3fb08f693
Author: Richard Hughes <richard hughsie com>
Date: Mon Mar 4 17:25:36 2013 +0000
Show core packages as installed, but don't allow them to be removed
src/core-apps.txt | 1 +
src/gs-app-widget.c | 36 ++++++++++++++++++++------------
src/gs-app-widget.h | 1 +
src/gs-main.c | 56 ++++++++++++++++++++++++--------------------------
4 files changed, 51 insertions(+), 43 deletions(-)
---
diff --git a/src/core-apps.txt b/src/core-apps.txt
index ef3e7f4..7ba29af 100644
--- a/src/core-apps.txt
+++ b/src/core-apps.txt
@@ -2,6 +2,7 @@ baobab
eog
epiphany
evince
+fedora-empathy
gcalctool
gedit
gnome-bluetooth
diff --git a/src/gs-app-widget.c b/src/gs-app-widget.c
index 82e259a..165cbd4 100644
--- a/src/gs-app-widget.c
+++ b/src/gs-app-widget.c
@@ -1,6 +1,6 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
*
- * Copyright (C) 2012 Richard Hughes <richard hughsie com>
+ * Copyright (C) 2012-2013 Richard Hughes <richard hughsie com>
*
* Licensed under the GNU General Public License Version 2
*
@@ -87,26 +87,34 @@ gs_app_widget_refresh (GsAppWidget *app_widget)
gtk_widget_set_visible (priv->widget_more,
!priv->expanded && app_widget->priv->description_more != NULL);
- if (app_widget->priv->kind == GS_APP_WIDGET_KIND_INSTALL) {
+ /* show / hide widgets depending on kind */
+ switch (app_widget->priv->kind) {
+ case GS_APP_WIDGET_KIND_INSTALL:
+ gtk_widget_set_visible (priv->widget_spinner, FALSE);
+ gtk_widget_set_visible (priv->widget_button, TRUE);
gtk_button_set_label (GTK_BUTTON (priv->widget_button),
_("Install"));
- } else if (app_widget->priv->kind == GS_APP_WIDGET_KIND_REMOVE) {
+ break;
+ case GS_APP_WIDGET_KIND_REMOVE:
+ gtk_widget_set_visible (priv->widget_spinner, FALSE);
+ gtk_widget_set_visible (priv->widget_button, TRUE);
gtk_button_set_label (GTK_BUTTON (priv->widget_button),
_("Remove"));
- } else if (app_widget->priv->kind == GS_APP_WIDGET_KIND_UPDATE) {
+ break;
+ case GS_APP_WIDGET_KIND_UPDATE:
+ gtk_widget_set_visible (priv->widget_spinner, FALSE);
+ gtk_widget_set_visible (priv->widget_button, TRUE);
gtk_button_set_label (GTK_BUTTON (priv->widget_button),
_("Update"));
- }
-
- /* show / hide widgets */
- if (app_widget->priv->kind == GS_APP_WIDGET_KIND_BUSY) {
- gtk_widget_set_visible (priv->widget_button, FALSE);
- gtk_widget_set_visible (priv->widget_spinner, TRUE);
+ break;
+ case GS_APP_WIDGET_KIND_BUSY:
gtk_spinner_start (GTK_SPINNER (priv->widget_spinner));
- } else {
- gtk_widget_set_visible (priv->widget_button, TRUE);
- gtk_widget_set_visible (priv->widget_spinner, FALSE);
- gtk_spinner_stop (GTK_SPINNER (priv->widget_spinner));
+ gtk_widget_set_visible (priv->widget_spinner, TRUE);
+ gtk_widget_set_visible (priv->widget_button, FALSE);
+ break;
+ default:
+ gtk_widget_set_visible (priv->widget_button, FALSE);
+ break;
}
}
diff --git a/src/gs-app-widget.h b/src/gs-app-widget.h
index 9207c23..d2d4256 100644
--- a/src/gs-app-widget.h
+++ b/src/gs-app-widget.h
@@ -56,6 +56,7 @@ typedef enum {
GS_APP_WIDGET_KIND_UPDATE,
GS_APP_WIDGET_KIND_REMOVE,
GS_APP_WIDGET_KIND_BUSY,
+ GS_APP_WIDGET_KIND_BLANK,
GS_APP_WIDGET_KIND_LAST
} GsAppWidgetKind;
diff --git a/src/gs-main.c b/src/gs-main.c
index 8336e1d..5b17ef8 100644
--- a/src/gs-main.c
+++ b/src/gs-main.c
@@ -496,6 +496,30 @@ gs_main_installed_add_package (GsMainPrivate *priv, PkPackage *pkg)
}
/**
+ * gs_main_installed_is_blacklisted:
+ **/
+static gboolean
+gs_main_installed_is_blacklisted (GsMainPrivate *priv,
+ const gchar *desktop_file)
+{
+ gboolean ret = FALSE;
+ gchar *app_id;
+ guint i;
+
+ app_id = g_path_get_basename (desktop_file);
+ g_strdelimit (app_id, ".", '\0');
+ for (i = 0; priv->blacklisted_remove[i] != NULL; i++) {
+ if (g_strcmp0 (app_id, priv->blacklisted_remove[i]) == 0) {
+ g_debug ("%s is blacklisted, not showing", app_id);
+ ret = TRUE;
+ break;
+ }
+ }
+ g_free (app_id);
+ return ret;
+}
+
+/**
* gs_main_installed_add_desktop_file:
**/
static void
@@ -505,6 +529,7 @@ gs_main_installed_add_desktop_file (GsMainPrivate *priv,
{
EggListBox *list_box = NULL;
gboolean ret;
+ gboolean blacklisted;
gchar *comment = NULL;
gchar *icon = NULL;
gchar *name = NULL;
@@ -613,8 +638,9 @@ gs_main_installed_add_desktop_file (GsMainPrivate *priv,
target = gs_main_get_pkg_target (pkg);
if (target == GS_MAIN_TARGET_INSTALLED) {
list_box = priv->list_box_installed;
+ blacklisted = gs_main_installed_is_blacklisted (priv, desktop_file);
gs_app_widget_set_kind (GS_APP_WIDGET (widget),
- GS_APP_WIDGET_KIND_REMOVE);
+ blacklisted ? GS_APP_WIDGET_KIND_BLANK :
GS_APP_WIDGET_KIND_REMOVE);
} else if (target == GS_MAIN_TARGET_UPDATES) {
list_box = priv->list_box_updates;
gs_app_widget_set_kind (GS_APP_WIDGET (widget),
@@ -691,37 +717,12 @@ out:
}
/**
- * gs_main_installed_is_blacklisted:
- **/
-static gboolean
-gs_main_installed_is_blacklisted (GsMainPrivate *priv,
- const gchar *desktop_file)
-{
- gboolean ret = FALSE;
- gchar *app_id;
- guint i;
-
- app_id = g_path_get_basename (desktop_file);
- g_strdelimit (app_id, ".", '\0');
- for (i = 0; priv->blacklisted_remove[i] != NULL; i++) {
- if (g_strcmp0 (app_id, priv->blacklisted_remove[i]) == 0) {
- g_debug ("%s is blacklisted, not showing", app_id);
- ret = TRUE;
- break;
- }
- }
- g_free (app_id);
- return ret;
-}
-
-/**
* gs_main_installed_add_package:
**/
static void
gs_main_installed_add_item (GsMainPrivate *priv, PkPackage *pkg)
{
const gchar *desktop_file;
- gboolean ret;
GError *error = NULL;
GPtrArray *files = NULL;
GsMainTarget target;
@@ -751,9 +752,6 @@ gs_main_installed_add_item (GsMainPrivate *priv, PkPackage *pkg)
/* add each of the desktop files */
for (i = 0; i < files->len; i++) {
desktop_file = g_ptr_array_index (files, i);
- ret = gs_main_installed_is_blacklisted (priv, desktop_file);
- if (ret)
- continue;
gs_main_installed_add_desktop_file (priv,
pkg,
desktop_file);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]