Updating branch refs/heads/aria2-xml-rpc to 6a91c2f85ff537bedc7ab55a39fbad38d0674996 (commit) from 2bf83f8b165a59832f8c44ff36b0e0302ff1fd33 (commit)
commit 6a91c2f85ff537bedc7ab55a39fbad38d0674996 Author: Mike Massonnet <mmasson...@xfce.org> Date: Sat Jan 23 12:00:47 2010 +0100 Let's restart the code monkey! Initial branch targetting aria2 with XML-RPC. ChangeLog | 5 - NEWS | 6 +- README | 6 +- autogen.sh | 42 +------- configure.ac.in | 52 +++----- eatmonkey.desktop.in | 2 +- po/LINGUAS | 2 - src/Makefile.am | 58 +++++---- src/downloadmanager.c | 318 ------------------------------------------------- src/downloadmanager.h | 64 ---------- src/main.c | 202 ------------------------------- src/statusicon.c | 102 ---------------- src/statusicon.h | 55 --------- 13 files changed, 61 insertions(+), 853 deletions(-) diff --git a/ChangeLog b/ChangeLog index 57bcf81..e69de29 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +0,0 @@ -2008-09-06 Mike Massonnet <mmasson...@xfce.org> -Let's start the code monkey! one commit = one banaan. - - * */*: Initial source directory - diff --git a/NEWS b/NEWS index 2beeb6c..c09a263 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,6 @@ - 0.0.1 (2008-09-??) + 0.1.0 (20xx-xx-xx) + +Works exclusively with aria2 and its XML-RPC interface. -First release. + 0.0.1 (2008-09-11 diff --git a/README b/README index 760f491..7b807b5 100644 --- a/README +++ b/README @@ -2,8 +2,8 @@ =========== Simple download manager for Xfce. Eatmonkey will download all the URLs you pass -to it and keep you informed with a status icon. The program quits once there -are no more URLs to download. +to it and keep you informed with a status icon. The download manager dialog +lets you pause/resume add/delete downloads and tweak special download settings. Homepage @@ -33,7 +33,7 @@ See the INSTALL file for more instructions. Report bugs ------------- You can report bugs and feature requests on http://bugzilla.xfce.org/. -Select the product “Xfce Goodies” and the component “eatmonkey”. +Select the product “Eatmonkey”. Feature requests are always welcome. diff --git a/autogen.sh b/autogen.sh index 170897e..bde867b 100755 --- a/autogen.sh +++ b/autogen.sh @@ -1,13 +1,6 @@ #!/bin/sh -# -# $Id: autogen.sh 23241 2006-09-29 19:05:15Z kelnos $ -# -# Copyright (c) 2002-2005 -# The Xfce development team. All rights reserved. -# -# Written for Xfce by Benedikt Meurer <be...@xfce.org>. -# +export XDT_AUTOGEN_REQUIRED_VERSION="4.7.0" (type xdt-autogen) >/dev/null 2>&1 || { cat >&2 <<EOF autogen.sh: You don't seem to have the Xfce development tools installed on @@ -17,37 +10,4 @@ autogen.sh: You don't seem to have the Xfce development tools installed on EOF exit 1 } - -# verify that po/LINGUAS is present -(test -f po/LINGUAS) >/dev/null 2>&1 || { - cat >&2 <<EOF -autogen.sh: The file po/LINGUAS could not be found. Please check your snapshot - or try to checkout again. -EOF - exit 1 -} - -echo 'dnl *** This file is automatically generated from configure.ac.in ***' \ - >configure.ac -echo 'dnl *** DO NOT EDIT! ***' >>configure.ac -echo >>configure.ac - -# substitute revision and linguas -linguas=$(sed -e '/^#/d' po/LINGUAS) -if [ -d .git/svn ]; then - revision=$(git svn find-rev trunk 2>/dev/null || - git svn find-rev origin/trunk 2>/dev/null || - git svn find-rev HEAD 2>/dev/null || - git svn find-rev master 2>/dev/null) -elif [ -d .svn ]; then - revision=$(LC_ALL=C svn info $0 | awk '/^Revision: / {printf "%05d\n", $2}') -else - revision=UNKNOWN -fi -sed -e "s/@LINGUAS@/${linguas}/g" \ - -e "s/@REVISION@/${revision}/g" \ - < "configure.ac.in" >> "configure.ac" - xdt-autogen $@ - -# vi:set ts=2 sw=2 et ai: diff --git a/configure.ac.in b/configure.ac.in index e225633..4635e91 100644 --- a/configure.ac.in +++ b/configure.ac.in @@ -2,25 +2,26 @@ dnl $Id$ dnl dnl eatmonkey - A download managers for monkeys and Capuchins! dnl -dnl 2008 Mike Massonnet <mmasson...@xfce.org> +dnl 2008-2009 Mike Massonnet <mmasson...@xfce.org> dnl dnl *************************** dnl *** Version information *** dnl *************************** m4_define([project_version_major], [0]) -m4_define([project_version_minor], [0]) -m4_define([project_version_micro], [1]) -m4_define([project_version_build], [...@revision@]) -m4_define([project_version_tag], [svn]) # leave empty for release -m4_define([project_version], [project_version_major().project_version_minor().project_version_micro()ifelse(project_version_tag(), [svn], [project_version_tag()-project_version_build()], [project_version_tag()])]) +m4_define([project_version_minor], [1]) +m4_define([project_version_micro], [0]) +m4_define([project_version_build], [...@revision@]) +m4_define([project_version_tag], [git]) # leave empty for release +m4_define([project_version], [project_version_major().project_version_minor().project_version_micro()ifelse(project_version_tag(), [git], [project_version_tag()-project_version_build()], [project_version_tag()])]) dnl *************************** dnl *** Initialize autoconf *** dnl *************************** -AC_COPYRIGHT([Copyright (c) 2008 +AC_COPYRIGHT([Copyright (c) 2008-2009 The Xfce development team. All rights reserved.]) -AC_INIT([eatmonkey], [project_version], [http://bugzilla.xfce.org/], [eatmonkey]) +AC_INIT([Eatmonkey], [project_version], [http://bugzilla.xfce.org/], [eatmonkey], + [http://goodies.xfce.org/projects/applications/eatmonkey]) AC_PREREQ([2.50]) AC_CANONICAL_TARGET() AC_REVISION([project_version_build]) @@ -28,7 +29,7 @@ AC_REVISION([project_version_build]) dnl *************************** dnl *** Initialize automake *** dnl *************************** -AM_INIT_AUTOMAKE([1.8 dist-bzip2 tar-ustar]) +AM_INIT_AUTOMAKE([1.11 dist-bzip2]) AM_CONFIG_HEADER([config.h]) AM_MAINTAINER_MODE() @@ -36,7 +37,9 @@ dnl ******************************** dnl *** Check for basic programs *** dnl ******************************** AC_PROG_CC() +AM_PROG_CC_C_O() AC_PROG_LD() +AC_PROG_LIBTOOL() AC_PROG_INSTALL() AC_PROG_INTLTOOL() @@ -45,42 +48,25 @@ dnl *** Check for standard headers *** dnl ********************************** AC_HEADER_STDC() -dnl -dnl ******************************* -dnl *** Check for X11 installed *** -dnl ******************************* -XDT_CHECK_LIBX11_REQUIRE() - -dnl ****************************** -dnl *** Check for i18n support *** -dnl ****************************** -XDT_I18N([...@linguas@]) - dnl *********************************** dnl *** Check for required packages *** dnl *********************************** -XDT_CHECK_PACKAGE([GIO], [gio-2.0], [2.16.0]) +XDT_CHECK_LIBX11_REQUIRE() XDT_CHECK_PACKAGE([GTK], [gtk+-2.0], [2.12.0]) XDT_CHECK_PACKAGE([UNIQUE], [unique-1.0], [1.0.0]) -XDT_CHECK_PACKAGE([LIBNOTIFY], [libnotify], [0.4.4]) XDT_CHECK_PACKAGE([LIBXFCE4UTIL], [libxfce4util-1.0], [4.4.0]) +XDT_CHECK_PACKAGE([LIBSOUP], [libsoup-2.4], [2.26]) + +dnl ****************************** +dnl *** Check for i18n support *** +dnl ****************************** +XDT_I18N([...@linguas@]) dnl *********************************** dnl *** Check for debugging support *** dnl *********************************** XDT_FEATURE_DEBUG() -dnl ********************************* -dnl *** Check for configure flags *** -dnl ********************************* -#AC_ARG_ENABLE([funky-colors], -# [AC_HELP_STRING([--enable-funky-colors], [Build with more funky colors])], -# [enable_funkycolors=$enableval], -# [enable_funkycolors=no]) -#if test "x$enable_funkycolors" = "xyes" ; then -# AC_DEFINE([MORE_FUNKY_COLOR_ON_SEARCH_ENTRY], [1], [""]) -#fi - dnl ************************ dnl *** Makefile outputs *** dnl ************************ diff --git a/eatmonkey.desktop.in b/eatmonkey.desktop.in index 410a7b1..a2fbc62 100644 --- a/eatmonkey.desktop.in +++ b/eatmonkey.desktop.in @@ -3,7 +3,7 @@ Version=1.0 _Name=Eatmonkey _Comment=Simple download manager for Xfce _GenericName=Download Manager -Exec=eatmonkey +Exec=eatmonkey --manager Icon=eatmonkey Terminal=false Type=Application diff --git a/po/LINGUAS b/po/LINGUAS deleted file mode 100644 index 1756fb5..0000000 --- a/po/LINGUAS +++ /dev/null @@ -1,2 +0,0 @@ -# set of available languages (in alphabetic order) - diff --git a/src/Makefile.am b/src/Makefile.am index dfbf48f..99ce1e8 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,28 +1,36 @@ -bin_PROGRAMS = eatmonkey - -eatmonkey_SOURCES = \ - main.c \ - statusicon.c statusicon.h \ - downloadmanager.c downloadmanager.h - -eatmonkey_CFLAGS = \ - @GIO_CFLAGS@ \ - @GTK_CFLAGS@ \ - @UNIQUE_CFLAGS@ \ - @LIBNOTIFY_CFLAGS@ \ - @LIBXFCE4UTIL_CFLAGS@ \ - -DDATADIR=\"$(datadir)\" \ - -DSRCDIR=\"$(top_srcdir)\" +INCLUDES = \ + -I${top_srcdir} \ + -DDATADIR=\"$(datadir)\" \ + -DSRCDIR=\"$(top_srcdir)\" \ + -DGETTEXT_PACKAGE=\"$(GETTEXT_PACKAGE)\" \ + -DPACKAGE_LOCALE_DIR=\"$(localedir)\" \ + -DLOCALEDIR=\"$(localedir)\" -eatmonkey_LDADD = \ - @GIO_LIBS@ \ - @GTK_LIBS@ \ - @UNIQUE_LIBS@ \ - @LIBNOTIFY_LIBS@ \ - @LIBXFCE4UTIL_LIBS@ +# # +# eatmonkey # +# # -INCLUDES = \ - -I${top_srcdir} \ - -DPACKAGE_LOCALE_DIR=\"$(localedir)\" \ - -DLOCALEDIR=\"$(localedir)\" +#bin_PROGRAMS = eatmonkey +# +#eatmonkey_VALAFLAGS = \ +# --thread \ +# --pkg=gtk+-2.0 \ +# --pkg=unique-1.0 \ +# --pkg=libsoup-2.4 +# +#eatmonkey_SOURCES = \ +# main.vala \ +# eatxmlrpc.vala +# +#eatmonkey_CFLAGS = \ +# @GTK_CFLAGS@ \ +# @UNIQUE_CFLAGS@ \ +# @LIBXFCE4UTIL_CFLAGS@ \ +# @LIBSOUP_CFLAGS@ +# +#eatmonkey_LDADD = \ +# @GTK_LIBS@ \ +# @UNIQUE_LIBS@ \ +# @LIBXFCE4UTIL_LIBS@ \ +# @LIBSOUP_LIBS@ diff --git a/src/downloadmanager.c b/src/downloadmanager.c deleted file mode 100644 index 57ab59a..0000000 --- a/src/downloadmanager.c +++ /dev/null @@ -1,318 +0,0 @@ -/* - * Copyright (c) 2008 Mike Massonnet <mmasson...@xfce.org> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Library General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <glib.h> -#include <gio/gio.h> -#include <libnotify/notify.h> -#include <libxfce4util/libxfce4util.h> - -#include "downloadmanager.h" - -G_DEFINE_TYPE (EatDm, eat_dm, G_TYPE_OBJECT) - -#define DM_GET_PRIVATE(o) \ - (G_TYPE_INSTANCE_GET_PRIVATE ((o), EAT_TYPE_DM, EatDmPrivate)) - -static void eat_dm_class_init (EatDmClass *klass); -static void eat_dm_init (EatDm *dm); - -static void cb_download_ready (GObject *source_object, - GAsyncResult *res, - gpointer user_data); -static void cb_download_progress (goffset current_num_bytes, - goffset total_num_bytes, - gpointer user_data); -static void cb_notification_close (NotifyNotification *notification, - gpointer user_data); -static void cb_hash_table_destroy_key (gpointer user_data); -static void cb_hash_table_destroy_value (gpointer user_data); - - - -enum -{ - DOWNLOADS_COMPLETED, - LAST_SIGNAL -}; - -static guint signals[LAST_SIGNAL] = { 0 }; - - - -typedef struct _Download Download; -struct _Download -{ - NotifyNotification *start_notification; - gchar *source; - gchar *destination; -}; - -struct _EatDmPrivate -{ - GHashTable *downloads; - gchar *destination_dir; -}; - - - -static GObjectClass *parent_class = NULL; - - - -static void -eat_dm_class_init (EatDmClass *klass) -{ - G_GNUC_UNUSED GObjectClass *gobject_class; - - g_type_class_add_private (klass, sizeof (EatDmPrivate)); - - parent_class = g_type_class_peek_parent (klass); - - gobject_class = G_OBJECT_CLASS (klass); - - signals[DOWNLOADS_COMPLETED] = - g_signal_new ("downloads-completed", G_TYPE_FROM_CLASS (klass), - G_SIGNAL_RUN_FIRST|G_SIGNAL_ACTION, - G_STRUCT_OFFSET (EatDmClass, downloads_completed), - NULL, NULL, - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, 0); -} - -static void -eat_dm_init (EatDm *dm) -{ - dm->priv = DM_GET_PRIVATE (dm); - - dm->priv->downloads = - g_hash_table_new_full (g_str_hash, g_str_equal, - (GDestroyNotify)cb_hash_table_destroy_key, - (GDestroyNotify)cb_hash_table_destroy_value); - - /* Init destination directory */ - dm->priv->destination_dir = g_strdup ("/tmp/downloads"); - if (g_mkdir_with_parents (dm->priv->destination_dir, 0755) == -1) - { - /* TODO bug the user to choose another directory */ - g_warning ("The destination folder can't be created"); - } - -} - -static void -eat_dm_dispose (EatDm *dm) -{ - g_free (dm->priv->destination_dir); -} - - - -EatDm * -eat_dm_new () -{ - return g_object_new (EAT_TYPE_DM, - NULL); -} - -void -eat_dm_add_uris (EatDm *dm, - const gchar **uris) -{ - gint i; - for (i = 0; NULL != uris[i]; i++) - eat_dm_add_uri (dm, uris[i]); -} - -void -eat_dm_add_uri (EatDm *dm, - const gchar *uri) -{ - GFile *src; - GFile *dst; - gchar *key; - gchar *filename; - gchar *destination; - Download *download; - GError *error = NULL; - - g_return_if_fail (G_UNLIKELY (NULL != uri)); - - if (G_UNLIKELY (NULL != g_hash_table_lookup (dm->priv->downloads, uri))) - { - /* TODO prevent the user that this file is being handled by the download - * manager */ - return; - } - - /* Set source file */ - src = g_file_new_for_uri (uri); - - /* Set destination file */ - filename = g_file_get_basename (src); - /* NOTE for portability: filename can be the letter of the hard-drive on Windows */ - if (filename[0] == '/') - { - g_free (filename); - filename = g_strdup ("index.html"); - } - destination = g_build_filename (dm->priv->destination_dir, filename, NULL); - dst = g_file_new_for_path (destination); - - /* Copy the file asynchronously */ - g_file_copy_async (src, dst, G_FILE_COPY_NONE, - G_PRIORITY_DEFAULT, - NULL, - (GFileProgressCallback)cb_download_progress, NULL, - (GAsyncReadyCallback)cb_download_ready, dm); - - /* Append a download entry to the download manager */ - download = g_slice_new0 (Download); - download->start_notification = NULL; - if (notify_is_initted ()) - { - download->start_notification = - notify_notification_new (_("Eatmonkey"), - _("Download started"), - GTK_STOCK_SAVE, NULL); - notify_notification_show (download->start_notification, NULL); - g_signal_connect (download->start_notification, "closed", - G_CALLBACK (cb_notification_close), download); - } - download->source = g_strdup (uri); - download->destination = g_strdup (destination); - - key = g_strdup (uri); - g_hash_table_insert (dm->priv->downloads, (gpointer)key, download); - - /* Clean up */ - g_free (filename); - g_free (destination); - - g_debug ("download started"); -} - -void -eat_dm_set_destination_dir (EatDm *dm, - const gchar *destination_dir) -{ - g_return_if_fail (G_UNLIKELY (NULL != destination_dir)); - - g_free (dm->priv->destination_dir); - dm->priv->destination_dir = g_strdup (destination_dir); -} - - - -static void -cb_download_ready (GObject *source_object, - GAsyncResult *res, - gpointer user_data) -{ - gchar *src; - EatDm *dm = user_data; - Download *download = NULL; - NotifyNotification *complete_notification; - GError *error = NULL; - - g_return_if_fail (G_LIKELY (G_IS_FILE (source_object))); - - src = g_file_get_uri (G_FILE (source_object)); - download = g_hash_table_lookup (dm->priv->downloads, src); - - if (notify_is_initted () && NULL != download->start_notification) - notify_notification_close (download->start_notification, NULL); - - if (!g_file_copy_finish (G_FILE (source_object), res, &error)) - { - switch (error->code) - { - case G_IO_ERROR_EXISTS: - /* TODO bug the user to rename the destination filename + add - * checkbox "Append automatically with a number and don't show this - * message again" */ - /* XXX we probably wish to intercept this problem before we start the - * download, not sure how it is possible to effectively save the - * source after g_file_copy_finish() has been called */ - g_debug ("The file already exists!"); - break; - } - } - else - { - if (notify_is_initted ()) - { - complete_notification = - notify_notification_new (_("Eatmonkey"), - _("The download is complete"), - GTK_STOCK_SAVE, NULL); - notify_notification_show (complete_notification, NULL); - g_signal_connect (complete_notification, "closed", - G_CALLBACK (cb_notification_close), NULL); - } - } - - /* Drop the download from the hash table */ - g_hash_table_remove (dm->priv->downloads, src); - g_free (src); - - if (g_hash_table_size (dm->priv->downloads) == 0) - g_signal_emit (dm, signals[DOWNLOADS_COMPLETED], 0); -} - -static void -cb_download_progress (goffset current_num_bytes, - goffset total_num_bytes, - gpointer user_data) -{ -#ifdef DEBUG - g_debug ("Progress: %d/%d", current_num_bytes, total_num_bytes); -#endif -} - -static void -cb_notification_close (NotifyNotification *notification, - gpointer user_data) -{ - Download *download = user_data; - - if (download != NULL) - download->start_notification = NULL; - - g_object_unref (notification); -} - -static void -cb_hash_table_destroy_key (gpointer user_data) -{ - gchar *key = user_data; - g_free (key); -} - -static void -cb_hash_table_destroy_value (gpointer user_data) -{ - Download *download = user_data; - g_free (download->source); - g_free (download->destination); - g_slice_free (Download, download); -} - diff --git a/src/downloadmanager.h b/src/downloadmanager.h deleted file mode 100644 index 2c7a9d2..0000000 --- a/src/downloadmanager.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2008 Mike Massonnet <mmasson...@xfce.org> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Library General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#ifndef __EAT_DOWNLOAD_MANAGER_H__ -#define __EAT_DOWNLOAD_MANAGER_H__ - -G_BEGIN_DECLS - -#define EAT_TYPE_DM (eat_dm_get_type()) - -#define EAT_DM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EAT_TYPE_DM, EatDm)) -#define EAT_DM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EAT_TYPE_DM, EatDmClass)) - -#define EAT_IS_DM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EAT_TYPE_DM)) -#define EAT_IS_DM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EAT_TYPE_DM)) - -#define EAT_DM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EAT_TYPE_DM, EatDmClass)) - -typedef struct _EatDmClass EatDmClass; -typedef struct _EatDm EatDm; -typedef struct _EatDmPrivate EatDmPrivate; - -struct _EatDmClass -{ - GObjectClass parent_class; - - void (*downloads_completed) (EatDm *dm, gpointer user_data); -}; - -struct _EatDm -{ - GObject parent; - - /* private */ - EatDmPrivate *priv; -}; - -GType eat_dm_get_type () G_GNUC_CONST; - -EatDm * eat_dm_new (); -void eat_dm_add_uris (EatDm *dm, - const gchar **uris); -void eat_dm_add_uri (EatDm *dm, - const gchar *uri); - -G_END_DECLS - -#endif - diff --git a/src/main.c b/src/main.c deleted file mode 100644 index 4b272d7..0000000 --- a/src/main.c +++ /dev/null @@ -1,202 +0,0 @@ -/* - * Copyright (c) 2008 Mike Massonnet <mmasson...@xfce.org> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Library General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#ifdef HAVE_STDLIB_H -#include <stdlib.h> -#endif - -#include <gtk/gtk.h> -#include <unique/unique.h> -#include <libnotify/notify.h> -#include <libxfce4util/libxfce4util.h> - -#include "statusicon.h" -#include "downloadmanager.h" - - - -static gboolean check_is_embedded (GtkStatusIcon *status_icon); -static UniqueResponse cb_message_received (UniqueApp *app, - UniqueCommand command, - UniqueMessageData *message, - guint time, - gpointer user_data); - - - -/* Option entries */ -static gboolean opt_version = FALSE; -static gchar **uris = NULL; -static GOptionEntry option_entries[] = -{ - { "version", 'v', 0, G_OPTION_ARG_NONE, &opt_version, N_("Version information"), NULL }, - { G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_STRING_ARRAY, &uris, N_("URIs"), NULL }, - { NULL } -}; - - - -gint -main (gint argc, - gchar *argv[]) -{ - UniqueApp *app; - UniqueMessageData *message; - UniqueResponse response; - GtkStatusIcon *status_icon; - EatDm *dm; - GError *error = NULL; - - xfce_textdomain (GETTEXT_PACKAGE, LOCALEDIR, "UTF-8"); - - /* Init GTK+ */ - if (!gtk_init_with_args (&argc, &argv, "[URIs]", option_entries, GETTEXT_PACKAGE, &error)) - { - if (G_LIKELY (error)) - { - /* Print error */ - g_print ("%s: %s.\n", PACKAGE_NAME, error->message); - g_print ("Type '%s --help' for usage.", PACKAGE_NAME); - g_print ("\n"); - - /* Cleanup */ - g_error_free (error); - } - else - g_error ("Unable to open display."); - - return EXIT_FAILURE; - } - - /* Print version information */ - if (G_UNLIKELY (opt_version)) - { - g_print ("%s %s\n", PACKAGE_NAME, PACKAGE_VERSION); - return EXIT_SUCCESS; - } - - /* Print short usage */ - if (G_UNLIKELY (NULL == uris)) - { - g_print ("No URIs specified.\n"); - g_print ("Type '%s --help' for usage.", PACKAGE_NAME); - g_print ("\n"); - return EXIT_FAILURE; - } - - app = unique_app_new ("org.Xfce.Eatmonkey", NULL); - - if (unique_app_is_running (app)) - { - /* Send a message to the first instance */ - message = unique_message_data_new (); - unique_message_data_set_uris (message, uris); - g_debug ("now sending the message"); - response = unique_app_send_message (app, UNIQUE_OPEN, message); - g_debug ("and the response is: %d", response); - - unique_message_data_free (message); - g_object_unref (app); - - return (response == UNIQUE_RESPONSE_OK) ? EXIT_SUCCESS : EXIT_FAILURE; - } - - /* Init libnotify */ - notify_init (PACKAGE_NAME); - - /* Status icon */ - status_icon = eat_statusicon_new (); - g_idle_add ((GSourceFunc)check_is_embedded, status_icon); - - /* Download manager */ - dm = eat_dm_new (); - eat_dm_add_uris (dm, uris); - - /* Connect signals */ - //g_signal_connect (dm, "downloads-completed", - // G_CALLBACK (gtk_main_quit), NULL); - g_signal_connect (app, "message-received", - G_CALLBACK (cb_message_received), dm); - - /* Start */ - gtk_main (); - - /* Quit */ - notify_uninit (); - g_object_unref (app); - - return EXIT_SUCCESS; -} - -static gboolean -check_is_embedded (GtkStatusIcon *status_icon) -{ - GtkWidget *dialog; - GtkWidget *vbox; - GtkWidget *checkbox; - - if (gtk_status_icon_is_embedded (status_icon)) - return FALSE; - - dialog = gtk_message_dialog_new_with_markup (NULL, 0, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, - _("<b>Eatmonkey</b>")); - gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), - _("There seem to be no system tray running on your desktop.")); - vbox = GTK_DIALOG (dialog)->vbox; - - checkbox = gtk_check_button_new_with_mnemonic (_("_Don't show this message again")); - gtk_widget_show (checkbox); - gtk_container_add (GTK_CONTAINER (vbox), checkbox); - - gtk_dialog_run (GTK_DIALOG (dialog)); - gtk_widget_destroy (dialog); - - return FALSE; -} - -static UniqueResponse -cb_message_received (UniqueApp *app, - UniqueCommand command, - UniqueMessageData *message, - guint time, - gpointer user_data) -{ - EatDm *dm = user_data; - gchar **uris; - - g_return_val_if_fail (G_LIKELY (NULL != dm), UNIQUE_RESPONSE_FAIL); - - switch (command) - { - case UNIQUE_OPEN: - uris = unique_message_data_get_uris (message); - eat_dm_add_uris (dm, uris); - g_strfreev (uris); - break; - - default: - return UNIQUE_RESPONSE_FAIL; - } - - return UNIQUE_RESPONSE_OK; -} - diff --git a/src/statusicon.c b/src/statusicon.c deleted file mode 100644 index 87325af..0000000 --- a/src/statusicon.c +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright (c) 2008 Mike Massonnet <mmasson...@xfce.org> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Library General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <gtk/gtk.h> - -#include "statusicon.h" - -G_DEFINE_TYPE (EatStatusicon, eat_statusicon, GTK_TYPE_STATUS_ICON) - -#define STATUSICON_GET_PRIVATE(o) \ - (G_TYPE_INSTANCE_GET_PRIVATE ((o), EAT_TYPE_STATUSICON, EatStatusiconPrivate)) - - - -static void eat_statusicon_class_init (EatStatusiconClass *klass); -static void eat_statusicon_init (EatStatusicon *statusicon); - -static void cb_activate (GtkStatusIcon *status_icon, - G_GNUC_UNUSED gpointer user_data); -static void cb_popup_menu (GtkStatusIcon *status_icon, - guint button, - guint activate_time, - G_GNUC_UNUSED gpointer user_data); - - - -struct _EatStatusiconPrivate -{ -}; - -static GObjectClass *parent_class = NULL; - - - -static void -eat_statusicon_class_init (EatStatusiconClass *klass) -{ - G_GNUC_UNUSED GObjectClass *object_class; - - //g_type_class_add_private (klass, sizeof (EatStatusiconPrivate)); - - parent_class = g_type_class_peek_parent (klass); - - object_class = G_OBJECT_CLASS (klass); -} - -static void -eat_statusicon_init (EatStatusicon *statusicon) -{ - g_signal_connect (statusicon, "activate", - G_CALLBACK (cb_activate), NULL); - g_signal_connect (statusicon, "popup-menu", - G_CALLBACK (cb_popup_menu), NULL); -} - - - -GtkStatusIcon * -eat_statusicon_new () -{ - return g_object_new (EAT_TYPE_STATUSICON, - "stock", GTK_STOCK_SAVE, - NULL); -} - - - -static void -cb_activate (GtkStatusIcon *status_icon, - G_GNUC_UNUSED gpointer user_data) -{ - g_message ("status icon activated"); -} - -static void -cb_popup_menu (GtkStatusIcon *status_icon, - guint button, - guint activate_time, - G_GNUC_UNUSED gpointer user_data) -{ - g_message ("status icon pop up menu (%d %d)", button, activate_time); -} - diff --git a/src/statusicon.h b/src/statusicon.h deleted file mode 100644 index fb95dab..0000000 --- a/src/statusicon.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) 2008 Mike Massonnet <mmasson...@xfce.org> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Library General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#ifndef __EAT_STATUSICON_H__ -#define __EAT_STATUSICON_H__ - -G_BEGIN_DECLS - -#define EAT_TYPE_STATUSICON (eat_statusicon_get_type()) - -#define EAT_STATUSICON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EAT_TYPE_STATUSICON, EatStatusicon)) -#define EAT_STATUSICON_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EAT_TYPE_STATUSICON, EatStatusiconClass)) - -#define EAT_IS_STATUSICON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EAT_TYPE_STATUSICON)) -#define EAT_IS_STATUSICON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EAT_TYPE_STATUSICON)) - -#define EAT_STATUSICON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EAT_TYPE_STATUSICON, EatStatusiconClass)) - -typedef struct _EatStatusiconClass EatStatusiconClass; -typedef struct _EatStatusicon EatStatusicon; -typedef struct _EatStatusiconPrivate EatStatusiconPrivate; - -struct _EatStatusiconClass -{ - GtkStatusIconClass parent_class; -}; - -struct _EatStatusicon -{ - GtkStatusIcon parent; -}; - -GType eat_statusicon_get_type () G_GNUC_CONST; - -GtkStatusIcon * eat_statusicon_new (); - -G_END_DECLS - -#endif - _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org http://foo-projects.org/mailman/listinfo/xfce4-commits