-5
$\begingroup$

I find the default Mathematica IDE lacking. I am missing a simple project file tree on the left (as in eclipse, visual studio etc.)

The following would be very cool:

All your files (in a given directory) would be displayed in a Mathematica Palette. Clicking them changes to the clicked file or opens it.

Has anyone seen something like this? Can anyone put together a quick proof of concept? It should not be that difficult ...

$\endgroup$
0

1 Answer 1

23
$\begingroup$

as J.M. mentions, the Workbench is an Eclipse plug-in (and is available as such).

Now, to display all files in some directory, you can do this:

SetDirectory["~/Documents/Projects/other/playing"]

(this is an arbitrarily selected directory on my machine). Then define

doSomething[fname_] := CreateWindow[
  DialogNotebook[
   {
    TextCell[fname],
    Button["open", NotebookOpen[fname]],
    Button["beep", Beep[]],
    DefaultButton[]
    }
   ]
  ]

(this will take as an argument the file name and pop up a dialog asking what to do; I've put in placeholder actions here). Then

Grid[Partition[#, 2] &[
  Button[#, doSomething[ToFileName[Directory[], #]]] & /@ 
   FileNames[]]]

gives something like

Mathematica graphics

and clicking on the names brings this up:

Mathematica graphics

Of course this can be greatly elaborated.

$\endgroup$
2
  • $\begingroup$ Nice. Perhaps FileNames["*.nb"] to avoid DS_Store and PDF opening... $\endgroup$
    – cormullion
    Commented Oct 12, 2012 at 17:17
  • $\begingroup$ @cormullion you're right, if you want only nb and m files to appear. originally this was part of a palette I have where each file is treated differently according to extension (basically a way for me to avoid having to leave mathematica to manage my output files etc) $\endgroup$
    – acl
    Commented Oct 12, 2012 at 17:21

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.