Hi, this piece of code is a part of my software. Its a little "date picker" or "date entry" widget, Im not sure about a name :), so lets say its simple popup "Date Entry" I used to use great An i15d date chooser widget, but I wanted some extra stuff, so I came up with this one. In the future I want to add some extra stuff like in Date Picker - jQuery (unfortunately I cant do it right now, too busy looking for work :()
So what you can do with it:
In the future, you should be able to see 3 months, 1 year calendar, select period of time. (If you can do it, please post a copy, so i can include in my software :))
How to use it:
You can send a configuration dictionary to ::DATE::my_popup_Cal proc, possible keys are:
result_format - Any format groups recognized by the clock format command. (see code) week_start - Possible values are: Monday and Sunday (default is Monday)
That is all!
#!/bin/sh # main.tcl \ exec tclsh "$0" ${1+"$@"} package require Tk namespace eval DATE { ####################################################################################################### # Set variables. Configure your stuff here ####################################################################################################### set ::DATE::back_weekdays #00b70d ;# Background color of day of the week set ::DATE::back_days grey80 ;# Background color of days in the month set ::DATE::back_pointer grey90 ;# Color of background highlighting set ::DATE::fontcol_today blue ;# Font color of today set ::DATE::fontcol_year blue ;# Font color of year set ::DATE::fontcol_month blue ;# Font color of month set ::DATE::fontcol_days grey40 ;# Font color of normal days set ::DATE::fontcol_sunday #ff0099 ;# Font color of sunday set ::DATE::fontcol_saturday #ff1239 ;# Font color of saturday set ::DATE::font_year {Helvetica 14} ;# Font type and size of year frame set ::DATE::font_month {Helvetica 10} ;# Font type and size of month frame set ::DATE::font_days {Helvetica 9} ;# Font type and size of dyas frame set ::DATE::sel_month [clock format [clock scan now] -format "%m"] set ::DATE::sel_year [clock format [clock scan now] -format "%Y"] set ::DATE::months [dict create 1 January 2 February 3 March 4 April 5 May 6 June 7 July 8 August 9 September 10 October 11 November 12 December] set ::DATE::sundayWeek {"Sun" "Mon" "Tue" "Wed" "Thu" "Fri" "Sat"} set ::DATE::mondayWeek {"Mon" "Tue" "Wed" "Thu" "Fri" "Sat" "Sun"} ####################################################################################################### # Images ####################################################################################################### set left [image create photo -data { iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABHNCSVQICAgIfAhkiAAAAAlw SFlzAAAK8AAACvABQqw0mAAAABh0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzT7MfTgAA AuNJREFUSIntVU1IVFEYPd+kUjZpE1pg2a+LssBJStqYkk1lq1yXFo2TVpCQLazGhNKVtHBU hIpQCgINrCnHWlXODEFhYxZl0QTVM8taSL6ZnHnv3q+F8xORQaEQ1IUD9913+c45953vXWJm zOQwzGj1/wTTRpBrXr+SiFL/iIGZp8TateuyBgYed4TD2piiDA9UHana+Kv9P8PPF4HZ3d3X jqqqOjo09ILt9lP8yOdjv/917+8SJPzoyH6y1qIow6eTk+dsam/vQFfXVXz+/Anp6Wk4YLOt bnI0ly1auFCTQhiklBQ9BYDIMItw787doXMXzj+M1qNoo2VkLF7mdDrt2dlrrG6Ph9pa26AM DyM1JQXBYBDFO4tRWVmBiVAILCMKEVcqJcNABJPJFO7v72/bts1SzcyCmBmHDx0222trnePq eKajqRkejwdz5yYjKSkJYIDBICIYyABQTBuA+F+AGRBCR25uLmqO1+B27y1r2d6yi7OICBUH K1v8fv+m/fv2Q1HeYZ7RCCKCkBJSSrCUEEJA0zTouh7B93MdQtMhJcPne4TMzKUoKCxMtNls VxIAIBQKBxKTEiF0HVIQNE2LyEJMMTODJccdfPcu7okQDoWh6zqIyKCqKgx1dXWwnzhRv2L5 Cn/n1S7k5OTg44cPCAaC0IU+qTqiXAgBGYWUkEJGnicdhkIT2GqxYPuOHXC73d0ul4tjH3lJ xpKlN1w367OyskpdPS6cbWzEyMgITPPnQw0EsKukBNXHqhEIBiNOCIjFEWBIEBHS0tL1J4OD 54uKtlQxsxaLqfJeeQugrKG+odNqKz+Tn59vbnE4cPnSJXwaHYXRaIRpwYI33deun47FlJmi GQVNJtbr8b5saW2+H7sGpmg0Y0+P66SqBsa8Xi+X7t7DfX1ufvZ86Oa0dHIUBZsL1g0+edoZ +Pr1y6tX/gfl1nLztBJEbeZtyFsFwPi7xZk53skzNf6O++DfJvgGRXumi1HnLrIAAAAASUVO RK5CYII=}] set right [image create photo -data { iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABHNCSVQICAgIfAhkiAAAAAlw SFlzAAAK8AAACvABQqw0mAAAABh0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzT7MfTgAA AtVJREFUSIntVV1Ik1EYft5vc/7NTEy8qpt2kQ1XQZQZBc0bG9bd8ma7KGFWppGlkaYTvddI pQzDLiqmaWQWVNPYBtq1ppGmzoSR+7rZ3E983ze/08WmqEliOAjqwMs5HJ7zPi/POc97iDGG eA4urtn/E8SNgIh25h05qiGihE3BjLEtRX1d/UmPx/MpEAz63W73+7LLZSd+h98ygdvttg+P fGAWy0XmcLpYMBQSnU5XM4CsjfC02gfWOqs+71jePsYYMTBGIAKBEQgKhWLJy3tVRqOxqqPj we6urkdISUmBXn8KllILkpOSp2w2m7W8/IptjZyMMRBR4vDwyD2tVnue53nIsgyO40BEsQAA AsCgVCrR2fkQdrsdqalqBAKLUKvTUFJyAUVFRZibm+s1m0w3R8dGZ1cIurt7SvUFBfdv19Zi dHQMSoUC0azrXU4AAAXHgeM4MDAQESKRJQQWF6HT6VBVXYWMjIy5qxUVhX3P+yZJo9EoHE7X y6HBQUNTYyOys7OxYfdY5iOAYkTLU3RJCIdDkKQI2trbkJmZ+USr3W9S+v1+gDGZMQZRFCFJ Uux5/VL4yj4RQETrIARRFCGKIgRBgCpRlQoAHM/zS06H44XBYIBer0c4FIIoCFGwJEIUhZWD 0RAgShIkKYKIJCESieBHOIyFhW/IzdWhp/cZcnJyPHeaW5pWX3KCw+m6q8vNtXi9Xk6WZVC0 TFBMZxaTJzkpCS3NLRjo70eqWg2/z4ddWVmovH4DRWfPYGZm+rHZZLZOTIzPAoAyZjYJwKXq quqn+cfzc+QlGWsVIMZxnOz9zqvMJvOtHTvS9vBeL9IFAcbiYlyrrIRKpfrY3tpaV1Nb0z8x Mf7nTp6enhkaGHjFDIWn2aB9kAWCwdCbt++aAKRvi5MbrA0FX+fnv/h8ft/nyanXRuO5w9va KmLOzzx04OBeANxm2DWtIh7j7/wP/i2Cn6ZGX0/txR+gAAAAAElFTkSuQmCC}] set up [image create photo -data { iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABHNCSVQICAgIfAhkiAAAAAlw SFlzAAAK8AAACvABQqw0mAAAABh0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzT7MfTgAA AwZJREFUSIm1lctPU1EQxr9zqyxEauICVIxaNYBKJDG2F0QBY6QYWbhxqUEXakw0SEx8/ANq 3PigxceCYIILE1/Ex6ZGZYGBKG7wiaUVbhEpj94r1lh7zucCfCwKtypOcjYnZ+aXmflmjiCJ /2laug8rN1fmB4M9TX2GcW1Xza41aRNI2p6i1UWuaHQo9PRZJ9vannBoaLi/cGWhKx3ftAAv ul5cD4XCXL+hnKWlGxgKh9nZ+bx5WgAnT5zcnpSSe/fuY1lZBcvKKnjwYC0T377x+LHj1f8E ADDXNM3uGzdv0e3W6fVuoddbRbdb59279xiNRrsAOKeKMWWTA4HAsUQisbzB78fs2ZmQUkJK hczMWaiv90FzOFa1tLTUTRVjUsDOHTuLy8srDpw7dx6jozFomgalFJRScDhmYHBwEBcaLqDS 6z1cvbW6aLI4ItUcCCFmBnt67keMyKba2kNwOp0/NAdAAAIAibGxz/D56uGc47yzoqBgG0mZ VgZLFi3JzcnOKWlsbIRlmvhkWVBKTmQgoaSCZVmIjY7i0sVLyF2Qu3HxosULU8WakerStMzh kZGR3pqamoL8vDyYloXWx60QQvx8U1VVhaysLHg8HsTM2MCXeDyWskaTdb+urq70XTB4Jx6P h/s/fKDu0VlSvI7FeglLitdx4OMgx8Y+h4LBnntHjxyt+Os5OHvm7P7Xb97QvdZN3aPT49ap e3S+fdvN06dO77HzT1mi383lciWUVFBSYVwPhICAUgpLly1N2PnbAqSUDoJQSkIDJ3QkQBJS SttlaQsAIKgIKRV+SVoglbz/FgCSUDIJUAN/A3B8IqYHIJUaD04C4mcG0wNQ4/UG+KMHgKIC YF8mW4AQApoQSHz9ioyMDABAMpmEpmnQNIdtBrYqaO/oeDVv/jys9bgRMQxEDAO6riM7Owcd 7e0vbVOw/TAA7eHDR5cNI0Kfz88GfwONSD8DgQd+TCzLf/4yAcxsbr66531v3+3w+96bTU1X dgNwpOObcl1PZkIIsRxg9x/4fAdoLf31QoQzBAAAAABJRU5ErkJggg==}] set down [image create photo -data { iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABHNCSVQICAgIfAhkiAAAAAlw SFlzAAAK8AAACvABQqw0mAAAABh0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzT7MfTgAA AwVJREFUSImtlU9sDGEYxp93KhSlSe22pQcXbbcrldamuzTaIKk4Ian40zpUECSoSgjlwI0b Lm7+xJ9KalsWFw66SKX+rNBK6Kqmu1RsTavtrJP5HochkeqaQb/ku0zmeX7zfu/zzick8TdL ICCcazRHpiJpTU1XtyQSA6HEQOJmc/O17SIyyRGB5B83AITD4VPDIyNsbb3BYEsrv3wZ5oMH D88AEFu93Qs7d+z0Jb9+ZWPjYfp8ZfT5ynjgwEGOGgYb9jYE7PS2ZVZWVhYNDQ7h6dNncLlc AIBIJAJd11FeXl4EoONPeluAaJJmKhMiAtM0rWciUEoBDnpoC6AiQUApBaUUxCLACpJ9BO0B JDkGIJr14YR9Xp1EjQBBKlApEIBYYAf2TioAoEgoU8FUJgQCIR0Pmy0gTdMUyF+OSCCaACQ0 TVN2etsURKPRyQRAKqsK04QyraPq6emZYltCqgHZvWt3oDsaDRnJ5LvPus7Fi8rpL/PTX+Zn wL+Inz4laCSTva/fdF+vq9u8MJWPjPezE5Gpvb297X19sZL74TAMI4m2tnuWAFZfli5dhhkz MrBs+XLMyZvTubJqRUX32+jwWK9UPZieNcuVd+L4CbQEg8jKykJGRgYAAX8QboZCGBwcRDwe x8nTp71utzsHwG+AVBVIJPL8klKqZlNNDdLT06GJBsiP0bJyCsMwcPbCeWRmZoYWFBdXk/w2 1mvcJpPktq1bjxUWFg7V1NZC13Uo9bPBJmgq6LqO6uq1KC0tNfbVNxwZz/ynWcp95UrT/kRi gAF/gAXz8lnsnc9i73x68gu4sKSUHz70s6Wl9eg//64BTIvF4s+C14LMdWfT6ymi11PEHJeb ly5eZn//xy4AM//rPqjfU181OmqYG9atZ15OLvNyZ3PNqtUcGRll46HGVf994ZBEe/ujc51d r5g9y8VcdzZfvOxkx+MnV51oHQHy5+XPjcXfv7916zbv3LnLvr5Yj6fQM3fCACSxYf3Gkjfd 0abOrldnK5ZUFDjVjTsHE7m+A5o9OsW1tXDMAAAAAElFTkSuQmCC}] set calendar [image create photo -data { iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABHNCSVQICAgIfAhkiAAAAAlw SFlzAAAK8AAACvABQqw0mAAAABh0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzT7MfTgAA BTZJREFUSIm1lmtsVEUUx39ze/fVbgsYodZ+UktLkGqgCNVtokLABkhAY0Sg2BqVxsRSTTAa hdiEiihqYqyhfgMRQdJtPxijRdjWmPIQpFJtU6AkdlvdtoF2oeyju3dm/LAPl0d8fPAkk5s7 c+f/P+d/zpk7QmvN/2nG36wJIYTznwCS34j/RLDj7Xcqh4d//z4YvHLq5ImTu4UQ024BPO3Y sePNl8fHTw0O+jsbGxsrb8mgtb5uAM4//gj4fb5O/cEHH+qxsTHd1tq25cbvvF7vq4HAiH7/ /Q/1kaM+PTQ07AecN+FlvjRuf3v5UZ/vE0tKWV39rC4unqN9HR06GAz2dHd37+jp6dl19uzZ XadPn94xMTHR892RI7q4eI6uqXlWT8Vi8qjP19z0cdMaICuFaSbDNTo6Oj+q21z30oULFxgc HMRmM3E6nUxOXmNoaKg0blmlccsCDUophoeHuTYZwuVyYZo2/P4hw+V01T69bl3tosWLDwkh arTWEROgqemT1fPnz3+poaGBb775lqqqKsoWLmRiIojdbqe+/hXCoRDCMJKyKrKzc9jy6haK ioooK1vAwYMHObD/CxYtXsTOnTufamnx/gA0ZTU0NDB9+vRXzp07V7Z7dzP5+bPw+4coKSnh /vvvw+froK+vj7xpeTidDkwzi6mpGMFgkMuXL7NkyRKktGhvP0xOTjYXL17kzsJCKjweysoW HDAB7Hab+8rVq5imidYQi02xZ88e4vE4breb119/Da+3lbHRUZTWrFq1Eo/Hw+joKF5vK/39 /cyceTtCGJimjUg4jBDCNjAwYDMAlNJaAEpJlJIJGZRCANu2bWXDhvXcffddjI+P8+bWN9i2 bSsOh4OHH3mYlpZDeDwPEQlHUDKxXyDQyZI0MstVSYWUkqnoFHPvncu+z/exfPkyACavTlJe Xs7KFStobv6UNavX8PjqxwkEAsybN49oNIpSKkGi1c2NliCQhEMhikuK2bs3IdGXXx4CIBqN UlFRgVKKw+2HWbt2LeUPllNVtZF9ez/D7XYnFJAKrf46fsxMAillouQG/dRuqqWzo5ON1c8k PDEM7iwsIBaLs71xOwUFBdx22wwGBi6yuW4zoyMj2B12ZCoCcYsIpLTQWnPt2iTHurpQSuFw ONLrhmHgdDr49ZdfeLC8nOrqGoqK7qH+5XrC4TBSyjQGOoNAk2gemdRQK43D4USTyAtAPB7j SvAKAPv370cgON7VRW9vH6WlpbiyXUjLQkoFWqfwb85BeiiJsiQ6mTCtNGfOnAFg9uzZjIwE cLlczJo1i0uXLhEOhRJOSpk6gzJzoFFKYVlWIkQSElpWHCMrCwB3rhtvSwubajfx7q73KCws 5CGPh5kzb6fhrbeIxWLY7XaUtFBa35gDIWTS88ynabPR/dMZjh8/wYXz54lGImxcv4E2bytr nngCgBeee56vv/qKnOzs9D6tVDoHZlKemM1mIxqJoPLyUsc2ToeDUz+eZO2TT+JwOMh1uwkE AtTX1eF0OonHYgghcOfmYlkWQohEP2iNMAyRn59vmQCnfzzV5anw1BSXlNDX24vdbifTNJpo JHLd3GQSPNUjAJZlkX9HAUuXLuVcf/+JkZERJbTWCCFyurt/bp0+Y8byw+3thEMhDCOtHul4 U6WRMZVZhXa7jUeXLCXLMLofW7as8jf/4JhIySGEyG1ta3tx4cIHVhhZRl6ifG781eo0euZd IemkobWO9PX2Hq2sfKxJaz0GkCZImUjEfb1G/94srbW8Du//vrb8Cfk3BWpw3nPLAAAAAElF TkSuQmCC}] ####################################################################################################### # Procedures ####################################################################################################### proc ::DATE::check_config {{userDict 0}} { set ::DATE::default_config_values [dict create result_format "%d-%m-%Y" calendars "1" start_date [clock scan now] week_start Monday] if {$userDict == 0} { foreach j [dict keys $::DATE::default_config_values] i [dict values $::DATE::default_config_values] { set ::DATE::$j $i } } else { foreach j [dict keys $::DATE::default_config_values] { if {[dict exists $userDict $j] == 1} { set ::DATE::$j [dict get $userDict $j] } else { set ::DATE::$j [dict get $::DATE::default_config_values $j] } } } } proc ::DATE::close {} { destroy $::DATE::w } proc ::DATE::get_monthname {months num} { set trimmed [string trimleft $num 0] return [dict get $months $num] } proc ::DATE::plus {} { set ::DATE::sel_month "[expr $::DATE::sel_month + 1]" if {$::DATE::sel_month == 13} { set ::DATE::sel_month 1 set ::DATE::sel_year [expr $::DATE::sel_year + 1] } ::DATE::update_month ::DATE::update_year ::DATE::update_days } proc ::DATE::minus {} { set ::DATE::sel_month "[expr $::DATE::sel_month - 1]" if {$::DATE::sel_month == 0} { set ::DATE::sel_month 12 set ::DATE::sel_year [expr $::DATE::sel_year - 1] } ::DATE::update_month ::DATE::update_year ::DATE::update_days } proc ::DATE::plus_year {} { set ::DATE::sel_year [expr $::DATE::sel_year + 1] ::DATE::update_year ::DATE::update_days } proc ::DATE::minus_year {} { set ::DATE::sel_year [expr $::DATE::sel_year - 1] ::DATE::update_year ::DATE::update_days } proc ::DATE::update_month {} { $::DATE::a configure -text "[::msgcat::mc "[get_monthname $::DATE::months $::DATE::sel_month]"]" } proc ::DATE::update_year {} { global b $::DATE::b configure -text "$::DATE::sel_year" } proc ::DATE::days_in_month {month year} { if {$month==12} {set month 1; incr year} return [clock format [clock scan "[incr month]/1/$year 1 day ago"] -format %d] } proc ::DATE::day_weekday {day month year} { return [clock format [clock scan $month/$day/$year] -format %u] } proc ::DATE::today_color {day month year} { if {[string trimleft [clock format [clock scan now] -format "%d"] 0] == $day} { return $::DATE::fontcol_today } elseif {[clock format [clock scan $month/$day/$year] -format "%u"] == 7} { return $::DATE::fontcol_sunday } elseif {[clock format [clock scan $month/$day/$year] -format "%u"] == 6} { return $::DATE::fontcol_saturday } else { return $::DATE::fontcol_days } } proc ::DATE::hightlight {widget} { bind $widget <Any-Enter> { %W configure -background $::DATE::back_pointer update } bind $widget <Any-Leave> { %W configure -background $::DATE::back_days update } } proc ::DATE::update_days {} { destroy $::DATE::days set days [frame $::DATE::main.days -background $::DATE::back_days] grid $::DATE::days -column 0 -row 2 if {$::DATE::week_start == "Sunday"} { set startcol [expr [day_weekday 1 $::DATE::sel_month $::DATE::sel_year] + 1] if {$startcol == 8} {set startcol 1} } else { set startcol [day_weekday 1 $::DATE::sel_month $::DATE::sel_year] } set startrow 1 for {set x 1} {$x <= [days_in_month $::DATE::sel_month $::DATE::sel_year]} {incr x} { set a [label $::DATE::days.day$x -text "$x" -width 1 -justify center -anchor center -width 4 -font $::DATE::font_days -foreground [today_color $x $::DATE::sel_month $::DATE::sel_year] -textvariable "$x $::DATE::sel_month $::DATE::sel_year" -background $::DATE::back_days ] grid $::DATE::days.day$x -column $startcol -row $startrow ::DATE::hightlight $::DATE::days.day$x incr startcol if {$startcol == 8} {set startcol 1; incr startrow} } } proc ::DATE::format_result {sent} { set tmp [clock scan $sent -format {%d %m %Y}] set result [clock format $tmp -format $::DATE::result_format] ::DATE::update_entry $result } proc update_entry {result} { global userEntry $userEntry delete 0 end $userEntry insert 0 $result } proc ::DATE::my_popup_Cal {userEntry {userDict 0}} { set ::userEntry $userEntry ::DATE::check_config $userDict if {[winfo exists .d] == "1"} {::DATE::close} set ::DATE::w [toplevel .d] wm overrideredirect $::DATE::w 1 lassign [winfo pointerxy .] x y wm geometry $::DATE::w "+${x}+${y}" grid [set ::DATE::main [frame $::DATE::w.f -borderwidth 1 -relief solid -takefocus 1]] -column 0 -row 0 set ::DATE::month [frame $::DATE::main.month] set ::DATE::weekday [frame $::DATE::main.weekday] set ::DATE::days [frame $::DATE::main.days -background $::DATE::back_days] set ::DATE::year [frame $::DATE::main.year] grid $::DATE::month -column 0 -row 0 grid $::DATE::weekday -column 0 -row 1 grid $::DATE::days -column 0 -row 2 grid $::DATE::year -column 0 -row 3 button $::DATE::month.p -text "<" -relief flat -width 1 -command "::DATE::minus" -image $::DATE::left -width 18 button $::DATE::month.n -text ">" -relief flat -width 1 -command "::DATE::plus" -image $::DATE::right -width 18 set ::DATE::a [ttk::label $::DATE::month.month_name -text "[::msgcat::mc "[get_monthname $::DATE::months $::DATE::sel_month]"]" -width 20 -justify center -anchor center -font $::DATE::font_month -foreground $::DATE::fontcol_month] if {$::DATE::week_start == "Sunday"} { set weekday_list $::DATE::sundayWeek } else { set weekday_list $::DATE::mondayWeek } foreach j $weekday_list i {1 2 3 4 5 6 7} { ttk::label $::DATE::weekday.wday$i -text "[::msgcat::mc "$j"]" -width 4 -justify center -anchor center -background $::DATE::back_weekdays -font $::DATE::font_days grid $::DATE::weekday.wday$i -column $i -row 1 } button $::DATE::year.p -text "<<" -relief flat -width 1 -command "::DATE::minus_year" -image $::DATE::down -width 14 button $::DATE::year.n -text ">>" -relief flat -width 1 -command "::DATE::plus_year" -image $::DATE::up -width 14 set ::DATE::b [ttk::label $::DATE::year.year_name -text "$::DATE::sel_year" -width 10 -justify center -anchor center -font $::DATE::font_year -foreground $::DATE::fontcol_year] grid $::DATE::month.p -column 0 -row 0 grid $::DATE::month.month_name -column 1 -row 0 -columnspan 5 grid $::DATE::month.n -column 6 -row 0 grid $::DATE::year.p -column 0 -row 5 grid $::DATE::year.year_name -column 1 -row 5 -columnspan 5 grid $::DATE::year.n -column 6 -row 5 update_days bind $::DATE::w <ButtonRelease> { grab release [grab current] set what [winfo containing %X %Y] winfo class [winfo containing %X %Y] if {[winfo class [winfo containing %X %Y]] == "Label"} { ::DATE::format_result [$what cget -textvariable] ::DATE::close } } } } ####################################################################################################### # Example ####################################################################################################### ####################################################################################################### # Load Translations ####################################################################################################### # msgcat::mclocale pt # msgcat::mcload [file join [file dirname [info script]] lang] pack [frame .m] pack [ttk::label .m.l -text "Chose a day:"] -side left pack [ttk::entry .m.datae] -padx 10 -side left pack [ttk::button .m.button -image $::DATE::calendar -command {::DATE::my_popup_Cal .m.datae}] -padx 5 -side right pack [frame .n] pack [ttk::label .n.l -text "Chose a day:"] -side left pack [ttk::entry .n.datae] -padx 10 -side left set config [dict create result_format "%Y/%m/%d, %A" week_start Sunday] pack [ttk::button .n.button -image $::DATE::calendar -command {::DATE::my_popup_Cal .n.datae $config}] -padx 5 -side right
Siqsuruq - 2011-10-09 16:57:47
I forgot screenshots :)
HaO 2013-09-27: Even if this page is called "Using msgcat", one may use the clock package to get localized day and month names:
Abreviated weekday name:
clock format [clock scan $dayCur -format %w] -format "%a" -locale [msgcat::mclocale]
Month name:
clock format [clock scan ${monthCur}-1 -format %m-%d] -format "%B" -locale [msgcat::mclocale]
Great widget!