I have a dynamicSelectDir
which serves as dynamic select folders
ClearAll[dynamicSelectDir];
Attributes[dynamicSelectDir]=HoldFirst;
dynamicSelectDir[dirVariable_,baseDir_]:=DynamicModule[{tmpDirVar=baseDir},
ClearAll[dirVariable];
Manipulate[
dirVariable=tmpDirVar;
SetDirectory[tmpDirVar];
Column[{"sub directorys",
SetterBar[Dynamic[tmpDirVar],Select[DirectoryQ]@FileNames["*",tmpDirVar],Appearance->"Vertical"]}],
Button["reset to baseDir",tmpDirVar=baseDir],
Button["cd ..",tmpDirVar=ParentDirectory[tmpDirVar]],
{i,1,1}]]
The interface is something like
A naive way to make it a palette is simply warp Manipulate
into CreatePalette
like this
ClearAll[dynamicSelectDir];
Attributes[dynamicSelectDir]=HoldFirst;
dynamicSelectDir[dirVariable_,baseDir_]:=DynamicModule[{tmpDirVar=baseDir},
ClearAll[dirVariable];
CreatePalette[Manipulate[
dirVariable=tmpDirVar;
SetDirectory[tmpDirVar];
Column[{"sub directorys",
SetterBar[Dynamic[tmpDirVar],Select[DirectoryQ]@FileNames["*",tmpDirVar],Appearance->"Vertical"]}],
Button["reset to baseDir",tmpDirVar=baseDir],
Button["cd ..",tmpDirVar=ParentDirectory[tmpDirVar]],
{i,1,1}]],WindowSize->{Fit,Fit},WindowElements->{"VerticalScrollBar","HorizontalScrollBar"}]
However, there is a problem. If the folder list is too long, the palette won't show, even if I already added {"VerticalScrollBar","HorizontalScrollBar"}
. There is no scrollBar!!
How to make a scrollable palette for my function?