Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | some fixes in tk's library in order to support multiple display connections |
---|---|
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
08edf82b9b7e94e5081144592d4aa01a |
User & Date: | chw 2023-11-26 14:34:26.627 |
Context
2023-11-26
| ||
20:46 | fix builds on freebsd 14 check-in: bdc839abec user: chw tags: trunk | |
15:03 | merge with trunk check-in: de0d36d89e user: chw tags: wtf-8-experiment | |
14:34 | some fixes in tk's library in order to support multiple display connections check-in: 08edf82b9b user: chw tags: trunk | |
07:48 | fixes in ttk object caching check-in: 8891f0f092 user: chw tags: trunk | |
Changes
Changes to jni/sdl2tk/library/choosedir.tcl.
︙ | ︙ | |||
18 19 20 21 22 23 24 | # # Implements the TK directory selection dialog. # # Arguments: # args Options parsed by the procedure. # proc ::tk::dialog::file::chooseDir:: {args} { | | | 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | # # Implements the TK directory selection dialog. # # Arguments: # args Options parsed by the procedure. # proc ::tk::dialog::file::chooseDir:: {args} { variable [namespace parent]::selectFilePath set dataName __tk_choosedir upvar ::tk::dialog::file::$dataName data Config $dataName $args if {$data(-parent) eq "."} { set w .$dataName } else { |
︙ | ︙ | |||
98 99 100 101 102 103 104 | # Wait for the user to respond, then restore the focus and # return the index of the selected button. Restore the focus # before deleting the window, since otherwise the window manager # may take the focus away so we can't redirect it. Finally, # restore any grab that was in effect. | | | | 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 | # Wait for the user to respond, then restore the focus and # return the index of the selected button. Restore the focus # before deleting the window, since otherwise the window manager # may take the focus away so we can't redirect it. Finally, # restore any grab that was in effect. vwait [namespace parent]::selectFilePath ::tk::RestoreFocusGrab $w $data(ent) withdraw # Cleanup traces on selectPath variable # foreach trace [trace info variable data(selectPath)] { trace remove variable data(selectPath) [lindex $trace 0] [lindex $trace 1] } # Return value to user # return $selectFilePath } # ::tk::dialog::file::chooseDir::Config -- # # Configures the Tk choosedir dialog according to the argument list # proc ::tk::dialog::file::chooseDir::Config {dataName argList} { |
︙ | ︙ | |||
279 280 281 282 283 284 285 | $data(ent) delete 0 end $data(ent) insert 0 $file } # ::tk::dialog::file::chooseDir::Done -- # # Gets called when user has input a valid filename. Pops up a | | | | | | | | | | 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 | $data(ent) delete 0 end $data(ent) insert 0 $file } # ::tk::dialog::file::chooseDir::Done -- # # Gets called when user has input a valid filename. Pops up a # dialog box to confirm selection when necessary. Sets the namespace # variable selectFilePath, which will break the "vwait" # loop in tk_chooseDirectory and return the selected filename to the # script that calls tk_getOpenFile or tk_getSaveFile # proc ::tk::dialog::file::chooseDir::Done {w {selFilePath ""}} { upvar ::tk::dialog::file::[winfo name $w] data variable [namespace parent]::selectFilePath if {$selFilePath eq ""} { set selFilePath $data(selectPath) } if {$data(-mustexist) && ![file isdirectory $selFilePath]} { return } set selectFilePath $selFilePath } |
Changes to jni/sdl2tk/library/clrpick.tcl.
︙ | ︙ | |||
86 87 88 89 90 91 92 93 | if {[winfo viewable [winfo toplevel $data(-parent)]] } { wm transient $w $data(-parent) } # 5. Withdraw the window, then update all the geometry information # so we know how big it wants to be, then center the window in the # display (Motif style) and de-iconify it. | > > < > > > | > | 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 | if {[winfo viewable [winfo toplevel $data(-parent)]] } { wm transient $w $data(-parent) } # 5. Withdraw the window, then update all the geometry information # so we know how big it wants to be, then center the window in the # display (Motif style) and de-iconify it. # At <Destroy> the buttons have vanished, so must do this directly. bind $w <Destroy> [list set ::tk::PrivMsgBox(selectColor) ""] wm title $w $data(-title) ::tk::PlaceWindow $w widget $data(-parent) tkwait visibility $w # 6. Set a grab and claim the focus too. ::tk::SetFocusGrab $w $data(okBtn) # 7. Wait for the user to respond, then restore the focus and # return the index of the selected button. Restore the focus # before deleting the window, since otherwise the window manager # may take the focus away so we can't redirect it. Finally, # restore any grab that was in effect. set ::tk::PrivMsgBox(selectColor) "" vwait ::tk::PrivMsgBox(selectColor) set Priv(selectColor) $::tk::PrivMsgBox(selectColor) set result $Priv(selectColor) ::tk::RestoreFocusGrab $w $data(okBtn) unset data return $result } |
︙ | ︙ | |||
676 677 678 679 680 681 682 | $data($color,sel) itemconfigure $data($color,index) -fill black } # user hits OK button # proc ::tk::dialog::color::OkCmd {w} { | < > | > | > | | 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 | $data($color,sel) itemconfigure $data($color,index) -fill black } # user hits OK button # proc ::tk::dialog::color::OkCmd {w} { upvar ::tk::dialog::color::[winfo name $w] data bind $w <Destroy> {} set ::tk::PrivMsgBox(selectColor) $data(finalColor) } # user hits Cancel button or destroys window # proc ::tk::dialog::color::CancelCmd {w} { upvar ::tk::dialog::color::[winfo name $w] data bind $w <Destroy> {} set ::tk::PrivMsgBox(selectColor) "" } |
Changes to jni/sdl2tk/library/comdlg.tcl.
︙ | ︙ | |||
121 122 123 124 125 126 127 | # # Create a focus group. All the widgets in a focus group must be # within the same focus toplevel. Each toplevel can have only # one focus group, which is identified by the name of the # toplevel widget. # proc ::tk::FocusGroup_Create {t} { | | | | | | | | | | | | > | | | | | | | | | | 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 | # # Create a focus group. All the widgets in a focus group must be # within the same focus toplevel. Each toplevel can have only # one focus group, which is identified by the name of the # toplevel widget. # proc ::tk::FocusGroup_Create {t} { variable ::tk::FocusGroup if {[winfo toplevel $t] ne $t} { return -code error -errorcode [list TK LOOKUP TOPLEVEL $t] \ "$t is not a toplevel window" } if {![info exists FocusGroup(fg,$t)]} { set FocusGroup(fg,$t) 1 set FocusGroup(focus,$t) "" bind $t <FocusIn> [list tk::FocusGroup_In $t %W %d] bind $t <FocusOut> [list tk::FocusGroup_Out $t %W %d] bind $t <Destroy> [list tk::FocusGroup_Destroy $t %W] } } # ::tk::FocusGroup_BindIn -- # # Add a widget into the "FocusIn" list of the focus group. The $cmd will be # called when the widget is focused on by the user. # proc ::tk::FocusGroup_BindIn {t w cmd} { variable FocusIn variable ::tk::FocusGroup if {![info exists FocusGroup(fg,$t)]} { return -code error -errorcode [list TK LOOKUP FOCUS_GROUP $t] \ "focus group \"$t\" doesn't exist" } set FocusIn($t,$w) $cmd } # ::tk::FocusGroup_BindOut -- # # Add a widget into the "FocusOut" list of the focus group. The # $cmd will be called when the widget loses the focus (User # types Tab or click on another widget). # proc ::tk::FocusGroup_BindOut {t w cmd} { variable FocusOut variable ::tk::FocusGroup if {![info exists FocusGroup(fg,$t)]} { return -code error -errorcode [list TK LOOKUP FOCUS_GROUP $t] \ "focus group \"$t\" doesn't exist" } set FocusOut($t,$w) $cmd } # ::tk::FocusGroup_Destroy -- # # Cleans up when members of the focus group is deleted, or when the # toplevel itself gets deleted. # proc ::tk::FocusGroup_Destroy {t w} { variable FocusIn variable FocusOut variable ::tk::FocusGroup if {$t eq $w} { unset FocusGroup(fg,$t) unset FocusGroup(focus,$t) foreach name [array names FocusIn $t,*] { unset FocusIn($name) } foreach name [array names FocusOut $t,*] { unset FocusOut($name) } } else { if {[info exists FocusGroup(focus,$t)] && ($FocusGroup(focus,$t) eq $w)} { set FocusGroup(focus,$t) "" } unset -nocomplain FocusIn($t,$w) FocusOut($t,$w) } } # ::tk::FocusGroup_In -- # # Handles the <FocusIn> event. Calls the FocusIn command for the newly # focused widget in the focus group. # proc ::tk::FocusGroup_In {t w detail} { variable FocusIn variable ::tk::FocusGroup if {$detail ne "NotifyNonlinear" && $detail ne "NotifyNonlinearVirtual"} { # This is caused by mouse moving out&in of the window *or* # ordinary keypresses some window managers (ie: CDE [Bug: 2960]). return } if {![info exists FocusIn($t,$w)]} { set FocusIn($t,$w) "" return } if {![info exists FocusGroup(focus,$t)]} { return } if {$FocusGroup(focus,$t) eq $w} { # This is already in focus # return } else { set FocusGroup(focus,$t) $w eval $FocusIn($t,$w) } } # ::tk::FocusGroup_Out -- # # Handles the <FocusOut> event. Checks if this is really a lose # focus event, not one generated by the mouse moving out of the # toplevel window. Calls the FocusOut command for the widget # who loses its focus. # proc ::tk::FocusGroup_Out {t w detail} { variable FocusOut variable ::tk::FocusGroup if {$detail ne "NotifyNonlinear" && $detail ne "NotifyNonlinearVirtual"} { # This is caused by mouse moving out of the window return } if {![info exists FocusGroup(focus,$t)]} { return } if {![info exists FocusOut($t,$w)]} { return } else { eval $FocusOut($t,$w) set FocusGroup(focus,$t) "" } } # ::tk::FDGetFileTypes -- # # Process the string given by the -filetypes option of the file # dialogs. Similar to the C function TkGetFileFilters() on the Mac |
︙ | ︙ |
Changes to jni/sdl2tk/library/dialog.tcl.
︙ | ︙ | |||
99 100 101 102 103 104 105 | } # 3. Create a row of buttons at the bottom of the dialog. set i 0 foreach but $args { ttk::button $w.button$i -text $but \ | | | 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 | } # 3. Create a row of buttons at the bottom of the dialog. set i 0 foreach but $args { ttk::button $w.button$i -text $but \ -command [list set ::tk::PrivMsgBox(button) $i] if {$i == $default} { $w.button$i configure -default active } else { $w.button$i configure -default normal } grid $w.button$i -in $w.bot -column $i -row 0 -sticky ew \ -padx 10 -pady 4 |
︙ | ︙ | |||
134 135 136 137 138 139 140 | bind $w <<PrevWindow>> [list bind $w <Return> {[tk_focusPrev %W] invoke}] bind $w <<NextWindow>> [list bind $w <Return> {[tk_focusNext %W] invoke}] # 5. Create a <Destroy> binding for the window that sets the # button variable to -1; this is needed in case something happens # that destroys the window, such as its parent window being destroyed. | | | 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 | bind $w <<PrevWindow>> [list bind $w <Return> {[tk_focusPrev %W] invoke}] bind $w <<NextWindow>> [list bind $w <Return> {[tk_focusNext %W] invoke}] # 5. Create a <Destroy> binding for the window that sets the # button variable to -1; this is needed in case something happens # that destroys the window, such as its parent window being destroyed. bind $w <Destroy> {set ::tk::PrivMsgBox(button) -1} # 6. Withdraw the window, then update all the geometry information # so we know how big it wants to be, then center the window in the # display (Motif style) and de-iconify it. ::tk::PlaceWindow $w tkwait visibility $w |
︙ | ︙ | |||
158 159 160 161 162 163 164 | # 8. Wait for the user to respond, then restore the focus and # return the index of the selected button. Restore the focus # before deleting the window, since otherwise the window manager # may take the focus away so we can't redirect it. Finally, # restore any grab that was in effect. | > | | > | 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 | # 8. Wait for the user to respond, then restore the focus and # return the index of the selected button. Restore the focus # before deleting the window, since otherwise the window manager # may take the focus away so we can't redirect it. Finally, # restore any grab that was in effect. set ::tk::PrivMsgBox(button) -1 vwait ::tk::PrivMsgBox(button) catch { # It's possible that the window has already been destroyed, # hence this "catch". Delete the Destroy handler so that # ::tk::PrivMsgBox(button) doesn't get reset by it. bind $w <Destroy> {} } tk::RestoreFocusGrab $w $focus set Priv(button) $::tk::PrivMsgBox(button) return $Priv(button) } |
Changes to jni/sdl2tk/library/msgbox.tcl.
︙ | ︙ | |||
332 333 334 335 336 337 338 | if {![llength $opts]} { # Capitalize the first letter of $name set capName [string toupper $name 0] set opts [list -text $capName] } eval [list tk::AmpWidget ttk::button $w.$name] $opts \ | | | 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 | if {![llength $opts]} { # Capitalize the first letter of $name set capName [string toupper $name 0] set opts [list -text $capName] } eval [list tk::AmpWidget ttk::button $w.$name] $opts \ [list -command [list set ::tk::PrivMsgBox(button) $name]] if {$name eq $data(-default)} { $w.$name configure -default active } else { $w.$name configure -default normal } grid $w.$name -in $w.bot -row 0 -column $i -padx 3m -pady 2m -sticky ew |
︙ | ︙ | |||
389 390 391 392 393 394 395 | } } # Invoke the designated cancelling operation bind $w <Escape> [list $w.$cancel invoke] # At <Destroy> the buttons have vanished, so must do this directly. | | | 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 | } } # Invoke the designated cancelling operation bind $w <Escape> [list $w.$cancel invoke] # At <Destroy> the buttons have vanished, so must do this directly. bind $w.msg <Destroy> [list set ::tk::PrivMsgBox(button) $cancel] # 7. Withdraw the window, then update all the geometry information # so we know how big it wants to be, then center the window in the # display (Motif style) and de-iconify it. ::tk::PlaceWindow $w widget $data(-parent) |
︙ | ︙ | |||
412 413 414 415 416 417 418 | # 9. Wait for the user to respond, then restore the focus and # return the index of the selected button. Restore the focus # before deleting the window, since otherwise the window manager # may take the focus away so we can't redirect it. Finally, # restore any grab that was in effect. | | > | 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 | # 9. Wait for the user to respond, then restore the focus and # return the index of the selected button. Restore the focus # before deleting the window, since otherwise the window manager # may take the focus away so we can't redirect it. Finally, # restore any grab that was in effect. vwait ::tk::PrivMsgBox(button) # Copy the result now so any <Destroy> that happens won't cause # trouble set Priv(button) $::tk::PrivMsgBox(button) set result $Priv(button) ::tk::RestoreFocusGrab $w $focus return $result } |
Changes to jni/sdl2tk/library/tkfbox.tcl.
︙ | ︙ | |||
18 19 20 21 22 23 24 25 26 27 28 29 | namespace eval ::tk::dialog {} namespace eval ::tk::dialog::file { namespace import -force ::tk::msgcat::* variable showHiddenBtn 0 variable showHiddenVar 1 variable dpi 100 if {$::tk::sdltk} { set dpi $::tk::dpi } # Create the images if they did not already exist. | > > > > | | | 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 | namespace eval ::tk::dialog {} namespace eval ::tk::dialog::file { namespace import -force ::tk::msgcat::* variable showHiddenBtn 0 variable showHiddenVar 1 variable dpi 100 variable updirImage variable folderImage variable fileImage if {$::tk::sdltk} { set dpi $::tk::dpi } # Create the images if they did not already exist. if {![info exists updirImage]} { if {$dpi < 140} { set updirImage [image create photo -data { iVBORw0KGgoAAAANSUhEUgAAABkAAAAWCAYAAAA1vze2AAAABHNCSVQICAgI fAhkiAAAAAlwSFlzAAAHQAAAB0AB1ax7xgAAABl0RVh0U29mdHdhcmUAd3d3 Lmlua3NjYXBlLm9yZ5vuPBoAAAAUdEVYdEF1dGhvcgBKYWt1YiBTdGVpbmVy 5vv3LwAAACF0RVh0U291cmNlAGh0dHA6Ly9qaW1tYWMubXVzaWNoYWxsLmN6 aWbjXgAAAEl0RVh0Q29weXJpZ2h0AFB1YmxpYyBEb21haW4gaHR0cDovL2Ny ZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvcHVibGljZG9tYWluL1nD/soA AAP6SURBVEiJtZY7jFRlFIC/8997Z2Z32RcCK+7C0qihsMBHlBCJhYl2Vtra |
︙ | ︙ | |||
58 59 60 61 62 63 64 | SqcKGpUQFO9L7jRa/snl2n2IiJjZ2dmJnTt3qq9ltGw3i57jfmCleIG0chJd gUhH174ynk2yeK8Rf/zqjSkRbqiq5kClXq/HpXYtCxPDNJvlun3ol8fXPRWg dD42679fB2pAAbhcVUsRuXllcfloXj+7+/Yl7X2SVwP8r/8A6Xa8laqXvPO3 rsyf/h6oq6oDkFUHIpJ36VV6K/F/iwIWaKtqXD38G+YoZo+bFhjvAAAAAElF TkSuQmCC }] } elseif {$dpi < 240} { | | | 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | SqcKGpUQFO9L7jRa/snl2n2IiJjZ2dmJnTt3qq9ltGw3i57jfmCleIG0chJd gUhH174ynk2yeK8Rf/zqjSkRbqiq5kClXq/HpXYtCxPDNJvlun3ol8fXPRWg dD42679fB2pAAbhcVUsRuXllcfloXj+7+/Yl7X2SVwP8r/8A6Xa8laqXvPO3 rsyf/h6oq6oDkFUHIpJ36VV6K/F/iwIWaKtqXD38G+YoZo+bFhjvAAAAAElF TkSuQmCC }] } elseif {$dpi < 240} { set updirImage [image create photo -data { iVBORw0KGgoAAAANSUhEUgAAACIAAAAeCAYAAABJ/8wUAAAABHNCSVQICAgI fAhkiAAAAAlwSFlzAAAJ4wAACeMBla+h+wAAABl0RVh0U29mdHdhcmUAd3d3 Lmlua3NjYXBlLm9yZ5vuPBoAAAAUdEVYdEF1dGhvcgBKYWt1YiBTdGVpbmVy 5vv3LwAAACF0RVh0U291cmNlAGh0dHA6Ly9qaW1tYWMubXVzaWNoYWxsLmN6 aWbjXgAAAEl0RVh0Q29weXJpZ2h0AFB1YmxpYyBEb21haW4gaHR0cDovL2Ny ZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvcHVibGljZG9tYWluL1nD/soA AAW+SURBVFiFzZddiF1XFcd/a5+POx937iTXTJmZKETUSCxFaPtQSyXm3fpc |
︙ | ︙ | |||
101 102 103 104 105 106 107 | 7KiIHDOzd4YgIuKA+aIoLMZIqQlFnDDaSNeDV07U1iZCTzI18OFmBOZFJJjZ HvQUSYGsKIpusxCVtOLey8NfY/t+7DbvvQZkjKTGQMH3VavVpcc/88VXdfb9 y3DwHDPJjrouMv69GMm2VZJuubf9h79d/v6L7e3bbwMNM2tD/yu+Pz3HgFlg Ckj6/t+2AHigDewOIIYgI28i9CTLeW/OxSUQzMaPov8GH39Z0OfIX9cAAAAA SUVORK5CYII= }] } elseif {$dpi < 320} { | | | 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 | 7KiIHDOzd4YgIuKA+aIoLMZIqQlFnDDaSNeDV07U1iZCTzI18OFmBOZFJJjZ HvQUSYGsKIpusxCVtOLey8NfY/t+7DbvvQZkjKTGQMH3VavVpcc/88VXdfb9 y3DwHDPJjrouMv69GMm2VZJuubf9h79d/v6L7e3bbwMNM2tD/yu+Pz3HgFlg Ckj6/t+2AHigDewOIIYgI28i9CTLeW/OxSUQzMaPov8GH39Z0OfIX9cAAAAA SUVORK5CYII= }] } elseif {$dpi < 320} { set updirImage [image create photo -data { iVBORw0KGgoAAAANSUhEUgAAACkAAAAkCAYAAAAU/hMoAAAABHNCSVQICAgI fAhkiAAAAAlwSFlzAAAL3QAAC90BfgEZHAAAABl0RVh0U29mdHdhcmUAd3d3 Lmlua3NjYXBlLm9yZ5vuPBoAAAAUdEVYdEF1dGhvcgBKYWt1YiBTdGVpbmVy 5vv3LwAAACF0RVh0U291cmNlAGh0dHA6Ly9qaW1tYWMubXVzaWNoYWxsLmN6 aWbjXgAAAEl0RVh0Q29weXJpZ2h0AFB1YmxpYyBEb21haW4gaHR0cDovL2Ny ZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvcHVibGljZG9tYWluL1nD/soA AAd4SURBVFiF1ZhfiFxXHce/v3POvTNzZ3Z2s9ls2qRt9EnEQkPFUkxEC4Ug |
︙ | ︙ | |||
153 154 155 156 157 158 159 | z6oGU7hv+4mNR7PCUitwzlNy40IEwBKREymSlSlVNABCAD6XAKQMBLR61HfQ kqQPtumbJUdQegEJgEv3eZ7/+YXLM/spVOrKhYtjEWX0Y6yVm846RtXcC+k+ s3CymLgbb/zx2RJswFS0FhEQUR3AJICJ3Y8+/oQg2AIIRERvRoV3an1L16yY BZDI9Vd/e7ofX+8AWAIQi8jSCCQAEFGAIjbrKKRWWLH675ANlLMAMgCJiKTD DUhWBB4VB79BnN5RJUtjAA6AE5Gxh4X/AItgbelX5K/8AAAAAElFTkSuQmCC }] } elseif {$dpi < 400} { | | | 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 | z6oGU7hv+4mNR7PCUitwzlNy40IEwBKREymSlSlVNABCAD6XAKQMBLR61HfQ kqQPtumbJUdQegEJgEv3eZ7/+YXLM/spVOrKhYtjEWX0Y6yVm846RtXcC+k+ s3CymLgbb/zx2RJswFS0FhEQUR3AJICJ3Y8+/oQg2AIIRERvRoV3an1L16yY BZDI9Vd/e7ofX+8AWAIQi8jSCCQAEFGAIjbrKKRWWLH675ANlLMAMgCJiKTD DUhWBB4VB79BnN5RJUtjAA6AE5Gxh4X/AItgbelX5K/8AAAAAElFTkSuQmCC }] } elseif {$dpi < 400} { set updirImage [image create photo -data { iVBORw0KGgoAAAANSUhEUgAAADsAAAA0CAYAAAA0c0BmAAAABHNCSVQICAgI fAhkiAAAAAlwSFlzAAARIwAAESMBCblIYAAAABl0RVh0U29mdHdhcmUAd3d3 Lmlua3NjYXBlLm9yZ5vuPBoAAAAUdEVYdEF1dGhvcgBKYWt1YiBTdGVpbmVy 5vv3LwAAACF0RVh0U291cmNlAGh0dHA6Ly9qaW1tYWMubXVzaWNoYWxsLmN6 aWbjXgAAAEl0RVh0Q29weXJpZ2h0AFB1YmxpYyBEb21haW4gaHR0cDovL2Ny ZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvcHVibGljZG9tYWluL1nD/soA AAtuSURBVGiB7ZprjCRVFcf/596q6vfsDDrDPoDNhg+YiKgxRtBVQmKMEGP8 |
︙ | ︙ | |||
228 229 230 231 232 233 234 | JFKWPOn6c1ZEhIgMgARA8uqrr/7mfZdec+tS1LoUAE78/Y1/a+c3YJJ0F5/8 x58fvy9YObsCIAaQ85jygZT93wMhK1AAagCqMzv2XOwCVRZ2iEiY7aox+T9h RCSdjt8FwACJtVGcBO0IQO5B5r6IxH3n5tU5A64BqKJXsPL4p2z5drI8XBk9 JWOkwL6ImMETaGAoAhFppBXNyTxP9LcjrMmWNluPB9Us2yrYvp2p2m97WBEZ axbwT7pLQNg+7XXpAAAAAElFTkSuQmCC }] } else { | | | 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 | JFKWPOn6c1ZEhIgMgARA8uqrr/7mfZdec+tS1LoUAE78/Y1/a+c3YJJ0F5/8 x58fvy9YObsCIAaQ85jygZT93wMhK1AAagCqMzv2XOwCVRZ2iEiY7aox+T9h RCSdjt8FwACJtVGcBO0IQO5B5r6IxH3n5tU5A64BqKJXsPL4p2z5drI8XBk9 JWOkwL6ImMETaGAoAhFppBXNyTxP9LcjrMmWNluPB9Us2yrYvp2p2m97WBEZ axbwT7pLQNg+7XXpAAAAAElFTkSuQmCC }] } else { set updirImage [image create photo -data { iVBORw0KGgoAAAANSUhEUgAAAGIAAABWCAYAAAA0TkO1AAAABHNCSVQICAgI fAhkiAAAAAlwSFlzAAAcVwAAHFcBu1ZJ1gAAABl0RVh0U29mdHdhcmUAd3d3 Lmlua3NjYXBlLm9yZ5vuPBoAAAAUdEVYdEF1dGhvcgBKYWt1YiBTdGVpbmVy 5vv3LwAAACF0RVh0U291cmNlAGh0dHA6Ly9qaW1tYWMubXVzaWNoYWxsLmN6 aWbjXgAAAEl0RVh0Q29weXJpZ2h0AFB1YmxpYyBEb21haW4gaHR0cDovL2Ny ZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvcHVibGljZG9tYWluL1nD/soA ABXTSURBVHic7Z17jCRHfcc/1a957dzD9tm3Z2JjCxKIRCISXj47GEexIyTy |
︙ | ︙ | |||
363 364 365 366 367 368 369 | FsmVMhGRTRlVoZDiEJEwXRNa7sAS4DEkwXoAp4koqp1KMkRk4n+ZrPyHgGm6 o0oS8tJgVdPUf7P5MoR9SO12PnCLc58RRhKmJsDG/otMKGRiyyRYtWRTI680 WCLs4OWJsGUmAiwmEpGdZPRVFREAM+fcX0YQzBNvtwtSIbMMagkzETGxgXVM fryMINN0/nrx/+fkbJMpM8mfAAAAAElFTkSuQmCC }] } } | | | | | 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 | FsmVMhGRTRlVoZDiEJEwXRNa7sAS4DEkwXoAp4koqp1KMkRk4n+ZrPyHgGm6 o0oS8tJgVdPUf7P5MoR9SO12PnCLc58RRhKmJsDG/otMKGRiyyRYtWRTI680 WCLs4OWJsGUmAiwmEpGdZPRVFREAM+fcX0YQzBNvtwtSIbMMagkzETGxgXVM fryMINN0/nrx/+fkbJMpM8mfAAAAAElFTkSuQmCC }] } } if {![info exists folderImage]} { if {$dpi < 140} { set folderImage [image create photo -data { iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgI fAhkiAAAAAlwSFlzAAAEnQAABJ0BfDRroQAAABl0RVh0U29mdHdhcmUAd3d3 Lmlua3NjYXBlLm9yZ5vuPBoAAAARdEVYdFRpdGxlAEZvbGRlciBJY29uXjg7 WQAAABR0RVh0QXV0aG9yAEpha3ViIFN0ZWluZXLm+/cvAAAAIXRFWHRTb3Vy Y2UAaHR0cDovL2ppbW1hYy5tdXNpY2hhbGwuY3ppZuNeAAAASXRFWHRDb3B5 cmlnaHQAUHVibGljIERvbWFpbiBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y Zy9saWNlbnNlcy9wdWJsaWNkb21haW4vWcP+ygAAAa1JREFUOI2lkrtuU0EQ hr/ZHNvHRMglRUQdiZaKDokyD0DJO9BbdJbl9kgUFLwBFg9AQUE6CpoUgIUR NzuIKHbwue1taKyDSYJceKTRFrvz6f//WVFVdqkEYDAYHAEHIYTNu5N+v3+8 DSCqyng8/gLc9t7jvSfGSJ7np9Pp9HA4HC63KiiKwhVFgbUWay1rJbe63e6L LMtyEcEYI0mS6GQyeTIajd5dBsTVakVVVVhrGxXAg/l8jjGGVqtFmqaIyBug AYiqkmXZyYez1p2Dw7tYF7guWBEBERCTY5L823z5+tnj+w8TgLIsvY0d0ps9 qtxe63UDuQ/s3+i2agAD4JyrW+0OPmxfqQuKKuSVXTSAsizd3l4bF+J/B6NC 7SKVDbQTw8Vvt2hCtNZ6em2cj6hCVCUqxLh56gZMOb8ozhpAXdfORiGvAyFE thkpa48L8XsDcM65woKp/JXHlxeiwKrwWtbVFMCISLosQ68kpbTxSlfu365d 5Mfs5+z9q6cBIFHV6t7Ro+epfxtOYxTVtV9Vov4N1YgBEbx0vv6afX65+Hj8 CdYfaZcyO00DfwAW+CYt+UA37AAAAABJRU5ErkJggg== }] } elseif {$dpi < 240} { set folderImage [image create photo -data { iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAABHNCSVQICAgI fAhkiAAAAAlwSFlzAAAGWAAABlgBH4cC6gAAABl0RVh0U29mdHdhcmUAd3d3 Lmlua3NjYXBlLm9yZ5vuPBoAAAARdEVYdFRpdGxlAEZvbGRlciBJY29uXjg7 WQAAABR0RVh0QXV0aG9yAEpha3ViIFN0ZWluZXLm+/cvAAAAIXRFWHRTb3Vy Y2UAaHR0cDovL2ppbW1hYy5tdXNpY2hhbGwuY3ppZuNeAAAASXRFWHRDb3B5 cmlnaHQAUHVibGljIERvbWFpbiBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y Zy9saWNlbnNlcy9wdWJsaWNkb21haW4vWcP+ygAAAqdJREFUOI3Vlc+LHEUU |
︙ | ︙ | |||
411 412 413 414 415 416 417 | LDpF1V4QtOfL3akbWbci57zI2WgV6i4vZ3IG/ES6T0wIIVA1abEGPjg4uNIk y53Fok12kvG8x1OfObqJJtpqbiGE0t21DCH0t7e341/pdetdGhZ1I+er/ZSq J1U9/fPuL8AQmJXuLiGE31995+E3xezJKGeNAO7LjrzszyvXw9PSPYSAu1vj gzv17NG9P3764gegAgirhh5CCEB/Zc8FZYC4e14NhP/dmfcvCrbBBSh+OBEA AAAASUVORK5CYII= }] } elseif {$dpi < 320} { | | | 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 | LDpF1V4QtOfL3akbWbci57zI2WgV6i4vZ3IG/ES6T0wIIVA1abEGPjg4uNIk y53Fok12kvG8x1OfObqJJtpqbiGE0t21DCH0t7e341/pdetdGhZ1I+er/ZSq J1U9/fPuL8AQmJXuLiGE31995+E3xezJKGeNAO7LjrzszyvXw9PSPYSAu1vj gzv17NG9P3764gegAgirhh5CCEB/Zc8FZYC4e14NhP/dmfcvCrbBBSh+OBEA AAAASUVORK5CYII= }] } elseif {$dpi < 320} { set folderImage [image create photo -data { iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAABHNCSVQICAgI fAhkiAAAAAlwSFlzAAAKYQAACmEB/MxKJQAAABl0RVh0U29mdHdhcmUAd3d3 Lmlua3NjYXBlLm9yZ5vuPBoAAAARdEVYdFRpdGxlAEZvbGRlciBJY29uXjg7 WQAAABR0RVh0QXV0aG9yAEpha3ViIFN0ZWluZXLm+/cvAAAAIXRFWHRTb3Vy Y2UAaHR0cDovL2ppbW1hYy5tdXNpY2hhbGwuY3ppZuNeAAAASXRFWHRDb3B5 cmlnaHQAUHVibGljIERvbWFpbiBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y Zy9saWNlbnNlcy9wdWJsaWNkb21haW4vWcP+ygAABFVJREFUWIXtmM+LHEUU |
︙ | ︙ | |||
446 447 448 449 450 451 452 | CmJkIaIzZnYwAwTgjdFo1BdJWRkM2nOoWVdCPNfuCUMnKtDJUrBJRGZmhwCQ 02QHVYQQnIjigLbQHbwBPeVv/oP9ymL15AGALoCiOZ+bmRFRApCehOLhztPN 93vVI3u80/5CbE81t51dYXCxihEAIyV3CGTC0f/9+293vwOQjtpklJmBiByA TQBnAGwcEbul87689KhFACWAAwB7drQvpvbGnIh6AHqY5FZ+SkCGZ16pzCy2 L9L8l8Kr1mv3d8z/QMfpX9oJIb1+t7MXAAAAAElFTkSuQmCC }] } elseif {$dpi < 400} { | | | 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 | CmJkIaIzZnYwAwTgjdFo1BdJWRkM2nOoWVdCPNfuCUMnKtDJUrBJRGZmhwCQ 02QHVYQQnIjigLbQHbwBPeVv/oP9ymL15AGALoCiOZ+bmRFRApCehOLhztPN 93vVI3u80/5CbE81t51dYXCxihEAIyV3CGTC0f/9+293vwOQjtpklJmBiByA TQBnAGwcEbul87689KhFACWAAwB7drQvpvbGnIh6AHqY5FZ+SkCGZ16pzCy2 L9L8l8Kr1mv3d8z/QMfpX9oJIb1+t7MXAAAAAElFTkSuQmCC }] } elseif {$dpi < 400} { set folderImage [image create photo -data { iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABHNCSVQICAgI fAhkiAAAAAlwSFlzAAAOawAADmsBVP4NBgAAABl0RVh0U29mdHdhcmUAd3d3 Lmlua3NjYXBlLm9yZ5vuPBoAAAARdEVYdFRpdGxlAEZvbGRlciBJY29uXjg7 WQAAABR0RVh0QXV0aG9yAEpha3ViIFN0ZWluZXLm+/cvAAAAIXRFWHRTb3Vy Y2UAaHR0cDovL2ppbW1hYy5tdXNpY2hhbGwuY3ppZuNeAAAASXRFWHRDb3B5 cmlnaHQAUHVibGljIERvbWFpbiBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y Zy9saWNlbnNlcy9wdWJsaWNkb21haW4vWcP+ygAABsBJREFUaIHtmjuPHMcR |
︙ | ︙ | |||
495 496 497 498 499 500 501 | DvafrcXwpjjv9enjfT98/OnvAchYdXwEAND4J7QYwAUAg83NzW9+9we/+KN2 L11ZfNvjXfQiXly28yowRUD6OYiUgx/uffq3P/zvoz99DGAEIAOQqepoBqS+ ISWoE76LOmcS1B4j1GG3LmHUT94BqAAUAHIAI21sWVJz+5KIDGqIFHUcWtRT 9DpBAmqQgBqmbM5WE6FlG89jKIPaK+v8Pd4DEFVd+S2xFOSrJq/Mfz58DfJl k1cG5P+ghr1MG4uDdAAAAABJRU5ErkJggg== }] } else { | | | 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 | DvafrcXwpjjv9enjfT98/OnvAchYdXwEAND4J7QYwAUAg83NzW9+9we/+KN2 L11ZfNvjXfQiXly28yowRUD6OYiUgx/uffq3P/zvoz99DGAEIAOQqepoBqS+ ISWoE76LOmcS1B4j1GG3LmHUT94BqAAUAHIAI21sWVJz+5KIDGqIFHUcWtRT 9DpBAmqQgBqmbM5WE6FlG89jKIPaK+v8Pd4DEFVd+S2xFOSrJq/Mfz58DfJl k1cG5P+ghr1MG4uDdAAAAABJRU5ErkJggg== }] } else { set folderImage [image create photo -data { iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgI fAhkiAAAAAlwSFlzAAASdAAAEnQB3mYfeAAAABl0RVh0U29mdHdhcmUAd3d3 Lmlua3NjYXBlLm9yZ5vuPBoAAAARdEVYdFRpdGxlAEZvbGRlciBJY29uXjg7 WQAAABR0RVh0QXV0aG9yAEpha3ViIFN0ZWluZXLm+/cvAAAAIXRFWHRTb3Vy Y2UAaHR0cDovL2ppbW1hYy5tdXNpY2hhbGwuY3ppZuNeAAAASXRFWHRDb3B5 cmlnaHQAUHVibGljIERvbWFpbiBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y Zy9saWNlbnNlcy9wdWJsaWNkb21haW4vWcP+ygAACTZJREFUeJztm02oJUcV |
︙ | ︙ | |||
559 560 561 562 563 564 565 | //IvQAGYacmBXETy+XsXPpdXSvWpBOhOS0JlJRFV17YFTruCunc9Vc9bKhEK wCyTh4b/F1BKxVQi1DNDTOUrFJUQu4xagMCixzci4ppuWBFgdqIKjBLues+P gwV4KvJhum2XA59ltArQeHHbN2s7AjmBt91IgP9HfOL/a+y+ANtuwLZxX4Bt N2Db+C8q56Rlb9V3gQAAAABJRU5ErkJggg== }] } } | | | | | | 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 | //IvQAGYacmBXETy+XsXPpdXSvWpBOhOS0JlJRFV17YFTruCunc9Vc9bKhEK wCyTh4b/F1BKxVQi1DNDTOUrFJUQu4xagMCixzci4ppuWBFgdqIKjBLues+P gwV4KvJhum2XA59ltArQeHHbN2s7AjmBt91IgP9HfOL/a+y+ANtuwLZxX4Bt N2Db+C8q56Rlb9V3gQAAAABJRU5ErkJggg== }] } } if {![info exists fileImage]} { if {$dpi < 140} { set fileImage [image create photo -data { iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgI fAhkiAAAAAlwSFlzAAAEnQAABJ0BfDRroQAAABl0RVh0U29mdHdhcmUAd3d3 Lmlua3NjYXBlLm9yZ5vuPBoAAAASdEVYdFRpdGxlAEp1c3RpZnkgTGVmdOI3 kz4AAAAWdEVYdEF1dGhvcgBBbmRyZWFzIE5pbHNzb24r7+SjAAAAGHRFWHRD cmVhdGlvbiBUaW1lADIwMDUtMTAtMjkvDxi/AAAASXRFWHRDb3B5cmlnaHQA UHVibGljIERvbWFpbiBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNl bnNlcy9wdWJsaWNkb21haW4vWcP+ygAAASdJREFUOI2VkTFug0AQRf9alGnA HXaFoEmUDiEZEI3PlSpnSXKKNGvHaSLlBlRJbsH8FANhFxxk0+zMiv//m1lD Esc3+7iJt3tc8X3/fL3WVfMQAMAm3u7jON5dKiYJkgCgBtcKSYIgAMAzsNYu iPWsqrI3wdygaZrFVBFCRBSfFxDoP2NalmVYr6P/RxgI3ERSJgR6h3MjWGtn qf22EUUR0jTtjWROQBJ1XXupWmvvzi8yISD08nA4eqnDORCRRJ7nGuAR9K5l uVskGGo1dgyEgIjgdHqfpYdhiCRJPKE+I+YERVE4Gx+3r+KxV7VDQCjBiOk/ n4r8fthOAABd162mBooqZ3to4AoAAmNM8Pzy9Jll2Y2IGPdZgT9St4BZGWnb 9uPu9h6/rU1qjsN9iWAAAAAASUVORK5CYII= }] } elseif {$dpi < 240} { set fileImage [image create photo -data { iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAABHNCSVQICAgI fAhkiAAAAAlwSFlzAAAGWAAABlgBH4cC6gAAABl0RVh0U29mdHdhcmUAd3d3 Lmlua3NjYXBlLm9yZ5vuPBoAAAASdEVYdFRpdGxlAEp1c3RpZnkgTGVmdOI3 kz4AAAAWdEVYdEF1dGhvcgBBbmRyZWFzIE5pbHNzb24r7+SjAAAAGHRFWHRD cmVhdGlvbiBUaW1lADIwMDUtMTAtMjkvDxi/AAAASXRFWHRDb3B5cmlnaHQA UHVibGljIERvbWFpbiBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNl bnNlcy9wdWJsaWNkb21haW4vWcP+ygAAAehJREFUOI2lk01rE0EYx//7lqxC LkswEJIIaSPYY/RiL9LechD9AB4Uj55F8AMI6tkv0pIPUQ8aEKE0UHOr5yay 08zu/D0k+zY7mxQzsOzMw7O/+T3Pzlgk8enLxzuDwYOvfs33scMQSyGm04u3 7999CN117P7R0+OXjUbD2wU8n8/ldHrxGcB5AkYUR4zj+L+AJEESUkomMXsX wzyUZCHu6omXl78h5fIWQAAggiBAEAQgk1gFWAixFZxASUBKmTPOyCXwwcHD DUAaHkCpbF4JPjv7hpsbYTBMV+m61bqHfr9/O+O9vT6iKNIsE2DRzPf9nO0W 42azqZWt/3m9FaqweSV4PB5jsfirh0uj3W5jOByW+m0Ek8RoNDKamo1VIc9s vE64vp5DqdhoYtqoVqvB87zVhiYwSSilMJlMEIZhGtMr0kev10On01mbbWjF 4eGTkq35/ObborKyy8argz6bzbTblJk6jo1ut1cCZ2+j8WpnIcI1uFg+STiO A6WUBgTyP7TSeH9/UFE2jJaF+SbjbccsX7YeB61q4zJML3VTf3Ngy7Kc5y+e dV+/emPX63WDzQqcVZWt9UuxXEr7x/dJC8C5SzJ+9Hj48/T05MR1vbuKtNLk 9Bv9/LIUsmyLURwtrq7+/AKAf1z4R18ssp3yAAAAAElFTkSuQmCC }] } elseif {$dpi < 320} { set fileImage [image create photo -data { iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAABHNCSVQICAgI fAhkiAAAAAlwSFlzAAAKYQAACmEB/MxKJQAAABl0RVh0U29mdHdhcmUAd3d3 Lmlua3NjYXBlLm9yZ5vuPBoAAAASdEVYdFRpdGxlAEp1c3RpZnkgTGVmdOI3 kz4AAAAWdEVYdEF1dGhvcgBBbmRyZWFzIE5pbHNzb24r7+SjAAAAGHRFWHRD cmVhdGlvbiBUaW1lADIwMDUtMTAtMjkvDxi/AAAASXRFWHRDb3B5cmlnaHQA UHVibGljIERvbWFpbiBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNl bnNlcy9wdWJsaWNkb21haW4vWcP+ygAAAtlJREFUWIW9mM9qE1EUxr97Z6KQ |
︙ | ︙ | |||
626 627 628 629 630 631 632 | fAzZjw7KyN3UKFalaIwaxo2xOE1pf9FeY1NODZ7eMMY4JHXmVxLUEeTWmlm9 16XcFP41zBqAtSRJPM45fN8v2OAyLTUqQFHIVFWe54Fi8hhj9wH8JqK/PmOM AfAAeJPJJB6Nfl4S9C8obtZ0aprY9b8w5+cRziZnV+n6AODT7KdMGGPRwcHB y+Pjo8dXcezFcezpl64enPOEc061Wu1yOp1+AzAioisA+Afe69paBLvOuQAA AABJRU5ErkJggg== }] } elseif {$dpi < 400} { | | | 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 | fAzZjw7KyN3UKFalaIwaxo2xOE1pf9FeY1NODZ7eMMY4JHXmVxLUEeTWmlm9 16XcFP41zBqAtSRJPM45fN8v2OAyLTUqQFHIVFWe54Fi8hhj9wH8JqK/PmOM AfAAeJPJJB6Nfl4S9C8obtZ0aprY9b8w5+cRziZnV+n6AODT7KdMGGPRwcHB y+Pjo8dXcezFcezpl64enPOEc061Wu1yOp1+AzAioisA+Afe69paBLvOuQAA AABJRU5ErkJggg== }] } elseif {$dpi < 400} { set fileImage [image create photo -data { iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABHNCSVQICAgI fAhkiAAAAAlwSFlzAAAOawAADmsBVP4NBgAAABl0RVh0U29mdHdhcmUAd3d3 Lmlua3NjYXBlLm9yZ5vuPBoAAAASdEVYdFRpdGxlAEp1c3RpZnkgTGVmdOI3 kz4AAAAWdEVYdEF1dGhvcgBBbmRyZWFzIE5pbHNzb24r7+SjAAAAGHRFWHRD cmVhdGlvbiBUaW1lADIwMDUtMTAtMjkvDxi/AAAASXRFWHRDb3B5cmlnaHQA UHVibGljIERvbWFpbiBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNl bnNlcy9wdWJsaWNkb21haW4vWcP+ygAABDBJREFUaIHdWk1v20YQfUNRSmRJ |
︙ | ︙ | |||
660 661 662 663 664 665 666 | MqLduPnOTkQBEbWZk0DdOPuqqXcPFgjr63pamEcOvZjzRDAnARHdUm3hTMQW gDaAdpJwbWYDUQCi1DFR+qJFRMpmBKJsIZLy6TW9T5oF5aIw/9tXwhwAuEtE IwAjZp6GlO4cAqgDaDASur6+Rru9nE9ty8ZodAlOQABuAfiAlPc0ZGYmojFS McHp6dnvL/54fgTxX1c2AAw+H757DuA/AGNmfg8ApIaXiEKkSm8DaACoIRVU MxyuFx8BJLOfHwC8BzBhhfwnq61KCuZOLqEAAAAASUVORK5CYII= }] } else { | | | 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 | MqLduPnOTkQBEbWZk0DdOPuqqXcPFgjr63pamEcOvZjzRDAnARHdUm3hTMQW gDaAdpJwbWYDUQCi1DFR+qJFRMpmBKJsIZLy6TW9T5oF5aIw/9tXwhwAuEtE IwAjZp6GlO4cAqgDaDASur6+Rru9nE9ty8ZodAlOQABuAfiAlPc0ZGYmojFS McHp6dnvL/54fgTxX1c2AAw+H757DuA/AGNmfg8ApIaXiEKkSm8DaACoIRVU MxyuFx8BJLOfHwC8BzBhhfwnq61KCuZOLqEAAAAASUVORK5CYII= }] } else { set fileImage [image create photo -data { iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgI fAhkiAAAAAlwSFlzAAASdAAAEnQB3mYfeAAAABl0RVh0U29mdHdhcmUAd3d3 Lmlua3NjYXBlLm9yZ5vuPBoAAAASdEVYdFRpdGxlAEp1c3RpZnkgTGVmdOI3 kz4AAAAWdEVYdEF1dGhvcgBBbmRyZWFzIE5pbHNzb24r7+SjAAAAGHRFWHRD cmVhdGlvbiBUaW1lADIwMDUtMTAtMjkvDxi/AAAASXRFWHRDb3B5cmlnaHQA UHVibGljIERvbWFpbiBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNl bnNlcy9wdWJsaWNkb21haW4vWcP+ygAABD9JREFUeJzlW01PFEEQfTW7C8tG |
︙ | ︙ | |||
710 711 712 713 714 715 716 | # # Arguments: # type "open" or "save" # args Options parsed by the procedure. # proc ::tk::dialog::file:: {type args} { | < > | 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 | # # Arguments: # type "open" or "save" # args Options parsed by the procedure. # proc ::tk::dialog::file:: {type args} { variable showHiddenBtn variable selectFilePath set dataName __tk_filedialog upvar ::tk::dialog::file::$dataName data Config $dataName $type $args if {$data(-parent) eq "."} { set w .$dataName |
︙ | ︙ | |||
816 817 818 819 820 821 822 | $data(ent) icursor end # Wait for the user to respond, then restore the focus and return the # index of the selected button. Restore the focus before deleting the # window, since otherwise the window manager may take the focus away so we # can't redirect it. Finally, restore any grab that was in effect. | | | | 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 | $data(ent) icursor end # Wait for the user to respond, then restore the focus and return the # index of the selected button. Restore the focus before deleting the # window, since otherwise the window manager may take the focus away so we # can't redirect it. Finally, restore any grab that was in effect. vwait [namespace current]::selectFilePath ::tk::RestoreFocusGrab $w $data(ent) withdraw # Cleanup traces on selectPath variable # foreach trace [trace info variable data(selectPath)] { trace remove variable data(selectPath) {*}$trace } return $selectFilePath } # ::tk::dialog::file::Config -- # # Configures the TK filedialog according to the argument list # proc ::tk::dialog::file::Config {dataName type argList} { |
︙ | ︙ | |||
930 931 932 933 934 935 936 937 938 | set data(-multiple) 1 } else { set data(-multiple) 0 } } proc ::tk::dialog::file::Create {w class} { set dataName [lindex [split $w .] end] upvar ::tk::dialog::file::$dataName data | > < < | 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 | set data(-multiple) 1 } else { set data(-multiple) 0 } } proc ::tk::dialog::file::Create {w class} { variable updirImage set dataName [lindex [split $w .] end] upvar ::tk::dialog::file::$dataName data toplevel $w -class $class if {[tk windowingsystem] eq "x11"} {wm attributes $w -type dialog} pack [ttk::frame $w.contents] -expand 1 -fill both #set w $w.contents # f1: the frame with the directory option menu |
︙ | ︙ | |||
955 956 957 958 959 960 961 | set data(selectPath) "" } set var [format %s(selectPath) ::tk::dialog::file::$dataName] ttk::combobox $data(dirMenu) -state readonly bind $data(dirMenu) <<ComboboxSelected>> \ "set $var \[$data(dirMenu) get\]" set data(upBtn) [ttk::button $f1.up] | | | 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 | set data(selectPath) "" } set var [format %s(selectPath) ::tk::dialog::file::$dataName] ttk::combobox $data(dirMenu) -state readonly bind $data(dirMenu) <<ComboboxSelected>> \ "set $var \[$data(dirMenu) get\]" set data(upBtn) [ttk::button $f1.up] $data(upBtn) configure -image $updirImage pack $data(upBtn) -side right -padx 4 -fill both pack $f1.lab -side left -padx 4 -fill both pack $f1.menu -expand yes -fill both -padx 4 pack $data(dirMenu) -expand yes -fill x -padx 4 # data(icons): the IconList that list the files and directories. |
︙ | ︙ | |||
1148 1149 1150 1151 1152 1153 1154 | set class [winfo class $w] if {($class ne "TkFDialog") && ($class ne "TkChooseDir")} { return } set dataName [winfo name $w] upvar ::tk::dialog::file::$dataName data | < > | | | | 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 | set class [winfo class $w] if {($class ne "TkFDialog") && ($class ne "TkChooseDir")} { return } set dataName [winfo name $w] upvar ::tk::dialog::file::$dataName data variable showHiddenVar variable folderImage variable fileImage unset -nocomplain data(updateId) set folder $folderImage set file $fileImage set appPWD [pwd] if {[catch { cd $data(selectPath) }]} then { # We cannot change directory to $data(selectPath). $data(selectPath) # should have been checked before ::tk::dialog::file::Update is |
︙ | ︙ | |||
1584 1585 1586 1587 1588 1589 1590 1591 | ActivateEnt $w } # Gets called when user presses the "Cancel" button # proc ::tk::dialog::file::CancelCmd {w} { upvar ::tk::dialog::file::[winfo name $w] data | > < < | > < > | | 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 | ActivateEnt $w } # Gets called when user presses the "Cancel" button # proc ::tk::dialog::file::CancelCmd {w} { variable selectFilePath upvar ::tk::dialog::file::[winfo name $w] data set selectFilePath "" } # Gets called when user destroys the dialog directly [Bug 987169] # proc ::tk::dialog::file::Destroyed {w} { variable selectFilePath upvar ::tk::dialog::file::[winfo name $w] data bind $data(okBtn) <Destroy> {} set selectFilePath "" } # Gets called when user browses the IconList widget (dragging mouse, arrow # keys, etc) # proc ::tk::dialog::file::ListBrowse {w} { upvar ::tk::dialog::file::[winfo name $w] data |
︙ | ︙ | |||
1679 1680 1681 1682 1683 1684 1685 | Done $w } } # ::tk::dialog::file::Done -- # # Gets called when user has input a valid filename. Pops up a dialog | | | | > < | | | | | | | | | | | 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 | Done $w } } # ::tk::dialog::file::Done -- # # Gets called when user has input a valid filename. Pops up a dialog # box to confirm selection when necessary. Sets the namespace variable # "selectFilePath", which will break the "vwait" loop # in ::tk::dialog::file:: and return the selected filename to the script # that calls tk_getOpenFile or tk_getSaveFile # proc ::tk::dialog::file::Done {w {selFilePath ""}} { variable selectFilePath upvar ::tk::dialog::file::[winfo name $w] data if {$selFilePath eq ""} { if {$data(-multiple)} { set selFilePath {} foreach f $data(selectFile) { lappend selFilePath [JoinFile $data(selectPath) $f] } } else { set selFilePath [JoinFile $data(selectPath) $data(selectFile)] } set ::tk::Priv(selectFile) $data(selectFile) set ::tk::Priv(selectPath) $data(selectPath) if {($data(type) eq "save") && $data(-confirmoverwrite) && [file exists $selFilePath]} { set reply [tk_messageBox -icon warning -type yesno -parent $w \ -message [mc "File \"%1\$s\" already exists.\nDo you want\ to overwrite it?" $selFilePath]] if {$reply eq "no"} { return } } if { [info exists data(-typevariable)] && $data(-typevariable) ne "" && [info exists data(-filetypes)] && [llength $data(-filetypes)] && [info exists data(filterType)] && $data(filterType) ne "" } then { upvar #0 $data(-typevariable) typeVariable set typeVariable [lindex $data(origfiletypes) \ [lsearch -exact $data(-filetypes) $data(filterType)] 0] } } set selectFilePath $selFilePath } # ::tk::dialog::file::GlobFiltered -- # # Gets called to do globbing, returning the results and filtering them # according to the current filter (and removing the entries for '.' and # '..' which are never shown). Deals with evil cases such as where the |
︙ | ︙ |
Changes to jni/sdl2tk/library/xmfbox.tcl.
︙ | ︙ | |||
30 31 32 33 34 35 36 | # # When -multiple is set to > 0, this returns a Tcl list of absolute # pathnames. The argument for -multiple is ignored, but for consistency # with Windows it defines the maximum amount of memory to allocate for # the returned filenames. proc ::tk::MotifFDialog {type args} { | | | | | 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 | # # When -multiple is set to > 0, this returns a Tcl list of absolute # pathnames. The argument for -multiple is ignored, but for consistency # with Windows it defines the maximum amount of memory to allocate for # the returned filenames. proc ::tk::MotifFDialog {type args} { variable ::tk::dialog::file::selectFilePath set dataName __tk_filedialog upvar ::tk::dialog::file::$dataName data set w [MotifFDialog_Create $dataName $type $args] # Set a grab and claim the focus too. ::tk::SetFocusGrab $w $data(sEnt) $data(sEnt) selection range 0 end # Wait for the user to respond, then restore the focus and # return the index of the selected button. Restore the focus # before deleting the window, since otherwise the window manager # may take the focus away so we can't redirect it. Finally, # restore any grab that was in effect. vwait ::tk::dialog::file::selectFilePath set result $selectFilePath ::tk::RestoreFocusGrab $w $data(sEnt) withdraw return $result } # ::tk::MotifFDialog_Create -- # |
︙ | ︙ | |||
203 204 205 206 207 208 209 | return } # This proc gets called whenever data(filter) is set # proc ::tk::MotifFDialog_SetFilter {w type} { upvar ::tk::dialog::file::[winfo name $w] data | | | | 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 | return } # This proc gets called whenever data(filter) is set # proc ::tk::MotifFDialog_SetFilter {w type} { upvar ::tk::dialog::file::[winfo name $w] data variable ::tk::dialog::file::selectFileType set data(filter) [lindex $type 1] set selectFileType [lindex [lindex $type 0] 0] MotifFDialog_Update $w } # ::tk::MotifFDialog_Config -- # # Iterates over the optional arguments to determine the option |
︙ | ︙ | |||
399 400 401 402 403 404 405 | # Create the bindings: # bind $w <Alt-Key> [list ::tk::AltKeyInDialog $w %A] bind $data(fEnt) <Return> [list tk::MotifFDialog_ActivateFEnt $w] bind $data(sEnt) <Return> [list tk::MotifFDialog_ActivateSEnt $w] bind $w <Escape> [list tk::MotifFDialog_CancelCmd $w] | | | 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 | # Create the bindings: # bind $w <Alt-Key> [list ::tk::AltKeyInDialog $w %A] bind $data(fEnt) <Return> [list tk::MotifFDialog_ActivateFEnt $w] bind $data(sEnt) <Return> [list tk::MotifFDialog_ActivateSEnt $w] bind $w <Escape> [list tk::MotifFDialog_CancelCmd $w] bind $w.bot <Destroy> {set ::tk::dialog::file::selectFilePath {}} wm protocol $w WM_DELETE_WINDOW [list tk::MotifFDialog_CancelCmd $w] } proc ::tk::MotifFDialog_SetListMode {w} { upvar ::tk::dialog::file::[winfo name $w] data |
︙ | ︙ | |||
810 811 812 813 814 815 816 | MotifFDialog_Update $w } # ::tk::MotifFDialog_ActivateSEnt -- # # This procedure is called when the user presses Return inside | | | | 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 | MotifFDialog_Update $w } # ::tk::MotifFDialog_ActivateSEnt -- # # This procedure is called when the user presses Return inside # the "selection" entry. It sets the ::tk::dialog::file::selectFilePath # variable so that the vwait loop in tk::MotifFDialog will be # terminated. # # Arguments: # w The pathname of the dialog box. # # Results: # None. proc ::tk::MotifFDialog_ActivateSEnt {w} { variable ::tk::dialog::file::selectFilePath upvar ::tk::dialog::file::[winfo name $w] data set selectFilePath [string trim [$data(sEnt) get]] if {$selectFilePath eq ""} { MotifFDialog_FilterCmd $w return |
︙ | ︙ | |||
881 882 883 884 885 886 887 | if {[info exists data(-typevariable)] && $data(-typevariable) ne "" && [info exists data(-filetypes)] && $data(-filetypes) ne ""} { upvar #0 $data(-typevariable) typeVariable set typeVariable [lindex $data(origfiletypes) $data(fileType) 0] } if {$data(-multiple) != 0} { | | | | | > | | | | 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 | if {[info exists data(-typevariable)] && $data(-typevariable) ne "" && [info exists data(-filetypes)] && $data(-filetypes) ne ""} { upvar #0 $data(-typevariable) typeVariable set typeVariable [lindex $data(origfiletypes) $data(fileType) 0] } if {$data(-multiple) != 0} { set selectFilePath $newFileList } else { set selectFilePath [lindex $newFileList 0] } # Set selectFile and selectPath to first item in list set ::tk::Priv(selectFile) [file tail [lindex $newFileList 0]] set ::tk::Priv(selectPath) [file dirname [lindex $newFileList 0]] } proc ::tk::MotifFDialog_OkCmd {w} { upvar ::tk::dialog::file::[winfo name $w] data MotifFDialog_ActivateSEnt $w } proc ::tk::MotifFDialog_FilterCmd {w} { upvar ::tk::dialog::file::[winfo name $w] data MotifFDialog_ActivateFEnt $w } proc ::tk::MotifFDialog_CancelCmd {w} { variable ::tk::dialog::file::selectFilePath variable ::tk::Priv set selectFilePath "" set ::tk::Priv(selectFile) "" set ::tk::Priv(selectPath) "" } proc ::tk::ListBoxKeyAccel_Set {w} { bind Listbox <Any-KeyPress> "" bind $w <Destroy> [list tk::ListBoxKeyAccel_Unset $w] bind $w <Any-KeyPress> [list tk::ListBoxKeyAccel_Key $w %A] } |
︙ | ︙ | |||
988 989 990 991 992 993 994 | proc ::tk::ListBoxKeyAccel_Reset {w} { variable ::tk::Priv unset -nocomplain Priv(lbAccel,$w) } proc ::tk_getFileType {} { | | | | 989 990 991 992 993 994 995 996 997 998 999 1000 | proc ::tk::ListBoxKeyAccel_Reset {w} { variable ::tk::Priv unset -nocomplain Priv(lbAccel,$w) } proc ::tk_getFileType {} { variable ::tk::dialog::file::selectFileType return $selectFileType } |