[Xfce4-commits] <parole:master> Delete unused files in the parole folder, only keep the dev headers.
Ali Abdallah
noreply at xfce.org
Sat Nov 21 14:34:07 CET 2009
Updating branch refs/heads/master
to 99e2c560a6604a734d7df6de489a5ccf301cb251 (commit)
from da0c54a0bc1436ae01f9a8e0447a4063c5517179 (commit)
commit 99e2c560a6604a734d7df6de489a5ccf301cb251
Author: Ali Abdallah <ali at ali-xfce.org>
Date: Sat Nov 21 14:31:50 2009 +0100
Delete unused files in the parole folder, only keep the dev headers.
parole/gmarshal.list | 2 -
parole/main.c | 327 ------
parole/org.parole.media.list.xml | 19 -
parole/org.parole.media.player.xml | 38 -
parole/parole-about.c | 81 --
parole/parole-about.h | 29 -
parole/parole-builder.c | 73 --
parole/parole-builder.h | 36 -
parole/parole-button.c | 249 -----
parole/parole-button.h | 71 --
parole/parole-conf-dialog.c | 407 --------
parole/parole-conf-dialog.h | 56 -
parole/parole-conf.c | 409 --------
parole/parole-conf.h | 54 -
parole/parole-debug.c | 81 --
parole/parole-debug.h | 66 --
parole/parole-disc-menu.c | 334 ------
parole/parole-disc-menu.h | 60 --
parole/parole-disc.c | 438 --------
parole/parole-disc.h | 67 --
parole/parole-file.c | 389 -------
parole/parole-filters.c | 223 ----
parole/parole-filters.h | 61 --
parole/parole-mediachooser.c | 286 ------
parole/parole-mediachooser.h | 57 -
parole/parole-medialist.c | 1381 -------------------------
parole/parole-medialist.h | 114 ---
parole/parole-module.c | 130 ---
parole/parole-module.h | 67 --
parole/parole-open-location.c | 244 -----
parole/parole-open-location.h | 57 -
parole/parole-pl-parser.c | 660 ------------
parole/parole-pl-parser.h | 48 -
parole/parole-player.c | 1965 ------------------------------------
parole/parole-player.h | 60 --
parole/parole-plugin.c | 662 ------------
parole/parole-plugins-manager.c | 590 -----------
parole/parole-plugins-manager.h | 61 --
parole/parole-rc-utils.c | 204 ----
parole/parole-rc-utils.h | 79 --
parole/parole-screensaver.c | 107 --
parole/parole-screensaver.h | 56 -
parole/parole-session.c | 174 ----
parole/parole-session.h | 61 --
parole/parole-statusbar.c | 321 ------
parole/parole-statusbar.h | 56 -
parole/parole-subtitle-encoding.c | 544 ----------
parole/parole-subtitle-encoding.h | 41 -
parole/parole-utils.c | 337 ------
parole/parole-utils.h | 42 -
parole/parole-vis.c | 73 --
parole/parole-vis.h | 29 -
52 files changed, 0 insertions(+), 12076 deletions(-)
diff --git a/parole/gmarshal.list b/parole/gmarshal.list
deleted file mode 100644
index 8f1d1ea..0000000
--- a/parole/gmarshal.list
+++ /dev/null
@@ -1,2 +0,0 @@
-VOID:STRING,STRING
-VOID:BOOL,POINTER
diff --git a/parole/main.c b/parole/main.c
deleted file mode 100644
index eb52f74..0000000
--- a/parole/main.c
+++ /dev/null
@@ -1,327 +0,0 @@
-/*
- * * Copyright (C) 2008-2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <unistd.h>
-#include <signal.h>
-
-#include <gtk/gtk.h>
-#include <glib.h>
-#include <gio/gio.h>
-
-#include <gst/gst.h>
-
-#include <libxfce4util/libxfce4util.h>
-
-#include <dbus/dbus-glib.h>
-#include <dbus/dbus-glib-lowlevel.h>
-
-#include "parole-player.h"
-#include "parole-plugins-manager.h"
-#include "parole-utils.h"
-#include "parole-session.h"
-#include "parole-dbus.h"
-#include "parole-builder.h"
-
-static void G_GNUC_NORETURN
-show_version (void)
-{
- g_print (_("\n"
- "Parole Media Player %s\n\n"
- "Part of the Xfce Goodies Project\n"
- "http://goodies.xfce.org\n\n"
- "Licensed under the GNU GPL.\n\n"), VERSION);
- exit (EXIT_SUCCESS);
-}
-
-static void
-parole_sig_handler (gint sig, gpointer data)
-{
- ParolePlayer *player = (ParolePlayer *) data;
-
- parole_player_terminate (player);
-}
-
-static void
-parole_send_play_disc (DBusGProxy *proxy, const gchar *uri)
-{
- GError *error = NULL;
-
- dbus_g_proxy_call (proxy, "PlayDisc", &error,
- G_TYPE_STRING, uri,
- G_TYPE_INVALID,
- G_TYPE_INVALID);
-
- if ( error )
- {
- g_critical ("Unable to send uri to Parole: %s", error->message);
- g_error_free (error);
- }
-}
-
-static void
-parole_send_files (DBusGProxy *proxy, gchar **filenames)
-{
- GFile *file;
- gchar **out_paths;
- GError *error = NULL;
- guint i;
-
- out_paths = g_new0 (gchar *, g_strv_length (filenames));
-
- for ( i = 0; filenames && filenames[i]; i++)
- {
- file = g_file_new_for_commandline_arg (filenames[i]);
- out_paths[i] = g_file_get_path (file);
- g_object_unref (file);
- }
-
- dbus_g_proxy_call (proxy, "AddFiles", &error,
- G_TYPE_STRV, out_paths,
- G_TYPE_INVALID,
- G_TYPE_INVALID);
-
-
- if ( error )
- {
- g_critical ("Unable to send media files to Parole: %s", error->message);
- g_error_free (error);
- }
-
- g_strfreev (out_paths);
-}
-
-static void
-parole_send (gchar **filenames)
-{
- DBusGProxy *proxy;
-
- proxy = parole_get_proxy (PAROLE_DBUS_PLAYLIST_PATH, PAROLE_DBUS_PLAYLIST_INTERFACE);
-
- if ( !proxy )
- g_error ("Unable to create proxy for %s", PAROLE_DBUS_NAME);
-
- if ( g_strv_length (filenames) == 1 && parole_is_uri_disc (filenames[0]))
- parole_send_play_disc (proxy, filenames[0]);
- else
- parole_send_files (proxy, filenames);
-
- g_object_unref (proxy);
-}
-
-static void
-parole_send_message (const gchar *message)
-{
- DBusGProxy *proxy;
- GError *error = NULL;
-
- proxy = parole_get_proxy (PAROLE_DBUS_PATH, PAROLE_DBUS_INTERFACE);
-
- dbus_g_proxy_call (proxy, message, &error,
- G_TYPE_INVALID,
- G_TYPE_INVALID);
-
- if ( error )
- {
- g_critical ("Failed to send message : %s : %s", message, error->message);
- g_error_free (error);
- }
-
- g_object_unref (proxy);
-
-}
-
-int main (int argc, char **argv)
-{
- ParolePlayer *player;
- ParoleSession *session;
- ParolePluginsManager *plugins;
- GtkBuilder *builder;
- GOptionContext *ctx;
- GOptionGroup *gst_option_group;
- GError *error = NULL;
-
- gchar **filenames = NULL;
- gboolean new_instance = FALSE;
- gboolean version = FALSE;
- gboolean play = FALSE;
- gboolean stop = FALSE;
- gboolean next_track = FALSE;
- gboolean prev_track = FALSE;
- gboolean seek_f = FALSE;
- gboolean seek_b = FALSE;
- gboolean raise_volume = FALSE;
- gboolean lower_volume = FALSE;
- gboolean mute = FALSE;
- gboolean no_plugins = FALSE;
- gchar *client_id = NULL;
-
- GOptionEntry option_entries[] =
- {
- { "new-instance", 'i', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &new_instance, N_("Open a new instance"), NULL },
- { "no-plugins", 'n', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &no_plugins, N_("Do not load plugins"), NULL },
- { "play", 'p', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &play, N_("Play or pause if already playing"), NULL },
- { "stop", 's', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &stop, N_("Stop playing"), NULL },
- { "next-track", 'N', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &next_track, N_("Next track"), NULL },
- { "previous-track", 'P', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &prev_track, N_("Previous track"), NULL },
- { "seek-f", 'f', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &seek_f, N_("Seek forward"), NULL },
- { "seek-b", 'b', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &seek_b, N_("Seek Backward"), NULL },
- { "raise-volume", 'r', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &raise_volume, N_("Raise volume"), NULL },
- { "lower-volume", 'l', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &lower_volume, N_("Lower volume"), NULL },
- { "mute", 'm', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &mute, N_("Mute volume"), NULL },
- { "version", 'V', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &version, N_("Version information"), NULL },
- { "sm-client-id", 0, G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_STRING, &client_id, NULL, NULL },
- {G_OPTION_REMAINING, '\0', 0, G_OPTION_ARG_FILENAME_ARRAY, &filenames, N_("Media to play"), NULL},
- { NULL, },
- };
-
- if ( !g_thread_supported () )
- g_thread_init (NULL);
-
- xfce_textdomain (GETTEXT_PACKAGE, LOCALEDIR, "UTF-8");
-
- g_set_application_name (PACKAGE_NAME);
-
- gtk_init (&argc, &argv);
-
- ctx = g_option_context_new (NULL);
-
- gst_option_group = gst_init_get_option_group ();
- g_option_context_add_main_entries (ctx, option_entries, GETTEXT_PACKAGE);
- g_option_context_set_translation_domain (ctx, GETTEXT_PACKAGE);
- g_option_context_add_group (ctx, gst_option_group);
-
- g_option_context_add_group (ctx, gtk_get_option_group (TRUE));
-
- if ( !g_option_context_parse (ctx, &argc, &argv, &error) )
- {
- g_print ("%s\n", error->message);
- g_print ("Type %s --help to list all available command line options", argv[0]);
- g_error_free (error);
- g_option_context_free (ctx);
- return EXIT_FAILURE;
- }
- g_option_context_free (ctx);
-
- if ( version )
- show_version ();
-
- if ( !new_instance && parole_dbus_name_has_owner (PAROLE_DBUS_NAME) )
- {
- g_print (_("Parole is already running, use -i to open a new instance\n"));
-
- if ( filenames && filenames[0] != NULL )
- parole_send (filenames);
-
- if ( play )
- parole_send_message ("Play");
-
- if ( stop )
- parole_send_message ("Stop");
-
- if ( next_track )
- parole_send_message ("NextTrack");
-
- if ( prev_track )
- parole_send_message ("PrevTrack");
-
- if ( seek_f )
- parole_send_message ("SeekForward");
-
- if ( seek_b )
- parole_send_message ("SeekBackward");
-
- if ( raise_volume )
- parole_send_message ("RaiseVolume");
-
- if ( lower_volume )
- parole_send_message ("LowerVolume");
-
- if ( mute )
- parole_send_message ("Mute");
- }
- else
- {
- builder = parole_builder_get_main_interface ();
- parole_dbus_register_name (PAROLE_DBUS_NAME);
- session = parole_session_get ();
-
- if ( client_id )
- parole_session_set_client_id (session, client_id);
-
- parole_session_real_init (session);
- player = parole_player_new ();
-
- if ( filenames && filenames[0] != NULL )
- {
- if ( g_strv_length (filenames) == 1 && parole_is_uri_disc (filenames[0]))
- {
- parole_player_play_uri_disc (player, filenames[0]);
- }
- else
- {
- ParoleMediaList *list;
- list = parole_player_get_media_list (player);
- parole_media_list_add_files (list, filenames);
- }
- }
-
- if ( xfce_posix_signal_handler_init (&error))
- {
- xfce_posix_signal_handler_set_handler(SIGHUP,
- parole_sig_handler,
- player, NULL);
-
- xfce_posix_signal_handler_set_handler(SIGINT,
- parole_sig_handler,
- player, NULL);
-
- xfce_posix_signal_handler_set_handler(SIGTERM,
- parole_sig_handler,
- player, NULL);
- }
- else
- {
- g_warning ("Unable to set up POSIX signal handlers: %s", error->message);
- g_error_free (error);
- }
-
- plugins = parole_plugins_manager_get (!no_plugins);
- parole_plugins_manager_load_plugins (plugins);
- g_object_unref (builder);
-
- gdk_notify_startup_complete ();
- gtk_main ();
-
- parole_dbus_release_name (PAROLE_DBUS_NAME);
- g_object_unref (plugins);
- g_object_unref (session);
- }
-
- gst_deinit ();
- return 0;
-}
diff --git a/parole/org.parole.media.list.xml b/parole/org.parole.media.list.xml
deleted file mode 100644
index 5f01a1d..0000000
--- a/parole/org.parole.media.list.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<node name="/">
- <interface name="org.Parole.Media.List">
- <annotation name="org.freedesktop.DBus.GLib.CSymbol"
- value="parole_media_list_dbus"/>
- <annotation name="org.freedesktop.DBus.GLib.ClientCSymbol"
- value="parole_media_list_dbus_client"/>
-
- <method name="AddFiles">
- <arg type="as" name="files" direction="in"/>
- </method>
-
- <method name="AddDisc">
- <arg type="s" name="uri" direction="in"/>
- </method>
-
- </interface>
-</node>
diff --git a/parole/org.parole.media.player.xml b/parole/org.parole.media.player.xml
deleted file mode 100644
index 0973af0..0000000
--- a/parole/org.parole.media.player.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<node name="/">
- <interface name="org.Parole.Media.Player">
- <annotation name="org.freedesktop.DBus.GLib.CSymbol"
- value="parole_player_dbus"/>
- <annotation name="org.freedesktop.DBus.GLib.ClientCSymbol"
- value="parole_player_dbus_client"/>
-
- <method name="Play">
- </method>
-
- <method name="Stop">
- </method>
-
- <method name="NextTrack">
- </method>
-
- <method name="PrevTrack">
- </method>
-
- <method name="SeekForward">
- </method>
-
- <method name="SeekBackward">
- </method>
-
- <method name="RaiseVolume">
- </method>
-
- <method name="LowerVolume">
- </method>
-
- <method name="Mute">
- </method>
-
- </interface>
-</node>
diff --git a/parole/parole-about.c b/parole/parole-about.c
deleted file mode 100644
index 9de0a88..0000000
--- a/parole/parole-about.c
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <libxfce4util/libxfce4util.h>
-#include <libxfcegui4/libxfcegui4.h>
-
-#include "parole-about.h"
-#include "parole-utils.h"
-
-void parole_about (void)
-{
- XfceAboutInfo *info;
- GtkWidget *dialog;
- gint x, y;
- GdkPixbuf *icon;
- guint n;
-
- static const struct
- {
- gchar *name, *email, *language;
- }
- translators[] =
- {
- {"", "", "",},
- };
-
- info = xfce_about_info_new ("Parole", VERSION, _("Parole Media Player"),
- XFCE_COPYRIGHT_TEXT ("2009", "Ali Abdallah"),
- XFCE_LICENSE_GPL);
-
- xfce_about_info_set_homepage (info, "http://goodies.xfce.org/projects/applications/parole");
- xfce_about_info_add_credit (info, "Ali Abdallah", "aliov at xfce.org", _("Author/Maintainer"));
-
-
- for (n = 0; n < G_N_ELEMENTS (translators); ++n)
- {
- gchar *s;
- s = g_strdup_printf (_("Translator (%s)"), translators[n].language);
- xfce_about_info_add_credit (info, translators[n].name, translators[n].email, s);
- g_free (s);
- }
-
- gtk_icon_size_lookup (GTK_ICON_SIZE_DIALOG, &x, &y);
- icon = parole_icon_load ("parole", x);
-
- dialog = xfce_about_dialog_new_with_values (NULL, info, icon);
-
-
- gtk_dialog_run (GTK_DIALOG (dialog));
- gtk_widget_destroy (dialog);
-
- xfce_about_info_free (info);
-
- if (icon)
- g_object_unref (G_OBJECT (icon));
-}
diff --git a/parole/parole-about.h b/parole/parole-about.h
deleted file mode 100644
index cb89c42..0000000
--- a/parole/parole-about.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifndef __PAROLE_ABOUT_H
-#define __PAROLE_ABOUT_H
-
-#include <gtk/gtk.h>
-
-void parole_about (void);
-
-
-#endif /* __PAROLE_ABOUT_H */
diff --git a/parole/parole-builder.c b/parole/parole-builder.c
deleted file mode 100644
index f3330bf..0000000
--- a/parole/parole-builder.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <libxfce4util/libxfce4util.h>
-
-#include "interfaces/parole_ui.h"
-#include "parole-builder.h"
-
-GtkBuilder *
-parole_builder_get_main_interface (void)
-{
- static gpointer parole_builder_object = NULL;
-
- if ( G_LIKELY (parole_builder_object != NULL) )
- {
- g_object_ref (parole_builder_object);
- }
- else
- {
- parole_builder_object = parole_builder_new_from_string (parole_ui, parole_ui_length);
- g_object_add_weak_pointer (parole_builder_object, &parole_builder_object);
- }
-
- return GTK_BUILDER (parole_builder_object);
-}
-
-GtkBuilder *parole_builder_new_from_string (const gchar *ui, gsize length)
-{
- GError *error = NULL;
- GtkBuilder *builder;
-
- builder = gtk_builder_new ();
-
- /*
- * Set the locale before loading the GtkBuilder interface definition
- */
- xfce_textdomain (GETTEXT_PACKAGE, LOCALEDIR, "UTF-8");
-
- gtk_builder_add_from_string (builder, ui, length, &error);
-
- if ( error )
- {
- g_critical ("%s", error->message);
- g_error_free (error);
- }
-
- return builder;
-}
diff --git a/parole/parole-builder.h b/parole/parole-builder.h
deleted file mode 100644
index 3f0cbf0..0000000
--- a/parole/parole-builder.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifndef __PAROLE_BUILDER_H
-#define __PAROLE_BUILDER_H
-
-#include <glib-object.h>
-#include <gtk/gtk.h>
-
-G_BEGIN_DECLS
-
-GtkBuilder *parole_builder_get_main_interface (void);
-
-GtkBuilder *parole_builder_new_from_string (const gchar *ui,
- gsize length);
-
-G_END_DECLS
-
-#endif /* __PAROLE_BUILDER_H */
diff --git a/parole/parole-button.c b/parole/parole-button.c
deleted file mode 100644
index 29841ea..0000000
--- a/parole/parole-button.c
+++ /dev/null
@@ -1,249 +0,0 @@
-/*
- * * Copyright (C) 2008-2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-
-/*
- * Based on code from gpm-button (gnome power manager)
- * Copyright (C) 2006-2007 Richard Hughes <richard at hughsie.com>
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#ifdef HAVE_XF86_KEYSYM
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <X11/X.h>
-#include <X11/XF86keysym.h>
-
-#include <gdk/gdkx.h>
-#include <gtk/gtk.h>
-
-#include <glib.h>
-
-#include <libxfce4util/libxfce4util.h>
-
-#include "parole-button.h"
-#include "parole-debug.h"
-#include "enum-gtypes.h"
-
-static void parole_button_finalize (GObject *object);
-
-#define PAROLE_BUTTON_GET_PRIVATE(o) \
-(G_TYPE_INSTANCE_GET_PRIVATE((o), PAROLE_TYPE_BUTTON, ParoleButtonPrivate))
-
-static struct
-{
- ParoleButtonKey key;
- guint key_code;
-} parole_key_map [PAROLE_KEY_NUMBERS] = { {0, 0}, };
-
-struct ParoleButtonPrivate
-{
- GdkScreen *screen;
- GdkWindow *window;
-
-};
-
-enum
-{
- BUTTON_PRESSED,
- LAST_SIGNAL
-};
-
-#define DUPLICATE_SHUTDOWN_TIMEOUT 4.0f
-
-static guint signals[LAST_SIGNAL] = { 0 };
-
-G_DEFINE_TYPE(ParoleButton, parole_button, G_TYPE_OBJECT)
-
-static guint
-parole_button_get_key (unsigned int keycode)
-{
- ParoleButtonKey key = PAROLE_KEY_UNKNOWN;
-
- guint i;
-
- for ( i = 0; i < G_N_ELEMENTS (parole_key_map); i++)
- {
- if ( parole_key_map [i].key_code == keycode )
- key = parole_key_map [i].key;
- }
-
- return key;
-}
-
-static GdkFilterReturn
-parole_button_filter_x_events (GdkXEvent *xevent, GdkEvent *ev, gpointer data)
-{
- ParoleButtonKey key;
- ParoleButton *button;
-
- XEvent *xev = (XEvent *) xevent;
-
- if ( xev->type != KeyPress )
- return GDK_FILTER_CONTINUE;
-
- key = parole_button_get_key (xev->xkey.keycode);
-
- if ( key != PAROLE_KEY_UNKNOWN )
- {
- button = (ParoleButton *) data;
-
- PAROLE_DEBUG_ENUM ("Key press", key, ENUM_GTYPE_BUTTON_KEY);
-
- g_signal_emit (G_OBJECT(button), signals[BUTTON_PRESSED], 0, key);
- return GDK_FILTER_REMOVE;
- }
-
- return GDK_FILTER_CONTINUE;
-}
-
-static gboolean
-parole_button_grab_keystring (ParoleButton *button, guint keycode)
-{
- Display *display;
- guint ret;
- guint modmask = 0;
-
- display = GDK_DISPLAY ();
-
- gdk_error_trap_push ();
-
- ret = XGrabKey (display, keycode, modmask,
- GDK_WINDOW_XID (button->priv->window), True,
- GrabModeAsync, GrabModeAsync);
-
- if ( ret == BadAccess )
- {
- g_warning ("Failed to grab modmask=%u, keycode=%li",
- modmask, (long int) keycode);
- return FALSE;
- }
-
- ret = XGrabKey (display, keycode, LockMask | modmask,
- GDK_WINDOW_XID (button->priv->window), True,
- GrabModeAsync, GrabModeAsync);
-
- if (ret == BadAccess)
- {
- g_warning ("Failed to grab modmask=%u, keycode=%li",
- LockMask | modmask, (long int) keycode);
- return FALSE;
- }
-
- gdk_flush ();
- gdk_error_trap_pop ();
- return TRUE;
-}
-
-
-static gboolean
-parole_button_xevent_key (ParoleButton *button, guint keysym , ParoleButtonKey key)
-{
- guint keycode = XKeysymToKeycode (GDK_DISPLAY(), keysym);
-
- if ( keycode == 0 )
- {
- g_warning ("could not map keysym %x to keycode\n", keysym);
- return FALSE;
- }
-
- if ( !parole_button_grab_keystring(button, keycode))
- {
- g_warning ("Failed to grab %i\n", keycode);
- return FALSE;
- }
-
- PAROLE_DEBUG_ENUM_FULL (key, ENUM_GTYPE_BUTTON_KEY, "Grabbed key %li ", (long int) keycode);
-
- parole_key_map [key].key_code = keycode;
- parole_key_map [key].key = key;
-
- return TRUE;
-}
-
-static void
-parole_button_setup (ParoleButton *button)
-{
- button->priv->screen = gdk_screen_get_default ();
- button->priv->window = gdk_screen_get_root_window (button->priv->screen);
-
- parole_button_xevent_key (button, XF86XK_AudioPlay, PAROLE_KEY_AUDIO_PLAY);
- parole_button_xevent_key (button, XF86XK_AudioStop, PAROLE_KEY_AUDIO_STOP);
- parole_button_xevent_key (button, XF86XK_AudioPrev, PAROLE_KEY_AUDIO_PREV);
- parole_button_xevent_key (button, XF86XK_AudioNext, PAROLE_KEY_AUDIO_NEXT);
-
- gdk_window_add_filter (button->priv->window,
- parole_button_filter_x_events, button);
-}
-
-static void
-parole_button_class_init(ParoleButtonClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS(klass);
-
- signals [BUTTON_PRESSED] =
- g_signal_new ("button-pressed",
- PAROLE_TYPE_BUTTON,
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (ParoleButtonClass, button_pressed),
- NULL, NULL,
- g_cclosure_marshal_VOID__ENUM,
- G_TYPE_NONE, 1, ENUM_GTYPE_BUTTON_KEY);
-
- object_class->finalize = parole_button_finalize;
-
- g_type_class_add_private (klass, sizeof (ParoleButtonPrivate));
-}
-
-static void
-parole_button_init (ParoleButton *button)
-{
- button->priv = PAROLE_BUTTON_GET_PRIVATE (button);
-
- button->priv->screen = NULL;
- button->priv->window = NULL;
-
- parole_button_setup (button);
-}
-
-static void
-parole_button_finalize (GObject *object)
-{
- G_OBJECT_CLASS(parole_button_parent_class)->finalize(object);
-}
-
-ParoleButton *
-parole_button_new (void)
-{
- ParoleButton *button = NULL;
-
- button = g_object_new (PAROLE_TYPE_BUTTON, NULL);
-
- return button;
-}
-
-#endif /*HAVE_XF86_KEYSYM*/
diff --git a/parole/parole-button.h b/parole/parole-button.h
deleted file mode 100644
index 3eca4a0..0000000
--- a/parole/parole-button.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * * Copyright (C) 2008-2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifndef __PAROLE_BUTTON_H
-#define __PAROLE_BUTTON_H
-
-#include <glib-object.h>
-
-typedef enum
-{
- PAROLE_KEY_UNKNOWN,
- PAROLE_KEY_AUDIO_PLAY,
- PAROLE_KEY_AUDIO_STOP,
- PAROLE_KEY_AUDIO_PREV,
- PAROLE_KEY_AUDIO_NEXT,
- PAROLE_KEY_NUMBERS,
-
-} ParoleButtonKey;
-
-#ifdef HAVE_XF86_KEYSYM
-
-G_BEGIN_DECLS
-
-#define PAROLE_TYPE_BUTTON (parole_button_get_type () )
-#define PAROLE_BUTTON(o) (G_TYPE_CHECK_INSTANCE_CAST((o), PAROLE_TYPE_BUTTON, ParoleButton))
-#define PAROLE_IS_BUTTON(o) (G_TYPE_CHECK_INSTANCE_TYPE((o), PAROLE_TYPE_BUTTON))
-
-typedef struct ParoleButtonPrivate ParoleButtonPrivate;
-
-typedef struct
-{
- GObject parent;
- ParoleButtonPrivate *priv;
-
-} ParoleButton;
-
-typedef struct
-{
- GObjectClass parent_class;
-
- void (*button_pressed) (ParoleButton *button,
- ParoleButtonKey type);
-
-} ParoleButtonClass;
-
-GType parole_button_get_type (void) G_GNUC_CONST;
-
-ParoleButton *parole_button_new (void);
-
-G_END_DECLS
-
-#endif /*HAVE_XF86_KEYSYM*/
-
-#endif /* __PAROLE_BUTTON_H */
diff --git a/parole/parole-conf-dialog.c b/parole/parole-conf-dialog.c
deleted file mode 100644
index e6db9b6..0000000
--- a/parole/parole-conf-dialog.c
+++ /dev/null
@@ -1,407 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "interfaces/parole-settings_ui.h"
-
-#include "parole-gst.h"
-#include "parole-builder.h"
-#include "parole-conf-dialog.h"
-#include "parole-conf.h"
-#include "parole-vis.h"
-#include "parole-subtitle-encoding.h"
-
-/*
- * GtkBuilder Callbacks
- */
-
-void parole_conf_dialog_response_cb (GtkDialog *dialog,
- gint response_id,
- ParoleConfDialog *self);
-
-void parole_conf_dialog_enable_vis_changed_cb (GtkToggleButton *widget,
- ParoleConfDialog *self);
-
-void parole_conf_dialog_vis_plugin_changed_cb (GtkComboBox *widget,
- ParoleConfDialog *self);
-
-void parole_conf_dialog_font_set_cb (GtkFontButton *button,
- ParoleConfDialog *self);
-
-void parole_conf_dialog_enable_subtitle_changed_cb (GtkToggleButton *widget,
- ParoleConfDialog *self);
-
-void parole_conf_dialog_subtitle_encoding_changed_cb (GtkComboBox *widget,
- ParoleConfDialog *self);
-
-void brightness_value_changed_cb (GtkRange *range,
- ParoleConfDialog *self);
-
-void contrast_value_changed_cb (GtkRange *range,
- ParoleConfDialog *self);
-
-void hue_value_changed_cb (GtkRange *range,
- ParoleConfDialog *self);
-
-void saturation_value_changed_cb (GtkRange *range,
- ParoleConfDialog *self);
-
-void reset_color_clicked_cb (GtkButton *button,
- ParoleConfDialog *self);
-/*
- * End of GtkBuilder callbacks
- */
-
-#define PAROLE_CONF_DIALOG_GET_PRIVATE(o) \
-(G_TYPE_INSTANCE_GET_PRIVATE ((o), PAROLE_TYPE_CONF_DIALOG, ParoleConfDialogPrivate))
-
-struct ParoleConfDialogPrivate
-{
- ParoleConf *conf;
-
- GHashTable *vis_plugins;
-
- GtkWidget *vis_combox;
- GtkWidget *toggle_vis;
- GtkWidget *toggle_subtitle;
- GtkWidget *font_button;
- GtkWidget *encoding;
- GtkWidget *brightness;
- GtkWidget *contrast;
- GtkWidget *hue;
- GtkWidget *saturation;
-};
-
-G_DEFINE_TYPE (ParoleConfDialog, parole_conf_dialog, G_TYPE_OBJECT)
-
-static void
-parole_conf_dialog_destroy (GtkWidget *widget, ParoleConfDialog *self)
-{
- gtk_widget_destroy (widget);
- g_object_unref (self);
-}
-
-void reset_color_clicked_cb (GtkButton *button, ParoleConfDialog *self)
-{
- gtk_range_set_value (GTK_RANGE (self->priv->brightness), 0);
- gtk_range_set_value (GTK_RANGE (self->priv->contrast), 0);
- gtk_range_set_value (GTK_RANGE (self->priv->hue), 0);
- gtk_range_set_value (GTK_RANGE (self->priv->saturation), 0);
-
-}
-
-void parole_conf_dialog_response_cb (GtkDialog *dialog, gint response_id, ParoleConfDialog *self)
-{
- switch (response_id)
- {
- case GTK_RESPONSE_HELP:
- break;
- default:
- parole_conf_dialog_destroy (GTK_WIDGET (dialog), self);
- break;
- }
-}
-
-void parole_conf_dialog_subtitle_encoding_changed_cb (GtkComboBox *widget, ParoleConfDialog *self)
-{
- g_object_set (G_OBJECT (self->priv->conf),
- "subtitle-encoding", parole_subtitle_encoding_get_selected (widget),
- NULL);
-}
-
-void parole_conf_dialog_enable_vis_changed_cb (GtkToggleButton *widget, ParoleConfDialog *self)
-{
- gboolean active;
-
- active = gtk_toggle_button_get_active (widget);
-
- g_object_set (G_OBJECT (self->priv->conf),
- "vis-enabled", active,
- NULL);
-
- gtk_widget_set_sensitive (self->priv->vis_combox, active);
-}
-
-static void
-set_effect_value (ParoleConfDialog *self, GtkRange *range, const gchar *name)
-{
- gint value;
-
- value = gtk_range_get_value (range);
-
- g_object_set (G_OBJECT (self->priv->conf),
- name, value,
- NULL);
-}
-
-void brightness_value_changed_cb (GtkRange *range, ParoleConfDialog *self)
-{
- set_effect_value (self, range, "brightness");
-}
-
-void contrast_value_changed_cb (GtkRange *range, ParoleConfDialog *self)
-{
- set_effect_value (self, range, "contrast");
-}
-
-void hue_value_changed_cb (GtkRange *range, ParoleConfDialog *self)
-{
- set_effect_value (self, range, "hue");
-}
-
-void saturation_value_changed_cb (GtkRange *range, ParoleConfDialog *self)
-{
- set_effect_value (self, range, "saturation");
-}
-
-void parole_conf_dialog_vis_plugin_changed_cb (GtkComboBox *widget, ParoleConfDialog *self)
-{
- gchar *active;
- GstElementFactory *f;
-
- active = gtk_combo_box_get_active_text (widget);
-
- f = g_hash_table_lookup (self->priv->vis_plugins, active);
-
- if ( f )
- {
- g_object_set (G_OBJECT (self->priv->conf),
- "vis-name", GST_PLUGIN_FEATURE_NAME (f),
- NULL);
- }
-
- g_free (active);
-}
-
-void parole_conf_dialog_font_set_cb (GtkFontButton *button, ParoleConfDialog *self)
-{
- g_object_set (G_OBJECT (self->priv->conf),
- "subtitle-font", gtk_font_button_get_font_name (button),
- NULL);
-}
-
-void parole_conf_dialog_enable_subtitle_changed_cb (GtkToggleButton *widget, ParoleConfDialog *self)
-{
- gboolean active;
-
- active = gtk_toggle_button_get_active (widget);
-
- g_object_set (G_OBJECT (self->priv->conf),
- "enable-subtitle", active,
- NULL);
-
- gtk_widget_set_sensitive (self->priv->font_button, active);
-
-}
-
-static void
-parole_conf_dialog_finalize (GObject *object)
-{
- ParoleConfDialog *self;
-
- self = PAROLE_CONF_DIALOG (object);
-
- g_object_unref (self->priv->conf);
- g_hash_table_destroy (self->priv->vis_plugins);
-
- G_OBJECT_CLASS (parole_conf_dialog_parent_class)->finalize (object);
-}
-
-static void
-parole_conf_dialog_class_init (ParoleConfDialogClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
- object_class->finalize = parole_conf_dialog_finalize;
-
- g_type_class_add_private (klass, sizeof (ParoleConfDialogPrivate));
-}
-
-static void
-parole_conf_dialog_init (ParoleConfDialog *self)
-{
- self->priv = PAROLE_CONF_DIALOG_GET_PRIVATE (self);
- self->priv->conf = parole_conf_new ();
-
- self->priv->vis_plugins = parole_vis_get_plugins ();
-}
-
-static void
-parole_conf_dialog_add_vis_plugins (gpointer key, gpointer value, GtkWidget *combox)
-{
- gtk_combo_box_append_text (GTK_COMBO_BOX (combox), (const gchar *) key);
-}
-
-static gboolean
-parole_conf_dialog_set_default_vis_plugin (GtkTreeModel *model, GtkTreePath *path,
- GtkTreeIter *iter, ParoleConfDialog *self)
-{
- GstElementFactory *f;
- gchar *vis_name;
- gchar *combox_text;
- gboolean ret = FALSE;
-
- g_object_get (G_OBJECT (self->priv->conf),
- "vis-name", &vis_name,
- NULL);
-
- gtk_tree_model_get (model, iter,
- 0, &combox_text,
- -1);
-
- f = g_hash_table_lookup (self->priv->vis_plugins, combox_text);
-
- if ( !g_strcmp0 (vis_name, "none") )
- {
- if ( !g_strcmp0 (GST_PLUGIN_FEATURE_NAME (f), "Goom") )
- ret = TRUE;
- }
- else if ( !g_strcmp0 (GST_PLUGIN_FEATURE_NAME (f), vis_name) )
- {
- ret = TRUE;
- }
-
- if ( ret == TRUE )
- gtk_combo_box_set_active_iter (GTK_COMBO_BOX (self->priv->vis_combox), iter);
-
- return ret;
-}
-
-static void
-parole_conf_dialog_set_defaults (ParoleConfDialog *self)
-{
- GtkTreeModel *model;
- gboolean vis_enabled;
- gboolean subtitle;
- gchar *subtitle_font;
- gchar *subtitle_encoding;
-
- g_object_get (G_OBJECT (self->priv->conf),
- "vis-enabled", &vis_enabled,
- "enable-subtitle", &subtitle,
- "subtitle-font", &subtitle_font,
- "subtitle-encoding", &subtitle_encoding,
- NULL);
-
- gtk_widget_set_sensitive (self->priv->vis_combox, vis_enabled);
- gtk_widget_set_sensitive (self->priv->font_button, subtitle);
-
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->priv->toggle_vis), vis_enabled);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->priv->toggle_subtitle), subtitle);
-
- model = gtk_combo_box_get_model (GTK_COMBO_BOX (self->priv->vis_combox));
-
- gtk_tree_model_foreach (model,
- (GtkTreeModelForeachFunc) parole_conf_dialog_set_default_vis_plugin,
- self);
-
- parole_subtitle_encoding_set (GTK_COMBO_BOX (self->priv->encoding), subtitle_encoding);
-
- gtk_font_button_set_font_name (GTK_FONT_BUTTON (self->priv->font_button), subtitle_font);
-
- g_free (subtitle_font);
- g_free (subtitle_encoding);
-}
-
-ParoleConfDialog *
-parole_conf_dialog_new (void)
-{
- ParoleConfDialog *parole_conf_dialog = NULL;
- parole_conf_dialog = g_object_new (PAROLE_TYPE_CONF_DIALOG, NULL);
- return parole_conf_dialog;
-}
-
-void parole_conf_dialog_open (ParoleConfDialog *self, GtkWidget *parent)
-{
- GtkBuilder *builder;
- GtkWidget *dialog;
- GtkWidget *combox;
- gboolean with_display;
-
- builder = parole_builder_new_from_string (parole_settings_ui, parole_settings_ui_length);
-
- dialog = GTK_WIDGET (gtk_builder_get_object (builder, "settings-dialog"));
- combox = GTK_WIDGET (gtk_builder_get_object (builder, "vis-combobox"));
-
- self->priv->toggle_vis = GTK_WIDGET (gtk_builder_get_object (builder, "enable-vis"));
- self->priv->toggle_subtitle = GTK_WIDGET (gtk_builder_get_object (builder, "enable-subtitle"));
- self->priv->font_button = GTK_WIDGET (gtk_builder_get_object (builder, "fontbutton"));
- self->priv->encoding = GTK_WIDGET (gtk_builder_get_object (builder, "encoding"));
-
- parole_subtitle_encoding_init (GTK_COMBO_BOX (self->priv->encoding));
-
- g_hash_table_foreach (self->priv->vis_plugins, (GHFunc) parole_conf_dialog_add_vis_plugins, combox);
-
- gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (parent));
-
- self->priv->vis_combox = combox;
-
- parole_conf_dialog_set_defaults (self);
-
- with_display = parole_gst_get_is_xvimage_sink (PAROLE_GST (parole_gst_get ()));
-
- if ( !with_display )
- {
- gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (builder, "frame-display")));
- }
- else
- {
- gint brightness_value;
- gint contrast_value;
- gint hue_value;
- gint saturation_value;
-
- self->priv->brightness = GTK_WIDGET (gtk_builder_get_object (builder, "brightness"));
- self->priv->contrast = GTK_WIDGET (gtk_builder_get_object (builder, "contrast"));
- self->priv->hue = GTK_WIDGET (gtk_builder_get_object (builder, "hue"));
- self->priv->saturation = GTK_WIDGET (gtk_builder_get_object (builder, "saturation"));
-
- gtk_range_set_range (GTK_RANGE (self->priv->brightness), -1000, 1000);
- gtk_range_set_range (GTK_RANGE (self->priv->contrast), -1000, 1000);
- gtk_range_set_range (GTK_RANGE (self->priv->saturation), -1000, 1000);
- gtk_range_set_range (GTK_RANGE (self->priv->hue), -1000, 1000);
-
- g_object_get (G_OBJECT (self->priv->conf),
- "brightness", &brightness_value,
- "contrast", &contrast_value,
- "hue", &hue_value,
- "saturation", &saturation_value,
- NULL);
-
- gtk_range_set_value (GTK_RANGE (self->priv->brightness), brightness_value);
- gtk_range_set_value (GTK_RANGE (self->priv->contrast), contrast_value);
- gtk_range_set_value (GTK_RANGE (self->priv->hue), hue_value);
- gtk_range_set_value (GTK_RANGE (self->priv->saturation), saturation_value);
-
- }
-
- gtk_builder_connect_signals (builder, self);
-
- g_object_unref (builder);
-
- gtk_widget_show (dialog);
-}
diff --git a/parole/parole-conf-dialog.h b/parole/parole-conf-dialog.h
deleted file mode 100644
index 967008f..0000000
--- a/parole/parole-conf-dialog.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifndef __PAROLE_CONF_DIALOG_H
-#define __PAROLE_CONF_DIALOG_H
-
-#include <glib-object.h>
-#include <gtk/gtk.h>
-
-G_BEGIN_DECLS
-
-#define PAROLE_TYPE_CONF_DIALOG (parole_conf_dialog_get_type () )
-#define PAROLE_CONF_DIALOG(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), PAROLE_TYPE_CONF_DIALOG, ParoleConfDialog))
-#define PAROLE_IS_CONF_DIALOG(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), PAROLE_TYPE_CONF_DIALOG))
-
-typedef struct ParoleConfDialogPrivate ParoleConfDialogPrivate;
-
-typedef struct
-{
- GObject parent;
- ParoleConfDialogPrivate *priv;
-
-} ParoleConfDialog;
-
-typedef struct
-{
- GObjectClass parent_class;
-
-} ParoleConfDialogClass;
-
-GType parole_conf_dialog_get_type (void) G_GNUC_CONST;
-ParoleConfDialog *parole_conf_dialog_new (void);
-
-void parole_conf_dialog_open (ParoleConfDialog *self,
- GtkWidget *parent);
-
-G_END_DECLS
-
-#endif /* __PAROLE_CONF_DIALOG_H */
diff --git a/parole/parole-conf.c b/parole/parole-conf.c
deleted file mode 100644
index 21136c4..0000000
--- a/parole/parole-conf.c
+++ /dev/null
@@ -1,409 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <glib.h>
-
-#include "parole-conf.h"
-#include "parole-rc-utils.h"
-#include "enum-gtypes.h"
-
-#include "gst/parole-gst.h"
-#include "gst/gst-enum-types.h"
-
-#define PAROLE_CONF_GET_PRIVATE(o) \
-(G_TYPE_INSTANCE_GET_PRIVATE ((o), PAROLE_TYPE_CONF, ParoleConfPrivate))
-
-struct ParoleConfPrivate
-{
- GValue *values;
-};
-
-static gpointer parole_conf_object = NULL;
-
-G_DEFINE_TYPE (ParoleConf, parole_conf, G_TYPE_OBJECT)
-
-enum
-{
- PROP_0,
- PROP_VIS_ENABLED,
- PROP_VIS_NAME,
- PROP_SUBTITLE_ENABLED,
- PROP_SUBTITLE_FONT,
- PROP_SUBTITLE_ENCODING,
- PROP_REPEAT,
- PROP_SHUFFLE,
- PROP_BRIGHTNESS,
- PROP_CONTRAST,
- PROP_HUE,
- PROP_SATURATION,
- PROP_ASPECT_RATIO,
- PROP_WINDOW_WIDTH,
- PROP_WINDOW_HEIGHT,
- N_PROP
-};
-
-static void parole_conf_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- ParoleConf *conf;
- GValue *dst;
- GValue save_dst = { 0, };
-
- conf = PAROLE_CONF (object);
-
- dst = conf->priv->values + prop_id;
-
- if ( !G_IS_VALUE (dst) )
- {
- g_value_init (dst, pspec->value_type);
- g_param_value_set_default (pspec, dst);
- }
-
- if ( g_param_values_cmp (pspec, value, dst) != 0 )
- {
- g_value_copy (value, dst);
- g_object_notify (object, pspec->name);
-
- if ( pspec->value_type != G_TYPE_STRING )
- {
- g_value_init (&save_dst, G_TYPE_STRING);
-
- if ( G_LIKELY (g_value_transform (value, &save_dst)) )
- {
- g_object_set_property (G_OBJECT (conf), pspec->name, &save_dst);
- parole_rc_write_entry_string (pspec->name, PAROLE_RC_GROUP_GENERAL, g_value_get_string (&save_dst));
- }
- else
- g_warning ("Unable to save property : %s", pspec->name);
-
- g_value_unset (&save_dst);
- }
- else
- {
- parole_rc_write_entry_string (pspec->name, PAROLE_RC_GROUP_GENERAL, g_value_get_string (value));
- }
- }
-}
-
-static void parole_conf_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- ParoleConf *conf;
- GValue *src;
-
- conf = PAROLE_CONF (object);
-
- src = conf->priv->values + prop_id;
-
- if (G_VALUE_HOLDS (src, pspec->value_type))
- {
- if (G_LIKELY (pspec->value_type == G_TYPE_STRING))
- g_value_set_static_string (value, g_value_get_string (src));
- else
- g_value_copy (src, value);
- }
- else
- {
- g_param_value_set_default (pspec, value);
- }
-}
-
-static void
-parole_conf_finalize (GObject *object)
-{
- ParoleConf *conf;
- guint i;
-
- conf = PAROLE_CONF (object);
-
- for ( i = 0; i < N_PROP; i++)
- {
- if ( G_IS_VALUE (conf->priv->values + i) )
- g_value_unset (conf->priv->values + i);
- }
-
- g_free (conf->priv->values);
-
- G_OBJECT_CLASS (parole_conf_parent_class)->finalize (object);
-
-}
-
-static void
-transform_string_to_boolean (const GValue *src,
- GValue *dst)
-{
- g_value_set_boolean (dst, !g_strcmp0 (g_value_get_string (src), "TRUE"));
-}
-
-static void
-transform_string_to_int (const GValue *src,
- GValue *dst)
-{
- g_value_set_int (dst, strtol (g_value_get_string (src), NULL, 10));
-}
-
-static void
-transform_string_to_enum (const GValue *src,
- GValue *dst)
-{
- GEnumClass *genum_class;
- GEnumValue *genum_value;
-
- genum_class = g_type_class_peek (G_VALUE_TYPE (dst));
- genum_value = g_enum_get_value_by_name (genum_class, g_value_get_string (src));
-
- if (G_UNLIKELY (genum_value == NULL))
- genum_value = genum_class->values;
- g_value_set_enum (dst, genum_value->value);
-}
-
-static void
-parole_conf_class_init (ParoleConfClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
- object_class->finalize = parole_conf_finalize;
-
- object_class->get_property = parole_conf_get_property;
- object_class->set_property = parole_conf_set_property;
-
- if (!g_value_type_transformable (G_TYPE_STRING, G_TYPE_INT))
- g_value_register_transform_func (G_TYPE_STRING, G_TYPE_INT, transform_string_to_int);
-
- if (!g_value_type_transformable (G_TYPE_STRING, G_TYPE_BOOLEAN))
- g_value_register_transform_func (G_TYPE_STRING, G_TYPE_BOOLEAN, transform_string_to_boolean);
-
- if (!g_value_type_transformable (G_TYPE_STRING, GST_ENUM_TYPE_ASPECT_RATIO))
- g_value_register_transform_func (G_TYPE_STRING, GST_ENUM_TYPE_ASPECT_RATIO, transform_string_to_enum);
-
- g_object_class_install_property (object_class,
- PROP_VIS_ENABLED,
- g_param_spec_boolean ("vis-enabled",
- NULL, NULL,
- FALSE,
- G_PARAM_READWRITE));
-
- g_object_class_install_property (object_class,
- PROP_VIS_NAME,
- g_param_spec_string ("vis-name",
- NULL, NULL,
- "none",
- G_PARAM_READWRITE));
-
- g_object_class_install_property (object_class,
- PROP_SUBTITLE_ENCODING,
- g_param_spec_string ("subtitle-encoding",
- NULL, NULL,
- "UTF-8",
- G_PARAM_READWRITE));
-
- g_object_class_install_property (object_class,
- PROP_SUBTITLE_ENABLED,
- g_param_spec_boolean ("enable-subtitle",
- NULL, NULL,
- TRUE,
- G_PARAM_READWRITE));
-
- g_object_class_install_property (object_class,
- PROP_SUBTITLE_FONT,
- g_param_spec_string ("subtitle-font",
- NULL, NULL,
- "Sans 12",
- G_PARAM_READWRITE));
-
- g_object_class_install_property (object_class,
- PROP_REPEAT,
- g_param_spec_boolean ("repeat",
- NULL, NULL,
- FALSE,
- G_PARAM_READWRITE));
-
- g_object_class_install_property (object_class,
- PROP_SHUFFLE,
- g_param_spec_boolean ("shuffle",
- NULL, NULL,
- FALSE,
- G_PARAM_READWRITE));
-
-
- g_object_class_install_property (object_class,
- PROP_CONTRAST,
- g_param_spec_int ("contrast",
- NULL, NULL,
- -1000,
- 1000,
- 0,
- G_PARAM_READWRITE));
-
- g_object_class_install_property (object_class,
- PROP_HUE,
- g_param_spec_int ("hue",
- NULL, NULL,
- -1000,
- 1000,
- 0,
- G_PARAM_READWRITE));
- g_object_class_install_property (object_class,
- PROP_SATURATION,
- g_param_spec_int ("saturation",
- NULL, NULL,
- -1000,
- 1000,
- 0,
- G_PARAM_READWRITE));
- g_object_class_install_property (object_class,
- PROP_BRIGHTNESS,
- g_param_spec_int ("brightness",
- NULL, NULL,
- -1000,
- 1000,
- 0,
- G_PARAM_READWRITE));
-
- g_object_class_install_property (object_class,
- PROP_ASPECT_RATIO,
- g_param_spec_enum ("aspect-ratio",
- NULL, NULL,
- GST_ENUM_TYPE_ASPECT_RATIO,
- PAROLE_ASPECT_RATIO_NONE,
- G_PARAM_READWRITE));
-
- g_object_class_install_property (object_class,
- PROP_WINDOW_WIDTH,
- g_param_spec_int ("window-width",
- NULL, NULL,
- 320,
- G_MAXINT16,
- 780,
- G_PARAM_READWRITE));
-
- g_object_class_install_property (object_class,
- PROP_WINDOW_HEIGHT,
- g_param_spec_int ("window-height",
- NULL, NULL,
- 220,
- G_MAXINT16,
- 480,
- G_PARAM_READWRITE));
-
- g_type_class_add_private (klass, sizeof (ParoleConfPrivate));
-}
-
-static void
-parole_conf_load (ParoleConf *conf)
-{
- XfceRc *rc;
- const gchar *name;
- const gchar *str;
- GParamSpec **pspecs, *pspec;
- guint nspecs, i;
- GValue src = { 0, }, dst = { 0, };
-
- rc = parole_get_resource_file (PAROLE_RC_GROUP_GENERAL, TRUE);
-
- if ( G_UNLIKELY (rc == NULL ) )
- {
- g_warning ("Unable to lookup rc file in : %s\n", PAROLE_RESOURCE_FILE);
- return;
- }
-
- g_object_freeze_notify (G_OBJECT (conf));
-
- pspecs = g_object_class_list_properties (G_OBJECT_GET_CLASS (conf), &nspecs);
-
- g_value_init (&src, G_TYPE_STRING);
-
- for ( i = 0; i < nspecs; i++)
- {
- pspec = pspecs[i];
- name = g_param_spec_get_name (pspec);
-
- str = xfce_rc_read_entry (rc, pspec->name, NULL);
-
- if ( str )
- {
- g_value_set_static_string (&src, str);
-
- if ( pspec->value_type == G_TYPE_STRING )
- {
- g_object_set_property (G_OBJECT (conf), name, &src);
- }
- else
- {
- g_value_init (&dst, G_PARAM_SPEC_VALUE_TYPE (pspec));
-
- if ( G_LIKELY (g_value_transform (&src, &dst)))
- {
- g_object_set_property (G_OBJECT (conf), name, &dst);
- }
- else
- {
- g_warning ("Unable to load property %s", name);
- }
-
- g_value_unset (&dst);
- }
- }
- }
-
- xfce_rc_close (rc);
- g_value_unset (&src);
- g_object_thaw_notify (G_OBJECT (conf));
- g_free (pspecs);
-}
-
-static void
-parole_conf_init (ParoleConf *conf)
-{
- conf->priv = PAROLE_CONF_GET_PRIVATE (conf);
-
- conf->priv->values = g_new0 (GValue, N_PROP);
-
- parole_conf_load (conf);
-
-}
-
-ParoleConf *
-parole_conf_new (void)
-{
- if ( parole_conf_object != NULL )
- {
- g_object_ref (parole_conf_object);
- }
- else
- {
- parole_conf_object = g_object_new (PAROLE_TYPE_CONF, NULL);
- g_object_add_weak_pointer (parole_conf_object, &parole_conf_object);
- }
-
- return PAROLE_CONF (parole_conf_object);
-}
diff --git a/parole/parole-conf.h b/parole/parole-conf.h
deleted file mode 100644
index 79910a2..0000000
--- a/parole/parole-conf.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifndef __PAROLE_CONF_H
-#define __PAROLE_CONF_H
-
-#include <glib-object.h>
-
-G_BEGIN_DECLS
-
-#define PAROLE_TYPE_CONF (parole_conf_get_type () )
-#define PAROLE_CONF(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), PAROLE_TYPE_CONF, ParoleConf))
-#define PAROLE_IS_CONF(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), PAROLE_TYPE_CONF))
-
-
-typedef struct ParoleConfPrivate ParoleConfPrivate;
-
-typedef struct
-{
- GObject parent;
- ParoleConfPrivate *priv;
-
-} ParoleConf;
-
-typedef struct
-{
- GObjectClass parent_class;
-
-} ParoleConfClass;
-
-GType parole_conf_get_type (void) G_GNUC_CONST;
-
-ParoleConf *parole_conf_new (void);
-
-G_END_DECLS
-
-#endif /* __PAROLE_CONF_H */
diff --git a/parole/parole-debug.c b/parole/parole-debug.c
deleted file mode 100644
index f620793..0000000
--- a/parole/parole-debug.c
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * * Copyright (C) 2008-2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <glib.h>
-#include <glib-object.h>
-#include <glib/gprintf.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdarg.h>
-
-#include "parole-debug.h"
-
-#if defined(DEBUG) && defined(G_HAVE_ISO_VARARGS)
-
-void parole_debug_enum (const gchar *func, const gchar *file, gint line,
- const gchar *text, gint v_enum, GType type)
-{
- gchar *content = NULL;
- GValue __value__ = { 0, };
-
- g_value_init (&__value__, type);
- g_value_set_enum (&__value__, v_enum);
-
- content = g_strdup_value_contents (&__value__);
-
- fprintf(stdout, "TRACE[%s:%d] %s(): %s : %s", file, line , func, text, content);
- fprintf(stdout, "\n");
-
- g_value_unset (&__value__);
- g_free (content);
-}
-
-void parole_debug_enum_full (const gchar *func, const gchar *file, gint line,
- gint v_enum, GType type, const gchar *format, ...)
-{
- va_list args;
- gchar *buffer;
-
- gchar *content = NULL;
- GValue __value__ = { 0, };
-
- g_value_init (&__value__, type);
- g_value_set_enum (&__value__, v_enum);
-
- content = g_strdup_value_contents (&__value__);
-
- va_start (args, format);
- g_vasprintf (&buffer, format, args);
- va_end (args);
-
- fprintf(stdout, "TRACE[%s:%d] %s(): ", file, line, func);
- fprintf(stdout, "%s: %s", buffer, content);
- fprintf(stdout, "\n");
-
- g_value_unset (&__value__);
- g_free (content);
- g_free (buffer);
-}
-
-#endif /*#if defined(DEBUG) && defined(G_HAVE_ISO_VARARGS)*/
diff --git a/parole/parole-debug.h b/parole/parole-debug.h
deleted file mode 100644
index 1eb770e..0000000
--- a/parole/parole-debug.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * * Copyright (C) 2008-2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifndef __PAROLE_DEBUG_H
-#define __PAROLE_DEBUG_H
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdarg.h>
-#include <glib.h>
-
-G_BEGIN_DECLS
-
-#if defined(DEBUG) && defined(G_HAVE_ISO_VARARGS)
-
-#define PAROLE_DEBUG_ENUM(_text, _value, _type)\
- parole_debug_enum (__func__, __FILE__, __LINE__, _text, _value, _type)
-
-#define PAROLE_DEBUG_ENUM_FULL(_value, _type, ...)\
- parole_debug_enum_full (__func__, __FILE__, __LINE__, _value, _type, __VA_ARGS__)
-
-void parole_debug_enum (const gchar *func,
- const gchar *file,
- gint line,
- const gchar *text,
- gint v_enum,
- GType type);
-
-void parole_debug_enum_full (const gchar *func,
- const gchar *file,
- gint line,
- gint v_enum,
- GType type,
- const gchar *format,
- ...) G_GNUC_PRINTF (6, 7);
-
-
-#else
-
-#define PAROLE_DEBUG_ENUM(_text, _value, _type)
-#define PAROLE_DEBUG_ENUM_FULL(_value, _type, ...)
-
-#endif
-
-G_END_DECLS
-
-#endif /* __PAROLE_DEBUG_H */
diff --git a/parole/parole-disc-menu.c b/parole/parole-disc-menu.c
deleted file mode 100644
index 08edb8a..0000000
--- a/parole/parole-disc-menu.c
+++ /dev/null
@@ -1,334 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <libxfce4util/libxfce4util.h>
-
-#include "parole-disc-menu.h"
-#include "parole-builder.h"
-#include "parole-statusbar.h"
-#include "parole-gst.h"
-
-static void parole_disc_menu_finalize (GObject *object);
-
-#define PAROLE_DISC_MENU_GET_PRIVATE(o) \
-(G_TYPE_INSTANCE_GET_PRIVATE ((o), PAROLE_TYPE_DISC_MENU, ParoleDiscMenuPrivate))
-
-struct ParoleDiscMenuPrivate
-{
- ParoleGst *gst;
- ParoleMediaType current_media_type;
-
- GtkWidget *disc_track;
- GtkWidget *disc_box;
-
- GtkWidget *next_chapter;
- GtkWidget *prev_chapter;
- GtkWidget *dvd_menu;
- GtkWidget *chapter_menu;
- GtkWidget *info;
- GtkWidget *eventboxinfo;
-
- guint tracks;
-};
-
-G_DEFINE_TYPE (ParoleDiscMenu, parole_disc_menu, G_TYPE_OBJECT)
-
-static void
-parole_disc_menu_hide (ParoleDiscMenu *menu)
-{
- gtk_widget_hide (menu->priv->disc_track);
- gtk_widget_hide (menu->priv->next_chapter);
- gtk_widget_hide (menu->priv->prev_chapter);
- gtk_widget_hide (menu->priv->info);
- gtk_widget_hide (menu->priv->eventboxinfo);
- gtk_widget_hide (menu->priv->disc_box);
- //gtk_widget_hide (menu->priv->dvd_menu);
- //gtk_widget_hide (menu->priv->chapter_menu);
-}
-
-static void
-parole_disc_menu_show (ParoleDiscMenu *menu, gboolean show_label)
-{
- gtk_widget_show (menu->priv->next_chapter);
- gtk_widget_show (menu->priv->prev_chapter);
-
- if ( show_label )
- {
- gtk_widget_show (menu->priv->eventboxinfo);
- gtk_widget_show (menu->priv->info);
- gtk_widget_show (menu->priv->disc_track);
- }
-
- //gtk_widget_show (menu->priv->dvd_menu);
- //gtk_widget_show (menu->priv->dvd_menu);
- gtk_widget_show (menu->priv->disc_box);
-
-}
-
-static void
-parole_disc_menu_media_state_cb (ParoleGst *gst, const ParoleStream *stream,
- ParoleMediaState state, ParoleDiscMenu *menu)
-{
- ParoleMediaType media_type;
- menu->priv->tracks = 0;
-
- if ( state < PAROLE_MEDIA_STATE_PAUSED )
- {
- gtk_label_set_markup (GTK_LABEL (menu->priv->info), NULL);
- parole_disc_menu_hide (menu);
- }
- else if ( state == PAROLE_MEDIA_STATE_PLAYING )
- {
- g_object_get (G_OBJECT (stream),
- "media-type", &media_type,
- NULL);
-
- if ( media_type == PAROLE_MEDIA_TYPE_DVD )
- {
- gtk_button_set_label (GTK_BUTTON (menu->priv->next_chapter), _("Next Chapter"));
- gtk_button_set_label (GTK_BUTTON (menu->priv->prev_chapter), _("Previous Chapter"));
- parole_disc_menu_show (menu, FALSE);
- }
- else if ( media_type == PAROLE_MEDIA_TYPE_CDDA )
- {
- guint num_tracks;
- guint current;
- gchar *text;
- gtk_button_set_label (GTK_BUTTON (menu->priv->next_chapter), _("Next Track"));
- gtk_button_set_label (GTK_BUTTON (menu->priv->prev_chapter), _("Previous Track"));
-
- g_object_get (G_OBJECT (stream),
- "num-tracks", &num_tracks,
- "track", ¤t,
- NULL);
-
- text = g_strdup_printf ("<span font_desc='sans 8' font_size='xx-large' color='#510DEC'>%s %i/%i</span>", _("Playing Track"), current, num_tracks);
-
- gtk_label_set_markup (GTK_LABEL (menu->priv->info), text);
-
- g_free (text);
- parole_disc_menu_show (menu, TRUE);
- menu->priv->tracks = num_tracks;
- }
- menu->priv->current_media_type = media_type;
- }
-}
-
-static void
-parole_disc_menu_next_chapter_cb (ParoleDiscMenu *menu)
-{
- if ( menu->priv->current_media_type == PAROLE_MEDIA_TYPE_DVD )
- parole_gst_next_dvd_chapter (menu->priv->gst);
- else if ( menu->priv->current_media_type == PAROLE_MEDIA_TYPE_CDDA)
- parole_gst_next_cdda_track (menu->priv->gst);
-}
-
-static void
-parole_disc_menu_prev_chapter_cb (ParoleDiscMenu *menu)
-{
- if ( menu->priv->current_media_type == PAROLE_MEDIA_TYPE_DVD )
- parole_gst_prev_dvd_chapter (menu->priv->gst);
- else if ( menu->priv->current_media_type == PAROLE_MEDIA_TYPE_CDDA)
- parole_gst_prev_cdda_track (menu->priv->gst);
-}
-
-static void
-parole_disc_menu_dvd_menu_cb (ParoleDiscMenu *menu)
-{
-
-}
-
-static void
-parole_disc_menu_chapter_menu_cb (ParoleDiscMenu *menu)
-{
-
-}
-
-static void
-track_menu_item_activated_cb (GtkWidget *widget, ParoleDiscMenu *menu)
-{
- guint track;
-
- track = GPOINTER_TO_UINT ( g_object_get_data (G_OBJECT (widget), "track"));
-
- parole_gst_seek_cdda (menu->priv->gst, track);
-}
-
-static void
-parole_disc_menu_show_disc_track_menu (ParoleDiscMenu *disc_menu, guint button, guint activate_time)
-{
- GtkWidget *menu, *mi, *img;
- gchar track[128];
- guint i;
-
- menu = gtk_menu_new ();
-
- for ( i = 0; i < disc_menu->priv->tracks; i++)
- {
- img = gtk_image_new_from_stock (GTK_STOCK_CDROM, GTK_ICON_SIZE_MENU);
- g_snprintf (track, 128, _("Track %i"), i+1);
- mi = gtk_image_menu_item_new_with_label (track);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (mi), img);
- gtk_widget_show (mi);
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi);
- g_object_set_data (G_OBJECT (mi), "track", GUINT_TO_POINTER (i+1));
- g_signal_connect (mi, "activate",
- G_CALLBACK (track_menu_item_activated_cb), disc_menu);
- }
-
- g_signal_connect_swapped (menu, "selection-done",
- G_CALLBACK (gtk_widget_destroy), menu);
-
- gtk_menu_popup (GTK_MENU (menu),
- NULL, NULL,
- NULL, NULL,
- button, activate_time);
-}
-
-static gboolean
-parole_disc_menu_show_disc_track (GtkWidget *widget, GdkEventButton *ev, ParoleDiscMenu *menu)
-{
- if ( ev->button == 1 )
- {
- parole_disc_menu_show_disc_track_menu (menu, ev->button, ev->time);
- }
-
- return FALSE;
-}
-
-static void
-parole_disc_menu_class_init (ParoleDiscMenuClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
- object_class->finalize = parole_disc_menu_finalize;
-
- g_type_class_add_private (klass, sizeof (ParoleDiscMenuPrivate));
-}
-
-static void
-parole_disc_menu_init (ParoleDiscMenu *menu)
-{
- GtkBuilder *builder;
- GdkColor color;
-
- menu->priv = PAROLE_DISC_MENU_GET_PRIVATE (menu);
-
- menu->priv->tracks = 0;
-
- builder = parole_builder_get_main_interface ();
-
- menu->priv->disc_track = GTK_WIDGET (gtk_builder_get_object (builder, "select-track"));
- menu->priv->next_chapter = GTK_WIDGET (gtk_builder_get_object (builder, "next-chapter"));
- menu->priv->prev_chapter = GTK_WIDGET (gtk_builder_get_object (builder, "prev-chapter"));
- menu->priv->chapter_menu = GTK_WIDGET (gtk_builder_get_object (builder, "chapter-menu"));
- menu->priv->dvd_menu = GTK_WIDGET (gtk_builder_get_object (builder, "dvd-menu"));
- menu->priv->info = GTK_WIDGET (gtk_builder_get_object (builder, "info"));
- menu->priv->eventboxinfo = GTK_WIDGET (gtk_builder_get_object (builder, "eventboxinfo"));
- menu->priv->disc_box = GTK_WIDGET (gtk_builder_get_object (builder, "disc-box"));
-
- gdk_color_parse ("black", &color);
-
- gtk_widget_modify_bg (menu->priv->eventboxinfo, GTK_STATE_NORMAL, &color);
- gtk_widget_modify_bg (menu->priv->disc_box, GTK_STATE_NORMAL, &color);
-
- menu->priv->current_media_type = PAROLE_MEDIA_TYPE_UNKNOWN;
-
- g_signal_connect (menu->priv->disc_track, "button-press-event",
- G_CALLBACK (parole_disc_menu_show_disc_track), menu);
-
- g_signal_connect_swapped (menu->priv->next_chapter, "clicked",
- G_CALLBACK (parole_disc_menu_next_chapter_cb), menu);
-
- g_signal_connect_swapped (menu->priv->prev_chapter, "clicked",
- G_CALLBACK (parole_disc_menu_prev_chapter_cb), menu);
-
- g_signal_connect_swapped (menu->priv->dvd_menu, "clicked",
- G_CALLBACK (parole_disc_menu_dvd_menu_cb), menu);
-
- g_signal_connect_swapped (menu->priv->chapter_menu, "clicked",
- G_CALLBACK (parole_disc_menu_chapter_menu_cb), menu);
-
- menu->priv->gst = PAROLE_GST (parole_gst_get ());
-
- g_signal_connect (G_OBJECT (menu->priv->gst), "media_state",
- G_CALLBACK (parole_disc_menu_media_state_cb), menu);
-
- g_object_unref (builder);
-}
-
-static void
-parole_disc_menu_finalize (GObject *object)
-{
- ParoleDiscMenu *menu;
-
- menu = PAROLE_DISC_MENU (object);
-
- G_OBJECT_CLASS (parole_disc_menu_parent_class)->finalize (object);
-}
-
-ParoleDiscMenu *
-parole_disc_menu_new (void)
-{
- ParoleDiscMenu *menu = NULL;
- menu = g_object_new (PAROLE_TYPE_DISC_MENU, NULL);
- return menu;
-}
-
-gboolean parole_disc_menu_visible (ParoleDiscMenu *menu)
-{
- return (GTK_WIDGET_VISIBLE (menu->priv->next_chapter));
-}
-
-gboolean parole_disc_menu_seek_next (ParoleDiscMenu *menu)
-{
- if ( menu->priv->current_media_type == PAROLE_MEDIA_TYPE_DVD ||
- menu->priv->current_media_type == PAROLE_MEDIA_TYPE_CDDA )
- {
- parole_disc_menu_next_chapter_cb (menu);
- return TRUE;
- }
-
- return FALSE;
-}
-
-gboolean parole_disc_menu_seek_prev (ParoleDiscMenu *menu)
-{
- if ( menu->priv->current_media_type == PAROLE_MEDIA_TYPE_DVD ||
- menu->priv->current_media_type == PAROLE_MEDIA_TYPE_CDDA )
- {
- parole_disc_menu_prev_chapter_cb (menu);
- return TRUE;
- }
-
- return FALSE;
-}
-
-void parole_disc_menu_set_fullscreen (ParoleDiscMenu *menu, gboolean fullscreen)
-{
-}
diff --git a/parole/parole-disc-menu.h b/parole/parole-disc-menu.h
deleted file mode 100644
index 02ff929..0000000
--- a/parole/parole-disc-menu.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifndef __PAROLE_DISC_MENU_H
-#define __PAROLE_DISC_MENU_H
-
-#include <glib-object.h>
-
-G_BEGIN_DECLS
-
-#define PAROLE_TYPE_DISC_MENU (parole_disc_menu_get_type () )
-#define PAROLE_DISC_MENU(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), PAROLE_TYPE_DISC_MENU, ParoleDiscMenu))
-#define PAROLE_IS_DISC_MENU(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), PAROLE_TYPE_DISC_MENU))
-
-typedef struct ParoleDiscMenuPrivate ParoleDiscMenuPrivate;
-
-typedef struct
-{
- GObject parent;
- ParoleDiscMenuPrivate *priv;
-} ParoleDiscMenu;
-
-typedef struct
-{
- GObjectClass parent_class;
-} ParoleDiscMenuClass;
-
-GType parole_disc_menu_get_type (void) G_GNUC_CONST;
-
-ParoleDiscMenu *parole_disc_menu_new (void);
-
-gboolean parole_disc_menu_visible (ParoleDiscMenu *menu);
-
-gboolean parole_disc_menu_seek_next (ParoleDiscMenu *menu);
-
-gboolean parole_disc_menu_seek_prev (ParoleDiscMenu *menu);
-
-void parole_disc_menu_set_fullscreen (ParoleDiscMenu *menu,
- gboolean fullscreen);
-
-G_END_DECLS
-
-#endif /* __PAROLE_DISC_MENU_H */
diff --git a/parole/parole-disc.c b/parole/parole-disc.c
deleted file mode 100644
index 4e29c28..0000000
--- a/parole/parole-disc.c
+++ /dev/null
@@ -1,438 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <fcntl.h>
-#include <unistd.h>
-#include <sys/stat.h>
-#include <sys/ioctl.h>
-
-#if defined(__linux__)
-#include <linux/cdrom.h>
-#endif
-
-#include <gio/gio.h>
-#include <gtk/gtk.h>
-
-#include <libxfce4util/libxfce4util.h>
-
-#include "parole-disc.h"
-#include "parole-builder.h"
-#include "gmarshal.h"
-
-static void parole_disc_finalize (GObject *object);
-
-#define PAROLE_DISC_GET_PRIVATE(o) \
-(G_TYPE_INSTANCE_GET_PRIVATE ((o), PAROLE_TYPE_DISC, ParoleDiscPrivate))
-
-struct ParoleDiscPrivate
-{
- GVolumeMonitor *monitor;
- GPtrArray *array;
- GtkWidget *media_menu;
-
- gboolean needs_update;
-};
-
-enum
-{
- DISC_SELECTED,
- LAST_SIGNAL
-};
-
-static guint signals [LAST_SIGNAL] = { 0 };
-
-G_DEFINE_TYPE (ParoleDisc, parole_disc, G_TYPE_OBJECT)
-
-typedef struct
-{
- GtkWidget *mi;
- gchar *uri;
- gchar *device;
- ParoleDiscKind kind;
-
-} MountData;
-
-static void
-free_mount_data (gpointer data)
-{
- MountData *mount;
-
- mount = (MountData *) data;
-
- if ( mount->uri )
- g_free (mount->uri);
-
- if ( mount->device )
- g_free (mount->device);
-
- g_free (mount);
-}
-
-static void
-parole_disc_media_activate_cb (GtkWidget *widget, ParoleDisc *disc)
-{
- MountData *data;
-
- data = g_object_get_data (G_OBJECT (widget), "mount-data");
-
- g_signal_emit (G_OBJECT (disc), signals [DISC_SELECTED], 0, data->uri, data->device);
-}
-
-static MountData *
-parole_disc_get_mount_data (ParoleDisc *disc,
- const gchar *label,
- const gchar *uri,
- const gchar *device,
- ParoleDiscKind kind)
-{
- MountData *data;
- GtkWidget *img;
-
- data = g_new0 (MountData, 1);
-
- data->kind = kind;
- data->uri = data->device = NULL;
- data->uri = g_strdup (uri);
- data->device = g_strdup (device);
-
- data->mi = gtk_image_menu_item_new_with_label (label);
-
- img = gtk_image_new_from_stock (GTK_STOCK_CDROM, GTK_ICON_SIZE_MENU);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (data->mi),
- img);
- gtk_widget_show (data->mi);
- gtk_widget_show (img);
-
- g_object_set_data (G_OBJECT (data->mi),
- "mount-data", data);
-
- gtk_menu_shell_insert (GTK_MENU_SHELL (disc->priv->media_menu), data->mi, 2);
-
- g_signal_connect (data->mi, "activate",
- G_CALLBACK (parole_disc_media_activate_cb), disc);
- return data;
-}
-
-static void
-parole_disc_add_mount_to_menu (ParoleDisc *disc, GMount *mount, const gchar *device)
-{
- GFile *file;
- gchar **content_type;
- guint i;
- ParoleDiscKind kind;
- gchar *uri;
-
- file = g_mount_get_root (mount);
-
- if ( g_file_has_uri_scheme (file, "cdda") )
- {
- kind = PAROLE_DISC_CDDA;
- uri = g_strdup ("cdda://");
- goto got_cdda;
- }
-
- content_type = g_content_type_guess_for_tree (file);
-
- for ( i = 0; content_type && content_type[i]; i++)
- {
- TRACE ("Checking disc content type : %s", content_type[i]);
-
- if ( !g_strcmp0 (content_type[i], "x-content/video-dvd") )
- {
- kind = PAROLE_DISC_DVD;
- uri = g_strdup ("dvd:/");
- break;
- }
- else if ( !g_strcmp0 (content_type[i], "x-content/video-vcd") )
- {
- kind = PAROLE_DISC_VCD;
- uri = g_strdup ("vcd:/");
- break;
- }
- else if ( !g_strcmp0 (content_type[i], "x-content/video-svcd") )
- {
- kind = PAROLE_DISC_SVCD;
- uri = g_strdup ("svcd:/");
- break;
- }
- else if ( !g_strcmp0 (content_type[i], "x-content/audio-cdda") )
- {
- kind = PAROLE_DISC_CDDA;
- uri = g_strdup ("cdda://");
- break;
- }
- }
-
- if ( content_type )
- g_strfreev (content_type);
-
-got_cdda:
- if ( kind != PAROLE_DISC_UNKNOWN )
- {
- MountData *data;
- gchar *name;
- gchar *label;
-
- name = g_mount_get_name (mount);
- label = g_strdup_printf ("%s %s", _("Play Disc"), name);
-
- data = parole_disc_get_mount_data (disc, label, uri, device, kind);
- g_free (uri);
-
- g_ptr_array_add (disc->priv->array, data);
- g_free (label);
- g_free (name);
- }
-
- g_object_unref (file);
-}
-
-static void
-parole_disc_check_cdrom (ParoleDisc *disc, GVolume *volume, const gchar *device)
-{
-#if defined(__linux__)
- gint fd;
- gint drive;
-
- TRACE ("device : %s", device);
-
- if ( (fd = open (device, O_RDONLY)) < 0 )
- {
- g_debug ("Failed to open device : %s", device);
- disc->priv->needs_update = TRUE;
- goto out;
- }
-
- if ( (drive = ioctl (fd, CDROM_DRIVE_STATUS, NULL)) )
- {
- if ( drive == CDS_DRIVE_NOT_READY )
- {
- g_print ("Drive :%s is not yet ready\n", device);
- disc->priv->needs_update = TRUE;
- }
- else if ( drive == CDS_DISC_OK )
- {
- if ( (drive = ioctl (fd, CDROM_DISC_STATUS, NULL)) > 0 )
- {
- if ( drive == CDS_AUDIO || drive == CDS_MIXED )
- {
- MountData *data;
- data = parole_disc_get_mount_data (disc, g_volume_get_name (volume), "cdda://", device, PAROLE_DISC_CDDA);
- g_ptr_array_add (disc->priv->array, data);
- }
- }
- }
- }
-
- close (fd);
-out:
- ;
-#endif /* if defined(__linux__) */
-}
-
-static void
-parole_disc_add_drive (ParoleDisc *disc, GDrive *drive, const gchar *device)
-{
- GList *list;
- guint len;
- guint i;
-
- list = g_drive_get_volumes (drive);
- len = g_list_length (list);
-
- for ( i = 0; i < len; i++)
- {
- GVolume *volume;
- GMount *mount;
-
- volume = g_list_nth_data (list, i);
- TRACE ("Volume name %s", g_volume_get_name (volume));
-
- mount = g_volume_get_mount (volume);
- if ( mount )
- {
- TRACE ("Mount name : %s", g_mount_get_name (mount));
- parole_disc_add_mount_to_menu (disc, mount, device);
- g_object_unref (mount);
- }
- else
- {
- /* Could be a cdda?*/
- parole_disc_check_cdrom (disc, volume, device);
- }
- }
-
- g_list_foreach (list, (GFunc) g_object_unref, NULL);
- g_list_free (list);
-}
-
-static void
-parole_disc_get_drives (ParoleDisc *disc)
-{
- GList *list;
- guint len;
- guint i;
-
- list = g_volume_monitor_get_connected_drives (disc->priv->monitor);
-
- len = g_list_length (list);
-
- /*
- * Set the update flag here because it can be set later to TRUE
- * in case a device is not yet ready.
- */
- disc->priv->needs_update = FALSE;
-
- for ( i = 0; i < len; i++)
- {
- GDrive *drive;
- gchar *device = NULL;
-
- drive = g_list_nth_data (list, i);
-
- if ( g_drive_can_eject (drive) && g_drive_has_media (drive) )
- {
- device = g_drive_get_identifier (drive, G_VOLUME_IDENTIFIER_KIND_UNIX_DEVICE);
- parole_disc_add_drive (disc, drive, device);
- if ( device )
- g_free (device);
- }
- }
-
- g_list_foreach (list, (GFunc) g_object_unref, NULL);
- g_list_free (list);
-}
-
-static void
-parole_disc_select_cb (GtkItem *item, ParoleDisc *disc)
-{
- if ( disc->priv->needs_update )
- parole_disc_get_drives (disc);
-}
-
-static void
-parole_disc_monitor_changed_cb (GVolumeMonitor *monitor, gpointer *device, ParoleDisc *disc)
-{
- guint i;
-
- TRACE ("Changed");
- for ( i = 0 ; i < disc->priv->array->len; i++)
- {
- MountData *data;
-
- data = g_ptr_array_index (disc->priv->array, i);
- gtk_widget_destroy (data->mi);
- g_ptr_array_remove_index (disc->priv->array, i);
- g_free (data);
- }
-
- disc->priv->needs_update = TRUE;
-}
-
-static void
-parole_disc_class_init (ParoleDiscClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
- signals[DISC_SELECTED] =
- g_signal_new ("disc-selected",
- PAROLE_TYPE_DISC,
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (ParoleDiscClass, disc_selected),
- NULL, NULL,
- _gmarshal_VOID__STRING_STRING,
- G_TYPE_NONE, 2,
- G_TYPE_STRING, G_TYPE_STRING);
-
- object_class->finalize = parole_disc_finalize;
-
- g_type_class_add_private (klass, sizeof (ParoleDiscPrivate));
-}
-
-static void
-parole_disc_init (ParoleDisc *disc)
-{
- GtkBuilder *builder;
-
- disc->priv = PAROLE_DISC_GET_PRIVATE (disc);
-
- builder = parole_builder_get_main_interface ();
-
- disc->priv->array = g_ptr_array_new ();
- disc->priv->needs_update = TRUE;
-
- disc->priv->monitor = g_volume_monitor_get ();
-
- g_signal_connect (G_OBJECT (disc->priv->monitor), "volume-added",
- G_CALLBACK (parole_disc_monitor_changed_cb), disc);
-
- g_signal_connect (G_OBJECT (disc->priv->monitor), "volume-removed",
- G_CALLBACK (parole_disc_monitor_changed_cb), disc);
-
- g_signal_connect (G_OBJECT (disc->priv->monitor), "mount-added",
- G_CALLBACK (parole_disc_monitor_changed_cb), disc);
-
- g_signal_connect (G_OBJECT (disc->priv->monitor), "mount-removed",
- G_CALLBACK (parole_disc_monitor_changed_cb), disc);
-
- g_signal_connect (G_OBJECT (disc->priv->monitor), "drive-disconnected",
- G_CALLBACK (parole_disc_monitor_changed_cb), disc);
-
- g_signal_connect (G_OBJECT (disc->priv->monitor), "drive-eject-button",
- G_CALLBACK (parole_disc_monitor_changed_cb), disc);
-
- disc->priv->media_menu = GTK_WIDGET (gtk_builder_get_object (builder, "media-menu"));
-
- g_signal_connect (gtk_builder_get_object (builder, "media-menu-item"), "select",
- G_CALLBACK (parole_disc_select_cb), disc);
-
- g_object_unref (builder);
-}
-
-static void
-parole_disc_finalize (GObject *object)
-{
- ParoleDisc *disc;
-
- disc = PAROLE_DISC (object);
-
- g_object_unref (disc->priv->monitor);
-
- g_ptr_array_foreach (disc->priv->array, (GFunc) free_mount_data, NULL);
- g_ptr_array_free (disc->priv->array, TRUE);
-
- G_OBJECT_CLASS (parole_disc_parent_class)->finalize (object);
-}
-
-ParoleDisc *
-parole_disc_new (void)
-{
- ParoleDisc *disc = NULL;
- disc = g_object_new (PAROLE_TYPE_DISC, NULL);
- return disc;
-}
diff --git a/parole/parole-disc.h b/parole/parole-disc.h
deleted file mode 100644
index 23adbc2..0000000
--- a/parole/parole-disc.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifndef __PAROLE_DISC_H
-#define __PAROLE_DISC_H
-
-#include <glib-object.h>
-
-G_BEGIN_DECLS
-
-#define PAROLE_TYPE_DISC (parole_disc_get_type () )
-#define PAROLE_DISC(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), PAROLE_TYPE_DISC, ParoleDisc))
-#define PAROLE_IS_DISC(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), PAROLE_TYPE_DISC))
-
-typedef struct ParoleDiscPrivate ParoleDiscPrivate;
-
-typedef enum
-{
- PAROLE_DISC_UNKNOWN,
- PAROLE_DISC_CDDA,
- PAROLE_DISC_VCD,
- PAROLE_DISC_SVCD,
- PAROLE_DISC_DVD
-
-} ParoleDiscKind;
-
-typedef struct
-{
- GObject parent;
- ParoleDiscPrivate *priv;
-
-} ParoleDisc;
-
-typedef struct
-{
- GObjectClass parent_class;
-
- void (*disc_selected) (ParoleDisc *disc,
- const gchar *uri,
- const gchar *device);
-
-} ParoleDiscClass;
-
-GType parole_disc_get_type (void) G_GNUC_CONST;
-
-ParoleDisc *parole_disc_new (void);
-
-G_END_DECLS
-
-#endif /* __PAROLE_DISC_H */
diff --git a/parole/parole-file.c b/parole/parole-file.c
deleted file mode 100644
index 64b6845..0000000
--- a/parole/parole-file.c
+++ /dev/null
@@ -1,389 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <glib.h>
-#include <gio/gio.h>
-
-#ifdef HAVE_TAGLIBC
-#include <taglib/tag_c.h>
-#endif
-
-#include "parole-file.h"
-
-#define PAROLE_FILE_GET_PRIVATE(o) \
-(G_TYPE_INSTANCE_GET_PRIVATE ((o), PAROLE_TYPE_FILE, ParoleFilePrivate))
-
-typedef struct _ParoleFilePrivate ParoleFilePrivate;
-
-struct _ParoleFilePrivate
-{
- gchar *filename;
- gchar *display_name;
- gchar *uri;
- gchar *content_type;
-
-};
-
-enum
-{
- PROP_0,
- PROP_PATH,
- PROP_DISPLAY_NAME,
- PROP_URI,
- PROP_CONTENT_TYPE
-};
-
-G_DEFINE_TYPE (ParoleFile, parole_file, G_TYPE_OBJECT)
-
-static void
-parole_file_finalize (GObject *object)
-{
- ParoleFile *file;
- ParoleFilePrivate *priv;
-
- file = PAROLE_FILE (object);
- priv = PAROLE_FILE_GET_PRIVATE (file);
-
- g_debug ("File object finalized %s", priv->display_name);
-
- if ( priv->filename )
- g_free (priv->filename);
-
- if ( priv->uri )
- g_free (priv->uri);
-
- if ( priv->display_name )
- g_free (priv->display_name);
-
- if ( priv->content_type )
- g_free (priv->content_type);
-
- G_OBJECT_CLASS (parole_file_parent_class)->finalize (object);
-}
-
-static void
-parole_file_set_property (GObject *object, guint prop_id,
- const GValue *value, GParamSpec *pspec)
-{
- ParoleFile *file;
- file = PAROLE_FILE (object);
-
- switch (prop_id)
- {
- case PROP_PATH:
- PAROLE_FILE_GET_PRIVATE (file)->filename = g_value_dup_string (value);
- break;
- case PROP_DISPLAY_NAME:
- PAROLE_FILE_GET_PRIVATE (file)->display_name = g_value_dup_string (value);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-parole_file_get_property (GObject *object, guint prop_id,
- GValue *value, GParamSpec *pspec)
-{
- ParoleFile *file;
-
- file = PAROLE_FILE (object);
-
- switch (prop_id)
- {
- case PROP_PATH:
- g_value_set_string (value, PAROLE_FILE_GET_PRIVATE (file)->filename);
- break;
- case PROP_URI:
- g_value_set_string (value, PAROLE_FILE_GET_PRIVATE (file)->filename);
- break;
- case PROP_CONTENT_TYPE:
- g_value_set_string (value, PAROLE_FILE_GET_PRIVATE (file)->content_type);
- break;
- case PROP_DISPLAY_NAME:
- g_value_set_string (value, PAROLE_FILE_GET_PRIVATE (file)->display_name);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-parole_file_constructed (GObject *object)
-{
- GFile *gfile;
- GFileInfo *info;
- ParoleFile *file;
- ParoleFilePrivate *priv;
- GError *error = NULL;
-
- file = PAROLE_FILE (object);
- priv = PAROLE_FILE_GET_PRIVATE (file);
-
- gfile = g_file_new_for_commandline_arg (priv->filename);
-
- info = g_file_query_info (gfile,
- "standard::*,",
- 0,
- NULL,
- &error);
-
- if ( error )
- {
- if ( G_LIKELY (error->code == G_IO_ERROR_NOT_SUPPORTED) )
- {
- g_error_free (error);
- if ( !priv->display_name )
- priv->display_name = g_file_get_basename (gfile);
- }
- else
- {
- if ( !priv->display_name )
- priv->display_name = g_strdup (priv->filename);
- g_warning ("Unable to read file info %s", error->message);
- }
- goto out;
- }
-#ifdef HAVE_TAGLIBC
- else
- {
- TagLib_File *tag_file;
- TagLib_Tag *tag;
- gchar *title;
- gchar *title_s;
-
- tag_file = taglib_file_new (priv->filename);
-
- if ( tag_file )
- {
- tag = taglib_file_tag (tag_file);
- if ( tag )
- {
- title = taglib_tag_title (tag);
-
- if ( title )
- {
- title_s = g_strstrip (title);
- if ( strlen (title_s ) )
- {
- priv->display_name = g_strdup (title_s);
- }
- }
-
- taglib_tag_free_strings ();
- }
- taglib_file_free (tag_file);
- }
- }
-#endif
-
- if (!priv->display_name)
- priv->display_name = g_strdup (g_file_info_get_display_name (info));
-
- priv->content_type = g_strdup (g_file_info_get_content_type (info));
-
- g_object_unref (info);
-
-out:
- priv->uri = g_file_get_uri (gfile);
- g_object_unref (gfile);
-}
-
-static void
-parole_file_class_init (ParoleFileClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
- object_class->finalize = parole_file_finalize;
-
- object_class->constructed = parole_file_constructed;
- object_class->set_property = parole_file_set_property;
- object_class->get_property = parole_file_get_property;
-
- /**
- * ParoleFile:filename:
- *
- * The filename of the file.
- *
- * Since: 0.1
- **/
- g_object_class_install_property (object_class,
- PROP_PATH,
- g_param_spec_string ("filename",
- NULL, NULL,
- NULL,
- G_PARAM_CONSTRUCT_ONLY|
- G_PARAM_READWRITE));
-
- /**
- * ParoleFile:display-name:
- *
- * a UTF-8 name that can be displayed in the UI.
- *
- * Since: 0.1
- **/
- g_object_class_install_property (object_class,
- PROP_DISPLAY_NAME,
- g_param_spec_string ("display-name",
- NULL, NULL,
- NULL,
- G_PARAM_CONSTRUCT_ONLY|
- G_PARAM_READWRITE));
-
- /**
- * ParoleFile:uri:
- *
- * The Uri of the file.
- *
- * Since: 0.1
- **/
- g_object_class_install_property (object_class,
- PROP_URI,
- g_param_spec_string ("uri",
- NULL, NULL,
- NULL,
- G_PARAM_READABLE));
-
- /**
- * ParoleFile:content-type:
- *
- * The content type of the file.
- *
- * Since: 0.1
- **/
- g_object_class_install_property (object_class,
- PROP_CONTENT_TYPE,
- g_param_spec_string ("content-type",
- NULL, NULL,
- NULL,
- G_PARAM_READABLE));
-
- g_type_class_add_private (klass, sizeof (ParoleFilePrivate));
-}
-
-static void
-parole_file_init (ParoleFile *file)
-{
- ParoleFilePrivate *priv;
-
- priv = PAROLE_FILE_GET_PRIVATE (file);
-
- priv->filename = NULL;
- priv->display_name = NULL;
- priv->uri = NULL;
- priv->content_type = NULL;
-}
-
-/**
- * parole_file_new:
- * @filename: filename.
- *
- *
- *
- * Returns: A new #ParoleFile object.
- **/
-ParoleFile *
-parole_file_new (const gchar *filename)
-{
- ParoleFile *file = NULL;
- file = g_object_new (PAROLE_TYPE_FILE, "filename", filename, NULL);
- return file;
-}
-
-ParoleFile *
-parole_file_new_with_display_name (const gchar *filename, const gchar *display_name)
-{
- ParoleFile *file = NULL;
- file = g_object_new (PAROLE_TYPE_FILE,
- "filename", filename,
- "display-name", display_name,
- NULL);
- return file;
-}
-
-/**
- * parole_file_get_file_name:
- * @file: a #ParoleFile.
- *
- *
- * Returns: A string containing the file name.
- **/
-const gchar *
-parole_file_get_file_name (const ParoleFile *file)
-{
- g_return_val_if_fail (PAROLE_IS_FILE (file), NULL);
-
- return PAROLE_FILE_GET_PRIVATE (file)->filename;
-}
-
-/**
- * parole_file_get_display_name:
- * @file: a #ParoleFile.
- *
- *
- * Returns: A string containing the display name.
- **/
-const gchar *
-parole_file_get_display_name (const ParoleFile *file)
-{
- g_return_val_if_fail (PAROLE_IS_FILE (file), NULL);
-
- return PAROLE_FILE_GET_PRIVATE (file)->display_name;
-}
-
-/**
- * parole_file_get_uri:
- * @file: a #ParoleFile.
- *
- *
- * Returns: A string containing the file uri.
- **/
-const gchar *
-parole_file_get_uri (const ParoleFile *file)
-{
- g_return_val_if_fail (PAROLE_IS_FILE (file), NULL);
-
- return PAROLE_FILE_GET_PRIVATE (file)->uri;
-}
-
-/**
- * parole_file_get_content_type:
- * @file: a #ParoleFile.
- *
- *
- * Returns: A string containing the content type of the file.
- **/
-const gchar *
-parole_file_get_content_type (const ParoleFile *file)
-{
- g_return_val_if_fail (PAROLE_IS_FILE (file), NULL);
-
- return PAROLE_FILE_GET_PRIVATE (file)->content_type;
-}
diff --git a/parole/parole-filters.c b/parole/parole-filters.c
deleted file mode 100644
index 0d8811b..0000000
--- a/parole/parole-filters.c
+++ /dev/null
@@ -1,223 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <libxfce4util/libxfce4util.h>
-#include <glib.h>
-
-#include "parole-filters.h"
-#include "parole-utils.h"
-#include "parole-pl-parser.h"
-#include "data/mime/parole-mime-types.h"
-
-static char *playlist_mime_types[] = {
- "text/plain",
- "audio/x-mpegurl",
- "audio/playlist",
- "audio/x-scpls",
- "audio/x-ms-asx",
- "application/xml",
- "application/xspf+xml",
-};
-
-/*
- * Supported Audio formats.
- */
-GtkFileFilter *parole_get_supported_audio_filter (void)
-{
- GtkFileFilter *filter;
- guint i;
-
- filter = gtk_file_filter_new ();
-
- gtk_file_filter_set_name (filter, _("Audio"));
-
- for ( i = 0; i < G_N_ELEMENTS (audio_mime_types); i++)
- gtk_file_filter_add_mime_type (filter, audio_mime_types[i]);
-
- return filter;
-}
-
-/*
- * Supported Video formats.
- */
-GtkFileFilter *parole_get_supported_video_filter (void)
-{
- GtkFileFilter *filter;
- guint i;
-
- filter = gtk_file_filter_new ();
-
- gtk_file_filter_set_name (filter, _("Video"));
-
- for ( i = 0; i < G_N_ELEMENTS (video_mime_types); i++)
- gtk_file_filter_add_mime_type (filter, video_mime_types[i]);
-
- return filter;
-}
-
-/*
- * Supported Audio And Video.
- */
-GtkFileFilter *parole_get_supported_media_filter (void)
-{
- GtkFileFilter *filter;
- guint i;
-
- filter = gtk_file_filter_new ();
-
- gtk_file_filter_set_name (filter, _("Audio and video"));
-
- for ( i = 0; i < G_N_ELEMENTS (audio_mime_types); i++)
- gtk_file_filter_add_mime_type (filter, audio_mime_types[i]);
-
- for ( i = 0; i < G_N_ELEMENTS (video_mime_types); i++)
- gtk_file_filter_add_mime_type (filter, video_mime_types[i]);
-
- return filter;
-}
-
-GtkFileFilter *parole_get_supported_files_filter (void)
-{
- GtkFileFilter *filter;
- guint i;
-
- filter = parole_get_supported_media_filter ();
-
- gtk_file_filter_set_name (filter, _("All supported files"));
-
- for ( i = 0; i < G_N_ELEMENTS (playlist_mime_types); i++)
- gtk_file_filter_add_mime_type (filter, playlist_mime_types[i]);
-
- return filter;
-
-}
-
-GtkFileFilter *parole_get_supported_playlist_filter (void)
-{
- GtkFileFilter *filter;
- guint i;
-
- filter = gtk_file_filter_new ();
-
- gtk_file_filter_set_name (filter, _("Playlist files"));
-
- for ( i = 0; i < G_N_ELEMENTS (playlist_mime_types); i++)
- gtk_file_filter_add_mime_type (filter, playlist_mime_types[i]);
-
- return filter;
-}
-
-gboolean parole_file_filter (GtkFileFilter *filter, ParoleFile *file)
-{
- GtkFileFilterInfo filter_info;
-
- gboolean ret;
-
- filter_info.display_name = parole_file_get_display_name (file);
- filter_info.mime_type = parole_file_get_content_type (file);
-
- filter_info.contains = GTK_FILE_FILTER_DISPLAY_NAME | GTK_FILE_FILTER_MIME_TYPE;
-
- ret = gtk_file_filter_filter (filter, &filter_info);
-
- return ret;
-}
-
-void parole_get_media_files (GtkFileFilter *filter, const gchar *path,
- gboolean recursive, GSList **list)
-{
- GtkFileFilter *playlist_filter;
- GSList *list_internal = NULL;
- GSList *playlist = NULL;
- GDir *dir;
- const gchar *name;
- ParoleFile *file;
-
- playlist_filter = parole_get_supported_playlist_filter ();
- g_object_ref_sink (playlist_filter);
-
- if ( g_file_test (path, G_FILE_TEST_IS_REGULAR ) )
- {
- file = parole_file_new (path);
- if ( parole_file_filter (playlist_filter, file) )
- {
- playlist = parole_pl_parser_load_file (path);
- g_object_unref (file);
- if ( playlist)
- {
- *list = g_slist_concat (*list, playlist);
- }
- }
- else if ( parole_file_filter (filter, file) )
- {
- *list = g_slist_append (*list, file);
- }
- else
- g_object_unref (file);
- }
- else if ( g_file_test (path, G_FILE_TEST_IS_DIR ) )
- {
- dir = g_dir_open (path, 0, NULL);
-
- if ( G_UNLIKELY (dir == NULL) )
- return;
-
- while ( (name = g_dir_read_name (dir)) )
- {
- gchar *path_internal = g_strdup_printf ("%s/%s", path, name);
- if ( g_file_test (path_internal, G_FILE_TEST_IS_DIR) && recursive)
- {
- parole_get_media_files (filter, path_internal, TRUE, list);
- }
- else if ( g_file_test (path_internal, G_FILE_TEST_IS_REGULAR) )
- {
- file = parole_file_new (path_internal);
- if ( parole_file_filter (playlist_filter, file) )
- {
- playlist = parole_pl_parser_load_file (path);
- g_object_unref (file);
- if ( playlist)
- {
- *list = g_slist_concat (*list, playlist);
- }
- }
- else if ( parole_file_filter (filter, file) )
- {
- list_internal = g_slist_append (list_internal, file);
- }
- else
- g_object_unref (file);
- }
- g_free (path_internal);
- }
- list_internal = g_slist_sort (list_internal, (GCompareFunc) thunar_file_compare_by_name);
- g_dir_close (dir);
- *list = g_slist_concat (*list, list_internal);
- }
- g_object_unref (playlist_filter);
-}
diff --git a/parole/parole-filters.h b/parole/parole-filters.h
deleted file mode 100644
index 2a12951..0000000
--- a/parole/parole-filters.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifndef __PAROLE_FILTERS_H
-#define __PAROLE_FILTERS_H
-
-#include <gtk/gtk.h>
-
-#include "parole-file.h"
-
-G_BEGIN_DECLS
-
-typedef enum
-{
- PAROLE_FILE_UNKNOWN,
- PAROLE_FILE_AUDIO,
- PAROLE_FILE_VIDEO,
- PAROLE_FILE_PLAYLIST
-
-} ParoleFileFormat;
-
-GtkFileFilter *parole_get_supported_audio_filter (void);
-
-GtkFileFilter *parole_get_supported_video_filter (void);
-
-GtkFileFilter *parole_get_supported_media_filter (void);
-
-GtkFileFilter *parole_get_supported_files_filter (void);
-
-GtkFileFilter *parole_get_supported_playlist_filter (void);
-
-gboolean parole_file_filter (GtkFileFilter *filter,
- ParoleFile *file);
-
-ParoleFileFormat parole_file_guess_format (ParoleFile *file);
-
-void parole_get_media_files (GtkFileFilter *filter,
- const gchar *path,
- gboolean recursive,
- GSList **list);
-
-G_END_DECLS
-
-#endif /* PAROLE_FILTERS_H */
diff --git a/parole/parole-mediachooser.c b/parole/parole-mediachooser.c
deleted file mode 100644
index 59ec020..0000000
--- a/parole/parole-mediachooser.c
+++ /dev/null
@@ -1,286 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <gtk/gtk.h>
-#include <glib.h>
-
-#include <libxfce4util/libxfce4util.h>
-#include <libxfcegui4/libxfcegui4.h>
-
-#include "interfaces/mediachooser_ui.h"
-
-#include "parole-mediachooser.h"
-#include "parole-builder.h"
-#include "parole-file.h"
-#include "parole-filters.h"
-#include "parole-rc-utils.h"
-#include "parole-utils.h"
-
-#include "common/parole-common.h"
-
-#include "gmarshal.h"
-
-/*
- * GtkBuilder Callbacks
- */
-void parole_media_chooser_open (GtkWidget *widget,
- ParoleMediaChooser *chooser);
-
-void parole_media_chooser_close (GtkWidget *widget,
- ParoleMediaChooser *chooser);
-
-void media_chooser_folder_changed_cb (GtkWidget *widget,
- gpointer data);
-
-void media_chooser_file_activate_cb (GtkFileChooser *filechooser,
- ParoleMediaChooser *chooser);
-
-void parole_media_chooser_recursive_toggled_cb (GtkToggleButton *recursive,
- gpointer data);
-
-void parole_media_chooser_replace_toggled_cb (GtkToggleButton *button,
- gpointer data);
-
-enum
-{
- MEDIA_FILES_OPENED,
- LAST_SIGNAL
-};
-
-static guint signals [LAST_SIGNAL] = { 0 };
-
-G_DEFINE_TYPE (ParoleMediaChooser, parole_media_chooser, GTK_TYPE_DIALOG)
-
-void parole_media_chooser_close (GtkWidget *widget, ParoleMediaChooser *chooser)
-{
- gtk_widget_destroy (GTK_WIDGET (chooser));
-}
-
-void
-media_chooser_folder_changed_cb (GtkWidget *widget, gpointer data)
-{
- gchar *folder;
- folder = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (widget));
-
- if ( folder )
- {
- parole_rc_write_entry_string ("media-chooser-folder", PAROLE_RC_GROUP_GENERAL, folder);
- g_free (folder);
- }
-}
-
-static void
-parole_media_chooser_add (ParoleMediaChooser *chooser, GtkWidget *file_chooser)
-{
- GSList *media_files = NULL;
- GSList *files;
- GtkFileFilter *filter;
- GtkWidget *recursive;
- GtkWidget *replace;
- gboolean scan_recursive;
- gboolean replace_playlist;
- gchar *file;
- guint i;
- guint len;
-
- files = gtk_file_chooser_get_filenames (GTK_FILE_CHOOSER (file_chooser));
- filter = gtk_file_chooser_get_filter (GTK_FILE_CHOOSER (file_chooser));
-
- if ( G_UNLIKELY (files == NULL) )
- return;
-
- recursive = g_object_get_data (G_OBJECT (chooser), "recursive");
- replace = g_object_get_data (G_OBJECT (chooser), "replace-playlist");
-
- scan_recursive = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (recursive));
- replace_playlist = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (replace));
-
- len = g_slist_length (files);
-
- for ( i = 0; i < len; i++)
- {
- file = g_slist_nth_data (files, i);
- parole_get_media_files (filter, file, scan_recursive, &media_files);
- }
-
- g_signal_emit (G_OBJECT (chooser), signals [MEDIA_FILES_OPENED], 0, replace_playlist, media_files);
- g_slist_free (media_files);
-
- g_slist_foreach (files, (GFunc) g_free, NULL);
- g_slist_free (files);
-}
-
-void
-parole_media_chooser_open (GtkWidget *widget, ParoleMediaChooser *chooser)
-{
- GtkWidget *file_chooser;
-
- file_chooser = GTK_WIDGET (g_object_get_data (G_OBJECT (chooser), "file-chooser"));
-
- parole_window_busy_cursor (GTK_WIDGET (chooser)->window);
- parole_media_chooser_add (chooser, file_chooser);
- gtk_widget_destroy (GTK_WIDGET (chooser));
-}
-
-void media_chooser_file_activate_cb (GtkFileChooser *filechooser, ParoleMediaChooser *chooser)
-{
- parole_media_chooser_open (NULL, chooser);
-}
-
-void parole_media_chooser_recursive_toggled_cb (GtkToggleButton *recursive,
- gpointer data)
-{
- parole_rc_write_entry_bool ("scan-recursive",
- PAROLE_RC_GROUP_GENERAL,
- gtk_toggle_button_get_active (recursive));
-}
-
-void parole_media_chooser_replace_toggled_cb (GtkToggleButton *button,
- gpointer data)
-{
- parole_rc_write_entry_bool ("replace-playlist",
- PAROLE_RC_GROUP_GENERAL,
- gtk_toggle_button_get_active (button));
-}
-
-static void
-parole_media_chooser_open_internal (GtkWidget *chooser)
-{
- ParoleMediaChooser *media_chooser;
- GtkWidget *vbox;
- GtkWidget *file_chooser;
- GtkBuilder *builder;
- GtkWidget *open;
- GtkWidget *img;
- GtkWidget *recursive;
- GtkWidget *replace;
- gboolean scan_recursive;
- gboolean replace_playlist;
- const gchar *folder;
-
- media_chooser = PAROLE_MEDIA_CHOOSER (chooser);
-
- builder = parole_builder_new_from_string (mediachooser_ui, mediachooser_ui_length);
-
- file_chooser = GTK_WIDGET (gtk_builder_get_object (builder, "filechooserwidget"));
-
- vbox = GTK_WIDGET (gtk_builder_get_object (builder, "vbox"));
- open = GTK_WIDGET (gtk_builder_get_object (builder, "open"));
-
- gtk_window_set_title (GTK_WINDOW (chooser), _("Add media files"));
-
- gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (file_chooser), parole_get_supported_files_filter ());
- gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (file_chooser), parole_get_supported_media_filter ());
- gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (file_chooser), parole_get_supported_audio_filter ());
- gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (file_chooser), parole_get_supported_video_filter ());
- gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (file_chooser), parole_get_supported_playlist_filter ());
-
- folder = parole_rc_read_entry_string ("media-chooser-folder", PAROLE_RC_GROUP_GENERAL, NULL);
-
- if ( folder )
- gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (file_chooser), folder);
-
- gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER (file_chooser), TRUE);
-
- scan_recursive = parole_rc_read_entry_bool ("scan-recursive", PAROLE_RC_GROUP_GENERAL, TRUE);
-
- recursive = GTK_WIDGET (gtk_builder_get_object (builder, "recursive"));
- replace = GTK_WIDGET (gtk_builder_get_object (builder, "replace"));
-
- scan_recursive = parole_rc_read_entry_bool ("scan-recursive", PAROLE_RC_GROUP_GENERAL, TRUE);
- replace_playlist = parole_rc_read_entry_bool ("replace-playlist", PAROLE_RC_GROUP_GENERAL, FALSE);
-
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (recursive), scan_recursive);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (replace), replace_playlist);
-
- img = gtk_image_new_from_stock (GTK_STOCK_ADD, GTK_ICON_SIZE_BUTTON);
-
- g_object_set (G_OBJECT (open),
- "image", img,
- "label", _("Add"),
- NULL);
-
- g_object_set_data (G_OBJECT (chooser), "file-chooser", file_chooser);
- g_object_set_data (G_OBJECT (chooser), "recursive", recursive);
- g_object_set_data (G_OBJECT (chooser), "replace-playlist", replace);
-
- gtk_container_add (GTK_CONTAINER (GTK_DIALOG (media_chooser)->vbox), vbox);
- gtk_builder_connect_signals (builder, chooser);
- g_signal_connect (chooser, "destroy",
- G_CALLBACK (gtk_widget_destroy), chooser);
-
- g_object_unref (builder);
-}
-
-static void
-parole_media_chooser_finalize (GObject *object)
-{
- G_OBJECT_CLASS (parole_media_chooser_parent_class)->finalize (object);
-}
-
-static void
-parole_media_chooser_class_init (ParoleMediaChooserClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
- signals[MEDIA_FILES_OPENED] =
- g_signal_new("media-files-opened",
- PAROLE_TYPE_MEDIA_CHOOSER,
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (ParoleMediaChooserClass, media_files_opened),
- NULL, NULL,
- _gmarshal_VOID__BOOLEAN_POINTER,
- G_TYPE_NONE, 2,
- G_TYPE_BOOLEAN,
- G_TYPE_POINTER);
-
- object_class->finalize = parole_media_chooser_finalize;
-}
-
-static void
-parole_media_chooser_init (ParoleMediaChooser *chooser)
-{
- gtk_window_set_modal (GTK_WINDOW (chooser), TRUE);
-}
-
-GtkWidget *parole_media_chooser_open_local (GtkWidget *parent)
-{
- ParoleMediaChooser *chooser;
-
- chooser = g_object_new (PAROLE_TYPE_MEDIA_CHOOSER, NULL);
-
- if ( parent )
- gtk_window_set_transient_for (GTK_WINDOW (chooser), GTK_WINDOW (parent));
-
- gtk_window_set_position (GTK_WINDOW (chooser), GTK_WIN_POS_CENTER_ON_PARENT);
- parole_media_chooser_open_internal (GTK_WIDGET (chooser));
-
- gtk_window_set_default_size (GTK_WINDOW (chooser), 680, 480);
-
- return GTK_WIDGET (chooser);
-}
diff --git a/parole/parole-mediachooser.h b/parole/parole-mediachooser.h
deleted file mode 100644
index da57a88..0000000
--- a/parole/parole-mediachooser.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifndef __PAROLE_MEDIA_CHOOSER_H
-#define __PAROLE_MEDIA_CHOOSER_H
-
-#include <glib-object.h>
-#include <gtk/gtk.h>
-
-G_BEGIN_DECLS
-
-#define PAROLE_TYPE_MEDIA_CHOOSER (parole_media_chooser_get_type () )
-#define PAROLE_MEDIA_CHOOSER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), PAROLE_TYPE_MEDIA_CHOOSER, ParoleMediaChooser))
-#define PAROLE_IS_MEDIA_CHOOSER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), PAROLE_TYPE_MEDIA_CHOOSER))
-
-typedef struct ParoleMediaChooserPrivate ParoleMediaChooserPrivate;
-
-typedef struct
-{
- GtkDialog parent;
-
-} ParoleMediaChooser;
-
-typedef struct
-{
- GtkDialogClass parent_class;
-
- void (*media_files_opened) (ParoleMediaChooser *chooser,
- gboolean replace,
- GSList *list);
-
-} ParoleMediaChooserClass;
-
-GType parole_media_chooser_get_type (void) G_GNUC_CONST;
-
-GtkWidget *parole_media_chooser_open_local (GtkWidget *parent);
-
-G_END_DECLS
-
-#endif /* __PAROLE_MEDIA_CHOOSER_H */
diff --git a/parole/parole-medialist.c b/parole/parole-medialist.c
deleted file mode 100644
index db9f8e2..0000000
--- a/parole/parole-medialist.c
+++ /dev/null
@@ -1,1381 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <gtk/gtk.h>
-#include <gdk/gdkkeysyms.h>
-#include <glib.h>
-#include <glib/gstdio.h>
-#include <gio/gio.h>
-
-#include <libxfce4util/libxfce4util.h>
-#include <libxfcegui4/libxfcegui4.h>
-
-#include "interfaces/playlist_ui.h"
-#include "interfaces/save-playlist_ui.h"
-
-#include "parole-builder.h"
-#include "parole-medialist.h"
-#include "parole-file.h"
-#include "parole-mediachooser.h"
-#include "parole-open-location.h"
-
-#include "parole-filters.h"
-#include "parole-pl-parser.h"
-#include "parole-utils.h"
-#include "parole-rc-utils.h"
-#include "parole-dbus.h"
-
-#include "common/parole-common.h"
-
-#define PAROLE_AUTO_SAVED_PLAYLIST "xfce4/parole/auto-saved-playlist.m3u"
-
-typedef struct
-{
- GtkWidget *chooser;
- GtkTreeSelection *sel;
- ParoleMediaList *list;
-
-} ParolePlaylistSave;
-
-static struct
-{
- ParolePlFormat format;
- gchar * ext;
-} playlist_format_map [] = {
- { PAROLE_PL_FORMAT_UNKNOWN, "" },
- { PAROLE_PL_FORMAT_M3U, ".m3u" },
- { PAROLE_PL_FORMAT_PLS, ".pls" },
- { PAROLE_PL_FORMAT_ASX, ".asx" },
- { PAROLE_PL_FORMAT_XSPF, ".xspf" }
-};
-
-static GtkTargetEntry target_entry[] =
-{
- { "STRING", 0, 0 },
- { "text/uri-list", 0, 1 },
-};
-
-static void parole_media_list_dbus_class_init (ParoleMediaListClass *klass);
-static void parole_media_list_dbus_init (ParoleMediaList *list);
-
-static GtkTreeRowReference *
- parole_media_list_get_row_reference_from_iter (ParoleMediaList *list,
- GtkTreeIter *iter,
- gboolean select_path);
-
-static void parole_media_list_select_path (ParoleMediaList *list,
- GtkTreePath *path);
-
-static void parole_media_list_clear_list (ParoleMediaList *list);
-
-/*
- * Callbacks for GtkBuilder
- */
-void parole_media_list_media_up_clicked_cb (GtkButton *button,
- ParoleMediaList *list);
-
-void parole_media_list_media_down_clicked_cb (GtkButton *button,
- ParoleMediaList *list);
-
-void parole_media_list_save_cb (GtkButton *button,
- ParoleMediaList *list);
-
-void parole_media_list_add_clicked_cb (GtkButton *button,
- ParoleMediaList *list);
-
-void parole_media_list_remove_clicked_cb (GtkButton *button,
- ParoleMediaList *list);
-
-void parole_media_list_row_activated_cb (GtkTreeView *view,
- GtkTreePath *path,
- GtkTreeViewColumn *col,
- ParoleMediaList *list);
-
-gboolean parole_media_list_button_release_event (GtkWidget *widget,
- GdkEventButton *ev,
- ParoleMediaList *list);
-
-void parole_media_list_drag_data_received_cb (GtkWidget *widget,
- GdkDragContext *drag_context,
- gint x,
- gint y,
- GtkSelectionData *data,
- guint info,
- guint drag_time,
- ParoleMediaList *list);
-
-gboolean parole_media_list_key_press (GtkWidget *widget,
- GdkEventKey *ev,
- ParoleMediaList *list);
-
-void parole_media_list_format_cursor_changed_cb (GtkTreeView *view,
- ParolePlaylistSave *data);
-
-void parole_media_list_close_save_dialog_cb (GtkButton *button,
- ParolePlaylistSave *data);
-
-void parole_media_list_save_playlist_cb (GtkButton *button,
- ParolePlaylistSave *data);
-/*
- * End of GtkBuilder callbacks
- */
-
-#define PAROLE_MEDIA_LIST_GET_PRIVATE(o) \
-(G_TYPE_INSTANCE_GET_PRIVATE ((o), PAROLE_TYPE_MEDIA_LIST, ParoleMediaListPrivate))
-
-struct ParoleMediaListPrivate
-{
- GtkWidget *view;
- GtkWidget *box;
- GtkListStore *store;
- GtkTreeSelection *sel;
-
- GtkWidget *remove;
- GtkWidget *up;
- GtkWidget *down;
- GtkWidget *save;
-};
-
-enum
-{
- MEDIA_ACTIVATED,
- MEDIA_CURSOR_CHANGED,
- URI_OPENED,
- LAST_SIGNAL
-};
-
-static guint signals [LAST_SIGNAL] = { 0 };
-
-G_DEFINE_TYPE (ParoleMediaList, parole_media_list, GTK_TYPE_VBOX)
-
-static void
-parole_media_list_set_widget_sensitive (ParoleMediaList *list, gboolean sensitive)
-{
- gtk_widget_set_sensitive (GTK_WIDGET (list->priv->up), sensitive);
- gtk_widget_set_sensitive (GTK_WIDGET (list->priv->remove), sensitive);
- gtk_widget_set_sensitive (GTK_WIDGET (list->priv->down), sensitive);
- gtk_widget_set_sensitive (GTK_WIDGET (list->priv->save), sensitive);
-}
-
-static void
-parole_media_list_add (ParoleMediaList *list, ParoleFile *file, gboolean emit, gboolean select_row)
-{
- GtkListStore *list_store;
- GtkTreePath *path;
- GtkTreeRowReference *row;
- GtkTreeIter iter;
- gint nch;
-
- list_store = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (list->priv->view)));
-
- gtk_list_store_append (list_store, &iter);
-
- gtk_list_store_set (list_store,
- &iter,
- NAME_COL, parole_file_get_display_name (file),
- DATA_COL, file,
- -1);
-
- if ( emit )
- {
- path = gtk_tree_model_get_path (GTK_TREE_MODEL (list_store), &iter);
- row = gtk_tree_row_reference_new (GTK_TREE_MODEL (list_store), path);
- gtk_tree_path_free (path);
- g_signal_emit (G_OBJECT (list), signals [MEDIA_ACTIVATED], 0, row);
- gtk_tree_row_reference_free (row);
- }
-
- if ( select_row )
- {
- path = gtk_tree_model_get_path (GTK_TREE_MODEL (list_store), &iter);
- parole_media_list_select_path (list, path);
- gtk_tree_path_free (path);
- }
-
- /*
- * Unref it as the list store will have
- * a reference anyway.
- */
- g_object_unref (file);
-
- nch = gtk_tree_model_iter_n_children (GTK_TREE_MODEL (list->priv->store), NULL);
-
- if ( nch == 1 )
- {
- gtk_widget_set_sensitive (list->priv->up, FALSE);
- gtk_widget_set_sensitive (list->priv->down, FALSE);
- gtk_widget_set_sensitive (list->priv->save, TRUE);
- gtk_widget_set_sensitive (list->priv->remove, TRUE);
- }
- else
- parole_media_list_set_widget_sensitive (list, TRUE);
-
-}
-
-static void
-parole_media_list_files_opened_cb (ParoleMediaChooser *chooser, gboolean replace,
- GSList *files, ParoleMediaList *list)
-{
- ParoleFile *file;
- guint len;
- guint i;
-
- len = g_slist_length (files);
- TRACE ("Adding files");
-
- if ( len != 0 )
- {
- parole_media_list_clear_list (list);
- file = g_slist_nth_data (files, 0);
- parole_media_list_add (list, file, TRUE, TRUE);
- }
-
- for ( i = 1; i < len; i++)
- {
- file = g_slist_nth_data (files, i);
- parole_media_list_add (list, file, FALSE, FALSE);
- }
-}
-
-static void
-parole_media_list_location_opened_cb (ParoleOpenLocation *obj, const gchar *location, ParoleMediaList *list)
-{
- ParoleFile *file;
-
- if ( parole_is_uri_disc (location) )
- {
- g_signal_emit (G_OBJECT (list), signals [URI_OPENED], 0, location);
- }
- else
- {
- file = parole_file_new (location);
- parole_media_list_add (list, file, TRUE, TRUE);
- }
-}
-
-static void
-parole_media_list_open_internal (ParoleMediaList *list)
-{
- GtkWidget *chooser;
-
- chooser = parole_media_chooser_open_local (gtk_widget_get_toplevel (GTK_WIDGET (list)));
-
- g_signal_connect (G_OBJECT (chooser), "media_files_opened",
- G_CALLBACK (parole_media_list_files_opened_cb), list);
-
- gtk_widget_show_all (GTK_WIDGET (chooser));
-}
-
-static void
-parole_media_list_open_location_internal (ParoleMediaList *list)
-{
- GtkWidget *location;
-
- location = parole_open_location (gtk_widget_get_toplevel (GTK_WIDGET (list)));
-
- g_signal_connect (G_OBJECT (location), "location-opened",
- G_CALLBACK (parole_media_list_location_opened_cb), list);
-
- gtk_widget_show_all (GTK_WIDGET (location));
-}
-
-static GSList *
-parole_media_list_get_files (ParoleMediaList *list)
-{
- ParoleFile *file;
- GtkTreeIter iter;
- gboolean valid;
- GSList *files_list = NULL;
-
- for ( valid = gtk_tree_model_get_iter_first (GTK_TREE_MODEL (list->priv->store), &iter);
- valid;
- valid = gtk_tree_model_iter_next (GTK_TREE_MODEL (list->priv->store), &iter))
- {
- gtk_tree_model_get (GTK_TREE_MODEL (list->priv->store), &iter,
- DATA_COL, &file,
- -1);
-
- files_list = g_slist_append (files_list, file);
- }
-
- return files_list;
-}
-
-void parole_media_list_drag_data_received_cb (GtkWidget *widget,
- GdkDragContext *drag_context,
- gint x,
- gint y,
- GtkSelectionData *data,
- guint info,
- guint drag_time,
- ParoleMediaList *list)
-{
- gchar **uri_list;
- gchar *path;
- guint i;
- guint added = 0;
-
- parole_window_busy_cursor (GTK_WIDGET (list)->window);
-
- uri_list = g_uri_list_extract_uris ((const gchar *)data->data);
-
- for ( i = 0; uri_list[i] != NULL; i++)
- {
- path = g_filename_from_uri (uri_list[i], NULL, NULL);
- added += parole_media_list_add_by_path (list, path, i == 0 ? TRUE : FALSE);
-
- g_free (path);
- }
-
- g_strfreev (uri_list);
-
- gdk_window_set_cursor (GTK_WIDGET (list)->window, NULL);
- gtk_drag_finish (drag_context, added == i ? TRUE : FALSE, FALSE, drag_time);
-}
-
-gboolean parole_media_list_key_press (GtkWidget *widget, GdkEventKey *ev, ParoleMediaList *list)
-{
- if ( ev->keyval == GDK_Delete )
- {
- parole_media_list_remove_clicked_cb (NULL, list);
- return TRUE;
- }
- return FALSE;
-}
-
-void
-parole_media_list_add_clicked_cb (GtkButton *button, ParoleMediaList *list)
-{
- parole_media_list_open_internal (list);
-}
-
-void parole_media_list_close_save_dialog_cb (GtkButton *button, ParolePlaylistSave *data)
-{
- gtk_widget_destroy (GTK_WIDGET (data->chooser));
- g_free (data);
-}
-
-static GtkTreeRowReference *
-parole_media_list_get_first_selected_row (ParoleMediaList *list)
-{
- GtkTreeModel *model;
- GtkTreeRowReference *row = NULL;
- GtkTreeIter iter;
- GList *path_list = NULL;
-
- path_list = gtk_tree_selection_get_selected_rows (list->priv->sel, &model);
-
- if ( g_list_length (path_list) > 0 )
- {
- GtkTreePath *path;
- path = g_list_nth_data (path_list, 0);
-
- if ( G_LIKELY (gtk_tree_model_get_iter (model, &iter, path) == TRUE ))
- {
- row = parole_media_list_get_row_reference_from_iter (list, &iter, FALSE);
- }
- }
-
- g_list_foreach (path_list, (GFunc)gtk_tree_path_free, NULL);
- g_list_free (path_list);
-
- return row;
-}
-
-void parole_media_list_save_playlist_cb (GtkButton *button, ParolePlaylistSave *data)
-{
- ParolePlFormat format = PAROLE_PL_FORMAT_UNKNOWN;
- GSList *list = NULL;
- GtkTreeModel *model;
- GtkTreeIter iter;
- gchar *filename;
- gchar *dirname;
-
- filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (data->chooser));
- dirname = g_path_get_dirname (filename);
-
- if ( gtk_tree_selection_get_selected (data->sel, &model, &iter ) )
- {
- gtk_tree_model_get (model, &iter, 2, &format, -1);
- }
-
- if ( g_access (dirname, W_OK) == -1 )
- {
- xfce_err ("%s %s %s", _("Error saving playlist file"), dirname, _("Permission denied"));
- goto out;
- }
-
- if ( format == PAROLE_PL_FORMAT_UNKNOWN )
- {
- format = parole_pl_parser_guess_format_from_extension (filename);
- if ( format == PAROLE_PL_FORMAT_UNKNOWN )
- {
- xfce_info ("%s", _("Unknown playlist format, Please select a support playlist format"));
- goto out;
- }
- }
-
- list = parole_media_list_get_files (data->list);
-
- parole_media_list_close_save_dialog_cb (NULL, data);
-
- parole_pl_parser_save_file (list, filename, format);
- g_slist_free (list);
-out:
- g_free (filename);
- g_free (dirname);
-}
-
-void parole_media_list_format_cursor_changed_cb (GtkTreeView *view, ParolePlaylistSave *data)
-{
- GtkTreeIter iter;
- GtkTreeModel *model;
- ParolePlFormat format;
- gchar *filename;
- gchar *fbasename;
-
- filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (data->chooser));
- fbasename = g_path_get_basename (filename);
-
- g_free (filename);
-
- if ( gtk_tree_selection_get_selected (data->sel, &model, &iter ) )
- {
- gtk_tree_model_get (model, &iter, 2, &format, -1);
- if ( format != PAROLE_PL_FORMAT_UNKNOWN )
- {
- gchar *name, *new_name;
- name = parole_get_name_without_extension (fbasename);
- new_name = g_strdup_printf ("%s%s", name, playlist_format_map[format].ext);
- gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (data->chooser), new_name);
- g_free (new_name);
- g_free (name);
- }
- }
- g_free (fbasename);
-
-}
-
-void parole_media_list_save_cb (GtkButton *button, ParoleMediaList *list)
-{
- ParolePlaylistSave *data;
- GtkWidget *chooser;
- GtkWidget *view;
- GtkListStore *store;
- GtkBuilder *builder;
- gchar *filename;
- GtkTreeIter iter;
-
- data = g_new0 (ParolePlaylistSave, 1);
-
- builder = parole_builder_new_from_string (save_playlist_ui, save_playlist_ui_length);
-
- chooser = GTK_WIDGET (gtk_builder_get_object (builder, "filechooserdialog"));
- store = GTK_LIST_STORE (gtk_builder_get_object (builder, "liststore"));
-
- gtk_window_set_transient_for (GTK_WINDOW (chooser),
- GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (list))));
-
- gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (chooser), TRUE);
-
- filename = g_strconcat (_("Playlist"), ".m3u", NULL);
- gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (chooser), filename);
- g_free (filename);
-
- gtk_list_store_append (store, &iter);
- gtk_list_store_set (store,
- &iter,
- 0, _("M3U Playlists"),
- 1, "m3u",
- 2, PAROLE_PL_FORMAT_M3U,
- -1);
-
- gtk_list_store_append (store, &iter);
- gtk_list_store_set (store,
- &iter,
- 0, _("PLS Playlists"),
- 1, "pls",
- 2, PAROLE_PL_FORMAT_PLS,
- -1);
-
- gtk_list_store_append (store, &iter);
- gtk_list_store_set (store,
- &iter,
- 0, _("Advanced Stream Redirector"),
- 1, "asx",
- 2, PAROLE_PL_FORMAT_ASX,
- -1);
-
- gtk_list_store_append (store, &iter);
- gtk_list_store_set (store,
- &iter,
- 0, _("Shareable Playlist"),
- 1, "xspf",
- 2, PAROLE_PL_FORMAT_XSPF,
- -1);
-
- view = GTK_WIDGET (gtk_builder_get_object (builder, "treeview"));
-
- data->chooser = chooser;
- data->sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (view));
- data->list = list;
-
- gtk_builder_connect_signals (builder, data);
- gtk_widget_show_all (chooser);
- g_object_unref (builder);
-}
-
-static GList *
-parole_media_list_path_to_row_list (GList *path_list, GtkTreeModel *model)
-{
- GList *row_list = NULL;
- guint len, i;
-
- len = g_list_length (path_list);
-
- for ( i = 0; i < len; i++)
- {
- GtkTreePath *path;
- GtkTreeRowReference *row;
-
- path = g_list_nth_data (path_list, i);
-
- row = gtk_tree_row_reference_new (model, path);
- path = gtk_tree_row_reference_get_path (row);
- row_list = g_list_append (row_list, row);
- }
-
- return row_list;
-}
-
-void
-parole_media_list_remove_clicked_cb (GtkButton *button, ParoleMediaList *list)
-{
- GtkTreeModel *model;
- GList *path_list = NULL;
- GList *row_list = NULL;
- GtkTreeIter iter;
- gint nch;
- guint len, i;
-
- path_list = gtk_tree_selection_get_selected_rows (list->priv->sel, &model);
-
- row_list = parole_media_list_path_to_row_list (path_list, model);
-
- g_list_foreach (path_list, (GFunc) gtk_tree_path_free, NULL);
- g_list_free (path_list);
-
- len = g_list_length (row_list);
-
- for ( i = 0; i < len; i++)
- {
- GtkTreePath *path;
- GtkTreeRowReference *row;
- row = g_list_nth_data (row_list, i);
- path = gtk_tree_row_reference_get_path (row);
-
- if ( G_LIKELY (gtk_tree_model_get_iter (model, &iter, path) == TRUE ) )
- {
- gtk_list_store_remove (GTK_LIST_STORE (model),
- &iter);
- }
- }
-
- g_list_foreach (row_list, (GFunc) gtk_tree_row_reference_free, NULL);
- g_list_free (row_list);
-
- /*
- * Returns the number of children that iter has.
- * As a special case, if iter is NULL,
- * then the number of toplevel nodes is returned. Gtk API doc.
- */
- nch = gtk_tree_model_iter_n_children (GTK_TREE_MODEL (list->priv->store), NULL);
-
- if ( nch == 0)
- {
- parole_media_list_set_widget_sensitive (list, FALSE);
- /*
- * Will emit the signal media_cursor_changed with FALSE because there is no any
- * row remaining, so the player can disable click on the play button.
- */
- g_signal_emit (G_OBJECT (list), signals [MEDIA_CURSOR_CHANGED], 0, FALSE);
- }
- else if ( nch == 1 )
- {
- gtk_widget_set_sensitive (list->priv->up, FALSE);
- gtk_widget_set_sensitive (list->priv->down, FALSE);
- }
-}
-
-static void
-parole_media_list_move_one_down (GtkListStore *store, GtkTreeIter *iter)
-{
- GtkTreeIter *pos_iter;
-
- /* Save the selected iter to the selected row */
- pos_iter = gtk_tree_iter_copy (iter);
-
- /* We are on the last node in the list!*/
- if ( !gtk_tree_model_iter_next (GTK_TREE_MODEL (store), iter) )
- {
- /* Return false if tree is empty*/
- if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), iter))
- {
- gtk_list_store_move_before (GTK_LIST_STORE (store), pos_iter, iter);
- }
- }
- else
- {
- gtk_list_store_move_after (GTK_LIST_STORE (store), pos_iter, iter);
- }
-
- gtk_tree_iter_free (pos_iter);
-}
-
-static void
-parole_media_list_move_many_down (GList *path_list, GtkTreeModel *model)
-{
- GList *row_list = NULL;
- GtkTreeIter iter;
- guint len;
- guint i;
-
- row_list = parole_media_list_path_to_row_list (path_list, model);
-
- len = g_list_length (row_list);
-
- for ( i = 0; i < len; i++)
- {
- GtkTreeRowReference *row;
- GtkTreePath *path;
-
- row = g_list_nth_data (row_list, i);
-
- path = gtk_tree_row_reference_get_path (row);
-
- if ( G_LIKELY (gtk_tree_model_get_iter (model, &iter, path) ) )
- {
- parole_media_list_move_one_down (GTK_LIST_STORE (model), &iter);
- }
- }
-
- g_list_foreach (row_list, (GFunc) gtk_tree_row_reference_free, NULL);
- g_list_free (row_list);
-}
-
-void
-parole_media_list_media_down_clicked_cb (GtkButton *button, ParoleMediaList *list)
-{
- GtkTreeIter iter;
- GList *path_list = NULL;
- GtkTreeModel *model;
- guint len;
-
- path_list = gtk_tree_selection_get_selected_rows (list->priv->sel, &model);
-
- len = g_list_length (path_list);
-
- if ( len == 1 )
- {
- GtkTreePath *path;
- path = g_list_nth_data (path_list, 0);
- if ( G_LIKELY (gtk_tree_model_get_iter (model, &iter, path)) )
- parole_media_list_move_one_down (list->priv->store, &iter);
- }
- else
- {
- parole_media_list_move_many_down (path_list, model);
- }
-
- g_list_foreach (path_list, (GFunc) gtk_tree_path_free, NULL);
- g_list_free (path_list);
-}
-
-static void
-parole_media_list_move_one_up (GtkListStore *store, GtkTreeIter *iter)
-{
- GtkTreePath *path;
- GtkTreeIter *pos_iter;
-
- /* Save the selected iter to the selected row */
- pos_iter = gtk_tree_iter_copy (iter);
-
- path = gtk_tree_model_get_path (GTK_TREE_MODEL (store), iter);
-
- /* We are on the top of the list */
- if ( !gtk_tree_path_prev (path) )
- {
- /* Passing NULL as the last argument will cause this call to move
- * the iter to the end of the list, Gtk API doc*/
- gtk_list_store_move_before (GTK_LIST_STORE (store), iter, NULL);
- }
- else
- {
- if (gtk_tree_model_get_iter (GTK_TREE_MODEL (store), iter, path))
- gtk_list_store_move_before (GTK_LIST_STORE (store), pos_iter, iter);
- }
-
- gtk_tree_path_free (path);
- gtk_tree_iter_free (pos_iter);
-}
-
-static void
-parole_media_list_move_many_up (GList *path_list, GtkTreeModel *model)
-{
- GList *row_list = NULL;
- GtkTreeIter iter;
- guint len;
- guint i;
-
- row_list = parole_media_list_path_to_row_list (path_list, model);
-
- len = g_list_length (row_list);
-
- for ( i = 0; i < len; i++)
- {
- GtkTreeRowReference *row;
- GtkTreePath *path;
-
- row = g_list_nth_data (row_list, i);
-
- path = gtk_tree_row_reference_get_path (row);
-
- if ( G_LIKELY (gtk_tree_model_get_iter (model, &iter, path) ) )
- {
- parole_media_list_move_one_up (GTK_LIST_STORE (model), &iter);
- }
- }
-
- g_list_foreach (row_list, (GFunc) gtk_tree_row_reference_free, NULL);
- g_list_free (row_list);
-}
-
-void
-parole_media_list_media_up_clicked_cb (GtkButton *button, ParoleMediaList *list)
-{
- GtkTreeIter iter;
- GList *path_list = NULL;
- GtkTreeModel *model;
- guint len;
-
- path_list = gtk_tree_selection_get_selected_rows (list->priv->sel, &model);
-
- len = g_list_length (path_list);
-
- if ( len == 1 )
- {
- GtkTreePath *path;
- path = g_list_nth_data (path_list, 0);
- if ( G_LIKELY (gtk_tree_model_get_iter (model, &iter, path)) )
- parole_media_list_move_one_up (list->priv->store, &iter);
- }
- else
- {
- parole_media_list_move_many_up (path_list, model);
- }
-
- g_list_foreach (path_list, (GFunc) gtk_tree_path_free, NULL);
- g_list_free (path_list);
-}
-
-void
-parole_media_list_row_activated_cb (GtkTreeView *view, GtkTreePath *path,
- GtkTreeViewColumn *col, ParoleMediaList *list)
-{
- GtkTreeModel *model;
- GtkTreeRowReference *row;
-
- model = gtk_tree_view_get_model (GTK_TREE_VIEW (list->priv->view));
-
- row = gtk_tree_row_reference_new (gtk_tree_view_get_model (GTK_TREE_VIEW (list->priv->view)),
- path);
-
- g_signal_emit (G_OBJECT (list), signals [MEDIA_ACTIVATED], 0, row);
-}
-
-static void
-parole_media_list_selection_changed_cb (GtkTreeSelection *sel, ParoleMediaList *list)
-{
- g_signal_emit (G_OBJECT (list), signals [MEDIA_CURSOR_CHANGED], 0,
- gtk_tree_selection_count_selected_rows (sel) > 0);
-}
-
-static void
-parole_media_list_clear_list (ParoleMediaList *list)
-{
- gtk_list_store_clear (GTK_LIST_STORE (list->priv->store));
- parole_media_list_set_widget_sensitive (list, FALSE);
-}
-
-static void
-save_list_activated_cb (GtkWidget *mi)
-{
- gboolean active;
-
- active = gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (mi));
-
- parole_rc_write_entry_bool ("SAVE_LIST_ON_EXIT", PAROLE_RC_GROUP_GENERAL, active);
-}
-
-static void
-parole_media_list_show_menu (ParoleMediaList *list, guint button, guint activate_time)
-{
- GtkWidget *menu, *mi;
-
- menu = gtk_menu_new ();
-
- mi = gtk_check_menu_item_new_with_label (_("Remember playlist"));
- gtk_widget_set_sensitive (mi, TRUE);
- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (mi),
- parole_rc_read_entry_bool ("SAVE_LIST_ON_EXIT",
- PAROLE_RC_GROUP_GENERAL,
- FALSE));
- g_signal_connect (mi, "activate",
- G_CALLBACK (save_list_activated_cb), NULL);
-
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi);
-
- gtk_widget_show (mi);
-
- mi = gtk_separator_menu_item_new ();
- gtk_widget_show (mi);
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi);
-
-
- /* Clear */
- mi = gtk_image_menu_item_new_from_stock (GTK_STOCK_CLEAR, NULL);
- gtk_widget_set_sensitive (mi, TRUE);
- gtk_widget_show (mi);
- g_signal_connect_swapped (mi, "activate",
- G_CALLBACK (parole_media_list_clear_list), list);
-
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi);
-
- g_signal_connect_swapped (menu, "selection-done",
- G_CALLBACK (gtk_widget_destroy), menu);
-
- gtk_menu_popup (GTK_MENU (menu),
- NULL, NULL,
- NULL, NULL,
- button, activate_time);
-}
-
-gboolean
-parole_media_list_button_release_event (GtkWidget *widget, GdkEventButton *ev, ParoleMediaList *list)
-{
- if ( ev->button == 3 )
- {
- parole_media_list_show_menu (list, ev->button, ev->time);
- return TRUE;
- }
-
- return FALSE;
-}
-
-static void
-parole_media_list_select_path (ParoleMediaList *list, GtkTreePath *path)
-{
- gtk_tree_selection_select_path (list->priv->sel, path);
- gtk_tree_view_set_cursor (GTK_TREE_VIEW (list->priv->view), path, NULL, FALSE);
-}
-
-static GtkTreeRowReference *
-parole_media_list_get_row_reference_from_iter (ParoleMediaList *list, GtkTreeIter *iter, gboolean select_path)
-{
- GtkTreePath *path;
- GtkTreeRowReference *row;
-
- path = gtk_tree_model_get_path (GTK_TREE_MODEL (list->priv->store), iter);
- row = gtk_tree_row_reference_new (GTK_TREE_MODEL (list->priv->store), path);
-
- if ( select_path)
- parole_media_list_select_path (list, path);
-
- gtk_tree_path_free (path);
-
- return row;
-}
-
-static void
-parole_media_list_finalize (GObject *object)
-{
- ParoleMediaList *list;
-
- list = PAROLE_MEDIA_LIST (object);
-
- G_OBJECT_CLASS (parole_media_list_parent_class)->finalize (object);
-}
-
-static void
-parole_media_list_class_init (ParoleMediaListClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
- object_class->finalize = parole_media_list_finalize;
-
- signals[MEDIA_ACTIVATED] =
- g_signal_new ("media-activated",
- PAROLE_TYPE_MEDIA_LIST,
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (ParoleMediaListClass, media_activated),
- NULL, NULL,
- g_cclosure_marshal_VOID__POINTER,
- G_TYPE_NONE, 1, G_TYPE_POINTER);
-
- signals[MEDIA_CURSOR_CHANGED] =
- g_signal_new ("media-cursor-changed",
- PAROLE_TYPE_MEDIA_LIST,
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (ParoleMediaListClass, media_cursor_changed),
- NULL, NULL,
- g_cclosure_marshal_VOID__BOOLEAN,
- G_TYPE_NONE, 1, G_TYPE_BOOLEAN);
-
- signals[URI_OPENED] =
- g_signal_new ("uri-opened",
- PAROLE_TYPE_MEDIA_LIST,
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (ParoleMediaListClass, uri_opened),
- NULL, NULL,
- g_cclosure_marshal_VOID__STRING,
- G_TYPE_NONE, 1, G_TYPE_STRING);
-
- g_type_class_add_private (klass, sizeof (ParoleMediaListPrivate));
-
- parole_media_list_dbus_class_init (klass);
-}
-
-static void
-parole_media_list_setup_view (ParoleMediaList *list)
-{
- GtkTreeSelection *sel;
- GtkListStore *list_store;
- GtkTreeViewColumn *col;
- GtkCellRenderer *renderer;
-
- list_store = gtk_list_store_new (COL_NUMBERS, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_OBJECT);
-
- gtk_tree_view_set_model (GTK_TREE_VIEW (list->priv->view), GTK_TREE_MODEL(list_store));
-
- gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (list->priv->view), TRUE);
- col = gtk_tree_view_column_new ();
-
- renderer = gtk_cell_renderer_pixbuf_new ();
-
- gtk_tree_view_column_pack_start(col, renderer, FALSE);
- gtk_tree_view_column_set_attributes(col, renderer, "pixbuf", PIXBUF_COL, NULL);
-
- renderer = gtk_cell_renderer_text_new();
-
- gtk_tree_view_column_pack_start (col, renderer, TRUE);
- gtk_tree_view_column_set_attributes (col, renderer, "text", NAME_COL, NULL);
- g_object_set (renderer,
- "ellipsize", PANGO_ELLIPSIZE_END,
- NULL);
-
- gtk_tree_view_append_column (GTK_TREE_VIEW (list->priv->view), col);
- gtk_tree_view_column_set_title (col, _("Media list"));
-
- gtk_drag_dest_set (list->priv->view, GTK_DEST_DEFAULT_ALL, target_entry, G_N_ELEMENTS (target_entry),
- GDK_ACTION_COPY | GDK_ACTION_MOVE);
-
- list->priv->sel = sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (list->priv->view));
- gtk_tree_selection_set_mode (sel, GTK_SELECTION_MULTIPLE);
-
- g_signal_connect (sel, "changed",
- G_CALLBACK (parole_media_list_selection_changed_cb), list);
-
- list->priv->store = list_store;
-}
-
-static void
-parole_media_list_init (ParoleMediaList *list)
-{
- GtkBuilder *builder;
- GtkWidget *box;
-
- list->priv = PAROLE_MEDIA_LIST_GET_PRIVATE (list);
-
- builder = parole_builder_new_from_string (playlist_ui, playlist_ui_length);
-
- list->priv->view = GTK_WIDGET (gtk_builder_get_object (builder, "media-list"));
-
- box = GTK_WIDGET (gtk_builder_get_object (builder, "playlist-box"));
-
- parole_media_list_setup_view (list);
-
- gtk_builder_connect_signals (builder, list);
-
- gtk_box_pack_start (GTK_BOX (list), box, TRUE, TRUE, 0);
-
- list->priv->up = GTK_WIDGET (gtk_builder_get_object (builder, "media-up"));
- list->priv->down = GTK_WIDGET (gtk_builder_get_object (builder, "media-down"));
- list->priv->remove = GTK_WIDGET (gtk_builder_get_object (builder, "remove-media"));
- list->priv->save = GTK_WIDGET (gtk_builder_get_object (builder, "save-playlist"));
-
- g_object_unref (builder);
-
- gtk_widget_show_all (GTK_WIDGET (list));
-
- parole_media_list_dbus_init (list);
-}
-
-GtkWidget *
-parole_media_list_new (void)
-{
- static gpointer list = NULL;
-
- if ( G_LIKELY (list != NULL ) )
- {
- g_object_ref (list);
- }
- else
- {
- list = g_object_new (PAROLE_TYPE_MEDIA_LIST, NULL);
- g_object_add_weak_pointer (list, &list);
- }
-
- return GTK_WIDGET (list);
-}
-
-void parole_media_list_load (ParoleMediaList *list)
-{
- gboolean load_saved_list;
- GSList *fileslist = NULL;
-
- load_saved_list = parole_rc_read_entry_bool ("SAVE_LIST_ON_EXIT", PAROLE_RC_GROUP_GENERAL, FALSE);
-
- if ( load_saved_list )
- {
- gchar *playlist_file;
-
- playlist_file = xfce_resource_save_location (XFCE_RESOURCE_DATA,
- PAROLE_AUTO_SAVED_PLAYLIST,
- FALSE);
- if ( playlist_file )
- {
- fileslist = parole_pl_parser_load_file (playlist_file);
- g_free (playlist_file);
-
- parole_media_list_files_opened_cb (NULL, FALSE, fileslist, list);
- g_slist_free (fileslist);
- }
- }
-
-}
-
-gboolean
-parole_media_list_add_by_path (ParoleMediaList *list, const gchar *path, gboolean emit)
-{
- GSList *file_list = NULL;
- GtkFileFilter *filter;
- guint len;
- gboolean ret = FALSE;
-
- filter = parole_get_supported_media_filter ();
- g_object_ref_sink (filter);
-
- parole_get_media_files (filter, path, TRUE, &file_list);
-
- parole_media_list_files_opened_cb (NULL, FALSE, file_list, list);
- len = g_slist_length (file_list);
- ret = len == 0 ? FALSE : TRUE;
-
- g_object_unref (filter);
- g_slist_free (file_list);
- return ret;
-}
-
-GtkTreeRowReference *parole_media_list_get_next_row (ParoleMediaList *list,
- GtkTreeRowReference *row,
- gboolean repeat)
-{
- GtkTreeRowReference *next = NULL;
- GtkTreePath *path;
- GtkTreeIter iter;
-
- g_return_val_if_fail (row != NULL, NULL);
-
- if ( !gtk_tree_row_reference_valid (row) )
- return NULL;
-
- path = gtk_tree_row_reference_get_path (row);
-
- gtk_tree_path_next (path);
-
- if ( gtk_tree_model_get_iter (GTK_TREE_MODEL (list->priv->store), &iter, path))
- {
- next = gtk_tree_row_reference_new (GTK_TREE_MODEL (list->priv->store), path);
- parole_media_list_select_path (list, path);
- }
- else if ( repeat ) /* Repeat playing ?*/
- {
- if ( gtk_tree_model_get_iter_first (GTK_TREE_MODEL (list->priv->store), &iter))
- {
- next = parole_media_list_get_row_reference_from_iter (list, &iter, TRUE);
- }
- }
-
- gtk_tree_path_free (path);
-
- return next;
-}
-
-GtkTreeRowReference *parole_media_list_get_prev_row (ParoleMediaList *list,
- GtkTreeRowReference *row)
-{
- GtkTreeRowReference *prev = NULL;
- GtkTreePath *path;
- GtkTreeIter iter;
-
- g_return_val_if_fail (row != NULL, NULL);
-
- if ( !gtk_tree_row_reference_valid (row) )
- return NULL;
-
- path = gtk_tree_row_reference_get_path (row);
-
- gtk_tree_path_prev (path);
-
- if ( gtk_tree_model_get_iter (GTK_TREE_MODEL (list->priv->store), &iter, path))
- {
- prev = gtk_tree_row_reference_new (GTK_TREE_MODEL (list->priv->store), path);
- parole_media_list_select_path (list, path);
- }
- else
- prev = row;
-
- gtk_tree_path_free (path);
-
- return prev;
-}
-
-GtkTreeRowReference *parole_media_list_get_row_random (ParoleMediaList *list)
-{
- GtkTreeRowReference *row = NULL;
- GtkTreeIter iter;
- GtkTreePath *path;
- gchar *path_str;
- gint nch;
-
- nch = gtk_tree_model_iter_n_children (GTK_TREE_MODEL (list->priv->store), NULL);
-
- if ( nch == 1 || nch == 0 )
- {
- return NULL;
- }
-
- path_str = g_strdup_printf ("%i", g_random_int_range (0, nch));
-
- path = gtk_tree_path_new_from_string (path_str);
- g_free (path_str);
-
- if ( gtk_tree_model_get_iter (GTK_TREE_MODEL (list->priv->store), &iter, path))
- {
- row = gtk_tree_row_reference_new (GTK_TREE_MODEL (list->priv->store), path);
- parole_media_list_select_path (list, path);
- }
-
- gtk_tree_path_free (path);
-
- return row;
-}
-
-gboolean parole_media_list_is_selected_row (ParoleMediaList *list)
-{
- return gtk_tree_selection_count_selected_rows (list->priv->sel) > 0;
-}
-
-gboolean parole_media_list_is_empty (ParoleMediaList *list)
-{
- GtkTreeIter iter;
-
- return !gtk_tree_model_get_iter_first (GTK_TREE_MODEL (list->priv->store), &iter);
-}
-
-GtkTreeRowReference *parole_media_list_get_first_row (ParoleMediaList *list)
-{
- GtkTreeRowReference *row = NULL;
- GtkTreeIter iter;
-
- if ( gtk_tree_model_get_iter_first (GTK_TREE_MODEL (list->priv->store), &iter) )
- {
- row = parole_media_list_get_row_reference_from_iter (list, &iter, TRUE);
- }
-
- return row;
-}
-
-GtkTreeRowReference *parole_media_list_get_selected_row (ParoleMediaList *list)
-{
- return parole_media_list_get_first_selected_row (list);
-}
-
-void parole_media_list_set_row_pixbuf (ParoleMediaList *list, GtkTreeRowReference *row, GdkPixbuf *pix)
-{
- GtkTreeIter iter;
- GtkTreePath *path;
-
- if ( gtk_tree_row_reference_valid (row) )
- {
- path = gtk_tree_row_reference_get_path (row);
-
- if ( gtk_tree_model_get_iter (GTK_TREE_MODEL (list->priv->store), &iter, path) )
- {
- gtk_list_store_set (list->priv->store, &iter, PIXBUF_COL, pix, -1);
- }
- gtk_tree_path_free (path);
- }
-}
-
-void parole_media_list_set_row_name (ParoleMediaList *list, GtkTreeRowReference *row, const gchar *name)
-{
- GtkTreeIter iter;
- GtkTreePath *path;
-
- if ( gtk_tree_row_reference_valid (row) )
- {
- path = gtk_tree_row_reference_get_path (row);
-
- if ( gtk_tree_model_get_iter (GTK_TREE_MODEL (list->priv->store), &iter, path) )
- {
- gtk_list_store_set (list->priv->store, &iter, NAME_COL, name, -1);
- }
- gtk_tree_path_free (path);
- }
-}
-
-void parole_media_list_open (ParoleMediaList *list)
-{
- parole_media_list_open_internal (list);
-}
-
-void parole_media_list_open_location (ParoleMediaList *list)
-{
- parole_media_list_open_location_internal (list);
-}
-
-gboolean parole_media_list_add_files (ParoleMediaList *list, gchar **filenames)
-{
- guint i;
- guint added = 0;
-
- for ( i = 0; filenames && filenames[i] != NULL; i++)
- {
- added += parole_media_list_add_by_path (list, filenames[i], i == 0 ? TRUE : FALSE);
- }
-
- return added == i;
-}
-
-void parole_media_list_save_list (ParoleMediaList *list)
-{
- gboolean save;
-
- save = parole_rc_read_entry_bool ("SAVE_LIST_ON_EXIT", PAROLE_RC_GROUP_GENERAL, FALSE);
-
- if ( save )
- {
- GSList *fileslist;
- gchar *history;
-
- history = xfce_resource_save_location (XFCE_RESOURCE_DATA, PAROLE_AUTO_SAVED_PLAYLIST , TRUE);
-
- if ( !history )
- {
- g_warning ("Failed to save playlist");
- return;
- }
-
- fileslist = parole_media_list_get_files (list);
- if ( g_slist_length (fileslist) > 0 )
- {
- parole_pl_parser_save_file (fileslist, history, PAROLE_PL_FORMAT_M3U);
- g_slist_foreach (fileslist, (GFunc) g_object_unref, NULL);
- }
- g_slist_free (fileslist);
- }
-}
-
-static gboolean parole_media_list_dbus_add_files (ParoleMediaList *list,
- gchar **in_files,
- GError **error);
-
-static gboolean parole_media_list_dbus_add_disc (ParoleMediaList *list,
- gchar *in_uri,
- GError **error);
-
-#include "org.parole.media.list.h"
-
-/*
- * DBus server implementation
- */
-static void
-parole_media_list_dbus_class_init (ParoleMediaListClass *klass)
-{
- dbus_g_object_type_install_info (G_TYPE_FROM_CLASS (klass),
- &dbus_glib_parole_media_list_object_info);
-}
-
-static void
-parole_media_list_dbus_init (ParoleMediaList *list)
-{
- dbus_g_connection_register_g_object (parole_g_session_bus_get (),
- PAROLE_DBUS_PLAYLIST_PATH,
- G_OBJECT (list));
-}
-
-static gboolean parole_media_list_dbus_add_files (ParoleMediaList *list,
- gchar **in_files,
- GError **error)
-{
- TRACE ("Adding files for DBus request");
- gtk_window_present (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (list))));
- parole_media_list_add_files (list, in_files);
-
- return TRUE;
-}
-
-static gboolean parole_media_list_dbus_add_disc (ParoleMediaList *list,
- gchar *in_uri,
- GError **error)
-{
- TRACE ("uri : %s", in_uri);
-
- gtk_window_present (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (list))));
-
- if ( parole_is_uri_disc (in_uri) )
- g_signal_emit (G_OBJECT (list), signals [URI_OPENED], 0, in_uri);
-
- return TRUE;
-}
-
-void parole_media_list_grab_focus (ParoleMediaList *list)
-{
- gtk_widget_grab_focus (list->priv->view);
-}
diff --git a/parole/parole-medialist.h b/parole/parole-medialist.h
deleted file mode 100644
index 17d7fb0..0000000
--- a/parole/parole-medialist.h
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifndef __PAROLE_MEDIA_LIST_H
-#define __PAROLE_MEDIA_LIST_H
-
-#include <gtk/gtk.h>
-
-G_BEGIN_DECLS
-
-#define PAROLE_TYPE_MEDIA_LIST (parole_media_list_get_type () )
-#define PAROLE_MEDIA_LIST(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), PAROLE_TYPE_MEDIA_LIST, ParoleMediaList))
-#define PAROLE_IS_MEDIA_LIST(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), PAROLE_TYPE_MEDIA_LIST))
-
-enum
-{
- PIXBUF_COL,
- NAME_COL,
- DATA_COL,
- COL_NUMBERS
-};
-
-typedef struct ParoleMediaListPrivate ParoleMediaListPrivate;
-
-typedef struct
-{
- GtkVBox parent;
-
- ParoleMediaListPrivate *priv;
-
-} ParoleMediaList;
-
-typedef struct
-{
- GtkVBoxClass parent_class;
-
- void (*media_activated) (ParoleMediaList *list,
- GtkTreeRowReference *row);
-
- void (*media_cursor_changed) (ParoleMediaList *list,
- gboolean media_selected);
-
- void (*uri_opened) (ParoleMediaList *list,
- const gchar *uri);
-
-} ParoleMediaListClass;
-
-GType parole_media_list_get_type (void) G_GNUC_CONST;
-
-GtkWidget *parole_media_list_new (void);
-
-void parole_media_list_load (ParoleMediaList *list);
-
-
-gboolean parole_media_list_add_by_path (ParoleMediaList *list,
- const gchar *path,
- gboolean emit);
-
-gboolean parole_media_list_is_selected_row (ParoleMediaList *list);
-
-gboolean parole_media_list_is_empty (ParoleMediaList *list);
-
-GtkTreeRowReference *parole_media_list_get_first_row (ParoleMediaList *list);
-
-GtkTreeRowReference *parole_media_list_get_selected_row (ParoleMediaList *list);
-
-GtkTreeRowReference *parole_media_list_get_next_row (ParoleMediaList *list,
- GtkTreeRowReference *row,
- gboolean repeat);
-
-GtkTreeRowReference *parole_media_list_get_prev_row (ParoleMediaList *list,
- GtkTreeRowReference *row);
-
-GtkTreeRowReference *parole_media_list_get_row_random (ParoleMediaList *list);
-
-void parole_media_list_set_row_pixbuf (ParoleMediaList *list,
- GtkTreeRowReference *row,
- GdkPixbuf *pix);
-
-void parole_media_list_set_row_name (ParoleMediaList *list,
- GtkTreeRowReference *row,
- const gchar *name);
-
-void parole_media_list_open (ParoleMediaList *list);
-
-void parole_media_list_open_location (ParoleMediaList *list);
-
-gboolean parole_media_list_add_files (ParoleMediaList *list,
- gchar **filenames);
-
-void parole_media_list_save_list (ParoleMediaList *list);
-
-void parole_media_list_grab_focus (ParoleMediaList *list);
-
-G_END_DECLS
-
-#endif /* __PAROLE_MEDIA_LIST_H */
diff --git a/parole/parole-module.c b/parole/parole-module.c
deleted file mode 100644
index ecbc800..0000000
--- a/parole/parole-module.c
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "parole-module.h"
-
-G_DEFINE_TYPE (ParoleModule, parole_module, G_TYPE_TYPE_MODULE)
-
-static gboolean
-parole_module_load (GTypeModule *gtype_module)
-{
- ParoleModule *module;
-
- module = PAROLE_MODULE (gtype_module);
-
- module->mod = g_module_open (gtype_module->name, G_MODULE_BIND_LOCAL);
-
- if ( G_UNLIKELY (module->mod == NULL) )
- {
- g_critical ("Failed to load plugin : %s", g_module_error ());
- return FALSE;
- }
-
- if ( !g_module_symbol (module->mod, "parole_plugin_constructor", (gpointer) &module->constructor) ||
- !g_module_symbol (module->mod, "parole_plugin_get_description", (gpointer) &module->get_plugin_description))
- {
- g_critical ("Plugin %s missing required symbols", gtype_module->name);
- g_module_close (module->mod);
- return FALSE;
- }
-
- module->desc = (*module->get_plugin_description) ();
-
- return TRUE;
-}
-
-static void
-parole_module_unload (GTypeModule *gtype_module)
-{
- ParoleModule *module;
-
- module = PAROLE_MODULE (gtype_module);
-
- parole_module_set_active (module, FALSE);
-
- g_module_close (module->mod);
- module->constructor = NULL;
-
- if ( module->desc )
- {
- g_free (module->desc);
- }
-}
-
-static void
-parole_module_class_init (ParoleModuleClass *klass)
-{
- GTypeModuleClass *gtype_module_class = G_TYPE_MODULE_CLASS (klass);
-
- gtype_module_class->load = parole_module_load;
- gtype_module_class->unload = parole_module_unload;
-}
-
-static void
-parole_module_init (ParoleModule *module)
-{
- module->mod = NULL;
- module->constructor = NULL;
- module->get_plugin_description = NULL;
- module->plugin = NULL;
- module->desc = NULL;
-}
-
-ParoleModule *
-parole_module_new (const gchar *filename)
-{
- ParoleModule *module = NULL;
-
- module = g_object_new (PAROLE_TYPE_MODULE, NULL);
-
- g_type_module_set_name (G_TYPE_MODULE (module), filename);
-
- return module;
-}
-
-void parole_module_set_active (ParoleModule *module, gboolean active)
-{
- if ( active )
- {
- g_return_if_fail (module->constructor != NULL);
-
- module->plugin = (*module->constructor) ();
-
- module->enabled = TRUE;
- }
- else
- {
- if ( module->plugin )
- {
- g_signal_emit_by_name (G_OBJECT (module->plugin), "free-data");
- g_object_unref (module->plugin);
- module->plugin = NULL;
- }
- module->enabled = FALSE;
- }
-}
diff --git a/parole/parole-module.h b/parole/parole-module.h
deleted file mode 100644
index 3629489..0000000
--- a/parole/parole-module.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifndef __PAROLE_MODULE_H
-#define __PAROLE_MODULE_H
-
-#include <glib-object.h>
-
-#include "parole.h"
-#include "parole-plugin.h"
-
-G_BEGIN_DECLS
-
-#define PAROLE_TYPE_MODULE (parole_module_get_type () )
-#define PAROLE_MODULE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), PAROLE_TYPE_MODULE, ParoleModule))
-#define PAROLE_IS_MODULE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), PAROLE_TYPE_MODULE))
-
-typedef struct ParoleModulePrivate ParoleModulePrivate;
-
-typedef struct
-{
- GTypeModule parent;
-
- GModule *mod;
- ParolePlugin *plugin;
- ParolePluginDesc *desc;
- gboolean enabled;
-
- ParolePlugin *(*constructor) (void);
-
- ParolePluginDesc *(*get_plugin_description) (void);
-
-} ParoleModule;
-
-typedef struct
-{
- GTypeModuleClass parent_class;
-
-} ParoleModuleClass;
-
-GType parole_module_get_type (void) G_GNUC_CONST;
-
-ParoleModule *parole_module_new (const gchar *filename);
-
-void parole_module_set_active (ParoleModule *module,
- gboolean active);
-
-G_END_DECLS
-
-#endif /* __PAROLE_MODULE_H */
diff --git a/parole/parole-open-location.c b/parole/parole-open-location.c
deleted file mode 100644
index 4b0d955..0000000
--- a/parole/parole-open-location.c
+++ /dev/null
@@ -1,244 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <libxfce4util/libxfce4util.h>
-
-#include "parole-open-location.h"
-#include "parole-rc-utils.h"
-
-static void parole_open_location_finalize (GObject *object);
-
-#define PAROLE_OPEN_LOCATION_GET_PRIVATE(o) \
-(G_TYPE_INSTANCE_GET_PRIVATE ((o), PAROLE_TYPE_OPEN_LOCATION, ParoleOpenLocationPrivate))
-
-struct ParoleOpenLocationPrivate
-{
- GtkWidget *entry;
-};
-
-enum
-{
- LOCATION_OPENED,
- LAST_SIGNAL
-};
-
-enum
-{
- COL_ADDRESS,
- N_COLS
-};
-
-static guint signals [LAST_SIGNAL] = { 0 };
-
-G_DEFINE_TYPE (ParoleOpenLocation, parole_open_location, GTK_TYPE_DIALOG)
-
-static void
-parole_open_location_response_cb (GtkDialog *dialog, gint response_id, ParoleOpenLocation *self)
-{
- const gchar *location;
-
- if ( response_id == GTK_RESPONSE_OK )
- {
- location = gtk_entry_get_text (GTK_ENTRY (self->priv->entry));
-
- if ( !location || strlen (location) == 0)
- goto out;
-
- TRACE ("Location %s", location);
-
- gtk_widget_hide (GTK_WIDGET (self));
- g_signal_emit (G_OBJECT (self), signals [LOCATION_OPENED], 0, location);
- }
-
- out:
- gtk_widget_destroy (GTK_WIDGET (self));
-}
-
-static GtkTreeModel *
-parole_open_location_get_completion_model (void)
-{
- GtkListStore *store;
- GtkTreeIter iter;
- gchar **lines = NULL;
- guint i;
-
- store = gtk_list_store_new (N_COLS, GTK_TYPE_STRING);
-
- lines = parole_get_history ();
-
- if ( lines )
- {
- for ( i = 0; lines[i]; i++)
- {
- gtk_list_store_append (store, &iter);
- gtk_list_store_set (store, &iter,
- COL_ADDRESS, lines [i],
- -1);
- }
-
- g_strfreev (lines);
- }
- return GTK_TREE_MODEL (store);
-}
-
-static gboolean
-parole_open_location_match (GtkEntryCompletion *cmpl, const gchar *key,
- GtkTreeIter *iter, gpointer data)
-{
- gchar *uri, *match;
-
- gtk_tree_model_get (data, iter, 0, &uri, -1);
- match = strstr (uri, key);
- g_free (uri);
-
- return (match != NULL);
-}
-
-static void
-parole_open_location_class_init (ParoleOpenLocationClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
- object_class->finalize = parole_open_location_finalize;
-
- signals[LOCATION_OPENED] =
- g_signal_new("location-opened",
- PAROLE_TYPE_OPEN_LOCATION,
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (ParoleOpenLocationClass, location_opened),
- NULL, NULL,
- g_cclosure_marshal_VOID__STRING,
- G_TYPE_NONE, 1, G_TYPE_STRING);
-
- g_type_class_add_private (klass, sizeof (ParoleOpenLocationPrivate));
-}
-
-static void
-parole_open_location_init (ParoleOpenLocation *self)
-{
- self->priv = PAROLE_OPEN_LOCATION_GET_PRIVATE (self);
-}
-
-static void
-parole_open_location_finalize (GObject *object)
-{
- ParoleOpenLocation *self;
-
- self = PAROLE_OPEN_LOCATION (object);
-
- G_OBJECT_CLASS (parole_open_location_parent_class)->finalize (object);
-}
-
-static void
-parole_open_location_clear_history (GtkTreeModel *model)
-{
- parole_clear_history_file ();
- gtk_list_store_clear (GTK_LIST_STORE (model));
-}
-
-GtkWidget *parole_open_location (GtkWidget *parent)
-{
- GtkEntryCompletion *cmpl;
- GtkTreeModel *model;
- GtkWidget *label;
- GtkWidget *clear;
- GtkWidget *img;
- GtkWidget *vbox;
- GtkWidget *hbox;
-
- ParoleOpenLocation *self = NULL;
-
- self = g_object_new (PAROLE_TYPE_OPEN_LOCATION, NULL);
-
- if ( parent )
- gtk_window_set_transient_for (GTK_WINDOW (self), GTK_WINDOW (parent));
-
- gtk_window_set_title (GTK_WINDOW (self), _("Open location..."));
- gtk_window_set_default_size (GTK_WINDOW (self), 360, 40);
- gtk_window_set_position (GTK_WINDOW (self), GTK_WIN_POS_CENTER_ON_PARENT);
-
- label = gtk_label_new (NULL);
- gtk_label_set_markup (GTK_LABEL (label), _("<b>Open location of media file or live stream:</b>"));
-
- self->priv->entry = gtk_entry_new ();
- model = parole_open_location_get_completion_model ();
-
- gtk_entry_set_activates_default (GTK_ENTRY (self->priv->entry), TRUE);
- cmpl = gtk_entry_completion_new ();
-
- gtk_entry_set_completion (GTK_ENTRY (self->priv->entry), cmpl);
- gtk_entry_completion_set_model (cmpl, model);
-
- gtk_entry_completion_set_text_column (cmpl, 0);
- gtk_entry_completion_set_match_func (cmpl,
- (GtkEntryCompletionMatchFunc) parole_open_location_match,
- model,
- NULL);
-
- img = gtk_image_new_from_stock (GTK_STOCK_CLEAR, GTK_ICON_SIZE_BUTTON);
-
- clear = gtk_button_new_with_label (_("Clear history"));
- g_signal_connect_swapped (clear, "clicked",
- G_CALLBACK (parole_open_location_clear_history), model);
-
- g_object_set (G_OBJECT (clear),
- "image", img,
- NULL);
-
- vbox = gtk_vbox_new (TRUE, 4);
- hbox = gtk_hbox_new (FALSE, 8);
-
- gtk_box_pack_start (GTK_BOX (vbox), label, TRUE, TRUE, 0);
- gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
-
- gtk_box_pack_start (GTK_BOX (hbox), self->priv->entry, TRUE, TRUE, 0);
- gtk_box_pack_start (GTK_BOX (hbox), clear, FALSE, FALSE, 0);
-
- gtk_box_pack_start (GTK_BOX (GTK_DIALOG (self)->vbox),
- vbox,
- TRUE,
- TRUE,
- 0);
-
- gtk_dialog_add_buttons (GTK_DIALOG (self),
- GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
- GTK_STOCK_OPEN, GTK_RESPONSE_OK,
- NULL);
-
- gtk_dialog_set_default_response (GTK_DIALOG (self), GTK_RESPONSE_OK);
-
- g_signal_connect (self, "delete-event",
- G_CALLBACK (gtk_widget_destroy), self);
-
- g_signal_connect (self, "response",
- G_CALLBACK (parole_open_location_response_cb), self);
-
- gtk_widget_show_all (GTK_WIDGET (self));
-
- return GTK_WIDGET (self);
-}
diff --git a/parole/parole-open-location.h b/parole/parole-open-location.h
deleted file mode 100644
index 15ee1b1..0000000
--- a/parole/parole-open-location.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifndef __PAROLE_OPEN_LOCATION_H
-#define __PAROLE_OPEN_LOCATION_H
-
-#include <glib-object.h>
-#include <gtk/gtk.h>
-
-G_BEGIN_DECLS
-
-#define PAROLE_TYPE_OPEN_LOCATION (parole_open_location_get_type () )
-#define PAROLE_OPEN_LOCATION(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), PAROLE_TYPE_OPEN_LOCATION, ParoleOpenLocation))
-#define PAROLE_IS_OPEN_LOCATION(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), PAROLE_TYPE_OPEN_LOCATION))
-
-typedef struct ParoleOpenLocationPrivate ParoleOpenLocationPrivate;
-
-typedef struct
-{
- GtkDialog parent;
- ParoleOpenLocationPrivate *priv;
-
-} ParoleOpenLocation;
-
-typedef struct
-{
- GtkDialogClass parent_class;
-
- void (*location_opened) (ParoleOpenLocation *self,
- const gchar *address);
-
-} ParoleOpenLocationClass;
-
-GType parole_open_location_get_type (void) G_GNUC_CONST;
-
-GtkWidget *parole_open_location (GtkWidget *parent);
-
-G_END_DECLS
-
-#endif /* __PAROLE_OPEN_LOCATION_H */
diff --git a/parole/parole-pl-parser.c b/parole/parole-pl-parser.c
deleted file mode 100644
index 4255cc4..0000000
--- a/parole/parole-pl-parser.c
+++ /dev/null
@@ -1,660 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-/*
- * Based on code from:
- *
- * Totem pl parser: Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Bastien Nocera
- * Copyright (C) 2003, 2004 Colin Walters <walters at rhythmbox.org>
- *
- * xfmedia: Copyright (c) 2004-2005 Brian Tarricone, <bjt23 at cornell.edu>
- *
- * Thanks :).
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <gio/gio.h>
-#include <libxfce4util/libxfce4util.h>
-
-#include "parole-pl-parser.h"
-#include "parole-file.h"
-#include "parole-filters.h"
-#include "parole-debug.h"
-#include "enum-gtypes.h"
-
-typedef struct
-{
- GSList *list;
- gboolean started;
- gchar *uri;
- gchar *title;
-
-} ParoleParserData;
-
-static void
-parole_xspf_xml_start (GMarkupParseContext *context, const gchar *element_name,
- const gchar **attribute_names, const gchar **attribute_values,
- gpointer user_data, GError **error)
-{
- ParoleParserData *data = user_data;
-
- if ( !data->started )
- {
- if (!g_ascii_strcasecmp (element_name, "playlist") )
- data->started = TRUE;
- }
-}
-
-static void
-parole_xspf_xml_text (GMarkupParseContext *context, const gchar *text, gsize text_len,
- gpointer user_data, GError **error)
-{
- ParoleParserData *data = user_data;
- const gchar *element_name;
-
- if (!data->started)
- return;
-
- element_name = g_markup_parse_context_get_element (context);
-
- if (!g_ascii_strcasecmp (element_name, "location") )
- {
- if (data->uri)
- {
- g_free (data->uri);
- data->uri = NULL;
- }
-
- if (text_len > 0)
- data->uri = g_strdup (text);
- }
- else if (!g_ascii_strcasecmp (element_name, "title") )
- {
- if (data->title)
- {
- g_free (data->title);
- data->title = NULL;
- }
-
- if (text_len > 0)
- data->title = g_strdup (text);
- }
-}
-
-static void
-parole_xspf_xml_end (GMarkupParseContext *context, const gchar *element_name,
- gpointer user_data, GError **error)
-{
- ParoleParserData *data = user_data;
- ParoleFile *file;
-
- if (! g_ascii_strcasecmp (element_name, "playlist"))
- data->started = FALSE;
-
- if (!data->started)
- return;
-
- if (!g_ascii_strcasecmp (element_name, "track"))
- {
- if (data->uri)
- {
- file = parole_file_new_with_display_name (data->uri, data->title);
- data->list = g_slist_append (data->list, file);
-
- g_free (data->uri);
- data->uri = NULL;
- }
-
- if ( data->title)
- {
- g_free (data->title);
- data->title = NULL;
- }
- }
-}
-
-static void
-parole_asx_xml_start (GMarkupParseContext *context, const gchar *element_name,
- const gchar **attribute_names, const gchar **attribute_values,
- gpointer user_data, GError **error)
-{
- guint i;
- ParoleParserData *data = user_data;
-
- if ( !data->started )
- {
- if (!g_ascii_strcasecmp (element_name, "asx") )
- data->started = TRUE;
- else
- return;
- }
-
- if (!g_ascii_strcasecmp (element_name, "ref") )
- {
- if (data->uri)
- {
- g_free (data->uri);
- data->uri = NULL;
- }
-
- for ( i = 0; attribute_names[i]; i++)
- {
- if ( !g_ascii_strcasecmp (attribute_names[i], "href"))
- {
- data->uri = g_strdup (attribute_values[i]);
- break;
- }
- }
- }
-}
-
-static void
-parole_asx_xml_text (GMarkupParseContext *context, const gchar *text, gsize text_len,
- gpointer user_data, GError **error)
-{
- ParoleParserData *data = user_data;
- const gchar *element_name;
-
- if (!data->started)
- return;
-
- element_name = g_markup_parse_context_get_element (context);
-
- if (!g_ascii_strcasecmp (element_name, "title") )
- {
- if (data->title)
- {
- g_free (data->title);
- data->title = NULL;
- }
-
- if (text_len > 0)
- data->title = g_strdup (text);
- }
-}
-
-static void
-parole_asx_xml_end (GMarkupParseContext *context, const gchar *element_name,
- gpointer user_data, GError **error)
-{
- ParoleParserData *data = user_data;
- ParoleFile *file;
-
- if (!g_ascii_strcasecmp (element_name, "ASX"))
- data->started = FALSE;
-
- if (!data->started)
- return;
-
- if (!g_ascii_strcasecmp (element_name, "entry"))
- {
- if (data->uri)
- {
- file = parole_file_new_with_display_name (data->uri, data->title);
- data->list = g_slist_append (data->list, file);
-
- g_free (data->uri);
- data->uri = NULL;
- }
-
- if ( data->title)
- {
- g_free (data->title);
- data->title = NULL;
- }
- }
-}
-
-ParolePlFormat
-parole_pl_parser_guess_format_from_extension (const gchar *filename)
-{
- if ( g_str_has_suffix (filename, ".m3u") || g_str_has_suffix (filename, ".M3U") )
- return PAROLE_PL_FORMAT_M3U;
-
- if ( g_str_has_suffix (filename, ".pls") || g_str_has_suffix (filename, ".PLS") )
- return PAROLE_PL_FORMAT_PLS;
-
- if ( g_str_has_suffix (filename, ".xspf") || g_str_has_suffix (filename, ".XSPF") )
- return PAROLE_PL_FORMAT_XSPF;
-
- if ( g_str_has_suffix (filename, ".asx") || g_str_has_suffix (filename, ".ASX") )
- return PAROLE_PL_FORMAT_ASX;
-
- if ( g_str_has_suffix (filename, ".wax") || g_str_has_suffix (filename, ".WAX") )
- return PAROLE_PL_FORMAT_XSPF;
-
- return PAROLE_PL_FORMAT_UNKNOWN;
-}
-
-static ParolePlFormat
-parole_pl_parser_guess_format_from_data (const gchar *filename)
-{
-
- return PAROLE_PL_FORMAT_UNKNOWN;
-}
-
-static GSList *
-parole_pl_parser_parse_asx (const gchar *filename)
-{
- ParoleParserData data;
- GFile *file;
- gchar *contents;
- GError *error = NULL;
- gsize size;
- GMarkupParseContext *pctx;
- GMarkupParser parser = {
- parole_asx_xml_start,
- parole_asx_xml_end,
- parole_asx_xml_text,
- NULL,
- NULL
- };
-
- data.list = NULL;
- data.title = data.uri = NULL;
-
- file = g_file_new_for_path (filename);
-
- if ( !g_file_load_contents (file, NULL, &contents, &size, NULL, NULL) )
- goto out;
-
- if ( g_utf8_validate (contents, -1, NULL) == FALSE)
- {
- gchar *fixed;
- fixed = g_convert (contents, -1, "UTF-8", "ISO8859-1", NULL, NULL, NULL);
- if (fixed != NULL)
- {
- g_free (contents);
- contents = fixed;
- }
- }
-
- pctx = g_markup_parse_context_new (&parser, 0, &data, NULL);
-
- if ( !g_markup_parse_context_parse (pctx, contents, size, &error) )
- {
- if ( error )
- {
- g_critical ("Unable to parse asx file : %s : %s\n", filename, error->message);
- g_error_free (error);
- }
- }
- else
- {
- if ( !g_markup_parse_context_end_parse (pctx, &error) )
- {
- g_critical ("Unable to finish parsing ASX playlist file %s", error->message);
- g_error_free (error);
- }
- }
-
- g_markup_parse_context_free (pctx);
-
-out:
- g_object_unref (file);
- return data.list;
-}
-
-static GSList *
-parole_pl_parser_parse_m3u (const gchar *filename)
-{
- GFile *file;
- gchar **lines;
- gchar *contents;
- GSList *list = NULL;
- gsize size;
- guint num_lines;
- const gchar *split_char;
- guint i;
-
- file = g_file_new_for_path (filename);
-
- if ( !g_file_load_contents (file, NULL, &contents, &size, NULL, NULL) )
- goto out;
-
- if ( g_utf8_validate (contents, -1, NULL) == FALSE)
- {
- gchar *fixed;
- fixed = g_convert (contents, -1, "UTF-8", "ISO8859-1", NULL, NULL, NULL);
- if (fixed != NULL)
- {
- g_free (contents);
- contents = fixed;
- }
- }
-
- if ( strstr (contents,"\x0d") == NULL)
- {
- split_char = "\n";
- }
- else
- {
- split_char = "\x0d\n";
- }
-
- lines = g_strsplit (contents, split_char, 0);
- g_free (contents);
-
- num_lines = g_strv_length (lines);
- num_lines--; /* Drop the terminating NULL */
-
- for ( i = 0; lines[i] != NULL; i++)
- {
- if ( lines[i][0] == '\0' || lines[i][0] == '#')
- continue;
-
- list = g_slist_append (list, parole_file_new (lines[i]));
- }
-
- g_strfreev (lines);
-out:
-
- g_object_unref (file);
-
- return list;
-}
-
-static GSList *
-parole_pl_parser_parse_pls (const gchar *filename)
-{
- XfceRc *rcfile;
- GSList *list = NULL;
- ParoleFile *file;
- const gchar *file_entry, *title_entry;
- guint i, nentries;
- gchar key[128];
-
- rcfile = xfce_rc_simple_open (filename, TRUE);
-
- if ( xfce_rc_has_group (rcfile, "playlist") )
- {
- xfce_rc_set_group (rcfile, "playlist");
-
- nentries = xfce_rc_read_int_entry (rcfile, "NumberOfEntries", 0);
-
- for (i = 1; i <= nentries; i++)
- {
- g_snprintf (key, 128, "File%d", i);
-
- file_entry = xfce_rc_read_entry (rcfile, key, NULL);
-
- if (!file_entry)
- continue;
-
- g_snprintf (key, 128, "Title%d", i);
-
- title_entry = xfce_rc_read_entry (rcfile, key, NULL);
-
- file = parole_file_new_with_display_name (file_entry, title_entry);
- list = g_slist_append (list, file);
- }
- }
-
- xfce_rc_close (rcfile);
-
- return list;
-}
-
-static GSList *
-parole_pl_parser_parse_xspf (const gchar *filename)
-{
- ParoleParserData data;
- GFile *file;
- gchar *contents;
- GError *error = NULL;
- gsize size;
- GMarkupParseContext *pctx;
- GMarkupParser parser = {
- parole_xspf_xml_start,
- parole_xspf_xml_end,
- parole_xspf_xml_text,
- NULL,
- NULL
- };
-
- data.list = NULL;
- data.title = data.uri = NULL;
-
- file = g_file_new_for_path (filename);
-
- if ( !g_file_load_contents (file, NULL, &contents, &size, NULL, NULL) )
- goto out;
-
- if ( g_utf8_validate (contents, -1, NULL) == FALSE)
- {
- gchar *fixed;
- fixed = g_convert (contents, -1, "UTF-8", "ISO8859-1", NULL, NULL, NULL);
- if (fixed != NULL)
- {
- g_free (contents);
- contents = fixed;
- }
- }
-
- pctx = g_markup_parse_context_new (&parser, 0, &data, NULL);
-
- if ( !g_markup_parse_context_parse (pctx, contents, size, &error) )
- {
- if ( error )
- {
- g_critical ("Unable to parse xspf file : %s : %s\n", filename, error->message);
- g_error_free (error);
- }
- }
- else
- {
- if ( !g_markup_parse_context_end_parse (pctx, &error) )
- {
- g_critical ("Unable to finish parsing xspf playlist file %s", error->message);
- g_error_free (error);
- }
- }
-
- g_markup_parse_context_free (pctx);
-
-out:
- g_object_unref (file);
- return data.list;
-}
-
-static GSList *
-parole_pl_parser_parse (ParolePlFormat format, const gchar *filename)
-{
- GSList *list = NULL;
-
- switch (format)
- {
- case PAROLE_PL_FORMAT_M3U:
- list = parole_pl_parser_parse_m3u (filename);
- break;
- case PAROLE_PL_FORMAT_PLS:
- list = parole_pl_parser_parse_pls (filename);
- break;
- case PAROLE_PL_FORMAT_ASX:
- list = parole_pl_parser_parse_asx (filename);
- break;
- case PAROLE_PL_FORMAT_XSPF:
- list = parole_pl_parser_parse_xspf (filename);
- break;
- default:
- break;
- }
-
- return list;
-}
-
-GSList *parole_pl_parser_load_file (const gchar *filename)
-{
- ParolePlFormat format = PAROLE_PL_FORMAT_UNKNOWN;
- GtkFileFilter *filter;
- GSList *list = NULL;
-
- filter = parole_get_supported_playlist_filter ();
- g_object_ref_sink (filter);
-
- if ( (format = parole_pl_parser_guess_format_from_extension (filename)) == PAROLE_PL_FORMAT_UNKNOWN)
- if ( (format = parole_pl_parser_guess_format_from_data (filename)) == PAROLE_PL_FORMAT_UNKNOWN)
- {
- g_debug ("Unable to guess playlist format of file : %s", filename);
- goto out;
- }
-
- PAROLE_DEBUG_ENUM_FULL (format, ENUM_GTYPE_PL_FORMAT, "playlist %s ", filename);
- list = parole_pl_parser_parse (format, filename);
-
-out:
- g_object_unref (filter);
-
- return list;
-}
-
-static gboolean
-parole_pl_parser_save_m3u (FILE *f, GSList *files)
-{
- guint len;
- guint i;
-
- fputs ("#EXTM3U\n", f);
-
- len = g_slist_length (files);
-
- for ( i = 0; i < len; i++)
- {
- ParoleFile *file;
- file = g_slist_nth_data (files, i);
- fprintf (f, "%s\n", parole_file_get_file_name (file));
- }
-
- return TRUE;
-}
-
-static gboolean
-parole_pl_parser_save_pls (FILE *f, GSList *files)
-{
- guint len;
- guint i;
- gchar key[128];
-
- len = g_slist_length (files);
-
- fprintf (f, "[playlist]\nNumberOfEntries=%d\n", len);
-
- for ( i = 1; i <= len; i++)
- {
- ParoleFile *file;
- file = g_slist_nth_data (files, i - 1);
- g_snprintf (key, 128, "File%d", i);
- fprintf (f, "%s=%s\n", key, parole_file_get_file_name (file));
- g_snprintf (key, 128, "Title%d", i);
- fprintf (f, "%s=%s\n\n", key, parole_file_get_display_name (file));
- }
-
- return TRUE;
-}
-
-static gboolean
-parole_pl_parser_save_asx (FILE *f, GSList *files)
-{
- guint len;
- guint i;
-
- len = g_slist_length (files);
-
- fputs ("<ASX VERSION=\"3.0\">\n", f);
-
- for ( i = 0; i < len; i++)
- {
- ParoleFile *file;
- file = g_slist_nth_data (files, i);
- fprintf (f, " <ENTRY>\n <TITLE>%s</TITLE>\n <REF HREF=\"%s\"/>\n </ENTRY>\n",
- parole_file_get_display_name (file),
- parole_file_get_uri (file));
- }
-
- fputs ("</ASX>\n", f);
-
- return TRUE;
-}
-
-static gboolean
-parole_pl_parser_save_xspf (FILE *f, GSList *files)
-{
- guint len;
- guint i;
-
- len = g_slist_length (files);
-
- fputs ("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
- "<playlist version=\"1\" xmlns=\"http://xspf.org/ns/0/\">\n", f);
-
- fputs (" <trackList>\n", f);
-
- for ( i = 0; i < len; i++)
- {
- ParoleFile *file;
-
- file = g_slist_nth_data (files, i);
- fprintf (f, " <track>\n <title>%s</title>\n <location>%s</location>\n </track>\n",
- parole_file_get_display_name (file), parole_file_get_uri (file));
- }
-
- fputs (" </trackList>\n<playlist>", f);
-
- return TRUE;
-}
-
-gboolean parole_pl_parser_save_file (GSList *files, const gchar *filename, ParolePlFormat format)
-{
- FILE *f;
- gboolean ret_val;
-
- PAROLE_DEBUG_ENUM_FULL (format, ENUM_GTYPE_PL_FORMAT, "Saving playlist %s ", filename);
-
- f = fopen (filename, "w");
-
- switch (format)
- {
- case PAROLE_PL_FORMAT_M3U:
- ret_val = parole_pl_parser_save_m3u (f, files);
- break;
- case PAROLE_PL_FORMAT_PLS:
- ret_val = parole_pl_parser_save_pls (f, files);
- break;
- case PAROLE_PL_FORMAT_ASX:
- ret_val = parole_pl_parser_save_asx (f, files);
- break;
- case PAROLE_PL_FORMAT_XSPF:
- ret_val = parole_pl_parser_save_xspf (f, files);
- break;
- default:
- break;
- }
-
- fclose (f);
-
- return ret_val;
-}
diff --git a/parole/parole-pl-parser.h b/parole/parole-pl-parser.h
deleted file mode 100644
index 281924e..0000000
--- a/parole/parole-pl-parser.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifndef __PAROLE_PL_PARSER_H
-#define __PAROLE_PL_PARSER_H
-
-#include <glib.h>
-
-G_BEGIN_DECLS
-
-typedef enum
-{
- PAROLE_PL_FORMAT_UNKNOWN,
- PAROLE_PL_FORMAT_M3U,
- PAROLE_PL_FORMAT_PLS,
- PAROLE_PL_FORMAT_ASX,
- PAROLE_PL_FORMAT_XSPF
-
-} ParolePlFormat;
-
-ParolePlFormat parole_pl_parser_guess_format_from_extension (const gchar *filename);
-
-GSList *parole_pl_parser_load_file (const gchar *filename);
-
-gboolean parole_pl_parser_save_file (GSList *files,
- const gchar *filename,
- ParolePlFormat format);
-
-G_END_DECLS
-
-#endif /* __PAROLE_PL_PARSER_H */
diff --git a/parole/parole-player.c b/parole/parole-player.c
deleted file mode 100644
index 44b9ad9..0000000
--- a/parole/parole-player.c
+++ /dev/null
@@ -1,1965 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#ifdef HAVE_XF86_KEYSYM
-#include <X11/XF86keysym.h>
-#endif
-
-#include <gdk/gdkkeysyms.h>
-#include <gtk/gtk.h>
-
-#include <libxfce4util/libxfce4util.h>
-#include <libxfcegui4/libxfcegui4.h>
-
-#include <dbus/dbus-glib.h>
-
-#include "parole-builder.h"
-#include "parole-about.h"
-
-#include "parole-player.h"
-#include "parole-gst.h"
-#include "parole-dbus.h"
-#include "parole-mediachooser.h"
-#include "parole-file.h"
-#include "parole-filters.h"
-#include "parole-disc.h"
-#include "parole-disc-menu.h"
-#include "parole-statusbar.h"
-#include "parole-screensaver.h"
-#include "parole-conf-dialog.h"
-#include "parole-conf.h"
-#include "parole-rc-utils.h"
-#include "parole-utils.h"
-#include "parole-session.h"
-#include "parole-debug.h"
-#include "parole-button.h"
-#include "enum-gtypes.h"
-#include "parole-debug.h"
-
-#include "gst/gst-enum-types.h"
-
-#include "common/parole-common.h"
-
-/*
- * DBus Glib init
- */
-static void parole_player_dbus_class_init (ParolePlayerClass *klass);
-static void parole_player_dbus_init (ParolePlayer *player);
-
-/*
- * GtkBuilder Callbacks
- */
-gboolean parole_player_configure_event_cb (GtkWidget *widget,
- GdkEventConfigure *ev,
- ParolePlayer *player);
-
-gboolean parole_player_range_button_press (GtkWidget *widget,
- GdkEventButton *ev,
- ParolePlayer *player);
-
-gboolean parole_player_range_button_release (GtkWidget *widget,
- GdkEventButton *ev,
- ParolePlayer *player);
-
-void parole_player_range_value_changed (GtkRange *range,
- ParolePlayer *player);
-
-void parole_player_play_pause_clicked (GtkButton *button,
- ParolePlayer *player);
-
-void parole_player_stop_clicked (GtkButton *button,
- ParolePlayer *player);
-
-void parole_player_seekf_cb (GtkButton *button,
- ParolePlayer *player);
-
-void parole_player_seekb_cb (GtkButton *button,
- ParolePlayer *player);
-
-gboolean parole_player_scroll_event_cb (GtkWidget *widget,
- GdkEventScroll *ev,
- ParolePlayer *player);
-
-void parole_player_leave_fs_cb (GtkButton *button,
- ParolePlayer *player);
-
-void parole_player_destroy_cb (GtkObject *window,
- ParolePlayer *player);
-
-gboolean parole_player_delete_event_cb (GtkWidget *widget,
- GdkEvent *ev,
- ParolePlayer *player);
-
-void parole_player_show_hide_playlist (GtkButton *button,
- ParolePlayer *player);
-
-/*Menu items callbacks*/
-void parole_player_menu_open_location_cb (GtkWidget *widget,
- ParolePlayer *player);
-
-void parole_player_menu_add_cb (GtkWidget *widget,
- ParolePlayer *player);
-
-void parole_player_menu_exit_cb (GtkWidget *widget,
- ParolePlayer *player);
-
-void parole_player_volume_up (GtkWidget *widget,
- ParolePlayer *player);
-
-void parole_player_volume_down (GtkWidget *widget,
- ParolePlayer *player);
-
-void parole_player_volume_muted (GtkWidget *widget,
- ParolePlayer *player);
-
-void parole_player_open_preferences_cb (GtkWidget *widget,
- ParolePlayer *player);
-
-void parole_player_volume_value_changed_cb (GtkRange *range,
- ParolePlayer *player);
-
-void parole_player_full_screen_activated_cb (GtkWidget *widget,
- ParolePlayer *player);
-
-void parole_player_shuffle_toggled_cb (GtkWidget *widget,
- ParolePlayer *player);
-
-void parole_player_repeat_toggled_cb (GtkWidget *widget,
- ParolePlayer *player);
-
-/*
- * Aspect ratio
- */
-void ratio_none_toggled_cb (GtkWidget *widget,
- ParolePlayer *player);
-
-void ratio_auto_toggled_cb (GtkWidget *widget,
- ParolePlayer *player);
-
-void ratio_square_toggled_cb (GtkWidget *widget,
- ParolePlayer *player);
-
-void ratio_4_3_toggled_cb (GtkWidget *widget,
- ParolePlayer *player);
-
-void ratio_16_9_toggled_cb (GtkWidget *widget,
- ParolePlayer *player);
-
-void ratio_20_9_toggled_cb (GtkWidget *widget,
- ParolePlayer *player);
-
-void parole_show_about (GtkWidget *widget);
-
-gboolean parole_player_key_press (GtkWidget *widget,
- GdkEventKey *ev,
- ParolePlayer *player);
-
-static GtkTargetEntry target_entry[] =
-{
- { "STRING", 0, 0 },
- { "text/uri-list", 0, 1 },
-};
-
-/*
- * End of GtkBuilder Callbacks
- */
-#define PAROLE_PLAYER_GET_PRIVATE(o) \
-(G_TYPE_INSTANCE_GET_PRIVATE ((o), PAROLE_TYPE_PLAYER, ParolePlayerPrivate))
-
-struct ParolePlayerPrivate
-{
- ParoleMediaList *list;
- ParoleStatusbar *status;
- ParoleDisc *disc;
- ParoleScreenSaver *screen_saver;
- ParoleConf *conf;
- ParoleDiscMenu *disc_menu;
- ParoleSession *session;
-#ifdef HAVE_XF86_KEYSYM
- ParoleButton *button;
-#endif
-
- GtkFileFilter *video_filter;
- GtkRecentManager *recent;
-
- GtkWidget *gst;
-
- GtkWidget *window;
- GtkWidget *playlist_nt;
- GtkWidget *main_nt; /*Main notebook*/
- GtkWidget *show_hide_playlist;
- GtkWidget *play_pause;
- GtkWidget *stop;
- GtkWidget *seekf;
- GtkWidget *seekb;
- GtkWidget *range;
-
- GtkWidget *fs_window; /* Window for packing control widgets
- * when in full screen mode
- */
- GtkWidget *control; /* contains all play button*/
- GtkWidget *leave_fs;
-
- GtkWidget *main_box;
-
- GtkWidget *volume;
- GtkWidget *volume_image;
- GtkWidget *menu_bar;
- GtkWidget *play_box;
-
- gboolean exit;
-
- gboolean full_screen;
-
- ParoleMediaState state;
- gboolean user_seeking;
- gboolean internal_range_change;
- gboolean buffering;
-
- GtkTreeRowReference *row;
-
-};
-
-G_DEFINE_TYPE (ParolePlayer, parole_player, G_TYPE_OBJECT)
-
-void parole_show_about (GtkWidget *widget)
-{
- parole_about ();
-}
-
-void ratio_none_toggled_cb (GtkWidget *widget, ParolePlayer *player)
-{
- g_object_set (G_OBJECT (player->priv->conf),
- "aspect-ratio", PAROLE_ASPECT_RATIO_NONE,
- NULL);
-}
-
-void ratio_auto_toggled_cb (GtkWidget *widget, ParolePlayer *player)
-{
- g_object_set (G_OBJECT (player->priv->conf),
- "aspect-ratio", PAROLE_ASPECT_RATIO_AUTO,
- NULL);
-}
-
-void ratio_square_toggled_cb (GtkWidget *widget, ParolePlayer *player)
-{
- g_object_set (G_OBJECT (player->priv->conf),
- "aspect-ratio", PAROLE_ASPECT_RATIO_SQUARE,
- NULL);
-}
-
-void ratio_4_3_toggled_cb (GtkWidget *widget, ParolePlayer *player)
-{
- g_object_set (G_OBJECT (player->priv->conf),
- "aspect-ratio", PAROLE_ASPECT_RATIO_4_3,
- NULL);
-}
-
-void ratio_16_9_toggled_cb (GtkWidget *widget, ParolePlayer *player)
-{
- g_object_set (G_OBJECT (player->priv->conf),
- "aspect-ratio", PAROLE_ASPECT_RATIO_16_9,
- NULL);
-}
-
-void ratio_20_9_toggled_cb (GtkWidget *widget, ParolePlayer *player)
-{
- g_object_set (G_OBJECT (player->priv->conf),
- "aspect-ratio", PAROLE_ASPECT_RATIO_DVB,
- NULL);
-}
-
-void parole_player_show_hide_playlist (GtkButton *button, ParolePlayer *player)
-{
- GtkWidget *img;
- gboolean visible;
-
- g_object_get (G_OBJECT (player->priv->show_hide_playlist),
- "image", &img,
- NULL);
-
- visible = GTK_WIDGET_VISIBLE (player->priv->playlist_nt);
-
- if ( !visible )
- {
- g_object_set (G_OBJECT (img),
- "stock", GTK_STOCK_GO_FORWARD,
- NULL);
-
- gtk_widget_show_all (player->priv->playlist_nt);
- gtk_widget_set_tooltip_text (GTK_WIDGET (player->priv->show_hide_playlist), _("Hide playlist"));
- }
- else
- {
- g_object_set (G_OBJECT (img),
- "stock", GTK_STOCK_GO_BACK,
- NULL);
-
- gtk_widget_hide_all (player->priv->playlist_nt);
- gtk_widget_set_tooltip_text (GTK_WIDGET (player->priv->show_hide_playlist), _("Show playlist"));
- }
- g_object_unref (img);
-}
-
-static void
-parole_player_change_range_value (ParolePlayer *player, gdouble value)
-{
- if ( !player->priv->user_seeking )
- {
- player->priv->internal_range_change = TRUE;
-
- gtk_range_set_value (GTK_RANGE (player->priv->range), value);
-
- player->priv->internal_range_change = FALSE;
- }
-}
-
-static void
-parole_player_reset (ParolePlayer *player)
-{
- parole_player_change_range_value (player, 0);
-
- if ( player->priv->row )
- {
- parole_media_list_set_row_pixbuf (player->priv->list, player->priv->row, NULL);
- gtk_tree_row_reference_free (player->priv->row);
- player->priv->row = NULL;
- }
-}
-
-static void
-parole_player_media_activated_cb (ParoleMediaList *list, GtkTreeRowReference *row, ParolePlayer *player)
-{
- ParoleFile *file;
- GtkTreeIter iter;
- GtkTreeModel *model;
-
- parole_player_reset (player);
-
- player->priv->row = gtk_tree_row_reference_copy (row);
-
- model = gtk_tree_row_reference_get_model (row);
-
- if ( gtk_tree_model_get_iter (model, &iter, gtk_tree_row_reference_get_path (row)) )
- {
- gtk_tree_model_get (model, &iter, DATA_COL, &file, -1);
-
- if ( file )
- {
- gchar *sub = NULL;
- const gchar *uri;
-
- uri = parole_file_get_uri (file);
-
- if ( g_str_has_prefix (uri, "file:/") )
- {
- if ( parole_file_filter (player->priv->video_filter, file) )
- {
- sub = parole_get_subtitle_path (uri);
- }
- }
- TRACE ("Trying to play media file %s", uri);
- TRACE ("File content type %s", parole_file_get_content_type (file));
-
- gtk_widget_set_sensitive (player->priv->stop, TRUE);
-
- parole_gst_play_uri (PAROLE_GST (player->priv->gst),
- parole_file_get_uri (file),
- sub);
- g_free (sub);
- gtk_widget_grab_focus (player->priv->gst);
- g_object_unref (file);
- }
- }
-}
-
-static void
-parole_player_disc_selected_cb (ParoleDisc *disc, const gchar *uri, const gchar *device, ParolePlayer *player)
-{
- parole_player_reset (player);
- gtk_widget_set_sensitive (player->priv->stop, TRUE);
-
- parole_gst_play_device_uri (PAROLE_GST (player->priv->gst), uri, device);
- gtk_widget_grab_focus (player->priv->gst);
-}
-
-static void
-parole_player_uri_opened_cb (ParoleMediaList *list, const gchar *uri, ParolePlayer *player)
-{
- parole_player_reset (player);
- gtk_widget_set_sensitive (player->priv->stop, TRUE);
- gtk_widget_grab_focus (player->priv->gst);
- parole_gst_play_uri (PAROLE_GST (player->priv->gst), uri, NULL);
-}
-
-static void
-parole_player_media_cursor_changed_cb (ParoleMediaList *list, gboolean media_selected, ParolePlayer *player)
-{
- if (player->priv->state < PAROLE_MEDIA_STATE_PAUSED)
- {
- gtk_widget_set_sensitive (player->priv->play_pause,
- media_selected || !parole_media_list_is_empty (player->priv->list));
- }
-}
-
-static void
-parole_player_media_progressed_cb (ParoleGst *gst, const ParoleStream *stream, gdouble value, ParolePlayer *player)
-{
-#ifdef DEBUG
- g_return_if_fail (value > 0);
-#endif
-
- if ( !player->priv->user_seeking && player->priv->state == PAROLE_MEDIA_STATE_PLAYING )
- {
- parole_player_change_range_value (player, value);
- }
-}
-
-static void
-parole_player_set_playpause_widget_image (GtkWidget *widget, const gchar *stock_id)
-{
- GtkWidget *img;
-
- g_object_get (G_OBJECT (widget),
- "image", &img,
- NULL);
-
- g_object_set (G_OBJECT (img),
- "stock", stock_id,
- NULL);
-
- g_object_unref (img);
-}
-
-static void
-parole_player_set_playpause_button_image (GtkWidget *widget, const gchar *stock_id)
-{
- GtkWidget *img;
-
- g_object_get (G_OBJECT (widget),
- "image", &img,
- NULL);
-
- g_object_set (G_OBJECT (img),
- "stock", stock_id,
- NULL);
-
- g_object_unref (img);
-}
-
-static void
-parole_player_save_uri (ParolePlayer *player, const ParoleStream *stream)
-{
- ParoleMediaType media_type;
- gchar *uri;
- gboolean save = TRUE;
- gchar **lines = NULL;
- guint i;
-
- g_object_get (G_OBJECT (stream),
- "uri", &uri,
- NULL);
-
- g_object_get (G_OBJECT (stream),
- "media-type", &media_type,
- NULL);
-
- if ( media_type == PAROLE_MEDIA_TYPE_LOCAL_FILE )
- {
- gtk_recent_manager_add_item (player->priv->recent, uri);
- goto out;
- }
-
- lines = parole_get_history ();
-
- if (lines )
- {
- for ( i = 0; lines[i]; i++)
- {
- if ( !g_strcmp0 (lines[i], uri) )
- {
- save = FALSE;
- break;
- }
- }
- }
-
- if ( save )
- {
- parole_insert_line_history (uri);
- }
-
- g_strfreev (lines);
-out:
- g_free (uri);
-}
-
-static void
-parole_player_playing (ParolePlayer *player, const ParoleStream *stream)
-{
- GdkPixbuf *pix = NULL;
- gdouble duration;
- gboolean seekable;
-
- player->priv->state = PAROLE_MEDIA_STATE_PLAYING;
-
- pix = parole_icon_load ("player_play", 16);
-
- if ( !pix )
- pix = parole_icon_load ("gtk-media-play-ltr", 16);
-
- parole_media_list_set_row_pixbuf (player->priv->list, player->priv->row, pix);
-
- g_object_get (G_OBJECT (stream),
- "seekable", &seekable,
- "duration", &duration,
- NULL);
-
- gtk_widget_set_sensitive (player->priv->play_pause, TRUE);
- gtk_widget_set_sensitive (player->priv->stop, TRUE);
-
- parole_player_set_playpause_button_image (player->priv->play_pause, GTK_STOCK_MEDIA_PAUSE);
-
- gtk_widget_set_sensitive (player->priv->range, seekable);
-
- if ( seekable )
- {
- player->priv->internal_range_change = TRUE;
- gtk_range_set_range (GTK_RANGE (player->priv->range), 0, duration);
- gtk_widget_set_sensitive (player->priv->seekf, TRUE);
- gtk_widget_set_sensitive (player->priv->seekb, TRUE);
- player->priv->internal_range_change = FALSE;
- }
- else
- {
- gtk_widget_set_tooltip_text (GTK_WIDGET (player->priv->range), _("Media stream is not seekable"));
- parole_player_change_range_value (player, 0);
- }
-
- if ( pix )
- g_object_unref (pix);
-
- parole_player_save_uri (player, stream);
-}
-
-static void
-parole_player_paused (ParolePlayer *player)
-{
- GdkPixbuf *pix = NULL;
-
- player->priv->state = PAROLE_MEDIA_STATE_PAUSED;
-
- TRACE ("Player paused");
-
- pix = parole_icon_load (GTK_STOCK_MEDIA_PAUSE, 16);
- parole_media_list_set_row_pixbuf (player->priv->list, player->priv->row, pix);
-
- gtk_widget_set_sensitive (player->priv->play_pause, TRUE);
- gtk_widget_set_sensitive (player->priv->stop, TRUE);
-
- parole_player_set_playpause_widget_image (player->priv->play_pause, GTK_STOCK_MEDIA_PLAY);
-
- if ( pix )
- g_object_unref (pix);
-
-}
-
-static void
-parole_player_quit (ParolePlayer *player)
-{
- parole_media_list_save_list (player->priv->list);
- parole_gst_shutdown (PAROLE_GST (player->priv->gst));
- gtk_widget_destroy (player->priv->window);
- g_object_unref (player);
- gtk_main_quit ();
-}
-
-static void
-parole_player_stopped (ParolePlayer *player)
-{
- TRACE ("Player stopped");
-
- player->priv->state = PAROLE_MEDIA_STATE_STOPPED;
-
- gtk_widget_set_sensitive (player->priv->play_pause,
- parole_media_list_is_selected_row (player->priv->list) ||
- !parole_media_list_is_empty (player->priv->list));
-
- /*
- * Set the stop widget insensitive only if we are not going to got to playing
- * state, this give the possibility to press on it if the media get stuck
- * for some reason.
- */
- if ( parole_gst_get_gst_target_state (PAROLE_GST (player->priv->gst)) != GST_STATE_PLAYING)
- {
- gtk_widget_set_sensitive (player->priv->stop, FALSE);
- }
-
- parole_player_change_range_value (player, 0);
- gtk_widget_set_sensitive (player->priv->range, FALSE);
-
- gtk_widget_set_sensitive (player->priv->seekf, FALSE);
- gtk_widget_set_sensitive (player->priv->seekb, FALSE);
-
- parole_player_set_playpause_widget_image (player->priv->play_pause, GTK_STOCK_MEDIA_PLAY);
-
- parole_media_list_set_row_pixbuf (player->priv->list, player->priv->row, NULL);
-
- if ( player->priv->exit )
- {
- parole_player_quit (player);
- }
-}
-
-static void
-parole_player_play_selected_row (ParolePlayer *player)
-{
- GtkTreeRowReference *row;
-
- row = parole_media_list_get_selected_row (player->priv->list);
-
- if ( row == NULL )
- row = parole_media_list_get_first_row (player->priv->list);
-
- if ( row )
- parole_player_media_activated_cb (player->priv->list, row, player);
-}
-
-static void
-parole_player_play_next (ParolePlayer *player, gboolean allow_shuffle)
-{
- gboolean repeat, shuffle;
-
- GtkTreeRowReference *row;
-
- g_object_get (G_OBJECT (player->priv->conf),
- "shuffle", &shuffle,
- "repeat", &repeat,
- NULL);
-
- if ( player->priv->row )
- {
- parole_media_list_set_row_pixbuf (player->priv->list, player->priv->row, NULL);
-
- if ( shuffle && allow_shuffle )
- row = parole_media_list_get_row_random (player->priv->list);
- else
- row = parole_media_list_get_next_row (player->priv->list, player->priv->row, repeat);
-
- if ( row )
- {
- parole_player_media_activated_cb (player->priv->list, row, player);
- return;
- }
- else
- {
- TRACE ("No remaining media in the list");
- gtk_tree_row_reference_free (player->priv->row);
- player->priv->row = NULL;
- }
- }
-
- parole_gst_stop (PAROLE_GST (player->priv->gst));
-}
-
-static void
-parole_player_play_prev (ParolePlayer *player)
-{
- GtkTreeRowReference *row;
-
- if ( player->priv->row )
- {
- parole_media_list_set_row_pixbuf (player->priv->list, player->priv->row, NULL);
-
- row = parole_media_list_get_prev_row (player->priv->list, player->priv->row);
-
- if ( row )
- {
- parole_player_media_activated_cb (player->priv->list, row, player);
- return;
- }
- else
- {
- TRACE ("No remaining media in the list");
- gtk_tree_row_reference_free (player->priv->row);
- player->priv->row = NULL;
- }
- }
-
- parole_gst_stop (PAROLE_GST (player->priv->gst));
-}
-
-static void
-parole_player_media_state_cb (ParoleGst *gst, const ParoleStream *stream, ParoleMediaState state, ParolePlayer *player)
-{
- gboolean has_video;
-
- PAROLE_DEBUG_ENUM ("State callback", state, GST_ENUM_TYPE_MEDIA_STATE);
-
- g_object_get (G_OBJECT (stream),
- "has-video", &has_video,
- NULL);
-
- if ( state == PAROLE_MEDIA_STATE_PLAYING && has_video )
- parole_screen_saver_inhibit (player->priv->screen_saver);
- else
- parole_screen_saver_uninhibit (player->priv->screen_saver);
-
- if ( state == PAROLE_MEDIA_STATE_PLAYING )
- {
- parole_player_playing (player, stream);
- }
- else if ( state == PAROLE_MEDIA_STATE_PAUSED )
- {
- parole_player_paused (player);
- }
- else if ( state == PAROLE_MEDIA_STATE_STOPPED )
- {
- parole_player_stopped (player);
- }
- else if ( state == PAROLE_MEDIA_STATE_FINISHED )
- {
- TRACE ("***Playback finished***");
- parole_player_play_next (player, TRUE);
- }
-}
-
-void
-parole_player_play_pause_clicked (GtkButton *button, ParolePlayer *player)
-{
- if ( player->priv->state == PAROLE_MEDIA_STATE_PLAYING )
- parole_gst_pause (PAROLE_GST (player->priv->gst));
- else if ( player->priv->state == PAROLE_MEDIA_STATE_PAUSED )
- parole_gst_resume (PAROLE_GST (player->priv->gst));
- else
- parole_player_play_selected_row (player);
-}
-
-void
-parole_player_stop_clicked (GtkButton *button, ParolePlayer *player)
-{
- parole_gst_stop (PAROLE_GST (player->priv->gst));
-}
-
-/*
- * Seek 5%
- */
-static gdouble
-parole_player_get_seek_value (ParolePlayer *player)
-{
- gdouble val;
- gdouble dur;
-
- dur = parole_gst_get_stream_duration (PAROLE_GST (player->priv->gst));
-
- val = dur * 5 /100;
-
- return val;
-}
-
-void parole_player_seekf_cb (GtkButton *button, ParolePlayer *player)
-{
- gdouble seek;
-
- seek = parole_gst_get_stream_position (PAROLE_GST (player->priv->gst) )
- +
- parole_player_get_seek_value (player);
-
- parole_gst_seek (PAROLE_GST (player->priv->gst), seek);
-}
-
-void parole_player_seekb_cb (GtkButton *button, ParolePlayer *player)
-{
- gdouble seek;
-
- seek = parole_gst_get_stream_position (PAROLE_GST (player->priv->gst) )
- -
- parole_player_get_seek_value (player);
-
- parole_gst_seek (PAROLE_GST (player->priv->gst), seek);
-}
-
-gboolean parole_player_scroll_event_cb (GtkWidget *widget, GdkEventScroll *ev, ParolePlayer *player)
-{
- gboolean ret_val = FALSE;
-
- if ( ev->direction == GDK_SCROLL_UP )
- {
- parole_player_seekf_cb (NULL, player);
- ret_val = TRUE;
- }
- else if ( ev->direction == GDK_SCROLL_DOWN )
- {
- parole_player_seekf_cb (NULL, player);
- ret_val = TRUE;
- }
-
- return ret_val;
-}
-
-gboolean
-parole_player_range_button_release (GtkWidget *widget, GdkEventButton *ev, ParolePlayer *player)
-{
- ev->button = 2;
-
- player->priv->user_seeking = FALSE;
-
- return FALSE;
-}
-
-gboolean
-parole_player_range_button_press (GtkWidget *widget, GdkEventButton *ev, ParolePlayer *player)
-{
- ev->button = 2;
-
- player->priv->user_seeking = TRUE;
-
- return FALSE;
-}
-
-void
-parole_player_range_value_changed (GtkRange *range, ParolePlayer *player)
-{
- gdouble value;
-
- if ( !player->priv->internal_range_change )
- {
- value = gtk_range_get_value (GTK_RANGE (range));
- player->priv->user_seeking = TRUE;
- TRACE ("Sending a seek request with value :%e", value);
- parole_gst_seek (PAROLE_GST (player->priv->gst), value);
- player->priv->user_seeking = FALSE;
- }
-}
-
-static void
-parole_player_error_cb (ParoleGst *gst, const gchar *error, ParolePlayer *player)
-{
- xfce_err ("%s", error);
- parole_screen_saver_uninhibit (player->priv->screen_saver);
- parole_player_stopped (player);
-}
-
-static void
-parole_player_media_tag_cb (ParoleGst *gst, const ParoleStream *stream, ParolePlayer *player)
-{
- gchar *title;
-
- if ( player->priv->row )
- {
- g_object_get (G_OBJECT (stream),
- "title", &title,
- NULL);
- if ( title )
- {
- parole_media_list_set_row_name (player->priv->list, player->priv->row, title);
- g_free (title);
- }
- }
-}
-
-static void
-parole_player_buffering_cb (ParoleGst *gst, const ParoleStream *stream, gint percentage, ParolePlayer *player)
-{
- if ( percentage == 100 )
- {
- player->priv->buffering = FALSE;
- parole_gst_resume (PAROLE_GST (player->priv->gst));
- }
- else
- {
- player->priv->buffering = TRUE;
-
- if ( player->priv->state == PAROLE_MEDIA_STATE_PLAYING )
- parole_gst_pause (PAROLE_GST (player->priv->gst));
- }
-}
-
-gboolean parole_player_delete_event_cb (GtkWidget *widget, GdkEvent *ev, ParolePlayer *player)
-{
- parole_window_busy_cursor (GTK_WIDGET (player->priv->window)->window);
-
- player->priv->exit = TRUE;
- parole_gst_terminate (PAROLE_GST (player->priv->gst));
-
- return TRUE;
-}
-
-void
-parole_player_destroy_cb (GtkObject *window, ParolePlayer *player)
-{
-}
-
-static void
-parole_player_play_menu_item_activate (ParolePlayer *player)
-{
- gtk_widget_activate (player->priv->play_pause);
-}
-
-static void
-parole_player_stop_menu_item_activate (ParolePlayer *player)
-{
- gtk_widget_activate (player->priv->stop);
-}
-
-static void
-parole_player_next_menu_item_activate (ParolePlayer *player)
-{
- parole_disc_menu_seek_next (player->priv->disc_menu);
-}
-
-static void
-parole_player_previous_menu_item_activate (ParolePlayer *player)
-{
- parole_disc_menu_seek_prev (player->priv->disc_menu);
-}
-
-static void
-parole_player_move_fs_window (ParolePlayer *player)
-{
- GdkScreen *screen;
- GdkRectangle rect;
-
- screen = gtk_window_get_screen (GTK_WINDOW (player->priv->fs_window));
-
- gdk_screen_get_monitor_geometry (screen,
- gdk_screen_get_monitor_at_window (screen, player->priv->window->window),
- &rect);
-
- gtk_window_resize (GTK_WINDOW (player->priv->fs_window),
- rect.width,
- player->priv->play_box->allocation.width);
-
- gtk_window_move (GTK_WINDOW (player->priv->fs_window),
- 0,
- rect.height + rect.y - player->priv->play_box->allocation.height);
-}
-
-static void
-parole_player_full_screen (ParolePlayer *player, gboolean fullscreen)
-{
- gint npages;
- static gint current_page = 0;
-
- if ( player->priv->full_screen == fullscreen )
- return;
-
- if ( player->priv->full_screen )
- {
- npages = gtk_notebook_get_n_pages (GTK_NOTEBOOK (player->priv->main_nt));
- gtk_widget_reparent (player->priv->play_box, player->priv->control);
- gtk_widget_hide (player->priv->fs_window);
- parole_statusbar_set_visible (player->priv->status, TRUE);
- parole_disc_menu_set_fullscreen (player->priv->disc_menu, FALSE);
- gtk_widget_show (player->priv->play_box);
- gtk_widget_show (player->priv->menu_bar);
- gtk_widget_show (player->priv->playlist_nt);
- gtk_widget_show (player->priv->show_hide_playlist);
- gtk_widget_hide (player->priv->leave_fs);
-
- gtk_notebook_set_show_tabs (GTK_NOTEBOOK (player->priv->main_nt), npages > 1);
-
- gtk_window_unfullscreen (GTK_WINDOW (player->priv->window));
- gtk_notebook_set_current_page (GTK_NOTEBOOK (player->priv->playlist_nt), current_page);
- player->priv->full_screen = FALSE;
- }
- else
- {
- parole_disc_menu_set_fullscreen (player->priv->disc_menu, TRUE);
- parole_player_move_fs_window (player);
- gtk_widget_reparent (player->priv->play_box, player->priv->fs_window);
-
- parole_statusbar_set_visible (player->priv->status, FALSE);
-
- gtk_widget_hide (player->priv->play_box);
- gtk_widget_hide (player->priv->menu_bar);
- gtk_widget_hide (player->priv->playlist_nt);
- gtk_widget_hide (player->priv->show_hide_playlist);
- gtk_widget_show (player->priv->leave_fs);
-
- current_page = gtk_notebook_get_current_page (GTK_NOTEBOOK (player->priv->playlist_nt));
- gtk_notebook_set_show_tabs (GTK_NOTEBOOK (player->priv->main_nt), FALSE);
-
- gtk_window_fullscreen (GTK_WINDOW (player->priv->window));
- player->priv->full_screen = TRUE;
- }
-}
-
-static void
-parole_player_full_screen_menu_item_activate (ParolePlayer *player)
-{
- parole_player_full_screen (player, !player->priv->full_screen);
-}
-
-void parole_player_full_screen_activated_cb (GtkWidget *widget, ParolePlayer *player)
-{
- parole_player_full_screen_menu_item_activate (player);
-}
-
-void parole_player_leave_fs_cb (GtkButton *button, ParolePlayer *player)
-{
- parole_player_full_screen_menu_item_activate (player);
-}
-
-static void
-parole_player_show_menu (ParolePlayer *player, guint button, guint activate_time)
-{
- GtkWidget *menu, *mi, *img;
- gboolean sensitive;
- gboolean dvd_menu;
- ParoleMediaType media_type;
-
- dvd_menu = parole_disc_menu_visible (player->priv->disc_menu);
-
- media_type = parole_gst_get_current_stream_type (PAROLE_GST (player->priv->gst));
-
- menu = gtk_menu_new ();
-
- /*Play menu item
- */
- mi = gtk_image_menu_item_new_from_stock (player->priv->state == PAROLE_MEDIA_STATE_PLAYING
- ? GTK_STOCK_MEDIA_PAUSE : GTK_STOCK_MEDIA_PLAY,
- NULL);
-
- g_object_get (G_OBJECT (player->priv->play_pause),
- "sensitive", &sensitive,
- NULL);
-
- gtk_widget_set_sensitive (mi, sensitive);
- gtk_widget_show (mi);
- g_signal_connect_swapped (mi, "activate",
- G_CALLBACK (parole_player_play_menu_item_activate), player);
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi);
-
- /*
- * Seek Forward.
- */
- mi = gtk_image_menu_item_new_from_stock (GTK_STOCK_MEDIA_FORWARD, NULL);
-
- gtk_widget_set_sensitive (mi, (player->priv->state >= PAROLE_MEDIA_STATE_PAUSED));
- gtk_widget_show (mi);
- g_signal_connect (mi, "activate",
- G_CALLBACK (parole_player_seekf_cb), player);
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi);
-
- /*
- * Seek backward.
- */
- mi = gtk_image_menu_item_new_from_stock (GTK_STOCK_MEDIA_REWIND, NULL);
-
- gtk_widget_set_sensitive (mi, (player->priv->state >= PAROLE_MEDIA_STATE_PAUSED));
- gtk_widget_show (mi);
- g_signal_connect (mi, "activate",
- G_CALLBACK (parole_player_seekb_cb), player);
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi);
-
- /*
- * Stop menu item
- */
- mi = gtk_image_menu_item_new_from_stock (GTK_STOCK_MEDIA_STOP, NULL);
-
- gtk_widget_set_sensitive (mi, player->priv->state == PAROLE_MEDIA_STATE_PLAYING);
- gtk_widget_show (mi);
- g_signal_connect_swapped (mi, "activate",
- G_CALLBACK (parole_player_stop_menu_item_activate), player);
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi);
-
- /*
- * Next chapter menu item
- */
- mi = gtk_image_menu_item_new_with_label (media_type == PAROLE_MEDIA_TYPE_CDDA ? _("Next Track") : _("Next Chapter"));
- img = gtk_image_new_from_stock (GTK_STOCK_MEDIA_NEXT, GTK_ICON_SIZE_MENU);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (mi),img);
- gtk_widget_set_sensitive (mi, (player->priv->state == PAROLE_MEDIA_STATE_PLAYING) && dvd_menu);
- gtk_widget_show (mi);
- g_signal_connect_swapped (mi, "activate",
- G_CALLBACK (parole_player_next_menu_item_activate), player);
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi);
-
- /*
- * Previous chapter menu item
- */
- mi = gtk_image_menu_item_new_with_label (media_type == PAROLE_MEDIA_TYPE_CDDA ? _("Previous Track") : _("Previous Chapter"));
- img = gtk_image_new_from_stock (GTK_STOCK_MEDIA_PREVIOUS, GTK_ICON_SIZE_MENU);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (mi), img);
-
- gtk_widget_set_sensitive (mi, (player->priv->state == PAROLE_MEDIA_STATE_PLAYING) && dvd_menu);
- gtk_widget_show (mi);
- g_signal_connect_swapped (mi, "activate",
- G_CALLBACK (parole_player_previous_menu_item_activate), player);
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi);
-
- mi = gtk_separator_menu_item_new ();
- gtk_widget_show (mi);
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi);
-
- /*
- * Un/Full screen
- */
- mi = gtk_image_menu_item_new_from_stock (player->priv->full_screen ? GTK_STOCK_LEAVE_FULLSCREEN:
- GTK_STOCK_FULLSCREEN, NULL);
- gtk_widget_show (mi);
- g_signal_connect_swapped (mi, "activate",
- G_CALLBACK (parole_player_full_screen_menu_item_activate), player);
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi);
-
-
- g_signal_connect_swapped (menu, "selection-done",
- G_CALLBACK (gtk_widget_destroy), menu);
-
- gtk_menu_popup (GTK_MENU (menu),
- NULL, NULL,
- NULL, NULL,
- button, activate_time);
-}
-
-static gboolean
-parole_player_gst_widget_button_release (GtkWidget *widget, GdkEventButton *ev, ParolePlayer *player)
-{
- gboolean ret_val = FALSE;
-
- if ( ev->button == 3 )
- {
- parole_player_show_menu (player, ev->button, ev->time);
- gtk_widget_grab_focus (widget);
- ret_val = TRUE;
- }
- else if ( ev->button == 1 )
- {
- gtk_widget_grab_focus (widget);
- }
-
- return ret_val;
-}
-
-static gboolean parole_player_hide_fs_window (gpointer data)
-{
- ParolePlayer *player;
-
- player = PAROLE_PLAYER (data);
-
- if ( GTK_WIDGET_VISIBLE (player->priv->fs_window) )
- {
- gtk_widget_hide (player->priv->fs_window);
- }
-
- return FALSE;
-}
-
-static gboolean
-parole_player_gst_widget_motion_notify_event (GtkWidget *widget, GdkEventMotion *ev, ParolePlayer *player)
-{
- static gulong hide_timeout = 0;
-
- if ( player->priv->full_screen )
- {
- gtk_widget_show_all (player->priv->fs_window);
- if ( hide_timeout != 0 )
- {
- g_source_remove (hide_timeout);
- hide_timeout = 0;
- }
-
- hide_timeout = g_timeout_add_seconds (4, (GSourceFunc) parole_player_hide_fs_window, player);
- }
- else if ( hide_timeout != 0)
- {
- g_source_remove (hide_timeout);
- hide_timeout = 0;
- }
-
- return FALSE;
-}
-
-void
-parole_player_menu_open_location_cb (GtkWidget *widget, ParolePlayer *player)
-{
- parole_media_list_open_location (player->priv->list);
-}
-
-void
-parole_player_menu_add_cb (GtkWidget *widget, ParolePlayer *player)
-{
- parole_media_list_open (player->priv->list);
-}
-
-void parole_player_open_preferences_cb (GtkWidget *widget, ParolePlayer *player)
-{
- ParoleConfDialog *dialog;
-
- dialog = parole_conf_dialog_new ();
-
- parole_conf_dialog_open (dialog, player->priv->window);
-}
-
-void
-parole_player_menu_exit_cb (GtkWidget *widget, ParolePlayer *player)
-{
- parole_player_delete_event_cb (NULL, NULL, player);
-}
-
-
-void parole_player_shuffle_toggled_cb (GtkWidget *widget, ParolePlayer *player)
-{
- gboolean toggled;
-
- toggled = gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget));
-
- g_object_set (G_OBJECT (player->priv->conf),
- "shuffle", toggled,
- NULL);
-}
-
-void parole_player_repeat_toggled_cb (GtkWidget *widget, ParolePlayer *player)
-{
- gboolean toggled;
-
- toggled = gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget));
-
- g_object_set (G_OBJECT (player->priv->conf),
- "repeat", toggled,
- NULL);
-}
-
-static const gchar *
-parole_player_get_volume_icon_name (gdouble value)
-{
- if ( value == 1. )
- return "audio-volume-high";
- else if ( value > 0.5 )
- return "audio-volume-medium";
- else if ( value > 0 )
- return "audio-volume-low";
-
- return "audio-volume-muted";
-}
-
-static void
-parole_player_set_volume_image (ParolePlayer *player, gdouble value)
-{
- GdkPixbuf *icon;
-
- icon = parole_icon_load (parole_player_get_volume_icon_name (value),
- player->priv->volume_image->allocation.width);
- if ( icon )
- {
- g_object_set (G_OBJECT (player->priv->volume_image),
- "pixbuf", icon,
- NULL);
- gdk_pixbuf_unref (icon);
- }
-}
-
-static void
-parole_player_change_volume (ParolePlayer *player, gdouble value)
-{
- parole_gst_set_volume (PAROLE_GST (player->priv->gst), value);
- parole_player_set_volume_image (player, value);
-}
-
-void
-parole_player_volume_value_changed_cb (GtkRange *range, ParolePlayer *player)
-{
- gdouble value;
- value = gtk_range_get_value (range);
- parole_player_change_volume (player, value);
- parole_rc_write_entry_int ("volume", PAROLE_RC_GROUP_GENERAL, (gint)(value * 100));
-}
-
-void
-parole_player_volume_up (GtkWidget *widget, ParolePlayer *player)
-{
- gdouble value;
- value = gtk_range_get_value (GTK_RANGE (player->priv->volume));
- gtk_range_set_value (GTK_RANGE (player->priv->volume), value + 0.1);
-}
-
-void
-parole_player_volume_down (GtkWidget *widget, ParolePlayer *player)
-{
- gdouble value;
- value = gtk_range_get_value (GTK_RANGE (player->priv->volume));
- gtk_range_set_value (GTK_RANGE (player->priv->volume), value - 0.1);
-}
-
-void parole_player_volume_muted (GtkWidget *widget, ParolePlayer *player)
-{
- gtk_range_set_value (GTK_RANGE (player->priv->volume), 0);
-}
-
-static void
-parole_player_screen_size_change_changed_cb (GdkScreen *screen, ParolePlayer *player)
-{
- if ( player->priv->full_screen )
- parole_player_move_fs_window (player);
-}
-
-static void
-parole_player_finalize (GObject *object)
-{
- ParolePlayer *player;
-
- player = PAROLE_PLAYER (object);
-
- TRACE ("start");
- g_object_unref (player->priv->video_filter);
- g_object_unref (player->priv->status);
- g_object_unref (player->priv->disc);
- g_object_unref (player->priv->disc_menu);
- g_object_unref (player->priv->conf);
- g_object_unref (player->priv->screen_saver);
-
-#ifdef HAVE_XF86_KEYSYM
- g_object_unref (player->priv->button);
-#endif
-
- gtk_widget_destroy (player->priv->fs_window);
-
- G_OBJECT_CLASS (parole_player_parent_class)->finalize (object);
-}
-
-static void
-parole_player_class_init (ParolePlayerClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
- object_class->finalize = parole_player_finalize;
-
- g_type_class_add_private (klass, sizeof (ParolePlayerPrivate));
-
- parole_player_dbus_class_init (klass);
-}
-
-static gboolean
-parole_player_handle_key_press (GdkEventKey *ev, ParolePlayer *player)
-{
- GtkWidget *focused;
-
- gboolean ret_val = FALSE;
-
- focused = gtk_window_get_focus (GTK_WINDOW (player->priv->window));
-
- if ( focused )
- {
- if ( ( gtk_widget_is_ancestor (focused, player->priv->playlist_nt) ) ||
- ( gtk_widget_is_ancestor (focused, player->priv->main_nt) &&
- !gtk_widget_is_ancestor (focused, player->priv->main_box) ))
- {
- return FALSE;
- }
- }
-
- switch (ev->keyval)
- {
- case GDK_F11:
- case GDK_f:
- case GDK_F:
- parole_player_full_screen_menu_item_activate (player);
- ret_val = TRUE;
- break;
- case GDK_plus:
- parole_player_volume_up (NULL, player);
- ret_val = TRUE;
- break;
- case GDK_space:
- case GDK_p:
- case GDK_P:
- parole_player_play_pause_clicked (NULL, player);
- ret_val = TRUE;
- break;
- case GDK_minus:
- parole_player_volume_down (NULL, player);
- ret_val = TRUE;
- break;
- case GDK_Right:
- /* Media seekable ?*/
- if ( GTK_WIDGET_SENSITIVE (player->priv->range) )
- parole_player_seekf_cb (NULL, player);
- ret_val = TRUE;
- break;
- case GDK_Left:
- if ( GTK_WIDGET_SENSITIVE (player->priv->range) )
- parole_player_seekb_cb (NULL, player);
- ret_val = TRUE;
- break;
- case GDK_s:
- case GDK_S:
- parole_player_stop_clicked (NULL, player);
- ret_val = TRUE;
- break;
- case GDK_Escape:
- parole_player_full_screen (player, FALSE);
- break;
-#ifdef HAVE_XF86_KEYSYM
- case XF86XK_OpenURL:
- parole_player_full_screen (player, FALSE);
- parole_media_list_open_location (player->priv->list);
- break;
-#endif
- case GDK_O:
- case GDK_o:
- if ( ev->state & GDK_CONTROL_MASK )
- {
- parole_player_full_screen (player, FALSE);
- parole_media_list_open (player->priv->list);
- }
- break;
- /*
- * Pass these to the media list and tell it to
- * grab the focus
- */
- case GDK_Up:
- case GDK_Down:
- parole_media_list_grab_focus (player->priv->list);
- break;
- default:
- break;
- }
-
- return ret_val;
-}
-
-gboolean
-parole_player_key_press (GtkWidget *widget, GdkEventKey *ev, ParolePlayer *player)
-{
-/*
- gchar *key;
- key = gdk_keyval_name (ev->keyval);
- g_print ("Key Press 0x%X:%s on widget=%s\n", ev->keyval, key, gtk_widget_get_name (widget));
-*/
-
- switch (ev->keyval)
- {
- case GDK_F11:
- parole_player_full_screen_menu_item_activate (player);
- return TRUE;
-#ifdef HAVE_XF86_KEYSYM
- case XF86XK_AudioPlay:
- parole_player_play_pause_clicked (NULL, player);
- return TRUE;
- case XF86XK_AudioStop:
- parole_player_stop_clicked (NULL, player);
- return TRUE;
- case XF86XK_AudioRaiseVolume:
- parole_player_volume_up (NULL, player);
- return TRUE;
- case XF86XK_AudioLowerVolume:
- parole_player_volume_down (NULL, player);
- return TRUE;
- case XF86XK_AudioMute:
- parole_player_volume_muted (NULL, player);
- return TRUE;
- case XF86XK_AudioPrev:
- if ( !parole_disc_menu_seek_prev (player->priv->disc_menu))
- parole_player_play_prev (player);
- return TRUE;
- case XF86XK_AudioNext:
- if ( !parole_disc_menu_seek_next (player->priv->disc_menu))
- parole_player_play_next (player, FALSE);
- return TRUE;
-#endif /* HAVE_XF86_KEYSYM */
- default:
- break;
- }
-
- return parole_player_handle_key_press (ev, player);
-}
-
-#ifdef HAVE_XF86_KEYSYM
-static void
-parole_player_button_pressed_cb (ParoleButton *button, ParoleButtonKey key, ParolePlayer *player)
-{
- PAROLE_DEBUG_ENUM ("Button Press:", key, ENUM_GTYPE_BUTTON_KEY);
-
- switch (key)
- {
- case PAROLE_KEY_AUDIO_PLAY:
- parole_player_play_pause_clicked (NULL, player);
- break;
- case PAROLE_KEY_AUDIO_STOP:
- parole_player_stop_clicked (NULL, player);
- break;
- case PAROLE_KEY_AUDIO_PREV:
- if ( !parole_disc_menu_seek_prev (player->priv->disc_menu))
- parole_player_play_prev (player);
- break;
- case PAROLE_KEY_AUDIO_NEXT:
- if ( !parole_disc_menu_seek_next (player->priv->disc_menu))
- parole_player_play_next (player, FALSE);
- break;
- default:
- break;
- }
-}
-#endif
-
-static void
-parole_player_session_die_cb (ParolePlayer *player)
-{
- player->priv->exit = TRUE;
- parole_gst_terminate (PAROLE_GST (player->priv->gst));
-}
-
-static void
-parole_gst_set_default_aspect_ratio (ParolePlayer *player, GtkBuilder *builder)
-{
- ParoleAspectRatio ratio;
- const gchar *widget_name;
-
- g_object_get (G_OBJECT (player->priv->conf),
- "aspect-ratio", &ratio,
- NULL);
-
- switch (ratio )
- {
- case PAROLE_ASPECT_RATIO_NONE:
- widget_name = "ratio_none";
- break;
- case PAROLE_ASPECT_RATIO_AUTO:
- widget_name = "ratio_auto";
- break;
- case PAROLE_ASPECT_RATIO_SQUARE:
- widget_name = "ratio_square";
- break;
- case PAROLE_ASPECT_RATIO_16_9:
- widget_name = "ratio_16_9";
- break;
- case PAROLE_ASPECT_RATIO_4_3:
- widget_name = "ratio_4_3";
- break;
- case PAROLE_ASPECT_RATIO_DVB:
- widget_name = "ratio_20_9";
- break;
- default:
- g_warn_if_reached ();
- return;
- }
-
- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (gtk_builder_get_object (builder, widget_name)),
- TRUE);
-}
-
-static void
-parole_player_set_sound_menu_items_image (GtkBuilder *builder)
-{
- GtkWidget *img;
-
- img = gtk_image_new_from_icon_name ("audio-volume-muted", GTK_ICON_SIZE_MENU);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (gtk_builder_get_object (builder, "volume-mute-menu")), img);
-
- img = gtk_image_new_from_icon_name ("audio-volume-high", GTK_ICON_SIZE_MENU);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (gtk_builder_get_object (builder, "volume-up-menu")), img);
-
- img = gtk_image_new_from_icon_name ("audio-volume-low", GTK_ICON_SIZE_MENU);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (gtk_builder_get_object (builder, "volume-down-menu")), img);
-}
-
-gboolean
-parole_player_configure_event_cb (GtkWidget *widget, GdkEventConfigure *ev, ParolePlayer *player)
-{
- gint w,h;
-
- if ( !player->priv->full_screen )
- {
- gtk_window_get_size (GTK_WINDOW (widget), &w, &h);
- g_object_set (G_OBJECT (player->priv->conf),
- "window-width", w,
- "window-height", h,
- NULL);
- }
-
- return FALSE;
-}
-
-static void
-parole_player_drag_data_received_cb (GtkWidget *widget,
- GdkDragContext *drag_context,
- gint x,
- gint y,
- GtkSelectionData *data,
- guint info,
- guint drag_time,
- ParolePlayer *player)
-{
-
- gchar **uri_list;
- guint added = 0;
- guint i;
-
- parole_window_busy_cursor (widget->window);
-
- uri_list = g_uri_list_extract_uris ((const gchar *)data->data);
- for ( i = 0; uri_list[i] != NULL; i++)
- {
- gchar *path;
- path = g_filename_from_uri (uri_list[i], NULL, NULL);
- added += parole_media_list_add_by_path (player->priv->list, path, i == 0 ? TRUE : FALSE);
-
- g_free (path);
- }
-
- g_strfreev (uri_list);
-
- gdk_window_set_cursor (widget->window, NULL);
- gtk_drag_finish (drag_context, added == i ? TRUE : FALSE, FALSE, drag_time);
-}
-
-static void
-parole_player_window_notify_is_active (ParolePlayer *player)
-{
- if ( !player->priv->full_screen )
- return;
-
- if (!gtk_window_is_active (GTK_WINDOW (player->priv->window)) )
- {
- gtk_widget_hide (player->priv->fs_window);
- parole_gst_set_cursor_visible (PAROLE_GST (player->priv->gst), TRUE);
- }
- else
- {
- parole_gst_set_cursor_visible (PAROLE_GST (player->priv->gst), FALSE);
- }
-}
-
-static void
-parole_player_init (ParolePlayer *player)
-{
- GtkBuilder *builder;
- GdkScreen *screen;
- gint w, h;
-
- gboolean repeat, shuffle;
-
- player->priv = PAROLE_PLAYER_GET_PRIVATE (player);
- player->priv->video_filter = parole_get_supported_video_filter ();
- g_object_ref_sink (player->priv->video_filter);
-
- builder = parole_builder_get_main_interface ();
-
- player->priv->conf = parole_conf_new ();
- player->priv->session = parole_session_get ();
-
- g_signal_connect_swapped (player->priv->session, "die",
- G_CALLBACK (parole_player_session_die_cb), player);
-
- player->priv->gst = parole_gst_new (FALSE, player->priv->conf);
-
- player->priv->status = parole_statusbar_new ();
- player->priv->disc = parole_disc_new ();
- g_signal_connect (player->priv->disc, "disc-selected",
- G_CALLBACK (parole_player_disc_selected_cb), player);
-
- player->priv->disc_menu = parole_disc_menu_new ();
-
- player->priv->screen_saver = parole_screen_saver_new ();
- player->priv->list = PAROLE_MEDIA_LIST (parole_media_list_new ());
-
- player->priv->state = PAROLE_MEDIA_STATE_STOPPED;
- player->priv->user_seeking = FALSE;
- player->priv->internal_range_change = FALSE;
- player->priv->exit = FALSE;
- player->priv->full_screen = FALSE;
- player->priv->buffering = FALSE;
- player->priv->row = NULL;
-
- player->priv->recent = gtk_recent_manager_get_default ();
-
- parole_player_set_sound_menu_items_image (builder);
- /*
- * Gst signals
- */
- g_signal_connect (G_OBJECT (player->priv->gst), "media-state",
- G_CALLBACK (parole_player_media_state_cb), player);
-
- g_signal_connect (G_OBJECT (player->priv->gst), "media-progressed",
- G_CALLBACK (parole_player_media_progressed_cb), player);
-
- g_signal_connect (G_OBJECT (player->priv->gst), "media-tag",
- G_CALLBACK (parole_player_media_tag_cb), player);
-
- g_signal_connect (G_OBJECT (player->priv->gst), "error",
- G_CALLBACK (parole_player_error_cb), player);
-
- g_signal_connect (G_OBJECT (player->priv->gst), "buffering",
- G_CALLBACK (parole_player_buffering_cb), player);
-
- g_signal_connect_after (G_OBJECT (player->priv->gst), "button-release-event",
- G_CALLBACK (parole_player_gst_widget_button_release), player);
-
- g_signal_connect (G_OBJECT (player->priv->gst), "motion-notify-event",
- G_CALLBACK (parole_player_gst_widget_motion_notify_event), player);
-
- gtk_drag_dest_set (player->priv->gst, GTK_DEST_DEFAULT_ALL,
- target_entry, G_N_ELEMENTS (target_entry),
- GDK_ACTION_COPY | GDK_ACTION_MOVE);
-
- g_signal_connect (G_OBJECT (player->priv->gst), "drag-data-received",
- G_CALLBACK (parole_player_drag_data_received_cb), player);
-
- player->priv->window = GTK_WIDGET (gtk_builder_get_object (builder, "main-window"));
- player->priv->main_nt = GTK_WIDGET (gtk_builder_get_object (builder, "main-notebook"));
-
- player->priv->play_pause = GTK_WIDGET (gtk_builder_get_object (builder, "play-pause"));
- player->priv->stop = GTK_WIDGET (gtk_builder_get_object (builder, "stop"));
- player->priv->seekf = GTK_WIDGET (gtk_builder_get_object (builder, "forward"));
- player->priv->seekb = GTK_WIDGET (gtk_builder_get_object (builder, "back"));
-
- player->priv->range = GTK_WIDGET (gtk_builder_get_object (builder, "scale"));
-
- player->priv->volume = GTK_WIDGET (gtk_builder_get_object (builder, "volume"));
- player->priv->volume_image = GTK_WIDGET (gtk_builder_get_object (builder, "volume-image"));
-
- player->priv->menu_bar = GTK_WIDGET (gtk_builder_get_object (builder, "menubar"));
- player->priv->play_box = GTK_WIDGET (gtk_builder_get_object (builder, "play-box"));
- player->priv->playlist_nt = GTK_WIDGET (gtk_builder_get_object (builder, "notebook-playlist"));
- player->priv->show_hide_playlist = GTK_WIDGET (gtk_builder_get_object (builder, "show-hide-list"));
- player->priv->control = GTK_WIDGET (gtk_builder_get_object (builder, "control"));
- player->priv->leave_fs = GTK_WIDGET (gtk_builder_get_object (builder, "leave_fs"));
- player->priv->main_box = GTK_WIDGET (gtk_builder_get_object (builder, "main-box"));
-
- gtk_range_set_range (GTK_RANGE (player->priv->volume), 0, 1.0);
-
- gtk_range_set_value (GTK_RANGE (player->priv->volume),
- (gdouble) (parole_rc_read_entry_int ("volume", PAROLE_RC_GROUP_GENERAL, 100)/100.));
-
- /*
- * Pack the playlist.
- */
- gtk_notebook_append_page (GTK_NOTEBOOK (player->priv->playlist_nt),
- GTK_WIDGET (player->priv->list),
- gtk_label_new (_("Playlist")));
-
- g_object_get (G_OBJECT (player->priv->conf),
- "window-width", &w,
- "window-height", &h,
- NULL);
-
- gtk_window_set_default_size (GTK_WINDOW (player->priv->window), w, h);
-
- gtk_widget_show_all (player->priv->window);
-
- gtk_box_pack_start (GTK_BOX (gtk_builder_get_object (builder, "output")),
- player->priv->gst,
- TRUE, TRUE, 0);
-
- gtk_widget_realize (player->priv->gst);
- gtk_widget_show (player->priv->gst);
-
- parole_player_change_volume (player,
- (gdouble) (parole_rc_read_entry_int ("volume", PAROLE_RC_GROUP_GENERAL, 100)/100.));
-
- g_signal_connect (player->priv->list, "media_activated",
- G_CALLBACK (parole_player_media_activated_cb), player);
-
- g_signal_connect (player->priv->list, "media_cursor_changed",
- G_CALLBACK (parole_player_media_cursor_changed_cb), player);
-
- g_signal_connect (player->priv->list, "uri-opened",
- G_CALLBACK (parole_player_uri_opened_cb), player);
-
- /*
- * Load auto saved media list.
- */
- parole_media_list_load (player->priv->list);
-
- g_object_get (G_OBJECT (player->priv->conf),
- "repeat", &repeat,
- "shuffle", &shuffle,
- NULL);
-
- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (gtk_builder_get_object (builder, "repeat")),
- repeat);
-
- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (gtk_builder_get_object (builder, "shuffle")),
- shuffle);
-
- player->priv->fs_window = gtk_window_new (GTK_WINDOW_POPUP);
-
- gtk_window_set_gravity (GTK_WINDOW (player->priv->fs_window), GDK_GRAVITY_SOUTH_WEST);
- gtk_window_set_position (GTK_WINDOW (player->priv->fs_window), GTK_WIN_POS_NONE);
-
- parole_gst_set_default_aspect_ratio (player, builder);
-
- gtk_builder_connect_signals (builder, player);
-
- screen = gtk_widget_get_screen (player->priv->window);
- g_signal_connect (G_OBJECT (screen), "size-changed",
- G_CALLBACK (parole_player_screen_size_change_changed_cb), player);
-
- g_object_unref (builder);
-
-#ifdef HAVE_XF86_KEYSYM
- player->priv->button = parole_button_new ();
- g_signal_connect (player->priv->button, "button-pressed",
- G_CALLBACK (parole_player_button_pressed_cb), player);
-#endif
-
- g_signal_connect_swapped (player->priv->window, "notify::is-active",
- G_CALLBACK (parole_player_window_notify_is_active), player);
-
- parole_player_dbus_init (player);
-}
-
-ParolePlayer *
-parole_player_new (void)
-{
- ParolePlayer *player = NULL;
- player = g_object_new (PAROLE_TYPE_PLAYER, NULL);
- return player;
-}
-
-ParoleMediaList *parole_player_get_media_list (ParolePlayer *player)
-{
- return player->priv->list;
-}
-
-void parole_player_play_uri_disc (ParolePlayer *player, const gchar *uri)
-{
- parole_player_disc_selected_cb (NULL, uri, NULL, player);
-}
-
-void parole_player_terminate (ParolePlayer *player)
-{
- parole_player_delete_event_cb (NULL, NULL, player);
-}
-
-
-static gboolean parole_player_dbus_play (ParolePlayer *player,
- GError *error);
-
-static gboolean parole_player_dbus_stop (ParolePlayer *player,
- GError *error);
-
-static gboolean parole_player_dbus_next_track (ParolePlayer *player,
- GError *error);
-
-static gboolean parole_player_dbus_prev_track (ParolePlayer *player,
- GError *error);
-
-static gboolean parole_player_dbus_seek_forward (ParolePlayer *player,
- GError *error);
-
-static gboolean parole_player_dbus_seek_backward (ParolePlayer *player,
- GError *error);
-
-static gboolean parole_player_dbus_raise_volume (ParolePlayer *player,
- GError *error);
-
-static gboolean parole_player_dbus_lower_volume (ParolePlayer *player,
- GError *error);
-
-static gboolean parole_player_dbus_mute (ParolePlayer *player,
- GError *error);
-
-#include "org.parole.media.player.h"
-
-/*
- * DBus server implementation
- */
-static void
-parole_player_dbus_class_init (ParolePlayerClass *klass)
-{
-
- dbus_g_object_type_install_info (G_TYPE_FROM_CLASS (klass),
- &dbus_glib_parole_player_object_info);
-
-}
-
-static void
-parole_player_dbus_init (ParolePlayer *player)
-{
- dbus_g_connection_register_g_object (parole_g_session_bus_get (),
- PAROLE_DBUS_PATH,
- G_OBJECT (player));
-}
-
-static gboolean parole_player_dbus_play (ParolePlayer *player,
- GError *error)
-{
-
- parole_player_play_pause_clicked (NULL, player);
- return TRUE;
-}
-
-static gboolean parole_player_dbus_stop (ParolePlayer *player,
- GError *error)
-{
- parole_gst_stop (PAROLE_GST (player->priv->gst));
- return TRUE;
-}
-
-static gboolean parole_player_dbus_next_track (ParolePlayer *player,
- GError *error)
-{
- if ( !parole_disc_menu_seek_next (player->priv->disc_menu))
- parole_player_play_next (player, FALSE);
- return TRUE;
-}
-
-static gboolean parole_player_dbus_prev_track (ParolePlayer *player,
- GError *error)
-{
- if ( !parole_disc_menu_seek_prev (player->priv->disc_menu))
- parole_player_play_prev (player);
- return TRUE;
-}
-
-static gboolean parole_player_dbus_seek_forward (ParolePlayer *player,
- GError *error)
-{
- parole_player_seekf_cb (NULL, player);
- return TRUE;
-}
-
-static gboolean parole_player_dbus_seek_backward (ParolePlayer *player,
- GError *error)
-{
- parole_player_seekb_cb (NULL, player);
- return TRUE;
-}
-
-static gboolean parole_player_dbus_raise_volume (ParolePlayer *player,
- GError *error)
-{
- parole_player_volume_up (NULL, player);
- return TRUE;
-}
-
-static gboolean parole_player_dbus_lower_volume (ParolePlayer *player,
- GError *error)
-{
- parole_player_volume_down (NULL, player);
- return TRUE;
-}
-
-static gboolean parole_player_dbus_mute (ParolePlayer *player,
- GError *error)
-{
- gtk_range_set_value (GTK_RANGE (player->priv->volume), 0);
- return TRUE;
-}
diff --git a/parole/parole-player.h b/parole/parole-player.h
deleted file mode 100644
index fbbed42..0000000
--- a/parole/parole-player.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifndef __PAROLE_PLAYER_H
-#define __PAROLE_PLAYER_H
-
-#include <glib-object.h>
-#include "parole-medialist.h"
-
-G_BEGIN_DECLS
-
-#define PAROLE_TYPE_PLAYER (parole_player_get_type () )
-#define PAROLE_PLAYER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), PAROLE_TYPE_PLAYER, ParolePlayer))
-#define PAROLE_IS_PLAYER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), PAROLE_TYPE_PLAYER))
-
-typedef struct ParolePlayerPrivate ParolePlayerPrivate;
-
-typedef struct
-{
- GObject parent;
- ParolePlayerPrivate *priv;
-
-} ParolePlayer;
-
-typedef struct
-{
- GObjectClass parent_class;
-
-} ParolePlayerClass;
-
-GType parole_player_get_type (void) G_GNUC_CONST;
-ParolePlayer *parole_player_new (void);
-
-ParoleMediaList *parole_player_get_media_list (ParolePlayer *player);
-
-void parole_player_play_uri_disc (ParolePlayer *player,
- const gchar *uri);
-
-void parole_player_terminate (ParolePlayer *player);
-
-G_END_DECLS
-
-#endif /* __PAROLE_PLAYER_H */
diff --git a/parole/parole-plugin.c b/parole/parole-plugin.c
deleted file mode 100644
index 8ca83c6..0000000
--- a/parole/parole-plugin.c
+++ /dev/null
@@ -1,662 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "parole-plugin.h"
-#include "parole-plugins-manager.h"
-#include "parole-gst.h"
-#include "gmarshal.h"
-#include "enum-gtypes.h"
-
-static void parole_plugin_finalize (GObject *object);
-
-static void parole_plugin_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec);
-
-static void parole_plugin_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec);
-
-#define PAROLE_PLUGIN_GET_PRIVATE(o) \
-(G_TYPE_INSTANCE_GET_PRIVATE ((o), PAROLE_TYPE_PLUGIN, ParolePluginPrivate))
-
-typedef struct _ParolePluginPrivate ParolePluginPrivate;
-
-struct _ParolePluginPrivate
-{
- ParoleGst *gst;
-
- gchar *title;
- gchar *author;
- gchar *desc;
- gchar *site;
-
- GtkWidget *widget;
- gboolean packed;
-
- gboolean configurable;
-
- /* sig id's*/
- gulong gst_sig1;
- gulong gst_sig2;
- gulong gst_sig3;
- gulong gst_sig4;
-};
-
-enum
-{
- PROP_0,
- PROP_TITLE,
- PROP_DESC,
- PROP_AUTHOR,
- PROP_SITE,
- PROP_CONFIGURABLE
-};
-
-enum
-{
- STATE_CHANGED,
- TAG_MESSAGE,
- PROGRESSED,
- BUFFERING,
- FREE_DATA,
- CONFIGURE,
- LAST_SIGNAL
-};
-
-static guint signals [LAST_SIGNAL] = { 0 };
-
-G_DEFINE_TYPE (ParolePlugin, parole_plugin, G_TYPE_OBJECT)
-
-static void
-parole_plugin_media_state_changed_cb (ParoleGst *gst, const ParoleStream *stream,
- ParoleMediaState state, ParolePlugin *plugin)
-{
- g_signal_emit (G_OBJECT (plugin), signals [STATE_CHANGED], 0, stream, state);
-}
-
-static void
-parole_plugin_media_tag_cb (ParoleGst *gst, const ParoleStream *stream, ParolePlugin *plugin)
-{
- g_signal_emit (G_OBJECT (plugin), signals [TAG_MESSAGE], 0, stream);
-}
-
-static void
-parole_plugin_buffering_changed_cb (ParoleGst *gst, const ParoleStream *stream,
- gint percentage, ParolePlugin *plugin)
-{
- g_signal_emit (G_OBJECT (plugin), signals [BUFFERING], 0, stream, percentage);
-}
-
-static void
-parole_plugin_media_progressed_cb (ParoleGst *gst, const ParoleStream *stream,
- gdouble value, ParolePlugin *plugin)
-{
- g_signal_emit (G_OBJECT (plugin), signals [PROGRESSED], 0, stream, value);
-}
-
-static void
-parole_plugin_class_init (ParolePluginClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
- object_class->finalize = parole_plugin_finalize;
-
- object_class->get_property = parole_plugin_get_property;
- object_class->set_property = parole_plugin_set_property;
-
- /**
- * ParolePlugin::state-changed:
- * @plugin: the object which received the signal.
- * @stream: a #ParoleStream.
- * @state: the new state.
- *
- * Since: 0.2
- **/
- signals[STATE_CHANGED] =
- g_signal_new ("state-changed",
- PAROLE_TYPE_PLUGIN,
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (ParolePluginClass, state_changed),
- NULL, NULL,
- _gmarshal_VOID__OBJECT_ENUM,
- G_TYPE_NONE, 2,
- PAROLE_TYPE_STREAM, ENUM_GTYPE_STATE);
-
- /**
- * ParolePlugin::tag-message:
- * @plugin: the object which received the signal.
- * @stream: a #ParoleStream.
- *
- * Since: 0.2
- **/
- signals[TAG_MESSAGE] =
- g_signal_new ("tag-message",
- PAROLE_TYPE_PLUGIN,
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (ParolePluginClass, tag_message),
- NULL, NULL,
- g_cclosure_marshal_VOID__OBJECT,
- G_TYPE_NONE, 1, PAROLE_TYPE_STREAM);
-
- /**
- * ParolePlugin::progressed:
- * @plugin: the object which received the signal.
- * @stream: a #ParoleStream.
- *
- * Since: 0.2
- **/
- signals[PROGRESSED] =
- g_signal_new ("progressed",
- PAROLE_TYPE_PLUGIN,
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (ParolePluginClass, progressed),
- NULL, NULL,
- _gmarshal_VOID__OBJECT_DOUBLE,
- G_TYPE_NONE, 2,
- G_TYPE_OBJECT, G_TYPE_DOUBLE);
-
- /**
- * ParolePlugin::buffering:
- * @plugin: the object which received the signal.
- * @stream: a #ParoleStream.
- *
- * Since: 0.2
- **/
- signals[BUFFERING] =
- g_signal_new ("buffering",
- PAROLE_TYPE_PLUGIN,
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (ParolePluginClass, buffering),
- NULL, NULL,
- _gmarshal_VOID__OBJECT_INT,
- G_TYPE_NONE, 2,
- G_TYPE_OBJECT, G_TYPE_INT);
-
- /**
- * ParolePlugin::free-data:
- * @plugin: the object which received the signal.
- *
- * Emitted before unloading the plugin from memory, so
- * any dynamiclly allocated memory should be freed in this signal
- * handler.
- *
- * Since: 0.2
- **/
- signals [FREE_DATA] =
- g_signal_new ("free-data",
- PAROLE_TYPE_PLUGIN,
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET(ParolePluginClass, free_data),
- NULL, NULL,
- g_cclosure_marshal_VOID__VOID,
- G_TYPE_NONE, 0, G_TYPE_NONE);
-
- /**
- * ParolePlugin::configure:
- * @plugin: the object which received the signal.
- *
- * Emitted when the user click the configure button in the plugins
- * configuration dialog.
- *
- * Since: 0.2
- **/
- signals [CONFIGURE] =
- g_signal_new ("configure",
- PAROLE_TYPE_PLUGIN,
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET(ParolePluginClass, configure),
- NULL, NULL,
- g_cclosure_marshal_VOID__OBJECT,
- G_TYPE_NONE, 1, GTK_TYPE_WIDGET);
-
- /**
- * ParolePlugin:title:
- *
- * Title to display for this plugin.
- *
- * Since: 0.2
- **/
- g_object_class_install_property (object_class,
- PROP_TITLE,
- g_param_spec_string ("title",
- NULL, NULL,
- NULL,
- G_PARAM_READWRITE|
- G_PARAM_CONSTRUCT_ONLY));
-
- /**
- * ParolePlugin:description:
- *
- * Description of the plugin.
- *
- * Since: 0.2
- **/
- g_object_class_install_property (object_class,
- PROP_DESC,
- g_param_spec_string ("description",
- NULL, NULL,
- NULL,
- G_PARAM_READWRITE|
- G_PARAM_CONSTRUCT_ONLY));
-
- /**
- * ParolePlugin:author:
- *
- * Author of the plugin.
- *
- * Since: 0.2
- **/
- g_object_class_install_property (object_class,
- PROP_AUTHOR,
- g_param_spec_string ("author",
- NULL, NULL,
- NULL,
- G_PARAM_READWRITE|
- G_PARAM_CONSTRUCT_ONLY));
-
- /**
- * ParolePlugin:site:
- *
- * The website of the plugin.
- *
- * Since: 0.2
- **/
- g_object_class_install_property (object_class,
- PROP_SITE,
- g_param_spec_string ("site",
- NULL, NULL,
- NULL,
- G_PARAM_READWRITE|
- G_PARAM_CONSTRUCT_ONLY));
-
- /**
- * ParolePlugin:configurable:
- *
- *
- * Since: 0.2
- **/
- g_object_class_install_property (object_class,
- PROP_CONFIGURABLE,
- g_param_spec_boolean ("configurable",
- NULL, NULL,
- FALSE,
- G_PARAM_READWRITE));
-
- g_type_class_add_private (klass, sizeof (ParolePluginPrivate));
-}
-
-static void
-parole_plugin_init (ParolePlugin *plugin)
-{
- ParolePluginPrivate *priv;
-
- priv = PAROLE_PLUGIN_GET_PRIVATE (plugin);
-
- priv->title = NULL;
- priv->desc = NULL;
- priv->author = NULL;
- priv->site = NULL;
- priv->packed = FALSE;
- priv->widget = NULL;
- priv->configurable = FALSE;
-
- priv->gst = PAROLE_GST (parole_gst_get ());
-
- priv->gst_sig1 = g_signal_connect (G_OBJECT (priv->gst), "media-state",
- G_CALLBACK (parole_plugin_media_state_changed_cb), plugin);
-
- priv->gst_sig2 = g_signal_connect (G_OBJECT (priv->gst), "media-tag",
- G_CALLBACK (parole_plugin_media_tag_cb), plugin);
-
- priv->gst_sig3 = g_signal_connect (G_OBJECT (priv->gst), "buffering",
- G_CALLBACK (parole_plugin_buffering_changed_cb), plugin);
-
- priv->gst_sig4 = g_signal_connect (G_OBJECT (priv->gst), "media-progressed",
- G_CALLBACK (parole_plugin_media_progressed_cb), plugin);
-}
-
-static void parole_plugin_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- ParolePlugin *plugin;
- plugin = PAROLE_PLUGIN (object);
-
- switch (prop_id)
- {
- case PROP_TITLE:
- PAROLE_PLUGIN_GET_PRIVATE (plugin)->title = g_value_dup_string (value);
- break;
- case PROP_DESC:
- PAROLE_PLUGIN_GET_PRIVATE (plugin)->desc = g_value_dup_string (value);
- break;
- case PROP_AUTHOR:
- PAROLE_PLUGIN_GET_PRIVATE (plugin)->author = g_value_dup_string (value);
- break;
- case PROP_SITE:
- PAROLE_PLUGIN_GET_PRIVATE (plugin)->site = g_value_dup_string (value);
- break;
- case PROP_CONFIGURABLE:
- PAROLE_PLUGIN_GET_PRIVATE (plugin)->configurable = g_value_get_boolean (value);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void parole_plugin_get_property (GObject *object,
- guint prop_id,
- GValue *value,
-
- GParamSpec *pspec)
-{
- ParolePlugin *plugin;
- plugin = PAROLE_PLUGIN (object);
-
- switch (prop_id)
- {
- case PROP_TITLE:
- g_value_set_string (value, PAROLE_PLUGIN_GET_PRIVATE (plugin)->title);
- break;
- case PROP_DESC:
- g_value_set_string (value, PAROLE_PLUGIN_GET_PRIVATE (plugin)->desc);
- break;
- case PROP_AUTHOR:
- g_value_set_string (value, PAROLE_PLUGIN_GET_PRIVATE (plugin)->author);
- break;
- case PROP_SITE:
- g_value_set_string (value, PAROLE_PLUGIN_GET_PRIVATE (plugin)->site);
- break;
- case PROP_CONFIGURABLE:
- g_value_set_boolean (value, PAROLE_PLUGIN_GET_PRIVATE (plugin)->configurable);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-parole_plugin_finalize (GObject *object)
-{
- ParolePlugin *plugin;
- ParolePluginPrivate *priv;
-
- plugin = PAROLE_PLUGIN (object);
-
- priv = PAROLE_PLUGIN_GET_PRIVATE (plugin);
-
- if ( G_IS_OBJECT (priv->gst) )
- {
- if (g_signal_handler_is_connected (priv->gst, priv->gst_sig1))
- g_signal_handler_disconnect (priv->gst, priv->gst_sig1);
-
- if ( g_signal_handler_is_connected (priv->gst, priv->gst_sig2))
- g_signal_handler_disconnect (priv->gst, priv->gst_sig2);
-
- if ( g_signal_handler_is_connected (priv->gst, priv->gst_sig3))
- g_signal_handler_disconnect (priv->gst, priv->gst_sig3);
-
- if ( g_signal_handler_is_connected (priv->gst, priv->gst_sig4))
- g_signal_handler_disconnect (priv->gst, priv->gst_sig4);
- }
-
- if ( priv->title )
- g_free (priv->title);
-
- if ( priv->desc )
- g_free (priv->desc);
-
- if ( priv->author )
- g_free (priv->author);
-
- if ( priv->site )
- g_free (priv->site);
-
- if ( priv->packed && GTK_IS_WIDGET (priv->widget))
- gtk_widget_destroy (GTK_WIDGET (priv->widget));
-
- G_OBJECT_CLASS (parole_plugin_parent_class)->finalize (object);
-}
-
-
-/**
- * parole_plugin_new:
- * @title: title.
- *
- *
- *
- * Returns: A new #ParolePlugin object.
- **/
-ParolePlugin *
-parole_plugin_new (const gchar *title, const gchar *desc, const gchar *author, const gchar *website)
-{
- ParolePlugin *plugin = NULL;
-
- plugin = g_object_new (PAROLE_TYPE_PLUGIN,
- "title", title,
- "description", desc,
- "author", author,
- "site", website,
- NULL);
- return plugin;
-}
-
-/**
- * parole_plugin_get_main_window:
- * @plugin: a #ParolePlugin.
- *
- * Get the main window of the media player.
- *
- * Returns: the main window widget.
- **/
-GtkWidget *parole_plugin_get_main_window (ParolePlugin *plugin)
-{
- ParolePluginPrivate *priv;
-
- g_return_val_if_fail (PAROLE_IS_PLUGIN (plugin), NULL);
-
- priv = PAROLE_PLUGIN_GET_PRIVATE (plugin);
-
- return gtk_widget_get_toplevel (GTK_WIDGET (priv->gst));
-}
-
-/**
- * parole_plugin_pack_widget:
- * @plugin: a #ParolePlugin.
- * @widget: a #GtkWidget.
- * @container: a ParolePluginContainer type.
- *
- * This function inserts a tab containing the @widget, the tab can be either
- * on the playlist when PAROLE_PLUGIN_CONTAINER_PLAYLIST is specified or in the
- * main view when PAROLE_PLUGIN_CONTAINER_VIEW is specified.
- *
- *
- * Note: You can call this function only one time.
- **/
-void parole_plugin_pack_widget (ParolePlugin *plugin, GtkWidget *widget, ParolePluginContainer container)
-{
- ParolePluginsManager *manager;
- ParolePluginPrivate *priv;
-
- g_return_if_fail (PAROLE_IS_PLUGIN (plugin));
-
- priv = PAROLE_PLUGIN_GET_PRIVATE (plugin);
-
- g_return_if_fail (priv->packed == FALSE);
-
- manager = parole_plugins_manager_get (TRUE);
-
- parole_plugins_manager_pack (manager, plugin, widget, container);
-
- g_object_unref (manager);
-
- priv->packed = TRUE;
- priv->widget = widget;
-}
-
-/**
- * parole_plugin_get_state:
- * @plugin: a #ParolePlugin.
- *
- *
- *
- * Returns: The current state of the media player.
- **/
-ParoleState parole_plugin_get_state (ParolePlugin *plugin)
-{
- ParolePluginPrivate *priv;
-
- g_return_val_if_fail (PAROLE_IS_PLUGIN (plugin), PAROLE_STATE_STOPPED);
-
- priv = PAROLE_PLUGIN_GET_PRIVATE (plugin);
-
- return parole_gst_get_state (priv->gst);
-}
-
-/**
- * parole_plugin_get_is_configurable:
- * @plugin: a #ParolePlugin.
- *
- *
- *
- * Returns: Whether the plugin is configurable.
- **/
-gboolean parole_plugin_get_is_configurable (ParolePlugin *plugin)
-{
- g_return_val_if_fail (PAROLE_IS_PLUGIN (plugin), FALSE);
-
- return PAROLE_PLUGIN_GET_PRIVATE (plugin)->configurable;
-}
-
-/**
- * parole_plugin_set_is_configurable:
- * @plugin: a #ParolePlugin.
- *
- *
- *
- **/
-void parole_plugin_set_is_configurable (ParolePlugin *plugin, gboolean is_configurable)
-{
- g_return_if_fail (PAROLE_IS_PLUGIN (plugin));
-
- PAROLE_PLUGIN_GET_PRIVATE (plugin)->configurable = is_configurable;
-}
-
-/**
- * parole_plugin_play_uri:
- * @plugin: a #ParolePlugin.
- * @uri: uri of the file to play.
- *
- * Play a uri.
- *
- * Returns: TRUE on success, FALSE otherwise.
- **/
-gboolean parole_plugin_play_uri (ParolePlugin *plugin, const gchar *uri)
-{
- g_return_val_if_fail (PAROLE_IS_PLUGIN (plugin), FALSE);
- g_return_val_if_fail (PAROLE_IS_PLUGIN (uri != NULL), FALSE);
-
- parole_gst_play_uri (PAROLE_PLUGIN_GET_PRIVATE (plugin)->gst, uri, NULL);
-
- return TRUE;
-}
-
-/**
- * parole_plugin_pause_playback:
- * @plugin: a #ParolePlugin.
- *
- * Causes the media player to pause any playback.
- *
- * Returns: TRUE on success, FALSE otherwise.
- **/
-gboolean parole_plugin_pause_playback (ParolePlugin *plugin)
-{
- g_return_val_if_fail (PAROLE_IS_PLUGIN (plugin), FALSE);
-
- parole_gst_pause (PAROLE_PLUGIN_GET_PRIVATE (plugin)->gst);
-
- return TRUE;
-}
-
-/**
- * parole_plugin_pause_playback:
- * @plugin: a #ParolePlugin.
- *
- * Causes the media player to resume playing the currently paused stream.
- *
- * Returns: TRUE on success, FALSE otherwise.
- **/
-gboolean parole_plugin_resume_playback (ParolePlugin *plugin)
-{
- g_return_val_if_fail (PAROLE_IS_PLUGIN (plugin), FALSE);
-
- parole_gst_resume (PAROLE_PLUGIN_GET_PRIVATE (plugin)->gst);
-
- return TRUE;
-}
-
-/**
- * parole_plugin_stop_playback:
- * @plugin: a #ParolePlugin.
- *
- * Causes the media player to stop any playback.
- *
- * Returns: TRUE on success, FALSE otherwise.
- **/
-gboolean parole_plugin_stop_playback (ParolePlugin *plugin)
-{
- g_return_val_if_fail (PAROLE_IS_PLUGIN (plugin), FALSE);
-
- parole_gst_stop (PAROLE_PLUGIN_GET_PRIVATE (plugin)->gst);
-
- return TRUE;
-}
-
-/**
- * parole_plugin_seek:
- * @plugin: a #ParolePlugin.
- * @pos: position.
- *
- * Seek the current playing stream.
- *
- * Returns: False is the stream is not seekable or an error occurs, TRUE otherwise.
- **/
-gboolean parole_plugin_seek (ParolePlugin *plugin, gdouble pos)
-{
- g_return_val_if_fail (PAROLE_IS_PLUGIN (plugin), FALSE);
-
- parole_gst_seek (PAROLE_PLUGIN_GET_PRIVATE (plugin)->gst, pos);
-
- return TRUE;
-}
diff --git a/parole/parole-plugins-manager.c b/parole/parole-plugins-manager.c
deleted file mode 100644
index 3b10375..0000000
--- a/parole/parole-plugins-manager.c
+++ /dev/null
@@ -1,590 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <glib.h>
-
-#include <libxfce4util/libxfce4util.h>
-
-#include "interfaces/plugins_ui.h"
-
-#include "parole-builder.h"
-#include "parole-rc-utils.h"
-#include "parole-plugins-manager.h"
-#include "parole-module.h"
-
-typedef struct
-{
- ParolePluginsManager *manager;
-
- GtkWidget *window;
- GtkWidget *view;
- GtkListStore *store;
- GtkWidget *desc;
- GtkWidget *author;
- GtkWidget *site;
- GtkWidget *configure;
-
-} PrefData;
-
-void parole_plugins_manager_pref_response_cb (GtkDialog *dialog,
- gint reponse_id,
- PrefData *pref);
-
-void parole_plugins_manager_cell_toggled_cb (GtkCellRendererToggle *cell_renderer,
- gchar *path,
- PrefData *pref);
-
-void parole_plugins_manager_tree_cursor_changed_cb (GtkTreeView *view,
- PrefData *pref);
-
-void parole_plugins_manager_show_configure (GtkButton *button,
- PrefData *pref);
-
-void parole_plugins_manager_show_about (GtkButton *button,
- PrefData *pref);
-
-static void parole_plugins_manager_finalize (GObject *object);
-static void parole_plugins_manager_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec);
-
-#define PAROLE_PLUGINS_MANAGER_GET_PRIVATE(o) \
-(G_TYPE_INSTANCE_GET_PRIVATE ((o), PAROLE_TYPE_PLUGINS_MANAGER, ParolePluginsManagerPrivate))
-
-struct ParolePluginsManagerPrivate
-{
- GtkWidget *list_nt;
- GtkWidget *main_nt;
-
- GPtrArray *array;
-
- gboolean load_plugins;
-};
-
-G_DEFINE_TYPE (ParolePluginsManager, parole_plugins_manager, G_TYPE_OBJECT)
-
-enum
-{
- COL_ACTIVE,
- COL_PLUGIN,
- COL_DATA
-};
-
-enum
-{
- PROP_0,
- PROP_LOAD_PLUGIN
-};
-
-void parole_plugins_manager_pref_response_cb (GtkDialog *dialog,
- gint reponse_id,
- PrefData *pref)
-{
- gtk_widget_destroy (GTK_WIDGET (dialog));
- g_free (pref);
-}
-
-static ParoleModule *
-parole_plugins_manager_get_selected_module (PrefData *pref)
-{
- ParoleModule *module;
- GtkTreeSelection *sel;
- GtkTreeModel *model;
- GtkTreeIter iter;
-
- sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (pref->view));
-
- if ( !gtk_tree_selection_get_selected (sel, &model, &iter))
- return NULL;
-
- gtk_tree_model_get (model,
- &iter,
- COL_DATA,
- &module,
- -1);
- return module;
-}
-
-void parole_plugins_manager_show_configure (GtkButton *button, PrefData *pref)
-{
- ParoleModule *module;
-
- module = parole_plugins_manager_get_selected_module (pref);
-
- if ( !module )
- return;
-
- g_signal_emit_by_name (G_OBJECT (module->plugin), "configure", pref->window);
-}
-
-static void
-parole_plugins_manager_save_rc (gchar *filename, gboolean active)
-{
- gchar **saved_plugins;
- gchar **plugins_rc;
- guint num = 0, i;
-
- saved_plugins = parole_rc_read_entry_list ("plugins", PAROLE_RC_GROUP_PLUGINS);
-
- if ( saved_plugins )
- num = g_strv_length (saved_plugins);
-
- if ( active )
- {
- plugins_rc = g_new0 (gchar *, num + 2);
-
- for ( i = 0; i < num; i++)
- {
- plugins_rc[i] = g_strdup (saved_plugins[i]);
- }
-
- plugins_rc[num] = g_strdup (filename);
- plugins_rc[num + 1] = NULL;
- parole_rc_write_entry_list ("plugins", PAROLE_RC_GROUP_PLUGINS, plugins_rc);
- }
- else
- {
- plugins_rc = g_new0 (gchar *, num + 1);
-
- for ( i = 0; i < num; i++)
- {
- if ( g_strcmp0 (saved_plugins[i], filename) )
- plugins_rc[i] = g_strdup (saved_plugins[i]);
- else
- plugins_rc[i] = NULL;
- }
- plugins_rc[num] = NULL;
- parole_rc_write_entry_list ("plugins", PAROLE_RC_GROUP_PLUGINS, plugins_rc);
- }
- g_strfreev (plugins_rc);
- g_strfreev (saved_plugins);
-}
-
-void
-parole_plugins_manager_cell_toggled_cb (GtkCellRendererToggle *cell_renderer,
- gchar *path_str,
- PrefData *pref)
-{
- ParoleModule *module;
- GtkTreeIter iter;
- GtkTreePath *path;
- gboolean active;
-
- path = gtk_tree_path_new_from_string (path_str);
-
- gtk_tree_model_get_iter (GTK_TREE_MODEL (pref->store), &iter, path);
-
- gtk_tree_model_get (GTK_TREE_MODEL (pref->store), &iter,
- COL_ACTIVE, &active,
- COL_DATA, &module,
- -1);
-
- active ^= 1;
-
- if ( pref->manager->priv->load_plugins )
- parole_module_set_active (module, active);
-
- gtk_list_store_set (GTK_LIST_STORE (pref->store), &iter,
- COL_ACTIVE, active,
- -1);
-
- gtk_tree_path_free (path);
-
- parole_plugins_manager_save_rc (G_TYPE_MODULE (module)->name, active);
-}
-
-void parole_plugins_manager_tree_cursor_changed_cb (GtkTreeView *view,
- PrefData *pref)
-{
- ParoleModule *module;
- gboolean configurable = FALSE;
-#if GTK_CHECK_VERSION (2, 18, 0)
- gchar *site_text;
-#endif
-
- module = parole_plugins_manager_get_selected_module (pref);
-
- if ( !module )
- return;
-
- gtk_label_set_markup (GTK_LABEL (pref->desc), module->desc->desc);
- gtk_label_set_markup (GTK_LABEL (pref->author), module->desc->author);
-
-#if GTK_CHECK_VERSION (2, 18, 0)
- site_text = g_strdup_printf ("<a href=\"%s\">%s</a>", module->desc->site, _("Visit Website"));
- gtk_label_set_markup (GTK_LABEL (pref->site), site_text);
- g_free (site_text);
-
-#else
- gtk_link_button_set_uri (GTK_LINK_BUTTON (pref->site), module->desc->site);
-#endif
-
- gtk_widget_set_tooltip_text (pref->site, module->desc->site);
-
- if ( module->enabled )
- {
- g_object_get (G_OBJECT (module->plugin),
- "configurable", &configurable,
- NULL);
- }
-
- gtk_widget_set_sensitive (pref->configure, configurable);
-}
-
-static void
-parole_plugins_manager_unload_all (gpointer data, gpointer user_data)
-{
- ParoleModule *module;
-
- module = PAROLE_MODULE (data);
-
- g_type_module_unuse (G_TYPE_MODULE (data));
- g_object_unref (G_OBJECT (module));
-}
-
-#if !GTK_CHECK_VERSION (2, 18, 0)
-static void
-parole_plugins_manager_open_plugins_website (GtkLinkButton *bt, const gchar *link, gpointer data)
-{
- gchar *cmd;
-
- cmd = g_strdup_printf ("%s %s","xdg-open", link);
-
- if ( !g_spawn_command_line_async (cmd, NULL) )
- {
- g_free (cmd);
- cmd = g_strdup_printf ("%s %s","xfbrowser4", link);
- g_spawn_command_line_async (cmd, NULL);
- }
- g_free (cmd);
-}
-#endif
-
-static void
-parole_plugins_manager_show_plugins_pref (GtkWidget *widget, ParolePluginsManager *manager)
-{
- GtkBuilder *builder;
- GtkWidget *site_box;
- GtkTreeSelection *sel;
- GtkTreePath *path;
- GtkTreeIter iter;
- guint i;
-
- PrefData *pref;
- builder = parole_builder_new_from_string (plugins_ui, plugins_ui_length);
-
- pref = g_new0 (PrefData, 1);
-
- pref->window = GTK_WIDGET (gtk_builder_get_object (builder, "dialog"));
- pref->view = GTK_WIDGET (gtk_builder_get_object (builder, "treeview"));
-
- pref->manager = manager;
- pref->store = GTK_LIST_STORE (gtk_builder_get_object (builder, "liststore"));
-
- pref->desc = GTK_WIDGET (gtk_builder_get_object (builder, "description"));
- pref->author = GTK_WIDGET (gtk_builder_get_object (builder, "author"));
- site_box = GTK_WIDGET (gtk_builder_get_object (builder, "site-box"));
-
-#if GTK_CHECK_VERSION (2, 18, 0)
- pref->site = gtk_label_new (NULL);
-#else
- pref->site = gtk_link_button_new_with_label (" ", _("Visit Website"));
- gtk_link_button_set_uri_hook ((GtkLinkButtonUriFunc) parole_plugins_manager_open_plugins_website,
- NULL, NULL);
-#endif
-
- gtk_box_pack_start (GTK_BOX (site_box), pref->site, FALSE, FALSE, 0);
-
- pref->configure = GTK_WIDGET (gtk_builder_get_object (builder, "configure"));
-
- gtk_window_set_transient_for (GTK_WINDOW (pref->window),
- GTK_WINDOW (gtk_widget_get_toplevel (manager->priv->main_nt)));
-
- for ( i = 0; i < manager->priv->array->len; i++)
- {
- ParoleModule *module;
- module = g_ptr_array_index (manager->priv->array, i);
-
- if ( module->desc )
- {
- gtk_list_store_append (pref->store, &iter);
- gtk_list_store_set (pref->store, &iter,
- COL_ACTIVE, module->enabled,
- COL_PLUGIN, module->desc->title,
- COL_DATA, module,
- -1);
- }
- }
-
- gtk_builder_connect_signals (builder, pref);
- g_object_unref (builder);
-
- sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (pref->view));
-
- path = gtk_tree_path_new_from_string ("0");
-
- gtk_tree_selection_select_path (sel, path);
- gtk_tree_view_set_cursor (GTK_TREE_VIEW (pref->view), path, NULL, FALSE);
- gtk_tree_path_free (path);
-
- gtk_widget_show_all (pref->window);
-}
-
-static void
-parole_plugins_manager_set_show_tabs (GtkNotebook *nt)
-{
- gint npages;
- npages = gtk_notebook_get_n_pages (nt);
- gtk_notebook_set_show_tabs (nt, npages > 1);
-}
-
-static void
-parole_plugins_manager_page_added_cb (GtkContainer *container, GtkWidget *widget, gpointer data)
-{
- parole_plugins_manager_set_show_tabs (GTK_NOTEBOOK (container));
-}
-
-static void
-parole_plugins_manager_page_removed_cb (GtkContainer *container, GtkWidget *widget, gpointer data)
-{
- parole_plugins_manager_set_show_tabs (GTK_NOTEBOOK (container));
-}
-
-static void parole_plugins_manager_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- ParolePluginsManager *manager;
-
- manager = PAROLE_PLUGINS_MANAGER (object);
-
- switch (prop_id)
- {
- case PROP_LOAD_PLUGIN:
- manager->priv->load_plugins = g_value_get_boolean (value);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void parole_plugins_manager_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- ParolePluginsManager *manager;
-
- manager = PAROLE_PLUGINS_MANAGER (object);
-
- switch (prop_id)
- {
- case PROP_LOAD_PLUGIN:
- g_value_set_boolean (value, manager->priv->load_plugins);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-parole_plugins_manager_class_init (ParolePluginsManagerClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
- object_class->finalize = parole_plugins_manager_finalize;
-
- object_class->set_property = parole_plugins_manager_set_property;
- object_class->get_property = parole_plugins_manager_get_property;
-
-
- g_object_class_install_property (object_class,
- PROP_LOAD_PLUGIN,
- g_param_spec_boolean ("load-plugins",
- NULL, NULL,
- TRUE,
- G_PARAM_CONSTRUCT_ONLY|
- G_PARAM_READWRITE));
-
- g_type_class_add_private (klass, sizeof (ParolePluginsManagerPrivate));
-}
-
-static void
-parole_plugins_manager_init (ParolePluginsManager *manager)
-{
- GtkBuilder *builder;
-
- manager->priv = PAROLE_PLUGINS_MANAGER_GET_PRIVATE (manager);
-
- manager->priv->array = g_ptr_array_new ();
-
- builder = parole_builder_get_main_interface ();
-
- manager->priv->load_plugins = TRUE;
-
- manager->priv->list_nt = GTK_WIDGET (gtk_builder_get_object (builder, "notebook-playlist"));
- manager->priv->main_nt = GTK_WIDGET (gtk_builder_get_object (builder, "main-notebook"));
-
- g_signal_connect (manager->priv->list_nt, "page-added",
- G_CALLBACK (parole_plugins_manager_page_added_cb), NULL);
-
- g_signal_connect (manager->priv->list_nt, "page-removed",
- G_CALLBACK (parole_plugins_manager_page_removed_cb), NULL);
-
- g_signal_connect (manager->priv->main_nt, "page-added",
- G_CALLBACK (parole_plugins_manager_page_added_cb), NULL);
-
- g_signal_connect (manager->priv->main_nt, "page-removed",
- G_CALLBACK (parole_plugins_manager_page_removed_cb), NULL);
-
- g_signal_connect (gtk_builder_get_object (builder, "plugins-menu-item"), "activate",
- G_CALLBACK (parole_plugins_manager_show_plugins_pref), manager);
-
- parole_plugins_manager_set_show_tabs (GTK_NOTEBOOK (manager->priv->list_nt));
- parole_plugins_manager_set_show_tabs (GTK_NOTEBOOK (manager->priv->main_nt));
-
- g_object_unref (builder);
-}
-
-static void
-parole_plugins_manager_finalize (GObject *object)
-{
- ParolePluginsManager *manager;
-
- manager = PAROLE_PLUGINS_MANAGER (object);
-
- g_ptr_array_foreach (manager->priv->array,
- (GFunc)parole_plugins_manager_unload_all, NULL);
- g_ptr_array_free (manager->priv->array, TRUE);
-
- G_OBJECT_CLASS (parole_plugins_manager_parent_class)->finalize (object);
-}
-
-ParolePluginsManager *
-parole_plugins_manager_get (gboolean load_plugins)
-{
- static gpointer parole_plugins_manager_object = NULL;
-
- if ( G_LIKELY (parole_plugins_manager_object != NULL) )
- {
- g_object_ref (parole_plugins_manager_object);
- }
- else
- {
- parole_plugins_manager_object = g_object_new (PAROLE_TYPE_PLUGINS_MANAGER,
- "load-plugins", load_plugins,
- NULL);
- g_object_add_weak_pointer (parole_plugins_manager_object, &parole_plugins_manager_object);
- }
-
- return PAROLE_PLUGINS_MANAGER (parole_plugins_manager_object);
-}
-
-void
-parole_plugins_manager_load_plugins (ParolePluginsManager *manager)
-{
- ParoleModule *module;
- GDir *dir;
- const gchar *name;
- gchar *path;
- GError *error = NULL;
- gchar **plugins_rc;
- guint len = 0, i = 0;
-
- plugins_rc = parole_rc_read_entry_list ("plugins", PAROLE_RC_GROUP_PLUGINS);
-
- if ( plugins_rc && plugins_rc[0] )
- len = g_strv_length (plugins_rc);
-
- dir = g_dir_open (PAROLE_PLUGINS_DIR, 0, &error);
-
- if ( error )
- {
- g_critical ("Error opening plugins dir: %s", error->message);
- g_error_free (error);
- return;
- }
-
- while ( (name = g_dir_read_name (dir) ))
- {
- if ( g_str_has_suffix (name, "." G_MODULE_SUFFIX) )
- {
- path = g_build_filename (PAROLE_PLUGINS_DIR, name, NULL);
- TRACE ("loading module with path %s", path);
-
- module = parole_module_new (path);
-
- if ( g_type_module_use (G_TYPE_MODULE (module)) )
- {
- g_ptr_array_add (manager->priv->array, module);
-
- for ( i = 0; i < len; i++)
- {
- if ( !g_strcmp0 (plugins_rc[i], path) && manager->priv->load_plugins )
- {
- parole_module_set_active (module, TRUE);
- break;
- }
- }
- }
- else
- g_object_unref (module);
- g_free (path);
- }
- }
- g_dir_close (dir);
-}
-
-void parole_plugins_manager_pack (ParolePluginsManager *manager, ParolePlugin *plugin,
- GtkWidget *widget, ParolePluginContainer container)
-{
- gchar *title;
-
- g_object_get (G_OBJECT (plugin),
- "title", &title,
- NULL);
-
- if ( container == PAROLE_PLUGIN_CONTAINER_PLAYLIST )
- {
- gtk_notebook_append_page (GTK_NOTEBOOK (manager->priv->list_nt), widget, gtk_label_new (title));
- gtk_widget_show_all (widget);
- }
- else if ( container == PAROLE_PLUGIN_CONTAINER_MAIN_VIEW )
- {
- gtk_notebook_append_page (GTK_NOTEBOOK (manager->priv->main_nt), widget, gtk_label_new (title));
- gtk_widget_show_all (widget);
- }
-
- if ( title )
- g_free (title);
-
-}
diff --git a/parole/parole-plugins-manager.h b/parole/parole-plugins-manager.h
deleted file mode 100644
index 130ba37..0000000
--- a/parole/parole-plugins-manager.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifndef __PAROLE_PLUGINS_MANAGER_H
-#define __PAROLE_PLUGINS_MANAGER_H
-
-#include <glib-object.h>
-#include "parole-plugin.h"
-
-G_BEGIN_DECLS
-
-#define PAROLE_TYPE_PLUGINS_MANAGER (parole_plugins_manager_get_type () )
-#define PAROLE_PLUGINS_MANAGER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), PAROLE_TYPE_PLUGINS_MANAGER, ParolePluginsManager))
-#define PAROLE_IS_PLUGINS_MANAGER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), PAROLE_TYPE_PLUGINS_MANAGER))
-
-typedef struct ParolePluginsManagerPrivate ParolePluginsManagerPrivate;
-
-typedef struct
-{
- GObject parent;
- ParolePluginsManagerPrivate *priv;
-
-} ParolePluginsManager;
-
-typedef struct
-{
- GObjectClass parent_class;
-
-} ParolePluginsManagerClass;
-
-GType parole_plugins_manager_get_type (void) G_GNUC_CONST;
-
-ParolePluginsManager *parole_plugins_manager_get (gboolean load_plugins);
-
-void parole_plugins_manager_load_plugins (ParolePluginsManager *manager);
-
-void parole_plugins_manager_pack (ParolePluginsManager *manager,
- ParolePlugin *plugin,
- GtkWidget *widget,
- ParolePluginContainer container);
-
-G_END_DECLS
-
-#endif /* __PAROLE_PLUGIN_MANAGER_H */
diff --git a/parole/parole-rc-utils.c b/parole/parole-rc-utils.c
deleted file mode 100644
index 6a98057..0000000
--- a/parole/parole-rc-utils.c
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <glib.h>
-
-#include "parole-rc-utils.h"
-
-XfceRc *
-parole_get_resource_file (const gchar *group, gboolean readonly)
-{
- gchar *file;
- XfceRc *rc;
-
- file = xfce_resource_save_location (XFCE_RESOURCE_CONFIG, PAROLE_RESOURCE_FILE, TRUE);
- rc = xfce_rc_simple_open (file, readonly);
-
- if (rc)
- xfce_rc_set_group (rc, group);
-
- g_free (file);
-
- return rc;
-}
-
-void parole_rc_write_entry_bool (const gchar *property, const gchar *group, gboolean value)
-{
- XfceRc *rc = parole_get_resource_file (group, FALSE);
-
- xfce_rc_write_bool_entry (rc, property, value);
- xfce_rc_close (rc);
-}
-
-void parole_rc_write_entry_int (const gchar *property, const gchar *group, gint value)
-{
- XfceRc *rc = parole_get_resource_file (group, FALSE);
-
- xfce_rc_write_int_entry (rc, property, value);
- xfce_rc_close (rc);
-}
-
-void parole_rc_write_entry_string (const gchar *property, const gchar *group, const gchar *value)
-{
- XfceRc *rc = parole_get_resource_file (group, FALSE);
-
- xfce_rc_write_entry (rc, property, value);
- xfce_rc_close (rc);
-}
-
-void parole_rc_write_entry_list (const gchar *property, const gchar *group, gchar **value)
-{
- XfceRc *rc = parole_get_resource_file (group, FALSE);
-
- xfce_rc_write_list_entry (rc, property, value, ";");
- xfce_rc_close (rc);
-}
-
-gboolean parole_rc_read_entry_bool (const gchar *property, const gchar *group, gboolean fallback)
-{
- XfceRc *rc = parole_get_resource_file (group, TRUE);
- gboolean ret_val = fallback;
-
- if ( rc )
- {
- ret_val = xfce_rc_read_bool_entry (rc, property, fallback);
- xfce_rc_close (rc);
- }
-
- return ret_val;
-}
-
-gint parole_rc_read_entry_int (const gchar *property, const gchar *group, gint fallback)
-{
- XfceRc *rc = parole_get_resource_file (group, TRUE);
- gint ret_val = fallback;
-
- if ( rc )
- {
- ret_val = xfce_rc_read_int_entry (rc, property, fallback);
- xfce_rc_close (rc);
- }
-
- return ret_val;
-}
-
-const gchar *parole_rc_read_entry_string (const gchar *property, const gchar *group, const gchar *fallback)
-{
- const gchar *ret_val = fallback;
- XfceRc *rc = parole_get_resource_file (group, TRUE);
-
- if ( rc )
- {
- ret_val = xfce_rc_read_entry (rc, property, fallback);
- xfce_rc_close (rc);
- }
-
- return ret_val;
-}
-
-gchar **parole_rc_read_entry_list (const gchar *property, const gchar *group)
-{
- gchar **ret_val = NULL;
- XfceRc *rc = parole_get_resource_file (group, TRUE);
-
- if ( rc )
- {
- ret_val = xfce_rc_read_list_entry (rc, property, ";");
- xfce_rc_close (rc);
- }
-
- return ret_val;
-}
-
-gchar **parole_get_history_full (const gchar *relpath)
-{
- gchar **lines = NULL;
- gchar *history = NULL;
- gchar *contents = NULL;
- gsize length = 0;
-
- history = xfce_resource_lookup (XFCE_RESOURCE_CACHE, relpath);
-
- if (history && g_file_get_contents (history, &contents, &length, NULL))
- {
- lines = g_strsplit (contents, "\n", -1);
- g_free (contents);
- }
-
- g_free (history);
-
- return lines;
-}
-
-gchar **parole_get_history (void)
-{
- return parole_get_history_full (PAROLE_HISTORY_FILE);
-}
-
-void parole_insert_line_history (const gchar *line)
-{
- parole_insert_line_history_full (PAROLE_HISTORY_FILE, line);
-}
-
-void parole_insert_line_history_full (const gchar *relpath, const gchar *line)
-{
- gchar *history = NULL;
-
- history = xfce_resource_save_location (XFCE_RESOURCE_CACHE, relpath, TRUE);
-
- if ( history )
- {
- FILE *f;
- f = fopen (history, "a");
- fprintf (f, "%s\n", line);
- fclose (f);
- g_free (history);
- }
- else
- g_warning ("Unable to open cache file");
-}
-
-void parole_clear_history_file (void)
-{
- parole_clear_history_file_full (PAROLE_HISTORY_FILE);
-}
-
-void parole_clear_history_file_full (const gchar *relpath)
-{
- gchar *history = NULL;
-
- history = xfce_resource_save_location (XFCE_RESOURCE_CACHE, relpath, FALSE);
-
- if ( history )
- {
- FILE *f;
- f = fopen (history, "w");
- fclose (f);
- g_free (history);
- }
-}
diff --git a/parole/parole-rc-utils.h b/parole/parole-rc-utils.h
deleted file mode 100644
index 5576b07..0000000
--- a/parole/parole-rc-utils.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifndef __RC_UTILS_
-#define __RC_UTILS_
-
-#include <libxfce4util/libxfce4util.h>
-
-#define PAROLE_RESOURCE_FILE "xfce4/parole/parole-media-player.rc"
-#define PAROLE_HISTORY_FILE "xfce4/parole/history"
-
-#define PAROLE_RC_GROUP_GENERAL "General"
-#define PAROLE_RC_GROUP_PLUGINS "Plugins"
-
-XfceRc *parole_get_resource_file (const gchar *group,
- gboolean readonly);
-
-void parole_rc_write_entry_bool (const gchar *property,
- const gchar *group,
- gboolean value);
-
-void parole_rc_write_entry_int (const gchar *property,
- const gchar *group,
- gint value);
-
-void parole_rc_write_entry_string (const gchar *property,
- const gchar *group,
- const gchar *value);
-
-void parole_rc_write_entry_list (const gchar *property,
- const gchar *group,
- gchar **value);
-
-gboolean parole_rc_read_entry_bool (const gchar *property,
- const gchar *group,
- gboolean fallback);
-
-gint parole_rc_read_entry_int (const gchar *property,
- const gchar *group,
- gint fallback);
-
-const gchar *parole_rc_read_entry_string (const gchar *property,
- const gchar *group,
- const gchar *fallback);
-
-gchar **parole_rc_read_entry_list (const gchar *property,
- const gchar *group);
-
-gchar **parole_get_history (void);
-
-gchar **parole_get_history_full (const gchar *relpath);
-
-void parole_insert_line_history (const gchar *line);
-
-void parole_insert_line_history_full (const gchar *relpath,
- const gchar *line);
-
-void parole_clear_history_file (void);
-
-void parole_clear_history_file_full (const gchar *relpath);
-
-#endif /* __RC_UTILS_ */
diff --git a/parole/parole-screensaver.c b/parole/parole-screensaver.c
deleted file mode 100644
index f927238..0000000
--- a/parole/parole-screensaver.c
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <X11/Xlib.h>
-
-#include <gdk/gdkx.h>
-
-#include "parole-screensaver.h"
-
-#define RESET_SCREENSAVER_TIMEOUT 6
-
-#define PAROLE_SCREEN_SAVER_GET_PRIVATE(o) \
-(G_TYPE_INSTANCE_GET_PRIVATE ((o), PAROLE_TYPE_SCREENSAVER, ParoleScreenSaverPrivate))
-
-struct ParoleScreenSaverPrivate
-{
- gulong reset_id;
-};
-
-G_DEFINE_TYPE (ParoleScreenSaver, parole_screen_saver, G_TYPE_OBJECT)
-
-
-static void
-parole_screen_saver_finalize (GObject *object)
-{
- ParoleScreenSaver *saver;
-
- saver = PAROLE_SCREEN_SAVER (object);
-
- G_OBJECT_CLASS (parole_screen_saver_parent_class)->finalize (object);
-}
-
-static void
-parole_screen_saver_class_init (ParoleScreenSaverClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
- object_class->finalize = parole_screen_saver_finalize;
-
- g_type_class_add_private (klass, sizeof (ParoleScreenSaverPrivate));
-}
-
-static void
-parole_screen_saver_init (ParoleScreenSaver *saver)
-{
- saver->priv = PAROLE_SCREEN_SAVER_GET_PRIVATE (saver);
-
- saver->priv->reset_id = 0;
-}
-
-static gboolean
-parole_screen_saver_reset_timeout (gpointer data)
-{
- XResetScreenSaver (GDK_DISPLAY ());
- return TRUE;
-}
-
-ParoleScreenSaver *
-parole_screen_saver_new (void)
-{
- ParoleScreenSaver *saver = NULL;
- saver = g_object_new (PAROLE_TYPE_SCREENSAVER, NULL);
- return saver;
-}
-
-void parole_screen_saver_inhibit (ParoleScreenSaver *saver)
-{
- parole_screen_saver_uninhibit (saver);
-
- saver->priv->reset_id = g_timeout_add_seconds (RESET_SCREENSAVER_TIMEOUT,
- (GSourceFunc) parole_screen_saver_reset_timeout,
- NULL);
-}
-
-void parole_screen_saver_uninhibit (ParoleScreenSaver *saver)
-{
- if ( saver->priv->reset_id != 0 )
- {
- g_source_remove (saver->priv->reset_id);
- saver->priv->reset_id = 0;
- }
-}
diff --git a/parole/parole-screensaver.h b/parole/parole-screensaver.h
deleted file mode 100644
index a6fe889..0000000
--- a/parole/parole-screensaver.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifndef __PAROLE_SCREEN_SAVER_H
-#define __PAROLE_SCREEN_SAVER_H
-
-#include <glib-object.h>
-
-G_BEGIN_DECLS
-
-#define PAROLE_TYPE_SCREENSAVER (parole_screen_saver_get_type () )
-#define PAROLE_SCREEN_SAVER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), PAROLE_TYPE_SCREENSAVER, ParoleScreenSaver))
-#define PAROLE_IS_SCREENSAVER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), PAROLE_TYPE_SCREENSAVER))
-
-typedef struct ParoleScreenSaverPrivate ParoleScreenSaverPrivate;
-
-typedef struct
-{
- GObject parent;
- ParoleScreenSaverPrivate *priv;
-
-} ParoleScreenSaver;
-
-typedef struct
-{
- GObjectClass parent_class;
-
-} ParoleScreenSaverClass;
-
-GType parole_screen_saver_get_type (void) G_GNUC_CONST;
-ParoleScreenSaver *parole_screen_saver_new (void);
-
-void parole_screen_saver_inhibit (ParoleScreenSaver *saver);
-
-void parole_screen_saver_uninhibit (ParoleScreenSaver *saver);
-
-G_END_DECLS
-
-#endif /* __PAROLE_SCREEN_SAVER_H */
diff --git a/parole/parole-session.c b/parole/parole-session.c
deleted file mode 100644
index 3c973ee..0000000
--- a/parole/parole-session.c
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <libxfce4util/libxfce4util.h>
-#include <libxfcegui4/libxfcegui4.h>
-
-#include "parole-session.h"
-
-static void parole_session_finalize (GObject *object);
-
-#define PAROLE_SESSION_GET_PRIVATE(o) \
-(G_TYPE_INSTANCE_GET_PRIVATE ((o), PAROLE_TYPE_SESSION, ParoleSessionPrivate))
-
-struct ParoleSessionPrivate
-{
- SessionClient *client;
- gboolean managed;
-};
-
-enum
-{
- DIE,
- SAVE_STATE,
- LAST_SIGNAL
-};
-
-static guint signals [LAST_SIGNAL] = { 0 };
-
-G_DEFINE_TYPE (ParoleSession, parole_session, G_TYPE_OBJECT)
-
-static void
-parole_session_die (gpointer client_data)
-{
- ParoleSession *session;
-
- session = parole_session_get ();
-
- if ( session->priv->managed )
- g_signal_emit (G_OBJECT (session), signals [DIE], 0);
-}
-
-static void
-parole_session_class_init (ParoleSessionClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
- signals [DIE] =
- g_signal_new ("die",
- PAROLE_TYPE_SESSION,
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET(ParoleSessionClass, die),
- NULL, NULL,
- g_cclosure_marshal_VOID__VOID,
- G_TYPE_NONE, 0, G_TYPE_NONE);
-
-
- signals [SAVE_STATE] =
- g_signal_new ("save-state",
- PAROLE_TYPE_SESSION,
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET(ParoleSessionClass, save_state),
- NULL, NULL,
- g_cclosure_marshal_VOID__VOID,
- G_TYPE_NONE, 0, G_TYPE_NONE);
-
- object_class->finalize = parole_session_finalize;
-
- g_type_class_add_private (klass, sizeof (ParoleSessionPrivate));
-}
-
-static void
-parole_session_init (ParoleSession *session)
-{
- session->priv = PAROLE_SESSION_GET_PRIVATE (session);
-
- session->priv->client = NULL;
-
- session->priv->client = client_session_new_full (NULL,
- SESSION_RESTART_NEVER,
- 40,
- NULL,
- (gchar *) PACKAGE_NAME,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL);
-
- if ( G_UNLIKELY (session->priv->client == NULL ) )
- {
- g_warning ("Failed to connect to session manager");
- return;
- }
-
- session->priv->client->die = parole_session_die;
-}
-
-static void
-parole_session_finalize (GObject *object)
-{
- ParoleSession *session;
-
- session = PAROLE_SESSION (object);
-
- if ( session->priv->client != NULL )
- {
- client_session_free (session->priv->client);
- }
-
- G_OBJECT_CLASS (parole_session_parent_class)->finalize (object);
-}
-
-ParoleSession *
-parole_session_get (void)
-{
- static gpointer parole_session_obj = NULL;
-
- if ( G_LIKELY (parole_session_obj != NULL ) )
- {
- g_object_ref (parole_session_obj);
- }
- else
- {
- parole_session_obj = g_object_new (PAROLE_TYPE_SESSION, NULL);
- g_object_add_weak_pointer (parole_session_obj, &parole_session_obj);
- }
-
- return PAROLE_SESSION (parole_session_obj);
-}
-
-void parole_session_real_init (ParoleSession *session)
-{
- g_return_if_fail (PAROLE_IS_SESSION (session));
- g_return_if_fail (session->priv->managed == FALSE);
-
- session->priv->managed = session_init (session->priv->client);
-}
-
-void parole_session_set_client_id (ParoleSession *session, const gchar *client_id)
-{
- g_return_if_fail (PAROLE_IS_SESSION (session));
- g_return_if_fail (session->priv->managed == FALSE);
-
- if ( G_UNLIKELY (session->priv->client == NULL) )
- return;
-
- client_session_set_client_id (session->priv->client, client_id);
-}
diff --git a/parole/parole-session.h b/parole/parole-session.h
deleted file mode 100644
index b35593c..0000000
--- a/parole/parole-session.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifndef __PAROLE_SESSION_H
-#define __PAROLE_SESSION_H
-
-#include <glib-object.h>
-
-G_BEGIN_DECLS
-
-#define PAROLE_TYPE_SESSION (parole_session_get_type () )
-#define PAROLE_SESSION(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), PAROLE_TYPE_SESSION, ParoleSession))
-#define PAROLE_IS_SESSION(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), PAROLE_TYPE_SESSION))
-
-typedef struct ParoleSessionPrivate ParoleSessionPrivate;
-
-typedef struct
-{
- GObject parent;
- ParoleSessionPrivate *priv;
-
-} ParoleSession;
-
-typedef struct
-{
- GObjectClass parent_class;
-
- void (*die) (ParoleSession *session);
-
- void (*save_state) (ParoleSession *session);
-
-} ParoleSessionClass;
-
-GType parole_session_get_type (void) G_GNUC_CONST;
-
-ParoleSession *parole_session_get (void);
-
-void parole_session_real_init (ParoleSession *session);
-
-void parole_session_set_client_id (ParoleSession *session,
- const gchar *client_id);
-G_END_DECLS
-
-#endif /* __PAROLE_SESSION_H */
diff --git a/parole/parole-statusbar.c b/parole/parole-statusbar.c
deleted file mode 100644
index 9563b09..0000000
--- a/parole/parole-statusbar.c
+++ /dev/null
@@ -1,321 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <gtk/gtk.h>
-
-#include <libxfcegui4/libxfcegui4.h>
-
-#include "parole-builder.h"
-#include "parole-statusbar.h"
-#include "parole-plugin.h"
-
-#define PAROLE_STATUSBAR_GET_PRIVATE(o) \
-(G_TYPE_INSTANCE_GET_PRIVATE ((o), PAROLE_TYPE_STATUSBAR, ParoleStatusbarPrivate))
-
-struct ParoleStatusbarPrivate
-{
- ParolePlugin *plugin;
- GtkWidget *box;
- GtkWidget *progress;
- GtkWidget *label_text;
- GtkWidget *label_duration;
- GtkWidget *sep;
-
- gdouble duration;
- gdouble pos;
-};
-
-G_DEFINE_TYPE (ParoleStatusbar, parole_statusbar, G_TYPE_OBJECT)
-
-static void
-parole_statusbar_set_buffering (ParoleStatusbar *bar, gint percentage)
-{
- gchar *buff;
-
- buff = g_strdup_printf ("%s %d%%", _("Buffering"), percentage);
-
- gtk_progress_bar_set_text (GTK_PROGRESS_BAR (bar->priv->progress), buff);
- gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (bar->priv->progress), (gdouble) percentage/100);
- gtk_widget_hide (bar->priv->label_text);
- gtk_widget_hide (bar->priv->label_duration);
- gtk_widget_show (bar->priv->progress);
- g_free (buff);
-}
-
-static void
-parole_statusbar_set_duration (ParoleStatusbar *bar, ParoleState state, gdouble position)
-{
- gchar *text = NULL;
-
- if ( state == PAROLE_STATE_STOPPED )
- {
- gtk_label_set_text (GTK_LABEL (bar->priv->label_duration), _("Stopped"));
- }
- else if ( state == PAROLE_STATE_PLAYBACK_FINISHED )
- {
- gtk_label_set_text (GTK_LABEL (bar->priv->label_duration), _("Finished"));
- }
- else
- {
- if ( bar->priv->duration != 0)
- {
- text = g_strdup_printf ("%s %4.2f/%4.2f",
- state == PAROLE_STATE_PAUSED ? _("Paused") : _("Playing"), position, bar->priv->duration);
- }
- if ( text )
- {
- gtk_label_set_text (GTK_LABEL (bar->priv->label_duration), text);
- g_free (text);
- }
- else
- gtk_label_set_text (GTK_LABEL (bar->priv->label_duration), state == PAROLE_STATE_PAUSED ? _("Paused") : ("Playing"));
- }
-}
-
-static void parole_statusbar_set_text (ParoleStatusbar *bar, const ParoleStream *stream, ParoleState state)
-{
- gchar *text = NULL;
- gchar *title = NULL;
- gchar *uri = NULL;
- gboolean live;
-
- if ( state >= PAROLE_STATE_PAUSED )
- {
- g_object_get (G_OBJECT (stream),
- "title", &title,
- "live", &live,
- "uri", &uri,
- NULL);
-
- if ( live )
- {
- text = g_strdup_printf ("%s '%s'", _("Live stream:"), uri);
- gtk_label_set_text (GTK_LABEL (bar->priv->label_text), text);
- g_free (text);
- g_free (uri);
- if ( title )
- g_free (title);
- return;
- }
-
- if ( !title )
- {
- gchar *filename;
- if ( G_UNLIKELY (uri == NULL) )
- goto out;
-
- filename = g_filename_from_uri (uri, NULL, NULL);
-
- if ( filename )
- {
- title = g_path_get_basename (filename);
- g_free (filename);
- }
- else
- {
- TRACE ("Unable to set statusbar title");
- goto out;
- }
- }
-
- text = g_strdup_printf ("%s", title);
- gtk_label_set_text (GTK_LABEL (bar->priv->label_text), text);
- g_free (text);
- g_free (uri);
- return;
- }
-
-out:
- gtk_label_set_text (GTK_LABEL (bar->priv->label_text), NULL);
-}
-
-static void
-parole_statusbar_state_changed_cb (ParolePlugin *gst, const ParoleStream *stream,
- ParoleState state, ParoleStatusbar *statusbar)
-{
- if ( state >= PAROLE_STATE_PAUSED )
- {
- g_object_get (G_OBJECT (stream),
- "duration", &statusbar->priv->duration,
- NULL);
- }
- else
- {
- statusbar->priv->duration = 0;
- statusbar->priv->pos = 0;
- }
-
- if ( state < PAROLE_STATE_PAUSED )
- gtk_widget_hide (statusbar->priv->progress);
-
- parole_statusbar_set_text (statusbar, stream, state);
- parole_statusbar_set_duration (statusbar, state, statusbar->priv->pos);
-}
-
-static void
-parole_statusbar_tag_message_cb (ParolePlugin *gst, const ParoleStream *stream, ParoleStatusbar *statusbar)
-{
- ParoleState state;
-
- state = parole_plugin_get_state (statusbar->priv->plugin);
-
- parole_statusbar_set_text (statusbar, stream, state);
-}
-
-static void
-parole_statusbar_progressed_cb (ParolePlugin *gst, const ParoleStream *stream,
- gdouble value, ParoleStatusbar *statusbar)
-{
- ParoleState state;
-
- state = parole_plugin_get_state (statusbar->priv->plugin);
- statusbar->priv->pos = value;
-
- parole_statusbar_set_duration (statusbar, state, value);
-}
-
-static void
-parole_statusbar_buffering_cb (ParolePlugin *gst, const ParoleStream *stream, gint percentage, ParoleStatusbar *statusbar)
-{
- parole_statusbar_set_buffering (statusbar, percentage);
-
- if ( percentage == 100 )
- {
- gtk_widget_show (statusbar->priv->label_text);
- gtk_widget_show (statusbar->priv->label_duration);
- gtk_widget_hide (statusbar->priv->progress);
- }
-}
-
-static void
-parole_statusbar_finalize (GObject *object)
-{
- ParoleStatusbar *statusbar;
-
- statusbar = PAROLE_STATUSBAR (object);
-
- g_object_unref (statusbar->priv->plugin);
-
- G_OBJECT_CLASS (parole_statusbar_parent_class)->finalize (object);
-}
-
-static void
-parole_statusbar_class_init (ParoleStatusbarClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
- object_class->finalize = parole_statusbar_finalize;
-
- g_type_class_add_private (klass, sizeof (ParoleStatusbarPrivate));
-}
-
-static void
-parole_statusbar_init (ParoleStatusbar *statusbar)
-{
- GtkWidget *box;
- GtkWidget *sp;
- GtkBuilder *builder;
-
- statusbar->priv = PAROLE_STATUSBAR_GET_PRIVATE (statusbar);
- statusbar->priv->plugin = parole_plugin_new (NULL, NULL, NULL, NULL);
-
- statusbar->priv->duration = 0;
- statusbar->priv->pos = 0;
-
- builder = parole_builder_get_main_interface ();
-
- box = GTK_WIDGET (gtk_builder_get_object (builder, "statusbox"));
-
- statusbar->priv->sep = GTK_WIDGET (gtk_builder_get_object (builder, "status-sep"));
-
- statusbar->priv->progress = gtk_progress_bar_new ();
- gtk_widget_hide (statusbar->priv->progress);
- statusbar->priv->label_text = gtk_label_new (NULL);
-
- gtk_misc_set_alignment (GTK_MISC (statusbar->priv->label_text), 0.0, 0.5);
-
- g_object_set (G_OBJECT (statusbar->priv->label_text),
- "ellipsize", PANGO_ELLIPSIZE_END,
- NULL);
-
- gtk_widget_set_size_request (statusbar->priv->progress, 180, 20);
-
- statusbar->priv->label_duration = gtk_label_new (NULL);
-
- sp = gtk_vseparator_new ();
- gtk_widget_show (sp);
-
- gtk_box_pack_start (GTK_BOX (box), statusbar->priv->label_duration, FALSE, FALSE, 0);
- gtk_box_pack_start (GTK_BOX (box), sp, FALSE, FALSE, 0);
- gtk_box_pack_start (GTK_BOX (box), statusbar->priv->label_text, TRUE, TRUE, 0);
- gtk_box_pack_start (GTK_BOX (box), statusbar->priv->progress, FALSE, FALSE, 0);
-
- gtk_widget_show (box);
- gtk_widget_show (statusbar->priv->label_text);
- gtk_widget_show (statusbar->priv->label_duration);
- g_object_unref (builder);
- statusbar->priv->box = box;
-
- /*
- * Gst signals
- */
- g_signal_connect (G_OBJECT (statusbar->priv->plugin), "state-changed",
- G_CALLBACK (parole_statusbar_state_changed_cb), statusbar);
-
- g_signal_connect (G_OBJECT (statusbar->priv->plugin), "progressed",
- G_CALLBACK (parole_statusbar_progressed_cb), statusbar);
-
- g_signal_connect (G_OBJECT (statusbar->priv->plugin), "tag-message",
- G_CALLBACK (parole_statusbar_tag_message_cb), statusbar);
-
- g_signal_connect (G_OBJECT (statusbar->priv->plugin), "buffering",
- G_CALLBACK (parole_statusbar_buffering_cb), statusbar);
-
-}
-
-ParoleStatusbar *
-parole_statusbar_new (void)
-{
- ParoleStatusbar *statusbar = NULL;
- statusbar = g_object_new (PAROLE_TYPE_STATUSBAR, NULL);
- return statusbar;
-}
-
-void parole_statusbar_set_visible (ParoleStatusbar *bar, gboolean visible)
-{
- if ( visible )
- {
- gtk_widget_show (bar->priv->sep);
- gtk_widget_show (bar->priv->box);
- }
- else
- {
- gtk_widget_hide (bar->priv->sep);
- gtk_widget_hide (bar->priv->box);
- }
-}
diff --git a/parole/parole-statusbar.h b/parole/parole-statusbar.h
deleted file mode 100644
index 9efb18b..0000000
--- a/parole/parole-statusbar.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifndef __PAROLE_STATUSBAR_H
-#define __PAROLE_STATUSBAR_H
-
-#include <glib-object.h>
-
-G_BEGIN_DECLS
-
-#define PAROLE_TYPE_STATUSBAR (parole_statusbar_get_type () )
-#define PAROLE_STATUSBAR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), PAROLE_TYPE_STATUSBAR, ParoleStatusbar))
-#define PAROLE_IS_STATUSBAR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), PAROLE_TYPE_STATUSBAR))
-
-typedef struct ParoleStatusbarPrivate ParoleStatusbarPrivate;
-
-typedef struct
-{
- GObject parent;
- ParoleStatusbarPrivate *priv;
-
-} ParoleStatusbar;
-
-typedef struct
-{
- GObjectClass parent_class;
-
-} ParoleStatusbarClass;
-
-GType parole_statusbar_get_type (void) G_GNUC_CONST;
-
-ParoleStatusbar *parole_statusbar_new (void);
-
-void parole_statusbar_set_visible (ParoleStatusbar *bar,
- gboolean visible);
-
-G_END_DECLS
-
-#endif /* __PAROLE_STATUSBAR_H */
diff --git a/parole/parole-subtitle-encoding.c b/parole/parole-subtitle-encoding.c
deleted file mode 100644
index 5a74896..0000000
--- a/parole/parole-subtitle-encoding.c
+++ /dev/null
@@ -1,544 +0,0 @@
-/*
- * Copyright (C) 2001-2006 Bastien Nocera <hadess at hadess.net>
- *
- * encoding list copied from gnome-terminal/encoding.c
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * The Totem project hereby grant permission for non-gpl compatible GStreamer
- * plugins to be used and distributed together with GStreamer and Totem. This
- * permission are above and beyond the permissions granted by the GPL license
- * Totem is covered by.
- *
- * Monday 7th February 2005: Christian Schaller: Add exception clause.
- * See license_change file for details.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <glib.h>
-#include <libxfce4util/libxfce4util.h>
-
-#include "parole-subtitle-encoding.h"
-
-typedef enum
-{
- SUBTITLE_ENCODING_CURRENT_LOCALE,
-
- SUBTITLE_ENCODING_ISO_8859_6,
- SUBTITLE_ENCODING_IBM_864,
- SUBTITLE_ENCODING_MAC_ARABIC,
- SUBTITLE_ENCODING_WINDOWS_1256,
-
- SUBTITLE_ENCODING_ARMSCII_8,
-
- SUBTITLE_ENCODING_ISO_8859_4,
- SUBTITLE_ENCODING_ISO_8859_13,
- SUBTITLE_ENCODING_WINDOWS_1257,
-
- SUBTITLE_ENCODING_ISO_8859_14,
-
- SUBTITLE_ENCODING_ISO_8859_2,
- SUBTITLE_ENCODING_IBM_852,
- SUBTITLE_ENCODING_MAC_CE,
- SUBTITLE_ENCODING_WINDOWS_1250,
-
- SUBTITLE_ENCODING_GB18030,
- SUBTITLE_ENCODING_GB2312,
- SUBTITLE_ENCODING_GBK,
- SUBTITLE_ENCODING_HZ,
-
- SUBTITLE_ENCODING_BIG5,
- SUBTITLE_ENCODING_BIG5_HKSCS,
- SUBTITLE_ENCODING_EUC_TW,
-
- SUBTITLE_ENCODING_MAC_CROATIAN,
-
- SUBTITLE_ENCODING_ISO_8859_5,
- SUBTITLE_ENCODING_IBM_855,
- SUBTITLE_ENCODING_ISO_IR_111,
- SUBTITLE_ENCODING_KOI8_R,
- SUBTITLE_ENCODING_MAC_CYRILLIC,
- SUBTITLE_ENCODING_WINDOWS_1251,
-
- SUBTITLE_ENCODING_CP_866,
-
- SUBTITLE_ENCODING_MAC_UKRAINIAN,
- SUBTITLE_ENCODING_KOI8_U,
-
- SUBTITLE_ENCODING_GEOSTD8,
-
- SUBTITLE_ENCODING_ISO_8859_7,
- SUBTITLE_ENCODING_MAC_GREEK,
- SUBTITLE_ENCODING_WINDOWS_1253,
-
- SUBTITLE_ENCODING_MAC_GUJARATI,
-
- SUBTITLE_ENCODING_MAC_GURMUKHI,
-
- SUBTITLE_ENCODING_ISO_8859_8_I,
- SUBTITLE_ENCODING_IBM_862,
- SUBTITLE_ENCODING_MAC_HEBREW,
- SUBTITLE_ENCODING_WINDOWS_1255,
-
- SUBTITLE_ENCODING_ISO_8859_8,
-
- SUBTITLE_ENCODING_MAC_DEVANAGARI,
-
- SUBTITLE_ENCODING_MAC_ICELANDIC,
-
- SUBTITLE_ENCODING_EUC_JP,
- SUBTITLE_ENCODING_ISO_2022_JP,
- SUBTITLE_ENCODING_SHIFT_JIS,
-
- SUBTITLE_ENCODING_EUC_KR,
- SUBTITLE_ENCODING_ISO_2022_KR,
- SUBTITLE_ENCODING_JOHAB,
- SUBTITLE_ENCODING_UHC,
-
- SUBTITLE_ENCODING_ISO_8859_10,
-
- SUBTITLE_ENCODING_MAC_FARSI,
-
- SUBTITLE_ENCODING_ISO_8859_16,
- SUBTITLE_ENCODING_MAC_ROMANIAN,
-
- SUBTITLE_ENCODING_ISO_8859_3,
-
- SUBTITLE_ENCODING_TIS_620,
-
- SUBTITLE_ENCODING_ISO_8859_9,
- SUBTITLE_ENCODING_IBM_857,
- SUBTITLE_ENCODING_MAC_TURKISH,
- SUBTITLE_ENCODING_WINDOWS_1254,
-
- SUBTITLE_ENCODING_UTF_7,
- SUBTITLE_ENCODING_UTF_8,
- SUBTITLE_ENCODING_UTF_16,
- SUBTITLE_ENCODING_UCS_2,
- SUBTITLE_ENCODING_UCS_4,
-
- SUBTITLE_ENCODING_ISO_8859_1,
- SUBTITLE_ENCODING_ISO_8859_15,
- SUBTITLE_ENCODING_IBM_850,
- SUBTITLE_ENCODING_MAC_ROMAN,
- SUBTITLE_ENCODING_WINDOWS_1252,
-
- SUBTITLE_ENCODING_TCVN,
- SUBTITLE_ENCODING_VISCII,
- SUBTITLE_ENCODING_WINDOWS_1258,
-
- SUBTITLE_ENCODING_LAST
-} SubtitleEncodingIndex;
-
-
-typedef struct
-{
- int index;
- const char *charset;
- char *name;
-} SubtitleEncoding;
-
-
-static SubtitleEncoding encodings[] = {
-
- {SUBTITLE_ENCODING_CURRENT_LOCALE,
- NULL, N_("Current Locale")},
-
- {SUBTITLE_ENCODING_ISO_8859_6,
- "ISO-8859-6", N_("Arabic")},
- {SUBTITLE_ENCODING_IBM_864,
- "IBM864", N_("Arabic")},
- {SUBTITLE_ENCODING_MAC_ARABIC,
- "MAC_ARABIC", N_("Arabic")},
- {SUBTITLE_ENCODING_WINDOWS_1256,
- "WINDOWS-1256", N_("Arabic")},
-
- {SUBTITLE_ENCODING_ARMSCII_8,
- "ARMSCII-8", N_("Armenian")},
-
- {SUBTITLE_ENCODING_ISO_8859_4,
- "ISO-8859-4", N_("Baltic")},
- {SUBTITLE_ENCODING_ISO_8859_13,
- "ISO-8859-13", N_("Baltic")},
- {SUBTITLE_ENCODING_WINDOWS_1257,
- "WINDOWS-1257", N_("Baltic")},
-
- {SUBTITLE_ENCODING_ISO_8859_14,
- "ISO-8859-14", N_("Celtic")},
-
- {SUBTITLE_ENCODING_ISO_8859_2,
- "ISO-8859-2", N_("Central European")},
- {SUBTITLE_ENCODING_IBM_852,
- "IBM852", N_("Central European")},
- {SUBTITLE_ENCODING_MAC_CE,
- "MAC_CE", N_("Central European")},
- {SUBTITLE_ENCODING_WINDOWS_1250,
- "WINDOWS-1250", N_("Central European")},
-
- {SUBTITLE_ENCODING_GB18030,
- "GB18030", N_("Chinese Simplified")},
- {SUBTITLE_ENCODING_GB2312,
- "GB2312", N_("Chinese Simplified")},
- {SUBTITLE_ENCODING_GBK,
- "GBK", N_("Chinese Simplified")},
- {SUBTITLE_ENCODING_HZ,
- "HZ", N_("Chinese Simplified")},
-
- {SUBTITLE_ENCODING_BIG5,
- "BIG5", N_("Chinese Traditional")},
- {SUBTITLE_ENCODING_BIG5_HKSCS,
- "BIG5-HKSCS", N_("Chinese Traditional")},
- {SUBTITLE_ENCODING_EUC_TW,
- "EUC-TW", N_("Chinese Traditional")},
-
- {SUBTITLE_ENCODING_MAC_CROATIAN,
- "MAC_CROATIAN", N_("Croatian")},
-
- {SUBTITLE_ENCODING_ISO_8859_5,
- "ISO-8859-5", N_("Cyrillic")},
- {SUBTITLE_ENCODING_IBM_855,
- "IBM855", N_("Cyrillic")},
- {SUBTITLE_ENCODING_ISO_IR_111,
- "ISO-IR-111", N_("Cyrillic")},
- {SUBTITLE_ENCODING_KOI8_R,
- "KOI8-R", N_("Cyrillic")},
- {SUBTITLE_ENCODING_MAC_CYRILLIC,
- "MAC-CYRILLIC", N_("Cyrillic")},
- {SUBTITLE_ENCODING_WINDOWS_1251,
- "WINDOWS-1251", N_("Cyrillic")},
-
- {SUBTITLE_ENCODING_CP_866,
- "CP866", N_("Cyrillic/Russian")},
-
- {SUBTITLE_ENCODING_MAC_UKRAINIAN,
- "MAC_UKRAINIAN", N_("Cyrillic/Ukrainian")},
- {SUBTITLE_ENCODING_KOI8_U,
- "KOI8-U", N_("Cyrillic/Ukrainian")},
-
- {SUBTITLE_ENCODING_GEOSTD8,
- "GEORGIAN-PS", N_("Georgian")},
-
- {SUBTITLE_ENCODING_ISO_8859_7,
- "ISO-8859-7", N_("Greek")},
- {SUBTITLE_ENCODING_MAC_GREEK,
- "MAC_GREEK", N_("Greek")},
- {SUBTITLE_ENCODING_WINDOWS_1253,
- "WINDOWS-1253", N_("Greek")},
-
- {SUBTITLE_ENCODING_MAC_GUJARATI,
- "MAC_GUJARATI", N_("Gujarati")},
-
- {SUBTITLE_ENCODING_MAC_GURMUKHI,
- "MAC_GURMUKHI", N_("Gurmukhi")},
-
- {SUBTITLE_ENCODING_ISO_8859_8_I,
- "ISO-8859-8-I", N_("Hebrew")},
- {SUBTITLE_ENCODING_IBM_862,
- "IBM862", N_("Hebrew")},
- {SUBTITLE_ENCODING_MAC_HEBREW,
- "MAC_HEBREW", N_("Hebrew")},
- {SUBTITLE_ENCODING_WINDOWS_1255,
- "WINDOWS-1255", N_("Hebrew")},
-
- {SUBTITLE_ENCODING_ISO_8859_8,
- "ISO-8859-8", N_("Hebrew Visual")},
-
- {SUBTITLE_ENCODING_MAC_DEVANAGARI,
- "MAC_DEVANAGARI", N_("Hindi")},
-
- {SUBTITLE_ENCODING_MAC_ICELANDIC,
- "MAC_ICELANDIC", N_("Icelandic")},
-
- {SUBTITLE_ENCODING_EUC_JP,
- "EUC-JP", N_("Japanese")},
- {SUBTITLE_ENCODING_ISO_2022_JP,
- "ISO2022JP", N_("Japanese")},
- {SUBTITLE_ENCODING_SHIFT_JIS,
- "SHIFT-JIS", N_("Japanese")},
-
- {SUBTITLE_ENCODING_EUC_KR,
- "EUC-KR", N_("Korean")},
- {SUBTITLE_ENCODING_ISO_2022_KR,
- "ISO2022KR", N_("Korean")},
- {SUBTITLE_ENCODING_JOHAB,
- "JOHAB", N_("Korean")},
- {SUBTITLE_ENCODING_UHC,
- "UHC", N_("Korean")},
-
- {SUBTITLE_ENCODING_ISO_8859_10,
- "ISO-8859-10", N_("Nordic")},
-
- {SUBTITLE_ENCODING_MAC_FARSI,
- "MAC_FARSI", N_("Persian")},
-
- {SUBTITLE_ENCODING_ISO_8859_16,
- "ISO-8859-16", N_("Romanian")},
- {SUBTITLE_ENCODING_MAC_ROMANIAN,
- "MAC_ROMANIAN", N_("Romanian")},
-
- {SUBTITLE_ENCODING_ISO_8859_3,
- "ISO-8859-3", N_("South European")},
-
- {SUBTITLE_ENCODING_TIS_620,
- "TIS-620", N_("Thai")},
-
- {SUBTITLE_ENCODING_ISO_8859_9,
- "ISO-8859-9", N_("Turkish")},
- {SUBTITLE_ENCODING_IBM_857,
- "IBM857", N_("Turkish")},
- {SUBTITLE_ENCODING_MAC_TURKISH,
- "MAC_TURKISH", N_("Turkish")},
- {SUBTITLE_ENCODING_WINDOWS_1254,
- "WINDOWS-1254", N_("Turkish")},
-
- {SUBTITLE_ENCODING_UTF_7,
- "UTF-7", N_("Unicode")},
- {SUBTITLE_ENCODING_UTF_8,
- "UTF-8", N_("Unicode")},
- {SUBTITLE_ENCODING_UTF_16,
- "UTF-16", N_("Unicode")},
- {SUBTITLE_ENCODING_UCS_2,
- "UCS-2", N_("Unicode")},
- {SUBTITLE_ENCODING_UCS_4,
- "UCS-4", N_("Unicode")},
-
- {SUBTITLE_ENCODING_ISO_8859_1,
- "ISO-8859-1", N_("Western")},
- {SUBTITLE_ENCODING_ISO_8859_15,
- "ISO-8859-15", N_("Western")},
- {SUBTITLE_ENCODING_IBM_850,
- "IBM850", N_("Western")},
- {SUBTITLE_ENCODING_MAC_ROMAN,
- "MAC_ROMAN", N_("Western")},
- {SUBTITLE_ENCODING_WINDOWS_1252,
- "WINDOWS-1252", N_("Western")},
-
- {SUBTITLE_ENCODING_TCVN,
- "TCVN", N_("Vietnamese")},
- {SUBTITLE_ENCODING_VISCII,
- "VISCII", N_("Vietnamese")},
- {SUBTITLE_ENCODING_WINDOWS_1258,
- "WINDOWS-1258", N_("Vietnamese")}
-};
-
-static const SubtitleEncoding *
-find_encoding_by_charset (const char *charset)
-{
- int i;
-
- i = 1; /* skip current locale */
- while (i < SUBTITLE_ENCODING_LAST) {
- if (strcasecmp (charset, encodings[i].charset) == 0)
- return &encodings[i];
-
- ++i;
- }
-
- if (strcasecmp (charset,
- encodings[SUBTITLE_ENCODING_CURRENT_LOCALE].charset) == 0)
- return &encodings[SUBTITLE_ENCODING_CURRENT_LOCALE];
-
- return NULL;
-}
-
-static void
-subtitle_encoding_init (void)
-{
- guint i;
-
- g_get_charset ((const char **)
- &encodings[SUBTITLE_ENCODING_CURRENT_LOCALE].charset);
-
- g_assert (G_N_ELEMENTS (encodings) == SUBTITLE_ENCODING_LAST);
-
- for (i = 0; i < SUBTITLE_ENCODING_LAST; i++) {
- /* Translate the names */
- encodings[i].name = _(encodings[i].name);
- }
-}
-
-static int
-subtitle_encoding_get_index (const char *charset)
-{
- const SubtitleEncoding *e;
-
- e = find_encoding_by_charset (charset);
- if (e != NULL)
- return e->index;
- else
- return SUBTITLE_ENCODING_CURRENT_LOCALE;
-}
-
-static const char *
-subtitle_encoding_get_charset (int index_i)
-{
- const SubtitleEncoding *e;
-
- if (index_i >= SUBTITLE_ENCODING_LAST)
- e = &encodings[SUBTITLE_ENCODING_CURRENT_LOCALE];
- else if (index_i < SUBTITLE_ENCODING_CURRENT_LOCALE)
- e = &encodings[SUBTITLE_ENCODING_CURRENT_LOCALE];
- else
- e = &encodings[index_i];
- return e->charset;
-}
-
-enum
-{
- INDEX_COL,
- NAME_COL
-};
-
-static gint
-compare (GtkTreeModel * model, GtkTreeIter * a, GtkTreeIter * b, gpointer data)
-{
- gchar *str_a, *str_b;
- gint result;
-
- gtk_tree_model_get (model, a, NAME_COL, &str_a, -1);
- gtk_tree_model_get (model, b, NAME_COL, &str_b, -1);
-
- result = strcmp (str_a, str_b);
-
- g_free (str_a);
- g_free (str_b);
-
- return result;
-}
-
-static void
-is_encoding_sensitive (GtkCellLayout * cell_layout,
- GtkCellRenderer * cell,
- GtkTreeModel * tree_model, GtkTreeIter * iter, gpointer data)
-{
-
- gboolean sensitive;
-
- sensitive = !gtk_tree_model_iter_has_child (tree_model, iter);
- g_object_set (cell, "sensitive", sensitive, NULL);
-}
-
-static GtkTreeModel *
-subtitle_encoding_create_store (void)
-{
- gchar *label;
- gchar *lastlang = "";
- GtkTreeIter iter, iter2;
- GtkTreeStore *store;
- int i;
-
- store = gtk_tree_store_new (2, G_TYPE_INT, G_TYPE_STRING);
-
- for (i = 0; i < SUBTITLE_ENCODING_LAST; i++) {
- if (strcmp (lastlang, encodings[i].name)) {
- lastlang = encodings[i].name;
- gtk_tree_store_append (store, &iter, NULL);
- gtk_tree_store_set (store, &iter, INDEX_COL,
- -1, NAME_COL, lastlang, -1);
- }
- label = g_strdup_printf("%s (%s)", lastlang, encodings[i].charset);
- gtk_tree_store_append (store, &iter2, &iter);
- gtk_tree_store_set (store, &iter2, INDEX_COL,
- encodings[i].index, NAME_COL, label, -1);
- g_free(label);
- }
- gtk_tree_sortable_set_default_sort_func (GTK_TREE_SORTABLE (store),
- compare, NULL, NULL);
- gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (store),
- NAME_COL, GTK_SORT_ASCENDING);
- return GTK_TREE_MODEL (store);
-}
-
-static void
-subtitle_encoding_combo_render (GtkComboBox * combo)
-{
- GtkCellRenderer *renderer;
-
- renderer = gtk_cell_renderer_text_new ();
- gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo), renderer, TRUE);
- gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo), renderer,
- "text", NAME_COL, NULL);
- gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combo),
- renderer, is_encoding_sensitive, NULL, NULL);
-}
-
-const char *
-parole_subtitle_encoding_get_selected (GtkComboBox * combo)
-{
- GtkTreeModel *model;
- GtkTreeIter iter;
- gint index_i = -1;
-
- model = gtk_combo_box_get_model (combo);
- if (gtk_combo_box_get_active_iter (combo, &iter)) {
- gtk_tree_model_get (model, &iter, INDEX_COL, &index_i, -1);
- }
- if (index_i == -1)
- return NULL;
-
- return subtitle_encoding_get_charset (index_i);
-}
-
-void
-parole_subtitle_encoding_set (GtkComboBox * combo, const char *encoding)
-{
- GtkTreeModel *model;
- GtkTreeIter iter, iter2;
- gint index_i, i;
-
- g_return_if_fail (encoding != NULL);
-
- model = gtk_combo_box_get_model (combo);
- index_i = subtitle_encoding_get_index (encoding);
- gtk_tree_model_get_iter_first (model, &iter);
-
- do {
- if (!gtk_tree_model_iter_has_child (model, &iter))
- continue;
- if (!gtk_tree_model_iter_children (model, &iter2, &iter))
- continue;
- do {
- gtk_tree_model_get (model, &iter2, INDEX_COL, &i, -1);
- if (i == index_i)
- break;
- } while (gtk_tree_model_iter_next (model, &iter2));
- if (i == index_i)
- break;
- } while (gtk_tree_model_iter_next (model, &iter));
- gtk_combo_box_set_active_iter (combo, &iter2);
-}
-
-void
-parole_subtitle_encoding_init (GtkComboBox *combo)
-{
- GtkTreeModel *model;
- subtitle_encoding_init ();
- model = subtitle_encoding_create_store ();
- gtk_combo_box_set_model (combo, model);
- g_object_unref (model);
- subtitle_encoding_combo_render (combo);
-}
-
-/*
- * vim: sw=2 ts=8 cindent noai bs=2
- */
diff --git a/parole/parole-subtitle-encoding.h b/parole/parole-subtitle-encoding.h
deleted file mode 100644
index 8a4315d..0000000
--- a/parole/parole-subtitle-encoding.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2001-2006 Bastien Nocera <hadess at hadess.net>
- *
- * encoding list copied from gnome-terminal/encoding.c
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * The Totem project hereby grant permission for non-gpl compatible GStreamer
- * plugins to be used and distributed together with GStreamer and Totem. This
- * permission are above and beyond the permissions granted by the GPL license
- * Totem is covered by.
- *
- * Monday 7th February 2005: Christian Schaller: Add exception clause.
- * See license_change file for details.
- *
- */
-
-#ifndef PAROLE_SUBTITLE_ENCODING_H
-#define PAROLE_SUBTITLE_ENCODING_H
-
-#include <gtk/gtk.h>
-
-void parole_subtitle_encoding_init (GtkComboBox *combo);
-
-void parole_subtitle_encoding_set (GtkComboBox *combo, const char *encoding);
-
-const char *parole_subtitle_encoding_get_selected (GtkComboBox *combo);
-
-#endif /* PAROLE_SUBTITLE_ENCODING_H */
diff --git a/parole/parole-utils.c b/parole/parole-utils.c
deleted file mode 100644
index e429d65..0000000
--- a/parole/parole-utils.c
+++ /dev/null
@@ -1,337 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <gst/gst.h>
-#include <glib.h>
-
-#include <libxfce4util/libxfce4util.h>
-
-#include "parole-utils.h"
-
-/* List from xine-lib's demux_sputext.c */
-static const char subtitle_ext[][4] = {
- "asc",
- "txt",
- "sub",
- "srt",
- "smi",
- "ssa",
- "ass"
-};
-
-/*
- * compare_by_name_using_number
- *
- * * Copyright (c) 2005-2007 Benedikt Meurer <benny at xfce.org>
- *
- */
-static gint
-compare_by_name_using_number (const gchar *ap,
- const gchar *bp)
-{
- guint anum;
- guint bnum;
-
- /* determine the numbers in ap and bp */
- anum = strtoul (ap, NULL, 10);
- bnum = strtoul (bp, NULL, 10);
-
- /* compare the numbers */
- if (anum < bnum)
- return -1;
- else if (anum > bnum)
- return 1;
-
- /* the numbers are equal, and so the higher first digit should
- * be sorted first, i.e. 'file10' before 'file010', since we
- * also sort 'file10' before 'file011'.
- */
- return (*bp - *ap);
-}
-
-/*
- * thunar_file_compare_by_name
- *
- * * Copyright (c) 2005-2007 Benedikt Meurer <benny at xfce.org>
- *
- */
-gint
-thunar_file_compare_by_name (ParoleFile *file_a,
- ParoleFile *file_b,
- gboolean case_sensitive)
-{
- const gchar *ap;
- const gchar *bp;
- guint ac;
- guint bc;
-
-
- /* we compare only the display names (UTF-8!) */
- ap = parole_file_get_display_name (file_a);
- bp = parole_file_get_display_name (file_b);
-
- /* check if we should ignore case */
- if (G_LIKELY (case_sensitive))
- {
- /* try simple (fast) ASCII comparison first */
- for (;; ++ap, ++bp)
- {
- /* check if the characters differ or we have a non-ASCII char */
- ac = *((const guchar *) ap);
- bc = *((const guchar *) bp);
- if (ac != bc || ac == 0 || ac > 127)
- break;
- }
-
- /* fallback to Unicode comparison */
- if (G_UNLIKELY (ac > 127 || bc > 127))
- {
- for (;; ap = g_utf8_next_char (ap), bp = g_utf8_next_char (bp))
- {
- /* check if characters differ or end of string */
- ac = g_utf8_get_char (ap);
- bc = g_utf8_get_char (bp);
- if (ac != bc || ac == 0)
- break;
- }
- }
- }
- else
- {
- /* try simple (fast) ASCII comparison first (case-insensitive!) */
- for (;; ++ap, ++bp)
- {
- /* check if the characters differ or we have a non-ASCII char */
- ac = *((const guchar *) ap);
- bc = *((const guchar *) bp);
- if (g_ascii_tolower (ac) != g_ascii_tolower (bc) || ac == 0 || ac > 127)
- break;
- }
-
- /* fallback to Unicode comparison (case-insensitive!) */
- if (G_UNLIKELY (ac > 127 || bc > 127))
- {
- for (;; ap = g_utf8_next_char (ap), bp = g_utf8_next_char (bp))
- {
- /* check if characters differ or end of string */
- ac = g_utf8_get_char (ap);
- bc = g_utf8_get_char (bp);
- if (g_unichar_tolower (ac) != g_unichar_tolower (bc) || ac == 0)
- break;
- }
- }
- }
-
- /* if both strings are equal, we're done */
- if (G_UNLIKELY (ac == bc || (!case_sensitive && g_unichar_tolower (ac) == g_unichar_tolower (bc))))
- return 0;
-
- /* check if one of the characters that differ is a digit */
- if (G_UNLIKELY (g_ascii_isdigit (ac) || g_ascii_isdigit (bc)))
- {
- /* if both strings differ in a digit, we use a smarter comparison
- * to get sorting 'file1', 'file5', 'file10' done the right way.
- */
- if (g_ascii_isdigit (ac) && g_ascii_isdigit (bc))
- return compare_by_name_using_number (ap, bp);
-
- /* a second case is '20 file' and '2file', where comparison by number
- * makes sense, if the previous char for both strings is a digit.
- */
- if (ap > parole_file_get_display_name (file_a) && bp > parole_file_get_display_name (file_b)
- && g_ascii_isdigit (*(ap - 1)) && g_ascii_isdigit (*(bp - 1)))
- {
- return compare_by_name_using_number (ap - 1, bp - 1);
- }
- }
-
- /* otherwise, if they differ in a unicode char, use the
- * appropriate collate function for the current locale (only
- * if charset is UTF-8, else the required transformations
- * would be too expensive)
- */
-#ifdef HAVE_STRCOLL
- if ((ac > 127 || bc > 127) && g_get_charset (NULL))
- {
- /* case-sensitive is easy, case-insensitive is expensive,
- * but we use a simple optimization to make it fast.
- */
- if (G_LIKELY (case_sensitive))
- {
- return strcoll (ap, bp);
- }
- else
- {
- /* we use a trick here, so we don't need to allocate
- * and transform the two strings completely first (8
- * byte for each buffer, so all compilers should align
- * them properly)
- */
- gchar abuf[8];
- gchar bbuf[8];
-
- /* transform the unicode chars to strings and
- * make sure the strings are nul-terminated.
- */
- abuf[g_unichar_to_utf8 (ac, abuf)] = '\0';
- bbuf[g_unichar_to_utf8 (bc, bbuf)] = '\0';
-
- /* compare the unicode chars (as strings) */
- return strcoll (abuf, bbuf);
- }
- }
-#endif
-
- /* else, they differ in an ASCII character */
- if (G_UNLIKELY (!case_sensitive))
- return (g_unichar_tolower (ac) > g_unichar_tolower (bc)) ? 1 : -1;
- else
- return (ac > bc) ? 1 : -1;
-}
-
-gchar *
-parole_get_name_without_extension (const gchar *name)
-{
- guint len, suffix;
- gchar *ret;
-
- len = strlen (name);
-
- for ( suffix = len -1; suffix > 0; suffix--)
- {
- if ( name [suffix] == '.' )
- break;
- }
-
- ret = g_strndup (name, sizeof (char) * (suffix));
- return ret;
-}
-
-static gchar *
-parole_get_subtitle_in_dir (const gchar *dir_path, const gchar *file)
-{
- gchar *sub_path = NULL;
- gchar *file_no_ext;
- guint i;
-
- file_no_ext = parole_get_name_without_extension (file);
-
- for ( i = 0; i < G_N_ELEMENTS (subtitle_ext); i++)
- {
- sub_path = g_strdup_printf ("%s/%s.%s", dir_path, file_no_ext, subtitle_ext[i]);
-
- if ( g_file_test (sub_path, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR ) )
- break;
-
- g_free (sub_path);
- sub_path = NULL;
- }
- g_free (file_no_ext);
-
- return sub_path;
-}
-
-gchar *parole_get_subtitle_path (const gchar *uri)
-{
- GFile *file, *parent;
- GFileInfo *info;
- GError *error = NULL;
- gchar *path;
- gchar *file_name;
- gchar *ret = NULL;
-
- file = g_file_new_for_commandline_arg (uri);
- parent = g_file_get_parent (file);
-
- TRACE ("uri : %s", uri);
-
- if ( !parent )
- {
- g_object_unref (file);
- return NULL;
- }
-
- info = g_file_query_info (file,
- "standard::*,",
- 0,
- NULL,
- &error);
-
- if ( error )
- {
- g_warning ("%s: \n", error->message);
- g_error_free (error);
- return NULL;
- }
-
- file_name = g_strdup (g_file_info_get_display_name (info));
-
- path = g_file_get_path (parent);
-
- ret = parole_get_subtitle_in_dir (path, file_name);
-
- g_object_unref (file);
- g_object_unref (parent);
- g_object_unref (info);
-
- g_free (file_name);
- g_free (path);
-
- return ret;
-}
-
-gboolean
-parole_is_uri_disc (const gchar *uri)
-{
- if ( g_str_has_prefix (uri, "dvd:/") || g_str_has_prefix (uri, "vcd:/")
- || g_str_has_prefix (uri, "svcd:/") || g_str_has_prefix (uri, "cdda:/"))
- return TRUE;
- else
- return FALSE;
-}
-
-GdkPixbuf *parole_icon_load (const gchar *icon_name, gint size)
-{
- GdkPixbuf *pix = NULL;
- GError *error = NULL;
-
- pix = gtk_icon_theme_load_icon (gtk_icon_theme_get_default (),
- icon_name,
- size,
- GTK_ICON_LOOKUP_USE_BUILTIN,
- &error);
-
- if ( error )
- {
- g_warning ("Unable to load icon : %s : %s", icon_name, error->message);
- g_error_free (error);
- }
-
- return pix;
-
-}
diff --git a/parole/parole-utils.h b/parole/parole-utils.h
deleted file mode 100644
index 9db205a..0000000
--- a/parole/parole-utils.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifndef __PAROLE_UTILS_H_
-#define __PAROLE_UTILS_H_
-
-#include <gtk/gtk.h>
-#include <gdk/gdk.h>
-
-#include "parole-file.h"
-
-gint thunar_file_compare_by_name (ParoleFile *file_a,
- ParoleFile *file_b,
- gboolean case_sensitive);
-
-gchar *parole_get_name_without_extension (const gchar *name)G_GNUC_MALLOC G_GNUC_WARN_UNUSED_RESULT;
-
-gchar *parole_get_subtitle_path (const gchar *uri) G_GNUC_MALLOC G_GNUC_WARN_UNUSED_RESULT;
-
-gboolean parole_is_uri_disc (const gchar *uri);
-
-GdkPixbuf *parole_icon_load (const gchar *icon_name,
- gint size);
-
-#endif /* __PAROLE_UTILS_ */
diff --git a/parole/parole-vis.c b/parole/parole-vis.c
deleted file mode 100644
index 64c24cf..0000000
--- a/parole/parole-vis.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <gst/gst.h>
-#include <glib.h>
-
-#include "parole-vis.h"
-
-static gboolean
-parole_vis_filter (GstPluginFeature *feature, gpointer data)
-{
- GstElementFactory *factory;
-
- if ( !GST_IS_ELEMENT_FACTORY (feature) )
- return FALSE;
-
- factory = GST_ELEMENT_FACTORY (feature);
-
- if ( !g_strrstr (gst_element_factory_get_klass (factory), "Visualization"))
- return FALSE;
-
- return TRUE;
-}
-
-static void
-parole_vis_get_name (GstElementFactory *factory, GHashTable **hash)
-{
- g_hash_table_insert (*hash, g_strdup (gst_element_factory_get_longname (factory)), factory);
-}
-
-GHashTable *parole_vis_get_plugins (void)
-{
- GList *plugins = NULL;
- GHashTable *hash;
-
- hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
-
- plugins = gst_registry_feature_filter (gst_registry_get_default (),
- parole_vis_filter,
- FALSE,
- NULL);
-
- g_list_foreach (plugins, (GFunc) parole_vis_get_name, &hash);
-
- gst_plugin_feature_list_free (plugins);
-
- return hash;
-}
diff --git a/parole/parole-vis.h b/parole/parole-vis.h
deleted file mode 100644
index 96cc0ec..0000000
--- a/parole/parole-vis.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifndef __PAROLE_VIS_H_
-#define __PAROLE_VIS_H_
-
-#include <gst/gst.h>
-#include <glib.h>
-
-GHashTable *parole_vis_get_plugins (void);
-
-#endif /* __PAROLE_VIS_H_ */
More information about the Xfce4-commits
mailing list