Monday, November 08, 2010 at 12:03 AM.
system.verbs.builtins.Frontier.tools.windowTypes.commands.quit
on quit () { bundle { //set quitting flag if not defined (temp.Frontier) { new (tableType, @temp.Frontier)}; temp.Frontier.closingDown = true}; on closeWindow (adr) { if defined (adr^) { //don't check the About window or the Find & Replace dialog if table.getRootAddress (adr) == adr { //hide the window window.hide (adr); return (true)}}; return (Frontier.tools.windowTypes.commands.close (adr))}; //this also calls callbacks if not window.visit (@closeWindow) { return (false)}; local (rootPath = window.getFile (@root)); on closeDatabase (f) { fileMenu.save (f); if f != rootPath { if not system.callbacks.closeWindow (@[f]) { return (false)}; fileMenu.close (f)}; return (true)}; if not table.visitOpenDatabases (@closeDatabase, true) { return (false)}; filemenu.save (); filemenu.quit (); return (true); }; <<bundle //old code <<Quit Radio UserLand. <<Changes: <<Thu, Oct 26, 2000 at 7:05:05 PM by PBS <<Always save each database, no matter what callbacks return. <<Don't use Frontier.getFilePath, since it may return a gdb. Construct the path to the current system root. <<Visit open databases in reverse order -- since we're removing items from the list. <<Set a quitting flag in the temp table so other threads know the app is shutting down. <<12/29/00; 4:06:10 AM by JES <<Bug fix: delete outlines in sub-tables of user.pike.sites before deleting user.pike.sites, to prevent an 'outline' undefined error on saving Radio.root, when quitting with open, un-saved Manila messages/templates. <<01/05/01; 9:28:22 PM by JES <<Changed handling of the closeWindow callback so that top-level guest database windows would be handled correctly. <<bundle //set quitting flag <<if not defined (temp.Frontier) <<new (tableType, @temp.Frontier) <<temp.Frontier.closingDown = true <<on closeChildWindow (adr) <<if defined (adr^) <<if table.getRootAddress (adr) != adr <<if system.callbacks.closeWindow (adr) <<try <<if adr == table.getRootAddress (adr) // hide the window instead of closing it <<window.hide (adr) <<else <<return (window.close (adr)) <<return (true) // continue through the rest of the windows <<else <<if adr == table.getRootAddress (adr) //01/05/01 JES: don't stop if the window is the top level of a guest database. <<return (true) <<return (false) <<return (true) <<if not window.visit (@closeChildWindow) <<return (false) <<if defined (user.pike.sites) //clean up our temporary storage area; 12/29/00 JES: do this before closing databases <<bundle //12/29/00 JES: delete outlines in newStories, savedStories and advancedItems sub-tables of all of the site tables -- prevents an error window at shutdown. <<local (adrSite) <<on deleteOutlinesFromSubtables (adrTable) <<if defined (adrTable^) <<local (adrSubTable) <<for adrSubTable in adrTable <<if defined (adrSubTable^.outline) <<delete (@adrSubTable^.outline) <<for adrSite in @user.pike.sites <<local (adrStory) <<deleteOutlinesFromSubtables (@adrSite^.advancedItems) <<deleteOutlinesFromSubtables (@adrSite^.newStories) <<deleteOutlinesFromSubtables (@adrSite^.savedStories) <<table.emptyTable (@user.pike.sites) //12/29/00 JES: this will eventually go away, in favor of deleting the story tables. <<local (rootPath = window.getFile (@root)) //PBS 10/26/00: get path to system root <<on closeDatabase (f) <<fileMenu.save (f) <<if f != rootPath <<if not system.callbacks.closeWindow (@[f]) //01/05/01 JES: commented out -- the callbacks have already been called. <<return (false) <<fileMenu.close (f) <<return (true) <<if not table.visitOpenDatabases (@closeDatabase, true) //PBS 10/26/00: visit in reverse order <<return (false) <<filemenu.save () <<filemenu.quit () <<return (true) bundle { // debugging quit ()}
This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.