home *** CD-ROM | disk | FTP | other *** search
/ Aminet 10 / aminetcdnumber101996.iso / Aminet / util / time / EZCron.lha / EZCronGUI < prev    next >
Text File  |  1995-12-31  |  24KB  |  850 lines

  1. /* EZCronGUI v1.4 by Jim Hines. ©1995 All Rights Reserved.
  2. ** EZCronGUI is The Graphic User Interface for EZCron, ©1994-1995 Jim Hines.
  3. ** 12-13-95 Added Speech Function to test subrtn.
  4. ** 12-22-95 Added Purge Function.
  5. ** 12-24-95 Added multi-windowing on prefs window
  6. ** 12-31-95 Added multi-windowing on time and date fields
  7. **             Changed the main gui interface window and moved the new config
  8. **            button to the edit screen. Removed the Quik Add button altogether.
  9. */
  10.  
  11. LF= '0a'x
  12. options results
  13.  
  14.     if ~show("L","rexxsupport.library") then
  15.            call addlib("rexxsupport.library", 0, -30)
  16.     
  17.     if ~show('L','rexxreqtools.library') then
  18.            call addlib("rexxreqtools.library", 0, -30, 0)
  19.         
  20.     if ~showlist( 'p', 'VAREXX' ) then do
  21.            address command 'run >nil: varexx'
  22.         call delay(25)
  23.         waitforport
  24.         waitforport
  25.     end
  26.  
  27.     address VAREXX
  28.     call openport("MAINWINPORT")  
  29.     load 'EZCron:EZC.gui MAINWINPORT'      
  30.     host = result     
  31.     address value host
  32.     show project0     
  33.  
  34. startup:
  35.  
  36.     if showlist('P', 'ACRON_REXX') then do
  37.         settext text '"EZCron is Currently Running"'
  38.     end
  39.  
  40.     if ~showlist('P', 'ACRON_REXX') then do
  41.         settext text '"EZCron is NOT Currently Running"'
  42.     end
  43.  
  44. /* ===== MAIN LOOP =======*/
  45. mainloop:
  46.  
  47.     do forever    /* Wait for the user to close the window */
  48.         date = Date(USA)
  49.         settext datewin date
  50.         setlist eventlist clear  /* CLEAR THE LISTVIEW WINDOW */
  51.  
  52.  
  53. /* ===== READ AND PARSE THE CONFIG FILE ===== */
  54.  
  55.         config = 's:cron.config'        /* Name of file for reading events from */
  56.         event. = 0
  57.  
  58.         if ~open(cronfile, config,'READ') then do
  59.             exit 20
  60.         end
  61.  
  62.         errors = 0
  63.  
  64.         do until eof(cronfile)
  65.             /* Grab the line, parse the event and ignore the comments */
  66.             linein = readln(cronfile)
  67.             parse var linein line '#'
  68.  
  69.             next = event.0 + 1
  70.  
  71.             parse var line event.next.command event.next.pargs1 event.next.pargs2,
  72.             event.next.pargs3 event.next.pargs4 event.next.time event.next.date,
  73.             event.next.sfx event.next.txt
  74.  
  75.             event.next.date = translate(event.next.date, 'abcdefghijklmnopqrstuvwxyz',,
  76.                             'ABCDEFGHIJKLMNOPQRSTUVWXYZ')
  77.                             /* THE ABOVE TRANSLATES THE DATE TO LOWERCASE IF NOT NUMERIC */
  78.  
  79.             event.next.time = translate(event.next.time, 'abcdefghijklmnopqrstuvwxyz',,
  80.                             'ABCDEFGHIJKLMNOPQRSTUVWXYZ')
  81.                             /* THE ABOVE TRANSLATES THE TIME TO LOWERCASE IF NOT NUMERIC */
  82.  
  83.  
  84.             if line ~= '' then do  /* This keeps the commented out lines from appearing */
  85.                 setlist Eventlist event.next.command event.next.pargs1 event.next.pargs2 event.next.pargs3 event.next.pargs4 event.next.time event.next.date event.next.txt '************************'
  86.             end
  87.  
  88.             select
  89.                 when event.next.command = '' then iterate
  90.                 when event.next.command = '' then do
  91.                     iterate
  92.                 end
  93.                 otherwise event.0 = next
  94.             end
  95.         end                                /* end of: do until EOF */
  96.         call close(cronfile)
  97.  
  98. /* =====END OF PARSE SECTION == */
  99.  
  100.         do forever  /* THIS DO LOOP CONTROLS THE CLOCK AND CHECKS FOR A PACKET */
  101.             packet = getpkt( "MAINWINPORT" )
  102.             clock = time('N')         /* THIS IS THE TIME WITH SECONDS IN 24HR */
  103.             clock2 = LEFT(clock,5)    /* THIS GET RID OF THE SECONDS */
  104.             sec = right(clock, 2)  /* Get Seconds */
  105.             settext time clock
  106.             call delay(48)
  107.  
  108. /*        do forever  /* THIS DO LOOP CONTROLS THE CLOCK AND CHECKS FOR A PACKET */
  109.             packet = getpkt( "MAINWINPORT" )
  110.             
  111.             newtime = time(s)                              /* Thanks Andy! */
  112.             if oldtime ~= newtime then do
  113.                 clock = time('N')         /* THIS IS THE TIME WITH SECONDS IN 24HR */
  114.                 clock2 = LEFT(clock,5)    /* THIS GET RID OF THE SECONDS */
  115.                 sec = right(clock, 2)  /* Get Seconds */
  116.                 settext time clock
  117.             end
  118.             oldtime = newtime
  119. */    
  120.             if packet ~= '00000000'x then do /* This is not a null message */
  121.                 class  = getarg(packet)    /* Get the information about the message */
  122.                     type = word(class, 1)
  123.                     msg = substr(class, 1,9) 
  124.                 call classes()
  125.             end
  126.         end
  127.  
  128.  
  129. classes:
  130.  
  131. /* =====CLASS CLOSEWINDOW ===== */
  132.         if class = closewindow then do
  133.             settext text 'Exiting EZCron'
  134.             call exiting() 
  135.         end
  136.  
  137. /* =====CLASS PAGEEDIT ===== */
  138.         if class = pageedit then call eventedit()
  139.  
  140.  
  141. /* =====CLASS AC_TOGGLE ===== */ 
  142.  
  143.         if class = AC_Toggle then do
  144.             if ~showlist('P', 'ACRON_REXX') then do    
  145.                 address command 'run >nil: rx >nil: EZCron start'
  146.                 waitforport
  147.                 settext text '"EZCron is now Running"'
  148.                 call mainloop()
  149.             end    
  150.             else
  151.                 if showlist('P', 'ACRON_REXX') then do    
  152.                 address command 'run >nil: rx >nil: EZCron stop'
  153.                 busy set /* Turn on busy pointer */
  154.             
  155.                     do until ~showlist('P', 'ACRON_REXX')
  156.                         clock = time('N')
  157.                         sec = right(clock, 2)  /* Get Seconds */
  158.                         sec2 = 59 - sec        /* 59 (seconds) minus sec) */
  159.                         settext text '"EZCron will exit in"' sec2 'seconds.'
  160.                         settext time clock
  161.                         call delay(48)
  162.                     end
  163.                 settext text '"EZCron is NOT Currently Running"'
  164.             end
  165.         busy /* Turn off Busy Pointer */
  166.         call mainloop()
  167.         end
  168.     end         /* End of first big do forever loop */
  169.  
  170. /* ===== EDITEVENT SUBROUTINE ========= */
  171.  
  172. eventedit:
  173.     hide
  174.     show editwindow
  175.     set sortgad blankgad1 disable
  176.  
  177. eventparse:
  178.     drop field  /* this drops any field variable that may be set */
  179.     address value host  /* this is so the correct window's buttons work after closing other windows */
  180.     drop ev et ed arg1 arg2 arg3 arg4 sfx txt /* this drops any variables that may be present */
  181.  
  182.     do forever
  183.         setlist selectevent clear
  184.         config = 's:cron.config'    /* Name of file for reading events from */
  185.         event. = 0
  186.     
  187.         if ~open(cronfile, config,'READ') then do
  188.             exit 20
  189.         end
  190.     
  191.         errors = 0
  192.         do until eof(cronfile)
  193.             linein = readln(cronfile)
  194.             parse var linein line '#'
  195.             next = event.0 + 1
  196.     
  197.             parse var line event.next.command event.next.pargs1 event.next.pargs2,
  198.             event.next.pargs3 event.next.pargs4 event.next.time    event.next.date,
  199.             event.next.sfx event.next.txt
  200.  
  201.             event.next.date = translate(event.next.date, 'abcdefghijklmnopqrstuvwxyz',,
  202.                             'ABCDEFGHIJKLMNOPQRSTUVWXYZ')
  203.                             /* THE ABOVE TRANSLATES THE DATE TO LOWERCASE IF NOT NUMERIC */
  204.  
  205.             event.next.time = translate(event.next.time, 'abcdefghijklmnopqrstuvwxyz',,
  206.                             'ABCDEFGHIJKLMNOPQRSTUVWXYZ')
  207.                             /* THE ABOVE TRANSLATES THE TIME TO LOWERCASE IF NOT NUMERIC */
  208.  
  209.  
  210.             event.next.txt = strip(event.next.txt) /* This Gets rid of the leading & trailing spaces in the LAST variable
  211.                                                       If new fields are added, the variable must be changed to reflect this */
  212.     
  213.             if line ~= '' then do  /* This keeps the commented out lines from appearing */
  214.                 setlist selectevent event.next.command
  215.             end
  216.         
  217.             select
  218.                 when event.next.command = '' then iterate
  219.                 when event.next.command = '' then do
  220.                     iterate
  221.                 end
  222.                 otherwise event.0 = next
  223.             end
  224.         end
  225.         call close(cronfile)
  226.  
  227. /* ===== END OF PARSE  */
  228.  
  229. waitforpkt:
  230.         call waitpkt( "MAINWINPORT" )    /* Wait for a message from Varexx */
  231.         packet = getpkt( "MAINWINPORT" )        /* Get the message */
  232.  
  233.            if packet ~= '00000000'x then do /* This is not a null message */
  234.             class  = getarg(packet)    /* Get the information about the message */
  235.                type = word(class, 1)
  236.                msg = substr(class, 12,100)
  237.             say 'Message Var = ' msg
  238.             say 'Class Var = ' class
  239.             say 'Type Var = ' type
  240.  
  241. /* ===== CLASS EXIT EDITOR ===== */
  242.             if class = end then do /* This is the exit button */
  243.                 hide
  244.                 show project0
  245.                 call startup()
  246.             end
  247.  
  248. /* ===== CLASS QUIT PROGRAM ===== */
  249.  
  250.             if class = closewindow then call exiting()
  251.  
  252. /* ===== CLASS PREFSGAD ===== */
  253.  
  254.             if class = prefsgad then do
  255.                 call openport(PREFSWINPORT)
  256.                 spawn PREFSWINPORT
  257.                 host2 = result
  258.                 address value host2
  259.                 show prefswindow
  260.                 call prefs()
  261.             end
  262.  
  263. /* ===== CLASS EDIT ===== */        
  264.             if class = EDIT then do
  265.                 if ~exists('EZCron:prefs/txted.prefs') then address command 'ed s:cron.config'
  266.                 if exists('EZCron:prefs/txted.prefs') then do
  267.                     open(edconfig, 'EZCron:prefs/txted.prefs', 'r')
  268.                     linein = readln(edconfig)
  269.                     address command linein 's:cron.config'
  270.                     close(edconfig)
  271.                 end
  272.             end
  273.  
  274. /* ===== CLASS TEST EVENT ===== */
  275. /* TEST ONLY TAKES THE FIRST TWO ARGUMENTS AND SFX AS OF RIGHT NOW */
  276.  
  277.             if class = testevent then do
  278.                 if exists('EZCron:prefs/sfx.prefs') then do
  279.                     open(sfxconfig, 'EZCron:prefs/sfx.prefs', 'r')
  280.                     sfxplayer = readln(sfxconfig)
  281.                     close(sfxconfig)
  282.                 end
  283.  
  284.                 read event
  285.                 ev = RESULT
  286.     
  287.                 read arg1
  288.                 arg1 = RESULT
  289.     
  290.                 read sfx
  291.                 fx = RESULT
  292.                 if fx = '-' then fx = ''
  293.     
  294.                 read txtstr
  295.                 tx = result
  296.                 
  297.                 if ev ~= textreminder then do
  298.                     address command 'run >nil: 'ev arg1
  299.                 end
  300.     
  301.                 if fx ~= '' then do
  302.                         address command 'run >nil:' sfxplayer fx
  303.                 end
  304.     
  305.                 if ev = TEXTREMINDER then do
  306.                     address command 'run >nil: rx >nil: ezcron:rexx/Reminder.rexx' tx
  307.                     if showlist(h,SPEAK) then do
  308.                         address command 'echo' tx '>speak:'
  309.                     end
  310.                 end
  311.     
  312.                 drop ev arg1 fx tx sfxplayer
  313.             end
  314.     
  315. /* ===== CLASS GETFILE ===== */
  316.  
  317.             if class = getfile then do
  318.                 clock = time('N')
  319.                 clock2 = LEFT(clock,5)
  320.                 filename = rtfilerequest(, , "Pick a File To Run",OK, "rt_reqpos = reqpos_centerscr")
  321.                 settext event filename
  322.                 settext event_time clock2
  323.                 settext event_date Date(USA)
  324.                 settext arg1 '-'
  325.                 settext arg2 '-'
  326.                 settext arg3 '-'
  327.                 settext arg3 '-'
  328.                 settext sfx '-'
  329.                 settext txtstr '-'
  330.             end
  331.  
  332. /* ===== CLASS NEW CONFIG ===== */ 
  333.         if class = AC_New then do
  334.             if ~exists('s:cron.config') then do
  335.                     open(MkCfg, 's:cron.config',W)
  336.                     writeln(MkCfg, 'TEXTREMINDER - - - - 22:00 Friday - Be Sure to Send E-Mail to the Author of EZCron')
  337.                     close(MkCfg)
  338.             end
  339.         else
  340.             call rtezrequest("A cron.config file already exists."||LF||"Do you wish to overwrite it?.", "_Yes|_No", , "rt_reqpos = reqpos_centerscr")
  341.             if rtresult == 1 then do
  342.                 if exists('s:cron.config.old') then address command 'delete s:cron.config.old'
  343.                 address command 'rename s:cron.config s:cron.config.old'
  344.                 call delay(3)
  345.                 open(MkCfg, 's:cron.config','w')
  346.                 writeln(MkCfg, 'TEXTREMINDER - - - - 22:00 Friday - Be Sure to Send E-Mail to the Author of EZCron')
  347.                 close(MkCfg)
  348.             end
  349.         end     
  350.  
  351.     
  352. /* ===== CLASS REQUESTER GADS ===== */
  353.  
  354.             if class = arg1gad then do
  355.                 argname = rtfilerequest(, , "Pick a file argument",OK, "rt_reqpos = reqpos_centerscr")
  356.                 if argname = '' then argname = '-'
  357.                 settext arg1 argname
  358.             end
  359.     
  360.             if class = arg2gad then do
  361.                 argname = rtfilerequest(, , "Pick a file argument",OK, "rt_reqpos = reqpos_centerscr")
  362.                 if argname = '' then argname = '-'
  363.                 settext arg2 argname
  364.             end
  365.     
  366.             if class = arg3gad then do
  367.                 argname = rtfilerequest(, , "Pick a file argument",OK, "rt_reqpos = reqpos_centerscr")
  368.                 if argname = '' then argname = '-'
  369.                 settext arg3 argname
  370.             end
  371.     
  372.             if class = arg4gad then do
  373.                 argname = rtfilerequest(, , "Pick a file argument",OK, "rt_reqpos = reqpos_centerscr")
  374.                 if argname = '' then argname = '-'
  375.                 settext arg4 argname
  376.             end
  377.     
  378.             if class = sfxgad then do
  379.                 read sfx
  380.                 sfxtxt = result
  381.                 parse var sfxtxt device ':'
  382.                 if device = '-' then device = 'sys'
  383.                 argname = rtfilerequest(device':',, "Pick a soundfile",OK, "rt_reqpos = reqpos_centerscr")
  384.                 if argname = '' then argname = '-'
  385.                 settext sfx argname
  386.             end
  387.     
  388.             if class = txtgad then do
  389.                 read txtstr
  390.                 txt = result
  391.                 if txt = '-' then txt = '' 
  392.                 argname = rtgetstring(txt,'Enter Reminder String', 'Reminder Requester', ,'rt_reqpos = reqpos_centerscr')
  393.                 if argname = '' then call eventparse()
  394.                 clock = time('N')
  395.                 clock2 = LEFT(clock,5)
  396.                 settext txtstr argname
  397.                 settext event TextReminder
  398.                 settext event_time clock2
  399.                 settext event_date Date(USA)
  400.                 settext arg1 '-'
  401.                 settext arg2 '-'
  402.                 settext arg3 '-'
  403.                 settext arg3 '-'
  404.                 settext sfx '-'
  405.                 drop txt
  406.             end
  407.  
  408.             if class = datehelp then do
  409.                 call rtezrequest( " DATE HELP" || LF ||,
  410.                 " "    || LF ||,
  411.                 " These are possible date fields." || LF ||,
  412.                 " "    || LF ||,
  413.                 " "    || LF ||,
  414.                 " 01/01/95       * Run event once on a given date." || LF ||,
  415.                 " "    || LF ||,            
  416.                 " Monday-Friday  * Run event every named day of week." || LF ||,
  417.                 " "    || LF ||,
  418.                 " Daily          * Run event every day." || LF ||,
  419.                 " "    || LF ||,
  420.                 " Monthly-12     * Run event every month on given date." || LF ||,
  421.                 "                  The date is specified AFTER the hyphen." || LF ||,
  422.                 "                  This example would run the event on the" || LF ||,
  423.                 "                  12th of each month" || LF ||,
  424.                 " "    || LF ||,
  425.                 " ", "OKay", ,)
  426.             call eventparse()
  427.             end
  428.  
  429.  
  430.             if class = timehelp then do
  431.                 call rtezrequest( " TIME HELP" || LF ||,
  432.                 " "    || LF ||,
  433.                 " These are possible time fields." || LF ||,
  434.                 " "    || LF ||,
  435.                 " "    || LF ||,
  436.                 " 14:40    * Run the event at 2:40pm." || LF ||,
  437.                 " "    || LF ||,
  438.                 " Minute   * Run event once every minute." || LF ||,
  439.                 " "    || LF ||,            
  440.                 " Hourly   * Run event every hour on the hour." || LF ||,
  441.                 " "    || LF ||,
  442.                 " ", "OKay", ,)
  443.             call eventparse()
  444.             end
  445.  
  446.             if class = datefields then do
  447.                 call openport(DATEWINPORT)
  448.                 spawn DATEWINPORT
  449.                 host3 = result
  450.                 address value host3
  451.                 show datewindow
  452.                 call datefields()
  453.             end
  454.  
  455.             if class = timefields then do
  456.                 call openport(TIMEWINPORT)
  457.                 spawn TIMEWINPORT
  458.                 host4 = result
  459.                 address value host4
  460.                 show timewindow
  461.                 call timefields()
  462.             end
  463.  
  464. /* ===== CLASS PURGE EVENT ===== */
  465.             if class = purgegad then do
  466.  
  467.                 address command 'copy s:cron.config s:cron.config.old'
  468.                 address command 'delete s:cron.config'
  469.                 open(dfile, 's:cron.config', 'W') /* create it again*/
  470.                 close(dfile)
  471.  
  472.                 do i = 1 to event.0
  473.                     say event.i.date
  474.                     parse var event.i.date month '/' day '/' year
  475.                     
  476.                     if day ~= '' & if year ~= '' then do 
  477.                         sortdate = '19'year''month''day
  478.                         eventdate = date('c',sortdate,'s')        /* number of days since..*/
  479.  
  480.                         currentdate = date(s) /* 19951221 */
  481.                         sortcurrent = date('c', currentdate, 's') /* number of days since..*/
  482.                         a = sortcurrent-eventdate
  483.                         say 'a equals =' a
  484.                         if a > 0 then event.i.command = delete  /* this are the files you DONT want to write */
  485.                     end
  486.  
  487.                     if event.i.command ~= delete then do    
  488.                         open(dfile, 's:cron.config', 'a')
  489.                         writeln(dfile, event.i.command event.i.pargs1 event.i.pargs2,
  490.                         event.i.pargs3 event.i.pargs4 event.i.time,
  491.                         event.i.date event.i.sfx event.i.txt)
  492.                         drop result
  493.                     end
  494.                     close(dfile)
  495.                     drop total
  496.                 end
  497.             end
  498.  
  499. /* ===== CLASS UPDATE (MODIFY) EVENT ===== */
  500.             if class = update then do
  501.  
  502.                 read event
  503.                 ev = result
  504.                 if ev = '' then call message('No Event Field.')
  505.                 if ev = '' then call eventparse()
  506.                 if ev = 'None Selected' then call message('No Event Field.')
  507.                 if ev = 'None Selected' then call eventparse()
  508.  
  509.                  event.en.command = ''
  510.                 event.en.time = ''
  511.                 event.en.date = ''
  512.                 event.en.pargs1 = ''
  513.                 event.en.pargs2 = ''
  514.                 event.en.pargs3 = ''
  515.                 event.en.pargs4 = ''
  516.                 event.en.sfx = ''
  517.                 event.en.txt = ''
  518.     
  519.                 address command 'copy s:cron.config s:cron.config.old'
  520.                 address command 'delete s:cron.config'
  521.                 open(dfile, 's:cron.config', 'W') /* create it again*/
  522.                 close(dfile)
  523.     
  524.                 read selectevent var h
  525.                 open(dfile, 's:cron.config', 'a')
  526.                 do n = 1 to h.count
  527.                     if event.n.time = '' then h.n = delete
  528.  
  529.                     if h.n ~= delete then
  530.                     writeln(dfile, h.n event.n.pargs1 event.n.pargs2,
  531.                     event.n.pargs3 event.n.pargs4 event.n.time,
  532.                     event.n.date event.n.sfx event.n.txt)
  533.                     drop result
  534.                 end
  535.                 close(dfile)
  536.  
  537.                 read event
  538.                 ev = result
  539.                 if ev = '' then call message('No Event Field.')
  540.                 if ev = '' then call eventparse()
  541.                 if ev = 'None Selected' then call message('No Event Field.')
  542.                 if ev = 'None Selected' then call eventparse()
  543.                 
  544.                 read event_time
  545.                 et = result
  546.                 if et = '' then    call message('No Time Field.')
  547.     
  548.                 read event_date
  549.                 ed = result
  550.                 if ed = '' then call message('No Date Field.')
  551.  
  552.                  read arg1
  553.                 arg1 = result
  554.                 if arg1 = '' then arg1 = '-'
  555.                 read arg2
  556.                 arg2 = result
  557.                 if arg2 = '' then arg2 = '-'
  558.                  read arg3
  559.                 arg3 = result
  560.                 if arg3 = '' then arg3 = '-'
  561.                 read arg4
  562.                 arg4 = result
  563.                 if arg4 = '' then arg4 = '-'
  564.     
  565.                 read sfx
  566.                 sfx = result
  567.                 if sfx = '' then sfx = '-'
  568.     
  569.                 read txtstr
  570.                 txt = result
  571.                 if txt = '' then txt = '-'
  572.                 
  573.                 open(dfile, 's:cron.config', 'a')
  574.                 writeln(dfile, ev arg1 arg2 arg3 arg4 et ed sfx txt)
  575.                 close(dfile)
  576.                 drop ev et ed arg1 arg2 arg3 arg4 sfx txt
  577.             end
  578.  
  579.  
  580.  
  581. /* ===== CLASS ADDEVENT ===== */
  582.  
  583.             if class = addevent then do
  584.                 read event
  585.                 ev = result
  586.                 if ev = '' then call message('No Event Field.')
  587.                 if ev = 'None Selected' then call message('No Event Field.')
  588.                 
  589.                 read event_time
  590.                 et = result
  591.                 if et = '' then    call message('No Time Field.')
  592.     
  593.                 read event_date
  594.                 ed = result
  595.                 if ed = '' then call message('No Date Field.')
  596.         
  597.                  read arg1
  598.                 arg1 = result
  599.                 if arg1 = '' then arg1 = '-'
  600.                 read arg2
  601.                 arg2 = result
  602.                 if arg2 = '' then arg2 = '-'
  603.                  read arg3
  604.                 arg3 = result
  605.                 if arg3 = '' then arg3 = '-'
  606.                 read arg4
  607.                 arg4 = result
  608.                 if arg4 = '' then arg4 = '-'
  609.     
  610.                 read sfx
  611.                 sfx = result
  612.                 if sfx = '' then sfx = '-'
  613.     
  614.                 read txtstr
  615.                 txt = result
  616.                 if txt = '' then txt = '-'
  617.                 
  618.                 if ev = '' then call eventparse()
  619.                 if ev = 'None Selected' then call eventparse()
  620.                 if et = '' then call eventparse()
  621.                 if ed = '' then call eventparse()
  622.  
  623.                 open(dfile, 's:cron.config', 'a')
  624.                 writeln(dfile, ev arg1 arg2 arg3 arg4 et ed sfx txt)
  625.                 close(dfile)
  626.                 drop ev et ed arg1 arg2 arg3 arg4 sfx txt
  627.             call eventparse()
  628.             end
  629.             
  630.  
  631. /* ===== SELECTEVENT ===== */            
  632.  
  633.             if msg ~= '' & type = 'SELECTEVENT' then do
  634.     
  635.                 settext event msg
  636.                 read selectevent NUMBER
  637.                 en = RESULT  /* en is the event number */
  638.                 say 'en = ' en
  639.                                     
  640.                 settext event_time event.en.time
  641.                 settext event_date event.en.date
  642.                 settext arg1 event.en.pargs1
  643.                 settext arg2 event.en.pargs2
  644.                 settext arg3 event.en.pargs3
  645.                 settext arg4 event.en.pargs4
  646.                 settext sfx event.en.sfx
  647.                 settext txtstr event.en.txt
  648.     
  649.                 say 'event.en.sfx =' event.en.sfx
  650.                 say 'event.en.txt =' event.en.txt
  651.                 say 'event.0 = ' event.0
  652.             end
  653.     
  654. /* ===== CLASS DELETE EVENT ===== */
  655.  
  656.             if class = delete_event then do
  657.                 event.en.command = ''
  658.                 event.en.time = ''
  659.                 event.en.date = ''
  660.                 event.en.pargs1 = ''
  661.                 event.en.pargs2 = ''
  662.                 event.en.pargs3 = ''
  663.                 event.en.pargs4 = ''
  664.                 event.en.sfx = ''
  665.                 event.en.txt = ''
  666.     
  667.                 address command 'copy s:cron.config s:cron.config.old'
  668.                 address command 'delete s:cron.config'
  669.                 open(dfile, 's:cron.config', 'W') /* create it again*/
  670.                 close(dfile)
  671.     
  672.                 read selectevent var h
  673.                 open(dfile, 's:cron.config', 'a')
  674.                 do n = 1 to h.count
  675.                     if event.n.time = '' then h.n = delete
  676.     
  677.                     if h.n ~= delete then
  678.                     writeln(dfile, h.n event.n.pargs1 event.n.pargs2,
  679.                     event.n.pargs3 event.n.pargs4 event.n.time,
  680.                     event.n.date event.n.sfx event.n.txt)
  681.                     drop result
  682.                 end
  683.                 close(dfile)
  684.     
  685.                 settext event 'None Selected'
  686.                 settext event_time 'NA'
  687.                 settext event_date 'NA'
  688.                 settext arg1 '-'
  689.                 settext arg2 '-'
  690.                 settext arg3 '-'
  691.                 settext arg3 '-'
  692.                 settext sfx '-'
  693.                 settext txtstr '-'
  694.                 
  695.                 call eventparse()
  696.             end /* Above routine end */
  697.         end        /* rexx portcheck end */
  698.     end            /* do forever main loop end */
  699.     exit        /* end of program....subs follow */
  700.  
  701.  
  702.  
  703.  
  704. message: procedure
  705.  
  706.     call rtezrequest( arg(1),'Okay!','EZCron ERROR','rt_reqpos = reqpos_centerscr rtez_flags=ezreqf_centertext',)
  707.     return
  708.  
  709.  
  710. /* ===== PREFERENCES ===== */
  711.  
  712. prefs:
  713.     set time_format date_format gadget42 disable
  714.     call waitpkt( "PREFSWINPORT" )    /* Wait for a message from Varexx */
  715.     packet = getpkt( "PREFSWINPORT" )        /* Get the message */
  716.  
  717.     if packet ~= '00000000'x then do /* This is not a null message */
  718.         class  = getarg(packet)    /* Get the information about the message */
  719.            type = word(class, 1)
  720.                msg = substr(class, 12,100)
  721.             say 'class =' class
  722.             say 'msg =' msg
  723.  
  724.             if class = 'CLOSEWINDOW PrefsWindow' then do  /* This is strange */
  725.                 hide
  726.                 call eventparse()
  727.             end
  728.  
  729.             if class = exitprefs then do
  730.                 hide
  731.                 call eventparse()
  732.             end
  733.     
  734.             if class = texteditor then do
  735.                 editor = rtfilerequest(, , "Pick a text editor",OK, "rt_reqpos = reqpos_centerscr")
  736.                 if rtresult == 0 then call prefs() /*This get out of the edprefs function */
  737.                 open(edconfig,'EZCron:prefs/txted.prefs', 'w')
  738.                 writeln(edconfig, editor)
  739.                 close(edconfig)
  740.                 drop editor
  741.             end
  742.                 
  743.             if class = sfxplayer then do
  744.                 player = rtfilerequest(, , "Pick a sound player",OK, "rt_reqpos = reqpos_centerscr")
  745.                 if rtresult == 0 then call prefs() /*This get out of the edprefs function */
  746.                 open(edconfig,'EZCron:prefs/sfx.prefs', 'w')
  747.                 writeln(edconfig, player)
  748.                 close(edconfig)
  749.                 drop player
  750.             end
  751.             call prefs()
  752.     end    
  753.  
  754. /* ===== DATE FIELD REQUESTER ===== */
  755.  
  756. datefields:
  757.     field = ''
  758.     do forever
  759.         call waitpkt( "DATEWINPORT" )    /* Wait for a message from Varexx */
  760.         packet = getpkt( "DATEWINPORT" )        /* Get the message */
  761.     
  762.         if packet ~= '00000000'x then do /* This is not a null message */
  763.             class  = getarg(packet)    /* Get the information about the message */
  764.                type = word(class, 1)
  765.             msg = substr(class, 11,25)
  766.  
  767.             if field = '' then field = date(usa)
  768.             say 'field before the if string is' field
  769.             if msg = '0' then field = Date(USA)
  770.             if msg = '1' then field = 'Daily'
  771.             if msg = '2' then field = 'Monthly-'right(date(S),2)  /* Monthly-13 */ 
  772.             if msg = '3' then field = 'Sunday'
  773.             if msg = '4' then field = 'Monday'
  774.             if msg = '5' then field = 'Tuesday'
  775.             if msg = '6' then field = 'Wednesday'
  776.             if msg = '7' then field = 'Thursday'
  777.             if msg = '8' then field = 'Friday'
  778.             if msg = '9' then field = 'Saturday'
  779.             if msg = '10' then field = 'Sunday'
  780.         
  781.             if class = 'CLOSEWINDOW DateWindow' then do
  782.                 hide
  783.                 address value host
  784.                 call eventparse()
  785.             end
  786.     
  787.             if class = exitdate then do
  788.                 hide
  789.                 address value host
  790.                 call eventparse()
  791.             end
  792.  
  793.             if class = okay then do
  794.                 hide
  795.                 address value host
  796.                 settext event_date field
  797.                 call eventparse()
  798.             end
  799.         end    
  800.     end
  801.  
  802. /* ===== TIME FIELD REQUESTER ===== */
  803.  
  804. timefields:
  805.     field = ''
  806.     do forever
  807.         call waitpkt( "TIMEWINPORT" )    /* Wait for a message from Varexx */
  808.         packet = getpkt( "TIMEWINPORT" )        /* Get the message */
  809.     
  810.         if packet ~= '00000000'x then do /* This is not a null message */
  811.             class  = getarg(packet)    /* Get the information about the message */
  812.                type = word(class, 1)
  813.             msg = substr(class, 11,25)
  814.  
  815.             if field = '' then field = LEFT(time('N'),5)
  816.             if msg = '0' then field = LEFT(time('N'),5)
  817.             if msg = '1' then field = 'Minute'
  818.             if msg = '2' then field = 'Hourly'
  819.  
  820.             if class = 'CLOSEWINDOW timewindow' then do
  821.                 hide
  822.                 address value host
  823.                 call eventparse()
  824.             end
  825.     
  826.             if class = exittime then do
  827.                 hide
  828.                 address value host
  829.                 call eventparse()
  830.             end
  831.  
  832.             if class = okay then do
  833.                 hide
  834.                 address value host
  835.                 settext event_time field
  836.                 call eventparse()
  837.             end
  838.         end    
  839.     end
  840.  
  841. /* ===== EXIT AND CLEAN UP ===== */
  842.  
  843. exiting:
  844.     address command 'run >nil: avail flush'
  845.     'hide unload'  /* Hide the window and unload the gui file from memory */
  846.     call delay(15)
  847.     call closeport( "MAINWINPORT" )  /* Close the port */
  848.     address command 'run >nil: vxc'
  849. exit
  850.