Foundation 6 Developer Reference

Methods

765 current Foundation methods. Internal methods are implementation details. Hooks and generated host methods are excluded.

Fnd_Art_AboutShared
Project Method: Fnd_Art_About

Displays the About Box dialog in a new process.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Art_CancelShared
Project Method: Fnd_Art_Cancel

Signals the Startup dialog to close.

Sets Form.CloseRequested, then cancels only once the dialog's minimum display
  time has elapsed — so a startup screen cannot be dismissed before it has
  been on screen long enough to read. A request arriving earlier sets the flag
  and leaves the dialog to close itself.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Art_InfoShared

#DECLARE($request_t : Text)->$reply_t : Text

Project Method: Fnd_Art_Info (label) --> Text

Returns requested information.  See the Fnd_Gen_ComponentInfo
  method for more information.

Access: Shared

Parameters:
  $request_t : Text : Info desired ("version" or "name")

Returns:
  $reply_t : Text : Response
Fnd_Art_InitInternal
Project Method: Fnd_Art_Init

Initialises the process and interprocess variables the Fnd_Art routines use.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Art_SetAboutFormShared

#DECLARE($inFormName_t : Text)->$aboutFormName_t : Text

Project Method: Fnd_Art_SetAboutForm {(form name)} -> form name

Allows the developer to specify the form to display when About is selected.

Access: Shared

Parameters:
  $inFormName_t : Text : The name of the form (optional)

Returns:
  $aboutFormName_t : Text : The name of the form
Fnd_Art_SetBestFontSizeShared

#DECLARE($objectName_t : Text; $startingFontSize_i : Integer)

Project Method: Fnd_Art_SetBestFontSize (object name; starting font size)

Modifies the object so the text fits within the current object size.
Goes down from the starting font size.

Access: Shared

Parameters:
  $objectName_t : Text : The form object name
  $startingFontSize_i : Longint : The largest possible size

Returns: Nothing
Fnd_Art_SetStartupDialogFormShared

#DECLARE($inFormName_t : Text)->$startupFormName_t : Text

Project Method: Fnd_Art_SetStartupDialogForm (form name) -> form name

Allows the developer to specify the form to display during startup.

Access: Shared

Parameters:
  $inFormName_t : Text : The name of the form

Returns: Nothing
Fnd_Art_StartupDialogShared
Project Method: Fnd_Art_StartupDialog

Displays the startup window in a new process.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Art_StartupDialogCloseShared
Project Method: Fnd_Art_StartupDialogClose

Closes the startup message.  Safe to call even if no startup message was displayed.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Art_StartupDialogFormMethodShared
Project Method: Fnd_Art_StartupDialogFormMethod

Must be called from the startup dialog's form method, even
  if a custom form is used.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Bttn_AlternativePicturePathShared

#DECLARE($inPath_t : Text)->$bttnAlternativePicturePath_t : Text

Project Method: Fnd_Bttn_AlternativePicturePath {(Path)} --> Text

Foundation normally creates buttons based on icons in the
 Fnd_Bttn_Pictures folder within the component resource folder.
 This allows the developer to specify an alternative location
 for example in the host resource folder.
 Foundation will first of all check this location first
 and then the  Fnd_Bttn_Pictures folder in component resoure folder

Access: Shared

Parameters:
  $inPath_t : Text : The Path (optional)

Returns:
  $bttnAlternativePicturePath_t : Text : The path
Fnd_Bttn_CacheMaximumSizeShared

#DECLARE($inNewCacheSize_i : Integer)->$bttnCacheMaximumSize_i : Integer

Project Method: Fnd_Bttn_CacheMaximumSize {(New Cache size)}  --> longint

Allows you to get and set the maximum cache size
  The default (and minimum) is 2 MB (2048*1024)

Access: Shared

Parameters:
  $inNewCacheSize_i : longint : The new cache size

Returns:
  $bttnCacheMaximumSize_i : longint : The cache size
Fnd_Bttn_Cache_GarbageCollecInternal
Project Method: Fnd_Bttn_Cache_GarbageCollec

If the cache goes over it's maximum size, this method deletes the oldest images
until it's back within it's limit.  This is called whenever an image is added to
the cache.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Bttn_Cache_Image_AddShared

#DECLARE($compositeName_t : Text; $image_pic : Picture)

Project Method: Fnd_Bttn_Cache_Image_Add (composite name; image)

Adds an image to the RAM cache of button images.

Access: Private

Parameters:
  $compositeName_t : Text : The name returned by the Fnd_Bttn_GetPictureName function
  $image_pic : Picture : The picture to add to the cache

Returns: Nothing
Fnd_Bttn_Cache_Image_DeleteShared

#DECLARE($compositeName_t : Text)

Project Method: Fnd_Bttn_Cache_Image_Delete (composite image name)

Deletes an image from the cache using its composite name as the key.

Access: Private

Parameters:
  $compositeName_t : Text : The image name returned by Fnd_Bttn_GetPictureName

Returns: Nothing
Fnd_Bttn_Cache_Image_GetShared

#DECLARE($name_t : Text)->$image_pic : Picture

Project Method: Fnd_Bttn_Cache_Image_Get (composite name) --> Picture


Returns an image from the cache using its composite name.

Modified from Mark's original design. This routine no longer displays an alert

  if the image isn't found in the cache.  It just returns a blank image, so the

  developer needs to check to see if an image was returned.


Access: Private


Parameters:

  $name_t : Text : The name returned by the Fnd_Bttn_GetPictureName function


Returns:

  $image_pic : Picture : The image from the cache
Fnd_Bttn_Cache_StartupShared
Project Method: Fnd_Bttn_Cache_Startup

These arrays keep track of those Rollovers we've created in the application.  We
  will only be rollovers as well need them, then not creating the picture again.
  This allows us to easily switch languages and have all the text in the rollovers
  be easily converted without storing loads of pictures in different languages.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Bttn_ColorToStringShared

#DECLARE($color_i : Integer)->$color_t : Text

Project Method: Fnd_Bttn_ColorToString (rgb color) --> Text

Converts a 4D RGB color value to a CSS2-compatible string in the format "#rrggbb".

Access: Private

Parameters:
  $color_i : Longint : The 4D RGB color

Returns:
  $color_t : Text : The color string
Fnd_Bttn_CreateBackgroundsShared
Project Method: Fnd_Bttn_CreateBackgrounds


Because of the time to do the picture maths for the middle bit of the button, we

  will pre-build different sized middle slices and store them in an array.


Access: Private


Parameters: None


Returns: Nothing
Fnd_Bttn_CreateButtonShared

#DECLARE($button_ptr : Pointer; $picture_ptr : Pointer; $iconName_t : Text; $label_t : Text)

Project Method: Fnd_Bttn_CreateButton (->button object; ->picture variable; icon name; label)

Helps the developer create and size a picture button created with the
  Foundation Buttons component.
Creates the image needed from the icon name and label, assigns it to the picture
  variable, then assigns the picture variable to the button.

Access: Shared

Parameters:
  $button_ptr : Pointer : The form button object
  $picture_ptr : Pointer : A picture variable
  $iconName_t : Text : An icon name
  $label_t : Text : Any text

Returns: Nothing
Fnd_Bttn_GetIconShared

#DECLARE($inIconName_t : Text; $inState_t : Text)->$theIcon_pic : Picture

Project Method: Fnd_Bttn_GetIcon (name{; state}) --> Picture

This method just wraps the GET PICTURE FROM LIBRARY command, but if
  you wanted to store your pictures in resources or some other way, you
  could modify this command for getting the pictures.

Access: Private

Parameters:
  $inIconName_t : Text : The picture name
  $inState_t : Text : The icon state: "selected" or "disabled" (optional)

Returns:
  $theIcon_pic : Picture : The picture
Fnd_Bttn_GetPictureShared

#DECLARE($inIconName_t : Text; $buttonLabel_t : Text; $inVariation_t : Text)->$rolloverImage_pic : Picture

Project Method: Fnd_Bttn_GetPicture (icon name; button label{; variation}) --> Picture


This routine returns a picture of a rollover based on the parameters
  you pass for the icon, text, size and type.  If the picture already
  exists in the Cache, it is retreived from there instead of being
  generated again.

Supports these variations:
  "current" : The currently selected button (Mac OS X Prefs style)

Access: Shared

Parameters:
  $inIconName_t : Text : The name of the icon to use from the 4D picture library
  $buttonLabel_t : Text : The label for the button
  $inVariation_t : Text : The variaton name (optional)

Returns:
  $rolloverImage_pic : Picture : A picture to use for a 4D picture rollover button
Fnd_Bttn_GetPictureNameShared

#DECLARE($iconName_t : Text; $buttonLabel_t : Text; $inVariation_t : Text)->$rolloverPictureName_t : Text

Project Method: Fnd_Bttn_GetPictureName (icon name; label{; variation}) --> Text


Creates a composite name for the picture which will be used to

  reference it quickly in the cache.


Access: Shared


Parameters:

  $iconName_t : Text : The button icon name

  $buttonLabel_t : Text : The button label name

  $inVariation_t : Text : The variaton name (optional)


Returns:

  $rolloverPictureName_t : Text : The cache picture name
Fnd_Bttn_GetPictureWidthShared

#DECLARE($inIconName_t : Text; $buttonLabel_t : Text; $variation_t : Text)->$width_i : Integer

Project Method: Fnd_Bttn_GetPictureWidth (icon; text{; variation}) --> Number

Returns the width of the rollover picture that uses the specified icon and text.

Access: Shared

Parameters:
  $inIconName_t : Text : The name of the icon
  $buttonLabel_t : Text : The button label
  $variation_t : Text : The button variation ("current" or "menu")

Returns:
  $width_i : Longint : The width of the picture button.
Fnd_Bttn_GetSizedIconNameShared

#DECLARE($inIconName_t : Text)->$iconName_t : Text

Project Method: Fnd_Bttn_GetSizedIconName (icon name) -> Text

Returns the name of the icon with the size embeded.

Access: Private

Parameters:
  $inIconName_t : Text : The icon name without the size

Returns:
  $iconName_t : Text : The icon name with the size
Fnd_Bttn_InfoShared

#DECLARE($request_t : Text)->$reply_t : Text

Project Method: Fnd_Bttn_Info (label) --> Text

Returns requested information.  See the Fnd_Gen_ComponentInfo
  method for more information.

Access: Shared

Parameters:
  $request_t : Text : Info desired ("version" or "name")

Returns:
  $reply_t : Text : Response
Fnd_Bttn_InitInternal
Project Method: Fnd_Bttn_Init

Initializes the toolbar roll-over variables.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Bttn_LibraryToResourceShared
Project Method: Fnd_Bttn_LibraryToResource

Takes all the pictures in the 4D Picture Library and writes them to
 a separate .png file for each picture in the library in the
 4D Resources folder in a folder named Fnd_Bttn_Pictures.
Used by Fnd_Bttn subcomponent to allow developer to easily edit
 or replace the icons used throughout Foundation.
Special thanks to John Craig for this implementation.

Access: Shared

Parameters:

Returns:
Fnd_Bttn_MakeBackgroundShared

#DECLARE($inWidth_i : Integer)->$background_pic : Picture

Project Method: Fnd_Bttn_MakeBackground (width) --> Picture

Builds a button background to the specified width.

Access: Private

Parameters:
  $inWidth_i : Longint : The width needed

Returns:
  $background_pic : Picture : The buton background image of the right width
Fnd_Bttn_MakeButtonShared

#DECLARE($iconName_t : Text; $buttonText_t : Text; $variation_t : Text)->$rollover_pic : Picture

Project Method: Fnd_Bttn_MakeButton (icon name; button label; variation) --> Picture

Returns a picture of the button * 4 for use as a 4D picture button.
Assumes the button style has been previously defined.
This isn't called directly. Call Fnd_Bttn_GetPicture. It will check
  the cache first, then call this only if necessary.

Supports these variations:
  "" : A standard button
  "current" : The currently selected button (Mac OS X Prefs style)
  "menu" : Adds a menu indicator triangle

Access: Private

Parameters:
  $iconName_t : Text : The name of the icon to use from the 4D picture library
  $buttonText_t : Text : The label for the button
  $variation_t : Text : The variation name

Returns:
  $rollover_pic : Picture : A picture to use for a 4D picture rollover button
Fnd_Bttn_MakeCrntBackgroundShared

#DECLARE($inWidth_i : Integer)->$background_pic : Picture

Project Method: Fnd_Bttn_MakeCrntBackground (width) --> Picture

Returns the background to use with the currently selected "Pref" style button.
Similar to Fnd_Bttn_MakeBackground, but designed for the background
  of the currently selected button (Mac OS X Prefs style).
This routine also isn't as optimized as Fnd_Bttn_MakeBackground.

Access: Private

Parameters:
  $inWidth_i : Longint : The required width of the background

Returns:
  $background_pic : Picture : The background picture
Fnd_Bttn_MakeIconPictureShared

#DECLARE($iconName_t : Text)->$icons_pic : Picture

Project Method: Fnd_Bttn_MakeIconPicture (icon name) --> Picture


Creates a picture containing the 4 icons arranged for the rollover button,

  spaced according to the button height.


Access: Private


Parameters:

  $iconName_t : Text : The name of the icon


Returns:

  $icons_pic : Picture : A picture of the icon over the background
Fnd_Bttn_MakeMenuIndicatorPicShared

#DECLARE()->$indicator_pic : Picture

Project Method: Fnd_Bttn_MakeMenuIndicatorPic --> Picture

Creates a picture of the specified label.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Bttn_MakeTextPictureShared

#DECLARE($buttonText_t : Text)->$combinedText_pic : Picture

Project Method: Fnd_Bttn_MakeTextPicture (button label) --> Picture

Creates a picture of the specified label.

Access: Private

Parameters:
  $buttonText_t : Text : The label for the button

Returns:
  $combinedText_pic : Picture : A picture of the label (x4)
Fnd_Bttn_PlatformShared

#DECLARE($requestedPlatform_t : Text)->$selectedPlatform_t : Text

Project Method: Fnd_Bttn_Platform ({platform name}) --> Text

Sets and gets the toolbar platform name.
Can be:
  "Win"
  "Mac"
  "Auto"
Only "Mac" or "Win" will be returned.

Access: Shared

Parameters:
  $requestedPlatform_t : Text : The platform to use (optional)

Returns:
  $selectedPlatform_t : Text : The selected platform
Fnd_Bttn_SetBackgroundPictShared

#DECLARE($left_pic : Picture; $middle_pic : Picture; $right_pic : Picture; $selectedLeft_pic : Picture; $selectedMiddle_pic : Picture; $inSelectedRight_pic : Picture)

Project Method: Fnd_Bttn_SetBackgroundPict (left, middle, right{; pref left; pref middle; pref right})


Call this to specify the images to use for the button background.


Access: Shared


Parameters:

  $left_pic : Picture : The left edge of the button

  $middle_pic : Picture : The middle of the button (generally 1 pixel wide)

  $right_pic : Picture : The right edge of the button

  $selectedLeft_pic : Picture : The left edge of the currently selected button (optional)

  $selectedMiddle_pic : Picture : The middle of the currently selected button (optional)

  $inSelectedRight_pic : Picture : The right edge of the currently selected button (optional)


Returns: Nothing
Fnd_Bttn_SetTextPropertiesShared

#DECLARE($fontName_t : Text; $fontSize_i : Integer; $fontStyle_i : Integer)

Project Method: Fnd_Bttn_SetTextProperties (font name; font size; font style)


Sets the text properties for the button labels.


Access: Shared


Parameters:

  $fontName_t : Text : The font name

  $fontSize_i : Longint : The font size

  $fontStyle_i : Longint : The font style (use 4D constants)


Returns: Nothing
Fnd_Bttn_SetVariablesShared
Project Method: Fnd_Bttn_SetVariables

Updates the toolbar variables depending on the current platform, size, and style settings.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Bttn_StyleShared

#DECLARE($requestedStyle_t : Text)->$selectedStyle_t : Text

Project Method: Fnd_Bttn_Style ({Style name}) --> Text

Sets and gets the toolbar style name.
Can be:
  "Large"
  "Prefs"
  "Small1"
  "Small2"

Access: Shared

Parameters:
  $requestedStyle_t : Text : The style to use (optional)

Returns:
  $selectedStyle_t : Text : The selected style
Fnd_Bttn_TextToPictShared

#DECLARE($text_t : Text; $fontName_t : Text; $fontSize_i : Integer; $fontStyle_i : Integer; $width_i : Integer; $height_i : Integer; $inFontColor_i : Integer)->$image_pic : Picture

Project Method: Fnd_Bttn_TextToPict (text;fontName;fontSize;fontFace;width;height{;color}) --> Picture

Converts a text string to a picture of the text.

Access: Private

Parameters:
  $text_t : Text : Text to make into picture

Returns:
  $image_pic : Picture : A picture of the text
Fnd_Cmpt_GetBooleanValueShared

#DECLARE($variableName_t : Text) : Boolean

Project Method: Fnd_Cmpt_GetBooleanValue (name of a Boolean variable) --> Boolean

Returns the value of a Boolean variable (without actually using
  the variable in this component).

Access: Shared

Parameters:
  $variableName_t : Text : The name of a Boolean variable

Returns:
  $0 : Boolean : True if the Boolean is True
Fnd_Cmpt_GetLongintValueShared

#DECLARE($variableName_t : Text)->$longintValue_i : Integer

Project Method: Fnd_Cmpt_GetLongintValue (name of an integer variable) --> Longint

Returns the value of a long integer (without actually using
  the variable in this component).

Access: Shared

Parameters:
  $variableName_t : Text : The name of a Longint variable

Returns:
  $longintValue_i : Longint : Returns the value of the longint
Fnd_Cmpt_InfoShared

#DECLARE($request_t : Text)->$reply_t : Text

Project Method: Fnd_Cmpt_Info (label) --> Text

Returns requested information.  See the Fnd_Gen_ComponentInfo
  method for more information.

Access: Shared

Parameters:
  $request_t : Text : Info desired ("version" or "name")

Returns:
  $reply_t : Text : Response
Fnd_Cmpt_InitInternal
Project Method: Fnd_Cmpt_Init

Initializes both the process and interprocess variables used by
  the Foundation compatibility routines.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Cmpt_SetBooleanValueShared

#DECLARE($variableName_t : Text; $booleanValue_b : Boolean)

Project Method: Fnd_Cmpt_SetBooleanValue (variable name; Boolean value)

Allows us to set a Boolean variable without actually using the variable name
  in this component.

Access: Shared

Parameters:
  $variableName_t : Text : The name of the variable
  $booleanValue_b : Boolean : The value to set it to

Returns: Nothing
Fnd_Cmpt_SetLongintValueShared

#DECLARE($variableName_t : Text; $longintValue_i : Integer)

Project Method: Fnd_Cmpt_SetLongintValue (variable name; longint value)

Allows us to set a Longint variable without actually using the variable name
  in this component.

Access: Shared

Parameters:
  $variableName_t : Text : The name of the variable
  $longintValue_i : Longint : The value to set it to

Returns: Nothing
Fnd_Data_EmailAddressErrorShared

#DECLARE($inEmailAddress_t : Text; $inDescription_ptr : Pointer)->$errorNumber_i : Integer

Project Method: Fnd_Data_EmailAddressError (email address{; ->description}) --> Longint

Checks Email address and returns an error number if the email address doesn't have a valid format.

Pass a pointer to a text variable as the second parameter to receive a
  description of the problem. It is empty when the address is valid.

```
  $error_i:=Fnd_Data_EmailAddressError("john smith@here.com"; ->$why_t)
  //  1, and $why_t is "There is a space in the address."
```

Access: Shared

Parameters:
  $inEmailAddress_t : Text : The email address to check
  $inDescription_ptr : Pointer : Gets a description of the problem (optional)

Returns:
  $errorNumber_i : Longint : Error number (0=valid format, 1=invalid format)

Based on code posted to the 4D NUG by Owen Watson<owen.watson@paradise.net.nz>.
Fnd_Data_FormatBypassShared

#DECLARE()->$bypass_b : Boolean

Project Method: Fnd_Data_FormatBypass --> Boolean

Returns True if the data entry formatting routine should be bypassed. Usually this
  will be because the user is holding down the bypass key, but there may be
  other reasons.
Sets Fnd.Data.formatError to -1 if True is returned.

Access: Shared

Parameters: None

Returns:
  $bypass_b : Boolean : True if the routine should be bypassed
Fnd_Data_FormatBypassKeyShared

#DECLARE($inKey_i : Integer)->$userBypassKeyMask_i : Integer

Project Method: Fnd_Data_FormatBypassKey ({key}) --> Longint

Pass a key mask to set a new bypass key.
Pass 0 to disable the bypass option.
Pass 1 to always bypass the format routines (turn off formatting).
Returns the currently set bypass key.
Bypass key can be any of these 4D constants:
  Option key mask (default)
  Command key mask
  Control key mask
  Shift key mask
  Caps lock key mask

The setting is shared, so it applies to every process in the host.

Access: Shared

Parameters:
  $inKey_i : Longint : The new bypass key mask (optional)

Returns:
  $userBypassKeyMask_i : Longint : The current bypass key mask
Fnd_Data_FormatErrorShared

#DECLARE()->$lastFormatError_i : Integer

Project Method: Fnd_Data_FormatError --> Longint

Allows the developer to detect if any of the data formatting routines
  had a problem trying to format data.

```
   0  The last call formatted the value
   1  The last call could not work out how to format the value
  -1  The last call was bypassed because the bypass key was down
```

The value is per process, and each formatting method resets it before it
  starts, so read it immediately after the call it belongs to.

Access: Shared

Parameters: None

Returns:
  $lastFormatError_i : Longint : Last formatting error
Fnd_Data_FormatPhoneShared

#DECLARE($inPhoneNumber_t : Text; $inStyle_v : Variant)->$formattedPhone_t : Text

Project Method: Fnd_Data_FormatPhone (phone number{; style | options}) --> Text

Formats a phone number. With no second parameter the number is formatted the
  US way, 000-000-0000 or 000-0000.
The number is not formatted if the user holds down the Option/Alt key (or
  other key that's been specified by the developer).
If it can't work out how to format the number it returns it unchanged and
  sets Fnd.Data.formatError to 1, which Fnd_Data_FormatError reports.

The second parameter has two forms:

1. A Longint. Accepted and ignored, giving US formatting.
2. An object, which is how a country or an explicit format is chosen.

```
  Fnd_Data_FormatPhone("0412345678"; {country: "AU"})    -->  (0412) 345 678
  Fnd_Data_FormatPhone("0298765432"; {country: "AU"})    -->  (02) 9876 5432
  Fnd_Data_FormatPhone("5551234"; {format: "000.0000"})  -->  555.1234
```

Object properties, with the default applied when the property is absent:

```
  country  Text  "US" or "AU". Defaults to "US"
  format   Text  An explicit 4D number format, which overrides country
  areaCode Text  Prefixed to an 8 digit Australian number. Defaults to none
```

An Australian number of 9 digits is taken to have lost its leading zero, and
  the zero is put back.

Access: Shared

Parameters:
  $inPhoneNumber_t : Text : The phone number to format
  $inStyle_v : Variant : A legacy style Longint, or an options object (optional)

Returns:
  $formattedPhone_t : Text : The formatted phone number
Fnd_Data_FormatPostalCodeShared

#DECLARE($inPostalCode_t : Text; $inStyle_v : Variant)->$formattedPostalCode_t : Text

Project Method: Fnd_Data_FormatPostalCode (postal code{; style | options}) --> Text

Formats a text value into a postal code. If it can't work out how to format
  it then it returns the postal code unchanged and sets Fnd.Data.formatError
  to 1, which Fnd_Data_FormatError reports.
Anything that is not a letter or a digit is removed first.

With no second parameter the country is deduced from the value: five or nine
  digits is a US ZIP code, and a six character
  letter-digit-letter-digit-letter-digit value is Canadian.

The second parameter has two forms:

1. A Longint. Accepted and ignored.
2. An object naming the country, which skips the deduction.

```
  Fnd_Data_FormatPostalCode("k1a0b1"; {country: "CA"})  -->  K1A 0B1
  Fnd_Data_FormatPostalCode("3000"; {country: "AU"})    -->  3000
```

Object properties, with the default applied when the property is absent:

```
  country  Text  "US", "CA" or "AU". Defaults to deducing it from the value
```

Access: Shared

Parameters:
  $inPostalCode_t : Text : The postal code to format
  $inStyle_v : Variant : A legacy style Longint, or an options object (optional)

Returns:
  $formattedPostalCode_t : Text : The formatted postal code
Fnd_Data_FormatTextShared

#DECLARE($inTheText_t : Text; $inOptions_v : Variant)->$theText_t : Text

Project Method: Fnd_Data_FormatText (text{; options}) --> Text

Strips any extra spaces before and after the text, removes double spaces
  within the text, then capitalizes the first letter of each word, unless the
  user holds down the Option/Alt key (or other bypass key that's been
  specified by the developer).

The optional second parameter is an object, for the cases where title case is
  the wrong answer — a surname entered in capitals, a product code, an email
  address that must stay lowercase.

```
  Fnd_Data_FormatText("  john   smith ")                  -->  John Smith
  Fnd_Data_FormatText("MacDonald"; {case: "none"})        -->  MacDonald
  Fnd_Data_FormatText("Me@Here.COM"; {case: "lower"})     -->  me@here.com
```

Object properties, with the default applied when the property is absent:

```
  case        Text     "title", "upper", "lower" or "none". Defaults to "title"
  stripSpaces Boolean  Whether to strip the spaces first. Defaults to True
```

Access: Shared

Parameters:
  $inTheText_t : Text : The text to capitalize
  $inOptions_v : Variant : An options object (optional)

Returns:
  $theText_t : Text : The capitalized text
Fnd_Data_FormatWebURLShared

#DECLARE($inURL_t : Text; $inOptions_v : Variant)->$formattedURL_t : Text

Project Method: Fnd_Data_FormatWebURL (url{; options}) --> Text

Formats the URL. A URL with no scheme gets https.
The URL is not formatted if the user holds down the Option/Alt
  key (or other key that's been specified by the developer).

```
  Fnd_Data_FormatWebURL("example.com")                      -->  https://example.com/
  Fnd_Data_FormatWebURL("example.com"; {scheme: "http"})    -->  http://example.com/
```

Object properties, with the default applied when the property is absent:

```
  scheme  Text  The scheme for a URL that has none. Defaults to "https"
```

Access: Shared

Parameters:
  $inURL_t : Text : The URL to format.
  $inOptions_v : Variant : An options object (optional)

Returns:
  $formattedURL_t : Text : The formatted URL.
Fnd_Data_InfoShared

#DECLARE($request_t : Text)->$reply_t : Text

Project Method: Fnd_Data_Info (label) --> Text

Returns requested information.  See the Fnd_Gen_ComponentInfo method
  for more information.

Access: Shared

Parameters:
  $request_t : Text : Info desired ("version" or "name")

Returns:
  $reply_t : Text : Response
Fnd_Data_InitInternal
Project Method: Fnd_Data_Init

Initializes the state used by the data entry routines. Every Fnd_Data method
  calls it, so it runs often and is safe to repeat.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Data_ParseNameShared

#DECLARE($inFullName_t : Text; $firstName_ptr : Pointer; $lastName_ptr : Pointer; $middleInitial_ptr : Pointer)->$name_o : Object

Project Method: Fnd_Data_ParseName (name{; ->first name{; ->last name{; ->middle initial}}}) --> Object

Attempts to split a person's full name into separate parts.
Drops titles such as Mr. Mrs. Jr., Sr., M.D., etc.

The parts are returned as an object, and also written through any pointers
  that are passed. Every pointer is optional.

```
  $name_o:=Fnd_Data_ParseName("Dr. John Q. Smith")
  //  {first: "John"; last: "Smith"; middleInitial: "Q"}

  Fnd_Data_ParseName("Dr. John Q. Smith"; ->$first_t; ->$last_t; ->$initial_t)
```

Access: Shared

Parameters:
  $inFullName_t : Text : The name to parse
  $firstName_ptr : Pointer : Gets the first name (optional)
  $lastName_ptr : Pointer : Gets the last name (optional)
  $middleInitial_ptr : Pointer : Gets the middle initial (optional)

Returns:
  $name_o : Object : The parts, as first, last and middleInitial
Fnd_Date_CalendarShared

#DECLARE($dateFieldVariable_ptr : Pointer)->$dateWasChosen_b : Boolean

Project Method: Fnd_Date_Calendar (->date field or variable) -> bOK

Displays a small calendar window and allows the user to select
  a date. Modifies the passed parameter.
returns the bOK variable to 1 if a date is selected.

Access: Shared

Parameters:
  $dateFieldVariable_ptr : Pointer : A date field or variable

Returns:
  $dateWasChosen_b : Boolean : True = (OK=1)
Fnd_Date_CalendarSetDateShared

#DECLARE($function_t : Text; $operator_t : Text)

Project Method: Fnd_Date_CalendarSetDate (function; operator)

Sets the date as per the string parameters function and operator, and redraws
the calendar grid to match. Reads and writes the running form's Form object,
so it is of no use outside Fnd_Date_CalendarPopup.

Functions:
  "date"
    "var" - Sets the date to the date already on Form.date
    "today" - Sets the date to today
    Date String - Sets the date to the date passed as a string
  "calendar"
    Pass the day number as a string to set the date
  "year", "month" & "day"
    Pass "+n" or "-n" to add or subtract n number of years, months or days

Access: Shared

Parameters:
  $function_t : Text : The function to perform
  $operator_t : Text : Additional information

Returns: Nothing
Fnd_Date_DateAndTimeToISOShared

#DECLARE($date_d : Date; $inTime_h : Time)->$isoTimestamp_t : Text

Project Method: Fnd_Date_DateAndTimeToISO (date{; time}) --> Text

Returns an ISO 8601 formatted date or date-time value.
If only a date is supplied, a calendar date is returned: YYYY-MM-DD
If both date and time are supplied, a date-time value is returned: YYYY-MM-DDThh:mm:ss
If both are passed but the date is !00/00/00! then only the time is returned: hh:mm:ss

For more information:
  <http://www.iso.org/iso/en/prods-services/popstds/datesandtime.html>

Access: Shared

Parameters:
  $date_d : Date : A date
  $inTime_h : Time : A time (optional)

Returns:
  $isoTimestamp_t : Text : The date-time stamp
Fnd_Date_DateToStringShared

#DECLARE($input_date : Date; $inRelativeTo_date : Date; $inDateFormat_t : Text)->$outputDate_t : Text

Project Method: Fnd_Date_DateToString (date{; relative to date{; format}}) --> Text

Returns a blank string if the date = !00/00/00!
Returns "Today", "Tomorrow", or "Yesterday" if appropriate. This is localized
  if the Localization component is available.
Otherwise returns a short date string.

Access: Shared

Parameters:
  $input_date : Date : The date to convert to a string
  $inRelativeTo_date : Date : The relative date (optional)
  $inDateFormat_t : Text : The date format (eg. "M/D/Y") (optional)

Returns:
  $outputDate_t : Text : The date as a string
Fnd_Date_EndOfMonthShared

#DECLARE($inThe_date : Date)->$the_date : Date

Project Method: Fnd_Date_EndOfMonth (date) --> Date

Returns the last day of the month passed.

Access: Shared

Parameters:
  $inThe_date : Date : Any date

Returns:
  $the_date : Date : The last day of the month for the date
Fnd_Date_EntryFilterShared

#DECLARE($dateField_ptr : Pointer)

Project Method: Fnd_Date_EntryFilter (->date field or variable)

Interprets what has been entered as a date
   And checks to see if a "function" key is hit and acts accordingly

Place in the object method of a date field or variable:
    Fnd_Date_EntryFilter(Self)

Required: Enable the field's On Before Keystroke and On Data Change events.

Access: Shared

Parameters:
  $dateField_ptr : Pointer : The date entry field

Returns: Nothing
Fnd_Date_ISOtoDateShared

#DECLARE($isoDate_t : Text)->$date_d : Date

Project Method: Fnd_Date_ISOtoDate (date string) --> Date

Retrieves the date value from an ISO 8601 formatted date. The input
  can be in either of these formats:
     YYYY-MM-DD
     YYYY-MM-DDThh:mm:ss

Access: Shared

Parameters:
  $isoDate_t : Text : An ISO format date

Returns:
  $date_d : Date : The date
Fnd_Date_ISOtoTimeShared

#DECLARE($inIsoDateTime_t : Text)->$time_time : Time

Project Method: Fnd_Date_ISOtoTime (date-time string) --> Time

Retrieves the time value from an ISO 8601 formatted date-time string. The input
  must be in the YYYY-MM-DDThh:mm:ss or hh:mm:ss format.

Access: Shared

Parameters:
  $inIsoDateTime_t : Text : An ISO format date-time or time string

Returns:
  $time_time : Date : The time
Fnd_Date_InfoShared

#DECLARE($request_t : Text)->$reply_t : Text

Project Method: Fnd_Date_Info (label) --> Text

Returns requested information.  See the Fnd_Gen_ComponentInfo
  method for more information.

Method Type: Protected

Access: Shared

Parameters:
  $request_t : Text : Info desired ("version" or "name")

Returns:
  $reply_t : Text : Response
Fnd_Date_InitInternal
Project Method: Fnd_Date_Init

Initializes the state used by the Date routines. Every Fnd_Date method that
  needs it calls it, so it runs often and is safe to repeat.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Date_LocalTimestampShared

#DECLARE()->$localTimestamp_t : Text

Project Method: Fnd_Date_LocalTimestamp --> Text

Returns the current local date and time as an ISO 8601 style stamp with
  milliseconds: YYYY-MM-DDThh:mm:ss.mmm

4D's Timestamp command returns the same instant in UTC, with a trailing Z.
  This returns local wall-clock time instead, which is what a developer
  reading a log or a result file expects to see.

Note there is deliberately no offset suffix, so the result is not a complete
  ISO 8601 instant. Stamps produced by this method are comparable with each
  other, not with a UTC stamp. Do not mix the two in one payload.

Access: Shared

Parameters: None

Returns:
  $localTimestamp_t : Text : Local timestamp, YYYY-MM-DDThh:mm:ss.mmm
Fnd_Date_MonthNameShared

#DECLARE($monthNum_i : Integer)->$monthName_t : Text

Project Method: Fnd_Date_MonthName (month number) --> Text

Returns the name of the month with the specified number.
This routine will use Foundation's Localization routine, if it's available,
  to return the localized month name.  If the Fnd_Loc component is
  not available, the name will be localized using 4D's language.

Access: Shared

Parameters:
  $monthNum_i : Longint : 1 thorugh 12

Returns:
  $monthName_t : Text : The name of the month
Fnd_Date_RoundTimeShared

#DECLARE($inTime_h : Time; $inOption_h : Time)->$roundedTime_h : Time

Project Method: Fnd_Date_RoundTime (time{; option}) --> Time

Rounds the time.
The option parameter determines the rounding style:
  1 : Round up or down to the nearest quarter hour
  2 : Round down to the nearest quarter hour

Access: Shared

Parameters:
  $inTime_h : Time : The time to round
  $inOption_h : Time : The rounding style (optional)

Returns:
  $roundedTime_h : Time : The rounded time
Fnd_Date_RoundTimeDownShared

#DECLARE($inTime : Time)->$time : Time

Project Method: Fnd_Date_RoundTimeDown (time) --> Time

Rounds the time down to the nearest quarter hour.

Access: Shared

Parameters:
  $inTime : Time : The time to round

Returns:
  $time : Time : The rounded time
Fnd_Date_RoundTimeNearShared

#DECLARE($inTime_time : Time)->$time_time : Time

Project Method: Fnd_Date_RoundTimeNear (time) --> Time

Rounds to the quarter hour. If the time passed in is up to ten minutes
  after the quarter hour, the time is rounded down. Otherwise it's
  rounded up.  Won't round up past 23:59.

Access: Shared

Parameters:
  $inTime_time : Time : The time to round

Returns:
  $time_time : Time : The rounded time
Fnd_Date_StringToDateShared

#DECLARE($inInput_t : Text; $inDateFormat_t : Text)->$suggested_date : Date

Project Method: Fnd_Date_StringToDate (date as text{; date format}) --> Date

Returns the date equivalent of the string passed.

This works for M/D/Y, D/M/Y, Y/M/D and Y/D/M style dates. It will not
  work for any date with the Y in the middle (does anyone do that?).
Two digit years are resolved as per the SET DEFAULT CENTURY command.

Dates can be enter with any character as a delimiter.
If no year is entered, the current year is assumed.
If only a one or two digit number is entered, the current month is assumed.

If no delimiter is used, the following formats are supported (M/D/Y format):
  070476 Returns a date of 07/04/76
  07041976 Returns a date of 07/04/1976
  0704 Returns 07/04/00 (If this is in fact the year 2000)
  04 or 4 Returns the 4th day of the current month
  74, 704 and 074 are not supported.
  "Today" returns the $today_date.
  "Yesterday" returns the $today_date -1.
  "Tomorrow" returns the $today_date +1.

Access: Shared

Parameters:
  $inInput_t : Text : A text representation of a date
  $inDateFormat_t : Text : The assumed date format, such as "M/D/Y" (optional)

Returns:
  $suggested_date : Date : The date
Fnd_Date_SystemDateFormatShared

#DECLARE()->$dateFormat_t : Text

Project Method: Fnd_Date_SystemDateFormat --> Text

Returns a string that can be used in If and Case statements to test the
  current system's date format. It will return Y, M, and D based in a format
  like this:
     "M/D/Y" = Month/Day/Year
     "D/M/Y" = Day/Month/Year

Access: Shared

Parameters: None

Returns:
  $dateFormat_t : Text : The date format
Fnd_Date_YearMonthDayToDateShared

#DECLARE($inYear_i : Integer; $month_i : Integer; $day_i : Integer)->$result_date : Date

Project Method: Fnd_Date_YearMonthDayToDate (year; month; day) --> Date

Converts the year, month, and day into a 4D date.
Works with either a two or four digit year.
Works regardless of the system's date format or the default century setting.

Out of range parts roll over rather than being refused, which is deliberate:
month 13 gives January of the next year, day 0 gives the last day of the
previous month, and 31 February gives 3 March. Programmatic callers rely on
this — Fnd_Date_EndOfMonth is day 0 of the following month. Pass through
Fnd_Date_StringToDate instead when the input came from a person, since that
one refuses a month above 12 or a day above 31.

Access: Shared

Parameters:
  $inYear_i : Longint : Year (2 or 4 digits)
  $month_i : Longint : Month
  $day_i : Longint : Day

Returns:
  $result_date : Date : The date
Fnd_Dict_DataTypeShared

#DECLARE($dictionary_i : Integer; $key_t : Text)->$type_i : Integer

Project Method: Fnd_Dict_DataType (dict ID; key name) --> Number

Returns the data type of a key.

Access: Shared

Parameters:
  $dictionary_i : Longint : Dictionary ID
  $key_t : Text : Key name

Returns:
  $type_i : Longint : Data type
Fnd_Dict_GetArrayShared

#DECLARE($dictionary_i : Integer; $key_t : Text; $value_ptr : Pointer)

Project Method: Fnd_Dict_GetArray (dict ID; key name; ->values)

Returns an array of values from a dictionary given a key.

Access: Shared

Parameters:
  $dictionary_i : Longint : Dictionary ID
  $key_t : Text : Key name
  $value_ptr : Pointer : Text array to receive values

Returns: Nothing
Fnd_Dict_GetBooleanShared

#DECLARE($dictionary_i : Integer; $key_t : Text)->$value_b : Boolean

Project Method: Fnd_Dict_GetBoolean (dict ID; key) --> Boolean

Returns a Boolean value from a dictionary given a key.

Access: Shared

Parameters:
  $dictionary_i : Longint : Dictionary ID
  $key_t : Text : Key name

Returns:
  $value_b : Boolean : The key's value
Fnd_Dict_GetDateShared

#DECLARE($dictionary_i : Integer; $key_t : Text)->$value_d : Date

Project Method: Fnd_Dict_GetDate (dict ID; key) --> Date

Returns a date value from a dictionary given a key.

Access: Shared

Parameters:
  $dictionary_i : Longint : Dictionary ID
  $key_t : Text : Key name

Returns:
  $value_d : Date : The key's value
Fnd_Dict_GetLongintShared

#DECLARE($dictionary_i : Integer; $key_t : Text)->$value_i : Integer

Project Method: Fnd_Dict_GetLongint (dict ID; key) --> Longint

Returns a longint value from a dictionary given a key.

Access: Shared

Parameters:
  $dictionary_i : Longint : Dictionary ID
  $key_t : Text : Key name

Returns:
  $value_i : Longint : The key's value
Fnd_Dict_GetPointerShared

#DECLARE($dictionary_i : Integer; $key_t : Text)->$value_ptr : Pointer

Project Method: Fnd_Dict_GetPointer (dict ID; key) --> Pointer

Returns a pointer value from a dictionary given a key.

Access: Shared

Parameters:
  $dictionary_i : Longint : Dictionary ID
  $key_t : Text : Key name

Returns:
  $value_ptr : Pointer : The key's value
Fnd_Dict_GetRealShared

#DECLARE($dictionary_i : Integer; $key_t : Text)->$value_r : Real

Project Method: Fnd_Dict_GetReal (dict ID; key) --> Real

Returns a real value from a dictionary given a key

Access: Shared

Parameters:
  $dictionary_i : Longint : Dictionary ID
  $key_t : Text : Key name

Returns:
  $value_r : Real : The key's value
Fnd_Dict_GetTextShared

#DECLARE($dictionary_i : Integer; $key_t : Text)->$value_t : Text

Project Method: Fnd_Dict_GetText (dict ID; key) --> Text

Returns a text value from a dictionary given a key.

Access: Shared

Parameters:
  $dictionary_i : Longint : Dictionary ID
  $key_t : Text : Key name

Returns:
  $value_t : Text : The key's value
Fnd_Dict_GetTimeShared

#DECLARE($dictionary_i : Integer; $key_t : Text)->$value_time : Time

Project Method: Fnd_Dict_GetTime (dict ID; key) --> Time

Returns a time value from a dictionary given a key.

Access: Shared

Parameters:
  $dictionary_i : Longint : Dictionary ID
  $key_t : Text : Key name

Returns:
  $value_time : Time : The key's value
Fnd_Dict_GetValueShared

#DECLARE($dictionary_i : Integer; $key_t : Text)->$value_t : Text

Project Method: Fnd_Dict_GetValue (dict ID; key) --> Text

Returns a value from a dictionary given a key

Access: Private

Parameters:
  $dictionary_i : Longint : Dictionary ID
  $key_t : Text : Key name

Returns:
  $value_t : Text : The key's value as text
Fnd_Dict_HasKeyShared

#DECLARE($dictionary_i : Integer; $key_t : Text)->$hasKey_b : Boolean

Project Method: Fnd_Dict_HasKey (dict ID; key) --> Boolean

Checks whether a dictionary contains a given key.

Access: Shared

Parameters:
  $dictionary_i : Longint : Dictionary ID
  $key_t : Text : Key name

Returns:
  $hasKey_b : Boolean : True if the key exists
Fnd_Dict_IDShared

#DECLARE($name_t : Text)->$dictionary_i : Integer

Project Method: Fnd_Dict_ID (name) --> Number

Returns the reference number of the dictionary with the specified name.
Returns 0 if the dictionary does not exist.

Access: Shared

Parameters:
  $name_t : Text : A dictionary name

Returns:
  $dictionary_i : Longint : The dictionary's reference number
Fnd_Dict_InfoShared

#DECLARE($request_t : Text)->$reply_t : Text

Project Method: Fnd_Dict_Info (label) --> Text

Returns requested information. See the Fnd_Gen_ComponentInfo
  method for more information.

Access: Shared

Parameters:
  $request_t : Text : Info desired ("version" or "name")

Returns:
  $reply_t : Text : Response
Fnd_Dict_InitInternal
Project Method: Fnd_Dict_Init

Initialises the dictionary module.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Dict_IsValidShared

#DECLARE($dictionary_i : Integer)->$isValid_b : Boolean

Project Method: Fnd_Dict_IsValid (dict ID) --> Boolean

Checks whether a dictionary reference is valid.

Access: Shared

Parameters:
  $dictionary_i : Longint : Dictionary ID

Returns:
  $isValid_b : Boolean : True if the dictionary reference is valid
Fnd_Dict_ItemCountShared

#DECLARE($dictionary_i : Integer)->$count_i : Integer

Project Method: Fnd_Dict_ItemCount (dict ID) --> Number

Returns the number of items in a dictionary.

Access: Shared

Parameters:
  $dictionary_i : Longint : Dictionary ID

Returns:
  $count_i : Longint : Item count
Fnd_Dict_KeyShared

#DECLARE($dictionary_i : Integer; $index_i : Integer)->$key_t : Text

Project Method: Fnd_Dict_Key (dict ID; key number) --> Text

Returns the nth key from a dictionary.

Access: Private

Parameters:
  $dictionary_i : Longint : Dictionary ID
  $index_i : Longint : Key number

Returns:
  $key_t : Text : The key's value as text
Fnd_Dict_KeysShared

#DECLARE($dictionary_i : Integer; $array_ptr : Pointer)

Project Method: Fnd_Dict_Keys (dict ID; ->keys array)

Fills an array with the keys in a dictionary.

Access: Shared

Parameters:
  $dictionary_i : Longint : Dictionary ID
  $array_ptr : Pointer : Text array

Returns: Nothing
Fnd_Dict_LoadShared

#DECLARE($source_ptr : Pointer)->$dictionary_i : Integer

Project Method: Fnd_Dict_Load (->blob or path)

Loads a dictionary from either a blob or a file

Access: Private

Parameters:
  $source_ptr : Pointer : Dictionary or path

Returns:
  $dictionary_i : Longint : Dictionary ID
Fnd_Dict_LoadFromBlobShared

#DECLARE($source_ptr : Pointer)->$dictionary_i : Integer

Project Method: Fnd_Dict_LoadFromBlob (->blob) --> Longint

Loads a dictionary from a BLOB.

Access: Shared

Parameters:
  $source_ptr : Pointer : Dictionary as blob

Returns:
  $dictionary_i : Longint : Dictionary ID
Fnd_Dict_LoadFromFileShared

#DECLARE($filename_t : Text)->$dictionary_i : Integer

Project Method: Fnd_Dict_LoadFromFile (path) --> Longint

Loads a dictionary from a file.

Access: Shared

Parameters:
  $filename_t : Text : File path

Returns:
  $dictionary_i : Longint : Dictionary ID
Fnd_Dict_LockInternalStateShared

#DECLARE($lock_b : Boolean)

Project Method: Fnd_Dict_LockInternalState (lock?)

Locks the internal state for the dictionary module.

Access: Private

Parameters:
  $lock_b : Boolean : True to Lock, False to Unlock

Returns: Nothing
Fnd_Dict_NameShared

#DECLARE($dictionary_i : Integer)->$name_t : Text

Project Method: Fnd_Dict_Name (dict ID) --> Text

Returns the name of the dictionary.

Access: Shared

Parameters:
  $dictionary_i : Longint : Dictionary ID

Returns:
  $name_t : Text : Dictionary Name
Fnd_Dict_NewShared

#DECLARE($inName_t : Text)->$dictionary_i : Integer

Project Method: Fnd_Dict_New ({name}) --> Longint

Creates a new dictionary and returns a refernece to it.

Access: Shared

Parameters:
  $inName_t : Text : Name (optional)

Returns:
  $dictionary_i : Longint : Dictionary ID
Fnd_Dict_ReleaseShared

#DECLARE($dictionary_i : Integer)

Project Method: Fnd_Dict_Release (dict ID)

Decrements the retain count of a dictionary and deletes it when the retain count reaches 0.

Access: Shared

Parameters:
  $dictionary_i : Longint : Dictionary ID

Returns: Nothing
Fnd_Dict_RemoveShared

#DECLARE($dictionary_i : Integer; $key_t : Text)

Project Method: Fnd_Dict_Remove (dict ID; key)

Removes a key from a dictionary.

Access: Shared

Parameters:
  $dictionary_i : Longint : Dictionary ID
  $key_t : Text : Key name

Returns: Nothing
Fnd_Dict_RetainShared

#DECLARE($dictionary_i : Integer)

Project Method: Fnd_Dict_Retain (dict ID)

Increments the retain count for a dictionary.

Access: Shared

Parameters:
  $dictionary_i : Longint : Dictionary ID

Returns: Nothing
Fnd_Dict_RetainCountShared

#DECLARE($dictionary_i : Integer)->$retainCount_i : Integer

Project Method: Fnd_Dict_RetainCount (dict ID) --> Longint

Returns the retain count for a dictionary

Access: Shared

Parameters:
  $dictionary_i : Longint : Dictionary ID

Returns:
  $retainCount_i : Longint : Retain count
Fnd_Dict_SaveShared

#DECLARE($dictionary_i : Integer; $blobPath_ptr : Pointer)

Project Method: Fnd_Dict_Save (dict ID; ->blob or path)

Saves a dictionary as either a blob or a file.

Access: Private

Parameters:
  $dictionary_i : Longint : Dictionary ID
  $blobPath_ptr : Pointer : Blob or path

Returns: Nothing
Fnd_Dict_SaveToBlobShared

#DECLARE($dictionary_i : Integer; $destination_ptr : Pointer)

Project Method: Fnd_Dict_SaveToBlob (dict ID; ->blob)

Saves a dictionary as a blob.

Access: Shared

Parameters:
  $dictionary_i : Longint : Dictionary ID
  $destination_ptr : Pointer : Blob to store dictionary

Returns: Nothing
Fnd_Dict_SaveToFileShared

#DECLARE($dictionary_i : Integer; $filename_t : Text)

Project Method: Fnd_Dict_SaveToFile (dict ID; path)

Saves a dictionary as a file.

Access: Shared

Parameters:
  $dictionary_i : Longint : Dictionary ID
  $filename_t : Text : Path to the file to create (or update)

Returns: Nothing
Fnd_Dict_SetArrayShared

#DECLARE($dictionary_i : Integer; $key_t : Text; $value_ptr : Pointer)

Project Method: Fnd_Dict_SetArray (dict ID; key; ->array)

Stores an array of values inside a dictionary.

Access: Shared

Parameters:
  $dictionary_i : Longint : Dictionary ID
  $key_t : Text : Key
  $value_ptr : Pointer : Array

Returns: Nothing
Fnd_Dict_SetBooleanShared

#DECLARE($dictionary_i : Integer; $key_t : Text; $value_i : Boolean)

Project Method: Fnd_Dict_SetBoolean (dict ID; key; Boolean value)

Assigns a Boolean value to a dictionary given a key.

Access: Shared

Parameters:
  $dictionary_i : Longint : Dictionary ID
  $key_t : Text : Key name
  $value_i : Boolean : Value to store

Returns: Nothing
Fnd_Dict_SetDateShared

#DECLARE($dictionary_i : Integer; $key_t : Text; $value_d : Date)

Project Method: Fnd_Dict_SetDate (dict ID; key; date value)

Assigns a date value to a dictionary given a key.

Access: Shared

Parameters:
  $dictionary_i : Longint : Dictionary ID
  $key_t : Text : Key name
  $value_d : Date : Value to store

Returns: Nothing
Fnd_Dict_SetLongintShared

#DECLARE($dictionary_i : Integer; $key_t : Text; $value_i : Integer)

Project Method: Fnd_Dict_SetLongint (dict ID; key; longint value)

Assigns a longint value to a dictionary given a key.

Access: Shared

Parameters:
  $dictionary_i : Longint : Dictionary ID
  $key_t : Text : Key name
  $value_i : Longint : Value to store

Returns: Nothing
Fnd_Dict_SetPointerShared

#DECLARE($dictionary_i : Integer; $key_t : Text; $value_ptr : Pointer)

Project Method: Fnd_Dict_SetPointer (dict ID; key; pointer)

Assigns a pointer value to a dictionary given a key

Access: Shared

Parameters:
  $dictionary_i : Longint : Dictionary ID
  $key_t : Text : Key name
  $value_ptr : Pointer : Pointer to store

Returns: Nothing
Fnd_Dict_SetRealShared

#DECLARE($dictionary_i : Integer; $key_t : Text; $value_r : Real)

Project Method: Fnd_Dict_SetReal (dict ID; key; real value)

Assigns a real value to a dictionary given a key

Access: Shared

Parameters:
  $dictionary_i : Longint : Dictionary ID
  $key_t : Text : Key name
  $value_r : Real : Value to store

Returns: Nothing
Fnd_Dict_SetTextShared

#DECLARE($dictionary_i : Integer; $key_t : Text; $value_t : Text)

Project Method: Fnd_Dict_SetText (dict ID; key; text value)

Assigns a text value to a dictionary given a key

Access: Shared

Parameters:
  $dictionary_i : Longint : Dictionary ID
  $key_t : Text : Key name
  $value_t : Text : Value to store

Returns: Nothing
Fnd_Dict_SetTimeShared

#DECLARE($dictionary_i : Integer; $key_t : Text; $value_time : Time)

Project Method: Fnd_Dict_SetTime (dict ID; key; time value)

Assigns a time value to a dictionary given a key

Access: Shared

Parameters:
  $dictionary_i : Longint : Dictionary ID
  $key_t : Text : Key name
  $value_time : Time : Value to store

Returns: Nothing
Fnd_Dict_SetValueShared

#DECLARE($dictionary_i : Integer; $key_t : Text; $value_t : Text; $type_i : Integer)

Project Method: Fnd_Dict_SetValue (dict ID; key; value as text; data type)

Assigns a value to a dictionary given a key

Access: Private

Parameters:
  $dictionary_i : Longint : Dictionary ID
  $key_t : Text : Key name
  $value_t : Text : Value to store
  $type_i : Longint : Data type

Returns: Nothing
Fnd_Dict_ValuesShared

#DECLARE($dictionary_i : Integer; $array_ptr : Pointer)

Project Method: Fnd_Dict_Values (dict ID; ->array)

Fills an array with the values in a dictionary.

Access: Shared

Parameters:
  $dictionary_i : Longint : Dictionary ID
  $array_ptr : Pointer : Array to receive values

Returns: Nothing
Fnd_Dlg_AlertShared

#DECLARE($message_t : Text; $inOkButtonTitle_t : Text)->$buttonClicked_i : Integer

Project Method: Fnd_Dlg_Alert (message{; OK button title}) --> Longint

Replaces 4D's ALERT command.

Access: Shared

Parameters:
  $message_t : Text : The message to display
  $inOkButtonTitle_t : Text : The OK button text (optional)

Returns:
  $buttonClicked_i : Longint : 1 (always)
Fnd_Dlg_ConfirmShared

#DECLARE($inMessage_t : Text; $inOkBttn_t : Text; $inCancelBttn_t : Text)->$buttonClicked_i : Integer

Project Method: Fnd_Dlg_Confirm (message{; OK bttn{; Cancel bttn}}) --> Longint

A replacement for 4D's CONFIRM command.

Access: Shared

Parameters:
  $inMessage_t : Text : The message to display
  $inOkBttn_t : Text : The OK button text (optional)
  $inCancelBttn_t : Text : The Cancel button text (optional)

Returns:
  $buttonClicked_i : Longint : 1 if OK is clicked, 0 if Cancel is clicked
Fnd_Dlg_CustomIconShared

#DECLARE($inPictureLibraryName_t : Text)->$customIconName_t : Text

Project Method: Fnd_Dlg_CustomIcon (picture library name) --> Text

Allows the developer to set and get the custom icon name.
See also Fnd_Dlg_SetIcon.

Access: Shared

Parameters:
  $inPictureLibraryName_t : Text : The picture library name

Returns:
  $inPictureLibraryName_t : Text : The current picture name
Fnd_Dlg_DisplayShared

#DECLARE()->$buttonClicked_i : Integer

Project Method: Fnd_Dlg_Display --> Longint

Displays the built dialog.
Sets the OK variable.

Access: Shared

Parameters: None

Returns:
  $buttonClicked_i : Longint : 1 if OK is clicked, 0 if Cancel is clicked, 2 if the optional button is clicked
Fnd_Dlg_FixButtonTextsShared
Project Method: Fnd_Dlg_FixButtonTexts

Convert "*" in the button texts to local strings.
Do this just before displaying the dialog, since they get cleared after that.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Dlg_FormAlertShared
Project Method: Fnd_Dlg_FormAlert

Displays an alert using a 4D form.  Called from Fnd_Dlg_Display

Access: Private

Parameters: None

Returns: Nothing
Fnd_Dlg_GetRequestShared

#DECLARE()->$enteredValue_t : Text

Project Method: Fnd_Dlg_GetRequest --> Text

Returns the value entered by the user after displaying a Request dialog.

Access: Shared

Parameters: None

Returns:
  $enteredValue_t : Text : The value entered by the user
Fnd_Dlg_InfoShared

#DECLARE($request_t : Text)->$reply_t : Text

Project Method: Fnd_Dlg_Info (label) --> Text

Returns requested information.  See the Fnd_Gen_ComponentInfo
  method for more information.

Access: Shared

Parameters:
  $request_t : Text : Info desired ("version" or "name")

Returns:
  $reply_t : Text : Response
Fnd_Dlg_InitInternal
Project Method: Fnd_Dlg_Init

Initializes both the process and interprocess variables used by the Fnd_Dlg routines.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Dlg_LocalizeShared
Project Method: Fnd_Dlg_Localize

Passed the localization strings to the General and (if available) Localization components.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Dlg_MessageShared

#DECLARE($message_t : Text)

Project Method: Fnd_Dlg_Message (message text)

Displays a message window.   Stays open until it's called again with a blank string.
Designed to be a replacement for 4D's MESSAGE command.

Access: Shared

Parameters:
  $message_t : Text : The message to display

Returns: Nothing
Fnd_Dlg_MessageCanceledShared

#DECLARE()->$wasCanceled_b : Boolean

Project Method: Fnd_Dlg_MessageCanceled

Returns True if the user clicked the Cancel button.

Access: Shared

Parameters: None

Returns:
  $wasCanceled_b : Boolean : True if the user clicked Cancel
Fnd_Dlg_MessageCloseShared
Project Method: Fnd_Dlg_MessageClose

Closes the progress indicator window.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Dlg_MessageOpenShared
Project Method: Fnd_Dlg_MessageOpen

Opens the message window.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Dlg_MessageOpen2Shared

#DECLARE($windowTitle_t : Text)

Project Method: Fnd_Dlg_MessageOpen2 (window title)

Called as a new process from Fnd_Dlg_MessageOpen to display the progress indicator window.

Access: Private

Parameters:
  $windowTitle_t : Text : The window title

Returns: Nothing
Fnd_Dlg_MessageUpdateShared

#DECLARE($current_i : Integer)

Project Method: Fnd_Dlg_MessageUpdate (number)

Updates the message dialog's progress indicator.

Access: Shared

Parameters:
  $current_i : Longint : The next number in the sequence.

Returns: Nothing
Fnd_Dlg_PasswordEntryShared

#DECLARE($formObject_ptr : Pointer; $currentValue_ptr : Pointer)->$valueChanged_b : Boolean

Project Method: Fnd_Dlg_PasswordEntry (->srcArea; ->curValue) --> Boolean

Replaces typed characters with bullet characters for password entry.
Returns True if the value has changed.
Based on the Keystroke function example in the 4D documentation.

Access: Private

Parameters:
  $formObject_ptr : Pointer : A pointer to the form object
  $currentValue_ptr : Pointer : A pointer to a text variable that holds the contents

Returns:
  $valueChanged_b : Boolean : True if the current value has changed
Fnd_Dlg_RequestShared

#DECLARE($msg_t : Text; $inDefault_t : Text; $inOkButton_t : Text; $inCancelButton_t : Text)->$enteredText_t : Text

Project Method: Fnd_Dlg_Request (msg{; default{; OK button{; Cancel button}}}) --> Text

Displays a Request dialog.  Returns the user's response and sets the OK variable.
Use Fnd_Dlg_GetRequest to find out what the user typed.

Access: Shared

Parameters:
  $msg_t : Text : The message to display
  $inDefault_t : Text : The default response text (optional)
  $inOkButton_t : Text : The OK button text (optional)
  $inCancelButton_t : Text : The Cancel button text (optional)

Returns:
  $enteredText_t : Text : Text user entered in Request dialog
Fnd_Dlg_SetButtonsShared

#DECLARE($inButton1_t : Text; $inButton2_t : Text; $inButton3_t : Text)

Project Method: Fnd_Dlg_SetButtons ({button 1{; button 2{; button 3}}})

Sets the button texts for the upcoming alerts.

Access: Shared

Parameters:
  $inButton1_t : Text : The OK button text or "" or "*" for localized "OK" (optional)
  $inButton2_t : Text : The Cancel button text or "*" for localized "Cancel" (optional)
  $inButton3_t : Text : The third button text (optional)

Returns: Nothing
Fnd_Dlg_SetCancelableShared

#DECLARE($cancelable_b : Boolean)

Project Method: Fnd_Dlg_SetCancelable (cancelable?)

Specify whether or not the upcoming dialog can be canceled.

Access: Shared

Parameters:
  $cancelable_b : Boolean : True if the message button should be enabled.

Returns: Nothing
Fnd_Dlg_SetIconShared

#DECLARE($inIconNumber_i : Integer)

Project Method: Fnd_Dlg_SetIcon ({icon number})

Sets the icon for the upcoming alert.
  0 = Default icon (Note)
  1 = Note Icon
  2 = Warn Icon
  3 = Stop Icon

These Foundation constants are available:
  Fnd_Dlg_NoteIcon = Note Icon
  Fnd_Dlg_WarnIcon = Warn Icon
  Fnd_Dlg_StopIcon = Stop Icon

See also Fnd_Dlg_CustomIcon.

Access: Shared

Parameters:
  $inIconNumber_i : Longint : Icon number (optional)

Returns: Nothing
Fnd_Dlg_SetProgressShared

#DECLARE($inFrom_i : Integer; $inEndingNumber_i : Integer)

Project Method: Fnd_Dlg_SetProgress (to or from{; to})

The developer calls this to set the From and To numbers.
If only one number is passed, the From is assumed to be 1.

Access: Shared

Parameters:
  $inFrom_i : Longint : The ending number if no second parameter or the starting number
  $inEndingNumber_i : Longint : The ending number (optional)

Returns: Nothing
Fnd_Dlg_SetRequestShared

#DECLARE($inDefault_t : Text)

Project Method: Fnd_Dlg_SetRequest ({default})

Sets up the next dialog to allow the user to enter a value.  Optionally sets
  the default value of the value.  Pass "*" as the default value to cause
  the entry area to display bullets rather than text.

Access: Shared

Parameters:
  $inDefault_t : Text : The default value (optional)

Returns: Nothing
Fnd_Dlg_SetTextShared

#DECLARE($text1_t : Text; $inText2_t : Text)

Project Method: Fnd_Dlg_SetText (text 1{; text 2})


Sets the message texts for the upcoming alert.


Access: Shared

Parameters:

  $text1_t : Text : The primary alert text

  $inText2_t : Text : The smaller alert text (optional)


Returns: Nothing
Fnd_Ext_TextLinesShared

#DECLARE($theText_t : Text; $widthOfObject_i : Integer; $Fnd_Bttn_FontName_t : Text; $Fnd_Bttn_FontSize_i : Integer; $Fnd_Bttn_FontStyle_i : Integer)->$linesOfText_i : Integer

Project Method: Fnd_Ext_TextLines
$lines_i:=Fnd_Ext_TextLines (Fnd_Dlg_Text1_t;372;◊Fnd_Dlg_FontName_t;◊Fnd_Dlg_FontSize_i;◊Fnd_Dlg_FontStyle_i)

Replaces functionality of plugin Extras

Access: Public

Parameters: $widthOfObject_i;◊Fnd_Dlg_FontName_t;◊Fnd_Dlg_FontSize_i;◊Fnd_Dlg_FontStyle_i

Returns:
  $linesOfText_i : Long Integer : number of lines of text
Fnd_Ext_TextWidthShared

#DECLARE($buttonText_t : Text; $Fnd_Bttn_FontName_t : Text; $Fnd_Bttn_FontSize_i : Integer; $Fnd_Bttn_FontStyle_i : Integer)->$lengthOfText_i : Integer

Project Method: Fnd_Ext_TextWidth
$elementWidth_i:=Fnd_Ext_TextWidth ($text_t;$fontName_t;$fontSize_i;$fontStyle_i)
$width_i:=Fnd_Ext_TextWidth ($buttonText_t;Fnd_Bttn_FontName_t;Fnd_Bttn_FontSize_i;Fnd_Bttn_FontStyle_i)

Replaces functionality of plugin Extras

Access: Public

Parameters: $buttonText_t;Fnd_Bttn_FontName_t;Fnd_Bttn_FontSize_i;Fnd_Bttn_FontStyle_i

Returns:
  $lengthOfText_i : Long Integer : Length of Text in pixels
Fnd_FCS_BuildComponentInternal

#DECLARE($inVersionNumber_t : Text)

Project Method: Fnd_FCS_BuildComponent

Builds the Foundation component

Access: Private

Parameters:
  $inVersionNumber_t : Text : Version Number
Fnd_FCS_CommandTableUpdateInternal

#DECLARE->$report_o : Object

Project Method: Fnd_FCS_CommandTableUpdate --> Object

Makes sure <Resources>/commands.json knows the running 4D, adding it if not.
Called at startup from Fnd_FCS_DeveloperTools; safe to call by hand.

Does nothing when the version already has a table, or is already recorded as
an alias of one. Otherwise it reads the running 4D's command names and
compares them with every table already held:

  identical to one   an alias is recorded in "_aliases", costing 30 bytes
                     rather than another 30,000 - 21 R3 is 21 LTS exactly
  different          the full table is added under the version key

So a new R release costs nothing until 4D actually changes a name, and when
it does the change is captured the first time that version opens the project.

"_aliases" sits beside the version keys and is skipped by anything reading
the file for tables; the leading underscore marks it as not a version.

Access: Private

Parameters: None

Returns:
  $report_o : Object : { key ; outcome ; aliasOf ; commandCount ; written }
     outcome is "known", "alias recorded", "table added" or "no file"
Fnd_FCS_CompilationPathInternal

#DECLARE()->$compilationPath_t : Text

Project Method: Fnd_FCS_CompilationPath --> Text

Returns the compilation_path setting, or "" if it cannot be read.

It decides whether Compiler_ typing methods are honoured — "4" is direct
  typing, which ignores them and requires #DECLARE on every method — so a
  compile result is not comparable to another without it. The setting is not
  in git, and only exists in projects converted from before 4D 20 R7.

Access: Private

Parameters: None

Returns:
  $compilationPath_t : Text : The compilation_path value, or "" if absent
Fnd_FCS_CompilerCheckInternal

#DECLARE($inline_b : Boolean; $requestedAt_t : Text; $requestBody_t : Text)

Project Method: Fnd_FCS_CompilerCheck ({$inline_b : Boolean {; $requestedAt_t : Text}})

Runs a syntax check (Compile project with no targets) and reports the result.

Called from outside its own process it spawns itself into the unique process
  $DesiredProcessName_t and returns; running inside that process it does the
  work. RELOAD PROJECT runs first so that .4dm files edited outside the IDE
  are picked up — which is also why this must never run preemptively.

With $inline_b the summary is written to <Resources>/schedulerResult.json for
  the file-based protocol driven by Fnd_FCS_SchedStart; otherwise it goes to
  the pasteboard and an alert. Holding Option (Alt on Windows) while an
  interactive check finishes puts the concise rather than the indented JSON
  on the pasteboard.

A result file is written on every path, including failure, so a polling
  client always gets an answer.

Access: Private

Parameters:
  $inline_b      : Boolean : True to write the result file instead of alerting (optional)
  $requestedAt_t : Text : Timestamp of the originating request, echoed back (optional)

Returns: Nothing
Fnd_FCS_CompilerCheckOnErrInternal
Project Method: Fnd_FCS_CompilerCheckOnErr

Error handler installed by Fnd_FCS_CompilerCheck around RELOAD PROJECT and
  Compile project.

It writes an immediate failure result so a client polling for
  compilerResults.json is never left waiting on a compile that died.
  Fnd_FCS_CompilerCheck overwrites that file with the real summary if it
  goes on to complete normally, so a recoverable error costs nothing.

Access: Private

Parameters: None

Returns: Nothing
Fnd_FCS_ConfirmListExistsInternal

#DECLARE($ListName_t : Text)->$listExists_b : Boolean

Project Method: Fnd_FCS_ConfirmListExists (List Name) --> Boolean

Returns True if the list exists in the toolbox

Access: Shared

Parameters:
  $ListName_t : Text : The list name in the Toolbox

Returns:
  $listExists_b : Boolean : True - the list exists
Fnd_FCS_ConstantsInternal

#DECLARE($autoRestart_b : Boolean)

Project Method: Fnd_FCS_Constants ({autoRestart})

Creates the constants file for Foundation.

Rebuilds only when $lastConstantUpdate_t below differs from the stamp in the
  file, then offers a restart. Pass True to restart without asking.

Access: Private

Parameters:
  $autoRestart_b : Boolean : Restart at once rather than prompting (optional)

Returns: Nothing
Fnd_FCS_DeleteSyntaxFileInternal
Project Method: Fnd_FCS_DeleteSyntaxFile

Deletes Resources/en.lproj/syntaxEN.json.

4D writes it during a full compilation and reads it when the project opens.
  A file written by one 4D version misdescribes the parameters to another —
  one written by 20 makes 21 R reject nearly every call. It is only useful in
  a built component, and the build compiles, so it is recreated there.

Access: Private

Parameters: None

Returns: Nothing
Fnd_FCS_DeveloperToolsInternal

#DECLARE($mode_t : Text)

Project Method: Fnd_FCS_DeveloperTools

Initialises any

Access: Private
Fnd_FCS_GetCommandNamesInternal

#DECLARE($writeFile_b : Boolean)->$commands_o : Object

Project Method: Fnd_FCS_GetCommandNames ({$writeFile_b : Boolean}) --> Object

Reads every command name out of the running 4D, as { number : name }.

Pass True to also write <Resources>/<version key>.txt in the listing format
the tables were originally captured in: the version key on the first line,
then one name per line, blank where a number is unused.

Access: Private

Parameters:
  $writeFile_b : Boolean : True to also write the .txt listing (optional)

Returns:
  $commands_o : Object : { commandNumber : name } for every number in use
Fnd_FCS_InfoShared

#DECLARE($request_t : Text)->$reply_t : Text

Project Method: Fnd_FCS_Info (label) --> Text

Returns requested information from the Fnd_FCS module.

Access: Shared

Parameters:
  $1 : Text : Info desired ("version", "devSync", "name", "dependencies", or "manifest")

Returns:
  $0 : Text : Response
Fnd_FCS_ListToTextFileInternal

#DECLARE($inListName_t : Text)

Project Method: Fnd_FCS_ListToTextFile ({$inListName_t : Text})

Dumps the contents of a 4D list to a text file in the Resources folder.

Development only. It is part of the Construction Set, so it is not present in
  a deployed component and nothing outside Fnd_FCS may call it.

Access: Private

Parameters:
  $inListName_t : Text : The list to dump (optional)

Returns: Nothing
Fnd_FCS_ManifestInternal

#DECLARE($repair_b : Boolean)->$reply_t : Text

Project Method: Fnd_FCS_Manifest ({$repair_b : Boolean}) --> Text

Returns the Fnd_FCS module's installation report as JSON: the manifest
declared below, verified by DevSync_ManifestCheck where that exists.
Without DevSync, or compiled, the declaration comes back marked
verified:false, which is the normal answer inside Foundation itself.

The list is the Fnd_FCS folder, which is the unit devSync pairs by name.
Fnd_FCS_Local is deliberately absent: it holds what does not travel.

Access: Private

Parameters:
  $repair_b : Boolean : Register declared strays under the module folder (optional)

Returns:
  $reply_t : Text : JSON report - see DevSync_ManifestCheck
Fnd_FCS_ParseParameterLineInternal

#DECLARE($parameterline_t : Text)->$result_o : Object

Project Method: Fnd_FCS_ParseParameterLine (parameter line) -> Object

Parses a single parameter comment line into name/type/description.

Access: Private

Parameters:
  $parameterline_t : Text : Raw comment line (for example "//   $parameterline_t : Text : Name")

Returns:
  $result_o : Object : {valid; isDeclareStyle; name; type; description}
Fnd_FCS_RequestEchoInternal

#DECLARE($requestBody_t : Text; $requestedAt_t : Text)->$echo_o : Object

Project Method: Fnd_FCS_RequestEcho ($requestBody_t : Text; $requestedAt_t : Text) --> Object

Builds the object every scheduler result starts from: what was asked, when,
and by a client believing what. Use it in place of New object when composing
a result payload.

The request may state the 4D version the client believes is running, and when
the client wrote the request:

  { "expectedVersion": "2007", "requestedAt": "2026-08-10T09:15:00" }

Both are answered rather than trusted. versionMatch says whether the client
was right, and requestAgeSeconds how long the request sat before the watcher
took it - a large age means the watcher was not running when it was written,
which otherwise reads as a slow compile.

Access: Private

Parameters:
  $requestBody_t : Text : The request JSON, as read by the watcher
  $requestedAt_t : Text : Timestamp stamped by the watcher when it took the request

Returns:
  $echo_o : Object : { v4D ; requestedAt ; and, when the client supplied them,
     expectedVersion ; versionMatch ; clientRequestedAt ; requestAgeSeconds }
Fnd_FCS_ResizeDesignWindowsInternal
Project Method: Method: Fnd_FCS_ResizeDesignWindows

Resizes any open Method or Form windows. Used to resize the windows
  in the FCS. This routine is not included in any of the components.
To use this method, just open the windows you want resized and
  then switch to the User environment and select this method from
  the Execute dialog.

Access Type: n/a

Parameters: None

Returns: Nothing
Fnd_FCS_SchedRelaunchInternal
Project Method: Fnd_FCS_SchedRelaunch

Waits for the compile-check watcher to stop, then starts it again. Spawned by
Fnd_FCS_SchedStart when <Resources>/schedRestart.json appears; not called
directly.

This is how an edit to the watcher itself takes effect. RELOAD PROJECT
refreshes the compiler child but not the running loop, so the process has to
go and come back, and something outside it has to do that.

Access: Private

Parameters: None

Returns: Nothing
Fnd_FCS_SchedStartInternal
Project Method: Fnd_FCS_SchedStart

Starts, and then is, the compile-check watcher process $Fnd_FCS_SchedStart.

Called with no watcher running it spawns itself into that unique process and
  returns; running inside it, it polls <Resources>/schedulerRequest.json
  every 5 seconds and dispatches on the request's action:

  nothing, or "compile"  Fnd_FCS_CompilerCheck
  "test"                 Fnd_FCS_TestRunner
  "relaunch"             Fnd_FCS_SchedRelaunch, which restarts this watcher

Results always land in <Resources>/schedulerResult.json.

A developer tool, driven by the developer and by AI working alongside them.

Interpreted mode only. In compiled mode this is a no-op, and the child calls
  RELOAD PROJECT, which must never run preemptively.

Stopped by Fnd_FCS_SchedStop.

Access: Private

Parameters: None

Returns: Nothing
Fnd_FCS_SchedStopInternal
Project Method: Fnd_FCS_SchedStop

Asks the compile-check watcher started by Fnd_FCS_SchedStart to stop.

Sets Storage.sched.quitNow; the watcher notices on its next tick, so it can
  take up to 5 seconds to exit. The watcher removes Storage.sched on its way
  out, so calling this with no watcher running does nothing.

Access: Private

Parameters: None

Returns: Nothing
Fnd_FCS_SuggestRestartInternal
Project Method: Fnd_FCS_SuggestRestart

Offers a restart after the constants file has been rebuilt.

Call through CALL WORKER, so a startup rebuild is not held up by the dialog.

Access: Private

Parameters: None

Returns: Nothing
Fnd_FCS_TestAssertInternal

#DECLARE($ok_b : Boolean; $message_t : Text)

Project Method: Fnd_FCS_TestAssert ($ok_b : Boolean; $message_t : Text)

Records one assertion against the same Storage.test contract
Fnd_FCS_TestRunner reads, and writes it to the Logging component's log when
that component is installed.

The portable half of the harness. Fnd_Test_Assert is Foundation's own and
stays in Fnd_Test; it does the same bookkeeping and then writes through
Fnd_Log_UseLog, Fnd_Log_Enable and Fnd_Log_AddEntry. This copy reaches the
Logging component instead, and only if it is there, so the Fnd_FCS folder can
travel as a complete unit: devSync pairs folders by name, and a folder whose
harness lives in another folder is not one.

The log is named Fnd_FCS_Test, not Fnd_Test, and the difference is not
cosmetic. Foundation's Fnd_Log already owns Data/Logs/Fnd_Test.txt, and when
the Logging component is asked for a log of a name another writer holds it
drops the entry silently - no error, no file, nothing. Measured here on
21.1: an entry named zProbeLog wrote, one named Fnd_Test did not.

With no Logging component nothing is written, and nothing is lost: the tally
and the failure messages are in Storage.test, which is what
Fnd_FCS_TestRunner reports in schedulerResult.json.

Access: Private

Parameters:
  $ok_b      : Boolean : The condition being asserted
  $message_t : Text : What was expected, and what was found

Returns: Nothing
Fnd_FCS_TestEndInternal
Project Method: Fnd_FCS_TestEnd

Closes the run opened by Fnd_FCS_TestAssert and writes the tally to the
Logging component's log when that component is installed.

The portable half of the harness. Fnd_Test_End is Foundation's own and stays
in Fnd_Test; see Fnd_FCS_TestAssert for why both exist.

Access: Private

Parameters: None

Returns: Nothing
Fnd_FCS_TestRunnerInternal

#DECLARE($requestedAt_t : Text; $requestBody_t : Text)

Project Method: Fnd_FCS_TestRunner ($requestedAt_t : Text; $requestBody_t : Text)

Runs test methods on request and writes the results. Spawned by
Fnd_FCS_SchedStart on a request whose action is "test"; not called directly.
The request body is handed in rather than read from disk, because the watcher
has already consumed it.

The request names what to run, in any of three ways:
  { "method": "Test_Fnd_Data" }
  { "methods": ["Test_Fnd_Data"; "Fnd_Test_StripSpaces"] }
  { "filter": "Test_Fnd_@" }
with an optional "parameters" collection passed to each method, up to five.
An empty or unreadable request runs every test method.

Tests are named Test_Fnd_<module>, one or two per module rather than one per
function, so they sort together rather than scattering through the Fnd_ names.
The older Fnd_Test_<subject> names are still picked up while any remain.

Anything callable can be driven through here, not only tests. The documentation
rebuild is the standing example, and it takes a single options object rather
than five positional parameters:
  { "action": "test"; "method": "Fnd_FCS_WriteDocumentation";
    "parameters": [{"silent": true; "inline": true}] }

Results land in <Resources>/schedulerResult.json, always, including on failure.
requestedAt is echoed so a client can tell a fresh result from a stale one.

Interpreted mode only, and never preemptive: it executes arbitrary methods.

Access: Private

Parameters:
  $requestedAt_t : Text : Timestamp stamped by the watcher when it took the request
  $requestBody_t : Text : The request JSON, as read by the watcher

Returns: Nothing
Fnd_FCS_TestRunnerOnErrInternal
Project Method: Fnd_FCS_TestRunnerOnErr

Error handler installed by Fnd_FCS_TestRunner around each test method, so a
test that raises an error is recorded rather than stopping the run or opening
the debugger in the watcher process.

Access: Private

Parameters: None

Returns: Nothing
Fnd_FCS_ToggleDeclarationBlocksInternal

#DECLARE($ellipsis_b : Boolean; $suppressAlert_b : Boolean)->$report_o : Object

Project Method: Fnd_FCS_ToggleDeclarationBlocks ({$ellipsis_b {; $suppressAlert_b}}) --> Object

Switches variadic methods between their two declaration forms.

Access: Private

Parameters:
  $ellipsis_b      : Boolean : True for the modern form
  $suppressAlert_b : Boolean : True to skip the summary alert (optional)

Returns:
  $report_o : Object : { target ; changed : Collection ; alreadyCorrect ; unmarked : Collection }
Fnd_FCS_ToggleTypingBlockInternal

#DECLARE($commentOut_b : Boolean; $suppressAlert_b : Boolean)->$report_o : Object

Project Method: Fnd_FCS_ToggleTypingBlock ({$commentOut_b : Boolean {; $suppressAlert_b : Boolean}}) --> Object

Comments or uncomments the parameter typing block in
  Compiler_Fnd_MethodParameters.

Direct typing rejects C_XX(MethodName; $1) entries outright — 788 errors
  measured on 2026-08-08 — while the lower compilation paths require them.
  The same source therefore has to carry the block in one state or the
  other, so it is wrapped in /* */ rather than deleted, and this method
  moves it between the two.

The block is found by its delimiters, not by line number:
  // ==== BEGIN COMPILER TYPING BLOCK …
  // ==== END COMPILER TYPING BLOCK ====
The wrapper lines live inside them. Both states are idempotent, and the
  method is written only when the text actually changed.

With no parameter the target state comes from the running 4D: a version
  with Direct typing (20 R4 and later) wants the block commented out.

Modelled on OTr_z_Comment_Uncomment_OT_Code from the ObjectTools project.

Access: Private

Parameters:
  $commentOut_b    : Boolean : True to comment the block out, False to restore it (optional)
  $suppressAlert_b : Boolean : True to skip the summary alert (optional)

Returns:
  $report_o : Object : { changed ; state ; reason }
Fnd_FCS_TrnsListToJSONInternal

#DECLARE($inListName_t : Text)

Project Method: Fnd_FCS_TrnsListToJSON

Another quick and dirty routine that MUST NOT BE USED when deployed

Access: Shared

Parameters:
  $inListName_t : Text : Translation List Name
Fnd_FCS_VersionCapabilitiesInternal

#DECLARE($version_t : Text)->$capabilities_o : Object

Project Method: Fnd_FCS_VersionCapabilities --> Object

What the running 4D can do about parameter declarations.

Application version returns four characters: chars 1-2 the version, char 3
the R-release as a hex digit (0 for an LTS), char 4 the revision. "2007" is
20.7, "2130" is 21 R3, "20A0" is 20 R10.

The ellipsis form of #DECLARE arrived in 20 R3, Direct typing in 20 R4.
Neither exists on 20 LTS whatever settings.4DSettings says: 4D 20.7 leaves
compilation_path at "4" untouched, which is why the setting on its own is
not a safe signal for either decision.

Access: Private

Parameters:
  $version_t : Text : A version string to decode instead of the running 4D's,
     for testing (optional)

Returns:
  $capabilities_o : Object : { version ; major ; release ; key ; ellipsis ;
     directTyping ; uuidVersion }
Fnd_FCS_WriteClassDocumentationInternal
Project Method: Fnd_FCS_WriteClassDocumentation

Writes Documentation/Classes/<class>.md for every class in the project, so a
  class has a page in the Explorer's preview area the way a method does.

The companion to Fnd_FCS_WriteDocumentation rather than part of it: that one
  works through METHOD SET COMMENTS, which is a project method API and has no
  equivalent for classes, so the file has to be written directly.

It reads what is already in the source and reformats it. Nothing has to be
  written twice:
    the block comment at the top of the class file becomes the page's
      description;
    each Function line becomes a heading and a prototype;
    the comment lines immediately under a Function line become that
      function's description — the same lines the code editor shows in its
      help tip, so the two cannot disagree.

Functions whose names begin with an underscore are left out, matching 4D's
  own treatment of hidden classes and functions in code completion.

Takes no parameters, alerts about nothing, and returns nothing, so it is safe
  to drive headlessly:
    { "action": "test", "method": "Fnd_FCS_WriteClassDocumentation" }

Access: Private
Fnd_FCS_WriteDocumentationInternal

#DECLARE($options_v : Variant; $ToolTip_b : Boolean; $excludePrivate_b : Boolean; $silent_b : Boolean; $inline_b : Boolean)

Project Method: Fnd_FCS_WriteDocumentation {($options_v : Variant {; $ToolTip_b : Boolean {; $excludePrivate_b : Boolean {; $silent_b : Boolean {; $inline_b : Boolean}}}})}

This method will create documentation comments
  it is based on the assumption that you format your
  method header comments in the same manner as Foundation
The first parameter takes either form. An object bearing the options is the
  clearer call and the one the scheduler sends:
      Fnd_FCS_WriteDocumentation({methodName: "Fnd_Art"; silent: True; inline: True})
  Its properties are methodName, tooltip, excludePrivate, silent and inline;
  any left out take the defaults below. The positional form still works, so
  existing callers are unaffected:
      Fnd_FCS_WriteDocumentation(""; True; True)

The method name, by either route:
      (a) "" - All methods (or don't pass any parameters)
      (b) "Prefix" - Only methods which match a prefix (Eg. Fnd_Art)
      (c) "Specific method name" - write comments for that method

tooltip        - default True. Named as though it generates the tooltip; it
                 governs whether the leading <!-- --> block is written at all,
                 so False strips it from every file it touches.
excludePrivate - default False. True: exclude Private methods
silent         - default False. True: don't show a final "Finished" alert
inline         - default False. True: run in the calling process rather than
                 spawning. Use in headless/CI contexts.

Access: Private

Parameters:
  $options_v : Variant : An options object, or the method name / prefix as text
  $ToolTip_b : Boolean : Positional form only - write the tooltip block (optional)
  $excludePrivate_b : Boolean : Positional form only - exclude Private methods (optional)
  $silent_b : Boolean : Positional form only - suppress the Finished alert (optional)
  $inline_b : Boolean : Positional form only - run in the calling process (optional)
Fnd_FCS_WriteFailedResultInternal

#DECLARE($reason_t : Text; $requestedAt_t : Text; $requestBody_t : Text)

Project Method: Fnd_FCS_WriteFailedResult ($reason_t : Text {; $requestedAt_t : Text})

Writes a definite failure payload to <Resources>/schedulerResult.json.

The file-based compile-check protocol gives a client no way to distinguish
  "the compile is still running" from "the compile never ran", so every
  abnormal exit must land here rather than leaving a polling client waiting
  on a file that will never appear. errorCount is -1 to mark the payload as
  a non-result: the compiler was not reached, so no error count exists.

Access: Private

Parameters:
  $reason_t      : Text : Why the compile did not run (appended to the message)
  $requestedAt_t : Text : Timestamp the watcher accepted the request (optional)

Returns: Nothing
Fnd_File_CompressInternal

#DECLARE($inPath_t : Variant; $inDelete_b : Boolean)

Project Method: Fnd_File_Compress (Path to file/folder {; Delete Source })

Creates a zip archive of a file or folder passed to it
It does this in another thread so as not to
slow down execution of main thread

A document is archived beside itself keeping its extension, so
"report.txt" becomes "report.txt.zip". A folder drops its trailing separator,
so "payload/" becomes "payload.zip"; a package keeps its extension the way a
document does, so "bundle.app" becomes "bundle.app.zip".

Pass a path, or an object carrying the options a bare path cannot:
```
  Fnd_File_Compress({sourceDocument: $path_t; deleteSource: True; synchronous: True})
```
synchronous runs the work in the calling process instead of handing it to the
"$zip worker" process, and is available only through the object form.
deleteSource defaults to True for a path and to False for an object.

Access: Private

Parameters:
  $inPath_t : Variant : Path to the file or folder, or an options object
  $inDelete_b : Boolean : Delete source document (optional - default is to delete)
Fnd_File_DeleteEmptyFolderInternal

#DECLARE($PathName_t : Text)

Project Method: Fnd_File_DeleteEmptyFolder (Path)

Deletes folder & subfolders (must be empty of files)

A folder still holding a document cannot go, and raises an error rather than
removing it. That is the difference from Fnd_File_DeleteFolder, which takes
the documents with it. The path may be given with or without its trailing
separator.

Access: Private

Parameters:
  $PathName_t : TEXT : Path to the folder
Fnd_File_DeleteFolderShared

#DECLARE($PathName_t : Text)

Project Method: Fnd_File_DeleteFolder (Path)

Deletes a folder and all contained files and folders

A path that is not a folder is a no-op. The path may be given with or without
its trailing separator.

Access: Shared

Parameters:
  $PathName_t : TEXT : The Path to the folder
Fnd_File_FilePathToFileNameInternal

#DECLARE($originalPath : Text)->$fileName_t : Text

Project Method: Fnd_File_FilePathToFileName (Path to document) --> File Name

Takes a fully qualified path name and returns just the file name.

Accepts a platform path or a POSIX path. A path with no separator in it comes
back whole, and a path ending at a separator gives an empty name.

Access: Private

Parameters:
  $originalPath : Text : Path to a document

Returns:
  $fileName_t : Text : The document name
Fnd_File_FilePathToFolderNameInternal

#DECLARE($originalPath : Text)->$folderPath_t : Text

Project Method: Fnd_File_FilePathToFolderName (Path to a document) --> The containing folder

From the 4D Documentation. Takes a fully qualified path name and strips
  off the file name so we’re left with just the path name to the folder.
from 4DToday tips

Accepts a platform path or a POSIX path, and answers in the separators it was
given. The trailing separator is kept. A path with no separator in it comes
back whole, so a bare file name is returned as though it were a folder path.

Access: Private

Parameters:
  $originalPath : text : Path to a document

Returns:
  $folderPath_t : text : Path to the containing folder
Fnd_Find_AddCustomShared

#DECLARE($label_t : Text; $method_t : Text; $inPosition_i : Integer)

Project Method: Fnd_Find_AddCustom (label; method name{; position})


Adds a custom field to the search dialog.


Access: Shared

Parameters:

  $label_t : Text : The label to use

  $method_t : Text : The method to call

  $inPosition_i : Longint : The position (optional)


Returns: Nothing
Fnd_Find_AddFieldShared

#DECLARE($field_ptr : Pointer; $inPosition_i : Integer)

Project Method: Fnd_Find_AddField (->field{; position})

Lets the developer add a field to the search dialog.  If a position isn't
  specified, the field is added to the end of the list.

Access: Protected

Parameters:
  $field_ptr : Pointer : A pointer to the field to add
  $inPosition_i : Longint : The position in which to add the item (optional)

Returns: Nothing
Fnd_Find_AddItemShared

#DECLARE($inPosition_i : Integer; $label_t : Text; $method_t : Text; $inField_ptr : Pointer; $inFieldType_i : Integer)

Project Method: Fnd_Find_AddItem (position; label; method{; ->field{; type}})

Called by the protected "Fnd_Find_Add" routines to add stuff to the arrays.
If the label is blank, the field name will be used.

Access: Private

Parameters:
  $inPosition_i : Longint : The position
  $label_t : Text : The label
  $method_t : Text : The method
  $inField_ptr : Pointer : The field (optional)
  $inFieldType_i : Longint : The field's type (optional)

Returns: Nothing
Fnd_Find_AddMultiFieldShared

#DECLARE($field_ptr : Pointer; $label_t : Text; $inPosition_i : Integer)

Project Method: Fnd_Find_AddMultiField (->array of field ptrs; label{; position})


Lets the developer add one item for searching multiple fields.


Access: Shared


Parameters:

  $field_ptr : Pointer : A pointer to an array of pointers

  $label_t : Text : The label for the popup item

  $inPosition_i : Longint : The position in which to add the first item (optional)


Returns: Nothing
Fnd_Find_AddSeparatorShared

#DECLARE($inPosition_i : Integer)

Project Method: Fnd_Find_AddSeparator ({position})


Adds a separator line to the list of searchable fields.


Access: Shared


Parameters:

  $inPosition_i : Longint : Position of the separator (optional)


Returns: Nothing
Fnd_Find_AddSubfieldShared

#DECLARE($field_ptr : Pointer; $fieldType_i : Integer; $inPosition_i : Integer)

Project Method: Fnd_Find_AddSubfield (->subfield; field type{; position})

Lets the developer add a subfield to the Find dialog.  The field type
  must be specified because we can't procedurally determine this like we
  can for fields.  If a position isn't specified, the field is added to the end
  of the list.

Access: Shared

Parameters:
  $field_ptr : Pointer : A pointer to the field to add
  $fieldType_i : Longint : The type of the subfield
  $inPosition_i : Longint : The position in which to add the item (optional)

Returns: Nothing
Fnd_Find_AddTableShared

#DECLARE($table_ptr : Pointer; $inPosition_i : Integer)

Project Method: Fnd_Find_AddTable (->table{; position})

Loads the visible, searchable fields for the specified table
  into an array named Fnd_Find_Fields_aptr.

Access: Protected

Parameters:
  $table_ptr : Pointer : A pointer to the table to add
  $inPosition_i : Longint : The position in which to add the item (optional)

Returns: Nothing
Fnd_Find_BestPopupSizeShared

#DECLARE($array_ptr : Pointer)->$bestPopupSize_i : Integer

Project Method: Fnd_Find_BestPopupSize (->popup array) --> Number

Returns the best object width to use for a pop-up menu form object.

Access: Private

Parameters:
  $array_ptr : Pointer : The array associated with the popup

Returns:
  $bestPopupSize_i : Longint : The best object size for the pop-up
Fnd_Find_DisplayShared
Project Method: Fnd_Find_Display

Displays a Find dialog and performs the query.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Find_EngineShared

#DECLARE($searchScope_t : Text)

Project Method: Fnd_Find_Engine ("Query" or "Query Selection")


Does the grunt work.


Access: Shared

Parameters:

  $searchScope_t : Text : Either "Query" or "Query Selection"


Returns: Nothing
Fnd_Find_Engine2Shared

#DECLARE($searchScope_t : Text; $field_ptr : Pointer; $operator_t : Text)

Project Method: Fnd_Find_Engine2 ("Query" or "Query Selection"; ->field; operator)

Adds a query to the built search.

Access: Shared

Parameters:
  $searchScope_t : Text : Either "Query" or "Query Selection"
  $field_ptr : Pointer : A pointer to the field to search
  $operator_t : Text : The operator code to use

Returns: Nothing
Fnd_Find_Engine3Shared

#DECLARE($searchScope_t : Text; $field_ptr : Pointer; $operator_t : Text)

Project Method: Fnd_Find_Engine3 ("Query" or "Query Selection"; ->field; operator)

Adds a query to the built search.
Exactly the same as Fnd_Find_Engine2, but with "|" operators.

Access: Shared

Parameters:
  $searchScope_t : Text : Either "Query" or "Query Selection"
  $field_ptr : Pointer : A pointer to the field to search
  $operator_t : Text : The operator code to use

Returns: Nothing
Fnd_Find_GetDistinctAttributesInternal

#DECLARE($Field_ptr : Pointer; $Array_ptr : Pointer; $inCurrentSelection_b : Boolean)

Project Method: Fnd_Find_GetDistinctAttributes (Field Pointer; Array Pointer {; Selection Only})

This method returns the list of distinct paths from the field listed.
  By default this will be for all records in the table
  rather than just the current selection.
By passing True in the {optional} second parameter
  only paths for the current selection will be returned.

Access: Shared

Parameters:
  $Field_ptr : Pointer : Pointer to an object field
  $Array_ptr : Pointer : Pointer to a text array to retreive the attribute paths
  $inCurrentSelection_b : Boolean : (optional) Return only paths for current selection
Fnd_Find_GetDistinctAttributes2Internal

#DECLARE($fieldPointer_ptr : Pointer; $arrayPointer_ptr : Pointer)

Project Method: Fnd_Find_GetDistinctAttributes2 (Field Pointer; Array Pointer)

This method returns the list of distinct paths from the field listed.
  This method Executes on the server
  By default this will be for all records in the table
  rather than just the current selection.

Access: Private

Parameters:
  $fieldPointer_ptr : Pointer : Pointer to an object field
  $arrayPointer_ptr : Pointer : Pointer to a text array to retreive the attribute paths
Fnd_Find_GetDistinctAttributes3Internal

#DECLARE($param1_ptr : Pointer; $param2_i : Integer)

Project Method: Fnd_Find_GetDistinctAttributes3

Description

Access: Shared

Parameters:
  $param1_ptr : Type : Description
  $x : Type : Description (optional)
Fnd_Find_GetExtraWidthShared

#DECLARE()->$extraWidth_i : Integer

Project Method: Fnd_Find_GetExtraWidth --> Number

Returns the extra width needed to display the Find dialog so none of the text in the
  pop-up menus gets truncated.
Lots of stuff is hard-coded here because we can't get it procedurally.  :-(

Access: Private

Parameters: None

Returns:
  $extraWidth_i : Longint : The extra width required
Fnd_Find_InfoShared

#DECLARE($request_t : Text)->$reply_t : Text

Project Method: Fnd_Find_Info (label) --> Text

Returns requested information.  See the Fnd_Gen_ComponentInfo
  method for more information.

Access: Shared

Parameters:
  $request_t : Text : Info desired ("version" or "name")

Returns:
  $reply_t : Text : Response
Fnd_Find_InitInternal
Project Method: Fnd_Find_Init

Initializes both the process and interprocess variables used by the Fnd_Find routines.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Find_LocalizeShared
Project Method: Fnd_Find_Localize

Passed the localization strings to the General and (if available) Localization components.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Find_NowShared

#DECLARE($searchScope_t : Text)

Project Method: Fnd_Find_Now ("Query" or "Query Selection")

Finishes up the built search.  This is separate from the Fnd_Find_Engine routine
  so it's possible to change the dialog to a multi-criteria find.

Access: Shared

Parameters:
  $searchScope_t : Text : Either "Query" or "Query Selection"

Returns: Nothing
Fnd_Find_PrefsGetShared

#DECLARE($prefName_t : Text)->$prefValue_t : Text

Project Method: Fnd_Find_PrefsGet (pref name) --> Text

Gets a value from the user preferences if the Fnd_Pref component is available.

Access: Private

Parameters:
  $prefName_t : Text : The preference name

Returns:
  $prefValue_t : Text : The saved value
Fnd_Find_PrefsPutShared

#DECLARE($name_t : Text; $value_t : Text)

Project Method: Fnd_Find_PrefsPut (pref name; text value)

Adds an item to the user's preferences if the Fnd_Pref component is available.

Access: Private

Parameters:
  $name_t : Text : The preference name
  $value_t : Text : The value to store

Returns: Nothing
Fnd_Find_SetEditorButtonShared

#DECLARE($label_t : Text; $inMethod_t : Text)

Project Method: Fnd_Find_SetEditorButton (label{; method})

Allows the developer to hide or modify the Query Editor button.

Access: Shared

Parameters:
  $label_t : Text : The new label
  $inMethod_t : Text : The method to run (optional)

Returns: Nothing
Fnd_Find_SizeArrayObjectShared

#DECLARE($object_ptr : Pointer; $alignment_i : Integer)->$diffWidth_i : Integer

Project Method: Fnd_Find_SizeArrayObject (->object; alignment) --> Number

Sets the best size for an array based form object based on the contents it displays.
Rather than using BEST OBJECT SIZE, we calculate the size the same way we
  did before opening the dialog using the Fnd_Find_GetExtraWidth method.

Access: Private

Parameters:
  $object_ptr : Pointer : A pointer to the form object
  $alignment_i : Longint : The alignment (side not to move)

Returns:
  $diffWidth_i : Longint : The increase in the button size
Fnd_Find_UpdateOperatorsShared
Project Method: Fnd_Find_UpdateOperators


Updates the Search Operators pop-up menu depending on the type of the selected field.


Access: Private


Parameters: None


Returns: Nothing
Fnd_FontDiscoveryInternal
Project Method: Fnd_FontDiscovery

Discovers the native fonts on this computer

Access: Private
Fnd_Gen_AlertShared

#DECLARE($message_t : Text; $button_t : Text)

Project Method: Fnd_Gen_Alert (message{; button text})

Displays an alert message.  Uses the Foundation Dialog module alert if available.

Access: Private

Parameters:
  $message_t : Text : The alert message text
  $button_t : Text : The button label (optional)

Returns: Nothing
Fnd_Gen_BugAlertShared

#DECLARE($methodName_t : Text; $description_t : Text; $options_o : Object)

Project Method: Fnd_Gen_BugAlert (method{; details{; options}})

Reports a code bug without blocking the caller: a Foundation log entry, a
  line in the system standard output, and an alert shown by another process
  so this one carries on.

The alert shows the method and the description only. Diagnostic detail
  belongs in options.columns, which is logged but not shown.

options.seconds turns the alert into a self-dismissing notification of that
  many seconds instead of a modal dialog. Pass it from any call site that
  knows nobody is watching: a modal in an unattended process waits forever,
  and the compile-check scheduler stops answering behind one. A notification
  is not guaranteed to be seen - the OS may suppress or silence it - so it
  buys "will not block", not "will be read".

```
  Fnd_Gen_BugAlert(Current method name; "No number known for \""+$name_t+"\".")
  Fnd_Gen_BugAlert(Current method name; "Lookup failed."; {columns: [$module_t; $code_t]})
```

Access: Shared

Parameters:
  $methodName_t : Text : Method name (4D's 'Current method name' function doesn't work in components)
  $description_t : Text : Details about the problem (optional)
  $options_o : Object : { columns : Collection ; seconds : Integer } extra detail, logged only, and
      the self-dismiss time in seconds; 0 or absent means a sticky dialog (optional)

Returns: Nothing
Fnd_Gen_BugAlert2Shared

#DECLARE($title_t : Text; $description_t : Text; $options_o : Object)

Project Method: Fnd_Gen_BugAlert2 (title; description{; options})

Reports a code bug without blocking the caller. Kept as a name only:
  Fnd_Gen_BugAlert now does this, and this passes straight through to it.

Prefer Fnd_Gen_BugAlert in new code. This one exists so that the call sites
  migrated to it between 2026-05-09 and 2026-08-14 keep working, and so that
  a host calling it is unaffected.

Access: Shared

Parameters:
  $title_t : Text : Short title, usually Current method name
  $description_t : Text : Shown in the alert and logged
  $options_o : Object : { columns : Collection } extra detail, logged only (optional)

Returns: Nothing
Fnd_Gen_ButtonTextShared
Project Method: Fnd_Gen_ButtonText (->button; text; alignment{; ->obj1..->objN}) --> Number

A replacement for 4D's BUTTON TEXT command.
Sets the button text and resizes the button if necessary. Also moves any
  adjacent form objects so they stay properly aligned with the modified button.

Due to a bug in 4D 2003.1, this routine won't work properly if the
  primary button is set as the default button.  If this is a problem, UPGRADE!

Access: Shared

Parameters:
  $button_v : Variant : A pointer to the button, or its name
  $text_t : Text : New button text
  $alignment_i : Longint : Which end to keep stationary (optional)
     2 or Align Left -  Keep left side anchored
     3 or Center - Center the button on its original position
     4 or Alight Right - Keep right side anchored
  $4..$N : Variant : Other form objects to move, by pointer or by name

Returns:
  $move_i : Longint : The increase in the button size
Fnd_Gen_CanCallHostMethodShared

#DECLARE($methodName_t : Text)->$callable_b : Boolean

Project Method: Fnd_Gen_CanCallHostMethod --> Boolean

True when EXECUTE METHOD, called from the component, will actually reach the
  named host method: the method exists and carries "Shared by components and
  host database". One that exists unshared raises -10508 when called.

Not thread safe, because METHOD Get attribute is not - probe once and cache
  the answer rather than asking per call.

The name must be literal. METHOD GET NAMES honours the @ wildcard, so a name
  containing one answers for whatever it happens to match.

Access: Shared

Parameters:
  $methodName_t : Text : Name of the host method

Returns:
  $callable_b : Boolean : True when the method exists and is shared
Fnd_Gen_CancelQuitShared
Project Method: Fnd_Gen_CancelQuit


Call this to end Foundation's attempts to quit.


Access: Shared


Parameters: None


Returns: Nothing
Fnd_Gen_CenterWindowShared

#DECLARE($width_i : Integer; $height_i : Integer; $inType_i : Integer; $inPosition_i : Integer; $inTitle_t : Text; $inHasCloseBox_b : Boolean)->$windowRef_i : Integer

Project Method: Fnd_Gen_CenterWindow (width; height{; type{; position{; title{; close box?}}}})

Opens a new window centered on the screen or over the frontmost window
  (depending on the value of Fnd_Gen_WindowPosition_i).

Access: Shared

Parameters:
  $width_i : Longint : Width of the new window
  $height_i : Longint : Height of the new window
  $inType_i : Longint : The window type (optional)
  $inPosition_i : Longint : Window position (optional)
  $inTitle_t : Text : The window title (optional)
  $inHasCloseBox_b : Boolean : Has a close box (optional)

The window position can be one of these:
  1 = Fnd_Wnd_CenterOnScreen = Centered on screen
  2 = Fnd_Wnd_CenterOnWindow = Centered over frontmost window

Returns:
  $windowRef_i : Longint : The window reference number
Fnd_Gen_ComponentAvailableShared

#DECLARE($component_t : Text)->$available_b : Boolean

Project Method: Fnd_Gen_ComponentAvailable (component name) --> Boolean

Returns true if the component is installed.

Access: Shared

Parameters:
  $component_t : Text : The name of the component

Returns:
  $available_b : Boolean : True if the component is available
Fnd_Gen_ComponentCheckShared

#DECLARE($callingComponent_t : Text; $requiredComponent_t : Text)

Project Method: Fnd_Gen_ComponentCheck (calling component; required component)

Alerts the developer if the specified component isn't available.  Then ends execution.

Access: Shared

Parameters:
  $callingComponent_t : Text : The internal name of the calling component
  $requiredComponent_t : Text : The internal name of the required component

Returns: Nothing
Fnd_Gen_ComponentDataShared

#DECLARE($namesArray_ptr : Pointer; $versionsArray_ptr : Pointer; $crntVersionsArray_ptr : Pointer)

Project Method: Fnd_Gen_ComponentData (->prefixes array{; ->installed versions array{; ->current versions array}})

Modifies the arrays to contain the installed Foundation
  component prefixes, installed versions, and current versions.

Access: Shared

Parameters:
  $namesArray_ptr : Pointer : A text array to receive the component prefixes
  $versionsArray_ptr : Pointer : A text array to receive the installed component version numbers (optional)
  $crntVersionsArray_ptr : Pointer : A text array to receive the current component version numbers (optional)

Returns: Nothing
Fnd_Gen_ComponentInfoShared

#DECLARE($component_t : Text; $request_t : Text)->$reply_t : Text

Project Method: Fnd_Gen_ComponentInfo (component name; info requested) --> Text

Pass this method a component name and name for the information
  you want. If the component exists, Foundation will call its _Info routine,
  pass it the info label, and return the result. This allows you to get
  information from a component in a single call, rather than having to
  first test to see if the component is available.
If the component isn't installed, "Component Not Available" will be returned.
If the component doesn't have an _Info routine,
  "Component Did Not Recognize Request" will be returned.
We recommend that if a component doesn't recognize a request it should
  return the text "Fnd_LabelNotRecognized".  This routine will return this
  response as "Component Did Not Recognize Request".
These values will not be localized so the calling method can test for them.

Access: Shared

Parameters:
  $component_t : Text : The component name
  $request_t : Text : Info desired

Returns:
  $reply_t : Text : Response from component
Fnd_Gen_CurrentFormTypeShared

#DECLARE($inForm_i : Integer)->$currentFormType_i : Integer

Project Method: Fnd_Gen_CurrentFormType ({form type}) --> Number

If no parameters are passed, this method returns the type of the
  currently displayed form.  Pass a form type to set the type of the
  currently displayed form.
Designed specifically so we can tell if the window is displaying an input
  form or an output form.

Can be one of these:
  0 = Fnd_Gen_NoForm = No window
  1 = Fnd_Gen_UnknownForm = Unknown form type
  2 = Fnd_Gen_OutputForm = An output form
  3 = Fnd_Gen_InputForm = An input form
  4 = Fnd_Gen_PreferencesForm = The Preferences window
  5 = Fnd_Gen_AboutForm = The About box

Access: Shared

Parameters:
  $inForm_i : Longint : The form type constant

Returns:
  $currentFormType_i : Longint : The form type constant
Fnd_Gen_CurrentTableShared

#DECLARE($inPointerTableMake_ptr : Pointer)->$currentTable_ptr : Pointer

Project Method: Fnd_Gen_CurrentTable ({->table}) --> Pointer

Returns a pointer to the current table. If no table is current, a nil
  pointer is returned.
Pass a pointer to a table to this routine to make it the current table.

Access: Shared

Parameters:
  $inPointerTableMake_ptr : Pointer : A pointer to the table to make current (optional)

Returns:
  $currentTable_ptr : Pointer : The current table
Fnd_Gen_DummyMethodShared
Project Method: Fnd_Gen_DummyMethod


A generic method with no code.  This is useful for assigning as the close box method

  for new windows (handle the close in the form method) or to use with ON ERR CALL

  to disable any automatic reaction to errors.


**Deprecated 2026-08-22. Call Fnd_Gen_SilentError instead.** The body was
  always empty, so the two methods were never different. This one served
  six ON ERR CALL sites and one Open window close box.

Access: Private


Parameters: None


Returns: Nothing
Fnd_Gen_FieldIsVisibleShared

#DECLARE($inField_ptr : Variant; $inFieldNumber_i : Integer)->$isFieldVisible_b : Boolean

Project Method: Fnd_Gen_FieldIsVisible ( fieldPtr | tableNum {; fieldNum}  --> ReturnType

Determines if a field is visible

Access: Shared

Parameters:
Variant One :  :
  $inField_ptr : Pointer : Field pointer
Variant Two :  :
  $inField_ptr : Longint : Table number
  $inFieldNumber_i : Longint : Field number

Returns:
  $isFieldVisible_b : Boolean : True - the field is visible
Fnd_Gen_FileNameShared

#DECLARE($path_t : Text)->$fileName_t : Text

Project Method: Fnd_Gen_FileName (path) --> Text

Returns the file name from the full pathname.

Access: Shared

Parameters:
  $path_t : Text : A full pathname

Returns:
  $fileName_t : Text : The file name at the end of the pathname
Fnd_Gen_FormMethodShared
Project Method: Fnd_Gen_FormMethod

Standard form method for non-modal forms.
Handles the close box and quitting the application.
 Responds to
   On Activate
   On Close Box
   Fnd_Gen_QuitNow
   Fnd_Wnd_CloseAllWindows

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Gen_GetArrayWidthShared

#DECLARE($array_ptr : Pointer; $fontName_t : Text; $fontSize_i : Integer; $fontStyle_i : Integer)->$maxWidth_i : Integer

Project Method: Fnd_Gen_GetArrayWidth (->text array; font; size; style) --> Number

Returns the width required to display the array text given the specified font settings.
Only measures the text - does not take into account the object used to display the text.
Basically this just measures the width of the longest element.

Access: Shared

Parameters:
  $array_ptr : Pointer : The text array to measure
  $fontName_t : Text : The font name
  $fontSize_i : Longint : The font size
  $fontStyle_i : Longint : The font style

Returns:
  $maxWidth_i : Longint : The width of the longest element
Fnd_Gen_GetDatabaseInfoShared

#DECLARE($label_t : Text)->$value_t : Text

Project Method: Fnd_Gen_GetDatabaseInfo (info type) --> Text

Gets the specified database information value.
Use the Fnd_Gen_SetDatabaseInfo to set this information.

Access: Shared

Parameters:
  $label_t : Text : The info type label

Returns:
  $value_t : Text : The value
Fnd_Gen_GetStringShared

#DECLARE($moduleName_t : Text; $internalLabel_t : Text; $inReplacementString1_t : Text; $inReplacementString2_t : Text; $inReplacementString3_t : Text)->$localisedString_t : Text

Project Method: Fnd_Gen_GetString (component; internal string{; replace1..replace5})

Calls the Foundation localization routines if they're available.
  If not, the default English string is returned.

Access: Shared

Parameters:
  $moduleName_t : Text : The component's code ("Fnd_xxx")
  $internalLabel_t : Text : The lookup code
  $inReplacementString1_t..$inReplacementString3_t : Text : Replacement strings (optional)

Returns:
  $localisedString_t : Text : The localized string
Fnd_Gen_InfoShared

#DECLARE($request_t : Text)->$reply_t : Text

Project Method: Fnd_Gen_Info (label) --> Text

Returns requested information.  See the Fnd_Gen_ComponentInfo
  method for more information.

Responds to:
  version: The current version of the component
  name: The name of the component
  minimum_extras_version: The minimum version number of Foundation Extras to compare to the Fnd_Gen_ExtrasVersion constant
  minimum_extras_version_string: The minimum version number of Foundation Extras as a string
  compiled: Whether the component itself is running compiled, as the text "True" or "False" (not "1"/"0") — evaluated inside the component, so a host can tell its own compiled state from Foundation's

Access: Shared

Parameters:
  $request_t : Text : Info desired

Returns:
  $reply_t : Text : Response
Fnd_Gen_InitInternal
Project Method: Fnd_Gen_Init

Initializes both the process and interprocess variables used by the Fnd_Gen routines.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Gen_IsRunningShared

#DECLARE()->$isRunning_b : Boolean

Project Method: Fnd_Gen_IsRunning --> Boolean

True when Foundation is loaded as a component inside a host, rather than
  being open as a project in its own right.

Access: Shared

Parameters: None

Returns:
  $isRunning_b : Boolean : True when running inside a host
Fnd_Gen_LaunchAsNewProcessShared

#DECLARE($methodName_t : Text; $newProcessName_t : Text)->$go_b : Boolean

Project Method: Fnd_Gen_LaunchAsNewProcess (method name; process name) --> Boolean


Launches the specified process as a new process.  If the process is already

  running, it's just brought to the front.


Access: Shared


Parameters:

  $methodName_t : Text : The method name to launch

  $newProcessName_t : Text : The name to give the new process


Returns:

  $go_b : Boolean : True if we're in a new process
Fnd_Gen_LocalizeShared
Project Method: Fnd_Gen_Localize

Passed the localization strings to the General and (if available) Localization components.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Gen_MenuBarShared

#DECLARE($inMenuBarName_t : Text)

Project Method: Fnd_Gen_MenuBar ({menu bar name})

If the Menu component is installed, it is called to handle the menu bar.
If it's not, nothing happens with the menus.

Access: Shared

Parameters:
  $inMenuBarName_t : Text : menu bar name (optional)

Returns: Nothing
Fnd_Gen_PlatformShared

#DECLARE()->$platformNumber_i : Integer

Project Method: Fnd_Gen_Platform --> Number

Returns the platform number.
Returns 10 if we're running on Mac OS X.
Returns 3 if we're running on Windows.

Access: Shared

Parameters: None

Returns:
  $platformNumber_i : Longint : The platform number
Fnd_Gen_PlugInAvailableShared

#DECLARE($plugIn_t : Text)->$available_b : Boolean

Project Method: Fnd_Gen_PlugInAvailable (plug-in name) --> Boolean

Returns true if the plug-in is installed. This is done by executing a valid
  call to the plug-in, then checking to see if 4D set the Error variable to
  something other than zero.

Access: Shared

Parameters:
  $plugIn_t : Text : The name of the plug-in

Returns:
  $available_b : Boolean : True if the plug-in is available
Fnd_Gen_PositionRShared

#DECLARE($find_t : Text; $inString_t : Text)->$posLast_i : Integer

Project Method: Fnd_Gen_PositionR (find; string) --> Number

Just like 4D's Position function, but work backwards.

Access: Shared

Parameters:
  $find_t : Text : The string to find
  $inString_t : Text : The string to search in

Returns:
  $posLast_i : Longint : The position of the first character
Fnd_Gen_QuitNowShared

#DECLARE($inQuit_b : Boolean)->$quitNow_b : Boolean

Project Method: Fnd_Gen_QuitNow ({quit?}) --> Boolean

Returns True if the user wants to quit. Pass True to tell Foundation
  to do its quit stuff now.

Access: Shared

Parameters:
  $inQuit_b : Boolean : Cause Foundation to quit now? (optional)

Returns:
  $quitNow_b : Boolean : True if it's time to quit
Fnd_Gen_QuittingShared

#DECLARE($setQuittingStatus_b : Boolean)->$isQuitting_b : Boolean

Project Method: Fnd_Gen_Quitting ({$setQuittingStatus_b : Boolean}) --> Boolean

Reports whether the application is shutting down, and optionally sets it.

Getter and setter in one, on the usual Foundation pattern: called with no
  parameter it reports, called with one it sets and then reports.

Access: Shared

Parameters:
  $setQuittingStatus_b : Boolean : Sets the quitting state (optional)

Returns:
  $isQuitting_b : Boolean : The state after any change
Fnd_Gen_Reg_AlertShared

#DECLARE($message_t : Text)

Project Method: Fnd_Gen_Reg_Alert (message)

Displays Foundation's Alert dialog if available. Otherwise displays a 4D alert.

Method Type: Private

Access: Shared

Parameters:
  $message_t : Text : The text message to display

Returns: Nothing
Fnd_Gen_Reg_BuyNowButtonMethodShared
Project Method: Fnd_Gen_Reg_BuyNowButtonMethod


Called when one of the Buy Now buttons is clicked.


Method Type: Private


Access: Shared

Parameters: None


Returns: Nothing
Fnd_Gen_Reg_CheckTimoutShared
Project Method: Fnd_Gen_Reg_CheckTimout

Checks to see if we've reached the demo timeout value.  If so, an alert dialog is displayed
  and ABORT is called.

Method Type: Private

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Gen_Reg_DemoDialogShared
Project Method: Fnd_Gen_Reg_DemoDialog

Displays the demo message at startup.  Called as a new process
  from Fnd_Reg_Startup

Method Type: Private

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Gen_Reg_GetActivationCodeShared

#DECLARE()->$activationCode_t : Text

Project Method: Fnd_Gen_Reg_GetActivationCode --> Text

Returns the activation code that's been stored in the list.
  Returns an empty string if the program hasn't been registered yet.

Method Type: Private

Access: Shared

Parameters: None

Returns:
  $activationCode_t : Text : The activation code
Fnd_Gen_Reg_GetUserNameShared

#DECLARE()->$registeredUserName_t : Text

Project Method: Fnd_Gen_Reg_GetUserName --> Text

Returns the name of the registered user.  Returns an empty string
  if the program hasn't been registered yet.

Method Type: Private

Access: Shared

Parameters: None

Returns:
  $registeredUserName_t : Text : The name of the registered user
Fnd_Gen_Reg_GetValueForElementShared

#DECLARE($elementName_t : Text)->$value_t : Text

Project Method: Fnd_Gen_Reg_GetValueForElement (element) --> Text

Returns the value for the specified element in the Foundation registration xml file.

Access: Private

Parameters:
  $elementName_t : Text : The name of the element to find

Returns:
  $value_t : Text : Its value
Fnd_Gen_Reg_LicenseFilePathShared

#DECLARE()->$licenseFilePath_t : Text

Project Method: Fnd_Gen_Reg_LicenseFilePath --> Path

Returns the path to the license file.

Access: Private

Parameters: None

Returns:
  $licenseFilePath_t : Text : File path
Fnd_Gen_Reg_RegButtonMethodShared
Project Method: Fnd_Gen_Reg_RegButtonMethod

Called from the OK buttons in the "Fnd_Gen_Reg_RegisterDialog" form.

Method Type: Private

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Gen_Reg_RegisterShared

#DECLARE($activationCode_t : Text; $userName_t : Text)

Project Method: Fnd_Gen_Reg_Register (activation code; user name)


Call to register the product.  Sets the OK variable to 1 if the product gets registered.

  Sets the Error variable if there's a problem.

This doesn't check to see if it's already been registered, so it can be called

  to change the registration at any time.  But only does the update if the

  user name and activation code are valid.


Method Type: Private


Access: Shared

Parameters:

  $activationCode_t : Text : Activation code

  $userName_t : Text : User name


Returns:

  $0 : Longint : Description
Fnd_Gen_Reg_SaveRegInfoShared

#DECLARE($userName_t : Text; $activationCode_t : Text)

Project Method: Fnd_Gen_Reg_SaveRegInfo (user name; activation code)

Returns the name of the registered user.  Returns an empty string
  if the program hasn't been registered yet.

Method Type: Private

Access: Shared

Parameters:
  $userName_t : Text : User name
  $activationCode_t : Text : Activation code

Returns: Nothing
Fnd_Gen_Reg_StartupShared
Project Method: Fnd_Gen_Reg_Startup

Call when launching the database to initialize the registration routines.

Method Type: Private

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Gen_Reg_UpdateStateShared
Project Method: Fnd_Gen_Reg_UpdateState


Updates the <>Fnd_Gen_Reg_State_i variable.  Don't check this variable directly,

  call Fnd_Gen_Reg_RegistrationState instead.


Method Type: Private


Access: Shared

Parameters: None


Returns:

  $0 : Longint : Description
Fnd_Gen_Reg_ValidateInternal

#DECLARE($userName_t : Text; $enteredActivationCode_t : Text)->$isValid_b : Boolean

Project Method: Fnd_Gen_Reg_Validate (user name; activation code) --> Boolean

Returns True if a valid activation code was passed for the specified
  product number and user name.

Method Type: Private

Access: Private

Parameters:
  $userName_t : Text : The user's name
  $enteredActivationCode_t : Text : The entered activation code

Returns:
  $isValid_b : Boolean : True if the user name and activation code are valid for this product.
Fnd_Gen_RemoveActivationCodeShared
Project Method: Fnd_Gen_RemoveActivationCode

Removes the activation code from the database so the developer can share
  the source code with the Foundation components installed.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Gen_RequiredCompilerMethodInternal
Project Method: Fnd_Gen_RequiredCompilerMethod

Creates the Compiler_Fnd_HookAndHost method in the host database if it
  doesn't already exist. If it does already exist, nothing happens.
This single method replaces the old per-method Compiler_Fnd_Host_XXX
  methods: it gathers the classic parameter typing entries for every
  method that Fnd_Gen_RequiredHostMethod and Fnd_Gen_RequiredHookMethod
  can generate.

Access: Private

Parameters: None

Returns: Nothing

Called from Fnd_Gen_RequiredHostMethod and Fnd_Gen_RequiredHookMethod
Fnd_Gen_RequiredHookMethodShared

#DECLARE($methodName_t : Text)

Project Method: Fnd_Gen_RequiredHookMethod (method name)

Creates the specified method in the host database if it doesn't already exist.
If it does already exist, nothing happens.

Access: Shared

Parameters:
  $methodName_t : Text : The name of the method to create

Returns: Nothing
Fnd_Gen_RequiredHostMethodShared

#DECLARE($methodName_t : Text)

Project Method: Fnd_Gen_RequiredHostMethod (method name)

Creates the specified method in the host database if it doesn't already exist.
If it does already exist, nothing happens.

Access: Shared

Parameters:
  $methodName_t : Text : The name of the method to create

Returns: Nothing

called from Fnd_Shell_OnStartup
 be sure to update Fnd_Shell_OnStartup when adding items here
Fnd_Gen_ResetShared
Project Method: Fnd_Gen_Reset

Resets all of the available Foundation components.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Gen_RunningInHostShared

#DECLARE($setFnd_Gen_RunningInHost_b : Boolean)->$isRunningInHost_b : Boolean

Wayne Stewart (Claude Opus 5) 2026-08-10 - Body uses the named parameters, not $1..$n
Project Method: Fnd_Gen_RunningInHost

Global and IP variables accessed:
Fnd_Gen_SelectionChangedShared
Project Method: Fnd_Gen_SelectionChanged

Call this whenever the current selection of records displayed in the output list changes.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Gen_SetDatabaseInfoShared

#DECLARE($label_t : Text; $value_t : Text)

Project Method: Fnd_Gen_SetDatabaseInfo (info type; value)

Sets the specified database information value.

Use the Fnd_Gen_GetDatabaseInfo to retrieve this information.

Access: Shared

Parameters:

  $label_t : Text : The info type label

  $value_t : Text : The info value

Returns: Nothing
Fnd_Gen_SetLocalizationStringsShared

#DECLARE($component_t : Text; $lookupCodesArray_ptr : Pointer; $stringsArray_ptr : Pointer)

Project Method: Fnd_Gen_SetLocalizationStrings (component; ->lookup codes; ->strings)

Called from the Fnd_xxx_Localize method of other components to pass their localization
  info to this, and (if available) the Localization component.

Access: Shared

Parameters:
  $component_t : Text : The component's code ("Fnd_xxx")
  $lookupCodesArray_ptr : Pointer : Array of lookup codes
  $stringsArray_ptr : Pointer : Array of localized strings

Returns: Nothing
Fnd_Gen_SilentErrorShared
Project Method: Fnd_Gen_SilentError

A method with no code. Foundation's single no-op, for the two places one is
  wanted: swallowing an error, and satisfying a parameter that demands a
  method name but has nothing to do.

As an error handler, install it with ON ERR CALL around a call that is
  expected to fail and whose failure is not interesting, then restore the
  previous handler immediately:

```
  $oldHandler_t:=Method called on error
  ON ERR CALL("Fnd_Gen_SilentError")
  ...the call that may fail...
  ON ERR CALL($oldHandler_t)
```

Leaving it installed suppresses every subsequent error in the process,
  including the ones that matter, so the restore is not optional.

As a close box method, pass its name to Open window when the close is handled
  in the form method:

```
  $windowRef_i:=Open window($l; $t; $r; $b; $type_i; $title_t; "Fnd_Gen_SilentError")
```

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Gen_TableIsVisibleShared

#DECLARE($Table_v : Variant)->$visibleTable_b : Boolean

Project Method: Fnd_Gen_TableIsVisible (Table pointer or number) --> Boolean

Returns TRUE if table $1-> is visible

Access: Shared

Parameters:
  $Table_v : Pointer : the pointer to a table OR table number

Returns:
  $visibleTable_b : Boolean : True = Visible table
Fnd_Gen_TableOfShared

#DECLARE($field_ptr : Pointer)->$table_ptr : Pointer

Project Method: Fnd_Gen_TableOf (table pointer) --> field pointer

 Returns a pointer to the table that the field passed in belongs to

Access: Shared

Parameters:
  $field_ptr : Pointer : A field Pointer

Returns:
  $table_ptr : Pointer : The table the field belongs to
Fnd_Gen_ToolbarDisplayedShared

#DECLARE()->$toolbarIsDisplayed_b : Boolean

Project Method: Fnd_Gen_ToolbarDisplayed --> Boolean

Returns true if the design toolbar is visible

Access: Shared

Returns:
  $toolbarIsDisplayed_b : Boolean : Description
Fnd_Gen_TraceInternal
Project Method: Fnd_Gen_Trace

Call anywhere a developer-triggered breakpoint is wanted. Opens the
debugger while Caps Lock is down, and does nothing once compiled.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Gen_UIWorkerShared

#DECLARE()->$worker_v : Variant

Project Method: Fnd_Gen_UIWorker --> $worker_v : Variant

Returns the identifier of the UI worker every Foundation UI message is
  dispatched to — the host's "UI Process" hook value when one exists,
  otherwise "$Fnd_UI". Pass the result straight to CALL WORKER.

Access: Shared

Parameters: None

Returns:
  $worker_v : Variant : The UI worker's process name (Text) or process number (Integer)
Fnd_Gen_VerifyStructureItemShared

#DECLARE($component_t : Text; $fieldName_t : Text; $inFieldType_i : Integer; $inIndexed_b : Boolean)->$field_ptr : Pointer

Project Method: Fnd_Gen_VerifyStructureItem (component; table or field name; field type{; indexed}) --> Pointer

Makes sure the required field exists. If not, the developer is notified.

Access: Shared

Parameters:
  $component_t : Text :The component prefix
  $fieldName_t : Text : The required table or field name
  $inFieldType_i : Longint : The expected field type
  $inIndexed_b : Boolean : The field should be indexed? (optional)

Returns:
  $field_ptr : Pointer : A pointer to the field
Fnd_Gen_WaitToContinueShared

#DECLARE($inBoolean_b : Boolean)->$waitToContinue_b : Boolean

Project Method: Fnd_Gen_WaitToContinue (boolean)

Causes a process to wait

Access: Shared

Parameters: C_BOOLEAN($1)

Returns:
  $waitToContinue_b : Boolean : whether or not to wait

Added by Walt Nelson on 2/19/10
Fnd_IO_AddMultipleRecordsShared

#DECLARE($inEnable_b : Boolean)->$multipleRecordsAllowed_b : Boolean

Project Method: Fnd_IO_AddMultipleRecords (enable?) --> Boolean

Allows the developer to get and set the value of the Fnd_IO_AddMultipleRecords_b variable.

Access: Shared

Parameters:
  $inEnable_b : Boolean : The new value of the setting to enable adding multiple records (optional)

Returns:
  $multipleRecordsAllowed_b : Boolean : The current setting of the variable to indicate if the feature is enabled
Fnd_IO_DisplayNavButtonsShared

#DECLARE($inEnable_b : Boolean)->$navButtonsShown_b : Boolean

Project Method: Fnd_IO_DisplayNavButtons ({enable?}) --> Boolean

Allows the developer to display or hide the record navigation buttons
  for the current process.

Access: Shared

Parameters:
  $inEnable_b : Boolean : True to enable the display of record navigation buttons (optional)

Returns:
  $navButtonsShown_b : Boolean : True if display of record navigation buttons is enabled
Fnd_IO_DisplayRecordShared

#DECLARE($inTable_ptr : Pointer; $inRecordNumber_i : Integer; $inShowlockedmessage_b : Boolean)->$displayResult_i : Integer

Project Method: Fnd_IO_DisplayRecord ({->table{; record number}{; ShowLockedMessage}})

Displays the specified record of the table in a new process.  If no table is passed, then the
  current form's table is used (if available).  If no record number is passed, then the current
  record will be displayed.  Pass 4D's New record constant to create a new record.

Access: Shared

Parameters:
  $inTable_ptr : Pointer : Pointer to the record's table (optional)
  $inRecordNumber_i : Longint : Record number (optional)
  $inShowlockedmessage_b : Boolean : Show Locked Message (optional)

Returns: Process number of the (new?) process displaying the record.
Fnd_IO_DisplayRecord2Shared

#DECLARE($pointerTableDisplay_ptr : Pointer; $recordNumber_i : Integer; $inCallingProcess_i : Integer; $inShowLockedMessage_b : Boolean)

Project Method: Fnd_IO_DisplayRecord2 (->table; record number{; calling process})

Called from Fnd_IO_DisplayRecord to display an input form in a new window.
  If a calling process number is passed ($3) then that process is called if
  the record is saved.  In this case, Fnd_IO_AddRecordNumber_i will
  contain the record number of the modified record.

Access: Private

Parameters:
  $pointerTableDisplay_ptr : Pointer : A pointer to the table to display
  $recordNumber_i : Longint : Record number
  $inCallingProcess_i : Longint : Number of the calling process (optional)

Returns: Nothing
Fnd_IO_DisplayRecord3Shared

#DECLARE($recordNumber_i : Integer)

Project Method: Fnd_IO_DisplayRecord3 (record number)

Similar to Fnd_IO_DisplayRecord2, but assumes we're displaying the record
  in the current process rather than in a new one.

Called from Fnd_IO_DisplayRecord.

Access: Private

Parameters: None

Returns: Nothing
Fnd_IO_DisplayTableShared

#DECLARE($table_ptr : Pointer; $inForceNew_b : Boolean)

Project Method: Fnd_IO_DisplayTable (->table{; force new window})

Displays the output list for the specified table.
If the table has already been displayed in a process by this method, it is
  brought to the front.  Otherwise a new process is created to display the
  table.
If the optional parameter is passed and is True, a new table is created
  even if one already exists.

Access: Shared

Parameters:
  $table_ptr : Pointer : A pointer to the table to display
  $inForceNew_b : Boolean : Open a new window, even if one is already open? (optional)

Returns: Nothing
Fnd_IO_DisplayTable2Shared

#DECLARE($pointerTableDisplay_ptr : Pointer)

Project Method: Fnd_IO_DisplayTable2 (->table)

Called from Fnd_IO_DisplayTable to display an output form in a new window.

Access: Private

Parameters:
  $pointerTableDisplay_ptr : Pointer : A pointer to the table to display

Returns: Nothing
Fnd_IO_GetWindowTitleShared

#DECLARE($inTable_ptr : Pointer; $inRecordNumber_i : Integer)->$suggestedTitle_t : Text

Project Method: Fnd_IO_GetWindowTitle ({->table{; record number}}) -> Text

Returns the suggested title for the current window for input forms.

Access: Private

Parameters:
  $inTable_ptr : Pointer : The table (optional)
  $inRecordNumber_i : Longint : The record number (optional)

Returns:
  $suggestedTitle_t : Text : Suggested title
Fnd_IO_InfoShared

#DECLARE($request_t : Text)->$reply_t : Text

Project Method: Fnd_IO_Info (label) --> Text

Returns requested information.  See the Fnd_Gen_ComponentInfo
  method for more information.

Access: Shared

Parameters:
  $request_t : Text : Info desired ("version" or "name")

Returns:
  $reply_t : Text : Response
Fnd_IO_InitInternal
Project Method: Fnd_IO_Init

Initializes both the process and interprocess variables used
  by the Fnd_IO routines.

Access: Private

Parameters: None

Returns: Nothing
Fnd_IO_InputDrawButtonsShared
Project Method: Fnd_IO_InputDrawButtons

Called from Fnd_IO_InputFormMethod when the window is first
  open to draw the buttons from the inherited form.

Access: Private

Parameters: None

Returns: Nothing
Fnd_IO_InputFormCloseShared

#DECLARE()->$closed_b : Boolean

Project Method: Fnd_IO_InputFormClose --> Boolean

Called from the Fnd_IO_InputFormMethod when the user clicks the close box
  or quits the database.  Basically we need to ask the user if the record
  should be saved if it has been modified.
Returns True if the window gets closed.

Access: Private

Parameters: None

Returns:
  $closed_b : Boolean : True if the window will be closed.
Fnd_IO_InputFormMethodShared
Project Method: Fnd_IO_InputFormMethod

Standard form method for input forms.
Handles the window title and close box on an input form.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_IO_InputFormNameShared

#DECLARE($inFormName_t : Text)->$inputFormName_t : Text

Project Method: Fnd_IO_InputFormName ({form name}) --> Text

Allows the developer to get and set the name of the input form to use.

Access: Shared

Parameters:
  $inFormName_t : Text : The new input form name (optional)

Returns:
  $inputFormName_t : Text : The input form name
Fnd_IO_InputFormObjectMethodShared

#DECLARE($object_ptr : Pointer; $inAction_t : Text)

Project Method: Fnd_IO_InputFormObjectMethod (->form object)



Access: Shared

Parameters:
  $object_ptr : Pointer : Form object

Returns: Nothing
Fnd_IO_InputFormResizeShared
Project Method: Fnd_IO_InputFormResize

Called by the Fnd_IO_InputFormMethod to move the inherited buttons around.

Access: Private

Parameters: None

Returns: Nothing
Fnd_IO_LocalizeShared
Project Method: Fnd_IO_Localize

Passed the localization strings to the General and (if available) Localization components.

Access: Private

Parameters: None

Returns: Nothing
Fnd_IO_MultiWindowShared

#DECLARE($inMulti_b : Boolean)->$multiWindowEnabled_b : Boolean

Project Method: Fnd_IO_MultiWindow ({multi-window?}) --> Boolean

Allows the developer to get and set the multi-window setting.
Multi-window means the input forms are displayed in windows separate from
  the output lists. If multi-window is false, the input form is displayed in the
  same window as the output form.
The setting is for the current process.

Access: Shared

Parameters:
  $inMulti_b : Boolean : True to begin multi-window mode (optional)

Returns:
  $multiWindowEnabled_b : Boolean : True if we're in multi-window mode
Fnd_IO_OutputFormMethodShared
Project Method: Fnd_IO_OutputFormMethod

Standard form method for output forms.  Call this from every output form
  method.  Make sure the form events checked here are enabled by the form.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_IO_OutputFormNameShared

#DECLARE($inFormName_t : Text)->$outputFormName_t : Text

Project Method: Fnd_IO_OutputFormName ({form name}) --> Text

Allows the developer to get and set the name of the output form to use.

Access: Shared

Parameters:
  $inFormName_t : Text : The new output form name (optional)

Returns:
  $outputFormName_t : Text : The output form name
Fnd_IO_RecordEditedShared

#DECLARE($table_ptr : Pointer; $inCallingProcess_i : Integer)->$editedRecordNumber_i : Integer

Project Method: Fnd_IO_RecordEdited ({->table; calling process}) --> Longint

Call this when a new record has been added.  This routine will take care of
  adding it to the output list (if any).
This routine can also be called by the output list process to get the number
  of the most recently edited record. Once called to get the record number,
  it clears it so you won't accidentally get it again.

Access: Shared

Parameters:
  $table_ptr : Pointer : A pointer to the record's table
  $inCallingProcess_i : Longint : The process number of the output form

Returns:
  $editedRecordNumber_i : Longint : The record number that was edited
Fnd_IO_SetupToolbarShared
Project Method: Fnd_IO_SetupToolbar

Handles the toolbar setup for the input and output forms.

Access: Private

Parameters: None

Returns: Nothing
Fnd_IO_ToolbarIconGroupShared

#DECLARE($inSuggestedStyle_t : Text)->$currentStyle_t : Text

Project Method: Fnd_IO_ToolbarIconGroup ({style name}) --> Text

Changes the icons in the IO forms to the specified style.
  Bold (default)
  Card
  Native
  Mac
  Win

Access: Shared

Parameters:
  $inSuggestedStyle_t : Text : The style name to use (optional)

Returns:
  $currentStyle_t : Text : The current style
Fnd_IO_UpdateToolbarShared
Project Method: Fnd_IO_UpdateToolbar

Enables and disables the toolbar buttons based on whether or not
  the window is frontmost, the selection of records, and the highlighted
  records.

Access: Private

Parameters: None

Returns: Nothing
Fnd_InitInternal
Project Method: Fnd_Init

Initialises the Fnd objects that every module hangs its state on.

Calls Compiler_Fnd for the declarations, then creates Storage.Fnd if it does
  not exist. Every module's own Init method starts by calling this, so it runs
  many times and must stay safe to repeat.

Access: Private

Parameters: None

Returns: Nothing
Fnd_List_AddButtonShared

#DECLARE($label_t : Text)

Project Method: Fnd_List_AddButton (label)

Allows the developer to add an additional button to the Choice List dialog.

Access: Shared

Parameters:
  $label_t : Text : The new button's label

Returns: Nothing
Fnd_List_AddItemShared

#DECLARE($commandName_t : Text; $commandMethod_t : Text)

Project Method: Fnd_List_AddItem (command name; method name)

Adds a command to the Command Dialog.

Access: Shared

Parameters:
  $commandName_t : Text : The command name to add to the dialog
  $commandMethod_t : Text : The method name to run if it's selected

Returns: Nothing
Fnd_List_AddToListEditorShared

#DECLARE($listName_t : Text)

Project Method: Fnd_List_AddToListEditor (listname)

Called from the Fnd_Hook_List_SetEditableLists method.

Access: Shared

Parameters:
  $listName_t : Text : The name of the list to make available.

Returns: Nothing
Fnd_List_ChoiceListShared

#DECLARE($prompt_t : Text; $pointerTextArray_ptr : Pointer)->$selectedElement_i : Integer

Project Method: Fnd_List_ChoiceList (prompt; ->text array) --> Number

Allows the user to select an element from a list.

Access: Shared

Parameters:
  $prompt_t : Text : The prompt
  $pointerTextArray_ptr : Pointer : A pointer to a text array

Returns:
  $selectedElement_i : Longint : The selected element number
Fnd_List_ClearShared
Project Method: Fnd_List_Clear

Clears the Command List elements.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_List_CommandDialogShared
Project Method: Fnd_List_CommandDialog

Displays the Admin dialog.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_List_CreateTableShared
Project Method: Fnd_List_CreateTable

Global and IP variables accessed:
Fnd_List_DoesListExistShared

#DECLARE($ListName_t : Text)->$listExists_b : Boolean

Project Method: Fnd_List_DoesListExist (List Name) -> Boolean

Checks if a list exists

Access: Shared

Parameters:
  $ListName_t : Text : A choice list defined in the List Editor

Returns:
  $listExists_b : Boolean : True = The list exists
Fnd_List_EditOneShared

#DECLARE($listName_t : Text)

Project Method: Fnd_List_EditOne (list name)

Call this method to edit the specified list in a semi-modal dialog.

Access: Shared

Parameters:
  $listName_t : Text : The name of the list

Returns: Nothing
Fnd_List_EditOne2Shared

#DECLARE($listName_t : Text)

Project Method: Fnd_List_EditOne2 (list name)

Called as a new process by Fnd_List_EditOne to edit a list.

Access: Private

Parameters:
  $listName_t : Text : The list name

Returns: Nothing
Fnd_List_EditorShared
Project Method: Fnd_List_Editor

Displays the List Editor window in a new process.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_List_InfoShared

#DECLARE($request_t : Text)->$reply_t : Text

Project Method: Fnd_List_Info (label) --> Text

Returns requested information.  See the Fnd_Gen_ComponentInfo
  method for more information.

Access: Shared

Parameters:
  $request_t : Text : Info desired ("version" or "name")

Returns:
  $reply_t : Text : Response
Fnd_List_InitInternal
Project Method: Fnd_List_Init

Initializes both the process and interprocess variables used by the Fnd_List routines.

Access: Private

Parameters: None

Returns: Nothing
Fnd_List_ListToRecordShared

#DECLARE($listName_t : Text)

Project Method: Fnd_List_ListToRecord (list name)

Saves the list as a 4D list and as a record.

Access: Private

Parameters:
  $listName_t : Text : The name of the list to save

Returns: Nothing
Fnd_List_LocalizeShared
Project Method: Fnd_List_Localize

Passed the localization strings to the General and (if available) Localization components.

Access: Private

Parameters: None

Returns: Nothing
Fnd_List_OnExitShared
Project Method: Fnd_List_OnExit

Stores the current date and time in both the structure file (as a list) and the
  data file (as a record).  We can compare these at startup to determine if the
  structure file has been updated.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_List_OnStartupShared
Project Method: Fnd_List_OnStartup

Called when the database is launched to determine if the lists in the structure file
  neeed to be updated from the lists in the data file.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_List_RecordLoadedShared

#DECLARE($table_ptr : Pointer; $inSecondsToWait_i : Integer)->$loaded_b : Boolean

Project Method: Fnd_List_RecordLoaded (->table{; timeout in seconds}) --> Boolean

Makes sure the current record is not locked.  If it is, it waits a while to see
  if the record becomes avaialble.
If no timeout period is specified control is returned immediately if
  the record is locked.

Access: Private

Parameters:
  $table_ptr : Pointer : The record's table
  $inSecondsToWait_i : Longint : Number of seconds to wait if it's locked (optional)

Returns:
  $loaded_b : Boolean : True if the record isn't locked
Fnd_List_SaveListItemsShared
Project Method: Fnd_List_SaveListItems

Assumes the proper [Fnd_List] record is loaded.
Called from the Fnd_List_Editor and ListsCreateSystemLists2 methods.

Access: Private

Parameters: None

Returns: Nothing
Fnd_List_TypeAheadInternal

#DECLARE($charactertyped_t : Text)

Project Method: Fnd_List_TypeAhead (CharacterTyped)

Multi-character type-ahead on choice list

Access: Private

Parameters:
  $charactertyped_t : Text : The character just typed
Fnd_List_UpdateItemsListShared
Project Method: Fnd_List_UpdateItemsList

Assumes the proper [Lists] record is loaded.
Assumes any previous changes to the list have been saved.
Called from the [Constants].ListEditor form.

Access: Private

Parameters: None

Returns: Nothing
Fnd_List_UpdateStructureListsShared
Project Method: Fnd_List_UpdateStructureLists

Copies the Foundation maintained lists to the 4D structure file.

Access: Private

Parameters: None

Returns: Nothing
Fnd_List_UseTypeAheadShared

#DECLARE($inBoolean_b : Boolean)->$typeAheadEnabled_b : Boolean

Project Method: Fnd_List_UseTypeAhead ({$inBoolean_b : Boolean}) --> Boolean

Reports whether type-ahead is enabled for lists, and optionally sets it.

Getter and setter in one: called with no parameter it reports, called with one
  it sets and then reports. The setting lives on Fnd.List, so it persists for
  the session rather than the call.

Access: Shared

Parameters:
  $inBoolean_b : Boolean : Turns type-ahead on or off (optional)

Returns:
  $typeAheadEnabled_b : Boolean : The setting after any change
Fnd_List_XML_FilePathShared

#DECLARE()->$filePath_t : Text

Project Method: Fnd_List_XML_FilePath --> Text

Returns the path to the Fnd_List.xml file.

Access: Private

Parameters: None

Returns:
  $filePath_t : Text : The file path
Fnd_List_XML_GetDateTimeShared

#DECLARE()->$dateTime_t : Text

Project Method: Fnd_List_XML_GetDateTime --> Text

Returns the date-time value stored in the Fnd_List.xml file.

Access: Private

Parameters: None

Returns:
  $dateTime_t : Text : The date-time value
Fnd_List_XML_SetDateTimeShared

#DECLARE($dateTime_t : Text)

Project Method: Fnd_List_XML_SetDateTime (date-time string)

Updates the Fnd_List.xml file with the last use date for this structure file.

Access: Private

Parameters:
  $dateTime_t : Text : A date-time string (e.g.: "2007-10-16T17:55:04")

Returns: Nothing
Fnd_Loc_ArrayToListShared

#DECLARE($array_ptr : Pointer; $listName_t : Text)

Project Method: Fnd_Loc_ArrayToList($array_ptr;$listName_t)

Updates list in the host database.

Access: Shared

Parameters:
  $array_ptr : Pointer : The text array
  $listName_t : Text : The list name


Returns: Nothing
Fnd_Loc_DuplicateListShared
Project Method: Fnd_Loc_DuplicateList

Duplicates a 4D list.  Used for creating new localizations.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Loc_EditorShared

#DECLARE($inNumber_i : Integer)

Project Method: Fnd_Loc_Editor ({number})

Displays the Localization List Editor window in a new process.

Access: Shared

Parameters:
  $inNumber_i : Longint : Used internally by this method

Returns: Nothing
Fnd_Loc_Editor_ArrayToListShared

#DECLARE($array_ptr : Pointer; $inListName_t : Text)

Project Method: Fnd_Loc_Editor_ArrayToList (->array; list name)

A wrapper for 4D's ARRAY TO LIST command. This routine always
  appends an asterisk to the list name, so that we don't mess up the original.
See also the Fnd_Loc_ListToArray method.

Access: Private

Parameters:
  $array_ptr : Pointer : The text array
  $inListName_t : Text : The list name

Returns: Nothing
Fnd_Loc_Editor_ClickOnCodesListShared
Project Method: Fnd_Loc_Editor_ClickOnCodesList

Called from the localization editor when a lookup code is clicked, or
  when a higher-level list is clicked.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Loc_Editor_ClickOnGroupListShared
Project Method: Fnd_Loc_Editor_ClickOnGroupList

Called from the localization editor when a group item is clicked, or
  when a higher-level list is clicked.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Loc_Editor_ClickOnModsListShared
Project Method: Fnd_Loc_Editor_ClickOnModsList

Called from the localization editor when a module name is clicked, or
  when another object changes the selected list item

Access: Private

Parameters: None

Returns: Nothing
Fnd_Loc_Editor_EditorClosedShared

#DECLARE()->$closed_b : Boolean

Project Method: Fnd_Loc_Editor_EditorClosed --> Boolean

Makes sure 4D's List Editor window isn't open. If it is, the user is asked to close it.

Access: Private

Parameters:

Returns:
  $closed_b : Boolean : True if the List Editor is not open
Fnd_Loc_Editor_ExportShared
Project Method: Fnd_Loc_Editor_Export

Exports a text file and saves it as a 4D list.
Designed to be called from the Localization Editor dialog.  Don't call directly.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Loc_Editor_ImportShared
Project Method: Fnd_Loc_Editor_Import


Imports Foundation localization lists.

Designed to be called from the Localization Editor dialog.  Don't call directly.


Access: Private


Parameters: None


Returns: Nothing
Fnd_Loc_Editor_LoadModulesShared
Project Method: Fnd_Loc_Editor_LoadModules

Loads the array of Modules names in the Localization Editor window.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Loc_Editor_SaveListShared
Project Method: Fnd_Loc_Editor_SaveList

Saves changes back to the 4D Lists.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Loc_FixButtonWidthsShared
Project Method: Fnd_Loc_FixButtonWidths (->button1; ->button2{; ->buttonN})

Adjusts all of the button widths of two or more _vertically_aligned_ buttons so
  they all have the same left and right coordinates of the widest button
  of the group.  Designed to be called after calling Fnd_Gen_ButtonText on
  each of the buttons in the group.

Access: Shared

Parameters:
  $1 : Pointer : A pointer to a button
  $2..$N : Pointer : More button pointers

Returns: Nothing
Fnd_Loc_FixLabelWidthsShared
Project Method: Fnd_Loc_FixLabelWidths (->form object; ->enterable object{; ..repeat..})

Used for aligning one or more sets of labels and enterable fields.
Start by localizing the label text. Then pass a pointer to it and the field
  next to it to this routine.  This routine will properly size the label for
  its new text, and move the left side of the associated field so that
 it remains an equal distance from the label as it appears on the form.
If you pass multiple label/field sets to this routine, it will adjust them
  so they all work with the longest label text width.

Access: Shared

Parameters:
  $1, $3, $5, etc. : Pointer : The name of the label to adjust
  $2, $4, $6, etc. : Pointer : The field to its right

Returns: Nothing
Fnd_Loc_GetStringShared
Project Method: Fnd_Loc_GetString (module name; internal string{; param 1{; param 2...}}) --> Text

Gets the localized string based on the internal string or label.  Also replaces any
  parameters.  For  example, "<<1>>" gets replaced with the first optional parameter,
  "<<2>>" with the second optional parameter, etc.

Access: Shared

Parameters:
  $1 : Text : The Foundation module name
  $2 : Text : The internal string label
  $3..$n : Text : Replacement strings (optional)

Returns:
  $0 : Text : The localized string
Fnd_Loc_InfoShared

#DECLARE($request_t : Text)->$reply_t : Text

Project Method: Fnd_Loc_Info (label) --> Text

Returns requested information.  See the Fnd_Gen_ComponentInfo method
  for more information.

Access: Shared

Parameters:
  $request_t : Text : Info desired ("version" or "name" or "language")

Returns:
  $reply_t : Text : Response
Fnd_Loc_InitInternal
Project Method: Fnd_Loc_Init

Initializes both the process and interprocess variables used by the localization routines.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Loc_LanguageCodeShared

#DECLARE($inCode_t : Text)->$languageCode_t : Text

Project Method: Fnd_Loc_LanguageCode ({code}) --> Text

If no parameters are passed, this routine returns the current language
  code that Foundation is using for localization.  If a language code is
  passed to this routine, it's set as the new localization code.

Access: Shared

Parameters:
  $inCode_t : Text : The language code to use (optional)

Returns:
  $languageCode_t : Text : The current langauge code
Fnd_Loc_ListToArrayShared

#DECLARE($listName_t : Text; $array_ptr : Pointer)

Project Method: Fnd_Loc_ListToArray (list name; ->array)

A wrapper for 4D's LIST TO ARRAY command.  Tries to read in a
  list with an asterisk appended to the name first.  If all it gets is
  an empty list (which probably indicates no list) then it tries to
  read in a list without the asterisk.
See also the Fnd_Loc_Editor_ArrayToList method.

Access: Private

Parameters:
  $listName_t : Text : The list name
  $array_ptr : Pointer : The text array

Returns: Nothing
Fnd_Loc_LoadStringListShared

#DECLARE($moduleName_t : Text)

Project Method: Fnd_Loc_LoadStringList (module name)

Loads arrays with localized strings.

Access: Private

Parameters:
  $moduleName_t : Text : The Foundation module name (eg: "Fnd_Dlg")

Returns: Nothing
Fnd_Loc_LoadTranslationInternal

#DECLARE($component_t : Text; $inLanguage_t : Text)

Project Method: Fnd_Loc_LoadTranslation (Module {; language })

Loads the Localization Strings for the component
If the language parameter is not passed then the system language will be used

Access: Shared

Parameters:
  $component_t : TEXT : The Foundation module
  $inLanguage_t : TEXT : Language to use (optional)
Fnd_Loc_SetLocalizationStringsShared

#DECLARE($component_t : Text; $lookupCodes_ptr : Pointer; $strings_ptr : Pointer)

Project Method: Fnd_Loc_SetLocalizationStrings (component code; ->lookup codes; ->strings)

Allows a component to use its Fnd4-style localization strings.
Similar to Fnd_Loc_LoadStringList, but designed to work with Fnd5 components.

Access: Shared

Parameters:
  $component_t : Text : The component code (e.g.: "Fnd_Menu")
  $lookupCodes_ptr : Pointer : A text array of translation lookup codes
  $strings_ptr : Pointer : A text array of localized strings

Returns: Nothing
Fnd_Log_AcknowledgeInternal

#DECLARE($ack_o : Object)

Project Method: Fnd_Log_Acknowledge

Test helper: mark preceding worker calls complete; not used during shutdown.

Access: Private
Fnd_Log_AddEntryShared
Project Method: Fnd_Log_AddEntry (text1{; text2..textN; options})

Call this method to add a new entry to the log file.
  Safe to call even if we're not currently logging activity.

Access: Shared

Parameters:
  $1..N : Variant : Text columns; an options object supplies logLabel, logLevel,
     destinations and flushNow. Numeric severity and Boolean flush are also accepted.
     Last metadata value wins. Existing text calls retain their columns.

Batching defaults on. Timestamp is local; severity and machine columns are opt-in.

Returns: None
Fnd_Log_BufferEntryInternal

#DECLARE($entry_o : Object)

Project Method: Fnd_Log_BufferEntry

Buffer routed entries inside their owning worker; immediate and size triggers flush here.

Access: Private
Fnd_Log_CloseLogShared

#DECLARE($inLogLabel_t : Text)

Project Method: Fnd_Log_CloseLog {(Log Label)}

Pass the log label to save and close that log
If you call this without any parameters all the logs will be closed and saved

Access: Shared

Parameters:
  $inLogLabel_t : Text : The log label (optional)
Fnd_Log_CloseLog2Internal

#DECLARE($TheLogLabel_t : Text)

Project Method: Fnd_Log_CloseLog2 {(Log Label)}

Pass the log label tosave and close that log
If you call this without any parameters all the logs will be closed and saved

Access: Private

Parameters:
  $TheLogLabel_t : Text : The log label (optional)
Fnd_Log_ConfigShared

#DECLARE($options_o : Object)->$result_o : Object

Project Method: Fnd_Log_Config

Get/set run defaults. Existing named logs retain their declaration settings.

Access: Shared
Fnd_Log_ControlInternal

#DECLARE($action_t : Text; $label_t : Text; $all_b : Boolean)

Project Method: Fnd_Log_Control

Send flush/close/stop to the owners; no queue interrogation.

Access: Private
Fnd_Log_CreateTableShared

#DECLARE()->$result_o : Object

Project Method: Fnd_Log_CreateTable

Explicit interpreted-host-only schema creation; never called by logging. Returns success/created/restartRequired/message.

Access: Shared
Fnd_Log_DeclareLogShared

#DECLARE($Label_t : Text; $inFileName_t : Text; $inFolderPath_t : Text; $options_o : Object; $dedicated_b : Boolean)

Project Method: Fnd_Log_DeclareLog (label{; fileName{; folderPath{; options{; dedicatedWorker}}}})

Allows the declaration of a different log
Omitted or empty filenames use the label and preferred extension.
Filenames without an extension acquire the preference; explicit extensions win.
Re-declaring an existing label leaves its filename and folder unchanged.

Access: Shared

Parameters:
  $Label_t : Text : Log Label
  $inFileName_t : Text : Log filename (optional)
  $inFolderPath_t : Text : Folder path (optional)
  $options_o : Object : Destination, batching and output settings (optional)
  $dedicated_b : Boolean : Request a dedicated worker; default False (optional)
Fnd_Log_DeclareServerInternal

#DECLARE($label_t : Text; $settings_o : Object; $dedicated_b : Boolean)

Project Method: Fnd_Log_DeclareServer

Allocate a declared dedicated server writer without accepting client paths.

Access: Private
Fnd_Log_DispatchEntryInternal

#DECLARE($entry_o : Object)

Project Method: Fnd_Log_DispatchEntry

Dispatch local/server files and host records; missing records always produce a fallback.

Access: Private
Fnd_Log_EnableShared

#DECLARE($inEnable_b : Boolean)->$loggingEnabled_b : Boolean

Project Method: Fnd_Log_Enable ({enable?}) --> Boolean

Allows the developer to turn the logger on or off.  Also returns True
  if logging is currently enabled.

Access: Shared

Parameters:
  $inEnable_b : Boolean : Turn on logging? (optional)

Returns:
  $loggingEnabled_b : Boolean : True if logging is enabled
Fnd_Log_EntryInternal

#DECLARE($columns_c : Collection; $options_o : Object)->$entry_o : Object

Project Method: Fnd_Log_Entry

Build an accepted entry without modifying process selection; Null means suppressed.

Access: Private
Fnd_Log_ExtensionShared

#DECLARE($inExtension_t : Text)->$extension_t : Text

Project Method: Fnd_Log_Extension {($inExtension_t : Text)} --> Text

Gets or sets the preferred log extension for this application run.
Call from On Startup with "log" or ".log"; the initial default is ".txt".
Changes affect new filenames and default-log selections. The calling process
follows the new default if it was using the old default filename. Existing
named logs and filenames selected by other processes keep their extensions.
Explicit filename extensions override this preference. Nothing is saved to disk.
Case, Unicode, internal spaces and dots are preserved. Rejects ASCII 0-31,
<>:"/\|?*, and a trailing dot or space. Invalid input leaves the setting unchanged.
Full filename and path-length limits still depend on the target filesystem.

Access: Shared

Parameters:
  $inExtension_t : Text : Extension with an optional leading dot; empty resets to .txt (optional)

Returns:
  $extension_t : Text : Current preferred extension, including the leading dot
Fnd_Log_FileErrorInternal
Project Method: Fnd_Log_FileError

Report file errors without re-entering logging.

Access: Private
Fnd_Log_FileNameShared

#DECLARE($inPath_t : Text)->$logFileName_t : Text

Project Method: Fnd_Log_FileName (path) --> Text

Gets or sets the file name of the current process's log.
Pass a file name to set it, or call with no parameter to read it.
Setting it to an empty string returns the process to the default log file.
Missing extensions use the run-wide preference; explicit extensions override it.

Access: Shared

Parameters:
  $inPath_t : Text : The log file name to use (optional)

Returns:
  $logFileName_t : Text : The file name now in use by this process
Fnd_Log_FlushShared

#DECLARE($label_t : Text)

Project Method: Fnd_Log_Flush

Queue a flush for a label or all logs; returns before writes complete.

Access: Shared
Fnd_Log_FlushBuffersInternal

#DECLARE($path_t : Text; $dueOnly_b : Boolean)

Project Method: Fnd_Log_FlushBuffers

Flush all or one physical path, optionally only buffers whose timer expired.

Access: Private
Fnd_Log_FormEventAsTextShared

#DECLARE($inFormEventCode_i : Integer)->$theFormEvent_t : Text

Project Method: Fnd_Log_FormEventAsText --> Text

Returns Form event Code as text

Access: Shared

Returns:
  $theFormEvent_t : Type : Description
Fnd_Log_InfoShared

#DECLARE($request_t : Text)->$reply_t : Text

Project Method: Fnd_Log_Info (label) --> Text

Returns requested information.  See the Fnd_Gen_ComponentInfo method
  for more information.

Access: Shared

Parameters:
  $request_t : Text : Info desired ("version", "name", or "logging")

Returns:
  $reply_t : Text : Response
Fnd_Log_InitInternal
Project Method: Fnd_Log_Init

Initializes both the process and interprocess variables used by
  the logging routines.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Log_LabelShared

#DECLARE()->$label_t : Text

Project Method: Fnd_Log_Label

Return the current process log label; empty means an unnamed/default target.

Access: Shared
Fnd_Log_MaximumSizeShared

#DECLARE($inMaximumSize_i : Integer)->$logMaximumSize_i : Integer

Project Method: Fnd_Log_MaximumSize {(Maximum size)} --> Longint

Allows you set the maximum size of log files
before they are rolled over.
Pass 0 to indicate 'do not rollover'

A log file will be rolled over and renamed with a
timestamp (local timezone) that indicates the time of rollover
The rolled over log will then be compressed (zip) and deleted

Eg. "Sales.log" will become
     "Sales (2021-08-11T103809).log.zip"

Access: Shared

Parameters:
  $inMaximumSize_i : Longint : Maximum size in bytes (optional)

Returns:
  $logMaximumSize_i : Longint : Maximum size
Fnd_Log_OverrideLevelShared

#DECLARE($level_i : Integer; $applicationWide_b : Boolean)->$result_i : Integer

Project Method: Fnd_Log_OverrideLevel

Get/set threshold: None -1 disables, Inherit -2 restores application default; optional True sets application scope.

Access: Shared
Fnd_Log_PathShared

#DECLARE($inFolder_t : Text)->$logPath_t : Text

Project Method: Fnd_Log_Path --> Text

Gets or sets the folder of the current process's log.
Pass a folder path to set it, or call with no parameter to read it.
Setting it to an empty string returns the process to the default logs folder.

Access: Shared

Parameters:
  $inFolder_t : Text : The log folder path to use (optional)

Returns:
  $logPath_t : Text : The folder path now in use by this process
Fnd_Log_QueueEntryInternal

#DECLARE($entry_o : Object)

Project Method: Fnd_Log_QueueEntry

Queue an already-routed entry to the file owner.

Access: Private
Fnd_Log_RecordErrorInternal
Project Method: Fnd_Log_RecordError

Record a write error without logging recursively.

Access: Private
Fnd_Log_RecordFailureInternal

#DECLARE($entry_o : Object; $problem_t : Text)

Project Method: Fnd_Log_RecordFailure

Preserve failed record entries centrally and alert only in an interpreted host.

Access: Private
Fnd_Log_RecordProblemInternal

#DECLARE()->$problem_t : Text

Project Method: Fnd_Log_RecordProblem

Validate the host record destination without creating or modifying schema.

Access: Private
Fnd_Log_ResolveFileNameInternal

#DECLARE($fileName_t : Text)->$resolved_t : Text

Project Method: Fnd_Log_ResolveFileName ($fileName_t : Text) --> Text

Ensures a log filename has an extension. Explicit extensions are preserved;
otherwise the run-wide preference is appended. Empty names use the default log.
Surrounding whitespace and trailing dots are removed before resolving the name.

Access: Private

Parameters:
  $fileName_t : Text : Filename without a folder path

Returns:
  $resolved_t : Text : Filename with an extension
Fnd_Log_ServerControlInternal

#DECLARE($action_t : Text; $label_t : Text; $all_b : Boolean)

Project Method: Fnd_Log_ServerControl

Forward client flush/close requests to server log owners.

Access: Private
Fnd_Log_ServerEntryInternal

#DECLARE($entry_o : Object)

Project Method: Fnd_Log_ServerEntry

Route server files/records using server-owned paths and worker registry.

Access: Private
Fnd_Log_SettingsInternal

#DECLARE($options_o : Object)->$settings_o : Object

Project Method: Fnd_Log_Settings

Validate a copy of the supported log settings.

Access: Private
Fnd_Log_ShutdownShared

#DECLARE()

Project Method: Fnd_Log_Shutdown

Call after producers stop; queue local flush/close/stop without waiting.

Access: Shared
Fnd_Log_SilentErrorInternal
Project Method: Fnd_Log_SilentError

Dummy method to be used with ON ERR CALL

**Deprecated 2026-08-22. Call Fnd_Gen_SilentError instead.** The body was
  always empty, so the two methods were never different. This one served
  one ON ERR CALL site in Fnd_Log_This.

Access: Private
Fnd_Log_StopLogWriterInternal

#DECLARE($closeDirectly_b : Boolean)

Project Method: Fnd_Log_StopLogWriter

Call this method to stop the Log Writer worker
The worker will restart if needed automatically
An omitted or False parameter queues the stop behind pending writes.

Access: Private

Parameters:
  $closeDirectly_b : Boolean : True to close the logs here and kill the worker,
     False to hand the job to the worker itself (optional)

Returns: Nothing
Fnd_Log_ThisInternal

#DECLARE($logEntry_t : Text; $PathToLogFolder_t : Text; $inPathToLogFile_t : Text)->$written_b : Boolean

Project Method: Fnd_Log_This (Log Entry; Log Folder Path; Log File)

Instructs the log writer worker to write the log entry
Files exceeding the configured maximum size roll over using a local-time
timestamp, preserving the filename extension, and are compressed as ZIP.
A filename without an extension receives the run-wide preferred extension.

Access: Private

Parameters:
  $logEntry_t : Text : The log entry
  $PathToLogFolder_t : Text : The path to the log folder
  $inPathToLogFile_t : Text : The path to the log file

? I'm confused as why I have both paths? //  NEED TO LOOK AT
Fnd_Log_TimerInternal

#DECLARE($token_t : Text)

Project Method: Fnd_Log_Timer

Poll active writers twice a second; never owns their buffers.

Access: Private
Fnd_Log_UseLogShared

#DECLARE($inLogLabel_t : Text)

Project Method: Fnd_Log_UseLog {(Log Label)}

Pass the log label to use,
if you omit the label or pass an empty string, the default log will be used
Shared with hosts. Selection preserves the process enable flag.

Access: Shared

Parameters:
  $inLogLabel_t : Text : The log label; omitted or empty selects the default (optional)
Fnd_Log_WorkerControlInternal

#DECLARE($action_t : Text; $path_t : Text)

Project Method: Fnd_Log_WorkerControl

Drain buffers before closing handles; acknowledge stop then terminate this worker.

Access: Private
Fnd_Log_WorkerForInternal

#DECLARE($folder_t : Text; $file_t : Text; $dedicated_b : Boolean)->$worker_t : Text

Project Method: Fnd_Log_WorkerFor

Assign one writer to a canonical file path; first assignment owns aliases.

Access: Private
Fnd_Log_WriteBufferInternal

#DECLARE($key_t : Text)

Project Method: Fnd_Log_WriteBuffer

Write one batch using the repaired Foundation physical writer or ORDA record sink.

Access: Private
Fnd_Log_WriteRecordInternal

#DECLARE($entry_o : Object)

Project Method: Fnd_Log_WriteRecord

Write one host ORDA entity; failed saves preserve the entry in a file.

Access: Private
Fnd_Menu_AboutShared
Project Method: Fnd_Menu_About

Called from the menu when the About box command is selected.
Installed by the Fnd_Shell_OnStartup method.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Menu_AdministrationShared
Project Method: Fnd_Menu_Administration

Called from the menu.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Menu_BuildMenuBarShared

#DECLARE()->$theMenuReference_t : Text

Project Method: Fnd_Menu_BuildMenuBar

Testing

Access: Private

Parameters:
  $1 : Longint : Description

Returns:
  $theMenuReference_t : Longint : Description
Fnd_Menu_DeleteShared
Project Method: Fnd_Menu_Delete

Deletes the highlighted records in the output list.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Menu_DisableAllShared
Project Method: Fnd_Menu_DisableAll

Disables all of the menu items.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Menu_DisableAllMenuItemsShared

#DECLARE($menu_t : Text)

Project Method: Fnd_Menu_DisableAllMenuItems (menu reference)

Disables all menu items in the specified menu.
A temporary work-around for a 4D v11 SQL 1.0 bug, which doesn't
  disable all menu items if 0 is passed as the menu item.

Access: Private

Parameters:
  $menu_t : String : A menu reference

Returns: Nothing
Fnd_Menu_EnableAllMenuItemsShared

#DECLARE($menu_t : Text)

Project Method: Fnd_Menu_EnableAllMenuItems (menu reference)

Disables all menu items in the specified menu.
A temporary work-around for a 4D v11 SQL 1.0 bug, which doesn't
  enable all menu items if 0 is passed as the menu item.

Access: Private

Parameters:
  $menu_t : String : A menu reference

Returns: Nothing
Fnd_Menu_EnableDisableItemsShared
Project Method: Fnd_Menu_EnableDisableItems

Here's where we enable or disable menu items based on the contents and
  state of the frontmost window.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Menu_FindShared
Project Method: Fnd_Menu_Find

Called when the user selects Find from the Select menu.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Menu_FindRelatedShared
Project Method: Fnd_Menu_FindRelated

Called when the user selects Find Related from the Select menu.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Menu_InfoShared

#DECLARE($request_t : Text)->$reply_t : Text

Project Method: Fnd_Menu_Info (label) --> Text

Returns requested information.  See the Fnd_Gen_ComponentInfo
  method for more information.

Access: Shared

Parameters:
  $request_t : Text : Info desired ("version" or "name")

Returns:
  $reply_t : Text : Response
Fnd_Menu_InitInternal
Project Method: Fnd_Menu_Init

Initializes both the process and interprocess variables used by the Fnd_Menu routines.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Menu_LoadMenuTitlesShared
Project Method: Fnd_Menu_LoadMenuTitles

Loads the localization for the menu bar.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Menu_LocalizeShared
Project Method: Fnd_Menu_Localize

Passed the localization strings to the General and (if available) Localization components.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Menu_MenuBarShared

#DECLARE($inForce_t : Text)

Project Method: Fnd_Menu_MenuBar ({"*"})

Updates the menu bar.

Access: Shared

Parameters:
  $inForce_t : Text : Pass "*" to force a full update (optional)

Returns: Nothing
Fnd_Menu_MenuBarNameShared

#DECLARE($inMenuName_t : Text; $inWindowMenuNumber_i : Integer)->$menuBarName_t : Text

Project Method: Fnd_Menu_MenuBarName ({menu name{; Window menu number}}) --> Text

Allows the developer to specify the menu bar to display the next time
  the menu bar is displayed by a Foundation component.
If a blank name is specified, the default Foundation menu bar name is restored.
You can also specify an optional number for the Window menu to use if you want
  to add a Window menu to a non-Foundation database.

Access: Shared

Parameters:
  $inMenuName_t : Text : The menu bar name (optional)
  $inWindowMenuNumber_i : Longint : The number of the Window menu (optional)

Returns:
  $menuBarName_t : Text : The menu bar name to use next
Fnd_Menu_ModifyRecordsShared
Project Method: Fnd_Menu_ModifyRecords

Called from the Modify Records item in the Edit menu.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Menu_NavPaletteShared
Project Method: Fnd_Menu_NavPalette

Called from the menu bar.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Menu_NewRecordShared
Project Method: Fnd_Menu_NewRecord

Creates and displays a new record for the current table.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Menu_OmitSubsetShared
Project Method: Fnd_Menu_OmitSubset

Called from the "Omit Subset" item in the "Select" menu.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Menu_OpenTableShared
Project Method: Fnd_Menu_OpenTable

Called when the user selects the Open Table command from the File menu.
This is just a temporary placeholder.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Menu_PreferencesShared
Project Method: Fnd_Menu_Preferences

Called from the menu bar.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Menu_PrintShared
Project Method: Fnd_Menu_Print

Called when Print is selected from the File menu.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Menu_QueryEditorShared
Project Method: Fnd_Menu_QueryEditor

Displays 4D's Query Editor.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Menu_QuitShared
Project Method: Fnd_Menu_Quit

Called from the menu bar when the user selects Quit from the File menu.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Menu_SetMenuItemShared

#DECLARE($menuNumber_i : Integer; $itemNumber_i : Integer; $inLabel_t : Text)

Project Method: Fnd_Menu_SetMenuItem (menu number; item number; label)

A wrapper for the SET MENU ITEM command that parses out the shortcut command
  and sets it using 4D's SET MENU ITEM KEY command.
Pass the shortcut at the end of the label after the "/" character.
  Fnd_Menu_SetMenuItem (1;5;"Print.../P")

Access: Private

Parameters:
  $menuNumber_i : Longint : The menu number
  $itemNumber_i : Longint : The menu item number
  $inLabel_t : Longint : The new label, with shortcut if desired

Returns: Nothing
Fnd_Menu_ShowAllShared
Project Method: Fnd_Menu_ShowAll

Displays all records for the current table.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Menu_ShowSubsetShared
Project Method: Fnd_Menu_ShowSubset

Called from the "Show Subset" item in the "Select" menu.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Menu_SortShared
Project Method: Fnd_Menu_Sort

Sorts the records for the current table.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Menu_SortOrderEditorShared
Project Method: Fnd_Menu_SortOrderEditor

Displays 4D's Order By editor.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Menu_SpecialFunctionsShared
Project Method: Fnd_Menu_SpecialFunctions

Called from the menu.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Menu_UpdateResourcesShared
Project Method: Fnd_Menu_UpdateResources

Updates the 'STR#' resources in the structure file used for localizing menu titles.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Menu_ViewOptionsShared
Project Method: Fnd_Menu_ViewOptions

Supports the View options function for Fnd_Out

Access: Shared
Fnd_Menu_WindowItemShared
Project Method: Fnd_Menu_WindowItem

This method is called whenever any of the items in the Window menu
  is selected.  This method moves the associated process to the front.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Menu_Window_AddShared

#DECLARE($inItemText_i : Text)

Project Method: Fnd_Menu_Window_Add ({item text})

Adds the current process to the Window menu.  If no title
  is specified, the current window title is used.

Access: Shared

Parameters:
  $inItemText_i : Text : The item text to add to the menu (optional)

Returns: Nothing
Fnd_Menu_Window_RemoveShared

#DECLARE($inProcessNumber_i : Integer)

Project Method: Fnd_Menu_Window_Remove ({process number})

Removes the specified process from the Window menu.  If the process
  number is not specified, the current process is used.

Access: Shared

Parameters:
  $inProcessNumber_i : Longint : Process number to remove

Returns: Nothing
Fnd_Menu_Window_UpdateShared
Project Method: Fnd_Menu_Window_Update

Updates the Window menu.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Msg_BackgroundProcessShared
Project Method: Fnd_Msg_BackgroundProcess

Runs in a background process that diligently tries to make sure everybody receives their messages.
Called as a new process from the Fnd_Msg_Send method.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Msg_BlobToPictureShared

#DECLARE($blob_ptr : Pointer; $picture_ptr : Pointer)

Project Method: Fnd_Msg_BlobToPicture (->blob; ->picture)

Converts a blob to a picture.

Access: Private

Parameters:
  $blob_ptr : Pointer : A pointer to a blob
  $picture_ptr : Pointer : The same blob as a picture variable

Returns: Nothing
Fnd_Msg_BroadcastShared

#DECLARE($broadcastName_t : Text; $message_t : Text)

Project Method: Fnd_Msg_Broadcast (process name; message)

Sends the message out to all processes with the specified name.
The name can contain wildcard characters.

Access: Shared

Parameters:
  $broadcastName_t : Text : The process name to send to
  $message_t : Text : The message to send

Returns: Nothing
Fnd_Msg_GetShared

#DECLARE($inBlob_ptr : Pointer)->$messageText_t : Text

Project Method: Fnd_Msg_Get ({->blob}) --> Text

Gets the next message queued up for the current process.

Access: Shared

Parameters:
  $inBlob_ptr : Pointer : For receiving an optional blob (optional)

Returns:
  $messageText_t : Text : The message
Fnd_Msg_GetParameterShared

#DECLARE($inParameterList_t : Text; $parameterNumber_i : Integer)->$parameterValue_t : Text

Project Method: Fnd_Msg_GetParameter (parameters string; num) --> Text

Gets parameters out of the message.  Also see Fnd_Msg_PackParameters.

Access: Shared

Parameters:
  $inParameterList_t : Text : A string full of parameters
  $inParameterList_t : Number : The parameter number to get

Returns:
  $parameterValue_t : Text : The parameter value
Fnd_Msg_InfoShared

#DECLARE($request_t : Text)->$reply_t : Text

Project Method: Fnd_Msg_Info (label) --> Text

Returns requested information.  See the Fnd_Gen_ComponentInfo method
  for more information.

Access: Shared

Parameters:
  $request_t : Text : Info desired ("version" or "name")

Returns:
  $reply_t : Text : Response
Fnd_Msg_InitInternal
Project Method: Fnd_Msg_Init

Initializes both the process and interprocess variables used by
  the interprocess messaging routines.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Msg_PackParametersShared
Project Method: Fnd_Msg_PackParameters (msg; param 1 {... param N}) --> Text

Adds the text parameters to the messasge using the same delimiter expected by
  the Fnd_Msg_GetParameter routine.  This isn't rocket science, it's just
  easier to maintain than creating the message string in multiple methods.

Access: Shared

Parameters:
  $1 : Text : The message to append parameter to
  $2..$n : Text : The parameters to add to the message

Returns:
  $0 : Text : The delimited paramters
Fnd_Msg_PictureToBlobShared

#DECLARE($picture_ptr : Pointer; $blob_ptr : Pointer)

Project Method: Fnd_Msg_PictureToBlob (->picture; ->blob)

Converts a picture to a blob.

Access: Private

Parameters:
  $picture_ptr : Pointer : A pointer to the picture
  $blob_ptr : Pointer : A pointer to the blob to fill

Returns: Nothing
Fnd_Msg_QuitBackgroundProcessShared
Project Method: Fnd_Msg_QuitBackgroundProcess

Ends the message loop background process.
If there are messages still waiting to be delivered, this process waits until a
  timeout period is reached so hopefully the messages will get delivered.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Msg_SendShared

#DECLARE($targetProcessNumber_i : Integer; $textMessage_t : Text; $pointertoOptionalBlob_ptr : Pointer)

Project Method: Fnd_Msg_Send (target process; message; {->blob})

Call this method to send a message to another process.

Access: Shared

Parameters:
  $targetProcessNumber_i : Longint : The process to send the message to
  $targetProcessNumber_i : Text : The message to send
  $targetProcessNumber_i : Blob : A blob (optional)

Returns: Nothing
Fnd_Nav_AddShared

#DECLARE($label_t : Text)->$element_i : Integer

Project Method: Fnd_Nav_Add (label) --> Number

Adds a button with the specified label to the navigation palette arrays.
If a button with that label already exists, no new button is added.
Assumes the semaphore work is handled by the calling method.
Returns the number of the new or found button.

Access: Private

Parameters:
  $label_t : Text : The new button's label

Returns:
  $element_i : Longint : The new button's number
Fnd_Nav_AddButtonMethodShared

#DECLARE($methodName_t : Text; $label_t : Text; $inForegroundColor_i : Integer; $inBackgroundColor_i : Integer)

Project Method: Fnd_Nav_AddButtonMethod (method; label{; foreground color; background color})

Adds a new button to the palette and assigns the method as its action.
If a button already exists with that label, it is updated.

Access: Shared

Parameters:
  $methodName_t : Text : The method name to execute
  $label_t : Text : The button label
  $inForegroundColor_i : Longint : The text color (optional)
  $inBackgroundColor_i : Longint : The background color (optional)

Returns: Nothing
Fnd_Nav_AddButtonTableShared

#DECLARE($table_ptr : Pointer; $inLabel_t : Text; $inForegroundColor_i : Integer; $inBackgroundColor_i : Integer)

Project Method: Fnd_Nav_AddButtonTable (->table{; label{; foreground color; background color}})

Adds a new button to the palette and assigns the specified table to it.
If no label or a blank label name is passed, this routine will use the table
  name for the label.
If a button already exists with an identical label, it is updated.
This routine is designed to be called only if the Foundation IO
  component is installed.

Access: Shared

Parameters:
  $table_ptr : Pointer : The table
  $inLabel_t : Text : The button label (optional)

Returns: Nothing
Fnd_Nav_AutoConfigureShared
Project Method: Fnd_Nav_AutoConfigure

Automatically determines the contents of the Navigation Palette.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Nav_ButtonMethodShared

#DECLARE($buttonNumber_i : Integer)

Project Method: Fnd_Nav_ButtonMethod (button number)

Called from the navigation palette buttons.

Access: Private

Parameters:
  $buttonNumber_i : Longint : The button number

Returns: Nothing
Fnd_Nav_DeleteShared

#DECLARE($label_t : Text)

Project Method: Fnd_Nav_Delete ({label})

Deletes the button with the specified label from the navigation palette.
If no parameter is passed, all buttons are deleted.

Access: Shared

Parameters:
  $label_t : Text : The button label (optional)

Returns: Nothing
Fnd_Nav_DisplayShared
Project Method: Fnd_Nav_Display

Displays the navigation palette.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Nav_DummyMethodShared
Project Method: Fnd_Nav_DummyMethod

A generic method with no code.  This is useful for assigning as the close box method
  for new windows (handle the close in the form method) or to use with ON ERR CALL
  to disable any automatic reaction to errors.

**Deprecated 2026-08-22. Call Fnd_Gen_SilentError instead.** The body was
  always empty, so the two methods were never different. This one served
  one Open window close box in Fnd_Nav_Display.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Nav_InfoShared

#DECLARE($request_t : Text)->$reply_t : Text

Project Method: Fnd_Nav_Info (label) --> Text

Returns requested information.  See the Fnd_Gen_ComponentInfo
  method for more information.

Access: Shared

Parameters:
  $request_t : Text : Info desired ("version" or "name")

Returns:
  $reply_t : Text : Response
Fnd_Nav_InitInternal
Project Method: Fnd_Nav_Init

Initializes both the process and interprocess variables used by the Fnd_Nav routines.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Nav_RedrawInternal
Project Method: Fnd_Nav_Redraw

This redraws the Nav Palette

Access: Private
Fnd_Nav_UpdateColorsShared
Project Method: Fnd_Nav_UpdateColors

Updates the form's object colors.
Assumes the calling method handles the necessary semaphore work.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Nav_WindowHeightShared

#DECLARE()->$windowHeight_i : Integer

Project Method: Fnd_Nav_WindowHeight --> Number

Returns the height to use for the navigation palette.

Access: Private

Parameters: Nothing

Returns:
  $windowHeight_i : Longint : The height to use
Fnd_Nav_WindowWidthShared

#DECLARE()->$windowWidth_i : Integer

Project Method: Fnd_Nav_WindowWidth --> Number

Returns the width to use for the navigation palette.

Access: Private

Parameters: Nothing

Returns:
  $windowWidth_i : Longint : The width to use
Fnd_Obj_LoadFromFileShared

#DECLARE($Filepath_t : Text)->$Object_o : Object

Project Method: Fnd_Obj_LoadFromFile (Path to .json file) --> Object

Description

Access: Shared

Parameters:
  $Filepath_t : Text : Path to .json file (optional)

Returns:
  $Object_o : Object : The loaded object
Fnd_Obj_SaveToFileShared

#DECLARE($Object_o : Object; $Filepath_t : Text; $inUsePrettyPrint_b : Boolean)

Project Method: OBJ_IO_SaveToFile (Object; File Path {; Pretty Print?})

Takes an object and writes it to disk
  as a JSON text document
NB. will overwrite existing doc, without checking

Access: Shared

Parameters:
  $Object_o : Object : Description
  $Filepath_t : Text : File path
  $inUsePrettyPrint_b : Boolean {Optional} : True (default) = Use Pretty Print

Based on Cannon Smith's Object module
Wayne Stewart (Claude Opus 5) 2026-08-10 - Body uses the named parameters, not $1..$n
2026-09-12 WBS - Use UTF-8 charset name (FND-55)
Fnd_Out_ActiveShared

#DECLARE($active : Boolean) : Boolean

Project Method: Fnd_Out_Active ({activate?}) --> Boolean

Pass True to activate this component for the current process, or False to deactivate
  for the current process. May also be called as a function to determine the current state.

Access: Shared

Parameters:
  $active : Boolean : Activate? (optional)

Returns:
  $0 : Boolean : Active
Fnd_Out_AddFieldShared

#DECLARE($inField_ptr : Variant; $inWidth_i : Integer; $inHeader_t : Text; $inAlignment_i : Integer; $inFormat_t : Text; $inVisible_b : Boolean)

Project Method: Fnd_Out_AddField (->field | formula | columnObject {; width{; header{; alignment{; format{; visible}}}}})

Allows the developer to specify the columns to display in the output list.
  Call multiple times to display multiple columns.

The first parameter decides how the column is described, and the method reads
  its type to tell which of three forms you have used. All three are current
  and none is deprecated.

1. A field pointer. The simplest form, and the original one. The column
   header defaults to the field's virtual-structure name.
2. A formula as text. Use this to display a calculation, or a field reached
   through relations, which a pointer cannot express. The header defaults to
   the name derived from the formula.
3. An object. Use this when a column needs more than the five trailing
   parameters can carry — minimum and maximum widths, font style, an explicit
   field type. Only fo_field is compulsory; every other property has a
   default, listed below.

Form 1, by pointer:

```
  Fnd_Out_AddField(->[Invoice]Date; 80; "Invoice date")
```

Form 2, by formula, for a calculation or a field reached through relations:

```
  Fnd_Out_AddField("Invoice.Customer.Name"; 120)
```

Form 3, by object, when the column needs more than the parameters carry:

```
  $column_o:=New object("fo_field"; "Invoice.Total"; "fo_minWidth"; 60; \
  "fo_maxWidth"; 200; "fo_hAlign"; Align right; "fo_style"; Bold)
  Fnd_Out_AddField($column_o)
```

Forms 1 and 2 take the column's settings from the trailing parameters. Form 3
  takes them from the object instead — that is the point of it — so pass the
  object alone.

Object properties, with the default applied when the property is absent:

```
  fo_field    Text     COMPULSORY. Field name, or a formula reaching one through relations
  fo_title    Text     Column header. Defaults to the name derived from fo_field
  fo_type     Longint  Field type. Defaults to the type deduced from fo_field
  fo_format   Text     Display format. Defaults to none
  fo_hAlign   Longint  Align default | Align left | Align right | Align center. Defaults to Align default
  fo_width    Longint  Column width. Defaults to 0, meaning the default width
  fo_minWidth Longint  Minimum width. Defaults to 10
  fo_maxWidth Longint  Maximum width. Defaults to 0, meaning no maximum
  fo_style    Longint  Font style. Defaults to Plain
  fo_visible  Boolean  Whether the column shows. Defaults to the current setting
```

Widths, in any form: 0 uses the default size, and a negative number auto-sizes
  the column with that number as its minimum.

Access: Shared

Parameters:
  $inField_ptr : Variant : A field pointer, a formula as text, or a column object
  $inWidth_i : Longint : The width for the column (optional, forms 1 and 2)
  $inHeader_t : Text : The column header (optional, forms 1 and 2)
  $inAlignment_i : Longint : The column alignment (optional, forms 1 and 2)
  $inFormat_t : Text : The column display format (optional, forms 1 and 2)
  $inVisible_b : Boolean : Visible column (optional, forms 1 and 2)

Returns: Nothing
Fnd_Out_AddToSelectionInternal

#DECLARE($recordNumber_i : Integer)

Project Method: Fnd_Out_AddToSelection (record number)

Called from Fnd_Rec_AddToSelection

Access: Private

Parameters:
  $recordNumber_i : Longint : Record number

Returns: Nothing
Fnd_Out_ChoosePotentialColumnsInternal
Project Method: Fnd_Out_ChoosePotentialColumns

Lists fields that COULD be displayed

Access: Private

Parameters: None
Fnd_Out_ConfigureListShared

#DECLARE($font_t : Text; $inSize_i : Integer; $inRowHeight_i : Integer)

Project Method: Fnd_Out_ConfigureList (font{; size{; row height}})

Sets the font used for display if you wish to override the defaults

Access: Shared

Parameters:
  $font_t : Text : Font Name
  $inSize_i : Longint : Font Size
  $inRowHeight_i : Longint : Row Height

Returns: Nothing
Fnd_Out_FormMethodShared

#DECLARE($inFormEvent_i : Integer)

Project Method: Fnd_Out_FormMethod

The controlling from method for the Fnd_Out form

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Out_InfoShared

#DECLARE($request_t : Text)->$reply_t : Text

Project Method: Fnd_Out_Info (label) --> Text

Returns requested information.  See the Fnd_Gen_ComponentInfo method
  for more information.

Responds to:
 • version - what version.
 • name - the name of the module.
 • state - Is Fnd_Out active for THIS process? (active/inactive)
 • highlighted - the number of records highlighted in the listbox.
 • inSelection - the number of records displayed in the listbox.
 • inTable - the number of records in the table.

Numeric codes:
  -1 : Fnd_Out is not active in this process
  -2 : Called oustde the context of the Fnd_Out form
  -3 : Called in the Fnd_Out form, but object not yet initialised/touched (most likely On Load Form Event).

Access: Shared

Parameters:
  $request_t : Text : Info desired

Returns:
  $reply_t : Text : Response (convert to string for numbers)
Fnd_Out_InitInternal
Project Method: Fnd_Out_Init

Initializes both the process and interprocess variables used
  by the Fnd_Out routines.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Out_ListBoxMethodShared
Project Method: Fnd_Out_ListBoxMethod

Controller for listbox

Access: Private

Parameters: None

Returns: Nothing
Fnd_Out_ORDARelatedFieldShared

#DECLARE($in_o : Object)->$out_ptr : Pointer

Project Method: Fnd_Out_ORDARelatedField --> ReturnType

Returns a pointer

Access: Shared

Parameters:
  $in_o : Object : Parameter block
  $in_o.dataclass : Text : name of dataclass from which the relation starts
  $in_o.path : Text : Path to bound attribute

Returns:
  $out_ptr : Pointer : Pointer to attribute field
Fnd_Out_OpenDialogInternal
Project Method: Fnd_Out_OpenDialog

Called by Fnd_IO_DisplayTable2. Not intended to be called from anywhere else.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Out_PickOutputColumnsInternal
Project Method: Fnd_Out_PickOutputColumns

This routine automatically selects some columns to display in the output form
  in case the developer hasn't specified any in the Fnd_aa_Out_DisplayTable hook.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Out_SetupToolbarInternal
Project Method: Fnd_Out_SetupToolbar

Handles the toolbar setup for the input and output forms.

Method Type: Private

Access: Private

Parameters: None

Returns: Nothing
Fnd_Out_SynchroniseSelectionShared
Project Method: Fnd_Out_SynchroniseSelection

Updates the current record selection to match the displayed entity selection.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Out_UpdateShared
Project Method: Fnd_Out_Update

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Out_UpdateToolbarInternal
Project Method: Fnd_Out_UpdateToolbar

Enables and disables the toolbar buttons based on whether or not
  the window is frontmost, the selection of records, and the highlighted
  records.

Method Type: Private

Access: Private

Parameters: None

Returns: Nothing
Fnd_Out_fieldNameShared

#DECLARE($theFormula_t : Text)->$fieldName_t : Text

Project Method: Fnd_Out_fieldName (Formula) --> Text

Pass a formula to determine
the header to include in the display listbox

Fnd_Out_fieldTitle("invoice.client.FirstName") --> FirstName

Access: Shared

Parameters:
  $theFormula_t : Text : A formula

Returns:
  $fieldName_t : Text : The name of the field
Fnd_Out_fieldTypeShared

#DECLARE($theFormula_t : Variant)->$fieldType_i : Integer

Project Method: Fnd_Out_fieldType (Formula or field pointer) --> Long

Pass either the field pointer or a formula to determine
the field type to include in the display listbox
Fnd_Out_fieldType(->[Client]ID) --> 9 (Is longint)
Fnd_Out_fieldType("invoice.client.FirstName") --> 0 (Is alpha field)

Access: Shared

Parameters:
  $theFormula_t : Variant : A field pointer or a valid formula

Returns:
  $fieldType_i : Long : Field Type (-1 indicates error)
Fnd_Out_getPrimaryKeyShared

#DECLARE($tableNumber_i : Integer)->$fieldNumber_i : Integer

Project Method: Fnd_Out_getPrimaryKey (Table Number)--> Integer

Returns the primary key field for a table

Access: Shared

Parameters:
  $tableNumber_i : Long : Table Number

Returns:
  $fieldNumber_i : Long : Field Number
Fnd_Pref_AlertShared

#DECLARE($message_t : Text)

Project Method: Fnd_Pref_Alert (message)

Displays an alert message.  Uses the Foundation Dialog module alert if available.

Access: Private

Parameters:
  $message_t : Text : The alert message text

Returns: Nothing
Fnd_Pref_CreateTableShared
Project Method: Fnd_Pref_CreateTable

Method Type:    Private

Access: Shared

Parameters:    None Used


Returns:    Nothing
Fnd_Pref_DisplayShared

#DECLARE($inPreferencesFormName_t : Text)

Project Method: Fnd_Pref_Display (preferences form name)

Displays the Preferences window in a new process.

Access: Shared

Parameters:
  $inPreferencesFormName_t : Text : The name of the project form to display

Returns: Nothing
Fnd_Pref_DummyMethodShared
Project Method: Fnd_Pref_DummyMethod

A generic method with no code.  This is useful for assigning as the close box method
  for new windows (handle the close in the form method) or to use with ON ERR CALL
  to disable any automatic reaction to errors.

**Deprecated 2026-08-22. Call Fnd_Gen_SilentError instead.** The body was
  always empty, so the two methods were never different. This one served
  nothing — it had no caller in Foundation at all.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Pref_EditorShared
Project Method: Fnd_Pref_Editor

Opens the preferences editor: a list of the stored preferences, with their
  types and values, editable in place and deletable.

Local preferences are listed. Server scoped ones share the same store and are
  shown when the checkbox asks for them, since a preference that plainly
  exists should not look missing.

```
  Fnd_Pref_Editor
```

Access: Shared

Returns: Nothing
Fnd_Pref_EditorApplyInternal
Project Method: Fnd_Pref_EditorApply

Applies the current editor page's value to the selected row, after checking
  it still fits the type it is stored as. The row is the working copy: the
  store is only written when Fnd_Pref_EditorSave runs.

A window rectangle is the case worth the care: it is four coordinates in one
  string, and a rectangle that is not four numbers would leave a window
  unopenable at the size it is asked for next.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Pref_EditorFilterInternal
Project Method: Fnd_Pref_EditorFilter

Filters the list box's rows down to those in Form.allPreferences whose name
  matches Form.filter. Form.allPreferences itself is not touched, so an edit
  held on a row the filter hides is not lost when the filter changes.

The selection cannot survive a change of the displayed collection, so it is
  put back to nothing-selected.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Pref_EditorIsNumberInternal

#DECLARE($text_t : Text)->$isNumber_b : Boolean

Project Method: Fnd_Pref_EditorIsNumber (text) --> Boolean

Whether the text is a number, for the editor to check an edit before it is
  written.

Num cannot answer this on its own: it returns 0 for text that is not a number
  at all, which is indistinguishable from a genuine zero. So the characters
  are looked at instead - an optional sign, digits, and at most one decimal
  separator.

The separator is taken from the machine, so a comma is a decimal point where
  that is the local convention. Leading and trailing spaces are ignored.

Access: Private

Parameters:
  $text_t : Text : The text to weigh

Returns:
  $isNumber_b : Boolean : True when it converts
Fnd_Pref_EditorLoadInternal
Project Method: Fnd_Pref_EditorLoad

Puts the preference rows onto the Form object for the editor's list box, and
  resets what a reload invalidates.

The rows themselves are built by Fnd_Pref_EditorRows, which needs no form and
  can therefore be checked on its own. Form.allPreferences holds the full,
  unfiltered set; Fnd_Pref_EditorFilter derives Form.preferences from it and
  clears the selection, since the collection the selection pointed into has
  been replaced.

Access: Private

Returns: Nothing
Fnd_Pref_EditorRemoveInternal
Project Method: Fnd_Pref_EditorRemove

Deletes the preference selected in the editor's list box, after asking.

Deleting is the safe half of this editor: a preference that is gone is
  recreated with its default the next time something asks for it, where a
  value edited into nonsense is carried until someone notices. The
  confirmation is there because it is still someone's stored setting.

Access: Private

Returns: Nothing
Fnd_Pref_EditorRetireLegacyInternal
Project Method: Fnd_Pref_EditorRetireLegacy

Offers to retire the property list that preceded the JSON preferences file,
  and renames it to <DatabaseName>-superseded.XML when the offer is taken.

Nothing has written the property list since the preferences became JSON, and
  Fnd_Pref_LoadLocalPrefs stopped reading it the moment the JSON file
  appeared. It is left on disk as downgrade insurance, which means a stale
  file sits beside the live one indefinitely. Renaming it keeps the values
  without leaving anything that reads like the current file.

Offered by the Save action only. Apply writes the store without asking, as
  it does for everything else.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Pref_EditorRowsInternal

#DECLARE($mode_i : Integer)->$rows_c : Collection

Project Method: Fnd_Pref_EditorRows (mode) --> Collection

The preferences of one storage location as rows for the editor's list box,
  sorted by name. The editor's tab picks the location; the three are separate
  stores, not a filter over one.

  1  Local   Storage.Fnd.Pref.preferences, the entries scoped Local
  2  Server  the [Fnd_Pref] rows owned by the current user
  3  Shared  the [Fnd_Pref] rows owned by Fnd_Pref_SharedName

Each row's "scope" is what Fnd_Pref_SetValue and Fnd_Pref_Remove take as
  their own scope parameter, so an edited row saves back where it came from.

Access: Private

Parameters:
  $mode_i : Integer : Which store to read: 1 Local, 2 Server, 3 Shared

Returns:
  $rows_c : Collection : One object per preference, ordered by name
Fnd_Pref_EditorSaveInternal
Project Method: Fnd_Pref_EditorSave

Writes the rows the editor has changed through to the store, then saves the
  preferences to disk. The rows are already validated: Fnd_Pref_EditorApply
  refuses a value that cannot convert, so nothing invalid reaches here.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Pref_EditorSelectInternal
Project Method: Fnd_Pref_EditorSelect

Reacts to the editor's list box selection: flips to the editor page for the
  selected row's type, loads its value into that page's bound variable, and
  enables the delete button. No selection shows the neutral page.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Pref_EditorWindowInternal

#DECLARE($objectName_t : Text)

Project Method: Fnd_Pref_EditorWindow (object name)

Applies the four window rectangle fields to the selected row, after
  checking Left is not greater than Right and Top is not greater than
  Bottom. A window that failed that check could not be opened at the size
  it asks for.

A field that fails the check is reverted by rereading the row, which still
  holds what was there before, and the caret is sent back to the field that
  was being edited.

Access: Private

Parameters:
  $objectName_t : Text : The name of the field just edited

Returns: Nothing
Fnd_Pref_ErrorHandlerShared
Project Method: Fnd_Pref_ErrorHandler

Installed as an error handler by our preferences loading routines. Usually
  called because of an XML parsing error.  Displays an alert to the user.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Pref_GetBooleanShared

#DECLARE($itemName_t : Text; $inItemValue_b : Boolean; $inItemScope_v : Variant)->$itemValue_b : Boolean

Project Method: Fnd_Pref_GetBoolean (name{; default{; scope}}) --> Boolean

Retrieves a Boolean value in from user's preferences file.  If an item with the
  specified name isn't found, the default value is returned (if specified).
  Otherwise False is returned.

The scope is a constant - Fnd_Pref_Local, Fnd_Pref_Server, Fnd_Pref_Shared -
  or a label: any text, naming a namespace of the caller's own in
  [Fnd_Pref]. A label is read from that namespace alone, so nothing local
  shadows it; a constant only says where to store a default that has to be
  created, and does not filter the read.

Access: Shared

Parameters:
  $itemName_t : Text : The name of the preference item
  $inItemValue_b : Boolean : The default value (optional)
  $inItemScope_v : Variant : The scope or label if the default is used (optional)

Returns:
  $itemValue_b : Boolean : The saved value
Fnd_Pref_GetLongIntShared

#DECLARE($itemName_t : Text; $inItemValue_i : Integer; $inItemScope_v : Variant)->$itemValue_i : Integer

Project Method: Fnd_Pref_GetLongInt (name{; default{; scope}}) --> Longint

Retrieves a long integer value in from user's preferences file.  If an item
  with the specified name isn't found, the default value is returned (if specified).
  Otherwise, 0 is returned.

The scope is a constant - Fnd_Pref_Local, Fnd_Pref_Server, Fnd_Pref_Shared -
  or a label: any text, naming a namespace of the caller's own in
  [Fnd_Pref]. A label is read from that namespace alone, so nothing local
  shadows it; a constant only says where to store a default that has to be
  created, and does not filter the read.

Access: Shared

Parameters:
  $itemName_t : Text : The name of the preference item
  $inItemValue_i : Longint : The default value (optional)
  $inItemScope_v : Variant : The scope or label if the default is used (optional)

Returns:
  $itemValue_i : Longint : The saved value
Fnd_Pref_GetObjectShared

#DECLARE($itemName_t : Text; $inDefault_o : Object; $inItemScope_v : Variant)->$prefObject_o : Object

Project Method: Fnd_Pref_GetObject (name{; default{; scope}}) --> Object

Retrieves an Object in from user's preferences file.  If an item
  with the specified name isn't found, the default value is returned (if specified).
  Otherwise, an empty object is returned.

The scope is a constant - Fnd_Pref_Local, Fnd_Pref_Server, Fnd_Pref_Shared -
  or a label: any text, naming a namespace of the caller's own in
  [Fnd_Pref]. A label is read from that namespace alone, so nothing local
  shadows it; a constant only says where to store a default that has to be
  created, and does not filter the read.

Access: Shared

Parameters:
  $itemName_t : Text : The name of the preference item
  $inDefault_o : Object : The default value (optional)
  $inItemScope_v : Variant : The scope or label if the default is used (optional)

Returns:
  $prefObject_o : Longint : The saved value
Fnd_Pref_GetProcessWindowRefShared

#DECLARE($processNumber_i : Integer)->$foundRef_i : Integer

Project Method: Fnd_Pref_GetProcessWindowRef (process number) --> Number

Returns the window ref for the frontmost window of the specified process.
There's also a Fnd_Wnd_GetProcessWindowRef method, but it may not be installed.

Access: Private

Parameters:
  $processNumber_i : Longint : A process number

Returns:
  $foundRef_i : Longint : A window reference or 0
Fnd_Pref_GetRealShared

#DECLARE($itemName_t : Text; $inItemValue_r : Real; $inItemScope_v : Variant)->$itemValue_r : Real

Project Method: Fnd_Pref_GetReal (name{; default{; scope}}) --> Real

Retrieves a real number value in from user's preferences file.  If an item
  with the specified name isn't found, the default value is returned (if specified).
  Otherwise, 0 is returned.

The scope is a constant - Fnd_Pref_Local, Fnd_Pref_Server, Fnd_Pref_Shared -
  or a label: any text, naming a namespace of the caller's own in
  [Fnd_Pref]. A label is read from that namespace alone, so nothing local
  shadows it; a constant only says where to store a default that has to be
  created, and does not filter the read.

Access: Shared

Parameters:
  $itemName_t : Text : The name of the preference item
  $inItemValue_r : Real : The default value (optional)
  $inItemScope_v : Variant : The scope or label if the default is used (optional)

Returns:
  $itemValue_r : Longint : The saved value
Fnd_Pref_GetSharedValueShared

#DECLARE($itemName_t : Text; $itemValue_ptr : Pointer; $inItemOwner_t : Text)->$found_b : Boolean

Project Method: Fnd_Pref_GetSharedValue (pref name; ->value{; owner}) --> Boolean

Returns a shared preference value from the database.
With an owner, reads that owner's namespace instead of the shared one, which
  is how a labelled preference is read.
The value is only written through the pointer when the stored type matches
  the type of the variable pointed at, so a caller's default survives a
  mismatch.

Access: Private

Parameters:
  $itemName_t : Text : The preference name
  $itemValue_ptr : Pointer : Where to put the value if found
  $inItemOwner_t : Text : The owner to read, defaulting to Fnd_Pref_SharedName (optional)

Returns:
  $found_b : Boolean : True if found
Fnd_Pref_GetTextShared

#DECLARE($itemName_t : Text; $inItemValue_t : Text; $inItemScope_v : Variant)->$itemValue_t : Text

Project Method: Fnd_Pref_GetText (name{; default{; scope}}) --> Text

Retrieves a text value in from user's preferences file.  If an item with the
  specified name isn't found, the default value is returned (if specified).

The scope is a constant - Fnd_Pref_Local, Fnd_Pref_Server, Fnd_Pref_Shared -
  or a label: any text, naming a namespace of the caller's own in
  [Fnd_Pref]. A label is read from that namespace alone, so nothing local
  shadows it; a constant only says where to store a default that has to be
  created, and does not filter the read.

Access: Shared

Parameters:
  $itemName_t : Text : The name of the preference item
  $inItemValue_t : Text : The default value (optional)
  $inItemScope_v : Variant : The scope or label if the default is used (optional)

Returns:
  $itemValue_t : Text : The saved value
Fnd_Pref_GetWindowShared

#DECLARE($prefName_t : Text; $left_ptr : Pointer; $top_ptr : Pointer; $right_ptr : Pointer; $bottom_ptr : Pointer)

Project Method: Fnd_Pref_GetWindow (name; ->left; ->top; ->right; ->bottom)

Retrieves a text value in from user's preferences file.  If an item with the
  specified name isn't found, the default value is returned (if specified).

Access: Shared

Parameters:
  $prefName_t : Text : The name of the preference item
  $left_ptr : Pointer : The left coordinate
  $top_ptr : Pointer : The top coordinate
  $right_ptr : Pointer : The right coordinate
  $bottom_ptr : Pointer : The bottom coordinate

Returns: Nothing
Fnd_Pref_InfoShared

#DECLARE($request_t : Text)->$reply_t : Text

Project Method: Fnd_Pref_Info (label) --> Text

Returns requested information.  See the Fnd_Gen_ComponentInfo
  method for more information.

Access: Shared

Parameters:
  $request_t : Text : Info desired ("version" or "name")

Returns:
  $reply_t : Text : Response
Fnd_Pref_InitInternal
Project Method: Fnd_Pref_Init

Initializes the Fnd_Pref routines.

The preferences live in Storage.Fnd.Pref, guarded by an Initialized key:

  Storage.Fnd.Pref.preferences  an object keyed by preference name, each
                                holding {type; value; scope; modified}
  Storage.Fnd.Pref.userName     the name the server preferences are owned by

Access: Private

Parameters: None

Returns: Nothing
Fnd_Pref_Iso2Utf8Shared

#DECLARE($source_t : Text)->$utf8Text_t : Text

Project Method: Fnd_Pref_Iso2Utf8 (text) --> Text

Converts ISO text to UTF-8-encoded text.

Access: Private

Parameters:
  $source_t : Text : ISO text string (use Mac to ISO)

Returns:
  $utf8Text_t : Text : The UTF-8 representation

Original method by Scott Vanderbilt, Datagenic Tool & Die, Inc.
Copyright 1996-2003 Datagenic Tool & Die, Inc. All Rights Reserved.
Variable names changed by Dave Batton to match the Foundation naming conventions.
Wayne Stewart (Claude Opus 5) 2026-08-10 - Body uses the named parameters, not $1..$n
Wayne Stewart (Claude Opus 5) 2026-08-14 - No longer called; kept as the reference Fnd_Pref_Utf8ToText is checked against
Fnd_Pref_LegacyPathShared

#DECLARE()->$path_t : Text

Project Method: Fnd_Pref_LegacyPath --> Text

Returns the path to the preferences file written by versions before the move
to JSON: an Apple property list, named .plist on macOS and .xml on Windows.

Read by Fnd_Pref_LoadLocalPrefs when there is no JSON file yet, so an
installation converts itself the first time it runs. Nothing writes it any
more, and it is left on disk rather than deleted so a downgrade still has
something to read.

Access: Private

Parameters: None

Returns:
  $path_t : Text : The path to the legacy prefs file
Fnd_Pref_LoadLegacyPrefsShared
Project Method: Fnd_Pref_LoadLegacyPrefs

Reads the Apple property list that versions before the JSON file wrote, and
puts what it holds into the preference arrays. Called by
Fnd_Pref_LoadLocalPrefs when there is no JSON file yet, so an existing
installation converts itself the first time it runs.

Nothing writes this file any more. It is left on disk rather than deleted, so
a downgrade still finds it; the next save writes JSON and the JSON is read
from then on.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Pref_LoadLocalPrefsShared
Project Method: Fnd_Pref_LoadLocalPrefs

Loads the preferences stored in the local external preference file into the preference arrays.
Called from Fnd_Pref_LoadPrefs, which handles the semaphore.

Reads the JSON file written by Fnd_Pref_SaveLocalPrefs. When there is none,
reads the property list earlier versions wrote and repairs the doubled
characters it holds, so an installation converts itself the first time it
runs and nobody migrates anything by hand. The legacy file is left where it
is; the next save writes JSON alongside it and the JSON wins from then on.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Pref_LoadPrefsShared
Project Method: Fnd_Pref_LoadPrefs

Reads the preferences file from the disk.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Pref_LoadServerPrefsShared
Project Method: Fnd_Pref_LoadServerPrefs

Loads the user's preferences from the database.
Does not load the shared preferences, since we need to get those
 when they're needed, since they may get changed by other users.
Called from Fnd_Pref_LoadPrefs, which handles the semaphore.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Pref_LocalizeShared
Project Method: Fnd_Pref_Localize

Passed the localization strings to the General and (if available) Localization components.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Pref_PathShared

#DECLARE()->$path_t : Text

Project Method: Fnd_Pref_Path --> Text

Returns the path to the preferences file (or at least where it should be).
The file is JSON and is named the same on every platform; the plist and .xml
  files earlier versions wrote are at Fnd_Pref_LegacyPath, which is read once
  and converted when this one is not there yet.

Access: Private

Parameters: None

Returns:
  $path_t : Text : The path to the prefs file
Fnd_Pref_RemoveShared

#DECLARE($itemName_t : Text; $inItemScope_v : Variant)->$removed_b : Boolean

Project Method: Fnd_Pref_Remove (name{; scope}) --> Boolean

Deletes a preference. Returns True if there was one to delete.

The scope says where to delete from, which is not what it means on a getter -
  there it only says where to store a default. It is a constant or a label:

  Fnd_Pref_Local, Fnd_Pref_Server : Storage.Fnd.Pref, and for a server
    preference the [Fnd_Pref] row that goes with it
  Fnd_Pref_Shared : the [Fnd_Pref] row owned by Fnd_Pref_SharedName
  a label : the [Fnd_Pref] row owned by that label

Local and Server name the same slot. The store holds one entry per name and
  the scope is a property of it, so a name cannot be local and server at once,
  and either constant removes whichever it is. Whether the row goes too is
  decided by the scope that was stored, not by the one asked for.

A local or server preference is gone from memory at once and out of the file
  at the next Fnd_Pref_SavePrefs. A shared or labelled one is gone from the
  data file immediately, as writing one is.

Access: Shared

Parameters:
  $itemName_t : Text : The name of the preference item
  $inItemScope_v : Variant : Where to delete from - a scope constant or a label (optional)

Returns:
  $removed_b : Boolean : True if a preference was deleted
Fnd_Pref_SaveLocalPrefsShared
Project Method: Fnd_Pref_SaveLocalPrefs

Writes the preferences file to disk, as JSON.
Called from Fnd_Pref_SavePrefs, which handles the semaphore.

The file is an object of preferences keyed by name, each holding the 4D type
code it was stored under and its value in the JSON type that matches:

  {
    "format": 1,
    "preferences": {
      "Fnd_Nav: Open at Startup": { "type": 6,  "value": true },
      "Fnd_Out: Columns":         { "type": 38, "value": { "width": 90 } },
      "Fnd_Nav: Palette Window":  { "type": -1, "value": "10, 20, 310, 220" }
    }
  }

The type is recorded because JSON cannot tell a long integer from a real, and
because a window - type -1 - has no JSON equivalent at all.

Only the local preferences are written. The server and shared ones live in
[Fnd_Pref], and a labelled one never reaches the arrays.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Pref_SavePrefsShared
Project Method: Fnd_Pref_SavePrefs

Save's the user's local and server preferences.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Pref_SaveServerPreferenceShared

#DECLARE($itemOwner_t : Text; $itemName_t : Text; $itemType_i : Integer; $itemValue_t : Text; $itemScope_i : Integer)

Project Method: Fnd_Pref_SaveServerPreference (owner; pref name; type; value; scope)

Saves a single preference value in the database.
A scope of Fnd_Pref_Local deletes the row instead, which is how a preference
  that is no longer a server or shared one is cleaned up.

Access: Private

Parameters:
  $itemOwner_t : Text : The item's owner name
  $itemName_t : Text : The name of the preference item
  $itemType_i : Longint : The variable type
  $itemValue_t : Text : The value to save as text
  $itemScope_i : Longint : The scope

Returns: Nothing
Fnd_Pref_SaveServerPrefsShared
Project Method: Fnd_Pref_SaveServerPrefs

Saves the user's server preferences to the data file.
Called from Fnd_Pref_SavePrefs, which handles the semaphore.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Pref_SetBooleanShared

#DECLARE($itemName_t : Text; $itemValue_b : Boolean; $inItemScope_v : Variant)

Project Method: Fnd_Pref_SetBoolean (name; value{; scope})

Saves a Boolean value in the user's preferences file.
The scope is a constant - Fnd_Pref_Local, Fnd_Pref_Server, Fnd_Pref_Shared -
  or a label: any text, which becomes the owner of a row in [Fnd_Pref] and
  so gives the caller a namespace of its own, written through at once.

Access: Shared

Parameters:
  $itemName_t : Text : The name of the preference item
  $itemValue_b : Boolean : The Boolean value to save
  $inItemScope_v : Variant : How to save it - a scope constant or a label (optional)

Returns: Nothing
Fnd_Pref_SetLongIntShared

#DECLARE($itemName_t : Text; $itemValue_i : Integer; $inItemScope_v : Variant)

Project Method: Fnd_Pref_SetLongInt (name; value{; scope})

Saves a long integer value in the user's preferences file.
The scope is a constant - Fnd_Pref_Local, Fnd_Pref_Server, Fnd_Pref_Shared -
  or a label: any text, which becomes the owner of a row in [Fnd_Pref] and
  so gives the caller a namespace of its own, written through at once.

Access: Shared

Parameters:
  $itemName_t : Text : The name of the preference item
  $itemValue_i : Longint : The long integer value to save
  $inItemScope_v : Variant : How to save it - a scope constant or a label (optional)

Returns: Nothing
Fnd_Pref_SetObjectShared

#DECLARE($itemName_t : Text; $itemValue_o : Object; $inItemScope_v : Variant)

Project Method: Fnd_Pref_SetObject (name; value{; scope})

Saves a Object value in the user's preferences file.
The scope is a constant - Fnd_Pref_Local, Fnd_Pref_Server, Fnd_Pref_Shared -
  or a label: any text, which becomes the owner of a row in [Fnd_Pref] and
  so gives the caller a namespace of its own, written through at once.

Access: Shared

Parameters:
  $itemName_t : Text : The name of the preference item
  $itemValue_o : Object : The Object value to save
  $inItemScope_v : Variant : How to save it - a scope constant or a label (optional)

Returns: Nothing
Fnd_Pref_SetRealShared

#DECLARE($itemName_t : Text; $itemValue_r : Real; $inItemScope_v : Variant)

Project Method: Fnd_Pref_SetReal (name; value{; scope})

Saves a real number value in the user's preferences file.
The scope is a constant - Fnd_Pref_Local, Fnd_Pref_Server, Fnd_Pref_Shared -
  or a label: any text, which becomes the owner of a row in [Fnd_Pref] and
  so gives the caller a namespace of its own, written through at once.

Access: Shared

Parameters:
  $itemName_t : Text : The name of the preference item
  $itemValue_r : Real : The real value to save
  $inItemScope_v : Variant : How to save it - a scope constant or a label (optional)

Returns: Nothing
Fnd_Pref_SetTextShared

#DECLARE($itemName_t : Text; $itemValue_t : Text; $inItemScope_v : Variant)

Project Method: Fnd_Pref_SetText (name; value{; scope})

Saves a text value in the user's preferences file.
The scope can be one of these:
  0 = store locally (Fnd_Pref_Local)
  1 = store privately on server (Fnd_Pref_Server)
  2 = store shared on server (Fnd_Pref_Shared)
or a label: any text, which becomes the owner of a row in [Fnd_Pref] and so
  gives the caller a namespace of its own, written through at once.

Access: Shared

Parameters:
  $itemName_t : Text : The name of the preference item
  $itemValue_t : Text : The text value to save
  $inItemScope_v : Variant : How to save it - a scope constant or a label (optional)

Returns: Nothing
Fnd_Pref_SetValueShared

#DECLARE($prefName_t : Text; $prefType_i : Integer; $prefValue_t : Text; $prefScope_v : Variant)

Project Method: Fnd_Pref_SetValue (name; type; value; scope)

Adds a preference item to Storage.Fnd.Pref.  Doesn't check the semaphore.
  We assume the calling process has done that, since this method
  is only called internally by other Fnd_Pref routines.
Assumes Fnd_Pref_Init has been called.

The scope is either one of the three constants or a label. A label is an
  owner name in [Fnd_Pref] chosen by the caller, written through at once and
  never held in the arrays, exactly as Fnd_Pref_Shared is.

Access: Private

Parameters:
  $prefName_t : Text : The name of the preference item
  $prefType_i : Longint : The variable type
  $prefValue_t : Text : The value to save as text
  $prefScope_v : Variant : Fnd_Pref_Local, Fnd_Pref_Server, Fnd_Pref_Shared, or a label

Returns: Nothing
Fnd_Pref_SetWindowShared

#DECLARE($prefName_t : Text; $left_i : Integer; $top_i : Integer; $right_i : Integer; $bottom_i : Integer)

Project Method: Fnd_Pref_SetWindow ({name{; window ref}})
Option 2:  Fnd_Pref_SetWindow (name; left; top; right; bottom)

Saves the coordinates of the current window in the user's preferences file.
If no name is specified, the current process name is used.
If no window is specified, the frontmost window of the current process is used.

Access: Shared

Parameters:
  $prefName_t : Text : The name of the preference item (optional)
  $left_i : Longint : The window to save (optional)

Or:
  $prefName_t : Text : The name of the preference item
  $left_i : Longint : The left coordinate
  $top_i : Longint : The top coordinate
  $right_i : Longint : The right coordinate
  $bottom_i : Longint : The bottom coordinate

Returns: Nothing
Fnd_Pref_TypeNameInternal

#DECLARE($type_i : Integer)->$typeName_t : Text

Project Method: Fnd_Pref_TypeName (type) --> Text

The stored type of a preference, as something to read. Preferences keep the
  4D type constant they were written with, and a window rectangle is stored
  as Is Window Coordinates rather than as a type of its own.

```
  Fnd_Pref_TypeName(Is text)  -->  "Text"
  Fnd_Pref_TypeName(Is Window Coordinates)       -->  "Window"
```

Access: Private

Parameters:
  $type_i : Integer : The type the preference was stored with

Returns:
  $typeName_t : Text : The name to show
Fnd_Pref_UserNameShared

#DECLARE($inName_t : Text)->$userName_t : Text

Project Method: Fnd_Pref_UserName ({name}) --> Text

Gets and sets the current user name for the preferences system.

Access: Shared

Parameters:
  $inName_t : Text : The new user name (optional)

Returns:
  $userName_t : Text : The current user name
Fnd_Pref_Utf8ToTextShared

#DECLARE($source_t : Text)->$text_t : Text

Project Method: Fnd_Pref_Utf8ToText (text) --> Text

Undoes the byte-pair expansion the old preferences writer applied to every
character above 127, so a value read from a legacy preferences file comes
back as what was stored rather than doubled.

Two adjacent characters whose codes are a UTF-8 two-byte sequence become the
one character they encode. Anything else is passed through, so text that was
never doubled is returned unchanged and the method is safe to run over a
whole file.

Characters above U+07FF cannot be recovered: the old writer had no room for
them and produced a first "byte" above 255, which is not a sequence this can
read. They are left as they are.

Access: Private

Parameters:
  $source_t : Text : Text read from a legacy preferences file

Returns:
  $text_t : Text : The same text with any doubled characters collapsed
Fnd_Pref_XmlDecodeShared

#DECLARE($inText_t : Text)->$text_t : Text

Project Method: Fnd_Pref_XmlDecode (text) --> Text

Decodes reserved XML characters. For example, &gt; is converted to >.
Unlike HTML encoding, this routine only handles reserved XML characters,
  since accented characters are handled by the UTF-8 encoding.
Call Fnd_Pref_XmlEncode to reverse the process.

Access: Private

Parameters:
  $inText_t : Text : An encoded text string

Returns:
  $text_t : Text : The unencoded text string
Fnd_Pref_XmlEncodeShared

#DECLARE($inText_t : Text)->$text_t : Text

Project Method: Fnd_Pref_XmlEncode (text) --> Text

Encodes reserved XML characters. For example, > is converted to &gt;
Unlike HTML encoding, this routine only handles reserved XML characters,
  since accented characters are handled by the UTF-8 encoding.
Call Fnd_Pref_XmlDecode to reverse the process.

Nothing writes with this any more - the preferences file is JSON, which needs
no escaping of its own. It is kept as the reference Fnd_Pref_XmlDecode is
checked against, that one still being live in the legacy reader, and retires
when the legacy reader does.

Access: Private

Parameters:
  $inText_t : Text : An unencoded text string

Returns:
  $text_t : Text : The encoded text string
Fnd_Pref_XmlParseShared

#DECLARE($inElement_t : Text)

Project Method: Fnd_Pref_XmlParse (element)

Parses the XML reference into an array of element IDs and a 2D array of values.

Reads the legacy property list only. Nothing writes that format any more, so
this is the conversion path and not a round trip.

Access: Private

Parameters:
  $inElement_t : Text : A 4D XML reference

Returns: Nothing
Fnd_Prnt_AlertShared

#DECLARE($message_t : Text)

Project Method: Fnd_Prnt_Alert (message)

Displays an alert message. Uses the Foundation Dialog module alert if available.

Access: Private

Parameters:
  $message_t : Text : The alert message text

Returns: Nothing
Fnd_Prnt_InfoShared

#DECLARE($request_t : Text)->$reply_t : Text

Project Method: Fnd_Prnt_Info (label) --> Text

Returns requested information.  See the Fnd_Gen_ComponentInfo
  method for more information.

Access: Shared

Parameters:
  $request_t : Text : Info desired ("version" or "name")

Returns:
  $reply_t : Text : Response
Fnd_Prnt_InitInternal
Project Method: Fnd_Prnt_Init

Initializes both the process and interprocess variables used by the Printing routines.
Designed to be called at the beginning of any Protected routines to make sure
  the necessary variables are initialized.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Prnt_LabelEditorShared
Project Method: Fnd_Prnt_LabelEditor

Displays 4D's built-in Label Editor

Access: Shared

Parameters: None

Returns: None
Fnd_Prnt_QuickReportEditorShared
Project Method: Fnd_Prnt_QuickReportEditor

Displays 4D's built-in Quick Report Editor

Access: Shared

Parameters: None

Returns: None
Fnd_Pswd_BulletEntryShared

#DECLARE($bulletField_ptr : Pointer; $actualField_ptr : Pointer)

Project Method: Fnd_Pswd_BulletEntry (->visible object; ->text variable)

Replaces typed characters with bullet characters for password entry.
Based on the Keystroke function example in the 4D documentation.
Requires the field's On Before Keystroke event is enabled.

Access: Shared

Parameters:
  $bulletField_ptr : Pointer : The displayed variable
  $actualField_ptr : Pointer : The entered value

Returns: Nothing
Fnd_Pswd_ClassCharactersInternal

#DECLARE($settings_o : Object)->$classes_c : Collection

Project Method: Fnd_Pswd_ClassCharacters ($settings_o : Object) --> $classes_c : Collection

The character classes a generation may draw from, one string per class, with
  the excluded characters already taken out. A class left with nothing after
  the exclusions is dropped rather than returned empty.

Fnd_Pswd_GetValidCharacters joins these; Fnd_Pswd_GeneratePassword keeps them
  apart so it can take one character from each.

Access: Private

Parameters:
  $settings_o : Object : Settings, as returned by Fnd_Pswd_Settings

Returns:
  $classes_c : Collection : Strings of characters, one per class in use
Fnd_Pswd_CustomCharactersShared

#DECLARE($inCharacters_t : Text)->$pswdCustomCharacters_t : Text

Project Method: Fnd_Pswd_CustomCharacters ({characters}) --> Text

Pass any custom characters that should be used to generate passwords.
Returns the currently specified custom characters.

Access: Shared

Parameters:
  $inCharacters_t : Text : Custom characters to use (optional)

Returns:
  $pswdCustomCharacters_t : Text : The current custom characters
Fnd_Pswd_ExcludeCharactersShared

#DECLARE($inCharacters_t : Text)->$pswdExcludeCharacters_t : Text

Project Method: Fnd_Pswd_ExcludeCharacters ({characters}) --> Text

Pass any characters that should be excluded from generate passwords.
Returns the currently specified excluded characters.

Access: Shared

Parameters:
  $inCharacters_t : Text : Characters to exclude (optional)

Returns:
  $pswdExcludeCharacters_t : Text : The current list of excluded characters
Fnd_Pswd_GeneratePasswordShared

#DECLARE($options_v : Variant)->$password_t : Text

Project Method: Fnd_Pswd_GeneratePassword ({options}) --> Text

Generates a password.

With no parameter it uses the module's stored settings, as it always has.
Pass an object to generate under different settings without changing the
stored ones, which is also what makes it safe to call from a worker:
```
  Fnd_Pswd_GeneratePassword({length: 16; useSymbols: False})
  Fnd_Pswd_GeneratePassword({type: Fnd_Pswd_TypePronounceable})
  Fnd_Pswd_GeneratePassword({type: Fnd_Pswd_TypePIN; length: 6})
```

The three types:
  Fnd_Pswd_TypeRandom        - characters drawn from the classes in use
  Fnd_Pswd_TypePronounceable - syllables, in the shape macOS offers; see
                               Fnd_Pswd_Pronounceable for the exact form
  Fnd_Pswd_TypePIN           - digits only, and the exclusion list does not
                               apply, so all ten are available

A random password holds at least one character from every class in use, so
asking for numbers means getting one. Set requireEachClass to False for the
older behaviour of drawing every character from the pooled set.

Access: Shared

Parameters:
  $options_v : Variant : Settings to override for this call (optional)

Returns:
  $password_t : Text : The generated password
Fnd_Pswd_GeneratorApplyInternal
Project Method: Fnd_Pswd_GeneratorApply

Writes the generator dialog's controls back to the stored settings. Called on
  OK only, so cancelling the dialog changes nothing. It reads the Form
  object, so it is of no use outside the dialog.

The dialog offers one length rather than a range, so both bounds come out the
same. The range is still there for a caller that wants it, through
Fnd_Pswd_MinLength and Fnd_Pswd_MaxLength or the options object.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Pswd_GeneratorDialogShared

#DECLARE()->$generatedPassword_t : Text

Project Method: Fnd_Pswd_GeneratorDialog --> Text

Displays a password generator dialog.

Access: Shared

Parameters: None

Returns:
  $generatedPassword_t : Text : The generated password, or "" if cancelled
Fnd_Pswd_GeneratorRefreshInternal
Project Method: Fnd_Pswd_GeneratorRefresh

Generates a password from whatever the generator dialog's controls currently
  say, and updates the password and strength lines. Called by the dialog on
  every change; it reads the Form object, so it is of no use outside one.

Nothing here reads or writes the stored settings — the options object carries
the dialog's state straight to the generator, so opening the dialog and
cancelling leaves the module exactly as it was.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Pswd_GetValidCharactersShared

#DECLARE($options_v : Variant)->$validChars_t : Text

Project Method: Fnd_Pswd_GetValidCharacters ({options}) --> Text

Returns a string with all of the allowed password characters
  (based on the user's preference settings).

Pass an object to answer for settings other than the stored ones, without
changing them:
```
  Fnd_Pswd_GetValidCharacters({useSymbols: False; excludedCharacters: "0O"})
```

Access: Shared

Parameters:
  $options_v : Variant : Settings to override for this call (optional)

Returns:
  $validChars_t : Text : A string of all valid characters
Fnd_Pswd_InfoShared

#DECLARE($request_t : Text)->$reply_t : Text

Project Method: Fnd_Pswd_Info (label) --> Text

Returns requested information.  See the Fnd_Gen_ComponentInfo
  method for more information.

Access: Shared

Parameters:
  $request_t : Text : Info desired ("version" or "name")

Returns:
  $reply_t : Text : Response
Fnd_Pswd_InitInternal
Project Method: Fnd_Pswd_Init

Initializes the state used by the Fnd_Pswd routines. Every Fnd_Pswd method
  calls it, so it runs often and is safe to repeat.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Pswd_LocalizeShared
Project Method: Fnd_Pswd_Localize

Passed the localization strings to the General and (if available) Localization components.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Pswd_MaxLengthShared

#DECLARE($inMaxChars_i : Integer; $inMaxLimitation_i : Integer)->$pswdMaxLength_i : Integer

Project Method: Fnd_Pswd_MaxLength ({max chars to use{; max limitation}}) --> Number

Allows the developer to set the maximum password length, and
  optionally the maximum password length defined in the Generator
  dialog. Returns the current value of the maximum password length.

Access: Shared

Parameters:
  $inMaxChars_i : Longint : The maximum password length setting (optional)
  $inMaxLimitation_i : Longint : The maximum value displayed in the pop-up menu (optional)

Returns:
  $pswdMaxLength_i : Longint : The currently set maximum length
Fnd_Pswd_MinLengthShared

#DECLARE($inMinChars_i : Integer; $inMinLimitation_i : Integer)->$pswdMinLength_i : Integer

Project Method: Fnd_Pswd_MinLength ({min chars to use{; min limitation}}) --> Number

Allows the developer to set the Minimum password length, and
  optionally the Minimum password length defined in the Generator
  dialog. Returns the current value of the Minimum password length.

Access: Shared

Parameters:
  $inMinChars_i : Longint : The Minimum password length setting (optional)
  $inMinLimitation_i : Longint : The Minimum value displayed in the pop-up menu (optional)

Returns:
  $pswdMinLength_i : Longint : The currently set Minimum length
Fnd_Pswd_PronounceableInternal

#DECLARE($settings_o : Object)->$password_t : Text

Project Method: Fnd_Pswd_Pronounceable ($settings_o : Object) --> $password_t : Text

A password of pronounceable syllables, in the shape macOS offers when it
  fills a password field: groups of six lowercase letters joined by hyphens,
  with exactly one character replaced by a digit and one letter capitalised.

  cydpin-rupxA0-cuhvux        kajdy6-Qiptot-qabwot

Each group is two consonant-vowel-consonant syllables. No word list is
involved, which is the difference between this and a passphrase generator.

The group count comes from maxLength rather than from a setting of its own: a
group is seven characters with its hyphen, so the most that fit are used, and
never fewer than two. The default range of 12 to 24 gives three groups and
twenty characters, which is the macOS shape.

Access: Private

Parameters:
  $settings_o : Object : Settings, as returned by Fnd_Pswd_Settings

Returns:
  $password_t : Text : The generated password
Fnd_Pswd_RandomBelowInternal

#DECLARE($upperBound_i : Integer)->$value_i : Integer

Project Method: Fnd_Pswd_RandomBelow ($upperBound_i : Integer) --> $value_i : Integer

Returns a whole number from 0 up to but not including the bound, drawn from
  Generate UUID rather than Random, and free of modulo bias.

Access: Private

Parameters:
  $upperBound_i : Integer : One past the largest value wanted

Returns:
  $value_i : Integer : A number from 0 to $upperBound_i - 1
Fnd_Pswd_SettingsInternal

#DECLARE($options_v : Variant)->$settings_o : Object

Project Method: Fnd_Pswd_Settings ({$options_v : Variant}) --> $settings_o : Object

The settings a generation should run under: the module's stored settings,
  with anything the caller passed laid over the top.

The result is a plain copy, so nothing a caller passes can reach the shared
  object. Call it with no parameter to read the stored settings as they are.

Access: Private

Parameters:
  $options_v : Variant : An object of settings to override, or nothing (optional)

Returns:
  $settings_o : Object : The merged settings
Fnd_Pswd_StrengthShared

#DECLARE($password_t : Text; $options_v : Variant)->$strength_o : Object

Project Method: Fnd_Pswd_Strength ($password_t : Text {; $options_v : Variant}) --> Object

How much work guessing the password would be, given only its length and the
  character classes it draws on.

```
  $strength_o:=Fnd_Pswd_Strength("Tr0ub4dor&3")
  $strength_o.bits    -->  72.1
  $strength_o.rating  -->  3
```

rating runs 0 to 4 — very weak, weak, reasonable, strong, very strong — at
the customary boundaries of 28, 36, 60 and 128 bits. Pass rating through
Fnd_Gen_GetString("Fnd_Pswd"; "Strength"+String(rating)) for a localized name.

By default this counts the pool a guesser would have to search, which is an
upper bound rather than a judgement: it cannot know a password is a
dictionary word, and it badly overstates a pronounceable one, whose syllables
are far more constrained than its letters suggest.

So tell it what it is looking at when you know:
```
  Fnd_Pswd_Strength($password_t; {type: Fnd_Pswd_TypePronounceable})
```
which counts the passwords that shape can actually produce instead — about
79 bits for the three-group default, against the 131 its characters imply.

Access: Shared

Parameters:
  $password_t : Text : The password to weigh
  $options_v : Variant : { type } — how it was generated, if known (optional)

Returns:
  $strength_o : Object : { length ; poolSize ; bits ; rating }
Fnd_Pswd_UseLowercaseShared

#DECLARE($inLowercase_b : Boolean)->$usesLowercase_b : Boolean

Project Method: Fnd_Pswd_UseLowercase ({use Lowercase?}) --> Boolean

Pass True to tell the password generator to use lowercase letters in passwords.
Returns the current setting.

Access: Shared

Parameters:
  $inLowercase_b : Boolean : True to use lowercase letters (optional)

Returns:
  $usesLowercase_b : Boolean : True if lowercase letters can be used
Fnd_Pswd_UseNumbersShared

#DECLARE($inNumbers_b : Boolean)->$usesNumbers_b : Boolean

Project Method: Fnd_Pswd_UseNumbers ({use numbers?}) --> Boolean

Pass True to tell the password generator to use numbers in passwords.
Returns the current setting.

Access: Shared

Parameters:
  $inNumbers_b : Boolean : True to use numbers (optional)

Returns:
  $usesNumbers_b : Boolean : True if numbers can be used
Fnd_Pswd_UseSymbolsShared

#DECLARE($inSymbols_b : Boolean)->$usesSymbols_b : Boolean

Project Method: Fnd_Pswd_UseSymbols ({use symbols?}) --> Boolean

Pass True to tell the password generator to use symbols in passwords.
Returns the current setting.

Access: Shared

Parameters:
  $inSymbols_b : Boolean : True to use symbols (optional)

Returns:
  $usesSymbols_b : Boolean : True if symbols can be used
Fnd_Pswd_UseUppercaseShared

#DECLARE($inUppercase_b : Boolean)->$usesUppercase_b : Boolean

Project Method: Fnd_Pswd_UseUppercase ({use uppercase?}) --> Boolean

Pass True to tell the password generator to use uppercase letters in passwords.
Returns the current setting.

Access: Shared

Parameters:
  $inUppercase_b : Boolean : True to use uppercase letters (optional)

Returns:
  $usesUppercase_b : Boolean : True if uppercase letters can be used
Fnd_Rec_AddItemShared

#DECLARE($inPosition_i : Integer; $label_t : Text; $method_t : Text; $inField_ptr : Pointer; $inFieldType_i : Integer)

Project Method: Fnd_Rec_AddItem (position; label; method{; ->field{; type}})

Called by the protected "Fnd_Rec_Add" routines to add stuff to the arrays.
If the label is blank, the field name will be used.

Access: Private

Parameters:
  $inPosition_i : Position : The position
  $label_t : Text : The label
  $method_t : Text : The method
  $inField_ptr : Pointer : The field (optional)
  $inFieldType_i : Longint : The field's type (optional)

Returns: Nothing
Fnd_Rec_AddTableShared

#DECLARE($inField_ptr : Pointer; $inPosition_i : Integer)

Project Method: Fnd_Rec_AddTable (->table{; position})

Loads the visible fields for the current form's table
  into an array named Fnd_Rec_Fields_aptr.

Access: Private

Parameters:
  $inField_ptr : Pointer : A pointer to the table to add
  $inPosition_i : Longint : The position in which to add the item (optional)

Returns: Nothing
Fnd_Rec_AddToSelectionShared

#DECLARE($recordNumber_i : Integer)

Project Method: Fnd_Rec_AddToSelection (record number)

Adds the record to the current selection. Designed to be called from
  an output form.  See Fnd_IO_FormMethod.

Access: Shared

Parameters:
  $recordNumber_i : Longint : Record number

Returns: Nothing
Fnd_Rec_BestPopupSizeShared

#DECLARE($array_ptr : Pointer)->$bestPopupSize_i : Integer

Project Method: Fnd_Rec_BestPopupSize (->popup array) --> Number

Returns the best object width to use for a pop-up menu form object.

Access: Private

Parameters:
  $array_ptr : Pointer : The array associated with the popup

Returns:
  $bestPopupSize_i : Longint : The best object size for the pop-up
Fnd_Rec_DeleteUserSetShared
Project Method: Fnd_Rec_DeleteUserSet

Deletes the highlighted records in the current selection (the "UserSet").
Asks the user first if they're sure the records should be deleted.
Designed to be called from the Delete button on the toolbar or from a Delete menu item.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Rec_GetExtraWidthShared

#DECLARE()->$extraWidth_i : Integer

Project Method: Fnd_Rec_GetExtraWidth --> Number

Returns the extra width needed to display the Modify Records dialog so none of the text in the
  pop-up menus gets truncated.
Lots of stuff is hard-coded here because we can't get it procedurally.  :-(

Access: Private

Parameters: None

Returns:
  $extraWidth_i : Longint : The extra width required
Fnd_Rec_InfoShared

#DECLARE($request_t : Text)->$reply_t : Text

Project Method: Fnd_Rec_Info (label) --> Text

Returns requested information.  See the Fnd_Gen_ComponentInfo
  method for more information.

Access: Shared

Parameters:
  $request_t : Text : Info desired ("version" or "name")

Returns:
  $reply_t : Text : Response
Fnd_Rec_InitInternal
Project Method: Fnd_Rec_Init

Initializes both the process and interprocess variables used by the Fnd_Rec routines.
Designed to be called at the beginning of any Protected routines to make sure
  the necessary variables are initialized.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Rec_LocalizeShared
Project Method: Fnd_Rec_Localize

Passed the localization strings to the General and (if available) Localization components.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Rec_ModifyShared
Project Method: Fnd_Rec_Modify

Displays a dialog allowing the user to modify all of the records in the current selection.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Rec_ModifyErrorHandlerShared
Project Method: Fnd_Rec_ModifyErrorHandler

A method with no code, installed as the error handler for the Modify
  Records dialog. It never handled anything; it silenced.

**Deprecated 2026-08-22. Call Fnd_Gen_SilentError instead.** The body was
  always empty, so the two methods were never different. This one served
  one ON ERR CALL site in Fnd_Rec_Modify.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Rec_NewRecordShared

#DECLARE($inTable_ptr : Pointer)

Project Method: Fnd_Rec_NewRecord ({->table})

Creates a new record for the current table.

Access: Shared

Parameters:
  $inTable_ptr : Pointer : A pointer to the table to use (optional)

Returns: Nothing
Fnd_Rec_OmitSubsetShared
Project Method: Fnd_Rec_OmitSubset

Omits the highlighted records from the current selection.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Rec_ShowAllShared

#DECLARE($inTable_ptr : Pointer)

Project Method: Fnd_Rec_ShowAll ({->table})

Updates the selection to include all records.  If the Macintosh Option
  key or Windows Alt key is down, the selection is reduced to no records.

Access: Shared

Parameters:
  $inTable_ptr : Pointer : A pointer to the table to use (optional)

Returns: Nothing
Fnd_Rec_ShowSubsetShared
Project Method: Fnd_Rec_ShowSubset

Reduces the current selection to just the highlighted records.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Rec_SizeArrayObjectShared

#DECLARE($object_ptr : Pointer; $alignment_i : Integer)->$diffWidth_i : Integer

Project Method: Fnd_Rec_SizeArrayObject (->object; alignment) --> Number

Sets the best size for an array based form object based on the contents it displays.
Rather than using BEST OBJECT SIZE, we calculate the size the same way we
  did before opening the dialog using the Fnd_Find_GetExtraWidth method.

Access: Private

Parameters:
  $object_ptr : Pointer : A pointer to the form object
  $alignment_i : Longint : The alignment (side not to move)

Returns:
  $diffWidth_i : Longint : The increase in the button size
Fnd_RegG_FormatShared

#DECLARE($md5_t : Text; $inFormat_t : Text)->$format_t : Text

Project Method: Fnd_RegG_Format (MD5; format) --> Text

Returns an unlock code by formatting the MD5 value using the specified format.
The # characters in the format string are replaced by characters from the MD5.
This method is identical to Fnd_Reg_Format.

Example:
  Input: ("35bf6fd6b73c1e29ac15a50316c4cc6c";"Test ###-##/###*")
  Output: "Test 35b-f6/fd6*"

Access: Private

Parameters:
  $md5_t : Text : An MD5 value
  $inFormat_t : Text : A format description

Returns:
  $format_t : Text : The formatted value
Fnd_RegG_GenerateUnlockCodeShared

#DECLARE($secretKey_t : Text; $inFeatureCode_t : Text; $personalization_t : Text; $inLicenseInfo_t : Text; $inFormat_t : Text)->$unlockCode_t : Text

Project Method: Fnd_RegG_GenerateUnlockCode (secret key; feature code; user name; {license info{; format}}) --> Text

Returns a registration/unlock code based on the product number and user name.

Access: Shared

Parameters:
  $secretKey_t : Text : The unique product secret key
  $inFeatureCode_t : Text : The feature code
  $personalization_t : Text : The user name
  $inLicenseInfo_t : Text : The license information (optional)
  $inFormat_t : Text : The unlock code format (optional)

Returns:
  $unlockCode_t : Text : The unlock code
Fnd_RegG_InfoShared

#DECLARE($request_t : Text)->$reply_t : Text

Project Method: Fnd_RegG_Info (label) --> Text

Returns requested information.  See the Fnd_Gen_ComponentInfo method
  for more information.

Access: Shared

Parameters:
  $request_t : Text : Info desired ("version" or "name")

Returns:
  $reply_t : Text : Response
Fnd_RegG_InitInternal
Project Method: Fnd_RegG_Init

Initializes both the process and interprocess variables used by the
  Fnd_RegG routines.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Reg_AlertShared

#DECLARE($message_t : Text)

Project Method: Fnd_Reg_Alert (message)

Displays an alert message. Uses the Foundation Dialog module alert if available.

Access: Private

Parameters:
  $message_t : Text : The alert message text

Returns: Nothing
Fnd_Reg_BuyNowButtonShared
Project Method: Fnd_Reg_BuyNowButton

Gets called from the Buy Now buttons.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Reg_BuyNowURLShared

#DECLARE($inFeatureCode_t : Text; $inUrl_t : Text)->$buyNowURL_t : Text

Project Method: Fnd_Reg_BuyNowURL ({feature code{; URL}}) --> Text

Allows the developer to get and set the URL to go to if the Buy Now button is clicked.

Access: Shared

Parameters:
  $inFeatureCode_t : Text : A feaure code (optional)
  $inUrl_t : Text : The URL (optional)

Returns:
  $buyNowURL_t : Text : The URL
Fnd_Reg_DemoDaysShared

#DECLARE($inFeatureCode_t : Text; $inDays_i : Integer)->$days_i : Integer

Project Method: Fnd_Reg_DemoDays ({feature code{; days}}) --> Number

Allows the developer to set and get the number of demo days for the specified feature.
This routine does not modify the expiration date if it has already been set.

Access: Shared

Parameters:
  $inFeatureCode_t : Text : Feature code (optional)
  $inDays_i : Longint : The number of days (optional)

Returns:
  $days_i : Longint : The number of days
Fnd_Reg_DemoDialogShared

#DECLARE($inFeatureCode_t : Text)

Project Method: Fnd_Reg_DemoDialog ({feature code})

Displays the demo dialog if the feature is not registered.

Access: Shared

Parameters:
  $inFeatureCode_t : Text : Feature code (optional)

Returns: Nothing
Fnd_Reg_DemoDialogFormMethodShared
Project Method: Fnd_Reg_DemoDialogFormMethod

We call this from a protected method because a public form can't
  call private methods.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Reg_DemoMessageShared

#DECLARE($inFeatureCode_t : Text; $inMessage_t : Text)->$demoMessage_t : Text

Project Method: Fnd_Reg_DemoMessage ({feature code{; message}}) --> Text

Sets and gets the demo message for the specified feature code.
This text is displayed in the demo dialog.
This text can be localized, so it's not stored in the with the registration
  record. If you want to use something other than the default values, you'll
  need to call this method to set up the names before trying to retrieve them or
  before displaying the registration dialogs.
Pass an empty string to revert to the default message (from the localization strings).

Access: Shared

Parameters:
  $inFeatureCode_t : Text : The feature code (optional)
  $inMessage_t : Text : The new demo message (optional)

Returns:
  $demoMessage_t : Text : The current demo message
Fnd_Reg_FeatureCodeIndexShared

#DECLARE($featureCode_t : Text)->$index_i : Integer

Project Method: Fnd_Reg_FeatureCodeIndex (feature code) --> Number

Returns the index in the arrays for the specified feature code.
  If the feature code hasn't been added to the arrays yet it is created.

Access: Private

Parameters:
  $featureCode_t : Text : A feature code

Returns:
  $index_i : Longint : The index in the arrays
Fnd_Reg_FeatureNameShared

#DECLARE($inFeatureCode_t : Text; $inFeatureName_t : Text)->$featureName_t : Text

Project Method: Fnd_Reg_FeatureName ({feature code{; feature name}}) --> Text

Sets and gets the feature name for the specified feature code.
This name is used in the registration dialogs.
These names can be localized, so they're not stored in the with the registration
  information. If you want to use something other than the default values, you'll
  need to call this method to set up the names before trying to retrieve them or
  before displaying the registration dialogs.
The Application code returns the database name.
Other feature codes return "Feature: codename"

Access: Shared

Parameters:
  $inFeatureCode_t : Text : The feature code (optional)
  $inFeatureName_t : Text : The new feature name (optional)

Returns:
  $featureName_t : Text : The current feature name
Fnd_Reg_FormatShared

#DECLARE($md5_t : Text; $inFormat_t : Text)->$format_t : Text

Project Method: Fnd_Reg_Format (MD5; format) --> Text

Returns an unlock code by formatting the MD5 value using the specified format.
The # characters in the format string are replaced by characters from the MD5.

Example:
  Input: ("35bf6fd6b73c1e29ac15a50316c4cc6c";"Test ###-##/###*")
  Output: "Test 35b-f6/fd6*"

Access: Private

Parameters:
  $md5_t : Text : An MD5 value
  $inFormat_t : Text : A format description

Returns:
  $format_t : Text : The formatted value
Fnd_Reg_GetDemoDaysRemainingShared

#DECLARE($inFeatureCode_t : Text)->$days_i : Integer

Project Method: Fnd_Reg_GetDemoDaysRemaining ({feature code}) --> Number

Returns the number of days left in the demo. Calculated by adding
  the number of demo days to the demo start date.
If the demo hasn't been started, the number of demo days is returned.

Access: Shared

Parameters:
  $inFeatureCode_t : Text : The feature code (optional)

Returns:
  $days_i : Longint : Days remaining
Fnd_Reg_GetExpirationDateShared

#DECLARE($inFeatureCode_t : Text)->$expirationDate_d : Date

Project Method: Fnd_Reg_GetExpirationDate ({feature code}) --> Date

Gets the feature's expiration date. This is calculated by adding the
  number of demo days to the date the demo period was started.
If the demo hasn't been started, the number of demo days is
  added to the current date, and the resulting date is returned.

Access: Shared

Parameters:
  $inFeatureCode_t : Text : The feature code (optional)

Returns:
  $expirationDate_d : Date : The expiration date
Fnd_Reg_GetLicenseInfoShared

#DECLARE($inFeatureCode_t : Text)->$registeredUserName_t : Text

Project Method: Fnd_Reg_GetLicenseInfo ({feature code}) --> Text

Returns the name of the registered user.  Returns an empty string
  if the program hasn't been registered yet.

Access: Shared

Parameters:
  $inFeatureCode_t : Text : The feature code (optional)

Returns:
  $registeredUserName_t : Text : The name of the registered user
Fnd_Reg_GetUnlockCodeShared

#DECLARE($inFeatureCode_t : Text)->$unlockCode_t : Text

Project Method: Fnd_Reg_GetUnlockCode ({feature code}) --> Text

Returns the activation code that's been entered into the data file.
  Returns an empty string if the program hasn't been registered yet.

Access: Private

Parameters:
  $inFeatureCode_t : Text : The name of the feature in question (optional)

Returns:
  $unlockCode_t : Text : The feature's unlock code
Fnd_Reg_GetUserNameShared

#DECLARE($inFeatureCode_t : Text)->$registeredUserName_t : Text

Project Method: Fnd_Reg_GetUserName ({feature code}) --> Text

Returns the user name that has been saved in the registration record (if any).

Access: Shared

Parameters:
  $inFeatureCode_t : Text : Feature name (optional)

Returns:
  $registeredUserName_t : Text : The registered user's name
Fnd_Reg_InfoShared

#DECLARE($request_t : Text)->$reply_t : Text

Project Method: Fnd_Reg_Info (label) --> Text

Returns requested information.  See the Fnd_Gen_ComponentInfo method
  for more information.

Access: Shared

Parameters:
  $request_t : Text : Info desired ("version" or "name")

Returns:
  $reply_t : Text : Response
Fnd_Reg_InitInternal
Project Method: Fnd_Reg_Init

Initializes both the process and interprocess variables used by the Fnd_Reg routines.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Reg_LoadRegistrationRecordShared

#DECLARE($inFeatureCode_t : Text)

Project Method: Fnd_Reg_LoadRegistrationRecord ({feature code})

Searches for the registration record for the specified feature. If one is found,
  it is checked to make sure it hasn't been tampered with.

Access: Private

Parameters:
  $inFeatureCode_t : Text : The feature code (optional)

Returns: Nothing
Fnd_Reg_LocalizeShared
Project Method: Fnd_Reg_Localize

Passed the localization strings to the General and (if available) Localization components.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Reg_RegDialogFormMethodShared
Project Method: Fnd_Reg_RegDialogFormMethod

We call this from a protected method because a public form can't
  call private methods.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Reg_RegDialogOKButtonShared
Project Method: Fnd_Reg_RegDialogOKButton

We call this from a protected method because a public form can't
  call private methods.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Reg_RegisterShared

#DECLARE($inFeatureCode_t : Text; $inUnlockCode_t : Text; $userName_t : Text)

Project Method: Fnd_Reg_Register (feature code; unlock code; user name)

Call to register the product.  Sets the OK variable to 1 if the product gets registered.
  Sets the Error variable if there's a problem.
This doesn't check to see if it's already been registered, so it can be called
  to change the registration at any time.  But only does the update if the
  user name and unlock code are valid.

Access: Private

Parameters:
  $inFeatureCode_t : Text : The feature code
  $inUnlockCode_t : Text : Unlock code
  $userName_t : Text : User name

Returns: Nothing
Fnd_Reg_RegistrationDialogShared

#DECLARE($inFeatureCode_t : Text)

Project Method: Fnd_Reg_RegistrationDialog ({feature code})

Displays the registration dialog. Works even if the product has been registered.
Sets the OK button if a valid registration number was entered.

Access: Shared

Parameters:
  $inFeatureCode_t : Text : Feature code (optional)

Returns: Nothing
Fnd_Reg_RegistrationStateShared

#DECLARE($inFeatureCode_t : Text)->$state_i : Integer

Project Method: Fnd_Reg_RegistrationState ({feature code}) --> Longint

Returns the current registration state.
It can be one of these constants:
  Fnd_Reg_PreDemo
  Fnd_Reg_Demo
  Fnd_Reg_Expired
  Fnd_Reg_Registered

Access: Shared

Parameters:
  $inFeatureCode_t : Text : The feature code (optional)

Returns:
  $state_i : Longint : The current registration state
Fnd_Reg_ResetShared

#DECLARE($inFeatureCode_t : Text)

Project Method: Fnd_Reg_Reset ({feature code})

Clears out the start date and other information for the specified feature.

Access: Shared

Parameters:
  $inFeatureCode_t : Text : The feature code (optional)

Returns: Nothing
Fnd_Reg_SaveRecordShared

#DECLARE($secretKey_t : Text)

Project Method: Fnd_Reg_SaveRecord (product code)

Saves the current [Fnd_Reg] record after first setting the Checksum field.
Assumes the record is loaded in read/write mode.
Leaves the record loaded.
Use Fnd_Reg_VerifyRecord to verify the checksum.

Access: Private

Parameters:
  $secretKey_t : Text : The secret product code

Returns: Nothing
Fnd_Reg_SaveRegistrationInfoShared

#DECLARE($inFeatureCode_t : Text; $userName_t : Text; $licenseInfo_t : Text; $unlockCode_t : Text)

Project Method: Fnd_Reg_SaveRegistrationInfo (feature name; personalization; license info; unlock code)

Save's the specified info into a registration record.
Doesn't check to make sure the activation code is valid.
  We'll assume whoever called us did that.

Access: Private

Parameters:
  $inFeatureCode_t : Text : Feature name
  $userName_t : Text : Personalization
  $licenseInfo_t : Text : License info
  $unlockCode_t : Text : Unlock code

Returns: Nothing
Fnd_Reg_SetHostVarsShared

#DECLARE($hostFeatureName_ptr : Pointer; $hostMessage1_ptr : Pointer; $hostMessage2_ptr : Pointer; $hostCountDown_ptr : Pointer; $hostOKButton_ptr : Pointer; $hostRegisterButton_ptr : Pointer; $hostBuyNow_ptr : Pointer)

Project Method: Fnd_Reg_SetHostVars (->text; ->text; ->text; ->text; ->longint; ->longint; ->longint)

Called by the Buy Now button method of the Fnd_Reg_DemoDialog form to
  pass some pointers to host variables to the component.

Access: Shared

Parameters:
  $hostFeatureName_ptr : Pointer : Host feature name
  $hostMessage1_ptr : Pointer : Host message 1
  $hostMessage2_ptr : Pointer : Host message 2
  $hostCountDown_ptr : Pointer : Host count down
  $hostOKButton_ptr : Pointer : Host OK button
  $hostRegisterButton_ptr : Pointer : Host Register button
  $hostBuyNow_ptr : Pointer : Host Buy Now button

Returns: Nothing
Fnd_Reg_SetSecretKeyShared

#DECLARE($key_t : Text)

Project Method: Fnd_Reg_SetSecretKey (key)

Allows the developer to set the secret key.
For security reasons, there is no routine to get the secret key.

Access: Shared

Parameters:
  $key_t : Text : The secret key

Returns: Nothing
Fnd_Reg_StartDemoPeriodShared

#DECLARE($inFeatureCode_t : Text)

Project Method: Fnd_Reg_StartDemoPeriod ({feature code})

Call this to begin the demo period.  If the demo period has already
  been started, this routine will do nothing.

Access: Shared

Parameters:
  $inFeatureCode_t : Text : Feature code (optional)

Returns: Nothing
Fnd_Reg_ValidateUnlockCodeShared

#DECLARE($secretKey_t : Text; $featureCode_t : Text; $personalization_t : Text; $licenseInfo_t : Text; $enteredUnlockCode_t : Text; $format_t : Text)->$valid_b : Boolean

Project Method: Fnd_Reg_ValidateUnlockCode (secret key; feature code; user name; license info; unlock code; format) --> Boolean

Returns True if a valid unlock code was passed for the specified
  product number and user name.
Strip any license info before calling.

Access: Private

Parameters:
  $secretKey_t : Text : The unique product secret key
  $featureCode_t : Text : The feature code
  $personalization_t : Text : The user name
  $licenseInfo_t : Text : The license information
  $enteredUnlockCode_t : Text : The user-entered unlock code
  $format_t : Text : The license code format string

Returns:
  $valid_b : Boolean : True if the entered unlock code equals the generated unlock code
Fnd_Reg_VerifyRecordShared
Project Method: Fnd_Reg_VerifyRecord

Makes sure the current [Fnd_Reg] record's Checksum field is correct.
If not, the record is updated so that it is expired. Theoretically this will
  happen only if the user tampers with a [Fnd_Reg] record. Otherwise
  processing is allowed to continue uninterrupted.
Assumes that there is exactly one record in the current selection.
Fnd_Reg_SaveRecord is called to set the checksum.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Reltd_FindRelatedInternal
Project Method: Fnd_Reltd_FindRelated

Looks at the relationship arrays (<>Fnd_Reltd_Many_ap & <>Fnd_Reltd_One_ap) generated from Fnd_Reltd_Init, and
generates and displays a list of tables that are related to the current tablel, for which the current user has access.
It then uses Relate Many Selection and/or Relate One Selection to retieve the desired result.

Access: Private
Fnd_Reltd_GetManyKeysShared

#DECLARE($table_ptr : Pointer; $primaryKeysArray_ptr : Pointer)->$numberOfRelatedManyTables_i : Integer

Project Method: Fnd_Reltd_GetManyKeys (table pointer; array pointer) --> integer

Fills array $2-> with the primary keys of related many tables to table $1->
Returns the number of related many associations for table $1->

Access: Shared

Parameters:
  $table_ptr : Pointer : Table Pointer
  $primaryKeysArray_ptr : Pointer : Primary keys of related many tables

Returns:
  $numberOfRelatedManyTables_i : Integer : the number of related many associations
Fnd_Reltd_GetOneKeysShared

#DECLARE($table_ptr : Pointer; $RelatedOneKeysArray_ptr : Pointer)->$numberOfRelatedOneTables_i : Integer

Project Method: Fnd_Reltd_GetOneKeys (table pointer; array pointer) --> integer

Description
  Fills array $2-> with the foreign keys (source of related One relations) for table $1->
  Returns the number of related one associations for table $1->.

Access: Shared

Parameters:
  $table_ptr : Pointer : Table Pointer
  $RelatedOneKeysArray_ptr : Pointer : Relating keys of related one tables

Returns:
  $numberOfRelatedOneTables_i : Integer : the number of related one associations
Fnd_Reltd_InfoShared

#DECLARE($request_t : Text)->$reply_t : Text

Project Method: Fnd_Reltd_Info (label) --> Text

Returns requested information.  See the Fnd_Gen_ComponentInfo
  method for more information.

Access: Protected

Parameters:
  $request_t : Text : Info desired

Returns:
  $reply_t : Text : Response
Fnd_Reltd_InitInternal
Project Method: Fnd_Reltd_Init

Initializes arrays used for storing relationships with other tables..

Access: Private
Fnd_Reltd_SetNameShared

#DECLARE($table_ptr : Pointer)->$setName_t : Text

Project Method: Fnd_Reltd_SetName (table pointer) --> text

Returns the special Related Set Name for table ($1)

Access: Shared

Parameters:
  $table_ptr : pointer : Pointer to a table

Returns:
  $setName_t : text : Set Name
Fnd_Reltd_ShowSetShared

#DECLARE($RelatedTable_ptr : Pointer; $SetToUse_t : Text)

Project Method: Fnd_Reltd_ShowSet (table Pointer {; Set Name to Use})

Create and show the proper related set for table $1
Use the current selection unless $2 is given.

Access: Shared

Parameters:
  $RelatedTable_ptr : Pointer : Table pointer
  $SetToUse_t : Text : A set name to use
Fnd_SVG_GetStringHeightShared

#DECLARE($inTxt_string : Text; $Txt_fontName : Text; $Lon_fontSize : Integer; $inLon_fonStyle : Integer)->$Lon_height : Real

Project Method: Fnd_SVG_GetStringHeight (text; font; size {; style}) --> height

Returns the height of text in pixels for the supplied font settings.
4D constants may be used for the style parameter.

Access: Shared

Parameters:
  $inTxt_string : Text : The text to measure
  $Txt_fontName : Text : The font used to display the text
  $Lon_fontSize : Integer : The font size
  $inLon_fonStyle : Integer : The font style (optional)

Returns:
  $Lon_height : Real : The text height in pixels
Fnd_SVG_GetStringWidthShared

#DECLARE($inTxt_string : Text; $Txt_fontName : Text; $Lon_fontSize : Integer; $inLon_fonStyle : Integer)->$Num_width : Real

Project Method: Fnd_SVG_GetStringWidth (text; font; size {; style}) --> width

Returns the width of text in pixels for the supplied font settings.
4D constants may be used for the style parameter.

Access: Shared

Parameters:
  $inTxt_string : Text : The text to measure
  $Txt_fontName : Text : The font used to display the text
  $Lon_fontSize : Integer : The font size
  $inLon_fonStyle : Integer : The font style (optional)

Returns:
  $Num_width : Real : The text width in pixels
Fnd_Shell_AdministrationShared
Project Method: Fnd_Shell_Administration

Displays Foundation's Administration dialog.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Shell_CommandWrapperShared

#DECLARE($commandToRun_t : Text; $par1_v : Variant; $par2_v : Variant; $par3_v : Variant)->$result_v : Variant

Project Method: Fnd_Shell_CommandWrapper ($commandToRun_t : Text{; $par1_v{; $par2_v{; $par3_v}}}) --> Variant

Calls a 4D command whose name has changed between versions, by number.

Command numbers are stable; their names are not. Command 254 is
"Get last table number" up to 20 LTS and "Last table number" from 20 R10,
and 33 commands were renamed between 20 and 21. A tokenised call is immune,
because 4D resolves it by number - but source written outside the IDE has no
token, so 4D must resolve it by name, and the wrong spelling becomes an
undeclared variable. Ask Command name for the current spelling instead.

Tokens are why existing calls survive, not luck - and that is a setting, not
a guarantee. Stored tokenless, every rename becomes a load-time name
resolution.

The table holds only what Foundation itself calls. A host's own command
usage is the host developer's to look after, not something to carry here.

Either spelling may be passed; both map to the same number. Foundation passes
the oldest one - "Get last table number", not "Last table number" - so that
the next rename lands in the table here and nowhere else.

Read the result into a local above the loop rather than calling per pass.
Every call builds the table below and compiles a formula.

```
  Fnd_Shell_CommandWrapper("Get last table number")           -->  no parameters
  Fnd_Shell_CommandWrapper("Get last field number"; $table)   -->  one, passed straight
  Fnd_Shell_CommandWrapper($command; $a; $b; $c)              -->  up to three
  Fnd_Shell_CommandWrapper($command; New collection($a; $b))  -->  a collection is the list
```

Pass the parameters as they come. A collection in the second position is
  taken as the whole parameter list, which is how to pass more than three -
  so a command whose own first parameter is a collection cannot be wrapped.
  None of the commands in the table below is such a command.

Only commands that return a value can be wrapped. An ALL-CAPS procedure
returning through output parameters - PROCESS PROPERTIES, MOUSE POSITION -
cannot be called this way. Build the call with Command name instead, as
Fnd_Date_CalendarEventHandler does.

Access: Shared

Parameters:
  $commandToRun_t : Text : The command name, in any version's spelling
  $par1_v : Variant : First parameter, or a collection holding all of them (optional)
  $par2_v : Variant : Second parameter (optional)
  $par3_v : Variant : Third parameter (optional)

Returns:
  $result_v : Variant : Whatever the command returns, or Null if it is not known here
Fnd_Shell_DocumentationShared
Project Method: Fnd_Shell_Documentation

Displays Foundation 6 methods, class functions and the legacy reference manual.

Access: Shared
Fnd_Shell_DoesMethodExistShared

#DECLARE($methodName_t : Text)->$methodExists_i : Integer

Project Method: Fnd_Shell_DoesMethodExist ($methodName_t) --> Longint

Replaces call to the old plugin which was deprecated in V14

Access: Public

Parameters:
  $methodName_t : Text : $methodName_t

Returns:
  $methodExists_i : Longint : -> 1 if method exists
Fnd_Shell_ExcludeFromQuitShared

#DECLARE($processName_t : Text)

Project Method: Fnd_Shell_ExcludeFromQuit (process name)

Tells Foundation not to worry about the specified process when trying to quit.

Access: Shared

Parameters:
  $processName_t : Text : The name of the process

Returns: Nothing
Fnd_Shell_FindShared
Project Method: Fnd_Shell_Find

Called from the Find menu bar item or toolbar item to display the Find dialog.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Shell_GetFndObjectShared

#DECLARE()->$Fnd : Object

Project Method: Fnd_Shell_GetFndObject --> ReturnType

Returns a copy of the Fnd object

Access: Shared

Returns:
  $Fnd : Object : The Fnd objects
Fnd_Shell_InfoShared

#DECLARE($request_t : Text)->$reply_t : Text

Project Method: Fnd_Shell_Info (label) --> Text

Returns requested information.  See the Fnd_Gen_ComponentInfo
  method for more information.

Access: Sahred

Parameters:
  $request_t : Text : Info desired ("version" or "name")

Returns:
  $reply_t : Text : Response
Fnd_Shell_InitInternal
Project Method: Fnd_Shell_Init

Initializes both the process and interprocess variables used by the Fnd_Shell routines.
The Shell routines are designed for use only within the Foundation Shell.  They have
  not been designed to be useful in other projects.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Shell_IsRunningShared

#DECLARE()->$isShellRunning_b : Boolean

Project Method: Fnd_Shell_IsRunning --> Boolean

Returns True if the shell is running.

Access: Shared

Parameters: None

Returns:
  $isShellRunning_b : Boolean : Is the shell running?
Fnd_Shell_LocalizeShared
Project Method: Fnd_Shell_Localize

Passed the localization strings to the General and (if available) Localization components.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Shell_MenuBarShared

#DECLARE($inInternally_i : Integer)

Project Method: Fnd_Shell_MenuBar

A (hopefully) temporary method that asks the menu bar component to
  install the menu bar after a short delay. Must be run from a new process,
  but this method handles that.
This is necessary because a menu bar can't be installed at startup with
  the first version of 4D v11 SQL.

Access: Private

Parameters:
  $inInternally_i : Longint : Used internally

Returns: Nothing
Fnd_Shell_NavigationPaletteShared
Project Method: Fnd_Shell_NavigationPalette

Displays Foundation's Navigation Palette.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Shell_OnExitShared
Project Method: Fnd_Shell_OnExit

Called from the shell's On Exit database method.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Shell_OnStartupShared
Project Method: Fnd_Shell_OnStartup

The startup routine for the Foundation Shell.  Called from the On Startup database method.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Shell_OpenTableAddShared
Project Method: Fnd_Shell_OpenTableAdd (->table{; ->table2...})

Adds the table(s) to the list of tables displayed in the Open Table dialog.
Tables are displayed in the order they are passed to this method.

Access: Shared

Parameters:
  $1..$N : Pointer : The table to add

Returns: Nothing
Fnd_Shell_OpenTableDialogShared
Project Method: Fnd_Shell_OpenTableDialog

Displays a dialog with the names of all visible tables.  If the user selects
  one it's displayed in a new window.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Shell_PrintShared
Project Method: Fnd_Shell_Print

Displays the list of printing options.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Shell_ProcessNameShared

#DECLARE($processNumber_i : Integer)->$processName_t : Text

Project Method: Fnd_Shell_ProcessName ($processNumber_i : Integer) --> Text

Returns the name of a process, or an empty string if there is no such
process. An empty result is the test for "has it gone".

Process info would answer this in one line but only from 20 R10, so the
answer comes from Process activity, which every supported version has.

Process number 0 is not addressable: 4D gives it to its own preemptive
processes, several at once. Asking for it returns an empty string.

Access: Shared

Parameters:
  $processNumber_i : Integer : The process number to look up

Returns:
  $processName_t : Text : The process name, or "" if it is not running
Fnd_Shell_QuitAllProcessesShared

#DECLARE()->$completed_b : Boolean

Project Method: Fnd_Shell_QuitAllProcesses --> Boolean

Attempts to end all processes (except for 4D's) by bugging them until they end.
Assumes they call the Fnd_Gen_QuitNow method to see if they're supposed to end.
Doesn't try to end the current process.
This method will give up (and return False) if any process cancels the Quit attempt
  or if the timeout value is reached.

Access: Private

Parameters: None

Returns:
  $completed_b : Boolean : True if all process ended as expected
Fnd_Shell_QuitterShared
Project Method: Fnd_Shell_Quitter

This process tries to tell all of the other processes to quit.
Called as a new process from Fnd_Gen_QuitNow.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Shell_SelectTableShared

#DECLARE()->$table_ptr : Pointer

Project Method: Fnd_Shell_SelectTable --> Pointer

Displays a choice list of available tables.  Returns a pointer to the
  selected table (if any).  Sets the OK variable to 1 if a table is selected.

Access: Private

Parameters: None

Returns:
  $table_ptr : Pointer : A pointer to the selected table
Fnd_Shell_Show4DSplashScreenShared
Project Method: Fnd_Shell_Show4DSplashScreen

Allows the developer to display the 4D splash screen so the database can
  be used in the User environment.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Shell_ShowAllShared
Project Method: Fnd_Shell_ShowAll

Called from the Show All menu bar item or toolbar item.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Shell_SortShared
Project Method: Fnd_Shell_Sort

Called from the Sort menu bar item or toolbar item to display the Sort dialog.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Shell_SpecialFunctionsShared
Project Method: Fnd_Shell_SpecialFunctions

Displays Foundation's Special Functions dialog.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Shell_StorageShared

#DECLARE()->$storage_t : Text

Project Method: Fnd_Shell_Storage -> $storage_t

A developer utility to read the satate of Foundation

Access: Private

Parameters: None

Returns:
  $storage_t : Text : The current state of the Storage.Fnd shared object

Wayne Stewart (Claude Opus 5) 2026-08-11 - Header added; the body is unchanged
Fnd_Shell_WriteCommentsShared

#DECLARE($inMethodName_t : Text; $inDoNotUse_i : Integer)

Project Method: Fnd_Shell_WriteComments {(Method Name; Do not use)}

This method will create documentation comments
  it is based on the assumption that you format your
   method header comments in the same manner as Foundation
 The second paramater is just used to trigger the method
  starting in a new process, you should not pass anything in this parameter

Access: Shared

Parameters:
  $inMethodName_t : Text : Either pass
      (a) "" - All methods (or don't pass any parameters)
      (b) "Prefix" - Only methods which match a prefix (Eg. Fnd_Art)
      (c) "Specific method name" - write comments for that method
  $inDoNotUse_i : Longint : Do not use this
Fnd_Sort_AddFieldShared

#DECLARE($field_ptr : Pointer; $inPosition_i : Integer)

Project Method: Fnd_Sort_AddField (->field{; position})

Lets the developer add a field to the Sort dialog.  If a position isn't
  specified, the field is added to the end of the list.

Access: Shared

Parameters:
  $field_ptr : Pointer : A pointer to the field to add
  $inPosition_i : Longint : The position in which to add the item (optional)

Returns: Nothing
Fnd_Sort_AddItemShared

#DECLARE($inPosition_i : Integer; $inFieldName_t : Text; $method_t : Text; $inField_ptr : Pointer; $inFieldType_i : Integer)

Project Method: Fnd_Sort_AddItem (position; label; method{; ->field{; type}})

Called by the protected "Fnd_Sort_Add" routines to add stuff to the arrays.
If the label is blank, the field name will be used.

Access: Private

Parameters:
  $inPosition_i : Position : The position
  $inFieldName_t : Text : The label
  $method_t : Text : The method
  $inField_ptr : Pointer : The field (optional)
  $inFieldType_i : Longint : The field's type (optional)

Returns: Nothing
Fnd_Sort_AddSeparatorShared

#DECLARE($inPosition_i : Integer)

Project Method: Fnd_Sort_AddSeparator ({position})

Adds a separator line to the list of sortable fields.

Access: Shared

Parameters:
  $inPosition_i : Longint : Position of the separator (optional)

Returns: Nothing
Fnd_Sort_AddTableShared

#DECLARE($table_ptr : Pointer; $inPosition_i : Integer)

Project Method: Fnd_Sort_AddTable (->table{; position})

Loads the visible, sortable fields for the specified table
  into an array named Fnd_Sort_Fields_aptr.

Access: Shared

Parameters:
  $table_ptr : Pointer : A pointer to the table to add
  $inPosition_i : Longint : The position in which to add the item (optional)

Returns: Nothing
Fnd_Sort_DirectionShared

#DECLARE($desiredDirection_i : Integer)->$sortDirection_i : Integer

Project Method: Fnd_Sort_Direction ({direction}) --> Longint

Allows the developer to set or get the currently selected sort direction.
If a valid direction is specified, this routine will make it the default direction.

Access: Shared

Parameters:
  $desiredDirection_i : Longint : The desired sort direction (optional)
      1 = ascending
     -1 = descending

Returns:
  $sortDirection_i : Longint : The current sort direction
Fnd_Sort_DisplayShared

#DECLARE($inPointerTable_ptr : Pointer)

Project Method: Fnd_Sort_Display ({->table})

Displays the simple Sort dialog.  If the Macintosh Option key or Windows Alt
  key is down, 4D's Order By editor is displayed instead.

Access: Shared

Parameters:
  $inPointerTable_ptr : Pointer : A pointer to the table to use (optional)

Returns: Nothing
Fnd_Sort_InfoShared

#DECLARE($request_t : Text)->$reply_t : Text

Project Method: Fnd_Sort_Info (label) --> Text

Returns requested information.  See the Fnd_Gen_ComponentInfo
  method for more information.

Access: Shared

Parameters:
  $request_t : Text : Info desired ("version" or "name")

Returns:
  $reply_t : Text : Response
Fnd_Sort_InitInternal
Project Method: Fnd_Sort_Init

Initializes both the process and interprocess variables used by the Fnd_Sort routines.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Sort_LocalizeShared
Project Method: Fnd_Sort_Localize

Passed the localization strings to the General and (if available) Localization components.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Sort_OrderByEditorShared
Project Method: Fnd_Sort_OrderByEditor

Displays the simple Sort dialog.  If the Macintosh Option key or Windows Alt
  key is down, 4D's Order By editor is displayed instead.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Sort_PrefsGetShared

#DECLARE($prefName_t : Text)->$prefValue_t : Text

Project Method: Fnd_Sort_PrefsGet (pref name) --> Text

Gets a value from the user preferences if the Fnd_Pref component is available.

Access: Private

Parameters:
  $prefName_t : Text : The preference name

Returns:
  $prefValue_t : Text : The saved value
Fnd_Sort_PrefsPutShared

#DECLARE($prefName_t : Text; $textValue_t : Text)

Project Method: Fnd_Sort_PrefsPut (pref name; text value)

Adds an item to the user's preferences if the Fnd_Pref component is available.

Access: Private

Parameters:
  $prefName_t : Text : The preference name
  $textValue_t : Text : The value to store

Returns: Nothing
Fnd_Sort_SelectedFieldShared

#DECLARE($desiredField_ptr : Pointer)->$selectedField_ptr : Pointer

Project Method: Fnd_Sort_SelectedField ({->field}) --> Pointer

Allows the developer to set or get the currently selected sort field.
If a field pointer is specified, this routine will make it the default selection
  if it's available in the list. If not, nothing changes.

Access: Shared

Parameters:
  $desiredField_ptr : Pointer : The field to default to (optional)

Returns:
  $selectedField_ptr : Pointer : The selected sort field
Fnd_SqNo_CreateTableShared
Project Method: Fnd_SqNo_CreateTable

Creates the

Access: Private
Fnd_SqNo_DistributorShared
Project Method: Fnd_SqNo_Distributor

Launched as a new process from Fnd_SqNo_Get to get sequence numbers.
  Sequence numbers must be gotten from a new process for any process
  currently in a transaction.

Access: Private

Parameters: None

Returns: Nothing
Fnd_SqNo_EditGroupShared

#DECLARE($id_i : Integer)

Project Method: Fnd_SqNo_EditGroup (record ID)

Displays a dialog for editing the specified sequence number group.

Access: Private

Parameters:
  $id_i : Longint : A sequence number ID

Returns: Nothing
Fnd_SqNo_EditorShared
Project Method: Fnd_SqNo_Editor

Displays the Sequence Number Editor dialog.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_SqNo_EnableShared

#DECLARE($groupName_t : Text; $inStartNumber_i : Integer)

Project Method: Fnd_SqNo_Enable (group name{; start number})

Creates the sequence number group if it doesn't already exist.  Optionally starts
  the numbering at the specified number.  Otherwise it starts at 1.
The new group will be editable by the database administrator.
Doesn't change the [Fnd_SqNo] table's read/write state.

Access: Shared

Parameters:
  $groupName_t : Text : The group name
  $inStartNumber_i : Longint : The starting number (optional)

Returns: Nothing
Fnd_SqNo_FixShared

#DECLARE($tablePtr : Pointer)

Project Method: Fnd_SqNo_Fix (->table)

Fixeds the next number for the tables ID field by finding the highest
  number used so far and adding one to it.

Access: Shared

Parameters:
  $tablePtr : Pointer : A pointer to the table to fix

Returns: Nothing
Fnd_SqNo_GetShared

#DECLARE($groupName_t : Text)->$newSeqNo_i : Integer

Project Method: Fnd_SqNo_Get (sequence number group name) --> Number

Returns the next available sequence number for the specified group. If the group
  doesn't already exist, it is created and 1 is returned as the first number.

Access: Shared

Parameters:
  $groupName_t : Text : The group name

Returns:
  $newSeqNo_i : Longint : The next number in the sequence
Fnd_SqNo_Get2Shared

#DECLARE($groupName_t : Text)->$seqNo_i : Integer

Project Method: Fnd_SqNo_Get2 (group name) --> Number

Called by Fnd_SqNo_Get2 to get a sequence number.

Access: Private

Parameters:
  $groupName_t : Text : The group name

Returns:
  $seqNo_i : Longint : The next number in the sequence
Fnd_SqNo_GetManyShared

#DECLARE($groupName_t : Text; $count_i : Integer; $numbers_ptr : Pointer)

Project Method: Fnd_SqNo_GetMany (group name; how many; ->longint array)

Returns multiple sequence numbers for the specified group. If the group
  doesn't already exist, it is created.

Access: Shared

Parameters:
  $groupName_t : Text : The group name
  $count_i : Longint : The number of numbers to return
  $numbers_ptr : Pointer : A longint array to receive the numbers

Returns: Nothing
Fnd_SqNo_GetMany2Shared

#DECLARE($groupName_t : Text; $numbers_ptr : Pointer)

Project Method: Fnd_SqNo_GetMany2 (group name; ->longint array)

Just like Fnd_SqNo_Get2, but grabs multiple numbers.
Determines how many numbers to get by the size of the array.
Assumes element 1 was filled elsewhere, and starts with element 2.

Access: Private

Parameters:
  $groupName_t : Text : The group name
  $numbers_ptr : Pointer : A longint array to receive the numbers

Returns: Nothing
Fnd_SqNo_IDFieldPtrShared

#DECLARE($table_ptr : Pointer)->$keyField_ptr : Pointer

Project Method: Fnd_SqNo_IDFieldPtr (->table) --> Pointer

Returns a pointer to the specified table's ID field.  Displays a bug alert if
  no ID field is found or specified by the hook.

Access: Private

Parameters:
  $table_ptr : Pointer : The table in question.

Returns:
  $keyField_ptr : Pointer : A pointer to the table's key field
Fnd_SqNo_InfoShared

#DECLARE($request_t : Text)->$reply_t : Text

Project Method: Fnd_SqNo_Info (label) --> Text

Returns requested information.  See the Fnd_Gen_ComponentInfo
  method for more information.

Access: Shared

Parameters:
  $request_t : Text : Info desired ("version" or "name")

Returns:
  $reply_t : Text : Response
Fnd_SqNo_InitInternal
Project Method: Fnd_SqNo_Init

Initializes both the process and interprocess variables used by the
  Foundation Sequence Number routines.

Access: Private

Parameters: None

Returns: Nothing
Fnd_SqNo_IsInDesignGroupShared

#DECLARE()->$isDesigner_b : Boolean

Project Method: Fnd_SqNo_IsInDesignGroup --> Boolean

Returns True if the current user is the Designer or in a group
   with a name that implies he's a designer.

Access: Private

Parameters: None

Returns:
  $isDesigner_b : Boolean : True if the user is a Designer
Fnd_SqNo_LoadGroupRecordShared

#DECLARE($groupName_t : Text)

Project Method: Fnd_SqNo_LoadGroupRecord (group name)

Called from Fnd_SqNo_Get2 and Fnd_SqNo_GetMany2 to load the specified group record.
Creates it if it doesn't exist.

Access: Private

Parameters:
  $groupName_t : Text : The group name

Returns: Nothing
Fnd_SqNo_LocalizeShared
Project Method: Fnd_SqNo_Localize

Passed the localization strings to the General and (if available) Localization components.

Access: Private

Parameters: None

Returns: Nothing
Fnd_SqNo_PutShared

#DECLARE($seqNoName : Text; $seqNo : Integer)

Project Method: Fnd_SqNo_Put (sequence number group name; number to return)

Call this method to return a number to the specified sequence number group.
  If the number is higher than the current next number, it will be ignored. It will
  also be ignored if it's already in the list of numbers to reuse, or if the group
  name doesn't already exist.

This method always starts a new process to return the sequence number so the
  calling process doesn't have to wait for it to finish.

Access: Shared

Parameters:
  $seqNoName : Text : The group name
  $seqNoName : Longint : The number to reuse

Returns: Nothing
Fnd_SqNo_Put2Shared

#DECLARE($seqNoName : Text; $seqNo : Integer)

Project Method: Fnd_SqNo_Put2 (sequence number group name; number to return)

Called as a new process from Fnd_SqNo_Put to put a number
  back into the sequence number group.

Access: Private

Parameters:
  $seqNoName : Text : The group name
  $seqNo : Longint : The number to reuse

Returns: Nothing
Fnd_SqNo_SetShared

#DECLARE($groupName_t : Text; $nextSeqNo_i : Integer)

Project Method: Fnd_SqNo_Set (sequence number group name; next number)

This routine sets the next number in the sequence, and clears out any numbers
  in the reuse

Sets the OK variable to 1 if successful.

Access: Shared

Parameters:
  $groupName_t : Text : The group name
  $nextSeqNo_i : Longint : The new next number in the sequence

Returns: Nothing
Fnd_SqNo_SetRecordIDShared

#DECLARE($inTable_ptr : Pointer)

Project Method: Fnd_SqNo_SetRecordID ({->table})

Assigns a sequential number to the specified table's ID field. Assumes the number
  will not be seen by the end user, so the number can't be returned for reuse.
If no table is specified, either the current form table or the trigger table will be used.

Access: Shared

Parameters:
  $inTable_ptr : Pointer : A pointer to the table for which to return a number (optional)

Returns: Nothing
Fnd_SqNo_TableNameShared

#DECLARE($table_ptr : Pointer)->$tableName_t : Text

Project Method: Fnd_SqNo_TableName (->table) --> Text

Returns the virtual table name if the Fnd_VS component is available.
  Otherwise the 4D table name is returned.

Access: Private

Parameters:
  $table_ptr : Pointer : A table

Returns:
  $tableName_t : Text : The table name to display
Fnd_SqNo_TableSeqNoNameShared

#DECLARE($tablePointer_ptr : Pointer)->$seqNoName_t : Text

Project Method: Fnd_SqNo_TableSeqNoName (->table) --> Text

Returns the group name for the table's key field sequence number.

Access: Private

Parameters:
  $tablePointer_ptr : Pointer : A table pointer

Returns:
  $seqNoName_t : Text : The name of the sequence number group
Fnd_Tbl_CreateAccessArrayInternal
Project Method: Fnd_Tbl_CreateAccessArray

Build the <>Fnd_Tbl_UserCanAccess_ab array.
This array stores whether a person can display the various tables.
Create/modify the Fnd_Hook_Tbl_UserCanDisplay method in the host
database to return whether or not the user can display its $1-> table.

This should be run on shell initialization or when new user signs in.
It is used by Fnd_Reltd methods, but it could also be used by
Fnd_Hook_Shell_OpenTable as a way of consolidating authorization to tables.

Access: Private
Fnd_Tbl_InfoShared

#DECLARE($request_t : Text)->$reply_t : Text

Project Method: Fnd_Tbl_Info (label) --> Text

Returns requested information.  See the Fnd_Gen_ComponentInfo
  method for more information.

Access: Protected

Parameters:
  $request_t : Text : Info desired

Returns:
  $reply_t : Text : Response
Fnd_Tbl_InitInternal
Project Method: Fnd_Tbl_Init

Initializes both the process and interprocess variables used by the Fnd_Tbl routines.
Method Type:    Protected

Access: Private
Fnd_Tbl_UserCanAccessShared

#DECLARE($table_ptr : Pointer)->$mayAccess_b : Boolean

Project Method: Fnd_Tbl_UserCanAccess (table pointer) --> boolean

Returns TRUE if the current user can access table $1->

Access: Shared

Parameters:
  $table_ptr : Pointer : Table pointer

Returns:
  $mayAccess_b : Type : Description
Fnd_Test_AssertInternal

#DECLARE($ok_b : Boolean; $message_t : Text)

Project Method: Fnd_Test_Assert ($ok_b : Boolean; $message_t : Text)

Records one assertion and writes it to the Fnd_Test log. Use in Fnd_Test_
methods in place of ASSERT.

Nothing interactive happens, so a test behaves the same run from the IDE or
headlessly under Fnd_FCS_TestRunner. Results are read from the log, or from
testResults.json when the runner wrote them.

Access: Private

Parameters:
  $ok_b      : Boolean : The condition being asserted
  $message_t : Text : What was expected, and what was found

Returns: Nothing
Fnd_Test_EndInternal
Project Method: Fnd_Test_End

Closes a test method and writes the tally to the Fnd_Test log. Call it as the
last line of every Fnd_Test_ method.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Test_PackParametersInternal
Project Method: Fnd_Test_PackParameters

Unit tests for Fnd_Msg_PackParameters, the variadic method that can be
exercised without a form. Run from the IDE, or headlessly through Fnd_FCS_TestRunner.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Test_VersionCapabilitiesInternal
Project Method: Fnd_Test_VersionCapabilities

Unit tests for Fnd_FCS_VersionCapabilities. Run from the IDE, or headlessly through Fnd_FCS_TestRunner.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Text_Base64ToTextShared

#DECLARE($textToDecode_t : Text)->$decodedText_t : Text

Project Method: Fnd_Text_Base64ToText (text) --> Text

Converts the Base64 encoded text back to ASCII text.

Access: Shared

Parameters:
  $textToDecode_t : Text : The text to decode

Returns:
  $decodedText_t : Text : The decoded text
Fnd_Text_CapitalizeShared

#DECLARE($theText_t : Text; $options_i : Integer)->$theResult_t : Text

Project Method: Fnd_Text_Capitalize (text{; style}) --> Text

Modifies the capitalization of the text value. The options paramter
  determines how the text will be modified. If no second parameter
  is passed, Book Title capitalization is applied.

Access: Shared

Parameters:
  $theText_t : Text : The text to format
  $options_i : Longint : Style (optional)
     1 = Use Sentence Style capitalization (not yet implemented)
     2 = Don't use exclude word list

Returns:
  $theResult_t : Text : The formatted text
Fnd_Text_CapitalizeExcludeShared

#DECLARE($excludeWordsArray_ptr : Pointer)

Project Method: Fnd_Text_CapitalizeExclude (->exclude array)

Use this method to specify or determine the words that will not be
  capitalized using the Fnd_Text_Capitalize method.
To get a list of words that will be excluded from capitalization, pass an empty text array.
To set the words to exclude from the capitalization routine, pass an
  array with at least one element.
To clear the list of words to exclude from the capitalization routines,
  pass an array with one element consisting of a blank string.

Access: Shared

Parameters:
  $excludeWordsArray_ptr : Pointer : Text array of words to exclude

Returns: Nothing
Fnd_Text_DecodeBase64BlobShared

#DECLARE($pPassedBlob : Pointer)

Project Method: Fnd_Text_DecodeBase64Blob (->blob)

Converts the blob from Base64 back to the bytes it encodes.

Whitespace inside the encoded text is ignored, so text produced by
  Fnd_Text_EncodeBase64Blob decodes whatever line breaks it was wrapped with.

Access: Shared

Parameters:
  $pPassedBlob : Pointer : A pointer to a blob

Returns: Nothing
Fnd_Text_EncodeBase64BlobShared

#DECLARE($pPassedBlob : Pointer; $inBInsertLineBr : Boolean; $inEOL_t : Text)

Project Method: Fnd_Text_EncodeBase64Blob (->blob{; line breaks?{; line break character(s)}})

Converts the blob to Base64, in place.

Line breaks are inserted after every 76 characters unless the second
  parameter says otherwise.

Access: Shared

Parameters:
  $pPassedBlob : Pointer : A pointer to the blob to encode
  $inBInsertLineBr : Boolean : Insert line breaks every 76 characters (optional, default True)
  $inEOL_t : Text : The line break characters (optional, default a carriage return)

Returns: Nothing
Fnd_Text_EqualStringsShared

#DECLARE($StringOne_t : Text; $StringTwo_t : Text)->$Equal_b : Boolean

Project Method: Fnd_Text_EqualStrings (String1; String2) --> Boolean

Compares two strings in the most efficient manner

Access: Shared

Parameters:
  $StringOne_t : Text : String1
  $StringTwo_t : Text : String2

Returns:
  $Equal_b : Boolean : True if the strings are identical
Fnd_Text_FormatNumberShared

#DECLARE($theNumberToFormat_t : Text; $theFormatToUse_t : Text)->$theResult_t : Text

Project Method: Fnd_Text_FormatNumber (string, format) --> Text

Formats a numeric string (like a zip code or phone number).
  Removes any dashes, "E"s, periods, etc. before formatting.

Access: Shared

Parameters:
  $theNumberToFormat_t : Text : The number as text
  $theFormatToUse_t : Text : The format to use

Returns:
  $theResult_t : Text : The formatted number
Fnd_Text_InfoShared

#DECLARE($request_t : Text)->$reply_t : Text

Project Method: Fnd_Text_Info (label) --> Text

Returns requested information.  See the Fnd_Gen_ComponentInfo
  method for more information.

Access: Shared

Parameters:
  $request_t : Text : Info desired ("version" or "name")

Returns:
  $reply_t : Text : Response
Fnd_Text_InitInternal
Project Method: Fnd_Text_Init

Initializes the state used by the text routines. Every Fnd_Text method calls
  it, so it runs often and is safe to repeat.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Text_MD5EncodingShared

#DECLARE($inCharset_t : Text)->$charset_t : Text

Project Method: Fnd_Text_MD5Encoding ({charset}) --> Text

Sets the charset Fnd_Text_TextToMD5 converts text through before hashing it,
  for every subsequent call that does not name one itself.
Returns the charset currently in force.

The default is "ISO-8859-1". Call this once at startup to change it:

```
  Fnd_Text_MD5Encoding("UTF-8")
```

ASCII hashes the same under either, so this only affects text carrying
  characters above 127. Changing it invalidates any stored digest of such text.

The setting is shared, so it applies to every process in the host.

Access: Shared

Parameters:
  $inCharset_t : Text : The charset name, as CONVERT FROM TEXT understands it (optional)

Returns:
  $charset_t : Text : The charset now in force
Fnd_Text_PadSpacesShared

#DECLARE($inText_t : Text; $length_t : Integer)->$text_t : Text

Project Method: Fnd_Text_PadSpaces (text; length)

Pads the passed text with spaces.  If the length of the text is greater than
  the length paramter, it will be truncated.

Access: Shared

Parameters:
  $inText_t : Text : The text to pad
  $length_t : Longint : The desired length

Returns:
  $text_t : Text : The modified text
Fnd_Text_StripSpacesShared

#DECLARE($inTheText_t : Text; $inOptions_i : Integer; $inAltSpaces_t : Text)->$theText_t : Text

Project Method: Fnd_Text_StripSpaces (text{; options{; altSpaces}}) --> Text

Strips spaces from the text that is passed to it.
If no second parameter is passed, leading and trailing spaces
   are stripped from the text.
Add these values together to specify which spaces to strip:
   1 + 2 = 3 to strip leading and trailing spaces
   1 + 4 = 5 to strip leading and double spaces
   etc.
A third optional parameter allows you to specify alternatives or multiples:
   " " - normal behaviour
   char(9) - strip tabs
   " "+char(9) - strip spaces and tabs
   " "+char(9)+char(160) - and non-breaking spaces
Leading and trailing runs may mix the characters in any order.
Matching is strict, so a character is stripped only if it is listed..

Access: Shared

Parameters:
  $inTheText_t : Text : The text from which to strip spaces
  $inOptions_i : Longint : Options (optional)
     1 = Remove leading spaces
     2 = Remove trailing spaces
     4 = Remove double spaces within the text
  $inAltSpaces_t : Text : Alternatives to spaces (optional)

Returns:
  $theText_t : Text : The text with spaces stripped
Fnd_Text_TextToBase64Shared

#DECLARE($textToEncode_t : Text)->$theEncodedText_t : Text

Project Method: Fnd_Text_TextToBase64 (text) --> Text

Converts the text to Base64.

Access: Shared

Parameters:
  $textToEncode_t : Text : The text to encode

Returns:
  $theEncodedText_t : Text : The encoded text
Fnd_Text_TextToMD5Shared

#DECLARE($textToMD5Digest_t : Text; $inCharset_t : Text)->$theMD5Digest_t : Text

Project Method: Fnd_Text_TextToMD5 (text{; charset}) --> Text

Generates and returns a MD5 message digest based on the text.

The default charset is ISO-8859-1. Pass a charset name to hash through a
  different one, or call Fnd_Text_MD5Encoding once to change the default for
  every subsequent call.

```
  Fnd_Text_TextToMD5("abc")             -->  900150983cd24fb0d6963f7d28e17f72
  Fnd_Text_TextToMD5($text; "UTF-8")    -->  hashed as UTF-8 instead
  Fnd_Text_MD5Encoding("UTF-8")         -->  every later call uses UTF-8
```

Access: Shared

Parameters:
  $textToMD5Digest_t : Text : The text from which to create the message digest
  $inCharset_t : Text : Charset to convert the text through (optional)

Returns:
  $theMD5Digest_t : Text : The message digest
Fnd_Text_TrimShared

#DECLARE($inTheText_t : Text)->$theText_t : Text

Project Method: Fnd_Text_Trim (text) --> Text

Strips native Trim whitespace from both ends of text: space, tab, LF, CR,
  vertical tab and form feed. Non-breaking space is deliberately excluded.

Access: Shared

Parameters:
  $inTheText_t : Text : The text to trim

Returns:
  $theText_t : Text : The trimmed text
Fnd_Text_WrapShared

#DECLARE($inRemainingText_t : Text; $lineLength_i : Integer)->$wrappedText_t : Text

Project Method: Fnd_Text_Wrap (text; max line length) --> Text

Wraps the text into lines of at most the given length, joined by carriage
  returns. The length is a character count, not a pixel width.

Lines break at the last space that fits. A run with no space in it breaks
  hard at the limit, and a carriage return already in the text ends its line
  where it stands.

Access: Shared

Parameters:
  $inRemainingText_t : Text : The text to wrap
  $lineLength_i : Longint : Max line length of wrapped text

Returns:
  $wrappedText_t : Text : The wrapped text

Routine by Marco Bernasconi <mbernasconi@befund.com>
Fnd_Tlbr_Button_AddShared

#DECLARE($buttonName_t : Text; $buttonLabel_t : Text; $iconName_t : Text; $method_t : Text; $shortcut_t : Text)

Project Method: Fnd_Tlbr_Button_Add (name; buttonText; iconName; method{; keystroke})

Adds a new button to the toolbar.

Access: Shared

Parameters:
  $buttonName_t : Text : A unique name for the button object
  $buttonLabel_t : Text : The button label
  $iconName_t : Text : A Picture Library name for the icon
  $method_t : Text : The method to run when clicked
  $shortcut_t : Text : The Command/Ctrl keyboard equivalent (optional)

Returns: Nothing
Fnd_Tlbr_Button_CountShared

#DECLARE() : Integer

Project Method: Fnd_Tlbr_Button_Count --> Longint

Returns the number of buttons in the toolbar

Access: Shared

Parameters:
  None

Returns:
  $0 : Longint : Count
Fnd_Tlbr_Button_EnabledShared

#DECLARE($objectName_t : Text; $enabled_b : Boolean)

Project Method: Fnd_Tlbr_Button_Enabled (buttonName; state)

Set the enabled state of the toolbar item.

Access: Shared

Parameters:
  $objectName_t : Text : The button name to modify
  $enabled_b : Boolean : True to enable the button

Returns: Nothing
Fnd_Tlbr_Button_IconShared

#DECLARE($buttonName_t : Text; $iconName_t : Text) : Text

Project Method: Fnd_Tlbr_Button_Icon (button name{; icon name}) --> Text

Call this method to specify the name of a picture library image to
  use as the button's icon.

Access: Shared

Parameters:
  $buttonName_t : Text : The name of the button to modify
  $iconName_t : Text : The name of the picture to use as the icon (optional)

Returns:
  $0 : Text : The name of the button's icon
Fnd_Tlbr_Button_InsertShared

#DECLARE($beforeButton_t : Text; $buttonName_t : Text; $buttonLabel_t : Text; $iconName_t : Text; $method_t : Text; $shortcut_t : Text)

Project Method: Fnd_Tlbr_Button_Insert (beforeButton; name; buttonText; iconName; method{; keystroke})

Inserts a new button to the toolbar.

Access: Shared

Parameters:
  $beforeButton_t : Text : The button in the position to insert the new button
  $buttonName_t : Text : A unique name for the button object
  $buttonLabel_t : Text : The button label
  $iconName_t : Text : A Picture Library name for the icon
  $method_t : Text : The method to run when clicked
  $shortcut_t : Text : The Command/Ctrl keyboard equivalent (optional)

Returns:
  Nothing
Fnd_Tlbr_Button_LabelShared

#DECLARE($objectName_t : Text; $label_t : Text) : Text

Project Method: Fnd_Tlbr_Button_Label (button name{; label}) --> Text

Returns the label for the button with the specified name.
If a label is passed, this method first sets the button label.

Access: Shared

Parameters:
  $objectName_t : Text : The button name
  $label_t : Text : The new button label (optional)

Returns:
  $0 : Text : The button label
Fnd_Tlbr_Button_MenuShared

#DECLARE($buttonName_t : Text; $menuItems_ptr : Pointer)

Project Method: Fnd_Tlbr_Button_Menu (button name; ->menu items array)

Adds a menu to the specified button.

Access: Shared

Parameters:
  $buttonName_t : Text : The button name
  $menuItems_ptr : Pointer : Array of menu items

Returns: Nothing
Fnd_Tlbr_Button_MethodShared

#DECLARE($buttonName_t : Text; $methodName_t : Text) : Text

Project Method: Fnd_Tlbr_Button_Method (button name{; method name}) --> Text

Call this method to specify the name of the method to call when the button is clicked.

Access: Shared

Parameters:
  $buttonName_t : Text : The name of the button to modify
  $methodName_t : Text : The name of the method to call (optional)

Returns:
  $0 : Text : The name of the method called by the button

Toolbar Component - © mitchenall.com 2002
Fnd_Tlbr_Button_NameShared

#DECLARE($index_i : Integer)->$buttonName_t : Text

Project Method: Fnd_Tlbr_Button_Name (index) --> name

Returns the name of the nth button in the toolbar.

Access: Shared

Parameters:
  $index_i : Index :The index number of the buttton (1 - count)

Returns:
  $buttonName_t : Text : Button name
Fnd_Tlbr_Button_OnClickedShared

#DECLARE($buttonClicked_ptr : Pointer; $buttonVariableName_t : Text)

Project Method: Fnd_Tlbr_Button_OnClicked (->form button object)

Called whenever a button is clicked.  Each button in the toolbar has the
 following script for their On Clicked event....
       Fnd_Tlbr_Button_OnClicked (Self)

Access: Shared

Parameters:
  $buttonClicked_ptr : Pointer : A pointer to the clicked picture button object

Returns: Nothing
Fnd_Tlbr_Button_OnShortcutShared

#DECLARE($shortcutKey_t : Text)

Project Method: Fnd_Tlbr_Button_OnShortcut (shortcut key)

Called from the On Clicked form event of all of the shortcut key buttons.

Access: Shared

Parameters:
  $shortcutKey_t : Text : The shortcut key code

Returns: Nothing
Fnd_Tlbr_Button_PositionShared

#DECLARE($buttonName_t : Text; $left_ptr : Pointer; $top_ptr : Pointer; $right_ptr : Pointer; $bottom_ptr : Pointer)

Project Method: Fnd_Tlbr_Button_Position (button name; ->left; ->top; ->right; ->bottom)

Returns the coordinates of the specified button.

Access: Shared

Parameters:
  $buttonName_t : Text : The name of the button
  $left_ptr : Pointer : Longint to receive the left coordinate
  $top_ptr : Pointer : Longint to receive the top coordinate
  $right_ptr : Pointer : Longint to receive the right coordinate
  $bottom_ptr : Pointer : Longint to receive the bottom coordinate

Returns: Nothing
Fnd_Tlbr_Button_RemoveShared

#DECLARE($buttonName_t : Text)

Project Method: Fnd_Tlbr_Button_Remove (buttonName)

Call this method to remove the button with the specified name from the toolbar.

Access: Shared

Parameters:
  $buttonName_t : Text : The name of the button to remove

Returns: Nothing
Fnd_Tlbr_Button_ShortcutShared

#DECLARE($buttonName_t : Text; $shortcutKey_t : Text)

Project Method: Fnd_Tlbr_Button_Shortcut (buttonName; shortcutKey)

Associates a Command key shortcut with the button.

Access: Private

Parameters:
  $buttonName_t : Text : A button name
  $shortcutKey_t : Text : The shortcut letter to assign

Returns: nothing
Fnd_Tlbr_ClearShared
Project Method: Fnd_Tlbr_Clear


Clears all items from the toolbar.


Access: Shared


Parameters: None


Returns: Nothing
Fnd_Tlbr_CurrentButtonShared

#DECLARE($newButtonName_t : Text) : Text

Project Method: Fnd_Tlbr_CurrentButton ({button name}) --> Text

Sets and gets the button specified as the "current" button.
This is for the new Mac OS X style "Prefs" style button.

Access: Shared

Parameters:
  $newButtonName_t : Text : The name of the button to make the current button (optional)

Returns:
  $0 : Text : The name of the current button
Fnd_Tlbr_Divider_AddShared
Project Method: Fnd_Tlbr_Divider_Add

Adds a divider line to the toolbar object list.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Tlbr_Divider_GetPictureShared

#DECLARE($pictureName_t : Text)->$divider_pic : Picture

Project Method: Fnd_Tlbr_Divider_GetPicture (divider picture name) --> Picture

Returns the toolbar divider picture * 4 so it works as a button object.
This is the divider version of the Fnd_Bttn_GetPicture method.

Access: Private

Parameters:
  $pictureName_t : Text : The name of the toolbar divider picture

Returns:
  $divider_pic : Picture : The buttonized toolbar divider picture
Fnd_Tlbr_FormMethodShared
Project Method: Fnd_Tlbr_FormMethod

To be called from any form method that inherits the toolbar form.
Expects the On Load and On Resize form events to be enabled.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Tlbr_InfoShared

#DECLARE($request_t : Text)->$reply_t : Text

Project Method: Fnd_Tlbr_Info (label) --> Text

Returns requested information.  See the Fnd_Gen_ComponentInfo
  method for more information.

Access: Shared

Parameters:
  $request_t : Text : Info desired ("version" or "name")

Returns:
  $reply_t : Text : Response
Fnd_Tlbr_InitInternal
Project Method: Fnd_Tlbr_Init

Must be called at the start of a new process which contains dialogs which have
toolbars.

Based on Mark Mitchenall's Toolbar Component.
©2002 mitchenall.com
Used with permission.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Tlbr_Object_DrawShared

#DECLARE($objectNumber_i : Integer; $variation_t : Text; $leftOffset_i : Integer; $topOffset_i : Integer)

Project Method: Fnd_Tlbr_Object_Draw (object number; variation; left offset; top offset)

Draws a toolbar object in the specified position. Doesn't actually do any
  drawing. It just moves a picture button into the right location and makes
  it visible.

Access: Private

Parameters:
  $objectNumber_i : Text : The object number
  $variation_t : Text : The object's variation
  $leftOffset_i : Longint : The left offset
  $topOffset_i : Longint : The top offset

Returns: Nothing
Fnd_Tlbr_Object_GetNumberShared

#DECLARE($objectName_t : Text)->$objectNumber_i : Integer

Project Method: Fnd_Tlbr_Object_GetNumber (object name) --> Number

Returns the object number (array element number) for
  the specified object name.

Access: Private

Parameters:
  $objectName_t : Text : A toolbar object name

Returns:
  $objectNumber_i : Longint : The array element number
Fnd_Tlbr_PlatformShared

#DECLARE($requestedPlatform_t : Text) : Text

Project Method: Fnd_Tlbr_Platform ({platform name}) --> Text

Sets and gets the toolbar platform name.
Can be:
  "Win"
  "Mac"
  "Auto"
Only "Mac" or "Win" will be returned.

Access: Shared

Parameters:
  $requestedPlatform_t : Text : The platform to use (optional)

Returns:
  $0 : Text : The selected platform
Fnd_Tlbr_RedrawShared
Project Method: Fnd_Tlbr_Redraw


Updates the toolbar.


Access: Shared


Parameters: None


Returns: Nothing
Fnd_Tlbr_SetHostVarsShared

#DECLARE($hostPictureVariables_ptr : Pointer; $hostPictureButtons_ptr : Pointer; $hostInfoVariables_ptr : Pointer)

Project Method: Fnd_Tlbr_SetHostVars (->pointer array; ->pointer array; ->text)

Called by the first toolbar button method of the Fnd_Tlbr_Toolbar form to
  pass some pointers to host variables to the component.

Access: Shared

Parameters:
  $hostPictureVariables_ptr : Pointer : Host picture variables
  $hostPictureButtons_ptr : Pointer : Host picture buttons
  $hostInfoVariables_ptr : Pointer : Host info variables

Returns: Nothing
Fnd_Tlbr_SetVariablesShared
Project Method: Fnd_Tlbr_SetVariables

Updates the toolbar variables depending on the current platform and size settings.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Tlbr_ShortcutKeyName_GetShared

#DECLARE($keyCodeChar_t : Text)->$keyCodeName_t : Text

Project Method: Fnd_Tlbr_ShortcutKeyName_Get (Character) --> Text

Because it's not easy putting the actual keycode
into the buttons on the toolbar Master form for trapping shortcuts,
we have names for some of them, and this
routine converts the single character keycode into that name.

Access: Private

Parameters:
  $keyCodeChar_t : Text : The Key Code character

Returns:
  $keyCodeName_t : Text : The Key Code Alias Name

Author: Mark Mitchenall
Created: 16/4/02 at 2:20 AM
Toolbar Component - © mitchenall.com 2002
WBS 03 December 2024: Swap to var syntax for declarations
Fnd_Tlbr_StatusMessageShared

#DECLARE($newStatus_t : Text) : Text

Project Method: Fnd_Tlbr_StatusMessage ({new text}) --> Text

Allows for the getting and setting of the information text line displayed
  in the standard toolbar output form.

Access: Shared

Parameters:
  $newStatus_t : Text : The text to set for the info line (optional)

Returns:
  $0 : Text : The text that's displayed in the info line.
Fnd_Tlbr_StyleShared

#DECLARE($requestedStyle_t : Text) : Text

Project Method: Fnd_Tlbr_Style ({style name}) --> Text

Sets and gets the toolbar style name.
Can be:
  "Large"
  "Prefs"
  "Small1"
  "Small2"

Access: Shared

Parameters:
  $requestedStyle_t : Text : The style to use (optional)

Returns:
  $0 : Text : The selected style
Fnd_Tlbr_UpdateBackgroundShared
Project Method: Fnd_Tlbr_UpdateBackground

Updates the toolbar background.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Tlbr_UpdateButtonsShared
Project Method: Fnd_Tlbr_UpdateButtons

Redraws the toolbar, but only if it needs it.  If no code has been called which
  effects the toolbar, then there is no reason to redraw it.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_VS_AddTableShared

#DECLARE($table_ptr : Pointer)

Project Method: Fnd_VS_AddTable (->table)

Adds the specified table, and all of its fields, to the virtual structure arrays.
Doesn't call 4D's SET TABLE TITLES command.
This is a private method. To add a table the developer will normally call
  the Fnd_VS_ShowTable method.
We don't use semaphores here. We assume the calling process is
  using the semaphore.

Access: Private

Parameters:
  $table_ptr : Pointer : The table to add

Returns: Nothing
Fnd_VS_CreateNameListsShared
Project Method: Fnd_VS_CreateNameLists

Creates the 4D lists that can be used by the virtual structure routines.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_VS_FieldNameShared

#DECLARE($field_ptr : Pointer) : Text

Project Method: Fnd_VS_FieldName (->field) --> Text

Returns the virtual field name of the specified field.

Access: Shared

Parameters:
  $field_ptr : Pointer : A pointer to a field

Returns:
  $0 : Text : The virtual field name
Fnd_VS_GetFieldsShared

#DECLARE($table_ptr : Pointer; $fieldPtrsArray_ptr : Pointer; $fieldNamesArray_ptr : Pointer)

Project Method: Fnd_VS_GetFields (->table; ->pointer array{; ->text array})

Returns in the passed arrays the pointers to and the field names of all
  of the visible fields for the specified table.

Access: Shared

Parameters:
  $table_ptr : Pointer : A pointer to a table
  $fieldPtrsArray_ptr : Pointer : A pointer to a pointer array to receive the field pointers
  $fieldNamesArray_ptr : Pointer : A pointer to a text array to receive the field names (optional)

Returns: Nothing
Fnd_VS_GetTablesShared

#DECLARE($tablePtrsArray_ptr : Pointer; $tableNamesArray_ptr : Pointer)

Project Method: Fnd_VS_GetTables (->pointer array{; ->text array})

Returns in the passed arrays the names of and pointers to all of the visible tables.
Returns the arrays already sorted in the order the developer wants them sorted.

Access: Shared

Parameters:
  $tablePtrsArray_ptr : Pointer : A pointer to a pointer array to receive the table pointers
  $tableNamesArray_ptr : Pointer : A pointer to a text array to receive the table names (optional)

Returns: Nothing
Fnd_VS_HandleErrorShared
Project Method: Fnd_VS_HandleError

Special Error handling for the Virtual Structure component.

Access: Private

Parameters: None

Returns: Nothing
Fnd_VS_InfoShared

#DECLARE($request_t : Text)->$reply_t : Text

Project Method: Fnd_VS_Info (label) --> Text

Returns requested information.  See the Fnd_Gen_ComponentInfo
  method for more information.

Access: Shared

Parameters:
  $request_t : Text : Info desired ("version" or "name")

Returns:
  $reply_t : Text : Response
Fnd_VS_InitInternal
Project Method: Fnd_VS_Init

Initializes both the process and interprocess variables used by the Virtual Structure routines.
Designed to be called at the beginning of any Protected routines to make sure
  the necessary variables are initialized.

Access: Private

Parameters: None

Returns: Nothing
Fnd_VS_NbrValidFieldsShared

#DECLARE($tableNumber_i : Integer)->$nbrValidFields_i : Integer

Project Method: Fnd_VS_NbrValidFields ($tableNumber_i : Integer) --> Integer

Counts the fields of a table that the virtual structure treats as valid.

Two negative results are error codes rather than counts, so test for them
  before using the number:

```
  -1  no table number was passed
  -2  the table number is not a valid table
```

Access: Shared

Parameters:
  $tableNumber_i : Integer : The table to scan

Returns:
  $nbrValidFields_i : Integer : The count, or -1 / -2 as above
Fnd_VS_ReplaceStringShared

#DECLARE($old_t : Text; $new_t : Text)

Project Method: Fnd_VS_ReplaceString (old string; new string)

Does a find and replace in all of the virtual table titles and field titles.
Designed specifically to quickly replace underscores with spaces, but
  could also be used for other global changes.

Access: Shared

Parameters:
  $old_t : Text : The string to replace
  $new_t : Text : The string to replace it with

Returns: Nothing
Fnd_VS_SetFieldTitleShared

#DECLARE($field_ptr : Pointer; $title_t : Text)

Project Method: Fnd_VS_SetFieldTitle (->field; title)

Allows the developer to set a virtual field title for a single field.

Access: Shared

Parameters:
  $field_ptr : Pointer : The field to rename
  $title_t : Text : The virtual title

Returns: None
Fnd_VS_SetFieldTitlesShared

#DECLARE($table_ptr : Pointer; $fieldNamesArray_ptr : Pointer; $fieldNumbersArray_ptr : Pointer)

Project Method: Fnd_VS_SetFieldTitles (->table; ->field titles; ->field numbers)

Allows the developer to set virtual field titles. Designed to be called
  as a replacement to 4D's SET FIELD TITLES command.

Access: Shared

Parameters:
  $table_ptr : Pointer : The table to use
  $fieldNamesArray_ptr : Pointer : Array of field titles
  $fieldNumbersArray_ptr : Pointer : Array of field numbers

Returns: None
Fnd_VS_SetTableTitleShared

#DECLARE($table_ptr : Pointer; $title_t : Text)

Project Method: Fnd_VS_SetTableTitle (->table; title)

Allows the developer to set a virtual table title for a single table.

Access: Shared

Parameters:
  $table_ptr : Pointer : The table to rename
  $title_t : Text : The virtual title

Returns: None
Fnd_VS_SetTableTitlesShared

#DECLARE($tableNamesArray_ptr : Pointer; $tableNumbersArray_ptr : Pointer)

Project Method: Fnd_VS_SetTableTitles (->table titles; ->table numbers)

Allows the developer to set virtual table titles. Designed to be called
  as a replacement to 4D's SET TABLE TITLES command.

Access: Shared

Parameters:
  $tableNamesArray_ptr : Pointer : Array of table titles
  $tableNumbersArray_ptr : Pointer : Array of table numbers

Returns: None
Fnd_VS_ShowTableShared

#DECLARE($table_ptr : Pointer)

Project Method: Fnd_VS_ShowTable (->table)

Adds a table to the virtual structure arrays.

Access: Shared

Parameters:
  $table_ptr : Pointer : A pointer to the table to let the user see

Returns: Nothing
Fnd_VS_TableNameShared

#DECLARE($table_ptr : Pointer)->$tableName_t : Text

Project Method: Fnd_VS_TableName (->table) --> Text

Returns the virtual table name of the specified table.

Access: Shared

Parameters:
  $table_ptr : Pointer : A pointer to a table

Returns:
  $tableName_t : Text : The virtual table name
Fnd_VS_UseNameListsShared
Project Method: Fnd_VS_UseNameLists

Uses the virtual structure 4D lists.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_VS_WasSubtableShared

#DECLARE($table_ptr : Pointer)->$wasSubtable_b : Boolean

Project Method: Fnd_VS_WasSubtable (->table) --> Boolean

Returns true if the referenced table was a subtable
Test is done on the "id_added_by_converter" field name.

Access: Private

Parameters:
  $table_ptr : Pointer : A table

Returns:
  $wasSubtable_b : Boolean : True if the table was converted from a subtable

Based on the WasSubtable method donated by by Jérôme Pupier
WBS 03 December 2024: Swap to var syntax for declarations
Fnd_VS_zProbeHostListsShared

#DECLARE($listName_t : Text)->$result_o : Object

Project Method: Fnd_VS_zProbeHostLists ($listName_t : Text) --> Object

A diagnostic, kept deliberately: the answer varies by host, and knowing which
  route works in a particular database decides how that host is migrated off
  4D lists.

Reports, from inside the component, which routes to a host's choice list
  actually work. Call it from a host with the name of one of the host's own
  lists.

```
  Fnd_VS_zProbeHostLists("VS_Table002_EN")
```

Each route is reported as an object with a "worked" Boolean and what it
  found, so one call answers all of them and a failure in one does not hide
  the rest. A route that raises is silenced and reports worked:False with no
  further detail: Try...Catch...End try, which could report the error, is
  20 R5 and this component still builds on 20.x LTS.

Access: Shared

Parameters:
  $listName_t : Text : The name of a list belonging to the HOST database

Returns:
  $result_o : Object : One property per route attempted
Fnd_Wnd_BringToFrontShared

#DECLARE($windowID_i : Integer)

Project Method: Fnd_Wnd_BringToFront ($windowID_i : Integer)

Pass a window ID and that window is brought to the
front, a more precise version than bringing an entire
process to the front. Does nothing when the window
does not exist.

Access: Shared

Parameters:
  $windowID_i : Integer : A Window ID
Fnd_Wnd_CancelShared
Project Method: Fnd_Wnd_Cancel

Calls the CANCEL command.

Exists so that CANCEL can be reached from CALL FORM, which takes a method
  name and cannot be given a bare command.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Wnd_CancelCloseAllShared
Project Method: Fnd_Wnd_CancelCloseAll

Call this to end Foundation's attempts to close all windows.

Access: Shared

Parameters: None

Returns: Nothing
Fnd_Wnd_CloseAllWindowsShared

#DECLARE($wait_b : Boolean)->$completed_b : Boolean

Project Method: Fnd_Wnd_CloseAllWindows ({wait?}) --> Boolean

This process tries to tell all of the other processes to close their windows.
Called as a new process from Fnd_Shell_Quitter, and when the user Option-clicks
  a window's close box.
If the wait parameter is passed and is True, this process will wait until all of the
  windows have been closed, and then return True.  If it takes too long for the windows
  to close, or the user cancels the closing, then False is returned.
Do not pass True to this routine from a process that's displaying a window that
  needs to be closed.  It won't work properly.

Access: Shared

Parameters:
  $wait_b : Boolean : Wait for all windows to close? (optional)

Returns:
  $completed_b : Boolean : Did all windows close?
Fnd_Wnd_CloseAllWindows2Shared
Project Method: Fnd_Wnd_CloseAllWindows2

This process tries to tell all of the other processes to close their windows.
Called as a new process from Fnd_Wnd_CloseAllWindows.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Wnd_CloseBoxShared

#DECLARE($closeBox_b : Boolean) : Boolean

Project Method: Fnd_Wnd_CloseBox ({add close box?}) --> Boolean

Adds a close box to the upcoming window. Also returns the current setting.
This method replaces the original Fnd_Wnd_SetCloseBox method, which is now obsolete.

Access: Shared

Parameters:
  $closeBox_b : Boolean : Add a close box? (optional)

Returns:
  $0 : Boolean : Current setting
Fnd_Wnd_CloseBoxMethodShared
Project Method: Fnd_Wnd_CloseBoxMethod

A generic method with no code. Used by the Fnd_Wnd_OpenWindow method
 as the close box method for new windows (handle the close in the form method).

Access: Private

Parameters: None

Returns: Nothing
Fnd_Wnd_CloseNowShared

#DECLARE() : Boolean

Project Method: Fnd_Wnd_CloseNow --> Boolean

Returns True if Foundation is trying to close all windows due to
  the user Option-clicking a window's close box.

Access: Shared

Parameters: None

Returns:
  $0 : Boolean : True if it's time to close the window
Fnd_Wnd_GetNextStackElementShared

#DECLARE() : Integer

Project Method: Fnd_Wnd_GetNextStackElement --> Number

Gets (and reserves) the element number of the next available
  position in the window stack arrays.

Access: Private

Parameters: None

Returns:
  $0 : Longint : The array element number to use
Fnd_Wnd_GetProcessWindowRefShared

#DECLARE($processNumber_i : Integer) : Integer

Project Method: Fnd_Wnd_GetProcessWindowRef (process number) --> Number

Returns the window ref for the frontmost window of the specified process.

Access: Private

Parameters:
  $processNumber_i : Longint : A process number

Returns:
  $0 : Longint : A window reference or 0
Fnd_Wnd_InfoShared

#DECLARE($request_t : Text)->$reply_t : Text

Project Method: Fnd_Wnd_Info (label) --> Text

Returns requested information.  See the Fnd_Gen_ComponentInfo
  method for more information.

Access: Shared

Parameters:
  $request_t : Text : Info desired ("version" or "name" or "position" or "title")

Returns:
  $reply_t : Text : Response
Fnd_Wnd_InitInternal
Project Method: Fnd_Wnd_Init

Initializes both the process and interprocess variables used by the Fnd_Wnd routines.

Access: Private

Parameters: None

Returns: Nothing
Fnd_Wnd_MoveOnScreenShared

#DECLARE($numberOne_v : Variant; $top_ptr : Pointer; $right_ptr : Pointer; $bottom_ptr : Pointer; $windowType_i : Integer)

Project Method: Fnd_Wnd_MoveOnScreen (->left; ->top; ->right; ->bottom; {window type})

Modifies the window coordinates so the window will be opened completely onscreen.
Alternate syntax #1: do not pass any parameters and Foundation will use the settings in the Fnd.Wnd object
Alternate syntax #2: pass an object with the desired parameters

Access: Shared

Parameters:
  $numberOne_v : Pointer : Pointer to the left side of the window
  $top_ptr : Pointer : Pointer to the top of the window
  $right_ptr : Pointer : Pointer to the right side of the window
  $bottom_ptr : Pointer : Pointer to the bottom of the window
  $windowType_i : Longint : The window type (optional)

  $numberOne_v : Object : Object containing parameters
  $numberOne_v.left : Longint : Left side of the window
  $numberOne_v.top : Longint : Top of the window
  $numberOne_v.right : Longint : Right side of the window
  $numberOne_v.bottom : Longint : Bottom of the window
  $numberOne_v.windowType : Longint : The window type (optional)

Returns: Nothing
Fnd_Wnd_OpenFormWindowShared

#DECLARE($var1 : Variant; $var2 : Variant) : Integer

Project Method: Fnd_Wnd_OpenFormWindow (->table; form name)

Opens a new window using the specified form's width and height.

Access: Shared

Parameters:
  $var1 : Pointer : A pointer to the form's table
  $var2 : Text : The name of the form

Returns:
  $0 : Longint : The window reference
Fnd_Wnd_OpenWindowShared

#DECLARE($Fnd_Wnd_Left_i : Integer; $Fnd_Wnd_Top_i : Integer; $Fnd_Wnd_Right_i : Integer; $Fnd_Wnd_Bottom_i : Integer) : Integer

Project Method: Fnd_Wnd_OpenWindow (width; height) --> Number
Alternate parameters: Fnd_Wnd_OpenWindow (left; top; right; bottom)

Opens a new window centered on the screen or over the frontmost window
  (depending on the value of Fnd_Wnd_WindowPosition_i).

Access: Shared

Parameters:
  $Fnd_Wnd_Left_i : Longint : Width of the new window
  $Fnd_Wnd_Top_i : Longint : Height of the new window

or:
  $Fnd_Wnd_Left_i : Longint : Global left coordinate
  $Fnd_Wnd_Top_i : Longint : Global top coordinate
  $Fnd_Wnd_Right_i : Longint : Global right coordinate
  $Fnd_Wnd_Bottom_i : Longint : Global bottom coordinate

Returns:
  $0 : Longint : The window reference number
Fnd_Wnd_PositionShared

#DECLARE($left_i : Integer; $top_i : Integer; $Right_i : Integer; $Bottom_i : Integer) : Integer

Project Method: Fnd_Wnd_Position ({position setting}) --> Number
Project Method: Fnd_Wnd_Position (left; top; right; bottom) --> Number

Allows the developer to get and set the window position for the upcoming window.
  1 = Fnd_Wnd_CenterOnScreen = Centered on screen
  2 = Fnd_Wnd_CenterOnWindow = Centered over frontmost window
  3 = Fnd_Wnd_MacOSXSheet = Sheet if possible, or centered over frontmost window
  4 = Fnd_Wnd_Stack = Stacked with other stacked windows
  5 = Fnd_Wnd_StackOnWindow = Stacked over the frontmost window

Optionally exact window coordinates can be passed.

This method replaces the original Fnd_Wnd_SetPosition method, which is now obsolete.

Access: Shared

Parameters:
  $left_i : Longint : Window position (optional)
  $top_i : Longint : Relative to Window (optional)

Parameters:
  $left_i : Longint : Left
  $top_i : Longint : Top
  $Right_i : Longint : Right
  $Bottom_i : Longint : Bottom

Returns:
  $0 : Longint : Current window position setting
Fnd_Wnd_SavePositionShared

#DECLARE($preferenceName_t : Text; $windowReference_i : Integer)

Project Method: Fnd_Wnd_SavePosition ({name{; window ref}})

Saves the frontmost window of the current process in the user's prefernces
  file (if the Foundation Preferences component is available).
This is basically the same as calling Fnd_Pref_SetWindow, but you don't have
  to check first to see if the Preferences component is available.

Access: Shared

Parameters:
  $preferenceName_t : Text : The name of the preference item (optional)
  $windowReference_i : Longint : The window to save (optional)

Returns: Nothing
Fnd_Wnd_SendCloseRequestsShared

#DECLARE($processNumber_i : Integer)

Project Method: Fnd_Wnd_SendCloseRequests ({process number})

Adds the current process to the list of processes with windows that should be
  closed if the user option-closes a window or selects Close All Windows
  from a menu.

Both the process name and number are stored, to make sure we're trying
  to close the same process that was submitted here.

Access: Shared

Parameters:
  $processNumber_i : Longint : Process number (optional)

Returns: Nothing
Fnd_Wnd_TitleShared

#DECLARE($windowTitle_t : Text) : Text

Project Method: Fnd_Wnd_Title ({title}) --> Text

Gets and sets the window title for the upcoming window.
This method replaces the original Fnd_Wnd_Title method, which is now obsolete.

Access: Shared

Parameters:
  $windowTitle_t : Text : Window title (optional)

Returns:
  $0 : Text : Next window title
Fnd_Wnd_ToolbarHeightShared

#DECLARE() : Integer

Project Method: Fnd_Wnd_ToolbarHeight --> longint

Returns the toolbar height (if it is currently being displayed)

Access: Shared

Returns:
  $0 : longint : The toolbar height
Fnd_Wnd_TypeShared

#DECLARE($windowType_i : Integer) : Integer

Project Method: Fnd_Wnd_Type ({window type}) --> Number

Sets and gets the window type for the next window to be opened.
This method replaces the original Fnd_Wnd_SetType method, which is now obsolete.

Access: Shared

Parameters:
  $windowType_i : Longint : Window type (optional)

Returns:
  $0 : Longint : Window type

Modified by Gary Boudreaux on Dec 21, 2008
  Enhanced parameter description in header
Fnd_Wnd_UseSavedPositionShared

#DECLARE($processName_t : Text)

Project Method: Fnd_Wnd_UseSavedPosition ({pref name})

Tells the window routines we want to try to use a saved position.
If no preference name is specified, the current process name is used.

Access: Shared

Parameters:
  $processName_t : Text : The name of the saved position (optional)

Returns: Nothing