home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 5 Edit / 05-Edit.zip / htmlepm.zip / HTMLTAGS.E next >
Text File  |  1995-06-02  |  23KB  |  612 lines

  1. compile if not defined(SMALL)  -- If SMALL not defined, then being separately compiled
  2.  define INCLUDING_FILE = 'HTMLTAGS.E'
  3. const
  4.    tryinclude 'MYCNF.E'        -- the user's configuration customizations.   
  5.  compile if not defined(SITE_CONFIG)
  6.     const SITE_CONFIG = 'SITECNF.E'
  7.  compile endif
  8.  compile if SITE_CONFIG
  9.     tryinclude SITE_CONFIG
  10.  compile endif
  11. compile endif
  12.  
  13.  
  14. const
  15. compile if not defined(WANT_DYNAMIC_PROMPTS)
  16.    WANT_DYNAMIC_PROMPTS = 1
  17. compile endif
  18. compile if EVERSION < '5.21'
  19.    TILDE_CHAR = ''
  20. compile else
  21.    TILDE_CHAR = '~'
  22. compile endif
  23.    AF_CHAR        =   1   -- key style constants (from STDCONST.E)
  24.    AF_ALT         =  32
  25.  
  26.  
  27. const  -- Text defined separately, for easier NLS translation
  28.    HTMLVERSION=      '0.95'
  29.    HTMLTAGS_BAR__MSG =      TILDE_CHAR'HTML '
  30.    TITLE_MENU_MSG =          '~Title'
  31.    CENTER_MENU_MSG =          '~Center'
  32.    SEPARATORS_MENU_MSG =     '~Separators'
  33.    PARAGRAPH_MENU__MSG =      '~Paragraph'
  34.    FORCEDLINE_MENU_MSG =      '~Forced Line Break'
  35.    HORIZONTALRULE_MENU_MSG =  '~Horizontal rule'
  36.    ANCHOR_MENU_MSG =          'Lin~k to'
  37.    IMAGE_MENU_MSG =          '~Image Inline'
  38.    TARGET_MENU_MSG=         '~Target'
  39.    HEADINGS_MENU__MSG =      '~Headings'
  40.    HEAD1_MENU__MSG =           'Heading ~1'
  41.    HEAD2_MENU__MSG =           'Heading ~2'
  42.    HEAD3_MENU__MSG =           'Heading ~3'
  43.    HEAD4_MENU__MSG =           'Heading ~4'
  44.    HEAD5_MENU__MSG =           'Heading ~5'
  45.    HEAD6_MENU__MSG =           'Heading ~6'
  46.    STYLES_MENU_MSG =          '~Styles'
  47.    LOGICAL_MENU_MSG =          '~Logical Styles'
  48.    EM_MENU__MSG =               '~Emphasize'
  49.    STRONG_MENU_MSG =            '~Strong emphasize'
  50.    PREFORMAT_MENU_MSG =         '~Preformated Text'
  51.    PHYSICAL_MENU__MSG =        '~Physical styles'
  52.    UNDERLINE_MENU__MSG =        '~Underline'
  53.    ITALIC_MENU__MSG =           '~Italic'
  54.    BOLD_MENU__MSG =             '~Bold'
  55.    TYPEWRITER_MENU__MSG =       '~Typewriter'
  56.    LISTS_MENU_MSG =            '~Lists'
  57.    LIST_ITEM_MENU__MSG =         'List ~Item'
  58.    OLIST_MENU__MSG =            '~Ordered list'
  59.    ULIST_MENU__MSG =            '~Unordered list'
  60.    SLIST_MENU__MSG =            '~Menu list'
  61.    DLIST_MENU__MSG =             'Definition ~List'
  62.    DLISTTERM_MENU_MSG =          'Definition List ~Term'
  63.    DLISTDEF_MENU_MSG =           'Definition List ~Definition'
  64.    SPECIAL_MENU_MSG =           'Speci~al Characters'
  65.    LEFTANGLE_MENU_MSG =          '~<'
  66.    RIGHTANGLE_MENU_MSG =         '~>'
  67.    A_ACUTE_MENU_MSG =            'á    - C_A'
  68.    E_ACUTE_MENU_MSG =            'é    - C_E'
  69.    I_ACUTE_MENU_MSG =            'í    - C_I'
  70.    O_ACUTE_MENU_MSG =            'ó    - C_O'
  71.    U_ACUTE_MENU_MSG =            'ú    - C_U'
  72.    AMPERSAND_MENU_MSG =          'Am~persand'
  73.    QUOTES_MENU_MSG =             '~Quotes'
  74.    TILDE_MENU_MSG  =             '~Tilde'
  75.    ACCENT_MENU_MSG =             '~Acute accent'
  76.    FORMS_MENU_MSG =             '~Forms'
  77.    DEFFORMS_MENU_MSG =         '~Define Form'
  78.    INPUTFIELD_MENU_MSG =       '~Input field'
  79.    SELECTFIELD_MENU_MSG =      '~Select field'
  80.    SELECTOPTION_MENU_MSG =    'Select ~Option'
  81.    TEXTAREA_MENU_MSG =        '~Text area'
  82.    DOC_MENU__MSG =              'Docu~ments'
  83.    HTMLDOC_MENU__MSG =          '~Basic HTML doc'
  84.    ABOUT_MENU_MSG =             '~About...'
  85.  
  86. compile if WANT_DYNAMIC_PROMPTS
  87.    HTMLTAGS_BARP__MSG = \1'Create HTLM tags'
  88.    TITLE_MENUP_MSG = \1'Insert Title TAG '
  89.    CENTER_MENUP_MSG = \1'Center the text'
  90.    SEPARATORS_MENUP_MSG = \1'Paragraphs, Line Breaks & Rules'
  91.    PARAGRAPH_MENUP__MSG = \1'Insert a Paragraph tag'
  92.    FORCEDLINE_MENUP_MSG = \1'Insert a Forced Line Break'
  93.    HORIZONTALRULE_MENUP_MSG = \1'Insert an horizontal rule'
  94.    ANCHOR_MENUP_MSG = \1'Create a link'
  95.    IMAGE_MENUP_MSG = \1'Insert an image'
  96.    TARGET_MENUP_MSG = \1'Define a target location in the page'
  97.    HEADINGS_MENUP__MSG = \1'Select size of a heading'
  98.    HEAD1_MENUP__MSG = \1'Select heading size 1'
  99.    HEAD2_MENUP__MSG = \1'Select heading size 2'
  100.    HEAD3_MENUP__MSG = \1'Select heading size 3'
  101.    HEAD4_MENUP__MSG = \1'Select heading size 4'
  102.    HEAD5_MENUP__MSG = \1'Select heading size 5'
  103.    HEAD6_MENUP__MSG = \1'Select heading size 6'
  104.    STYLES_MENUP_MSG = \1'Select the text style '
  105.    LOGICAL_MENUP_MSG = \1'Select between logical styles'
  106.    EM_MENUP__MSG = \1'Set emphasized style for selected text'
  107.    STRONG_MENUP_MSG = \1'Set strong emphasized style for selected text'
  108.    PREFORMAT_MENUP_MSG = \1'Let the selected text "as it is"'
  109.    PHYSICAL_MENUP__MSG = \1'Select physical style'
  110.    UNDERLINE_MENUP__MSG =\1'Set underline style for the selected text'
  111.    ITALIC_MENUP__MSG = \1'Set italic style for the selected text'
  112.    BOLD_MENUP__MSG = \1'Select bold style for the selected text'
  113.    TYPEWRITER_MENUP__MSG = \1'Select typewriter style for the selected text'
  114.    LISTS_MENUP_MSG = \1'Lists related tags'
  115.    LIST_ITEM_MENUP__MSG = \1'Create a list item'
  116.    OLIST_MENUP__MSG = \1'Create an ordered list'
  117.    ULIST_MENUP__MSG = \1'Create an unordered list'
  118.    SLIST_MENUP__MSG = \1'Create a menu list'
  119.    DLIST_MENUP__MSG = \1'Create a definition list'
  120.    DLISTTERM_MENUP_MSG = \1'Insert a definition list term tag'
  121.    DLISTDEF_MENUP_MSG = \1'Insert a definition list definition tag'
  122.    SPECIAL_MENUP_MSG = \1'Insert Special Characters'
  123.    LEFTANGLE_MENUP_MSG = \1'Insert a left angle sign'
  124.    RIGHTANGLE_MENUP_MSG = \1'Insert a right angle sign'
  125.    AMPERSAND_MENUP_MSG = \1 'Insert the Ampersand sign'
  126.    QUOTES_MENUP_MSG = \1'Insert a double Quotes sign'
  127.    TILDE_MENUP_MSG  =    \1'Tilde'
  128.    ACCENT_MENUP_MSG = \1'Acute accent'    
  129.    FORMS_MENUP_MSG = \1'HTML Forms Interface'
  130.    DEFFORMS_MENUP_MSG = \1'Define a Form'
  131.    INPUTFIELD_MENUP_MSG = \1'Define an Input field'
  132.    SELECTFIELD_MENUP_MSG = \1'Define a Select field'
  133.    SELECTOPTION_MENUP_MSG = \1'Define a Select field Option'
  134.    TEXTAREA_MENUP_MSG = \1'Define a Text Area'
  135.      
  136.    DOC_MENUP__MSG = \1'Creating HTML Documents'
  137.    HTMLDOC_MENUP__MSG = \1'Create a Basic HTML Doc'
  138. compile else
  139.    HTMLTAGS_BARP__MSG = ''
  140.    TITLE_MENUP_MSG = '' 
  141.    SEPARATORS_MENUP_MSG = '' 
  142.    PARAGRAPH_MENUP__MSG = '' 
  143.    FORCEDLINE_MENUP_MSG = '' 
  144.    HORIZONTALRULE_MENUP_MSG = '' 
  145.    ANCHOR_MENUP_MSG = '' 
  146.    IMAGE_MENUP_MSG = ''
  147.    TARGET_MENUP_MSG= "
  148.    HEADINGS_MENUP__MSG = '' 
  149.    HEAD1_MENUP__MSG = '' 
  150.    HEAD2_MENUP__MSG = '' 
  151.    HEAD3_MENUP__MSG = '' 
  152.    HEAD4_MENUP__MSG = '' 
  153.    HEAD5_MENUP__MSG = '' 
  154.    HEAD6_MENUP__MSG = '' 
  155.    STYLES_MENUP_MSG = '' 
  156.    LOGICAL_MENUP_MSG = '' 
  157.    EM_MENUP__MSG = '' 
  158.    STRONG_MENUP_MSG = '' 
  159.    PREFORMAT_MENUP_MSG = '' 
  160.    PHYSICAL_MENUP__MSG = '' 
  161.    UNDERLINE_MENUP__MSG = ''
  162.    ITALIC_MENUP__MSG = '' 
  163.    BOLD_MENUP__MSG = '' 
  164.    TYPEWRITER_MENUP__MSG = '' 
  165.    LISTS_MENUP_MSG = '' 
  166.    LIST_ITEM_MENUP__MSG = '' 
  167.    OLIST_MENUP__MSG = '' 
  168.    ULIST_MENUP__MSG = '' 
  169.    SLIST_MENUP__MSG = '' 
  170.    DLIST_MENUP__MSG = '' 
  171.    DLISTTERM_MENUP_MSG = '' 
  172.    DLISTDEF_MENUP_MSG = '' 
  173.    SPECIAL_MENUP_MSG = '' 
  174.    LEFTANGLE_MENUP_MSG = '' 
  175.    RIGHTANGLE_MENUP_MSG = '' 
  176.    AMPERSAND_MENUP_MSG = '' 
  177.    QUOTES_MENUP_MSG = '' 
  178.    TILDE_MENUP_MSG  = 
  179.    ACCENT_MENUP_MSG = '' 
  180.    FORMS_MENUP_MSG = ""
  181.    DEFFORMS_MENUP_MSG = ""
  182.    INPUTFIELD_MENUP_MSG = ""
  183.    SELECTFIELD_MENUP_MSG =  ""
  184.    SELECTOPTION_MENUP_MSG =  ""
  185.    TEXTAREA_MENU_MSG =  ""
  186.    DOC_MENUP__MSG = '' 
  187.    HTMLDOC_MENUP__MSG = '' 
  188. compile endif
  189.  
  190.  
  191. definit
  192.    universal defaultmenu, activemenu
  193.    universal activeaccel
  194.    universal HTML_tags_menu_flag
  195.    deletemenu defaultmenu, 6, 0, 0  -- delete the existing Help menu (we want it to stay at the right)
  196.  
  197.    buildsubmenu defaultmenu, 80, HTMLTAGS_BAR__MSG, ' ', 0, 0
  198.      buildmenuitem defaultmenu, 80, 8000,TITLE_MENU_MSG,'HTML_EM TITLE'TITLE_MENUP_MSG,0,0
  199.      buildmenuitem defaultmenu, 80, 8001,CENTER_MENU_MSG,'HTML_EM CENTER'CENTER_MENUP_MSG,0,0
  200.      buildmenuitem defaultmenu, 80, 8002,\0,'',4,0
  201.      buildmenuitem defaultmenu, 80, 8003,SEPARATORS_MENU_MSG,SEPARATORS_MENUP_MSG,17,0
  202.      buildmenuitem defaultmenu, 80, 8004,PARAGRAPH_MENU__MSG,'HTML_INL <P>'PARAGRAPH_MENUP__MSG,0,0
  203.      buildmenuitem defaultmenu, 80, 8005,FORCEDLINE_MENU_MSG,'HTML_INL <BR>'FORCEDLINE_MENUP_MSG,0,0
  204.      buildmenuitem defaultmenu, 80, 8006,HORIZONTALRULE_MENU_MSG,'HTML_INL <HR>'HORIZONTALRULE_MENUp_MSG,32769,0
  205.      buildmenuitem defaultmenu, 80, 8007,\0,'',4,0
  206.  
  207.      buildmenuitem defaultmenu, 80, 8008,ANCHOR_MENU_MSG,'HTML_ANCHOR'ANCHOR_MENUP_MSG,0,0
  208.      buildmenuitem defaultmenu, 80, 8009,IMAGE_MENU_MSG,'HTML_IMAGE'IMAGE_MENUP_MSG,0,0
  209.      buildmenuitem defaultmenu, 80, 80010,TARGET_MENU_MSG,'HTML_TARGET'TARGET_MENUP_MSG,0,0
  210.      buildmenuitem defaultmenu, 80, 8019,\0,'',4,0
  211.  
  212.      buildmenuitem defaultmenu, 80, 8020, HEADINGS_MENU__MSG, HEADINGS_MENUP__MSG, 17, 0
  213.      buildmenuitem defaultmenu, 80, 8021, HEAD1_MENU__MSG, 'HTML_EM H1'HEAD1_MENUP__MSG, 0, 0
  214.      buildmenuitem defaultmenu, 80, 8022, HEAD2_MENU__MSG, 'HTML_EM H2'HEAD2_MENUP__MSG, 0, 0
  215.      buildmenuitem defaultmenu, 80, 8023, HEAD3_MENU__MSG, 'HTML_EM H3'HEAD3_MENUP__MSG, 0, 0
  216.      buildmenuitem defaultmenu, 80, 8024, HEAD4_MENU__MSG, 'HTML_EM H4'HEAD4_MENUP__MSG, 0, 0
  217.      buildmenuitem defaultmenu, 80, 8025, HEAD5_MENU__MSG, 'HTML_EM H5'HEAD5_MENUP__MSG, 0, 0
  218.      buildmenuitem defaultmenu, 80, 8026, HEAD6_MENU__MSG, 'HTML_EM H6'HEAD6_MENUP__MSG, 32769, 0
  219.  
  220.      buildmenuitem defaultmenu, 80, 8031, LOGICAL_MENU_MSG, LOGICAL_MENUP_MSG,17,0
  221.      buildmenuitem defaultmenu, 80, 8032, EM_MENU__MSG,'HTML_EM EM'EM_MENUP__MSG, 0, 0
  222.      buildmenuitem defaultmenu, 80, 8033, STRONG_MENU_MSG, 'HTML_EM STRONG'STRONG_MENUP_MSG, 0, 0
  223.      buildmenuitem defaultmenu, 80, 8034, PREFORMAT_MENU_MSG,'HTML_EM PRE'PREFORMAT_MENUP_MSG, 32769,0
  224.      buildmenuitem defaultmenu, 80, 8035, PHYSICAL_MENU__MSG,PHYSICAL_MENUP__MSG, 17, 0
  225.      buildmenuitem defaultmenu, 80, 8036, UNDERLINE_MENU__MSG, 'HTML_EM U'UNDERLINE_MENUP__MSG, 0, 0
  226.      buildmenuitem defaultmenu, 80, 8037, ITALIC_MENU__MSG, 'HTML_EM I'ITALIC_MENUP__MSG, 0, 0
  227.      buildmenuitem defaultmenu, 80, 8038, BOLD_MENU__MSG, 'HTML_EM B'BOLD_MENUP__MSG, 0, 0
  228.      buildmenuitem defaultmenu, 80, 8039, TYPEWRITER_MENU__MSG, 'HTML_EM TT'TYPEWRITER_MENUP__MSG, 32769, 0
  229.  
  230.      buildmenuitem defaultmenu, 80, 8040, LISTS_MENU_MSG, LISTS_MENUP_MSG,17,0
  231.      buildmenuitem defaultmenu, 80, 8041, LIST_ITEM_MENU__MSG, 'HTML_I <LI>'LIST_ITEM_MENUP__MSG, 0, 0
  232.      buildmenuitem defaultmenu, 80, 8042, OLIST_MENU__MSG, 'HTML_EM OL'OLIST_MENUP__MSG, 0, 0
  233.      buildmenuitem defaultmenu, 80, 8043, ULIST_MENU__MSG, 'HTML_EM UL'ULIST_MENUP__MSG, 0, 0
  234.      buildmenuitem defaultmenu, 80, 8044, SLIST_MENU__MSG, 'HTML_EM MENU'SLIST_MENUP__MSG, 0, 0
  235.      buildmenuitem defaultmenu, 80, 8045, DLIST_MENU__MSG, 'HTML_EM DL'DLIST_MENUP__MSG, 0, 0
  236.      buildmenuitem defaultmenu, 80, 8046, DLISTTERM_MENU_MSG,'HTML_I  <DT>'DLISTTERM_MENUP_MSG,0,0
  237.      buildmenuitem defaultmenu, 80, 8047, DLISTDEF_MENU_MSG,'HTML_I   <DD>'DLISTDEF_MENUp_MSG,32769,0
  238.      buildmenuitem defaultmenu, 80, 8049, \0,'',4, 0
  239.  
  240.      buildmenuitem defaultmenu, 80, 8050,SPECIAL_MENU_MSG,SPECIAL_MENUP_MSG,17,0
  241.      buildmenuitem defaultmenu, 80, 8051,LEFTANGLE_MENU_MSG,'HTML_I <'LEFTANGLE_MENUP_MSG,0,0
  242.      buildmenuitem defaultmenu, 80, 8052,RIGHTANGLE_MENU_MSG,'HTML_I >'RIGHTANGLE_MENUP_MSG,0,0
  243.      buildmenuitem defaultmenu, 80, 8053,AMPERSAND_MENU_MSG,'HTML_I &'AMPERSAND_MENUP_MSG,0,0
  244.      buildmenuitem defaultmenu, 80, 8054,QUOTES_MENU_MSG,'HTML_I "'QUOTES_MENUP_MSG,0,0
  245.      buildmenuitem defaultmenu, 80, 8055,TILDE_MENU_MSG,'HTML_ACC tilde;'TILDE_MENUP_MSG,0,0
  246.      buildmenuitem defaultmenu, 80, 8056,ACCENT_MENU_MSG,'HTML_ACC acute'ACCENT_MENUP_MSG,0,0
  247.      buildmenuitem defaultmenu, 80, 8057,A_ACUTE_MENU_MSG,'HTML_I á',0,0
  248.      buildmenuitem defaultmenu, 80, 8058,E_ACUTE_MENU_MSG,'HTML_I é',0,0
  249.      buildmenuitem defaultmenu, 80, 8059,I_ACUTE_MENU_MSG,'HTML_I í',0,0
  250.      buildmenuitem defaultmenu, 80, 8060,O_ACUTE_MENU_MSG,'HTML_I ó',0,0
  251.      buildmenuitem defaultmenu, 80, 8061,U_ACUTE_MENU_MSG,'HTML_I ú',32769,0
  252.      buildmenuitem defaultmenu, 80, 8069,\0,'',4,0
  253.  
  254.      buildmenuitem defaultmenu, 80, 8070, FORMS_MENU_MSG,FORMS_MENUP_MSG,17,0
  255.      buildmenuitem defaultmenu, 80, 8071, DEFFORMS_MENU_MSG,'HTML_FORM'DEFFORMS_MENUP_MSG,0,0
  256.      buildmenuitem defaultmenu, 80, 8072, INPUTFIELD_MENU_MSG,'HTML_INPUT'INPUTFIELD_MENUP_MSG,0,0
  257.      buildmenuitem defaultmenu, 80, 8073, SELECTFIELD_MENU_MSG,'HTML_SELECT'SELECTFIELD_MENUP_MSG,0,0
  258.      buildmenuitem defaultmenu, 80, 8074, SELECTOPTION_MENU_MSG, 'HTML_OPTION'SELECTOPTION_MENUP_MSG,0,0
  259.      buildmenuitem defaultmenu, 80, 8075, TEXTAREA_MENU_MSG, 'HTML_TEXTAREA'TEXTAREA_MENUP_MSG, 32769,0
  260.      buildmenuitem defaultmenu, 80, 8089,\0,'',4,0
  261.  
  262.      buildmenuitem defaultmenu, 80, 8090, DOC_MENU__MSG,DOC_MENUP__MSG, 17, 0
  263.      buildmenuitem defaultmenu, 80, 8091, HTMLDOC_MENU__MSG, 'HTML_HTMLDOC'HTMLDOC_MENUP__MSG, 32769, 0
  264.      buildmenuitem defaultmenu, 80, 8095,\0,'',4,0
  265.      buildmenuitem defaultmenu, 80, 8099,ABOUT_MENU_MSG,'HTML_ABOUT',0,0
  266.    call readd_help_menu()
  267.    HTML_tags_menu_flag = 1
  268.    call register_mousehandler(1,'2 CLICK 0','POPUP_MENU')
  269.  
  270.  
  271. defexit
  272.    universal defaultmenu, activemenu
  273.    deletemenu defaultmenu,80,0,0
  274.    call maybe_show_menu()
  275.    HTML_tags_menu_flag = 0
  276.    
  277. defc HTML_I
  278.    keyin arg(1)
  279.  
  280. defc HTML_INL
  281.    keyin arg(1)
  282.    insert
  283.    .col = 0
  284.  
  285. defc HTML_IML = -- Insert Many Lines
  286.    parse value strip(arg(1),'L') with delim 2 rest
  287.    nextline = .line+1
  288.    do while rest <> ''
  289.       parse value rest with line (delim) rest
  290.       insertline line, nextline
  291.       nextline = nextline + 1
  292.    enddo
  293.    '+2'
  294.    end_line
  295.    .line=.line-1
  296.    
  297. defc HTML_em
  298.    tag = arg(1)
  299.    if marktype() then
  300.     call HTML_insert_tags('<'tag'>', '</'tag'>')
  301.     .col=.col+length(tag)+2
  302.    else
  303.     keyin ('<'tag'></'tag'>')
  304.     .col=.col - length(tag) - 3
  305.    endif
  306.   
  307. defproc HTML_insert_tags(start_tag, end_tag)
  308.    mt = marktype()
  309.    if pos(leftstr(mt,1), 'BC') then  -- Block or Character mark
  310.       getfileid fid
  311.       getmark firstline,lastline,firstcol,lastcol,fileid
  312.       if fid<>fileid then
  313.          sayerror 'Wrong file - check mark'
  314.          return
  315.       endif
  316.    else
  317.       firstline = .line; lastline = .line;
  318.       call pend_word(); lastcol = .col
  319.       call pbegin_word(); firstcol = .col
  320.    endif
  321.    .col=lastcol+1
  322.    lastline
  323.    i_s = insert_state()
  324.    if not i_s then insert_toggle; endif
  325.    keyin end_tag
  326.    firstline
  327.    .col=firstcol
  328.    keyin start_tag
  329.    if pos(leftstr(mt,1), 'BC') then  -- Block or Character mark
  330.       l = length(start_tag)
  331.       call pset_mark(firstline, lastline, firstcol+l, lastcol+(l*(lastline=firstline)), mt, fileid)
  332.    endif
  333.    if not i_s then insert_toggle; endif
  334.    
  335.  
  336. defc HTML_HTMLDOC
  337.    start_line = .line
  338.    'HTML_IML |<HTML>|<HEAD>|<TITLE></TITLE>|</HEAD>| |<BODY>|</BODY>|</HTML>'
  339.    '+2'
  340.    .col = 8 
  341.  
  342.  
  343. defc HTML_ANCHOR
  344.    linktype = listbox("Select Link to ...","/target in this page/local file/target in local file/http/gopher/ftp/news",,,,7)
  345.    if linktype == '' then
  346.       return
  347.    endif
  348.    if linktype == 'target in local file' then
  349.       filename = entrybox('Type Filename')
  350.       targetname = entrybox('Type Target name')
  351.       linktype = filename'#'targetname
  352.       usertxt = ""
  353.    else if linktype == 'local file'  then
  354.       linktype = ''
  355.       usertxt = entrybox('Type Name of Link')
  356.    else if linktype == 'target in this page' then
  357.       linktype = "#"
  358.        usertxt = entrybox('Type target name')
  359.    else  
  360.        linktype = linktype'://'
  361.        usertxt = entrybox('Type Name of Link')
  362.    endif endif
  363.       if usertxt == '' then
  364.          return
  365.       endif
  366.    endif
  367.         
  368.    start_tag = '<A HREF="'||linktype||usertxt||'">'
  369.    end_tag = '</A>'
  370.    if marktype() then
  371.      call HTML_insert_tags(start_tag,end_tag)
  372.    else
  373.      keyin start_tag
  374.      keyin end_tag
  375.    endif
  376.  
  377. defc HTML_TARGET
  378.    usertxt = entrybox('Type Target name')
  379.    if usertxt =="" then
  380.      return
  381.    endif
  382.    start_tag = '<A NAME="'usertxt'">'
  383.    end_tag = '</A>'
  384.    if marktype() then
  385.      call HTML_insert_tags(start_tag,end_tag)
  386.    else
  387.      keyin start_tag
  388.      keyin end_tag
  389.    endif
  390.   
  391. defc HTML_IMAGE
  392.    usertxt = entrybox('Type Image Name')
  393.    if usertxt == '' then
  394.       return
  395.    endif
  396.    alttext = entrybox("Alternative text for non graphics display")
  397.    imag_pos = listbox("Image Alignment","/Top/Middle/Bottom")
  398.    if imag_pos == '' then
  399.       return
  400.    else
  401.       keyin '<IMG SRC='usertxt' ALIGN='imag_pos 'ALT="'alttext'">'
  402.    endif
  403.  
  404.  
  405. defc HTML_ACC
  406.    mcol = .col
  407.    letter = get_char()
  408.    if pos(letter,'AEIOUaeiou') then
  409.       keyin '&'
  410.       .col = .col + 1
  411.       keyin arg(1)';'
  412.    else  if pos(letter,'Nn') then
  413.             keyin '&'
  414.             .col=.col+1
  415.             keyin arg(1)
  416.          else
  417.             sayerror("Invalid Character for accent in HTML")
  418.             return
  419.          endif
  420.    endif
  421.  
  422. defproc get_char
  423.    universal linepos,colpos,target
  424.    colpos=.col
  425.    linepos=.line
  426.    getline target
  427.    return substr(target,.col,1)
  428.  
  429. defc HTML_FORM
  430.    action = entrybox('URL of form processor')
  431.    method = listbox("Method of Exchange","/post/get/")
  432.    tag_1 = '<FORM action="'||action||'" method="'method'">'
  433.    tag_2='</FORM>'
  434.    call HTML_insert_tags(tag_1,tag_2)
  435.  
  436. defc HTML_INPUT
  437.    type=listbox("Type of Input Field","/text/password/checkbox/radio/submit/reset",,,,6)
  438.    if type=="" then
  439.       return
  440.    endif
  441.    if type=='radio' then
  442.       'HTML_radio'
  443.    else  if type=='checkbox' then
  444.             'HTML_checkbox'
  445.    else  if type=='submit' or type=='reset' then
  446.             valor = entrybox("Text of the Button")
  447.             tag ='<INPUT TYPE="'type'" VALUE="'valor'">'
  448.    else
  449.             name = entrybox('Name of Variable ?')
  450.             valor = entrybox("Default Value")
  451.             size = entrybox("Maximum number of characters")
  452.             tag='<INPUT TYPE="'type'" NAME="'name'" '
  453.             if valor<>"" then
  454.                tag=tag' VALUE="'valor'" '
  455.             endif
  456.             tag=tag' SIZE='size' MAXLENGTH='size'>'
  457.     endif
  458.     keyin tag
  459.     endif  endif
  460.  
  461. defc HTML_checkbox
  462.    name = entrybox("Name of the input variable?")
  463.    valor = entrybox("Value to return when checked")
  464.    if name == "" or valor == "" then
  465.       return
  466.    endif
  467.    chktxt = entrybox("Text of the button")
  468.    tag = '<INPUT TYPE="CHECKBOX" NAME="'name'" VALUE="'valor'" '
  469.    defchk = listbox("Checked by default ?","/Yes/No/")
  470.    if defchk == "Yes" then
  471.       tag = tag' CHECKED>'
  472.    else
  473.       tag =tag'>'
  474.    endif
  475.    keyin tag || chktxt
  476.  
  477. defc HTML_radio
  478.       universal option_Array, cadena
  479.       options=''
  480.       rad_name = entrybox('Name of Radio Variable?')
  481.       rad_num = listbox('Number of Radio Buttons',"/1/2/3/4/5",,,,5)
  482.       dispo = listbox("Button disposition","/Row/Column/")
  483.       if dispo = "Row" then
  484.          separator = " "
  485.       else
  486.          separator = "<BR>"
  487.       endif
  488.  
  489.       do_array 1, opt_id, option_array
  490.       for i =1  to rad_num
  491.          opt = entrybox('Text of Button 'i)
  492.          rad_value = entrybox('Value returned when checked')
  493.          option_str = '<INPUT TYPE=RADIO NAME="'rad_name'" VALUE="'rad_value'">'opt||separator
  494.          do_array 2, opt_id, i, option_Str
  495.       endfor
  496.  
  497.      for i = 1 to rad_num
  498.         do_array 3, opt_id, i, cadena
  499.         insertline cadena
  500.      endfor
  501.  
  502.  
  503. defc HTML_SELECT
  504.    multiselect = 0
  505.    NotMoreChecks = 0
  506.  
  507.    name = entrybox('Name of select variable')
  508.    if name == "" then
  509.       return
  510.    endif
  511.    sel_num = entrybox("Options number?")
  512.    if not isnum(sel_num) then
  513.       WinMessageBox('HTMLEPM 'HTMLVERSION, 'ERROR: Must be a number',16384)
  514.       return
  515.    endif
  516.    size = entrybox('Number of visible options ?')
  517.    if size == "" then
  518.       return
  519.    endif
  520.    if not isnum(size) then
  521.       WinMessageBox('HTMLEPM 'HTMLVERSION,'ERROR: Must be a number',16384)
  522.       return
  523.    endif
  524.    
  525.    multi = listbox('Multiple selection?',"/single/multiple/")
  526.    if multi=='' then
  527.       return
  528.    else
  529.       if multi=="multiple" then
  530.          multiselect=1
  531.       else
  532.          multi=""
  533.       endif
  534.    endif
  535.    tag_ini= '<SELECT NAME="'name'" SIZE='size || multi'>'
  536.    tag_end = '</SELECT>'
  537.    
  538.    insertline tag_ini
  539.    for i = 1 to sel_num
  540.      valor = entrybox('Text of Option 'i)
  541.      if  NotMoreChecks then
  542.          select = ""
  543.      else
  544.         select = listbox('Selected by default?',"/No/Yes/")
  545.      endif
  546.      tag_1 = '<OPTION'
  547.      if select=='Yes' then
  548.          tag_1 = tag_1 || ' SELECTED'
  549.          if not multiselect then
  550.             NotMoreChecks=1
  551.          endif
  552.      endif
  553.      tag_1 = tag_1 '>'valor
  554.      insertline tag_1
  555.    endfor
  556.    insertline tag_end
  557.  
  558. defc HTML_OPTION
  559.    valor = entrybox('Option text')
  560.    select = listbox('Selected by default?',"/No/Yes/")
  561.    tag_1 = '<OPTION'
  562.    if select=='Yes' then
  563.       tag_1 = tag_1 || ' SELECTED'
  564.    endif
  565.    tag_1 = tag_1 '>'valor
  566.    keyin tag_1
  567.  
  568.  
  569. defc HTML_TEXTAREA
  570.    name = entrybox("Name of variable")
  571.    rows = entrybox("Number of rows")
  572.    cols  = entrybox("Number of columns")
  573.    default = listbox("Default Text ?","/No/Yes/")
  574.    if default == "Yes" then
  575.       defText = entrybox("Type the Default Text")
  576.    else
  577.       defText = ""
  578.    endif
  579.    keyin '<TEXTAREA NAME='name' ROWS='rows' COLS='cols'>'defText'</TEXTAREA>'
  580.  
  581.  
  582. defc POPUP_MENU
  583.    colum = .cursorx
  584.    linea = .cursory 
  585.    if linea <1 then
  586.       linea = 1
  587.    endif
  588.    if (.windowheight-linea) <15 then
  589.       linea = .windowheight-15
  590.    endif
  591.    elige = listbox("Select Tag Type",
  592.                    "/Link/Image/Target/Form/Input Field/Select/Option/Text Area/",
  593.                    "/OK/Cancel",linea,colum,8,20)
  594.     if elige="" then return
  595.     else if elige='Link'         then 'HTML_ANCHOR'
  596.     else if elige='Image'        then 'HTML_IMAGE'
  597.     else if elige='Target'       then 'HTML_TARGET'
  598.     else if elige='Form'         then 'HTML_FORM'
  599.     else if elige='Input Field'   then 'HTML_INPUT'
  600.     else if elige='Select'        then 'HTML_SELECT'
  601.     else if elige='Option'       then 'HTML_OPTION'
  602.     else if elige='Text Area'    then 'HTML_TEXTAREA'
  603.     endif endif endif endif endif endif endif endif endif
  604.  
  605. defc HTML_ABOUT
  606.     linea=.line
  607.     acol = .col
  608.     WinMessageBox('HTML Extensions for EPM',
  609.                      '     Version 'HTMLVERSION ||chr(10)'     (c) E.Areitio 1995', 16384)
  610.     .line = linea
  611.     .col = acol
  612.