From: <dom...@us...> - 2013-04-12 20:05:02
|
Revision: 226 http://sourceforge.net/p/fvwm-crystal/code/226 Author: dominique_libre Date: 2013-04-12 20:04:55 +0000 (Fri, 12 Apr 2013) Log Message: ----------- +functions/Media: common file for multimedia players. components/Music-mplayer(2): moved some functions to components/Media; playlist functions cleanup; cleanup; playlist are locale aware. Modified Paths: -------------- ChangeLog fvwm/components/functions/Music-mplayer fvwm/components/functions/Music-mplayer2 Added Paths: ----------- fvwm/components/functions/Media Modified: ChangeLog =================================================================== --- ChangeLog 2013-04-12 18:12:07 UTC (rev 225) +++ ChangeLog 2013-04-12 20:04:55 UTC (rev 226) @@ -6,7 +6,10 @@ for well know user directories scripts/make_all_playlists: use 4 variables for the playlists directories - ++ components/Media: common file for multimedia players + components/Music-mplayer(2): moved some functions to vomponents/Media; + introduced playlists localizations; playlist cleanup; clecup. + Jeudi 11 Avril 2013 Dominique Michel FAQ: Added q.a. about tear off menus. functions/Music-mplayer: fix glitch into the speed control; introduced Added: fvwm/components/functions/Media =================================================================== --- fvwm/components/functions/Media (rev 0) +++ fvwm/components/functions/Media 2013-04-12 20:04:55 UTC (rev 226) @@ -0,0 +1,386 @@ +# Multimedia support in Fvwm-Crystal: +# initialisations and some shared functions +# Written by: Dominique Michel <dom...@us...> +# +# TODO: This file must be included at the top of the multimedia player control files. +# Include components/functions/MediaButtons +# +# Some recipes do have a media button, the other do have a menu. +# Recipes with media button: Amiga, Corner, Default, Default with ACPI, Dock +# The bindings of the media buttons are: +# +# n button n button fumction comment +# Button 1: (Mouse 1) Menu /Player # Main player menu +# (Mouse 2) Music-GUI # show/hide the player +# (Mouse 3) Music-QJackGUI # show/hide QJackCtl +# (Mouse 4) Mixer-Volume-Up # main volume up +# (Mouse 5) Mixer-Volume-Down # main volume down +# Button 2: (Mouse 1) Menu /Playlist-button # playlist menu +# (Mouse 2) Menu /Music/Volume # player volume menu +# (Mouse 3) Menu /Mixer # main mixer menu +# (Mouse 4) Music-Next # next media +# (Mouse 5) Music-Prev # previous media +# Button 3: (Mouse 1) Music-Play # play +# (Mouse 2) Music-Pause # pause +# (Mouse 3) Menu /Playback # playback menu +# (Mouse 4) Music-Speed-Up # speed up +# (Mouse 5) Music-Speed-Down # speed down +# Button 4: (Mouse 1) Menu /Speed # speed control menu +# (Mouse 4) Music-Seek-+ # seek forward +# (Mouse 5) Music-Seek-- # seek backward +# NOTE : the actual bindings are fixed into the recipes. +# +# Recipes with media menu: Clean, Clean Vertical, Light, Wing-Commander +# The media menu is: Popup /Music +# +# If you try to launch both /Playlist-button and /Music in one recipe, +# the menu /Music will get scruved. Auto-generated menus are very sensitive. +# The only think to do is to not use both the media button and /Music into +# the recipes, and wait and see if some future fvwm release will fix this. +# For me, but I can be wrong on this, the way than fvwm-menu-directory use +# to generate the menu when --reuse --name are not enabled seam to easily +# confuse fvwm. +# +# TODO : - Move the media button here +# - Find something to do with mouse 2 and 3 on button 4 + +# Amixer and Mplayer are selected as default mixer and player if the user +# didn't changed it. We keep them or the user settings. + +# The playlists are now in 4 places: +# $[FVWM_USERDIR]/Playlists/Audio for the playlists of audio files +# $[FVWM_USERDIR]/Playlists/Video for the playlists of movie files +# $[HOME]/Playlists/Audio for "by the user managed" audio playlists +# $[HOME]/Playlists/Video for "by the user managed" video playlists +# +# 'Recreate the playlist' will manage ~/Playlists/Audio and ~/Playlists/Video +# in a very simple way: delete all and recreate all. At the same time, it will +# create the user managed directories if they don't exist. +# +# Note: according to /etc/xdg/user-dirs.defaults, the default medias paths +# are $HOME/Music and $HOME/Videos and will be translated on a +# per-path-element basis into the users locale. +# TODO: centralize here the paths + +# Mixer {{{1 +Include components/functions/Mixer + +# Variables {{{1 +# playlists location, needed by recereate playlists {{{2 +InfoStoreAdd AudioPlaylists "$[FVWM_USERDIR]/Playlists/Audio" +InfoStoreAdd VideoPlaylists "$[FVWM_USERDIR]/Playlists/Video" +InfoStoreAdd UserManagedAudioPlaylists "$[HOME]/Playlists/Audio" +InfoStoreAdd UserManagedVideoPlaylists "$[HOME]/Playlists/Video" + +# speed control (alsaplayer, mplayer) {{{2 +# player normal speed (We want normal speed) +InfoStoreAdd speed 1 + +# Decimal point in use {{{2 +PipeRead 'if [[ $[MusicPlayer] == alsaplayer ]]; then echo "InfoStoreAdd dec_point `locale decimal_point`"; fi' + +# xmms2 +UnSetEnv fvwm_audio_exec + +# Styles for media players windows {{{1 +Style Alsaplayer NoActiveIconOverride, NoIcon, Sticky, WindowListSkip, StaysOnTop +Style alsaplayer UseStyle Alsaplayer + +Style Audacious StaysOnTop +Style Audacious StartIconic, NoActiveIconOverride, NoIcon, !Title, Sticky, WindowListSkip +Style playlist StartIconic, NoIcon, !Title, Sticky, WindowListSkip +Style equalizer UseStyle playlist + +Style beep-media-player !Title + +# Cmus (NoIcon doesn't work -> ToDo: use FvwmIdent) +Style cmus NoActiveIconOverride, NoIcon, Sticky, WindowListSkip, StaysOnTop +# Mocp (NoIcon doesn't work -> ToDo: use FvwmIdent) +Style mocp NoActiveIconOverride, NoIcon, Sticky, WindowListSkip, StaysOnTop + +Style MPlayer !Title, !Borders, GnomeIgnoreHints, EWMHIgnoreStackingOrderHints +Style "MPlayer - Video" Title, Borders, GnomeIgnoreHints, EWMHIgnoreStackingOrderHints +Style XDRadio NoIcon, Sticky, WindowListSkip + +Style quodlibet StaysOnTop, NoIcon, Sticky, WindowListSkip + +#Style xmms StaysOnTop +#Style XMMS_Player StartIconic, NoIcon, !Title, Sticky, WindowListSkip +#Style XMMS_Playlist UseStyle XMMS_Player +#Style XMMS_Equalizer UseStyle XMMS_Player + +Style qjackctl NoActiveIconOverride, NoIcon, Sticky, WindowListSkip + +############################################################ +### We don't want player specific functions lying around ### +### otherwise, we put here the functions that doesn't ### +### change between the players. ### +############################################################ + +# First button {{{1 +# Player controls and prefs +# mouse 1 Menu /Player {{{2 +# Recreate the playlists (all) +DestroyFunc Music-RecreatePlaylist +AddToFunc Music-RecreatePlaylist ++ I A $[FVWM_USERDIR]/scripts/make_all_playlists $[infostore.AudioPlaylists] $[infostore.VideoPlaylists] $[infostore.UserManagedAudioPlaylists] $[infostore.UserManagedVideoPlaylists] + +# wrapper for cdcd +DestroyFunc Music-cdcd + +# start the player(s) (alsaplayer, mplayer) +DestroyFunc Music-Start +DestroyMenu /Music/Start + +# player quit (alsaplayer, mplayer) +DestroyFunc Music-Kill + +# show/hyde the player GUI/menu +# (alsaplayer, audacious, cdcd, cmus, mocp, mpd, mplayer, quodlibet) +DestroyFunc Music-GUI + +# Button menu +# (alsaplayer, audacious, cdcd, cmus, mocp, mpd, mplayer, quodlibet) +DestroyFunc Player-generator +# Button menu (all) +DestroyMenu /Player +AddToMenu /Player ++ DynamicPopupAction Function Player-generator + +# mouse 2 Music-GUI : allready here {{{2 +# mouse 3 Music-QJackGUI (all) +DestroyFunc Music-QJackGUI +AddToFunc Music-QJackGUI ++ I All (qjackctl) Iconify toggle ++ I TestRc (NoMatch) Test (x qjackctl) Exec pidof qjackctl || exec qjackctl + +# mouse 4 Mixer-Volume-Up {{{2 +# mouse 5 Mixer-Volume-Down +# are in components/Mixer + +# Second button {{{1 +# Player controls and main vol +# mouse 1 Menu /Playlist-button {{{2 +# Load all the songs (mpd) +DestroyFunc Music-LoadAll + +# Play DVD (mplayer) +DestroyFunc Load-DVD + +# Show current playlist (xmms2) +DestroyFunc Music-CurrentPlaylist-generator +DestroyMenu /Music/CurrentPlaylist + +# Generate /Music/LoadMovie menu (mplayer) +DestroyFunc FuncFvwmMenuMovieDirectory +DestroyMenu /Music/LoadMovie + +# Load playlist (alsaplayer, audacious, mocp) +DestroyFunc FuncFvwmMenuAudioDirectory +# Load playlist (mpd, xmms2) +DestroyFunc Music-LoadPlaylist-generator +# Load playlist (alsaplayer, audacious, mocp, mpd, xmms2) +DestroyMenu /Music/LoadPlaylist + +# Load Media Playlists (mplayer) +DestroyFunc FuncFvwmMenuMediaDirectory +AddToFunc FuncFvwmMenuMediaDirectory ++ I PipeRead 'case "$0" in \ + "$[infostore.AudioPlaylists]"*) myexec="fvwm-crystal.mplayer-wrapper list $[infostore.USERDIR]";; \ + "$[infostore.UserManagedAudioPlaylists]"*) myexec="fvwm-crystal.mplayer-wrapper list $[infostore.USERDIR]";; \ + "$[infostore.VideoPlaylists]"*) myexec="fvwm-crystal.mplayer-wrapper list $[infostore.USERDIR]";; \ + "$[infostore.UserManagedVideoPlaylists]"*) myexec="fvwm-crystal.mplayer-wrapper list $[infostore.USERDIR]";; \ + esac; \ + test -f "$0"/.icontitle.png && mytitle="$0"/.icontitle.png; \ + test -f "$0"/.media.png && mypng="$0"/.media.png; \ + fvwm-menu-directory --icon-title "${mytitle:-22x22/categories/directory.png}" \ + --icon-file "${mypng:-22x22/categories/Audio.png}" \ + --func="FuncFvwmMenuMediaDirectory" \ + --exec-file "^${myexec}" --dir "$0" \ + --exec-t="^fvwm-crystal.play-movies $0"' + +DestroyMenu /Music/LoadMediaPlaylist +AddToMenu /Music/LoadMediaPlaylist ++ MissingSubmenuFunction FuncFvwmMenuMediaDirectory ++ '%22x22/categories/video_movies_view.png%$[gt.Audio playlists]' Popup $[infostore.AudioPlaylists] ++ '%22x22/categories/video_movies_view.png%$[gt.Video playlists]' Popup $[infostore.VideoPlaylists] ++ '%22x22/categories/video_movies_view.png%$[gt.Personal audio playlists]' Popup $[infostore.UserManagedAudioPlaylists] ++ '%22x22/categories/video_movies_view.png%$[gt.Personal video playlists]' Popup $[infostore.UserManagedVideoPlaylists] + +# Clear playlist (alsaplayer, audacious, mocp, mpd, xmms2) +DestroyFunc Music-ClearPlaylist + +# Remove song (audacious, mpd, xmms2) +DestroyFunc Music-RemoveSong + +# Remove playlist (audacious, mocp, mpd, xmms2) +DestroyFunc Music-RemovePlaylist-generator +# (alsaplayer, mplayer) +DestroyFunc FuncFvwmMenuRemovePlaylistDirectory +AddToFunc FuncFvwmMenuRemovePlaylistDirectory ++ I PipeRead 'case "$0" in \ + "$[infostore.UserManagedAudioPlaylists]"*) myexec="rm -f";; \ + "$[infostore.UserManagedVideoPlaylists]"*) myexec="rm -f";; \ + esac; \ + test -f "$0"/.icontitle.png && mytitle="$0"/.icontitle.png; \ + test -f "$0"/.media.png && mypng="$0"/.media.png; \ + fvwm-menu-directory --icon-title "${mytitle:-22x22/categories/directory.png}" \ + --icon-file "${mypng:-22x22/categories/Audio.png}" \ + --dir "$0" --exec-title "-" --exec-file "^${myexec}" \ + --func-name "FuncFvwmMenuRemovePlaylistDirectory"' + +DestroyMenu /Music/RemovePlaylist +AddToMenu /Music/RemovePlaylist ++ '$[gt.Choose playlist to remove]' Nop ++ MissingSubmenuFunction FuncFvwmMenuRemovePlaylistDirectory ++ '%22x22/categories/video_movies_view.png%$[gt.Browse Medias]' Popup $[infostore.UserManagedAudioPlaylists] ++ '%22x22/categories/video_movies_view.png%$[gt.Browse Medias]' Popup $[infostore.UserManagedVideoPlaylists] + +# Save playlist dialog (audacious, mpdm, xmms2) +All (Music-SavePlaylist-Dialog) Close +DestroyModuleConfig Music-SavePlaylist-Dialog: * +DestroyFunc Music-SavePlaylist + +# Add playlist (xmms2) +DestroyFunc FuncFvwmMenuPlaylistDirectory +DestroyMenu /Music/LoadPlaylist + +# Update the database (mpd) +DestroyFunc Music-Update + +# Copy playlist (alsaplayer, mplayer) +DestroyFunc FuncFvwmMenuCopyPlaylistDirectory +AddToFunc FuncFvwmMenuCopyPlaylistDirectory ++ I PipeRead 'case "$0" in \ + "$[infostore.AudioPlaylists]"*) myexec="Exec cp -r \'%f\' \'$[infostore.UserManagedAudioPlaylists]\'";; \ + "$[infostore.VideoPlaylists]"*) myexec="Exec cp -r \'%f\' \'$[infostore.UserManagedVideoPlaylists]\'";; \ + esac; \ + test -f "$0"/.icontitle.png && mytitle="$0"/.icontitle.png; \ + test -f "$0"/.media.png && mypng="$0"/.media.png; \ + fvwm-menu-directory --icon-title "${mytitle:-22x22/categories/directory.png}" \ + --icon-file "${mypng:-22x22/categories/Audio.png}" \ + --dir "$0" --exec-title "-" --command-file "${myexec}" \ + --func-name "FuncFvwmMenuCopyPlaylistDirectory"' + +DestroyMenu /Music/CopyPlaylist +AddToMenu /Music/CopyPlaylist ++ '$[gt.Choose playlist to copy]' Nop ++ MissingSubmenuFunction FuncFvwmMenuCopyPlaylistDirectory ++ '%22x22/categories/video_movies_view.png%$[gt.Browse Medias]' Popup $[infostore.AudioPlaylists] ++ '%22x22/categories/video_movies_view.png%$[gt.Browse Medias]' Popup $[infostore.AudioPlaylists] + +# button menu (alsaplayer, audacious, mocp, mpd, mplayer, xmms2) +DestroyFunc Playlist-generator-button +AddToFunc Playlist-generator-button ++ I DestroyMenu recreate /Playlist-button ++ I AddToMenu /Playlist-button '$[gt.Remove playlist]' Popup /Music/RemovePlaylist ++ I AddToMenu /Playlist-button '$[gt.Copy playlist]' Popup /Music/CopyPlaylist ++ I AddToMenu /Playlist-button '$[gt.Load media file]' Popup /Music/LoadMovie ++ I AddToMenu /Playlist-button '$[gt.Play DVD]' Load-DVD ++ I AddToMenu /Playlist-button '$[gt.Load playlist]' Popup /Music/LoadMediaPlaylist + +DestroyMenu /Playlist-button +AddToMenu /Playlist-button ++ DynamicPopupAction Function Playlist-generator-button + +# mouse 2 Menu /Playback {{{2 +# alsaplayer, audacious, cdcd, cmus, mocp, mpd, mplayer, quodlibet, xmms2 +DestroyFunc Music-Next + +# alsaplayer, audacious, cdcd, cmus, mocp, mpd, mplayer, quodlibet, xmms2 +DestroyFunc Music-Prev + +# alsaplayer +DestroyFunc Music-SongChange +DestroyMenu /Music/SongChange + +# alsaplayer, audacious, cdcd, cmus, mocp, mpd, quodlibet, xmms2 +DestroyFunc Music-Stop + +# alsaplayer, audacious, cdcd, cmus, mocp, mpd, mplayer, quodlibet, xmms2 +DestroyFunc Music-Play + +# alsaplayer, audacious, cdcd, cmus, mocp, mpd, mplayer, quodlibet, xmms2 +DestroyFunc Music-Pause + +# alsaplayer, audacious, cdcd, cmus, mocp, mpd, quodlibet +DestroyFunc Music-PlayPause + +# cdcd, cmus, mpd, quodlibet +DestroyFunc Music-Forward + +# cdcd, cmus, mpd, quodlibet +DestroyFunc Music-Backward + +# audacious, cmus, mpd, quodlibet +DestroyFunc Music-ToggleRandom + +# alsaplayer, mplayer +DestroyFunc Music-Jump +DestroyMenu /Music/Jump + +# alsaplayer, mplayer +DestroyFunc Music-Seek +DestroyMenu /Music/Seek + +# mpd +DestroyMenu /Music/Crossfade + +# mpd, xmms2 +DestroyFunc Music-Shuffle + +# button menu +# (alsaplayer, audacious, cdcd, cmus, mocp, mpd, mplayer, mocp, mpd, mplayer, quodlibet, xmms2) +DestroyFunc Playback-generator +# button menu (all) +DestroyMenu /Playback +AddToMenu /Playback ++ DynamicPopupAction Function Playback-generator + +# mouse 3 Menu /Mixer : in components/Mixer {{{2 +# mouse 4 Music-Next : allready here +# mouse 4 Music-Prev : allready here + +# Third button {{{1 +# Player controls and vol +# mouse 1 Music-Play : allready here {{{2 +# mouse 2 Music-Pause : allready here +# mouse 3 Menu /Music/Volume +# alsaplayer +DestroyFunc Music-VolumeFr +DestroyFunc Music-VolumeEn +# audacious, mplayer +DestroyFunc Music-Volume + +# button menu (alsaplayer, mplayer) +DestroyMenu /Music/Volume + +# mouse 4 Music-Speed-Up {{{2 +# mouse 5 Music-Speed-Down +# alsaplayer, mplayer +DestroyFunc Music-Speed-Up +DestroyFunc Music-Speed-Down + +# Last button {{{1 +# speed controls +# mouse 1 Menu /Speed {{{2 +# alsaplayer, mplayer +DestroyFunc Music-Speed +# button menu (alsaplayer, mplayer) +DestroyMenu /Speed + +# mouse 4 Button-Seek-+ {{{2 +# mouse 5 Button-Seek-- +# alsaplayer +DestroyFunc Button-Seek-+ +DestroyFunc Button-Seek-- + +# Music menus {{{1 +# main music menu (alsaplayer, audacious, mocp) {{{2 +DestroyFunc Music-generator + +DestroyMenu /Music +AddToMenu /Music ++ DynamicPopupAction Function Music-generator + +# vim:ft=fvwm Modified: fvwm/components/functions/Music-mplayer =================================================================== --- fvwm/components/functions/Music-mplayer 2013-04-12 18:12:07 UTC (rev 225) +++ fvwm/components/functions/Music-mplayer 2013-04-12 20:04:55 UTC (rev 226) @@ -2,7 +2,7 @@ # Written by: Dominique Michel <dom...@so...> 2008-2013 # Load shared functions and initialisations {{{1 -Include components/functions/Music +Include components/functions/Media # Specific variables {{{1 # We must start mplayer in slave mode and send the commands via a pipe @@ -24,8 +24,7 @@ DestroyFunc Music-Kill AddToFunc Music-Kill -# + I Exec exec echo "quit" > /home/$[infostore.USERDIR]/.mplayer/pipe -+ I Exec exec killall -9 mplayer ++ I Exec exec echo "quit" > /home/$[infostore.USERDIR]/.mplayer/pipe DestroyFunc Music-GUI AddToFunc Music-GUI @@ -52,66 +51,15 @@ # Second button {{{1 # Player controls and main vol # mouse 1 Menu /Playlist-button {{{2 - DestroyFunc Load-DVD AddToFunc Load-DVD #+ I Exec exec fvwm-crystal.mplayer-wrapper dvd $[infostore.USERDIR] + I Exec exec fvwm-crystal.mplayer-wrapper file $[infostore.USERDIR] dvdnav:// -# Generate /Music/LoadMovie menu +# Generate /Music/LoadMovie menu (mplayer) PipeRead '$[FVWM_SYSTEMDIR]/scripts/media_directories $[infostore.USERDIR]' Include tmp/MenuMovieDirectory -DestroyFunc FuncFvwmMenuAudioDirectory -AddToFunc FuncFvwmMenuAudioDirectory -+ I PipeRead 'case "$0" in \ - "$[infostore.AudioPlaylists]"*) myexec="fvwm-crystal.mplayer-wrapper list $[infostore.USERDIR]";; \ - "$[infostore.UserManagedAudioPlaylists]"*) myexec="fvwm-crystal.mplayer-wrapper list $[infostore.USERDIR]";; \ - "$[infostore.VideoPlaylists]"*) myexec="fvwm-crystal.mplayer-wrapper list $[infostore.USERDIR]";; \ - "$[infostore.UserManagedVideoPlaylists]"*) myexec="fvwm-crystal.mplayer-wrapper list $[infostore.USERDIR]";; \ - esac; \ - test -f "$0"/.icontitle.png && mytitle="$0"/.icontitle.png; \ - test -f "$0"/.media.png && mypng="$0"/.media.png; \ - fvwm-menu-directory --icon-title "${mytitle:-22x22/categories/directory.png}" \ - --icon-file "${mypng:-22x22/categories/Audio.png}" \ - --func="FuncFvwmMenuAudioDirectory" \ - --exec-file "^${myexec}" --dir "$0" \ - --exec-t="^fvwm-crystal.play-movies $0"' - -DestroyMenu /Music/LoadPlaylist -AddToMenu /Music/LoadPlaylist -+ MissingSubmenuFunction FuncFvwmMenuAudioDirectory -+ '%22x22/categories/video_movies_view.png%$[gt.Audio playlists]' Popup $[infostore.AudioPlaylists] -+ '%22x22/categories/video_movies_view.png%$[gt.Video playlists]' Popup $[infostore.VideoPlaylists] -+ '%22x22/categories/video_movies_view.png%$[gt.Personal audio playlists]' Popup $[infostore.UserManagedAudioPlaylists] -+ '%22x22/categories/video_movies_view.png%$[gt.Personal video playlists]' Popup $[infostore.UserManagedVideoPlaylists] - -DestroyFunc Music-RemovePlaylist-generator -AddToFunc Music-RemovePlaylist-generator -+ I DestroyMenu recreate /Music/RemovePlaylist -+ I AddToMenu /Music/RemovePlaylist -+ I PipeRead 'for i in $[infostore.UserManagedAudioPlaylists]/*.{m3u,pls}; do \ - name=$(basename "$i"); \ - sname=${name%%.m3u}; \ - sname=${sname%%.pls}; \ - echo \"AddToMenu /Music/RemovePlaylist \'$sname\' Exec rm -f \'$i\'\"; done' - -DestroyMenu /Music/RemovePlaylist -AddToMenu /Music/RemovePlaylist -+ DynamicPopupAction Function Music-RemovePlaylist-generator - -DestroyFunc Playlist-generator-button -AddToFunc Playlist-generator-button -+ I DestroyMenu recreate /Playlist-button -+ I AddToMenu /Playlist-button '$[gt.Play DVD]' Load-DVD -+ I AddToMenu /Playlist-button '$[gt.Load media file]' Popup /Music/LoadMovie -+ I AddToMenu /Playlist-button '$[gt.Load playlist]' Popup /Music/LoadPlaylist -+ I AddToMenu /Playlist-button '$[gt.Remove playlist]' Popup /Music/RemovePlaylist - -DestroyMenu /Playlist-button -AddToMenu /Playlist-button -+ DynamicPopupAction Function Playlist-generator-button - # mouse 2 Menu /Playback {{{2 DestroyFunc Music-Pause AddToFunc Music-Pause @@ -195,11 +143,7 @@ AddToFunc Music-Play + I Exec exec echo "frame_step" > /home/$[infostore.USERDIR]/.mplayer/pipe -# mouse 2 Music-PlayPause -#DestroyFunc Music-PlayPause -#AddToFunc Music-PlayPause -#+ I Exec exec echo "pause" > /home/$[infostore.USERDIR]/.mplayer/pipe - +# mouse 2 Music-PlayPause : allready here {{{2 # mouse 3 Menu /Music/Volume {{{2 DestroyFunc Music-Volume AddToFunc Music-Volume @@ -297,17 +241,20 @@ + I DestroyMenu recreate /Playlist + I AddToMenu /Playlist '$[gt.Play DVD]' Load-DVD + I AddToMenu /Playlist '$[gt.Load media file]' Popup /Music/LoadMovie -+ I AddToMenu /Playlist '$[gt.Load playlist]' Popup /Music/LoadPlaylist ++ I AddToMenu /Playlist '$[gt.Load playlist]' Popup /Music/LoadMediaPlaylist #+ I AddToMenu /Playlist '$[gt.Clear playlist]' Music-ClearPlaylist -#+ I AddToMenu /Playlist '$[gt.Remove playlist]' Popup /Music/RemovePlaylist ++ I AddToMenu /Playlist '$[gt.Copy playlist]' Popup /Music/CopyPlaylist ++ I AddToMenu /Playlist '$[gt.Remove playlist]' Popup /Music/RemovePlaylist DestroyFunc /Playlist-generator-bot AddToFunc /Playlist-generator-bot + I DestroyMenu recreate /Playlist-bot -+ I AddToMenu /Playlist-bot '$[gt.Load playlist]' Popup /Music/LoadPlaylist ++ I AddToMenu /Playlist-bot '$[gt.Load playlist]' Popup /Music/LoadMediaPlaylist + I AddToMenu /Playlist-bot '$[gt.Load media file]' Popup /Music/LoadMovie + I AddToMenu /Playlist-bot '$[gt.Play DVD]' Load-DVD #+ I AddToMenu /Playlist-bot '$[gt.Clear playlist]' Music-ClearPlaylist ++ I AddToMenu /Playlist-bot '$[gt.Copy playlist]' Popup /Music/CopyPlaylist ++ I AddToMenu /Playlist-bot '$[gt.Remove playlist]' Popup /Music/RemovePlaylist # Recipe without audio buttons use the following: DestroyMenu /Music @@ -318,8 +265,9 @@ AddToFunc /Music-generator + I DestroyMenu recreate /Music + I AddToMenu /Music '$[gt.Player]' Popup /Player -#+ I AddToMenu /Music '$[gt.Show/Hide GUI]' Music-GUI ++ I AddToMenu /Music '$[gt.Show/Hide GUI]' Music-GUI + I AddToMenu /Music '$[gt.Playback]' Popup /Playback ++ I AddToMenu /Music '$[gt.Load]' Popup /Playlist + I AddToMenu /Music '$[gt.Mixer]' Popup /Mixer + I AddToMenu /Music '$[gt.Speed]' Popup /Speed + I AddToMenu /Music '$[gt.Show/Hide QJackCtl]' Music-QJackGUI Modified: fvwm/components/functions/Music-mplayer2 =================================================================== --- fvwm/components/functions/Music-mplayer2 2013-04-12 18:12:07 UTC (rev 225) +++ fvwm/components/functions/Music-mplayer2 2013-04-12 20:04:55 UTC (rev 226) @@ -2,7 +2,7 @@ # Written by: Dominique Michel <dominique_libreourceforge.net> 2009-2013 # Initialisations, shared functions {{{1 -Include components/functions/Music +Include components/functions/Media # Variables {{{1 # We must start mplayer2 in slave mode and send the commands via a pipe @@ -28,7 +28,6 @@ DestroyFunc Music-GUI AddToFunc Music-GUI -#+ I Exec exec echo "menu up" > /home/$[infostore.USERDIR]/.mplayer/pipe + I All (XDRadio) Iconify toggle DestroyFunc Player-generator @@ -57,60 +56,10 @@ #+ I Exec exec fvwm-crystal.mplayer-wrapper dvd $[infostore.USERDIR] + I Exec exec fvwm-crystal.mplayer-wrapper file $[infostore.USERDIR] dvdnav:// -# Generate /Music/LoadMovie menu +# Generate /Music/LoadMovie menu (mplayer) PipeRead '$[FVWM_SYSTEMDIR]/scripts/media_directories $[infostore.USERDIR]' Include tmp/MenuMovieDirectory -DestroyFunc FuncFvwmMenuAudioDirectory -AddToFunc FuncFvwmMenuAudioDirectory -+ I PipeRead 'case "$0" in \ - "$[infostore.AudioPlaylists]"*) myexec="fvwm-crystal.mplayer-wrapper list $[infostore.USERDIR]";; \ - "$[infostore.UserManagedAudioPlaylists]"*) myexec="fvwm-crystal.mplayer-wrapper list $[infostore.USERDIR]";; \ - "$[infostore.VideoPlaylists]"*) myexec="fvwm-crystal.mplayer-wrapper list $[infostore.USERDIR]";; \ - "$[infostore.UserManagedVideoPlaylists]"*) myexec="fvwm-crystal.mplayer-wrapper list $[infostore.USERDIR]";; \ - esac; \ - test -f "$0"/.icontitle.png && mytitle="$0"/.icontitle.png; \ - test -f "$0"/.media.png && mypng="$0"/.media.png; \ - fvwm-menu-directory --icon-title "${mytitle:-22x22/categories/directory.png}" \ - --icon-file "${mypng:-22x22/categories/Audio.png}" \ - --func="FuncFvwmMenuAudioDirectory" \ - --exec-file "^${myexec}" --dir "$0" \ - --exec-t="^fvwm-crystal.play-movies $0"' - -DestroyMenu /Music/LoadPlaylist -AddToMenu /Music/LoadPlaylist -+ MissingSubmenuFunction FuncFvwmMenuAudioDirectory -+ '%22x22/categories/video_movies_view.png%$[gt.Audio playlists]' Popup $[infostore.AudioPlaylists] -+ '%22x22/categories/video_movies_view.png%$[gt.Personal audio playlists]' Popup $[infostore.UserManagedAudioPlaylists] -+ '%22x22/categories/video_movies_view.png%$[gt.Video playlists]' Popup $[infostore.VideoPlaylists] -+ '%22x22/categories/video_movies_view.png%$[gt.Personal video playlists]' Popup $[infostore.UserManagedVideoPlaylists] - -DestroyFunc Music-RemovePlaylist-generator -AddToFunc Music-RemovePlaylist-generator -+ I DestroyMenu recreate /Music/RemovePlaylist -+ I AddToMenu /Music/RemovePlaylist -+ I PipeRead 'for i in $[infostore.UserManagedAudioPlaylists]/*.{m3u,pls}; do \ - name=$(basename "$i"); \ - sname=${name%%.m3u}; \ - sname=${sname%%.pls}; \ - echo \"AddToMenu /Music/RemovePlaylist \'$sname\' Exec rm -f \'$i\'\"; done' - -DestroyMenu /Music/RemovePlaylist -AddToMenu /Music/RemovePlaylist -+ DynamicPopupAction Function Music-RemovePlaylist-generator - -DestroyFunc Playlist-generator-button -AddToFunc Playlist-generator-button -+ I DestroyMenu recreate /Playlist-button -+ I AddToMenu /Playlist-button '$[gt.Play DVD]' Load-DVD -+ I AddToMenu /Playlist-button '$[gt.Load media file]' Popup /Music/LoadMovie -+ I AddToMenu /Playlist-button '$[gt.Load playlist]' Popup /Music/LoadPlaylist -+ I AddToMenu /Playlist-button '$[gt.Remove playlist]' Popup /Music/RemovePlaylist - -DestroyMenu /Playlist-button -AddToMenu /Playlist-button -+ DynamicPopupAction Function Playlist-generator-button - # mouse 2 Menu /Playback {{{1 DestroyFunc Music-Pause AddToFunc Music-Pause @@ -294,7 +243,8 @@ + I AddToMenu /Playlist '$[gt.Load media file]' Popup /Music/LoadMovie + I AddToMenu /Playlist '$[gt.Load playlist]' Popup /Music/LoadPlaylist #+ I AddToMenu /Playlist '$[gt.Clear playlist]' Music-ClearPlaylist -#+ I AddToMenu /Playlist '$[gt.Remove playlist]' Popup /Music/RemovePlaylist ++ I AddToMenu /Playlist '$[gt.Copy playlist]' Popup /Music/CopyPlaylist ++ I AddToMenu /Playlist '$[gt.Remove playlist]' Popup /Music/RemovePlaylist DestroyFunc /Playlist-generator-bot AddToFunc /Playlist-generator-bot @@ -303,6 +253,8 @@ + I AddToMenu /Playlist-bot '$[gt.Load media file]' Popup /Music/LoadMovie + I AddToMenu /Playlist-bot '$[gt.Play DVD]' Load-DVD #+ I AddToMenu /Playlist-bot '$[gt.Clear playlist]' Music-ClearPlaylist ++ I AddToMenu /Playlist-bot '$[gt.Copy playlist]' Popup /Music/CopyPlaylist ++ I AddToMenu /Playlist-bot '$[gt.Remove playlist]' Popup /Music/RemovePlaylist # Recipe without audio buttons use the following: DestroyMenu /Music @@ -313,8 +265,9 @@ AddToFunc /Music-generator + I DestroyMenu recreate /Music + I AddToMenu /Music '$[gt.Player]' Popup /Player -#+ I AddToMenu /Music '$[gt.Show/Hide GUI]' Music-GUI ++ I AddToMenu /Music '$[gt.Show/Hide GUI]' Music-GUI + I AddToMenu /Music '$[gt.Playback]' Popup /Playback ++ I AddToMenu /Music '$[gt.Load]' Popup /Playlist + I AddToMenu /Music '$[gt.Mixer]' Popup /Mixer + I AddToMenu /Music '$[gt.Speed]' Popup /Speed + I AddToMenu /Music '$[gt.Show/Hide QJackCtl]' Music-QJackGUI This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |