<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" 
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<article lang="en">
<articleinfo>
  <title>API Documentation</title>
</articleinfo>
<section>
<title>RexxDW/Introduction</title>
<anchor id="robo0"/>
<anchor id="RexxDW2fIntroduction"/>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   RexxDW is an external function package that allows a Rexx programmer to write
   cross platform GUI applications, using a lightweight portable GUI API called
   Dynamic Windows (dwindows).
</para>
<formalpara><title>USAGE</title><para></para></formalpara>
<para>
   The fundamental building blocks of a RexxDW program consist of two major
   components; widgets and event handlers or callbacks.
</para>

<para>
   Various widgets are packed into the required layout and events
   are connected to the widgets to carry out the required behaviour.
</para>

<para>
   The structure of a RexxDW program consists of various initialisation; creation
   of the widgets, packing them, connecting callbacks, and then calling the
   event loop handler to dispatch the event to the appropriate callbacks.
   The callbacks are normal Rexx subroutines.
</para>

<para>
   There are two event loop handlers depending on whether your Rexx interpreter
   supports the RexxCallback() API. <link linkend="robo231">DW_main</link>() is used for interpreters that have
   RexxCallback(); <link linkend="robo232">DW_main_iteration</link>() is used for those interpretes that don't.
</para>
<formalpara><title>DERIVED FROM</title><para></para></formalpara>
<para>
   All of the functions in RexxDW are based on the same function in dwindows.
   Some function arguments will differ due to the nature of the Rexx API
   interface.
</para>

<para>
   The format of the function names is dw_(target)_(action)[_(options)].
   eg. for tree widgets, functions act on both the tree itself and the tree items
   within the tree widget, so <link linkend="robo180">DW_tree_new</link>() executes the "new" action on the
   tree widget, <link linkend="robo190">DW_tree_item_change</link>() executes the "change" action on the
   tree item, not the tree.
</para>

<para>
   Some dwindows functions are not available in RexxDW, mainly because they are
   not able to be implemented:
   dw_icon_load, etc...
</para>

<para>
   A number of functions have been added to RexxDW that are not part of dwindows:
   dw_and, dw_or, dw_radiobutton_set, dw_radiobutton_get,...
</para>
<formalpara><title>TODO</title><para></para></formalpara>
<itemizedlist><listitem><para>   document dw_exec()??
</para></listitem><listitem><para>   add DW_container_get_column_type and DW_filesystem_get_column_type
</para></listitem><listitem><para>   can dw_window_maximize() be implemented as dw_window_set_style() with MAXIMIZE
     attribute set and MINIMIZE attribute unset?
</para></listitem><listitem><para>   no VALUE_CHANGE callback on spinbutton widget
</para></listitem><listitem><para>   document that KEY_PRESS needs to be trapped in toplevel window
     but BUTTON_PRESS in low-level window (confirm on all platforms)
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>BUGS</title><para></para></formalpara>
<itemizedlist><listitem><para>   bug in (Windows at least) item_select callback on container. Seems that
     the callback gets called twice irrespective of whether 0 or 1 is
     returned from the callback.
</para></listitem><listitem><para>   bug (Windows) with drawing directly to a render window (ie not via a pixmap)
     (see rexxdw.rexx, <link linkend="robo263">Utility</link> TAB)
</para></listitem><listitem><para>   bug dw_listbox_selected() is supposed to return DW_LIT_NONE (-1)
     but dw_listbox_selected() returns unsigned int
</para></listitem><listitem><para>   Under GTK+ 2.0 or greater, a call to dw_window_set_font() causes an expose
     event to fire. If dw_window_set_font() is called within the expose callback,
     you get an infinite loop. Bit of a bugger if your expose event sets different
     fonts for different lines!!!
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>PORTABILITY</title><para></para></formalpara>
<para>
   RexxDW runs on Windows 9x/Me/NT/2k/XP, OS/2 3.0+ and on any Un*x platform
   that has GTK+ 1.x installed (but works better with GTK+ 2.x).
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   RexxDW lives at href:http://rexxdw.sf.net
   Dynamic Windows lives at href:http://dwindows.netlabs.org
</para>
</section>
<section>
<title>RexxDW/Constants</title>
<anchor id="robo1"/>
<anchor id="RexxDW2fConstants"/>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   The following "constants" are defined when RexxDW starts. By default, all constants
   are stored in an array with the stem preset to !REXXDW.!
   This can be changed by using the 'CONSTANTPREFIX' value of <link linkend="robo276">DW_variable</link>().
   If you use "Procedure" on your labels, you MUST "EXPOSE !REXXDW." or the
   stem you set with <link linkend="robo276">DW_variable</link>() will not be visible.
   To reference the constants defined below, you must prefix them. So
   the "constant" DW_DESKTOP would be, by default, referenced in your code as
   !REXXDW.!DW_DESKTOP.
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo276">DW_variable</link>
</para>
<section>
<title>Constants/MiscellaneousFlags</title>
<anchor id="robo2"/>
<anchor id="Constants2fMiscellaneousFlags"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   MiscellaneousFlags
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   The following is a list of miscellaneous flags.
</para>
<formalpara><title>ATTRIBUTES</title><para></para></formalpara>
<itemizedlist><listitem><para>   GTK_MAJOR_VERSION        - 0 if NOT GTK+ platform, 1 for GTK+ 1.x, 2 for GTK+ 2.x
</para></listitem><listitem><para>   HAVE_REXXCALLBACK        - 1 if the interpreter supports RexxCallback() API
</para></listitem><listitem><para>   DW_DESKTOP               - the psuedo "window" which is the desktop
</para></listitem><listitem><para>   DIRSEP                   - the Operating System directory separator
</para></listitem><listitem><para>   PATHSEP                  - the Operating System path separator
</para></listitem></itemizedlist><para>
</para>
</section>
<section>
<title>Constants/FileDialogFlags</title>
<anchor id="robo3"/>
<anchor id="Constants2fFileDialogFlags"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   FileDialogFlags
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   The following is a list of the pre-defined flags that are used in a call to
   <link linkend="robo246">DW_file_browse</link>() to determine the dialog type displayted.
</para>
<formalpara><title>ATTRIBUTES</title><para></para></formalpara>
<itemizedlist><listitem><para>   DW_DIRECTORY_OPEN        - a directory selector dialog
</para></listitem><listitem><para>   DW_FILE_OPEN             - a file open dialog
</para></listitem><listitem><para>   DW_FILE_SAVE             - a file save dialog
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo246">DW_file_browse</link>
</para>
</section>
<section>
<title>Constants/ContainerScrollFlags</title>
<anchor id="robo4"/>
<anchor id="Constants2fContainerScrollFlags"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   ContainerScrollFlags
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   The following is a list of the pre-defined flags that are used in a call to
   <link linkend="robo93">DW_container_scroll</link>() to indicate the direction of scrolling.
</para>
<formalpara><title>ATTRIBUTES</title><para></para></formalpara>
<itemizedlist><listitem><para>   DW_SCROLL_UP             - scroll up a number of lines
</para></listitem><listitem><para>   DW_SCROLL_DOWN           - scroll down a number of lines
</para></listitem><listitem><para>   DW_SCROLL_TOP            - scroll to the top of the container
</para></listitem><listitem><para>   DW_SCROLL_BOTTOM         - scroll to the bottom of the container
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo93">DW_container_scroll</link>
</para>
</section>
<section>
<title>Constants/TextAttributeFlags</title>
<anchor id="robo5"/>
<anchor id="Constants2fTextAttributeFlags"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   TextAttributeFlags
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   The following is a list of the pre-defined flags that are used in a call to
   <link linkend="robo219">DW_window_set_style</link>() to specify the formatting of text within a widget.
</para>
<formalpara><title>ATTRIBUTES</title><para></para></formalpara>
<para>
   The following work on all platforms:
</para>
<literallayout class="monospaced">
    - DW_DT_LEFT               - text is left-aligned
    - DW_DT_RIGHT              - text is right-aligned
    - DW_DT_CENTER             - text is centered
    - DW_DT_VCENTER            - text is centered vertically
</literallayout>
<para>

   The following attributes only have an effect on OS/2:
</para>
<literallayout class="monospaced">
    - DW_DT_QUERYEXTENT
    - DW_DT_UNDERSCORE
    - DW_DT_STRIKEOUT
    - DW_DT_TEXTATTRS
    - DW_DT_EXTERNALLEADING
    - DW_DT_TOP
    - DW_DT_BOTTOM
    - DW_DT_HALFTONE
    - DW_DT_MNEMONIC
    - DW_DT_WORDBREAK
    - DW_DT_ERASERECT
</literallayout>
<para>
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo219">DW_window_set_style</link>
</para>
</section>
<section>
<title>Constants/WindowStyleFlags</title>
<anchor id="robo6"/>
<anchor id="Constants2fWindowStyleFlags"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   WindowStyleFlags
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   The following is a list of the pre-defined flags that can be used when
   creating a new window.
   Any number of values from "Style Types" can be used plus optionally
   one value from "Initial State Types" are logically "or"ed together using <link linkend="robo270">DW_or</link>().
</para>
<formalpara><title>ATTRIBUTES</title><para></para></formalpara>
<para>
   Style Types:
</para>
<literallayout class="monospaced">
    - DW_FCF_TITLEBAR        - display titlebar
    - DW_FCF_SYSMENU
    - DW_FCF_MENU
    - DW_FCF_SIZEBORDER
    - DW_FCF_MINBUTTON       - display minimise button
    - DW_FCF_MAXBUTTON       - display maximise button
    - DW_FCF_MINMAX
    - DW_FCF_VERTSCROLL
    - DW_FCF_HORZSCROLL
    - DW_FCF_DLGBORDER
    - DW_FCF_BORDER
    - DW_FCF_SHELLPOSITION
    - DW_FCF_TASKLIST
    - DW_FCF_NOBYTEALIGN
    - DW_FCF_NOMOVEWITHOWNER
    - DW_FCF_SYSMODAL
    - DW_FCF_HIDEBUTTON
    - DW_FCF_HIDEMAX
    - DW_FCF_AUTOICON
</literallayout>
<para>

   Initial State Types:
</para>
<literallayout class="monospaced">
    - DW_FCF_MAXIMIZE        - start maximised
    - DW_FCF_MINIMIZE        - start minimised
</literallayout>
<para>
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo192">DW_window_new</link>
</para>
</section>
<section>
<title>Constants/ContainerColumnFlags</title>
<anchor id="robo7"/>
<anchor id="Constants2fContainerColumnFlags"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   ContainerColumnFlags
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   The following is a list of the pre-defined flags that can be used when
   creating a container widget.
   When used in <link linkend="robo75">DW_container_setup</link>() or <link linkend="robo76">DW_filesystem_setup</link>(), one value from
   "Column Types", one value from "Alignment" and any value from "Separators"
   are logically "or"ed together using <link linkend="robo270">DW_or</link>().
</para>
<formalpara><title>ATTRIBUTES</title><para></para></formalpara>
<para>
   Column Types:
</para>
<literallayout class="monospaced">
    - DW_CFA_BITMAPORICON   - the column contains an image
    - DW_CFA_STRING         - the column contains an unstructured string
    - DW_CFA_ULONG          - the column contains an integer
    - DW_CFA_TIME           - the column contains a time in the format Time('N')
    - DW_CFA_DATE           - the column contains a date in the format Date('S')
    - DW_CFA_STRINGANDICON  - the column contains a string and an image (not implemented)
</literallayout>
<para>

   Alignment:
</para>
<literallayout class="monospaced">
    - DW_CFA_CENTER         - the column is centered
    - DW_CFA_LEFT           - the column is left aligned
    - DW_CFA_RIGHT          - the column is right aligned
</literallayout>
<para>

   Separators (not applicable on all platforms):
</para>
<literallayout class="monospaced">
    - DW_CFA_HORZSEPARATOR  - the column has a cell border on the top and bottom
    - DW_CFA_SEPARATOR      - the column has a cell border on the left and right
</literallayout>
<para>
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo75">DW_container_setup</link>, <link linkend="robo76">DW_filesystem_setup</link>
</para>
</section>
<section>
<title>Constants/ContainerQueryFlags</title>
<anchor id="robo8"/>
<anchor id="Constants2fContainerQueryFlags"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   ContainerQueryFlags
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   The following is a list of the pre-defined flags that can be used when
   querying a container widget.
</para>
<formalpara><title>ATTRIBUTES</title><para></para></formalpara>
<itemizedlist><listitem><para>   DW_CRA_ALL       - all rows are queried
</para></listitem><listitem><para>   DW_CRA_SELECTED  - only rows selected are queried
</para></listitem><listitem><para>   DW_CRA_CURSORED  - only the row(s) currently have focus; ie. highlighted
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo90">DW_container_query_start</link>, <link linkend="robo91">DW_container_query_next</link>
</para>
</section>
<section>
<title>Constants/MLESearchFlags</title>
<anchor id="robo9"/>
<anchor id="Constants2fMLESearchFlags"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   MLESearchFlags
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   The following is a list of the pre-defined flags that can be used in
   the SearchFlags argument in <link linkend="robo139">DW_mle_search</link>().
</para>
<formalpara><title>ATTRIBUTES</title><para></para></formalpara>
<itemizedlist><listitem><para>   DW_MLE_CASESENSITIVE - search done respecting case
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo139">DW_mle_search</link>
</para>
</section>
<section>
<title>Constants/MLEEditableFlags</title>
<anchor id="robo10"/>
<anchor id="Constants2fMLEEditableFlags"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   MLEEditableFlags
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   The following is a list of the pre-defined flags that can be used in
   the EditableFlags argument in <link linkend="robo141">DW_mle_set_editable</link>().
</para>
<formalpara><title>ATTRIBUTES</title><para></para></formalpara>
<itemizedlist><listitem><para>   DW_EDITABLE          - MLE is editable
</para></listitem><listitem><para>   DW_READONLY          - MLE is not editable; ie readonly
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo141">DW_mle_set_editable</link>
</para>
</section>
<section>
<title>Constants/MLEWordWrapFlags</title>
<anchor id="robo11"/>
<anchor id="Constants2fMLEWordWrapFlags"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   MLEWordWrapFlags
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   The following is a list of the pre-defined flags that can be used in
   the WordWrapFlags argument in <link linkend="robo143">DW_mle_set_word_wrap</link>().
</para>
<formalpara><title>ATTRIBUTES</title><para></para></formalpara>
<itemizedlist><listitem><para>   DW_WORD_WRAP         - words are wrapped in the MLE
</para></listitem><listitem><para>   DW_DONT_WORD_WRAP    - no word wrapping occurs in the MLE
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo143">DW_mle_set_word_wrap</link>
</para>
</section>
<section>
<title>Constants/PointerTypes</title>
<anchor id="robo12"/>
<anchor id="Constants2fPointerTypes"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   PointerTypes
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   The following is a list of the pre-defined mouse pointer types used
   in the Pointer argument in DW_window-set_pointer().
</para>
<formalpara><title>ATTRIBUTES</title><para></para></formalpara>
<itemizedlist><listitem><para>   DW_POINTER_DEFAULT   - the default pointer shape
</para></listitem><listitem><para>   DW_POINTER_CLOCK     - a clock pointer
</para></listitem><listitem><para>   DW_POINTER_ARROW     - an arrow pointing to the top left
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo211">DW_window_set_pointer</link>
</para>
</section>
<section>
<title>Constants/Colours</title>
<anchor id="robo13"/>
<anchor id="Constants2fColours"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   Colours
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   The following is a list of the pre-defined colours known to RexxDW.
   These colour constants are used in functions that require pre-defined
   colours.
</para>
<formalpara><title>ATTRIBUTES</title><para></para></formalpara>
<itemizedlist><listitem><para>   DW_CLR_BLACK
</para></listitem><listitem><para>   DW_CLR_DARKRED
</para></listitem><listitem><para>   DW_CLR_DARKGREEN
</para></listitem><listitem><para>   DW_CLR_BROWN
</para></listitem><listitem><para>   DW_CLR_DARKBLUE
</para></listitem><listitem><para>   DW_CLR_DARKPINK
</para></listitem><listitem><para>   DW_CLR_DARKCYAN
</para></listitem><listitem><para>   DW_CLR_PALEGRAY
</para></listitem><listitem><para>   DW_CLR_DARKGRAY
</para></listitem><listitem><para>   DW_CLR_RED
</para></listitem><listitem><para>   DW_CLR_GREEN
</para></listitem><listitem><para>   DW_CLR_YELLOW
</para></listitem><listitem><para>   DW_CLR_BLUE
</para></listitem><listitem><para>   DW_CLR_PINK
</para></listitem><listitem><para>   DW_CLR_CYAN
</para></listitem><listitem><para>   DW_CLR_WHITE
</para></listitem><listitem><para>   DW_CLR_DEFAULT
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo253">DW_color_background_set</link>, <link linkend="robo254">DW_color_foreground_set</link>, <link linkend="robo255">DW_color_choose</link>
</para>
</section>
<section>
<title>Constants/WidgetOrientation</title>
<anchor id="robo14"/>
<anchor id="Constants2fWidgetOrientation"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   WidgetOrientation
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   The following constants are used in widgets that require an orientation
   to be specified.
</para>
<formalpara><title>ATTRIBUTES</title><para></para></formalpara>
<itemizedlist><listitem><para>   DW_VERT                - vertical orientation
</para></listitem><listitem><para>   DW_HORZ                - horizontal orientation
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo54">DW_box_new</link>, <link linkend="robo55">DW_groupbox_new</link>, <link linkend="robo173">DW_splitbar_new</link>, <link linkend="robo159">DW_scrollbar_new</link>
</para>
</section>
<section>
<title>Constants/NotebookTabLocation</title>
<anchor id="robo15"/>
<anchor id="Constants2fNotebookTabLocation"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   NotebookTabLocation
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   The following constants are used in the TabLocation argument in a call
   to <link linkend="robo147">DW_notebook_new</link>() to specify whether notebook tabs are located at the
   top or bottom of the window.
</para>
<formalpara><title>ATTRIBUTES</title><para></para></formalpara>
<itemizedlist><listitem><para>   DW_TAB_TO_TOP          - notebook tabs are displayed across the top
</para></listitem><listitem><para>   DW_TAB_TO_BOTTOM       - notebook tabs are displayed across the bottom
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo147">DW_notebook_new</link>
</para>
</section>
<section>
<title>Constants/NotebookPageLocation</title>
<anchor id="robo16"/>
<anchor id="Constants2fNotebookPageLocation"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   NotebookPageLocation
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   The following constants are used in the PageLocation argument in a call
   to <link linkend="robo148">DW_notebook_page_new</link>() to specify if the page is created in front
   or behind other pages.
</para>
<formalpara><title>ATTRIBUTES</title><para></para></formalpara>
<itemizedlist><listitem><para>   DW_PAGE_TO_FRONT       - page is created in front of other pages
</para></listitem><listitem><para>   DW_PAGE_TO_BACK        - page is created behind other pages
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo148">DW_notebook_page_new</link>
</para>
</section>
<section>
<title>Constants/MenuConstants</title>
<anchor id="robo17"/>
<anchor id="Constants2fMenuConstants"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   MenuConstants
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   The following constants are used in a number of menu related function calls.
</para>
<formalpara><title>ATTRIBUTES</title><para></para></formalpara>
<itemizedlist><listitem><para>   DW_MENU_START          - add the item at the start of the menu items
</para></listitem><listitem><para>   DW_MENU_END            - add the item at the end of the menu items
</para></listitem><listitem><para>   DW_MENU_CHECKABLE      - the menu item is checkable
</para></listitem><listitem><para>   DW_MENU_NOT_CHECKABLE  - the menu item is not checkable
</para></listitem><listitem><para>   DW_MENU_SEPARATOR      - the string to indicate the menu item is a separator
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo128">DW_menu_append_item</link>, <link linkend="robo131">DW_menu_item_set_check</link>
</para>
</section>
<section>
<title>Constants/BoxExpansionFlags</title>
<anchor id="robo18"/>
<anchor id="Constants2fBoxExpansionFlags"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   BoxExpansionFlags
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   The following constants are used in the box packing functions to
   specify whether the box expand in a horizontal or vertical direction.
</para>
<formalpara><title>ATTRIBUTES</title><para></para></formalpara>
<itemizedlist><listitem><para>   DW_EXPAND_HORZ         - expand the box horizontally
</para></listitem><listitem><para>   DW_DONT_EXPAND_HORZ    - don't expand the box horizontal
</para></listitem><listitem><para>   DW_EXPAND_VERT         - expand the box vertically
</para></listitem><listitem><para>   DW_DONT_EXPAND_VERT    - don't expand the box vertically
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo56">DW_box_pack_start</link>, <link linkend="robo57">DW_box_pack_end</link>
</para>
</section>
<section>
<title>Constants/ListboxSelection</title>
<anchor id="robo19"/>
<anchor id="Constants2fListboxSelection"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   ListboxSelection
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   The following constants are used in the Selection argument to a call to
   <link linkend="robo111">DW_listbox_new</link>().
</para>
<formalpara><title>ATTRIBUTES</title><para></para></formalpara>
<itemizedlist><listitem><para>   DW_LB_SINGLE_SELECTION    - indicates that only 1 row in the listbox is selectable
</para></listitem><listitem><para>   DW_LB_MULTIPLE_SELECTION  - indicates that multiple rows in the listbox are selectable
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo111">DW_listbox_new</link>
</para>
</section>
<section>
<title>Constants/ListboxSelected</title>
<anchor id="robo20"/>
<anchor id="Constants2fListboxSelected"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   ListboxSelected
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   The following is a list of the pre-defined flags that can be used when
   setting the State of a listbox or combobox.
</para>
<formalpara><title>ATTRIBUTES</title><para></para></formalpara>
<itemizedlist><listitem><para>   DW_LB_SELECTED      - set the item to be selected
</para></listitem><listitem><para>   DW_LB_UNSELECTED    - set the item to NOT be selected
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo119">DW_listbox_select</link>
</para>
</section>
<section>
<title>Constants/ListboxReturn</title>
<anchor id="robo21"/>
<anchor id="Constants2fListboxReturn"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   ListboxReturn
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   The following is the return value from <link linkend="robo120">DW_listbox_selected</link>() or
   <link linkend="robo121">DW_listbox_selected_multi</link>() if no item in the listbox has been selected.
</para>
<formalpara><title>ATTRIBUTES</title><para></para></formalpara>
<itemizedlist><listitem><para>   DW_LB_NONE          - no listbox item selected
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo120">DW_listbox_selected</link>(), <link linkend="robo121">DW_listbox_selected_multi</link>()
</para>
</section>
<section>
<title>Constants/WidgetChecked</title>
<anchor id="robo22"/>
<anchor id="Constants2fWidgetChecked"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   WidgetChecked
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   The following constants are used to indicate the state of a widget
   that can have a boolean state.
</para>
<formalpara><title>ATTRIBUTES</title><para></para></formalpara>
<itemizedlist><listitem><para>   DW_CHECKED             - widget is "on" or set
</para></listitem><listitem><para>   DW_UNCHECKED           - widget is "off" or unset
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo68">DW_checkbox_set</link>, <link linkend="robo69">DW_radiobutton_set</link>
</para>
</section>
<section>
<title>Constants/ContainerClearFlags</title>
<anchor id="robo23"/>
<anchor id="Constants2fContainerClearFlags"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   ContainerClearFlags
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   The following constants are used in the Redraw argument to a call to
   <link linkend="robo87">DW_container_clear</link>().
</para>
<formalpara><title>ATTRIBUTES</title><para></para></formalpara>
<itemizedlist><listitem><para>   DW_REDRAW              - redraw the cleared container
</para></listitem><listitem><para>   DW_DONT_REDRAW         - don't redraw the cleared container
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo73">DW_container_new</link>
</para>
</section>
<section>
<title>Constants/ContainerSelection</title>
<anchor id="robo24"/>
<anchor id="Constants2fContainerSelection"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   ContainerSelection
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   The following constants are used in the Selection argument to a call to
   <link linkend="robo73">DW_container_new</link>().
</para>
<formalpara><title>ATTRIBUTES</title><para></para></formalpara>
<itemizedlist><listitem><para>   DW_SINGLE_SELECTION    - indicates that only 1 row in the container is selectable
</para></listitem><listitem><para>   DW_MULTIPLE_SELECTION  - indicates that multiple rows in the container are selectable
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo73">DW_container_new</link>
</para>
</section>
<section>
<title>Constants/RectangleFill</title>
<anchor id="robo25"/>
<anchor id="Constants2fRectangleFill"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   RectangleFill
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   The following constants are used in the Fill argument to a call to
   <link linkend="robo104">DW_draw_rect</link>().
</para>
<formalpara><title>ATTRIBUTES</title><para></para></formalpara>
<itemizedlist><listitem><para>   DW_FILL      - draws a filled rectangle
</para></listitem><listitem><para>   DW_DONT_FILL - draws an outline rectangle 1 pixel in width
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo104">DW_draw_rect</link>
</para>
</section>
<section>
<title>Constants/MessageboxFlags</title>
<anchor id="robo26"/>
<anchor id="Constants2fMessageboxFlags"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   MessageboxFlags
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   The following constants are used in the Flags argument to a call to
   <link linkend="robo225">DW_messagebox</link>(). Logically "or" one value from Buttons and one value from Icons
</para>
<formalpara><title>ATTRIBUTES</title><para></para></formalpara>
<para>
   Buttons:
</para>
<literallayout class="monospaced">
    - DW_MB_OK
    - DW_MB_OKCANCEL
    - DW_MB_YESNO
    - DW_MB_YESNOCANCEL
</literallayout>
<para>

   Icons:
</para>
<literallayout class="monospaced">
    - DW_MB_WARNING
    - DW_MB_ERROR
    - DW_MB_INFORMATION
    - DW_MB_QUESTION
</literallayout>
<para>
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo225">DW_messagebox</link>
</para>
</section>
<section>
<title>Constants/MessageboxResults</title>
<anchor id="robo27"/>
<anchor id="Constants2fMessageboxResults"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   MessageboxResults
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   The following constants are returned from a call to <link linkend="robo225">DW_messagebox</link>().
</para>
<formalpara><title>ATTRIBUTES</title><para></para></formalpara>
<itemizedlist><listitem><para>   DW_MB_RETURN_OK
</para></listitem><listitem><para>   DW_MB_RETURN_YES
</para></listitem><listitem><para>   DW_MB_RETURN_NO
</para></listitem><listitem><para>   DW_MB_RETURN_CANCEL
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo225">DW_messagebox</link>
</para>
</section>
<section>
<title>Constants/VirtualKeys</title>
<anchor id="robo28"/>
<anchor id="Constants2fVirtualKeys"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   VirtualKeys
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   The following is a list of the mnemonic key values known to RexxDW.
   These keys are returned in a KeyPressEvent Callback, in the VirtualKey
   argument.
</para>
<formalpara><title>ATTRIBUTES</title><para></para></formalpara>
<itemizedlist><listitem><para>   DW_VK_CANCEL
</para></listitem><listitem><para>   DW_VK_BACK
</para></listitem><listitem><para>   DW_VK_TAB
</para></listitem><listitem><para>   DW_VK_CLEAR
</para></listitem><listitem><para>   DW_VK_RETURN
</para></listitem><listitem><para>   DW_VK_MENU
</para></listitem><listitem><para>   DW_VK_PAUSE
</para></listitem><listitem><para>   DW_VK_CAPITAL
</para></listitem><listitem><para>   DW_VK_ESCAPE
</para></listitem><listitem><para>   DW_VK_SPACE
</para></listitem><listitem><para>   DW_VK_PRIOR
</para></listitem><listitem><para>   DW_VK_NEXT
</para></listitem><listitem><para>   DW_VK_END
</para></listitem><listitem><para>   DW_VK_HOME
</para></listitem><listitem><para>   DW_VK_LEFT
</para></listitem><listitem><para>   DW_VK_UP
</para></listitem><listitem><para>   DW_VK_RIGHT
</para></listitem><listitem><para>   DW_VK_DOWN
</para></listitem><listitem><para>   DW_VK_SELECT
</para></listitem><listitem><para>   DW_VK_PRINT
</para></listitem><listitem><para>   DW_VK_EXECUTE
</para></listitem><listitem><para>   DW_VK_SNAPSHOT
</para></listitem><listitem><para>   DW_VK_INSERT
</para></listitem><listitem><para>   DW_VK_DELETE
</para></listitem><listitem><para>   DW_VK_HELP
</para></listitem><listitem><para>   DW_VK_LWIN
</para></listitem><listitem><para>   DW_VK_RWIN
</para></listitem><listitem><para>   DW_VK_NUMPAD0
</para></listitem><listitem><para>   DW_VK_NUMPAD1
</para></listitem><listitem><para>   DW_VK_NUMPAD2
</para></listitem><listitem><para>   DW_VK_NUMPAD3
</para></listitem><listitem><para>   DW_VK_NUMPAD4
</para></listitem><listitem><para>   DW_VK_NUMPAD5
</para></listitem><listitem><para>   DW_VK_NUMPAD6
</para></listitem><listitem><para>   DW_VK_NUMPAD7
</para></listitem><listitem><para>   DW_VK_NUMPAD8
</para></listitem><listitem><para>   DW_VK_NUMPAD9
</para></listitem><listitem><para>   DW_VK_MULTIPLY
</para></listitem><listitem><para>   DW_VK_ADD
</para></listitem><listitem><para>   DW_VK_SEPARATOR
</para></listitem><listitem><para>   DW_VK_SUBTRACT
</para></listitem><listitem><para>   DW_VK_DECIMAL
</para></listitem><listitem><para>   DW_VK_DIVIDE
</para></listitem><listitem><para>   DW_VK_F1
</para></listitem><listitem><para>   DW_VK_F2
</para></listitem><listitem><para>   DW_VK_F3
</para></listitem><listitem><para>   DW_VK_F4
</para></listitem><listitem><para>   DW_VK_F5
</para></listitem><listitem><para>   DW_VK_F6
</para></listitem><listitem><para>   DW_VK_F7
</para></listitem><listitem><para>   DW_VK_F8
</para></listitem><listitem><para>   DW_VK_F9
</para></listitem><listitem><para>   DW_VK_F10
</para></listitem><listitem><para>   DW_VK_F11
</para></listitem><listitem><para>   DW_VK_F12
</para></listitem><listitem><para>   DW_VK_F13
</para></listitem><listitem><para>   DW_VK_F14
</para></listitem><listitem><para>   DW_VK_F15
</para></listitem><listitem><para>   DW_VK_F16
</para></listitem><listitem><para>   DW_VK_F17
</para></listitem><listitem><para>   DW_VK_F18
</para></listitem><listitem><para>   DW_VK_F19
</para></listitem><listitem><para>   DW_VK_F20
</para></listitem><listitem><para>   DW_VK_F21
</para></listitem><listitem><para>   DW_VK_F22
</para></listitem><listitem><para>   DW_VK_F23
</para></listitem><listitem><para>   DW_VK_F24
</para></listitem><listitem><para>   DW_VK_NUMLOCK
</para></listitem><listitem><para>   DW_VK_SCROLL
</para></listitem><listitem><para>   DW_VK_LSHIFT
</para></listitem><listitem><para>   DW_VK_RSHIFT
</para></listitem><listitem><para>   DW_VK_LCONTROL
</para></listitem><listitem><para>   DW_VK_RCONTROL
</para></listitem><listitem><para>   DW_VK_LMENU
</para></listitem><listitem><para>   DW_VK_RMENU
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo35">KeyPressEventCallback</link>
</para>
</section>
<section>
<title>Constants/KeyStates</title>
<anchor id="robo29"/>
<anchor id="Constants2fKeyStates"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   KeyStates
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   The following is a list of the mnemonic key state values known to Rexx/DW.
   These keys are returned in a KeyPressEvent Callback, in the KeyState
   argument.
</para>
<formalpara><title>ATTRIBUTES</title><para></para></formalpara>
<itemizedlist><listitem><para>   DW_KC_CTRL
</para></listitem><listitem><para>   DW_KC_SHIFT
</para></listitem><listitem><para>   DW_KC_ALT
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo35">KeyPressEventCallback</link>
</para>
</section>
<section>
<title>Constants/MouseButtons</title>
<anchor id="robo30"/>
<anchor id="Constants2fMouseButtons"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   MouseButtons
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   The following is a list of the mnemonic mouse button values known to RexxDW.
   These buttons are returned in a ButtonPressEvent Callback, in the <link linkend="robo58">Button</link>
   argument.
</para>
<formalpara><title>ATTRIBUTES</title><para></para></formalpara>
<itemizedlist><listitem><para>   DW_VK_LBUTTON
</para></listitem><listitem><para>   DW_VK_RBUTTON
</para></listitem><listitem><para>   DW_VK_MBUTTON
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo36">ButtonPressEventCallback</link> <link linkend="robo37">ButtonReleaseEventCallback</link>
</para>
</section>
</section>
<section>
<title>RexxDW/Fontnames</title>
<anchor id="robo31"/>
<anchor id="RexxDW2fFontnames"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   Fontnames
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   Font names in Rexx/DW are platform dependent. This section explains how to specify fonts
   on each of the supported platforms.
</para>
<formalpara><title>NOTES</title><para></para></formalpara>
<para>
   Windows:
</para>
<literallayout class="monospaced">
      Fonts are specifed in the format: 'size.family [Bold] [Italic]'
      As an example, the following specify various font specifications for 8 point
      Courier:
         fixedfont      = '8.Courier'
         italicfont     = '8.Courier Italic'
         boldfont       = '8.Courier Bold'
         bolditalicfont = '8.Courier Bold Italic'
</literallayout>
<para>
   GTK+ 2.x:
</para>
<literallayout class="monospaced">
      Fonts are specified in the format: 'family [bold] [italic] size'
      As an example, the following specify various font specifications for 14 point
      monospace:
         fixedfont      = 'monospace 14'
         italicfont     = 'monospace italic 14'
         boldfont       = 'monospace bold italic 14'
         bolditalicfont = 'monospace italic 14'
</literallayout>
<para>
   GTK+ 1.x:
</para>
<literallayout class="monospaced">
      Fonts are specified using full X11 specification.
      As an example, the following specify various font specifications for 120
      courier:
         fixedfont      = '-adobe-courier-medium-r-normal-*-*-120-*-*-m-*-iso8859-1'
         italicfont     = '-adobe-courier-medium-o-normal-*-*-120-*-*-m-*-iso8859-1'
         boldfont       = '-adobe-courier-bold-r-normal-*-*-120-*-*-m-*-iso8859-1'
         bolditalicfont = '-adobe-courier-bold-o-normal-*-*-120-*-*-m-*-iso8859-1'
</literallayout>
<para>
   OS/2:
</para>
<literallayout class="monospaced">
      Fonts are specifed in the format: 'size.family [Bold] [Italic]'
      As an example, the following specify various font specifications for 5
      System VIO:
         fixedfont      = '5.System VIO'
         italicfont     = '5.System VIO Italic'
         boldfont       = '5.System VIO Bold'
         bolditalicfont = '5.System VIO Bold Italic'
</literallayout>
<para>
</para>
</section>
<section>
<title>RexxDW/Packing</title>
<anchor id="robo32"/>
<anchor id="RexxDW2fPacking"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   Packing
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   One of the most important aspects of laying out widgets in a Rexx/DW program is
   how packing works.  This section explains the Rexx/DW packing mechanism.
</para>
<formalpara><title>NOTES</title><para></para></formalpara>
<para>
   The above ??????
   TODO - horz/vert boxes, pack empty spaces, expand/dont_expand
</para>
</section>
<section>
<title>RexxDW/Callbacks</title>
<anchor id="robo33"/>
<anchor id="RexxDW2fCallbacks"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   Callbacks
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   Rexx/DW is an event driven application. What this means is that internally various
   events occur, such as a key press, a window becoming exposed. Rexx/DW allows you
   to call an internal Rexx procedure when various events occur.
</para>

<para>
   Each widget you create has certain valid events associated with it. As part of your
   code you associate a particular event with a widget. This is done by calling
   <link linkend="robo239">DW_signal_connect</link>(). This associates an event on a particular widget with an
   internal Rexx procedure, so that when the particular event occurs on that widget
   your procedure is executed and certain parameters are passed to it. Details on what
   parameters are passed is detailed below depending on the type of event.
</para>

<para>
   The internal Rexx procedure is called in the context of where <link linkend="robo231">DW_main</link>() or
   <link linkend="robo232">DW_main_iteration</link>() is called. This is important when considering what Rexx
   variables may or may not be in scope. It is probably better to always use
   PROCEDURE EXPOSE (myglobals) on procedures so you know that any variables you
   use within your procedure will not affect an others outside without you explicitly
   listing them.
</para>

<para>
   Once you have handled an event in your code, you can return 1 to inform Dynamic Windows
   that all processing has been handled for the particular event. Dynamic Windows will
   not execute its default event handling code.
   If your event handler returns 0, then Dynamic Windows will execute its default event
   handling code.
</para>
<formalpara><title>ATTRIBUTES</title><para></para></formalpara>
<para>
   The values of the supported events are:
</para>
<itemizedlist><listitem><para>   REXXDW_CONFIGURE_EVENT_CB
</para></listitem><listitem><para>   REXXDW_KEY_PRESS_EVENT_CB
</para></listitem><listitem><para>   REXXDW_BUTTON_PRESS_EVENT_CB
</para></listitem><listitem><para>   REXXDW_BUTTON_RELEASE_EVENT_CB
</para></listitem><listitem><para>   REXXDW_MOTION_NOTIFY_EVENT_CB
</para></listitem><listitem><para>   REXXDW_DELETE_EVENT_CB
</para></listitem><listitem><para>   REXXDW_EXPOSE_EVENT_CB
</para></listitem><listitem><para>   REXXDW_CLICKED_EVENT_CB
</para></listitem><listitem><para>   REXXDW_ITEM_ENTER_EVENT_CB
</para></listitem><listitem><para>   REXXDW_ITEM_CONTEXT_EVENT_CB
</para></listitem><listitem><para>   REXXDW_LIST_SELECT_EVENT_CB
</para></listitem><listitem><para>   REXXDW_ITEM_SELECT_EVENT_CB
</para></listitem><listitem><para>   REXXDW_SET_FOCUS_EVENT_CB
</para></listitem><listitem><para>   REXXDW_VALUE_CHANGED_EVENT_CB
</para></listitem><listitem><para>   REXXDW_SWITCH_PAGE_EVENT_CB
</para></listitem><listitem><para>   REXXDW_COLUMN_CLICK_EVENT_CB
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>NOTES</title><para></para></formalpara>
<para>
   With Rexx interpreters that don't provide RexxCallBack() it is not possible to
   inform Dynamic Windows to execute the default callback functionality after
   your event handler has executed its code, because the return value is returned
   to the Rexx program; via <link linkend="robo232">DW_main_iteration</link>(), not to Dynamic Windows.
</para>
<section>
<title>Callbacks/ConfigureEventCallback</title>
<anchor id="robo34"/>
<anchor id="Callbacks2fConfigureEventCallback"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   ConfigureEventCallback
</para>
<formalpara><title>USAGE</title><para></para></formalpara>
<para>
   rcode = ConfigureEventCallback(<link linkend="robo191">Window</link>, Width, Height [,UserData[,...]])
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   Called when a DW_CONFIGURE_EVENT signal fires on a window. This event usually
   occurs when a window's size is changed.
</para>
<formalpara><title>ARGUMENTS</title><para></para></formalpara>
<itemizedlist><listitem><para>   <link linkend="robo191">Window</link>   - value of the window handle that has been resized
</para></listitem><listitem><para>   Width    - the new width of <link linkend="robo191">Window</link> in pixels
</para></listitem><listitem><para>   Height   - the new height of <link linkend="robo191">Window</link> in pixels
</para></listitem><listitem><para>   UserData - following optional values that the user supplied when the signal event
              was connected
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>RETURN VALUE</title><para></para></formalpara>
<para>
   Return 1 to ensure that the default callback is not called.
   Return 0 to enable the default callback to be called.
</para>
<formalpara><title>SOURCE</title><para></para></formalpara>
<literallayout class="monospaced">
...
Call dw_signal_connect window, !REXXDW.!DW_CONFIGURE_EVENT, 'configure_cb', ,
   'fred', 'mary'
...
configure_cb: Procedure Expose !REXXDW.
Parse Arg win, width, height, var1, var2
Say 'New width:' width 'height:' height 'for <link linkend="robo191">Window</link>:' win 'UserVar1:' var1 ,
   'UserVar2:' var2
Return 1
</literallayout>
</section>
<section>
<title>Callbacks/KeyPressEventCallback</title>
<anchor id="robo35"/>
<anchor id="Callbacks2fKeyPressEventCallback"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   KeyPressEventCallback
</para>
<formalpara><title>USAGE</title><para></para></formalpara>
<para>
   rcode = KeyPressEventCallback(<link linkend="robo191">Window</link>, ASCIIKey, VirtualKey, KeyState [,UserData[,...]])
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   Called when a DW_KEY_PRESS_EVENT signal fires on a window. Occurs when the user
   presses a key.
</para>
<formalpara><title>ARGUMENTS</title><para></para></formalpara>
<itemizedlist><listitem><para>   <link linkend="robo191">Window</link>     - value of the window handle in which the key was pressed
</para></listitem><listitem><para>   ASCIIKey   - the Hex representation of the key pressed. If not as ASCII key
                  then the empty string is returned and VirtualKey should be used
</para></listitem><listitem><para>   VirtualKey - the mnemonic key value of the key pressed
</para></listitem><listitem><para>   KeyState   - indicates whether SHIFT, CTRL or ALT modifiers are active
</para></listitem><listitem><para>   UserData   - following optional values that the user supplied when the signal event
                  was connected
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>RETURN VALUE</title><para></para></formalpara>
<para>
   Return 1 to ensure that the default callback is not called.
   Return 0 to enable the default callback to be called.
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo28">VirtualKeys</link> <link linkend="robo29">KeyStates</link>
</para>
<formalpara><title>SOURCE</title><para></para></formalpara>
<literallayout class="monospaced">
...
Call dw_signal_connect window, !REXXDW.!DW_KEY_PRESS_EVENT, 'keypress_cb', ,
   'fred', 'mary'
...
keypress_cb: Procedure Expose !REXXDW.
Parse Arg win, ascii, virtual, state, var1, var2
Say 'ASCII Key:' ascii 'Virtual Key:' virtual 'State:' state 'UserVar1:' ,
   var1 'UserVar2:' var2
If virtual = !REXXDW.!DW_VK_F1 Then Return 1
Return 1
</literallayout>
</section>
<section>
<title>Callbacks/ButtonPressEventCallback</title>
<anchor id="robo36"/>
<anchor id="Callbacks2fButtonPressEventCallback"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   ButtonPressEventCallback
</para>
<formalpara><title>USAGE</title><para></para></formalpara>
<para>
   rcode = ButtonPressEventCallback(<link linkend="robo191">Window</link>, X, Y, <link linkend="robo58">Button</link> [,UserData[,...]])
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   Called when a DW_BUTTON_PRESS_EVENT signal fires on a window. This occurs when
   the user clicks a button with the mouse.
</para>
<formalpara><title>ARGUMENTS</title><para></para></formalpara>
<itemizedlist><listitem><para>   <link linkend="robo191">Window</link>     - value of the window handle in which the mouse button was pressed
</para></listitem><listitem><para>   X          - the X coordinate where the mouse button was pressed, relative
                  to the top left corner of the <link linkend="robo191">Window</link>
</para></listitem><listitem><para>   Y          - the Y coordinate where the mouse button was pressed, relative
                  to the top left corner of the <link linkend="robo191">Window</link>
</para></listitem><listitem><para>   <link linkend="robo58">Button</link>     - which mouse button was pressed
</para></listitem><listitem><para>   UserData   - following optional values that the user supplied when the signal event
                  was connected
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>RETURN VALUE</title><para></para></formalpara>
<para>
   Return 1 to ensure that the default callback is not called.
   Return 0 to enable the default callback to be called.
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo30">MouseButtons</link>
</para>
<formalpara><title>SOURCE</title><para></para></formalpara>
<literallayout class="monospaced">
...
Call dw_signal_connect window, !REXXDW.!DW_BUTTON_PRESS_EVENT, ,
   'buttonpress_cb', 'fred'
...
buttonpress_cb:
Parse Arg win, x, y, button, data
Say '<link linkend="robo58">Button</link>:' button 'pressed at:' x'/'y 'in <link linkend="robo191">Window</link>:' win
Return 1
</literallayout>
</section>
<section>
<title>Callbacks/ButtonReleaseEventCallback</title>
<anchor id="robo37"/>
<anchor id="Callbacks2fButtonReleaseEventCallback"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   ButtonReleaseEventCallback
</para>
<formalpara><title>USAGE</title><para></para></formalpara>
<para>
   rcode = ButtonReleaseEventCallback(<link linkend="robo191">Window</link>, X, Y, <link linkend="robo58">Button</link> [,UserData[,...]])
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   Called when a DW_BUTTON_RELEASE_EVENT signal fires on a window. This occurs when
   the user releases a button on the mouse.
</para>
<formalpara><title>ARGUMENTS</title><para></para></formalpara>
<itemizedlist><listitem><para>   <link linkend="robo191">Window</link>     - value of the window handle in which the mouse button was released
</para></listitem><listitem><para>   X          - the X coordinate where the mouse button was released, relative
                  to the top left corner of the <link linkend="robo191">Window</link>
</para></listitem><listitem><para>   Y          - the Y coordinate where the mouse button was released, relative
                  to the top left corner of the <link linkend="robo191">Window</link>
</para></listitem><listitem><para>   <link linkend="robo58">Button</link>     - which mouse button was released
</para></listitem><listitem><para>   UserData   - following optional values that the user supplied when the signal event
                  was connected
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>RETURN VALUE</title><para></para></formalpara>
<para>
   Return 1 to ensure that the default callback is not called.
   Return 0 to enable the default callback to be called.
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo30">MouseButtons</link>
</para>
<formalpara><title>SOURCE</title><para></para></formalpara>
<literallayout class="monospaced">
...
Call dw_signal_connect window, !REXXDW.!DW_BUTTON_RELEASE_EVENT, ,
   'buttonrelease_cb', 'fred'
...
buttonreleases_cb:
Parse Arg win, x, y, button, data
Say '<link linkend="robo58">Button</link>:' button 'released at:' x'/'y 'in <link linkend="robo191">Window</link>:' win
Return 1
</literallayout>
</section>
<section>
<title>Callbacks/MotionNotifyEventCallback</title>
<anchor id="robo38"/>
<anchor id="Callbacks2fMotionNotifyEventCallback"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   MotionNotifyEventCallback
</para>
<formalpara><title>USAGE</title><para></para></formalpara>
<para>
   rcode = MotionNotifyEventCallback(<link linkend="robo191">Window</link>, X, Y, <link linkend="robo58">Button</link> [,UserData[,...]])
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   Called when a DW_MOTION_NOTIFY_EVENT signal fires on a window. This occurs when
   the user moves the mouse.
</para>
<formalpara><title>ARGUMENTS</title><para></para></formalpara>
<itemizedlist><listitem><para>   <link linkend="robo191">Window</link>     - value of the window handle in which the mouse button was released
</para></listitem><listitem><para>   X          - the X coordinate where the mouse button was released, relative
                  to the top left corner of the <link linkend="robo191">Window</link>
</para></listitem><listitem><para>   Y          - the Y coordinate where the mouse button was released, relative
                  to the top left corner of the <link linkend="robo191">Window</link>
</para></listitem><listitem><para>   State      - ?????????????????
</para></listitem><listitem><para>   UserData   - following optional values that the user supplied when the signal event
                  was connected
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>RETURN VALUE</title><para></para></formalpara>
<para>
   Return 1 to ensure that the default callback is not called.
   Return 0 to enable the default callback to be called.
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo36">ButtonPressEventCallback</link> <link linkend="robo37">ButtonReleaseEventCallback</link>
</para>
<formalpara><title>SOURCE</title><para></para></formalpara>
<literallayout class="monospaced">
 ...
Call dw_signal_connect window, !REXXDW.!DW_MOTION_NOTIFY_EVENT, ,
   'motionnotify_cb', 'fred'
...
motionnotify_cb:
Parse Arg win, x, y, state, data
Say 'Mouse movied to' x'/'y 'in <link linkend="robo191">Window</link>:' win 'with state:' state
Return 1
</literallayout>
</section>
<section>
<title>Callbacks/DeleteEventCallback</title>
<anchor id="robo39"/>
<anchor id="Callbacks2fDeleteEventCallback"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   DeleteEventCallback
</para>
<formalpara><title>USAGE</title><para></para></formalpara>
<para>
   rcode = DeleteEventCallback(<link linkend="robo191">Window</link> [,UserData[,...]])
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   Called when a DW_DELETE_EVENT signal fires on a window. This occurs when
   the user closes the window by clicking the close icon on the window title bar,
   or when dw_window_destroy() ???? is called on the window.
</para>
<formalpara><title>ARGUMENTS</title><para></para></formalpara>
<itemizedlist><listitem><para>   <link linkend="robo191">Window</link>     - value of the window handle in which the mouse button was released
</para></listitem><listitem><para>   UserData   - following optional values that the user supplied when the signal event
                  was connected
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>RETURN VALUE</title><para></para></formalpara>
<para>
   Return 1 to ensure that the default callback is not called.
   Return 0 to enable the default callback to be called.
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo194">DW_window_destroy</link>
</para>
<formalpara><title>SOURCE</title><para></para></formalpara>
<literallayout class="monospaced">
...
Call dw_signal_connect window, !REXXDW.!DW_DELETE_EVENT, 'delete_cb', ,
   'fred'
...
delete_cb:
Parse Arg win, data
Say '<link linkend="robo191">Window</link>:' win 'deleted'
Return 1
</literallayout>
</section>
<section>
<title>Callbacks/ExposeEventCallback</title>
<anchor id="robo40"/>
<anchor id="Callbacks2fExposeEventCallback"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   ExposeEventCallback
</para>
<formalpara><title>USAGE</title><para></para></formalpara>
<para>
   rcode = ExposeEventCallback(<link linkend="robo191">Window</link>, X, Y, Width, Height [,UserData[,...]])
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   Called when a DW_EXPOSE_EVENT signal fires on a window. This occurs when
   the window is exposed.
</para>
<formalpara><title>ARGUMENTS</title><para></para></formalpara>
<itemizedlist><listitem><para>   <link linkend="robo191">Window</link>     - value of the window handle in which the mouse button was released
</para></listitem><listitem><para>   X          - the top left X coordinate of the exposed area
</para></listitem><listitem><para>   Y          - the top left Y coordinate of the exposed area
</para></listitem><listitem><para>   Width      - the width of the exposed area
</para></listitem><listitem><para>   Height     - the height of the exposed area
</para></listitem><listitem><para>   UserData   - following optional values that the user supplied when the signal event
                was connected
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>RETURN VALUE</title><para></para></formalpara>
<para>
   Return 1 to ensure that the default callback is not called.
   Return 0 to enable the default callback to be called.
</para>
<formalpara><title>SOURCE</title><para></para></formalpara>
<literallayout class="monospaced">
...
Call dw_signal_connect window, !REXXDW.!DW_EXPOSE_EVENT, 'expose_cb', ,
   'fred'
...
expose_cb:
Parse Arg win, x, y, width, height, data
Say '<link linkend="robo191">Window</link>:' win 'exposed at' x'/'y 'size:' width'/'height
Return 1
</literallayout>
</section>
<section>
<title>Callbacks/ClickedEventCallback</title>
<anchor id="robo41"/>
<anchor id="Callbacks2fClickedEventCallback"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   ClickedEventCallback
</para>
<formalpara><title>USAGE</title><para></para></formalpara>
<para>
   rcode = ClickedEventCallback(<link linkend="robo191">Window</link> [,UserData[,...]])
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   Called when a DW_CLICKED_EVENT signal fires on a window. This occurs when
   the user clicks in the window; usually a button window.
</para>
<formalpara><title>ARGUMENTS</title><para></para></formalpara>
<itemizedlist><listitem><para>   <link linkend="robo191">Window</link>     - value of the window handle that was clicked
</para></listitem><listitem><para>   UserData   - following optional values that the user supplied when the signal event
                  was connected
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>RETURN VALUE</title><para></para></formalpara>
<para>
   Return 1 to ensure that the default callback is not called.
   Return 0 to enable the default callback to be called.
</para>
<formalpara><title>SOURCE</title><para></para></formalpara>
<literallayout class="monospaced">
...
Call dw_signal_connect window, !REXXDW.!DW_CLICKED_EVENT, 'clicked_cb', ,
   'fred'
...
clicked_cb:
Parse Arg win, data
Say '<link linkend="robo191">Window</link>:' win 'clicked'
Return 1
</literallayout>
</section>
<section>
<title>Callbacks/ItemEnterEventCallback</title>
<anchor id="robo42"/>
<anchor id="Callbacks2fItemEnterEventCallback"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   ItemEnterEventCallback
</para>
<formalpara><title>USAGE</title><para></para></formalpara>
<para>
   rcode = ItemEnterEventCallback(<link linkend="robo191">Window</link>, Text [,UserData[,...]])
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   Called when a DW_ITEM_ENTER_EVENT signal fires on a window. This occurs when
   the user double-clicks or presses ENTER key in a container window.
</para>
<formalpara><title>ARGUMENTS</title><para></para></formalpara>
<itemizedlist><listitem><para>   <link linkend="robo191">Window</link>     - value of the window handle that was clicked
</para></listitem><listitem><para>   Text       - the string set by a call to <link linkend="robo84">DW_container_set_row_title</link>()
</para></listitem><listitem><para>   UserData   - following optional values that the user supplied when the signal event
                  was connected
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>RETURN VALUE</title><para></para></formalpara>
<para>
   Return 1 to ensure that the default callback is not called.
   Return 0 to enable the default callback to be called.
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo84">DW_container_set_row_title</link>
</para>
<formalpara><title>SOURCE</title><para></para></formalpara>
<literallayout class="monospaced">
...
Call dw_signal_connect window, !REXXDW.!DW_ITEM_ENTER_EVENT, 'itementer_cb', ,
   'fred'
...
itementer_cb:
Parse Arg win, text, data
Say 'Item text' text 'entered in <link linkend="robo191">Window</link>:' win 'userdata:' data
Return 1
</literallayout>
</section>
<section>
<title>Callbacks/ItemContextEventCallback</title>
<anchor id="robo43"/>
<anchor id="Callbacks2fItemContextEventCallback"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   ItemContextEventCallback
</para>
<formalpara><title>USAGE</title><para></para></formalpara>
<para>
   rcode = ItemContextEventCallback(<link linkend="robo191">Window</link>, Text, X, Y, ItemData [,UserData[,...]])
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   Called when a DW_ITEM_CONTEXT_EVENT signal fires on a window. This occurs when
   the user clicks the right mouse button in a container or tree window.
</para>
<formalpara><title>ARGUMENTS</title><para></para></formalpara>
<itemizedlist><listitem><para>   <link linkend="robo191">Window</link>     - value of the window handle that was clicked
</para></listitem><listitem><para>   Text       - the string set by a call to <link linkend="robo84">DW_container_set_row_title</link>()
                  or the third argument ???? to <link linkend="robo190">DW_tree_item_change</link>()
</para></listitem><listitem><para>   X          - the X coordinate where the mouse button was pressed, relative
                  to the top left corner of the <link linkend="robo191">Window</link>
</para></listitem><listitem><para>   Y          - the Y coordinate where the mouse button was pressed, relative
                  to the top left corner of the <link linkend="robo191">Window</link>
</para></listitem><listitem><para>   ItemData   - ????
</para></listitem><listitem><para>   UserData   - following optional values that the user supplied when the signal event
                  was connected
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>RETURN VALUE</title><para></para></formalpara>
<para>
   Return 1 to ensure that the default callback is not called.
   Return 0 to enable the default callback to be called.
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo84">DW_container_set_row_title</link>, <link linkend="robo190">DW_tree_item_change</link>
</para>
<formalpara><title>NOTES</title><para></para></formalpara>
<para>
   When connecting this signal to a <link linkend="robo179">Tree</link> widget, <link linkend="robo239">DW_signal_connect</link>() MUST
   be called BEFORE the <link linkend="robo179">Tree</link> is populated.
   When connecting this signal to a Container widget, <link linkend="robo239">DW_signal_connect</link>() MUST
   be called AFTER the Container is populated.
</para>
<formalpara><title>SOURCE</title><para></para></formalpara>
<literallayout class="monospaced">
...
Call dw_signal_connect window, !REXXDW.!DW_ITEM_CONTEXT_EVENT, ,
   'itemcontext_cb', 'fred'
...
itemcontext_cb:
Parse Arg win, text, x, y, itemdata, userdata
Say 'Item text' text 'entered in <link linkend="robo191">Window</link>:' win 'at' x'/'y 'userdata:' userdata
Return 1
</literallayout>
</section>
<section>
<title>Callbacks/ListSelectEventCallback</title>
<anchor id="robo44"/>
<anchor id="Callbacks2fListSelectEventCallback"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   ListSelectEventCallback
</para>
<formalpara><title>USAGE</title><para></para></formalpara>
<para>
   rcode = ListSelectEventCallback(<link linkend="robo191">Window</link>, Item [,UserData[,...]])
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   Called when a DW_LIST_SELECT_EVENT signal fires on a window. This occurs when
   the user clicks an entry in a listbox or combobox; ie an item in a list is
   selected.
</para>
<formalpara><title>ARGUMENTS</title><para></para></formalpara>
<itemizedlist><listitem><para>   <link linkend="robo191">Window</link>     - value of the window handle that was clicked
</para></listitem><listitem><para>   Item       - the index of the item in the list that is selected. This
                  index is 0-based.
</para></listitem><listitem><para>   UserData   - following optional values that the user supplied when the signal event
                  was connected
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>RETURN VALUE</title><para></para></formalpara>
<para>
   Return 1 to ensure that the default callback is not called.
   Return 0 to enable the default callback to be called.
</para>
<formalpara><title>SOURCE</title><para></para></formalpara>
<literallayout class="monospaced">
...
Call dw_signal_connect window, !REXXDW.!DW_LIST_SELECT_EVENT, ,
   'listselect_cb', 'fred'
...
listselect_cb:
Parse Arg win, item, userdata
Say 'Item number' item 'selected in <link linkend="robo191">Window</link>:' win 'userdata:' userdata
Return 1
</literallayout>
</section>
<section>
<title>Callbacks/ItemSelectEventCallback</title>
<anchor id="robo45"/>
<anchor id="Callbacks2fItemSelectEventCallback"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   ItemSelectEventCallback
</para>
<formalpara><title>USAGE</title><para></para></formalpara>
<para>
   rcode = ItemSelectEventCallback(<link linkend="robo191">Window</link>, Item, Text, Itemdata [,UserData[,...]])
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   Called when a DW_ITEM_SELECT_EVENT signal fires on a window. This occurs when
   the user clicks the left button on an item in a container or tree window.
   selected.
</para>
<formalpara><title>ARGUMENTS</title><para></para></formalpara>
<itemizedlist><listitem><para>   <link linkend="robo191">Window</link>     - value of the window handle that was clicked
</para></listitem><listitem><para>   Item       - the index of the item in the list that is selected. This
                  index is 0-based.
</para></listitem><listitem><para>   Text       - the string set by a call to <link linkend="robo84">DW_container_set_row_title</link>()
                  or the second argument to <link linkend="robo181">DW_tree_insert</link>()
</para></listitem><listitem><para>   ItemData   - the string set by a the fifth argument to a call to <link linkend="robo181">DW_tree_insert</link>()
</para></listitem><listitem><para>   UserData   - following optional values that the user supplied when the signal event
                  was connected
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>RETURN VALUE</title><para></para></formalpara>
<para>
   Return 1 to ensure that the default callback is not called.
   Return 0 to enable the default callback to be called.
</para>
<formalpara><title>NOTES</title><para></para></formalpara>
<para>
   When connecting this signal to a <link linkend="robo179">Tree</link> widget, <link linkend="robo239">DW_signal_connect</link>() MUST
   be called BEFORE the <link linkend="robo179">Tree</link> is populated otherwise the signal will never
   fire.
   When connecting this signal to a Container widget, <link linkend="robo239">DW_signal_connect</link>() MUST
   be called AFTER the Container is populated.
</para>
<formalpara><title>SOURCE</title><para></para></formalpara>
<literallayout class="monospaced">
...
Call dw_signal_connect window, !REXXDW.!DW_ITEM_SELECT_EVENT, ,
   'itemselect_cb', 'fred'
...
itemselect_cb:
Parse Arg win, item, text, userdata
Say 'Item number' item 'selected in <link linkend="robo191">Window</link>:' win 'text is:' text ,
   'userdata:' userdata
Return 1
</literallayout>
</section>
<section>
<title>Callbacks/SetFocusEventCallback</title>
<anchor id="robo46"/>
<anchor id="Callbacks2fSetFocusEventCallback"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   SetFocusEventCallback
</para>
<formalpara><title>USAGE</title><para></para></formalpara>
<para>
   rcode = SetFocusEventCallback(<link linkend="robo191">Window</link> [,UserData[,...]])
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   Called when a DW_SET_FOCUS_EVENT signal fires on a window. This occurs when
   the user gives focus to a window, either by clicking the left button in
   the window or by tabbing to the window.
   selected.
</para>
<formalpara><title>ARGUMENTS</title><para></para></formalpara>
<itemizedlist><listitem><para>   <link linkend="robo191">Window</link>     - value of the window handle that was clicked
</para></listitem><listitem><para>   UserData   - following optional values that the user supplied when the signal event
                  was connected
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>RETURN VALUE</title><para></para></formalpara>
<para>
   Return 1 to ensure that the default callback is not called.
   Return 0 to enable the default callback to be called.
</para>
<formalpara><title>SOURCE</title><para></para></formalpara>
<literallayout class="monospaced">
...
Call dw_signal_connect window, !REXXDW.!DW_SET_FOCUS_EVENT, 'setfocus_cb', ,
   'fred'
...
setfocus_cb:
Parse Arg win, userdata
Say '<link linkend="robo191">Window</link>:' win 'now has focus userdata:' userdata
Return 1
</literallayout>
</section>
<section>
<title>Callbacks/ValueChangedEventCallback</title>
<anchor id="robo47"/>
<anchor id="Callbacks2fValueChangedEventCallback"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   ValueChangedEventCallback
</para>
<formalpara><title>USAGE</title><para></para></formalpara>
<para>
   rcode = ValueChangedEventCallback(<link linkend="robo191">Window</link>, Value [,UserData[,...]])
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   Called when a DW_VALUE_CHANGED_EVENT signal fires on a window. This occurs when
   the user adjusts a scrollbar, or a slider control.
</para>
<formalpara><title>ARGUMENTS</title><para></para></formalpara>
<itemizedlist><listitem><para>   <link linkend="robo191">Window</link>     - value of the window handle that was clicked
</para></listitem><listitem><para>   Value      - the new value of the top of the scrollbar thumb in units defined
                  by <link linkend="robo160">DW_scrollbar_set_range</link>()
</para></listitem><listitem><para>   UserData   - following optional values that the user supplied when the signal event
                  was connected
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>RETURN VALUE</title><para></para></formalpara>
<para>
   Return 1 to ensure that the default callback is not called.
   Return 0 to enable the default callback to be called.
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo160">DW_scrollbar_set_range</link>, <link linkend="robo165">DW_slider_set_pos</link>
</para>
<formalpara><title>SOURCE</title><para></para></formalpara>
<literallayout class="monospaced">
...
Call dw_signal_connect window, !REXXDW.!DW_VALUE_CHANGED_EVENT, ,
   'valuechanged_cb', 'fred'
...
valuechanged_cb:
Parse Arg win, val, userdata
Say 'The top of the scrollbar thumb is now' val 'in <link linkend="robo191">Window</link>:' win ,
   'userdata:' userdata
Return 1
</literallayout>
</section>
<section>
<title>Callbacks/SwitchPageEventCallback</title>
<anchor id="robo48"/>
<anchor id="Callbacks2fSwitchPageEventCallback"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   SwitchPageEventCallback
</para>
<formalpara><title>USAGE</title><para></para></formalpara>
<para>
   rcode = SwitchPageEventCallback(<link linkend="robo191">Window</link>, Page [,UserData[,...]])
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   Called when a DW_SWITCH_PAGE_EVENT signal fires on a window. This occurs when
   the user clicks on a tab in a notebook.
</para>
<formalpara><title>ARGUMENTS</title><para></para></formalpara>
<itemizedlist><listitem><para>   <link linkend="robo191">Window</link>     - value of the window handle that was clicked
</para></listitem><listitem><para>   Page       - the index of the page of the notebook selected. Page numbers are
                  0 based.
</para></listitem><listitem><para>   UserData   - following optional values that the user supplied when the signal event
                  was connected
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>RETURN VALUE</title><para></para></formalpara>
<para>
   Return 1 to ensure that the default callback is not called.
   Return 0 to enable the default callback to be called.
</para>
<formalpara><title>SOURCE</title><para></para></formalpara>
<literallayout class="monospaced">
...
Call dw_signal_connect window, !REXXDW.!DW_SWITCH_PAGE_EVENT, ,
   'switchpage_cb', 'fred'
...
switchpage_cb:
Parse Arg win, page, userdata
Say 'Page' page 'of <link linkend="robo191">Window</link>:' win 'selected. userdata:' userdata
Return 1
</literallayout>
</section>
<section>
<title>Callbacks/ColumnClickEventCallback</title>
<anchor id="robo49"/>
<anchor id="Callbacks2fColumnClickEventCallback"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   ColumnClickEventCallback
</para>
<formalpara><title>USAGE</title><para></para></formalpara>
<para>
   rcode = ColumnClickEventCallback(<link linkend="robo191">Window</link>, Column [,UserData[,...]])
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   Called when a DW_COLUMN_CLICK_EVENT signal fires on a window. This occurs when
   the user clicks on a column heading of a container window.
   selected.
</para>
<formalpara><title>ARGUMENTS</title><para></para></formalpara>
<itemizedlist><listitem><para>   <link linkend="robo191">Window</link>     - value of the window handle that was clicked
</para></listitem><listitem><para>   Column     - the index of the column of the container selected. Column numbers are
                  0 based.
</para></listitem><listitem><para>   UserData   - following optional values that the user supplied when the signal event
                  was connected
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>RETURN VALUE</title><para></para></formalpara>
<para>
   Return 1 to ensure that the default callback is not called.
   Return 0 to enable the default callback to be called.
</para>
<formalpara><title>SOURCE</title><para></para></formalpara>
<literallayout class="monospaced">
...
Call dw_signal_connect window, !REXXDW.!DW_COLUMN_CLICK_EVENT, ,
   'columnclick_cb', 'fred'
...
columnclick_cb:
Parse Arg win, column, userdata
Say 'Column' column 'of <link linkend="robo191">Window</link>:' win 'selected. userdata:' userdata
Return 1
</literallayout>
</section>
<section>
<title>Callbacks/TimerEventCallback</title>
<anchor id="robo50"/>
<anchor id="Callbacks2fTimerEventCallback"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   TimerEventCallback
</para>
<formalpara><title>USAGE</title><para></para></formalpara>
<para>
   rcode = TimerEventCallback([UserData[,...]])
</para>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   Called when a generic timer goes off. This occurs after the period specified
   by <link linkend="robo242">DW_timer_connect</link>().
   selected.
</para>
<formalpara><title>ARGUMENTS</title><para></para></formalpara>
<itemizedlist><listitem><para>   UserData   - optional values that the user supplied when the signal event
                  was connected
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>RETURN VALUE</title><para></para></formalpara>
<para>
   Return 1 to ensure that the timer is rearmed.
   Return 0 to ensure that the timer is not rearmed.
</para>
<formalpara><title>NOTES</title><para></para></formalpara>
<para>
   The return code from the function called as a result of the timer firing determines
   whether the timer continues to fire after the specified period.
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo242">DW_timer_connect</link>
</para>
<formalpara><title>SOURCE</title><para></para></formalpara>
<literallayout class="monospaced">
...
Call dw_timer_connect window, 5000, 'timer_cb', 'fred'
...
timer_cb:
Parse Arg userdata
Say 'Our timer went off after 5 seconds' 'userdata:' userdata
Return 1
</literallayout>
</section>
</section>
<section>
<title>RexxDW/Functions</title>
<anchor id="robo51"/>
<anchor id="RexxDW2fFunctions"/>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   The following external functions comprise Rexx/DW.
</para>
<section>
<title>Functions/Widgets</title>
<anchor id="robo52"/>
<anchor id="Functions2fWidgets"/>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   Widgets are the fundamental display items in RexxDW. RexxDW supports a range
   of widgets to enable a rich GUI interface for your Rexx programs.
</para>
<formalpara><title>NOTES</title><para></para></formalpara>
<para>
   RexxDW supports all common widget types as follows:
</para>
<literallayout class="monospaced">
      box
      button
      checkbox/radiobutton
      container/filesystem
      dialog
      rendering
      entryfield
      listbox/combobox
      menu
      multiline edit
      notebook
      percent
      scrollbar
      slider
      spinbutton
      splitbar
      text
      tree
      window
</literallayout>
<para>
</para>
<section>
<title>Widgets/Box</title>
<anchor id="robo53"/>
<anchor id="Widgets2fBox"/>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   Boxes are used to layout the GUI display. <link linkend="robo52">Widgets</link> are packed into a
   box to position that widget. A box can be horizontal or vertical, which
   determines the arrangement of the widgets packed into the box.
   So to arrange two widgets side-by-side, you would create a horizontal box,
   your two widgets, and pack those two widgets into the box and they appear
   beside each other.
</para>
<section>
<title>Box/DW_box_new</title>
<anchor id="robo54"/>
<anchor id="Box2fDW5fbox5fnew"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   DW_box_new
</para>
<formalpara><title>SYNOPSIS</title><para></para></formalpara>
<para>
   win = dw_box_new( Orientation )
</para>
<formalpara><title>FUNCTION</title><para></para></formalpara>
<para>
   Creates a new generic box window.
   A box is the basic widget for arranging the location and position of
   other widgets.
</para>
<formalpara><title>ARGUMENTS</title><para></para></formalpara>
<itemizedlist><listitem><para>   Orientation- !REXXDW.!DW_VERT to indicate a vertical box
                  !REXXDW.!DW_HORZ to indicate a horizontal box
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>RESULT</title><para></para></formalpara>
<para>
   A window identifier.
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo55">DW_groupbox_new</link>, <link linkend="robo14">WidgetOrientation</link>
</para>
<formalpara><title>NOTES</title><para></para></formalpara>
<para>
   The orientation of a box determines the orientation of the widgets that are
   packed into this box. Creating a horizontal box and packing two buttons into it
   will result in the two buttons being placed side by side.
</para>
<formalpara><title>SOURCE</title><para></para></formalpara>
<literallayout class="monospaced">
...
box = dw_box_new( !REXXDW.!DW_VERT )
Call dw_box_pack_start win, box, 0, 0, !REXXDW.!DW_EXPAND_HORZ, ,
   !REXXDW.!DW_EXPAND_VERT, 0
</literallayout>
</section>
<section>
<title>Box/DW_groupbox_new</title>
<anchor id="robo55"/>
<anchor id="Box2fDW5fgroupbox5fnew"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   DW_groupbox_new
</para>
<formalpara><title>SYNOPSIS</title><para></para></formalpara>
<para>
   win = dw_groupbox_new( Orientation, Title )
</para>
<formalpara><title>FUNCTION</title><para></para></formalpara>
<para>
   Creates a new generic groupbox window.
   A box is the basic widget for arranging the location and position of
   other widgets. The difference between a box and a groupbox is that
   a groupbox contains a border and a Title in the top left corner.
</para>
<formalpara><title>ARGUMENTS</title><para></para></formalpara>
<itemizedlist><listitem><para>   Orientation- !REXXDW.!DW_VERT to indicate a vertical box
                  !REXXDW.!DW_HORZ to indicate a horizontal box
</para></listitem><listitem><para>   Title      - the text to display as the box title
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>RESULT</title><para></para></formalpara>
<para>
   A window identifier.
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo54">DW_box_new</link>, <link linkend="robo14">WidgetOrientation</link>
</para>
<formalpara><title>NOTES</title><para></para></formalpara>
<para>
   The orientation of a box determines the orientation of the widgets that are
   packed into this box. Creating a horizontal box and packing two buttons into it
   will result in the two buttons being placed side by side.
</para>
<formalpara><title>SOURCE</title><para></para></formalpara>
<literallayout class="monospaced">
...
box = dw_groupbox_new( !REXXDW.!DW_VERT, 'Editor' )
Call dw_box_pack_start win, box, 0, 0, !REXXDW.!DW_EXPAND_HORZ, ,
   !REXXDW.!DW_EXPAND_VERT, 0
</literallayout>
</section>
<section>
<title>Box/DW_box_pack_start</title>
<anchor id="robo56"/>
<anchor id="Box2fDW5fbox5fpack5fstart"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   DW_box_pack_start
</para>
<formalpara><title>SYNOPSIS</title><para></para></formalpara>
<para>
   dw_box_pack_start( ParentBox, BoxToPack, BoxWidth, BoxHeight, HorzExpand, VertExpand, Padding )
</para>
<formalpara><title>FUNCTION</title><para></para></formalpara>
<para>
   Packs the BoxToPack at the start of the ParentBox; ie at the left of a horizontal
   ParentBox, or the top of a vertical ParentBox. The height and width of the box can
   be specified as is the ability to allow the box to expand horizontally or vertically.
</para>
<formalpara><title>ARGUMENTS</title><para></para></formalpara>
<itemizedlist><listitem><para>   ParentBox  - the box into which the BoxToPack is packed
</para></listitem><listitem><para>   BoxToPack  - the box that requires packing
</para></listitem><listitem><para>   BoxWidth   - the initial width of the box in pixels
</para></listitem><listitem><para>   BoxHeight  - the initial height of the box in pixels
</para></listitem><listitem><para>   HorzExpand - indicate if the box can be expanded horizontally.
                  Specify either !REXXDW.!DW_EXPAND_HORZ or !REXXDW.!DW_DONT_EXPAND_HORZ
</para></listitem><listitem><para>   VertExpand - indicate if the box can be expanded vertically.
                  Specify either !REXXDW.!DW_EXPAND_VERT or !REXXDW.!DW_DONT_EXPAND_VERT
</para></listitem><listitem><para>   Padding    - The number of pixels of padding to add around all sides of BoxToPack
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>RESULT</title><para></para></formalpara>
<para>
   No return result.
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo57">DW_box_pack_end</link>
</para>
<formalpara><title>NOTES</title><para></para></formalpara>
<para>
   The BoxToPack argument can be 0, which will result in empty space being packed.
</para>
<formalpara><title>SOURCE</title><para></para></formalpara>
<literallayout class="monospaced">
...
button = dw_bitmapbutton_new_from_file( 'Quit', 0, 'quit' )
Call dw_box_pack_start win, button, 0, 32, !REXXDW.!DW_EXPAND_HORZ, ,
   !REXXDW.!DW_DONT_EXPAND_VERT, 0
</literallayout>
</section>
<section>
<title>Box/DW_box_pack_end</title>
<anchor id="robo57"/>
<anchor id="Box2fDW5fbox5fpack5fend"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   DW_box_pack_end
</para>
<formalpara><title>SYNOPSIS</title><para></para></formalpara>
<para>
   dw_box_pack_end( ParentBox, BoxToPack, BoxWidth, BoxHeight, HorzExpand, VertExpand, Padding )
</para>
<formalpara><title>FUNCTION</title><para></para></formalpara>
<para>
   Packs the BoxToPack at the end of the ParentBox; ie at the right of a horizontal
   ParentBox, or the bottom of a vertical ParentBox. The height and width of the box can
   be specified as is the ability to allow the box to expand horizontally or vertically.
</para>
<formalpara><title>ARGUMENTS</title><para></para></formalpara>
<itemizedlist><listitem><para>   ParentBox  - the box into which the BoxToPack is packed
</para></listitem><listitem><para>   BoxToPack  - the box that requires packing
</para></listitem><listitem><para>   BoxWidth   - the initial width of the box in pixels
</para></listitem><listitem><para>   BoxHeight  - the initial height of the box in pixels
</para></listitem><listitem><para>   HorzExpand - indicate if the box can be expanded horizontally.
                  Specify either !REXXDW.!DW_EXPAND_HORZ or !REXXDW.!DW_DONT_EXPAND_HORZ
</para></listitem><listitem><para>   VertExpand - indicate if the box can be expanded vertically.
                  Specify either !REXXDW.!DW_EXPAND_VERT or !REXXDW.!DW_DONT_EXPAND_VERT
</para></listitem><listitem><para>   Padding    - The number of pixels of padding to add around all sides of BoxToPack
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>RESULT</title><para></para></formalpara>
<para>
   No return result.
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo56">DW_box_pack_start</link>
</para>
<formalpara><title>NOTES</title><para></para></formalpara>
<para>
   The BoxToPack argument can be 0, which will result in empty space being packed.
</para>
<formalpara><title>SOURCE</title><para></para></formalpara>
<literallayout class="monospaced">
...
button = dw_bitmapbutton_new_from_file( 'Quit', 0, 'quit' )
Call dw_box_pack_end win, button, 0, 32, !REXXDW.!DW_EXPAND_HORZ, ,
   !REXXDW.!DW_DONT_EXPAND_VERT, 0
</literallayout>
</section>
</section>
<section>
<title>Widgets/Button</title>
<anchor id="robo58"/>
<anchor id="Widgets2fButton"/>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   Buttons enable an action to be carried out by the user clicking the
   left mouse button on the widget.
   RexxDW supports two types of button; plain text buttons and bitmap
   buttons.
</para>
<section>
<title>Button/DW_button_new</title>
<anchor id="robo59"/>
<anchor id="Button2fDW5fbutton5fnew"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   DW_button_new
</para>
<formalpara><title>SYNOPSIS</title><para></para></formalpara>
<para>
   win = dw_button_new( ButtonText, Id )
</para>
<formalpara><title>FUNCTION</title><para></para></formalpara>
<para>
   Creates a new text button.
   A button is a widget which contains text and can be clicked to execute
   some action.
</para>
<formalpara><title>ARGUMENTS</title><para></para></formalpara>
<itemizedlist><listitem><para>   ButtonText - the text to display in the button
</para></listitem><listitem><para>   Id         - a numeric identifier used to identify the window
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>RESULT</title><para></para></formalpara>
<para>
   A window identifier.
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo60">DW_bitmapbutton_new_from_file</link>
</para>
<formalpara><title>SOURCE</title><para></para></formalpara>
<literallayout class="monospaced">
...
button = dw_button_new( "Quit", 10 )
</literallayout>
</section>
<section>
<title>Button/DW_bitmapbutton_new_from_file</title>
<anchor id="robo60"/>
<anchor id="Button2fDW5fbitmapbutton5fnew5ffrom5ffile"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   DW_bitmapbutton_new_from_file
</para>
<formalpara><title>SYNOPSIS</title><para></para></formalpara>
<para>
   win = dw_bitmapbutton_new_from_file( BubbleText, Id, Filename )
</para>
<formalpara><title>FUNCTION</title><para></para></formalpara>
<para>
   Creates a new button window using a bitmap image.
</para>
<formalpara><title>ARGUMENTS</title><para></para></formalpara>
<itemizedlist><listitem><para>   BubbleText - the text to display when the mouse is over the button
</para></listitem><listitem><para>   Id         - a numeric identifier used to identify the window
</para></listitem><listitem><para>   Filename   - the name of a file containing a valid bitmap image (.BMP, or .XPM)
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>RESULT</title><para></para></formalpara>
<para>
   A window identifier.
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo59">DW_button_new</link>
</para>
<formalpara><title>SOURCE</title><para></para></formalpara>
<literallayout class="monospaced">
...
button = dw_bitmapbutton_new_from_file( 'Quit', 0, 'quit' )
Call dw_box_pack_start win, button, 32, 32, !REXXDW.!DW_DONT_EXPAND_HORZ, ,
   !REXXDW.!DW_DONT_EXPAND_VERT, 0
</literallayout>
</section>
</section>
<section>
<title>Widgets/Calendar</title>
<anchor id="robo61"/>
<anchor id="Widgets2fCalendar"/>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   The Calendar widget displays a month calendar from which the user can
   select a date.
</para>
<section>
<title>Calendar/DW_calendar_new</title>
<anchor id="robo62"/>
<anchor id="Calendar2fDW5fcalendar5fnew"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   DW_calendar_new
</para>
<formalpara><title>SYNOPSIS</title><para></para></formalpara>
<para>
   win = dw_calendar_new( Id )
</para>
<formalpara><title>FUNCTION</title><para></para></formalpara>
<para>
   Creates a new calendar.
   A calendar is a widget which allows the user to select a date.
</para>
<formalpara><title>ARGUMENTS</title><para></para></formalpara>
<itemizedlist><listitem><para>   Id         - a numeric identifier used to identify the window
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>RESULT</title><para></para></formalpara>
<para>
   A window identifier.
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo63">DW_calendar_get_date</link>, <link linkend="robo64">DW_calendar_set_date</link>
</para>
<formalpara><title>NOTES</title><para></para></formalpara>
<para>
   On OS/2 this is a dummy text widget. On GTK, only 1 month is ever displayed.
   On Windows, more than 1 month is displayed depending on whether the widget is
   packed with expanding on.
</para>
<formalpara><title>SOURCE</title><para></para></formalpara>
<literallayout class="monospaced">
...
calendar = dw_calendar_new( 10 )
</literallayout>
</section>
<section>
<title>Calendar/DW_calendar_get_date</title>
<anchor id="robo63"/>
<anchor id="Calendar2fDW5fcalendar5fget5fdate"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   DW_calendar_get_date
</para>
<formalpara><title>SYNOPSIS</title><para></para></formalpara>
<para>
   date = dw_calendar_get_date( Win )
</para>
<formalpara><title>FUNCTION</title><para></para></formalpara>
<para>
   Gets the selected date of the widget.
</para>
<formalpara><title>ARGUMENTS</title><para></para></formalpara>
<itemizedlist><listitem><para>   Win        - the window identifier returned from <link linkend="robo62">DW_calendar_new</link>()
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>RESULT</title><para></para></formalpara>
<para>
   The date selected in Rexx's DATE('S') format.
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo62">DW_calendar_new</link>, <link linkend="robo64">DW_calendar_set_date</link>
</para>
<formalpara><title>SOURCE</title><para></para></formalpara>
<literallayout class="monospaced">
...
calendar = dw_calendar_new( 10 )
...
date = dw_calendar_get_date( calendar )
</literallayout>
</section>
<section>
<title>Calendar/DW_calendar_set_date</title>
<anchor id="robo64"/>
<anchor id="Calendar2fDW5fcalendar5fset5fdate"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   DW_calendar_set_date
</para>
<formalpara><title>SYNOPSIS</title><para></para></formalpara>
<para>
   dw_calendar_set_date( Win, Date )
</para>
<formalpara><title>FUNCTION</title><para></para></formalpara>
<para>
   Sets the date for the widget.
</para>
<formalpara><title>ARGUMENTS</title><para></para></formalpara>
<itemizedlist><listitem><para>   Win        - the window identifier returned from <link linkend="robo62">DW_calendar_new</link>()
</para></listitem><listitem><para>   Date       - the date to set the widget to. Must be in Rexx DATE( 'S' ) format.
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>RESULT</title><para></para></formalpara>
<para>
   None
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo62">DW_calendar_new</link>, <link linkend="robo63">DW_calendar_get_date</link>
</para>
<formalpara><title>SOURCE</title><para></para></formalpara>
<literallayout class="monospaced">
...
calendar = dw_calendar_new( 10 )
...
date = dw_calendar_set_date( calendar, Date( 'S' ) )
</literallayout>
</section>
</section>
<section>
<title>Widgets/CheckboxAndRadiobutton</title>
<anchor id="robo65"/>
<anchor id="Widgets2fCheckboxAndRadiobutton"/>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   Checkboxes provide a simple mechanism for a user to indicate a boolean
   value response.
   Radiobuttons provide the user with a means to choose from a list of
   options.
</para>
<section>
<title>CheckboxAndRadiobutton/DW_checkbox_new</title>
<anchor id="robo66"/>
<anchor id="CheckboxAndRadiobutton2fDW5fcheckbox5fnew"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   DW_checkbox_new
</para>
<formalpara><title>SYNOPSIS</title><para></para></formalpara>
<para>
   win = dw_checkbox_new( CheckboxText, Id )
</para>
<formalpara><title>FUNCTION</title><para></para></formalpara>
<para>
   Creates a new checkbox.
   A checkbox is a widget that allows for a boolean value to be set. It
   contains text to describe the boolean value being set.
</para>
<formalpara><title>ARGUMENTS</title><para></para></formalpara>
<itemizedlist><listitem><para>   CheckboxText - the text to display next to the checkbox
</para></listitem><listitem><para>   Id           - a numeric identifier used to identify the window
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>RESULT</title><para></para></formalpara>
<para>
   A window identifier.
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo70">DW_checkbox_get</link>, <link linkend="robo68">DW_checkbox_set</link>
</para>
<formalpara><title>SOURCE</title><para></para></formalpara>
<literallayout class="monospaced">
...
checkbox = dw_checkbox_new( "Allow user to delete", 0 )
</literallayout>
</section>
<section>
<title>CheckboxAndRadiobutton/DW_radiobutton_new</title>
<anchor id="robo67"/>
<anchor id="CheckboxAndRadiobutton2fDW5fradiobutton5fnew"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   DW_radiobutton_new
</para>
<formalpara><title>SYNOPSIS</title><para></para></formalpara>
<para>
   win = dw_radiobutton_new( ButtonText, Id )
</para>
<formalpara><title>FUNCTION</title><para></para></formalpara>
<para>
   Creates a new radiobutton.
   A radiobutton is a widget that allows for one of a number of values to be set. It
   contains text to describe the value being set. A number of radiobuttons are
   created together with one of them set at any point in time.
</para>
<formalpara><title>ARGUMENTS</title><para></para></formalpara>
<itemizedlist><listitem><para>   ButtonText - the text to display next to the radiobutton
</para></listitem><listitem><para>   Id         - a numeric identifier used to identify the window
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>RESULT</title><para></para></formalpara>
<para>
   A window identifier.
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo66">DW_checkbox_new</link>, <link linkend="robo55">DW_groupbox_new</link>
</para>
<formalpara><title>NOTES</title><para></para></formalpara>
<para>
   For radiobuttons to work properly, all radiobuttons that are to be grouped together
   MUST be packed into the same groupbox and they MUST have a unique Id within the
   groupbox.
</para>
<formalpara><title>SOURCE</title><para></para></formalpara>
<literallayout class="monospaced">
langs = 'Rexx Perl Tcl C COBOL'
groupbox = dw_groupbox_new( !REXXDW.!DW_VERT, 0, 'Favourite Language' )
Do i = 1 To Words( langs )
   rb.i = dw_radiobutton_new( Word( langs, i ), i*10 )
   Call dw_box_pack_start groupbox, rb.i, 150, 15, !REXXDW.!DW_EXPAND_HORZ, ,
      !REXXDW.!DW_DONT_EXPAND_VERT, 0
End
Call dw_radiobutton_set rb.1, !REXXDW.!DW_CHECKED
</literallayout>
</section>
<section>
<title>CheckboxAndRadiobutton/DW_checkbox_set</title>
<anchor id="robo68"/>
<anchor id="CheckboxAndRadiobutton2fDW5fcheckbox5fset"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   DW_checkbox_set
</para>
<formalpara><title>SYNOPSIS</title><para></para></formalpara>
<para>
   dw_checkbox_set( Win, State )
</para>
<formalpara><title>FUNCTION</title><para></para></formalpara>
<para>
   Sets the state of the specified checkbox.
</para>
<formalpara><title>ARGUMENTS</title><para></para></formalpara>
<itemizedlist><listitem><para>   Win        - the window identifier returned from <link linkend="robo66">DW_checkbox_new</link>()
</para></listitem><listitem><para>   State      - the initial state of the checkbox;
                  !REXXDW.!DW_CHECKED or !REXXDW.!DW_UNCHECKED
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>RESULT</title><para></para></formalpara>
<para>
   No return result.
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo66">DW_checkbox_new</link>, <link linkend="robo70">DW_checkbox_get</link>, <link linkend="robo22">WidgetChecked</link>
</para>
<formalpara><title>SOURCE</title><para></para></formalpara>
<literallayout class="monospaced">
...
checkbox = dw_checkbox_new( "Allow access", 0 )
Call dw_checkbox_set( checkbox, !REXXDW.!DW_CHECKED )
</literallayout>
</section>
<section>
<title>CheckboxAndRadiobutton/DW_radiobutton_set</title>
<anchor id="robo69"/>
<anchor id="CheckboxAndRadiobutton2fDW5fradiobutton5fset"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   DW_radiobutton_set
</para>
<formalpara><title>SYNOPSIS</title><para></para></formalpara>
<para>
   dw_radiobutton_set( Win, State )
</para>
<formalpara><title>FUNCTION</title><para></para></formalpara>
<para>
   Sets the state of the radiobutton to checked or not.
</para>
<formalpara><title>ARGUMENTS</title><para></para></formalpara>
<itemizedlist><listitem><para>   Win        - the window identifier returned from <link linkend="robo67">DW_radiobutton_new</link>()
</para></listitem><listitem><para>   State      - set to DW_CHECKED or DW_UNCHECKED
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>RESULT</title><para></para></formalpara>
<para>
   No return result.
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo71">DW_radiobutton_get</link>
</para>
<formalpara><title>SOURCE</title><para></para></formalpara>
<literallayout class="monospaced">
langs = 'Rexx Perl Tcl C COBOL'
groupbox = dw_groupbox_new( !REXXDW.!DW_VERT, 0, 'Favourite Language' )
Do i = 1 To Words( langs )
   rb.i = dw_radiobutton_new( Word( langs, i ), i*10 )
   Call dw_box_pack_start groupbox, rb.i, 150, 15, !REXXDW.!DW_EXPAND_HORZ, ,
      !REXXDW.!DW_DONT_EXPAND_VERT, 0
End
Call dw_radiobutton_set rb.1, !REXXDW.!DW_CHECKED
</literallayout>
</section>
<section>
<title>CheckboxAndRadiobutton/DW_checkbox_get</title>
<anchor id="robo70"/>
<anchor id="CheckboxAndRadiobutton2fDW5fcheckbox5fget"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   DW_checkbox_get
</para>
<formalpara><title>SYNOPSIS</title><para></para></formalpara>
<para>
   win = dw_checkbox_get( Win )
</para>
<formalpara><title>FUNCTION</title><para></para></formalpara>
<para>
   Queries the state of the specified checkbox.
</para>
<formalpara><title>ARGUMENTS</title><para></para></formalpara>
<itemizedlist><listitem><para>   Win        - the window identifier returned from <link linkend="robo66">DW_checkbox_new</link>()
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>RESULT</title><para></para></formalpara>
<para>
   1 if the checkbox is checked, 0 if not checked.
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo66">DW_checkbox_new</link>, <link linkend="robo68">DW_checkbox_set</link>
</para>
<formalpara><title>SOURCE</title><para></para></formalpara>
<literallayout class="monospaced">
...
checkbox = dw_checkbox_new( "Allow access", 0 )
...
rc = dw_checkbox_get( checkbox )
cb_result = 'Unchecked Checked'
Say 'Allow access checkbox' Word( cb_result, rc+1 )
</literallayout>
</section>
<section>
<title>CheckboxAndRadiobutton/DW_radiobutton_get</title>
<anchor id="robo71"/>
<anchor id="CheckboxAndRadiobutton2fDW5fradiobutton5fget"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   DW_radiobutton_get
</para>
<formalpara><title>SYNOPSIS</title><para></para></formalpara>
<para>
   boolean = dw_radiobutton_get( Win )
</para>
<formalpara><title>FUNCTION</title><para></para></formalpara>
<para>
   Determines if a radiobutton has been checked or not.
</para>
<formalpara><title>ARGUMENTS</title><para></para></formalpara>
<itemizedlist><listitem><para>   Win        - the window identifier returned from <link linkend="robo67">DW_radiobutton_new</link>()
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>RESULT</title><para></para></formalpara>
<para>
   1 if the radiobutton is checked, 0 if unchecked
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo69">DW_radiobutton_set</link>
</para>
<formalpara><title>SOURCE</title><para></para></formalpara>
<literallayout class="monospaced">
langs = 'Rexx Perl Tcl C COBOL'
groupbox = dw_groupbox_new( !REXXDW.!DW_VERT, 0, 'Favourite Language' )
Do i = 1 To Words( langs )
   rb.i = dw_radiobutton_new( Word( langs, i ), i*10 )
   Call dw_box_pack_start groupbox, rb.i, 150, 15, !REXXDW.!DW_EXPAND_HORZ, ,
      !REXXDW.!DW_DONT_EXPAND_VERT, 0
End
Call dw_radiobutton_set rb.1, !REXXDW.!DW_CHECKED
...
Do i = 1 To Words( langs )
   If dw_radiobutton_get( rb.i ) Then
      Do
         Say 'Your favourite language is' Word( langs, i )
         Leave
      End
End
</literallayout>
</section>
</section>
<section>
<title>Widgets/ContainerAndFilesystem</title>
<anchor id="robo72"/>
<anchor id="Widgets2fContainerAndFilesystem"/>
<formalpara><title>DESCRIPTION</title><para></para></formalpara>
<para>
   These widgets provide a two-dimensional display of read-only data.
   Data are displayed in rows and columns, with automatically created scrollbars
   to display the complete set of data. Columns can be resized by the user at runtime.
   A Filesystem is the same as a normal Container, except that the first column
   consists of a column of string and icon items, which usually displays a filename.
</para>

<para>
   All DW_container*() functions (for which there is no specific "Filename" equivalent)
   also works with a "Filename" widget.
</para>
<section>
<title>ContainerAndFilesystem/DW_container_new</title>
<anchor id="robo73"/>
<anchor id="ContainerAndFilesystem2fDW5fcontainer5fnew"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   DW_container_new
</para>
<formalpara><title>SYNOPSIS</title><para></para></formalpara>
<para>
   win = dw_container_new( Id, Selection )
</para>
<formalpara><title>FUNCTION</title><para></para></formalpara>
<para>
   Creates a new container.
   A container is a widget that provides a grid of cells with column headings.
</para>
<formalpara><title>ARGUMENTS</title><para></para></formalpara>
<itemizedlist><listitem><para>   Id         - a numeric identifier used to identify the window
</para></listitem><listitem><para>   Selection  - !REXXDW.!DW_SINGLE_SELECTION indicates that only 1 row in the container is selectable
                  !REXXDW.!DW_MULTIPLE_SELECTION indicates that multiple rowsin the container are selectable
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>RESULT</title><para></para></formalpara>
<para>
   A window identifier.
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo24">ContainerSelection</link>
</para>
<formalpara><title>SOURCE</title><para></para></formalpara>
<literallayout class="monospaced">
...
container = dw_container_new( 1, !REXXDW.!DW_SINGLE_SELECTION )
</literallayout>
</section>
<section>
<title>ContainerAndFilesystem/DW_container_alloc</title>
<anchor id="robo74"/>
<anchor id="ContainerAndFilesystem2fDW5fcontainer5falloc"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   DW_container_alloc
</para>
<formalpara><title>SYNOPSIS</title><para></para></formalpara>
<para>
   alloc = dw_container_alloc( Win, RowCount )
</para>
<formalpara><title>FUNCTION</title><para></para></formalpara>
<para>
   Allocates working memory for a container window.
</para>
<formalpara><title>ARGUMENTS</title><para></para></formalpara>
<itemizedlist><listitem><para>   Win        - the window identifier returned from <link linkend="robo73">DW_container_new</link>()
</para></listitem><listitem><para>   RowCount   - the number of rows of data that the container will initially contain
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>RESULT</title><para></para></formalpara>
<para>
   An identifier for the working memory.
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo73">DW_container_new</link>, <link linkend="robo87">DW_container_clear</link>
</para>
<formalpara><title>NOTES</title><para></para></formalpara>
<para>
   After a container window is created, you need to allocate memory for the initial
   number of rows that the container will contain. This call does that and must
   be called after creating the container. The allocated memory will be freed when
   the container is destroyed and by a call to <link linkend="robo87">DW_container_clear</link>().
</para>
<formalpara><title>SOURCE</title><para></para></formalpara>
<literallayout class="monospaced">
...
container = dw_container_new( 1, !REXXDW.!DW_SINGLE_SELECTION )
alloc = dw_container_alloc( container, 10 )
...
</literallayout>
</section>
<section>
<title>ContainerAndFilesystem/DW_container_setup</title>
<anchor id="robo75"/>
<anchor id="ContainerAndFilesystem2fDW5fcontainer5fsetup"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   DW_container_setup
</para>
<formalpara><title>SYNOPSIS</title><para></para></formalpara>
<para>
   dw_container_setup( Win, FlagsArray, TitlesArray[,Separator] )
</para>
<formalpara><title>FUNCTION</title><para></para></formalpara>
<para>
   Defines properties for the columns in a container.
</para>
<formalpara><title>ARGUMENTS</title><para></para></formalpara>
<itemizedlist><listitem><para>   Win        - the window identifier returned from <link linkend="robo73">DW_container_new</link>()
</para></listitem><listitem><para>   FlagsArray - an array containing column flags
</para></listitem><listitem><para>   TitlesArray- an array containing column heading titles
</para></listitem><listitem><para>   Separator  - An optional flag under OS/2 ?????
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>RESULT</title><para></para></formalpara>
<para>
   No return result.
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo80">DW_container_change_item</link>, <link linkend="robo76">DW_filesystem_setup</link>, <link linkend="robo7">ContainerColumnFlags</link>
</para>
<formalpara><title>NOTES</title><para></para></formalpara>
<para>
   The FlagsArray is a Rexx stem variable name, including a trailing period. The 0th
   compound variable (eg Flags.0) contains a count of the number of items in the
   array. Each item in the array can contain a combination of the values
   described in <link linkend="robo7">ContainerColumnFlags</link>.
</para>
<formalpara><title>SOURCE</title><para></para></formalpara>
<literallayout class="monospaced">
...
flags.0 = 2
flags.1 = dw_or( !REXXDW.!DW_CFA_STRINGANDICON, !REXXDW.!DW_CFA_LEFT, ,
   !REXXDW.!DW_CFA_SEPARATOR, !REXXDW.!DW_CFA_HORZSEPARATOR )
flags.2 = dw_or( !REXXDW.!DW_CFA_STRING, !REXXDW.!DW_CFA_LEFT, ,
   !REXXDW.!DW_CFA_SEPARATOR, !REXXDW.!DW_CFA_HORZSEPARATOR )
titles.0 = 2
titles.1 = 'Title'
titles.2 = 'Command'
...
container = dw_container_new( 1, !REXXDW.!DW_MULTIPLE_SELECTION )
Call dw_container_setup container, 'flags.', 'titles.', 0
alloc = dw_container_alloc( container, numrows )
...
Do i = 1 To numrows
   Call dw_container_set_item container, alloc, 0, i-1, title.i, icon.i
   Call dw_container_set_item container, alloc, 1, i-1, command.i
   Call dw_container_set_row_title alloc, i-1, "Row"i
End
</literallayout>
</section>
<section>
<title>ContainerAndFilesystem/DW_filesystem_setup</title>
<anchor id="robo76"/>
<anchor id="ContainerAndFilesystem2fDW5ffilesystem5fsetup"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   DW_filesystem_setup
</para>
<formalpara><title>SYNOPSIS</title><para></para></formalpara>
<para>
   dw_filesystem_setup( Win, FlagsArray, TitlesArray, Separator )
</para>
<formalpara><title>FUNCTION</title><para></para></formalpara>
<para>
   Defines properties for the columns in a filesystem container.
</para>
<formalpara><title>ARGUMENTS</title><para></para></formalpara>
<itemizedlist><listitem><para>   Win        - the window identifier returned from <link linkend="robo73">DW_container_new</link>()
</para></listitem><listitem><para>   FlagsArray - an array containing column flags
</para></listitem><listitem><para>   TitlesArray- an array containing column heading titles
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>RESULT</title><para></para></formalpara>
<para>
   No return result.
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo82">DW_filesystem_change_item</link>, <link linkend="robo75">DW_container_setup</link>, <link linkend="robo7">ContainerColumnFlags</link>
</para>
<formalpara><title>NOTES</title><para></para></formalpara>
<para>
   The FlagsArray is a Rexx stem variable name, including a trailing period. The 0th
   compound variable (eg Flags.0) contains a count of the number of items in the
   array. Each item in the array can contain a combination of the values
   described in <link linkend="robo7">ContainerColumnFlags</link>.
</para>
<formalpara><title>SOURCE</title><para></para></formalpara>
<literallayout class="monospaced">
...
flags.0 = 2
flags.1 = dw_or( !REXXDW.!DW_CFA_STRINGANDICON, !REXXDW.!DW_CFA_LEFT, ,
   !REXXDW.!DW_CFA_SEPARATOR, !REXXDW.!DW_CFA_HORZSEPARATOR )
flags.2 = dw_or( !REXXDW.!DW_CFA_STRING, !REXXDW.!DW_CFA_LEFT, ,
   !REXXDW.!DW_CFA_SEPARATOR, !REXXDW.!DW_CFA_HORZSEPARATOR )
titles.0 = 2
titles.1 = 'Title'
titles.2 = 'Command'
...
container = dw_container_new( 1, !REXXDW.!DW_MULTIPLE_SELECTION )
alloc = dw_container_alloc( container, numrows )
Call dw_filesystem_setup container, 'flags.', 'titles.'
...
normalfileicon = dw_icon_load_from_file( '/home/mark/normalfile' )
Do i = 1 To numrows
   Call dw_filesystem_set_file container, alloc, '/home/mark/myfile', myicon
   Call dw_filesystem_set_item container, alloc, 0, i-1, title.i, icon.i
   Call dw_filesystem_set_item container, alloc, 1, i-1, command.i
   Call dw_container_set_row_title alloc, i-1, "Row"i
End
</literallayout>
</section>
<section>
<title>ContainerAndFilesystem/DW_container_set_item</title>
<anchor id="robo77"/>
<anchor id="ContainerAndFilesystem2fDW5fcontainer5fset5fitem"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   DW_container_set_item
</para>
<formalpara><title>SYNOPSIS</title><para></para></formalpara>
<para>
   dw_container_set_item( Win, Memory, Column, Row, Data [,Data2] )
</para>
<formalpara><title>FUNCTION</title><para></para></formalpara>
<para>
   Adds  the initial data into a cell of a container.
</para>
<formalpara><title>ARGUMENTS</title><para></para></formalpara>
<itemizedlist><listitem><para>   Win        - the window identifier returned from <link linkend="robo73">DW_container_new</link>()
</para></listitem><listitem><para>   Memory     - the memory identifier returned by a call to <link linkend="robo74">DW_container_alloc</link>()
</para></listitem><listitem><para>   Column     - the column of the data to be changed, 0 based
</para></listitem><listitem><para>   Row        - the row of the data to be changed, 0 based
</para></listitem><listitem><para>   Data       - the new data value for the cell
</para></listitem><listitem><para>   Data2      - extra data for the cell if the column type is !REXXDW.!DW_CFA_STRINGANDICON
                  (not implemented yet)
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>RESULT</title><para></para></formalpara>
<para>
   No return result.
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo80">DW_container_change_item</link>, <link linkend="robo75">DW_container_setup</link>, <link linkend="robo7">ContainerColumnFlags</link>
   <link linkend="robo82">DW_filesystem_change_item</link>, <link linkend="robo79">DW_filesystem_set_item</link>
</para>
<formalpara><title>NOTES</title><para></para></formalpara>
<para>
   The Data (and Data2) arguments must match the data type of the column when
   defined in the call to <link linkend="robo75">DW_container_setup</link>().
</para>
<formalpara><title>SOURCE</title><para></para></formalpara>
<literallayout class="monospaced">
...
flags.0 = 2
flags.1 = dw_or( !REXXDW.!DW_CFA_STRINGANDICON, !REXXDW.!DW_CFA_LEFT, ,
   !REXXDW.!DW_CFA_SEPARATOR, !REXXDW.!DW_CFA_HORZSEPARATOR )
flags.2 = dw_or( !REXXDW.!DW_CFA_STRING, !REXXDW.!DW_CFA_LEFT, ,
   !REXXDW.!DW_CFA_SEPARATOR, !REXXDW.!DW_CFA_HORZSEPARATOR )
titles.0 = 2
titles.1 = 'Title'
titles.2 = 'Command'
...
container = dw_container_new( 1, !REXXDW.!DW_MULTIPLE_SELECTION )
alloc = dw_container_alloc( container, numrows )
Call dw_container_setup container, 'flags.', 'titles.', 0
...
Do i = 1 To numrows
   Call dw_container_set_item container, alloc, 0, i-1, title.i, icon.i
   Call dw_container_set_item container, alloc, 1, i-1, command.i
   Call dw_container_set_row_title alloc, i-1, "Row"i
End
</literallayout>
</section>
<section>
<title>ContainerAndFilesystem/DW_filesystem_set_file</title>
<anchor id="robo78"/>
<anchor id="ContainerAndFilesystem2fDW5ffilesystem5fset5ffile"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   DW_filesystem_set_file
</para>
<formalpara><title>SYNOPSIS</title><para></para></formalpara>
<para>
   dw_filesystem_set_file( Win, Memory, Row, Filename, Icon )
</para>
<formalpara><title>FUNCTION</title><para></para></formalpara>
<para>
   Adds the data in the first cell of a filesystem container.
</para>
<formalpara><title>ARGUMENTS</title><para></para></formalpara>
<itemizedlist><listitem><para>   Win        - the window identifier returned from <link linkend="robo73">DW_container_new</link>()
</para></listitem><listitem><para>   Memory     - the memory identifier returned by a call to <link linkend="robo74">DW_container_alloc</link>()
</para></listitem><listitem><para>   Row        - the row of the data to be changed, 0 based
</para></listitem><listitem><para>   Filename   - the new filename for the cell
</para></listitem><listitem><para>   Icon       - the icon identifier returned from <link linkend="robo228">DW_icon_load_from_file</link>()
                  to be the new icon for the cell
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>RESULT</title><para></para></formalpara>
<para>
   No return result.
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo81">DW_filesystem_change_file</link>, <link linkend="robo79">DW_filesystem_set_item</link>
</para>
<formalpara><title>SOURCE</title><para></para></formalpara>
<literallayout class="monospaced">
...
normalfileicon = dw_icon_load_from_file( '/home/mark/normalfile' )
container = dw_container_new( 1, !REXXDW.!DW_SINGLE_SELECTION )
alloc = dw_container_alloc( container, 10 )
...
Call dw_filesystem_set_file container, alloc, 10, '/home/mark/newfile.txt', ,
   normalfileicon
</literallayout>
</section>
<section>
<title>ContainerAndFilesystem/DW_filesystem_set_item</title>
<anchor id="robo79"/>
<anchor id="ContainerAndFilesystem2fDW5ffilesystem5fset5fitem"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   DW_filesystem_set_item
</para>
<formalpara><title>SYNOPSIS</title><para></para></formalpara>
<para>
   dw_filesystem_set_item( Win, Memory, Column, Row, Data [,Data2] )
</para>
<formalpara><title>FUNCTION</title><para></para></formalpara>
<para>
   Adds  the initial data into a cell of a filesystem container.
</para>
<formalpara><title>ARGUMENTS</title><para></para></formalpara>
<itemizedlist><listitem><para>   Win        - the window identifier returned from <link linkend="robo73">DW_container_new</link>()
</para></listitem><listitem><para>   Memory     - the memory identifier returned by a call to <link linkend="robo74">DW_container_alloc</link>()
</para></listitem><listitem><para>   Column     - the column of the data to be changed, 0 based
</para></listitem><listitem><para>   Row        - the row of the data to be changed, 0 based
</para></listitem><listitem><para>   Data       - the new data value for the cell
</para></listitem><listitem><para>   Data2      - extra data for the cell if the column type is !REXXDW.!DW_CFA_STRINGANDICON
                  (not implemented yet)
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>RESULT</title><para></para></formalpara>
<para>
   No return result.
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo80">DW_container_change_item</link>, <link linkend="robo75">DW_container_setup</link>, <link linkend="robo7">ContainerColumnFlags</link>
   <link linkend="robo82">DW_filesystem_change_item</link>, <link linkend="robo77">DW_container_set_item</link>
</para>
<formalpara><title>NOTES</title><para></para></formalpara>
<para>
   The Data (and Data2) arguments must match the data type of the column when
   defined in the call to <link linkend="robo75">DW_container_setup</link>().
</para>
<formalpara><title>SOURCE</title><para></para></formalpara>
<literallayout class="monospaced">
...
flags.0 = 2
flags.1 = dw_or( !REXXDW.!DW_CFA_STRINGANDICON, !REXXDW.!DW_CFA_LEFT, ,
   !REXXDW.!DW_CFA_SEPARATOR, !REXXDW.!DW_CFA_HORZSEPARATOR )
flags.2 = dw_or( !REXXDW.!DW_CFA_STRING, !REXXDW.!DW_CFA_LEFT, ,
   !REXXDW.!DW_CFA_SEPARATOR, !REXXDW.!DW_CFA_HORZSEPARATOR )
titles.0 = 2
titles.1 = 'Title'
titles.2 = 'Command'
...
container = dw_container_new( 1, !REXXDW.!DW_MULTIPLE_SELECTION )
alloc = dw_container_alloc( container, numrows )
Call dw_filesystem_setup container, 'flags.', 'titles.', 0
...
Do i = 1 To numrows
   Call dw_filesystem_set_file container, alloc, i-1, fname.i, icon.i
   Call dw_filesystem_set_item container, alloc, 0, i-1, title.i, icon.i
   Call dw_filesystem_set_item container, alloc, 1, i-1, command.i
   Call dw_container_set_row_title alloc, i-1, "Row"i
End
</literallayout>
</section>
<section>
<title>ContainerAndFilesystem/DW_container_change_item</title>
<anchor id="robo80"/>
<anchor id="ContainerAndFilesystem2fDW5fcontainer5fchange5fitem"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   DW_container_change_item
</para>
<formalpara><title>SYNOPSIS</title><para></para></formalpara>
<para>
   dw_container_change_item( Win, Column, Row, Data [,Data2] )
</para>
<formalpara><title>FUNCTION</title><para></para></formalpara>
<para>
   Changes the data in a cell of a container.
</para>
<formalpara><title>ARGUMENTS</title><para></para></formalpara>
<itemizedlist><listitem><para>   Win        - the window identifier returned from <link linkend="robo73">DW_container_new</link>()
</para></listitem><listitem><para>   Column     - the column of the data to be changed, 0 based
</para></listitem><listitem><para>   Row        - the row of the data to be changed, 0 based
</para></listitem><listitem><para>   Data       - the new data value for the cell
</para></listitem><listitem><para>   Data2      - extra data for the cell if the column type is !REXXDW.!DW_CFA_STRINGANDICON
                  (not implemented yet)
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>RESULT</title><para></para></formalpara>
<para>
   No return result.
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo77">DW_container_set_item</link>
</para>
<formalpara><title>NOTES</title><para></para></formalpara>
<para>
   The Data (and Data2) arguments must match the data type of the column when
   defined in the call to <link linkend="robo75">DW_container_setup</link>().
</para>
<formalpara><title>SOURCE</title><para></para></formalpara>
<literallayout class="monospaced">
...
container = dw_container_new( 1, !REXXDW.!DW_SINGLE_SELECTION )
...
Call dw_container_change_item container, 0, 10, 'New string data'
</literallayout>
</section>
<section>
<title>ContainerAndFilesystem/DW_filesystem_change_file</title>
<anchor id="robo81"/>
<anchor id="ContainerAndFilesystem2fDW5ffilesystem5fchange5ffile"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   DW_filesystem_change_file
</para>
<formalpara><title>SYNOPSIS</title><para></para></formalpara>
<para>
   dw_filesystem_change_file( Win, Row, Filename, Icon )
</para>
<formalpara><title>FUNCTION</title><para></para></formalpara>
<para>
   Changes the data in the first cell of a filesystem container.
</para>
<formalpara><title>ARGUMENTS</title><para></para></formalpara>
<itemizedlist><listitem><para>   Win        - the window identifier returned from <link linkend="robo73">DW_container_new</link>()
</para></listitem><listitem><para>   Row        - the row of the data to be changed, 0 based
</para></listitem><listitem><para>   Filename   - the new filename for the cell
</para></listitem><listitem><para>   Icon       - the icon identifier returned from <link linkend="robo228">DW_icon_load_from_file</link>()
                  to be the new icon for the cell
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>RESULT</title><para></para></formalpara>
<para>
   No return result.
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo82">DW_filesystem_change_item</link>, <link linkend="robo78">DW_filesystem_set_file</link>
</para>
<formalpara><title>SOURCE</title><para></para></formalpara>
<literallayout class="monospaced">
...
normalfileicon = dw_icon_load_from_file( '/home/mark/normalfile' )
...
container = dw_container_new( 1, !REXXDW.!DW_SINGLE_SELECTION )
...
Call dw_filesystem_change_file container, 10, '/home/mark/newfile.txt', ,
   normalfileicon
</literallayout>
</section>
<section>
<title>ContainerAndFilesystem/DW_filesystem_change_item</title>
<anchor id="robo82"/>
<anchor id="ContainerAndFilesystem2fDW5ffilesystem5fchange5fitem"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   DW_filesystem_change_item
</para>
<formalpara><title>SYNOPSIS</title><para></para></formalpara>
<para>
   dw_filesystem_change_item( Win, Column, Row, Data [,Data2] )
</para>
<formalpara><title>FUNCTION</title><para></para></formalpara>
<para>
   Changes the data in a cell of a container.
</para>
<formalpara><title>ARGUMENTS</title><para></para></formalpara>
<itemizedlist><listitem><para>   Win        - the window identifier returned from <link linkend="robo73">DW_container_new</link>()
</para></listitem><listitem><para>   Column     - the column of the data to be changed, 0 based
</para></listitem><listitem><para>   Row        - the row of the data to be changed, 0 based
</para></listitem><listitem><para>   Data       - the new data value for the cell
</para></listitem><listitem><para>   Data2      - extra data for the cell if the column type is !REXXDW.!DW_CFA_STRINGANDICON
                  (not implemented yet)
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>RESULT</title><para></para></formalpara>
<para>
   No return result.
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo77">DW_container_set_item</link>
</para>
<formalpara><title>NOTES</title><para></para></formalpara>
<para>
   The Data (and Data2) arguments must match the data type of the column when
   defined in the call to <link linkend="robo75">DW_container_setup</link>().
</para>
<formalpara><title>SOURCE</title><para></para></formalpara>
<literallayout class="monospaced">
...
container = dw_container_new( 1, !REXXDW.!DW_SINGLE_SELECTION )
...
Call dw_filesystem_change_item container, 0, 10, 'New string data'
</literallayout>
</section>
<section>
<title>ContainerAndFilesystem/DW_container_insert</title>
<anchor id="robo83"/>
<anchor id="ContainerAndFilesystem2fDW5fcontainer5finsert"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   DW_container_insert
</para>
<formalpara><title>SYNOPSIS</title><para></para></formalpara>
<para>
   dw_container_insert( Win, Memory, RowCount )
</para>
<formalpara><title>FUNCTION</title><para></para></formalpara>
<para>
   Inserts the allocated memory into the container.
</para>
<formalpara><title>ARGUMENTS</title><para></para></formalpara>
<itemizedlist><listitem><para>   Win        - the window identifier returned from <link linkend="robo73">DW_container_new</link>()
</para></listitem><listitem><para>   Memory     - the memory identifier returned by a call to <link linkend="robo74">DW_container_alloc</link>()
</para></listitem><listitem><para>   RowCount   - the number of rows of data that the container will initially contain
</para></listitem></itemizedlist><para>
</para>
<formalpara><title>RESULT</title><para></para></formalpara>
<para>
   No return result.
</para>
<formalpara><title>SEE ALSO</title><para></para></formalpara>
<para>
   <link linkend="robo73">DW_container_new</link>, <link linkend="robo74">DW_container_alloc</link>
</para>
<formalpara><title>SOURCE</title><para></para></formalpara>
<literallayout class="monospaced">
...
container = dw_container_new( 1, !REXXDW.!DW_SINGLE_SELECTION )
alloc = dw_container_alloc( container, numrows )
...
Call dw_container_insert container, alloc, numrows
</literallayout>
</section>
<section>
<title>ContainerAndFilesystem/DW_container_set_row_title</title>
<anchor id="robo84"/>
<anchor id="ContainerAndFilesystem2fDW5fcontainer5fset5frow5ftitle"/>
<formalpara><title>NAME</title><para></para></formalpara>
<para>
   DW_container_set_row_title
</para>
<formalpara><title>SYNOPSIS</title><para></para></formalpara>
<para>
   dw_container_set_row_title( Memory, Row, TitleText )
</para>
<formalpara><title>FUNCTION</title><para></para></formalpara>
<para>
   Assigns a textual string for the specified Row. Used to identify this
   row in other container functions
</para>
<formalpara><title>ARGUMENTS</