preview window in file open dialog box is x/y resizable

This commit is contained in:
stefan schippers 2024-02-17 04:40:37 +01:00
parent 20add157c2
commit f547c86f1e
1 changed files with 44 additions and 33 deletions

View File

@ -3255,24 +3255,24 @@ proc file_dialog_set_colors1 {} {
proc file_dialog_set_colors2 {} {
global file_dialog_index1 file_dialog_files2 dircolor file_dialog_files1
set dir1 [abs_sym_path [lindex $file_dialog_files1 $file_dialog_index1]]
for {set i 0} { $i< [.load.l.paneright.list index end] } { incr i} {
for {set i 0} { $i< [.load.l.paneright.f.list index end] } { incr i} {
set maxlen 0
set name "$dir1/[lindex $file_dialog_files2 $i]"
if {[ file isdirectory $name]} {
.load.l.paneright.list itemconfigure $i -foreground blue
.load.l.paneright.f.list itemconfigure $i -foreground blue
foreach j [array names dircolor] {
set pattern $j
set color $dircolor($j)
set len [string length [regexp -inline $pattern $dir1]]
# puts "len=$len\npattern=$pattern\nname=$name\n\n\n"
if { $len > $maxlen } {
.load.l.paneright.list itemconfigure $i -foreground $color -selectforeground $color
.load.l.paneright.f.list itemconfigure $i -foreground $color -selectforeground $color
set maxlen $len
}
}
} else {
.load.l.paneright.list itemconfigure $i -foreground black
.load.l.paneright.f.list itemconfigure $i -foreground black
}
}
}
@ -3357,6 +3357,7 @@ proc load_file_dialog_mkdir {dir} {
proc load_file_dialog_up {dir} {
global file_dialog_dir1
bind .load.l.paneright.draw <Expose> {}
bind .load.l.paneright.draw <Configure> {}
.load.l.paneright.draw configure -background white
set d [file dirname $dir]
if { [file isdirectory $d]} {
@ -3452,9 +3453,11 @@ proc file_dialog_display_preview {f} {
.load.l.paneright.draw configure -background {}
xschem preview_window draw .load.l.paneright.draw "$f"
bind .load.l.paneright.draw <Expose> [subst {xschem preview_window draw .load.l.paneright.draw "$f"}]
bind .load.l.paneright.draw <Configure> [subst {xschem preview_window draw .load.l.paneright.draw "$f"}]
}
} else {
bind .load.l.paneright.draw <Expose> {}
bind .load.l.paneright.draw <Configure> {}
.load.l.paneright.draw configure -background white
}
}
@ -3510,8 +3513,6 @@ proc load_file_dialog {{msg {}} {ext {}} {global_initdir {INITIALINSTDIR}}
pack .load.l.paneleft.xscroll -side bottom -fill x
pack .load.l.paneleft.list -fill both -expand true
bind .load.l.paneleft.list <<ListboxSelect>> {
# bind .load.l.paneright.draw <Expose> {}
# .load.l.paneright.draw configure -background white
set file_dialog_sel [.load.l.paneleft.list curselection]
if { $file_dialog_sel ne {} } {
set file_dialog_dir1 [abs_sym_path [lindex $file_dialog_files1 $file_dialog_sel]]
@ -3524,25 +3525,32 @@ proc load_file_dialog {{msg {}} {ext {}} {global_initdir {INITIALINSTDIR}}
file_dialog_set_colors2
}
}
frame .load.l.paneright
panedwindow .load.l.paneright -orient vertical
frame .load.l.paneright.f
frame .load.l.paneright.draw -background white -height 3.8c
listbox .load.l.paneright.list -listvariable file_dialog_files2 -width 20 -height 12\
-yscrollcommand ".load.l.paneright.yscroll set" -selectmode browse \
-xscrollcommand ".load.l.paneright.xscroll set" -exportselection 0
scrollbar .load.l.paneright.yscroll -command ".load.l.paneright.list yview"
scrollbar .load.l.paneright.xscroll -command ".load.l.paneright.list xview" -orient horiz
pack .load.l.paneright.draw -side bottom -anchor s -fill x
pack .load.l.paneright.yscroll -side right -fill y
pack .load.l.paneright.xscroll -side bottom -fill x
pack .load.l.paneright.list -side bottom -fill both -expand true
.load.l.paneright add .load.l.paneright.f
.load.l.paneright add .load.l.paneright.draw -minsize 200
.load.l.paneright paneconfigure .load.l.paneright.f -stretch never
.load.l.paneright paneconfigure .load.l.paneright.draw -stretch always
listbox .load.l.paneright.f.list -listvariable file_dialog_files2 -width 20 -height 12\
-yscrollcommand ".load.l.paneright.f.yscroll set" -selectmode browse \
-xscrollcommand ".load.l.paneright.f.xscroll set" -exportselection 0
scrollbar .load.l.paneright.f.yscroll -command ".load.l.paneright.f.list yview"
scrollbar .load.l.paneright.f.xscroll -command ".load.l.paneright.f.list xview" -orient horiz
pack .load.l.paneright.f.yscroll -side right -fill y
pack .load.l.paneright.f.xscroll -side bottom -fill x
pack .load.l.paneright.f.list -side bottom -fill both -expand true
if { $loadfile == 2} {
.load.l add .load.l.recent
c_toolbar::display
}
.load.l add .load.l.paneleft -minsize 40
.load.l add .load.l.paneright -minsize 40
.load.l paneconfigure .load.l.paneleft -stretch always
.load.l add .load.l.paneright -minsize 300
.load.l paneconfigure .load.l.paneleft -stretch never
.load.l paneconfigure .load.l.paneright -stretch always
frame .load.buttons
frame .load.buttons_bot
@ -3562,6 +3570,7 @@ proc load_file_dialog {{msg {}} {ext {}} {global_initdir {INITIALINSTDIR}}
wm protocol .load WM_DELETE_WINDOW {.load.buttons_bot.cancel invoke}
button .load.buttons.home -width 5 -text {Home} -command {
bind .load.l.paneright.draw <Expose> {}
bind .load.l.paneright.draw <Configure> {}
.load.l.paneright.draw configure -background white
set file_dialog_files1 $pathlist
file_dialog_set_names1
@ -3573,7 +3582,7 @@ proc load_file_dialog {{msg {}} {ext {}} {global_initdir {INITIALINSTDIR}}
setglob $file_dialog_dir1
file_dialog_set_colors2
.load.l.paneleft.list selection clear 0 end
.load.l.paneright.list selection clear 0 end
.load.l.paneright.f.list selection clear 0 end
.load.l.paneleft.list selection set $file_dialog_index1
}
label .load.buttons_bot.label -text { File/Search:}
@ -3587,10 +3596,10 @@ proc load_file_dialog {{msg {}} {ext {}} {global_initdir {INITIALINSTDIR}}
if { $file_dialog_globfilter eq {**} } { set file_dialog_globfilter * }
setglob $file_dialog_dir1
if {[.load.buttons_bot.entry get] ne {}} {
.load.l.paneright.list yview moveto 1.0
.load.l.paneright.f.list yview moveto 1.0
} else {
if { [info exists file_dialog_yview]} {
.load.l.paneright.list yview moveto [lindex $file_dialog_yview 0]
.load.l.paneright.f.list yview moveto [lindex $file_dialog_yview 0]
}
}
}
@ -3652,11 +3661,12 @@ proc load_file_dialog {{msg {}} {ext {}} {global_initdir {INITIALINSTDIR}}
set $global_initdir \"\$file_dialog_dir1\"
}
"
bind .load.l.paneright.list <Double-Button-1> "
bind .load.l.paneright.f.list <Double-Button-1> "
set file_dialog_retval \[.load.buttons_bot.entry get\]
if {\$file_dialog_retval ne {} &&
!\[file isdirectory \"\$file_dialog_dir1/\[.load.l.paneright.list get \$file_dialog_sel\]\"\]} {
!\[file isdirectory \"\$file_dialog_dir1/\[.load.l.paneright.f.list get \$file_dialog_sel\]\"\]} {
bind .load.l.paneright.draw <Expose> {}
bind .load.l.paneright.draw <Configure> {}
destroy .load
xschem preview_window destroy {} {}
set $global_initdir \"\$file_dialog_dir1\"
@ -3685,8 +3695,8 @@ proc load_file_dialog {{msg {}} {ext {}} {global_initdir {INITIALINSTDIR}}
# regsub {\+.*} $file_dialog_default_geometry {} file_dialog_default_geometry
}
bind .load.l.paneright.yscroll <Motion> {
set file_dialog_yview [.load.l.paneright.list yview]
bind .load.l.paneright.f.yscroll <Motion> {
set file_dialog_yview [.load.l.paneright.f.list yview]
}
xschem preview_window create .load.l.paneright.draw {}
@ -3703,15 +3713,15 @@ proc load_file_dialog {{msg {}} {ext {}} {global_initdir {INITIALINSTDIR}}
}
}
bind .load.l.paneright.list <ButtonPress> {
set file_dialog_yview [.load.l.paneright.list yview]
bind .load.l.paneright.f.list <ButtonPress> {
set file_dialog_yview [.load.l.paneright.f.list yview]
}
bind .load.l.paneright.list <<ListboxSelect>> {
set file_dialog_yview [.load.l.paneright.list yview]
set file_dialog_sel [.load.l.paneright.list curselection]
bind .load.l.paneright.f.list <<ListboxSelect>> {
set file_dialog_yview [.load.l.paneright.f.list yview]
set file_dialog_sel [.load.l.paneright.f.list curselection]
if { $file_dialog_sel ne {} } {
set file_dialog_dir1 [abs_sym_path [lindex $file_dialog_files1 $file_dialog_index1]]
set file_dialog_dir2 [.load.l.paneright.list get $file_dialog_sel]
set file_dialog_dir2 [.load.l.paneright.f.list get $file_dialog_sel]
if {$file_dialog_dir2 eq {..}} {
set file_dialog_d [file dirname $file_dialog_dir1]
} elseif { $file_dialog_dir2 eq {.} } {
@ -3733,6 +3743,7 @@ proc load_file_dialog {{msg {}} {ext {}} {global_initdir {INITIALINSTDIR}}
}
if { [file isdirectory $file_dialog_d]} {
bind .load.l.paneright.draw <Expose> {}
bind .load.l.paneright.draw <Configure> {}
.load.l.paneright.draw configure -background white
file_dialog_set_home $file_dialog_d
setglob $file_dialog_d
@ -3749,9 +3760,9 @@ proc load_file_dialog {{msg {}} {ext {}} {global_initdir {INITIALINSTDIR}}
if {$file_dialog_loadfile == 2} {
set file_dialog_retval { }
}
};# bind .load.l.paneright.list <<ListboxSelect>>
};# bind .load.l.paneright.f.list <<ListboxSelect>>
if { [info exists file_dialog_yview]} {
.load.l.paneright.list yview moveto [lindex $file_dialog_yview 0]
.load.l.paneright.f.list yview moveto [lindex $file_dialog_yview 0]
}
focus .load.buttons_bot.entry
if {$loadfile != 2} {