home *** CD-ROM | disk | FTP | other *** search
/ C!T ROM 5 / ctrom5b.zip / ctrom5b / DOS / TEKST / AURORA2 / CALENDAR.AML < prev    next >
Text File  |  1995-04-28  |  5KB  |  170 lines

  1.  
  2. /* ------------------------------------------------------------------ */
  3. /* Macro:        CALENDAR.AML                                         */
  4. /* Written by:   nuText Systems                                       */
  5. /*                                                                    */
  6. /* Description:  This macro displays a popup calendar window for the  */
  7. /*               current year and month.                              */
  8. /*                                                                    */
  9. /* Usage:        You can move to other months and years with the      */
  10. /*               following keys:                                      */
  11. /*                                                                    */
  12. /*                 <pgdn>       - next month                          */
  13. /*                 <pgup>       - prev month                          */
  14. /*                 <right>      - same month, next year               */
  15. /*                 <left>       - same month, prev year               */
  16. /*                 <ctrl pgdn>  - december of the current year        */
  17. /*                 <ctrl pgup>  - january of the current year         */
  18. /*                 <esc>        - exit the calendar                   */
  19. /* ------------------------------------------------------------------ */
  20.  
  21.   include bootpath "define.aml"
  22.  
  23.   // define the colors to use
  24.   define
  25.     set cal_client_color   color black       on gray
  26.     set cal_border_color   color white       on gray
  27.     set cal_title_color    color brightblue  on gray
  28.     set cal_today_color    color brightgreen on gray
  29.     set cal_control_color  color yellow
  30.   end
  31.  
  32.  
  33.   // function to redraw the calendar for any year and month
  34.   function  draw (year month)
  35.     var monthdays
  36.  
  37.     // set the calendar title based on the year and month
  38.     settitle (case month
  39.                 when 1 "January"    when 7  "July"
  40.                 when 2 "February"   when 8  "August"
  41.                 when 3 "March"      when 9  "September"
  42.                 when 4 "April"      when 10 "October"
  43.                 when 5 "May"        when 11 "November"
  44.                 when 6 "June"       when 12 "December"
  45.               end) + " " + year  'c'
  46.  
  47.     // get the day in which the year starts using a perpetual
  48.     // calendar (0-6, 0=sunday)
  49.     startday = "5012356013456123460124560234" [year mod 28 + 1]
  50.  
  51.     // string indicating the days over 28 for each month
  52.     over28 = concat (if? (not (year mod 4)) "31" "30") "3232332323"
  53.  
  54.     // get total days in the month
  55.     maxdays = 28 + over28 [month]
  56.  
  57.     // get the number of days in previous months
  58.     i = 1
  59.     while i < month do
  60.       monthdays = monthdays + 28 + over28 [i]
  61.       i = i + 1
  62.     end
  63.  
  64.     // calculate the starting day for the month (0-6, 0=sunday)
  65.     startday = (startday + monthdays) mod 7
  66.  
  67.     // set 'today' to today's day number if it's the right
  68.     // year and month
  69.     rawtime = getrawtime
  70.     today = if rawtime [5:2] == month and rawtime [1:4] == year then
  71.               rawtime [7:2]
  72.             end
  73.  
  74.     // clear the window and draw the header
  75.     clearwindow  color cal_client_color
  76.     gotoxy 1 1
  77.     writeline " Sun  Mon  Tue  Wed  Thu  Fri  Sat  "  (color cal_title_color)
  78.  
  79.     // move the video cursor to the start-day position
  80.     gotoxy 2 + startday * 5
  81.  
  82.     // write the calendar days
  83.     day = 1
  84.     while day <= maxdays do
  85.       writestr (pad day 3) + "  "
  86.         (if? day == today  cal_today_color  cal_client_color)
  87.       if getx > 34 then
  88.         writeline
  89.         writestr ' '
  90.       end
  91.       day = day + 1
  92.     end
  93.  
  94.   end
  95.  
  96.  
  97.   // create the calendar window
  98.   createwindow
  99.   setwinobj
  100.   setframe ">b"
  101.   setwinctrl '≡'
  102.   setshadow 2 1
  103.   sizewindow 36 5 71 11 "ad"
  104.   setborder "1i"
  105.   setcolor  border_color   cal_border_color
  106.   setcolor  text_color     cal_client_color
  107.   setcolor  control_color  cal_control_color
  108.  
  109.   // current year and month
  110.   year  = getrawtime [1:4]
  111.   month = getrawtime [5:2]
  112.  
  113.   loop
  114.  
  115.     // redraw the calendar window
  116.     draw year month
  117.  
  118.     case getkey
  119.  
  120.       when <esc>
  121.         break
  122.  
  123.       // mouse click
  124.       when <button>
  125.         case getregion
  126.           // close icon
  127.           when 51
  128.             break
  129.         end
  130.  
  131.       // forward one month
  132.       when <pgdn>
  133.         month = month + 1
  134.         if month > 12 then
  135.           month = 1
  136.           year = year + 1
  137.         end
  138.  
  139.       // backward one month
  140.       when <pgup>
  141.         month = month - 1
  142.         if not month then
  143.           month = 12
  144.           year = year - 1
  145.         end
  146.  
  147.       // goto january
  148.       when <ctrl pgup>
  149.         month = 1
  150.  
  151.       // goto december
  152.       when <ctrl pgdn>
  153.         month = 12
  154.  
  155.       // forward one year
  156.       when <right>
  157.         year = year + 1
  158.  
  159.       // backward one year
  160.       when <left>
  161.         if year then
  162.           year = year - 1
  163.         end
  164.     end
  165.   end
  166.  
  167.   // destroy the calendar window
  168.   destroywindow
  169.  
  170.