-- Automatic generation produced by ISE Eiffel --

class interface
     MAIN_DIALOG

create

     make
                 -- Create the main dialog.

feature -- Access

     C_memory: INTEGER is 2
                 -- Code for the C memory managed
                 -- by the garbage collector
                 -- (from MEM_CONST)

     children: LINKED_LIST [WEL_WINDOW]
                 -- Construct a linear representation of the children.
                 -- (from WEL_COMPOSITE_WINDOW)
           require -- from WEL_COMPOSITE_WINDOW
                 exists: exists
           ensure -- from WEL_COMPOSITE_WINDOW
                 result_not_void: Result /= void

     commands: WEL_COMMAND_MANAGER
                 -- Command manager associated to the current window.
                 -- (from WEL_WINDOW)

     current_font: WEL_FONT
                 -- Current font selected

     current_size: INTEGER
                 -- Last size entered by the user

     default_processing: BOOLEAN
                 -- (from WEL_RETURN_VALUE)

     edit: WEL_MULTIPLE_LINE_EDIT
                 -- Edit box

     Eiffel_memory: INTEGER is 1
                 -- Code for the Eiffel memory managed
                 -- by the garbage collector
                 -- (from MEM_CONST)

     Full_collector: INTEGER is 0
                 -- Statistics for full collections
                 -- (from MEM_CONST)

     has_return_value: BOOLEAN
                 -- Should the window procedure return a value?
                 -- (from WEL_RETURN_VALUE)

     Incremental_collector: INTEGER is 1
                 -- Statistics for incremental collections
                 -- (from MEM_CONST)

     item: POINTER
                 -- Generic Windows handle or structure pointer.
                 -- Can be a HWND, HICON, RECT *, WNDCLASS *, etc...
                 -- (from WEL_ANY)

     list_box: WEL_SINGLE_SELECTION_LIST_BOX
                 -- List box which contains the fonts

     menu: WEL_MENU
                 -- Associated menu
                 -- (from WEL_COMPOSITE_WINDOW)
           require -- from WEL_COMPOSITE_WINDOW
                 exists: exists
                 has_menu: has_menu
           ensure -- from WEL_COMPOSITE_WINDOW
                 result_not_void: Result /= void

     message_return_value: INTEGER
                 -- Return value of the window procedure.
                 -- (from WEL_RETURN_VALUE)
           require -- from WEL_RETURN_VALUE
                 has_return_value: has_return_value

     parent: WEL_WINDOW
                 -- Parent window
                 -- (from WEL_WINDOW)

     result_id: INTEGER
                 -- Last control id used to close the dialog.
                 -- See class WEL_ID_CONSTANTS for the different values.
                 -- (from WEL_DIALOG)

     scroller: WEL_SCROLLER
                 -- Scroller object for processing scroll messages.
                 -- (from WEL_COMPOSITE_WINDOW)

     size: WEL_SINGLE_LINE_EDIT
                 -- Edit box to input the size

     system_menu: WEL_MENU
                 -- Associated system menu
                 -- (from WEL_COMPOSITE_WINDOW)
           require -- from WEL_COMPOSITE_WINDOW
                 exists: exists
                 has_system_menu: has_system_menu
           ensure -- from WEL_COMPOSITE_WINDOW
                 result_not_void: Result /= void

     Total_memory: INTEGER is 0
                 -- Code for all the memory managed
                 -- by the garbage collector
                 -- (from MEM_CONST)
     
feature -- Measurement

     gc_statistics (collector_type: INTEGER): GC_INFO
                 -- Garbage collection information for collector_type.
                 -- (from MEMORY)
           require -- from MEMORY
                 type_ok: collector_type = full_collector or collector_type = incremental_collector

     memory_statistics (memory_type: INTEGER): MEM_INFO
                 -- Memory usage information for memory_type
                 -- (from MEMORY)
           require -- from MEMORY
                 type_ok: memory_type = total_memory or memory_type = eiffel_memory or memory_type = c_memory
     
feature -- Status report

     absolute_x: INTEGER
                 -- Absolute x position
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists
           ensure -- from WEL_WINDOW
                 Result = window_rect.x

     absolute_y: INTEGER
                 -- Absolute y position
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists
           ensure -- from WEL_WINDOW
                 Result = window_rect.y

     background_brush: WEL_BRUSH
                 -- Current window background color used to refresh the window when
                 -- requested by the WM_ERASEBKGND windows message.
                 -- By default there is no background
                 -- (from WEL_WINDOW)
           ensure -- from WEL_WINDOW
                 new_object: Result /= void implies Result /= background_brush

     captured_window: WEL_WINDOW
                 -- Current window which has been captured.
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists
                 window_captured: window_captured

     chunk_size: INTEGER
                 -- Minimal size of a memory chunk. The run-time always
                 -- allocates a multiple of this size.
                 -- If the environment variable EIF_MEMORY_CHUNK
                 -- is defined, it is set to the closest reasonable
                 -- value from it.
                 -- (from MEMORY)

     client_rect: WEL_RECT
                 -- Client rectangle
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists
           ensure -- from WEL_WINDOW
                 result_not_void: Result /= void

     closeable: BOOLEAN
                 -- Can the user close the window?
                 -- Yes by default.
                 -- (from WEL_COMPOSITE_WINDOW)

     coalesce_period: INTEGER
                 -- Period of full coalesce (in number of collections)
                 -- If the environment variable EIF_FULL_COALESCE_PERIOD
                 -- is defined, it is set to the closest reasonable
                 -- value from it.
                 -- If null, no full coalescing is launched.
                 -- (from MEMORY)

     collecting: BOOLEAN
                 -- Is garbage collection enabled?
                 -- (from MEMORY)

     collection_period: INTEGER
                 -- Period of full collection.
                 -- If the environment variable EIF_FULL_COLLECTION_PERIOD
                 -- is defined, it is set to the closest reasonable
                 -- value from it.
                 -- If null, no full collection is launched.
                 -- (from MEMORY)

     command (message: INTEGER): WEL_COMMAND
                 -- Command associated to message
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 positive_message: message >= 0
                 command_exists: command_exists (message)
           ensure -- from WEL_WINDOW
                 result_not_void: Result /= void

     command_argument (message: INTEGER): ANY
                 -- Command argument associated to message
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 positive_message: message >= 0
                 command_exists: command_exists (message)

     command_exists (message: INTEGER): BOOLEAN
                 -- Does a command associated to message exist?
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 positive_message: message >= 0

     commands_enabled: BOOLEAN
                 -- Is the commands execution enabled?
                 -- (from WEL_WINDOW)

     enabled: BOOLEAN
                 -- Is the window enabled for mouse and keyboard input?
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists

     ex_style: INTEGER
                 -- Window ex_style
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists

     exists: BOOLEAN
                 -- Does the item exist?
                 -- (from WEL_ANY)
           ensure -- from WEL_ANY
                 Result = (item /= default_pointer)

     focused_window: WEL_WINDOW
                 -- Current window which has the focus.
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists

     generation_object_limit: INTEGER
                 -- Maximum size of object in generational scavenge zone.
                 -- If the environment variable EIF_GS_LIMIT
                 -- is defined, it is set to the closest reasonable
                 -- value from it.
                 -- (from MEMORY)

     has_capture: BOOLEAN
                 -- Does this window have the capture?
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists

     has_focus: BOOLEAN
                 -- Does this window have the focus?
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists

     has_heavy_capture: BOOLEAN
                 -- Does this window have the heavy capture?
                 -- (from WEL_WINDOW)

     has_horizontal_scroll_bar: BOOLEAN
                 -- Does this window have a horizontal scroll bar?
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists

     has_menu: BOOLEAN
                 -- Does the window have a menu?
                 -- (from WEL_COMPOSITE_WINDOW)
           require -- from WEL_COMPOSITE_WINDOW
                 exists: exists

     has_system_menu: BOOLEAN
                 -- Does the window have a system menu?
                 -- (from WEL_COMPOSITE_WINDOW)
           require -- from WEL_COMPOSITE_WINDOW
                 exists: exists

     has_vertical_scroll_bar: BOOLEAN
                 -- Does this window have a vertical scroll bar?
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists

     heavy_capture_activated: BOOLEAN
                 -- Is the heavy capture currently running?
                 -- (i.e. is there a window in the current program
                 -- with has_heavy_capture to True?)
                 -- (from WEL_WINDOW)

     height: INTEGER
                 -- Window height
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists

     horizontal_position: INTEGER
                 -- Current position of the horizontal scroll box
                 -- (from WEL_COMPOSITE_WINDOW)
           require -- from WEL_COMPOSITE_WINDOW
                 exists: exists
                 scroller_exists: scroller /= void
           ensure -- from WEL_COMPOSITE_WINDOW
                 result_small_enough: Result <= maximal_horizontal_position
                 result_large_enough: Result >= minimal_horizontal_position

     is_inside: BOOLEAN
                 -- Is the current window inside another window?
                 -- (from WEL_WINDOW)

     largest_coalesced_block: INTEGER
                 -- Size of largest coalesced block since last call to
                 -- largest_coalesced; 0 if none.
                 -- (from MEMORY)

     max_mem: INTEGER
                 -- Maximum amount of bytes the run-time can allocate.
                 -- (from MEMORY)

     maximal_height: INTEGER
                 -- Maximal height allowed for the window
                 -- (from WEL_WINDOW)
           ensure -- from WEL_WINDOW
                 result_large_enough: Result >= minimal_height

     maximal_horizontal_position: INTEGER
                 -- Maxium position of the horizontal scroll box
                 -- (from WEL_COMPOSITE_WINDOW)
           require -- from WEL_COMPOSITE_WINDOW
                 exists: exists
                 scroller_exists: scroller /= void
           ensure -- from WEL_COMPOSITE_WINDOW
                 result_large_enough: Result >= minimal_horizontal_position

     maximal_vertical_position: INTEGER
                 -- Maxium position of the vertical scroll box
                 -- (from WEL_COMPOSITE_WINDOW)
           require -- from WEL_COMPOSITE_WINDOW
                 exists: exists
                 scroller_exists: scroller /= void
           ensure -- from WEL_COMPOSITE_WINDOW
                 result_large_enough: Result >= minimal_vertical_position

     maximal_width: INTEGER
                 -- Maximal width allowed for the window
                 -- (from WEL_WINDOW)
           ensure -- from WEL_WINDOW
                 result_large_enough: Result >= minimal_width

     maximized: BOOLEAN
                 -- Is the window maximized?
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists

     memory_threshold: INTEGER
                 -- Minimum amount of bytes to be allocated before
                 -- starting an automatic garbage collection.
                 -- (from MEMORY)

     minimal_height: INTEGER
                 -- Minimal height allowed for the window
                 -- (from WEL_COMPOSITE_WINDOW)
           ensure -- from WEL_WINDOW
                 positive_result: Result >= 0
                 result_small_enough: Result <= maximal_height

     minimal_horizontal_position: INTEGER
                 -- Minimum position of the horizontal scroll box
                 -- (from WEL_COMPOSITE_WINDOW)
           require -- from WEL_COMPOSITE_WINDOW
                 exists: exists
                 scroller_exists: scroller /= void
           ensure -- from WEL_COMPOSITE_WINDOW
                 result_small_enough: Result <= maximal_horizontal_position

     minimal_vertical_position: INTEGER
                 -- Minimum position of the vertical scroll box
                 -- (from WEL_COMPOSITE_WINDOW)
           require -- from WEL_COMPOSITE_WINDOW
                 exists: exists
                 scroller_exists: scroller /= void
           ensure -- from WEL_COMPOSITE_WINDOW
                 result_small_enough: Result <= maximal_vertical_position

     minimal_width: INTEGER
                 -- Minimal width allowed for the window
                 -- (from WEL_COMPOSITE_WINDOW)
           ensure -- from WEL_WINDOW
                 positive_result: Result >= 0
                 result_small_enough: Result <= maximal_width

     minimized: BOOLEAN
                 -- Is the window minimized?
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists

     ok_pushed: BOOLEAN
                 -- Has the OK button been pushed?
                 -- (from WEL_DIALOG)

     placement: WEL_WINDOW_PLACEMENT
                 -- Window placement information
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists
           ensure -- from WEL_WINDOW
                 result_not_void: Result /= void

     referers (an_object: ANY): ARRAY [ANY]
                 -- Objects that refer to an_object.
                 -- (from MEMORY)

     scavenge_zone_size: INTEGER
                 -- Size of generational scavenge zone.
                 -- If the environment variable EIF_MEMORY_SCAVENGE
                 -- is defined, it is set to the closest reasonable
                 -- value from it.
                 -- (from MEMORY)

     shared: BOOLEAN
                 -- Is item shared by another object?
                 -- If False (by default), item will
                 -- be destroyed by destroy_item.
                 -- If True, item will not be destroyed.
                 -- (from WEL_ANY)

     shown: BOOLEAN
                 -- Is the window shown?
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists

     style: INTEGER
                 -- Window style
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists

     tenure: INTEGER
                 -- Maximum age of object before being considered
                 -- as old (old objects are not scanned during
                 -- partial collection).
                 -- If the environment variable EIF_TENURE_MAX
                 -- is defined, it is set to the closest reasonable
                 -- value from it.
                 -- (from MEMORY)

     text: STRING
                 -- Window text
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists
           ensure -- from WEL_WINDOW
                 result_not_void: Result /= void

     text_length: INTEGER
                 -- Text length
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists
           ensure -- from WEL_WINDOW
                 positive_result: Result >= 0

     vertical_position: INTEGER
                 -- Current position of the vertical scroll box
                 -- (from WEL_COMPOSITE_WINDOW)
           require -- from WEL_COMPOSITE_WINDOW
                 exists: exists
                 scroller_exists: scroller /= void
           ensure -- from WEL_COMPOSITE_WINDOW
                 result_small_enough: Result <= maximal_vertical_position
                 result_large_enough: Result >= minimal_vertical_position

     width: INTEGER
                 -- Window width
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists

     window_captured: BOOLEAN
                 -- Has a window been captured?
                 -- (from WEL_WINDOW)

     window_rect: WEL_RECT
                 -- Window rectangle (absolute position)
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists
           ensure -- from WEL_WINDOW
                 result_not_void: Result /= void

     x: INTEGER
                 -- Window x position
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists
           ensure -- from WEL_WINDOW
                 parent = void implies Result = absolute_x

     y: INTEGER
                 -- Window y position
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists
           ensure -- from WEL_WINDOW
                 parent = void implies Result = absolute_y
     
feature -- Status report

     valid_hwnd_constant (c: POINTER): BOOLEAN
                 -- Is c a valid hwnd constant?
                 -- (from WEL_HWND_CONSTANTS)
     
feature -- Status setting

     allocate_compact
                 -- Enter `memory' mode: will try to compact memory
                 -- before requesting more from the operating system.
                 -- (from MEMORY)

     allocate_fast
                 -- Enter `speed' mode: will optimize speed of memory
                 -- allocation rather than memory usage.
                 -- (from MEMORY)

     allocate_tiny
                 -- Enter `tiny' mode: will enter `memory' mode
                 -- after having freed as much memory as possible.
                 -- (from MEMORY)

     collection_off
                 -- Disable garbage collection.
                 -- (from MEMORY)

     collection_on
                 -- Enable garbage collection.
                 -- (from MEMORY)

     disable
                 -- Disable mouse and keyboard input
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists
           ensure -- from WEL_WINDOW
                 disabled: not enabled

     disable_commands
                 -- Disable commands execution.
                 -- (from WEL_WINDOW)
           ensure -- from WEL_WINDOW
                 commands_disabled: not commands_enabled

     disable_default_processing
                 -- Disable default window processing.
                 -- The standard window procedure will not be called for
                 -- each messages received by the window and then the
                 -- normal behavior will not occur.
                 -- (from WEL_WINDOW)
           ensure -- from WEL_WINDOW
                 default_processing_disabled: not default_processing

     disable_time_accounting
                 -- Disable GC time accounting (default).
                 -- (from MEMORY)

     enable
                 -- Enable mouse and keyboard input.
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists
           ensure -- from WEL_WINDOW
                 enabled: enabled

     enable_commands
                 -- Enable commands execution.
                 -- (from WEL_WINDOW)
           ensure -- from WEL_WINDOW
                 commands_enabled: commands_enabled

     enable_default_processing
                 -- Enable default window processing.
                 -- The standard window procedure will be called for
                 -- each messages received by the window and then the
                 -- normal behavior will occur.
                 -- (from WEL_WINDOW)
           ensure -- from WEL_WINDOW
                 default_processing_enabled: default_processing

     enable_time_accounting
                 -- Enable GC time accouting, accessible in gc_statistics.
                 -- (from MEMORY)

     hide
                 -- Hide the window
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists
           ensure -- from WEL_WINDOW
                 hidden: not shown

     horizontal_update (inc, position: INTEGER)
                 -- Update the window and the horizontal scroll box with
                 -- inc and position.
                 -- (from WEL_COMPOSITE_WINDOW)
           require -- from WEL_COMPOSITE_WINDOW
                 exists: exists
                 position_small_enough: position <= maximal_horizontal_position
                 position_large_enough: position >= minimal_horizontal_position
           ensure -- from WEL_COMPOSITE_WINDOW
                 horizontal_position_set: horizontal_position = position

     maximize
                 -- Maximize the window
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists
           ensure -- from WEL_WINDOW
                 maximized: maximized

     minimize
                 -- Minimize the window and display its icon
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists
           ensure -- from WEL_WINDOW
                 minimized: minimized

     release_capture
                 -- Release the mouse capture after a call
                 -- to set_capture.
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists
                 has_capture: has_capture
           ensure -- from WEL_WINDOW
                 not_has_capture: not has_capture

     release_heavy_capture
                 -- Release the mouse capture after a call
                 -- to set_heavy_capture.
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists
                 has_heavy_capture: has_heavy_capture
                 heavy_capture_activated: heavy_capture_activated
           ensure -- from WEL_WINDOW
                 heavy_capture_set: not has_heavy_capture
                 heavy_capture_deactivated: not heavy_capture_activated

     restore
                 -- Restore the window to its
                 -- original size and position after
                 -- minimize or maximize
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists

     set_capture
                 -- Set the mouse capture to the Current window.
                 -- Once the window has captured the mouse, all
                 -- mouse input is directed to this window, regardless
                 -- of whether the cursor is over that window. Only
                 -- one window can have the mouse capture at a time.
                 --
                 -- Works only for windows in the same thread as your
                 -- application.
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists
                 has_not_capture: not has_capture
                 has_not_heavy_capture: not has_heavy_capture
           ensure -- from WEL_WINDOW
                 has_capture: has_capture

     set_coalesce_period (value: INTEGER)
                 -- Set coalesce_period. Every value collection,
                 -- the Garbage Collector will coalesce
                 -- the whole memory.
                 -- (from MEMORY)
           require -- from MEMORY
                 positive_value: value >= 0

     set_collection_period (value: INTEGER)
                 -- Set collection_period. Every value collection,
                 -- the Garbage collector will perform a collection
                 -- on the whole memory (full collection), otherwise
                 -- a simple partial collection is done.
                 -- (from MEMORY)
           require -- from MEMORY
                 positive_value: value >= 0

     set_ex_style (an_ex_style: INTEGER)
                 -- Set an_ex_style with ex_style.
                 --
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists

     set_focus
                 -- Set the focus to Current
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists

     set_heavy_capture
                 -- Set the mouse capture to the Current window.
                 -- Once the window has captured the mouse, all
                 -- mouse input is directed to this window, regardless
                 -- of whether the cursor is over that window. Only
                 -- one window can have the mouse capture at a time.
                 --
                 -- Works for ALL windows.
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists
                 has_not_heavy_capture: not has_heavy_capture
                 heavy_capture_deactivated: not heavy_capture_activated
           ensure -- from WEL_WINDOW
                 heavy_capture_set: has_heavy_capture
                 heavy_capture_activated: heavy_capture_activated

     set_horizontal_position (position: INTEGER)
                 -- Set horizontal_position with position.
                 -- (from WEL_COMPOSITE_WINDOW)
           require -- from WEL_COMPOSITE_WINDOW
                 exists: exists
                 scroller_exists: scroller /= void
                 position_small_enough: position <= maximal_horizontal_position
                 position_large_enough: position >= minimal_horizontal_position
           ensure -- from WEL_COMPOSITE_WINDOW
                 horizontal_position_set: horizontal_position = position

     set_horizontal_range (minimum, maximum: INTEGER)
                 -- Set minimal_horizontal_position and
                 -- maximal_horizontal_position with minimum and
                 -- maximum.
                 -- (from WEL_COMPOSITE_WINDOW)
           require -- from WEL_COMPOSITE_WINDOW
                 exists: exists
                 scroller_exists: scroller /= void
                 consistent_range: minimum <= maximum
           ensure -- from WEL_COMPOSITE_WINDOW
                 minimal_horizontal_position_set: minimal_horizontal_position = minimum
                 maximal_horizontal_position_set: maximal_horizontal_position = maximum

     set_icon (a_small_icon: WEL_ICON; a_big_icon: WEL_ICON)
                 -- Set the small (16x16) and the normal (32x32) icon for this window.
                 --
                 -- Note: Set a_small_icon to Void to remove the small icon and
                 --       a_big_icon to Void to remove the big icon.
                 -- (from WEL_COMPOSITE_WINDOW)

     set_max_mem (value: INTEGER)
                 -- Set the maximum amount of memory the run-time can allocate.
                 -- (from MEMORY)
           require -- from MEMORY
                 positive_value: value > 0

     set_memory_threshold (value: INTEGER)
                 -- Set a new memory_threshold in bytes. Whenever the memory
                 -- allocated for Eiffel reaches this value, an automatic
                 -- collection is performed.
                 -- (from MEMORY)
           require -- from MEMORY
                 positive_value: value > 0

     set_menu (a_menu: WEL_MENU)
                 -- Set menu with a_menu.
                 -- (from WEL_COMPOSITE_WINDOW)
           require -- from WEL_COMPOSITE_WINDOW
                 exists: exists
                 a_menu_not_void: a_menu /= void
                 a_menu_exists: a_menu.exists
           ensure -- from WEL_COMPOSITE_WINDOW
                 has_menu: has_menu
                 menu_set: menu.item = a_menu.item

     set_shared
                 -- Set shared to True.
                 -- (from WEL_ANY)
           ensure -- from WEL_ANY
                 shared: shared

     set_style (a_style: INTEGER)
                 -- Set style with a_style.
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists

     set_unshared
                 -- Set shared to False.
                 -- (from WEL_ANY)
           ensure -- from WEL_ANY
                 unshared: not shared

     set_vertical_position (position: INTEGER)
                 -- Set vertical_position with position.
                 -- (from WEL_COMPOSITE_WINDOW)
           require -- from WEL_COMPOSITE_WINDOW
                 exists: exists
                 scroller_exists: scroller /= void
                 position_small_enough: position <= maximal_vertical_position
                 position_large_enough: position >= minimal_vertical_position
           ensure -- from WEL_COMPOSITE_WINDOW
                 vertical_position_set: vertical_position = position

     set_vertical_range (minimum, maximum: INTEGER)
                 -- Set minimal_vertical_position and
                 -- maximal_vertical_position with minimum and
                 -- maximum.
                 -- (from WEL_COMPOSITE_WINDOW)
           require -- from WEL_COMPOSITE_WINDOW
                 exists: exists
                 scroller_exists: scroller /= void
                 consistent_range: minimum <= maximum
           ensure -- from WEL_COMPOSITE_WINDOW
                 minimal_vertical_position_set: minimal_vertical_position = minimum
                 maximal_vertical_position_set: maximal_vertical_position = maximum

     show
                 -- Show the window
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists

     unset_menu
                 -- Unset the current menu associated to the window.
                 -- (from WEL_COMPOSITE_WINDOW)
           require -- from WEL_COMPOSITE_WINDOW
                 exists: exists
           ensure -- from WEL_COMPOSITE_WINDOW
                 menu_unset: not has_menu

     update_cached_style (new_ex_style, old_ex_style: INTEGER)
                 -- Update Window cache buffer for Window style.
                 --
                 -- (from WEL_WINDOW)

     vertical_update (inc, position: INTEGER)
                 -- Update the window and the vertical scroll box with
                 -- inc and position.
                 -- (from WEL_COMPOSITE_WINDOW)
           require -- from WEL_COMPOSITE_WINDOW
                 exists: exists
                 position_small_enough: position <= maximal_vertical_position
                 position_large_enough: position >= minimal_vertical_position
           ensure -- from WEL_COMPOSITE_WINDOW
                 vertical_position_set: vertical_position = position
     
feature -- Element change

     has_system_window_locked: BOOLEAN
                 -- Is there any window locked ?
                 -- (from WEL_WINDOW)

     lock_window_update
                 -- Disables drawing in the current window. A locked window cannot be moved.
                 -- Only one window can be locked at a time. To unlock a window locked with
                 -- lock_window_update , call 'unlock_window_update'.
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists
           ensure -- from WEL_WINDOW
                 has_system_window_locked

     set_height (a_height: INTEGER)
                 -- Set height with a_height
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists

     set_item (an_item: POINTER)
                 -- Set item with an_item
                 -- (from WEL_ANY)
           ensure -- from WEL_ANY
                 item_set: item = an_item

     set_parent (a_parent: WEL_WINDOW)
                 -- Change the parent of the current window.
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists

     set_placement (a_placement: WEL_WINDOW_PLACEMENT)
                 -- Set placement with a_placement
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists
                 a_placement_not_void: a_placement /= void

     set_text (a_text: STRING)
                 -- Set the window text
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists
           ensure -- from WEL_WINDOW
                 text_set_when_not_void: a_text /= void implies equal (text, a_text)
                 text_set_when_void: a_text = void implies text.count = 0

     set_timer (timer_id, time_out: INTEGER)
                 -- Set a timer identified by timer_id with a
                 -- time_out value (in milliseconds).
                 -- See also on_timer, kill_timer.
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists
                 positive_timer_id: timer_id > 0
                 positive_time_out: time_out > 0

     set_width (a_width: INTEGER)
                 -- Set width with a_width
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists

     set_x (a_x: INTEGER)
                 -- Set x with a_x
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists

     set_y (a_y: INTEGER)
                 -- Set y with a_y
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists

     unlock_window_update
                 -- Unlock a locked window.
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists
     
feature -- Removal

     collect
                 -- Force a partial collection cycle if garbage
                 -- collection is enabled; do nothing otherwise.
                 -- (from MEMORY)

     free (object: ANY)
                 -- Free object, by-passing garbage collection.
                 -- Erratic behavior will result if the object is still
                 -- referenced.
                 -- (from MEMORY)

     full_coalesce
                 -- Coalesce the whole memory: merge adjacent free
                 -- blocks to reduce fragmentation. Useful, when
                 -- a lot of memory is allocated with garbage collector off.
                 -- (from MEMORY)

     full_collect
                 -- Force a full collection cycle if garbage
                 -- collection is enabled; do nothing otherwise.
                 -- (from MEMORY)

     mem_free (addr: POINTER)
                 -- Free memory of object at addr.
                 -- (Preferred interface is free.)
                 -- (from MEMORY)
     
feature -- Conversion

     to_integer: INTEGER
                 -- Converts item to an integer.
                 -- (from WEL_ANY)
           ensure -- from WEL_ANY
                 Result = cwel_pointer_to_integer (item)
     
feature -- Basic operations

     action (elf: WEL_ENUM_LOG_FONT; tm: WEL_TEXT_METRIC; font_type: INTEGER)
                 -- Called for each font found.
           require -- from WEL_FONT_FAMILY_ENUMERATOR
                 elf_not_void: elf /= void
                 tm_not_void: tm /= void

     activate
                 -- Activate the dialog.
                 -- (from WEL_MAIN_DIALOG)
           require -- from WEL_DIALOG
                 parent_exists: parent /= void implies parent.exists
                 not_exists: not exists
           require else -- from WEL_MAIN_DIALOG
                 not_exists: not exists

     bring_to_top
                 -- Bring this window to the top of the Z order.
                 --
                 -- Note:
                 --  * If the window is a top-level window, it is activated.
                 --  * If the window is a child window, the top-level parent window
                 --    associated with the child window is activated.
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists

     destroy
                 -- Terminate the dialog.
                 -- (from WEL_DIALOG)
           require -- from WEL_WINDOW
                 exists: exists
           ensure -- from WEL_WINDOW
                 not_exists: not exists

     disable_horizontal_scroll_bar
                 -- Disable the horizontal scroll bar.
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists

     disable_vertical_scroll_bar
                 -- Disable the vertical scroll bar.
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists

     dispose
                 -- Called when the main dialog is destroyed.

     draw_menu
                 -- Draw the menu bar associated with the window.
                 -- (from WEL_COMPOSITE_WINDOW)
           require -- from WEL_COMPOSITE_WINDOW
                 exists: exists
                 has_menu: has_menu

     enable_horizontal_scroll_bar
                 -- Enable the horizontal scroll bar.
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists

     enable_vertical_scroll_bar
                 -- Enable the vertical scroll bar.
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists

     finish_action
                 -- Called after the enumeration.
                 -- May be redefined to make special operations.
                 -- (from WEL_FONT_FAMILY_ENUMERATOR)

     hide_horizontal_scroll_bar
                 -- Hide the horizontal scroll bar.
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists

     hide_scroll_bars
                 -- Hide the horizontal and vertical scroll bars.
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists

     hide_vertical_scroll_bar
                 -- Hide the vertical scroll bar.
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists

     init_action
                 -- Called before the enumeration.
                 -- May be redefined to make special operations.
                 -- (from WEL_FONT_FAMILY_ENUMERATOR)

     insert_after (a_window: WEL_WINDOW)
                 -- Insert the current window after a_window.
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists
                 a_window_not_void: a_window /= void
                 a_window_not_current: a_window /= Current
                 a_window_exists: a_window.exists

     invalidate
                 -- Invalide the entire client area of the window. The
                 -- background will be erased before.
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists

     invalidate_rect (rect: WEL_RECT; erase_background: BOOLEAN)
                 -- Invalidate the area rect and erase
                 -- the background if erase_background is True.
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists
                 rect_not_void: rect /= void

     invalidate_region (region: WEL_REGION; erase_background: BOOLEAN)
                 -- Invalidate the area region and erase
                 -- the background if erase_background is True.
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists
                 region_not_void: region /= void
                 region_exists: region.exists

     invalidate_without_background
                 -- Invalidate the entire client area of the window. The
                 -- background will not be erased.
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists

     kill_timer (timer_id: INTEGER)
                 -- Kill the timer identified by timer_id.
                 -- See also set_timer, on_timer.
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists
                 positive_timer_id: timer_id > 0

     move (a_x, a_y: INTEGER)
                 -- Move the window to a_x, a_y position.
                 -- (from WEL_COMPOSITE_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists

     move_absolute (a_x, a_y: INTEGER)
                 -- Move the window to a_x, a_y absolute position.
                 -- (from WEL_COMPOSITE_WINDOW)
           require -- from WEL_COMPOSITE_WINDOW
                 exists: exists

     move_and_resize (a_x, a_y, a_width, a_height: INTEGER; repaint: BOOLEAN)
                 -- Move the window to a_x, a_y position and
                 -- resize it with a_width, a_height.
                 -- (from WEL_COMPOSITE_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists

     notify (control: WEL_CONTROL; notify_code: INTEGER)
                 -- Set the text font with the new font selected
                 -- by the user.
           require -- from WEL_COMPOSITE_WINDOW
                 exists: exists
                 control_not_void: control /= void
                 control_exists: control.exists

     on_abort
                 -- Button Abort has been pressed.
                 -- (from WEL_DIALOG)
           require -- from WEL_DIALOG
                 exists: exists

     on_cancel
                 -- Button Cancel has been pressed.
                 -- (from WEL_DIALOG)
           require -- from WEL_DIALOG
                 exists: exists

     on_control_id_command (control_id: INTEGER)
                 -- Destroy application when Close button is pushed.
           require -- from WEL_COMPOSITE_WINDOW
                 exists: exists

     on_ignore
                 -- Button Ignore has been pressed.
                 -- (from WEL_DIALOG)
           require -- from WEL_DIALOG
                 exists: exists

     on_no
                 -- Button No has been pressed.
                 -- (from WEL_DIALOG)
           require -- from WEL_DIALOG
                 exists: exists

     on_ok
                 -- Button Ok has been pressed.
                 -- (from WEL_DIALOG)
           require -- from WEL_DIALOG
                 exists: exists

     on_retry
                 -- Button Retry has been pressed.
                 -- (from WEL_DIALOG)
           require -- from WEL_DIALOG
                 exists: exists

     on_yes
                 -- Button Yes has been pressed.
                 -- (from WEL_DIALOG)
           require -- from WEL_DIALOG
                 exists: exists

     put_command (a_command: WEL_COMMAND; message: INTEGER; argument: ANY)
                 -- Put a_command associated to message.
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 a_command_not_void: a_command /= void
                 positive_message: message >= 0
           ensure -- from WEL_WINDOW
                 command_added: command (message) = a_command and command_argument (message) = argument

     remove_command (message: INTEGER)
                 -- Remove the command associated to message.
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 positive_message: message >= 0
                 command_exists: command_exists (message)
           ensure -- from WEL_WINDOW
                 command_removed: not command_exists (message)

     resize (a_width, a_height: INTEGER)
                 -- Resize the window with a_width, a_height.
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists

     scroll (a_x, a_y: INTEGER)
                 -- Scroll the contents of the window's client area.
                 -- a_x and a_y specify the amount of horizontal
                 -- and vertical scrolling.
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists

     set_class_icon (new_icon: WEL_ICON)
                 -- Replace the current icon for the class which this window
                 -- belongs to.
                 --
                 -- The SetClassLong function replaces the specified 32-bit (long)
                 -- value at the specified offset into the extra class memory
                 -- or the WNDCLASSEX structure for the class to which the
                 -- specified window belongs.
                 -- (from WEL_WINDOW)

     set_class_small_icon (new_icon: WEL_ICON)
                 -- Replace the current icon for the class which this window
                 -- belongs to.
                 --
                 -- The SetClassLong function replaces the specified 32-bit (long)
                 -- value at the specified offset into the extra class memory
                 -- or the WNDCLASSEX structure for the class to which the
                 -- specified window belongs.
                 -- (from WEL_WINDOW)

     set_z_order (z_order: POINTER)
                 -- Set the z-order of the window.
                 -- See class WEL_HWND_CONSTANTS for z_order values.
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists
                 valid_hwnd_constant: valid_hwnd_constant (z_order)

     setup_dialog
                 -- Fill the list box with the fonts.
           require -- from WEL_DIALOG
                 exists: exists

     show_horizontal_scroll_bar
                 -- Show the horizontal scroll bar.
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists

     show_scroll_bars
                 -- Show the horizontal and vertical scroll bars.
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists

     show_vertical_scroll_bar
                 -- Show the vertical scroll bar.
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists

     show_with_option (cmd_show: INTEGER)
                 -- Set the window's visibility with cmd_show.
                 -- See class WEL_SW_CONSTANTS for cmd_show value.
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists
                 parent_shown: parent /= void implies parent.exists and parent.shown

     terminate (a_result: INTEGER)
                 -- Terminate the dialog with a_result.
                 -- result_id will contain a_result.
                 -- (from WEL_MODELESS_DIALOG)
           require -- from WEL_DIALOG
                 exists: exists
           ensure -- from WEL_DIALOG
                 result_id_set: result_id = a_result

     update
                 -- Update the client area by sending a Wm_paint message.
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists

     validate_rect (rect: WEL_RECT)
                 -- Validate the area rect.
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists
                 rect_not_void: rect /= void

     validate_region (region: WEL_REGION)
                 -- Validate the area region.
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists
                 region_not_void: region /= void
                 region_exists: region.exists

     win_help (help_file: STRING; a_command, data: INTEGER)
                 -- Start the Windows Help program with help_file.
                 -- a_command specifies the type of help requested. See
                 -- class WEL_HELP_CONSTANTS for a_command values.
                 -- 'data' is depandant on 'a_command'.  Check MSDN for more details.
                 -- (from WEL_WINDOW)
           require -- from WEL_WINDOW
                 exists: exists
                 help_file_not_void: help_file /= void
     
feature -- Element Change

     set_default_processing (value: BOOLEAN)
                 -- Enable or disable default processing of window messages.
                 -- (from WEL_RETURN_VALUE)
           ensure -- from WEL_RETURN_VALUE
                 value_set: default_processing = value

     set_message_return_value (value: INTEGER)
                 -- Set the window-procedure-return-value.
                 -- (from WEL_RETURN_VALUE)
           ensure -- from WEL_RETURN_VALUE
                 has_return_value: has_return_value
                 value_set: message_return_value = value
     
invariant

           -- from ANY
     reflexive_equality: standard_is_equal (Current)
     reflexive_conformance: conforms_to (Current)

end -- class MAIN_DIALOG

-- Generated by ISE Eiffel --

-- For more details: www.eiffel.com --