home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 August / PCWorld_2000-08_cd.bin / Software / TemaCD / xbasic / xbpro.exe / xb / aedit.x < prev    next >
Text File  |  1996-01-19  |  28KB  |  646 lines

  1. '
  2. ' ####################
  3. ' #####  PROLOG  #####
  4. ' ####################
  5. '
  6. PROGRAM    "aedit"
  7. VERSION    "0.0004"
  8. '
  9. IMPORT    "xma"
  10. IMPORT    "xst"
  11. IMPORT    "xgr"
  12. IMPORT    "xui"
  13. '
  14. '
  15. '    ***********************************
  16. '    *****  Application Functions  *****
  17. '    ***********************************
  18. '
  19. DECLARE  FUNCTION  Entry         ()
  20. INTERNAL FUNCTION  InitGui       ()
  21. INTERNAL FUNCTION  InitProgram   ()
  22. INTERNAL FUNCTION  CreateWindows ()
  23. INTERNAL FUNCTION  Test          (grid, message, v0, v1, v2, v3, r0, ANY)
  24. INTERNAL FUNCTION  TestCode      (grid, message, v0, v1, v2, v3, kid, ANY)
  25. '
  26. '
  27. ' ######################
  28. ' #####  Entry ()  #####
  29. ' ######################
  30. '
  31. FUNCTION  Entry ()
  32.     SHARED  terminateProgram
  33.     STATIC    entry
  34. '
  35.     IF entry THEN RETURN
  36.     entry =  $$TRUE
  37. '
  38.     InitGui ()                                        ' initialize messages
  39.     InitProgram ()                                ' initialize this program
  40.     CreateWindows ()                            ' create main window and others
  41. '
  42.     DO                                                        ' the message loop
  43.         XgrProcessMessages (1)            ' process one message
  44.     LOOP UNTIL terminateProgram        ' and repeats until program is terminated
  45. END FUNCTION
  46. '
  47. '
  48. ' ########################
  49. ' #####  InitGui ()  #####
  50. ' ########################
  51. '
  52. ' InitGui() initializes cursor, icon, message, and display variables.
  53. ' Programs can reference these variables, but must never change them.
  54. '
  55. FUNCTION  InitGui ()
  56. '
  57. ' ***************************************
  58. ' *****  Register Standard Cursors  *****
  59. ' ***************************************
  60. '
  61.     XgrRegisterCursor (@"arrow",            @#defaultCursor)
  62.     XgrRegisterCursor (@"arrow",            @#cursorDefault)
  63.     XgrRegisterCursor (@"arrow",            @#cursorArrow)
  64.     XgrRegisterCursor (@"arrow",            @#cursorArrowNW)
  65.     XgrRegisterCursor (@"n",                    @#cursorArrowN)
  66.     XgrRegisterCursor (@"ns",                    @#cursorArrowsNS)
  67.     XgrRegisterCursor (@"we",                    @#cursorArrowsWE)
  68.     XgrRegisterCursor (@"nwse",                @#cursorArrowsNWSE)
  69.     XgrRegisterCursor (@"nesw",                @#cursorArrowsNESW)
  70.     XgrRegisterCursor (@"all",                @#cursorArrowsAll)
  71.     XgrRegisterCursor (@"crosshair",    @#cursorCrosshair)
  72.     XgrRegisterCursor (@"plus",                @#cursorPlus)
  73.     XgrRegisterCursor (@"wait",                @#cursorHourglass)
  74.     XgrRegisterCursor (@"insert",            @#cursorInsert)
  75.     XgrRegisterCursor (@"no",                    @#cursorNo)
  76. '
  77. '
  78. ' ********************************************
  79. ' *****  Register Standard Window Icons  *****
  80. ' ********************************************
  81. '
  82.     XgrRegisterIcon (@"hand",                    @#iconHand)
  83.     XgrRegisterIcon (@"asterisk",            @#iconAsterisk)
  84.     XgrRegisterIcon (@"question",            @#iconQuestion)
  85.     XgrRegisterIcon (@"exclamation",    @#iconExclamation)
  86.     XgrRegisterIcon (@"application",    @#iconApplication)
  87. '
  88.     XgrRegisterIcon (@"hand",                    @#iconStop)                        ' alias
  89.     XgrRegisterIcon (@"asterisk",            @#iconInformation)        ' alias
  90.     XgrRegisterIcon (@"application",  @#iconBlank)                    ' alias
  91. '
  92.     XgrRegisterIcon (@"window",                @#iconWindow)                    ' custom
  93. '
  94. '
  95. ' ******************************
  96. ' *****  Register Messages *****  Create message numbers for message names
  97. ' ******************************
  98. '
  99.     XgrRegisterMessage (@"Blowback",                                        @#Blowback)
  100.     XgrRegisterMessage (@"Callback",                                        @#Callback)
  101.     XgrRegisterMessage (@"Cancel",                                            @#Cancel)
  102.     XgrRegisterMessage (@"Change",                                            @#Change)
  103.     XgrRegisterMessage (@"CloseWindow",                                    @#CloseWindow)
  104.     XgrRegisterMessage (@"ContextChange",                                @#ContextChange)
  105.     XgrRegisterMessage (@"Create",                                            @#Create)
  106.     XgrRegisterMessage (@"CreateValueArray",                        @#CreateValueArray)
  107.     XgrRegisterMessage (@"CreateWindow",                                @#CreateWindow)
  108.     XgrRegisterMessage (@"CursorH",                                            @#CursorH)
  109.     XgrRegisterMessage (@"CursorV",                                            @#CursorV)
  110.     XgrRegisterMessage (@"Deselected",                                    @#Deselected)
  111.     XgrRegisterMessage (@"Destroy",                                            @#Destroy)
  112.     XgrRegisterMessage (@"Destroyed",                                        @#Destroyed)
  113.     XgrRegisterMessage (@"DestroyWindow",                                @#DestroyWindow)
  114.     XgrRegisterMessage (@"Disable",                                            @#Disable)
  115.     XgrRegisterMessage (@"Disabled",                                        @#Disabled)
  116.     XgrRegisterMessage (@"Displayed",                                        @#Displayed)
  117.     XgrRegisterMessage (@"DisplayWindow",                                @#DisplayWindow)
  118.     XgrRegisterMessage (@"Enable",                                            @#Enable)
  119.     XgrRegisterMessage (@"Enabled",                                            @#Enabled)
  120.     XgrRegisterMessage (@"Enter",                                                @#Enter)
  121.     XgrRegisterMessage (@"ExitMessageLoop",                            @#ExitMessageLoop)
  122.     XgrRegisterMessage (@"Find",                                                @#Find)
  123.     XgrRegisterMessage (@"FindForward",                                    @#FindForward)
  124.     XgrRegisterMessage (@"FindReverse",                                    @#FindReverse)
  125.     XgrRegisterMessage (@"Forward",                                            @#Forward)
  126.     XgrRegisterMessage (@"GetAlign",                                        @#GetAlign)
  127.     XgrRegisterMessage (@"GetBorder",                                        @#GetBorder)
  128.     XgrRegisterMessage (@"GetBorderOffset",                            @#GetBorderOffset)
  129.     XgrRegisterMessage (@"GetCallback",                                    @#GetCallback)
  130.     XgrRegisterMessage (@"GetCallbackArgs",                            @#GetCallbackArgs)
  131.     XgrRegisterMessage (@"GetCan",                                            @#GetCan)
  132.     XgrRegisterMessage (@"GetCharacterMapArray",                @#GetCharacterMapArray)
  133.     XgrRegisterMessage (@"GetClipGrid",                                    @#GetClipGrid)
  134.     XgrRegisterMessage (@"GetColor",                                        @#GetColor)
  135.     XgrRegisterMessage (@"GetColorExtra",                                @#GetColorExtra)
  136.     XgrRegisterMessage (@"GetCursor",                                        @#GetCursor)
  137.     XgrRegisterMessage (@"GetCursorXY",                                    @#GetCursorXY)
  138.     XgrRegisterMessage (@"GetDisplay",                                    @#GetDisplay)
  139.     XgrRegisterMessage (@"GetEnclosedGrids",                        @#GetEnclosedGrids)
  140.     XgrRegisterMessage (@"GetEnclosingGrid",                        @#GetEnclosingGrid)
  141.     XgrRegisterMessage (@"GetFocusColor",                                @#GetFocusColor)
  142.     XgrRegisterMessage (@"GetFocusColorExtra",                    @#GetFocusColorExtra)
  143.     XgrRegisterMessage (@"GetFont",                                            @#GetFont)
  144.     XgrRegisterMessage (@"GetFontNumber",                                @#GetFontNumber)
  145.     XgrRegisterMessage (@"GetGridFunction",                            @#GetGridFunction)
  146.     XgrRegisterMessage (@"GetGridFunctionName",                    @#GetGridFunctionName)
  147.     XgrRegisterMessage (@"GetGridName",                                    @#GetGridName)
  148.     XgrRegisterMessage (@"GetGridNumber",                                @#GetGridNumber)
  149.     XgrRegisterMessage (@"GetGridType",                                    @#GetGridType)
  150.     XgrRegisterMessage (@"GetGridTypeName",                            @#GetGridTypeName)
  151.     XgrRegisterMessage (@"GetGroup",                                        @#GetGroup)
  152.     XgrRegisterMessage (@"GetHelp",                                            @#GetHelp)
  153.     XgrRegisterMessage (@"GetHelpFile",                                    @#GetHelpFile)
  154.     XgrRegisterMessage (@"GetHelpString",                                @#GetHelpString)
  155.     XgrRegisterMessage (@"GetHelpStrings",                            @#GetHelpStrings)
  156.     XgrRegisterMessage (@"GetHintString",                                @#GetHintString)
  157.     XgrRegisterMessage (@"GetImage",                                        @#GetImage)
  158.     XgrRegisterMessage (@"GetImageCoords",                            @#GetImageCoords)
  159.     XgrRegisterMessage (@"GetIndent",                                        @#GetIndent)
  160.     XgrRegisterMessage (@"GetInfo",                                            @#GetInfo)
  161.     XgrRegisterMessage (@"GetJustify",                                    @#GetJustify)
  162.     XgrRegisterMessage (@"GetKeyboardFocus",                        @#GetKeyboardFocus)
  163.     XgrRegisterMessage (@"GetKeyboardFocusGrid",                @#GetKeyboardFocusGrid)
  164.     XgrRegisterMessage (@"GetKidNumber",                                @#GetKidNumber)
  165.     XgrRegisterMessage (@"GetKids",                                            @#GetKids)
  166.     XgrRegisterMessage (@"GetKidArray",                                    @#GetKidArray)
  167.     XgrRegisterMessage (@"GetKind",                                            @#GetKind)
  168.     XgrRegisterMessage (@"GetMaxMinSize",                                @#GetMaxMinSize)
  169.     XgrRegisterMessage (@"GetMessageFunc",                            @#GetMessageFunc)
  170.     XgrRegisterMessage (@"GetMessageFuncArray",                    @#GetMessageFuncArray)
  171.     XgrRegisterMessage (@"GetMessageSub",                                @#GetMessageSub)
  172.     XgrRegisterMessage (@"GetMessageSubArray",                    @#GetMessageSubArray)
  173.     XgrRegisterMessage (@"GetModalInfo",                                @#GetModalInfo)
  174.     XgrRegisterMessage (@"GetModalWindow",                            @#GetModalWindow)
  175.     XgrRegisterMessage (@"GetParent",                                        @#GetParent)
  176.     XgrRegisterMessage (@"GetPosition",                                    @#GetPosition)
  177.     XgrRegisterMessage (@"GetProtoInfo",                                @#GetProtoInfo)
  178.     XgrRegisterMessage (@"GetRedrawFlags",                            @#GetRedrawFlags)
  179.     XgrRegisterMessage (@"GetSize",                                            @#GetSize)
  180.     XgrRegisterMessage (@"GetSmallestSize",                            @#GetSmallestSize)
  181.     XgrRegisterMessage (@"GetState",                                        @#GetState)
  182.     XgrRegisterMessage (@"GetStyle",                                        @#GetStyle)
  183.     XgrRegisterMessage (@"GetTabArray",                                    @#GetTabArray)
  184.     XgrRegisterMessage (@"GetTabWidth",                                    @#GetTabWidth)
  185.     XgrRegisterMessage (@"GetTextArray",                                @#GetTextArray)
  186.     XgrRegisterMessage (@"GetTextArrayBounds",                    @#GetTextArrayBounds)
  187.     XgrRegisterMessage (@"GetTextArrayLine",                        @#GetTextArrayLine)
  188.     XgrRegisterMessage (@"GetTextArrayLines",                        @#GetTextArrayLines)
  189.     XgrRegisterMessage (@"GetTextCursor",                                @#GetTextCursor)
  190.     XgrRegisterMessage (@"GetTextFilename",                            @#GetTextFilename)
  191.     XgrRegisterMessage (@"GetTextPosition",                            @#GetTextPosition)
  192.     XgrRegisterMessage (@"GetTextSelection",                        @#GetTextSelection)
  193.     XgrRegisterMessage (@"GetTextString",                                @#GetTextString)
  194.     XgrRegisterMessage (@"GetTextStrings",                            @#GetTextStrings)
  195.     XgrRegisterMessage (@"GetTexture",                                    @#GetTexture)
  196.     XgrRegisterMessage (@"GetTimer",                                        @#GetTimer)
  197.     XgrRegisterMessage (@"GetValue",                                        @#GetValue)
  198.     XgrRegisterMessage (@"GetValues",                                        @#GetValues)
  199.     XgrRegisterMessage (@"GetValueArray",                                @#GetValueArray)
  200.     XgrRegisterMessage (@"GetWindow",                                        @#GetWindow)
  201.     XgrRegisterMessage (@"GetWindowFunction",                        @#GetWindowFunction)
  202.     XgrRegisterMessage (@"GetWindowGrid",                                @#GetWindowGrid)
  203.     XgrRegisterMessage (@"GetWindowIcon",                                @#GetWindowIcon)
  204.     XgrRegisterMessage (@"GetWindowSize",                                @#GetWindowSize)
  205.     XgrRegisterMessage (@"GetWindowTitle",                            @#GetWindowTitle)
  206.     XgrRegisterMessage (@"GotKeyboardFocus",                        @#GotKeyboardFocus)
  207.     XgrRegisterMessage (@"GrabArray",                                        @#GrabArray)
  208.     XgrRegisterMessage (@"GrabTextArray",                                @#GrabTextArray)
  209.     XgrRegisterMessage (@"GrabTextString",                            @#GrabTextString)
  210.     XgrRegisterMessage (@"GrabValueArray",                            @#GrabValueArray)
  211.     XgrRegisterMessage (@"Help",                                                @#Help)
  212.     XgrRegisterMessage (@"Hidden",                                            @#Hidden)
  213.     XgrRegisterMessage (@"HideTextCursor",                            @#HideTextCursor)
  214.     XgrRegisterMessage (@"HideWindow",                                    @#HideWindow)
  215.     XgrRegisterMessage (@"Initialize",                                    @#Initialize)
  216.     XgrRegisterMessage (@"Initialized",                                    @#Initialized)
  217.     XgrRegisterMessage (@"Inline",                                            @#Inline)
  218.     XgrRegisterMessage (@"InquireText",                                    @#InquireText)
  219.     XgrRegisterMessage (@"KeyboardFocusBackward",                @#KeyboardFocusBackward)
  220.     XgrRegisterMessage (@"KeyboardFocusForward",                @#KeyboardFocusForward)
  221.     XgrRegisterMessage (@"KeyDown",                                            @#KeyDown)
  222.     XgrRegisterMessage (@"KeyUp",                                                @#KeyUp)
  223.     XgrRegisterMessage (@"LostKeyboardFocus",                        @#LostKeyboardFocus)
  224.     XgrRegisterMessage (@"LostTextSelection",                        @#LostTextSelection)
  225.     XgrRegisterMessage (@"Maximized",                                        @#Maximized)
  226.     XgrRegisterMessage (@"MaximizeWindow",                            @#MaximizeWindow)
  227.     XgrRegisterMessage (@"Maximum",                                            @#Maximum)
  228.     XgrRegisterMessage (@"Minimized",                                        @#Minimized)
  229.     XgrRegisterMessage (@"MinimizeWindow",                            @#MinimizeWindow)
  230.     XgrRegisterMessage (@"Minimum",                                            @#Minimum)
  231.     XgrRegisterMessage (@"MonitorContext",                            @#MonitorContext)
  232.     XgrRegisterMessage (@"MonitorHelp",                                    @#MonitorHelp)
  233.     XgrRegisterMessage (@"MonitorKeyboard",                            @#MonitorKeyboard)
  234.     XgrRegisterMessage (@"MonitorMouse",                                @#MonitorMouse)
  235.     XgrRegisterMessage (@"MouseDown",                                        @#MouseDown)
  236.     XgrRegisterMessage (@"MouseDrag",                                        @#MouseDrag)
  237.     XgrRegisterMessage (@"MouseEnter",                                    @#MouseEnter)
  238.     XgrRegisterMessage (@"MouseExit",                                        @#MouseExit)
  239.     XgrRegisterMessage (@"MouseMove",                                        @#MouseMove)
  240.     XgrRegisterMessage (@"MouseUp",                                            @#MouseUp)
  241.     XgrRegisterMessage (@"MuchLess",                                        @#MuchLess)
  242.     XgrRegisterMessage (@"MuchMore",                                        @#MuchMore)
  243.     XgrRegisterMessage (@"OneLess",                                            @#OneLess)
  244.     XgrRegisterMessage (@"OneMore",                                            @#OneMore)
  245.     XgrRegisterMessage (@"PokeArray",                                        @#PokeArray)
  246.     XgrRegisterMessage (@"PokeTextArray",                                @#PokeTextArray)
  247.     XgrRegisterMessage (@"PokeTextString",                            @#PokeTextString)
  248.     XgrRegisterMessage (@"PokeValueArray",                            @#PokeValueArray)
  249.     XgrRegisterMessage (@"Print",                                                @#Print)
  250.     XgrRegisterMessage (@"Redraw",                                            @#Redraw)
  251.     XgrRegisterMessage (@"RedrawGrid",                                    @#RedrawGrid)
  252.     XgrRegisterMessage (@"RedrawLines",                                    @#RedrawLines)
  253.     XgrRegisterMessage (@"RedrawText",                                    @#RedrawText)
  254.     XgrRegisterMessage (@"RedrawWindow",                                @#RedrawWindow)
  255.     XgrRegisterMessage (@"Replace",                                            @#Replace)
  256.     XgrRegisterMessage (@"ReplaceForward",                            @#ReplaceForward)
  257.     XgrRegisterMessage (@"ReplaceReverse",                            @#ReplaceReverse)
  258.     XgrRegisterMessage (@"Reset",                                                @#Reset)
  259.     XgrRegisterMessage (@"Resize",                                            @#Resize)
  260.     XgrRegisterMessage (@"Resized",                                            @#Resized)
  261.     XgrRegisterMessage (@"ResizeNot",                                        @#ResizeNot)
  262.     XgrRegisterMessage (@"ResizeWindow",                                @#ResizeWindow)
  263.     XgrRegisterMessage (@"ResizeWindowToGrid",                    @#ResizeWindowToGrid)
  264.     XgrRegisterMessage (@"Resized",                                            @#Resized)
  265.     XgrRegisterMessage (@"Reverse",                                            @#Reverse)
  266.     XgrRegisterMessage (@"ScrollH",                                            @#ScrollH)
  267.     XgrRegisterMessage (@"ScrollV",                                            @#ScrollV)
  268.     XgrRegisterMessage (@"Select",                                            @#Select)
  269.     XgrRegisterMessage (@"Selected",                                        @#Selected)
  270.     XgrRegisterMessage (@"Selection",                                        @#Selection)
  271.     XgrRegisterMessage (@"SelectWindow",                                @#SelectWindow)
  272.     XgrRegisterMessage (@"SetAlign",                                        @#SetAlign)
  273.     XgrRegisterMessage (@"SetBorder",                                        @#SetBorder)
  274.     XgrRegisterMessage (@"SetBorderOffset",                            @#SetBorderOffset)
  275.     XgrRegisterMessage (@"SetCallback",                                    @#SetCallback)
  276.     XgrRegisterMessage (@"SetCan",                                            @#SetCan)
  277.     XgrRegisterMessage (@"SetCharacterMapArray",                @#SetCharacterMapArray)
  278.     XgrRegisterMessage (@"SetClipGrid",                                    @#SetClipGrid)
  279.     XgrRegisterMessage (@"SetColor",                                        @#SetColor)
  280.     XgrRegisterMessage (@"SetColorAll",                                    @#SetColorAll)
  281.     XgrRegisterMessage (@"SetColorExtra",                                @#SetColorExtra)
  282.     XgrRegisterMessage (@"SetColorExtraAll",                        @#SetColorExtraAll)
  283.     XgrRegisterMessage (@"SetCursor",                                        @#SetCursor)
  284.     XgrRegisterMessage (@"SetCursorXY",                                    @#SetCursorXY)
  285.     XgrRegisterMessage (@"SetDisplay",                                    @#SetDisplay)
  286.     XgrRegisterMessage (@"SetFocusColor",                                @#SetFocusColor)
  287.     XgrRegisterMessage (@"SetFocusColorExtra",                    @#SetFocusColorExtra)
  288.     XgrRegisterMessage (@"SetFont",                                            @#SetFont)
  289.     XgrRegisterMessage (@"SetFontNumber",                                @#SetFontNumber)
  290.     XgrRegisterMessage (@"SetGridFunction",                            @#SetGridFunction)
  291.     XgrRegisterMessage (@"SetGridFunctionName",                    @#SetGridFunctionName)
  292.     XgrRegisterMessage (@"SetGridName",                                    @#SetGridName)
  293.     XgrRegisterMessage (@"SetGridType",                                    @#SetGridType)
  294.     XgrRegisterMessage (@"SetGridTypeName",                            @#SetGridTypeName)
  295.     XgrRegisterMessage (@"SetGroup",                                        @#SetGroup)
  296.     XgrRegisterMessage (@"SetHelp",                                            @#SetHelp)
  297.     XgrRegisterMessage (@"SetHelpFile",                                    @#SetHelpFile)
  298.     XgrRegisterMessage (@"SetHelpString",                                @#SetHelpString)
  299.     XgrRegisterMessage (@"SetHelpStrings",                            @#SetHelpStrings)
  300.     XgrRegisterMessage (@"SetHintString",                                @#SetHintString)
  301.     XgrRegisterMessage (@"SetImage",                                        @#SetImage)
  302.     XgrRegisterMessage (@"SetImageCoords",                            @#SetImageCoords)
  303.     XgrRegisterMessage (@"SetIndent",                                        @#SetIndent)
  304.     XgrRegisterMessage (@"SetInfo",                                            @#SetInfo)
  305.     XgrRegisterMessage (@"SetJustify",                                    @#SetJustify)
  306.     XgrRegisterMessage (@"SetKeyboardFocus",                        @#SetKeyboardFocus)
  307.     XgrRegisterMessage (@"SetKeyboardFocusGrid",                @#SetKeyboardFocusGrid)
  308.     XgrRegisterMessage (@"SetMaxMinSize",                                @#SetMaxMinSize)
  309.     XgrRegisterMessage (@"SetMessageFunc",                            @#SetMessageFunc)
  310.     XgrRegisterMessage (@"SetMessageFuncArray",                    @#SetMessageFuncArray)
  311.     XgrRegisterMessage (@"SetMessageSub",                                @#SetMessageSub)
  312.     XgrRegisterMessage (@"SetMessageSubArray",                    @#SetMessageSubArray)
  313.     XgrRegisterMessage (@"SetModalWindow",                            @#SetModalWindow)
  314.     XgrRegisterMessage (@"SetParent",                                        @#SetParent)
  315.     XgrRegisterMessage (@"SetPosition",                                    @#SetPosition)
  316.     XgrRegisterMessage (@"SetRedrawFlags",                            @#SetRedrawFlags)
  317.     XgrRegisterMessage (@"SetSize",                                            @#SetSize)
  318.     XgrRegisterMessage (@"SetState",                                        @#SetState)
  319.     XgrRegisterMessage (@"SetStyle",                                        @#SetStyle)
  320.     XgrRegisterMessage (@"SetTabArray",                                    @#SetTabArray)
  321.     XgrRegisterMessage (@"SetTabWidth",                                    @#SetTabWidth)
  322.     XgrRegisterMessage (@"SetTextArray",                                @#SetTextArray)
  323.     XgrRegisterMessage (@"SetTextArrayLine",                        @#SetTextArrayLine)
  324.     XgrRegisterMessage (@"SetTextArrayLines",                        @#SetTextArrayLines)
  325.     XgrRegisterMessage (@"SetTextCursor",                                @#SetTextCursor)
  326.     XgrRegisterMessage (@"SetTextFilename",                            @#SetTextFilename)
  327.     XgrRegisterMessage (@"SetTextSelection",                        @#SetTextSelection)
  328.     XgrRegisterMessage (@"SetTextString",                                @#SetTextString)
  329.     XgrRegisterMessage (@"SetTextStrings",                            @#SetTextStrings)
  330.     XgrRegisterMessage (@"SetTexture",                                    @#SetTexture)
  331.     XgrRegisterMessage (@"SetTimer",                                        @#SetTimer)
  332.     XgrRegisterMessage (@"SetValue",                                        @#SetValue)
  333.     XgrRegisterMessage (@"SetValues",                                        @#SetValues)
  334.     XgrRegisterMessage (@"SetValueArray",                                @#SetValueArray)
  335.     XgrRegisterMessage (@"SetWindowFunction",                        @#SetWindowFunction)
  336.     XgrRegisterMessage (@"SetWindowIcon",                                @#SetWindowIcon)
  337.     XgrRegisterMessage (@"SetWindowTitle",                            @#SetWindowTitle)
  338.     XgrRegisterMessage (@"ShowTextCursor",                            @#ShowTextCursor)
  339.     XgrRegisterMessage (@"ShowWindow",                                    @#ShowWindow)
  340.     XgrRegisterMessage (@"SomeLess",                                        @#SomeLess)
  341.     XgrRegisterMessage (@"SomeMore",                                        @#SomeMore)
  342.     XgrRegisterMessage (@"StartTimer",                                    @#StartTimer)
  343.     XgrRegisterMessage (@"SystemMessage",                                @#SystemMessage)
  344.     XgrRegisterMessage (@"TextDelete",                                    @#TextDelete)
  345.     XgrRegisterMessage (@"TextEvent",                                        @#TextEvent)
  346.     XgrRegisterMessage (@"TextInsert",                                    @#TextInsert)
  347.     XgrRegisterMessage (@"TextModified",                                @#TextModified)
  348.     XgrRegisterMessage (@"TextReplace",                                    @#TextReplace)
  349.     XgrRegisterMessage (@"TimeOut",                                            @#TimeOut)
  350.     XgrRegisterMessage (@"Update",                                            @#Update)
  351.     XgrRegisterMessage (@"WindowClose",                                    @#WindowClose)
  352.     XgrRegisterMessage (@"WindowCreate",                                @#WindowCreate)
  353.     XgrRegisterMessage (@"WindowDeselected",                        @#WindowDeselected)
  354.     XgrRegisterMessage (@"WindowDestroy",                                @#WindowDestroy)
  355.     XgrRegisterMessage (@"WindowDestroyed",                            @#WindowDestroyed)
  356.     XgrRegisterMessage (@"WindowDisplay",                                @#WindowDisplay)
  357.     XgrRegisterMessage (@"WindowDisplayed",                            @#WindowDisplayed)
  358.     XgrRegisterMessage (@"WindowGetDisplay",                        @#WindowGetDisplay)
  359.     XgrRegisterMessage (@"WindowGetFunction",                        @#WindowGetFunction)
  360.     XgrRegisterMessage (@"WindowGetIcon",                                @#WindowGetIcon)
  361.     XgrRegisterMessage (@"WindowGetKeyboardFocusGrid",    @#WindowGetKeyboardFocusGrid)
  362.     XgrRegisterMessage (@"WindowGetSelectedWindow",            @#WindowGetSelectedWindow)
  363.     XgrRegisterMessage (@"WindowGetSize",                                @#WindowGetSize)
  364.     XgrRegisterMessage (@"WindowGetTitle",                            @#WindowGetTitle)
  365.     XgrRegisterMessage (@"WindowHelp",                                    @#WindowHelp)
  366.     XgrRegisterMessage (@"WindowHide",                                    @#WindowHide)
  367.     XgrRegisterMessage (@"WindowHidden",                                @#WindowHidden)
  368.     XgrRegisterMessage (@"WindowKeyDown",                                @#WindowKeyDown)
  369.     XgrRegisterMessage (@"WindowKeyUp",                                    @#WindowKeyUp)
  370.     XgrRegisterMessage (@"WindowMaximize",                            @#WindowMaximize)
  371.     XgrRegisterMessage (@"WindowMaximized",                            @#WindowMaximized)
  372.     XgrRegisterMessage (@"WindowMinimize",                            @#WindowMinimize)
  373.     XgrRegisterMessage (@"WindowMinimized",                            @#WindowMinimized)
  374.     XgrRegisterMessage (@"WindowMonitorContext",                @#WindowMonitorContext)
  375.     XgrRegisterMessage (@"WindowMonitorHelp",                        @#WindowMonitorHelp)
  376.     XgrRegisterMessage (@"WindowMonitorKeyboard",                @#WindowMonitorKeyboard)
  377.     XgrRegisterMessage (@"WindowMonitorMouse",                    @#WindowMonitorMouse)
  378.     XgrRegisterMessage (@"WindowMouseDown",                            @#WindowMouseDown)
  379.     XgrRegisterMessage (@"WindowMouseDrag",                            @#WindowMouseDrag)
  380.     XgrRegisterMessage (@"WindowMouseEnter",                        @#WindowMouseEnter)
  381.     XgrRegisterMessage (@"WindowMouseExit",                            @#WindowMouseExit)
  382.     XgrRegisterMessage (@"WindowMouseMove",                            @#WindowMouseMove)
  383.     XgrRegisterMessage (@"WindowMouseUp",                                @#WindowMouseUp)
  384.     XgrRegisterMessage (@"WindowRedraw",                                @#WindowRedraw)
  385.     XgrRegisterMessage (@"WindowRegister",                            @#WindowRegister)
  386.     XgrRegisterMessage (@"WindowResize",                                @#WindowResize)
  387.     XgrRegisterMessage (@"WindowResized",                                @#WindowResized)
  388.     XgrRegisterMessage (@"WindowResizeToGrid",                    @#WindowResizeToGrid)
  389.     XgrRegisterMessage (@"WindowSelect",                                @#WindowSelect)
  390.     XgrRegisterMessage (@"WindowSelected",                            @#WindowSelected)
  391.     XgrRegisterMessage (@"WindowSetFunction",                        @#WindowSetFunction)
  392.     XgrRegisterMessage (@"WindowSetIcon",                                @#WindowSetIcon)
  393.     XgrRegisterMessage (@"WindowSetKeyboardFocusGrid",    @#WindowSetKeyboardFocusGrid)
  394.     XgrRegisterMessage (@"WindowSetTitle",                            @#WindowSetTitle)
  395.     XgrRegisterMessage (@"WindowShow",                                    @#WindowShow)
  396.     XgrRegisterMessage (@"WindowSystemMessage",                    @#WindowSystemMessage)
  397.     XgrRegisterMessage (@"LastMessage",                                    @#LastMessage)
  398. '
  399.     XgrGetDisplaySize ("", @#displayWidth, @#displayHeight, @#windowBorderWidth, @#windowTitleHeight)
  400. END FUNCTION
  401. '
  402. '
  403. ' ############################
  404. ' #####  InitProgram ()  #####
  405. ' ############################
  406. '
  407. FUNCTION  InitProgram ()
  408. '        Initialize everything your program needs to initialize
  409. END FUNCTION
  410. '
  411. '
  412. ' ##############################
  413. ' #####  CreateWindows ()  #####
  414. ' ##############################
  415. '
  416. FUNCTION  CreateWindows ()
  417. '
  418.   Test          (@Test, #CreateWindow, 0, 0, 0, 0, 0, 0)
  419.   XuiSendMessage (Test, #SetCallback, Test, &TestCode(), -1, -1, -1, 0)
  420.   XuiSendMessage (Test, #DisplayWindow, 0, 0, 0, 0, 0, 0)
  421. END FUNCTION
  422. '
  423. '
  424. ' #####################
  425. ' #####  Test ()  #####
  426. ' #####################
  427. '
  428. FUNCTION  Test (grid, message, v0, v1, v2, v3, r0, (r1, r1$, r1[], r1$[]))
  429.   STATIC    designX,  designY,  designWidth,  designHeight
  430.   STATIC    SUBADDR  sub[]
  431.   STATIC    upperMessage
  432.   STATIC    Test
  433. '
  434.   $Test      =  0  ' kid  0 grid type = Test
  435.   $MainMenu  =  1  ' kid  1 grid type = XuiMenu
  436.   $TextArea  =  2  ' kid  2 grid type = XuiTextArea
  437.   $UpperKid  =  2  ' kid maximum
  438. '
  439.   IFZ sub[] THEN GOSUB Initialize
  440. '    XuiReportMessage (grid, message, v0, v1, v2, v3, r0, r1)
  441.   IF XuiProcessMessage (grid, message, @v0, @v1, @v2, @v3, @r0, @r1, Test) THEN RETURN
  442.   IF (message <= upperMessage) THEN GOSUB @sub[message]
  443.   RETURN
  444. '
  445. '
  446. ' *****  Callback  *****  message = Callback : r1 = original message
  447. '
  448. SUB Callback
  449.   message = r1
  450.   IF (message <= upperMessage) THEN GOSUB @sub[message]
  451. END SUB
  452. '
  453. '
  454. ' *****  Create  *****  v0123 = xywh : r0 = window : r1 = parent
  455. '
  456. SUB Create
  457.   IF (v0 <= 0) THEN v0 = 0
  458.   IF (v1 <= 0) THEN v1 = 0
  459.   IF (v2 <= 0) THEN v2 = designWidth
  460.   IF (v3 <= 0) THEN v3 = designHeight
  461.   DIM text$[7]
  462.   text$[0] = "_File  "
  463.   text$[1] = " _Load"
  464.     text$[2] = " _Save"
  465.     text$[3] = " _Quit"
  466.     text$[4] = "_Help"
  467.   text$[5] = " _Contents"
  468.     text$[6] = " _Summary"
  469.     text$[7] = " _Index"
  470.   XuiCreateGrid (@grid, Test, @v0, @v1, @v2, @v3, r0, r1, &Test())
  471.   XuiMenu       (@g, #Create, 4, 4, 316, 24, r0, grid)
  472.   XuiSendMessage (g, #SetCallback, grid, &Test(), -1, -1, $MainMenu, grid)
  473.   XuiSendMessage (g, #SetGridName, 0, 0, 0, 0, 0, @"MainMenu")
  474.   XuiSendMessage (g, #SetTextArray, 0, 0, 0, 0, 0, @text$[])
  475.     DIM tab[7]
  476.     tab[0] = 19
  477.     tab[1] = 30
  478.     tab[2] = 58
  479.     tab[3] = 77
  480.     tab[4] = 107
  481.     tab[5] = 133
  482.     tab[6] = 177
  483.     tab[7] = 209
  484.     DIM text$[3]
  485.     text$[0] = "***** Try Some Wierd Tabs *****"
  486.     text$[1] = "012345678901234567890123456789"
  487.     text$[2] = ".\t.\t.\t.\t.\t.\t.\t.\t.\t.\t.\t"
  488.     text$[3] = "tabs=19,30,58,77,107,133,177,209"
  489.   XuiTextArea   (@g, #Create, 4, 28, 316, 228, r0, grid)
  490.   XuiSendMessage (g, #SetCallback, grid, &Test(), -1, -1, $TextArea, grid)
  491.   XuiSendMessage (g, #SetGridName, 0, 0, 0, 0, 0, @"TextArea")
  492.   XuiSendMessage (g, #SetGridName, 0, 0, 0, 0, 1, @"TextScrollH")
  493.   XuiSendMessage (g, #SetGridName, 0, 0, 0, 0, 2, @"TextScrollV")
  494.     XuiSendMessage (g, #SetTextArray, 0, 0, 0, 0, 0, @text$[])
  495.     XuiSendMessage (g, #SetTabArray, 0, 0, 0, 0, 0, @tab[])
  496.   GOSUB Resize
  497. END SUB
  498. '
  499. '
  500. ' *****  CreateWindow  *****  v0123 = xywh : r0 = windowType : r1$ = display$
  501. '
  502. SUB CreateWindow
  503.   IF (v0  = 0) THEN v0 = designX
  504.   IF (v1  = 0) THEN v1 = designY
  505.   IF (v2 <= 0) THEN v2 = designWidth
  506.   IF (v3 <= 0) THEN v3 = designHeight
  507.   XuiWindow (@window, #WindowCreate, v0, v1, v2, v3, r0, @r1$)
  508.   v0 = 0 : v1 = 0 : r0 = window : ATTACH r1$ TO display$
  509.   GOSUB Create
  510.     r1 = 0 : ATTACH display$ TO r1$
  511.   XuiWindow (window, #WindowRegister, grid, -1, v2, v3, @r0, @"Test")
  512. END SUB
  513. '
  514. '
  515. ' *****  GetSmallestSize  *****
  516. '
  517. SUB GetSmallestSize
  518. END SUB
  519. '
  520. '
  521. ' *****  Resize  *****
  522. '
  523. SUB Resize
  524. END SUB
  525. '
  526. '
  527. ' *****  Selection  *****
  528. '
  529. SUB Selection
  530.     SELECT CASE r0
  531.         CASE $MainMenu
  532.         CASE $TextArea
  533.     END SELECT
  534. END SUB
  535. '
  536. '
  537. ' *****  Initialize  *****
  538. '
  539. SUB Initialize
  540.   XuiGetDefaultMessageFuncArray (@func[])
  541.   XgrMessageNameToNumber (@"LastMessage", @upperMessage)
  542. '
  543.   func[#Callback]            = &XuiCallback()
  544.   func[#Resize]              = &XuiResizeNot()
  545. '
  546.   DIM sub[upperMessage]
  547.   sub[#Create]               = SUBADDRESS (Create)
  548.   sub[#CreateWindow]         = SUBADDRESS (CreateWindow)
  549. '
  550.     IF sub[0] THEN PRINT "Test(): Initialize: Error::: (Undefined Message)"
  551.     IF func[0] THEN PRINT "Test(): Initialize: Error::: (Undefined Message)"
  552.     XuiRegisterGridType (@Test, @"Test", &Test(), @func[], @sub[])
  553. '
  554.   designX = 471
  555.   designY = 23
  556.   designWidth = 324
  557.   designHeight = 260
  558. '
  559.     gridType = Test
  560.     XuiSetGridTypeValue (gridType, @"x",               designX)
  561.     XuiSetGridTypeValue (gridType, @"y",               designY)
  562.     XuiSetGridTypeValue (gridType, @"width",           designWidth)
  563.     XuiSetGridTypeValue (gridType, @"height",          designHeight)
  564.     XuiSetGridTypeValue (gridType, @"minWidth",        designWidth)
  565.     XuiSetGridTypeValue (gridType, @"minHeight",       designHeight)
  566.     XuiSetGridTypeValue (gridType, @"maxWidth",        designWidth)
  567.     XuiSetGridTypeValue (gridType, @"maxHeight",       designHeight)
  568.     XuiSetGridTypeValue (gridType, @"border",          $$BorderFrame)
  569.     XuiSetGridTypeValue (gridType, @"can",             $$Focus OR $$Respond OR $$Callback OR $$InputTextArray)
  570.     XuiSetGridTypeValue (gridType, @"focusKid",        $TextArea)
  571.     XuiSetGridTypeValue (gridType, @"inputTextArray",  $TextArea)
  572.   IFZ message THEN RETURN
  573. END SUB
  574. END FUNCTION
  575. '
  576. '
  577. ' #########################
  578. ' #####  TestCode ()  #####
  579. ' #########################
  580. '
  581. FUNCTION  TestCode (grid, message, v0, v1, v2, v3, r0, r1)
  582.     STATIC    filename$
  583. '
  584.   $Test      =  0  ' kid  0 grid type = Test
  585.   $MainMenu  =  1  ' kid  1 grid type = XuiMenu
  586.   $TextArea  =  2  ' kid  2 grid type = XuiTextArea
  587.   $UpperKid  =  2  ' kid maximum
  588. '
  589. '    XuiReportMessage (grid, message, v0, v1, v2, v3, r0, r1)
  590.     IF (message = #Callback) THEN message = r1
  591. '
  592.     SELECT CASE message
  593. '        CASE #Help            : GOSUB Help                ' callback when help requested
  594.         CASE #Selection    : GOSUB Selection        ' common callback message
  595. '        CASE #TextEvent    : GOSUB TextEvent        ' from TextArea
  596.     END SELECT
  597. '
  598. '
  599. ' *****  Selection  *****
  600. '
  601. SUB Selection
  602.     SELECT CASE r0
  603.         CASE 1    : GOSUB Menu
  604.         CASE 2    : GOSUB Text
  605.     END SELECT
  606. END SUB
  607. '
  608. SUB Menu
  609.     SELECT CASE v0
  610.         CASE 1    : GOSUB MenuFile
  611.         CASE 2    : GOSUB MenuHelp
  612.     END SELECT
  613. END SUB
  614. '
  615. SUB Text
  616.  
  617. END SUB
  618. '
  619. SUB MenuFile
  620.     SELECT CASE v1
  621.         CASE 0    :    XuiGetResponse ("XuiFile", "LoadFile", "", "", 0, 0, @reply, @filename$)
  622.                             IF filename$ THEN XstLoadStringArray (filename$, @text$[])
  623.                             XuiSendMessage (grid, #SetTextArray, 0, 0, 0, 0, $TextArea, @text$[])
  624.                             XuiSendMessage (grid, #Redraw, 0, 0, 0, 0, $TextArea, 0)
  625.         CASE 1    :    XuiGetResponse ("XuiFile", "SaveFile", "", filename$, 0, 0, @reply, @filename$)
  626.                             IF filename$ THEN
  627.                                 XuiSendMessage (grid, #GetTextArray, 0, 0, 0, 0, $TextArea, @text$[])
  628.                                 XstSaveStringArray (filename$, @text$[])
  629.                             END IF
  630.         CASE 2    :    QUIT (0)
  631.     END SELECT
  632. END SUB
  633. '
  634. SUB MenuHelp
  635.     SELECT CASE v1
  636.         CASE 0    :    PRINT "MenuHelpContents"
  637.                             XuiMessage (@"\nFileLoad\nFileSave\nFileQuit")
  638.         CASE 1    :    PRINT "MenuHelpSummary"
  639.                             XuiMessage (@"\nEditor by Mister Bill\n\n!!! Oh no !!!")
  640.         CASE 2    :    PRINT "MenuHelpIndex"
  641.                             XuiMessage (@"\nMenu Help Index\n\n!!! Does Nothing !!!")
  642.     END SELECT
  643. END SUB
  644. END FUNCTION
  645. END PROGRAM
  646.