Monday, November 08, 2010 at 12:03 AM.
system.verbs.builtins.Frontier.tools.windowTypes.isFileMenuItemEnabled
on isFileMenuItemEnabled (cmd) {
<<Changes:
<<12/2/01; 6:55:44 PM by JES
<<if user.radio.settings.flExpired is defined, and true, disable all commands except quit.
<<Archive
<<2/19/01; 2:46:08 PM by PBS
<<The Close menu item is always enabled.
<<2/2/01; 11:32:23 AM by PBS
<<Save is now always enabled.
<<1/28/01; 11:29:50 AM by DW
<<See comment at the head of system.menus.agent. We use the cached version of window.frontmost, to work around a performance bottleneck.
<<12/26/00; 4:02:39 PM by PBS
<<Always enable View in Browser, Save As HTML, and Save As Plain Text if the frontmost window is an outline.
<<12/15/00; 6:39:02 PM by PBS
<<Enable Save As HTML and Save As Plain Text if the frontmost outline is a local outline.
<<12/14/00; 12:22:23 AM by PBS
<<Enable the View in Browser command if the frontmost window is a local outline or an outline from a Manila site.
<<10/16/00; 7:16:33 PM by PBS
<<Support Open Manila Site item.
<<Open URL... and Update Radio.root are disabled when working offline.
<<09/23/00; 4:22:31 PM by PBS
<<Handle the Work Offline File menu item.
<<08/30/00; 9:58:54 PM by PBS
<<Backtrack on Save-always-enabled.
<<08/30/00; 4:55:37 PM by PBS
<<Save is always enabled -- so you can save the object database, at least.
<<Added case for Open URL command.
<<07/27/00; 10:58:35 PM by PBS
<<Save As is now enabled for outline objects in the odb, such as the Notepad.
<<07/27/00; 3:42:57 PM by PBS
<<This script now gets called for the Update Radio.root File menu item. It always returns true, it's enabled.
<<07/24/00; 12:40:14 PM by PBS
<<Updated for local XML outline documents.
<<Fri, Jul 7, 2000 at 11:00:09 PM by AR
<<Return true if a File menu item should be enabled, false otherwise.
<<Call any scripts in user.pike.commandCallbacks.isMenuItemEnabled
<<If one of the scripts returns true, we're done
if defined (user.radio.settings.flExpired) {
if user.radio.settings.flExpired {
case cmd {
"close" {
return (true)}};
return (false)}};
local (windowFrontmost = window.frontmost ());
on getCursorAddress () {
<<Special version that uses cached version of window.frontmost.
local (adrobject = address (windowFrontmost));
if adrobject == nil {
return (nil)};
if typeOf (adrobject^) == tabletype {
adrobject = table.getCursor ()};
return (adrobject)};
<<scratchpad.ctfilemenuitemenable++
on runCallbacks (adrtable) {
if defined (adrtable^) {
try {
local (adrcallback);
for adrcallback in @user.pike.commandCallbacks.isMenuItemEnabled {
try {
if adrcallback^ (cmd) {
return (true)}}};
return (false)}}};
if defined (user.tools.commandCallbacks.isMenuItemEnabled) {
if runCallbacks (@user.tools.commandCallbacks.isMenuItemEnabled) {
return (true)}};
if system.environment.isRadio {
if defined (user.pike.commandCallbacks.isMenuItemEnabled) {
if runCallbacks (@user.pike.commandCallbacks.isMenuItemEnabled) {
return (true)}}};
local (type, adrtype, isWindowTypesWindow);
if window.attributes.getOne ("type", @type, windowFrontmost) {
isWindowTypesWindow = Frontier.tools.windowTypes.findWindowType (type, @adrtype, windowFrontmost)};
case cmd {
"whatisthis" {
return (true)};
"openurl" {
if defined (tcp.isOffline) {
if tcp.isOffline () {
return (false)}};
return (true)};
"close" {
return (true)}; //PBS 02/19/01: always enabled
<<local (adr = windowFrontmost)
<<return ((adr != "") and (not window.ishidden (adr)))
"save" {
return (true)}; //PBS 02/02/01: save is always enabled
<<local (adr = getCursorAddress ())
<<local (windowType = pike.getWindowType (adr))
<<if windowType == ""
<<return (true)
<<return (pike.isItemDirty (parentOf (adr^)))
"revert" {
if isWindowTypesWindow {
if defined (adrtype^.revert) {
if Frontier.tools.windowTypes.isWindowDirty (windowFrontmost) {
return (true)}}};
return (false)};
<<bundle //old code
<<local (adr = getCursorAddress ())
<<if pike.isLocalOutline (adr) //PBS 07/24/00: check local outlines
<<return (pike.isItemDirty (parentOf (adr^)))
<<local (windowType = pike.getWindowType (adr))
<<case windowType
<<"savedStories"
<<"advancedItems"
<<return (pike.isItemDirty (parentOf (adr^)))
<<"newStories"
<<return (false)
<<return (false)
"viewinbrowser";
"saveashtml";
"saveasplaintext" { //PBS 12/15/00: enable all outlines
if isWindowTypesWindow {
if defined (adrtype^.viewInBrowser) {
return (true)}};
local (adr = getCursorAddress ());
case typeOf (adr^) {
scriptType;
outlineType {
return (true)}}};
"saveas"; //PBS 07/24/00: Save As now is the same as Change Title
<<return (true) //uncomment this line to make the Save As command equivalent to the Export Object command.
"changetitle" {
if isWindowTypesWindow {
if defined (adrtype^.saveAs) {
return (true)}};
local (adr = getCursorAddress ());
if typeOf (adr^) == outlineType {
return (true)};
return (false)};
<<bundle //old code
<<local (adr = getCursorAddress ())
<<if pike.isLocalOutline (adr) //PBS 07/24/00
<<return (true)
<<case pike.getWindowType (adr)
<<"savedStories"
<<"newStories"
<<return (true)
<<"advancedItems"
<<return (false)
<<if typeOf (adr^) == outlineType
<<return (true)
<<return (false)
"update" {
if defined (tcp.isOffline) {
if tcp.isOffline () {
return (false)}};
return (true)};
"workoffline" { //PBS 09/23/00: work offline menu item
if defined (tcp.setOffline) {
return (true)}};
"openmanilasite" { //PBS 10/16/00: enable/disable Open Manila Site command
if defined (tcp.isOffline) {
if tcp.isOffline () {
return (false)}};
return (true)}};
return (false)};
bundle { //debugging
isFileMenuItemEnabled ("revert")}
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.