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)