James Griffin <j...@kontrol.kode5.net> writes:

> Hi
>
> I have used an example for creating a dynamic menu to view pictures,
> found on the fvwm site to create a documents menu. 
>
> The problem I have is -- in both examples really -- the files in these
> directories are likely to different types. So, using the pictures example
> on the fvwm site, it shows how to create the menu for files of .jpg type.
>
> I would like to extend it show all the files, i.e. not just
> jpg files, but to use a different program to view different file types. 
>
> to make this clearer, here is the function is question for the pictures
> menu shown on the fvwm site:
>
> AddToMenu JpgMenu Pictures title
> + MissingSubmenuFunction FuncFvwmMenuDirectory
> + DynamicPopupAction Function MakeJpgMenu
>
> AddToFunc MakeJpgMenu
> + I DestroyMenu recreate JpgMenu
> + I AddToMenu JpgMenu Pictures Title
> + I PipeRead 'for i in $HOME/pictures/*.jpg; \
>   do echo AddToMenu JpgMenu "`basename $i`" Exec xv $i; done'
>
> As it happens, xv can open all of the image types i'm likely to ever have
> in that directory, so I can alter it to list all files by replacing
> '*.jpg' with '*.*'

> I "think" it would need a shell case statement, perhaps? Although i'm not
> certain about that and also not confident enough to write it. 
>
> Would someone mind showing me how I could do this? Perhaps to provide an
> example?

Try replacing '*.jpg' with just '*'.

*.* is from Windows .BAT files.

When referring to $i, always include quotes like this:

   do echo AddToMenu JpgMenu "`basename "$i"`" Exec xv "$i"; done'

(You need the quotes to handle file names with spaces.)

Instead of 'Exec xv' do:

Exec exec my-handle-file.

Where "my-handle-file" is a shell you write that figures out what
program to execute.

In my-handle-file figure out what to execute based on $1:

    case "$1" in
        *.jpg) exec xv $1;;
        *.doc) exec ooffice $1;;
        *) echo "say what";;
    esac



-- 
Dan Espen

Reply via email to