Re: CellAutoOverwrite
- To: mathgroup at smc.vnet.net
- Subject: [mg44002] Re: [mg43708] CellAutoOverwrite
- From: Ezine <ezine at omegaconsultinggroup.com>
- Date: Fri, 17 Oct 2003 05:14:27 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
At 03:43 PM 9/30/2003, Florian Jaccard wrote: >Hello everybody, > >For personal training purpose, I'd like to create my own clock. >It works fine, but each second, a new drawing is being created. After a few >minutes, my notebook becomes too big... >Is it possible to delete automatically the old drawing when the new is being >created ? >If CellAutoOverwrite is the option I need, does somebody know how to use it >? >Thank's for help ! > >Greetings > >Florian Jaccard I came up with a nice little clock program a while back. It even runs in its own kernel, so you can keep working while the clock is ticking. It's based on the frontend programming techniques outlined in our latest ezine: http://omegaconsultinggroup.com/Services/HTMLLinks/ezv2i09_4.html To run it do: In[1]:=<< Clock` In[2]:=ClockinNB[] Here's the package code. Put it in one of the standard locations. BeginPackage["Clock`", "Graphics`Arrow`"] Clock::usage = "Clock[{hour, minute, second}] creates a Graphics image of an analog clock\ at the given time. Clock[] uses the current time." ClockinNB::usage = "ClockinNB[] places a running analog clock in a separate notebook." Begin["`Private`"] ClockinNB::noaux = "This function requires that a kernel named \"Aux\" be defined." loc[ang_] := {Sin[ang], Cos[ang]} Clock[{h_, m_, s_}] := Module[{hang, mang, sang}, {hang, mang, sang} = 2 Pi {h/12 + m/(12*60) + s(12*60*60), m/60 + s/(60*60), s/60}; Graphics[{ Circle[{0, 0}, 1.2], Text[StyleForm["12", "Title"], {0, 1}], Text[StyleForm["3", "Title"], {1, 0}], Text[StyleForm["6", "Title"], {0, -1}], Text[StyleForm["9", "Title"], {-1, 0}], Map[Line[{.9 loc[#], loc[#]}] &, 2 Pi/12 {1, 2, 4, 5, 7, 8, 10, 11}], PointSize[.05], Point[{0, 0}], Arrow[{0, 0}, .6 loc[hang]], Arrow[{0, 0}, loc[mang]], Line[{{0, 0}, .9 loc[sang]}]}, AspectRatio -> Automatic, ImageSize -> 200] ] Clock[] := Clock[Floor/@Take[Date[], -3]] ContinuingClock[nb_NotebookObject] := While[MemberQ[Notebooks[], nb], NotebookFind[nb, "clock", All, CellTags, AutoScroll->False]; NotebookWrite[nb, Cell[GraphicsData["PostScript", DisplayString@Clock[]], "Graphics", ImageMargins->{{0, 0}, {0, 0}}, CellTags->"clock"]]; Pause[1]; ] ClockinNB[] := Module[{nb}, If[("Aux"/.(EvaluatorNames/.Options[$FrontEnd, EvaluatorNames]))==="Aux", Message[ClockinNB::noaux], nb = NotebookPut[Notebook[{ Cell["<<Clock`", "Input", CellOpen->False, CellTags->"clock"], Cell["Clock`Private`ContinuingClock[EvaluationNotebook[]]", "Input", CellOpen->False, CellTags->"clock"], Cell[BoxData[ButtonBox["Quit", Active->True, ButtonFunction:>NotebookClose[ButtonNotebook[]]]], "Text"]}, ShowCellBracket->False, Evaluator -> "Aux", WindowSize->{210, 250}, WindowFrame->"Palette", WindowElements->{}, WindowFrameElements->{}, WindowMargins->{{Automatic, 0}, {Automatic, 0}}, WindowTitle->"Clock", ShowSelection->False ] ]; SelectionMove[nb, All, Notebook]; SelectionEvaluate[nb] ] ] End[] Module[{evs = EvaluatorNames /. Options[$FrontEnd, EvaluatorNames]}, If[("Aux" /. evs) === "Aux" && $SystemID=!="PowerMac", SetOptions[$FrontEnd, EvaluatorNames -> Append[evs, "Aux" -> {}]] ] ] EndPackage[] -------------------------------------------------------------- Omega Consulting "The final answer to your Mathematica needs" http://omegaconsultinggroup.com