Hello!
I want to create a messagebox whenever the user wants to destroy the window
(e.g. <Alt-F4> or the 'x' in the right top corner) and ask if a
modified file
should be saved or not.
If 'cancel' is chosen then nothing should happen and the windows still
should be
existing. This doesn't work. When I press cancel the window will be
destroyed
although.
I also implemented a menu item 'Quit' where I show the same messagebox
and there
it works fine.
How can I make it work or is there another method to do this? I'm very new
to R
and tcl/tk.
Here is part of my code:
exitProg <- function()
{
returnVal <- tkmessageBox(title="Question",
message="Save modified file?",
icon="question", type="yesnocancel",
default="yes")
returnVal <- as.character(returnVal)
if( returnVal == "yes" )
{
# save file
value <- saveFile()
# destroy window when save was successfull
if( value == 1 )
tkdestroy(mw)
}
if( returnVal == "no" )
{
tkdestroy(mw)
}
if( returnVal == "cancel" )
{
# do nothing
cat("Cancel was pressed.\n")
}
}
# bind the destroy event in order to show a message box
tkbind(mw,"<Destroy>",exitProg)
# menu item which works fine
tkadd(fileMenu, "command", label="Quit",
command=exitProg)
Thank you.
Franco Mendolia
Perhaps Destroy key is unknown by Tcl; it is not in the Event modifiers table in Welch Book... But try with <Control-L> or <Shift-Control_L>, it runs (but not with <Control_L-Shift> ??). Use xmodmap to see the current mappings from keys to modifiers. Jean Coursol On Wed, 2 Aug 2006, Franco Mendolia wrote:> Hello! > > I want to create a messagebox whenever the user wants to destroy the window > (e.g. <Alt-F4> or the 'x' in the right top corner) and ask if a modified file > should be saved or not. > > If 'cancel' is chosen then nothing should happen and the windows still should be > existing. This doesn't work. When I press cancel the window will be destroyed > although. > > I also implemented a menu item 'Quit' where I show the same messagebox and there > it works fine. > > How can I make it work or is there another method to do this? I'm very new to R > and tcl/tk. > > Here is part of my code: > > > exitProg <- function() > { > returnVal <- tkmessageBox(title="Question", > message="Save modified file?", > icon="question", type="yesnocancel", default="yes") > > returnVal <- as.character(returnVal) > > if( returnVal == "yes" ) > { > # save file > value <- saveFile() > # destroy window when save was successfull > if( value == 1 ) > tkdestroy(mw) > } > if( returnVal == "no" ) > { > tkdestroy(mw) > } > if( returnVal == "cancel" ) > { > # do nothing > cat("Cancel was pressed.\n") > } > } > > # bind the destroy event in order to show a message box > tkbind(mw,"<Destroy>",exitProg) > > # menu item which works fine > tkadd(fileMenu, "command", label="Quit", command=exitProg) > > > > Thank you. > > Franco Mendolia > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >
Hi!> Perhaps Destroy key is unknown by Tcl; it is not in the > Event modifiers table in Welch Book...I think the Destroy key is known, because when destroying the window with Alt-F4 or the littel x in the topcorner my function exitProg is executed. What I actually search for is a possibility to let the window not be destroyed when user closes the window by Alt-F4 or the little x. Franco Mendolia>> exitProg <- function() >> { >> returnVal <- tkmessageBox(title="Question", >> message="Save modified file?", >> icon="question", type="yesnocancel", default="yes") >> >> returnVal <- as.character(returnVal) >> >> if( returnVal == "yes" ) >> { >> # save file >> value <- saveFile() >> # destroy window when save was successfull >> if( value == 1 ) >> tkdestroy(mw) >> } >> if( returnVal == "no" ) >> { >> tkdestroy(mw) >> } >> if( returnVal == "cancel" ) >> { >> # do nothing >> cat("Cancel was pressed.\n") >> } >> } >> >> # bind the destroy event in order to show a message box >> tkbind(mw,"<Destroy>",exitProg) >> >> # menu item which works fine >> tkadd(fileMenu, "command", label="Quit", command=exitProg)