[Goodies-commits] r7807 - xfce4-mpc-plugin/trunk/panel-plugin

Landry Breuil landry at xfce.org
Fri Jul 24 18:12:39 CEST 2009


Author: landry
Date: 2009-07-24 16:12:39 +0000 (Fri, 24 Jul 2009)
New Revision: 7807

Modified:
   xfce4-mpc-plugin/trunk/panel-plugin/xfce4-mpc-plugin.c
Log:
First implem for user-configurable tooltips & playlist format.
Seems to work fine so far, although when tags are not filled no fallback is planned..


Modified: xfce4-mpc-plugin/trunk/panel-plugin/xfce4-mpc-plugin.c
===================================================================
--- xfce4-mpc-plugin/trunk/panel-plugin/xfce4-mpc-plugin.c	2009-07-24 16:11:22 UTC (rev 7806)
+++ xfce4-mpc-plugin/trunk/panel-plugin/xfce4-mpc-plugin.c	2009-07-24 16:12:39 UTC (rev 7807)
@@ -109,7 +109,7 @@
    mpc->mpd_password = g_strdup(xfce_rc_read_entry (rc, "mpd_password", ""));
    mpc->show_frame = xfce_rc_read_bool_entry (rc, "show_frame", TRUE);
    mpc->client_appl = g_strdup(xfce_rc_read_entry (rc, "client_appl", "SETME"));
-   mpc->tooltip_format = g_strdup(xfce_rc_read_entry (rc, "tooltip_format", "Volume : %vol% - Mpd %status%\\n%artist% - %album% -/- (#%track%) %title%"));
+   mpc->tooltip_format = g_strdup(xfce_rc_read_entry (rc, "tooltip_format", "Volume : %vol%% - Mpd %status%%newline%%%artist% - %album% -/- (#%track%) %title%"));
    mpc->playlist_format = g_strdup(xfce_rc_read_entry (rc, "playlist_format", "%artist% - %album% -/- (#%track%) %title%"));
 
    label = gtk_bin_get_child(GTK_BIN(mpc->appl));
@@ -184,7 +184,7 @@
    if (0 == strlen(mpc->client_appl))
       mpc->client_appl = g_strdup("SETME");
    if (0 == strlen(mpc->tooltip_format))
-      mpc->tooltip_format = g_strdup("Volume : %vol% - Mpd %status%\\n%artist% - %album% -/- (#%track%) %title%");
+      mpc->tooltip_format = g_strdup("Volume : %vol%% - Mpd %status%%newline%%artist% - %album% -/- (#%track%) %title%");
    if (0 == strlen(mpc->playlist_format))
       mpc->playlist_format = g_strdup("%artist% - %album% -/- (#%track%) %title%");
 
@@ -305,7 +305,7 @@
    gtk_widget_set_tooltip_text (dialog->textbox_host, _("Hostname or IP address"));
    gtk_widget_set_tooltip_text (dialog->textbox_client_appl, _("Graphical MPD Client to launch in plugin context menu"));
    gtk_widget_set_tooltip_text (dialog->textbox_playlist_format, _("Variables : %artist%, %album%, %track% and %title%"));
-   gtk_widget_set_tooltip_text (dialog->textbox_tooltip_format, _("Variables : %vol%, %status%, %artist%, %album%, %track% and %title%"));
+   gtk_widget_set_tooltip_text (dialog->textbox_tooltip_format, _("Variables : %vol%, %status%, %newline%, %artist%, %album%, %track% and %title%"));
 
    gtk_widget_show_all (table);
    gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, FALSE, 0);
@@ -342,26 +342,37 @@
    mpd_player_set_repeat(mpc->mo, gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)));
 }
 
+
 void
-format_song_display(mpd_Song* song, GString *str)
+str_replace(GString *str, gchar* pattern, gchar* replacement)
 {
-   /* buf may contain stuff, care to append text */
-   if (!song->artist || !song->title)
-      g_string_append_printf(str, "%s", song->file);
-   else if (!song->album)
-      g_string_append_printf(str, "%s - %s", song->artist, song->title);
-   else if (!song->track)
-      g_string_append_printf(str, "%s - %s -/- %s", song->artist, song->album, song->title);
-   else
-      g_string_append_printf(str, "%s - %s -/- (#%s) %s", song->artist, song->album, song->track, song->title);
+   gchar **arr;
+   if (replacement == NULL)
+      replacement = "";
+   arr = g_strsplit (str->str, pattern, -1);
+   if (arr != NULL && arr[0] != NULL)
+      g_string_assign(str, g_strjoinv (replacement, arr));
 }
 
+void
+format_song_display(mpd_Song* song, GString *str, t_mpc* mpc)
+{
+   if (0 == str->len)
+      g_string_assign(str, mpc->playlist_format);
+
+   /* replace %artist% by song->artist, etc */
+   str_replace(str, "%artist%", song->artist);
+   str_replace(str, "%album%", song->album);
+   str_replace(str, "%title%", song->title);
+   str_replace(str, "%track%", song->track);
+}
+
 static void
 enter_cb(GtkWidget *widget, GdkEventCrossing* event, t_mpc* mpc)
 {
    mpd_Song *song;
-   GString *str;
-
+   GString *str = NULL;
+   gchar vol[20];
    DBG("!");
 
    if (mpd_status_update(mpc->mo) != MPD_OK)
@@ -372,29 +383,34 @@
          return;
       }
    }
-   str = g_string_new("Volume : ");
-   g_string_append_printf(str, "%d%% - Mpd ", mpd_status_get_volume(mpc->mo));
+   str = g_string_new(mpc->tooltip_format);
 
+   /* replace %vol% by mpd_status_get_volume(mpc->mo) */
+   g_sprintf(vol, "%d", mpd_status_get_volume(mpc->mo));
+   str_replace(str, "%vol%", vol);
+   /* newlines */
+   str_replace(str, "%newline%", "\n");
+   /* replace %status% by mpd status string */
    switch (mpd_player_get_state(mpc->mo))
    {
       case MPD_PLAYER_PLAY:
-         g_string_append(str, "Playing\n");
+         str_replace(str, "%status%", "Playing");
          break;
       case MPD_PLAYER_PAUSE:
-         g_string_append(str, "Paused\n");
+         str_replace(str, "%status%", "Paused");
          break;
       case MPD_PLAYER_STOP:
-         g_string_append(str, "Stopped\n");
+         str_replace(str, "%status%", "Stopped");
          break;
       default:
-         g_string_append(str, "state ?\n");
+         str_replace(str, "%status%", "state ?");
          break;
    }
    song = mpd_playlist_get_current_song(mpc->mo);
    if (song && song->id != -1)
-      format_song_display(song, str);
+      format_song_display(song, str, mpc);
    else
-      g_string_append(str, "Failed to get song info ?");
+      g_string_assign(str, "Failed to get song info ?");
 
    gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mpc->random), mpd_player_get_random(mpc->mo));
    gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mpc->repeat), mpd_player_get_repeat(mpc->mo));
@@ -478,7 +494,7 @@
       do
       {
          g_string_erase(str, 0, -1);
-         format_song_display(mpd_data->song, str);
+         format_song_display(mpd_data->song, str, mpc);
 
          gtk_list_store_append (liststore, &iter);
          if (current == mpd_data->song->pos)
@@ -717,7 +733,7 @@
    mpc->mpd_port = DEFAULT_MPD_PORT;
    mpc->mpd_password = g_strdup("");
    mpc->client_appl = g_strdup("SETME");
-   mpc->tooltip_format = "Volume : %vol% - Mpd %status%\\n%artist% - %album% -/- (#%track%) %title%";
+   mpc->tooltip_format = "Volume : %vol%% - Mpd %status%%newline%%artist% - %album% -/- (#%track%) %title%";
    mpc->playlist_format = "%artist% - %album% -/- (#%track%) %title%";
    mpc->show_frame = TRUE;
    mpc->playlist = NULL;




More information about the Goodies-commits mailing list