MathGroup Archive 2009

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: ActionMenu with directories

  • To: mathgroup at smc.vnet.net
  • Subject: [mg105935] Re: [mg105926] ActionMenu with directories
  • From: John Fultz <jfultz at wolfram.com>
  • Date: Sun, 27 Dec 2009 02:24:00 -0500 (EST)
  • Reply-to: jfultz at wolfram.com

If you look at the value Mathematica assigned to your variable 'menu', you'll 
see why.  Remember that RuleDelayed doesn't evaluate *anything* on the 
right-hand side.  That includes the value of 'k'.

With[] and pattern replacement are tools which Mathematica offers that allow you 
to inject values directly into an expression which isn't being evaluated. Your 
version could be fixed by wrapping With[] around the RuleDelayed, but in this 
case, a pattern replacement ends up producing much simpler code.

I also added a Select[] to filter out filenames to only those which are actual 
directories.

dirs = Select[FileNames[], FileType[#] == Directory &] ;
menu = dirs /. {x_String -> (x :> SetDirectory[x])};
ActionMenu["Choose Directory", menu]

Sincerely,

John Fultz
jfultz at wolfram.com
User Interface Group
Wolfram Research, Inc.


On Sat, 26 Dec 2009 19:07:32 -0500 (EST), Kevin J. McCann wrote:
> I would like to write a short script to create an action menu from which
> I can choose a directory. I have a data directory (Windows) whose only
> members are directories (each named by the date the data were taken). I
> would like to create an action menu that lists these directories and
> then does a SetDirectory to the chosen one. Here is what I have tried:
>
> dirs=FileNames[];
> numDirs=Length[dirs];
> menu={};
> For[k=1,k<=numDirs,
> AppendTo[menu,RuleDelayed[ToString[dirs[[k]]],SetDirectory[dirs[[k]]]]];
> k=k+1;
> ]
>
> ActionMenu["Choose Directory",menu]
>
> It creates the menu, but it doesn't convert the SetDirectory correctly.
>
> Any ideas?
>
> Also, is there a way to tell if a FileNames output is a directory or file?
>
> Thanks,
>
> Kevin




  • Prev by Date: Re: Figure quality
  • Next by Date: Re[] function
  • Previous by thread: ActionMenu with directories
  • Next by thread: StringMatchQ and non-ASCII characters