123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- #!/usr/local/bin/wish
- #package require -exact Tk $tcl_version
- package require Tk 8.4
- puts ""
- puts ""
- puts "---------------------------------------"
- puts "Released under GPLv3.0"
- puts "Copyrights © 2022-2026 Daniele Bonini"
- puts "This software is supplied AS-IS, without WARRENTY."
- puts "Welcome in TKBOOKMARKS!!"
- puts "---------------------------------------"
- puts ""
- puts ""
- cd /home/user/util/tkbin
- # Variable and Proc declarations
- proc setLabel { idx } {
- global lbltext
- global cmds
- set val "_"
- if {$idx >= 0 && $idx < [array size cmds]} {
- set val $cmds($idx)
- set lbltext $val
- } else {
- set lbltext ""
- }
-
- if {"[string range $val 0 3]"=="http"} {
- place .fr.bexec -x 20 -y 237
- place .fr.bclose -x 120 -y 237
- } else {
- place forget .fr.bexec
- place .fr.bclose -x 20 -y 237
- }
- }
- proc shutdown {} {
- # perform necessary housework for ensuring that application files
- # are in proper state, lock files are removed, etc.
-
- puts stdout "Good Bye, from TKBOOKMARKS.."
-
- exit
- }
- # Main Frame
- frame .fr
- pack .fr -fill both -expand 1
- listbox .fr.lb -yscrollcommand { .fr.sb set }
- scrollbar .fr.sb -command {.fr.lb yview} -orient vertical
- # Reading command list
- set fh [open tkbookmarks.ini "r"]
- set intli 0
- set li 0
- while {[gets $fh str] >= 0} {
- set i [string first "=" $str 0]
- set newcmd [string range $str 0 $i-1]
- set newcmdpath [string range $str $i+1 [string length $str]]
- set cmdslbl($intli) $newcmd
- set cmds($intli) $newcmdpath
-
- .fr.lb insert end $cmdslbl($intli)
-
- incr intli
- }
- close $fh
- # DEBUG
- #foreach {cmd cmdpath} [array get cmds "0"] {
- # tk_messageBox -message "Command: $cmd Path: $cmdpath" -type ok
- #}
- #foreach {cmd cmdpath} [array get cmds] {
- # tk_messageBox -message "Command: $cmd Path: $cmdpath" -type ok
- #}
- # ListBox
- bind .fr.lb <<ListboxSelect>> { setLabel [%W curselection]}
- #place .fr.lb -x 20 -y 20
- #place .fr.sb -x 180 -y 20
- # Label
- set lbltext "url to open"
- label .fr.lbl -textvariable lbltext
- # .fr.lbl configure -text "exec. cmd"
- place .fr.lbl -x 20 -y 200
- #pack .fr.lbl.s -side right
- # Exec Button
- button .fr.bexec -text "Open Url" -command { exec firefox --new-tab $lbltext & }
- # pack forget .fr.bexec
- # Close Button
- button .fr.bclose -text "Exit" -command { shutdown }
- place .fr.bclose -x 20 -y 237
- # Set frame and controls position
- grid .fr.lb .fr.sb -sticky nsew
- grid .fr.lb -ipadx 20 -padx 20 -pady 20 -columnspan 2
- grid .fr.sb -ipadx 5 -padx 15 -pady 20
- grid columnconfigure .fr 0 -weight 1
- # Window
- wm title . "Bookmarks"
- image create photo imgobj -file tkbookmarks.png
- wm iconphoto . imgobj
- wm resizable . 0 0
- wm attributes . -fullscreen 0
- wm geometry . 500x330
- wm protocol . WM_DELETE_WINDOW { shutdown }
|