[Goodies-commits] r7525 - in parole/trunk: . data/interfaces po src
Ali Abdallah
aliov at xfce.org
Wed Jun 10 21:01:00 CEST 2009
Author: aliov
Date: 2009-06-10 19:01:00 +0000 (Wed, 10 Jun 2009)
New Revision: 7525
Added:
parole/trunk/data/interfaces/mediachooser.ui
parole/trunk/data/interfaces/openlocation.ui
parole/trunk/data/interfaces/playlist.ui
parole/trunk/src/filters.c
parole/trunk/src/filters.h
Removed:
parole/trunk/src/manager.c
parole/trunk/src/manager.h
Modified:
parole/trunk/ChangeLog
parole/trunk/configure.ac.in
parole/trunk/data/interfaces/Makefile.am
parole/trunk/data/interfaces/parole.ui
parole/trunk/po/POTFILES.in
parole/trunk/po/parole-media-player.pot
parole/trunk/src/Makefile.am
parole/trunk/src/builder.c
parole/trunk/src/builder.h
parole/trunk/src/main.c
parole/trunk/src/mediachooser.c
parole/trunk/src/mediachooser.h
parole/trunk/src/medialist.c
parole/trunk/src/medialist.h
parole/trunk/src/player.c
parole/trunk/src/sidebar.c
parole/trunk/src/statusbar.c
Log:
* Split the GtkBuilder interface files into multiple files.
Modified: parole/trunk/ChangeLog
===================================================================
--- parole/trunk/ChangeLog 2009-06-10 12:16:14 UTC (rev 7524)
+++ parole/trunk/ChangeLog 2009-06-10 19:01:00 UTC (rev 7525)
@@ -1,3 +1,6 @@
+2009-06-17: Ali aliov at xfce.org
+ * Split the GtkBuilder interface files into multiple files.
+
2009-06-07: Ali aliov at xfce.org
* Reset screen saver counter if we are playing a movie
Modified: parole/trunk/configure.ac.in
===================================================================
--- parole/trunk/configure.ac.in 2009-06-10 12:16:14 UTC (rev 7524)
+++ parole/trunk/configure.ac.in 2009-06-10 19:01:00 UTC (rev 7525)
@@ -68,6 +68,7 @@
XDT_CHECK_PACKAGE([GLIB], [glib-2.0], [glib_minimum_version])
XDT_CHECK_PACKAGE([GOBJECT], [gobject-2.0], [glib_minimum_version])
XDT_CHECK_PACKAGE([GTHREAD], [gthread-2.0], [glib_minimum_version])
+XDT_CHECK_PACKAGE([GMODULE], [gmodule-2.0], [glib_minimum_version])
XDT_CHECK_PACKAGE([GIO], [gio-2.0], [glib_minimum_version])
XDT_CHECK_PACKAGE([GST], [gstreamer-0.10], [gstreamer_minimum_version])
@@ -80,7 +81,14 @@
XDT_CHECK_PACKAGE([LIBXFCE4GUI], [libxfcegui4-1.0],[libxfcegui4_minimum_version])
XDT_CHECK_PACKAGE([LIBXFCE4UTIL], [libxfce4util-1.0],[libxfce4util_minimum_version])
-XDT_CHECK_PACKAGE([LIBNOTIFY],[libnotify], [libnotify_minimum_version])
+#=======================================================#
+# Check for availability of libnotify #
+#=======================================================#
+LIBNOTIFY_FOUND="no"
+XDT_CHECK_OPTIONAL_PACKAGE([LIBNOTIFY],
+ [libnotify], [libnotify_minimum_version],
+ [libnotify],
+ [libnotify library], [yes])
# Taken from Gnome system tools
#=======================================================#
@@ -124,6 +132,7 @@
prefix: $prefix
interface_dir $interfacesdir
pixmapsdir $pixmapsdir
+ Notification $LIBNOTIFY_FOUND
Debug support: $enable_debug
--------------------------------------------------
Modified: parole/trunk/data/interfaces/Makefile.am
===================================================================
--- parole/trunk/data/interfaces/Makefile.am 2009-06-10 12:16:14 UTC (rev 7524)
+++ parole/trunk/data/interfaces/Makefile.am 2009-06-10 19:01:00 UTC (rev 7525)
@@ -1,5 +1,8 @@
interfaces = \
- parole.ui
+ parole.ui \
+ playlist.ui \
+ mediachooser.ui \
+ openlocation.ui
interfaces_DATA = \
$(interfaces)
Added: parole/trunk/data/interfaces/mediachooser.ui
===================================================================
--- parole/trunk/data/interfaces/mediachooser.ui (rev 0)
+++ parole/trunk/data/interfaces/mediachooser.ui 2009-06-10 19:01:00 UTC (rev 7525)
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<interface>
+ <requires lib="gtk+" version="2.16"/>
+ <!-- interface-naming-policy project-wide -->
+ <object class="GtkVBox" id="vbox">
+ <property name="visible">True</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">10</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkFileChooserWidget" id="filechooserwidget">
+ <property name="visible">True</property>
+ <property name="border_width">5</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">1</property>
+ <signal name="current_folder_changed" handler="media_chooser_folder_changed_cb"/>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHButtonBox" id="hbuttonbox1">
+ <property name="visible">True</property>
+ <property name="border_width">5</property>
+ <property name="spacing">5</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="close">
+ <property name="label" translatable="yes">gtk-close</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_stock">True</property>
+ <signal name="clicked" handler="parole_media_chooser_close"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="open">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_stock">True</property>
+ <signal name="clicked" handler="parole_media_chooser_open"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+</interface>
Added: parole/trunk/data/interfaces/openlocation.ui
===================================================================
--- parole/trunk/data/interfaces/openlocation.ui (rev 0)
+++ parole/trunk/data/interfaces/openlocation.ui 2009-06-10 19:01:00 UTC (rev 7525)
@@ -0,0 +1,68 @@
+<?xml version="1.0"?>
+<interface>
+ <requires lib="gtk+" version="2.16"/>
+ <!-- interface-naming-policy project-wide -->
+ <object class="GtkVBox" id="vbox">
+ <property name="visible">True</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Open location of media file or live stream</property>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">●</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHButtonBox" id="hbuttonbox1">
+ <property name="visible">True</property>
+ <property name="spacing">5</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="close">
+ <property name="label" translatable="yes">gtk-close</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_stock">True</property>
+ <signal name="clicked" handler="parole_media_chooser_close"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="open">
+ <property name="label" translatable="yes">gtk-open</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_stock">True</property>
+ <signal name="clicked" handler="parole_media_chooser_open_location_cb"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+</interface>
Modified: parole/trunk/data/interfaces/parole.ui
===================================================================
--- parole/trunk/data/interfaces/parole.ui 2009-06-10 12:16:14 UTC (rev 7524)
+++ parole/trunk/data/interfaces/parole.ui 2009-06-10 19:01:00 UTC (rev 7525)
@@ -6,6 +6,8 @@
<property name="window_position">center</property>
<property name="default_width">720</property>
<property name="default_height">440</property>
+ <signal name="destroy" handler="parole_player_destroy_cb"/>
+ <signal name="key_press_event" handler="parole_player_key_press"/>
<child>
<object class="GtkVBox" id="vbox1">
<property name="visible">True</property>
@@ -28,6 +30,7 @@
<property name="visible">True</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
+ <signal name="activate" handler="parole_player_menu_open_cb"/>
</object>
</child>
<child>
@@ -37,6 +40,7 @@
<property name="use_underline">True</property>
<property name="image">image5</property>
<property name="use_stock">False</property>
+ <signal name="activate" handler="parole_player_menu_open_location_cb"/>
</object>
</child>
<child>
@@ -45,6 +49,7 @@
<property name="visible">True</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
+ <signal name="activate" handler="parole_player_menu_add_cb"/>
</object>
</child>
<child>
@@ -58,6 +63,7 @@
<property name="visible">True</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
+ <signal name="activate" handler="parole_player_menu_exit_cb"/>
</object>
</child>
</object>
@@ -76,6 +82,21 @@
<property name="visible">True</property>
<property name="label" translatable="yes">_View</property>
<property name="use_underline">True</property>
+ <child type="submenu">
+ <object class="GtkMenu" id="menu2">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkImageMenuItem" id="fullscreen-menu">
+ <property name="label">gtk-fullscreen</property>
+ <property name="visible">True</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">True</property>
+ <accelerator key="F11" signal="activate"/>
+ <signal name="activate" handler="parole_player_full_screen_activated_cb"/>
+ </object>
+ </child>
+ </object>
+ </child>
</object>
</child>
<child>
@@ -134,7 +155,7 @@
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
- <object class="GtkHPaned" id="hpaned1">
+ <object class="GtkHPaned" id="hpaned">
<property name="visible">True</property>
<property name="can_focus">True</property>
<child>
@@ -163,6 +184,9 @@
<property name="sensitive">False</property>
<property name="can_focus">True</property>
<property name="draw_value">False</property>
+ <signal name="button_press_event" handler="parole_player_range_button_press"/>
+ <signal name="value_changed" handler="parole_player_range_value_changed"/>
+ <signal name="button_release_event" handler="parole_player_range_button_release"/>
</object>
<packing>
<property name="expand">False</property>
@@ -206,6 +230,7 @@
<property name="relief">none</property>
<property name="focus_on_click">False</property>
<accelerator key="s" signal="clicked"/>
+ <signal name="clicked" handler="parole_player_stop_clicked"/>
</object>
<packing>
<property name="expand">False</property>
@@ -222,6 +247,7 @@
<property name="relief">none</property>
<property name="focus_on_click">False</property>
<accelerator key="space" signal="activate"/>
+ <signal name="clicked" handler="parole_player_play_pause_clicked"/>
</object>
<packing>
<property name="expand">False</property>
@@ -265,6 +291,7 @@
<property name="can_focus">True</property>
<property name="show_fill_level">True</property>
<property name="draw_value">False</property>
+ <signal name="value_changed" handler="parole_player_volume_value_changed_cb"/>
</object>
<packing>
<property name="expand">False</property>
@@ -294,6 +321,7 @@
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="image">image18</property>
+ <signal name="clicked" handler="parole_player_show_hide_playlist"/>
</object>
<packing>
<property name="expand">False</property>
@@ -325,83 +353,8 @@
<property name="visible">True</property>
<property name="orientation">vertical</property>
<child>
- <object class="GtkScrolledWindow" id="scrolledwindow1">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="hscrollbar_policy">automatic</property>
- <property name="vscrollbar_policy">automatic</property>
- <child>
- <object class="GtkTreeView" id="media-list">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="headers_visible">False</property>
- <property name="show_expanders">False</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="position">0</property>
- </packing>
+ <placeholder/>
</child>
- <child>
- <object class="GtkHBox" id="hbox3">
- <property name="visible">True</property>
- <property name="homogeneous">True</property>
- <child>
- <object class="GtkButton" id="add-media">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="image">image1</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="remove-media">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="image">image2</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="media-up">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="image">image3</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="media-down">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="image">image4</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="position">3</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
</object>
<packing>
<property name="resize">False</property>
@@ -922,24 +875,8 @@
<property name="visible">True</property>
<property name="stock">gtk-media-next</property>
</object>
- <object class="GtkImage" id="image1">
- <property name="visible">True</property>
- <property name="stock">gtk-add</property>
- </object>
- <object class="GtkImage" id="image2">
- <property name="visible">True</property>
- <property name="stock">gtk-remove</property>
- </object>
- <object class="GtkImage" id="image3">
- <property name="visible">True</property>
- <property name="stock">gtk-go-up</property>
- </object>
- <object class="GtkImage" id="image4">
- <property name="visible">True</property>
- <property name="stock">gtk-go-down</property>
- </object>
<object class="GtkImage" id="image18">
<property name="visible">True</property>
- <property name="stock">gtk-go-back</property>
+ <property name="stock">gtk-go-forward</property>
</object>
</interface>
Added: parole/trunk/data/interfaces/playlist.ui
===================================================================
--- parole/trunk/data/interfaces/playlist.ui (rev 0)
+++ parole/trunk/data/interfaces/playlist.ui 2009-06-10 19:01:00 UTC (rev 7525)
@@ -0,0 +1,110 @@
+<?xml version="1.0"?>
+<interface>
+ <requires lib="gtk+" version="2.16"/>
+ <!-- interface-naming-policy project-wide -->
+ <object class="GtkVBox" id="playlist-box">
+ <property name="visible">True</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">automatic</property>
+ <property name="vscrollbar_policy">automatic</property>
+ <child>
+ <object class="GtkTreeView" id="media-list">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="headers_visible">False</property>
+ <property name="show_expanders">False</property>
+ <signal name="cursor_changed" handler="parole_media_list_cursor_changed_cb"/>
+ <signal name="row_activated" handler="parole_media_list_row_activated_cb"/>
+ <signal name="button_release_event" handler="parole_media_list_button_release_event"/>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox3">
+ <property name="visible">True</property>
+ <property name="homogeneous">True</property>
+ <child>
+ <object class="GtkButton" id="add-media">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="image">image1</property>
+ <signal name="clicked" handler="parole_media_list_add_clicked_cb"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="remove-media">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="image">image2</property>
+ <signal name="clicked" handler="parole_media_list_remove_clicked_cb"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="media-up">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="image">image3</property>
+ <signal name="clicked" handler="parole_media_list_media_up_clicked_cb"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="media-down">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="image">image4</property>
+ <signal name="clicked" handler="parole_media_list_media_down_clicked_cb"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <object class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="stock">gtk-add</property>
+ </object>
+ <object class="GtkImage" id="image2">
+ <property name="visible">True</property>
+ <property name="stock">gtk-remove</property>
+ </object>
+ <object class="GtkImage" id="image3">
+ <property name="visible">True</property>
+ <property name="stock">gtk-go-up</property>
+ </object>
+ <object class="GtkImage" id="image4">
+ <property name="visible">True</property>
+ <property name="stock">gtk-go-down</property>
+ </object>
+</interface>
Modified: parole/trunk/po/POTFILES.in
===================================================================
--- parole/trunk/po/POTFILES.in 2009-06-10 12:16:14 UTC (rev 7524)
+++ parole/trunk/po/POTFILES.in 2009-06-10 19:01:00 UTC (rev 7525)
@@ -1,4 +1,7 @@
data/interfaces/parole.ui
+data/interfaces/mediachooser.ui
+data/interfaces/playlist.ui
+data/interfaces/openlocation.ui
data/parole-media-player.desktop.in
src/gst.c
src/builder.c
@@ -7,3 +10,4 @@
src/player.c
src/sidebar.c
src/statusbar.c
+src/filters.c
Modified: parole/trunk/po/parole-media-player.pot
===================================================================
--- parole/trunk/po/parole-media-player.pot 2009-06-10 12:16:14 UTC (rev 7524)
+++ parole/trunk/po/parole-media-player.pot 2009-06-10 19:01:00 UTC (rev 7525)
@@ -8,7 +8,7 @@
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-06-03 10:35+0200\n"
+"POT-Creation-Date: 2009-06-10 20:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
"Language-Team: LANGUAGE <LL at li.org>\n"
@@ -17,61 +17,68 @@
"Content-Transfer-Encoding: 8bit\n"
#: ../data/parole-media-player.desktop.in.h:1
-msgid "Xfce Media Player"
+msgid "Parole Media Player"
msgstr ""
-#: ../src/gst.c:548
+#: ../src/gst.c:640
msgid "Error in changing state to ready"
msgstr ""
-#: ../src/gst.c:595
+#: ../src/gst.c:687
msgid ""
"Unable to load playbin GStreamer plugin, check your GStreamer installation"
msgstr ""
-#: ../src/gst.c:605
+#: ../src/gst.c:702
msgid ""
-"Unable to load xvimagesink GStreamer plugin, check your GStreamer "
-"installation"
+"Unable to load video GStreamer plugin, check your GStreamer installation"
msgstr ""
-#: ../src/mediachooser.c:420
-msgid "Audio and video"
+#: ../src/builder.c:69
+msgid "Check your Parole installation"
msgstr ""
-#: ../src/mediachooser.c:447
+#: ../src/mediachooser.c:433
msgid "Add media files"
msgstr ""
-#: ../src/mediachooser.c:447
+#: ../src/mediachooser.c:433
msgid "Open media file"
msgstr ""
-#: ../src/mediachooser.c:452
-msgid "Open location"
+#: ../src/mediachooser.c:450
+msgid "Add"
msgstr ""
-#: ../src/mediachooser.c:532
-msgid "Open location of media file or live stream"
+#: ../src/mediachooser.c:450
+msgid "Open"
msgstr ""
-#: ../src/medialist.c:274
+#: ../src/medialist.c:416
msgid "Media list"
msgstr ""
-#: ../src/player.c:164 ../src/statusbar.c:119 ../src/statusbar.c:121
+#: ../src/player.c:161
+msgid "Hide playlist"
+msgstr ""
+
+#: ../src/player.c:170
+msgid "Show playlist"
+msgstr ""
+
+#: ../src/player.c:299 ../src/statusbar.c:121 ../src/statusbar.c:123
msgid "Playing"
msgstr ""
-#: ../src/player.c:165
+#: ../src/player.c:300
msgid "Media stream is not seekable"
msgstr ""
-#: ../src/player.c:179 ../src/player.c:192
+#: ../src/player.c:316 ../src/player.c:329
msgid "Paused"
msgstr ""
-#: ../src/player.c:210
+#: ../src/player.c:347
msgid "Stopped"
msgstr ""
@@ -84,24 +91,22 @@
#: ../src/sidebar.c:147
msgid ""
-"<b>Audio \n"
-"recorder\n"
+"<b>Albums\n"
"</b>"
msgstr ""
-#: ../src/sidebar.c:158
-msgid ""
-"<b>Audio \n"
-"converter\n"
-"</b>"
+#: ../src/statusbar.c:133
+msgid "Buffering"
msgstr ""
-#: ../src/sidebar.c:168
-msgid ""
-"<b>Albums\n"
-"</b>"
+#: ../src/filters.c:47
+msgid "Audio files"
msgstr ""
-#: ../src/statusbar.c:131
-msgid "Buffering"
+#: ../src/filters.c:63
+msgid "Video files"
msgstr ""
+
+#: ../src/filters.c:78
+msgid "Audio and video"
+msgstr ""
Modified: parole/trunk/src/Makefile.am
===================================================================
--- parole/trunk/src/Makefile.am 2009-06-10 12:16:14 UTC (rev 7524)
+++ parole/trunk/src/Makefile.am 2009-06-10 19:01:00 UTC (rev 7525)
@@ -6,11 +6,15 @@
enum-gtypes.c \
enum-gtypes.h
+MOD_FLAGS = \
+ -export_dynamic \
+ -avoid-version \
+ -module \
+ -no-undefined
+
parole_media_player_SOURCES = \
main.c \
$(GENERATED_FILES) \
- manager.c \
- manager.h \
sidebar.c \
sidebar.h \
player.c \
@@ -29,6 +33,8 @@
mediafile.h \
mediachooser.c \
mediachooser.h \
+ filters.c \
+ filters.h \
screensaver.c \
screensaver.h \
rc-utils.c \
@@ -40,6 +46,7 @@
-I$(top_srcdir) \
-DLOCALEDIR=\"$(localedir)\" \
-DG_LOG_DOMAIN=\"parole-media-player\" \
+ -export-dynamic \
$(GTK_CFLAGS) \
$(GLIB_CFLAGS) \
$(GOBJECT_CFLAGS) \
Modified: parole/trunk/src/builder.c
===================================================================
--- parole/trunk/src/builder.c 2009-06-10 12:16:14 UTC (rev 7524)
+++ parole/trunk/src/builder.c 2009-06-10 19:01:00 UTC (rev 7525)
@@ -33,43 +33,42 @@
#define INTERFACE_FILE INTERFACES_DIR "/parole.ui"
-G_DEFINE_TYPE (ParoleBuilder, parole_builder, GTK_TYPE_BUILDER)
-
static gpointer parole_builder_object = NULL;
-static void
-parole_builder_class_init (ParoleBuilderClass *klass)
+GtkBuilder *
+parole_builder_get_main_interface (void)
{
-
+ if ( parole_builder_object != NULL )
+ {
+ g_object_ref (parole_builder_object);
+ }
+ else
+ {
+ parole_builder_object = parole_builder_new_from_file (INTERFACE_FILE);
+ if ( G_UNLIKELY (parole_builder_object == NULL ) )
+ g_error ("Unable to load interface file from %s : Check you parole installation", INTERFACE_FILE);
+ g_object_add_weak_pointer (parole_builder_object, &parole_builder_object);
+ }
+
+ return GTK_BUILDER (parole_builder_object);
}
-static void
-parole_builder_init (ParoleBuilder *builder)
+GtkBuilder *parole_builder_new_from_file (const gchar *file)
{
+ GtkBuilder *builder;
GError *error = NULL;
+
+ builder = gtk_builder_new ();
gtk_builder_add_from_file (GTK_BUILDER (builder),
- INTERFACE_FILE,
+ file,
&error);
+
if ( error )
{
xfce_err ("%s : %s", error->message, _("Check your Parole installation"));
- g_error ("%s", error->message);
+ g_error_free (error);
}
-}
-
-GtkBuilder *
-parole_builder_new (void)
-{
- if ( parole_builder_object != NULL )
- {
- g_object_ref (parole_builder_object);
- }
- else
- {
- parole_builder_object = g_object_new (PAROLE_TYPE_BUILDER, NULL);
- g_object_add_weak_pointer (parole_builder_object, &parole_builder_object);
- }
- return GTK_BUILDER (parole_builder_object);
+ return builder;
}
Modified: parole/trunk/src/builder.h
===================================================================
--- parole/trunk/src/builder.h 2009-06-10 12:16:14 UTC (rev 7524)
+++ parole/trunk/src/builder.h 2009-06-10 19:01:00 UTC (rev 7525)
@@ -26,25 +26,10 @@
G_BEGIN_DECLS
-#define PAROLE_TYPE_BUILDER (parole_builder_get_type () )
-#define PAROLE_BUILDER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), XFMP_TYPE_BUILDER, ParoleBuilder))
-#define PAROLE_IS_BUILDER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), XFMP_TYPE_BUILDER))
+GtkBuilder *parole_builder_get_main_interface (void);
-typedef struct
-{
- GtkBuilder parent;
-
-} ParoleBuilder;
+GtkBuilder *parole_builder_new_from_file (const gchar *file);
-typedef struct
-{
- GtkBuilderClass parent_class;
-
-} ParoleBuilderClass;
-
-GType parole_builder_get_type (void) G_GNUC_CONST;
-GtkBuilder *parole_builder_new (void);
-
G_END_DECLS
#endif /* __PAROLE_BUILDER_H */
Added: parole/trunk/src/filters.c
===================================================================
--- parole/trunk/src/filters.c (rev 0)
+++ parole/trunk/src/filters.c 2009-06-10 19:01:00 UTC (rev 7525)
@@ -0,0 +1,84 @@
+/*
+ * * 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 "filters.h"
+
+/*
+ * Of course those are temporary filters.
+ */
+
+/*
+ * Supported Audio formats.
+ */
+GtkFileFilter *parole_get_supported_audio_filter (void)
+{
+ GtkFileFilter *filter;
+
+ filter = gtk_file_filter_new ();
+
+ gtk_file_filter_set_name (filter, _("Audio files"));
+
+ gtk_file_filter_add_mime_type (filter, "audio/*");
+
+ return filter;
+}
+
+/*
+ * Supported Video formats.
+ */
+GtkFileFilter *parole_get_supported_video_filter (void)
+{
+ GtkFileFilter *filter;
+
+ filter = gtk_file_filter_new ();
+
+ gtk_file_filter_set_name (filter, _("Video files"));
+
+ gtk_file_filter_add_mime_type (filter, "video/*");
+
+ return filter;
+}
+
+/*
+ * Supported Audio And Video.
+ */
+GtkFileFilter *parole_get_supported_media_filter (void)
+{
+ GtkFileFilter *filter;
+ filter = gtk_file_filter_new ();
+
+ gtk_file_filter_set_name (filter, _("Audio and video"));
+
+ gtk_file_filter_add_mime_type (filter, "video/*");
+ gtk_file_filter_add_mime_type (filter, "audio/*");
+
+ return filter;
+}
Added: parole/trunk/src/filters.h
===================================================================
--- parole/trunk/src/filters.h (rev 0)
+++ parole/trunk/src/filters.h 2009-06-10 19:01:00 UTC (rev 7525)
@@ -0,0 +1,33 @@
+/*
+ * * 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>
+
+GtkFileFilter *parole_get_supported_audio_filter (void);
+
+GtkFileFilter *parole_get_supported_video_filter (void);
+
+GtkFileFilter *parole_get_supported_media_filter (void);
+
+
+#endif /* PAROLE_FILTERS_H */
Modified: parole/trunk/src/main.c
===================================================================
--- parole/trunk/src/main.c 2009-06-10 12:16:14 UTC (rev 7524)
+++ parole/trunk/src/main.c 2009-06-10 19:01:00 UTC (rev 7525)
@@ -39,11 +39,11 @@
#include <dbus/dbus-glib.h>
#include <dbus/dbus-glib-lowlevel.h>
-#include "manager.h"
+#include "player.h"
int main (int argc, char **argv)
{
- ParoleManager *manager;
+ ParolePlayer *player;
if ( !g_thread_supported () )
g_thread_init (NULL);
@@ -51,14 +51,13 @@
gtk_init (&argc, &argv);
gst_init (&argc, &argv);
- manager = parole_manager_new ();
+ player = parole_player_new ();
gdk_notify_startup_complete ();
gtk_main ();
-
- g_object_unref (manager);
+
gst_deinit ();
-
+
return 0;
}
Modified: parole/trunk/src/mediachooser.c
===================================================================
--- parole/trunk/src/mediachooser.c 2009-06-10 12:16:14 UTC (rev 7524)
+++ parole/trunk/src/mediachooser.c 2009-06-10 19:01:00 UTC (rev 7525)
@@ -35,23 +35,27 @@
#include "mediachooser.h"
#include "builder.h"
#include "mediafile.h"
+#include "filters.h"
#include "rc-utils.h"
-#define PAROLE_MEDIA_CHOOSER_GET_PRIVATE(o) \
-(G_TYPE_INSTANCE_GET_PRIVATE ((o), PAROLE_TYPE_MEDIA_CHOOSER, ParoleMediaChooserPrivate))
+/*
+ * GtkBuilder Callbacks
+ */
+void parole_media_chooser_open (GtkWidget *widget,
+ ParoleMediaChooser *chooser);
-struct ParoleMediaChooserPrivate
-{
- GtkWidget *parent;
- GtkWidget *window;
- GtkWidget *file_chooser;
-
- GtkWidget *entry;
-
- GtkFileFilter *filter;
- gboolean open;
-};
+void parole_media_chooser_close (GtkWidget *widget,
+ ParoleMediaChooser *chooser);
+
+void media_chooser_folder_changed_cb (GtkWidget *widget,
+ gpointer data);
+void parole_media_chooser_open_location_cb (GtkButton *bt,
+ ParoleMediaChooser *chooser);
+
+#define MEDIA_CHOOSER_INTERFACE_FILE INTERFACES_DIR "/mediachooser.ui"
+#define OPEN_LOCATION_INTERFACE_FILE INTERFACES_DIR "/openlocation.ui"
+
enum
{
MEDIA_FILES_OPENED,
@@ -60,22 +64,29 @@
LAST_SIGNAL
};
-static gpointer parole_media_chooser_object = NULL;
-
static guint signals [LAST_SIGNAL] = { 0 };
-G_DEFINE_TYPE (ParoleMediaChooser, parole_media_chooser, G_TYPE_OBJECT)
+G_DEFINE_TYPE (ParoleMediaChooser, parole_media_chooser, GTK_TYPE_DIALOG)
-static void
-parole_media_chooser_close (ParoleMediaChooser *chooser)
+void
+parole_media_chooser_close (GtkWidget *widget, ParoleMediaChooser *chooser)
{
- gtk_widget_destroy (chooser->priv->window);
- chooser->priv->open = FALSE;
- chooser->priv->window = NULL;
- chooser->priv->file_chooser = NULL;
- chooser->priv->entry = NULL;
+ 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", folder);
+ g_free (folder);
+ }
+}
+
/*
* compare_by_name_using_number
*
@@ -272,7 +283,7 @@
}
static void
-parole_media_chooser_get_media_files (ParoleMediaChooser *chooser, const gchar *filename)
+parole_media_chooser_get_media_files (ParoleMediaChooser *chooser, GtkFileFilter *filter, const gchar *filename)
{
GDir *dir;
GSList *list = NULL;
@@ -282,7 +293,7 @@
if ( g_file_test (filename, G_FILE_TEST_IS_REGULAR ) )
{
file = parole_media_file_new (filename);
- if ( parole_media_chooser_filter_media (chooser->priv->filter, file) )
+ if ( parole_media_chooser_filter_media (filter, file) )
list = g_slist_append (list, file);
else
g_object_unref (file);
@@ -299,12 +310,12 @@
gchar *path = g_strdup_printf ("%s/%s", filename, name);
if ( g_file_test (path, G_FILE_TEST_IS_DIR) )
{
- parole_media_chooser_get_media_files (chooser, path);
+ parole_media_chooser_get_media_files (chooser, filter, path);
}
else if ( g_file_test (path, G_FILE_TEST_IS_REGULAR) )
{
file = parole_media_file_new (path);
- if ( parole_media_chooser_filter_media (chooser->priv->filter, file) )
+ if ( parole_media_chooser_filter_media (filter, file) )
list = g_slist_append (list, file);
else
g_object_unref (file);
@@ -320,14 +331,16 @@
}
static void
-parole_media_chooser_add_many (ParoleMediaChooser *chooser)
+parole_media_chooser_add_many (ParoleMediaChooser *chooser, GtkWidget *file_chooser)
{
GSList *files;
+ GtkFileFilter *filter;
gchar *file;
guint i;
guint len;
- files = gtk_file_chooser_get_filenames (GTK_FILE_CHOOSER (chooser->priv->file_chooser));
+ 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;
@@ -336,29 +349,32 @@
for ( i = 0; i < len; i++)
{
file = g_slist_nth_data (files, i);
- parole_media_chooser_get_media_files (chooser, file);
+ parole_media_chooser_get_media_files (chooser, filter, file);
}
g_slist_foreach (files, (GFunc) g_free, NULL);
g_slist_free (files);
}
-static void
-parole_media_chooser_open_cb (ParoleMediaChooser *chooser)
+void
+parole_media_chooser_open (GtkWidget *widget, ParoleMediaChooser *chooser)
{
ParoleMediaFile *file;
+ GtkWidget *file_chooser;
gboolean multiple;
gchar *filename;
+
+ file_chooser = GTK_WIDGET (g_object_get_data (G_OBJECT (chooser), "file-chooser"));
- multiple = gtk_file_chooser_get_select_multiple (GTK_FILE_CHOOSER (chooser->priv->file_chooser));
+ multiple = gtk_file_chooser_get_select_multiple (GTK_FILE_CHOOSER (file_chooser));
/*
* Emit one file opened
*/
if ( multiple == FALSE )
{
- filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (chooser->priv->file_chooser ));
- parole_media_chooser_close (chooser);
+ filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (file_chooser));
+ parole_media_chooser_close (NULL, chooser);
if ( G_LIKELY (filename != NULL ) )
{
file = parole_media_file_new (filename);
@@ -368,202 +384,104 @@
}
else
{
- parole_media_chooser_add_many (chooser);
- parole_media_chooser_close (chooser);
+ parole_media_chooser_add_many (chooser, file_chooser);
+ parole_media_chooser_close (NULL, chooser);
}
}
-static void
-parole_media_chooser_open_location_cb (ParoleMediaChooser *chooser)
+void
+parole_media_chooser_open_location_cb (GtkButton *bt, ParoleMediaChooser *chooser)
{
ParoleMediaFile *file;
+ GtkWidget *entry;
const gchar *location;
- location = gtk_entry_get_text (GTK_ENTRY (chooser->priv->entry));
+ entry = GTK_WIDGET (g_object_get_data (G_OBJECT (chooser), "entry"));
+ location = gtk_entry_get_text (GTK_ENTRY (entry));
- if ( !location )
- return;
+ if ( !location || strlen (location) == 0)
+ goto out;
TRACE ("Location %s", location);
file = parole_media_file_new (location);
- parole_media_chooser_close (chooser);
g_signal_emit (G_OBJECT (chooser), signals [MEDIA_FILE_OPENED], 0, file);
+out:
+ parole_media_chooser_close (NULL, chooser);
}
static void
-parole_media_chooser_current_folder_changed_cb (GtkWidget *widget, gpointer data)
+parole_media_chooser_open_internal (GtkWidget *chooser, gboolean multiple)
{
- gchar *folder;
- folder = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (widget));
-
- if ( folder )
- {
- parole_rc_write_entry_string ("media-chooser-folder", folder);
- g_free (folder);
- }
-}
+ ParoleMediaChooser *media_chooser;
+ GtkWidget *vbox;
+ GtkWidget *file_chooser;
+ GtkBuilder *builder;
+ GtkWidget *open;
+ GtkWidget *img;
+ const gchar *folder;
-static GtkWidget *
-parole_media_chooser_create_chooser (gboolean multiple)
-{
- GtkWidget *chooser;
- GtkFileFilter *filter;
- const gchar *folder;
+ media_chooser = PAROLE_MEDIA_CHOOSER (chooser);
- chooser = gtk_file_chooser_widget_new (GTK_FILE_CHOOSER_ACTION_OPEN);
+ builder = parole_builder_new_from_file (MEDIA_CHOOSER_INTERFACE_FILE);
- gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER (chooser), TRUE);
+ file_chooser = GTK_WIDGET (gtk_builder_get_object (builder, "filechooserwidget"));
- filter = gtk_file_filter_new ();
+ vbox = GTK_WIDGET (gtk_builder_get_object (builder, "vbox"));
+ open = GTK_WIDGET (gtk_builder_get_object (builder, "open"));
- gtk_file_filter_set_name (filter, _("Audio and video"));
-
- gtk_file_filter_add_mime_type (filter, "video/*");
- gtk_file_filter_add_mime_type (filter, "audio/*");
-
- gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), filter);
+ gtk_window_set_title (GTK_WINDOW (chooser), multiple == TRUE ? _("Add media files") : _("Open media file"));
+ 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 ());
+
folder = parole_rc_read_entry_string ("media-chooser-folder", NULL);
if ( folder )
- gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (chooser), folder);
+ gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (file_chooser), folder);
- gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER (chooser), multiple);
-
- g_signal_connect (chooser, "current-folder-changed",
- G_CALLBACK (parole_media_chooser_current_folder_changed_cb), NULL);
- return chooser;
-}
-
-static GtkWidget *
-parole_media_chooser_create_chooser_window (GtkWidget *parent, gboolean multiple, gboolean local)
-{
- GtkWidget *window;
+ gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER (file_chooser), multiple);
- window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
- if ( local )
- {
- gtk_window_set_title (GTK_WINDOW (window), multiple == TRUE ? _("Add media files") : _("Open media file"));
- gtk_window_set_default_size (GTK_WINDOW (window), 680, 480);
- }
- else
- {
- gtk_window_set_title (GTK_WINDOW (window), _("Open location"));
- }
+ img = gtk_image_new_from_stock (multiple ? GTK_STOCK_ADD : GTK_STOCK_OPEN, GTK_ICON_SIZE_BUTTON);
- gtk_window_set_transient_for (GTK_WINDOW (window), GTK_WINDOW (parent));
- gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER_ON_PARENT);
+ g_object_set (G_OBJECT (open),
+ "image", img,
+ "label", multiple ? _("Add") : _("Open"),
+ NULL);
- return window;
-}
-
-static void
-parole_media_chooser_open_internal (ParoleMediaChooser *chooser, gboolean multiple)
-{
- GtkWidget *window;
- GtkWidget *file_chooser;
- GtkWidget *frame;
- GtkWidget *vbox;
- GtkWidget *bbox;
- GtkWidget *open_w;
- GtkWidget *close_w;
+ g_object_set_data (G_OBJECT (chooser), "file-chooser", file_chooser);
- file_chooser = parole_media_chooser_create_chooser (multiple);
- window = parole_media_chooser_create_chooser_window (chooser->priv->parent, multiple, TRUE);
-
- frame = gtk_frame_new (NULL);
-
- vbox = gtk_vbox_new (FALSE, 0);
- gtk_container_add (GTK_CONTAINER (window), frame);
- gtk_container_add (GTK_CONTAINER (frame), vbox);
-
- gtk_box_pack_start (GTK_BOX (vbox), file_chooser, TRUE, TRUE, 4);
-
- bbox = gtk_hbutton_box_new ();
- gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_END);
- gtk_box_set_spacing (GTK_BOX (bbox), 6);
-
- gtk_box_pack_end (GTK_BOX (vbox), bbox, FALSE, FALSE, 4);
-
- open_w = gtk_button_new_from_stock (multiple ? GTK_STOCK_ADD : GTK_STOCK_OPEN);
- close_w = gtk_button_new_from_stock (GTK_STOCK_CLOSE);
-
- gtk_container_add (GTK_CONTAINER (bbox), close_w);
- gtk_container_add (GTK_CONTAINER (bbox), open_w);
-
-
- g_signal_connect_swapped (file_chooser, "file-activated",
- G_CALLBACK (gtk_widget_activate), open_w);
-
- g_signal_connect_swapped (open_w, "clicked",
- G_CALLBACK (parole_media_chooser_open_cb), chooser);
+ gtk_container_add (GTK_CONTAINER (GTK_DIALOG (media_chooser)->vbox), vbox);
+ gtk_builder_connect_signals (builder, chooser);
+ g_signal_connect (chooser, "destroy",
+ G_CALLBACK (parole_media_chooser_close), chooser);
- g_signal_connect_swapped (close_w, "clicked",
- G_CALLBACK (parole_media_chooser_close), chooser);
-
- g_signal_connect_swapped (window, "destroy",
- G_CALLBACK (parole_media_chooser_close), chooser);
-
- chooser->priv->window = window;
- chooser->priv->file_chooser = file_chooser;
- chooser->priv->open = TRUE;
-
- gtk_widget_show_all (window);
+ g_object_unref (builder);
}
static void
-parole_media_chooser_open_location_internal (ParoleMediaChooser *chooser)
+parole_media_chooser_open_location_internal (GtkWidget *chooser)
{
- GtkWidget *window;
- GtkWidget *box;
- GtkWidget *label;
+ GtkBuilder *builder;
+ GtkWidget *vbox;
+ GtkWidget *open;
GtkWidget *entry;
- GtkWidget *bbox;
- GtkWidget *open_w;
- GtkWidget *close_w;
- window = parole_media_chooser_create_chooser_window (chooser->priv->parent, FALSE, FALSE);
+ builder = parole_builder_new_from_file (OPEN_LOCATION_INTERFACE_FILE);
- box = gtk_vbox_new (FALSE, 8);
+ vbox = GTK_WIDGET (gtk_builder_get_object (builder, "vbox"));
+ entry = GTK_WIDGET (gtk_builder_get_object (builder, "entry"));
+ open = GTK_WIDGET (gtk_builder_get_object (builder, "open"));
- gtk_container_add (GTK_CONTAINER (window), box);
+ g_object_set_data (G_OBJECT (chooser), "entry", entry);
- label = gtk_label_new (_("Open location of media file or live stream"));
+ gtk_container_add (GTK_CONTAINER (GTK_DIALOG (chooser)->vbox), vbox);
- gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 0);
-
- entry = gtk_entry_new ();
-
- gtk_box_pack_start (GTK_BOX (box), entry, FALSE, FALSE, 0);
-
- bbox = gtk_hbutton_box_new ();
- gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_END);
- gtk_box_set_spacing (GTK_BOX (bbox), 6);
-
- gtk_box_pack_end (GTK_BOX (box), bbox, FALSE, FALSE, 4);
-
- open_w = gtk_button_new_from_stock (GTK_STOCK_OK);
- close_w = gtk_button_new_from_stock (GTK_STOCK_CLOSE);
-
- gtk_container_add (GTK_CONTAINER (bbox), close_w);
- gtk_container_add (GTK_CONTAINER (bbox), open_w);
-
-
- g_signal_connect_swapped (open_w, "clicked",
- G_CALLBACK (parole_media_chooser_open_location_cb), chooser);
-
- g_signal_connect_swapped (close_w, "clicked",
- G_CALLBACK (parole_media_chooser_close), chooser);
-
- g_signal_connect_swapped (window, "destroy",
- G_CALLBACK (parole_media_chooser_close), chooser);
-
- chooser->priv->window = window;
- chooser->priv->open = TRUE;
- chooser->priv->entry = entry;
-
- gtk_widget_show_all (window);
+ gtk_builder_connect_signals (builder, chooser);
+ g_signal_connect (chooser, "destroy",
+ G_CALLBACK (parole_media_chooser_close), chooser);
+ g_object_unref (builder);
}
static void
@@ -600,58 +518,46 @@
G_TYPE_NONE, 1, G_TYPE_OBJECT);
object_class->finalize = parole_media_chooser_finalize;
-
- g_type_class_add_private (klass, sizeof (ParoleMediaChooserPrivate));
}
static void
parole_media_chooser_init (ParoleMediaChooser *chooser)
{
- GtkBuilder *builder;
-
- chooser->priv = PAROLE_MEDIA_CHOOSER_GET_PRIVATE (chooser);
-
- builder = parole_builder_new ();
-
- chooser->priv->parent = GTK_WIDGET (gtk_builder_get_object (builder, "main-window"));
-
- chooser->priv->filter = gtk_file_filter_new ();
- gtk_file_filter_add_mime_type (chooser->priv->filter, "video/*");
- gtk_file_filter_add_mime_type (chooser->priv->filter, "audio/*");
+ gtk_window_set_modal (GTK_WINDOW (chooser), TRUE);
}
-ParoleMediaChooser *
-parole_media_chooser_new (void)
+static GtkWidget *
+parole_media_chooser_new (GtkWidget *parent)
{
- if ( parole_media_chooser_object )
- {
- g_object_ref (parole_media_chooser_object);
- }
- else
- {
- parole_media_chooser_object = g_object_new (PAROLE_TYPE_MEDIA_CHOOSER, NULL);
- g_object_add_weak_pointer (parole_media_chooser_object, &parole_media_chooser_object);
- }
-
- return PAROLE_MEDIA_CHOOSER (parole_media_chooser_object);
+ ParoleMediaChooser *chooser;
+
+ chooser = g_object_new (PAROLE_TYPE_MEDIA_CHOOSER, NULL);
+
+ if ( parent )
+ gtk_window_set_transient_for (GTK_WINDOW (chooser), GTK_WINDOW (parent));
+
+ return GTK_WIDGET (chooser);
}
-void parole_media_chooser_open (ParoleMediaChooser *chooser, gboolean multiple)
+GtkWidget *parole_media_chooser_open_local (GtkWidget *parent, gboolean multiple)
{
- g_return_if_fail (PAROLE_IS_MEDIA_CHOOSER (chooser));
+ GtkWidget *dialog;
- if ( chooser->priv->open )
- return;
+ dialog = parole_media_chooser_new (parent);
- parole_media_chooser_open_internal (chooser, multiple);
+ parole_media_chooser_open_internal (dialog, multiple);
+ gtk_window_set_default_size (GTK_WINDOW (dialog), 680, 480);
+
+ return dialog;
}
-void parole_media_chooser_open_location (ParoleMediaChooser *chooser)
+GtkWidget *parole_media_chooser_open_location (GtkWidget *parent)
{
- g_return_if_fail (PAROLE_IS_MEDIA_CHOOSER (chooser));
+ GtkWidget *dialog;
- if ( chooser->priv->open )
- return;
+ dialog = parole_media_chooser_new (parent);
- parole_media_chooser_open_location_internal (chooser);
+ parole_media_chooser_open_location_internal (dialog);
+
+ return dialog;
}
Modified: parole/trunk/src/mediachooser.h
===================================================================
--- parole/trunk/src/mediachooser.h 2009-06-10 12:16:14 UTC (rev 7524)
+++ parole/trunk/src/mediachooser.h 2009-06-10 19:01:00 UTC (rev 7525)
@@ -22,6 +22,8 @@
#define __PAROLE_MEDIA_CHOOSER_H
#include <glib-object.h>
+#include <gtk/gtk.h>
+
#include "mediafile.h"
G_BEGIN_DECLS
@@ -34,14 +36,13 @@
typedef struct
{
- GObject parent;
- ParoleMediaChooserPrivate *priv;
+ GtkDialog parent;
} ParoleMediaChooser;
typedef struct
{
- GObjectClass parent_class;
+ GtkDialogClass parent_class;
void (*media_files_opened) (ParoleMediaChooser *chooser,
GPtrArray *array);
@@ -52,12 +53,11 @@
} ParoleMediaChooserClass;
GType parole_media_chooser_get_type (void) G_GNUC_CONST;
-ParoleMediaChooser *parole_media_chooser_new (void);
-void parole_media_chooser_open (ParoleMediaChooser *chooser,
+GtkWidget *parole_media_chooser_open_local (GtkWidget *parent,
gboolean multiple);
-void parole_media_chooser_open_location (ParoleMediaChooser *chooser);
+GtkWidget *parole_media_chooser_open_location (GtkWidget *parent);
G_END_DECLS
Modified: parole/trunk/src/medialist.c
===================================================================
--- parole/trunk/src/medialist.c 2009-06-10 12:16:14 UTC (rev 7524)
+++ parole/trunk/src/medialist.c 2009-06-10 19:01:00 UTC (rev 7525)
@@ -37,6 +37,39 @@
#include "mediachooser.h"
#include "builder.h"
+/*
+ * 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_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);
+
+void parole_media_list_cursor_changed_cb (GtkTreeView *view,
+ ParoleMediaList *list);
+
+gboolean parole_media_list_button_release_event (GtkWidget *widget,
+ GdkEventButton *ev,
+ ParoleMediaList *list);
+/*
+ * End of GtkBuilder callbacks
+ */
+
+
+#define PLAYLIST_FILE INTERFACES_DIR "/playlist.ui"
+
#define PAROLE_MEDIA_LIST_GET_PRIVATE(o) \
(G_TYPE_INSTANCE_GET_PRIVATE ((o), PAROLE_TYPE_MEDIA_LIST, ParoleMediaListPrivate))
@@ -44,12 +77,7 @@
{
GtkWidget *view;
GtkWidget *box;
-
- GtkWidget *hide_show;
- gboolean hidden;
-
GtkListStore *store;
- ParoleMediaChooser *chooser;
};
enum
@@ -61,7 +89,7 @@
static guint signals [LAST_SIGNAL] = { 0 };
-G_DEFINE_TYPE (ParoleMediaList, parole_media_list, G_TYPE_OBJECT)
+G_DEFINE_TYPE (ParoleMediaList, parole_media_list, GTK_TYPE_VBOX)
static void
parole_media_list_add (ParoleMediaList *list, ParoleMediaFile *file, gboolean emit)
@@ -117,14 +145,45 @@
}
static void
-parole_media_list_add_clicked_cb (ParoleMediaList *list)
+parole_media_list_open_internal (ParoleMediaList *list, gboolean multiple)
{
- parole_media_chooser_open (list->priv->chooser, TRUE);
+ GtkWidget *chooser;
+
+ chooser = parole_media_chooser_open_local (gtk_widget_get_toplevel (GTK_WIDGET (list)),
+ multiple);
+
+ if ( multiple )
+ g_signal_connect (G_OBJECT (chooser), "media_files_opened",
+ G_CALLBACK (parole_media_list_files_opened_cb), list);
+ else
+ g_signal_connect (G_OBJECT (chooser), "media_file_opened",
+ G_CALLBACK (parole_media_list_file_opened_cb), list);
+
+ gtk_widget_show_all (GTK_WIDGET (chooser));
}
static void
-parole_media_list_remove_clicked_cb (ParoleMediaList *list)
+parole_media_list_open_location_internal (ParoleMediaList *list)
{
+ GtkWidget *chooser;
+
+ chooser = parole_media_chooser_open_location (gtk_widget_get_toplevel (GTK_WIDGET (list)));
+
+ g_signal_connect (G_OBJECT (chooser), "media_file_opened",
+ G_CALLBACK (parole_media_list_file_opened_cb), list);
+
+ gtk_widget_show_all (GTK_WIDGET (chooser));
+}
+
+void
+parole_media_list_add_clicked_cb (GtkButton *button, ParoleMediaList *list)
+{
+ parole_media_list_open_internal (list, TRUE);
+}
+
+void
+parole_media_list_remove_clicked_cb (GtkButton *button, ParoleMediaList *list)
+{
GtkTreeSelection *sel;
GtkTreeIter iter;
@@ -149,8 +208,8 @@
g_signal_emit (G_OBJECT (list), signals [MEDIA_CURSOR_CHANGED], 0, FALSE);
}
-static void
-parole_media_list_media_down_clicked_cb (ParoleMediaList *list)
+void
+parole_media_list_media_down_clicked_cb (GtkButton *button, ParoleMediaList *list)
{
GtkTreeSelection *sel;
GtkTreeIter iter;
@@ -181,8 +240,8 @@
gtk_tree_iter_free (pos_iter);
}
-static void
-parole_media_list_media_up_clicked_cb (ParoleMediaList *list)
+void
+parole_media_list_media_up_clicked_cb (GtkButton *button, ParoleMediaList *list)
{
GtkTreeSelection *sel;
GtkTreeIter iter;
@@ -216,9 +275,9 @@
gtk_tree_iter_free (pos_iter);
}
-static void
-parole_media_list_row_activated (GtkTreeView *view, GtkTreePath *path,
- GtkTreeViewColumn *col, ParoleMediaList *list)
+void
+parole_media_list_row_activated_cb (GtkTreeView *view, GtkTreePath *path,
+ GtkTreeViewColumn *col, ParoleMediaList *list)
{
GtkTreeModel *model;
GtkTreeRowReference *row;
@@ -231,7 +290,7 @@
g_signal_emit (G_OBJECT (list), signals [MEDIA_ACTIVATED], 0, row);
}
-static void
+void
parole_media_list_cursor_changed_cb (GtkTreeView *view, ParoleMediaList *list)
{
GtkTreeSelection *sel;
@@ -279,10 +338,9 @@
button, activate_time);
}
-static gboolean
+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);
@@ -299,8 +357,6 @@
list = PAROLE_MEDIA_LIST (object);
- g_object_unref (list->priv->chooser);
-
G_OBJECT_CLASS (parole_media_list_parent_class)->finalize (object);
}
@@ -359,106 +415,45 @@
gtk_tree_view_append_column (GTK_TREE_VIEW (list->priv->view), col);
gtk_tree_view_column_set_title (col, _("Media list"));
- g_signal_connect (G_OBJECT (list->priv->view), "row_activated",
- G_CALLBACK (parole_media_list_row_activated), list);
-
- g_signal_connect (G_OBJECT (list->priv->view), "cursor_changed",
- G_CALLBACK (parole_media_list_cursor_changed_cb), list);
-
- g_signal_connect (G_OBJECT (list->priv->view), "button_release_event",
- G_CALLBACK (parole_media_list_button_release_event), list);
-
list->priv->store = list_store;
}
static void
-parole_media_show_or_hide (ParoleMediaList *list)
-{
- GtkWidget *img;
-
- g_object_get (G_OBJECT (list->priv->hide_show),
- "image", &img,
- NULL);
-
- if ( list->priv->hidden )
- {
- g_object_set (G_OBJECT (img),
- "stock", GTK_STOCK_GO_FORWARD,
- NULL);
-
- list->priv->hidden = FALSE;
- gtk_widget_show_all (list->priv->box);
- gtk_widget_set_tooltip_text (GTK_WIDGET (list->priv->hide_show), _("Hide playlist"));
- }
- else
- {
- g_object_set (G_OBJECT (img),
- "stock", GTK_STOCK_GO_BACK,
- NULL);
-
- gtk_widget_hide_all (list->priv->box);
- gtk_widget_set_tooltip_text (GTK_WIDGET (list->priv->hide_show), _("Show playlist"));
-
- list->priv->hidden = TRUE;
- }
- g_object_unref (img);
-}
-
-static void
parole_media_list_init (ParoleMediaList *list)
{
GtkBuilder *builder;
+ GtkWidget *box;
list->priv = PAROLE_MEDIA_LIST_GET_PRIVATE (list);
- list->priv->hidden = TRUE;
+ builder = parole_builder_new_from_file (PLAYLIST_FILE);
- builder = parole_builder_new ();
-
list->priv->view = GTK_WIDGET (gtk_builder_get_object (builder, "media-list"));
- list->priv->box = GTK_WIDGET (gtk_builder_get_object (builder, "list-box"));
+ box = GTK_WIDGET (gtk_builder_get_object (builder, "playlist-box"));
parole_media_list_setup_view (list);
-
- g_signal_connect_swapped (gtk_builder_get_object (builder, "add-media"), "clicked",
- G_CALLBACK (parole_media_list_add_clicked_cb), list);
- g_signal_connect_swapped (gtk_builder_get_object (builder, "remove-media"), "clicked",
- G_CALLBACK (parole_media_list_remove_clicked_cb), list);
-
- g_signal_connect_swapped (gtk_builder_get_object (builder, "media-down"), "clicked",
- G_CALLBACK (parole_media_list_media_down_clicked_cb), list);
-
- g_signal_connect_swapped (gtk_builder_get_object (builder, "media-up"), "clicked",
- G_CALLBACK (parole_media_list_media_up_clicked_cb), list);
-
- list->priv->hide_show = GTK_WIDGET (gtk_builder_get_object (builder, "show-hide-list"));
-
- parole_media_show_or_hide (list);
-
- g_signal_connect_swapped (G_OBJECT (list->priv->hide_show), "clicked",
- G_CALLBACK (parole_media_show_or_hide), list);
-
+ gtk_builder_connect_signals (builder, list);
- list->priv->chooser = parole_media_chooser_new ();
-
- g_signal_connect (G_OBJECT (list->priv->chooser), "media_file_opened",
- G_CALLBACK (parole_media_list_file_opened_cb), list);
-
- g_signal_connect (G_OBJECT (list->priv->chooser), "media_files_opened",
- G_CALLBACK (parole_media_list_files_opened_cb), list);
-
+ gtk_box_pack_start (GTK_BOX (list), box, TRUE, TRUE, 0);
+
g_object_unref (builder);
+
+ gtk_widget_show_all (GTK_WIDGET (list));
}
-ParoleMediaList *
+GtkWidget *
parole_media_list_new (void)
{
ParoleMediaList *list = NULL;
list = g_object_new (PAROLE_TYPE_MEDIA_LIST, NULL);
- return list;
+ return GTK_WIDGET (list);
}
+/*
+ * Public functions.
+ *
+ */
GtkTreeRowReference *parole_media_list_get_next_row (ParoleMediaList *list, GtkTreeRowReference *row)
{
GtkTreeRowReference *next;
@@ -524,20 +519,12 @@
}
}
-/*
- * Called by ParolePlay when going to full screen mode
- */
-void parole_media_list_set_visible (ParoleMediaList *list, gboolean visible)
+void parole_media_list_open (ParoleMediaList *list, gboolean multiple)
{
- if ( visible )
- {
- if ( !list->priv->hidden )
- gtk_widget_show_all (GTK_WIDGET (list->priv->box));
- gtk_widget_show (list->priv->hide_show);
- }
- else
- {
- gtk_widget_hide_all (GTK_WIDGET (list->priv->box));
- gtk_widget_hide (list->priv->hide_show);
- }
+ parole_media_list_open_internal (list, multiple);
}
+
+void parole_media_list_open_location (ParoleMediaList *list)
+{
+ parole_media_list_open_location_internal (list);
+}
Modified: parole/trunk/src/medialist.h
===================================================================
--- parole/trunk/src/medialist.h 2009-06-10 12:16:14 UTC (rev 7524)
+++ parole/trunk/src/medialist.h 2009-06-10 19:01:00 UTC (rev 7525)
@@ -42,14 +42,15 @@
typedef struct
{
- GObject parent;
+ GtkVBox parent;
+
ParoleMediaListPrivate *priv;
} ParoleMediaList;
typedef struct
{
- GObjectClass parent_class;
+ GtkVBoxClass parent_class;
void (*media_activated) (ParoleMediaList *list,
GtkTreeRowReference *row);
@@ -60,8 +61,9 @@
} ParoleMediaListClass;
GType parole_media_list_get_type (void) G_GNUC_CONST;
-ParoleMediaList *parole_media_list_new (void);
+GtkWidget *parole_media_list_new (void);
+
GtkTreeRowReference *parole_media_list_get_selected_row (ParoleMediaList *list);
GtkTreeRowReference *parole_media_list_get_next_row (ParoleMediaList *list,
@@ -71,9 +73,10 @@
GtkTreeRowReference *row,
GdkPixbuf *pix);
-void parole_media_list_set_visible (ParoleMediaList *list,
- gboolean visible);
+void parole_media_list_open (ParoleMediaList *list,
+ gboolean multiple);
+void parole_media_list_open_location (ParoleMediaList *list);
G_END_DECLS
#endif /* __PAROLE_MEDIA_LIST_H */
Modified: parole/trunk/src/player.c
===================================================================
--- parole/trunk/src/player.c 2009-06-10 12:16:14 UTC (rev 7524)
+++ parole/trunk/src/player.c 2009-06-10 19:01:00 UTC (rev 7525)
@@ -26,17 +26,18 @@
#include <stdlib.h>
#include <string.h>
+#include <gdk/gdkkeysyms.h>
+#include <gtk/gtk.h>
+
#include <libxfce4util/libxfce4util.h>
#include <libxfcegui4/libxfcegui4.h>
-#include <gtk/gtk.h>
-
#include "player.h"
#include "builder.h"
#include "gst.h"
#include "medialist.h"
+#include "mediachooser.h"
#include "mediafile.h"
-#include "mediachooser.h"
#include "sidebar.h"
#include "statusbar.h"
#include "screensaver.h"
@@ -45,14 +46,76 @@
#include "enum-gtypes.h"
#include "debug.h"
+/*
+ * GtkBuilder Callbacks
+ */
+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_destroy_cb (GtkObject *window,
+ ParolePlayer *player);
+
+void parole_player_show_hide_playlist (GtkButton *button,
+ ParolePlayer *player);
+
+/*Menu items callbacks*/
+void parole_player_menu_open_cb (GtkWidget *widget,
+ ParolePlayer *player);
+
+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_value_changed_cb (GtkRange *range,
+ ParolePlayer *player);
+
+void parole_player_full_screen_activated_cb (GtkWidget *widget,
+ ParolePlayer *player);
+
+gboolean parole_player_key_press (GtkWidget *widget,
+ GdkEventKey *ev,
+ ParolePlayer *player);
+/*
+ * End of GtkBuilder Callbacks
+ */
+
+#define INTERFACE_FILE INTERFACES_DIR "/parole.ui"
+
#define PAROLE_PLAYER_GET_PRIVATE(o) \
(G_TYPE_INSTANCE_GET_PRIVATE ((o), PAROLE_TYPE_PLAYER, ParolePlayerPrivate))
struct ParolePlayerPrivate
{
+ ParoleMediaList *list;
+ ParoleSidebar *sidebar;
+ ParoleStatusbar *status;
+ ParoleScreenSaver *screen_saver;
+
GtkWidget *gst;
+
GtkWidget *window;
-
+ GtkWidget *playlist_box;
+ GtkWidget *show_hide_playlist;
GtkWidget *play_pause;
GtkWidget *stop;
GtkWidget *range;
@@ -61,7 +124,7 @@
GtkWidget *volume_image;
GtkWidget *menu_bar;
GtkWidget *play_box;
-
+
gboolean exit;
gboolean full_screen;
@@ -72,15 +135,43 @@
gboolean buffering;
GtkTreeRowReference *row;
-
- ParoleMediaList *list;
- ParoleSidebar *sidebar;
- ParoleStatusbar *status;
- ParoleScreenSaver *screen_saver;
+
};
G_DEFINE_TYPE (ParolePlayer, parole_player, G_TYPE_OBJECT)
+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_box);
+
+ if ( !visible )
+ {
+ g_object_set (G_OBJECT (img),
+ "stock", GTK_STOCK_GO_FORWARD,
+ NULL);
+
+ gtk_widget_show_all (player->priv->playlist_box);
+ 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_box);
+ 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)
{
@@ -154,9 +245,27 @@
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_playing (ParolePlayer *player, const ParoleStream *stream)
{
GdkPixbuf *pix = NULL;
@@ -168,21 +277,21 @@
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_PAUSE);
-
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 )
{
- parole_statusbar_set_duration (player->priv->status, duration );
+ parole_statusbar_set_duration (player->priv->status, duration);
gtk_range_set_range (GTK_RANGE (player->priv->range), 0, duration);
}
else
@@ -223,8 +332,8 @@
static void
parole_player_quit (ParolePlayer *player)
{
+ gtk_widget_destroy (player->priv->window);
g_object_unref (player);
- gtk_widget_destroy (player->priv->window);
gtk_main_quit ();
}
@@ -299,6 +408,11 @@
PAROLE_DEBUG_ENUM ("State callback", state, ENUM_GTYPE_MEDIA_STATE);
+ 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);
+
g_object_get (G_OBJECT (stream),
"has-video", &has_video,
NULL);
@@ -320,17 +434,11 @@
else
{
parole_player_stopped (player);
- }
-
- 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);
-
+ }
}
-static void
-parole_player_play_pause_clicked (ParolePlayer *player)
+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));
@@ -340,13 +448,13 @@
parole_player_play_selected_row (player);
}
-static void
-parole_player_stop_clicked (ParolePlayer *player)
+void
+parole_player_stop_clicked (GtkButton *button, ParolePlayer *player)
{
parole_gst_stop (PAROLE_GST (player->priv->gst));
}
-static gboolean
+gboolean
parole_player_range_button_release (GtkWidget *widget, GdkEventButton *ev, ParolePlayer *player)
{
if ( ev->button == 3 )
@@ -357,7 +465,7 @@
return FALSE;
}
-static gboolean
+gboolean
parole_player_range_button_press (GtkWidget *widget, GdkEventButton *ev, ParolePlayer *player)
{
gdouble value;
@@ -372,7 +480,7 @@
return FALSE;
}
-static void
+void
parole_player_range_value_changed (GtkRange *range, ParolePlayer *player)
{
gdouble value;
@@ -390,8 +498,8 @@
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);
- parole_screen_saver_uninhibit (player->priv->screen_saver);
}
static void
@@ -411,7 +519,7 @@
}
}
-static void
+void
parole_player_destroy_cb (GtkObject *window, ParolePlayer *player)
{
player->priv->exit = TRUE;
@@ -447,26 +555,33 @@
{
if ( player->priv->full_screen )
{
- parole_media_list_set_visible (player->priv->list, TRUE);
+
parole_sidebar_set_visible (player->priv->sidebar, TRUE);
parole_statusbar_set_visible (player->priv->status, TRUE);
+ gtk_widget_show (player->priv->play_box);
gtk_widget_show (player->priv->menu_bar);
- gtk_widget_show (player->priv->play_box);
+ gtk_widget_show (player->priv->playlist_box);
+ gtk_window_unfullscreen (GTK_WINDOW (player->priv->window));
player->priv->full_screen = FALSE;
- gtk_window_unfullscreen (GTK_WINDOW (player->priv->window));
}
else
{
- parole_media_list_set_visible (player->priv->list, FALSE);
+
parole_sidebar_set_visible (player->priv->sidebar, FALSE);
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->play_box);
+ gtk_widget_hide (player->priv->playlist_box);
+ gtk_window_fullscreen (GTK_WINDOW (player->priv->window));
player->priv->full_screen = TRUE;
- gtk_window_fullscreen (GTK_WINDOW (player->priv->window));
}
}
+void parole_player_full_screen_activated_cb (GtkWidget *widget, ParolePlayer *player)
+{
+ parole_player_full_screen_menu_item_activate (player);
+}
+
static void
parole_player_show_menu (ParolePlayer *player, guint button, guint activate_time)
{
@@ -573,47 +688,27 @@
return FALSE;
}
-static void
-parole_player_open_media_chooser (gboolean multiple)
+void
+parole_player_menu_open_cb (GtkWidget *widget, ParolePlayer *player)
{
- ParoleMediaChooser *chooser;
-
- chooser = parole_media_chooser_new ();
-
- parole_media_chooser_open (chooser, multiple);
-
- /*
- * We drop the reference here as the object is
- * referenced in the medialist which will send events
- * about media files added by the media chooser.
- */
- g_object_unref (chooser);
+ parole_media_list_open (player->priv->list, FALSE);
}
-static void
-parole_player_menu_open_cb (ParolePlayer *player)
+void
+parole_player_menu_open_location_cb (GtkWidget *widget, ParolePlayer *player)
{
- parole_player_open_media_chooser (FALSE);
+ parole_media_list_open_location (player->priv->list);
}
-static void
-parole_player_menu_open_location_cb (ParolePlayer *player)
+void
+parole_player_menu_add_cb (GtkWidget *widget, ParolePlayer *player)
{
- ParoleMediaChooser *chooser;
- chooser = parole_media_chooser_new ();
- parole_media_chooser_open_location (chooser);
- g_object_unref (chooser);
+ parole_media_list_open (player->priv->list, TRUE);
}
-static void
-parole_player_menu_add_cb (ParolePlayer *player)
+void
+parole_player_menu_exit_cb (GtkWidget *widget, ParolePlayer *player)
{
- parole_player_open_media_chooser (TRUE);
-}
-
-static void
-parole_player_menu_exit_cb (ParolePlayer *player)
-{
parole_player_destroy_cb (NULL, player);
}
@@ -631,15 +726,12 @@
}
static void
-parole_player_change_volume (ParolePlayer *player, gdouble value)
+parole_player_set_volume_image (ParolePlayer *player, gdouble value)
{
GdkPixbuf *icon;
- parole_gst_set_volume (PAROLE_GST (player->priv->gst), value);
-
icon = xfce_themed_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),
@@ -650,10 +742,17 @@
}
static void
-parole_player_volume_value_changed_cb (ParolePlayer *player)
+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 (GTK_RANGE (player->priv->volume));
+ value = gtk_range_get_value (range);
parole_player_change_volume (player, value);
parole_rc_write_entry_int ("volume", (gint)(value * 100));
}
@@ -667,7 +766,6 @@
TRACE ("start");
- g_object_unref (player->priv->list);
g_object_unref (player->priv->gst);
g_object_unref (player->priv->sidebar);
g_object_unref (player->priv->status);
@@ -686,6 +784,18 @@
g_type_class_add_private (klass, sizeof (ParolePlayerPrivate));
}
+gboolean
+parole_player_key_press (GtkWidget *widget, GdkEventKey *ev, ParolePlayer *player)
+{
+ if ( ev->keyval == GDK_F11 )
+ {
+ parole_player_full_screen_menu_item_activate (player);
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
static void
parole_player_init (ParolePlayer *player)
{
@@ -693,19 +803,20 @@
player->priv = PAROLE_PLAYER_GET_PRIVATE (player);
- builder = parole_builder_new ();
+ builder = parole_builder_get_main_interface ();
player->priv->gst = parole_gst_new ();
/*
* Since ParoleGst is derived from GtkWidget and packed in the media output
* box the destroy event on the window will destroy the ParoleGst widget
- * se we ref it to clean up the gst objects before quitting.
+ * so we ref it to clean up the gst objects before quitting.
*/
g_object_ref (player->priv->gst);
player->priv->sidebar = parole_sidebar_new ();
player->priv->status = parole_statusbar_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;
@@ -713,7 +824,11 @@
player->priv->exit = FALSE;
player->priv->full_screen = FALSE;
player->priv->buffering = FALSE;
+ player->priv->row = NULL;
+ /*
+ * Gst signals
+ */
g_signal_connect (G_OBJECT (player->priv->gst), "media_state",
G_CALLBACK (parole_player_media_state_cb), player);
@@ -732,81 +847,58 @@
g_signal_connect (G_OBJECT (player->priv->gst), "motion_notify_event",
G_CALLBACK (parole_player_gst_widget_motion_notify_event), player);
- player->priv->row = NULL;
-
- 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);
-
player->priv->window = GTK_WIDGET (gtk_builder_get_object (builder, "main-window"));
- g_signal_connect (G_OBJECT (player->priv->window), "destroy",
- G_CALLBACK (parole_player_destroy_cb), player);
-
+ 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->play_pause = GTK_WIDGET (gtk_builder_get_object (builder, "play-pause"));
player->priv->range = GTK_WIDGET (gtk_builder_get_object (builder, "scale"));
- g_signal_connect (G_OBJECT (player->priv->range), "button_press_event",
- G_CALLBACK (parole_player_range_button_press), player);
-
- g_signal_connect (G_OBJECT (player->priv->range), "button_release_event",
- G_CALLBACK (parole_player_range_button_release), player);
+ player->priv->volume = GTK_WIDGET (gtk_builder_get_object (builder, "volume"));
+ player->priv->volume_image = GTK_WIDGET (gtk_builder_get_object (builder, "volume-image"));
- g_signal_connect (G_OBJECT (player->priv->range), "value_changed",
- G_CALLBACK (parole_player_range_value_changed), player);
+ 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_box = GTK_WIDGET (gtk_builder_get_object (builder, "list-box"));
+ player->priv->show_hide_playlist = GTK_WIDGET (gtk_builder_get_object (builder, "show-hide-list"));
- g_signal_connect_swapped (G_OBJECT (player->priv->stop), "clicked",
- G_CALLBACK (parole_player_stop_clicked), player);
-
- g_signal_connect_swapped (G_OBJECT (player->priv->play_pause), "clicked",
- G_CALLBACK (parole_player_play_pause_clicked), player);
-
+ 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", 100)/100.));
+
/*
- * Volume range and volume image
+ * Pack the playlist.
*/
+ gtk_container_add (GTK_CONTAINER (player->priv->playlist_box), GTK_WIDGET (player->priv->list));
- player->priv->volume = GTK_WIDGET (gtk_builder_get_object (builder, "volume"));
- player->priv->volume_image = GTK_WIDGET (gtk_builder_get_object (builder, "volume-image"));
- gtk_range_set_range (GTK_RANGE (player->priv->volume), 0, 1.0);
+ /*
+ * Pack Sidebar.
+ */
- g_signal_connect_swapped (G_OBJECT (player->priv->volume), "value_changed",
- G_CALLBACK (parole_player_volume_value_changed_cb), player);
- gtk_range_set_value (GTK_RANGE (player->priv->volume), (gdouble) (parole_rc_read_entry_int ("volume", 100)/100.));
- parole_player_change_volume (player, (gdouble) (parole_rc_read_entry_int ("volume", 100)/100.));
-
/*
- * Connect to the menu items from the menu bar
+ * Pack the statusbar.
*/
- g_signal_connect_swapped (gtk_builder_get_object (builder, "menu-open"), "activate",
- G_CALLBACK (parole_player_menu_open_cb), player);
-
- g_signal_connect_swapped (gtk_builder_get_object (builder, "menu-open-location"), "activate",
- G_CALLBACK (parole_player_menu_open_location_cb), player);
-
- g_signal_connect_swapped (gtk_builder_get_object (builder, "menu-add"), "activate",
- G_CALLBACK (parole_player_menu_add_cb), player);
-
- g_signal_connect_swapped (gtk_builder_get_object (builder, "menu-exit"), "activate",
- G_CALLBACK (parole_player_menu_exit_cb), player);
-
- 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"));
-
gtk_widget_show_all (player->priv->window);
- g_object_unref (builder);
+ gtk_box_pack_start (GTK_BOX (gtk_builder_get_object (builder, "output")),
+ player->priv->gst,
+ TRUE, TRUE, 0);
- player->priv->list = parole_media_list_new ();
+ gtk_widget_realize (player->priv->gst);
+ gtk_widget_show (player->priv->gst);
+ parole_player_change_volume (player,
+ (gdouble) (parole_rc_read_entry_int ("volume", 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);
+
+ gtk_builder_connect_signals (builder, player);
+ g_object_unref (builder);
}
ParolePlayer *
Modified: parole/trunk/src/sidebar.c
===================================================================
--- parole/trunk/src/sidebar.c 2009-06-10 12:16:14 UTC (rev 7524)
+++ parole/trunk/src/sidebar.c 2009-06-10 19:01:00 UTC (rev 7525)
@@ -165,7 +165,7 @@
sidebar->priv = PAROLE_SIDEBAR_GET_PRIVATE (sidebar);
- builder = parole_builder_new ();
+ builder = parole_builder_get_main_interface ();
sidebar->priv->visible = TRUE;
sidebar->priv->treeview = GTK_WIDGET (gtk_builder_get_object (builder, "treeview"));
Modified: parole/trunk/src/statusbar.c
===================================================================
--- parole/trunk/src/statusbar.c 2009-06-10 12:16:14 UTC (rev 7524)
+++ parole/trunk/src/statusbar.c 2009-06-10 19:01:00 UTC (rev 7525)
@@ -76,7 +76,7 @@
statusbar->priv = PAROLE_STATUSBAR_GET_PRIVATE (statusbar);
statusbar->priv->duration = 0;
- builder = parole_builder_new ();
+ builder = parole_builder_get_main_interface ();
box = GTK_WIDGET (gtk_builder_get_object (builder, "statusbox"));
More information about the Goodies-commits
mailing list