[arch-commits] Commit in lxmusic/trunk (PKGBUILD gtk3.patch)

Balló György bgyorgy at archlinux.org
Wed Feb 17 02:49:26 UTC 2016


    Date: Wednesday, February 17, 2016 @ 03:49:26
  Author: bgyorgy
Revision: 161934

upgpkg: lxmusic 0.4.6-3

Add GTK+ 3 version

Added:
  lxmusic/trunk/gtk3.patch
Modified:
  lxmusic/trunk/PKGBUILD

------------+
 PKGBUILD   |   48 ++++-
 gtk3.patch |  493 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 532 insertions(+), 9 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2016-02-17 02:38:11 UTC (rev 161933)
+++ PKGBUILD	2016-02-17 02:49:26 UTC (rev 161934)
@@ -3,26 +3,56 @@
 # Contributor: Bartłomiej Piotrowski <nospam at bpiotrowski.pl>
 # Contributor: Marcus Schulderinsky <mmaacceess at gmail dot com>
 
-pkgname=lxmusic
+pkgbase=lxmusic
+pkgname=(lxmusic lxmusic-gtk3)
 pkgver=0.4.6
-pkgrel=2
+pkgrel=3
 pkgdesc='Lightweight XMMS2 client'
 arch=('i686' 'x86_64')
 url="http://lxde.org/"
 license=('GPL')
-groups=('lxde')
-depends=('gtk2' 'libnotify' 'xmms2')
+depends=('gtk2' 'gtk3' 'libnotify' 'xmms2')
 makedepends=('intltool')
-source=(http://downloads.sourceforge.net/lxde/$pkgname-$pkgver.tar.xz)
-md5sums=('38fc31793b11c43b6a8fda70faedfd54')
+source=(http://downloads.sourceforge.net/lxde/$pkgbase-$pkgver.tar.xz
+        gtk3.patch)
+md5sums=('38fc31793b11c43b6a8fda70faedfd54'
+         '3140b6f2f88fe1835fad8c094c9faf61')
 
+prepare() {
+  cd $pkgbase-$pkgver
+  patch -Np1 -i ../gtk3.patch
+  autoreconf -fi
+}
+
 build() {
-  cd $pkgname-$pkgver
+  # GTK+ 2 version
+  [ -d gtk2 ] || cp -r $pkgbase-$pkgver gtk2
+  cd gtk2
   ./configure --prefix=/usr
   make
+
+  cd "$srcdir"
+  # GTK+ 3 version
+  [ -d gtk3 ] || cp -r $pkgbase-$pkgver gtk3
+  cd gtk3
+  ./configure --prefix=/usr --enable-gtk3
+  make
 }
 
-package() {
-  cd $pkgname-$pkgver
+package_lxmusic() {
+  groups=('lxde')
+  depends=('gtk2' 'libnotify' 'xmms2')
+
+  cd gtk2
   make DESTDIR="$pkgdir" install
 }
+
+package_lxmusic-gtk3() {
+  groups=('lxde-gtk3')
+  pkgdesc+=' (GTK+ 3 version)'
+  depends=('gtk3' 'libnotify' 'xmms2')
+  conflicts=('lxmusic')
+
+  cd gtk3
+  make DESTDIR="$pkgdir" install
+}

Added: gtk3.patch
===================================================================
--- gtk3.patch	                        (rev 0)
+++ gtk3.patch	2016-02-17 02:49:26 UTC (rev 161934)
@@ -0,0 +1,493 @@
+From ffc46b7eef2df21e024b04f3b29971093460a8d9 Mon Sep 17 00:00:00 2001
+From: =?utf8?q?Ball=C3=B3=20Gy=C3=B6rgy?= <ballogyor at gmail.com>
+Date: Thu, 18 Dec 2014 02:24:43 +0100
+Subject: [PATCH] Fix some deprecations and add an option to compile with gtk3
+
+---
+ configure.ac             | 19 +++++++++++++--
+ data/lxmusic.ui.glade    |  1 -
+ data/track-info.ui.glade |  1 -
+ src/lxmusic.c            | 63 ++++++++++++++++++++++++++++--------------------
+ 4 files changed, 54 insertions(+), 30 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 6bf5316..836560b 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -6,7 +6,7 @@ AM_CONFIG_HEADER(config.h)
+ AM_MAINTAINER_MODE([enable])
+ 
+ # Required Packages
+-m4_define([gtk_minimum_version], [2.14.0])
++m4_define([gtk_minimum_version], [2.20.0])
+ m4_define([gmodule_export_minimum_version], [2.0])
+ m4_define([xmms2_minimum_version], [0.7])
+ m4_define([xmms2_client_glib_minimum_version], [0.7])
+@@ -22,8 +22,23 @@ AC_HEADER_STDC
+ AC_PROG_INTLTOOL(, [no-xml])
+ 
+ dnl check for mandatory modules
++AC_ARG_ENABLE(gtk3,
++AC_HELP_STRING([--enable-gtk3],[enable to use gtk-3.0 instead of gtk-2.0]),
++[case "${enableval}" in
++  yes)  enable_gtk3=yes ;;
++  no)   enable_gtk3=no ;;
++  *) AC_MSG_ERROR([bad value "${enableval}" for --enable-gtk3, use "yes" (default) or "no".]) ;;
++esac],[])
++
++# Checks for libraries.
++if test "x$enable_gtk3" = "xyes" ; then
++  CFLAGS="$CFLAGS -DENABLE_GTK3"
++  gtk_modules="gtk+-3.0 >= 3.0.0"
++else
++  gtk_modules="gtk+-2.0 >= gtk_minimum_version"
++fi
+ PKG_CHECK_MODULES(LXMUSIC,
+-        [gtk+-2.0 >= gtk_minimum_version
++        [$gtk_modules
+ 	gmodule-export-2.0 >= gmodule_export_minimum_version
+ 	xmms2-client >= xmms2_minimum_version
+ 	xmms2-client-glib >= xmms2_client_glib_minimum_version])
+diff --git a/data/lxmusic.ui.glade b/data/lxmusic.ui.glade
+index b5572fa..1856b30 100644
+--- a/data/lxmusic.ui.glade
++++ b/data/lxmusic.ui.glade
+@@ -370,7 +370,6 @@
+                 <property name="width_request">80</property>
+                 <property name="visible">True</property>
+                 <property name="can_focus">True</property>
+-                <property name="update_policy">GTK_UPDATE_DELAYED</property>
+                 <property name="adjustment">adjustment1</property>
+                 <property name="draw_value">False</property>
+                 <signal handler="on_progress_bar_changed" name="value_changed"/>
+diff --git a/data/track-info.ui.glade b/data/track-info.ui.glade
+index 05895b0..50a6e23 100644
+--- a/data/track-info.ui.glade
++++ b/data/track-info.ui.glade
+@@ -7,7 +7,6 @@
+     <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
+     <property name="default_width">480</property>
+     <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+-    <property name="has_separator">False</property>
+     <signal handler="gtk_widget_destroy" name="response"/>
+     <child internal-child="vbox">
+       <object class="GtkVBox" id="dialog-vbox1">
+diff --git a/src/lxmusic.c b/src/lxmusic.c
+index 001619d..14aa17a 100644
+--- a/src/lxmusic.c
++++ b/src/lxmusic.c
+@@ -252,13 +252,6 @@ void on_main_win_destroy(GtkWidget* win)
+     }
+ }
+ 
+-static void open_url(GtkAboutDialog* dlg, const char* url, gpointer user_data)
+-{
+-    const char* argv[] = {"xdg-open", NULL, NULL};
+-    argv[1] = url;
+-    g_spawn_async("/", (gchar**)argv, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, NULL, NULL);
+-}
+-
+ void on_about(GtkWidget* mi, gpointer data)
+ {
+     const char* authors[] = { "洪任諭 (Hong Jen Yee) <pcman.tw at gmail.com>", 
+@@ -266,11 +259,9 @@ void on_about(GtkWidget* mi, gpointer data)
+     const char* artists[] = { N_("Official icon of xmms2 by Arnaud DIDRY"), NULL };
+     GtkWidget* about;
+ 
+-    gtk_about_dialog_set_url_hook(open_url, NULL, NULL);
+-
+     about = gtk_about_dialog_new();
+-    gtk_about_dialog_set_name( (GtkAboutDialog*)about, "LXMusic" );
+-    gtk_about_dialog_set_logo_icon_name((GtkAboutDialog*)about, "lxmusic");
++    gtk_about_dialog_set_program_name( (GtkAboutDialog*)about, "LXMusic" );
++    gtk_about_dialog_set_logo((GtkAboutDialog*)about, gdk_pixbuf_new_from_file(PACKAGE_DATA_DIR"/pixmaps/lxmusic.png", NULL));
+     gtk_about_dialog_set_version( (GtkAboutDialog*)about, VERSION );
+     gtk_about_dialog_set_authors( (GtkAboutDialog*)about, authors );
+     gtk_about_dialog_set_artists( (GtkAboutDialog*)about, artists );
+@@ -349,7 +340,7 @@ static int on_pref_dlg_init_widget(xmmsv_t* value, void* user_data)
+             gtk_spin_button_set_value(GTK_SPIN_BUTTON(w), atoi(val));
+         else if( GTK_IS_ENTRY(w) )
+             gtk_entry_set_text(GTK_ENTRY(w), val);
+-        else if( GTK_IS_COMBO_BOX_ENTRY(w) )
++        else if( GTK_IS_COMBO_BOX(w) && gtk_bin_get_child(GTK_BIN(w)) != NULL )
+             gtk_entry_set_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN(w))), val);
+         else
+             g_debug("%s is not supported", G_OBJECT_TYPE_NAME(w));
+@@ -382,7 +373,15 @@ int on_pref_dlg_init_output_plugin(xmmsv_t* value, void* user_data)
+ 	/* fallback to xmms2 plugin names if no translation available*/
+ 	if ( label == NULL )
+ 	    label = xmms2_name;
++#if GTK_CHECK_VERSION(2, 24, 0)
++	GtkListStore *store = GTK_LIST_STORE(gtk_combo_box_get_model(output_plugin_cb));
++	GtkTreeIter iter;
++	/* keeping it as GtkComboBox for backward compatibility with GTK+ < 2.24 */
++	gtk_list_store_append(store, &iter);
++	gtk_list_store_set(store, &iter, 0, label, -1);
++#else
+ 	gtk_combo_box_append_text( output_plugin_cb, label );
++#endif
+     }
+     
+ 
+@@ -399,7 +398,7 @@ int on_pref_dlg_init_output_plugin(xmmsv_t* value, void* user_data)
+ static void on_tray_icon_activate(GtkStatusIcon* icon, gpointer user_data)
+ {
+     /* FIXME: should we unload the playlist to free resources here? */
+-    if( GTK_WIDGET_VISIBLE(main_win) )
++    if( gtk_widget_get_visible(main_win) )
+     {
+ 		/* save window position before we hide the window */
+ 		gtk_window_get_position((GtkWindow*)main_win, &win_xpos, &win_ypos);
+@@ -448,7 +447,7 @@ static void on_tray_icon_popup_menu(GtkStatusIcon* icon, guint btn, guint time,
+ static void create_tray_icon()
+ {
+     tray_icon = (GtkWidget*)gtk_status_icon_new_from_icon_name("lxmusic");
+-    gtk_status_icon_set_tooltip(GTK_STATUS_ICON(tray_icon), _("LXMusic"));
++    gtk_status_icon_set_tooltip_text(GTK_STATUS_ICON(tray_icon), _("LXMusic"));
+     g_signal_connect(tray_icon, "activate", G_CALLBACK(on_tray_icon_activate), NULL );
+     g_signal_connect(tray_icon, "popup-menu", G_CALLBACK(on_tray_icon_popup_menu), NULL );
+     g_signal_connect(tray_icon, "scroll-event", G_CALLBACK(on_volume_btn_scrolled), volume_btn);
+@@ -843,7 +842,11 @@ gboolean on_playlist_view_drag_drop(GtkWidget      *widget,
+     /*  Don't call the default handler  */
+ //    g_signal_stop_emission_by_name( widget, "drag-drop" );
+ 
++#if GTK_CHECK_VERSION(2, 22, 0)
++    if( g_list_find( gdk_drag_context_list_targets(drag_ctx), target ) )
++#else
+     if( g_list_find( drag_ctx->targets, target ) )
++#endif
+     {
+         gtk_drag_get_data( widget, drag_ctx, target, time );
+         return TRUE;
+@@ -1047,7 +1050,7 @@ void on_add_url( GtkMenuItem* item, gpointer user_data )
+             GTK_STOCK_OK, GTK_RESPONSE_OK, NULL );
+     GtkWidget *entry = gtk_entry_new();
+     gtk_window_set_destroy_with_parent(GTK_WINDOW(dlg), TRUE);
+-    gtk_box_pack_start( (GtkBox*)((GtkDialog*)dlg)->vbox, entry, FALSE, FALSE, 4 );
++    gtk_box_pack_start( (GtkBox*)gtk_dialog_get_content_area(GTK_DIALOG(dlg)), entry, FALSE, FALSE, 4 );
+     gtk_dialog_set_default_response( (GtkDialog*)dlg, GTK_RESPONSE_OK );
+     gtk_entry_set_activates_default( (GtkEntry*)entry, TRUE );
+     gtk_widget_show_all( dlg );
+@@ -1128,11 +1131,19 @@ gboolean  on_playlist_view_key_press_event (GtkWidget *widget,
+ {
+     switch ( event->keyval) 
+     {
++#if GTK_CHECK_VERSION(2, 21, 0)
++    case GDK_KEY_Delete:
++#else
+     case GDK_Delete:
++#endif
+ 	/* dummy values: needs cleanup  */
+ 	on_remove_selected (NULL, NULL); 
+ 	break;
++#if GTK_CHECK_VERSION(2, 21, 0)
++    case GDK_KEY_Insert:
++#else
+     case GDK_Insert:
++#endif
+ 	/* dummy values: needs cleanup  */
+ 	on_add_files( NULL, NULL );
+ 	break;
+@@ -1283,7 +1294,7 @@ static int update_track( xmmsv_t *value, GtkTreeRowReference *ref )
+ 	if( tray_icon ) 
+ 	{
+ 	    GString* tray_tooltip = create_window_title(track_properties.artist, track_properties.title, playback_status == XMMS_PLAYBACK_STATUS_PLAY);
+-	    gtk_status_icon_set_tooltip( GTK_STATUS_ICON(tray_icon), tray_tooltip->str );
++	    gtk_status_icon_set_tooltip_text( GTK_STATUS_ICON(tray_icon), tray_tooltip->str );
+ 	    g_string_free( tray_tooltip, TRUE );
+ 	}
+ 	
+@@ -1425,8 +1436,8 @@ static int on_playlist_entries_received( xmmsv_t* value, GtkWidget* list_view )
+     res = xmmsc_coll_get( con, cur_playlist, "Playlists" );
+     xmmsc_result_notifier_set_and_unref(res, on_playlist_coll_received, NULL );
+ 								
+-    if( GTK_WIDGET_REALIZED( list_view ) )
+-        gdk_window_set_cursor( list_view->window, NULL );
++    if( gtk_widget_get_realized( list_view ) )
++        gdk_window_set_cursor( gtk_widget_get_window(list_view), NULL );
+ 
+     gtk_tree_view_set_model( GTK_TREE_VIEW(list_view), mf );
+ 
+@@ -1455,10 +1466,10 @@ static void update_play_list( GtkWidget* list_view )
+ {
+     xmmsc_result_t *res;
+ 
+-    if( GTK_WIDGET_REALIZED( list_view ) ) {
++    if( gtk_widget_get_realized( list_view ) ) {
+         GdkCursor* cur;
+         cur = gdk_cursor_new( GDK_WATCH );
+-        gdk_window_set_cursor( list_view->window, cur );
++        gdk_window_set_cursor( gtk_widget_get_window(list_view), cur );
+         gdk_cursor_unref( cur );
+     }
+     /* get current playlist as id_list */
+@@ -1860,7 +1871,7 @@ static int on_playback_track_loaded( xmmsv_t* value, void* user_data )
+     gtk_window_set_title( GTK_WINDOW(main_win), window_title->str );
+     
+     if( tray_icon )
+-        gtk_status_icon_set_tooltip(GTK_STATUS_ICON(tray_icon), window_title->str);
++        gtk_status_icon_set_tooltip_text(GTK_STATUS_ICON(tray_icon), window_title->str);
+ 
+     LXMusicNotification lxn = lxmusic_do_notify_prepare ( track_properties.artist, track_properties.title,  
+ 							      _("Now Playing:"), GTK_STATUS_ICON(tray_icon) );
+@@ -1879,7 +1890,7 @@ static int on_playback_track_loaded( xmmsv_t* value, void* user_data )
+ 
+ static void send_notification_pixbuf( LXMusicNotification lxn, GdkPixbuf *pixbuf ) 
+ {
+-    if(!GTK_WIDGET_VISIBLE(main_win))  
++    if(!gtk_widget_get_visible(main_win))
+     {
+ 	/* FIXME: Hardcoded notification icon size */
+ 	GdkPixbuf *scaled_pixbuf = gdk_pixbuf_scale_simple( pixbuf, 64, 64, GDK_INTERP_HYPER );
+@@ -1890,7 +1901,7 @@ static void send_notification_pixbuf( LXMusicNotification lxn, GdkPixbuf *pixbuf
+ 
+ static void send_notification( LXMusicNotification lxn ) 
+ {
+-    if(!GTK_WIDGET_VISIBLE(main_win)) 
++    if(!gtk_widget_get_visible(main_win))
+ 	lxmusic_do_notify( lxn );
+ }
+ 
+@@ -2325,7 +2336,7 @@ static void setup_ui()
+     /* add volume button */
+     hbox = (GtkWidget*)gtk_builder_get_object(builder, "top_hbox");
+     volume_btn = gtk_volume_button_new();
+-    gtk_scale_button_get_adjustment(GTK_SCALE_BUTTON(volume_btn))->upper = 100;
++    gtk_adjustment_set_upper (gtk_scale_button_get_adjustment(GTK_SCALE_BUTTON(volume_btn)), 100);
+     gtk_widget_show(volume_btn);
+     gtk_box_pack_start(GTK_BOX(hbox), volume_btn, FALSE, TRUE, 0);
+     g_signal_connect(volume_btn, "value-changed", G_CALLBACK(on_volume_btn_changed), NULL);
+@@ -2362,7 +2373,7 @@ void on_new_playlist(GtkAction* act, gpointer user_data)
+             GTK_STOCK_OK, GTK_RESPONSE_OK, NULL );
+     gtk_window_set_destroy_with_parent(GTK_WINDOW(dlg), TRUE);
+     GtkWidget *entry = gtk_entry_new();
+-    gtk_box_pack_start( (GtkBox*)((GtkDialog*)dlg)->vbox, entry, FALSE, FALSE, 4 );
++    gtk_box_pack_start( (GtkBox*)gtk_dialog_get_content_area(GTK_DIALOG(dlg)), entry, FALSE, FALSE, 4 );
+     gtk_dialog_set_default_response( (GtkDialog*)dlg, GTK_RESPONSE_OK );
+     gtk_entry_set_activates_default( (GtkEntry*)entry, TRUE );
+     gtk_widget_show_all( dlg );
+@@ -2419,7 +2430,7 @@ void on_del_playlist(GtkAction* act, gpointer user_data)
+ void on_show_playlist(GtkAction* act, gpointer user_data)
+ {
+     show_playlist = gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(act));
+-    if(GTK_WIDGET_VISIBLE(inner_vbox))
++    if(gtk_widget_get_visible(inner_vbox))
+     {
+         if( ! show_playlist )
+         {
+-- 
+2.1.4
+
+From 748e03bc88790e9af42ffe67abc9853732d647ce Mon Sep 17 00:00:00 2001
+From: =?utf8?q?Ball=C3=B3=20Gy=C3=B6rgy?= <ballogyor at gmail.com>
+Date: Mon, 20 Jul 2015 22:09:52 +0200
+Subject: [PATCH] Don't use GtkBuilder for popup menu
+
+This makes it compatible with GTK+ 3.
+---
+ data/Makefile.am    |  3 +--
+ data/popup.ui.glade | 69 ----------------------------------------------------
+ po/POTFILES.in      |  1 -
+ src/lxmusic.c       | 70 ++++++++++++++++++++++++++++++++++++++++++++---------
+ 4 files changed, 59 insertions(+), 84 deletions(-)
+ delete mode 100644 data/popup.ui.glade
+
+diff --git a/data/Makefile.am b/data/Makefile.am
+index bbdfe49..c7679de 100644
+--- a/data/Makefile.am
++++ b/data/Makefile.am
+@@ -13,8 +13,7 @@ uidir=$(datadir)/lxmusic
+ ui_DATA= \
+ 	lxmusic.ui.glade \
+ 	pref-dlg.ui.glade \
+-	track-info.ui.glade \
+-	popup.ui.glade
++	track-info.ui.glade
+ 
+ EXTRA_DIST = \
+ 	$(desktop_DATA) \
+diff --git a/data/popup.ui.glade b/data/popup.ui.glade
+deleted file mode 100644
+index 871dc64..0000000
+--- a/data/popup.ui.glade
++++ /dev/null
+@@ -1,69 +0,0 @@
+-<?xml version="1.0"?>
+-<!--*- mode: xml -*-->
+-<interface>
+-  <object class="GtkUIManager" id="uimanager1">
+-    <child>
+-      <object class="GtkActionGroup" id="actiongroup1">
+-        <child>
+-          <object class="GtkAction" id="show_main_win">
+-            <property name="stock_id">gtk-open</property>
+-            <property name="name">show_main_win</property>
+-            <property name="label" translatable="yes">_Show Main Window</property>
+-            <signal handler="on_show_main_win" name="activate"/>
+-          </object>
+-        </child>
+-        <child>
+-          <object class="GtkAction" id="play">
+-            <property name="stock_id">gtk-media-play</property>
+-            <property name="name">play</property>
+-            <signal handler="on_play_btn_clicked" name="activate"/>
+-          </object>
+-        </child>
+-        <child>
+-          <object class="GtkAction" id="stop">
+-            <property name="stock_id">gtk-media-stop</property>
+-            <property name="name">stop</property>
+-            <signal handler="on_stop_btn_clicked" name="activate"/>
+-          </object>
+-        </child>
+-        <child>
+-          <object class="GtkAction" id="prev">
+-            <property name="stock_id">gtk-media-previous</property>
+-            <property name="name">prev</property>
+-            <signal handler="on_prev_btn_clicked" name="activate"/>
+-          </object>
+-        </child>
+-        <child>
+-          <object class="GtkAction" id="next">
+-            <property name="stock_id">gtk-media-next</property>
+-            <property name="name">next</property>
+-            <signal handler="on_next_btn_clicked" name="activate"/>
+-          </object>
+-        </child>
+-        <child>
+-          <object class="GtkAction" id="quit">
+-            <property name="stock_id">gtk-quit</property>
+-            <property name="name">quit</property>
+-            <signal handler="on_quit" name="activate"/>
+-          </object>
+-        </child>
+-      </object>
+-    </child>
+-    <ui>
+-      <popup name="popup">
+-        <menuitem action="show_main_win"/>
+-        <separator/>
+-        <menuitem action="play"/>
+-        <menuitem action="stop"/>
+-        <menuitem action="prev"/>
+-        <menuitem action="next"/>
+-        <separator/>
+-        <menuitem action="quit"/>
+-      </popup>
+-    </ui>
+-  </object>
+-  <object class="GtkMenu" constructor="uimanager1" id="popup">
+-    <property name="visible">True</property>
+-    <signal handler="gtk_widget_destroy" name="selection_done"/>
+-  </object>
+-</interface>
+diff --git a/po/POTFILES.in b/po/POTFILES.in
+index c0245cc..19379ea 100644
+--- a/po/POTFILES.in
++++ b/po/POTFILES.in
+@@ -4,7 +4,6 @@ src/utils.c
+ src/lxmusic-plugin-config.c
+ data/lxmusic.desktop.in
+ data/lxmusic.ui.glade
+-data/popup.ui.glade
+ data/pref-dlg.ui.glade
+ data/track-info.ui.glade
+ src/lxmusic-notify.c
+diff --git a/src/lxmusic.c b/src/lxmusic.c
+index 14aa17a..60efc61 100644
+--- a/src/lxmusic.c
++++ b/src/lxmusic.c
+@@ -87,6 +87,10 @@ static int 	update_track				( xmmsv_t *value, GtkTreeRowReference* ref );
+ static int 	on_coll_info_received			( xmmsv_t* value, void* user_data );
+ static int 	on_picture_front_received		( xmmsv_t* value, void* user_data );
+ static int 	on_playback_started			( xmmsv_t* value, void* user_data );
++void		on_prev_btn_clicked			( GtkButton* btn, gpointer user_data );
++void		on_next_btn_clicked			( GtkButton* btn, gpointer user_data );
++void		on_play_btn_clicked			( GtkButton* btn, gpointer user_data );
++void		on_stop_btn_clicked			( GtkButton* btn, gpointer user_data );
+ 
+ static xmmsc_connection_t *con = NULL;
+ static GtkWidget *main_win = NULL;
+@@ -421,25 +425,67 @@ void on_show_main_win(GtkAction* act, gpointer user_data)
+ static void on_tray_icon_popup_menu(GtkStatusIcon* icon, guint btn, guint time, gpointer user_data)
+ {
+ 	/* init tray icon widgets */
+-	GtkBuilder *builder = gtk_builder_new ();
+-	if(gtk_builder_add_from_file(builder, PACKAGE_DATA_DIR "/lxmusic/popup.ui.glade", NULL))
+-	{
+-        	GtkWidget *tray_play_btn = (GtkWidget*)gtk_builder_get_object(builder, "play");
+-		GtkWidget *tray_popup = (GtkWidget*)gtk_builder_get_object(builder, "popup");
+-        	gtk_builder_connect_signals(builder, NULL);
+-		switch (playback_status)
++	GtkMenu *systray_menu;
++	GtkWidget *item = NULL;
++
++	systray_menu = GTK_MENU (gtk_menu_new());
++
++	item = gtk_image_menu_item_new_from_stock(GTK_STOCK_OPEN, NULL);
++	gtk_menu_item_set_label (GTK_MENU_ITEM(item), _("Show Main Window"));
++	gtk_menu_shell_append(GTK_MENU_SHELL(systray_menu), item);
++	g_signal_connect (G_OBJECT (item), "activate",
++			  G_CALLBACK(on_show_main_win),
++			  NULL);
++
++	item = gtk_separator_menu_item_new();
++	gtk_menu_shell_append(GTK_MENU_SHELL(systray_menu), item);
++
++	switch (playback_status)
+ 		{
+ 			case XMMS_PLAYBACK_STATUS_PLAY:
+-				g_object_set ( (GObject*)tray_play_btn, "stock-id", "gtk-media-pause", NULL);
++				item = gtk_image_menu_item_new_from_stock(GTK_STOCK_MEDIA_PAUSE, NULL);
+ 				break;
+ 			case XMMS_PLAYBACK_STATUS_PAUSE:
+ 			case XMMS_PLAYBACK_STATUS_STOP:
+-				g_object_set ( (GObject*)tray_play_btn, "stock-id", "gtk-media-play", NULL);
++				item = gtk_image_menu_item_new_from_stock(GTK_STOCK_MEDIA_PLAY, NULL);
+ 				break;
+ 		}
+-		gtk_menu_popup((GtkMenu*)tray_popup, NULL, NULL, NULL, NULL, btn, time);
+-	}
+-	g_object_unref(builder);
++
++	gtk_menu_shell_append(GTK_MENU_SHELL(systray_menu), item);
++	g_signal_connect (G_OBJECT (item), "activate",
++			  G_CALLBACK(on_play_btn_clicked),
++			  NULL);
++
++	item = gtk_image_menu_item_new_from_stock(GTK_STOCK_MEDIA_STOP, NULL);
++	gtk_menu_shell_append(GTK_MENU_SHELL(systray_menu), item);
++	g_signal_connect (G_OBJECT (item), "activate",
++			  G_CALLBACK(on_stop_btn_clicked),
++			  NULL);
++
++	item = gtk_image_menu_item_new_from_stock(GTK_STOCK_MEDIA_PREVIOUS, NULL);
++	gtk_menu_shell_append(GTK_MENU_SHELL(systray_menu), item);
++	g_signal_connect (G_OBJECT (item), "activate",
++			  G_CALLBACK(on_prev_btn_clicked),
++			  NULL);
++
++	item = gtk_image_menu_item_new_from_stock(GTK_STOCK_MEDIA_NEXT, NULL);
++	gtk_menu_shell_append(GTK_MENU_SHELL(systray_menu), item);
++	g_signal_connect (G_OBJECT (item), "activate",
++			  G_CALLBACK(on_next_btn_clicked),
++			  NULL);
++
++	item = gtk_separator_menu_item_new();
++	gtk_menu_shell_append(GTK_MENU_SHELL(systray_menu), item);
++
++	item = gtk_image_menu_item_new_from_stock(GTK_STOCK_QUIT, NULL);
++	gtk_menu_shell_append(GTK_MENU_SHELL(systray_menu), item);
++	g_signal_connect (G_OBJECT (item), "activate",
++			  G_CALLBACK(on_quit),
++			  NULL);
++
++	/* show */
++	gtk_widget_show_all(GTK_WIDGET(systray_menu));
++	gtk_menu_popup(GTK_MENU(systray_menu), NULL, NULL, NULL, NULL, btn, time);
+ 
+ 	return;
+ }
+-- 
+2.1.4
+



More information about the arch-commits mailing list