1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
|
#!/usr/bin/env wish
#==============================================================================
# Demo: mentry::dateTimeMentry, mentry::putClockVal, mentry::getClockVal.
#
# Copyright (c) 2008-2014 Csaba Nemethi (E-mail: csaba.nemethi@t-online.de)
#==============================================================================
package require mentry
set title "Date & Time"
wm title . $title
#
# Add some entries to the Tk option database
#
source [file join [file dirname [info script]] option.tcl]
#
# Date and time formats supported by this demo
# script and the corresponding field separators
#
array set dateFmts {0 mdy 1 dmy 2 Ymd}
array set dateSeps {0 / 1 . 2 - }
array set timeFmts {0 IMS 1 HMS}
array set timeSeps {0 : 1 : }
#
# Choose the date & time formats; don't use the %p field descriptor
# for displaying the AM/PM indicator, because it doesn't work on
# UNIX if Tcl/Tk 8.4 or higher is used in a non-default locale
#
wm withdraw .
set clockVal [clock seconds]
if {[clock format $clockVal -format "%H"] < 12} {
set meridian AM
} else {
set meridian PM
}
set dateIdx [tk_dialog .choice $title "Please choose a date format" {} -1 \
[clock format $clockVal -format "%m/%d/%y"] \
[clock format $clockVal -format "%d.%m.%y"] \
[clock format $clockVal -format "%Y-%m-%d"]]
set timeIdx [tk_dialog .choice $title "Please choose a time format" {} -1 \
[clock format $clockVal -format "%I:%M:%S $meridian"] \
[clock format $clockVal -format "%H:%M:%S"]]
wm deiconify .
#
# Frame .f with a mentry displaying the date & time
#
frame .f
label .f.l -text "Date & time: "
mentry::dateTimeMentry .f.me $dateFmts($dateIdx)$timeFmts($timeIdx) \
$dateSeps($dateIdx) $timeSeps($timeIdx) \
-justify center -background white
pack .f.l .f.me -side left
#
# Message strings corresponding to the values
# returned by mentry::getClockVal on failure
#
array set msgs {
EMPTY "Field value missing"
BAD "Invalid field value"
BAD_DATE "Invalid date"
BAD_YEAR "Unsupported year"
}
#
# Button .get invoking the procedure mentry::getClockVal
#
button .get -text "Get from mentry" -command {
if {[catch {
set dateTime ""
set clockVal [mentry::getClockVal .f.me]
set dateTime [clock format $clockVal -format "%c"]
} result] != 0} {
bell
tk_messageBox -icon error -message $msgs($result) \
-title $title -type ok
}
}
#
# Label .dateTime displaying the result of mentry::getClockVal
#
label .dateTime -textvariable dateTime -background white
#
# Frame .sep and button .close
#
frame .sep -height 2 -bd 1 -relief sunken
button .close -text Close -command exit
#
# Manage the widgets
#
pack .close -side bottom -pady 10
pack .sep -side bottom -fill x
pack .f -padx 10 -pady 10
pack .get -padx 10
pack .dateTime -padx 10 -pady 10
set clockVal [clock seconds]
mentry::putClockVal $clockVal .f.me
focus [.f.me entrypath 0]
|