home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 August / PCWorld_2000-08_cd.bin / Software / TemaCD / xbasic / xbpro.exe / xb / app / edit.x next >
Text File  |  1999-05-07  |  27KB  |  636 lines

  1. '
  2. ' ####################
  3. ' #####  PROLOG  #####
  4. ' ####################
  5. '
  6. PROGRAM    "edit"
  7. VERSION    "0.0000"
  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  EditCode      (grid, message, v0, v1, v2, v3, kid, ANY)
  19. '
  20. '
  21. ' ######################
  22. ' #####  Entry ()  #####
  23. ' ######################
  24. '
  25. FUNCTION  Entry ()
  26.     SHARED  terminateProgram
  27.     STATIC    entry
  28. '
  29.     IF entry THEN RETURN                    ' enter once
  30.     entry =  $$TRUE                                ' enter occured
  31. '
  32.     InitGui ()                                        ' initialize messages
  33.     InitProgram ()                                ' initialize this program
  34.     CreateWindows ()                            ' create main window and others
  35.     InitWindows ()                                ' initialize windows and grids
  36. '
  37.     IF LIBRARY(0) THEN RETURN            ' main program executes message loop
  38. '
  39.     DO                                                        ' the message loop
  40.         XgrProcessMessages (1)            ' process one message
  41.     LOOP UNTIL terminateProgram        ' and repeat until program is terminated
  42. END FUNCTION
  43. '
  44. '
  45. ' ########################
  46. ' #####  InitGui ()  #####
  47. ' ########################
  48. '
  49. ' InitGui() initializes cursor, icon, message, and display variables.
  50. ' Programs can reference these variables, but must never change them.
  51. '
  52. FUNCTION  InitGui ()
  53. '
  54. ' ***************************************
  55. ' *****  Register Standard Cursors  *****
  56. ' ***************************************
  57. '
  58.     XgrRegisterCursor (@"default",      @#cursorDefault)
  59.     XgrRegisterCursor (@"arrow",        @#cursorArrow)
  60.     XgrRegisterCursor (@"n",            @#cursorN)
  61.     XgrRegisterCursor (@"s",            @#cursorS)
  62.     XgrRegisterCursor (@"e",            @#cursorE)
  63.     XgrRegisterCursor (@"w",            @#cursorW)
  64.     XgrRegisterCursor (@"ns",           @#cursorArrowsNS)
  65.     XgrRegisterCursor (@"ns",           @#cursorArrowsSN)
  66.     XgrRegisterCursor (@"ew",           @#cursorArrowsEW)
  67.     XgrRegisterCursor (@"ew",           @#cursorArrowsWE)
  68.     XgrRegisterCursor (@"nwse",         @#cursorArrowsNWSE)
  69.     XgrRegisterCursor (@"nesw",         @#cursorArrowsNESW)
  70.     XgrRegisterCursor (@"all",          @#cursorArrowsAll)
  71.     XgrRegisterCursor (@"plus",         @#cursorPlus)
  72.     XgrRegisterCursor (@"wait",         @#cursorWait)
  73.     XgrRegisterCursor (@"insert",       @#cursorInsert)
  74.     XgrRegisterCursor (@"crosshair",    @#cursorCrosshair)
  75.     XgrRegisterCursor (@"hourglass",    @#cursorHourglass)
  76. '
  77.     #defaultCursor = #cursorDefault
  78. '
  79. '
  80. ' ********************************************
  81. ' *****  Register Standard Window Icons  *****
  82. ' ********************************************
  83. '
  84.     XgrRegisterIcon (@"hand",                    @#iconHand)
  85.     XgrRegisterIcon (@"asterisk",            @#iconAsterisk)
  86.     XgrRegisterIcon (@"question",            @#iconQuestion)
  87.     XgrRegisterIcon (@"exclamation",    @#iconExclamation)
  88.     XgrRegisterIcon (@"application",    @#iconApplication)
  89. '
  90.     XgrRegisterIcon (@"hand",                    @#iconStop)                        ' alias
  91.     XgrRegisterIcon (@"asterisk",            @#iconInformation)        ' alias
  92.     XgrRegisterIcon (@"application",  @#iconBlank)                    ' alias
  93. '
  94.     XgrRegisterIcon (@"window",                @#iconWindow)                    ' custom
  95. '
  96. '
  97. ' ******************************
  98. ' *****  Register Messages *****  Create message numbers for message names
  99. ' ******************************
  100. '
  101.     XgrRegisterMessage (@"Callback",                                        @#Callback)
  102.     XgrRegisterMessage (@"Cancel",                                            @#Cancel)
  103.     XgrRegisterMessage (@"Change",                                            @#Change)
  104.     XgrRegisterMessage (@"CloseWindow",                                    @#CloseWindow)
  105.     XgrRegisterMessage (@"ContextChange",                                @#ContextChange)
  106.     XgrRegisterMessage (@"Create",                                            @#Create)
  107.     XgrRegisterMessage (@"CreateValueArray",                        @#CreateValueArray)
  108.     XgrRegisterMessage (@"CreateWindow",                                @#CreateWindow)
  109.     XgrRegisterMessage (@"CursorH",                                            @#CursorH)
  110.     XgrRegisterMessage (@"CursorV",                                            @#CursorV)
  111.     XgrRegisterMessage (@"Deselected",                                    @#Deselected)
  112.     XgrRegisterMessage (@"Destroy",                                            @#Destroy)
  113.     XgrRegisterMessage (@"Destroyed",                                        @#Destroyed)
  114.     XgrRegisterMessage (@"DestroyWindow",                                @#DestroyWindow)
  115.     XgrRegisterMessage (@"Disable",                                            @#Disable)
  116.     XgrRegisterMessage (@"Disabled",                                        @#Disabled)
  117.     XgrRegisterMessage (@"Displayed",                                        @#Displayed)
  118.     XgrRegisterMessage (@"DisplayWindow",                                @#DisplayWindow)
  119.     XgrRegisterMessage (@"Enable",                                            @#Enable)
  120.     XgrRegisterMessage (@"Enabled",                                            @#Enabled)
  121.     XgrRegisterMessage (@"Enter",                                                @#Enter)
  122.     XgrRegisterMessage (@"ExitMessageLoop",                            @#ExitMessageLoop)
  123.     XgrRegisterMessage (@"Find",                                                @#Find)
  124.     XgrRegisterMessage (@"FindForward",                                    @#FindForward)
  125.     XgrRegisterMessage (@"FindReverse",                                    @#FindReverse)
  126.     XgrRegisterMessage (@"Forward",                                            @#Forward)
  127.     XgrRegisterMessage (@"GetAlign",                                        @#GetAlign)
  128.     XgrRegisterMessage (@"GetBorder",                                        @#GetBorder)
  129.     XgrRegisterMessage (@"GetBorderOffset",                            @#GetBorderOffset)
  130.     XgrRegisterMessage (@"GetCallback",                                    @#GetCallback)
  131.     XgrRegisterMessage (@"GetCallbackArgs",                            @#GetCallbackArgs)
  132.     XgrRegisterMessage (@"GetCan",                                            @#GetCan)
  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 (@"SetClipGrid",                                    @#SetClipGrid)
  278.     XgrRegisterMessage (@"SetColor",                                        @#SetColor)
  279.     XgrRegisterMessage (@"SetColorAll",                                    @#SetColorAll)
  280.     XgrRegisterMessage (@"SetColorExtra",                                @#SetColorExtra)
  281.     XgrRegisterMessage (@"SetColorExtraAll",                        @#SetColorExtraAll)
  282.     XgrRegisterMessage (@"SetCursor",                                        @#SetCursor)
  283.     XgrRegisterMessage (@"SetCursorXY",                                    @#SetCursorXY)
  284.     XgrRegisterMessage (@"SetDisplay",                                    @#SetDisplay)
  285.     XgrRegisterMessage (@"SetFocusColor",                                @#SetFocusColor)
  286.     XgrRegisterMessage (@"SetFocusColorExtra",                    @#SetFocusColorExtra)
  287.     XgrRegisterMessage (@"SetFont",                                            @#SetFont)
  288.     XgrRegisterMessage (@"SetFontNumber",                                @#SetFontNumber)
  289.     XgrRegisterMessage (@"SetGridFunction",                            @#SetGridFunction)
  290.     XgrRegisterMessage (@"SetGridFunctionName",                    @#SetGridFunctionName)
  291.     XgrRegisterMessage (@"SetGridName",                                    @#SetGridName)
  292.     XgrRegisterMessage (@"SetGridType",                                    @#SetGridType)
  293.     XgrRegisterMessage (@"SetGridTypeName",                            @#SetGridTypeName)
  294.     XgrRegisterMessage (@"SetGroup",                                        @#SetGroup)
  295.     XgrRegisterMessage (@"SetHelp",                                            @#SetHelp)
  296.     XgrRegisterMessage (@"SetHelpFile",                                    @#SetHelpFile)
  297.     XgrRegisterMessage (@"SetHelpString",                                @#SetHelpString)
  298.     XgrRegisterMessage (@"SetHelpStrings",                            @#SetHelpStrings)
  299.     XgrRegisterMessage (@"SetHintString",                                @#SetHintString)
  300.     XgrRegisterMessage (@"SetImage",                                        @#SetImage)
  301.     XgrRegisterMessage (@"SetImageCoords",                            @#SetImageCoords)
  302.     XgrRegisterMessage (@"SetIndent",                                        @#SetIndent)
  303.     XgrRegisterMessage (@"SetInfo",                                            @#SetInfo)
  304.     XgrRegisterMessage (@"SetJustify",                                    @#SetJustify)
  305.     XgrRegisterMessage (@"SetKeyboardFocus",                        @#SetKeyboardFocus)
  306.     XgrRegisterMessage (@"SetKeyboardFocusGrid",                @#SetKeyboardFocusGrid)
  307.     XgrRegisterMessage (@"SetMaxMinSize",                                @#SetMaxMinSize)
  308.     XgrRegisterMessage (@"SetMessageFunc",                            @#SetMessageFunc)
  309.     XgrRegisterMessage (@"SetMessageFuncArray",                    @#SetMessageFuncArray)
  310.     XgrRegisterMessage (@"SetMessageSub",                                @#SetMessageSub)
  311.     XgrRegisterMessage (@"SetMessageSubArray",                    @#SetMessageSubArray)
  312.     XgrRegisterMessage (@"SetModalWindow",                            @#SetModalWindow)
  313.     XgrRegisterMessage (@"SetParent",                                        @#SetParent)
  314.     XgrRegisterMessage (@"SetPosition",                                    @#SetPosition)
  315.     XgrRegisterMessage (@"SetRedrawFlags",                            @#SetRedrawFlags)
  316.     XgrRegisterMessage (@"SetSize",                                            @#SetSize)
  317.     XgrRegisterMessage (@"SetState",                                        @#SetState)
  318.     XgrRegisterMessage (@"SetStyle",                                        @#SetStyle)
  319.     XgrRegisterMessage (@"SetTabArray",                                    @#SetTabArray)
  320.     XgrRegisterMessage (@"SetTabWidth",                                    @#SetTabWidth)
  321.     XgrRegisterMessage (@"SetTextArray",                                @#SetTextArray)
  322.     XgrRegisterMessage (@"SetTextArrayLine",                        @#SetTextArrayLine)
  323.     XgrRegisterMessage (@"SetTextArrayLines",                        @#SetTextArrayLines)
  324.     XgrRegisterMessage (@"SetTextCursor",                                @#SetTextCursor)
  325.     XgrRegisterMessage (@"SetTextFilename",                            @#SetTextFilename)
  326.     XgrRegisterMessage (@"SetTextSelection",                        @#SetTextSelection)
  327.     XgrRegisterMessage (@"SetTextString",                                @#SetTextString)
  328.     XgrRegisterMessage (@"SetTextStrings",                            @#SetTextStrings)
  329.     XgrRegisterMessage (@"SetTexture",                                    @#SetTexture)
  330.     XgrRegisterMessage (@"SetTimer",                                        @#SetTimer)
  331.     XgrRegisterMessage (@"SetValue",                                        @#SetValue)
  332.     XgrRegisterMessage (@"SetValues",                                        @#SetValues)
  333.     XgrRegisterMessage (@"SetValueArray",                                @#SetValueArray)
  334.     XgrRegisterMessage (@"SetWindowFunction",                        @#SetWindowFunction)
  335.     XgrRegisterMessage (@"SetWindowIcon",                                @#SetWindowIcon)
  336.     XgrRegisterMessage (@"SetWindowTitle",                            @#SetWindowTitle)
  337.     XgrRegisterMessage (@"ShowTextCursor",                            @#ShowTextCursor)
  338.     XgrRegisterMessage (@"ShowWindow",                                    @#ShowWindow)
  339.     XgrRegisterMessage (@"SomeLess",                                        @#SomeLess)
  340.     XgrRegisterMessage (@"SomeMore",                                        @#SomeMore)
  341.     XgrRegisterMessage (@"StartTimer",                                    @#StartTimer)
  342.     XgrRegisterMessage (@"SystemMessage",                                @#SystemMessage)
  343.     XgrRegisterMessage (@"TextDelete",                                    @#TextDelete)
  344.     XgrRegisterMessage (@"TextEvent",                                        @#TextEvent)
  345.     XgrRegisterMessage (@"TextInsert",                                    @#TextInsert)
  346.     XgrRegisterMessage (@"TextModified",                                @#TextModified)
  347.     XgrRegisterMessage (@"TextReplace",                                    @#TextReplace)
  348.     XgrRegisterMessage (@"TimeOut",                                            @#TimeOut)
  349.     XgrRegisterMessage (@"Update",                                            @#Update)
  350.     XgrRegisterMessage (@"WindowClose",                                    @#WindowClose)
  351.     XgrRegisterMessage (@"WindowCreate",                                @#WindowCreate)
  352.     XgrRegisterMessage (@"WindowDeselected",                        @#WindowDeselected)
  353.     XgrRegisterMessage (@"WindowDestroy",                                @#WindowDestroy)
  354.     XgrRegisterMessage (@"WindowDestroyed",                            @#WindowDestroyed)
  355.     XgrRegisterMessage (@"WindowDisplay",                                @#WindowDisplay)
  356.     XgrRegisterMessage (@"WindowDisplayed",                            @#WindowDisplayed)
  357.     XgrRegisterMessage (@"WindowGetDisplay",                        @#WindowGetDisplay)
  358.     XgrRegisterMessage (@"WindowGetFunction",                        @#WindowGetFunction)
  359.     XgrRegisterMessage (@"WindowGetIcon",                                @#WindowGetIcon)
  360.     XgrRegisterMessage (@"WindowGetKeyboardFocusGrid",    @#WindowGetKeyboardFocusGrid)
  361.     XgrRegisterMessage (@"WindowGetSelectedWindow",            @#WindowGetSelectedWindow)
  362.     XgrRegisterMessage (@"WindowGetSize",                                @#WindowGetSize)
  363.     XgrRegisterMessage (@"WindowGetTitle",                            @#WindowGetTitle)
  364.     XgrRegisterMessage (@"WindowHelp",                                    @#WindowHelp)
  365.     XgrRegisterMessage (@"WindowHide",                                    @#WindowHide)
  366.     XgrRegisterMessage (@"WindowHidden",                                @#WindowHidden)
  367.     XgrRegisterMessage (@"WindowKeyDown",                                @#WindowKeyDown)
  368.     XgrRegisterMessage (@"WindowKeyUp",                                    @#WindowKeyUp)
  369.     XgrRegisterMessage (@"WindowMaximize",                            @#WindowMaximize)
  370.     XgrRegisterMessage (@"WindowMaximized",                            @#WindowMaximized)
  371.     XgrRegisterMessage (@"WindowMinimize",                            @#WindowMinimize)
  372.     XgrRegisterMessage (@"WindowMinimized",                            @#WindowMinimized)
  373.     XgrRegisterMessage (@"WindowMonitorContext",                @#WindowMonitorContext)
  374.     XgrRegisterMessage (@"WindowMonitorHelp",                        @#WindowMonitorHelp)
  375.     XgrRegisterMessage (@"WindowMonitorKeyboard",                @#WindowMonitorKeyboard)
  376.     XgrRegisterMessage (@"WindowMonitorMouse",                    @#WindowMonitorMouse)
  377.     XgrRegisterMessage (@"WindowMouseDown",                            @#WindowMouseDown)
  378.     XgrRegisterMessage (@"WindowMouseDrag",                            @#WindowMouseDrag)
  379.     XgrRegisterMessage (@"WindowMouseEnter",                        @#WindowMouseEnter)
  380.     XgrRegisterMessage (@"WindowMouseExit",                            @#WindowMouseExit)
  381.     XgrRegisterMessage (@"WindowMouseMove",                            @#WindowMouseMove)
  382.     XgrRegisterMessage (@"WindowMouseUp",                                @#WindowMouseUp)
  383.     XgrRegisterMessage (@"WindowRedraw",                                @#WindowRedraw)
  384.     XgrRegisterMessage (@"WindowRegister",                            @#WindowRegister)
  385.     XgrRegisterMessage (@"WindowResize",                                @#WindowResize)
  386.     XgrRegisterMessage (@"WindowResized",                                @#WindowResized)
  387.     XgrRegisterMessage (@"WindowResizeToGrid",                    @#WindowResizeToGrid)
  388.     XgrRegisterMessage (@"WindowSelect",                                @#WindowSelect)
  389.     XgrRegisterMessage (@"WindowSelected",                            @#WindowSelected)
  390.     XgrRegisterMessage (@"WindowSetFunction",                        @#WindowSetFunction)
  391.     XgrRegisterMessage (@"WindowSetIcon",                                @#WindowSetIcon)
  392.     XgrRegisterMessage (@"WindowSetKeyboardFocusGrid",    @#WindowSetKeyboardFocusGrid)
  393.     XgrRegisterMessage (@"WindowSetTitle",                            @#WindowSetTitle)
  394.     XgrRegisterMessage (@"WindowShow",                                    @#WindowShow)
  395.     XgrRegisterMessage (@"WindowSystemMessage",                    @#WindowSystemMessage)
  396.     XgrRegisterMessage (@"LastMessage",                                    @#LastMessage)
  397. '
  398.     XgrGetDisplaySize ("", @#displayWidth, @#displayHeight, @#windowBorderWidth, @#windowTitleHeight)
  399. END FUNCTION
  400. '
  401. '
  402. ' ############################
  403. ' #####  InitProgram ()  #####
  404. ' ############################
  405. '
  406. ' Add code to this function to initialize anything your program needs
  407. ' to initialize before CreateWindows() creates your programs windows.
  408. ' For initialization after CreateWindows(), add code to InitWindows().
  409. '
  410. ' Do not delete this function, leave it empty if not needed.
  411. '
  412. FUNCTION  InitProgram ()
  413.  
  414. END FUNCTION
  415. '
  416. '
  417. ' ##############################
  418. ' #####  CreateWindows ()  #####
  419. ' ##############################
  420. '
  421. FUNCTION  CreateWindows ()
  422. '
  423.     IF LIBRARY (0) THEN RETURN
  424. '
  425.   XuiMenuTextArea1B (@Edit, #CreateWindow, 0, 0, 0, 0, 0, 0)
  426.   XuiSendMessage    ( Edit, #SetCallback, Edit, &EditCode(), -1, -1, -1, 0)
  427.   XuiSendMessage    ( Edit, #Initialize, 0, 0, 0, 0, 0, 0)
  428.   XuiSendMessage    ( Edit, #DisplayWindow, 0, 0, 0, 0, 0, 0)
  429. END FUNCTION
  430. '
  431. '
  432. ' ############################
  433. ' #####  InitWindows ()  #####
  434. ' ############################
  435. '
  436. ' Add code to this function to initialize anything your program needs
  437. ' to initialize after CreateWindows() creates your programs windows.
  438. ' For initialization before CreateWindows(), add code to InitProgram().
  439. '
  440. ' Do not delete this function, leave it empty if not needed.
  441. '
  442. FUNCTION  InitWindows ()
  443.  
  444. END FUNCTION
  445. '
  446. '
  447. ' #########################
  448. ' #####  EditCode ()  #####
  449. ' #########################
  450. '
  451. FUNCTION  EditCode (grid, message, v0, v1, v2, v3, kid, r1)
  452.     STATIC  count
  453.     STATIC  wbw
  454.     STATIC  wth
  455.     UBYTE  null[]
  456. '
  457.     $Edit    =  0
  458.     $Menu    =  1
  459.     $Text    =  2
  460.     $Button  =  3
  461. '
  462.     IFZ dw THEN XgrGetDisplaySize ("", @dw, @dh, @wbw, @wth)
  463. '
  464.     IF (message = #Callback) THEN message = r1
  465. '
  466.     SELECT CASE message
  467.         CASE #CloseWindow    : GOSUB CloseWindow
  468.         CASE #Selection        : GOSUB Selection
  469.     END SELECT
  470.     RETURN
  471. '
  472. '
  473. ' *****  CloseWindow  *****
  474. '
  475. SUB CloseWindow
  476.     DEC count
  477.     XuiSendMessage (grid, #DestroyWindow, 0, 0, 0, 0, 0, 0)
  478.     IF (count < 0) THEN QUIT (0)
  479. END SUB
  480. '
  481. '
  482. ' *****  Selection  *****
  483. '
  484. SUB Selection
  485.   SELECT CASE kid
  486.     CASE $Edit    :
  487.     CASE $Menu    :    GOSUB Menu
  488.     CASE $Text    :
  489.     CASE $Button  :    GOSUB Another
  490.     END SELECT
  491. END SUB
  492. '
  493. '
  494. ' *****  Menu  *****
  495. '
  496. SUB Menu
  497.     SELECT CASE v0
  498.         CASE 1    : GOSUB File
  499.         CASE 2    : GOSUB Edit
  500.     END SELECT
  501. END SUB
  502. '
  503. '
  504. ' *****  File  *****
  505. '
  506. SUB File
  507.     SELECT CASE v1
  508.         CASE 0    :    GOSUB FileLoad
  509.         CASE 1    :    GOSUB FileSave
  510.         CASE 2    :    GOSUB FileQuit
  511.     END SELECT
  512. END SUB
  513. '
  514. '
  515. ' *****  FileLoad  *****
  516. '
  517. SUB FileLoad
  518.     gridType$ = "XuiFile"
  519.     title$ = "Select File"
  520.     message$ = ""
  521.     strings$ = ""
  522.     reply$ = ""
  523.     XuiGetResponse (@gridType$, @title$, @message$, @strings$, @v0, @v1, @kid, @reply$)
  524.     IF reply$ THEN
  525.         XstLoadStringArray (@reply$, @text$[])
  526.         XuiSendMessage (grid, #SetTextArray, 0, 0, 0, 0, 2, @text$[])
  527.         XuiSendMessage (grid, #Redraw, 0, 0, 0, 0, 0, 0)
  528.     END IF
  529. END SUB
  530. '
  531. '
  532. ' *****  FileSave  *****
  533. '
  534. SUB FileSave
  535.     gridType$ = "XuiFile"
  536.     title$ = "Select File"
  537.     message$ = ""
  538.     strings$ = ""
  539.     reply$ = ""
  540.     XuiGetResponse (@gridType$, @title$, @message$, @strings$, @v0, @v1, @kid, @reply$)
  541.     IF reply$ THEN
  542.         XuiSendMessage (grid, #GetTextArray, 0, 0, 0, 0, 2, @text$[])
  543.         XstSaveStringArray (@reply$, @text$[])
  544.     END IF
  545. END SUB
  546. '
  547. '
  548. ' *****  FileQuit  *****
  549. '
  550. SUB FileQuit
  551.     GOSUB CloseWindow
  552. END SUB
  553. '
  554. '
  555. ' *****  Edit  *****
  556. '
  557. SUB Edit
  558.     SELECT CASE v1
  559.         CASE 0    :    GOSUB EditCut
  560.         CASE 1    :    GOSUB EditGrab
  561.         CASE 2    :    GOSUB EditPaste
  562.         CASE 3    :    GOSUB EditErase
  563.     END SELECT
  564. END SUB
  565. '
  566. '
  567. ' *****  EditCut  *****
  568. '
  569. SUB EditCut
  570.     XgrGetTextSelectionGrid (@g)
  571.     IF g THEN
  572.         XuiSendMessage (g, #GetTextSelection, @begPos, @begLine, @endPos, @endLine, 0, @text$)
  573.         IF text$ THEN
  574.             XgrSetClipboard (0, $$ClipboardTypeText, @text$, @null[])
  575.             XuiSendMessage (g, #TextReplace, begPos, begLine, endPos, endLine, 0, "")
  576.             XuiSendMessage (g, #RedrawText, 0, 0, 0, 0, 0, 0)
  577.         END IF
  578.     END IF
  579. END SUB
  580. '
  581. '
  582. ' *****  EditGrab  *****
  583. '
  584. SUB EditGrab
  585.     XgrGetTextSelectionGrid (@g)
  586.     IF g THEN
  587.         XuiSendMessage (g, #GetTextSelection, 0, 0, 0, 0, 0, @text$)
  588.         XuiSendMessage (g, #RedrawText, 0, 0, $$SelectCancel, 0, 0, 0)
  589.         IF text$ THEN XgrSetClipboard (0, $$ClipboardTypeText, @text$, @null[])
  590.     END IF
  591. END SUB
  592. '
  593. '
  594. ' *****  EditPaste  *****
  595. '
  596. SUB EditPaste
  597.     XgrGetClipboard (0, $$ClipboardTypeText, @text$, @null[])
  598.     IF text$ THEN
  599.         XgrGetSelectedWindow (@window)
  600.         XgrSendMessage (window, #WindowGetKeyboardFocusGrid, @g, 0, 0, 0, 0, 0)
  601.         IF g THEN
  602.             XuiSendMessage (g, #GetTextCursor, @cursorPos, @cursorLine, 0, 0, 0, 0)
  603.             XuiSendMessage (g, #TextReplace, cursorPos, cursorLine, cursorPos, cursorLine, 0, @text$)
  604.             XuiSendMessage (g, #RedrawText, 0, 0, 0, 0, 0, 0)
  605.         END IF
  606.     END IF
  607. END SUB
  608. '
  609. '
  610. ' *****  EditErase  *****
  611. '
  612. SUB EditErase
  613.     XgrGetTextSelectionGrid (@g)
  614.     IF g THEN
  615.         XuiSendMessage (g, #GetTextSelection, @begPos, @begLine, @endPos, @endLine, 0, @text$)
  616.         IF text$ THEN
  617.             XuiSendMessage (g, #TextReplace, begPos, begLine, endPos, endLine, 0, "")
  618.             XuiSendMessage (g, #RedrawText, 0, 0, 0, 0, 0, 0)
  619.         END IF
  620.     END IF
  621. END SUB
  622. '
  623. '
  624. ' *****  Another  *****
  625. '
  626. SUB Another
  627.     XuiSendMessage     (grid, #GetWindowSize, @wx, @wy, 0, 0, 0, 0)
  628.     INC count
  629.   XuiMenuTextArea1B  (@g, #CreateWindow, wx+wbw, wy+wbw+wth, 0, 0, 0, 0)
  630.   XuiSendMessage     ( g, #SetCallback, g, &EditCode(), -1, -1, -1, 0)
  631.   XuiSendMessage     ( g, #Initialize, 0, 0, 0, 0, 0, 0)
  632.   XuiSendMessage     ( g, #DisplayWindow, 0, 0, 0, 0, 0, 0)
  633. END SUB
  634. END FUNCTION
  635. END PROGRAM
  636.