[Xfce4-commits] <parole:0.2.2> Added a helper setup wizard that opens the first time Parole is started.
Ali Abdallah
noreply at xfce.org
Sat Jan 9 11:30:02 CET 2010
Updating branch refs/heads/0.2.2
to d15d73d34e73972e2a6b117880c77e78e17b4343 (commit)
from 0c05b40e1a925e6e81b0dbf96ec43f0feed9b230 (commit)
commit d15d73d34e73972e2a6b117880c77e78e17b4343
Author: Ali Abdallah <aliov at xfce.org>
Date: Sat Jan 9 11:28:05 2010 +0100
Added a helper setup wizard that opens the first time Parole is started.
src/Makefile.am | 4 +-
src/main.c | 2 +
src/parole-setup.c | 379 ++++++++++++++++++++++++++++++++
src/{parole-about.h => parole-setup.h} | 11 +-
4 files changed, 389 insertions(+), 7 deletions(-)
diff --git a/src/Makefile.am b/src/Makefile.am
index b2928a8..898df79 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -70,7 +70,9 @@ parole_SOURCES = \
parole-button.c \
parole-button.h \
parole-plugin-player.c \
- parole-plugin-player.h
+ parole-plugin-player.h \
+ parole-setup.c \
+ parole-setup.h
parole_LDADD = \
$(top_builddir)/parole/libparole.la \
diff --git a/src/main.c b/src/main.c
index 28e9e9f..d64dc3f 100644
--- a/src/main.c
+++ b/src/main.c
@@ -47,6 +47,7 @@
#include "parole-dbus.h"
#include "parole-builder.h"
#include "parole-rc-utils.h"
+#include "parole-setup.h"
static void G_GNUC_NORETURN
show_version (void)
@@ -303,6 +304,7 @@ int main (int argc, char **argv)
parole_session_set_client_id (session, client_id);
parole_session_real_init (session);
+ parole_setup ();
player = parole_player_new ();
if ( filenames && filenames[0] != NULL )
diff --git a/src/parole-setup.c b/src/parole-setup.c
new file mode 100644
index 0000000..864fcc6
--- /dev/null
+++ b/src/parole-setup.c
@@ -0,0 +1,379 @@
+/*
+ * * 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 <libxfce4util/libxfce4util.h>
+
+#include "parole-setup.h"
+#include "parole-rc-utils.h"
+#include "parole-utils.h"
+#include "parole-conf.h"
+#include "parole-builder.h"
+
+#define WIZARD_VERSION 0
+
+static void
+parole_setup_close (GtkWidget *widget, GdkEvent *ev, gpointer data)
+{
+ parole_rc_write_entry_int ("WIZARD_VERSION", PAROLE_RC_GROUP_GENERAL, WIZARD_VERSION);
+ gtk_widget_destroy (widget);
+ gtk_main_quit ();
+}
+
+static void
+parole_setup_set_header_image (GtkWidget *assistant, GtkWidget *page, const gchar *icon_name)
+{
+
+ GdkPixbuf *pix;
+
+ pix = parole_icon_load (icon_name, 48);
+
+ if ( pix )
+ {
+ gtk_assistant_set_page_header_image (GTK_ASSISTANT (assistant), page, pix);
+ g_object_unref (pix);
+ }
+
+}
+
+static void
+parole_setup_set_page_side_image (GtkWidget *assistant, GtkWidget *page, const gchar *icon_name)
+{
+ GdkPixbuf *pix;
+
+ pix = parole_icon_load (icon_name, 64);
+
+ if ( pix )
+ {
+ gtk_assistant_set_page_side_image (GTK_ASSISTANT (assistant), page, pix);
+ g_object_unref (pix);
+ }
+}
+
+static void
+parole_setup_intro_page (GtkWidget *assistant)
+{
+ GtkWidget *page;
+ GtkWidget *label;
+
+ page = gtk_vbox_new (FALSE, 0);
+
+ label = gtk_label_new (NULL);
+ gtk_label_set_markup (GTK_LABEL (label),
+ _("<span size='large' underline='single'>What is this?</span>"));
+ gtk_box_pack_start (GTK_BOX (page), label, TRUE , TRUE, 0);
+
+
+ label = gtk_label_new (NULL);
+ gtk_label_set_markup (GTK_LABEL (label),
+ _("<tt>Parole is a modern simple media player:</tt>\n\n"
+ "<tt>* Support for various media formats</tt>\n"
+ "<tt>* Video playback with subtitles</tt>\n"
+ "<tt>* DVD/VCD/CDDA and DVB</tt>\n"
+ "<tt>* Remote streams playback including live streams</tt>\n"
+ "\n\n<tt>This wizard will help you setting up some basic options of the player, but at any time"
+ " you can change these options using the settings dialog</tt>"));
+
+ gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
+ gtk_box_pack_start (GTK_BOX (page), label, TRUE ,TRUE, 0);
+
+ gtk_assistant_append_page (GTK_ASSISTANT (assistant), page);
+ gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), page, _("Welcome to Parole Media Player"));
+
+ parole_setup_set_header_image (assistant, page, "parole");
+ parole_setup_set_page_side_image (assistant, page, "messagebox_info");
+ gtk_assistant_set_page_type (GTK_ASSISTANT (assistant), page, GTK_ASSISTANT_PAGE_INTRO);
+ gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), page, TRUE);
+}
+
+static void
+parole_setup_license_page (GtkWidget *assistant)
+{
+ GtkWidget *page;
+ GtkWidget *text_view;
+ GtkTextBuffer *text_buffer;
+
+ page = gtk_vbox_new (FALSE, 0);
+
+ text_view = gtk_text_view_new ();
+ text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (text_view));
+ gtk_text_buffer_set_text (text_buffer, XFCE_LICENSE_GPL, strlen (XFCE_LICENSE_GPL));
+ gtk_text_view_set_editable (GTK_TEXT_VIEW (text_view), FALSE);
+ gtk_text_view_set_left_margin (GTK_TEXT_VIEW (text_view), 6);
+ gtk_text_view_set_right_margin (GTK_TEXT_VIEW (text_view), 6);
+ gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (text_view), FALSE);
+
+ gtk_box_pack_start (GTK_BOX (page), text_view, TRUE , TRUE, 0);
+
+ gtk_assistant_append_page (GTK_ASSISTANT (assistant), page);
+ gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), page, _("License information"));
+
+ parole_setup_set_header_image (assistant, page, "parole");
+ parole_setup_set_page_side_image (assistant, page, "text-x-authors");
+ gtk_assistant_set_page_type (GTK_ASSISTANT (assistant), page, GTK_ASSISTANT_PAGE_CONTENT);
+ gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), page, TRUE);
+}
+
+static void
+parole_setup_gstreamer (GtkWidget *assistant, ParoleConf *conf)
+{
+
+}
+
+static void
+multimedia_toggled_cb (GtkToggleButton *bt, ParoleConf *conf)
+{
+
+}
+
+static void
+parole_setup_multimedia_keys (GtkWidget *assistant, ParoleConf *conf)
+{
+ GtkWidget *align;
+ GtkWidget *page;
+ GtkWidget *check;
+ GtkWidget *label;
+
+
+ align = gtk_alignment_new (0.5, 0.5, 1., 1.);
+ gtk_alignment_set_padding (GTK_ALIGNMENT (align), 20, 0, 10, 10);
+ page = gtk_vbox_new (FALSE, 0);
+
+ label = gtk_label_new (NULL);
+ gtk_label_set_markup (GTK_LABEL (label),
+ _("<span size='large'>Enabling this option allows you to stop/play, seek forward and backward using your keyboard multimedia keys</span>"));
+
+ gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
+ gtk_box_pack_start (GTK_BOX (page), label, TRUE, TRUE, 0);
+
+ check = gtk_check_button_new_with_label (_("Let Parole handles your keyboard multimedia keys"));
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check), TRUE);
+ g_signal_connect (check, "toggled",
+ G_CALLBACK (multimedia_toggled_cb), conf);
+ gtk_box_pack_start (GTK_BOX (page), check, TRUE, TRUE, 0);
+
+ gtk_container_add (GTK_CONTAINER (align), page);
+ gtk_assistant_append_page (GTK_ASSISTANT (assistant), align);
+ gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), align, _("Keyboard multimedia keys"));
+
+ parole_setup_set_header_image (assistant, align, "parole");
+ parole_setup_set_page_side_image (assistant, align, "keyboard");
+ gtk_assistant_set_page_type (GTK_ASSISTANT (assistant), align, GTK_ASSISTANT_PAGE_CONTENT);
+ gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), align, TRUE);
+}
+
+static void
+vis_toggled_cb (GtkToggleButton *bt, ParoleConf *conf)
+{
+ g_object_set (G_OBJECT (conf),
+ "vis-enabled", gtk_toggle_button_get_active (bt),
+ NULL);
+}
+
+static void
+parole_setup_visualization (GtkWidget *assistant, ParoleConf *conf)
+{
+ GtkWidget *align;
+ GtkWidget *label;
+ GtkWidget *page;
+ GtkWidget *check;
+
+ align = gtk_alignment_new (0.5, 0.5, 1., 1.);
+ gtk_alignment_set_padding (GTK_ALIGNMENT (align), 20, 0, 10, 10);
+
+ page = gtk_vbox_new (FALSE, 0);
+
+ label = gtk_label_new (NULL);
+
+ gtk_label_set_markup (GTK_LABEL (label),
+ _("<span size='large'>While this option gives visual appeal to Parole "
+ "when playing audio streams it has a performance cost on your computer "
+ "with this option enabled your CPU will comsume more power.</span>"));
+
+ gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
+ gtk_box_pack_start (GTK_BOX (page), label, TRUE, TRUE, 0);
+
+ check = gtk_check_button_new_with_label (_("Enable visualization for audio streams"));
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check), FALSE);
+ g_signal_connect (check, "toggled",
+ G_CALLBACK (vis_toggled_cb), conf);
+ gtk_box_pack_start (GTK_BOX (page), check, TRUE , TRUE, 0);
+
+ gtk_container_add (GTK_CONTAINER (align), page);
+
+ gtk_assistant_append_page (GTK_ASSISTANT (assistant), align);
+ gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), align, _("Visualization for audio"));
+
+ parole_setup_set_header_image (assistant, align, "parole");
+ parole_setup_set_page_side_image (assistant, align, "audio-volume-high");
+ gtk_assistant_set_page_type (GTK_ASSISTANT (assistant), align, GTK_ASSISTANT_PAGE_CONTENT);
+ gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), align, TRUE);
+
+}
+
+static void
+replace_playlist_toggled_cb (GtkToggleButton *bt, ParoleConf *conf)
+{
+ g_object_set (G_OBJECT (conf),
+ "replace-playlist", gtk_toggle_button_get_active (bt),
+ NULL);
+}
+
+static void
+start_playing_toggled_cb (GtkToggleButton *bt, ParoleConf *conf)
+{
+ g_object_set (G_OBJECT (conf),
+ "play-opened-files", gtk_toggle_button_get_active (bt),
+ NULL);
+}
+
+static void
+remove_duplicated_toggled_cb (GtkToggleButton *bt, ParoleConf *conf)
+{
+ g_object_set (G_OBJECT (conf),
+ "remove-duplicated", gtk_toggle_button_get_active (bt),
+ NULL);
+}
+
+
+static void
+parole_setup_playlist (GtkWidget *assistant, ParoleConf *conf)
+{
+ GtkWidget *align;
+ GtkWidget *label;
+ GtkWidget *page;
+ GtkWidget *check;
+
+ align = gtk_alignment_new (0.5, 0.5, 1., 1.);
+ gtk_alignment_set_padding (GTK_ALIGNMENT (align), 20, 0, 10, 10);
+
+ page = gtk_vbox_new (FALSE, 0);
+
+ label = gtk_label_new (NULL);
+
+ gtk_label_set_markup (GTK_LABEL (label),
+ _("<span size='large'>Fine tune your playlist behaviour</span>"));
+
+ gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
+ gtk_box_pack_start (GTK_BOX (page), label, TRUE, TRUE, 0);
+
+ check = gtk_check_button_new_with_label (_("Always replace playlist with opened files"));
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check), FALSE);
+ g_signal_connect (check, "toggled",
+ G_CALLBACK (replace_playlist_toggled_cb), conf);
+ gtk_box_pack_start (GTK_BOX (page), check, TRUE , TRUE, 0);
+
+ check = gtk_check_button_new_with_label (_("Remove duplicated entries"));
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check), TRUE);
+ g_signal_connect (check, "toggled",
+ G_CALLBACK (remove_duplicated_toggled_cb), conf);
+ gtk_box_pack_start (GTK_BOX (page), check, TRUE , TRUE, 0);
+
+ check = gtk_check_button_new_with_label (_("Start playing opened files"));
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check), TRUE);
+ g_signal_connect (check, "toggled",
+ G_CALLBACK (start_playing_toggled_cb), conf);
+ gtk_box_pack_start (GTK_BOX (page), check, TRUE , TRUE, 0);
+
+ gtk_container_add (GTK_CONTAINER (align), page);
+
+ gtk_assistant_append_page (GTK_ASSISTANT (assistant), align);
+ gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), align, _("Playlist behaviour"));
+
+ parole_setup_set_header_image (assistant, align, "parole");
+ parole_setup_set_page_side_image (assistant, align, "stock_playlist");
+ gtk_assistant_set_page_type (GTK_ASSISTANT (assistant), align, GTK_ASSISTANT_PAGE_CONTENT);
+ gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), align, TRUE);
+
+}
+
+static void
+parole_setup_finish (GtkWidget *assistant)
+{
+ GtkWidget *page;
+ GtkWidget *label;
+
+ page = gtk_vbox_new (FALSE, 0);
+
+ label = gtk_label_new (NULL);
+ gtk_label_set_markup (GTK_LABEL (label),
+ _("<span size='large' underline='single'>Thank you for using Parole!</span>\n\n"
+ "<tt>Hope you enjoy this software.</tt>"));
+
+ gtk_box_pack_start (GTK_BOX (page), label, TRUE, FALSE, 0);
+
+ gtk_assistant_append_page (GTK_ASSISTANT (assistant), page);
+ gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), page, _("Thanks for using Parole!"));
+
+ parole_setup_set_header_image (assistant, page, "parole");
+ parole_setup_set_page_side_image (assistant, page, "face-smile");
+ gtk_assistant_set_page_type (GTK_ASSISTANT (assistant), page, GTK_ASSISTANT_PAGE_SUMMARY);
+ gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), page, TRUE);
+}
+
+static void
+parole_run_setup (void)
+{
+ GtkWidget *assistant;
+ ParoleConf *conf;
+
+ assistant = gtk_assistant_new ();
+ conf = parole_conf_new ();
+
+ parole_setup_intro_page (assistant);
+ parole_setup_license_page (assistant);
+ parole_setup_gstreamer (assistant, conf);
+ parole_setup_playlist (assistant, conf);
+ parole_setup_multimedia_keys (assistant, conf);
+ parole_setup_visualization (assistant, conf);
+ parole_setup_finish (assistant);
+
+ gtk_window_set_title (GTK_WINDOW (assistant), _("Parole Setup"));
+
+ g_signal_connect (assistant, "close",
+ G_CALLBACK (parole_setup_close), NULL);
+
+ g_signal_connect (assistant, "cancel",
+ G_CALLBACK (parole_setup_close), NULL);
+
+ gtk_window_set_position (GTK_WINDOW (assistant), GTK_WIN_POS_CENTER);
+ gtk_window_set_resizable (GTK_WINDOW (assistant), FALSE);
+ gtk_widget_show_all (assistant);
+ gtk_main ();
+}
+
+void parole_setup (void)
+{
+ gint wizard_version;
+
+ wizard_version = parole_rc_read_entry_int ("WIZARD_VERSION", PAROLE_RC_GROUP_GENERAL, -1);
+
+ if ( wizard_version != WIZARD_VERSION )
+ parole_run_setup ();
+}
diff --git a/src/parole-about.h b/src/parole-setup.h
similarity index 86%
copy from src/parole-about.h
copy to src/parole-setup.h
index cb89c42..bf47a06 100644
--- a/src/parole-about.h
+++ b/src/parole-setup.h
@@ -18,12 +18,11 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#ifndef __PAROLE_ABOUT_H
-#define __PAROLE_ABOUT_H
+#ifndef __PAROLE_SETUP_H_
+#define __PAROLE_SETUP_H_
-#include <gtk/gtk.h>
+#include <glib.h>
-void parole_about (void);
+void parole_setup (void);
-
-#endif /* __PAROLE_ABOUT_H */
+#endif /* __PAROLE_SETUP_H_ */
More information about the Xfce4-commits
mailing list