home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 August / PCWorld_2000-08_cd.bin / Software / TemaCD / xbasic / xbpro.exe / xb / anewlook.x < prev    next >
Text File  |  1999-12-15  |  68KB  |  1,310 lines

  1. '
  2. ' ####################
  3. ' #####  PROLOG  #####
  4. ' ####################
  5. '
  6. PROGRAM    "anewlook"
  7. VERSION    "0.0008"
  8. '
  9. IMPORT    "xst"
  10. IMPORT    "xgr"
  11. IMPORT    "xui"
  12. '
  13. INTERNAL FUNCTION  Entry          ()
  14. INTERNAL FUNCTION  InitGui        ()
  15. INTERNAL FUNCTION  InitProgram    ()
  16. INTERNAL FUNCTION  CreateWindows  ()
  17. INTERNAL FUNCTION  InitWindows    ()
  18. INTERNAL FUNCTION  MainWindow     (grid, message, v0, v1, v2, v3, r0, ANY)
  19. INTERNAL FUNCTION  MainWindowCode (grid, message, v0, v1, v2, v3, kid, ANY)
  20. '
  21. '
  22. ' ######################
  23. ' #####  Entry ()  #####
  24. ' ######################
  25. '
  26. FUNCTION  Entry ()
  27.     SHARED  terminateProgram
  28.     STATIC    entry
  29. '
  30.     IF entry THEN RETURN                    ' enter once
  31.     entry =  $$TRUE                                ' enter occured
  32. '
  33.     InitGui ()                                        ' initialize messages
  34.     InitProgram ()                                ' initialize this program
  35.     CreateWindows ()                            ' create main window and others
  36.     InitWindows ()                                ' initialize windows and grids
  37. '
  38.     IF LIBRARY(0) THEN RETURN            ' main program executes message loop
  39. '
  40.     DO                                                        ' the message loop
  41.         XgrProcessMessages (1)            ' process one message
  42.     LOOP UNTIL terminateProgram        ' and repeat until program is terminated
  43. END FUNCTION
  44. '
  45. '
  46. ' ########################
  47. ' #####  InitGui ()  #####
  48. ' ########################
  49. '
  50. ' InitGui() initializes cursor, icon, message, and display variables.
  51. ' Programs can reference these variables, but must never change them.
  52. '
  53. FUNCTION  InitGui ()
  54. '
  55. ' need to set program name so grid properties
  56. ' can be set from the grid property database.
  57. '
  58.     program$ = PROGRAM$(0)
  59.     XstSetProgramName (@program$)
  60. '
  61. ' ***************************************
  62. ' *****  Register Standard Cursors  *****
  63. ' ***************************************
  64. '
  65.     XgrRegisterCursor (@"default",      @#cursorDefault)
  66.     XgrRegisterCursor (@"arrow",        @#cursorArrow)
  67.     XgrRegisterCursor (@"n",            @#cursorN)
  68.     XgrRegisterCursor (@"s",            @#cursorS)
  69.     XgrRegisterCursor (@"e",            @#cursorE)
  70.     XgrRegisterCursor (@"w",            @#cursorW)
  71.     XgrRegisterCursor (@"ns",           @#cursorArrowsNS)
  72.     XgrRegisterCursor (@"ns",           @#cursorArrowsSN)
  73.     XgrRegisterCursor (@"ew",           @#cursorArrowsEW)
  74.     XgrRegisterCursor (@"ew",           @#cursorArrowsWE)
  75.     XgrRegisterCursor (@"nwse",         @#cursorArrowsNWSE)
  76.     XgrRegisterCursor (@"nesw",         @#cursorArrowsNESW)
  77.     XgrRegisterCursor (@"all",          @#cursorArrowsAll)
  78.     XgrRegisterCursor (@"plus",         @#cursorPlus)
  79.     XgrRegisterCursor (@"wait",         @#cursorWait)
  80.     XgrRegisterCursor (@"insert",       @#cursorInsert)
  81.     XgrRegisterCursor (@"crosshair",    @#cursorCrosshair)
  82.     XgrRegisterCursor (@"hourglass",    @#cursorHourglass)
  83. '
  84.     #defaultCursor = #cursorDefault
  85. '
  86. '
  87. ' ********************************************
  88. ' *****  Register Standard Window Icons  *****
  89. ' ********************************************
  90. '
  91.     XgrRegisterIcon (@"hand",                    @#iconHand)
  92.     XgrRegisterIcon (@"asterisk",            @#iconAsterisk)
  93.     XgrRegisterIcon (@"question",            @#iconQuestion)
  94.     XgrRegisterIcon (@"exclamation",    @#iconExclamation)
  95.     XgrRegisterIcon (@"application",    @#iconApplication)
  96. '
  97.     XgrRegisterIcon (@"hand",                    @#iconStop)                        ' alias
  98.     XgrRegisterIcon (@"asterisk",            @#iconInformation)        ' alias
  99.     XgrRegisterIcon (@"application",  @#iconBlank)                    ' alias
  100. '
  101.     XgrRegisterIcon (@"window",                @#iconWindow)                    ' custom
  102. '
  103. '
  104. ' ******************************
  105. ' *****  Register Messages *****  Create message numbers for message names
  106. ' ******************************
  107. '
  108.     XgrRegisterMessage (@"Blowback",                                        @#Blowback)
  109.     XgrRegisterMessage (@"Callback",                                        @#Callback)
  110.     XgrRegisterMessage (@"Cancel",                                            @#Cancel)
  111.     XgrRegisterMessage (@"Change",                                            @#Change)
  112.     XgrRegisterMessage (@"CloseWindow",                                    @#CloseWindow)
  113.     XgrRegisterMessage (@"ContextChange",                                @#ContextChange)
  114.     XgrRegisterMessage (@"Create",                                            @#Create)
  115.     XgrRegisterMessage (@"CreateValueArray",                        @#CreateValueArray)
  116.     XgrRegisterMessage (@"CreateWindow",                                @#CreateWindow)
  117.     XgrRegisterMessage (@"CursorH",                                            @#CursorH)
  118.     XgrRegisterMessage (@"CursorV",                                            @#CursorV)
  119.     XgrRegisterMessage (@"Deselected",                                    @#Deselected)
  120.     XgrRegisterMessage (@"Destroy",                                            @#Destroy)
  121.     XgrRegisterMessage (@"Destroyed",                                        @#Destroyed)
  122.     XgrRegisterMessage (@"DestroyWindow",                                @#DestroyWindow)
  123.     XgrRegisterMessage (@"Disable",                                            @#Disable)
  124.     XgrRegisterMessage (@"Disabled",                                        @#Disabled)
  125.     XgrRegisterMessage (@"Displayed",                                        @#Displayed)
  126.     XgrRegisterMessage (@"DisplayWindow",                                @#DisplayWindow)
  127.     XgrRegisterMessage (@"Enable",                                            @#Enable)
  128.     XgrRegisterMessage (@"Enabled",                                            @#Enabled)
  129.     XgrRegisterMessage (@"Enter",                                                @#Enter)
  130.     XgrRegisterMessage (@"ExitMessageLoop",                            @#ExitMessageLoop)
  131.     XgrRegisterMessage (@"Find",                                                @#Find)
  132.     XgrRegisterMessage (@"FindForward",                                    @#FindForward)
  133.     XgrRegisterMessage (@"FindReverse",                                    @#FindReverse)
  134.     XgrRegisterMessage (@"Forward",                                            @#Forward)
  135.     XgrRegisterMessage (@"GetAlign",                                        @#GetAlign)
  136.     XgrRegisterMessage (@"GetBorder",                                        @#GetBorder)
  137.     XgrRegisterMessage (@"GetBorderOffset",                            @#GetBorderOffset)
  138.     XgrRegisterMessage (@"GetCallback",                                    @#GetCallback)
  139.     XgrRegisterMessage (@"GetCallbackArgs",                            @#GetCallbackArgs)
  140.     XgrRegisterMessage (@"GetCan",                                            @#GetCan)
  141.     XgrRegisterMessage (@"GetCharacterMapArray",                @#GetCharacterMapArray)
  142.     XgrRegisterMessage (@"GetClipGrid",                                    @#GetClipGrid)
  143.     XgrRegisterMessage (@"GetColor",                                        @#GetColor)
  144.     XgrRegisterMessage (@"GetColorExtra",                                @#GetColorExtra)
  145.     XgrRegisterMessage (@"GetCursor",                                        @#GetCursor)
  146.     XgrRegisterMessage (@"GetCursorXY",                                    @#GetCursorXY)
  147.     XgrRegisterMessage (@"GetDisplay",                                    @#GetDisplay)
  148.     XgrRegisterMessage (@"GetEnclosedGrids",                        @#GetEnclosedGrids)
  149.     XgrRegisterMessage (@"GetEnclosingGrid",                        @#GetEnclosingGrid)
  150.     XgrRegisterMessage (@"GetFocusColor",                                @#GetFocusColor)
  151.     XgrRegisterMessage (@"GetFocusColorExtra",                    @#GetFocusColorExtra)
  152.     XgrRegisterMessage (@"GetFont",                                            @#GetFont)
  153.     XgrRegisterMessage (@"GetFontMetrics",                            @#GetFontMetrics)
  154.     XgrRegisterMessage (@"GetFontNumber",                                @#GetFontNumber)
  155.     XgrRegisterMessage (@"GetGridFunction",                            @#GetGridFunction)
  156.     XgrRegisterMessage (@"GetGridFunctionName",                    @#GetGridFunctionName)
  157.     XgrRegisterMessage (@"GetGridName",                                    @#GetGridName)
  158.     XgrRegisterMessage (@"GetGridNumber",                                @#GetGridNumber)
  159.     XgrRegisterMessage (@"GetGridProperties",                        @#GetGridProperties)
  160.     XgrRegisterMessage (@"GetGridType",                                    @#GetGridType)
  161.     XgrRegisterMessage (@"GetGridTypeName",                            @#GetGridTypeName)
  162.     XgrRegisterMessage (@"GetGroup",                                        @#GetGroup)
  163.     XgrRegisterMessage (@"GetHelp",                                            @#GetHelp)
  164.     XgrRegisterMessage (@"GetHelpFile",                                    @#GetHelpFile)
  165.     XgrRegisterMessage (@"GetHelpString",                                @#GetHelpString)
  166.     XgrRegisterMessage (@"GetHelpStrings",                            @#GetHelpStrings)
  167.     XgrRegisterMessage (@"GetHintString",                                @#GetHintString)
  168.     XgrRegisterMessage (@"GetImage",                                        @#GetImage)
  169.     XgrRegisterMessage (@"GetImageCoords",                            @#GetImageCoords)
  170.     XgrRegisterMessage (@"GetIndent",                                        @#GetIndent)
  171.     XgrRegisterMessage (@"GetInfo",                                            @#GetInfo)
  172.     XgrRegisterMessage (@"GetJustify",                                    @#GetJustify)
  173.     XgrRegisterMessage (@"GetKeyboardFocus",                        @#GetKeyboardFocus)
  174.     XgrRegisterMessage (@"GetKeyboardFocusGrid",                @#GetKeyboardFocusGrid)
  175.     XgrRegisterMessage (@"GetKidNumber",                                @#GetKidNumber)
  176.     XgrRegisterMessage (@"GetKids",                                            @#GetKids)
  177.     XgrRegisterMessage (@"GetKidArray",                                    @#GetKidArray)
  178.     XgrRegisterMessage (@"GetKind",                                            @#GetKind)
  179.     XgrRegisterMessage (@"GetMaxMinSize",                                @#GetMaxMinSize)
  180.     XgrRegisterMessage (@"GetMessageFunc",                            @#GetMessageFunc)
  181.     XgrRegisterMessage (@"GetMessageFuncArray",                    @#GetMessageFuncArray)
  182.     XgrRegisterMessage (@"GetMessageSub",                                @#GetMessageSub)
  183.     XgrRegisterMessage (@"GetMessageSubArray",                    @#GetMessageSubArray)
  184.     XgrRegisterMessage (@"GetModalInfo",                                @#GetModalInfo)
  185.     XgrRegisterMessage (@"GetModalWindow",                            @#GetModalWindow)
  186.     XgrRegisterMessage (@"GetParent",                                        @#GetParent)
  187.     XgrRegisterMessage (@"GetPosition",                                    @#GetPosition)
  188.     XgrRegisterMessage (@"GetProtoInfo",                                @#GetProtoInfo)
  189.     XgrRegisterMessage (@"GetRedrawFlags",                            @#GetRedrawFlags)
  190.     XgrRegisterMessage (@"GetSize",                                            @#GetSize)
  191.     XgrRegisterMessage (@"GetSmallestSize",                            @#GetSmallestSize)
  192.     XgrRegisterMessage (@"GetState",                                        @#GetState)
  193.     XgrRegisterMessage (@"GetStyle",                                        @#GetStyle)
  194.     XgrRegisterMessage (@"GetTabArray",                                    @#GetTabArray)
  195.     XgrRegisterMessage (@"GetTabWidth",                                    @#GetTabWidth)
  196.     XgrRegisterMessage (@"GetTextArray",                                @#GetTextArray)
  197.     XgrRegisterMessage (@"GetTextArrayBounds",                    @#GetTextArrayBounds)
  198.     XgrRegisterMessage (@"GetTextArrayLine",                        @#GetTextArrayLine)
  199.     XgrRegisterMessage (@"GetTextArrayLines",                        @#GetTextArrayLines)
  200.     XgrRegisterMessage (@"GetTextCursor",                                @#GetTextCursor)
  201.     XgrRegisterMessage (@"GetTextFilename",                            @#GetTextFilename)
  202.     XgrRegisterMessage (@"GetTextPosition",                            @#GetTextPosition)
  203.     XgrRegisterMessage (@"GetTextSelection",                        @#GetTextSelection)
  204.     XgrRegisterMessage (@"GetTextSpacing",                            @#GetTextSpacing)
  205.     XgrRegisterMessage (@"GetTextString",                                @#GetTextString)
  206.     XgrRegisterMessage (@"GetTextStrings",                            @#GetTextStrings)
  207.     XgrRegisterMessage (@"GetTexture",                                    @#GetTexture)
  208.     XgrRegisterMessage (@"GetTimer",                                        @#GetTimer)
  209.     XgrRegisterMessage (@"GetValue",                                        @#GetValue)
  210.     XgrRegisterMessage (@"GetValues",                                        @#GetValues)
  211.     XgrRegisterMessage (@"GetValueArray",                                @#GetValueArray)
  212.     XgrRegisterMessage (@"GetWindow",                                        @#GetWindow)
  213.     XgrRegisterMessage (@"GetWindowFunction",                        @#GetWindowFunction)
  214.     XgrRegisterMessage (@"GetWindowGrid",                                @#GetWindowGrid)
  215.     XgrRegisterMessage (@"GetWindowIcon",                                @#GetWindowIcon)
  216.     XgrRegisterMessage (@"GetWindowSize",                                @#GetWindowSize)
  217.     XgrRegisterMessage (@"GetWindowTitle",                            @#GetWindowTitle)
  218.     XgrRegisterMessage (@"GotKeyboardFocus",                        @#GotKeyboardFocus)
  219.     XgrRegisterMessage (@"GrabArray",                                        @#GrabArray)
  220.     XgrRegisterMessage (@"GrabTextArray",                                @#GrabTextArray)
  221.     XgrRegisterMessage (@"GrabTextString",                            @#GrabTextString)
  222.     XgrRegisterMessage (@"GrabValueArray",                            @#GrabValueArray)
  223.     XgrRegisterMessage (@"Help",                                                @#Help)
  224.     XgrRegisterMessage (@"Hidden",                                            @#Hidden)
  225.     XgrRegisterMessage (@"HideTextCursor",                            @#HideTextCursor)
  226.     XgrRegisterMessage (@"HideWindow",                                    @#HideWindow)
  227.     XgrRegisterMessage (@"Initialize",                                    @#Initialize)
  228.     XgrRegisterMessage (@"Initialized",                                    @#Initialized)
  229.     XgrRegisterMessage (@"Inline",                                            @#Inline)
  230.     XgrRegisterMessage (@"InquireText",                                    @#InquireText)
  231.     XgrRegisterMessage (@"KeyboardFocusBackward",                @#KeyboardFocusBackward)
  232.     XgrRegisterMessage (@"KeyboardFocusForward",                @#KeyboardFocusForward)
  233.     XgrRegisterMessage (@"KeyDown",                                            @#KeyDown)
  234.     XgrRegisterMessage (@"KeyUp",                                                @#KeyUp)
  235.     XgrRegisterMessage (@"LostKeyboardFocus",                        @#LostKeyboardFocus)
  236.     XgrRegisterMessage (@"LostTextSelection",                        @#LostTextSelection)
  237.     XgrRegisterMessage (@"Maximized",                                        @#Maximized)
  238.     XgrRegisterMessage (@"MaximizeWindow",                            @#MaximizeWindow)
  239.     XgrRegisterMessage (@"Maximum",                                            @#Maximum)
  240.     XgrRegisterMessage (@"Minimized",                                        @#Minimized)
  241.     XgrRegisterMessage (@"MinimizeWindow",                            @#MinimizeWindow)
  242.     XgrRegisterMessage (@"Minimum",                                            @#Minimum)
  243.     XgrRegisterMessage (@"MonitorContext",                            @#MonitorContext)
  244.     XgrRegisterMessage (@"MonitorHelp",                                    @#MonitorHelp)
  245.     XgrRegisterMessage (@"MonitorKeyboard",                            @#MonitorKeyboard)
  246.     XgrRegisterMessage (@"MonitorMouse",                                @#MonitorMouse)
  247.     XgrRegisterMessage (@"MouseDown",                                        @#MouseDown)
  248.     XgrRegisterMessage (@"MouseDrag",                                        @#MouseDrag)
  249.     XgrRegisterMessage (@"MouseEnter",                                    @#MouseEnter)
  250.     XgrRegisterMessage (@"MouseExit",                                        @#MouseExit)
  251.     XgrRegisterMessage (@"MouseMove",                                        @#MouseMove)
  252.     XgrRegisterMessage (@"MouseUp",                                            @#MouseUp)
  253.     XgrRegisterMessage (@"MuchLess",                                        @#MuchLess)
  254.     XgrRegisterMessage (@"MuchMore",                                        @#MuchMore)
  255.     XgrRegisterMessage (@"Notify",                                            @#Notify)
  256.     XgrRegisterMessage (@"OneLess",                                            @#OneLess)
  257.     XgrRegisterMessage (@"OneMore",                                            @#OneMore)
  258.     XgrRegisterMessage (@"PokeArray",                                        @#PokeArray)
  259.     XgrRegisterMessage (@"PokeTextArray",                                @#PokeTextArray)
  260.     XgrRegisterMessage (@"PokeTextString",                            @#PokeTextString)
  261.     XgrRegisterMessage (@"PokeValueArray",                            @#PokeValueArray)
  262.     XgrRegisterMessage (@"Print",                                                @#Print)
  263.     XgrRegisterMessage (@"Redraw",                                            @#Redraw)
  264.     XgrRegisterMessage (@"RedrawGrid",                                    @#RedrawGrid)
  265.     XgrRegisterMessage (@"RedrawLines",                                    @#RedrawLines)
  266.     XgrRegisterMessage (@"RedrawText",                                    @#RedrawText)
  267.     XgrRegisterMessage (@"RedrawWindow",                                @#RedrawWindow)
  268.     XgrRegisterMessage (@"Replace",                                            @#Replace)
  269.     XgrRegisterMessage (@"ReplaceForward",                            @#ReplaceForward)
  270.     XgrRegisterMessage (@"ReplaceReverse",                            @#ReplaceReverse)
  271.     XgrRegisterMessage (@"Reset",                                                @#Reset)
  272.     XgrRegisterMessage (@"Resize",                                            @#Resize)
  273.     XgrRegisterMessage (@"Resized",                                            @#Resized)
  274.     XgrRegisterMessage (@"ResizeNot",                                        @#ResizeNot)
  275.     XgrRegisterMessage (@"ResizeWindow",                                @#ResizeWindow)
  276.     XgrRegisterMessage (@"ResizeWindowToGrid",                    @#ResizeWindowToGrid)
  277.     XgrRegisterMessage (@"Resized",                                            @#Resized)
  278.     XgrRegisterMessage (@"Reverse",                                            @#Reverse)
  279.     XgrRegisterMessage (@"ScrollH",                                            @#ScrollH)
  280.     XgrRegisterMessage (@"ScrollV",                                            @#ScrollV)
  281.     XgrRegisterMessage (@"Select",                                            @#Select)
  282.     XgrRegisterMessage (@"Selected",                                        @#Selected)
  283.     XgrRegisterMessage (@"Selection",                                        @#Selection)
  284.     XgrRegisterMessage (@"SelectWindow",                                @#SelectWindow)
  285.     XgrRegisterMessage (@"SetAlign",                                        @#SetAlign)
  286.     XgrRegisterMessage (@"SetBorder",                                        @#SetBorder)
  287.     XgrRegisterMessage (@"SetBorderOffset",                            @#SetBorderOffset)
  288.     XgrRegisterMessage (@"SetCallback",                                    @#SetCallback)
  289.     XgrRegisterMessage (@"SetCan",                                            @#SetCan)
  290.     XgrRegisterMessage (@"SetCharacterMapArray",                @#SetCharacterMapArray)
  291.     XgrRegisterMessage (@"SetClipGrid",                                    @#SetClipGrid)
  292.     XgrRegisterMessage (@"SetColor",                                        @#SetColor)
  293.     XgrRegisterMessage (@"SetColorAll",                                    @#SetColorAll)
  294.     XgrRegisterMessage (@"SetColorExtra",                                @#SetColorExtra)
  295.     XgrRegisterMessage (@"SetColorExtraAll",                        @#SetColorExtraAll)
  296.     XgrRegisterMessage (@"SetCursor",                                        @#SetCursor)
  297.     XgrRegisterMessage (@"SetCursorXY",                                    @#SetCursorXY)
  298.     XgrRegisterMessage (@"SetDisplay",                                    @#SetDisplay)
  299.     XgrRegisterMessage (@"SetFocusColor",                                @#SetFocusColor)
  300.     XgrRegisterMessage (@"SetFocusColorExtra",                    @#SetFocusColorExtra)
  301.     XgrRegisterMessage (@"SetFont",                                            @#SetFont)
  302.     XgrRegisterMessage (@"SetFontNumber",                                @#SetFontNumber)
  303.     XgrRegisterMessage (@"SetGridFunction",                            @#SetGridFunction)
  304.     XgrRegisterMessage (@"SetGridFunctionName",                    @#SetGridFunctionName)
  305.     XgrRegisterMessage (@"SetGridName",                                    @#SetGridName)
  306.     XgrRegisterMessage (@"SetGridProperties",                        @#SetGridProperties)
  307.     XgrRegisterMessage (@"SetGridType",                                    @#SetGridType)
  308.     XgrRegisterMessage (@"SetGridTypeName",                            @#SetGridTypeName)
  309.     XgrRegisterMessage (@"SetGroup",                                        @#SetGroup)
  310.     XgrRegisterMessage (@"SetHelp",                                            @#SetHelp)
  311.     XgrRegisterMessage (@"SetHelpFile",                                    @#SetHelpFile)
  312.     XgrRegisterMessage (@"SetHelpString",                                @#SetHelpString)
  313.     XgrRegisterMessage (@"SetHelpStrings",                            @#SetHelpStrings)
  314.     XgrRegisterMessage (@"SetHintString",                                @#SetHintString)
  315.     XgrRegisterMessage (@"SetImage",                                        @#SetImage)
  316.     XgrRegisterMessage (@"SetImageCoords",                            @#SetImageCoords)
  317.     XgrRegisterMessage (@"SetIndent",                                        @#SetIndent)
  318.     XgrRegisterMessage (@"SetInfo",                                            @#SetInfo)
  319.     XgrRegisterMessage (@"SetJustify",                                    @#SetJustify)
  320.     XgrRegisterMessage (@"SetKeyboardFocus",                        @#SetKeyboardFocus)
  321.     XgrRegisterMessage (@"SetKeyboardFocusGrid",                @#SetKeyboardFocusGrid)
  322.     XgrRegisterMessage (@"SetMaxMinSize",                                @#SetMaxMinSize)
  323.     XgrRegisterMessage (@"SetMessageFunc",                            @#SetMessageFunc)
  324.     XgrRegisterMessage (@"SetMessageFuncArray",                    @#SetMessageFuncArray)
  325.     XgrRegisterMessage (@"SetMessageSub",                                @#SetMessageSub)
  326.     XgrRegisterMessage (@"SetMessageSubArray",                    @#SetMessageSubArray)
  327.     XgrRegisterMessage (@"SetModalWindow",                            @#SetModalWindow)
  328.     XgrRegisterMessage (@"SetParent",                                        @#SetParent)
  329.     XgrRegisterMessage (@"SetPosition",                                    @#SetPosition)
  330.     XgrRegisterMessage (@"SetRedrawFlags",                            @#SetRedrawFlags)
  331.     XgrRegisterMessage (@"SetSize",                                            @#SetSize)
  332.     XgrRegisterMessage (@"SetState",                                        @#SetState)
  333.     XgrRegisterMessage (@"SetStyle",                                        @#SetStyle)
  334.     XgrRegisterMessage (@"SetTabArray",                                    @#SetTabArray)
  335.     XgrRegisterMessage (@"SetTabWidth",                                    @#SetTabWidth)
  336.     XgrRegisterMessage (@"SetTextArray",                                @#SetTextArray)
  337.     XgrRegisterMessage (@"SetTextArrayLine",                        @#SetTextArrayLine)
  338.     XgrRegisterMessage (@"SetTextArrayLines",                        @#SetTextArrayLines)
  339.     XgrRegisterMessage (@"SetTextCursor",                                @#SetTextCursor)
  340.     XgrRegisterMessage (@"SetTextFilename",                            @#SetTextFilename)
  341.     XgrRegisterMessage (@"SetTextSelection",                        @#SetTextSelection)
  342.     XgrRegisterMessage (@"SetTextString",                                @#SetTextString)
  343.     XgrRegisterMessage (@"SetTextStrings",                            @#SetTextStrings)
  344.     XgrRegisterMessage (@"SetTexture",                                    @#SetTexture)
  345.     XgrRegisterMessage (@"SetTimer",                                        @#SetTimer)
  346.     XgrRegisterMessage (@"SetValue",                                        @#SetValue)
  347.     XgrRegisterMessage (@"SetValues",                                        @#SetValues)
  348.     XgrRegisterMessage (@"SetValueArray",                                @#SetValueArray)
  349.     XgrRegisterMessage (@"SetWindowFunction",                        @#SetWindowFunction)
  350.     XgrRegisterMessage (@"SetWindowIcon",                                @#SetWindowIcon)
  351.     XgrRegisterMessage (@"SetWindowTitle",                            @#SetWindowTitle)
  352.     XgrRegisterMessage (@"ShowTextCursor",                            @#ShowTextCursor)
  353.     XgrRegisterMessage (@"ShowWindow",                                    @#ShowWindow)
  354.     XgrRegisterMessage (@"SomeLess",                                        @#SomeLess)
  355.     XgrRegisterMessage (@"SomeMore",                                        @#SomeMore)
  356.     XgrRegisterMessage (@"StartTimer",                                    @#StartTimer)
  357.     XgrRegisterMessage (@"SystemMessage",                                @#SystemMessage)
  358.     XgrRegisterMessage (@"TextDelete",                                    @#TextDelete)
  359.     XgrRegisterMessage (@"TextEvent",                                        @#TextEvent)
  360.     XgrRegisterMessage (@"TextInsert",                                    @#TextInsert)
  361.     XgrRegisterMessage (@"TextModified",                                @#TextModified)
  362.     XgrRegisterMessage (@"TextReplace",                                    @#TextReplace)
  363.     XgrRegisterMessage (@"TimeOut",                                            @#TimeOut)
  364.     XgrRegisterMessage (@"Update",                                            @#Update)
  365.     XgrRegisterMessage (@"WindowClose",                                    @#WindowClose)
  366.     XgrRegisterMessage (@"WindowCreate",                                @#WindowCreate)
  367.     XgrRegisterMessage (@"WindowDeselected",                        @#WindowDeselected)
  368.     XgrRegisterMessage (@"WindowDestroy",                                @#WindowDestroy)
  369.     XgrRegisterMessage (@"WindowDestroyed",                            @#WindowDestroyed)
  370.     XgrRegisterMessage (@"WindowDisplay",                                @#WindowDisplay)
  371.     XgrRegisterMessage (@"WindowDisplayed",                            @#WindowDisplayed)
  372.     XgrRegisterMessage (@"WindowGetDisplay",                        @#WindowGetDisplay)
  373.     XgrRegisterMessage (@"WindowGetFunction",                        @#WindowGetFunction)
  374.     XgrRegisterMessage (@"WindowGetIcon",                                @#WindowGetIcon)
  375.     XgrRegisterMessage (@"WindowGetKeyboardFocusGrid",    @#WindowGetKeyboardFocusGrid)
  376.     XgrRegisterMessage (@"WindowGetSelectedWindow",            @#WindowGetSelectedWindow)
  377.     XgrRegisterMessage (@"WindowGetSize",                                @#WindowGetSize)
  378.     XgrRegisterMessage (@"WindowGetTitle",                            @#WindowGetTitle)
  379.     XgrRegisterMessage (@"WindowHelp",                                    @#WindowHelp)
  380.     XgrRegisterMessage (@"WindowHide",                                    @#WindowHide)
  381.     XgrRegisterMessage (@"WindowHidden",                                @#WindowHidden)
  382.     XgrRegisterMessage (@"WindowKeyDown",                                @#WindowKeyDown)
  383.     XgrRegisterMessage (@"WindowKeyUp",                                    @#WindowKeyUp)
  384.     XgrRegisterMessage (@"WindowMaximize",                            @#WindowMaximize)
  385.     XgrRegisterMessage (@"WindowMaximized",                            @#WindowMaximized)
  386.     XgrRegisterMessage (@"WindowMinimize",                            @#WindowMinimize)
  387.     XgrRegisterMessage (@"WindowMinimized",                            @#WindowMinimized)
  388.     XgrRegisterMessage (@"WindowMonitorContext",                @#WindowMonitorContext)
  389.     XgrRegisterMessage (@"WindowMonitorHelp",                        @#WindowMonitorHelp)
  390.     XgrRegisterMessage (@"WindowMonitorKeyboard",                @#WindowMonitorKeyboard)
  391.     XgrRegisterMessage (@"WindowMonitorMouse",                    @#WindowMonitorMouse)
  392.     XgrRegisterMessage (@"WindowMouseDown",                            @#WindowMouseDown)
  393.     XgrRegisterMessage (@"WindowMouseDrag",                            @#WindowMouseDrag)
  394.     XgrRegisterMessage (@"WindowMouseEnter",                        @#WindowMouseEnter)
  395.     XgrRegisterMessage (@"WindowMouseExit",                            @#WindowMouseExit)
  396.     XgrRegisterMessage (@"WindowMouseMove",                            @#WindowMouseMove)
  397.     XgrRegisterMessage (@"WindowMouseUp",                                @#WindowMouseUp)
  398.     XgrRegisterMessage (@"WindowRedraw",                                @#WindowRedraw)
  399.     XgrRegisterMessage (@"WindowRegister",                            @#WindowRegister)
  400.     XgrRegisterMessage (@"WindowResize",                                @#WindowResize)
  401.     XgrRegisterMessage (@"WindowResized",                                @#WindowResized)
  402.     XgrRegisterMessage (@"WindowResizeToGrid",                    @#WindowResizeToGrid)
  403.     XgrRegisterMessage (@"WindowSelect",                                @#WindowSelect)
  404.     XgrRegisterMessage (@"WindowSelected",                            @#WindowSelected)
  405.     XgrRegisterMessage (@"WindowSetFunction",                        @#WindowSetFunction)
  406.     XgrRegisterMessage (@"WindowSetIcon",                                @#WindowSetIcon)
  407.     XgrRegisterMessage (@"WindowSetKeyboardFocusGrid",    @#WindowSetKeyboardFocusGrid)
  408.     XgrRegisterMessage (@"WindowSetTitle",                            @#WindowSetTitle)
  409.     XgrRegisterMessage (@"WindowShow",                                    @#WindowShow)
  410.     XgrRegisterMessage (@"WindowSystemMessage",                    @#WindowSystemMessage)
  411.     XgrRegisterMessage (@"LastMessage",                                    @#LastMessage)
  412. '
  413.     XgrGetDisplaySize ("", @#displayWidth, @#displayHeight, @#windowBorderWidth, @#windowTitleHeight)
  414. END FUNCTION
  415. '
  416. '
  417. ' ############################
  418. ' #####  InitProgram ()  #####
  419. ' ############################
  420. '
  421. ' Add code to this function to initialize anything your program needs
  422. ' to initialize before CreateWindows() creates your programs windows.
  423. ' For initialization after CreateWindows(), add code to InitWindows().
  424. '
  425. ' Do not delete this function, leave it empty if not needed.
  426. '
  427. FUNCTION  InitProgram ()
  428.  
  429. END FUNCTION
  430. '
  431. '
  432. ' ##############################
  433. ' #####  CreateWindows ()  #####
  434. ' ##############################
  435. '
  436. FUNCTION  CreateWindows ()
  437. '
  438.     IF LIBRARY(0) THEN RETURN
  439. '
  440. ' compute initial size and position of window
  441. '   minimal width for 80 character line
  442. '   half display height
  443. '
  444.     XgrGetDisplaySize ("", @#displayWidth, @#displayHeight, @#windowBorderWidth, @#windowTitleHeight)
  445.     line$ = "01234567890123456789012345678901234567890123456789012345678901234567890123456789"
  446.     XgrGetTextImageSize (0, @line$, @dx, @dy, @width, @height, @gap, @space)
  447.     maxwidth = #displayWidth - #windowBorderWidth - #windowBorderWidth
  448.     textwidth = width + 32
  449. '
  450.     h = (#displayHeight >> 1) - #windowBorderWidth - #windowBorderWidth - #windowTitleHeight
  451.     y = (#displayHeight >> 1) + #windowTitleHeight + #windowBorderWidth
  452.     w = (#displayWidth >> 1) - #windowBorderWidth - #windowBorderWidth
  453.     IF (w < textwidth) THEN w = textwidth
  454.     IF (w > maxwidth) THEN w = maxwidth
  455.     x = #displayWidth - w - #windowBorderWidth
  456. '
  457.     MainWindow     (@MainWindow, #CreateWindow, x, y, w, h, 0, 0)
  458.     XuiSendMessage ( MainWindow, #SetCallback, MainWindow, &MainWindowCode(), -1, -1, -1, 0)
  459.     XuiSendMessage ( MainWindow, #Initialize, 0, 0, 0, 0, 0, 0)
  460.     XuiSendMessage ( MainWindow, #GetSmallestSize, 0, 0, @ww, @hh, 0, 0)
  461.     IF (w < ww) THEN w = ww : x = #displayWidth - w - #windowBorderWidth
  462.     XuiSendMessage ( MainWindow, #ResizeWindow, x, y, w, h, 0, 0)
  463.     XuiSendMessage ( MainWindow, #DisplayWindow, 0, 0, 0, 0, 0, 0)
  464.     XuiSendMessage ( MainWindow, #SetGridProperties, -1, 0, 0, 0, 0, 0)
  465. END FUNCTION
  466. '
  467. '
  468. ' ############################
  469. ' #####  InitWindows ()  #####
  470. ' ############################
  471. '
  472. ' Add code to this function to initialize anything your program needs
  473. ' to initialize after CreateWindows() creates your programs windows.
  474. ' For initialization before CreateWindows(), add code to InitProgram().
  475. '
  476. ' Do not delete this function, leave it empty if not needed.
  477. '
  478. FUNCTION  InitWindows ()
  479.  
  480. END FUNCTION
  481. '
  482. '
  483. '    ###########################
  484. '    #####  MainWindow ()  #####
  485. '    ###########################
  486. '
  487. FUNCTION  MainWindow (grid, message, v0, v1, v2, v3, r0, (r1, r1$, r1[], r1$[]))
  488.     STATIC  designX,  designY,  designWidth,  designHeight
  489.     STATIC  SUBADDR  sub[]
  490.     STATIC  upperMessage
  491.     STATIC  MainWindow
  492. '
  493.   $MainWindow           =   0  ' kid   0 grid type = MainWindow
  494.   $MenuBar              =   1  ' kid   1 grid type = XuiMenu
  495.   $HotProlog            =   2  ' kid   2 grid type = XuiPushButton
  496.   $FileLabel            =   3  ' kid   3 grid type = XuiLabel
  497.   $StatusLabel          =   4  ' kid   4 grid type = XuiLabel
  498.   $HotNew               =   5  ' kid   5 grid type = XuiPushButton
  499.   $HotLoad              =   6  ' kid   6 grid type = XuiPushButton
  500.   $HotSave              =   7  ' kid   7 grid type = XuiPushButton
  501.   $HotSavePlus          =   8  ' kid   8 grid type = XuiPushButton
  502.   $HotCut               =   9  ' kid   9 grid type = XuiPushButton
  503.   $HotCopy              =  10  ' kid  10 grid type = XuiPushButton
  504.   $HotPaste             =  11  ' kid  11 grid type = XuiPushButton
  505.   $HotGui               =  12  ' kid  12 grid type = XuiPushButton
  506.   $HotAbort             =  13  ' kid  13 grid type = XuiPushButton
  507.   $HotFind              =  14  ' kid  14 grid type = XuiPushButton
  508.   $HotReplace           =  15  ' kid  15 grid type = XuiPushButton
  509.   $HotBack              =  16  ' kid  16 grid type = XuiPushButton
  510.   $HotNext              =  17  ' kid  17 grid type = XuiPushButton
  511.   $HotPrevious          =  18  ' kid  18 grid type = XuiPushButton
  512.   $Function             =  19  ' kid  19 grid type = XuiListButton
  513.   $HotStart             =  20  ' kid  20 grid type = XuiPushButton
  514.   $HotContinue          =  21  ' kid  21 grid type = XuiPushButton
  515.   $HotPause             =  22  ' kid  22 grid type = XuiPushButton
  516.   $HotKill              =  23  ' kid  23 grid type = XuiPushButton
  517.   $HotToCursor          =  24  ' kid  24 grid type = XuiPushButton
  518.   $HotStepLocal         =  25  ' kid  25 grid type = XuiPushButton
  519.   $HotStepGlobal        =  26  ' kid  26 grid type = XuiPushButton
  520.   $HotToggleBreakpoint  =  27  ' kid  27 grid type = XuiPushButton
  521.   $HotClearBreakpoints  =  28  ' kid  28 grid type = XuiPushButton
  522.   $HotVariables         =  29  ' kid  29 grid type = XuiPushButton
  523.   $HotFrames            =  30  ' kid  30 grid type = XuiPushButton
  524.   $HotAssembly          =  31  ' kid  31 grid type = XuiPushButton
  525.   $HotRegisters         =  32  ' kid  32 grid type = XuiPushButton
  526.   $HotMemory            =  33  ' kid  33 grid type = XuiPushButton
  527.   $Command              =  34  ' kid  34 grid type = XuiDropBox
  528.   $TextLower            =  35  ' kid  35 grid type = XuiTextArea
  529.   $UpperKid             =  35  ' kid maximum
  530. '
  531. '
  532.     IFZ sub[] THEN GOSUB Initialize
  533. '    XuiReportMessage (grid, message, v0, v1, v2, v3, r0, r1)
  534.     IF XuiProcessMessage (grid, message, @v0, @v1, @v2, @v3, @r0, @r1, MainWindow) THEN RETURN
  535.     IF (message <= upperMessage) THEN GOSUB @sub[message]
  536.     RETURN
  537. '
  538. '
  539. ' *****  Callback  *****  message = Callback : r1 = original message
  540. '
  541. SUB Callback
  542.     message = r1
  543.     callback = message
  544.     IF (message <= upperMessage) THEN GOSUB @sub[message]
  545. END SUB
  546. '
  547. '
  548. ' *****  Create  *****  v0123 = xywh : r0 = window : r1 = parent
  549. '
  550. SUB Create
  551.     IF (v0 <= 0) THEN v0 = 0
  552.     IF (v1 <= 0) THEN v1 = 0
  553.     IF (v2 <= 0) THEN v2 = designWidth
  554.     IF (v3 <= 0) THEN v3 = designHeight
  555.     XuiCreateGrid  (@grid, MainWindow, @v0, @v1, @v2, @v3, r0, r1, &MainWindow())
  556.     XuiSendMessage ( grid, #SetGridName, 0, 0, 0, 0, 0, @"MainWindow")
  557.     XuiSendMessage ( grid, #SetBorder, $$BorderNone, $$BorderNone, $$BorderFrame, 0, 0, 0)
  558.     XuiSendMessage ( grid, #SetHelpString, 0, 0, 0, 0, 0, @"pde.hlp:Environment")
  559.     XuiMenu        (@g, #Create, 0, 0, 344, 24, r0, grid)
  560.     XuiSendMessage ( g, #SetCallback, grid, &MainWindow(), -1, -1, $MenuBar, grid)
  561.     XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"MenuBar")
  562.     XuiSendMessage ( g, #SetStyle, 0, 0, 0, 0, 0, 0)
  563.     XuiSendMessage ( g, #SetBorder, $$BorderNone, $$BorderNone, $$BorderFrame, 0, 0, 0)
  564.     XuiSendMessage ( g, #SetHelpString, 0, 0, 0, 0, 0, @"pde.hlp:MenuBar")
  565.     XuiSendMessage ( g, #SetHintString, 0, 0, 0, 0, 0, @"main menu")
  566.     XuiSendMessage ( g, #SetFont, 300, 400, 0, 0, 0, @"Tw Cen MT")
  567.     XuiSendMessage ( g, #SetTextString, 0, 0, 0, 0, 0, @"_file   _edit   _view   _option   _run   _debug   _status   _help")
  568.     DIM text$[66]
  569.     text$[ 0] = "_file   "
  570.     text$[ 1] = " _new"
  571.     text$[ 2] = " _text-load"
  572.     text$[ 3] = " _load"
  573.     text$[ 4] = " _save"
  574.     text$[ 5] = " _mode"
  575.     text$[ 6] = " _rename"
  576.     text$[ 7] = " _quit"
  577.     text$[ 8] = "_edit   "
  578.     text$[ 9] = " _cut"
  579.     text$[10] = " _grab"
  580.     text$[11] = " _paste"
  581.     text$[12] = " _delete"
  582.     text$[13] = " _buffer"
  583.     text$[14] = " _insert"
  584.     text$[15] = " _erase"
  585.     text$[16] = " _find"
  586.     text$[17] = " _read"
  587.     text$[18] = " _write"
  588.     text$[19] = " _abandon"
  589.     text$[20] = "_view   "
  590.     text$[21] = " _function"
  591.     text$[22] = " _prior function"
  592.     text$[23] = " _new function"
  593.     text$[24] = " _delete function"
  594.     text$[25] = " _rename function"
  595.     text$[26] = " _clone function"
  596.     text$[27] = " _load function"
  597.     text$[28] = " _save function"
  598.     text$[29] = " _merge PROLOG"
  599.     text$[30] = "_option   "
  600.     text$[31] = " _misc"
  601.     text$[32] = " _color of text-cursor"
  602.     text$[33] = " _tab width (pixels)"
  603.     text$[34] = "_run   "
  604.     text$[35] = " _start"
  605.     text$[36] = " _continue"
  606.     text$[37] = " _jump"
  607.     text$[38] = " _pause"
  608.     text$[39] = " _kill"
  609.     text$[40] = " _recompile"
  610.     text$[41] = " _assembly"
  611.     text$[42] = " _library"
  612.     text$[43] = "_debug   "
  613.     text$[44] = " _toggle breakpoint"
  614.     text$[45] = " _clear all breakpoints"
  615.     text$[46] = " _erase local breakpoints"
  616.     text$[47] = " _memory"
  617.     text$[48] = " _assembly"
  618.     text$[49] = " _registers"
  619.     text$[50] = "_status   "
  620.     text$[51] = " _compilation errors"
  621.     text$[52] = " _runtime errors"
  622.     text$[53] = "_help  "
  623.     text$[54] = " new"
  624.     text$[55] = " _notes"
  625.     text$[56] = " _support"
  626.     text$[57] = " _message"
  627.     text$[58] = " _language"
  628.     text$[59] = " _operator"
  629.     text$[60] = " _dot command"
  630.     text$[61] = " standard library"
  631.     text$[62] = " graphics library"
  632.     text$[63] = " GuiDesigner library"
  633.     text$[64] = " mathematics library"
  634.     text$[65] = " complex number library"
  635.     text$[66] = " network / internet library"
  636.     XuiSendMessage ( g, #SetTextArray, 0, 0, 0, 0, 0, @text$[])
  637.     XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 1, @"MenuPullDown")
  638.     XuiSendMessage ( g, #SetHelpString, 0, 0, 0, 0, 1, @"pde.hlp:MenuBar")
  639.     XuiPushButton  (@g, #Create, 344, 0, 24, 24, r0, grid)
  640.     XuiSendMessage ( g, #SetCallback, grid, &MainWindow(), -1, -1, $HotProlog, grid)
  641.     XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"HotProlog")
  642.     XuiSendMessage ( g, #SetStyle, 2, 0, 0, 0, 0, 0)
  643.     XuiSendMessage ( g, #SetBorder, $$BorderFlat1, $$BorderFlat1, $$BorderLower1, 0, 0, 0)
  644.     XuiSendMessage ( g, #SetHelpString, 0, 0, 0, 0, 0, @"pde.hlp:HotProlog")
  645.     XuiSendMessage ( g, #SetHintString, 0, 0, 0, 0, 0, @"display program PROLOG")
  646.     XuiSendMessage ( g, #SetImage, 0, 0, 4, 4, 0, @"$XBDIR/xxx/icon_function_prolog.bmp")
  647.     XuiSendMessage ( g, #SetImageCoords, 0, 0, 16, 16, 0, 0)
  648.     XuiLabel       (@g, #Create, 368, 0, 160, 24, r0, grid)
  649.     XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"FileLabel")
  650.     XuiSendMessage ( g, #SetColor, $$Grey, $$Black, $$Black, $$White, 0, 0)
  651.     XuiSendMessage ( g, #SetColorExtra, -1, -1, -1, $$LightYellow, 0, 0)
  652.     XuiSendMessage ( g, #SetBorder, $$BorderNone, $$BorderNone, $$BorderNone, 0, 0, 0)
  653.     XuiSendMessage ( g, #SetHelpString, 0, 0, 0, 0, 0, @"pde.hlp:FileLabel")
  654.     XuiSendMessage ( g, #SetHintString, 0, 0, 0, 0, 0, @"filename")
  655.     XuiSendMessage ( g, #SetFont, 280, 400, 0, 0, 0, @"Comic Sans MS")
  656.     XuiSendMessage ( g, #SetTextString, 0, 0, 0, 0, 0, @"-filename-")
  657.     XuiLabel       (@g, #Create, 528, 0, 160, 24, r0, grid)
  658.     XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"StatusLabel")
  659.     XuiSendMessage ( g, #SetColor, $$Grey, $$Black, $$Black, $$White, 0, 0)
  660.     XuiSendMessage ( g, #SetColorExtra, -1, -1, -1, $$LightYellow, 0, 0)
  661.     XuiSendMessage ( g, #SetBorder, $$BorderNone, $$BorderNone, $$BorderNone, 0, 0, 0)
  662.     XuiSendMessage ( g, #SetHelpString, 0, 0, 0, 0, 0, @"pde.hlp:StatusLabel")
  663.     XuiSendMessage ( g, #SetHintString, 0, 0, 0, 0, 0, @"status")
  664.     XuiSendMessage ( g, #SetFont, 280, 400, 0, 0, 0, @"Comic Sans MS")
  665.     XuiSendMessage ( g, #SetTextString, 0, 0, 0, 0, 0, @"-status-")
  666.     XuiPushButton  (@g, #Create, 0, 24, 24, 24, r0, grid)
  667.     XuiSendMessage ( g, #SetCallback, grid, &MainWindow(), -1, -1, $HotNew, grid)
  668.     XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"HotNew")
  669.     XuiSendMessage ( g, #SetStyle, 2, 0, 0, 0, 0, 0)
  670.     XuiSendMessage ( g, #SetBorder, $$BorderFlat1, $$BorderFlat1, $$BorderLower1, 0, 0, 0)
  671.     XuiSendMessage ( g, #SetHelpString, 0, 0, 0, 0, 0, @"pde.hlp:HotNew")
  672.     XuiSendMessage ( g, #SetHintString, 0, 0, 0, 0, 0, @"new program or text-file")
  673.     XuiSendMessage ( g, #SetImage, 0, 0, 4, 4, 0, @"$XBDIR/xxx/icon_new.bmp")
  674.     XuiSendMessage ( g, #SetImageCoords, 0, 0, 16, 16, 0, 0)
  675.     XuiPushButton  (@g, #Create, 24, 24, 24, 24, r0, grid)
  676.     XuiSendMessage ( g, #SetCallback, grid, &MainWindow(), -1, -1, $HotLoad, grid)
  677.     XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"HotLoad")
  678.     XuiSendMessage ( g, #SetStyle, 2, 0, 0, 0, 0, 0)
  679.     XuiSendMessage ( g, #SetBorder, $$BorderFlat1, $$BorderFlat1, $$BorderLower1, 0, 0, 0)
  680.     XuiSendMessage ( g, #SetHelpString, 0, 0, 0, 0, 0, @"pde.hlp:HotLoad")
  681.     XuiSendMessage ( g, #SetHintString, 0, 0, 0, 0, 0, @"load program or text-file")
  682.     XuiSendMessage ( g, #SetImage, 0, 0, 4, 4, 0, @"$XBDIR/xxx/icon_open.bmp")
  683.     XuiSendMessage ( g, #SetImageCoords, 0, 0, 16, 16, 0, 0)
  684.     XuiPushButton  (@g, #Create, 48, 24, 24, 24, r0, grid)
  685.     XuiSendMessage ( g, #SetCallback, grid, &MainWindow(), -1, -1, $HotSave, grid)
  686.     XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"HotSave")
  687.     XuiSendMessage ( g, #SetStyle, 2, 0, 0, 0, 0, 0)
  688.     XuiSendMessage ( g, #SetBorder, $$BorderFlat1, $$BorderFlat1, $$BorderLower1, 0, 0, 0)
  689.     XuiSendMessage ( g, #SetHelpString, 0, 0, 0, 0, 0, @"pde.hlp:HotSave")
  690.     XuiSendMessage ( g, #SetHintString, 0, 0, 0, 0, 0, @"save program or text-file")
  691.     XuiSendMessage ( g, #SetImage, 0, 0, 4, 4, 0, @"$XBDIR/xxx/icon_save.bmp")
  692.     XuiSendMessage ( g, #SetImageCoords, 0, 0, 16, 16, 0, 0)
  693.     XuiPushButton  (@g, #Create, 72, 24, 24, 24, r0, grid)
  694.     XuiSendMessage ( g, #SetCallback, grid, &MainWindow(), -1, -1, $HotSavePlus, grid)
  695.     XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"HotSavePlus")
  696.     XuiSendMessage ( g, #SetStyle, 2, 0, 0, 0, 0, 0)
  697.     XuiSendMessage ( g, #SetBorder, $$BorderFlat1, $$BorderFlat1, $$BorderLower1, 0, 0, 0)
  698.     XuiSendMessage ( g, #SetHelpString, 0, 0, 0, 0, 0, @"pde.hlp:HotSavePlus")
  699.     XuiSendMessage ( g, #SetHintString, 0, 0, 0, 0, 0, @"save new version of program or text-file")
  700.     XuiSendMessage ( g, #SetImage, 0, 0, 4, 4, 0, @"$XBDIR/xxx/icon_saveplus.bmp")
  701.     XuiSendMessage ( g, #SetImageCoords, 0, 0, 16, 16, 0, 0)
  702.     XuiPushButton  (@g, #Create, 104, 24, 24, 24, r0, grid)
  703.     XuiSendMessage ( g, #SetCallback, grid, &MainWindow(), -1, -1, $HotCut, grid)
  704.     XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"HotCut")
  705.     XuiSendMessage ( g, #SetStyle, 2, 0, 0, 0, 0, 0)
  706.     XuiSendMessage ( g, #SetBorder, $$BorderFlat1, $$BorderFlat1, $$BorderLower1, 0, 0, 0)
  707.     XuiSendMessage ( g, #SetHelpString, 0, 0, 0, 0, 0, @"pde.hlp:HotCut")
  708.     XuiSendMessage ( g, #SetHintString, 0, 0, 0, 0, 0, @"cut selected text, put copy in clipboard")
  709.     XuiSendMessage ( g, #SetImage, 0, 0, 4, 4, 0, @"$XBDIR/xxx/icon_cut.bmp")
  710.     XuiSendMessage ( g, #SetImageCoords, 0, 0, 16, 16, 0, 0)
  711.     XuiPushButton  (@g, #Create, 128, 24, 24, 24, r0, grid)
  712.     XuiSendMessage ( g, #SetCallback, grid, &MainWindow(), -1, -1, $HotCopy, grid)
  713.     XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"HotCopy")
  714.     XuiSendMessage ( g, #SetStyle, 2, 0, 0, 0, 0, 0)
  715.     XuiSendMessage ( g, #SetBorder, $$BorderFlat1, $$BorderFlat1, $$BorderLower1, 0, 0, 0)
  716.     XuiSendMessage ( g, #SetHelpString, 0, 0, 0, 0, 0, @"pde.hlp:HotCopy")
  717.     XuiSendMessage ( g, #SetHintString, 0, 0, 0, 0, 0, @"copy selected text, put in clipboard")
  718.     XuiSendMessage ( g, #SetImage, 0, 0, 4, 4, 0, @"$XBDIR/xxx/icon_copy.bmp")
  719.     XuiSendMessage ( g, #SetImageCoords, 0, 0, 16, 16, 0, 0)
  720.     XuiPushButton  (@g, #Create, 152, 24, 24, 24, r0, grid)
  721.     XuiSendMessage ( g, #SetCallback, grid, &MainWindow(), -1, -1, $HotPaste, grid)
  722.     XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"HotPaste")
  723.     XuiSendMessage ( g, #SetStyle, 2, 0, 0, 0, 0, 0)
  724.     XuiSendMessage ( g, #SetBorder, $$BorderFlat1, $$BorderFlat1, $$BorderLower1, 0, 0, 0)
  725.     XuiSendMessage ( g, #SetHelpString, 0, 0, 0, 0, 0, @"pde.hlp:HotPaste")
  726.     XuiSendMessage ( g, #SetHintString, 0, 0, 0, 0, 0, @"paste clipboard text at cursor")
  727.     XuiSendMessage ( g, #SetImage, 0, 0, 4, 4, 0, @"$XBDIR/xxx/icon_paste.bmp")
  728.     XuiSendMessage ( g, #SetImageCoords, 0, 0, 16, 16, 0, 0)
  729.     XuiPushButton  (@g, #Create, 184, 24, 24, 24, r0, grid)
  730.     XuiSendMessage ( g, #SetCallback, grid, &MainWindow(), -1, -1, $HotGui, grid)
  731.     XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"HotGui")
  732.     XuiSendMessage ( g, #SetStyle, 2, 0, 0, 0, 0, 0)
  733.     XuiSendMessage ( g, #SetBorder, $$BorderFlat1, $$BorderFlat1, $$BorderLower1, 0, 0, 0)
  734.     XuiSendMessage ( g, #SetHelpString, 0, 0, 0, 0, 0, @"pde.hlp:HotGui")
  735.     XuiSendMessage ( g, #SetHintString, 0, 0, 0, 0, 0, @"display/hide GuiDesigner toolkit")
  736.     XuiSendMessage ( g, #SetImage, 0, 0, 4, 4, 0, @"$XBDIR/xxx/icon_toolkit.bmp")
  737.     XuiSendMessage ( g, #SetImageCoords, 0, 0, 16, 16, 0, 0)
  738.     XuiPushButton  (@g, #Create, 208, 24, 24, 24, r0, grid)
  739.     XuiSendMessage ( g, #SetCallback, grid, &MainWindow(), -1, -1, $HotAbort, grid)
  740.     XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"HotAbort")
  741.     XuiSendMessage ( g, #SetStyle, 2, 0, 0, 0, 0, 0)
  742.     XuiSendMessage ( g, #SetBorder, $$BorderFlat1, $$BorderFlat1, $$BorderLower1, 0, 0, 0)
  743.     XuiSendMessage ( g, #SetHelpString, 0, 0, 0, 0, 0, @"pde.hlp:HotAbort")
  744.     XuiSendMessage ( g, #SetHintString, 0, 0, 0, 0, 0, @"abort executing command")
  745.     XuiSendMessage ( g, #SetImage, 0, 0, 4, 4, 0, @"$XBDIR/xxx/icon_stop.bmp")
  746.     XuiSendMessage ( g, #SetImageCoords, 0, 0, 16, 16, 0, 0)
  747.     XuiPushButton  (@g, #Create, 240, 24, 24, 24, r0, grid)
  748.     XuiSendMessage ( g, #SetCallback, grid, &MainWindow(), -1, -1, $HotFind, grid)
  749.     XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"HotFind")
  750.     XuiSendMessage ( g, #SetStyle, 2, 0, 0, 0, 0, 0)
  751.     XuiSendMessage ( g, #SetBorder, $$BorderFlat1, $$BorderFlat1, $$BorderLower1, 0, 0, 0)
  752.     XuiSendMessage ( g, #SetHelpString, 0, 0, 0, 0, 0, @"pde.hlp:HotFind")
  753.     XuiSendMessage ( g, #SetHintString, 0, 0, 0, 0, 0, @"F11 : find string in program or text-file")
  754.     XuiSendMessage ( g, #SetImage, 0, 0, 4, 4, 0, @"$XBDIR/xxx/icon_find.bmp")
  755.     XuiSendMessage ( g, #SetImageCoords, 0, 0, 16, 16, 0, 0)
  756.     XuiPushButton  (@g, #Create, 264, 24, 24, 24, r0, grid)
  757.     XuiSendMessage ( g, #SetCallback, grid, &MainWindow(), -1, -1, $HotReplace, grid)
  758.     XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"HotReplace")
  759.     XuiSendMessage ( g, #SetStyle, 2, 0, 0, 0, 0, 0)
  760.     XuiSendMessage ( g, #SetBorder, $$BorderFlat1, $$BorderFlat1, $$BorderLower1, 0, 0, 0)
  761.     XuiSendMessage ( g, #SetHelpString, 0, 0, 0, 0, 0, @"pde.hlp:HotReplace")
  762.     XuiSendMessage ( g, #SetHintString, 0, 0, 0, 0, 0, @"F12 : replace string in program or text-file")
  763.     XuiSendMessage ( g, #SetImage, 0, 0, 4, 4, 0, @"$XBDIR/xxx/icon_replace.bmp")
  764.     XuiSendMessage ( g, #SetImageCoords, 0, 0, 16, 16, 0, 0)
  765.     XuiPushButton  (@g, #Create, 296, 24, 24, 24, r0, grid)
  766.     XuiSendMessage ( g, #SetCallback, grid, &MainWindow(), -1, -1, $HotBack, grid)
  767.     XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"HotBack")
  768.     XuiSendMessage ( g, #SetStyle, 2, 0, 0, 0, 0, 0)
  769.     XuiSendMessage ( g, #SetBorder, $$BorderFlat1, $$BorderFlat1, $$BorderLower1, 0, 0, 0)
  770.     XuiSendMessage ( g, #SetHelpString, 0, 0, 0, 0, 0, @"pde.hlp:HotBack")
  771.     XuiSendMessage ( g, #SetHintString, 0, 0, 0, 0, 0, @"display previous function")
  772.     XuiSendMessage ( g, #SetImage, 0, 0, 4, 4, 0, @"$XBDIR/xxx/icon_function_back.bmp")
  773.     XuiSendMessage ( g, #SetImageCoords, 0, 0, 16, 16, 0, 0)
  774.     XuiPushButton  (@g, #Create, 320, 24, 24, 24, r0, grid)
  775.     XuiSendMessage ( g, #SetCallback, grid, &MainWindow(), -1, -1, $HotNext, grid)
  776.     XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"HotNext")
  777.     XuiSendMessage ( g, #SetStyle, 2, 0, 0, 0, 0, 0)
  778.     XuiSendMessage ( g, #SetBorder, $$BorderFlat1, $$BorderFlat1, $$BorderLower1, 0, 0, 0)
  779.     XuiSendMessage ( g, #SetHelpString, 0, 0, 0, 0, 0, @"pde.hlp:HotNext")
  780.     XuiSendMessage ( g, #SetHintString, 0, 0, 0, 0, 0, @"display next function")
  781.     XuiSendMessage ( g, #SetImage, 0, 0, 4, 4, 0, @"$XBDIR/xxx/icon_function_next.bmp")
  782.     XuiSendMessage ( g, #SetImageCoords, 0, 0, 16, 16, 0, 0)
  783.     XuiPushButton  (@g, #Create, 344, 24, 24, 24, r0, grid)
  784.     XuiSendMessage ( g, #SetCallback, grid, &MainWindow(), -1, -1, $HotPrevious, grid)
  785.     XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"HotPrevious")
  786.     XuiSendMessage ( g, #SetStyle, 2, 0, 0, 0, 0, 0)
  787.     XuiSendMessage ( g, #SetBorder, $$BorderFlat1, $$BorderFlat1, $$BorderLower1, 0, 0, 0)
  788.     XuiSendMessage ( g, #SetHelpString, 0, 0, 0, 0, 0, @"pde.hlp:HotPrevious")
  789.     XuiSendMessage ( g, #SetHintString, 0, 0, 0, 0, 0, @"display previously displayed function")
  790.     XuiSendMessage ( g, #SetImage, 0, 0, 4, 4, 0, @"$XBDIR/xxx/icon_function_previous.bmp")
  791.     XuiSendMessage ( g, #SetImageCoords, 0, 0, 16, 16, 0, 0)
  792.     XuiListButton  (@g, #Create, 368, 24, 320, 24, r0, grid)
  793.     XuiSendMessage ( g, #SetCallback, grid, &MainWindow(), -1, -1, $Function, grid)
  794.     XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"Function")
  795.     XuiSendMessage ( g, #SetAlign, $$AlignMiddleLeft, -1, -1, -1, 0, 0)
  796.     XuiSendMessage ( g, #SetHelpString, -1, 0, 0, 0, 0, @"pde.hlp:Function")
  797.     XuiSendMessage ( g, #SetHintString, 0, 0, 0, 0, 0, @"view function")
  798.     XuiSendMessage ( g, #SetFont, 300, 700, 0, 0, 0, @"Comic Sans MS")
  799.     XuiSendMessage ( g, #SetTextString, 0, 0, 0, 0, 0, @"select function pulldown")
  800.     DIM text$[4]
  801.     text$[0] = "PROLOG / text - PROLOG is always first"
  802.     text$[1] = "Entry         - entry function is always second"
  803.     text$[2] = "FunctionFirst - first function sorted alphabetically"
  804.     text$[3] = " ... "
  805.     text$[4] = "FunctionFinal - final function sorted alphabetically"
  806.     XuiSendMessage ( g, #SetTextArray, 0, 0, 0, 0, 0, @text$[])
  807.     XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 1, @"FunctionPressButton")
  808.     XuiSendMessage ( g, #SetHelpString, 0, 0, 0, 0, 1, @"pde.hlp:Function")
  809.     XuiSendMessage ( g, #SetHintString, 0, 0, 0, 0, 1, @"view function")
  810.     XuiSendMessage ( g, #SetTextString, 0, 0, 0, 0, 1, @"select function pulldown")
  811.     XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 2, @"FunctionPullDown")
  812.     XuiSendMessage ( g, #SetHelpString, 0, 0, 0, 0, 2, @"pde.hlp:Function")
  813.     XuiSendMessage ( g, #SetHintString, 0, 0, 0, 0, 2, @"view function")
  814. '    DIM text$[4]
  815. '    text$[0] = "PROLOG / text  - PROLOG is always first"
  816. '    text$[1] = "Entry          - entry function is always second"
  817. '    text$[2] = "FunctionOne    - first function sorted alphabetically"
  818. '    text$[3] = " ... "
  819. '    text$[4] = "FunctionLast   - last function sorted alphabetically"
  820. '    XuiSendMessage ( g, #SetTextArray, 0, 0, 0, 0, 2, @text$[])
  821.     XuiPushButton  (@g, #Create, 0, 48, 24, 24, r0, grid)
  822.     XuiSendMessage ( g, #SetCallback, grid, &MainWindow(), -1, -1, $HotStart, grid)
  823.     XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"HotStart")
  824.     XuiSendMessage ( g, #SetStyle, 2, 0, 0, 0, 0, 0)
  825.     XuiSendMessage ( g, #SetBorder, $$BorderFlat1, $$BorderFlat1, $$BorderLower1, 0, 0, 0)
  826.     XuiSendMessage ( g, #SetHelpString, 0, 0, 0, 0, 0, @"pde.hlp:HotStart")
  827.     XuiSendMessage ( g, #SetHintString, 0, 0, 0, 0, 0, @"F1 : start program execution from beginning")
  828.     XuiSendMessage ( g, #SetImage, 0, 0, 4, 4, 0, @"$XBDIR/xxx/icon_start.bmp")
  829.     XuiSendMessage ( g, #SetImageCoords, 0, 0, 16, 16, 0, 0)
  830.     XuiPushButton  (@g, #Create, 24, 48, 24, 24, r0, grid)
  831.     XuiSendMessage ( g, #SetCallback, grid, &MainWindow(), -1, -1, $HotContinue, grid)
  832.     XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"HotContinue")
  833.     XuiSendMessage ( g, #SetStyle, 2, 0, 0, 0, 0, 0)
  834.     XuiSendMessage ( g, #SetBorder, $$BorderFlat1, $$BorderFlat1, $$BorderLower1, 0, 0, 0)
  835.     XuiSendMessage ( g, #SetHelpString, 0, 0, 0, 0, 0, @"pde.hlp:HotContinue")
  836.     XuiSendMessage ( g, #SetHintString, 0, 0, 0, 0, 0, @"F2 : continue program execution after pause")
  837.     XuiSendMessage ( g, #SetImage, 0, 0, 4, 4, 0, @"$XBDIR/xxx/icon_continue.bmp")
  838.     XuiSendMessage ( g, #SetImageCoords, 0, 0, 16, 16, 0, 0)
  839.     XuiPushButton  (@g, #Create, 48, 48, 24, 24, r0, grid)
  840.     XuiSendMessage ( g, #SetCallback, grid, &MainWindow(), -1, -1, $HotPause, grid)
  841.     XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"HotPause")
  842.     XuiSendMessage ( g, #SetStyle, 2, 0, 0, 0, 0, 0)
  843.     XuiSendMessage ( g, #SetBorder, $$BorderFlat1, $$BorderFlat1, $$BorderLower1, 0, 0, 0)
  844.     XuiSendMessage ( g, #SetHelpString, 0, 0, 0, 0, 0, @"pde.hlp:HotPause")
  845.     XuiSendMessage ( g, #SetHintString, 0, 0, 0, 0, 0, @"F3 : pause program execution now")
  846.     XuiSendMessage ( g, #SetImage, 0, 0, 4, 4, 0, @"$XBDIR/xxx/icon_pause.bmp")
  847.     XuiSendMessage ( g, #SetImageCoords, 0, 0, 16, 16, 0, 0)
  848.     XuiPushButton  (@g, #Create, 72, 48, 24, 24, r0, grid)
  849.     XuiSendMessage ( g, #SetCallback, grid, &MainWindow(), -1, -1, $HotKill, grid)
  850.     XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"HotKill")
  851.     XuiSendMessage ( g, #SetStyle, 2, 0, 0, 0, 0, 0)
  852.     XuiSendMessage ( g, #SetBorder, $$BorderFlat1, $$BorderFlat1, $$BorderLower1, 0, 0, 0)
  853.     XuiSendMessage ( g, #SetHelpString, 0, 0, 0, 0, 0, @"pde.hlp:HotKill")
  854.     XuiSendMessage ( g, #SetHintString, 0, 0, 0, 0, 0, @"F4 : kill program execution : continue not possible")
  855.     XuiSendMessage ( g, #SetImage, 0, 0, 4, 4, 0, @"$XBDIR/xxx/icon_kill.bmp")
  856.     XuiSendMessage ( g, #SetImageCoords, 0, 0, 16, 16, 0, 0)
  857.     XuiPushButton  (@g, #Create, 104, 48, 24, 24, r0, grid)
  858.     XuiSendMessage ( g, #SetCallback, grid, &MainWindow(), -1, -1, $HotToCursor, grid)
  859.     XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"HotToCursor")
  860.     XuiSendMessage ( g, #SetStyle, 2, 0, 0, 0, 0, 0)
  861.     XuiSendMessage ( g, #SetBorder, $$BorderFlat1, $$BorderFlat1, $$BorderLower1, 0, 0, 0)
  862.     XuiSendMessage ( g, #SetHelpString, 0, 0, 0, 0, 0, @"pde.hlp:HotToCursor")
  863.     XuiSendMessage ( g, #SetHintString, 0, 0, 0, 0, 0, @"F5 : execute program with breakpoint at cursor line")
  864.     XuiSendMessage ( g, #SetImage, 0, 0, 4, 4, 0, @"$XBDIR/xxx/icon_step_cursor.bmp")
  865.     XuiSendMessage ( g, #SetImageCoords, 0, 0, 16, 16, 0, 0)
  866.     XuiPushButton  (@g, #Create, 128, 48, 24, 24, r0, grid)
  867.     XuiSendMessage ( g, #SetCallback, grid, &MainWindow(), -1, -1, $HotStepLocal, grid)
  868.     XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"HotStepLocal")
  869.     XuiSendMessage ( g, #SetStyle, 2, 0, 0, 0, 0, 0)
  870.     XuiSendMessage ( g, #SetBorder, $$BorderFlat1, $$BorderFlat1, $$BorderLower1, 0, 0, 0)
  871.     XuiSendMessage ( g, #SetHelpString, 0, 0, 0, 0, 0, @"pde.hlp:HotStepLocal")
  872.     XuiSendMessage ( g, #SetHintString, 0, 0, 0, 0, 0, @"F6 : execute single-step local - step over called functions")
  873.     XuiSendMessage ( g, #SetImage, 0, 0, 4, 4, 0, @"$XBDIR/xxx/icon_step_local.bmp")
  874.     XuiSendMessage ( g, #SetImageCoords, 0, 0, 16, 16, 0, 0)
  875.     XuiPushButton  (@g, #Create, 152, 48, 24, 24, r0, grid)
  876.     XuiSendMessage ( g, #SetCallback, grid, &MainWindow(), -1, -1, $HotStepGlobal, grid)
  877.     XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"HotStepGlobal")
  878.     XuiSendMessage ( g, #SetStyle, 2, 0, 0, 0, 0, 0)
  879.     XuiSendMessage ( g, #SetBorder, $$BorderFlat1, $$BorderFlat1, $$BorderLower1, 0, 0, 0)
  880.     XuiSendMessage ( g, #SetHelpString, 0, 0, 0, 0, 0, @"pde.hlp:HotStepGlobal")
  881.     XuiSendMessage ( g, #SetHintString, 0, 0, 0, 0, 0, @"F7 : execute single-step global - step into called functions")
  882.     XuiSendMessage ( g, #SetImage, 0, 0, 4, 4, 0, @"$XBDIR/xxx/icon_step_global.bmp")
  883.     XuiSendMessage ( g, #SetImageCoords, 0, 0, 16, 16, 0, 0)
  884.     XuiPushButton  (@g, #Create, 184, 48, 24, 24, r0, grid)
  885.     XuiSendMessage ( g, #SetCallback, grid, &MainWindow(), -1, -1, $HotToggleBreakpoint, grid)
  886.     XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"HotToggleBreakpoint")
  887.     XuiSendMessage ( g, #SetStyle, 2, 0, 0, 0, 0, 0)
  888.     XuiSendMessage ( g, #SetBorder, $$BorderFlat1, $$BorderFlat1, $$BorderLower1, 0, 0, 0)
  889.     XuiSendMessage ( g, #SetHelpString, 0, 0, 0, 0, 0, @"pde.hlp:HotToggleBreakpoint")
  890.     XuiSendMessage ( g, #SetHintString, 0, 0, 0, 0, 0, @"toggle breakpoint on/off at cursor line")
  891.     XuiSendMessage ( g, #SetImage, 0, 0, 4, 4, 0, @"$XBDIR/xxx/icon_breakpoint.bmp")
  892.     XuiSendMessage ( g, #SetImageCoords, 0, 0, 16, 16, 0, 0)
  893.     XuiPushButton  (@g, #Create, 208, 48, 24, 24, r0, grid)
  894.     XuiSendMessage ( g, #SetCallback, grid, &MainWindow(), -1, -1, $HotClearBreakpoints, grid)
  895.     XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"HotClearBreakpoints")
  896.     XuiSendMessage ( g, #SetStyle, 2, 0, 0, 0, 0, 0)
  897.     XuiSendMessage ( g, #SetBorder, $$BorderFlat1, $$BorderFlat1, $$BorderLower1, 0, 0, 0)
  898.     XuiSendMessage ( g, #SetHelpString, 0, 0, 0, 0, 0, @"pde.hlp:HotClearBreakpoints")
  899.     XuiSendMessage ( g, #SetHintString, 0, 0, 0, 0, 0, @"clear all breakpoints")
  900.     XuiSendMessage ( g, #SetImage, 0, 0, 4, 4, 0, @"$XBDIR/xxx/icon_breakpoints_clear.bmp")
  901.     XuiSendMessage ( g, #SetImageCoords, 0, 0, 16, 16, 0, 0)
  902.     XuiPushButton  (@g, #Create, 240, 48, 24, 24, r0, grid)
  903.     XuiSendMessage ( g, #SetCallback, grid, &MainWindow(), -1, -1, $HotVariables, grid)
  904.     XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"HotVariables")
  905.     XuiSendMessage ( g, #SetStyle, 2, 0, 0, 0, 0, 0)
  906.     XuiSendMessage ( g, #SetBorder, $$BorderFlat1, $$BorderFlat1, $$BorderLower1, 0, 0, 0)
  907.     XuiSendMessage ( g, #SetHelpString, 0, 0, 0, 0, 0, @"pde.hlp:HotVariables")
  908.     XuiSendMessage ( g, #SetHintString, 0, 0, 0, 0, 0, @"F8 : display variables - view and change values")
  909.     XuiSendMessage ( g, #SetImage, 0, 0, 4, 4, 0, @"$XBDIR/xxx/icon_variables.bmp")
  910.     XuiSendMessage ( g, #SetImageCoords, 0, 0, 16, 16, 0, 0)
  911.     XuiPushButton  (@g, #Create, 264, 48, 24, 24, r0, grid)
  912.     XuiSendMessage ( g, #SetCallback, grid, &MainWindow(), -1, -1, $HotFrames, grid)
  913.     XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"HotFrames")
  914.     XuiSendMessage ( g, #SetStyle, 2, 0, 0, 0, 0, 0)
  915.     XuiSendMessage ( g, #SetBorder, $$BorderFlat1, $$BorderFlat1, $$BorderLower1, 0, 0, 0)
  916.     XuiSendMessage ( g, #SetHelpString, 0, 0, 0, 0, 0, @"pde.hlp:HotFrames")
  917.     XuiSendMessage ( g, #SetHintString, 0, 0, 0, 0, 0, @"F9 : display function call-stack")
  918.     XuiSendMessage ( g, #SetImage, 0, 0, 4, 4, 0, @"$XBDIR/xxx/icon_stack.bmp")
  919.     XuiSendMessage ( g, #SetImageCoords, 0, 0, 16, 16, 0, 0)
  920.     XuiPushButton  (@g, #Create, 296, 48, 24, 24, r0, grid)
  921.     XuiSendMessage ( g, #SetCallback, grid, &MainWindow(), -1, -1, $HotAssembly, grid)
  922.     XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"HotAssembly")
  923.     XuiSendMessage ( g, #SetStyle, 2, 0, 0, 0, 0, 0)
  924.     XuiSendMessage ( g, #SetBorder, $$BorderFlat1, $$BorderFlat1, $$BorderLower1, 0, 0, 0)
  925.     XuiSendMessage ( g, #SetHelpString, 0, 0, 0, 0, 0, @"pde.hlp:HotAssembly")
  926.     XuiSendMessage ( g, #SetHintString, 0, 0, 0, 0, 0, @"F10 : display assembly language for cursor line")
  927.     XuiSendMessage ( g, #SetImage, 0, 0, 4, 4, 0, @"$XBDIR/xxx/icon_assembly.bmp")
  928.     XuiSendMessage ( g, #SetImageCoords, 0, 0, 16, 16, 0, 0)
  929.     XuiPushButton  (@g, #Create, 320, 48, 24, 24, r0, grid)
  930.     XuiSendMessage ( g, #SetCallback, grid, &MainWindow(), -1, -1, $HotRegisters, grid)
  931.     XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"HotRegisters")
  932.     XuiSendMessage ( g, #SetStyle, 2, 0, 0, 0, 0, 0)
  933.     XuiSendMessage ( g, #SetBorder, $$BorderFlat1, $$BorderFlat1, $$BorderLower1, 0, 0, 0)
  934.     XuiSendMessage ( g, #SetHelpString, 0, 0, 0, 0, 0, @"pde.hlp:HotRegisters")
  935.     XuiSendMessage ( g, #SetHintString, 0, 0, 0, 0, 0, @"display CPU registers")
  936.     XuiSendMessage ( g, #SetImage, 0, 0, 4, 4, 0, @"$XBDIR/xxx/icon_registers.bmp")
  937.     XuiSendMessage ( g, #SetImageCoords, 0, 0, 16, 16, 0, 0)
  938.     XuiPushButton  (@g, #Create, 344, 48, 24, 24, r0, grid)
  939.     XuiSendMessage ( g, #SetCallback, grid, &MainWindow(), -1, -1, $HotMemory, grid)
  940.     XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"HotMemory")
  941.     XuiSendMessage ( g, #SetStyle, 2, 0, 0, 0, 0, 0)
  942.     XuiSendMessage ( g, #SetBorder, $$BorderFlat1, $$BorderFlat1, $$BorderLower1, 0, 0, 0)
  943.     XuiSendMessage ( g, #SetHelpString, 0, 0, 0, 0, 0, @"pde.hlp:HotMemory")
  944.     XuiSendMessage ( g, #SetHintString, 0, 0, 0, 0, 0, @"display memory")
  945.     XuiSendMessage ( g, #SetImage, 0, 0, 4, 4, 0, @"$XBDIR/xxx/icon_memory.bmp")
  946.     XuiSendMessage ( g, #SetImageCoords, 0, 0, 16, 16, 0, 0)
  947.     XuiDropBox     (@g, #Create, 368, 48, 320, 24, r0, grid)
  948.     XuiSendMessage ( g, #SetCallback, grid, &MainWindow(), -1, -1, $Command, grid)
  949.     XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"Command")
  950.     XuiSendMessage ( g, #SetStyle, 0, 0, 0, 0, 0, 0)
  951.     XuiSendMessage ( g, #SetHelpString, -1, 0, 0, 0, 0, @"pde.hlp:Command")
  952.     XuiSendMessage ( g, #SetHintString, 0, 0, 0, 0, 0, @"enter dot commands here")
  953.     XuiSendMessage ( g, #SetTextString, 0, 0, 0, 0, 0, @".c enter dot commands here")
  954.     DIM text$[15]
  955.     text$[ 0] = ".c enter dot commands here"
  956.     text$[ 1] = ".fl filename"
  957.     text$[ 2] = ".ft filename"
  958.     text$[ 3] = ".fs filename"
  959.     text$[ 4] = ".fq"
  960.     text$[ 5] = ".v funcname"
  961.     text$[ 6] = ".v PROLOG"
  962.     text$[ 7] = ".vp"
  963.     text$[ 8] = ".v-"
  964.     text$[ 9] = ".v"
  965.     text$[10] = ".rs"
  966.     text$[11] = ".rr"
  967.     text$[12] = ".rk"
  968.     text$[13] = ".h"
  969.     text$[14] = ".f findstring"
  970.     text$[15] = ".r findstring replacestring"
  971.     XuiSendMessage ( g, #SetTextArray, 0, 0, 0, 0, 0, @text$[])
  972.     XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 1, @"CommandTextLine")
  973.     XuiSendMessage ( g, #SetColorExtra, $$LightYellow, $$LightYellow, $$Black, $$White, 1, 0)
  974.     XuiSendMessage ( g, #SetHelpString, 0, 0, 0, 0, 1, @"pde.hlp:Command")
  975.     XuiSendMessage ( g, #SetHintString, 0, 0, 0, 0, 1, @"enter dot commands here")
  976.     XuiSendMessage ( g, #SetTextString, 0, 0, 0, 0, 1, @".c enter dot commands here")
  977.     XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 2, @"CommandPressButton")
  978.     XuiSendMessage ( g, #SetHelpString, 0, 0, 0, 0, 2, @"pde.hlp:Command")
  979.     XuiSendMessage ( g, #SetHintString, 0, 0, 0, 0, 2, @"enter dot commands here")
  980.     XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 3, @"CommandPullDown")
  981.     XuiSendMessage ( g, #SetHelpString, 0, 0, 0, 0, 3, @"pde.hlp:Command")
  982.     XuiSendMessage ( g, #SetHintString, 0, 0, 0, 0, 3, @"enter dot commands here")
  983. '    DIM text$[15]
  984. '    text$[ 0] = ".c enter dot commands here"
  985. '    text$[ 1] = ".fl filename
  986. '    text$[ 2] = ".ft filename
  987. '    text$[ 3] = ".fs filename
  988. '    text$[ 4] = ".fq"
  989. '    text$[ 5] = ".v funcname"
  990. '    text$[ 6] = ".v PROLOG"
  991. '    text$[ 7] = ".vp"
  992. '    text$[ 8] = ".v-"
  993. '    text$[ 9] = ".v"
  994. '    text$[10] = ".rs"
  995. '    text$[11] = ".rr"
  996. '    text$[12] = ".rk"
  997. '    text$[13] = ".h"
  998. '    text$[14] = ".f findstring"
  999. '    text$[15] = ".r findstring replacestring"
  1000. '    XuiSendMessage ( g, #SetTextArray, 0, 0, 0, 0, 3, @text$[])
  1001.     XuiTextArea    (@g, #Create, 0, 72, 688, 128, r0, grid)
  1002.     XuiSendMessage ( g, #SetCallback, grid, &MainWindow(), -1, -1, $TextLower, grid)
  1003.     XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"TextLower")
  1004.     XuiSendMessage ( g, #SetStyle, 2, 0, 0, 0, 0, 0)
  1005.     XuiSendMessage ( g, #SetHelpString, 0, 0, 0, 0, 0, @"pde.hlp:TextLower")
  1006.     XuiSendMessage ( g, #SetHintString, 0, 0, 0, 0, 0, @"program or text")
  1007.     XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 1, @"Text")
  1008.     XuiSendMessage ( g, #SetHelpString, 0, 0, 0, 0, 1, @"pde.hlp:TextLower")
  1009.     XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 2, @"ScrollH")
  1010.     XuiSendMessage ( g, #SetStyle, 2, 0, 0, 0, 2, 0)
  1011.     XuiSendMessage ( g, #SetColor, 43, -1, -1, -1, 2, 0)
  1012.     XuiSendMessage ( g, #SetHelpString, 0, 0, 0, 0, 2, @"pde.hlp:TextLower")
  1013.     XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 3, @"ScrollV")
  1014.     XuiSendMessage ( g, #SetStyle, 2, 0, 0, 0, 3, 0)
  1015.     XuiSendMessage ( g, #SetColor, 43, -1, -1, -1, 3, 0)
  1016.     XuiSendMessage ( g, #SetHelpString, 0, 0, 0, 0, 3, @"pde.hlp:TextLower")
  1017.     GOSUB Resize
  1018. END SUB
  1019. '
  1020. '
  1021. ' *****  CreateWindow  *****  v0123 = xywh : r0 = windowType : r1$ = display$
  1022. '
  1023. SUB CreateWindow
  1024.     IF (v0  = 0) THEN v0 = designX
  1025.     IF (v1  = 0) THEN v1 = designY
  1026.     IF (v2 <= 0) THEN v2 = designWidth
  1027.     IF (v3 <= 0) THEN v3 = designHeight
  1028.     XuiWindow (@window, #WindowCreate, v0, v1, v2, v3, r0, @r1$)
  1029.     v0 = 0 : v1 = 0 : r0 = window : ATTACH r1$ TO display$
  1030.     GOSUB Create
  1031.     r1 = 0 : ATTACH display$ TO r1$
  1032.     XuiWindow (window, #WindowRegister, grid, -1, v2, v3, @r0, @"MainWindow")
  1033. END SUB
  1034. '
  1035. '
  1036. ' *****  GetSmallestSize  *****  see "Anatomy of Grid Functions"
  1037. '
  1038. SUB GetSmallestSize
  1039.     v2 = designWidth
  1040.     v3 = designHeight
  1041. END SUB
  1042. '
  1043. '
  1044. ' *****  Resize  *****  see "Anatomy of Grid Functions"
  1045. '
  1046. SUB Resize
  1047.     vv2 = v2
  1048.     vv3 = v3
  1049.     GOSUB GetSmallestSize
  1050.     IF (v2 < vv2) THEN v2 = vv2
  1051.     IF (v3 < vv3) THEN v3 = vv3
  1052. '
  1053. ' position and size main/parent grid
  1054. '
  1055.     XuiPositionGrid (grid, @v0, @v1, @v2, @v3)
  1056. '
  1057. ' make sure we have a plausibly compact font in the menu bar
  1058. '
  1059.     XuiSendMessage ( grid, #GetFontNumber, @font, 0, 0, 0, $MenuBar, 0)
  1060.     IFZ font THEN XuiSendMessage ( grid, #GetFontNumber, @font, 0, 0, 0, $MenuBar, 0)
  1061.     IFZ font THEN XuiSendMessage ( grid, #SetFont, 280, 400, 0, 0, $MenuBar, @"MS Sans Serif")
  1062.     IFZ font THEN XuiSendMessage ( grid, #GetFontNumber, @font, 0, 0, 0, $MenuBar, 0)
  1063.     IFZ font THEN XuiSendMessage ( grid, #SetFont, 260, 400, 0, 0, $MenuBar, @"Arial")
  1064.     IFZ font THEN XuiSendMessage ( grid, #GetFontNumber, @font, 0, 0, 0, $MenuBar, 0)
  1065.     IFZ font THEN XuiSendMessage ( grid, #SetFont, 260, 400, 0, 0, $MenuBar, @"Comic Sans MS")
  1066.     IFZ font THEN XuiSendMessage ( grid, #GetFontNumber, @font, 0, 0, 0, $MenuBar, 0)
  1067.     IFZ font THEN XuiSendMessage ( grid, #SetFont, 260, 400, 0, 0, $MenuBar, @"Helvetica")
  1068.     IFZ font THEN XuiSendMessage ( grid, #GetFontNumber, @font, 0, 0, 0, $MenuBar, 0)
  1069.     IFZ font THEN XuiSendMessage ( grid, #SetFont, 260, 400, 0, 0, $MenuBar, @"Helv")
  1070.     IFZ font THEN XuiSendMessage ( grid, #GetFontNumber, @font, 0, 0, 0, $MenuBar, 0)
  1071.     IFZ font THEN XuiSendMessage ( grid, #SetFont, 300, 400, 0, 0, $MenuBar, @"Tw Cen MT")
  1072. '
  1073.     XuiSendMessage (grid, #SetFontNumber, font, 0, 0, 0, $FileLabel, 0)
  1074.     XuiSendMessage (grid, #SetFontNumber, font, 0, 0, 0, $StatusLabel, 0)
  1075. '
  1076.     XuiGetSize (grid, #GetSize, @xx, @yy, @ww, @hh, $MainWindow, 0)        ' whole window
  1077.     XuiGetSize (grid, #GetSize, @tx, @ty, @tw, @th, $TextLower, 0)        ' program text
  1078.     XuiGetSize (grid, #GetSize, @fx, @fy, @fw, @fh, $Function, 0)            ' function
  1079. '
  1080.     xw0 = v2 - fx                                    ' space to right of menu-bar & buttons
  1081.     xw1 = xw0 >> 1                                ' width of left-hand button
  1082.     xw2 = xw0 - xw1                                ' width of right-hand button
  1083.     sx = fx + xw1                                    ' x position of right-hand button
  1084.     th = v3 - ty                                    ' new height of program text
  1085. '
  1086. '    PRINT v0; v1; v2; v3;; fx; sx; tx;;; xw0; xw1; xw2;;; xx; yy; ww; hh
  1087. '
  1088.     XuiSendMessage (grid, #Resize, fx,  0, xw1, 24, $FileLabel, 0)
  1089.     XuiSendMessage (grid, #Resize, sx,  0, xw2, 24, $StatusLabel, 0)
  1090.     XuiSendMessage (grid, #Resize, fx, 24, xw0, 24, $Function, 0)
  1091.     XuiSendMessage (grid, #Resize, fx, 48, xw0, 24, $Command, 0)
  1092.     XuiSendMessage (grid, #Resize, tx, ty,  v2, th, $TextLower, 0)
  1093.     XuiResizeWindowToGrid (grid, #ResizeWindowToGrid, 0, 0, 0, 0, 0, 0)
  1094. END SUB
  1095. '
  1096. '
  1097. ' *****  Selection  *****  see "Anatomy of Grid Functions"
  1098. '
  1099. SUB Selection
  1100. '    PRINT "MainWindow() : #Selection : "; grid;; message;; v0;; v1;; v2;; v3;; r0;; r1
  1101. END SUB
  1102. '
  1103. '
  1104. ' *****  Initialize  *****  ' see "Anatomy of Grid Functions"
  1105. '
  1106. SUB Initialize
  1107.     XuiGetDefaultMessageFuncArray (@func[])
  1108.     XgrMessageNameToNumber (@"LastMessage", @upperMessage)
  1109. '
  1110.     func[#Callback]           = &XuiCallback ()               ' disable to handle Callback messages internally
  1111.     func[#GetSmallestSize]    = 0                             ' enable to add internal GetSmallestSize routine
  1112.     func[#GotKeyboardFocus]   = &XuiGotKeyboardFocus()
  1113.     func[#LostKeyboardFocus]  = &XuiLostKeyboardFocus()
  1114.     func[#Resize]             = 0                             ' enable to add internal Resize routine
  1115.     func[#SetKeyboardFocus]   = &XuiSetKeyboardFocus()
  1116. '
  1117.     DIM sub[upperMessage]
  1118. '    sub[#Callback]            = SUBADDRESS (Callback)         ' enable to handle Callback messages internally
  1119.     sub[#Create]              = SUBADDRESS (Create)           ' must be internal routine
  1120.     sub[#CreateWindow]        = SUBADDRESS (CreateWindow)     ' must be internal routine
  1121.     sub[#GetSmallestSize]     = SUBADDRESS (GetSmallestSize)  ' enable to add internal GetSmallestSize routine
  1122.     sub[#Resize]              = SUBADDRESS (Resize)           ' enable to add internal Resize routine
  1123.     sub[#Selection]           = SUBADDRESS (Selection)        ' routes Selection callbacks to subroutine
  1124. '
  1125.     IF sub[0] THEN PRINT "MainWindow() : Initialize : error ::: (undefined message)"
  1126.     IF func[0] THEN PRINT "MainWindow() : Initialize : error ::: (undefined message)"
  1127.     XuiRegisterGridType (@MainWindow, "MainWindow", &MainWindow(), @func[], @sub[])
  1128. '
  1129. ' Don't remove the following 4 lines, or WindowFromFunction/WindowToFunction will not work
  1130. '
  1131.     designX = 908
  1132.     designY = 623
  1133.     designWidth = 632
  1134.     designHeight = 200
  1135. '
  1136.     gridType = MainWindow
  1137.     XuiSetGridTypeProperty (gridType, @"x",                designX)
  1138.     XuiSetGridTypeProperty (gridType, @"y",                designY)
  1139.     XuiSetGridTypeProperty (gridType, @"width",            designWidth)
  1140.     XuiSetGridTypeProperty (gridType, @"height",           designHeight)
  1141. '    XuiSetGridTypeProperty (gridType, @"maxWidth",         designWidth)
  1142. '    XuiSetGridTypeProperty (gridType, @"maxHeight",        designHeight)
  1143.     XuiSetGridTypeProperty (gridType, @"minWidth",         designWidth)
  1144.     XuiSetGridTypeProperty (gridType, @"minHeight",        designHeight)
  1145.     XuiSetGridTypeProperty (gridType, @"can",              $$Focus OR $$Respond OR $$Callback OR $$InputTextString OR $$InputTextArray OR $$TextSelection)
  1146.     XuiSetGridTypeProperty (gridType, @"focusKid",         $TextLower)
  1147.     XuiSetGridTypeProperty (gridType, @"inputTextArray",   $TextLower)
  1148.     XuiSetGridTypeProperty (gridType, @"inputTextString",  $Command)
  1149.     XuiSetGridTypeProperty (gridType, @"redrawFlags",      $$RedrawClearBorder)
  1150.     IFZ message THEN RETURN
  1151. END SUB
  1152. END FUNCTION
  1153. '
  1154. '
  1155. ' ###############################
  1156. ' #####  MainWindowCode ()  #####
  1157. ' ###############################
  1158. '
  1159. FUNCTION  MainWindowCode (grid, message, v0, v1, v2, v3, kid, r1)
  1160. '
  1161.   $MainWindow           =   0  ' kid   0 grid type = MainWindow
  1162.   $MenuBar              =   1  ' kid   1 grid type = XuiMenu
  1163.   $HotProlog            =   2  ' kid   2 grid type = XuiPushButton
  1164.   $FileLabel            =   3  ' kid   3 grid type = XuiLabel
  1165.   $StatusLabel          =   4  ' kid   4 grid type = XuiLabel
  1166.   $HotNew               =   5  ' kid   5 grid type = XuiPushButton
  1167.   $HotLoad              =   6  ' kid   6 grid type = XuiPushButton
  1168.   $HotSave              =   7  ' kid   7 grid type = XuiPushButton
  1169.   $HotSavePlus          =   8  ' kid   8 grid type = XuiPushButton
  1170.   $HotCut               =   9  ' kid   9 grid type = XuiPushButton
  1171.   $HotCopy              =  10  ' kid  10 grid type = XuiPushButton
  1172.   $HotPaste             =  11  ' kid  11 grid type = XuiPushButton
  1173.   $HotGui               =  12  ' kid  12 grid type = XuiPushButton
  1174.   $HotAbort             =  13  ' kid  13 grid type = XuiPushButton
  1175.   $HotFind              =  14  ' kid  14 grid type = XuiPushButton
  1176.   $HotReplace           =  15  ' kid  15 grid type = XuiPushButton
  1177.   $HotBack              =  16  ' kid  16 grid type = XuiPushButton
  1178.   $HotNext              =  17  ' kid  17 grid type = XuiPushButton
  1179.   $HotPrevious          =  18  ' kid  18 grid type = XuiPushButton
  1180.   $Function             =  19  ' kid  19 grid type = XuiListButton
  1181.   $HotStart             =  20  ' kid  20 grid type = XuiPushButton
  1182.   $HotContinue          =  21  ' kid  21 grid type = XuiPushButton
  1183.   $HotPause             =  22  ' kid  22 grid type = XuiPushButton
  1184.   $HotKill              =  23  ' kid  23 grid type = XuiPushButton
  1185.   $HotToCursor          =  24  ' kid  24 grid type = XuiPushButton
  1186.   $HotStepLocal         =  25  ' kid  25 grid type = XuiPushButton
  1187.   $HotStepGlobal        =  26  ' kid  26 grid type = XuiPushButton
  1188.   $HotToggleBreakpoint  =  27  ' kid  27 grid type = XuiPushButton
  1189.   $HotClearBreakpoints  =  28  ' kid  28 grid type = XuiPushButton
  1190.   $HotVariables         =  29  ' kid  29 grid type = XuiPushButton
  1191.   $HotFrames            =  30  ' kid  30 grid type = XuiPushButton
  1192.   $HotAssembly          =  31  ' kid  31 grid type = XuiPushButton
  1193.   $HotRegisters         =  32  ' kid  32 grid type = XuiPushButton
  1194.   $HotMemory            =  33  ' kid  33 grid type = XuiPushButton
  1195.   $Command              =  34  ' kid  34 grid type = XuiDropBox
  1196.   $TextLower            =  35  ' kid  35 grid type = XuiTextArea
  1197.   $UpperKid             =  35  ' kid maximum
  1198. '
  1199.     XuiReportMessage (grid, message, v0, v1, v2, v3, kid, r1)
  1200.     IF (message = #Callback) THEN message = r1
  1201. '
  1202.     SELECT CASE message
  1203.         CASE #CloseWindow    : QUIT(0)                        ' Quit program
  1204.         CASE #Selection        : GOSUB Selection   ' Common callback message
  1205.         CASE #TextEvent        : GOSUB TextEvent   ' KeyDown in TextArea or Command
  1206.     END SELECT
  1207.     RETURN
  1208. '
  1209. '
  1210. ' *****  Selection  *****
  1211. '
  1212. SUB Selection
  1213.     SELECT CASE kid
  1214.         CASE $MainWindow           : XuiMessage ("MainWindow")
  1215.         CASE $MenuBar              : GOSUB MainMenu
  1216.         CASE $HotProlog            : XuiMessage ("HotProlog")
  1217.         CASE $FileLabel            : XuiMessage ("FileLabel")
  1218.         CASE $StatusLabel          : XuiMessage ("StatusLabel")
  1219.         CASE $HotNew               : XuiMessage ("HotNew")
  1220.         CASE $HotLoad              : XuiMessage ("HotLoad")
  1221.         CASE $HotSave              : XuiMessage ("HotSave")
  1222.         CASE $HotSavePlus          : XuiMessage ("HotSavePlus")
  1223.         CASE $HotCut               : XuiMessage ("HotCut")
  1224.         CASE $HotCopy              : XuiMessage ("HotCopy")
  1225.         CASE $HotPaste             : XuiMessage ("HotPaste")
  1226.         CASE $HotGui               : XuiMessage ("HotGui")
  1227.         CASE $HotAbort             : XuiMessage ("HotAbort")
  1228.         CASE $HotFind              : XuiMessage ("HotFind")
  1229.         CASE $HotReplace           : XuiMessage ("HotReplace")
  1230.         CASE $HotBack              : XuiMessage ("HotBack")
  1231.         CASE $HotNext              : XuiMessage ("HotNext")
  1232.         CASE $HotPrevious          : XuiMessage ("HotPrevious")
  1233.         CASE $Function             : GOSUB GetEntry : XuiMessage ("Function\n\n" + entry$)
  1234.         CASE $HotStart             : XuiMessage ("HotStart")
  1235.         CASE $HotContinue          : XuiMessage ("HotContinue")
  1236.         CASE $HotPause             : XuiMessage ("HotPause")
  1237.         CASE $HotKill              : XuiMessage ("HotKill")
  1238.         CASE $HotToCursor          : XuiMessage ("HotToCursor")
  1239.         CASE $HotStepLocal         : XuiMessage ("HotStepLocal")
  1240.         CASE $HotStepGlobal        : XuiMessage ("HotStepGlobal")
  1241.         CASE $HotToggleBreakpoint  : XuiMessage ("HotToggleBreakpoint")
  1242.         CASE $HotClearBreakpoints  : XuiMessage ("HotClearBreakpoints")
  1243.         CASE $HotVariables         : XuiMessage ("HotVariables")
  1244.         CASE $HotFrames            : XuiMessage ("HotFrames")
  1245.         CASE $HotAssembly          : XuiMessage ("HotAssembly")
  1246.         CASE $HotRegisters         : XuiMessage ("HotRegisters")
  1247.         CASE $HotMemory            : XuiMessage ("HotMemory")
  1248.         CASE $Command              : GOSUB GetEntry : XuiMessage ("Command\n\n" + entry$)
  1249.         CASE $TextLower            : XuiMessage ("TextLower")
  1250.     END SELECT
  1251. END SUB
  1252. '
  1253. '
  1254. ' *****  MainMenu  *****
  1255. '
  1256. SUB MainMenu
  1257.     XuiSendMessage (grid, #GetTextArray, 0, 0, 0, 0, kid, @text$[])
  1258.     upper = UBOUND (text$[])
  1259.     pulldown = 0
  1260.     menu = 0
  1261.     FOR i = 0 TO upper
  1262.         menu$ = text$[i]
  1263.         m$ = LTRIM$(menu$)
  1264.         IF (m$ = menu$) THEN
  1265.             INC menu
  1266.             IF (menu = v0) THEN
  1267.                 found = $$TRUE
  1268.                 EXIT FOR
  1269.             END IF
  1270.         END IF
  1271.     NEXT i
  1272.     IF found THEN
  1273.         menu$ = TRIM$ (menu$)
  1274.         entry$ = TRIM$ (text$[i+v1+1])
  1275.         XuiMessage ( "XuiMenu\n\nv0 = " + STRING$(v0) + " = \"" + menu$ + "\"\nv1 = " + STRING$(v1) + " = \"" + entry$ + "\"")
  1276.     END IF
  1277. END SUB
  1278. '
  1279. '
  1280. ' *****  GetEntry  *****
  1281. '
  1282. SUB GetEntry
  1283.     entry$ = ""
  1284.     IF (v0 < 0) THEN
  1285.         XuiSendMessage (grid, #GetTextString, 0, 0, 0, 0, kid, @entry$)
  1286.     ELSE
  1287.         XuiSendMessage (grid, #GetTextArray, 0, 0, 0, 0, kid, @text$[])
  1288.         IF (v0 > UBOUND(text$[])) THEN EXIT SUB
  1289.         entry$ = text$[v0]
  1290.     END IF
  1291. END SUB
  1292. '
  1293. '
  1294. ' *****  TextEvent  *****
  1295. '
  1296. SUB TextEvent
  1297. '    PRINT "MainWindowCode(): TextEvent: Key = "; CHR$(key)
  1298.     IF (v2 == 0x1B10001B) THEN
  1299.         SELECT CASE kid
  1300.             CASE $Command            : XuiSendMessage (grid, #SetKeyboardFocus, 0, 0, 0, 0, $TextLower, 0)
  1301.                                                     kid = -1
  1302.             CASE $TextLower        : XuiSendMessage (grid, #SetKeyboardFocus, 0, 0, 0, 0, $Command, 0)
  1303.                                                     kid = -1
  1304.         END SELECT
  1305.     END IF
  1306.     EXIT SUB
  1307. END SUB
  1308. END FUNCTION
  1309. END PROGRAM
  1310.