/***************************************************************************
                            KIconButton.h -  description
                             -------------------
    begin                : Fri Mar  8 13:55:08 2002
    copyright            : (C) 2000-2002 Lost Highway Ltd. All rights reserved.
    email                : Lost_Highway@tipitina.demon.co.uk
    generated by         : duke@tipitina on Fri Mar  8 13:55:08 2002, using kalyptus 0.9.
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This library is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU Library General Public License as       *
 *   published by the Free Software Foundation; either version 2 of the    *
 *   License, or (at your option) any later version.                       *
 *                                                                         *
 ***************************************************************************/

#ifndef KICONBUTTON_H
#define KICONBUTTON_H

#include <Foundation/NSObject.h>
#include <Foundation/NSString.h>
#include <qtobjc/QPushButton.h>

/**

 A pushbutton for choosing an icon. Pressing on the button will open a
 KIconDialog for the user to select an icon. The current icon will be
 displayed on the button.

 @short A push button that allows selection of an icon.
 
*/
@class KIconLoader; 

@interface KIconButton : QPushButton 

/** 
 Constructs a KIconButton using the global iconloader.
     
*/
- initWithWidget: (QWidget *)parent name: (NSString *)name;
- init;

/** 
 Constructs a KIconButton using a specific KIconLoader.
     
*/
- initWithIconLoader: (KIconLoader*)loader parent: (QWidget *)parent name: (NSString *)name;
- initWithIconLoader: (KIconLoader*)loader parent: (QWidget *)parent ;

/** 
 Destructs the button.
     
*/
- (void) dealloc;

/** 
 Sets a strict icon size policy for allowed icons. When true,
 only icons of the specified group's size in setIconType are allowed,
 and only icons of that size will be shown in the icon dialog.
     
*/
- setStrictIconSize: (BOOL)b;

/** 
 Returns true if a strict icon size policy is set.
     
*/
- (BOOL) strictIconSize;

/** 
 Sets the icon group and context. Use -[KIcon NoGroup]if you want to
 allow icons for any group in the given context.
     
*/
- setIconType: (int)group context: (int)context user: (BOOL)user;
- setIconType: (int)group context: (int)context ;

/** 
 Sets the button's initial icon.
     
*/
- setIcon: (NSString *)icon;

/** 
 Resets the icon (reverts to an empty button).
     
*/
- resetIcon;

/** 
 Returns the name of the selected icon.
     
*/
- (NSString *) icon;
@end

/** Override these methods in subclasses of KIconButton to customise event handling behaviour */
@protocol KIconButtonEventHandling
- keyPressEvent:(QKeyEvent*) arg1;
- keyReleaseEvent:(QKeyEvent*) arg1;
- focusOutEvent:(QFocusEvent*) arg1;
- childEvent:(QChildEvent*) arg1;
- dragMoveEvent:(QDragMoveEvent*) arg1;
- leaveEvent:(QEvent*) arg1;
- tabletEvent:(QTabletEvent*) arg1;
- showEvent:(QShowEvent*) arg1;
- contextMenuEvent:(QContextMenuEvent*) arg1;
- mousePressEvent:(QMouseEvent*) arg1;
- imComposeEvent:(QIMEvent*) arg1;
- customEvent:(QCustomEvent*) arg1;
- mouseReleaseEvent:(QMouseEvent*) arg1;
- mouseDoubleClickEvent:(QMouseEvent*) arg1;
- dragLeaveEvent:(QDragLeaveEvent*) arg1;
- enterEvent:(QEvent*) arg1;
- focusInEvent:(QFocusEvent*) arg1;
- imEndEvent:(QIMEvent*) arg1;
- dropEvent:(QDropEvent*) arg1;
- dragEnterEvent:(QDragEnterEvent*) arg1;
- mouseMoveEvent:(QMouseEvent*) arg1;
- moveEvent:(QMoveEvent*) arg1;
- wheelEvent:(QWheelEvent*) arg1;
- hideEvent:(QHideEvent*) arg1;
- imStartEvent:(QIMEvent*) arg1;
- closeEvent:(QCloseEvent*) arg1;
- paintEvent:(QPaintEvent*) arg1;
- timerEvent:(QTimerEvent*) arg1;
- resizeEvent:(QResizeEvent*) arg1;
@end


#endif
