Monday, May 03, 2021

To Close or to Hide, that is the Question.

Sometimes you want make a popup window with some editing or parameter setting functionality which is a bit like a dialog, although floating palette is what immediately comes to mind. 

The problem is though, that whilst it's easy to adjust the window decorations, to remove the delete icons, the window's pull-down menu will still have a close option which will, by default, destroy the window when clicked. 

To disable this, and simply hide the window so that it can be shown again, set the -hideOnDelete option to 1. 

Following this callback scripts can be used to respond to the visibility state of the window, acting as some form of Ok button if necessary.

 

# !/bin/sh
# the next line restarts using tclsh \
exec tclsh "$0" "$@"

package require Gnocl

set txt
[gnocl::text]

set win1 [gnocl::window -child $txt] \
    -title Win1 -x 500 -y 400 -setSize 0.125

# EXTRA OPTIONS
$win configure \
    -hideOnDelete 1 \

    -onHide { puts BYE! } \
    -onShow { puts Hello-Cheeky! }]


# toggle win1 hide/show states
set win2 [gnocl::window -child [gnocl::button -text "Show win1" -onClicked {
    $win1 show
    }] -title Win2 -x 800 -y 400 -setSize 0.125  ]

# revoke the hide on delete status for win1
set win3 [gnocl::window -child [gnocl::button -text "Turn off Hide" -onClicked {
    $win1 configure -hideOnDelete 0
    }] -title Win2 -x 1100 -y 400 -setSize 0.125]



No comments: