Dan Espen <des...@verizon.net> writes:

> 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

(Oops, of course quotes around all the references to $1,
and my-handle-file must be a shell with execute permission
and in your $PATH.)

-- 
Dan Espen

Reply via email to