variable toplevel_count 0 variable toplevel_tabs variable toplevel_classes package require logger set log [logger::init tclircc::ui] ${log}::debug "loading tk" package require Tk wm withdraw . # TODO: tray handling # use tktray on linux, use TWAPI on windows (packaged with magicsplat) proc tab_update {window} { variable toplevel_tabs if ![llength [set toplevel_tabs($window)]] { destroy $window.tabs destroy $window.msg1 $window.msg2 wm title $window "tclircc" label $window.msg1 -text "No tabs open!" label $window.msg2 -text "Use the titlebar to open a new tab." pack configure $window.msg1 -side top -pady {20 10} pack configure $window.msg2 -side top -pady {10 50} -padx {50} } } proc mk_toplevel {varname {takefocus 0}} { variable toplevel_count variable toplevel_tabs variable version upvar $varname window set window .win$toplevel_count toplevel $window -takefocus $takefocus incr toplevel_count ### MENUBAR ### menu $window.menu $window configure -menu "$window.menu" menu $window.menu.conn menu $window.menu.irc menu $window.menu.plugin menu $window.menu.me $window.menu.me add command -label "About" -command [subst { tk_messageBox -title "About tclircc" \ -message "tclircc $version" \ -detail "by Aleteoryx\nhttps://amehut.dev/~aleteoryx/tclircc\n\nThis software is in the public domain." \ -type ok \ -parent $window }] $window.menu add cascade -label "chat" -menu $window.menu.irc $window.menu add cascade -label "connection" -menu $window.menu.conn $window.menu add cascade -label "plugins" -menu $window.menu.plugin $window.menu add cascade -label "tclircc" -menu $window.menu.me ### TABS ### set toplevel_tabs($window) {} tab_update $window } ${log}::debug "ui init done!"