#
#  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.
#
# $Id: Window.cls,v 1.22 2004/12/14 11:13:09 dk Exp $

object Prima::Window( Prima::Widget)
{
   Handle   menu;
   Font     menuFont;
   ColorSet menuColor;
   int      modal;
   int      modalResult;

   property int      borderIcons;
   property int	     borderStyle;
   property Bool     focused;
   property Point    frameOrigin;
   property Point    frameSize;
   property Handle   icon;
   property Handle   menu;
   property Color    menuColorIndex( int index);
   property SV *     menuItems;
   property Bool     modalHorizon;
   property int      modalResult;
   property Bool     onTop;
   property Point    origin;
   property Bool     ownerIcon;
   property Rect     rect;
   property Bool     selected;
   property Point    size;
   property Bool     taskListed;
   property SV *     text;
   property Bool     transparent;
   property int      windowState;

   method   void     cancel();
   method   void     cleanup();
   method   void     end_modal();
   method   int      execute( Handle insertBefore = nilHandle);
   method   Bool     execute_shared( Handle insertBefore = nilHandle);
   static   Font     get_default_menu_font( char * dummy = "");
   method   Handle   get_horizon();
   method   Font     get_menu_font();
   method   int      get_modal();
   method   Handle   get_modal_window( int modalFlag = mtExclusive, Bool next = true);
   c_only   void     handle_event ( PEvent event);
   method   void     init( HV * profile);
   import   SV *     notification_types();
   method   void     ok();
   c_only   Bool     process_accel( int key);
   import   SV *     profile_default ();
   method   void     set( HV * profile);
   method   void     set_menu_font( Font font);
   c_only   void     update_sys_handle( HV * profile);
   c_only   Bool     validate_owner( Handle * newOwner, HV * profile);
# private
   Handle   nextExclModal;
   Handle   prevExclModal;
   Handle   nextSharedModal;
   Handle   prevSharedModal;
   Handle   topSharedModal;
   c_only   void    exec_enter_proc( Bool sharedExec, Handle insertBefore);
   c_only   void    exec_leave_proc();
   c_only   void    cancel_children();
}
