home *** CD-ROM | disk | FTP | other *** search
/ The Best of Windows 95.com 1996 December / WIN95_DEC_1996_3.ISO / addins / html101.ZIP / HTMLMODE.DAS next >
Text File  |  1996-02-29  |  40KB  |  1,511 lines

  1. '********************************************************************
  2. '                        HTML mode for Dana
  3. '                                      carty, 1995
  4. 'ver 1.00E    rel. 95/11
  5. 'ver 1.01E    rel. 96/02
  6. '********************************************************************
  7.  
  8. Const WIN32S = False
  9. '--------------------------------------------------------------------
  10. ' If you are running Dana on Win32s, set this True.
  11. '--------------------------------------------------------------------
  12.  
  13. Const HTMLVER = 3
  14. '--------------------------------------------------------------------
  15. ' Specify HTML version. Actually less than 2 just means 2.
  16. '--------------------------------------------------------------------
  17.  
  18. Const NETSCAPE = True
  19. '--------------------------------------------------------------------
  20. ' If you want to use NetScape extention, set this True.
  21. ' But, some very popular tags like <CENTER> can be used if you set
  22. ' this False
  23. '--------------------------------------------------------------------
  24.  
  25. Const T_HEADSIZE1 = 1
  26. Const T_HEADSIZE2 = 2
  27. Const T_HEADSIZE3 = 3
  28. Const T_HEADSIZE4 = 4
  29. Const T_HEADSIZE5 = 5
  30. Const T_HEADSIZE6 = 6
  31. Const T_PREFORMAT = 7
  32. Const T_CENTER    = 8
  33. Const T_BLINK     = 9
  34. Const T_COMMENT   = 10
  35.  
  36. Const T_DIVISION  = 11
  37. Const T_BLOCKQUOTE= 12
  38. Const T_EMPHASIS  = 13
  39. Const T_STRONG    = 14
  40. Const T_CITATION  = 15
  41. Const T_CODE      = 16
  42. Const T_SAMPLE    = 17
  43. Const T_KEYBOARD  = 18
  44. Const T_VARIABLE  = 19
  45. Const T_DEFINITION= 20
  46. Const T_ADDRESS   = 21
  47.  
  48. Const T_FONTSIZE1 = 31
  49. Const T_FONTSIZE2 = 32
  50. Const T_FONTSIZE3 = 33
  51. Const T_FONTSIZE4 = 34
  52. Const T_FONTSIZE5 = 35
  53. Const T_FONTSIZE6 = 36
  54. Const T_FONTSIZE7 = 37
  55. Const T_FONTCOLOR = 38
  56. Const T_FONTBOLD  = 39
  57. Const T_FONTITALIC= 40
  58. Const T_FONTFIX   = 41
  59. Const T_FONTUNDER = 42
  60. Const T_FONTSTRIKE= 43
  61. Const T_FONTSUB   = 44
  62. Const T_FONTSUPER = 45
  63.  
  64. Const T_FONTBIG   = 51
  65. Const T_FONTSMALL = 52
  66.  
  67. Const T_FONTBASE1 = 61
  68. Const T_FONTBASE2 = 62
  69. Const T_FONTBASE3 = 63
  70. Const T_FONTBASE4 = 64
  71. Const T_FONTBASE5 = 65
  72. Const T_FONTBASE6 = 66
  73. Const T_FONTBASE7 = 67
  74.  
  75. Const T_REPEAT = 99
  76.  
  77. Const T_LINKHTTP  = 101
  78. Const T_LINKFTP   = 102
  79. Const T_LINKFILE  = 103
  80.  
  81. Const T_LINKIMAGE = 111
  82. Const T_LINKINLINE= 112
  83.  
  84. Const T_LIST       = 201
  85. Const T_NUMLIST    = 202
  86. Const T_MENULIST   = 203
  87. Const T_DIRLIST    = 204
  88. Const T_DEFLIST    = 205
  89. Const T_LISTITEM   = 206
  90.  
  91. Const T_PARAGRAPH = 301
  92. Const T_PARABREAK = 302
  93. Const T_PARAHORZ  = 303
  94.  
  95. Const T_LEFT      = 401
  96. Const T_RIGHT     = 402
  97. Const T_AMP       = 403
  98. Const T_QUOTE     = 404
  99. Const T_SPACE     = 405
  100. Const T_TRADEMARK = 406
  101. Const T_COPYRIGHT = 407
  102.  
  103. Const T_TABLE = 501
  104. Const T_TABLEHEAD = 502
  105. Const T_TABLEDATA = 503
  106. Const T_TABLEROW = 504
  107. Const T_CAPTION = 505
  108.  
  109. Const T_FORM     = 601
  110. Const T_SUBMIT   = 602
  111. Const T_RESET    = 603
  112. Const T_TEXT     = 604
  113. Const T_PASSWORD = 605
  114. Const T_CHECKBOX = 606
  115. Const T_RADIO    = 607
  116. Const T_SELECT   = 608
  117. Const T_TEXTAREA = 609
  118.  
  119. Const T_MAILADDRESS = 901
  120. Const T_HEADER   = 902
  121. Const T_TITLE    = 903
  122. Const T_BODY     = 904
  123. Const T_INPUTTAG = 990
  124.  
  125. Const T_TAGDELETE = 997
  126. Const T_TEMPLATE = 998
  127. Const T_EXIT     = 999
  128.  
  129. Const VK_RBUTTON = &H02
  130. Const VK_ESCAPE = &H1B
  131. Const VK_RETURN = &H0D
  132.  
  133. Const MB_YESNO = &H04
  134. Const MB_YESNOCANCEL = &H03
  135. Const MB_ICONQUESTION = &H20
  136. Const MB_DEFBUTTON1 = &H0
  137. Const MB_DEFBUTTON2 = &H100
  138.  
  139. Const IDOK = 1
  140. Const IDCANCEL = 2
  141. Const IDYES = 6
  142. Const IDNO = 7
  143.  
  144. Const STATE_INIT        = 0
  145. Const STATE_BEFORE_OPEN = 1
  146. Const STATE_AFTER_OPEN  = 2
  147. Const STATE_BEFORE_SAVE = 4
  148. Const STATE_AFTER_SAVE  = 5
  149. Const STATE_KEY_PRESS   = 8
  150. Const STATE_CHAR        = 9
  151.  
  152. Dim hMenu%
  153. Dim hMenuBase%
  154. Dim hMenuChar%
  155. Dim hMenuFont%
  156. Dim hMenuForm%
  157. Dim hMenuHead%
  158. Dim hMenuLink%
  159. Dim hMenuList%
  160. Dim hMenuOther%
  161. Dim hMenuPara%
  162. Dim hMenuSize%
  163. Dim hMenuSpec%
  164. Dim hMenuTable%
  165.  
  166. Declare Proc ChooseColor Lib "ComDlg32" Alias "ChooseColorA" (cc%) As Integer
  167. Declare Proc wsprintf Lib "User32" Alias "wsprintfA" (s$, fmt$, ..)
  168. Declare Proc GetProfileString Lib "Kernel32" Alias "GetPrivateProfileStringA" (sec$, key$, def$, buf$, nbuf%, fname$)
  169. Declare Proc WriteProfileString Lib "Kernel32" Alias "WritePrivateProfileStringA" (sec$, key$, def$, fname$)
  170.  
  171. Static address$                ' mail address
  172. Static nNum%                ' temporary counter
  173. Static nRpt%                ' previous tag
  174.  
  175. Main ()
  176.  
  177.     Select Case .DanaState
  178.     Case STATE_INIT
  179.         MenuInit()
  180.         StayResident()
  181.     Case STATE_KEY_PRESS
  182.         OnKeyPress(.ParmA, .ParmB)
  183.     Case STATE_CHAR
  184.         OnChar(.ParmA)
  185.     Case STATE_AFTER_OPEN
  186.         OnAfterOpen()
  187.     Case STATE_BEFORE_SAVE
  188.         OnBeforeSave(.ParmStrA)
  189.     Case STATE_AFTER_SAVE
  190.         OnAfterSave()
  191.     Case Else
  192.     End Select
  193.  
  194. End
  195.  
  196. '/////////////////////////////////////////////////////////
  197. ' Message handlers
  198.  
  199. '///////////////////////////////
  200. ' Key pressed
  201. Proc OnKeyPress(nKey%, nShift%)
  202.     Dim cmd$
  203.     cmd$ = KeyToCmd(nKey, nShift)
  204.  
  205.     If nKey = VK_ESCAPE Or nKey = VK_RBUTTON Then
  206.         HTMLMain()
  207.         .ParmA = 0    ' Default key should be ignored.
  208.     Else If nKey = VK_RETURN Then
  209.         If nShift = &H20 Then
  210.             AddEnd("P")
  211.             .ParmA = 0
  212.         Else If nShift = &H40 Then
  213.             AddEnd("BR")
  214.             .ParmA = 0
  215.         End If
  216.     Else If cmd$ = "Repeat" Then
  217.         HTMLDispatch(T_REPEAT)
  218.         .ParmA = 0
  219.     End If
  220. End Proc
  221.  
  222. '///////////////////////////////
  223. ' Char input
  224. Proc OnChar(nChar%)
  225.  
  226. End Proc
  227.  
  228. '///////////////////////////////
  229. ' After open file
  230. Proc OnAfterOpen()
  231.  
  232. End Proc
  233.  
  234. '///////////////////////////////
  235. ' Before save file
  236. Proc OnBeforeSave(strName$)
  237.  
  238. End Proc
  239.  
  240. '///////////////////////////////
  241. ' After save file
  242. Proc OnAfterSave()
  243.  
  244. End Proc
  245.  
  246. '//////////////////////////////////////////////////////////////////
  247. ' Initialize Main Menu
  248. Proc MenuInit()
  249.     Dim fp%
  250.     Dim s$
  251.     address$ = Space(256)
  252.     GetProfileString("HTML", "Address", "", address$, 256, .HomePath + "DanaInet.INI")
  253.     If address$ = "" Then
  254.         GetProfileString("Mail", "Address", "", address$, 256, .HomePath + "DanaInet.INI")
  255.     End If
  256.     hMenu = NewMenu()
  257.     AddMenuItem(hMenu, "&Repeat", T_REPEAT)
  258.     hMenuChar = AddMenuItem(hMenu, "&Characters", 0)
  259.         hMenuHead = AddMenuItem(hMenuChar, "&Header", 0)
  260.             AddMenuItem(hMenuHead, "Size&1", T_HEADSIZE1)
  261.             AddMenuItem(hMenuHead, "Size&2", T_HEADSIZE2)
  262.             AddMenuItem(hMenuHead, "Size&3", T_HEADSIZE3)
  263.             AddMenuItem(hMenuHead, "Size&4", T_HEADSIZE4)
  264.             AddMenuItem(hMenuHead, "Size&5", T_HEADSIZE5)
  265.             AddMenuItem(hMenuHead, "Size&6", T_HEADSIZE6)
  266.         If HTMLVER >= 3 Then
  267.             AddMenuItem(hMenuChar, "&Division", T_DIVISION)
  268.         End If
  269.         AddMenuItem(hMenuChar, "&Pre formatted", T_PREFORMAT)
  270.             AddMenuItem(hMenuChar, "&Center", T_CENTER)
  271.         If NETSCAPE = True Then
  272.             AddMenuItem(hMenuChar, "B&link", T_BLINK)
  273.         End If
  274.         AddMenuItem(hMenuChar, "&Emphasis", T_EMPHASIS)
  275.         AddMenuItem(hMenuChar, "S&trong", T_STRONG)
  276.         AddMenuItem(hMenuChar, "Cit&ation", T_CITATION)
  277.         AddMenuItem(hMenuChar, "C&ode", T_CODE)
  278.         AddMenuItem(hMenuChar, "&Sample", T_SAMPLE)
  279.         AddMenuItem(hMenuChar, "&Keyboard", T_KEYBOARD)
  280.         AddMenuItem(hMenuChar, "&Variable", T_VARIABLE)
  281.         AddMenuItem(hMenuChar, "Co&mment", T_COMMENT)
  282.     hMenuFont = AddMenuItem(hMenu, "Fo&nt", 0)
  283.         If NETSCAPE = True Then
  284.             hMenuSize = AddMenuItem(hMenuFont, "Si&ze", 0)
  285.                 AddMenuItem(hMenuSize, "Size&1", T_FONTSIZE1)
  286.                 AddMenuItem(hMenuSize, "Size&2", T_FONTSIZE2)
  287.                 AddMenuItem(hMenuSize, "Size&3", T_FONTSIZE3)
  288.                 AddMenuItem(hMenuSize, "Size&4", T_FONTSIZE4)
  289.                 AddMenuItem(hMenuSize, "Size&5", T_FONTSIZE5)
  290.                 AddMenuItem(hMenuSize, "Size&6", T_FONTSIZE6)
  291.                 AddMenuItem(hMenuSize, "Size&7", T_FONTSIZE7)
  292.             AddMenuItem(hMenuFont, "&Color...", T_FONTCOLOR)
  293.         End If
  294.         AddMenuItem(hMenuFont, "&Bold", T_FONTBOLD)
  295.         AddMenuItem(hMenuFont, "&Italic", T_FONTITALIC)
  296.         AddMenuItem(hMenuFont, "&Typewriter", T_FONTFIX)
  297.         If HTMLVER >= 3 Then
  298.             AddMenuItem(hMenuFont, "&Underline", T_FONTUNDER)
  299.             AddMenuItem(hMenuFont, "&Strikeout", T_FONTSTRIKE)
  300.             AddMenuItem(hMenuFont, "Subsc&ript", T_FONTSUB)
  301.             AddMenuItem(hMenuFont, "Su&perscript", T_FONTSUPER)
  302.             AddMenuItem(hMenuFont, "S&mall Font", T_FONTSMALL)
  303.             AddMenuItem(hMenuFont, "&Large Font", T_FONTBIG)
  304.         End If
  305.         If NETSCAPE = True Then
  306.             hMenuBase = AddMenuItem(hMenuFont, "B&ase Size", 0)
  307.                 AddMenuItem(hMenuBase, "Size&1", T_FONTBASE1)
  308.                 AddMenuItem(hMenuBase, "Size&2", T_FONTBASE2)
  309.                 AddMenuItem(hMenuBase, "Size&3", T_FONTBASE3)
  310.                 AddMenuItem(hMenuBase, "Size&4", T_FONTBASE4)
  311.                 AddMenuItem(hMenuBase, "Size&5", T_FONTBASE5)
  312.                 AddMenuItem(hMenuBase, "Size&6", T_FONTBASE6)
  313.                 AddMenuItem(hMenuBase, "Size&7", T_FONTBASE7)
  314.         End If
  315.     hMenuLink = AddMenuItem(hMenu, "Lin&k", 0)
  316.         AddMenuItem(hMenuLink, "&HTTP...", T_LINKHTTP)
  317.         AddMenuItem(hMenuLink, "F&TP...", T_LINKFTP)
  318.         AddMenuItem(hMenuLink, "&File...", T_LINKFILE)
  319.         AddMenuItem(hMenuLink, "&Inline Image...", T_LINKIMAGE)
  320.         AddMenuItem(hMenuLink, "Inline &Source...", T_LINKINLINE)
  321.     hMenuList = AddMenuItem(hMenu, "&List", 0)
  322.         AddMenuItem(hMenuList, "Norma&l", T_LIST)
  323.         AddMenuItem(hMenuList, "&Numbered", T_NUMLIST)
  324.         AddMenuItem(hMenuList, "&Menu", T_MENULIST)
  325.         AddMenuItem(hMenuList, "Di&rectory", T_DIRLIST)
  326.         AddMenuItem(hMenuList, "&Defined", T_DEFLIST)
  327.         AddMenuItem(hMenuList, "List &Items", T_LISTITEM)
  328.     hMenuPara = AddMenuItem(hMenu, "&Paragraph", 0)
  329.         AddMenuItem(hMenuPara, "B&reak", T_PARABREAK)
  330.         AddMenuItem(hMenuPara, "&Paragraph", T_PARAGRAPH)
  331.         AddMenuItem(hMenuPara, "&Horizontal Line", T_PARAHORZ)
  332.     hMenuSpec = AddMenuItem(hMenu, "&Special Characters", 0)
  333.         AddMenuItem(hMenuSpec, "&<", T_LEFT)
  334.         AddMenuItem(hMenuSpec, "&>", T_RIGHT)
  335.         AddMenuItem(hMenuSpec, "&Ampersand", T_AMP)
  336.         AddMenuItem(hMenuSpec, Chr(34) + "(&Quote)", T_QUOTE)
  337.         AddMenuItem(hMenuSpec, "&Space", T_SPACE)
  338.         AddMenuItem(hMenuSpec, "&Registered Trademark", T_TRADEMARK)
  339.         AddMenuItem(hMenuSpec, "&Copyright", T_COPYRIGHT)
  340.     If HTMLVER >= 3 Then
  341.         hMenuTable = AddMenuItem(hMenu, "&Table", 0)
  342.             AddMenuItem(hMenuTable, "&Table...", T_TABLE)
  343.             AddMenuItem(hMenuTable, "Table &Row", T_TABLEROW)
  344.             AddMenuItem(hMenuTable, "&Caption", T_CAPTION)
  345.             AddMenuItem(hMenuTable, "Table &Header", T_TABLEHEAD)
  346.             AddMenuItem(hMenuTable, "Table &Data", T_TABLEDATA)
  347.     End If
  348.     hMenuForm = AddMenuItem(hMenu, "&Form", 0)
  349.         AddMenuItem(hMenuForm, "&Form...", T_FORM)
  350.         AddMenuItem(hMenuForm, "&Submit...", T_SUBMIT)
  351.         AddMenuItem(hMenuForm, "&Reset...", T_RESET)
  352.         AddMenuItem(hMenuForm, "&Text Box...", T_TEXT)
  353.         AddMenuItem(hMenuForm, "&Password...", T_PASSWORD)
  354.         AddMenuItem(hMenuForm, "&Check Box...", T_CHECKBOX)
  355.         AddMenuItem(hMenuForm, "Ra&dio Button...", T_RADIO)
  356.         AddMenuItem(hMenuForm, "&Selection Box...", T_SELECT)
  357.         AddMenuItem(hMenuForm, "Text &Area...", T_TEXTAREA)
  358.     hMenuOther = AddMenuItem(hMenu, "&Others", 0)
  359.         AddMenuItem(hMenuOther, "&Mail Address...", T_MAILADDRESS)
  360.         AddMenuItem(hMenuOther, "&Head", T_HEADER)
  361.         AddMenuItem(hMenuOther, "&Title", T_TITLE)
  362.         AddMenuItem(hMenuOther, "&Body", T_BODY)
  363.         AddMenuItem(hMenuOther, "&Input Tag...", T_INPUTTAG)
  364.     AddMenuItem(hMenu, "", -1)
  365.     AddMenuItem(hMenu, "R&emove Tags...", T_TAGDELETE)
  366.     AddMenuItem(hMenu, "Te&mplate...", T_TEMPLATE)
  367.     AddMenuItem(hMenu, "E&xit HTML mode", T_EXIT)
  368. End Proc
  369.  
  370. '//////////////////////////////////////////////////////////////////
  371. ' HTML command call
  372. Proc HTMLMain()
  373.     Dim nC%
  374.     Dim sCsr$
  375.  
  376.     If .BlkDisp = False Then
  377.         Dim nSaveCol%
  378.         nSaveCol% = .Column
  379.         Silent()
  380.  
  381.         nC = GetCurrentChar()
  382.         Do
  383.             If .CsrX > 0 Then
  384.                 Command("CsrLeft")
  385.             Else
  386.                 Exit Do
  387.             End If
  388.             nC = GetCurrentChar()
  389.             If nC = Asc(">") Then Exit Do
  390.             If nC = Asc("<") Then
  391.                 Command("CsrRight")
  392.                 sCsr$ = GetCursorWord()
  393.                 NoSilent()
  394.                 InTag(sCsr$)
  395.                 GotoThere(0, nSaveCol)
  396.                 Return
  397.             End If
  398.         Loop While True
  399.  
  400.         GotoThere(0, nSaveCol)
  401.         NoSilent()
  402.     End If
  403.  
  404.     Dim nRC%
  405.     nRC = DoMenu(hMenu)
  406.     HTMLDispatch(nRC)
  407. End Proc
  408.  
  409. Proc HTMLDispatch(nRC%)
  410.  
  411.     If nRC = T_REPEAT Then
  412.         nRC = nRpt
  413.     Else
  414.         If nRC <> -1 Then nRpt = nRC
  415.     End If
  416.  
  417.     Select Case nRC
  418.     Case -1
  419.     Case T_HEADSIZE1
  420.         AddTag("H1")
  421.     Case T_HEADSIZE2
  422.         AddTag("H2")
  423.     Case T_HEADSIZE3
  424.         AddTag("H3")
  425.     Case T_HEADSIZE4
  426.         AddTag("H4")
  427.     Case T_HEADSIZE5
  428.         AddTag("H5")
  429.     Case T_HEADSIZE6
  430.         AddTag("H6")
  431.     Case T_PREFORMAT
  432.         AddParaTag("PRE")
  433.     Case T_CENTER
  434.         AddTag("CENTER")
  435.     Case T_BLINK
  436.         AddTag("BLINK")
  437.     Case T_DIVISION
  438.         AddTag("DIV")
  439.     Case T_BLOCKQUOTE
  440.         AddTag("BLOCKQUOTE")
  441.     Case T_EMPHASIS
  442.         AddTag("EM")
  443.     Case T_STRONG
  444.         AddTag("STRONG")
  445.     Case T_CITATION
  446.         AddTag("CITE")
  447.     Case T_CODE
  448.         AddTag("CODE")
  449.     Case T_SAMPLE
  450.         AddTag("SAMP")
  451.     Case T_KEYBOARD
  452.         AddTag("KBD")
  453.     Case T_VARIABLE
  454.         AddTag("VAR")
  455.     Case T_DEFINITION
  456.         AddTag("DFN")
  457.     Case T_ADDRESS
  458.         AddTag("ADDRESS")
  459.     Case T_COMMENT
  460.         AddCmt()
  461.     Case T_FONTSIZE1
  462.         AddFontSize(1)
  463.     Case T_FONTSIZE2
  464.         AddFontSize(2)
  465.     Case T_FONTSIZE3
  466.         AddFontSize(3)
  467.     Case T_FONTSIZE4
  468.         AddFontSize(4)
  469.     Case T_FONTSIZE5
  470.         AddFontSize(5)
  471.     Case T_FONTSIZE6
  472.         AddFontSize(6)
  473.     Case T_FONTSIZE7
  474.         AddFontSize(7)
  475.     Case T_FONTBASE1
  476.         AddBaseSize(1)
  477.     Case T_FONTBASE2
  478.         AddBaseSize(2)
  479.     Case T_FONTBASE3
  480.         AddBaseSize(3)
  481.     Case T_FONTBASE4
  482.         AddBaseSize(4)
  483.     Case T_FONTBASE5
  484.         AddBaseSize(5)
  485.     Case T_FONTBASE6
  486.         AddBaseSize(6)
  487.     Case T_FONTBASE7
  488.         AddBaseSize(7)
  489.     Case T_FONTCOLOR
  490.         AddFontColor()
  491.     Case T_FONTBOLD
  492.         AddTag("B")
  493.     Case T_FONTITALIC
  494.         AddTag("I")
  495.     Case T_FONTFIX
  496.         AddTag("TT")
  497.     Case T_FONTUNDER
  498.         AddTag("U")
  499.     Case T_FONTSTRIKE
  500.         AddTag("S")
  501.     Case T_FONTSUB
  502.         AddTag("SUB")
  503.     Case T_FONTSUPER
  504.         AddTag("SUP")
  505.     Case T_FONTBIG
  506.         AddTag("BIG")
  507.     Case T_FONTSMALL
  508.         AddTag("SMALL")
  509.     Case T_LIST
  510.         AddList("UL")
  511.     Case T_NUMLIST
  512.         AddList("OL")
  513.     Case T_MENULIST
  514.         AddList("MENU")
  515.     Case T_DIRLIST
  516.         AddList("DIR")
  517.     Case T_DEFLIST
  518.         AddDefList()
  519.     Case T_LISTITEM
  520.         AddTops("LI")
  521.     Case T_PARABREAK
  522.         AddEnd("BR")
  523.     Case T_PARAGRAPH
  524.         AddEnd("P")
  525.     Case T_PARAHORZ
  526.         InsertString("<HR>" + Chr(10))
  527.     Case T_LEFT
  528.         InsertString("<")
  529.     Case T_RIGHT
  530.         InsertString(">")
  531.     Case T_AMP
  532.         InsertString("&")
  533.     Case T_QUOTE
  534.         InsertString(""")
  535.     Case T_SPACE
  536.         InsertString(" ")
  537.     Case T_TRADEMARK
  538.         InsertString("®")
  539.     Case T_COPYRIGHT
  540.         InsertString("©")
  541.     Case T_TABLE
  542.         AddTable()
  543.     Case T_TABLEHEAD
  544.         AddTag("TH")
  545.     Case T_TABLEDATA
  546.         AddTag("TD")
  547.     Case T_TABLEROW
  548.         AddParaTag("TR")
  549.     Case T_FORM
  550.         AddForm()
  551.     Case T_SUBMIT
  552.         AddButton("SUBMIT")
  553.     Case T_RESET
  554.         AddButton("RESET")
  555.     Case T_TEXT
  556.         AddText("TEXT")
  557.     Case T_PASSWORD
  558.         AddText("PASSWORD")
  559.     Case T_CHECKBOX
  560.         AddCheck("CHECKBOX")
  561.     Case T_RADIO
  562.         AddCheck("RADIO")
  563.     Case T_SELECT
  564.         AddSelect()
  565.     Case T_TEXTAREA
  566.         AddTextArea()
  567.     Case T_LINKHTTP
  568.         AddRef(InputBox("Input URL", "", "http://"))
  569.     Case T_LINKFTP
  570.         AddRef(InputBox("Input URL", "", "ftp://"))
  571.     Case T_LINKFILE
  572.         AddRef(GetOpenFile("*.*"))
  573.     Case T_LINKIMAGE
  574.         AddImage()
  575.     Case T_LINKINLINE
  576.         AddInline()
  577.     Case T_MAILADDRESS
  578.         AddAddress()
  579.     Case T_HEADER
  580.         AddParaTag("HEAD")
  581.     Case T_TITLE
  582.         AddTag("TITLE")
  583.     Case T_BODY
  584.         AddParaTag("BODY")
  585.     Case T_INPUTTAG
  586.         AddTag(InputBox("Input tag", "", ""))
  587.     Case T_TAGDELETE
  588.         TagDelete()
  589.     Case T_TEMPLATE
  590.         AddTemplate()
  591.     Case T_EXIT
  592.         WriteProfileString("HTML", "Address", address$, .HomePath + "DanaInet.INI")
  593.         DiscardMenu(hMenu)
  594.         Terminate()
  595.     End Select
  596. End Proc
  597.  
  598. '//////////////////////////////////////////////////////////////////
  599. ' Delete Tags
  600. Proc TagDelete()
  601.     Dim s$, t$
  602.     s$ = GetSelected()
  603.     If s$ = "" Then Return
  604.     If MsgBox("Are you sure to delete all the tags in the selection?", "", MB_YESNO) = IDNO Then
  605.         Return
  606.     End If
  607.     t$ = s$
  608.     Dim Is%, It%, nC%
  609.     Dim bInTag%
  610.     Is = 0
  611.     It = 0
  612.     While True
  613.         nC = LodB(s$, Is)
  614.         Is = Is + 1
  615.         If nC = &H00 Then
  616.             StoB(t$, It, nC)
  617.             Exit While
  618.         End If
  619.         If bInTag = True Then
  620.             If nC = &H3E Then
  621.                 bInTag = False
  622.             End If
  623.         Else
  624.             If nC = &H3C Then            '<
  625.                 bInTag = True
  626.             Else
  627.                 StoB(t$, It, nC)
  628.                 It = It + 1
  629.             End If
  630.         End If
  631.     Wend
  632.     DelSelect()
  633.     InsertString(t$)
  634. End Proc
  635.  
  636. '//////////////////////////////////////////////////////////////////
  637. ' Template
  638. Proc AddTemplate()
  639.     Dim mask$
  640.     Dim title$
  641.     mask$ = ".html"
  642.     If WIN32S Then mask$ = ".htm"
  643.     Dim n%
  644.     Dim f$
  645.     f$ = GetOpenFile("*" + mask$)
  646.     n = InStr(f$, ".")
  647.     If n Then
  648.         n = n - 1
  649.     Else
  650.         n = Len(f$)
  651.         f$ = f$ + mask$
  652.     End If
  653.     FileOpen(f$)
  654.     Dim rc%
  655.     If .TotLine > 1 Then
  656.         rc = MsgBox("It is not a new file" + Chr(10) + "Do you clear it?", "", MB_YESNO | MB_ICONQUESTION | MB_DEFBUTTON2)
  657.         If rc = IDYES Then
  658.             Command("SelectAll")
  659.             DelSelect()
  660.         Else
  661.             Return
  662.         End If
  663.     End If
  664.     title$ = Left(.FileName, n)
  665.     title$ = InputBox("Input title", "", title$ + " Home Page")
  666.     address$ = InputBox("Input your E-Mail address", "", address$)
  667.     InsertString("<HTML>" + Chr(10) + "<HEAD>" + Chr(10) + "<TITLE>" + title$ + "</TITLE>" + Chr(10) + "</HEAD>" + Chr(10))
  668.     InsertString("<BODY>" + Chr(10))
  669.     InsertString("<CENTER><H2>Welcome to " + title$ + "</H2></CENTER><P>" + Chr(10))
  670.     InsertString("<HR>" + Chr(10))
  671.     InsertString(Chr(10) + "<!-- Main Subject -->" + Chr(10) + "<P>" + Chr(10) + Chr(10))
  672.     InsertString("<HR>" + Chr(10))
  673.     InsertString("<ADDRESS><A HREF=" + Chr(34) + "mailto:" + address$ + Chr(34) + ">")
  674.     InsertString("<" + address$ + "></A></ADDRESS><BR>" + Chr(10))
  675.     InsertString("</BODY>" + Chr(10) + "</HTML>")
  676.     FindBack("<!-- Main Subject -->", "")
  677.     Command("CsrLeft")
  678.     Command("CsrRight")
  679. End Proc
  680.  
  681. '//////////////////////////////////////////////////////////////////
  682. ' Add Table
  683. Proc AddTable()
  684.     If .BlkDisp = False Then
  685.         InsertString("<TABLE>" + Chr(10) + Chr(10) + "</TABLE>" + Chr(10))
  686.         Return
  687.     End If
  688.     Dim bCap%
  689.     Dim bHead%
  690.     If MsgBox("Do you want to make the first line a caption?", "", MB_YESNO | MB_ICONQUESTION) = IDYES Then
  691.         bCap = True
  692.     Else
  693.         bCap = False
  694.     End If
  695.     If MsgBox("Do you want to make the first line in each text block a header?", "", MB_YESNO | MB_ICONQUESTION) = IDYES Then
  696.         bHead = True
  697.     Else
  698.         bHead = False
  699.     End If
  700.  
  701.     Silent()
  702.  
  703.     Dim nTopL%, nBotL%, nLine%, I%
  704.     nTopL = .BlkBegL
  705.     nBotL = .BlkEndL
  706.     If .BlkEndC = 1 Then nBotL = nBotL-1
  707.     JumpLine(nTopL)
  708.     GotoThere(0, 1)
  709.     InsertString("<TABLE>" + Chr(10))
  710.     nLine = nTopL + 1
  711.     nBotL = nBotL + 1
  712.     Dim hLine%, sLine$
  713.     hLine = GetCurrentLine()
  714.     If bCap = True Then
  715.         sLine$ = LoadThisLine(hLine)
  716.         sLine$ = "<CAPTION>" + sLine$ + "</CAPTION>"
  717.         Command("DeleteAfter")
  718.         InsertString(sLine$)
  719.         nLine = nLine + 1
  720.         JumpLine(nLine)
  721.         GotoThere(0, 1)
  722.     End If
  723.     Dim bInBlock%
  724.     Dim TD$
  725.     bInBlock = False
  726.     Do While nLine <= nBotL
  727.         TD$ = "TD"
  728.         If bInBlock = False Then
  729.             InsertString("<TR>" + Chr(10))
  730.             bInBlock = True
  731.             nLine = nLine + 1
  732.             nBotL = nBotL + 1
  733.             If bHead = True Then
  734.                 TD$ = "TH"
  735.             End If
  736.         End If
  737.         hLine = GetCurrentLine()
  738.         sLine$ = LoadThisLine(hLine)
  739.         If sLine$ = "" Then
  740.             sLine$ = "</TR>"
  741.             bInBlock = False
  742.         Else
  743.             sLine$ = "<" + TD$ + ">" + sLine$ + "</"+ TD$ + ">"
  744.         End If
  745.         Command("DeleteAfter")
  746.         InsertString(sLine$)
  747.         nLine = nLine + 1
  748.         JumpLine(nLine)
  749.         GotoThere(0, 1)
  750.     Loop
  751.     If bInBlock = True Then
  752.         InsertString("</TR>" + Chr(10))
  753.     End If
  754.     InsertString("</TABLE>")
  755.     NoSilent()
  756.     SelectCancel()
  757.     Refresh()
  758. End Proc
  759.  
  760. '//////////////////////////////////////////////////////////////////
  761. ' Add Form
  762. Proc AddForm()
  763.     Dim Action$
  764.     Dim Form$
  765.     Dim nTopL%, nBotL%
  766.     Silent()
  767.     If .BlkDisp = True Then
  768.         nTopL = .BlkBegL
  769.         nBotL = .BlkEndL
  770.         If .BlkEndC = 1 Then nBotL = nBotL-1
  771.     Else
  772.         nTopL = .LineNoL
  773.         nBotL = .LineNoL
  774.     End If
  775.     JumpLine(nTopL)
  776.     Command("BegLine")
  777.     Action$ = InputBox("Input action", "", "mailto:" + address$)
  778.     Form$ = "<FORM METHOD=" + Chr(34) + "POST" + Chr(34) + " "
  779.     Form$ = Form$ + "ACTION=" + Chr(34) + Action$ + Chr(34) + ">" + Chr(10)
  780.     InsertString(Form$)
  781.     nBotL = nBotL + 1
  782.     JumpLine(nBotL)
  783.     SelectCancel()
  784.     Command("InsertAft")
  785.     Form$ = "</FORM>"
  786.     InsertString(Form$)
  787.     NoSilent()
  788.     Command("MakeMid")
  789. End Proc
  790.  
  791. '//////////////////////////////////////////////////////////////////
  792. ' Add Submit/Cancel Button
  793. Proc AddButton(t$)
  794.     Dim s$
  795.     Dim v$
  796.     v$ = InputBox("Input caption", "", "")
  797.     s$ = "<INPUT TYPE=" + Chr(34) + t$ + Chr(34)
  798.     If v$ <> "" Then
  799.         s$ = s$ + " VALUE=" + Chr(34) + v$ + Chr(34)
  800.     End If
  801.     s$ = s$ + "><P>" + Chr(10)
  802.     InsertString(s$)
  803. End Proc
  804.  
  805. '//////////////////////////////////////////////////////////////////
  806. ' Add Text Box
  807. Proc AddText(t$)
  808.     Dim s$
  809.     Dim n$, v$
  810.     nNum = nNum + 1
  811.     n$ = InputBox("Input a name of the field", "", t$ + Str(nNum))
  812.     v$ = InputBox("Input initial value", "", "")
  813.     s$ = "<INPUT NAME=" + Chr(34) + n$ + Chr(34) + " TYPE=" + Chr(34) + t$ + Chr(34)
  814.     If v$ <> "" Then
  815.         s$ = s$ + " VALUE=" + Chr(34) + v$ + Chr(34)
  816.     End If
  817.     s$ = s$ + "><P>" + Chr(10)
  818.     InsertString(s$)
  819. End Proc
  820.  
  821. '//////////////////////////////////////////////////////////////////
  822. ' Add Check Box
  823. Proc AddCheck(t$)
  824.     Dim s$
  825.     Dim n$, v$
  826.     nNum = nNum + 1
  827.     n$ = InputBox("Input a name of the field", "", t$ + Str(nNum))
  828.     v$ = InputBox("Input initial value", "", "True")
  829.     s$ = "<INPUT NAME=" + Chr(34) + n$ + Chr(34) + " TYPE=" + Chr(34) + t$ + Chr(34)
  830.     If v$ <> "" Then
  831.         s$ = s$ + " VALUE=" + Chr(34) + v$ + Chr(34)
  832.     End If
  833.     s$ = s$ + ">"
  834.     InsertString(s$)
  835. End Proc
  836.  
  837. '//////////////////////////////////////////////////////////////////
  838. ' Add Text Area
  839. Proc AddTextArea()
  840.     Dim n$, s$
  841.     nNum = nNum + 1
  842.     n$ = InputBox("Input a name of the field", "", "TextArea" + Str(nNum))
  843.     s$ = "<TEXTAREA NAME=" + Chr(34) + n$ + Chr(34)
  844.     s$ = s$ + "></TEXTAREA><P>" + Chr(10)
  845.     InsertString(s$)
  846. End Proc
  847.  
  848. '//////////////////////////////////////////////////////////////////
  849. ' Add Selection Box
  850. Proc AddSelect()
  851.     Dim nTopL%, nBotL%
  852.     Silent()
  853.     If .BlkDisp = True Then
  854.         nTopL = .BlkBegL
  855.         nBotL = .BlkEndL
  856.         If .BlkEndC = 1 Then nBotL = nBotL-1
  857.     Else
  858.         nTopL = .LineNoL
  859.         nBotL = .LineNoL
  860.     End If
  861.     JumpLine(nTopL)
  862.     Command("BegLine")
  863.     Dim n$, z$
  864.     Dim Items%
  865.     nNum = nNum + 1
  866.     n$ = InputBox("Input a name of the field", "", "Select" + Str(nNum))
  867.     Items% = (nBotL-nTopL) + 1
  868.     If Items > 10 Then Items = 10
  869.     Dim s$
  870.     s$ = "<SELECT NAME=" + Chr(34) + n$ + Chr(34) + ">" + Chr(10)
  871.     InsertString(s$)
  872.     nBotL = nBotL + 1
  873.     Dim nLine%
  874.     nLine = nTopL + 1
  875.     While nLine <= nBotL
  876.         JumpLine(nLine)
  877.         Command("BegLine")
  878.         If nLine = nTopL + 1 Then
  879.             InsertString("<OPTION SELECTED>")
  880.         Else
  881.             InsertString("<OPTION>")
  882.         End If
  883.         nLine = nLine + 1
  884.     Wend
  885.     SelectCancel()
  886.     Command("InsertAft")
  887.     InsertString("</SELECT><P>")
  888.     NoSilent()
  889.     Command("MakeMid")
  890. End Proc
  891.  
  892. '//////////////////////////////////////////////////////////////////
  893. ' Add List
  894. Proc AddList(Mode$)
  895.     Silent()
  896.     AddString("<LI>")
  897.     GotoThere(.BlkBeg, 1)
  898.     InsertString("<" + Mode$ + ">" + Chr(10))
  899.     JumpLine(.BlkEndL)
  900.     Command("EndLine")
  901.     InsertString(Chr(10) + "</" + Mode$ + ">")
  902.     SelectCancel()
  903.     NoSilent()
  904.     Command("MakeMid")
  905. End Proc
  906.  
  907. '//////////////////////////////////////////////////////////////////
  908. ' Add Defined List
  909. Proc AddDefList()
  910.     Dim nTopL%, nBotL%
  911.     Silent()
  912.     If .BlkDisp = True Then
  913.         nTopL = .BlkBegL
  914.         nBotL = .BlkEndL
  915.         If .BlkEndC = 1 Then nBotL = nBotL-1
  916.     Else
  917.         nTopL = .LineNoL
  918.         nBotL = .LineNoL
  919.     End If
  920.     JumpLine(nTopL)
  921.     Command("BegLine")
  922.     InsertString("<DL>" + Chr(10))
  923.     nBotL = nBotL + 1
  924.     Dim nLine%
  925.     nLine = nTopL + 1
  926.     Dim hLine%
  927.     Dim sLine$
  928.     While nLine <= nBotL
  929.         hLine = GetThisLine(nLine)
  930.         sLine$ = LoadThisLine(hLine)
  931.         Dim nC%, nIdx
  932.         nC = Asc(Left(sLine$, 1))
  933.         If nC = &H20 Or nC = &H09 Then
  934.             sLine$ = "<DD>" + LTrim(sLine$)
  935.         Else
  936.             sLine$ = "<DT>" + sLine$
  937.         End If
  938.         SaveThisLine(hLine, sLine$)
  939.         nLine = nLine + 1
  940.     Wend
  941.     JumpLine(nBotL)
  942.     SelectCancel()
  943.     Command("InsertAft")
  944.     InsertString("</DL>")
  945.     NoSilent()
  946.     Command("MakeMid")
  947. End Proc
  948.  
  949. '//////////////////////////////////////////////////////////////////
  950. ' Add Top of Line(s)
  951. Proc AddTops(tag$)
  952.     Dim s$
  953.     s$ = "<" + tag$ + ">"
  954.     If .BlkDisp = False Then
  955.         Command("BegLine")
  956.         InsertString(s$)
  957.     Else
  958.         AddString(s$)
  959.     End If
  960. End Proc
  961.  
  962. '//////////////////////////////////////////////////////////////////
  963. ' Add End of Line
  964. Proc AddEnd(tag$)
  965.     Dim s$
  966.     s$ = GetSelected()
  967.     If s$ = "" Then
  968.         Command("EndLine")
  969.     Else
  970.         DelSelect()
  971.     End If
  972.     s$ = s$ + "<" + tag$ + ">"
  973.     InsertString(s$)
  974. End Proc
  975.  
  976. '//////////////////////////////////////////////////////////////////
  977. ' Add Front And End of Paragraph
  978. Proc AddParaTag(tag$)
  979.     Dim s$
  980.     s$ = GetSelected()
  981.     s$ = "<" + tag$ + ">" + Chr(10) + s$ + "</" + tag$ + ">" + Chr(10)
  982.     DelSelect()
  983.     InsertString(s$)
  984. End Proc
  985.  
  986. '//////////////////////////////////////////////////////////////////
  987. ' Add Font Size
  988. Proc AddFontSize(size%)
  989.     Dim s$
  990.     s$ = GetSelected()
  991.     s$ = "<FONT SIZE=" + Str$(size) + ">" + s$ + "</FONT>"
  992.     DelSelect()
  993.     InsertString(s$)
  994. End Proc
  995.  
  996. Proc AddBaseSize(size%)
  997.     Dim s$
  998.     s$ = "<FONT SIZE=" + Str$(size) + ">" + Chr(10)
  999.     InsertString(s$)
  1000. End Proc
  1001.  
  1002.  
  1003. '//////////////////////////////////////////////////////////////////
  1004. ' Add Font Color
  1005. Proc AddFontColor()
  1006.     Dim s$
  1007.      s$ = GetSelected()
  1008.     s$ = "<FONT" + GetColorString("COLOR") + ">" + s$ + "</FONT>"
  1009.     DelSelect()
  1010.     InsertString(s$)
  1011. End Proc
  1012.  
  1013. '//////////////////////////////////////////////////////////////////
  1014. ' Add Tag
  1015. Proc AddTag(tag$)
  1016.     Dim s$
  1017.     s$ = GetSelected()
  1018.     s$ = "<" + tag$ + ">" + s$ + "</" + tag$ + ">"
  1019.     DelSelect()
  1020.     InsertString(s$)
  1021. End Proc
  1022.  
  1023. '//////////////////////////////////////////////////////////////////
  1024. ' Add Address
  1025. Proc AddAddress()
  1026.     Dim s$
  1027.     s$ = GetSelected()
  1028.     If s$ = "" Then s$ = address$
  1029.     s$ = InputBox("Input a E-Mail address", "", s$)
  1030.     s$ = "<ADDRESS><A HREF=" + Chr(34) + "mailto:" + s$ + Chr(34) + ">" + s$ + "</A></ADDRESS>"
  1031.     DelSelect()
  1032.     InsertString(s$)
  1033. End Proc
  1034.  
  1035. '//////////////////////////////////////////////////////////////////
  1036. ' Add Inline Image
  1037. Proc AddImage()
  1038.     Dim s$
  1039.     s$ = GetOpenFile("*.gif")
  1040.     s$ = "<IMG SRC=" + Chr(34) + s$ + Chr(34) + ">"
  1041.     InsertString(s$)
  1042. End Proc
  1043.  
  1044. Proc AddInline()
  1045.     Dim s$
  1046.     s$ = InputBox("Input a source of a image", "", "")
  1047.     s$ = "<IMG SRC=" + Chr(34) + s$ + Chr(34) + ">"
  1048.     InsertString(s$)
  1049. End Proc
  1050.  
  1051. '//////////////////////////////////////////////////////////////////
  1052. ' Add Comment
  1053. Proc AddCmt()
  1054.     Dim s$
  1055.     s$ = GetSelected()
  1056.     s$ = "<!--" + s$ + "-->"
  1057.     DelSelect()
  1058.     InsertString(s$)
  1059. End Proc
  1060.  
  1061. '//////////////////////////////////////////////////////////////////
  1062. ' Add Reference Tag
  1063. Proc AddRef(ref$)
  1064.     Dim s$
  1065.     s$ = GetSelected()
  1066.     s$ = "<A HREF=" + Chr(34) + ref$ + Chr(34)+ ">" + s$ + "</A>"
  1067.     DelSelect()
  1068.     InsertString(s$)
  1069. End Proc
  1070.  
  1071. '//////////////////////////////////////////////////////////////////
  1072. ' In tag situation
  1073.  
  1074. Const V_ALIGNLEFT   = 1
  1075. Const V_ALIGNCENTER = 2
  1076. Const V_ALIGNRIGHT  = 3
  1077. Const V_ALIGNTOP    = 4
  1078. Const V_ALIGNMIDDLE = 5
  1079. Const V_ALIGNBOTTOM = 6
  1080. Const V_ALIGNJUST   = 7
  1081. Const V_BKGNDGIF    = 8
  1082. Const V_BKGNDCOL    = 9
  1083. Const V_TEXTCOL     = 10
  1084. Const V_LINKCOL     = 11
  1085. Const V_VLINKCOL    = 12
  1086. Const V_ALINKCOL    = 13
  1087.  
  1088. Const V_WIDTH  = 101
  1089. Const V_PWIDTH = 102
  1090. Const V_SIZE   = 103
  1091. Const V_NOSHADE= 104
  1092. Const V_COLOR  = 105
  1093.  
  1094. Const V_TYPETEXT = 201
  1095. Const V_TYPEPASS = 202
  1096. Const V_TYPECHECK = 203
  1097. Const V_TYPERADIO = 204
  1098. Const V_TYPEIMAGE = 205
  1099. Const V_TYPEHIDDEN = 206
  1100. Const V_TYPESUBMIT = 207
  1101. Const V_TYPERESET = 208
  1102. Const V_NAME = 209
  1103. Const V_VALUE = 210
  1104. Const V_CHECK = 211
  1105. Const V_SIZE = 212
  1106. Const V_MAXLENGTH = 213
  1107. Const V_MULTIPLE = 214
  1108.  
  1109. Const V_ROWS = 215
  1110. Const V_COLS = 216
  1111. Const V_OFF = 217
  1112. Const V_VIRTUAL = 218
  1113. Const V_PHYSICAL = 219
  1114. Const V_SELECTED = 220
  1115.  
  1116. Const V_BORDER = 251
  1117. Const V_CELLSPACING = 252
  1118. Const V_CELLPADDING = 253
  1119. Const V_VALIGNTOP    = 254
  1120. Const V_VALIGNMIDDLE = 255
  1121. Const V_VALIGNBOTTOM = 256
  1122. Const V_NOWRAP = 257
  1123. Const V_COLSPAN = 258
  1124. Const V_ROWSPAN = 259
  1125.  
  1126. Const V_TYPE_DISC = 300
  1127. Const V_TYPE_CIRCLE = 301
  1128. Const V_TYPE_SQUARE = 302
  1129.  
  1130. Const V_TYPE_A = 311
  1131. Const V_TYPE_SA = 312
  1132. Const V_TYPE_I = 313
  1133. Const V_TYPE_SI = 314
  1134. Const V_TYPE_N = 315
  1135.  
  1136. Const V_VALUENUM = 316
  1137.  
  1138. Proc InTag(sCsr$)
  1139.     Dim hMenuX%, hMenuXAlign%, hMenuXAlign2%, hMenuXType%
  1140.     hMenuX = NewMenu()
  1141.     sCsr$ = UCase(sCsr$)
  1142.     If Left(sCsr$, 1) = "H" Then
  1143.         Dim nVal%
  1144.         nVal = Val(Mid(sCsr$, 2, 1))
  1145.         If nVal >= 1 And nVal <= 6 Then
  1146.             hMenuXAlign = AddMenuItem(hMenuX, "&Align", 0)
  1147.                 AddMenuItem(hMenuXAlign, "&Left", V_ALIGNLEFT)
  1148.                 AddMenuItem(hMenuXAlign, "&Center", V_ALIGNCENTER)
  1149.                 AddMenuItem(hMenuXAlign, "&Right", V_ALIGNRIGHT)
  1150.         Else If sCsr$ = "HR" Then
  1151.             hMenuXAlign = AddMenuItem(hMenuX, "&Align", 0)
  1152.                 AddMenuItem(hMenuXAlign, "&Left", V_ALIGNLEFT)
  1153.                 AddMenuItem(hMenuXAlign, "&Center", V_ALIGNCENTER)
  1154.                 AddMenuItem(hMenuXAlign, "&Right", V_ALIGNRIGHT)
  1155.             AddMenuItem(hMenuX, "&Width(pixel)...", V_WIDTH)
  1156.             AddMenuItem(hMenuX, "Width(&percentage)...", V_PWIDTH)
  1157.             AddMenuItem(hMenuX, "Si&ze...", V_SIZE)
  1158.             AddMenuItem(hMenuX, "&No Shade...", V_NOSHADE)
  1159.         End If
  1160.     Else
  1161.         If      sCsr$ = "DIV" Then
  1162.             hMenuXAlign = AddMenuItem(hMenuX, "&Align", 0)
  1163.                 AddMenuItem(hMenuXAlign, "&Left", V_ALIGNLEFT)
  1164.                 AddMenuItem(hMenuXAlign, "&Center", V_ALIGNCENTER)
  1165.                 AddMenuItem(hMenuXAlign, "&Right", V_ALIGNRIGHT)
  1166.                 AddMenuItem(hMenuXAlign, "&Jusify", V_ALIGNJUST)
  1167.         Else If sCsr$ = "PRE" Then
  1168.             AddMenuItem(hMenuX, "&Width...", V_WIDTH)
  1169.         Else If sCsr$ = "IMG" Then
  1170.             hMenuXAlign = AddMenuItem(hMenuX, "&Align", 0)
  1171.                 AddMenuItem(hMenuXAlign, "&Top", V_ALIGNTOP)
  1172.                 AddMenuItem(hMenuXAlign, "&Middle", V_ALIGNMIDDLE)
  1173.                 AddMenuItem(hMenuXAlign, "&Bottom", V_ALIGNBOTTOM)
  1174.                 If NETSCAPE = True Then
  1175.                     AddMenuItem(hMenuXAlign, "&Left", V_ALIGNLEFT)
  1176.                     AddMenuItem(hMenuXAlign, "&Center", V_ALIGNCENTER)
  1177.                     AddMenuItem(hMenuXAlign, "&Right", V_ALIGNRIGHT)
  1178.                 End If
  1179.         Else If sCsr$ = "BODY" Then
  1180.             AddMenuItem(hMenuX, "Background &GIF...", V_BKGNDGIF)
  1181.             AddMenuItem(hMenuX, "Background &Color...", V_BKGNDCOL)
  1182.             AddMenuItem(hMenuX, "&Text Color...", V_TEXTCOL)
  1183.             AddMenuItem(hMenuX, "&Link Color...", V_LINKCOL)
  1184.             If NETSCAPE = True Then
  1185.                 AddMenuItem(hMenuX, "&Visited Link Color...", V_VLINKCOL)
  1186.                 AddMenuItem(hMenuX, "&Active Link Color...", V_ALINKCOL)
  1187.             End If
  1188.         Else If sCsr$ = "FONT" Then
  1189.             If NETSCAPE = True Then
  1190.                 AddMenuItem(hMenuX, "&Color...", V_COLOR)
  1191.                 AddMenuItem(hMenuX, "Si&ze...", V_SIZE)
  1192.             End If
  1193.         Else If sCsr$ = "FORM" Then
  1194.         Else If sCsr$ = "INPUT" Then
  1195.             hMenuXType = AddMenuItem(hMenuX, "&Type...", 0)
  1196.                 AddMenuItem(hMenuXType, "&Text Box", V_TYPETEXT)
  1197.                 AddMenuItem(hMenuXType, "&Password", V_TYPEPASS)
  1198.                 AddMenuItem(hMenuXType, "&Check Box", V_TYPECHECK)
  1199.                 AddMenuItem(hMenuXType, "&Radio Button", V_TYPERADIO)
  1200.                 AddMenuItem(hMenuXType, "&Image", V_TYPEIMAGE)
  1201.                 AddMenuItem(hMenuXType, "&Hidden", V_TYPEHIDDEN)
  1202.                 AddMenuItem(hMenuXType, "&Submit", V_TYPESUBMIT)
  1203.                 AddMenuItem(hMenuXType, "R&eset", V_TYPERESET)
  1204.             AddMenuItem(hMenuX, "&Name...", V_NAME)
  1205.             AddMenuItem(hMenuX, "&Value...", V_VALUE)
  1206.             AddMenuItem(hMenuX, "&Check(CHECKBOX/RADIO)...", V_CHECK)
  1207.             AddMenuItem(hMenuX, "&Visible Length(TEXT/PASSWORD)...", V_SIZE)
  1208.             AddMenuItem(hMenuX, "&Max Length(TEXT/PASSWORD)...", V_MAXLENGTH)
  1209.         Else If sCsr$ = "SELECT" Then
  1210.             AddMenuItem(hMenuX, "&Name...", V_NAME)
  1211.             AddMenuItem(hMenuX, "&Visible Height...", V_SIZE)
  1212.             AddMenuItem(hMenuX, "&Multiple Select...", V_MULTIPLE)
  1213.         Else If sCsr$ = "TEXTAREA" Then
  1214.             AddMenuItem(hMenuX, "&Name...", V_NAME)
  1215.             AddMenuItem(hMenuX, "&Rows...", V_ROWS)
  1216.             AddMenuItem(hMenuX, "&Columns...", V_COLS)
  1217.             If NETSCAPE = True Then
  1218.                 hMenuXType = AddMenuItem(hMenuX, "&Word Wrap...", 0)
  1219.                     AddMenuItem(hMenuXType, "O&ff", V_OFF)
  1220.                     AddMenuItem(hMenuXType, "&Virtual", V_VIRTUAL)
  1221.                     AddMenuItem(hMenuXType, "&Physical", V_PHYSICAL)
  1222.             End If
  1223.         Else If sCsr$ = "OPTION" Then
  1224.             AddMenuItem(hMenuX, "&Selected...", V_SELECTED)
  1225.         Else If sCsr$ = "TABLE" Then
  1226.             AddMenuItem(hMenuX, "&Border...", V_BORDER)
  1227.             AddMenuItem(hMenuX, "Cell &Spacing...", V_CELLSPACING)
  1228.             AddMenuItem(hMenuX, "Cell Pa&dding...", V_CELLPADDING)
  1229.             AddMenuItem(hMenuX, "&Width(pixel)...", V_WIDTH)
  1230.             AddMenuItem(hMenuX, "Width(&percentage)...", V_PWIDTH)
  1231.         Else If sCsr$ = "TR" Or sCsr$ = "TD" Or sCsr$ = "TH" Then
  1232.             hMenuXAlign = AddMenuItem(hMenuX, "&Align", 0)
  1233.                 AddMenuItem(hMenuXAlign, "&Left", V_ALIGNLEFT)
  1234.                 AddMenuItem(hMenuXAlign, "&Center", V_ALIGNCENTER)
  1235.                 AddMenuItem(hMenuXAlign, "&Right", V_ALIGNRIGHT)
  1236.             hMenuXAlign2 = AddMenuItem(hMenuX, "&Vertical Align", 0)
  1237.                 AddMenuItem(hMenuXAlign2, "&Top", V_VALIGNTOP)
  1238.                 AddMenuItem(hMenuXAlign2, "&Middle", V_VALIGNMIDDLE)
  1239.                 AddMenuItem(hMenuXAlign2, "&Bottom", V_VALIGNBOTTOM)
  1240.             If sCsr$ = "TD" Or sCsr$ = "TH" Then
  1241.                 AddMenuItem(hMenuX, "No &Wrap...", V_NOWRAP)
  1242.                 AddMenuItem(hMenuX, "C&olumn Span...", V_COLSPAN)
  1243.                 AddMenuItem(hMenuX, "Row &Span...", V_ROWSPAN)
  1244.                 AddMenuItem(hMenuX, "&Width(pixel)...", V_WIDTH)
  1245.                 AddMenuItem(hMenuX, "Width(&percentage)...", V_PWIDTH)
  1246.             End If
  1247.         Else If sCsr$ = "CAPTION" Then
  1248.             hMenuXAlign = AddMenuItem(hMenuX, "&Align", 0)
  1249.                 AddMenuItem(hMenuXAlign, "&Top", V_ALIGNTOP)
  1250.                 AddMenuItem(hMenuXAlign, "&Bottom", V_ALIGNBOTTOM)
  1251.         Else If sCsr$ = "P" Then
  1252.             hMenuXAlign = AddMenuItem(hMenuX, "&Align", 0)
  1253.                 AddMenuItem(hMenuXAlign, "&Left", V_ALIGNLEFT)
  1254.                 AddMenuItem(hMenuXAlign, "&Center", V_ALIGNCENTER)
  1255.                 AddMenuItem(hMenuXAlign, "&Right", V_ALIGNRIGHT)
  1256.         Else If sCsr$ = "UL" Then
  1257.             hMenuXType = AddMenuItem(hMenuX, "&Type", 0)
  1258.                 AddMenuItem(hMenuXType, "&Disc", V_TYPE_DISC)
  1259.                 AddMenuItem(hMenuXType, "&Circle", V_TYPE_CIRCLE)
  1260.                 AddMenuItem(hMenuXType, "&Square", V_TYPE_SQUARE)
  1261.         Else If sCsr$ = "OL" Then
  1262.             hMenuXType = AddMenuItem(hMenuX, "&Type", 0)
  1263.                 AddMenuItem(hMenuXType, "&A", V_TYPE_A)
  1264.                 AddMenuItem(hMenuXType, "&a", V_TYPE_SA)
  1265.                 AddMenuItem(hMenuXType, "&I", V_TYPE_I)
  1266.                 AddMenuItem(hMenuXType, "&i", V_TYPE_SI)
  1267.                 AddMenuItem(hMenuXType, "&1", V_TYPE_N)
  1268.             AddMenuItem(hMenuX, "&Beginnig Number...", V_VALUENUM)
  1269.         Else If sCsr$ = "LI" Then
  1270.         End If
  1271.     End If
  1272.  
  1273.     Dim nRC%
  1274.     Dim sAdd$
  1275.     nRC = DoMenu(hMenuX)
  1276.     DiscardMenu(hMenuX)
  1277.  
  1278.     Select Case nRC
  1279.     Case -1                ' Canceled
  1280.         Return
  1281.     Case V_ALIGNLEFT
  1282.         sAdd$ = " ALIGN=LEFT"
  1283.     Case V_ALIGNCENTER
  1284.         sAdd$ = " ALIGN=CENTER"
  1285.     Case V_ALIGNRIGHT
  1286.         sAdd$ = " ALIGN=RIGHT"
  1287.     Case V_ALIGNTOP
  1288.         sAdd$ = " ALIGN=TOP"
  1289.     Case V_ALIGNMIDDLE
  1290.         sAdd$ = " ALIGN=MIDDLE"
  1291.     Case V_ALIGNBOTTOM
  1292.         sAdd$ = " ALIGN=BOTTOM"
  1293.     Case V_ALIGNJUST
  1294.         sAdd$ = " ALIGN=JUSTIFY"
  1295.     Case V_TYPE_DISC
  1296.         sAdd$ = SetType("DISC")
  1297.     Case V_TYPE_CIRCLE
  1298.         sAdd$ = SetType("CIRCLE")
  1299.     Case V_TYPE_SQUARE
  1300.         sAdd$ = SetType("SQUARE")
  1301.     Case V_TYPE_A
  1302.         sAdd$ = SetType("A")
  1303.     Case V_TYPE_SA
  1304.         sAdd$ = SetType("a")
  1305.     Case V_TYPE_I
  1306.         sAdd$ = SetType("I")
  1307.     Case V_TYPE_SI
  1308.         sAdd$ = SetType("i")
  1309.     Case V_TYPE_N
  1310.         sAdd$ = SetType("1")
  1311.     Case V_VALUENUM
  1312.         sAdd$ = GetSizeString("VALUE")
  1313.     Case V_BKGNDGIF
  1314.         sAdd$ = GetOpenFileString("*.gif", "BACKGROUND")
  1315.     Case V_BKGNDCOL
  1316.         sAdd$ = GetColorString("BGCOLOR")
  1317.     Case V_COLOR
  1318.         sAdd$ = GetColorString("COLOR")
  1319.     Case V_TEXTCOL
  1320.         sAdd$ = GetColorString("TEXT")
  1321.     Case V_LINKCOL
  1322.         sAdd$ = GetColorString("LINK")
  1323.     Case V_VLINKCOL
  1324.         sAdd$ = GetColorString("VLINK")
  1325.     Case V_ALINKCOL
  1326.         sAdd$ = GetColorString("ALINK")
  1327.     Case V_WIDTH
  1328.         sAdd$ = GetSizeString("WIDTH")
  1329.     Case V_PWIDTH
  1330.         sAdd$ = GetSizeString("WIDTH")
  1331.         If Right(sAdd$, 1) <> "=" Then sAdd$ = sAdd$ + "%"
  1332.     Case V_SIZE
  1333.         sAdd$ = GetSizeString("SIZE")
  1334.     Case V_NOSHADE
  1335.         sAdd$ = " NOSHADE"
  1336.     Case V_TYPETEXT
  1337.         sAdd$ = " TYPE=" + Chr(34) + "TEXT" + Chr(34)
  1338.     Case V_TYPEPASS
  1339.         sAdd$ = " TYPE=" + Chr(34) + "PASSWORD" + Chr(34)
  1340.     Case V_TYPECHECK
  1341.         sAdd$ = " TYPE=" + Chr(34) + "CHECKBOX" + Chr(34)
  1342.     Case V_TYPERADIO
  1343.         sAdd$ = " TYPE=" + Chr(34) + "RADIO" + Chr(34)
  1344.     Case V_TYPEIMAGE
  1345.         sAdd$ = " TYPE=" + Chr(34) + "IMAGE" + Chr(34)
  1346.     Case V_TYPEHIDDEN
  1347.         sAdd$ = " TYPE=" + Chr(34) + "HIDDEN" + Chr(34)
  1348.     Case V_TYPESUBMIT
  1349.         sAdd$ = " TYPE=" + Chr(34) + "SUBMIT" + Chr(34)
  1350.     Case V_TYPERESET
  1351.         sAdd$ = " TYPE=" + Chr(34) + "RESET" + Chr(34)
  1352.     Case V_NAME
  1353.         sAdd$ = GetNameString("NAME")
  1354.     Case V_VALUE
  1355.         sAdd$ = GetNameString("VALUE")
  1356.     Case V_CHECK
  1357.         sAdd$ = " CHECKED"
  1358.     Case V_MAXLENGTH
  1359.         sAdd$ = GetSizeString("MAXLENGTH")
  1360.     Case V_MULTIPLE
  1361.         sAdd$ = " MULTIPLE"
  1362.     Case V_ROWS
  1363.         sAdd$ = GetSizeString("ROWS")
  1364.     Case V_COLS
  1365.         sAdd$ = GetSizeString("COLS")
  1366.     Case V_OFF
  1367.         sAdd$ = " WRAP=OFF"
  1368.     Case V_VIRTUAL
  1369.         sAdd$ = " WRAP=VIRTUAL"
  1370.     Case V_PHYSICAL
  1371.         sAdd$ = " WRAP=PHYSICAL"
  1372.     Case V_SELECTED
  1373.         sAdd$ = " SELECTED"
  1374.     Case V_BORDER
  1375.         sAdd$ = " BORDER"
  1376.     Case V_CELLSPACING
  1377.         sAdd$ = GetSizeString("CELLSPACING")
  1378.     Case V_CELLPADDING
  1379.         sAdd$ = GetSizeString("CELLPADDING")
  1380.     Case V_VALIGNTOP
  1381.         sAdd$ = " VALIGN=TOP"
  1382.     Case V_VALIGNMIDDLE
  1383.         sAdd$ = " VALIGN=MIDDLE"
  1384.     Case V_VALIGNBOTTOM
  1385.         sAdd$ = " VALIGN=BOTTOM"
  1386.     Case V_NOWRAP
  1387.         sAdd$ = " NOWRAP"
  1388.     Case V_COLSPAN
  1389.         sAdd$ = GetSizeString("COLSPAN")
  1390.     Case V_ROWSPAN
  1391.         sAdd$ = GetSizeString("ROWSPAN")
  1392.     End Select
  1393.  
  1394.     If sAdd$ = "" Then
  1395.         Return
  1396.     End If
  1397.  
  1398.     If Right(sAdd$, 1) = "=" Then
  1399.         If MsgBox("Are you sure to set this default?", "", MB_ICONQUESTION | MB_YESNO) = IDNO Then
  1400.             Return
  1401.         End If
  1402.     End If
  1403.  
  1404.     Dim l$
  1405.     l$ = Left(sAdd$, InStr(sAdd$, "="))
  1406.     If l$ = "" Then
  1407.         l$ = sAdd$
  1408.     End If
  1409.  
  1410.     Dim nC%
  1411.     Dim sSel$
  1412.     Silent()
  1413.     Command("SelectBegin")
  1414.     nC = GetCurrentChar()
  1415.     While nC <> Asc(">")
  1416.         Command("CsrRight")
  1417.         nC = GetCurrentChar()
  1418.     Wend
  1419.  
  1420.     sSel$ = GetSelected()
  1421.     NoSilent()
  1422.     Dim nBeg%, nEnd%
  1423.     nBeg% = InStr(sSel$, l$)
  1424.     If Right(sAdd$, 1) = "=" Then
  1425.         sAdd$ = ""
  1426.     Else If sAdd$ = l$ Then
  1427.         If MsgBox("Do you want to set this?(Yes:set / No:reset)", "", MB_YESNO | MB_ICONQUESTION) = IDNO Then
  1428.             sAdd$ = ""
  1429.         End If
  1430.     End If
  1431.     If nBeg Then
  1432.         nEnd = nBeg
  1433.         Dim sTmp$
  1434.         While True
  1435.             nEnd = nEnd + 1
  1436.             sTmp$ = Mid(sSel$, nEnd, 1)
  1437.             If sTmp$ = " " Or sTmp$ = Chr(&H09) Or sTmp$ = ">" Or sTmp$ = "" Then
  1438.                 Exit
  1439.             End If
  1440.         Wend
  1441.         sAdd$ = Left(sSel$, nBeg - 1) + sAdd$ + Mid(sSel$, nEnd, Len(sSel$))
  1442.         DelSelect()
  1443.         InsertString(sAdd$)
  1444.     Else
  1445.         SelectCancel()
  1446.         InsertString(sAdd$)
  1447.     End If
  1448.     Refresh()
  1449. End Proc
  1450.  
  1451. '/////////////////////////////////////////////////////////////////////
  1452. ' Input Library
  1453. Proc SetType(t$) As String
  1454.     Return " TYPE=" + t$
  1455. End Proc
  1456.  
  1457. Proc GetSizeString(size$) As String
  1458.     Dim z$
  1459.     z$ = InputBox("Input value", "", "")
  1460.     z$ = " " + size$ + "=" + z$
  1461.     Return z$
  1462. End Proc
  1463.  
  1464. Proc GetNameString(name$) As String
  1465.     Dim n$
  1466.     n$ = InputBox("Input string", "", "")
  1467.     If n$ <> "" Then
  1468.         n$ = " " + name$ + "=" + Chr(34) + n$ + Chr(34)
  1469.     Else
  1470.         n$ = " " + name$ + "="
  1471.     End If
  1472.     Return n$
  1473. End Proc
  1474.  
  1475. Proc GetColorString(col$) As String
  1476.     Dim c$
  1477.     Static lpCol%(16)
  1478.     Dim cc%(9)
  1479.     cc(1) = 36
  1480.     cc(2) = .hMainWnd
  1481.     cc(3) = 0
  1482.     cc(4) = 0
  1483.     cc(5) = lpCol
  1484.     cc(6) = 0
  1485.     cc(7) = 0
  1486.     cc(8) = 0
  1487.     cc(9) = 0
  1488.     If ChooseColor(cc) = True Then
  1489.         Dim r%, g%, b%
  1490.         r = cc(4) & &HFF
  1491.         g = (cc(4) >> 8) & &HFF
  1492.         b = (cc(4) >> 16) & &HFF
  1493.         c$ = Space$(10)
  1494.         wsprintf(c$, "%02X%02X%02X", r, g, b)
  1495.         c$ = InputBox("Adjust RGB value", "", c$)
  1496.         If c$ <> "" Then
  1497.             c$ = " " + col$ + "=" + Chr(34) + "#" + c$ + Chr(34)
  1498.         Else
  1499.             c$ = " " + col$ + "="
  1500.         End If
  1501.     End If
  1502.     Return c$
  1503. End Proc
  1504.  
  1505. Proc GetOpenFileString(filt$, item$)
  1506.     Dim o$
  1507.     o$ = GetOpenFile(filt$)
  1508.     o$ = " " + item$ + "=" + Chr(34) + o$ + Chr(34)
  1509.     Return o$
  1510. End Proc
  1511.