| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | tixWidgetClass tixFileEntry { |
| | -classname TixFileEntry |
| | -superclass tixLabelWidget |
| | -method { |
| | invoke filedialog update |
| | } |
| | -flag { |
| | -activatecmd -command -dialogtype -disablecallback -disabledforeground |
| | -filebitmap -selectmode -state -validatecmd -value -variable |
| | } |
| | -forcecall { |
| | -variable |
| | } |
| | -static { |
| | -filebitmap |
| | } |
| | -configspec { |
| | {-activatecmd activateCmd ActivateCmd ""} |
| | {-command command Command ""} |
| | {-dialogtype dialogType DialogType ""} |
| | {-disablecallback disableCallback DisableCallback 0 tixVerifyBoolean} |
| | {-disabledforeground disabledForeground DisabledForeground #303030} |
| | {-filebitmap fileBitmap FileBitmap ""} |
| | {-selectmode selectMode SelectMode normal} |
| | {-state state State normal} |
| | {-validatecmd validateCmd ValidateCmd ""} |
| | {-value value Value ""} |
| | {-variable variable Variable ""} |
| | } |
| | -default { |
| | {*frame.borderWidth 2} |
| | {*frame.relief sunken} |
| | {*Button.highlightThickness 0} |
| | {*Entry.highlightThickness 0} |
| | {*Entry.borderWidth 0} |
| | } |
| | } |
| |
|
| | proc tixFileEntry:InitWidgetRec {w} { |
| | upvar #0 $w data |
| |
|
| | tixChainMethod $w InitWidgetRec |
| | set data(varInited) 0 |
| |
|
| | if {$data(-filebitmap) eq ""} { |
| | set data(-filebitmap) [tix getbitmap openfile] |
| | } |
| | } |
| |
|
| | proc tixFileEntry:ConstructFramedWidget {w frame} { |
| | upvar #0 $w data |
| |
|
| | tixChainMethod $w ConstructFramedWidget $frame |
| |
|
| | set data(w:entry) [entry $frame.entry] |
| | set data(w:button) [button $frame.button -bitmap $data(-filebitmap) \ |
| | -takefocus 0] |
| | set data(entryfg) [$data(w:entry) cget -fg] |
| |
|
| | pack $data(w:button) -side right -fill both |
| | pack $data(w:entry) -side left -expand yes -fill both |
| | } |
| |
|
| | proc tixFileEntry:SetBindings {w} { |
| | upvar #0 $w data |
| |
|
| | tixChainMethod $w SetBindings |
| |
|
| | $data(w:button) config -command [list tixFileEntry:OpenFile $w] |
| | tixSetMegaWidget $data(w:entry) $w |
| |
|
| | |
| | |
| | bind $data(w:entry) <Return> [list tixFileEntry:invoke $w] |
| | bind $data(w:entry) <KeyPress> { |
| | if {[set [tixGetMegaWidget %W](-selectmode)] eq "immediate"} { |
| | tixFileEntry:invoke [tixGetMegaWidget %W] |
| | } |
| | } |
| | bind $data(w:entry) <FocusOut> { |
| | if {"%d" eq "NotifyNonlinear" || "%d" eq "NotifyNonlinearVirtual"} { |
| | tixFileEntry:invoke [tixGetMegaWidget %W] |
| | } |
| | } |
| | bind $w <FocusIn> [list focus $data(w:entry)] |
| | } |
| |
|
| | |
| | |
| | |
| | proc tixFileEntry:config-state {w value} { |
| | upvar #0 $w data |
| |
|
| | if {$value eq "normal"} { |
| | $data(w:button) config -state $value |
| | $data(w:entry) config -state $value -fg $data(entryfg) |
| | catch {$data(w:label) config -fg $data(entryfg)} |
| | } else { |
| | $data(w:button) config -state $value |
| | $data(w:entry) config -state $value -fg $data(-disabledforeground) |
| | catch {$data(w:label) config -fg $data(-disabledforeground)} |
| | } |
| |
|
| | return "" |
| | } |
| |
|
| | proc tixFileEntry:config-value {w value} { |
| | tixFileEntry:SetValue $w $value |
| | } |
| |
|
| | proc tixFileEntry:config-variable {w arg} { |
| | upvar #0 $w data |
| |
|
| | if {[tixVariable:ConfigVariable $w $arg]} { |
| | |
| | |
| | tixFileEntry:SetValue $w $data(-value) |
| | } |
| | catch { |
| | unset data(varInited) |
| | } |
| | set data(-variable) $arg |
| | } |
| |
|
| | |
| | |
| | |
| | proc tixFileEntry:invoke {w} { |
| | upvar #0 $w data |
| |
|
| | if {![catch {$data(w:entry) index sel.first}]} { |
| | |
| | |
| | $data(w:entry) select from end |
| | $data(w:entry) select to end |
| | } |
| |
|
| | tixFileEntry:SetValue $w [$data(w:entry) get] |
| | } |
| |
|
| | proc tixFileEntry:filedialog {w args} { |
| | upvar #0 $w data |
| |
|
| | if {[llength $args]} { |
| | return [eval [tix filedialog $data(-dialogtype)] $args] |
| | } else { |
| | return [tix filedialog $data(-dialogtype)] |
| | } |
| | } |
| |
|
| | proc tixFileEntry:update {w} { |
| | upvar #0 $w data |
| |
|
| | if {[$data(w:entry) get] ne $data(-value)} { |
| | tixFileEntry:invoke $w |
| | } |
| | } |
| | |
| | |
| | |
| | proc tixFileEntry:OpenFile {w} { |
| | upvar #0 $w data |
| |
|
| | if {$data(-activatecmd) != ""} { |
| | uplevel #0 $data(-activatecmd) |
| | } |
| |
|
| | switch -- $data(-dialogtype) tk_chooseDirectory { |
| | set args [list -parent [winfo toplevel $w]] |
| | if {[set initial $data(-value)] != ""} { |
| | lappend args -initialdir $data(value) |
| | } |
| | set retval [eval [linsert $args 0 tk_chooseDirectory]] |
| |
|
| | if {$retval != ""} {tixFileEntry:SetValue $w [tixFSNative $retval]} |
| | } tk_getOpenFile - tk_getSaveFile { |
| | set args [list -parent [winfo toplevel $w]] |
| |
|
| | if {[set initial [$data(w:entry) get]] != ""} { |
| | switch -glob -- $initial *.py { |
| | set types [list {"Python Files" {.py .pyw}} {"All Files" *}] |
| | } *.txt { |
| | set types [list {"Text Files" .txt} {"All Files" *}] |
| | } *.tcl { |
| | set types [list {"Tcl Files" .tcl} {"All Files" *}] |
| | } * - default { |
| | set types [list {"All Files" *}] |
| | } |
| | if {[file isfile $initial]} { |
| | lappend args -initialdir [file dir $initial] \ |
| | -initialfile $initial |
| | } elseif {[file isdir $initial]} { |
| | lappend args -initialdir $initial |
| | } |
| | } else { |
| | set types [list {"All Files" *}] |
| | } |
| | lappend args -filetypes $types |
| |
|
| | set retval [eval $data(-dialogtype) $args] |
| | if {$retval != ""} {tixFileEntry:SetValue $w [tixFSNative $retval]} |
| | } default { |
| | set filedlg [tix filedialog $data(-dialogtype)] |
| |
|
| | $filedlg config -parent [winfo toplevel $w] \ |
| | -command [list tixFileEntry:FileDlgCallback $w] |
| |
|
| | focus $data(w:entry) |
| |
|
| | $filedlg popup |
| | } |
| | } |
| |
|
| | proc tixFileEntry:FileDlgCallback {w args} { |
| | set filename [tixEvent flag V] |
| |
|
| | tixFileEntry:SetValue $w $filename |
| | } |
| |
|
| | proc tixFileEntry:SetValue {w value} { |
| | upvar #0 $w data |
| |
|
| | if {[llength $data(-validatecmd)]} { |
| | set value [tixEvalCmdBinding $w $data(-validatecmd) "" $value] |
| | } |
| |
|
| | if {$data(-state) eq "normal"} { |
| | $data(w:entry) delete 0 end |
| | $data(w:entry) insert 0 $value |
| | $data(w:entry) xview end |
| | } |
| |
|
| | set data(-value) $value |
| |
|
| | tixVariable:UpdateVariable $w |
| |
|
| | if {[llength $data(-command)] && !$data(-disablecallback)} { |
| | if {![info exists data(varInited)]} { |
| | set bind(specs) "" |
| | tixEvalCmdBinding $w $data(-command) bind $value |
| | } |
| | } |
| | } |
| |
|
| | proc tixFileEntry:Destructor {w} { |
| | upvar #0 $w data |
| |
|
| | tixUnsetMegaWidget $data(w:entry) |
| | tixVariable:DeleteVariable $w |
| |
|
| | |
| | |
| | tixChainMethod $w Destructor |
| | } |
| |
|