[nautilus-actions] Desktop file: read/write icon and enabled status
- From: Pierre Wieser <pwieser src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [nautilus-actions] Desktop file: read/write icon and enabled status
- Date: Mon, 7 Dec 2009 21:21:08 +0000 (UTC)
commit 279616737f8a3cee2f47aef748bb15241bd906eb
Author: Pierre Wieser <pwieser trychlos org>
Date: Mon Dec 7 20:29:23 2009 +0100
Desktop file: read/write icon and enabled status
ChangeLog | 12 +++
.../io-provider-desktop/nadp-desktop-file.c | 96 ++++++++++++++++++++
.../io-provider-desktop/nadp-desktop-file.h | 4 +
nautilus-actions/io-provider-desktop/nadp-read.c | 13 +++-
nautilus-actions/io-provider-desktop/nadp-write.c | 9 ++
5 files changed, 132 insertions(+), 2 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 35df335..c2b2400 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,17 @@
2009-12-07 Pierre Wieser <pwieser trychlos org>
+ * nautilus-actions/io-provider-desktop/nadp-desktop-file.c:
+ * nautilus-actions/io-provider-desktop/nadp-desktop-file.h
+ (nadp_desktop_file_get_icon, nadp_desktop_file_get_enabled,
+ nadp_desktop_file_set_icon, nadp_desktop_file_set_enabled):
+ New functions.
+
+ * nautilus-actions/io-provider-desktop/nadp-read.c
+ (read_item_properties): Read icon and enabled status.
+
+ * nautilus-actions/io-provider-desktop/nadp-write.c (write_item):
+ Write icon name or path and enabled status.
+
* nautilus-actions/plugin/nautilus-actions.c (build_nautilus_menus):
Emits a warning when finding a disabled or invalid item.
diff --git a/nautilus-actions/io-provider-desktop/nadp-desktop-file.c b/nautilus-actions/io-provider-desktop/nadp-desktop-file.c
index 49b3f90..ff86bee 100644
--- a/nautilus-actions/io-provider-desktop/nadp-desktop-file.c
+++ b/nautilus-actions/io-provider-desktop/nadp-desktop-file.c
@@ -395,6 +395,58 @@ nadp_desktop_file_get_tooltip( const NadpDesktopFile *ndf )
}
/**
+ * nadp_desktop_file_get_icon:
+ * @ndf: the #NadpDesktopFile instance.
+ *
+ * Returns: the icon of the action, as a newly allocated string which
+ * should be g_free() by the caller.
+ */
+gchar *
+nadp_desktop_file_get_icon( const NadpDesktopFile *ndf )
+{
+ gchar *icon;
+
+ icon = NULL;
+ g_return_val_if_fail( NADP_IS_DESKTOP_FILE( ndf ), icon );
+
+ if( !ndf->private->dispose_has_run ){
+ icon = g_key_file_get_locale_string(
+ ndf->private->key_file, G_KEY_FILE_DESKTOP_GROUP, G_KEY_FILE_DESKTOP_KEY_ICON, NULL, NULL );
+ }
+
+ return( icon );
+}
+
+/**
+ * nadp_desktop_file_get_enabled:
+ * @ndf: the #NadpDesktopFile instance.
+ *
+ * Returns: %TRUE if the action is enabled, %FALSE else.
+ *
+ * Defaults to TRUE if the key is not specified.
+ */
+gboolean
+nadp_desktop_file_get_enabled( const NadpDesktopFile *ndf )
+{
+ gboolean enabled;
+
+ enabled = TRUE;
+ g_return_val_if_fail( NADP_IS_DESKTOP_FILE( ndf ), enabled );
+
+ if( !ndf->private->dispose_has_run ){
+
+ if( g_key_file_has_key(
+ ndf->private->key_file, G_KEY_FILE_DESKTOP_GROUP, G_KEY_FILE_DESKTOP_KEY_NO_DISPLAY, NULL )){
+
+ enabled = !g_key_file_get_boolean(
+ ndf->private->key_file, G_KEY_FILE_DESKTOP_GROUP, G_KEY_FILE_DESKTOP_KEY_NO_DISPLAY, NULL );
+ }
+ }
+
+ return( enabled );
+}
+
+/**
* nadp_desktop_file_set_label:
* @ndf: the #NadpDesktopFile instance.
* @label: the label to be set.
@@ -439,6 +491,50 @@ nadp_desktop_file_set_tooltip( NadpDesktopFile *ndf, const gchar *tooltip )
}
/**
+ * nadp_desktop_file_set_icon:
+ * @ndf: the #NadpDesktopFile instance.
+ * @icon: the icon name or path to be set.
+ *
+ * Sets the icon.
+ */
+void
+nadp_desktop_file_set_icon( NadpDesktopFile *ndf, const gchar *icon )
+{
+ char **locales;
+
+ g_return_if_fail( NADP_IS_DESKTOP_FILE( ndf ));
+
+ if( !ndf->private->dispose_has_run ){
+
+ locales = ( char ** ) g_get_language_names();
+ g_key_file_set_locale_string(
+ ndf->private->key_file, G_KEY_FILE_DESKTOP_GROUP, G_KEY_FILE_DESKTOP_KEY_ICON, locales[0], icon );
+ }
+}
+
+/**
+ * nadp_desktop_file_set_enabled:
+ * @ndf: the #NadpDesktopFile instance.
+ * @enabled: whether the action is enabled.
+ *
+ * Sets the enabled status of the item.
+ *
+ * Note that the NoDisplay key has an inversed logic regards to enabled
+ * status.
+ */
+void
+nadp_desktop_file_set_enabled( NadpDesktopFile *ndf, gboolean enabled )
+{
+ g_return_if_fail( NADP_IS_DESKTOP_FILE( ndf ));
+
+ if( !ndf->private->dispose_has_run ){
+
+ g_key_file_set_boolean(
+ ndf->private->key_file, G_KEY_FILE_DESKTOP_GROUP, G_KEY_FILE_DESKTOP_KEY_NO_DISPLAY, !enabled );
+ }
+}
+
+/**
* nadp_desktop_file_write:
* @ndf: the #NadpDesktopFile instance.
*
diff --git a/nautilus-actions/io-provider-desktop/nadp-desktop-file.h b/nautilus-actions/io-provider-desktop/nadp-desktop-file.h
index ecaab64..98cbbdf 100644
--- a/nautilus-actions/io-provider-desktop/nadp-desktop-file.h
+++ b/nautilus-actions/io-provider-desktop/nadp-desktop-file.h
@@ -79,9 +79,13 @@ gchar *nadp_desktop_file_get_key_file_path( const NadpDesktopFile *ndf
gchar *nadp_desktop_file_get_id( const NadpDesktopFile *ndf );
gchar *nadp_desktop_file_get_label( const NadpDesktopFile *ndf );
gchar *nadp_desktop_file_get_tooltip( const NadpDesktopFile *ndf );
+gchar *nadp_desktop_file_get_icon( const NadpDesktopFile *ndf );
+gboolean nadp_desktop_file_get_enabled( const NadpDesktopFile *ndf );
void nadp_desktop_file_set_label( NadpDesktopFile *ndf, const gchar *label );
void nadp_desktop_file_set_tooltip( NadpDesktopFile *ndf, const gchar *tooltip );
+void nadp_desktop_file_set_icon( NadpDesktopFile *ndf, const gchar *icon );
+void nadp_desktop_file_set_enabled( NadpDesktopFile *ndf, gboolean enabled );
gboolean nadp_desktop_file_write( NadpDesktopFile *ndf );
diff --git a/nautilus-actions/io-provider-desktop/nadp-read.c b/nautilus-actions/io-provider-desktop/nadp-read.c
index 244a61c..c7871e9 100644
--- a/nautilus-actions/io-provider-desktop/nadp-read.c
+++ b/nautilus-actions/io-provider-desktop/nadp-read.c
@@ -245,13 +245,15 @@ read_item_properties( const NadpDesktopProvider *provider, NAObjectItem *item, N
gchar *id;
gchar *label;
gchar *tooltip;
+ gchar *icon;
+ gboolean enabled;
gchar *path;
gboolean writable;
id = nadp_desktop_file_get_id( ndf );
na_object_set_id( item, id );
- label = ( gchar * ) nadp_desktop_file_get_label( ndf );
+ label = nadp_desktop_file_get_label( ndf );
if( !label || !g_utf8_strlen( label, -1 )){
g_warning( "%s: id=%s, label not found or empty", thisfn, id );
g_free( label );
@@ -260,10 +262,17 @@ read_item_properties( const NadpDesktopProvider *provider, NAObjectItem *item, N
na_object_set_label( item, label );
g_free( label );
- tooltip = ( gchar * ) nadp_desktop_file_get_tooltip( ndf );
+ tooltip = nadp_desktop_file_get_tooltip( ndf );
na_object_set_tooltip( item, tooltip );
g_free( tooltip );
+ icon = nadp_desktop_file_get_icon( ndf );
+ na_object_set_icon( item, icon );
+ g_free( icon );
+
+ enabled = nadp_desktop_file_get_enabled( ndf );
+ na_object_set_enabled( item, enabled );
+
path = nadp_desktop_file_get_key_file_path( ndf );
writable = nadp_utils_is_writable_file( path );
g_free( path );
diff --git a/nautilus-actions/io-provider-desktop/nadp-write.c b/nautilus-actions/io-provider-desktop/nadp-write.c
index dcec005..80ed0d4 100644
--- a/nautilus-actions/io-provider-desktop/nadp-write.c
+++ b/nautilus-actions/io-provider-desktop/nadp-write.c
@@ -191,6 +191,8 @@ write_item( const NAIIOProvider *provider, const NAObjectItem *item, NadpDesktop
guint ret;
gchar *label;
gchar *tooltip;
+ gchar *icon;
+ gboolean enabled;
ret = NA_IIO_PROVIDER_WRITE_OK;
@@ -202,6 +204,13 @@ write_item( const NAIIOProvider *provider, const NAObjectItem *item, NadpDesktop
nadp_desktop_file_set_tooltip( ndf, tooltip );
g_free( tooltip );
+ icon = na_object_get_icon( item );
+ nadp_desktop_file_set_icon( ndf, icon );
+ g_free( icon );
+
+ enabled = na_object_is_enabled( item );
+ nadp_desktop_file_set_enabled( ndf, enabled );
+
if( !nadp_desktop_file_write( ndf )){
ret = NA_IIO_PROVIDER_WRITE_ERROR;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]