Re: Creating a simple state inspector for Mathematica
- To: mathgroup at smc.vnet.net
- Subject: [mg111919] Re: Creating a simple state inspector for Mathematica
- From: ADL <alberto.dilullo at tiscali.it>
- Date: Thu, 19 Aug 2010 07:20:03 -0400 (EDT)
- References: <i45rgt$g5a$1@smc.vnet.net> <i48jk4$e71$1@smc.vnet.net> <i4d666$6m4$1@smc.vnet.net>
Based on Sjoerd's interesting solution and other comments, I made a few variations which I found useful, so I share them with you. The following function "Inspect" accepts a context and displays a grid with expandable definitions, more or less suitable for copying and pasting (some care must be taken with strings). Moreover, in case a subcontext is present (like e.g. `Private`), which may make internal variables less readable, this context may be provided as a second argument so that it disappears as a prefix from the definitions. The function does not contain Refresh anymore so that it allows exploration of contexts like FE`. Perhaps, experts about Dynamic interaction, may actually do better. ADL ClearAll[Inspect]; Inspect[context_String, subcontext:(_String):""]:= Module[{cont,temp}, Print[ Style[context, FontFamily -> "Arial", Bold,FontSize->20] ]; Dynamic [ Grid[ Partition[ ( OpenerView[ { Row[{ Style[#, FontFamily -> "Arial", Bold], Spacer[12], Button[Style["Clear", 10], ToExpression["Clear[" <> # <> "]"]], Spacer[6], Button[Style["ClearAll", 10], ToExpression["ClearAll[" <> # <> "]"]] }], Framed[ Pane[ Dynamic[ BeginPackage[context]; If[subcontext != "", Begin[subcontext]]; temp=ToString[Definition[#], OutputForm]; End[]; If[subcontext != "", End[]]; temp ], ImageSize ->{Scaled[1], 80}, Scrollbars ->Automatic ], Background -> LightYellow ] } ] & ) /@ Names[context<>"*"], 3, 3, {1, 1}, {} ], Alignment -> {Left, Baseline}, Background -> {Automatic, {{RGBColor[0.98996, 0.950057, 0.785382], RGBColor[1, 0.983169, 0.877287]}}}, ItemSize -> Scaled[.333] ], ContinuousAction->False, SynchronousUpdating->False ] ]