####
# Les menus sont des listes que vous pouvez faire apparaître à partir
# d'un raccourci clavier ou d'un bouton de souris. Les menus peuvent
# être utilisés pour lister vos programmes mais on peut également
# utiliser des menus dynamiques qui changent de contenu suivant
# certaines conditions.
#
# Le style des menus est définit dans le fichier de configuration
# principal par l'intermédiaire de la commande MenuStyle. 
# Vous trouverez ici uniquement la structure des menus et quelques 
# fonctions qui sont utilisées dans les menus dynamiques.
#
# La syntaxe est semblable aux fonctions : on commence par détruire le menu
# au cas ou il existerai déja sans qu'on le sache avec la commande 
# DestroyMenu, puis on le créer avec la commande AddToMenu.
# Dans une fonction on utilise + I Action_à_effectuer ; dans le menu la 
# syntaxe sera : + "[nom de l'objet]%[icône]%" [action]
# Ce n'est pas un problème si l'icône vient avant ou après le nom,
# par exemple + "%[icône]%[nom de l'objet]" [action] va avoir exactement
# le même effet. 
#
# L'action Popup Nom_du_Menu ouvre un sous-menu. Exemple :
# + "Internet" Popup MenuInternet
# ouvrira le menu nommé MenuInternet.
#
# Il existe quelques objets spécifiques aux menus :
# + "" Nop insère un séparateur.
# + "Titre du menu" Title insère un titre, celui ci n'est pas sélectionnable.
# Notez que vous pouvez utiliser des commandes conditionnelles afin d'afficher 
# ou pas la ligne. Par exemple :
# Test (x xmms) + "xmms" Exec xmms
# Cette ligne n'apparaîtra dans le menu uniquement si Fvwm trouve l'executable
# xmms sur votre système. 
##########################

DestroyMenu Root
AddToMenu Root
Test (x $[TermName]) + "%terminal.png%Terminal $[TermName]"     Exec $[TermName]
Test (x $[browser]) + "%home.png%Explorateur"                   Exec $[browser]
+ ""                                                            Nop
+ "%internet.png%Internet"                                      Popup Internet
+ "%games.png%Jeux"                                             Popup Games
+ "%multimedia.png%Multimedia"                                  Popup Multimedia
+ "%utilitaires.png%Utilitaires"                                Popup Utilities
+ "%config.png%Preferences"                                     Popup Settings
+ "%systeme.png%Systeme"                                        Popup System
+ ""                                                            Nop
+ "%quit.png%Quitter..."                                        Popup QuitVerify

DestroyMenu QuitVerify
AddToMenu QuitVerify
+ %menu/reload.png%"Redemarrer Fvwm"                            Restart
+ %quit.png%"Quitter Fvwm"                                      Quit
+ %cancel.png%"Annuler"                                         Nop

DestroyMenu System
AddToMenu System
Test (x xscreensaver-command) + "%xscreensaver.png%Xscreensaver"        Exec xscreensaver-demo
Test (x xscreensaver-command) + "%lock.png%Verrouiller l'ecran"         Exec xscreensaver-command -lock
Test (x xkill) + "%kill.png%Tuer une fenetre"                           Exec xkill
+ "%terminal.png%FvwmConsole"                                           Module FvwmConsole -terminal $[TermName]

DestroyMenu Multimedia
AddToMenu Multimedia
Test (x $[audio_exec]) + "%xmms.png%Audio $[audio_exec]"                Exec $[audio_exec]
Test (x $[video_exec_bis]) + "%xine.png%Video $[video_exec_bis]"        Exec $[video_exec_bis]
Test (x $[video_exec]) + "%xine.png%Video $[video_exec]"                Exec $[video_exec]

DestroyMenu Games
AddToMenu Games
Test (x et) + "Enemy territory"                 Exec et
Test (x et-tcetest) + "%tce-2.png%True Combat"  Exec et-tcetest
Test (x $[HOME]/TransGaming_Drive/Program\ Files/Warcraft\ III/War3.exe) + "%warcraft.png%Warcraft III" Exec rxvt -e cedega TransGaming_Drive/Program\ Files/Warcraft\ III/War3.exe
Test (x postal2demo) + "Gopostal"               Exec postal2mpdemo
Test (x sc3u) + "Sim City 3000"                 Exec sc3u

DestroyMenu Settings
AddToMenu Settings
+ DynamicPopupAction SettingsFunc

DestroyFunc SettingsFunc
AddToFunc SettingsFunc
+ I DestroyMenu recreate Settings
+ I AddToMenu Settings
+ I + MissingSubmenuFunction WallpaperBrowser
+ I + "%editeurs.png%Editer le fichier de config"               Exec gvim -geom 88x40 $[FVWM_USERDIR]/.fvwm2rc
+ I + "%editeurs.png%Editer le fichier des menus"               Exec gvim -geom 88x40 $[FVWM_USERDIR]/menus
+ I + "%editeurs.png%Editer le script TimeScript"                       Exec gvim $[scripts]/TimeScript
+ I + "%themes.png%Changer de theme"                            Popup ChangeThemeMenu
+ I + "%wallpapers.png%Parcourir les fonds d'ecran"             Popup $[wallpapers_dir]
+ I + "%dossier.png%Parcourir..."               Popup QuickBrowser
+ I Next (CirculateHit,Side) PipeRead 'test $$(($[w.x]+$[w.width])) -le $[vp.width] \
    && echo + \\"\\%run.png\\%Cacher le panneau lateral\\" SideHideFunc 3 || echo + \\"\\%run.png\\%Montrer le panneau lateral\\" SideHideFunc 3'
+ I + "%screenshot.png%Capture d'ecran" Exec $[scripts]/screenshot.sh

DestroyMenu Utilities
AddToMenu Utilities
+  DynamicPopupAction UtilitiesFunc

DestroyFunc UtilitiesFunc
AddToFunc UtilitiesFunc
+ I DestroyMenu recreate Utilities
+ I AddToMenu Utilities
+ I + MissingSubmenuFunction ScreenshotsBrowser
+ I + "%home.png%File manager"          Exec rox
+ I + "%xpad.png%Note"          Exec xpad
+ I + "%run.png%Lancer ..."                     Exec gmrun
+ I + "%xcalc.png%Calculatrice"         Exec xcalc
+ I + "%wallpapers.png%Parcourir les captures d'ecran"  Popup $[screenshots_dir]

DestroyMenu QuickBrowser
AddToMenu QuickBrowser
+ MissingSubmenuFunction FuncFvwmMenuDirectory
+ "%video.png%Videos"              Popup $[video]
+ "%audio.png%Musiques"            Popup $[audio]


DestroyMenu ChangeThemeMenu
AddToMenu ChangeThemeMenu
+ %themedefaut.png%"Defaut" ChangeThemeDefaut
+ %themevert.png%"Theme vert" ChangeThemeVert

DestroyMenu Internet
AddToMenu Internet
+ "%firefox.png%Navigateur web"         Exec firefox
+ "%thunderbird.png%Client Email"       Exec thunderbird
+ "%gaim.png%Gaim"                      Exec gaim
+ "%irssi.png%Irssi"                    Exec rxvt -g 95x50 -e irssi
+ "%xchat.png%Xchat"                    Exec xchat-2
+ "%gftp.png%Gftp"                      Exec gftp
+ "%sancho.png%Sancho"                  Exec sancho
+ "%internet.png%Sites Web"             Popup SitesWeb

DestroyFunc SitesWebFunc
AddToFunc SitesWebFunc
+ I Exec firefox -remote "openurl($0,new-tab)" || firefox $0
+ I Any ("Firefox-bin") Next ("Firefox-bin") WindowListFunc

DestroyMenu SitesWeb
AddToMenu SitesWeb
+ %dossier.png%"Fvwm & Fluxbox" Popup SitesWebFvwm
+ %dossier.png%"Themes" Popup SitesWebThemes
+ %dossier.png%"E17"    Popup SitesWebE17
+ %dossier.png%"Php, Css, Xhtml" Popup SitesWebCss
+ %internet.png%"Da Linux French Page" SitesWebFunc http://www.linuxfr.org
+ %internet.png%"Trustonme" SitesWebFunc http://www.trustonme.net
+ %internet.png%"Lea-Linux" SitesWebFunc http://www.lea-linux.org
+ %internet.png%"Station Linux" SitesWebFunc http://www.stationlinux.org
+ %internet.png%"CtrlAltSuppr"  SitesWebFunc http://www.ctrlaltsuppr.com
+ %internet.png%"Blog : Tristan Nito" SitesWebFunc http://www.sandblog.org
+ %internet.png%"BashFR" SitesWebFunc http://www.bashfr.org
+ %internet.png%"Bad day at work" SitesWebFunc http://www.kimbuchanan.com/shark.htm
+ %internet.png%"Kervarker" SitesWebFunc http://www.kervarker.org
+ %internet.png%"Pages jaunes" SitesWebFunc http://www.pagesjaunes.fr
+ %internet.png%"ImageShack" SitesWebFunc http://imageshack.us/
+ %internet.png%"Le forum marin" SitesWebFunc http://www.maritime.lautre.net/croisieres/listemessages.php3
+ %internet.png%"Wallpapers" SitesWebFunc http://www.socksoff.co.uk/walls02.html
+ %internet.png%"Meteo France" SitesWebFunc http://www.meteo.fr
+ %internet.png%"Slayers Online" SitesWebFunc http://www.slayersonline.info/

DestroyMenu SitesWebFvwm
AddToMenu SitesWebFvwm
+ %internet.png%"Fvwm"  SitesWebFunc http://www.fvwm.org
+ %internet.png%"Wiki Fvwm" SitesWebFunc http://www.fvwmwiki.org/
+ %internet.png%"Fvwm Man pages" SitesWebFunc http://www.fvwm.org/documentation/manpages/unstable/fvwm.php
+ %internet.png%"Forums Fvwm"   SitesWebFunc http://fvwm.lair.be
+ %internet.png%"Think" SitesWebFunc http://www.chwombat.net
+ %internet.png%"Config Taviso" SitesWebFunc http://dev.gentoo.org/~taviso/fvwm2rc.beta.html
+ %internet.png%"Fvwm Crystal" SitesWebFunc http://fvwm-crystal.berlios.de/
+ ""    Nop
+ %internet.png%"Fluxbox" SitesWebFunc http://www.fluxbox.org
+ %internet.png%"Fluxbox-fr" SitesWebFunc http://www.fluxbox-fr.sysif.net

DestroyMenu SitesWebThemes
AddToMenu SitesWebThemes
+ %internet.png%"Gnome Look" SitesWebFunc http://www.gnome-look.org
+ %internet.png%"Kde Look" SitesWebFunc http://www.kde-look.org
+ %internet.png%"LinuxShot" SitesWebFunc http://www.linuxshot.org

DestroyMenu SitesWebE17
AddToMenu SitesWebE17
+ %internet.png%"Get E" SitesWebFunc http://www.get-e.org
+ %internet.png%"Rasterman" SitesWebFunc http://www.rasterman.com

DestroyMenu SitesWebCss
AddToMenu SitesWebCss
+ %internet.png%"OpenWeb"       SitesWebFunc http://www.openweb.eu.org
+ %internet.png%"Alsacreations" SitesWebFunc http://www.alsacreations.com





####
# Voici la partie qui gère le menu des opérations sur les fenêtres.
# C'est Taviso qui a pensé à cette idée géniale, les menus changent de 
# contenu suivant certaines conditions sur les fenêtres (maximisée, iconifiée
# ou non etc).
##########################
AddToMenu WindowControls DynamicPopupAction DynamicWindowControls WindowControls WindowControlsFunc
AddToMenu MenuFvwmGroupAction DynamicPopupAction MenuFvwmGroupActionFunc
AddToMenu MenuFvwmQuickWindowList DynamicPopupAction MenuFvwmQuickWindowListFunc

AddToFunc DynamicWindowControls
+ I DestroyMenu $0
+ I ThisWindow ("Firefox-bin") AddToMenu $0 %firefox.png%"Nouvel onglet" Exec firefox -remote "openurl(about:blank,new-tab)"
+ I ThisWindow ("Firefox-bin") AddToMenu $0 %firefox.png%"Nouvelle fenetre" Exec firefox -remote "openurl(about:blank,new-window)"
+ I ThisWindow ("Firefox-bin") AddToMenu $0 %firefox.png%"Bookmarks" Popup SitesWeb
+ I ThisWindow ("gvim") AddToMenu $0 %editeurs.png%"Nouvelle fenetre"   Exec gvim -geom 88x40
+ I ThisWindow ("xmms") AddToMenu $0 %xmms.png%"Lecture / Pause..." Exec exec xmms --play-pause
+ I ThisWindow ("xmms") AddToMenu $0 %xmms.png%"Suivant" Exec exec xmms --fwd
+ I ThisWindow ("xmms") AddToMenu $0 %xmms.png%"Precedent" Exec exec xmms --rew
+ I ThisWindow ("xmms") AddToMenu $0 %xmms.png%"A propos..." Exec exec xmessage "$(xmms --version)"
+ I ThisWindow ("ROX-Filer") AddToMenu $0 %home.png%"Nouvelle fenetre..." Exec exec rox
+ I ThisWindow ("ROX-Filer") AddToMenu $0 %home.png%"A propos..." Exec exec xmessage "$(rox --version)"
+ I ThisWindow ("gimp*") AddToMenu $0 %gimp.png%"Nouvelle fenetre..." Exec exec gimp-2.0
+ I ThisWindow ("gimp*") AddToMenu $0 %gimp.png%"A propos..." Exec exec xmessage "$(gimp-2.0 --version)"
+ I ThisWindow ("$[TermName]") AddToMenu $0 %terminal.png%"Nouveau terminal" Exec rxvt
+ I ThisWindow ("Side") PipeRead 'test $$(($[w.x]+$[w.width])) -le $[vp.width] \
    && echo AddToMenu $0 \\"\\%run.png\\%Cacher le panneau lateral\\" SideHideFunc 3 || echo + \\"\\%run.png\\%Montrer le panneau lateral\\" SideHideFunc 3'
+ I AddToMenu $0 "" Nop
+ I $1

DestroyFunc WindowControlsFunc
AddToFunc WindowControlsFunc
+ I AddToMenu WindowControls
+ I + DynamicPopupAction DynamicWindowControls WindowControls WindowControlsFunc
+ I ThisWindow (!Iconic, Iconifiable) + %iconify.png%"Reduire"                  Pick Iconify
+ I TestRc (Error) ThisWindow (Iconifiable) + %iconify.png%"Reduire"            Pick Iconify
+ I TestRc (NoMatch) ThisWindow (Iconifiable) + %iconify.png%"Restaurer"        Pick Iconify off
+ I ThisWindow (!Maximized, Maximizable, !Iconic) + %maximize.png%"Maximiser"           Pick Maximize
+ I TestRc (NoMatch) ThisWindow (State 1, Maximizable, !Iconic) + %maximize.png%"Demaximiser"   Pick Maximize
+ I TestRc (Error) + %maximize.png%"Maximiser"                                  Pick Maximize
+ I ThisWindow (Maximized, State 1, !Iconic) + %maximize.png%"Plein ecran"                              Pick FullScreen
+ I ThisWindow (!Maximized, !State 1, !Iconic) + %maximize.png%"Plein ecran"    Pick Maximize ewmhiwa true
+ I ThisWindow (!Maximized, Maximizable, State 1, !Iconic) + %maximize.png%"Plein ecran"                Pick FullScreen
+ I ThisWindow (Maximized, !State 1, !Iconic) + %maximize.png%"Demaximiser"                             Pick FullScreenOff
+ I + %resize.png%"Taille"                                                      Pick Resize warptoborder
+ I ThisWindow (State 1, !Iconic, !Maximized) + %toggletitle.png%"Enlever la Decoration"        Pick ToggleTitle
+ I TestRc (NoMatch) ThisWindow (!Maximized, !Iconic) + %toggletitle.png%"Remettre la decoration"               Pick ToggleTitle
+ I TestRc (Error) + %toggletitle.png%"Enlever la decoration"                   Pick ToggleTitle
+ I ThisWindow (State 2, !Iconic, !Maximized) + %toggletitle.png%"Enlever la bordure"   Pick ToggleBorder
+ I TestRc (NoMatch) ThisWindow (!Maximized, !Iconic) + %toggletitle.png%"Remettre la bordure"  Pick ToggleBorder
+ I TestRc (Error) + %toggletitle.png%"Enlever la bordure"                      Pick ToggleBorder
+ I ThisWindow (State 1, !Iconic) + %rotatetitle.png%"Rotation de la decoration"                Pick TitleRotate
+ I TestRc (Error) + %rotatetitle.png%"Rotation de la decoration"               Pick TitleRotate
+ I + %move.png%"Deplacer"                                                      Popup MoveMethods
+ I ThisWindow + %utilitaires.png%"Action en groupe"                            Popup MenuFvwmGroupAction
+ I + %lock.png%"Toujours visible"                                              Pick Stick
+ I ThisWindow (Shaded, !Iconic) + %shade.png%"Derouler"                                Pick WindowShade Toggle
+ I TestRc (NoMatch) + %shade.png%"Enrouler"                                    Pick WindowShade Toggle
+ I TestRc (Error) + %shade.png%"Enrouler"                                      Pick WindowShade Toggle
+ I + %reload.png%"Raffraichir"                                                 Pick RefreshWindow
+ I + %identify.png%"Identification"                                            Pick Module FvwmIdent
+ I + ""                                                                        Nop
+ I + %close.png%"Fermer"                                                       Close
+ I + %destroy.png%"Detruire"                                                   Pick Destroy

DestroyFunc MenuFvwmGroupActionFunc
AddToFunc MenuFvwmGroupActionFunc
+ I SetEnv mfaf_tot 0
+ I Current All ($[w.class], CirculateHit) PipeRead 'echo SetEnv mfaf_tot $$(($$mfaf_tot + 1))'
+ I DestroyMenu MenuFvwmGroupAction
+ I AddToMenu MenuFvwmGroupAction DynamicPopupAction MenuFvwmGroupActionFunc
+ I Current + %close.png%"Fermer tous les $[w.class]" Current All ($[w.class]) Close
+ I Current + %shade.png%"Enrouler tous les $[w.class]" Current All ($[w.class], !Shaded) WindowShade True
+ I Current + %iconify.png%"Reduire tous les $[w.class]" Current All ($[w.class], !Iconic) Iconify
+ I + "" Nop
+ I + %windowlist.png%"$[mfaf_tot] fenetre(s) $[w.class] alternatives" Popup MenuFvwmQuickWindowList
+ I + "" Nop
+ I Current + %close.png%"Fermer les $[w.class] sur le bureau courant" Current All ($[w.class], CurrentDesk, AnyScreen) Close
+ I Current + %shade.png%"Enrouler les $[w.class] sur le bureau courant" Current All ($[w.class], !Shaded, CurrentDesk, AnyScreen) WindowShade True
+ I Current + %iconify.png%"Reduire les $[w.class] sur le bureau courant" Curent All ($[w.class], !Iconic, CurrentDesk, AnyScreen) Iconify
+ I + "" Nop
+ I Current + %up.png%"Raise $[w.class] sur le bureau courant" Current All ($[w.class], CurrentDesk, AnyScreen) Raise
+ I Current + %lower.png%"Lower $[w.class] sur le bureau courant" Current All ($[w.class], CurrentDesk, AnyScreen) Lower

DestroyFunc MenuFvwmQuickWindowListFunc
AddToFunc MenuFvwmQuickWindowListFunc
+ I DestroyMenu MenuFvwmQuickWindowList
+ I AddToMenu MenuFvwmQuickWindowList DynamicPopupAction MenuFvwmQuickWindowListFunc
+ I Current All ($[w.class], CirculateHit) EvalQuickWindowList

DestroyFunc EvalQuickWindowList
AddToFunc EvalQuickWindowList
+ I AddToMenu MenuFvwmQuickWindowList %$[w.miniiconfile]%"$[w.class]: $[w.name]" WindowId $[w.id] WindowListFunc

DestroyMenu MoveMethods
AddToMenu MoveMethods
+ "Deplacer vers le haut"       Pick AnimatedMove keep 0p
+ "Deplacer vers la gauche"     Pick AnimatedMove 0p keep
+ "Deplacer vers la droite"     Pick PipeRead "echo AnimatedMove $$(($[vp.width] - $[w.width]))p keep"
+ "Deplacer vers le bas"        Pick PipeRead "echo AnimatedMove keep $$(($[vp.height] - $[w.height]))p"
+ "Centrer la fenetre"                  Pick CenterWindow
+ "" Nop
+ "Deplacer vers ..."           Popup SendTo
+ "Deplacement interactif"      Pick Move

DestroyMenu SendTo
AddToMenu SendTo
+ DynamicPopupAction Function BuildSendTo

DestroyFunc BuildSendTo
AddToFunc BuildSendTo
+ I DestroyMenu recreate SendTo
+ I AddToMenu SendTo
+ I PipeRead 'seq 0 3 | grep -v $[desk.n] | awk \'{printf \"+ \\"Bureau %s\\" MoveToDesk 0 %s\\n\", $$$1 + 1, $$$1}\''