# Maintaining Library Objects

Library Bulk Edit and Search Utility |

The Library Bulk Edit and Search utility provides a quick and convenient way to apply property changes simultaneously to controls in multiple panels either in a single library or in multiple libraries within a specified directory.

After defining the criteria for filtering your selections (i.e. the pathname of the library or directory, control type and filter options), clicking the Find Controls button launches the search. Controls that match the criteria are displayed in the Selected Controls list box. You can specify the Properties to Edit for selected panel headers or panel controls that are in multiple panels in the same library or in different libraries within the same directory.

Using this utility, you can easily standardize the appearance of panel headers and panel controls over an entire library.

The Search Library button invokes a concurrent Search window for defining filter criteria to search the records in a selected library file. The Customize button in the Search window launches a window for selecting which columns to display in the Search list box.

(The Library Bulk Edit utility was added in PxPlus 2017 and renamed to Library Bulk Edit and Search in PxPlus 2023 Update 1.)
(The Search Library button was added in PxPlus 2023 Update 1.)
(The Customize button was added in PxPlus 2024.)

#### Important Note!
Prior to running this utility, it is strongly recommended to first make a backup of your original library file(s) because any panel and control changes applied using this utility cannot be reversed.

To invoke this utility, use one of the following methods:

Location | Method
From the PxPlus IDE Main Launcher | Expand the Graphical Application Builder (NOMADS) category. Then expand the Utilities category and select Library Bulk Edit.
From NOMADS Library Object Selection | Select Utilities > Library Bulk Edit from the menu bar.
From the NOMADS Session Manager | Select Utilities > Library Bulk Edit from the menu bar.

The Library Bulk Edit and Search utility is displayed. Below is a sample entry showing search results and the properties to be edited.

This window consists of the following:

Type | Select Library to specify the pathname of a particular library file. (Default: Library) Select Directory to specify the pathname of a particular directory in which the library files are located. If accessing this utility from the PxPlus IDE Main Launcher or NOMADS Session Manager: Enter the pathname of the library file or directory in the adjacent input control or click the Query button. If accessing this utility from NOMADS Library Object Selection: The Type drop box defaults to Library, and the pathname of the current library file is displayed in the adjacent input control. (Both are set to view only.)
Search Library | Button that invokes a Search window for defining filter criteria to search the records in the selected library file. This window consists of the following:
File | (Display Only) Full pathname of the selected file.
Filter | (Optional) Filter options used to define the search criteria.
Expression | Select this check box to enter an expression as the filter value in the multi-line input. If the expression evaluates to 1 (true), the records are loaded into the list box. Examples: Example 1 - Find all Multi-Line controls with the Locked attribute set: _OBJ_TYPE$="M" and POS("L"=_OBJ_STS$) Example 2 - Find all Fonted Text controls that do not have the "TEST" Visual Class: _OBJ_TYPE$="F" and NOT(UCS(_OBJ_VISUAL_CLASS$)="TEST") Example 3 - Find all dialog or window panels with a height greater than or equal to 35: POS(_OBJ_TYPE$="DW") and _OBJ_H>=35 #### Note: When the Expression check box is selected, the Regular Expression, Case-Sensitive and Is Not check boxes are disabled.
Regular Expression | Select this check box to enter a regular expression as the filter value in the multi-line input. This value will be used as the mask$ parameter in the MSK( ) function (along with the entire record string as the string$ parameter). If the MSK( ) function evaluates to 1 (true), the records are loaded into the list box. Examples: Example 1 - Find any records containing BUTTON_ or BT_ (this may find all button controls if naming convention starts control names with BUTTON_ or BT_): BUTTON_|BT_ Example 2 - Find any records containing Hex code 01 ($01$): \x01 #### Note: When the Regular Expression check box is selected, the Expression, Case-Sensitive and Is Not check boxes are disabled.
Case-Sensitive | (Available when Expression check box is not selected) Select this check box if the filter value entered in the multi-line input is case-sensitive. (By default, this check box is not selected.)
Is Not | (Available when Expression check box is not selected) Select this check box if you want the search to exclude records in which the filter value was found. (By default, this check box is not selected.)
(Multi-line input) | Used for entering a free-form filter value. If either the Expression or Regular Expression check box is selected, enter an expression. If the filter value is case-sensitive, select the Case-Sensitive check box.
Search | Launches the search process for the specified criteria. If matches are found, the list box will be populated with records matching the search criteria. If no matches are found, the list box will be blank and a message will display.
Customize | Launches the Customize Search window for selecting (or deselecting) the columns to display in the Search list box based on any variables in the library file IOList. The Key value is always displayed in the first column. By default, the _obj_nme$, _obj_type$ and _init_val$ variables display in the subsequent columns. (The Customize button was added in PxPlus 2024.) This window consists of the following:
Select/Deselect All | Check box that is used to either select or deselect all the check boxes (in the Select column) beside the listed variables.
(Variables Grid) | Lists all the variables in the library file IOList. Variables that display in the Search list box by default will show the Select check box as checked. To select (or deselect) variables, click the Select check box beside individual variables or use the Select/Deselect All check box.
OK | Exits the Customize Search window and updates the columns in the Search list box based on the selected variables. If no variables were selected, the Search list box will display four columns for the Key and the defaulted variables.
Exit | Exits the Customize Search window without updating the Search list box.
(List Box) | Displays a list of records matching the search criteria, if found. Although only four columns are displayed, all fields in the record are searched. The four column headings consist of the primary Key and the NOMADS variables _obj_nme$, _obj_type$ and _init_val$. See NOMADS Library Variables. Click the Customize button to select (or deselect) the columns to be displayed in the Search list box. To sort the list box columns in ascending/descending order, click on the column headings.
(Right Click Menu) | Right click on a record in the Search list box to display a popup menu with the following options:
Details | Invokes the Record Details window for the selected record (same as clicking the Details button).
List Options | Invokes the List Box and Grid System Popup Menu.
(The Search list box right click popup menu was added in PxPlus 2024.)
Details | If matching records are found, click on a record inside the list box and then click the Details button to invoke the Record Details window. This concurrent window displays the details for the selected record and stays open when another record in the list box is selected for viewing. Double clicking on a record also invokes this window. The columns in the Record Details window can be sorted in ascending/descending order by clicking on the column headings.
Exit | Closes the Search window.
#### Note: All records in the library file will be included in the search with the exception of records created by the File Maintenance Generator for the purposes of regenerating file maintenance panels. (The Search Library button was added in PxPlus 2023 Update 1.)
Include Sub-Directories | (Available when Type is Directory) Select this check box to further define the search criteria by including library files found in the sub-directories of the specified directory. (By default, the Include Sub-Directories check box is not selected.) When Type is Library, this check box is not displayed. (The Include Sub-Directories check box was added in PxPlus 2018.)
Control Type | Select the type of control. (Default is All Controls.) #### Note: When a Control Type is selected, the Properties to Edit grid is automatically loaded with a list of related properties. Available selections are listed alphabetically below (except for Panel Header and Library Defaults, which are listed last). Click the link for information about the control type.
| All Controls | (Default)
| Button | See Button Control.
| Chart | See Chart Control.
| Check Box | See Check Box and Tri-State Control.
| External Control | See External Control.
| Drop Box | See Drop Box Control.
| Embedded Panel | See Embedded Panels.
| Folder | See Folder Controls.
| Fonted Text | See Fonted/Fixed Text Control.
| Frame | See Box/Frame Control.
| Grid | See Grid Control.
| Horizontal Scroll Bar | See Scrollbar Controls.
| Image | See Image/Picture Control.
| List Box | See List Box Controls.
| Multi Line | See Multi-Line Control.
| Radio Button | See Radio Button Control.
| Shape | See Shape Control.
| Text | See Fonted/Fixed Text Control.
| Tristate Box | See Check Box and Tri-State Control.
| Variable Drop Box | See Drop Box Control.
| Variable List Box | See List Box Controls.
| Vertical Scroll Bar | See Scrollbar Controls.
| Panel Header | See Panel Header.
| Library Defaults | See Library Defaults. (The Library Defaults selection was added in PxPlus 2017 Update 0002.)
Filter | (Optional) The filter options below are used to further define the search criteria for filtering your selections. All the filter options are disabled when the selected Control Type is Library Defaults. #### Note: When a Control Type is selected, the Properties to Edit grid is automatically loaded with a list of related properties.
Expression | Select this check box to enter an expression as the filter value in the multi-line input. If the expression evaluates to 1 (true), the control(s) are loaded into the Selected Controls tree view list box. #### Note: When the Expression check box is selected, the Case-Sensitive and Is Not check boxes are disabled.
Case-Sensitive | (Available when Expression check box is not selected) Select this check box if the filter value entered in the multi-line input is case-sensitive. (By default, the Case-Sensitive check box is not selected.)
Is Not | (Available when Expression check box is not selected) Select this check box if you want the search to exclude controls in which the filter value was found. (By default, the Is Not check box is not selected.)
(Multi-line input) | Used for entering a free-form filter value. If the Expression check box is selected, enter an expression. If the filter value is case-sensitive, select the Case-Sensitive check box.
Examples: The table below contains examples of searches with different search criteria:
Control Type | Expression | Case-Sensitive | Is Not | Filter Value | Meaning
All | Not Selected | Not Selected | Not Selected | BT_ | Find all controls with BT_ as part of their control names
All | Not Selected | Selected | Not Selected | BT_ | Find all controls with uppercase BT_ as part of their control names
Button | Not Selected | Not Selected | Not Selected | {! | Find all Button controls with bitmaps
Button | Not Selected | Not Selected | Selected | {! | Find all Button controls without bitmaps
Multi-Line | Selected | N/A | N/A | POS("L"=_OBJ_STS$) | Find all Multi-Line controls with the Locked attribute set
Fonted Text | Selected | N/A | N/A | NOT(UCS(_OBJ_VISUAL_CLASS$)="TEST") | Find all Fonted Text controls that do not have the "TEST" Visual Class
#### Note: When the filter value entered is not an expression, all fields in the library file record will be searched. This could result in a larger than expected list of controls in the Selected Controls tree view list box, as the search will display all controls in which a filter value match was found. You can try redefining your search criteria to narrow down the search results or exclude unwanted controls from the Library Bulk Edit process by not selecting them in the Selected Controls tree view list box.
Find Controls | Button that launches the search process for filtering your selections. If the search process is expected to take several minutes, an Abort Load button will display in the Selected Controls list box. Clicking this button halts the search process but does not clear the selection criteria or any property changes entered in the Properties to Edit grid. This allows any necessary modifications to be made before launching another search. (The Abort Load button was added in PxPlus 2018 Update 0001.) If matches are found, the Selected Controls tree view list box will be populated with controls matching your search criteria. If no matches are found, the Selected Controls tree view list box will be blank and a message will display. (The Search button was renamed to Find Controls in PxPlus 2023 Update 1.)
Selected Controls | Tree view list box that is used to display a list of controls that match the search criteria, if any are found. Use this list to select the controls to which the properties changes will be applied. See Selected Controls.
Properties to Edit | Grid that lists the properties for the selected Control Type. Use this grid to enter the property changes to be applied to selected controls. See Properties to Edit.
Ok | (Available when a property value in the Properties to Edit grid is changed) Processes the property changes for the selected controls and displays a message upon completion. The Library Bulk Edit and Search utility is subsequently closed.
Apply | (Available when a property value in the Properties to Edit grid is changed) Processes the property changes for the selected controls and displays a message upon completion. The Library Bulk Edit and Search utility remains open for additional changes (i.e. to different libraries, controls or properties).
Clear | Clears selections and leaves the Library Bulk Edit and Search utility open.
Exit | Closes the Library Bulk Edit and Search utility without processing any changes.

## Selected Controls

Selecting the Search button loads the Selected Controls tree view list box with a list of controls (if any found) that match the search criteria entered. Use this list to select the controls to which the properties changes in the Properties to Edit grid will be applied.

Expanded Tree View (Control Type selected: All Controls) | Collapsed Tree View

This tree view list box consists of the following:

(Tree View) | Lists all the controls (if any found) that match the search criteria entered. This list is used to select the controls to be edited. The tree view structure consists of a library (highest level), under which are listed the panels in that library, followed by an indented list of controls on that panel.
Each library node consists of a check box, followed by an image and the full library pathname. Clicking the check box beside a library node selects all panels and panel controls in that library.
Each panel node consists of a check box, followed by an image indicating the panel type (i.e. Window or Dialog), the panel name, and whether the panel is a "Window" or "Dialog". Clicking the check box beside a panel node selects all controls on that panel.
Each control node consists of a check box, followed by an image indicating the control type (i.e. Button, Check Box, etc.), the control name, the bitmap name and/or text value associated with the control (i.e. {!exclamation}Button). Depending on the control type, additional details may be displayed, such as chart type (Charts), list box type and list values (List Boxes), shape type (Shapes), embedded panel name and library path name (Embedded Panels), grid format definition (Grids), initial value (Multi-Lines), and user-defined tag field (Scroll Bars). (Control node detail enhancements were added in PxPlus 2018.)
If the search criteria is based on Control Type = Panel Header, only library and panel nodes are loaded into the Selected Controls tree view list box. If the search criteria is based on Control Type = Library Defaults, only library nodes are loaded into the Selected Controls tree view list box. Right clicking on a panel node or control node invokes a popup menu for quick access to Library Object Selection and the NOMADS Designer. When right clicking on a library node, only the Library Object Selection option is available. (The right-click popup menu was added in PxPlus 2018.) To select all libraries/panels/controls in the tree view, click the Select All button. #### Note: A solid square inside a check box indicates that some, not all, of the panels for a library (or controls for a panel) have been selected.
Collapse (Expand) | Toggle button that is used to either collapse or expand the entire tree view. To collapse or expand a single "parent" node, click the corresponding + plus or - minus sign. This toggle button is disabled when the selected Control Type is Library Defaults.
Reset | Button that is used to clear all selected check boxes and reload the tree view. #### Note: This button does not reset the search criteria and the Properties to Edit grid.
Select All (Deselect All) | Toggle button that is used to either select or deselect all the check boxes in the tree view.

## Properties to Edit

The Properties to Edit grid lists the properties for the selected Control Type and the current value of each property. Use this grid for entering the changes to be applied to selected controls. See Selected Controls. All values entered in the grid are cleared when either the Clear Properties or Clear button is selected.

#### Note:
The same properties changes can be consecutively applied to controls in other libraries or directories if you do not select the Clear Properties or Clear buttons. When neither of these buttons is selected, the properties changes you entered will not be cleared, allowing you to apply these changes to different selections.

This grid consists of the following:

Property | Lists the properties for the selected Control Type. If Control Type is a specific type (i.e. Button, Check Box, etc.), the grid is loaded with the properties for that control. Position the mouse pointer over the property name to display a floating tip with the variable name. (The floating tip with the variable name was added in PxPlus 2018.) If Control Type is All Controls, the grid is loaded with all properties for all control types; however, not all properties apply to every control. To find out which controls use a particular property, position the mouse pointer over the property name to display a floating tip with a list of applicable controls. If Control Type is Panel Header, the grid is loaded with Panel Header properties. Position the mouse pointer over the property name to display a floating tip with the variable name. (The floating tip with the variable name was added in PxPlus 2018.) If Control Type is Library Defaults, the grid is loaded with properties found in Library Defaults. Position the mouse pointer over the property name to display a floating tip with the variable name. (The floating tip with the variable name was added in PxPlus 2018.) The properties are grouped into categories and sorted alphabetically within each group by default. These categories can be expanded/collapsed by clicking the + (plus) or - (minus) button adjacent to the category name. By default, the categories are displayed in the following order: Name/Type, Events, Coordinates, Display, Attributes, Colors, Font, User Aids, Other. Only the categories that apply to the selected Control Type are displayed.
Name/Type | (Available When Control Type is Check Box, Drop Box, List Box, Multi-Line, Tristate Box, Variable Drop Box or Variable List Box) Used to apply and reapply Data Classes to applicable control types. See Applying Data Classes. (Support for applying data classes was added in PxPlus 2018 Update 0001.)
Coordinates | Coordinates for the Height (in number of lines) and Width (in number of columns) of a control.
Display | Visual display information (i.e. Implied Decimal, Input Format, Input Length).
Events | Logic that will execute when a particular event occurs (i.e. On Change, On Focus, Post Create).
Attributes | Control attributes (i.e. Auto Tab Skip, Bitmap Button, Enable Scrolling).
Colors | Background and Foreground colors of the control or panel.
Font | (Available When Type of search is "Library") Graphic font.
User Aids | Floating Tip, Help Reference, Message Bar text.
Other | Additional control or panel features (i.e. User Tag, Visual Class, iNomads Class).
#### Note: You can customize the sort order of these property categories and their associated properties. See Change Bulk Edit/Property Sort Order.
Value | Displays the current value assigned to a given property. The method for entering or displaying these values is dependent on the property type. Some fields are intended for entering free-form values; e.g. co-ordinates for Height and Width. Drop box style cells are identified by a down arrow button, which indicates that pre-set selections are available; e.g. Tab Stop, Initially Disabled, Enable Scrolling, Object Persistence, Implied Decimal, etc. Query style cells are identified by a three-dotted button. These cells are often associated with more than one field, and clicking the button invokes a separate dialog for entering/changing field values. The dialog that is invoked varies depending on the property. Double clicking inside the cell either invokes the same dialog as the dotted button or allows values to be entered directly into the cell. The As is option indicates that the current/default setting for a given property will be maintained "as is" for the controls selected in the Selected Controls tree view list box. (The ability to double click inside a Query style cell was added in PxPlus 2023.)
Clear Properties | Clears all changes made to the property settings in the Value column and reloads the Properties to Edit grid based on the Control Type selected.

## Applying Data Classes

When the Control Type selected is Check Box, Drop Box, List Box, Multi-Line, Tristate Box, Variable Drop Box or Variable List Box, the Properties to Edit grid displays a Data Class property that is used to apply or reapply data classes to selected controls.

Select the Data Class (three-dotted) button to launch the Data Class Options dialog:

This dialog allows you to:

• | Reapply the current data class assigned to a control As is to update control properties with the current information in the data class. With the As is check box selected, click the Reapply Class check box, and then click OK.
• | Choose an existing data class to be applied. Deselect the As is check box. In the Class field, enter an existing data class by using the Query button (binoculars) or typing a valid data class name.
• | Create a new data class on-the-fly (either dynamic or not dynamic) to be applied. Deselect the As is check box. In the Class field, enter a new data class name and respond Yes to the displayed message, which launches Data Class Definitions maintenance.
• | Clear the current data class assigned to a control. Deselect the As is check box and leave the Class field blank. When the Apply button is selected, the data class will be cleared from selected controls.

If a data class (either dynamic or not dynamic) is selected in the Data Class Options dialog, individual control properties in the Properties to Edit grid can be manually changed to Dynamic (or a different setting) and then applied to selected controls. See Dynamic Control Properties.

(Support for applying data classes was added in PxPlus 2018 Update 0001.)

## Completing the Library Bulk Edit Process

Once you have selected the controls to edit (in the Selected Controls tree view list box) and have edited the properties (in the Properties to Edit grid), you are now ready to process the changes. To do this, use either of the following options:

• | Click the Apply button to apply the changes and keep the utility open to make any additional changes (i.e. for a different library or directory).
| OR
• | Click the OK button to apply the changes and close the utility.

To verify that the properties have been changed, access the library/panel using the NOMADS Panel Designer, which can be invoked from the right-click popup menu within the Selected Controls tree view.

## See Also

Panel Bulk Edit Utility
NOMADS Library Variables