#
# Copyright (c) 1997-2002 The Protein Laboratory, University of Copenhagen
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
#
# Main widget description
#
# $Id$
object Prima::Widget( Prima::Drawable)
{
# user variables
Handle accelTable; # accelerator table
Handle currentWidget; # current widget pointer
int cursorLock; # cursor lock count
NPoint designScale; # font width and height for view design
char * helpContext; # help context string
char * hint; # hint tag text
int lockCount; # lock count
Font popupFont; # font for popup menu
ColorSet popupColor; # colors for popup menu
Handle popupMenu; # popup menu by default
int pointerType; # pointer type, crXXX
Point pos; # last position
int selectingButtons; # which mouse buttons can select a view
Point sizeMin; # default min size
Point sizeMax; # default max size
int tabOrder; # tab ordering number
char * text; # caption text
int widgetClass; # predefined system class
List widgets; # list of child widgets
Handle * enum_lists; # list of currently running enumerators
# geometry managers data
# common:
int geometry; # geometry manager, gtXXX
Point geomSize; # requested size, common to all managers
GeomInfo geomInfo; # managers options
# growMode:
int growMode; # growing flags, see gmGrowXXX
Point virtualSize; # fictive size not aware of size limits
# pack:
Handle packSlaves; # first pack slave in linked list
# place
Handle placeSlaves; # first place slave in linked list
# properties
property SV * accelItems;
property Handle accelTable;
property Bool autoEnableChildren;
property Color backColor;
property int bottom;
property Bool briefKeys;
property Bool buffered;
property Bool clipOwner;
property Color color;
property Color colorIndex( int index);
property Bool current;
property Handle currentWidget;
property Point cursorPos;
property Point cursorSize;
property Bool cursorVisible;
property NPoint designScale;
property Bool enabled;
property int geometry;
property int geomHeight;
property Point geomSize;
property int geomWidth;
property int growMode;
property Bool firstClick;
property Bool focused;
property SV * helpContext;
property SV * hint;
property int hintVisible;
property int left;
property Handle popup;
property SV * popupItems;
property Bool ownerBackColor;
property Bool ownerColor;
property Bool ownerFont;
property Bool ownerHint;
property Bool ownerShowHint;
property Bool ownerPalette;
property Point origin;
property SV * packInfo;
property SV * palette;
property SV * placeInfo;
property Point pointerHotSpot;
property Handle pointerIcon;
property Point pointerPos;
property int pointerType;
property Color popupColorIndex( int index);
property Bool packPropagate;
property Rect rect;
property int right;
property Bool scaleChildren;
property Bool selectable;
property Bool selected;
property Handle selectedWidget;
property int selectingButtons;
property Handle shape;
property Bool showHint;
property Point size;
property Point sizeMax;
property Point sizeMin;
property Bool syncPaint;
property int tabOrder;
property Bool tabStop;
property SV * text;
property int top;
property Bool transparent;
property Bool visible;
property int widgetClass;
# direct call methods
method void attach( Handle objectHandle);
method Bool begin_paint();
method Bool begin_paint_info();
method void bring_to_front();
method Bool can_close();
method void cleanup();
public void client_to_screen();
method Bool close();
c_only Bool custom_paint();
method void detach( Handle objectHandle, Bool kill);
method void done();
method void end_paint();
method void end_paint_info();
method Bool exposed() => apc_widget_is_exposed;
static SV *fetch_resource( char *className, char *name, char *classRes, char *res, Handle owner, int resType = frString);
method Handle first();
c_only Handle first_that( void * actionProc, void * params);
c_only void handle_event ( PEvent event);
method void hide();
method void hide_cursor();
import Bool help();
method void init( HV * profile);
method void insert_behind( Handle view);
method void invalidate_rect( Rect rect);
c_only Bool is_child( Handle possibleOwner);
method void key_event( int command, int code, int key = kbNoKey, int mod = 0, int repeat = 1, Bool post = 0);
method Handle last();
method Bool lock();
method Color map_color( Color color) => apc_widget_map_color;
method void mouse_event( int command = cmMouseDown, int button = mbLeft, int mod = 0, int x = 0, int y = 0, Bool dblclk = 0, Bool post = 0);
method Handle next();
method Handle next_tab( Bool forward = true);
method Handle next_positional( int dx, int dy);
import SV * notification_types();
method void post_message( SV * info1, SV * info2);
c_only Bool process_accel( int key);
import SV * profile_default ();
method Handle prev();
method void repaint();
method Bool responsive() => apc_widget_is_responsive;
public void screen_to_client();
public void scroll( int dx, int dy, Rect *confine, Rect *clip, Bool withChildren);
method void send_to_back();
method void set( HV * profile);
method void setup();
method void show();
method void show_cursor();
method Bool showing() => apc_widget_is_showing;
method Bool unlock();
method void update_view();
c_only void update_sys_handle( HV * profile);
c_only Bool validate_owner( Handle * newOwner, HV * profile);
method Bool validate_rect( Rect rect) => apc_widget_validate_rect;
# properties read methods
method Bool get_capture() => apc_widget_is_captured;
static Font get_default_font( char * dummy = "");
static Font get_default_popup_font( char * dummy = "");
method Rect get_invalid_rect() => apc_widget_get_invalid_rect;
method SV * get_handle();
method Bool get_locked();
method int get_mouse_state() => apc_pointer_get_state;
public void get_pack_slaves();
method Handle get_parent();
method SV * get_parent_handle();
public void get_place_slaves();
static Point get_pointer_size( char * dummy = "");
method Font get_popup_font();
c_only Handle get_selectee();
method int get_shift_state() => apc_kbd_get_state;
method Point get_virtual_size();
public void get_widgets();
# properties write methods
method void set_capture( Bool capture, Handle confineTo = nilHandle);
method void set_centered( Bool x, Bool y);
method void set_font( Font font);
method void set_popup_font( Font font);
# other
method void on_paint( SV * canvas);
}