~i+      !"#$%&'()*None+,-./01/+,-./01None0(Title, width, height, menuItems, commandItems) Note: 0 - panels are drawn in the center of the screen ( menu items are currently not supported 3(Id, Title, Type, x-coord, y-coord, width, height) 23456789:;<=> 68;=23456789:;<=>NoneGOpen a new window and display the given picture. Should only be called ) once during the execution of a program! 4Use the following commands once the window is open:  Close Window - esc-key. . Move Viewport - left-click drag, arrow keys. E Rotate Viewport - right-click drag, control-left-click drag, or home/ end-keys. ( Zoom Viewport - mouse wheel, or page up/ down-keys. N?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None+Request the current time of day in seconds ?Note: the gettime command generates the following input event:  'Time timeOfDay' SaveFile fileName content =Save the file of the given filetype at the filename location =Note: the save file command generates following input event:  Save fileName success (True/False) ReadFile fileName default ARead the file of the given filetype at the filename, if it fails ! The default content is returned =Note: the read file command generates following input event:  'File fileName content' Clear the screen and buffer (PanelUpdate visible [(identifier, value)] 9Command to change visibility and the content of a panel. ;Note: not all controls need to be listed, the order can be  arbitrary  For checkboxes, a value "Y" checks them, a value "N" unchecks them  Buttons can not be altered @Command to create a panel with the given panel content, must be  actived with the   command GraphPrompt (windowName,info) >Create a graphical prompt window which asks the user to enter = a string in a textbox. The user can be informed about valid  entries through the info field. CNote: the entered string is recorded as the following input event:  'Prompt (windowName,enteredText)' Draw the picture #Command to change the drawing mode ?Pictures returned from the eventhandler will normally be drawn B on the screen and in a buffer, so that the window can be quickly  redrawn. @A DrawOnBuffer command can change this default behavior, If the C parameter is False, pictures are only drawn on the screen. If the D parameter is True, drawing will be down on both the buffer and the ? screen. This can be useful in response to MouseMotion Events. 3Example of rubber banding in line drawing program:   handler (p1:ps) (MouseDown p2) H = (p1:ps, [DrawOnBuffer False, DrawPicture (Color black $ Line [p1,p2])]) " handler (p1:ps) (MouseMotion p2) H = (p1:ps, [DrawOnBuffer False, DrawPicture (Color black $ Line [p1,p2])])  handler (p1:ps) (MouseUp p2) J = (p2:p1:ps, [DrawOnBuffer True, DrawPicture (Color black $ Line [p1,p2])]) Possible input events Invalid / Unknown input Response to GetTime The time from midnight, 0 <= t <" 86401s (because of leap-seconds) B It has a precision of 10^-12 s. Leap second is only added if day  has leap seconds 2Indicates if saving of file at filepath succeeded File name content 2The found file with given name, and found content "Panel buttonId [(controlId, value)] @Event indicating that in the panel, the button with buttonId is ? pressed and that at the time the controls had the given value 'Note: the list is ordered by controlId  For checkboxes a value "Y"% indicates that they are checked and  a value of "N" indicates they are unchecked  Buttons have no controlstate $Prompt (windowname,textbox content) 3Content returned from textbox in promptwindow with  windowname *Mouse is double-clicked at location (x,y) )Mouse pointer is moved to location (x,y) 0Left mouse button is released at location (x,y) /Left mouse button is pressed at location (x,y)  Keyboard key x is pressed down; ' ' for space, \ t for tab, \ n for enter  No input ,Generated every refresh of the eventhandler Possible filetypes  Bitmap file  Text file !/The event mode lets you manage your own input. 7 Pressing ESC will still abort the program, but you don't get automatic I pan and zoom controls like with graphicsout. Should only be called once $ during the execution of a program! 2  !Name of the window bEvent handler that takes current state, input, and returns new state and maybe an updated picture Initial state of the program Initial Picture doubleclick speed !  !!  !     ! Safe-Inferred"+Combined integral and floating number type """ Safe-Inferred%O(n). %* returns the length of a finite list as a ". &2List index (subscript) operator, starting from 0. '' n x is a list of length n with x the value of  every element.  Fails when n is not an integral number (( n, applied to a list xs, returns the prefix of xs  of length n, or xs itself if n > % xs:  " take 5 "Hello World!" == "Hello"  take 3 [1,2,3,4,5] == [1,2,3]  take 3 [1,2] == [1,2]  take 3 [] == []  take (-1) [1,2] == []  take 0 [1,2] == []  Fails when n is not an integral number )) n xs returns the suffix of xs  after the first n elements, or [] if n > % xs:  # drop 6 "Hello World!" == "World!"  drop 3 [1,2,3,4,5] == [4,5]  drop 3 [1,2] == []  drop 3 [] == []  drop (-1) [1,2] == [1,2]  drop 0 [1,2] == [1,2]  Fails when n is not an integral number ** n xs( returns a tuple where first element is xs prefix of  length n2 and second element is the remainder of the list:  1 splitAt 6 "Hello World!" == ("Hello ","World!") * splitAt 3 [1,2,3,4,5] == ([1,2,3],[4,5]) " splitAt 1 [1,2,3] == ([1],[2,3]) # splitAt 3 [1,2,3] == ([1,2,3],[]) # splitAt 4 [1,2,3] == ([1,2,3],[]) # splitAt 0 [1,2,3] == ([],[1,2,3]) & splitAt (-1) [1,2,3] == ([],[1,2,3]) It is equivalent to (( n xs, ) n xs) when n is not _|_  (splitAt _|_ xs = _|_).  Fails when n is not an integral number #$%&'()*      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"#$%&'()* "#$%&'()*#$%&'()* Safe-Inferred      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"#$%&'()*      !"#$%&'()*+,-./01234567893456:;<8=>?@ABCDBCEBCFBCGBCHBCIBCJBCKBCLBCMBCNBCOBCPBCQBCRBCSBCTBCUBCVBCWBCXBCYBCZBC[BC\BC]BC^BC_BC`BCaBCbBCcBCdBCeBCfBCgBChBCiBCjBCkBClBCmBCnBCoBpqBprBpsBptBpuBpvBpwBpxBpyBpzBp{Bp|Bp}Bp~BpBpBpBpBpBpBpBpBpBpBpBpBpjBBBBBB       ! "#$%$&$'$($)$*$+$,$-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmlnlolplqrstuvwxyz{|}~  twentefp-0.4.2 FPPrac.EventsFPPrac.GraphicsFPPrac.PreludeFPPrac.GUI.PromptFPPrac.GUI.PanelFPPrac.Prelude.NumberFPPrac PanelContent PanelItem PanelItemTypeButton CheckButton graphicsoutOutputGetTimeSaveFileReadFile ScreenClear PanelUpdate PanelCreate GraphPrompt DrawPicture DrawOnBufferInputInvalidTimeSaveFilePanelPromptMouseDoubleClick MouseMotionMouseUp MouseDownKeyInNoInputFileTypeBMPFileTXTFile PromptInfoinstallEventHandlerNumberordchrlength!! replicatetakedropsplitAt titleshifttitlebarheight titlebarShift lblVshift drawPrompt drawTitleBardrawPromptTextcreateDefStatecreateDefStateItem drawPaneldrawItemonItemonItem' toggleItem toggleVal gloss-1.8.0.1Graphics.Gloss.Data.PicturerectangleUpperSolidrectangleSolidrectangleUpperPathrectangleUpperWire rectangleWire rectanglePath sectorWirearcSolid circleSolidlineLooploadBMP bitmapOfBMPbitmapOfByteStringbitmapOfForeignPtrpicturesscalerotate translatecolorbitmaptextthickArcarc thickCirclecirclelinepolygonblankPathBlankPolygonLineCircle ThickCircleArcThickArcTextBitmapColor TranslateRotateScalePicturesPictureGraphics.Gloss.Data.Colororange chartreuse aquamarineazurevioletrosemagentacyanyellowbluegreenredwhiteblackgreyNdarklightbrightdim addColors mixColorsrawColor rgbaOfColor makeColor8 makeColor' makeColorGraphics.Gloss.Data.DisplayInWindow FullScreenDisplayGraphics.Gloss.Data.VectorVectorGraphics.Gloss.Data.PointPoint&Graphics.Gloss.Internals.Render.Bitmap BitmapData EventStatescreenbuffer drawOnBuffer storedInputs storedOutputs doubleClickTguiModepanel userStateGUIMode PerformIOFreeMode PromptMode PanelMode eventToInput handleInputIO handleInputregisterDoubleClick handleOutputhandleIOFIlexernaturalOrFloat $fReadNumber$fFloatingNumber$fRealFracNumber$fFractionalNumber$fIntegralNumber $fEnumNumber $fRealNumber $fNumNumber $fShowNumber $fOrdNumber $fEqNumberbaseGHC.Base++GHC.Errerrorfoldrghc-primGHC.PrimseqGHC.Listconcatfilterzip System.IOprint Data.Tuplefstsnd otherwisemap$GHC.Num fromInteger-GHC.Real fromRationalGHC.EnumenumFrom enumFromThen enumFromToenumFromThenTo GHC.Classes==>=negatefail>>=>>fmapreturn fromIntegral realToFrac toInteger toRationalBoundedEnumEq GHC.FloatFloating FractionalIntegralMonadFunctorNumOrdGHC.ReadReadReal RealFloatRealFracGHC.ShowShow GHC.TypesBoolCharDoubleFloatInt integer-gmpGHC.Integer.TypeIntegerOrderingRationalIO Data.EitherEitherStringFalseTrueLeftRightLTEQGT Data.MaybeNothingJustPrelude$!readIOreadLn appendFile writeFilereadFileinteract getContentsgetLinegetCharputStrLnputStrputCharGHC.IO.ExceptionioError Text.Readreadreadseither Data.Listunwordswordsunlineslinesproductsumfoldl1minimummaximumlex readParenreadList readsPrecText.ParserCombinators.ReadPReadSacoshatanhasinhcoshtanhsinhacosatanasincostansinlogBase**logsqrtexppiatan2isIEEEisNegativeZeroisDenormalized isInfiniteisNaN scaleFloat significandexponent encodeFloat decodeFloat floatRange floatDigits floatRadixGHC.IOFilePath userErrorIOErrorlcmgcd^^^oddevendivModquotRemmoddivremquotrecip/floorceilingroundtruncateproperFraction undefined Control.MonadmapM_mapM sequence_sequence=<<maxBoundminBoundfromEnumtoEnumpredsucc showParen showStringshowCharshowsShowSshowListshow showsPrecunzip3unzipzipWith3zipWithzip3 concatMaplookupnotElemelemallanyorandreversebreakspan dropWhile takeWhilecyclerepeatiteratescanr1scanrfoldr1scanl1scanlfoldlnullinitlasttailheadmaybeMaybeuncurrycurrysubtractsignumabs*+asTypeOfuntilflip.constid/=compare<=&&||not<>maxmin