Version 0 of example

Updated 2008-06-03 01:22:19 by Bezoar

2 June 2008 Bezoar

I wanted to see how far I could take the callib in 20 min here is the result. Hover over todays date for 3 seconds to have the appointment schedule appear. By default the priority prints in the message. I originally had it as the time. A good feature would be to allow the user to change the compare function for the priority so times could be used. Also activeforeground option for the days of the month would also be nice; having that would allow more color schemes.

=====

  #!/bin/sh
   # the next line restarts using wish  ( change this to your setup ) \
   exec /opt/usr/bin/tclsh8.5  "$0" ${1+"$@"}
  if { [ catch {package require Tk } err ] != 0 } {
      puts stderr "Unable to find package Tk ... adjust your auto_path!";
  }
  # make sure to save the callib code in a file and source it . 
  source ./callib.tcl

  proc setMonthYear { cal } {
      global monthYear
      set p [ $cal configure -month ]
      set y [ $cal configure -year ] 
      set scanStr [format "%s/1/%s 12:00:00"  $p $y ] 
      set timestamp [ clock scan $scanStr ] 
      set monthYear [clock format $timestamp -format "%b -%Y" ] 
  }

  proc incrementMonth { cal   } {
      $cal nextmonth
      setMonthYear  $cal
  }
  proc decrementMonth { cal   } {
      $cal prevmonth
      setMonthYear  $cal
  }
  proc incrementYear { cal   } {
      $cal nextyear
      setMonthYear  $cal
  }
  proc decrementYear { cal   } {
      $cal prevyear
      setMonthYear $cal
  }
  set monthDay [clock format [clock seconds ] -format "%b - %Y" ]
  frame .frame -background blue -relief flat
  set topframe [ frame .frame.topframe  -background blue ]
  button .frame.exit -text exit -command { destroy . } 
  set calendar [ calwid .frame.calendar -font { helvetica 10 bold } \
      -dayfont {Arial 10 bold } \
  -background blue \
  -foreground white \
  -activebackground cyan \
  -clickedcolor    black \
  -startsunday     0 \
  -delay 3000 \
  -daynames {Su Mo Tu Wed Th Fr Sa} \
      -month [clock format [clock seconds ] -format "%N" ] \
  -year  [clock format [clock seconds ] -format "%Y" ] \
      -relief groove ]
  button $topframe.decyear   -text "<<"  -command " decrementYear $calendar " 
  button $topframe.decmonth   -text "<"  -command " decrementMonth $calendar " 
  label  $topframe.monthyrlbl  -textvariable monthYear -background blue -foreground white -font {Helvetica 14 bold } -width 10
  button $topframe.incrmonth -text ">" -command " incrementMonth $calendar " 
  button $topframe.incryear  -text ">>" -command " incrementYear $calendar "

  pack .frame -side top -expand 1 -fill both
  pack $topframe -side top -expand 1 -fill x -pady 3 
  pack $topframe.decyear    -side left -expand 1 -fill none -padx 3 -pady 3
  pack $topframe.decmonth   -side left -expand 1 -padx 3 -pady 3
  pack $topframe.monthyrlbl -side left -expand 1 -padx 3 -pady 3
  pack $topframe.incrmonth  -side left -expand 1 -padx 3 -pady 3
  pack $topframe.incryear   -side left -expand 1 -padx 3 -pady 3
  pack $calendar   -side top -anchor c  -expand 1 
  pack .frame.exit -side bottom -anchor c -fill x -pady 3
  setMonthYear $calendar
  $calendar configure -mark [eval list  [clock format [clock seconds ] -format "%e %N %Y 1 red { 8:00 Get Groceries }" ]]
  $calendar configure -mark [eval list  [clock format [clock seconds ] -format "%e %N %Y 2 red {12:00 Pick up Dry Cleaning}" ]]
  $calendar configure -mark [eval list  [clock format [clock seconds ] -format "%e %N %Y 0 red { 7:00 Wake up and water plants.}"]]
  $calendar configure -mark [eval list  [clock format [clock scan "02/23/2009 12:00:00" ] \
                                       -format "%e %N %Y 0 red { 12:00 Get New Car!}"] ]

=====


calendar widget example code