Browse Source

+ Linux linefeeds

michael 23 years ago
parent
commit
25452a097f
2 changed files with 13219 additions and 13219 deletions
  1. 12082 12082
      packages/extra/fpgtk/fpgtk.pp
  2. 1137 1137
      packages/extra/fpgtk/fpgtkext.pp

+ 12082 - 12082
packages/extra/fpgtk/fpgtk.pp

@@ -1,12082 +1,12082 @@
-{$mode objfpc}{$h+} {$ifdef win32}{$define gtkwin}{$endif}
-UNIT FPgtk;
-
-// Generated with GtkWrite by Luk Vandelaer (version 1.08)
-
-INTERFACE
-
-USES classes, sysutils, gtk, gdk, glib, FPglib;
-
-TYPE
-
-  TFPgtkObject = class;
-  TFPgtkData = class;
-  TFPgtkAdjustment = class;
-  TFPgtkToolTips = class;
-  TFPgtkWidget = class;
-  TFPgtkGroup = class;
-  TFPgtkWidgetGroup = class;
-  TFPgtkMisc = class;
-  TFPgtkLabel = class;
-  TFPgtkAccelLabel = class;
-  TFPgtkTipsQuery = class;
-  TFPgtkArrow = class;
-  TFPgtkImage = class;
-  TFPgtkPixmap = class;
-  TFPgtkContainer = class;
-  TFPgtkBin = class;
-  TFPgtkAlignment = class;
-  TFPgtkFrame = class;
-  TFPgtkAspectFrame = class;
-  TFPgtkButton = class;
-  TFPgtkToggleButton = class;
-  TFPgtkCheckButton = class;
-  TFPgtkRadioButton = class;
-  TFPgtkRadioButtonGroup = class;
-  TFPgtkOptionMenu = class;
-  TFPgtkItem = class;
-  TFPgtkItemGroup = class;
-  TFPgtkMenuItem = class;
-  TFPgtkCheckMenuItem = class;
-  TFPgtkRadioMenuItem = class;
-  TFPgtkRadioMenuGroup = class;
-  TFPgtkTearOffMenuItem = class;
-  TFPgtkListItem = class;
-  TFPgtkListItemGroup = class;
-  TFPgtkTreeItem = class;
-  TFPgtkWindow = class;
-  TFPgtkColorSelectionDialog = class;
-  TFPgtkDialog = class;
-  TFPgtkInputDialog = class;
-  TFPgtkFileSelection = class;
-  TFPgtkFontSelectionDialog = class;
-  TFPgtkEventBox = class;
-  TFPgtkHandleBox = class;
-  TFPgtkScrolledWindow = class;
-  TFPgtkViewport = class;
-  TFPgtkBox = class;
-  TFPgtkButtonBox = class;
-  TFPgtkHButtonBox = class;
-  TFPgtkVButtonBox = class;
-  TFPgtkVBox = class;
-  TFPgtkColorSelection = class;
-  TFPgtkGammaCurve = class;
-  TFPgtkHBox = class;
-  TFPgtkCombo = class;
-  TFPgtkStatusbar = class;
-  TFPgtkCList = class;
-  TFPgtkCTree = class;
-  TFPgtkFixed = class;
-  TFPgtkNotebook = class;
-  TFPgtkFontSelection = class;
-  TFPgtkPaned = class;
-  TFPgtkHPaned = class;
-  TFPgtkVPaned = class;
-  TFPgtkLayout = class;
-  TFPgtkList = class;
-  TFPgtkMenuShell = class;
-  TFPgtkMenuBar = class;
-  TFPgtkMenu = class;
-  TFPgtkPacker = class;
-  TFPgtkTable = class;
-  TFPgtkToolbar = class;
-  TFPgtkTree = class;
-  TFPgtkCalendar = class;
-  TFPgtkDrawingArea = class;
-  TFPgtkCurve = class;
-  TFPgtkEditable = class;
-  TFPgtkEntry = class;
-  TFPgtkSpinButton = class;
-  TFPgtkText = class;
-  TFPgtkRuler = class;
-  TFPgtkHRuler = class;
-  TFPgtkVRuler = class;
-  TFPgtkRange = class;
-  TFPgtkScale = class;
-  TFPgtkHScale = class;
-  TFPgtkVScale = class;
-  TFPgtkScrollbar = class;
-  TFPgtkHScrollbar = class;
-  TFPgtkVScrollbar = class;
-  TFPgtkSeparator = class;
-  TFPgtkHSeparator = class;
-  TFPgtkVSeparator = class;
-  TFPgtkPreview = class;
-  TFPgtkProgress = class;
-  TFPgtkProgressBar = class;
-  TFPgtkItemFactory = class;
-
-  TFPgtkSignalFunction = procedure (Sender:TFPgtkObject; Data:pointer) of Object;
-  TFPgtkBooleanSignalFunction = procedure (Sender:TFPgtkObject; Bool:boolean; data:pointer) of Object;
-  FPgtkException = class (Exception) end;
-  PPascalClassData = ^TPascalClassData;
-  TPascalClassData = record
-    TheInstance : TFPgtkObject;
-  end;
-  PSignalData = ^TSignalData;
-  TSignalData = record
-    TheData : pointer;
-    TheWidget : TFPgtkObject;
-    TheSignalProc : TFPgtkSignalFunction;
-  end;
-  TDestroyState = (dsAlive, dsWaiting, dsDestroying);
-  TFPgtkObjectClass = Class of TFPgtkObject;
-
-  PFPgtkObject = ^TFPgtkObject;
-  TFPgtkObject = class
-  Private
-    FDestroying : TDestroyState;
-    PascalInstance:TPascalClassData;
-    ConvertDatas:TStringList;
-    SignalDatas:TList;
-    NotifyList:TList;
-    function ConvertSignalData (proc:TFPgtkSignalFunction; data:pointer; FreeIt:boolean) : PSignalData;
-    procedure FreeClass (Sender:TFPgtkObject; Data:pointer);
-    procedure CheckConvertDatas;
-    procedure CheckNotifyList;
-    procedure InitCreate;
-    procedure FinalCreate;
-    function GetUserData : pointer;
-    procedure SetUserData (TheValue : pointer);
-  Protected
-    FGtkObject:PGtkObject;
-    procedure CreateGtkObject; Virtual; Abstract;
-    procedure NotifyDestroy (AnObject:TFPgtkObject); Virtual;
-  Public
-    function TheGtkObject : PGtkObject;
-    function SignalConnect (Signal:string; Proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function SignalConnectAfter (Signal:string; Proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function BooleanSignalConnect (Signal:string; Proc:TFPgtkBooleanSignalFunction; data:pointer) : guint;
-    function BooleanSignalConnectAfter (Signal:string; Proc:TFPgtkBooleanSignalFunction; data:pointer) : guint;
-    constructor Create;
-    constructor CreateFromObject (GtkObject:PGtkObject);
-    property Destroying : TDestroyState read FDestroying;
-    procedure AskNotification (AnObject:TFPgtkObject);
-    destructor Destroy; Override;
-    function ConnectDestroy (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectAfterDestroy (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    procedure SignalDisconnect (SignalHandler:guint);
-    procedure SignalBlockHandler (SignalHandler:guint);
-    procedure SignalUnblockHandler (SignalHandler:guint);
-    procedure SignalEmit (aName:string; Args:array of const);
-    function SignalNEmissions (aName:string) : guint;
-    procedure SignalEmitStop (aName:string);
-    procedure SetData (Key:string; Data:pointer);
-    property UserData : pointer read GetUserData write SetUserData;
-    procedure SetDataFull (Key:string; Data:pointer; Destroyer:TFPgtkSignalFunction);
-    procedure RemoveData (Key:string);
-    function GetData (Key:string) : pointer;
-    function GtkDestroyed : boolean;
-    procedure Constructed;
-    procedure ConstructedDefault;
-    procedure Sink;
-    procedure Ref;
-    procedure Unref;
-    procedure WeakRef (Notify:TFPgtkSignalFunction; data:pointer);
-    procedure WeakUnref (notify:TFPgtkSignalFunction; data:pointer);
-  end;
-
-
-  TFPgtkData = class (TFPgtkObject)
-  Public
-    function TheGtkObject : PGtkData;
-    function ConnectDisconnect (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectAfterDisconnect (proc:TFPgtkSignalFunction; data:pointer) : guint;
-  end;
-
-
-  TFPgtkAdjustment = class (TFPgtkData)
-  Private
-    function GetValue : gfloat;
-    procedure SetValue (TheValue : gfloat);
-    function GetLower : gfloat;
-    procedure SetLower (TheValue : gfloat);
-    function GetUpper : gfloat;
-    procedure SetUpper (TheValue : gfloat);
-    function GetStepIncrement : gfloat;
-    procedure SetStepIncrement (TheValue : gfloat);
-    function GetPageIncrement : gfloat;
-    procedure SetPageIncrement (TheValue : gfloat);
-    function GetPageSize : gfloat;
-    procedure SetPageSize (TheValue : gfloat);
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkAdjustment;
-    procedure Configure (aLower:gfloat; anUpper:gfloat; aValue:gfloat; aStepInc:gfloat; aPageInc:gfloat; aPageSize:gfloat);
-    function ConnectValueChanged (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectAfterValueChanged (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectChanged (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectAfterChanged (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    procedure ValueChanged;
-    procedure Changed;
-    procedure ClampPage (aLower:gfloat; aUpper:gfloat);
-    property Value : gfloat read GetValue write SetValue;
-    property Lower : gfloat read GetLower write SetLower;
-    property Upper : gfloat read GetUpper write SetUpper;
-    property StepIncrement : gfloat read GetStepIncrement write SetStepIncrement;
-    property PageIncrement : gfloat read GetPageIncrement write SetPageIncrement;
-    property PageSize : gfloat read GetPageSize write SetPageSize;
-  end;
-
-
-  TFPgtkToolTips = class (TFPgtkData)
-  Private
-    function GetEnabled : boolean;
-    procedure SetEnabled (TheValue : boolean);
-    function GetDelay : integer;
-    procedure SetDelay (TheValue : integer);
-    function GetColorForeground : PGdkColor;
-    procedure SetColorForeground (TheValue : PGdkColor);
-    function GetColorBackground : PGdkColor;
-    procedure SetColorBackground (TheValue : PGdkColor);
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkToolTips;
-    procedure SetColors (Fore:PGdkColor; Back:PGdkColor);
-    procedure SetTip (Widget:TFPgtkWidget; TipText:string; TipPrivate:string);
-    property Enabled : boolean read GetEnabled write SetEnabled;
-    property Delay : integer read GetDelay write SetDelay;
-    property ColorForeground : PGdkColor read GetColorForeground write SetColorForeground;
-    property ColorBackground : PGdkColor read GetColorBackground write SetColorBackground;
-    procedure ForceWindow;
-  end;
-
-  TFPgtkWidgetSignalFunction = procedure (Sender:TFPgtkObject; Widget:TFPgtkWidget; Data:pointer) of Object;
-  TFPgtkEventFunction = function (Sender:TFPgtkWidget; Event:PGdkEvent; data:pointer): boolean of Object;
-  TFPgtkEventButtonFunction = function (Sender:TFPgtkWidget; Event:PGdkEventButton; data:pointer): boolean of Object;
-  TFPgtkEventMotionFunction = function (Sender:TFPgtkWidget; Event:PGdkEventMotion; data:pointer): boolean of Object;
-  TFPgtkEventExposeFunction = function (Sender:TFPgtkWidget; Event:PGdkEventExpose; data:pointer): boolean of Object;
-  TFPgtkEventKeyFunction = function (Sender:TFPgtkWidget; Event:PGdkEventKey; data:pointer): boolean of Object;
-  TFPgtkEventCrossingFunction = function (Sender:TFPgtkWidget; Event:PGdkEventCrossing; data:pointer): boolean of Object;
-  TFPgtkEventConfigureFunction = function (Sender:TFPgtkWidget; Event:PGdkEventConfigure; data:pointer): boolean of Object;
-  TFPgtkEventFocusFunction = function (Sender:TFPgtkWidget; Event:PGdkEventFocus; data:pointer): boolean of Object;
-  TFPgtkEventPropertyFunction = function (Sender:TFPgtkWidget; Event:PGdkEventProperty; data:pointer): boolean of Object;
-  TFPgtkEventSelectionFunction = function (Sender:TFPgtkWidget; Event:PGdkEventSelection; data:pointer): boolean of Object;
-  TFPgtkEventProximityFunction = function (Sender:TFPgtkWidget; Event:PGdkEventProximity; data:pointer): boolean of Object;
-  TFPgtkEventClientFunction = function (Sender:TFPgtkWidget; Event:PGdkEventClient; data:pointer): boolean of Object;
-  TFPgtkEventNoExposeFunction = function (Sender:TFPgtkWidget; Event:PGdkEventNoExpose; data:pointer): boolean of Object;
-
-  TFPgtkWidget = class (TFPgtkObject)
-  Private
-    function GetTheGtkWidget : PGtkWidget;
-    procedure SetTheGtkWidget (TheValue : PGtkWidget);
-    function GetAllocation : TGtkAllocation;
-    function GetName : string;
-    procedure SetName (TheValue : string);
-    function GetPropFlags : longint;
-    procedure SetPropFlags (TheValue : longint);
-    function GetState : longint;
-    function GetSavedState : longint;
-    function GetParent : TFPgtkWidget;
-    procedure SetParent (TheValue : TFPgtkWidget);
-    function GetParentWindow : PGdkWindow;
-    procedure SetParentWindow (TheValue : PGdkWindow);
-    procedure Reparent (NewParent:TFPgtkWidget);
-    function GetVisible : boolean;
-    procedure SetVisible (TheValue : boolean);
-    function GetNoWindow : boolean;
-    procedure SetNoWindow (TheValue : boolean);
-    function GetRealized : boolean;
-    procedure SetRealized (TheValue : boolean);
-    function GetMapped : boolean;
-    procedure SetMapped (TheValue : boolean);
-    function GetDrawable : boolean;
-    function GetIsSensitive : boolean;
-    function GetSensitive : boolean;
-    procedure SetSensitive (TheValue : boolean);
-    function GetParentSensitive : boolean;
-    procedure SetParentSensitive (TheValue : boolean);
-    function GetAppPaintable : boolean;
-    function GetCanFocus : boolean;
-    procedure SetCanFocus (TheValue : boolean);
-    function GetHasFocus : boolean;
-    function GetCanDefault : boolean;
-    procedure SetCanDefault (TheValue : boolean);
-    function GetHasDefault : boolean;
-    function GetReceivesDefault : boolean;
-    function GetCompositeChild : boolean;
-    function GetTooltip : string;
-    procedure SetTooltip (TheValue : string);
-    function GetColormap : PGdkColormap;
-    procedure SetColormap (TheValue : PGdkColormap);
-  Protected
-    procedure SetFlags (NewFlags:longint);
-    procedure UnsetFlags (NewUnsetFlags:longint);
-    procedure Map;
-    procedure Unmap;
-    procedure QueueDraw;
-    procedure QueueResize;
-    procedure DrawFocus;
-    procedure DrawDefault;
-  Public
-    function TheGtkObject : PGtkWidget;
-    property TheGtkWidget : PGtkWidget read GetTheGtkWidget write SetTheGtkWidget;
-    function WidgetSignalConnect (Signal:string; Proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-    function WidgetSignalConnectAfter (Signal:string; Proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-    procedure Draw (Rectangle:PGdkRectangle); Overload;
-    procedure Show;
-    procedure Hide;
-    procedure Realize;
-    procedure Unrealize;
-    procedure ShowNow;
-    procedure ShowAll;
-    procedure HideAll;
-    procedure SetAllocation (AnAllocation:TGtkAllocation); Overload;
-    procedure SetAllocation (x:integer; y:integer; width:integer; height:integer); Overload;
-    property Allocation : TGtkAllocation read GetAllocation write SetAllocation;
-    procedure SetUPosition (x:integer; y:integer);
-    procedure SetUsize (width:integer; height:integer);
-    property Name : string read GetName write SetName;
-    property Flags : longint read GetPropFlags write SetPropFlags;
-    property State : longint read GetState;
-    property SavedState : longint read GetSavedState;
-    property Parent : TFPgtkWidget read GetParent write SetParent;
-    property ParentWindow : PGdkWindow read GetParentWindow write SetParentWindow;
-    procedure Unparent;
-    property Visible : boolean read GetVisible write SetVisible;
-    property NoWindow : boolean read GetNoWindow write SetNoWindow;
-    property Realized : boolean read GetRealized write SetRealized;
-    property Mapped : boolean read GetMapped write SetMapped;
-    property Drawable : boolean read GetDrawable;
-    property IsSensitive : boolean read GetIsSensitive;
-    property Sensitive : boolean read GetSensitive write SetSensitive;
-    property ParentSensitive : boolean read GetParentSensitive write SetParentSensitive;
-    property AppPaintable : boolean read GetAppPaintable;
-    property CanFocus : boolean read GetCanFocus write SetCanFocus;
-    procedure GrabFocus;
-    property HasFocus : boolean read GetHasFocus;
-    property CanDefault : boolean read GetCanDefault write SetCanDefault;
-    procedure GrabDefault;
-    property HasDefault : boolean read GetHasDefault;
-    property ReceivesDefault : boolean read GetReceivesDefault;
-    property CompositeChild : boolean read GetCompositeChild;
-    property Tooltip : string read GetTooltip write SetTooltip;
-    procedure HideOnDelete;
-    property Colormap : PGdkColormap read GetColormap write SetColormap;
-    function ConnectShow (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectAfterShow (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function Connecthide (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectAfterhide (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function Connectmap (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectAftermap (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function Connectunmap (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectAfterunmap (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function Connectrealize (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectAfterrealize (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function Connectunrealize (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectAfterunrealize (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectDrawFocus (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectAfterDrawFocus (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectDrawDefault (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectAfterDrawDefault (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectParentSet (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-    function ConnectAfterParentSet (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-    function ConnectGrabFocus (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectAfterGrabFocus (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function EventConnect (Signal:string; Proc:TFPgtkEventFunction; data:pointer) : guint;
-    function EventConnectAfter (Signal:string; Proc:TFPgtkEventFunction; data:pointer) : guint;
-    function ConnectEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
-    function ConnectAfterEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
-    function EventButtonConnect (Signal:string; Proc:TFPgtkEventButtonFunction; data:pointer) : guint;
-    function EventButtonConnectAfter (Signal:string; Proc:TFPgtkEventButtonFunction; data:pointer) : guint;
-    function ConnectButtonPressEvent (proc:TFPgtkEventButtonFunction; data:pointer) : guint;
-    function ConnectAfterButtonPressEvent (proc:TFPgtkEventButtonFunction; data:pointer) : guint;
-    function ConnectButtonReleaseEvent (proc:TFPgtkEventButtonFunction; data:pointer) : guint;
-    function ConnectAfterButtonReleaseEvent (proc:TFPgtkEventButtonFunction; data:pointer) : guint;
-    function EventMotionConnect (Signal:string; Proc:TFPgtkEventMotionFunction; data:pointer) : guint;
-    function EventMotionConnectAfter (Signal:string; Proc:TFPgtkEventMotionFunction; data:pointer) : guint;
-    function ConnectMotionNotifyEvent (proc:TFPgtkEventMotionFunction; data:pointer) : guint;
-    function ConnectAfterMotionNotifyEvent (proc:TFPgtkEventMotionFunction; data:pointer) : guint;
-    function ConnectDeleteEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
-    function ConnectAfterDeleteEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
-    function ConnectDestroyEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
-    function ConnectAfterDestroyEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
-    function EventExposeConnect (Signal:string; Proc:TFPgtkEventExposeFunction; data:pointer) : guint;
-    function EventExposeConnectAfter (Signal:string; Proc:TFPgtkEventExposeFunction; data:pointer) : guint;
-    function ConnectExposeEvent (proc:TFPgtkEventExposeFunction; data:pointer) : guint;
-    function ConnectAfterExposeEvent (proc:TFPgtkEventExposeFunction; data:pointer) : guint;
-    function EventKeyConnect (Signal:string; Proc:TFPgtkEventKeyFunction; data:pointer) : guint;
-    function EventKeyConnectAfter (Signal:string; Proc:TFPgtkEventKeyFunction; data:pointer) : guint;
-    function ConnectKeyPressEvent (proc:TFPgtkEventKeyFunction; data:pointer) : guint;
-    function ConnectAfterKeyPressEvent (proc:TFPgtkEventKeyFunction; data:pointer) : guint;
-    function ConnectKeyReleaseEvent (proc:TFPgtkEventKeyFunction; data:pointer) : guint;
-    function ConnectAfterKeyReleaseEvent (proc:TFPgtkEventKeyFunction; data:pointer) : guint;
-    function EventCrossingConnect (Signal:string; Proc:TFPgtkEventCrossingFunction; data:pointer) : guint;
-    function EventCrossingConnectAfter (Signal:string; Proc:TFPgtkEventCrossingFunction; data:pointer) : guint;
-    function ConnectEnterNotifyEvent (proc:TFPgtkEventCrossingFunction; data:pointer) : guint;
-    function ConnectAfterEnterNotifyEvent (proc:TFPgtkEventCrossingFunction; data:pointer) : guint;
-    function ConnectLeaveNotifyEvent (proc:TFPgtkEventCrossingFunction; data:pointer) : guint;
-    function ConnectAfterLeaveNotifyEvent (proc:TFPgtkEventCrossingFunction; data:pointer) : guint;
-    function EventConfigureConnect (Signal:string; Proc:TFPgtkEventConfigureFunction; data:pointer) : guint;
-    function EventConfigureConnectAfter (Signal:string; Proc:TFPgtkEventConfigureFunction; data:pointer) : guint;
-    function ConnectConfigureEvent (proc:TFPgtkEventConfigureFunction; data:pointer) : guint;
-    function ConnectAfterConfigureEvent (proc:TFPgtkEventConfigureFunction; data:pointer) : guint;
-    function EventFocusConnect (Signal:string; Proc:TFPgtkEventFocusFunction; data:pointer) : guint;
-    function EventFocusConnectAfter (Signal:string; Proc:TFPgtkEventFocusFunction; data:pointer) : guint;
-    function ConnectFocusInEvent (proc:TFPgtkEventFocusFunction; data:pointer) : guint;
-    function ConnectAfterFocusInEvent (proc:TFPgtkEventFocusFunction; data:pointer) : guint;
-    function ConnectFocusOutEvent (proc:TFPgtkEventFocusFunction; data:pointer) : guint;
-    function ConnectAfterFocusOutEvent (proc:TFPgtkEventFocusFunction; data:pointer) : guint;
-    function ConnectMapEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
-    function ConnectAfterMapEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
-    function ConnectUnmapEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
-    function ConnectAfterUnmapEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
-    function EventPropertyConnect (Signal:string; Proc:TFPgtkEventPropertyFunction; data:pointer) : guint;
-    function EventPropertyConnectAfter (Signal:string; Proc:TFPgtkEventPropertyFunction; data:pointer) : guint;
-    function ConnectPropertyNotifyEvent (proc:TFPgtkEventPropertyFunction; data:pointer) : guint;
-    function ConnectAfterPropertyNotifyEvent (proc:TFPgtkEventPropertyFunction; data:pointer) : guint;
-    function EventSelectionConnect (Signal:string; Proc:TFPgtkEventSelectionFunction; data:pointer) : guint;
-    function EventSelectionConnectAfter (Signal:string; Proc:TFPgtkEventSelectionFunction; data:pointer) : guint;
-    function ConnectSelectionClearEvent (proc:TFPgtkEventSelectionFunction; data:pointer) : guint;
-    function ConnectAfterSelectionClearEvent (proc:TFPgtkEventSelectionFunction; data:pointer) : guint;
-    function ConnectSelectionRequestEvent (proc:TFPgtkEventSelectionFunction; data:pointer) : guint;
-    function ConnectAfterSelectionRequestEvent (proc:TFPgtkEventSelectionFunction; data:pointer) : guint;
-    function ConnectSelectionNotifyEvent (proc:TFPgtkEventSelectionFunction; data:pointer) : guint;
-    function ConnectAfterSelectionNotifyEvent (proc:TFPgtkEventSelectionFunction; data:pointer) : guint;
-    function EventProximityConnect (Signal:string; Proc:TFPgtkEventProximityFunction; data:pointer) : guint;
-    function EventProximityConnectAfter (Signal:string; Proc:TFPgtkEventProximityFunction; data:pointer) : guint;
-    function ConnectProximityInEvent (proc:TFPgtkEventProximityFunction; data:pointer) : guint;
-    function ConnectAfterProximityInEvent (proc:TFPgtkEventProximityFunction; data:pointer) : guint;
-    function ConnectProximityOutEvent (proc:TFPgtkEventProximityFunction; data:pointer) : guint;
-    function ConnectAfterProximityOutEvent (proc:TFPgtkEventProximityFunction; data:pointer) : guint;
-    function EventClientConnect (Signal:string; Proc:TFPgtkEventClientFunction; data:pointer) : guint;
-    function EventClientConnectAfter (Signal:string; Proc:TFPgtkEventClientFunction; data:pointer) : guint;
-    function ConnectClientEvent (proc:TFPgtkEventClientFunction; data:pointer) : guint;
-    function ConnectAfterClientEvent (proc:TFPgtkEventClientFunction; data:pointer) : guint;
-    function EventNoExposeConnect (Signal:string; Proc:TFPgtkEventNoExposeFunction; data:pointer) : guint;
-    function EventNoExposeConnectAfter (Signal:string; Proc:TFPgtkEventNoExposeFunction; data:pointer) : guint;
-    function ConnectNoExposeEvent (proc:TFPgtkEventNoExposeFunction; data:pointer) : guint;
-    function ConnectAfterNoExposeEvent (proc:TFPgtkEventNoExposeFunction; data:pointer) : guint;
-    function ConnectVisibilityNotifyEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
-    function ConnectAfterVisibilityNotifyEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
-    procedure LockAccelerators;
-    procedure UnlockAccelerators;
-    procedure RemoveAccelerators (aSignal:string; OnlyVisible:boolean);
-    procedure ActivateAccelGroups (Key:guint; Mods:TGdkModifierType);
-    procedure AcceleratorAdd (AG:PGtkAccelGroup; aSignal:string; Key:guint; Mods:TGdkModifierType; acFlags:TGtkAccelFlags); Overload;
-  end;
-
-  TFPgtkForEachProcedure = procedure (item : pointer; data : pointer) of object;
-
-  TFPgtkGroup = class (TList)
-  Private
-    FManageLists : boolean;
-    FListChanged:boolean;
-    FSListChanged:boolean;
-    FClassesChanged:boolean;
-    FNotUpdating:boolean;
-    FGList:PGList;
-    FGSList:PGSList;
-    procedure FreeList;
-    procedure FreeSList;
-    function CreateGList : PGList;
-    function CreateGSList : PGSList;
-    function GetGtkListProp : PGList;
-    procedure SetGtkListProp (TheValue : PGList);
-    function GetGtkSListProp : PGSList;
-    procedure SetGtkSListProp (TheValue : PGSList);
-  Protected
-    procedure BuildFromGtkList;
-    procedure BuildFromGtkSList;
-    procedure Notify (ptr:pointer; Action:TListNotification); Override;
-    function GetData (index:integer) : pointer; Dynamic;
-    function UngetData (data:pointer) : pointer; Dynamic;
-  Public
-    property ManageLists : boolean read FManageLists write FManageLists;
-    constructor Create;
-    destructor Destroy; Override;
-    function GetGtkList (buffered:boolean) : PGList;
-    function GetGtkSList (buffered:boolean) : PGSList;
-    procedure BeginUpdate;
-    procedure EndUpdate;
-    procedure ForEach (Proc:TFPgtkForEachProcedure; data:pointer);
-    property GtkList : PGList read GetGtkListProp write SetGtkListProp;
-    property GtkSList : PGSList read GetGtkSListProp write SetGtkSListProp;
-  end;
-
-
-  TFPgtkWidgetGroup = class (TFPgtkGroup)
-  Private
-    function GetItem(Index:integer) : TFPgtkWidget;
-    procedure SetItem (Index:integer; TheValue : TFPgtkWidget);
-    function GetTooltips(index:integer) : string;
-    procedure SetTooltips (index:integer; TheValue : string);
-  Public
-    function GetData (index:integer) : pointer; Override;
-    function UnGetData (data:pointer) : pointer; Override;
-    procedure AddToContainer (Container:TFPgtkContainer);
-    procedure PackInBox (box:TFPgtkBox; AtStart:boolean; Expanding:boolean; Fill:boolean; Padding:integer);
-    property Items [Index:integer]  : TFPgtkWidget read GetItem write SetItem;
-    property Tooltips [index:integer]  : string read GetTooltips write SetTooltips;
-  end;
-
-
-  TFPgtkMisc = class (TFPgtkWidget)
-  Private
-    function GetXAlign : gfloat;
-    procedure SetXAlign (TheValue : gfloat);
-    function GetYAlign : gfloat;
-    procedure SetYAlign (TheValue : gfloat);
-    function GetXPad : word;
-    procedure SetXPad (TheValue : word);
-    function GetYPad : word;
-    procedure SetYPad (TheValue : word);
-  Public
-    function TheGtkObject : PGtkMisc;
-    procedure SetAlignment (x:gfloat; y:gfloat);
-    procedure SetPadding (x:word; y:word);
-    property XAlign : gfloat read GetXAlign write SetXAlign;
-    property YAlign : gfloat read GetYAlign write SetYAlign;
-    property XPad : word read GetXPad write SetXPad;
-    property YPad : word read GetYPad write SetYPad;
-  end;
-
-  TFPgtkLabelClass = class of TFPgtkLabel;
-
-  TFPgtkLabel = class (TFPgtkMisc)
-  Private
-    function GetText : string;
-    procedure SetText (TheValue : string);
-    function GetPattern : string;
-    procedure SetPattern (TheValue : string);
-    function GetJustify : TGtkJustification;
-    procedure SetJustify (TheValue : TGtkJustification);
-    function GetLineWrap : boolean;
-    procedure SetLineWrap (TheValue : boolean);
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkLabel;
-    constructor Create (aText:string);
-    property Text : string read GetText write SetText;
-    property Pattern : string read GetPattern write SetPattern;
-    property Justify : TGtkJustification read GetJustify write SetJustify;
-    property LineWrap : boolean read GetLineWrap write SetLineWrap;
-    function ParseUline (aText:string) : guint;
-  end;
-
-
-  TFPgtkAccelLabel = class (TFPgtkLabel)
-  Private
-    function GetAccelWidget : TFPgtkWidget;
-    procedure SetAccelWidget (TheValue : TFPgtkWidget);
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkAccelLabel;
-    property AccelWidget : TFPgtkWidget read GetAccelWidget write SetAccelWidget;
-    function AccelText : string;
-    procedure Refetch;
-  end;
-
-
-  TFPgtkTipsQuery = class (TFPgtkLabel)
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkTipsQuery;
-  end;
-
-
-  TFPgtkArrow = class (TFPgtkMisc)
-  Private
-    function GetArrowType : TGtkArrowType;
-    procedure SetArrowType (TheValue : TGtkArrowType);
-    function GetShadowType : TGtkShadowType;
-    procedure SetShadowType (TheValue : TGtkShadowType);
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkArrow;
-    property ArrowType : TGtkArrowType read GetArrowType write SetArrowType;
-    property ShadowType : TGtkShadowType read GetShadowType write SetShadowType;
-    procedure SetTypes (AnArrowType:TGtkArrowType; AShadowtype:TGtkShadowType);
-    constructor Create (AnArrowType:TGtkArrowType; AShadowType:TGtkShadowType);
-  end;
-
-
-  TFPgtkImage = class (TFPgtkMisc)
-  Private
-    function GetImageProp : PGdkImage;
-    procedure SetImageProp (TheValue : PGdkImage);
-    function GetMask : PGdkBitMap;
-    procedure SetMask (TheValue : PGdkBitMap);
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkImage;
-    FMask:PGdkBitMap;
-    FImage:PGdkImage;
-    property Image : PGdkImage read GetImageProp write SetImageProp;
-    property Mask : PGdkBitMap read GetMask write SetMask;
-    procedure SetImage (anImage:PGdkImage; aMask:PGdkBitmap);
-    constructor Create (anImage:PGdkImage; aMask:PGdkBitmap);
-  end;
-
-  TStringArray = array[0..32000] of pgchar;
-  PStringArray = ^TStringArray;
-
-  TFPgtkPixmap = class (TFPgtkMisc)
-  Private
-    function GetBuildInsensitive : longbool;
-    procedure SetBuildInsensitive (TheValue : longbool);
-    function GetPixmapProp : PGdkPixMap;
-    procedure SetPixmapProp (TheValue : PGdkPixMap);
-    function GetMask : PGdkBitMap;
-    procedure SetMask (TheValue : PGdkBitMap);
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkPixmap;
-    FMask:PGdkBitMap;
-    FPixMap:PGdkPixmap;
-    property BuildInsensitive : longbool read GetBuildInsensitive write SetBuildInsensitive;
-    constructor Create;
-    constructor CreateFromFile (Filename:string; Window:TFPgtkWidget);
-    constructor CreateFromStrings (Data:TStrings; Window:TFPgtkWidget);
-    constructor CreateFromText (Data:string; Window:TFPgtkWidget);
-    property PixMap : PGdkPixMap read GetPixmapProp write SetPixmapProp;
-    property Mask : PGdkBitMap read GetMask write SetMask;
-    procedure SetPixmap (aPixmap:PGdkPixMap; aMask:PGdkBitmap);
-    procedure GetPixmap (var aPixmap:PGdkPixmap; var aMask:PGdkBitmap);
-    procedure LoadFromFile (Filename:string);
-    procedure LoadFromStrings (data:TStrings);
-    procedure LoadFromText (data:string);
-    procedure LoadFromArray (data:array of string);
-  end;
-
-  TFPgtkDirectionFunctionSignalFunction = function (Sender:TFPgtkObject; Direction:TGtkDirectionType; data:pointer): TGtkDirectionType of Object;
-
-  TFPgtkContainer = class (TFPgtkWidget)
-  Private
-    function GetBorder : integer;
-    procedure SetBorder (TheValue : integer);
-    function GetChildren : TFPgtkWidgetGroup;
-  Public
-    function TheGtkObject : PGtkContainer;
-    FChildren:TFPgtkWidgetGroup;
-    property Border : integer read GetBorder write SetBorder;
-    procedure Add (AWidget:TFPgtkWidget; IsVisible:boolean); Overload;
-    procedure Add (AWidget:TFPgtkWidget); Overload;
-    procedure Remove (AWidget:TFPgtkWidget);
-    constructor Create;
-    destructor Destroy; Override;
-    property Children : TFPgtkWidgetGroup read GetChildren;
-    procedure Focus (Direction:TGtkDirectionType);
-    procedure FocusChild (Child:TFPgtkWidget);
-    procedure RegisterToplevel;
-    procedure UnregisterToplevel;
-    procedure ResizeChildren;
-    function DirectionFunctionSignalConnect (Signal:string; Proc:TFPgtkDirectionFunctionSignalFunction; data:pointer) : guint;
-    function DirectionFunctionSignalConnectAfter (Signal:string; Proc:TFPgtkDirectionFunctionSignalFunction; data:pointer) : guint;
-    function ConnectAdd (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-    function ConnectAfterAdd (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-    function ConnectRemove (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-    function ConnectAfterRemove (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-    function ConnectCheckResize (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectAfterCheckResize (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectFocus (proc:TFPgtkDirectionFunctionSignalFunction; data:pointer) : guint;
-    function ConnectAfterFocus (proc:TFPgtkDirectionFunctionSignalFunction; data:pointer) : guint;
-    function ConnectSetFocusChild (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-    function ConnectAfterSetFocusChild (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-  end;
-
-
-  TFPgtkBin = class (TFPgtkContainer)
-  Private
-    function GetChild : TFPgtkWidget;
-    procedure SetChild (TheValue : TFPgtkWidget);
-  Protected
-    property Child : TFPgtkWidget read GetChild write SetChild;
-  Public
-    function TheGtkObject : PGtkBin;
-  end;
-
-
-  TFPgtkAlignment = class (TFPgtkBin)
-  Public
-    function TheGtkObject : PGtkAlignment;
-    procedure Configure (anXAlign:gfloat; anYAlign:gfloat; anXScale:gfloat; anYScale:gfloat);
-  end;
-
-
-  TFPgtkFrame = class (TFPgtkBin)
-  Private
-    function GetText : string;
-    procedure SetText (TheValue : string);
-    function GetAlignment : gfloat;
-    procedure SetAlignment (TheValue : gfloat);
-    function GetShadowType : TgtkShadowType;
-    procedure SetShadowType (TheValue : TgtkShadowType);
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkFrame;
-    property Text : string read GetText write SetText;
-    property Alignment : gfloat read GetAlignment write SetAlignment;
-    property ShadowType : TgtkShadowType read GetShadowType write SetShadowType;
-  end;
-
-
-  TFPgtkAspectFrame = class (TFPgtkFrame)
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkAspectFrame;
-    procedure Configure (anXAlign:gfloat; anYAlign:gfloat; Ratio:gfloat; ObeyChild:longbool);
-  end;
-
-
-  TFPgtkButton = class (TFPgtkBin)
-  Private
-    FAccelKey : guint;
-    FAddContainer : TFPgtkContainer;
-    FLabel : TFPgtkLabel;
-    procedure CreateLabel (aText:string);
-    function GetText : string;
-    procedure SetText (TheValue : string);
-    function GetReliefStyle : TGtkReliefStyle;
-    procedure SetReliefStyle (TheValue : TGtkReliefStyle);
-  Protected
-    procedure CreateGtkObject; override;
-    function LabelClass : TFPgtkLabelClass; Virtual;
-    procedure NotifyDestroy (AnObject:TFPgtkObject); Override;
-    procedure LabelCreated; Virtual;
-  Public
-    function TheGtkObject : PGtkButton;
-    function ConnectClicked (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectAfterClicked (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectPressed (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectAfterPressed (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectReleased (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectAfterReleased (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectEnter (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectAfterEnter (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectLeave (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectAfterLeave (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    procedure Clicked;
-    procedure Pressed;
-    procedure Released;
-    procedure Enter;
-    procedure Leave;
-    constructor Create;
-    constructor CreateWithLabel (aText:string); Overload;
-    constructor CreateWithLabel (aText:string; AccelGroup:PGtkAccelGroup); Overload;
-    property TheLabel : TFPgtkLabel read FLabel;
-    property Text : string read GetText write SetText;
-    property ReliefStyle : TGtkReliefStyle read GetReliefStyle write SetReliefStyle;
-    property AddContainer : TFPgtkContainer read FAddContainer write FAddContainer;
-    property AccelKey : guint read FAccelKey;
-  end;
-
-
-  TFPgtkToggleButton = class (TFPgtkButton)
-  Private
-    function GetActive : boolean;
-    procedure SetActive (TheValue : boolean);
-    function GetDrawIndicator : boolean;
-    procedure SetDrawIndicator (TheValue : boolean);
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkToggleButton;
-    function ConnectToggled (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectAfterToggled (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    procedure Toggled;
-    property Active : boolean read GetActive write SetActive;
-    property DrawIndicator : boolean read GetDrawIndicator write SetDrawIndicator;
-  end;
-
-
-  TFPgtkCheckButton = class (TFPgtkToggleButton)
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkCheckButton;
-  end;
-
-
-  TFPgtkRadioButton = class (TFPgtkCheckButton)
-  Protected
-    procedure CreateGtkObject; Override;
-  Public
-    function TheGtkObject : PGtkRadioButton;
-    FGroup:TFPgtkRadioButtonGroup;
-    constructor Create (AGroup:TFPgtkRadioButtonGroup);
-    constructor CreateWithLabel (AGroup:TFPgtkRadioButtonGroup; aText:string);
-  end;
-
-
-  TFPgtkRadioButtonGroup = class (TFPgtkWidgetGroup)
-  Private
-    function GetItem(index:integer) : TFPgtkRadioButton;
-    procedure SetItem (index:integer; TheValue : TFPgtkRadioButton);
-  Public
-    property Items [index:integer]  : TFPgtkRadioButton read GetItem write SetItem;
-    function ActiveButtonText : string;
-    function ActiveButtonIndex : integer;
-    function ActiveButton : TFPgtkRadioButton;
-  end;
-
-
-  TFPgtkOptionMenu = class (TFPgtkButton)
-  Private
-    function GetMenu : TFPgtkMenu;
-    procedure setmenu (TheValue : TFPgtkMenu);
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkOptionMenu;
-    property Menu : TFPgtkMenu read GetMenu write setmenu;
-    procedure RemoveMenu;
-    procedure SetHistory (index:integer);
-    procedure Clear;
-  end;
-
-  TFPgtkItemClass = class of TFPgtkItem;
-
-  TFPgtkItem = class (TFPgtkBin)
-  Private
-    FAccelKey : guint;
-    FAddContainer : TFPgtkContainer;
-    FLabel : TFPgtkLabel;
-    procedure CreateLabel (aText:string);
-    function GetText : string;
-    procedure SetText (TheValue : string);
-  Protected
-    function LabelClass : TFPgtkLabelClass; Virtual;
-    procedure NotifyDestroy (AnObject:TFPgtkObject); Override;
-    procedure LabelCreated; Virtual;
-  Public
-    function TheGtkObject : PGtkItem;
-    function ConnectSelect (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectAfterSelect (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectDeselect (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectAfterDeselect (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectToggle (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectAfterToggle (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    procedure Select;
-    procedure Deselect;
-    procedure Toggle;
-    constructor Create;
-    constructor CreateWithLabel (aText:string);
-    property TheLabel : TFPgtkLabel read FLabel;
-    property Text : string read GetText write SetText;
-    property AddContainer : TFPgtkContainer read FAddContainer write FAddContainer;
-    property AccelKey : guint read FAccelKey;
-  end;
-
-
-  TFPgtkItemGroup = class (TFPgtkWidgetGroup)
-  Private
-    FItemClass : TFPgtkItemClass;
-    function GetItem(index:integer) : TFPgtkItem;
-    procedure SetItem (index:integer; TheValue : TFPgtkItem);
-  Public
-    property Items [index:integer]  : TFPgtkItem read GetItem write SetItem;
-    procedure FillFromList (aList:TStrings);
-    procedure FillFromCommaText (aList:string);
-    procedure FillFromArray (aList:array of string);
-    property ItemClass : TFPgtkItemClass read FItemClass write FItemClass;
-    procedure SignalConnect (Signal:string; proc:TFPgtkSignalFunction; data:pointer);
-    constructor create (AnItemClass:TFPgtkItemClass);
-    function AddTextItem (aText:string) : TFPgtkItem;
-  end;
-
-
-  TFPgtkMenuItem = class (TFPgtkItem)
-  Private
-    function GetPlacement : TGtkSubmenuPlacement;
-    procedure SetPlacement (TheValue : TGtkSubmenuPlacement);
-    function GetToggleIndicator : boolean;
-    procedure SetToggleIndicator (TheValue : boolean);
-    function GetSubMenuIndicator : boolean;
-    procedure SetSubMenuIndicator (TheValue : boolean);
-    function GetJustifyRight : boolean;
-    procedure SetJustifyRight (TheValue : boolean);
-    function GetSubMenu : TFPgtkMenuShell;
-    procedure SetPropSubMenu (TheValue : TFPgtkMenuShell);
-  Protected
-    procedure CreateGtkObject; override;
-    function LabelClass : TFPgtkLabelClass; Override;
-    procedure LabelCreated; Override;
-  Public
-    function TheGtkObject : PGtkMenuItem;
-    function ConnectActivate (proc:TFPgtksignalFunction; data:pointer) : guint;
-    function ConnectAfterActivate (proc:TFPgtksignalFunction; data:pointer) : guint;
-    function ConnectActivateItem (proc:TFPgtksignalFunction; data:pointer) : guint;
-    function ConnectAfterActivateItem (proc:TFPgtksignalFunction; data:pointer) : guint;
-    procedure Activate;
-    procedure SetSubMenu (aSubMenu:TFPgtkWidget);
-    procedure RemoveSubMenu;
-    procedure Configure (ShowToggleIndicator:boolean; ShowSubmenuIndicator:boolean);
-    procedure RightJustify;
-    property Placement : TGtkSubmenuPlacement read GetPlacement write SetPlacement;
-    property ToggleIndicator : boolean read GetToggleIndicator write SetToggleIndicator;
-    property SubMenuIndicator : boolean read GetSubMenuIndicator write SetSubMenuIndicator;
-    property JustifyRight : boolean read GetJustifyRight write SetJustifyRight;
-    property SubMenu : TFPgtkMenuShell read GetSubMenu write SetPropSubMenu;
-  end;
-
-
-  TFPgtkCheckMenuItem = class (TFPgtkMenuItem)
-  Private
-    function GetActive : boolean;
-    procedure SetActive (TheValue : boolean);
-    function GetShowToggle : boolean;
-    procedure SetShowToggle (TheValue : boolean);
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkCheckMenuItem;
-    function ConnectToggled (proc:TFPgtksignalFunction; data:pointer) : guint;
-    function ConnectAfterToggled (proc:TFPgtksignalFunction; data:pointer) : guint;
-    procedure Toggled;
-    property Active : boolean read GetActive write SetActive;
-    property ShowToggle : boolean read GetShowToggle write SetShowToggle;
-  end;
-
-
-  TFPgtkRadioMenuItem = class (TFPgtkCheckMenuItem)
-  Private
-    FGroup : TFPgtkRadioMenuGroup;
-  Protected
-    procedure CreateGtkObject; Override;
-  Public
-    function TheGtkObject : PGtkRadioMenuItem;
-    constructor Create (AGroup:TFPgtkRadioMenuGroup);
-    constructor CreateWithLabel (Agroup:TFPgtkRadioMenuGroup; aText:string);
-    property Group : TFPgtkRadioMenuGroup read FGroup;
-  end;
-
-
-  TFPgtkRadioMenuGroup = class (TFPgtkItemGroup)
-  Private
-    function GetItem(index:integer) : TFPgtkRadioMenuItem;
-    procedure SetItem (index:integer; TheValue : TFPgtkRadioMenuItem);
-  Public
-    property Items [index:integer]  : TFPgtkRadioMenuItem read GetItem write SetItem;
-    function ActiveMenuText : string;
-    function ActiveMenuIndex : integer;
-    function ActiveMenu : TFPgtkRadioMenuItem;
-    constructor create;
-  end;
-
-
-  TFPgtkTearOffMenuItem = class (TFPgtkMenuItem)
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkTearOffMenuItem;
-  end;
-
-  TFPgtkScrollSignalFunction = procedure (Sender:TFPgtkObject; ScrollType:TgtkScrollType; position:gfloat; data:pointer) of Object;
-  TFPgtkScrollBooleanSignalFunction = procedure (Sender:TFPgtkObject; ScrolType:TgtkScrollType; Position:gfloat; AutoStartSelection:boolean; data:pointer) of Object;
-
-  TFPgtkListItem = class (TFPgtkItem)
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkListItem;
-    function ScrollSignalConnect (Signal:string; Proc:TFPgtkScrollSignalFunction; data:pointer) : guint;
-    function ScrollSignalConnectAfter (Signal:string; Proc:TFPgtkScrollSignalFunction; data:pointer) : guint;
-    function ScrollBooleanSignalConnect (Signal:string; Proc:TFPgtkScrollBooleanSignalFunction; data:pointer) : guint;
-    function ScrollBooleanSignalConnectAfter (Signal:string; Proc:TFPgtkScrollBooleanSignalFunction; data:pointer) : guint;
-    function ConnectToggleFocusRow (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectAfterToggleFocusRow (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectSelectAll (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectAfterSelectAll (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectUnselectAll (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectAfterUnselectAll (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectUndoSelection (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectAfterUndoSelection (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectStartSelection (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectAfterStartSelection (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectEndSelection (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectAfterEndSelection (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectToggleAddMode (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectAfterToggleAddMode (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectExtendSelection (proc:TFPgtkScrollBooleanSignalFunction; data:pointer) : guint;
-    function ConnectAfterExtendSelection (proc:TFPgtkScrollBooleanSignalFunction; data:pointer) : guint;
-    function ConnectScrollVertical (proc:TFPgtkScrollSignalFunction; data:pointer) : guint;
-    function ConnectAfterScrollVertical (proc:TFPgtkScrollSignalFunction; data:pointer) : guint;
-    function ConnectScrollHorizontal (proc:TFPgtkScrollSignalFunction; data:pointer) : guint;
-    function ConnectAfterScrollHorizontal (proc:TFPgtkScrollSignalFunction; data:pointer) : guint;
-    procedure Select;
-    procedure Deselect;
-  end;
-
-
-  TFPgtkListItemGroup = class (TFPgtkItemGroup)
-  Public
-    constructor create;
-  end;
-
-
-  TFPgtkTreeItem = class (TFPgtkItem)
-  Private
-    function GetSubTree : TFPgtkWidget;
-    procedure SetSubTree (TheValue : TFPgtkWidget);
-    function GetPixPlus : TFPgtkWidget;
-    function GetPixMinus : TFPgtkWidget;
-    function GetExpanded : boolean;
-    procedure SetExpanded (TheValue : boolean);
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkTreeItem;
-    property SubTree : TFPgtkWidget read GetSubTree write SetSubTree;
-    property PixPlus : TFPgtkWidget read GetPixPlus;
-    property PixMinus : TFPgtkWidget read GetPixMinus;
-    property Expanded : boolean read GetExpanded write SetExpanded;
-    procedure Select;
-    procedure Deselect;
-    procedure Expand;
-    procedure Collapse;
-    function ConnectCollapse (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectAfterCollapse (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectExpand (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectAfterExpand (proc:TFPgtkSignalFunction; data:pointer) : guint;
-  end;
-
-  DialogResultCallback = procedure (Sender:TFPgtkWindow; DialogResult:pointer; 
-                                    Action:integer; initiator:TFPgtkObject) of object;
-  DialogInitCallback = procedure (Sender : TFPgtkWindow; InitData : pointer) of object;
-  TFPgtkWindowClass = class of TFPgtkWindow;
-
-  TFPgtkWindow = class (TFPgtkBin)
-  Private
-    FAccelGroups:TList;
-    FMainLevel : guint;
-    FModalAction : integer;
-    FOnDialogInit : DialogInitCallback;
-    FOnDialogResult : DialogResultCallback;
-    FDialogResult : pointer;
-    TheWindowType:TGtkWindowType;
-    function GetWindowType : TGtkWindowType;
-    procedure SetWindowType (TheValue : TGtkWindowType);
-    function GetTitle : string;
-    procedure SetTitle (TheValue : string);
-    function GetModal : boolean;
-    procedure SetModal (TheValue : boolean);
-    procedure SetModalAction (TheValue : integer);
-    procedure ExecuteEnds (Sender:TFPgtkObject; data:pointer);
-    function GetUserSizable : boolean;
-    procedure SetUserSizable (TheValue : boolean);
-    function GetPosition : TGtkWindowPosition;
-    procedure SetPosition (TheValue : TGtkWindowPosition);
-    function GetAccelGroups(ID:integer) : PGtkAccelGroup;
-  Protected
-    procedure CreateGtkObject; override;
-    property DialogResult : pointer read FDialogResult write FDialogResult;
-    procedure DoDialogResult (Action:integer; Sender:TFPgtkObject); Virtual;
-    procedure DoDialogInit (InitData:pointer); Virtual;
-  Public
-    function TheGtkObject : PGtkWindow;
-    constructor Create (AType:TGtkWindowType);
-    destructor Destroy; Override;
-    property WindowType : TGtkWindowType read GetWindowType write SetWindowType;
-    property Title : string read GetTitle write SetTitle;
-    property Modal : boolean read GetModal write SetModal;
-    property OnDialogResult : DialogResultCallback read FOnDialogResult write FOnDialogResult;
-    property OnDialogInit : DialogInitCallback read FOnDialogInit write FOnDialogInit;
-    procedure Close;
-    procedure CloseWindow (Sender:TFPgtkObject; data:pointer);
-    procedure CloseWithResult (Sender:TFPgtkObject; data:pointer);
-    property ModalAction : integer read FModalAction write SetModalAction;
-    property MainLevel : guint read FMainLevel;
-    function Execute (anOnDialogInit:DialogInitCallBack; anInitData:pointer; anOnDialogResult:DialogResultCallBack) : integer;
-    function ConnectSetFocus (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-    function ConnectAfterSetFocus (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-    procedure SetTransientFor (aParent:TFPgtkWindow);
-    procedure DefaultWidget (Widget:TFPgtkWidget);
-    procedure FocusedWidget (NewFocus:TFPgtkWidget);
-    property UserSizable : boolean read GetUserSizable write SetUserSizable;
-    procedure ActivateFocus;
-    procedure ActivateDefault;
-    procedure SetDefaultSize (Width:gint; Height:gint);
-    property Position : TGtkWindowPosition read GetPosition write SetPosition;
-    property AccelGroups [ID:integer]  : PGtkAccelGroup read GetAccelGroups;
-    function AccelGroupNew : integer;
-    procedure AccelGroupDelete (ID:integer);
-    procedure AcceleratorAdd (AG:integer; aWidget:TFPgtkWidget; aSignal:string; Key:guint; Mods:TGdkModifierType; acFlags:TGtkAccelFlags); Overload;
-    procedure AcceleratorRemove (AG:integer; aWidget:TFPgtkWidget; Key:guint; Mods:TGdkModifierType); Overload;
-    procedure AccelGroupLock (AG:integer);
-    procedure AccelGroupUnlock (AG:integer);
-    procedure AccelGroupActivate (AG:integer; Key:guint; Mods:TGdkModifierType);
-  end;
-
-
-  TFPgtkColorSelectionDialog = class (TFPgtkWindow)
-  Private
-    function GetColorSel : TFPgtkColorSelection;
-    function GetButtonOK : TFPgtkButton;
-    function GetButtonCancel : TFPgtkButton;
-    function GetButtonHelp : TFPgtkButton;
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkColorSelectionDialog;
-    property ColorSel : TFPgtkColorSelection read GetColorSel;
-    property ButtonOK : TFPgtkButton read GetButtonOK;
-    property ButtonCancel : TFPgtkButton read GetButtonCancel;
-    property ButtonHelp : TFPgtkButton read GetButtonHelp;
-  end;
-
-
-  TFPgtkDialog = class (TFPgtkWindow)
-  Private
-    function GetActionArea : TFPgtkHBox;
-    function GetVBox : TFPgtkVBox;
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkDialog;
-    property ActionArea : TFPgtkHBox read GetActionArea;
-    property VBox : TFPgtkVBox read GetVBox;
-    constructor create;
-  end;
-
-  TFPgtkDeviceSignalFunction = procedure (Sender:TFPgtkInputDialog; DeviceID:integer; Data:pointer) of Object;
-
-  TFPgtkInputDialog = class (TFPgtkDialog)
-  Private
-    function GetButtonClose : TFPgtkButton;
-    function GetButtonSave : TFPgtkButton;
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkInputDialog;
-    property ButtonClose : TFPgtkButton read GetButtonClose;
-    property ButtonSave : TFPgtkButton read GetButtonSave;
-    function DeviceSignalConnect (Signal:string; Proc:TFPgtkDeviceSignalFunction; data:pointer) : guint;
-    function DeviceSignalConnectAfter (Signal:string; Proc:TFPgtkDeviceSignalFunction; data:pointer) : guint;
-    function ConnectEnableDevice (proc:TFPgtkDeviceSignalFunction; data:pointer) : guint;
-    function ConnectAfterEnableDevice (proc:TFPgtkDeviceSignalFunction; data:pointer) : guint;
-    function ConnectDisableDevice (proc:TFPgtkDeviceSignalFunction; data:pointer) : guint;
-    function ConnectAfterDisableDevice (proc:TFPgtkDeviceSignalFunction; data:pointer) : guint;
-  end;
-
-
-  TFPgtkFileSelection = class (TFPgtkWindow)
-  Private
-    function GetFilename : string;
-    procedure SetFilename (TheValue : string);
-    function GetDirList : TFPgtkCList;
-    function GetFileList : TFPgtkCList;
-    function GetOkButton : TFPgtkButton;
-    function GetCancelButton : TFPgtkButton;
-    function GetHistoryPulldown : TFPgtkOptionMenu;
-    function GetFileOpDialog : TFPgtkDialog;
-    function GetFileOpCreateDir : TFPgtkButton;
-    function GetFileOpDelFile : TFPgtkButton;
-    function GetFileOpRenFile : TFPgtkButton;
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkFileSelection;
-    property Filename : string read GetFilename write SetFilename;
-    procedure Complete (Pattern:string);
-    procedure ShowFileOpButtons;
-    procedure HideFileOpButtons;
-    property DirList : TFPgtkCList read GetDirList;
-    property FileList : TFPgtkCList read GetFileList;
-    property OkButton : TFPgtkButton read GetOkButton;
-    property CancelButton : TFPgtkButton read GetCancelButton;
-    property HistoryPulldown : TFPgtkOptionMenu read GetHistoryPulldown;
-    property FileOpDialog : TFPgtkDialog read GetFileOpDialog;
-    property FileOpCreateDir : TFPgtkButton read GetFileOpCreateDir;
-    property FileOpDelFile : TFPgtkButton read GetFileOpDelFile;
-    property FileOpRenFile : TFPgtkButton read GetFileOpRenFile;
-  end;
-
-
-  TFPgtkFontSelectionDialog = class (TFPgtkWindow)
-  Private
-    function GetFontSel : TFPgtkFontSelection;
-    function GetButtonOk : TFPgtkButton;
-    function GetButtonApply : TFPgtkButton;
-    function GetButtonCancel : TFPgtkButton;
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkFontSelectionDialog;
-    property FontSel : TFPgtkFontSelection read GetFontSel;
-    property ButtonOk : TFPgtkButton read GetButtonOk;
-    property ButtonApply : TFPgtkButton read GetButtonApply;
-    property ButtonCancel : TFPgtkButton read GetButtonCancel;
-  end;
-
-
-  TFPgtkEventBox = class (TFPgtkBin)
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkEventBox;
-  end;
-
-
-  TFPgtkHandleBox = class (TFPgtkBin)
-  Private
-    function GetShadowType : TGtkShadowtype;
-    procedure SetShadowType (TheValue : TGtkShadowtype);
-    function GetHandlePosition : TGtkPositionType;
-    procedure SetHandlePosition (TheValue : TGtkPositionType);
-    function GetSnapEdge : TGtkPositionType;
-    procedure SetSnapEdge (TheValue : TGtkPositionType);
-    function GetChildDetached : boolean;
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkHandleBox;
-    property ShadowType : TGtkShadowtype read GetShadowType write SetShadowType;
-    property HandlePosition : TGtkPositionType read GetHandlePosition write SetHandlePosition;
-    property SnapEdge : TGtkPositionType read GetSnapEdge write SetSnapEdge;
-    property ChildDetached : boolean read GetChildDetached;
-    function ConnectChildAttached (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-    function ConnectAfterChildAttached (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-    function ConnectChildDetached (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-    function ConnectAfterChildDetached (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-  end;
-
-
-  TFPgtkScrolledWindow = class (TFPgtkBin)
-  Private
-    FVScroll:TFPgtkAdjustment;
-    FHScroll:TFPgtkAdjustment;
-    function GetHPolicy : TGtkPolicyType;
-    procedure SetHPolicy (TheValue : TGtkPolicyType);
-    function GetVPolicy : TGtkPolicyType;
-    procedure SetVPolicy (TheValue : TGtkPolicyType);
-    function GetHAdjustment : TFPgtkAdjustment;
-    procedure SetHAdjustment (TheValue : TFPgtkAdjustment);
-    function GetVAdjustment : TFPgtkAdjustment;
-    procedure SetVAdjustment (TheValue : TFPgtkAdjustment);
-    function GetPlacement : TGtkCornerType;
-    procedure SetPlacement (TheValue : TGtkCornerType);
-    function GetHScrollbar : TFPgtkScrollbar;
-    function GetVScrollbar : TFPgtkScrollbar;
-  Protected
-    procedure CreateGtkObject; Override;
-  Public
-    function TheGtkObject : PGtkScrolledWindow;
-    constructor Create (hadj:TFPgtkAdjustment; vadj:TFPgtkAdjustment);
-    property HPolicy : TGtkPolicyType read GetHPolicy write SetHPolicy;
-    property VPolicy : TGtkPolicyType read GetVPolicy write SetVPolicy;
-    procedure SetPolicy (aHScrollBar:TGtkPolicyType; aVScrollbar:TGtkPolicyType); Overload;
-    procedure SetPolicy (aPolicy:TGtkPolicyType); Overload;
-    property HAdjustment : TFPgtkAdjustment read GetHAdjustment write SetHAdjustment;
-    property VAdjustment : TFPgtkAdjustment read GetVAdjustment write SetVAdjustment;
-    procedure AddWithViewport (aChild:TFPgtkWidget);
-    property Placement : TGtkCornerType read GetPlacement write SetPlacement;
-    property HScrollbar : TFPgtkScrollbar read GetHScrollbar;
-    property VScrollbar : TFPgtkScrollbar read GetVScrollbar;
-    procedure UpdatePolicy (UpdPolicy:TGtkUpdateType);
-  end;
-
-
-  TFPgtkViewport = class (TFPgtkBin)
-  Private
-    FVScroll:TFPgtkAdjustment;
-    FHScroll:TFPgtkAdjustment;
-    function GetHAdjustment : TFPgtkAdjustment;
-    procedure SetHAdjustment (TheValue : TFPgtkAdjustment);
-    function GetVAdjustment : TFPgtkAdjustment;
-    procedure SetVAdjustment (TheValue : TFPgtkAdjustment);
-    function GetShadowType : TgtkShadowType;
-    procedure SetShadowType (TheValue : TgtkShadowType);
-  Protected
-    procedure CreateGtkObject; Override;
-  Public
-    function TheGtkObject : PGtkViewport;
-    constructor Create (hadj:TFPgtkAdjustment; vadj:TFPgtkAdjustment);
-    property HAdjustment : TFPgtkAdjustment read GetHAdjustment write SetHAdjustment;
-    property VAdjustment : TFPgtkAdjustment read GetVAdjustment write SetVAdjustment;
-    property ShadowType : TgtkShadowType read GetShadowType write SetShadowType;
-  end;
-
-
-  TFPgtkBox = class (TFPgtkContainer)
-  Private
-    function GetHomogeneous : boolean;
-    procedure SetHomogeneous (TheValue : boolean);
-    function GetSpacing : integer;
-    procedure SetSpacing (TheValue : integer);
-  Public
-    function TheGtkObject : PGtkBox;
-    property Homogeneous : boolean read GetHomogeneous write SetHomogeneous;
-    property Spacing : integer read GetSpacing write SetSpacing;
-    procedure ReorderChild (Widget:TFPgtkWidget; Position:integer);
-    procedure GetChildPacking (Widget:TFPgtkWidget; var Expand:boolean; var Fill:boolean; var Padding:integer; var PackType:TGtkPackType);
-    procedure SetChildPacking (Widget:TFPgtkWidget; Expand:boolean; Fill:boolean; Padding:integer; PackType:TGtkPackType);
-    procedure PackStart (Widget:TFPgtkWidget); Overload;
-    procedure PackStart (Widget:TFPgtkWidget; IsVisible:boolean); Overload;
-    procedure PackStart (Widget:TFPgtkWidget; expand:boolean; fill:boolean; padding:integer); Overload;
-    procedure PackStart (Widget:TFPgtkWidget; expand:boolean; fill:boolean; padding:integer; IsVisible:boolean); Overload;
-    procedure PackEnd (Widget:TFPgtkWidget); Overload;
-    procedure PackEnd (Widget:TFPgtkWidget; IsVisible:boolean); Overload;
-    procedure PackEnd (Widget:TFPgtkWidget; expand:boolean; fill:boolean; padding:integer); Overload;
-    procedure PackEnd (Widget:TFPgtkWidget; expand:boolean; fill:boolean; padding:integer; IsVisible:boolean); Overload;
-  end;
-
-
-  TFPgtkButtonBox = class (TFPgtkBox)
-  Private
-    function GetSpacing : integer;
-    procedure SetSpacing (TheValue : integer);
-    function GetLayout : TGtkButtonBoxStyle;
-    procedure SetLayout (TheValue : TGtkButtonBoxStyle);
-    function GetMinWidth : integer;
-    procedure SetMinWidth (TheValue : integer);
-    function GetMinHeight : integer;
-    procedure SetMinHeight (TheValue : integer);
-    function GetChildPadX : integer;
-    procedure SetChildPadX (TheValue : integer);
-    function GetChildPadY : integer;
-    procedure SetChildPadY (TheValue : integer);
-  Public
-    function TheGtkObject : PGtkButtonBox;
-    property Spacing : integer read GetSpacing write SetSpacing;
-    property Layout : TGtkButtonBoxStyle read GetLayout write SetLayout;
-    property ChildMinWidth : integer read GetMinWidth write SetMinWidth;
-    property ChildMinHeight : integer read GetMinHeight write SetMinHeight;
-    property ChildPadX : integer read GetChildPadX write SetChildPadX;
-    property ChildPadY : integer read GetChildPadY write SetChildPadY;
-  end;
-
-
-  TFPgtkHButtonBox = class (TFPgtkButtonBox)
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkHButtonBox;
-  end;
-
-
-  TFPgtkVButtonBox = class (TFPgtkButtonBox)
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkVButtonBox;
-  end;
-
-
-  TFPgtkVBox = class (TFPgtkBox)
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkVBox;
-  end;
-
-
-  TFPgtkColorSelection = class (TFPgtkVBox)
-  Private
-    function GetUpdatePolicy : TGtkUpdateType;
-    procedure SetUpdatePolicy (TheValue : TGtkUpdateType);
-    function GetColor : double;
-    procedure SetColor (TheValue : double);
-    function GetUseOpacity : longbool;
-    procedure SetUseOpacity (TheValue : longbool);
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkColorSelection;
-    property UpdatePolicy : TGtkUpdateType read GetUpdatePolicy write SetUpdatePolicy;
-    property Color : double read GetColor write SetColor;
-    property UseOpacity : longbool read GetUseOpacity write SetUseOpacity;
-  end;
-
-
-  TFPgtkGammaCurve = class (TFPgtkVBOX)
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkGammaCurve;
-  end;
-
-
-  TFPgtkHBox = class (TFPgtkBox)
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkHBox;
-  end;
-
-
-  TFPgtkCombo = class (TFPgtkHBox)
-  Private
-    function GetEntry : TFPgtkEntry;
-    function GetList : TFPgtkList;
-    function GetButton : TFpGtkButton;
-    function GetValueInList : longbool;
-    procedure SetValueInListProp (TheValue : longbool);
-    function GetOkIfEmpty : longbool;
-    procedure SetOkIfEmpty (TheValue : longbool);
-    function GetUseArrows : longbool;
-    procedure SetUseArrows (TheValue : longbool);
-    function GetUseArrowsAlways : longbool;
-    procedure SetUseArrowsAlways (TheValue : longbool);
-    function GetCaseSensitive : longbool;
-    procedure SetCaseSensitive (TheValue : longbool);
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkCombo;
-    property Entry : TFPgtkEntry read GetEntry;
-    property List : TFPgtkList read GetList;
-    property Button : TFpGtkButton read GetButton;
-    property ValueInList : longbool read GetValueInList write SetValueInListProp;
-    property OkIfEmpty : longbool read GetOkIfEmpty write SetOkIfEmpty;
-    property UseArrows : longbool read GetUseArrows write SetUseArrows;
-    property UseArrowsAlways : longbool read GetUseArrowsAlways write SetUseArrowsAlways;
-    property CaseSensitive : longbool read GetCaseSensitive write SetCaseSensitive;
-    procedure SetItemString (Item:TFPgtkItem; ItemValue:string);
-    procedure DisableActivate;
-    procedure SetValueInList (Val:longbool; IsOkIfEmpty:longbool);
-  end;
-
-  TFPgtkStatusbarSignalFunction = procedure (Sender:TFPgtkObject; contextID:integer; text:string; data:pointer) of Object;
-
-  TFPgtkStatusbar = class (TFPgtkHBox)
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkStatusbar;
-    function GetContextID (ContextDescr:string) : integer;
-    function Push (contextID:integer; text:string) : integer;
-    procedure Pop (contextID:integer);
-    procedure Remove (contextID:integer; MessageID:integer);
-    function StatusbarSignalConnect (Signal:string; Proc:TFPgtkStatusbarSignalFunction; data:pointer) : guint;
-    function StatusbarSignalConnectAfter (Signal:string; Proc:TFPgtkStatusbarSignalFunction; data:pointer) : guint;
-    function ConnectTextPopped (proc:TFPgtkStatusbarSignalFunction; data:pointer) : guint;
-    function ConnectAfterTextPopped (proc:TFPgtkStatusbarSignalFunction; data:pointer) : guint;
-    function ConnectTextPushed (proc:TFPgtkStatusbarSignalFunction; data:pointer) : guint;
-    function ConnectAfterTextPushed (proc:TFPgtkStatusbarSignalFunction; data:pointer) : guint;
-  end;
-
-  TFPgtkCListScrollSignalFunction = procedure (Sender:TFPgtkObject; ScrollType:TgtkScrollType; position:gfloat; data:pointer) of Object;
-  TFPgtkCListScrollBooleanSignalFunction = procedure (Sender:TFPgtkObject; ScrollType:TgtkScrollType; Position:gfloat; AutoStartSelection:boolean; data:pointer) of Object;
-  TFPgtkSelectRowSignalFunction = procedure (Sender:TFPgtkObject; row:integer; column:integer; event:PGdkEventButton; data:pointer) of Object;
-  TFPgtkMoveSignalFunction = procedure (Sender:TFPgtkObject; arg1:integer; arg2:integer; data:pointer) of Object;
-  TFPgtkColumnClickedSignalFunction = procedure (Sender:TFPgtkObject; column:integer; data:pointer) of Object;
-  TFPgtkResizeColumnSignalFunction = procedure (Sender:TFPgtkObject; column:integer; width:integer; data:pointer) of Object;
-
-  TFPgtkCList = class (TFPgtkContainer)
-  Private
-    compare : TGtkCListCompareFunc;
-    FColumnCount : integer;
-    function GetShadowType : TGtkShadowType;
-    procedure SetShadowType (TheValue : TGtkShadowType);
-    function GetSelectionMode : TGtkSelectionMode;
-    procedure SetSelectionMode (TheValue : TGtkSelectionMode);
-    function GetColumnTitle(column:integer) : string;
-    procedure SetColumnTitle (column:integer; TheValue : string);
-    function GetColumnWidget(column:integer) : TFPgtkWidget;
-    procedure SetColumnWidget (column:integer; TheValue : TFPgtkWidget);
-    function GetCellText(Row:integer; Column:integer) : string;
-    procedure SetCellText (Row:integer; Column:integer; TheValue : string);
-    function GetCellStyle(row:integer; column:integer) : PGtkStyle;
-    procedure SetCellStyle (row:integer; column:integer; TheValue : PGtkStyle);
-    function GetRowStyle(row:integer) : PGtkStyle;
-    procedure SetRowStyle (row:integer; TheValue : PGtkStyle);
-    function GetRowData(row:integer) : pointer;
-    procedure SetRowData (row:integer; TheValue : pointer);
-    procedure SetCompareFunc (TheValue : TGtkCListCompareFunc);
-    function GetSortColumn : integer;
-    procedure SetSortColumn (TheValue : integer);
-    function GetSetSortType : TGtkSortType;
-    procedure SetSetSortType (TheValue : TGtkSortType);
-    function GetHAdjustment : TFPgtkAdjustment;
-    procedure SetHAdjustment (TheValue : TFPgtkAdjustment);
-    function GetVAdjustment : TFPgtkAdjustment;
-    procedure SetVAdjustment (TheValue : TFPgtkAdjustment);
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkCList;
-    constructor Create (aColumnCount:integer);
-    property ColumnCount : integer read FColumnCount;
-    property ShadowType : TGtkShadowType read GetShadowType write SetShadowType;
-    property SelectionMode : TGtkSelectionMode read GetSelectionMode write SetSelectionMode;
-    procedure Freeze;
-    procedure Thaw;
-    procedure ShowTitles;
-    procedure HideTitles;
-    procedure ActiveTitles;
-    procedure PassiveTitles;
-    procedure ActiveTitle (column:integer);
-    procedure PassiveTitle (column:integer);
-    property ColumnTitle [column:integer]  : string read GetColumnTitle write SetColumnTitle;
-    property ColumnWidget [column:integer]  : TFPgtkWidget read GetColumnWidget write SetColumnWidget;
-    procedure SetColumnJustification (column:integer; justification:TGtkJustification);
-    procedure SetColumnVisibility (column:integer; aVisible:boolean);
-    procedure SetColumnResizeable (column:integer; Resizeable:boolean);
-    procedure SetColumnAutoResize (column:integer; autoResize:boolean);
-    function OptimalColumnWidth (column:integer) : integer;
-    procedure SetColumnWidth (column:integer; width:integer);
-    procedure SetColumnMinWidth (column:integer; MinWidth:integer);
-    procedure SetColumnMaxWidth (column:integer; MaxWidth:integer);
-    function AutoSizeColumns : integer;
-    procedure ConfigureColumnWidth (column:integer; Width:integer; MinWidth:integer; MaxWidth:integer);
-    procedure ConfigureColumn (column:integer; Justification:TGtkJustification; Visibility:boolean; Resizeable:boolean; AutoSize:boolean);
-    procedure SetRowHeight (height:integer);
-    procedure MoveTo (row:integer; column:integer; RowAlign:gfloat; ColAlign:gfloat);
-    function RowIsVisible (Row:integer) : TGtkVisibility;
-    function GetCellType (Row:integer; column:integer) : TGtkCellType;
-    property CellText [Row:integer; Column:integer]  : string read GetCellText write SetCellText;
-    procedure SetPixmap (row:integer; column:integer; pixmap:PGdkPixmap; mask:PGdkBitmap);
-    procedure GetPixmap (row:integer; column:integer; var pixmap:PGdkPixmap; var mask:PGdkBitmap);
-    procedure SetPixText (row:integer; column:integer; text:string; spacing:guint8; pixmap:PGdkPixmap; mask:PGdkBitmap);
-    procedure GetPixText (row:integer; column:integer; var text:string; var aspacing:guint8; var pixmap:PGdkPixmap; var mask:PGdkBitmap);
-    procedure SetForeground (row:integer; color:PGdkColor);
-    procedure SetBackground (row:integer; color:PGdkColor);
-    property CellStyle [row:integer; column:integer]  : PGtkStyle read GetCellStyle write SetCellStyle;
-    property RowStyle [row:integer]  : PGtkStyle read GetRowStyle write SetRowStyle;
-    procedure SetShift (row:integer; column:integer; vertical:integer; horizontal:integer);
-    procedure Remove (row:integer);
-    procedure Prepend (Data:TStrings); Overload;
-    procedure Prepend (Text:string; separator:string); Overload;
-    procedure Prepend (data:array of string); Overload;
-    procedure Append (data:TStrings); Overload;
-    procedure Append (Text:string; Separator:string); Overload;
-    procedure Append (data:array of string); Overload;
-    procedure Insert (row:integer; data:TStrings); Overload;
-    procedure Insert (row:integer; Text:string; Separator:string); Overload;
-    procedure Insert (row:integer; data:array of string); Overload;
-    property RowData [row:integer]  : pointer read GetRowData write SetRowData;
-    function FindRowFromData (data:pointer) : integer;
-    procedure SelectRow (row:integer; column:integer);
-    procedure UnselectRow (row:integer; column:integer);
-    procedure Clear;
-    procedure SelectAll;
-    procedure UnselectAll;
-    procedure SwapRows (row1:integer; row2:integer);
-    procedure RowMove (sourceRow:integer; destRow:integer);
-    procedure Sort;
-    property CompareFunc : TGtkCListCompareFunc read compare write SetCompareFunc;
-    property SortColumn : integer read GetSortColumn write SetSortColumn;
-    property SetSortType : TGtkSortType read GetSetSortType write SetSetSortType;
-    procedure SetAutoSort (autoSort:boolean);
-    property HAdjustment : TFPgtkAdjustment read GetHAdjustment write SetHAdjustment;
-    property VAdjustment : TFPgtkAdjustment read GetVAdjustment write SetVAdjustment;
-    procedure SetReorderable (reorderable:boolean);
-    function Count : integer;
-    function CListScrollSignalConnect (Signal:string; Proc:TFPgtkCListScrollSignalFunction; data:pointer) : guint;
-    function CListScrollSignalConnectAfter (Signal:string; Proc:TFPgtkCListScrollSignalFunction; data:pointer) : guint;
-    function CListScrollBooleanSignalConnect (Signal:string; Proc:TFPgtkCListScrollBooleanSignalFunction; data:pointer) : guint;
-    function CListScrollBooleanSignalConnectAfter (Signal:string; Proc:TFPgtkCListScrollBooleanSignalFunction; data:pointer) : guint;
-    function SelectRowSignalConnect (Signal:string; Proc:TFPgtkSelectRowSignalFunction; data:pointer) : guint;
-    function SelectRowSignalConnectAfter (Signal:string; Proc:TFPgtkSelectRowSignalFunction; data:pointer) : guint;
-    function ConnectSelectRow (proc:TFPgtkSelectRowSignalFunction; data:pointer) : guint;
-    function ConnectAfterSelectRow (proc:TFPgtkSelectRowSignalFunction; data:pointer) : guint;
-    function ConnectUnselectRow (proc:TFPgtkSelectRowSignalFunction; data:pointer) : guint;
-    function ConnectAfterUnselectRow (proc:TFPgtkSelectRowSignalFunction; data:pointer) : guint;
-    function MoveSignalConnect (Signal:string; Proc:TFPgtkMoveSignalFunction; data:pointer) : guint;
-    function MoveSignalConnectAfter (Signal:string; Proc:TFPgtkMoveSignalFunction; data:pointer) : guint;
-    function ConnectRowMove (proc:TFPgtkMoveSignalFunction; data:pointer) : guint;
-    function ConnectAfterRowMove (proc:TFPgtkMoveSignalFunction; data:pointer) : guint;
-    function ConnectScrollVertical (proc:TFPgtkCListScrollSignalFunction; data:pointer) : guint;
-    function ConnectAfterScrollVertical (proc:TFPgtkCListScrollSignalFunction; data:pointer) : guint;
-    function ConnectScrolHorizontal (proc:TFPgtkCListScrollSignalFunction; data:pointer) : guint;
-    function ConnectAfterScrolHorizontal (proc:TFPgtkCListScrollSignalFunction; data:pointer) : guint;
-    function ConnectToggleFocusRow (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectAfterToggleFocusRow (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectSelectAll (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectAfterSelectAll (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectUnselectAll (proc:TFPgtksignalFunction; data:pointer) : guint;
-    function ConnectAfterUnselectAll (proc:TFPgtksignalFunction; data:pointer) : guint;
-    function ConnectUndoSelection (proc:TFPgtksignalFunction; data:pointer) : guint;
-    function ConnectAfterUndoSelection (proc:TFPgtksignalFunction; data:pointer) : guint;
-    function ConnectStartSelection (proc:TFPgtksignalFunction; data:pointer) : guint;
-    function ConnectAfterStartSelection (proc:TFPgtksignalFunction; data:pointer) : guint;
-    function ConnectEndSelection (proc:TFPgtksignalFunction; data:pointer) : guint;
-    function ConnectAfterEndSelection (proc:TFPgtksignalFunction; data:pointer) : guint;
-    function ConnectToggleAddMode (proc:TFPgtksignalFunction; data:pointer) : guint;
-    function ConnectAfterToggleAddMode (proc:TFPgtksignalFunction; data:pointer) : guint;
-    function ConnectAbortColumnResize (proc:TFPgtksignalFunction; data:pointer) : guint;
-    function ConnectAfterAbortColumnResize (proc:TFPgtksignalFunction; data:pointer) : guint;
-    function ConnectExtendSelection (proc:TFPgtkCListScrollBooleanSignalFunction; data:pointer) : guint;
-    function ConnectAfterExtendSelection (proc:TFPgtkCListScrollBooleanSignalFunction; data:pointer) : guint;
-    function ColumnClickedSignalConnect (Signal:string; Proc:TFPgtkColumnClickedSignalFunction; data:pointer) : guint;
-    function ColumnClickedSignalConnectAfter (Signal:string; Proc:TFPgtkColumnClickedSignalFunction; data:pointer) : guint;
-    function ConnectClickColumn (proc:TFPgtkColumnClickedSignalFunction; data:pointer) : guint;
-    function ConnectAfterClickColumn (proc:TFPgtkColumnClickedSignalFunction; data:pointer) : guint;
-    function ResizeColumnSignalConnect (Signal:string; Proc:TFPgtkResizeColumnSignalFunction; data:pointer) : guint;
-    function ResizeColumnSignalConnectAfter (Signal:string; Proc:TFPgtkResizeColumnSignalFunction; data:pointer) : guint;
-    function ConnectResizeColumn (proc:TFPgtkResizeColumnSignalFunction; data:pointer) : guint;
-    function ConnectAfterResizeColumn (proc:TFPgtkResizeColumnSignalFunction; data:pointer) : guint;
-  end;
-
-  TFPgtkCTreeFunction = procedure (TheTree:TFPgtkCTree; TheNode:PGtkCTreeNode; data:pointer) of object;
-
-  TFPgtkCTree = class (TFPgtkCList)
-  Private
-    FTreeColumn:integer;
-    function GetLineStyle : TGtkCTreeLineStyle;
-    procedure SetLineStyle (TheValue : TGtkCTreeLineStyle);
-    function GetShowStub : boolean;
-    procedure SetShowStub (TheValue : boolean);
-    function GetExpanderStyle : TGtkCTreeExpanderStyle;
-    procedure SetExpanderStyle (TheValue : TGtkCTreeExpanderStyle);
-    function GetSpacing : guint;
-    procedure SetSpacing (TheValue : guint);
-    function GetIndent : guint;
-    procedure SetIndent (TheValue : guint);
-    function GetTreeColumn : integer;
-    function GetNodeCellText(Node:PGtkCTreeNode; Column:integer) : string;
-    procedure SetNodeCellText (Node:PGtkCTreeNode; Column:integer; TheValue : string);
-    function GetNodeSelectable(Node:PGtkCTreeNode) : boolean;
-    procedure SetNodeSelectable (Node:PGtkCTreeNode; TheValue : boolean);
-    function GetNodeCellStyle(Node:PGtkCTreeNode; column:integer) : PGtkStyle;
-    procedure SetNodeCellStyle (Node:PGtkCTreeNode; column:integer; TheValue : PGtkStyle);
-    function GetNodeRowStyle(Node:PGtkCTreeNode) : PGtkStyle;
-    procedure SetNodeRowStyle (Node:PGtkCTreeNode; TheValue : PGtkStyle);
-    function GetNodeData(Node:PGtkCTreeNode) : pointer;
-    procedure SetNodeData (Node:PGtkCTreeNode; TheValue : pointer);
-    function GetCompareDragFunc : TGtkCTreeCompareDragFunc;
-    procedure SetCompareDragFunc (TheValue : TGtkCTreeCompareDragFunc);
-  Public
-    function TheGtkObject : PGtkCTree;
-    property LineStyle : TGtkCTreeLineStyle read GetLineStyle write SetLineStyle;
-    property ShowStub : boolean read GetShowStub write SetShowStub;
-    property ExpanderStyle : TGtkCTreeExpanderStyle read GetExpanderStyle write SetExpanderStyle;
-    property Spacing : guint read GetSpacing write SetSpacing;
-    property Indent : guint read GetIndent write SetIndent;
-    property TreeColumn : integer read GetTreeColumn;
-    constructor Create (aColumnCount:integer; aTreeColumn:integer);
-    procedure RemoveNode (node:PGtkCTreeNode);
-    function InsertNode (aParent:PGtkCTreeNode; Sibling:PGtkCTreeNode; data:string; aSpacing:guint8; PixmapClosed:PGdkPixmap; MaskClosed:PGdkBitmap; PixmapOpened:PGdkPixmap; MaskOpened:PGdkBitmap; IsLeaf:boolean; Expanded:boolean) : PGtkCTreeNode; Overload;
-    function InsertNode (aParent:PGtkCTreeNode; Sibling:PGtkCTreeNode; data:string; aSpacing:guint8; IsLeaf:boolean; Expanded:boolean) : PGtkCTreeNode; Overload;
-    procedure PostRecursive (aNode:PGtkCTreeNode; func:TFPgtkCTreeFunction; data:pointer);
-    procedure PostRecursiveToDepth (aNode:PGtkCTreeNode; aDepth:integer; func:TFPgtkCTreeFunction; data:pointer);
-    procedure PreRecursive (aNode:PGtkCTreeNode; func:TFPgtkCTreeFunction; data:pointer);
-    procedure PreRecursiveToDepth (aNode:PGtkCTreeNode; aDepth:integer; func:TFPgtkCTreeFunction; data:pointer);
-    procedure IsViewable (aNode:PGtkCTreeNode);
-    procedure LastChild (aNode:PGtkCTreeNode);
-    function IsChild (anAncestor:PGtkCTreeNode; aChild:PGtkCTreeNode) : boolean;
-    function IsAncestor (anAncestor:PGtkCTreeNode; aChild:PGtkCTreeNode) : boolean;
-    function IsHotSpot (X:integer; Y:integer) : boolean;
-    procedure MoveNode (aNode:PGtkCTreeNode; NewParent:PGtkCTreeNode; NewSibling:PGtkCTreeNode);
-    procedure Expand (aNode:PGtkCTreeNode);
-    procedure ExpandRecursive (aNode:PGtkCTreeNode);
-    procedure ExpandToDepth (aNode:PGtkCTreeNode; aDepth:integer);
-    procedure Collapse (aNode:PGtkCTreeNode);
-    procedure CollapseRecursive (aNode:PGtkCTreeNode);
-    procedure CollapseToDepth (aNode:PGtkCTreeNode; aDepth:integer);
-    procedure SelectNode (aNode:PGtkCTreeNode);
-    procedure SelectRecursive (aNode:PGtkCTreeNode);
-    procedure UnselectNode (aNode:PGtkCTreeNode);
-    procedure UnselectRecursive (aNode:PGtkCTreeNode);
-    procedure RealSelectRecursive (aNode:PGtkCTreeNode; aState:boolean);
-    function NodeGetCellType (Node:PGtkCTreeNode; column:integer) : TGtkCellType;
-    property NodeCellText [Node:PGtkCTreeNode; Column:integer]  : string read GetNodeCellText write SetNodeCellText;
-    procedure NodeSetPixmap (Node:PGtkCTreeNode; column:integer; pixmap:PGdkPixmap; mask:PGdkBitmap);
-    procedure NodeGetPixmap (Node:PGtkCTreeNode; column:integer; var pixmap:PGdkPixmap; var mask:PGdkBitmap);
-    procedure NodeSetPixText (Node:PGtkCTreeNode; column:integer; text:string; aspacing:guint8; pixmap:PGdkPixmap; mask:PGdkBitmap);
-    procedure NodeGetPixText (Node:PGtkCTreeNode; column:integer; var text:string; var aspacing:guint8; var pixmap:PGdkPixmap; var mask:PGdkBitmap);
-    procedure SetNodeInfo (aNode:PGtkCTreeNode; aText:string; aSpacing:guint8; PixmapClosed:PGdkPixmap; MaskClosed:PGdkBitmap; PixmapOpened:PGdkPixmap; MaskOpened:PGdkBitmap; IsLeaf:boolean; Expanded:boolean); Overload;
-    procedure GetNodeInfo (aNode:PGtkCTreeNode; var aText:string; var aSpacing:guint8; var PixmapClosed:PGdkPixmap; var MaskClosed:PGdkBitmap; var PixmapOpened:PGdkPixmap; var MaskOpened:PGdkBitmap; var IsLeaf:boolean; var Expanded:boolean); Overload;
-    procedure NodeSetShift (Node:PGtkCTreeNode; column:integer; vertical:integer; horizontal:integer);
-    property NodeSelectable [Node:PGtkCTreeNode]  : boolean read GetNodeSelectable write SetNodeSelectable;
-    procedure NodeSetForeground (Node:PGtkCTreeNode; color:PGdkColor);
-    procedure NodeSetBackground (Node:PGtkCTreeNode; color:PGdkColor);
-    property NodeCellStyle [Node:PGtkCTreeNode; column:integer]  : PGtkStyle read GetNodeCellStyle write SetNodeCellStyle;
-    property NodeRowStyle [Node:PGtkCTreeNode]  : PGtkStyle read GetNodeRowStyle write SetNodeRowStyle;
-    property NodeData [Node:PGtkCTreeNode]  : pointer read GetNodeData write SetNodeData;
-    procedure NodeMoveTo (aNode:PGtkCTreeNode; column:integer; RowAlign:gfloat; ColAlign:gfloat);
-    function IsVisible (aNode:PGtkCTreeNode) : TGtkVisibility;
-    property CompareDragFunc : TGtkCTreeCompareDragFunc read GetCompareDragFunc write SetCompareDragFunc;
-    procedure SortNode (aNode:PGtkCTreeNode);
-    procedure SortRecursive (aNode:PGtkCTreeNode);
-    function NthNode (Row:integer) : PGtkCTreeNode;
-  end;
-
-
-  TFPgtkFixed = class (TFPgtkContainer)
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkFixed;
-    procedure Put (Widget:TFPgtkWidget; x:integer; y:integer);
-    procedure Move (Widget:TFPgtkWidget; x:integer; y:integer);
-    procedure GetPos (Widget:TFPgtkWidget; var PosX:integer; var PosY:integer);
-  end;
-
-  TFPgtkPageSwitchSignalFunction = procedure (Sender:TFPgtkObject; PageRec:PGtkNotebookPage; aPageNum:integer; data:pointer) of Object;
-
-  TFPgtkNotebook = class (TFPgtkContainer)
-  Private
-    function GetPageIndex : integer;
-    procedure SetPageIndex (TheValue : integer);
-    function GetPage : TFPgtkWidget;
-    procedure SetPage (TheValue : TFPgtkWidget);
-    function GetTabPos : TGtkPositionType;
-    procedure SetTabPos (TheValue : TGtkPositionType);
-    function GetShowTabs : boolean;
-    procedure SetShowTabs (TheValue : boolean);
-    function GetShowBorder : boolean;
-    procedure SetShowBorder (TheValue : boolean);
-    function GetScrollable : boolean;
-    procedure SetScrollable (TheValue : boolean);
-    function GetHomogenous : boolean;
-    procedure SetHomogenous (TheValue : boolean);
-    function GetTabHBorder : word;
-    procedure SetTabHBorder (TheValue : word);
-    function GetTabVBorder : word;
-    procedure SetTabVBorder (TheValue : word);
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkNotebook;
-    procedure AppendPage (Child:TFPgtkWidget; TabLabel:TFPgtkWidget);
-    procedure AppendPageFull (Child:TFPgtkWidget; TabLabel:TFPgtkWidget; MenuLabel:TFPgtkWidget; IsVisible:boolean);
-    procedure PrependPage (Child:TFPgtkWidget; TabLabel:TFPgtkWidget);
-    procedure PrependPageFull (Child:TFPgtkWidget; TabLabel:TFPgtkWidget; MenuLabel:TFPgtkWidget; IsVisible:boolean);
-    procedure InsertPage (Child:TFPgtkWidget; TabLabel:TFPgtkWidget; Position:integer);
-    procedure InsertPageFull (Child:TFPgtkWidget; TabLabel:TFPgtkWidget; MenuLabel:TFPgtkWidget; IsVisible:boolean; Position:integer);
-    procedure RemovePage (PageNumber:integer);
-    function PageNumberOf (Child:TFPgtkWidget) : integer;
-    procedure NextPage;
-    procedure PrevPage;
-    procedure ReorderPage (Child:TFPgtkWidget; PageNum:integer);
-    property PageIndex : integer read GetPageIndex write SetPageIndex;
-    property Page : TFPgtkWidget read GetPage write SetPage;
-    property TabPos : TGtkPositionType read GetTabPos write SetTabPos;
-    property ShowTabs : boolean read GetShowTabs write SetShowTabs;
-    property ShowBorder : boolean read GetShowBorder write SetShowBorder;
-    property Scrollable : boolean read GetScrollable write SetScrollable;
-    property Homogenous : boolean read GetHomogenous write SetHomogenous;
-    property TabHBorder : word read GetTabHBorder write SetTabHBorder;
-    property TabVBorder : word read GetTabVBorder write SetTabVBorder;
-    procedure SetTabBorders (BorderWidth:word);
-    function GetMenuLabelOf (Child:TFPgtkWidget) : TFPgtkWidget;
-    procedure SetMenuLabel (Child:TFPgtkWidget; MenuLabel:TFPgtkWidget);
-    function GetTabLabelOf (Child:TFPgtkWidget) : TFPgtkWidget;
-    procedure SetTabLabel (Child:TFPgtkWidget; TabLabel:TFPgtkWidget);
-    function GetChildOnPage (PageNum:integer) : TFPgtkWidget;
-    procedure GetTabLabelPacking (Widget:TFPgtkWidget; var Expand:boolean; var Fill:boolean; var PackType:TGtkPackType);
-    procedure SetTabLabelPacking (Widget:TFPgtkWidget; Expand:boolean; Fill:boolean; PackType:TGtkPackType);
-    procedure EnablePopup;
-    procedure DisablePopup;
-    function PageSwitchSignalConnect (Signal:string; Proc:TFPgtkPageSwitchSignalFunction; data:pointer) : guint;
-    function PageSwitchSignalConnectAfter (Signal:string; Proc:TFPgtkPageSwitchSignalFunction; data:pointer) : guint;
-    function ConnectSwitchPage (proc:TFPgtkPageSwitchSignalFunction; data:pointer) : guint;
-    function ConnectAfterSwitchPage (proc:TFPgtkPageSwitchSignalFunction; data:pointer) : guint;
-  end;
-
-
-  TFPgtkFontSelection = class (TFPgtkNotebook)
-  Private
-    function GetFontName : string;
-    procedure SetFontName (TheValue : string);
-    function GetPreviewText : string;
-    procedure SetPreviewText (TheValue : string);
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkFontSelection;
-    property FontName : string read GetFontName write SetFontName;
-    function GetFont : PGdkFont;
-    property PreviewText : string read GetPreviewText write SetPreviewText;
-    procedure SetFilter (FilterType:TGtkFontFilterType; FontType:TGtkFontType; Foundries:array of string; Weights:array of string; Slants:array of string; SetWidths:array of string; Spacings:array of string; CharSets:array of string);
-  end;
-
-
-  TFPgtkPaned = class (TFPgtkContainer)
-  Private
-    function GetGutterSize : word;
-    procedure SetGutterSize (TheValue : word);
-    function GetHandleSize : word;
-    procedure SetHandleSize (TheValue : word);
-    function GetPosition : integer;
-    procedure SetPosition (TheValue : integer);
-  Public
-    function TheGtkObject : PGtkPaned;
-    property GutterSize : word read GetGutterSize write SetGutterSize;
-    property HandleSize : word read GetHandleSize write SetHandleSize;
-    property Position : integer read GetPosition write SetPosition;
-    procedure ComputePosition (AnAllocation:integer; Child1Req:integer; Child2Req:integer);
-    procedure Add1 (Child:TFPgtkWidget); Overload;
-    procedure Pack1 (Child:TFPgtkWidget; Resize:boolean; Shrink:boolean); Overload;
-    procedure Add1 (Child:TFPgtkWidget; isVisible:boolean); Overload;
-    procedure Pack1 (Child:TFPgtkWidget; Resize:boolean; Shrink:boolean; IsVisible:boolean); Overload;
-    procedure Add2 (Child:TFPgtkWidget); Overload;
-    procedure Pack2 (Child:TFPgtkWidget; Resize:boolean; Shrink:boolean); Overload;
-    procedure Add2 (Child:TFPgtkWidget; IsVisible:boolean); Overload;
-    procedure Pack2 (Child:TFPgtkWidget; Resize:boolean; Shrink:boolean; IsVisible:boolean); Overload;
-  end;
-
-
-  TFPgtkHPaned = class (TFPgtkPaned)
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkHPaned;
-  end;
-
-
-  TFPgtkVPaned = class (TFPgtkPaned)
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkVPaned;
-  end;
-
-
-  TFPgtkLayout = class (TFPgtkContainer)
-  Private
-    function GetHAdj : TFPgtkAdjustment;
-    procedure SetHAdj (TheValue : TFPgtkAdjustment);
-    function GetVAdj : TFPgtkAdjustment;
-    procedure SetVAdj (TheValue : TFPgtkAdjustment);
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkLayout;
-    property HAdj : TFPgtkAdjustment read GetHAdj write SetHAdj;
-    property VAdj : TFPgtkAdjustment read GetVAdj write SetVAdj;
-    procedure Freeze;
-    procedure Thaw;
-    procedure Put (aWidget:TFPgtkWidget; X:integer; Y:integer); Overload;
-    procedure Put (aWidget:TFPgtkWidget; X:integer; Y:integer; aVisible:boolean); Overload;
-    procedure Move (aWidget:TFPgtkWidget; X:integer; Y:integer);
-    procedure SetSize (aWidth:integer; aHeight:integer);
-  end;
-
-
-  TFPgtkList = class (TFPgtkContainer)
-  Private
-    function GetSelectionMode : TGtkSelectionMode;
-    procedure SetSelectionMode (TheValue : TGtkSelectionMode);
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkList;
-    function ConnectSelectionChanged (proc:TFPgtksignalFunction; data:pointer) : guint;
-    function ConnectAfterSelectionChanged (proc:TFPgtksignalFunction; data:pointer) : guint;
-    function ConnectSelectChild (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-    function ConnectAfterSelectChild (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-    function ConnectUnselectChild (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-    function ConnectAfterUnselectChild (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-    property SelectionMode : TGtkSelectionMode read GetSelectionMode write SetSelectionMode;
-    procedure InsertItems (TheItems:TFPgtkListItemGroup; position:integer);
-    procedure AppendItems (TheItems:TFPgtkListItemGroup);
-    procedure PrependItems (TheItems:TFPgtkListItemGroup);
-    procedure RemoveItems (TheItems:TFPgtkListItemGroup);
-    procedure RemoveItemsNoUnref (TheItems:TFPgtkListItemGroup);
-    procedure ClearItems (FromItem:integer; ToItem:integer);
-    procedure ClearAll;
-    procedure SelectItem (Item:integer);
-    procedure UnselectItem (Item:integer);
-    procedure SelectChild (Child:TFPgtkWidget);
-    procedure UnselectChild (Child:TFPgtkWidget);
-    function ChildPosition (Child:TFPgtkWidget) : integer;
-    procedure ExtendSelection (ScrollType:TGtkScrollType; Position:gfloat; AutoStartSelection:boolean);
-    procedure StartSelection;
-    procedure EndSelection;
-    procedure SelectAll;
-    procedure UnselectAll;
-    procedure ScrollHorizontal (ScrollType:TGtkScrollType; Position:gfloat);
-    procedure ScrollVertical (ScrollType:TGtkScrollType; Position:gfloat);
-    procedure ToggleAddMode;
-    procedure ToggleFocusRow;
-    procedure ToggleRow (Child:TFPgtkWidget);
-    procedure UndoSelection;
-    procedure EndDragSelection;
-    procedure GetSelection (aGroup:TFPgtkGroup);
-  end;
-
-  TFPgtkMoveCurrentSignalFunction = procedure (Sender:TFPgtkObject; dir:TGtkMenuDirectionType; data:pointer) of Object;
-
-  TFPgtkMenuShell = class (TFPgtkContainer)
-  Protected
-    procedure GtkPrepend (MenuItem:TFPgtkWidget); Virtual;
-    procedure GtkInsert (MenuItem:TFPgtkWidget; position:integer); Virtual;
-    procedure GtkAppend (MenuItem:TFPgtkWidget); Virtual;
-  Public
-    function TheGtkObject : PGtkMenuShell;
-    function MoveCurrentSignalConnect (Signal:string; Proc:TFPgtkMoveCurrentSignalFunction; data:pointer) : guint;
-    function MoveCurrentSignalConnectAfter (Signal:string; Proc:TFPgtkMoveCurrentSignalFunction; data:pointer) : guint;
-    procedure ActivateItem (MenuItem:TFPgtkWidget; ForceDeactivate:boolean);
-    procedure SelectItem (MenuItem:TFPgtkWidget);
-    procedure DeActivate;
-    procedure Prepend (MenuItem:TFPgtkWidget); Overload;
-    procedure Prepend (MenuItem:TFPgtkWidget; CreateVisible:boolean); Overload;
-    procedure Insert (MenuItem:TFPgtkWidget; position:integer); Overload;
-    procedure Insert (MenuItem:TFPgtkWidget; position:integer; CreateVisible:boolean); Overload;
-    procedure Append (MenuItem:TFPgtkWidget); Overload;
-    procedure Append (MenuItem:TFPgtkWidget; CreateVisible:boolean); Overload;
-    function ConnectDeActivate (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectAfterDeActivate (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectSelectionDone (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectAfterSelectionDone (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectCancel (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectAfterCancel (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectMoveCurrent (proc:TFPgtkMoveCurrentSignalFunction; data:pointer) : guint;
-    function ConnectAfterMoveCurrent (proc:TFPgtkMoveCurrentSignalFunction; data:pointer) : guint;
-    function ConnectActivateCurrent (proc:TFPgtkBooleanSignalFunction; data:pointer) : guint;
-    function ConnectAfterActivateCurrent (proc:TFPgtkBooleanSignalFunction; data:pointer) : guint;
-  end;
-
-
-  TFPgtkMenuBar = class (TFPgtkMenuShell)
-  Private
-    function GetShadow : TgtkShadowType;
-    procedure SetShadow (TheValue : TgtkShadowType);
-  Protected
-    procedure CreateGtkObject; override;
-    procedure GtkPrepend (MenuItem:TFPgtkWidget); Override;
-    procedure GtkInsert (MenuItem:TFPgtkWidget; position:integer); Override;
-    procedure GtkAppend (MenuItem:TFPgtkWidget); Override;
-  Public
-    function TheGtkObject : PGtkMenuBar;
-    property Shadow : TgtkShadowType read GetShadow write SetShadow;
-  end;
-
-  TFPgtkMenuDetachFunction = procedure (Widget:TFPgtkWidget; menu:TFPgtkMenu) of object;
-  TFPgtkMenuPosFunction = procedure (menu:TFPgtkMenu; var x,y:integer; data:pointer) of object;
-
-  TFPgtkMenu = class (TFPgtkMenuShell)
-  Private
-    procedure SetTitle (TheValue : string);
-    function GetActive : TFPgtkWidget;
-    procedure SetActive (TheValue : TFPgtkWidget);
-    function GetActiveIndex : integer;
-    procedure SetActiveIndex (TheValue : integer);
-    function GetTearOffState : boolean;
-    procedure SetTearOffState (TheValue : boolean);
-    function GetAttachedTo : TFPgtkWidget;
-    procedure SetAttachedTo (TheValue : TFPgtkWidget);
-    function GetAccelGroup : PGtkAccelGroup;
-    procedure SetAccelGroup (TheValue : PGtkAccelGroup);
-  Protected
-    procedure CreateGtkObject; override;
-    procedure GtkPrepend (MenuItem:TFPgtkWidget); Override;
-    procedure GtkInsert (MenuItem:TFPgtkWidget; position:integer); Override;
-    procedure GtkAppend (MenuItem:TFPgtkWidget); Override;
-  Public
-    function TheGtkObject : PGtkMenu;
-    FDetacher:TFPgtkMenuDetachFunction;
-    procedure ReorderChild (MenuItem:TFPgtkWidget; position:integer);
-    procedure Popup (button:guint); Overload;
-    procedure Popup (ParentShell:TFPgtkWidget; ParentItem:TFPgtkWidget; func:TFPgtkMenuPosFunction; data:pointer; button:guint; ActivateTime:guint32); Overload;
-    procedure PopDown;
-    procedure Reposition;
-    procedure AttachToWidget (Widget:TFPgtkWidget; detacher:TFPgtkMenuDetachFunction);
-    procedure Detach;
-    property Title : string write SetTitle;
-    property Active : TFPgtkWidget read GetActive write SetActive;
-    property ActiveIndex : integer read GetActiveIndex write SetActiveIndex;
-    property TearOffState : boolean read GetTearOffState write SetTearOffState;
-    property AttachedTo : TFPgtkWidget read GetAttachedTo write SetAttachedTo;
-    property AccelGroup : PGtkAccelGroup read GetAccelGroup write SetAccelGroup;
-  end;
-
-
-  TFPgtkPacker = class (TFPgtkContainer)
-  Private
-    function GetSpacing : guint;
-    procedure SetSpacing (TheValue : guint);
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkPacker;
-    procedure Add (Child:TFPgtkWidget; Side:TGtkSideType; Anchor:TGtkAnchorType; options:TGtkPackerOptions); Overload;
-    procedure Add (Child:TFPgtkWidget; Side:TGtkSideType; Anchor:TGtkAnchorType; options:TGtkPackerOptions; aVisible:boolean); Overload;
-    procedure Add (Child:TFPgtkWidget; Side:TGtkSideType; Anchor:TGtkAnchorType; options:TGtkPackerOptions; aBorder:guint; PadX:Guint; PadY:guint; IPadX:guint; IPadY:guint); Overload;
-    procedure Add (Child:TFPgtkWidget; Side:TGtkSideType; Anchor:TGtkAnchorType; options:TGtkPackerOptions; aBorder:guint; PadX:Guint; PadY:guint; IPadX:guint; IPadY:guint; aVisible:boolean); Overload;
-    procedure ReorderChild (aChild:TFPgtkWidget; position:integer);
-    property Spacing : guint read GetSpacing write SetSpacing;
-    procedure DefaultBorder (aBorder:guint);
-    procedure DefaultPad (PadX:guint; PadY:guint);
-    procedure DefaultIPad (IPadX:guint; IPadY:guint);
-    procedure Configure (aChild:TFPgtkWidget; Side:TGtkSideType; Anchor:TGtkAnchorType; options:TGtkPackerOptions; aBorder:guint; PadX:Guint; PadY:guint; IPadX:guint; IPadY:guint); Overload;
-  end;
-
-
-  TFPgtkTable = class (TFPgtkContainer)
-  Private
-    function GetRowCount : integer;
-    function GetColCount : integer;
-    function GetHomogeneous : boolean;
-    procedure SetHomogeneous (TheValue : boolean);
-    function GetRowSpacings : integer;
-    procedure SetRowSpacings (TheValue : integer);
-    function GetColSpacings : integer;
-    procedure SetColSpacings (TheValue : integer);
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkTable;
-    constructor Create (AColumns:integer; ARows:integer);
-    procedure Resize (AColumns:integer; ARows:integer);
-    procedure Attach (Widget:TFPgtkWidget; left:integer; right:integer; top:integer; bottom:integer; XOptions:integer; YOptions:integer; XPadding:integer; YPadding:integer; IsVisible:boolean);
-    procedure Attach (Widget:TFPgtkWidget; left:integer; right:integer; top:integer; bottom:integer; XOptions:integer; YOptions:integer; XPadding:integer; YPadding:integer);
-    procedure Attach (Widget:TFPgtkWidget; left:integer; right:integer; top:integer; bottom:integer; IsVisible:boolean);
-    procedure Attach (Widget:TFPgtkWidget; left:integer; right:integer; top:integer; bottom:integer);
-    property RowCount : integer read GetRowCount;
-    property ColCount : integer read GetColCount;
-    property Homogeneous : boolean read GetHomogeneous write SetHomogeneous;
-    property RowSpacings : integer read GetRowSpacings write SetRowSpacings;
-    property ColSpacings : integer read GetColSpacings write SetColSpacings;
-    procedure SetOneRowSpacing (row:integer; TheValue:integer);
-    procedure SetOneColSpacing (Column:integer; TheValue:integer);
-  end;
-
-
-  TFPgtkToolbar = class (TFPgtkContainer)
-  Private
-    function GetButtonRelief : TGtkReliefStyle;
-    procedure SetButtonRelief (TheValue : TGtkReliefStyle);
-    function GetTooltips : TFPgtkTooltips;
-    function GetEnableTooltips : longbool;
-    procedure SetEnableTooltips (TheValue : longbool);
-    function GetSpaceStyle : TGtkToolbarSpaceStyle;
-    procedure SetSpaceStyle (TheValue : TGtkToolbarSpaceStyle);
-    function GetSpaceSize : integer;
-    procedure SetSpaceSize (TheValue : integer);
-    function GetStyle : TGtkToolbarStyle;
-    procedure SetStyle (TheValue : TGtkToolbarStyle);
-    function GetOrientation : tGtkOrientation;
-    procedure SetOrientation (TheValue : tGtkOrientation);
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkToolbar;
-    property ButtonRelief : TGtkReliefStyle read GetButtonRelief write SetButtonRelief;
-    property Tooltips : TFPgtkTooltips read GetTooltips;
-    property EnableTooltips : longbool read GetEnableTooltips write SetEnableTooltips;
-    property SpaceStyle : TGtkToolbarSpaceStyle read GetSpaceStyle write SetSpaceStyle;
-    property SpaceSize : integer read GetSpaceSize write SetSpaceSize;
-    property Style : TGtkToolbarStyle read GetStyle write SetStyle;
-    property Orientation : tGtkOrientation read GetOrientation write SetOrientation;
-    procedure InsertWidget (Widget:TFPgtkWidget; TooltipText:string; TooltipPrivate:string; Position:integer);
-    procedure PrependWidget (Widget:TFPgtkWidget; TooltipText:string; TooltipPrivate:string);
-    procedure AppendWidget (Widget:TFPgtkWidget; TooltipText:string; TooltipPrivate:string);
-    function InsertElement (ButtonType:TGtkToolbarChildType; PrevRadioBut:TFPgtkWidget; Text:string; TooltipText:string; TooltipPrivate:string; Icon:TFPgtkWidget; CallBack:TFPgtkSignalFunction; data:pointer; position:integer) : TFPgtkWidget;
-    function AppendElement (ButtonType:TGtkToolbarChildType; PrevRadioBut:TFPgtkWidget; Text:string; TooltipText:string; TooltipPrivate:string; Icon:TFPgtkWidget; CallBack:TFPgtkSignalFunction; data:pointer) : TFPgtkWidget;
-    function PrependElement (ButtonType:TGtkToolbarChildType; PrevRadioBut:TFPgtkWidget; Text:string; TooltipText:string; TooltipPrivate:string; Icon:TFPgtkWidget; CallBack:TFPgtkSignalFunction; data:pointer) : TFPgtkWidget;
-    function InsertItem (Text:string; TooltipText:string; TooltipPrivate:string; Icon:TFPgtkWidget; CallBack:TFPgtkSignalFunction; data:pointer; position:integer) : TFPgtkWidget; Overload;
-    function AppendItem (Text:string; TooltipText:string; TooltipPrivate:string; Icon:TFPgtkWidget; CallBack:TFPgtkSignalFunction; data:pointer) : TFPgtkWidget; Overload;
-    function PrependItem (Text:string; TooltipText:string; TooltipPrivate:string; Icon:TFPgtkWidget; CallBack:TFPgtkSignalFunction; data:pointer) : TFPgtkWidget; Overload;
-    function InsertItem (Text:string; TooltipText:string; TooltipPrivate:string; Icon:array of string; CallBack:TFPgtkSignalFunction; data:pointer; position:integer) : TFPgtkWidget; Overload;
-    function AppendItem (Text:string; TooltipText:string; TooltipPrivate:string; Icon:array of string; CallBack:TFPgtkSignalFunction; data:pointer) : TFPgtkWidget; Overload;
-    function PrependItem (Text:string; TooltipText:string; TooltipPrivate:string; Icon:array of string; CallBack:TFPgtkSignalFunction; data:pointer) : TFPgtkWidget; Overload;
-    procedure InsertSpace (position:integer);
-    procedure AppendSpace;
-    procedure PrependSpace;
-  end;
-
-
-  TFPgtkTree = class (TFPgtkContainer)
-  Private
-    function GetSelectionMode : TGtkSelectionMode;
-    procedure SetSelectionMode (TheValue : TGtkSelectionMode);
-    function GetViewLines : boolean;
-    procedure SetViewLines (TheValue : boolean);
-    function GetViewMode : TGtkTreeViewMode;
-    procedure SetViewMode (TheValue : TGtkTreeViewMode);
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkTree;
-    function ConnectSelectionChanged (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectAfterSelectionChanged (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectSelectChild (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-    function ConnectAfterSelectChild (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-    function ConnectUnselectChild (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-    function ConnectAfterUnselectChild (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-    property SelectionMode : TGtkSelectionMode read GetSelectionMode write SetSelectionMode;
-    property ViewLines : boolean read GetViewLines write SetViewLines;
-    property ViewMode : TGtkTreeViewMode read GetViewMode write SetViewMode;
-    procedure Append (TreeItem:TFPgtkWidget);
-    procedure Prepend (TreeItem:TFPgtkWidget);
-    procedure Insert (TreeItem:TFPgtkWidget; position:integer);
-    procedure Remove (TreeItem:TFPgtkWidget);
-    procedure ClearItems (StartPos:integer; EndPos:integer);
-    procedure SelectItem (Item:integer);
-    procedure UnselectItem (Item:integer);
-    procedure SelectChild (TreeItem:TFPgtkWidget);
-    procedure UnselectChild (TreeItem:TFPgtkWidget);
-    function ChildPosition (TreeItem:TFPgtkWidget) : integer;
-    function RootTree : TFPgtkTree;
-    function IsRootTree : boolean;
-    procedure GetSelection (aGroup:TFPgtkGroup);
-    function Level : integer;
-  end;
-
-
-  TFPgtkCalendar = class (TFPgtkWidget)
-  Private
-    function GetDisplayOptions : TGtkCalendarDisplayOptions;
-    procedure SetDisplayOptions (TheValue : TGtkCalendarDisplayOptions);
-    function GetDate : TDatetime;
-    procedure SetDate (TheValue : TDatetime);
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkCalendar;
-    function SelectMonth (aMonth:guint; aYear:guint) : integer;
-    procedure SelectDay (aDay:guint);
-    function MarkDay (aDay:guint) : integer;
-    function UnmarkDay (aDay:guint) : integer;
-    procedure ClearMarks;
-    property DisplayOptions : TGtkCalendarDisplayOptions read GetDisplayOptions write SetDisplayOptions;
-    property Date : TDatetime read GetDate write SetDate;
-    procedure Freeze;
-    procedure Thaw;
-    function ConnectMonthChanged (proc:TFPgtksignalFunction; data:pointer) : guint;
-    function ConnectAfterMonthChanged (proc:TFPgtksignalFunction; data:pointer) : guint;
-    function ConnectDaySelected (proc:TFPgtksignalFunction; data:pointer) : guint;
-    function ConnectAfterDaySelected (proc:TFPgtksignalFunction; data:pointer) : guint;
-    function ConnectDaySelectedDoubleClick (proc:TFPgtksignalFunction; data:pointer) : guint;
-    function ConnectAfterDaySelectedDoubleClick (proc:TFPgtksignalFunction; data:pointer) : guint;
-    function ConnectPrevMonth (proc:TFPgtksignalFunction; data:pointer) : guint;
-    function ConnectAfterPrevMonth (proc:TFPgtksignalFunction; data:pointer) : guint;
-    function ConnectNextMonth (proc:TFPgtksignalFunction; data:pointer) : guint;
-    function ConnectAfterNextMonth (proc:TFPgtksignalFunction; data:pointer) : guint;
-    function ConnectPrevYear (proc:TFPgtksignalFunction; data:pointer) : guint;
-    function ConnectAfterPrevYear (proc:TFPgtksignalFunction; data:pointer) : guint;
-    function ConnectNextYear (proc:TFPgtksignalFunction; data:pointer) : guint;
-    function ConnectAfterNextYear (proc:TFPgtksignalFunction; data:pointer) : guint;
-  end;
-
-
-  TFPgtkDrawingArea = class (TFPgtkWidget)
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkDrawingArea;
-    procedure SetSize (Width:integer; Height:integer);
-  end;
-
-
-  TFPgtkCurve = class (TFPgtkDrawingArea)
-  Private
-    function GetCurveType : TGtkCurveType;
-    procedure SetCurveType (TheValue : TGtkCurveType);
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkCurve;
-    procedure SetRange (MinX:float; MaxX:float; MinY:float; MaxY:float);
-    procedure Reset;
-    procedure SetGamma (GammaValue:float);
-    property CurveType : TGtkCurveType read GetCurveType write SetCurveType;
-  end;
-
-  TFPgtkInsertSignalFunction = procedure (Sender:TFPgtkObject; NewText:string; TextLength:integer; var Position:integer; data:pointer) of Object;
-  TFPgtkDeleteSignalFunction = procedure (Sender:TFPgtkObject; StartPos:integer; EndPos:integer; data:pointer) of Object;
-  TFPgtkXYSignalFunction = procedure (Sender:TFPgtkObject; x:integer; y:integer; data:pointer) of Object;
-  TFPgtkDirectionSignalFunction = procedure (Sender:TFPgtkObject; Direction:integer; data:pointer) of Object;
-  TFPgtkMoveWordSignalFunction = procedure (Sender:TFPgtkObject; NumWords:integer; data:pointer) of Object;
-  TFPgtkMovetoSignalFunction = procedure (Sender:TFPgtkObject; MoveTo:integer; data:pointer) of Object;
-
-  TFPgtkEditable = class (TFPgtkWidget)
-  Private
-    function GetEditable : boolean;
-    procedure SetEditable (TheValue : boolean);
-    function GetVisible : boolean;
-    procedure SetVisible (TheValue : boolean);
-    function GetPosition : integer;
-    procedure SetPosition (TheValue : integer);
-    function GetSelectionStart : integer;
-    procedure SetSelectionStart (TheValue : integer);
-    function GetSelectionEnd : integer;
-    procedure SetSelectionEnd (TheValue : integer);
-    function GetSelection : string;
-  Protected
-    function GetHasSelection : boolean; Dynamic;
-    procedure SetSelection (TheValue:string); Dynamic;
-    function GetText : string; Dynamic;
-    procedure SetText (TheValue:string); Dynamic; Abstract;
-  Public
-    function TheGtkObject : PGtkEditable;
-    property HasSelection : boolean read GetHasSelection;
-    property Editable : boolean read GetEditable write SetEditable;
-    property Visible : boolean read GetVisible write SetVisible;
-    property Position : integer read GetPosition write SetPosition;
-    property SelectionStart : integer read GetSelectionStart write SetSelectionStart;
-    property SelectionEnd : integer read GetSelectionEnd write SetSelectionEnd;
-    property Selection : string read GetSelection write SetSelection;
-    property Text : string read GetText write SetText;
-    procedure Changed;
-    procedure InsertText (NewText:string; AtPosition:integer);
-    procedure DeleteText (StartPos:integer; EndPos:integer);
-    procedure GetChars (StartPos:integer; EndPos:integer);
-    procedure CutClipboard;
-    procedure CopyClipboard;
-    procedure PasteClipboard;
-    procedure SelectRegion (StartPos:integer; EndPos:integer);
-    procedure ClaimSelection (claim:boolean; time:guint32);
-    procedure DeleteSelection;
-    procedure Clear;
-    function InsertSignalConnect (Signal:string; Proc:TFPgtkInsertSignalFunction; data:pointer) : guint;
-    function InsertSignalConnectAfter (Signal:string; Proc:TFPgtkInsertSignalFunction; data:pointer) : guint;
-    function DeleteSignalConnect (Signal:string; Proc:TFPgtkDeleteSignalFunction; data:pointer) : guint;
-    function DeleteSignalConnectAfter (Signal:string; Proc:TFPgtkDeleteSignalFunction; data:pointer) : guint;
-    function XYSignalConnect (Signal:string; Proc:TFPgtkXYSignalFunction; data:pointer) : guint;
-    function XYSignalConnectAfter (Signal:string; Proc:TFPgtkXYSignalFunction; data:pointer) : guint;
-    function DirectionSignalConnect (Signal:string; Proc:TFPgtkDirectionSignalFunction; data:pointer) : guint;
-    function DirectionSignalConnectAfter (Signal:string; Proc:TFPgtkDirectionSignalFunction; data:pointer) : guint;
-    function MoveWordSignalConnect (Signal:string; Proc:TFPgtkMoveWordSignalFunction; data:pointer) : guint;
-    function MoveWordSignalConnectAfter (Signal:string; Proc:TFPgtkMoveWordSignalFunction; data:pointer) : guint;
-    function MovetoSignalConnect (Signal:string; Proc:TFPgtkMovetoSignalFunction; data:pointer) : guint;
-    function MovetoSignalConnectAfter (Signal:string; Proc:TFPgtkMovetoSignalFunction; data:pointer) : guint;
-    function ConnectChanged (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectAfterChanged (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectActivate (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectAfterActivate (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectInsertText (proc:TFPgtkInsertSignalFunction; data:pointer) : guint;
-    function ConnectAfterInsertText (proc:TFPgtkInsertSignalFunction; data:pointer) : guint;
-    function ConnectDeleteText (proc:TFPgtkDeleteSignalFunction; data:pointer) : guint;
-    function ConnectAfterDeleteText (proc:TFPgtkDeleteSignalFunction; data:pointer) : guint;
-    function ConnectSetEditable (proc:TFPgtkBooleanSignalFunction; data:pointer) : guint;
-    function ConnectAfterSetEditable (proc:TFPgtkBooleanSignalFunction; data:pointer) : guint;
-    function ConnectMoveCursor (proc:TFPgtkXYSignalFunction; data:pointer) : guint;
-    function ConnectAfterMoveCursor (proc:TFPgtkXYSignalFunction; data:pointer) : guint;
-    function ConnectMoveWord (proc:TFPgtkMoveWordSignalFunction; data:pointer) : guint;
-    function ConnectAfterMoveWord (proc:TFPgtkMoveWordSignalFunction; data:pointer) : guint;
-    function ConnectMovePage (proc:TFPgtkXYSignalFunction; data:pointer) : guint;
-    function ConnectAfterMovePage (proc:TFPgtkXYSignalFunction; data:pointer) : guint;
-    function ConnectMoveToRow (proc:TFPgtkMoveToSignalFunction; data:pointer) : guint;
-    function ConnectAfterMoveToRow (proc:TFPgtkMoveToSignalFunction; data:pointer) : guint;
-    function ConnectMoveToCol (proc:TFPgtkMoveToSignalFunction; data:pointer) : guint;
-    function ConnectAfterMoveToCol (proc:TFPgtkMoveToSignalFunction; data:pointer) : guint;
-    function ConnectKillChar (proc:TFPgtkDirectionSignalFunction; data:pointer) : guint;
-    function ConnectAfterKillChar (proc:TFPgtkDirectionSignalFunction; data:pointer) : guint;
-    function ConnectKillWord (proc:TFPgtkDirectionSignalFunction; data:pointer) : guint;
-    function ConnectAfterKillWord (proc:TFPgtkDirectionSignalFunction; data:pointer) : guint;
-    function ConnectKillLine (proc:TFPgtkDirectionSignalFunction; data:pointer) : guint;
-    function ConnectAfterKillLine (proc:TFPgtkDirectionSignalFunction; data:pointer) : guint;
-    function ConnectCutClipboard (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectAfterCutClipboard (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectCopyClipboard (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectAfterCopyClipboard (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectPasteClipboard (proc:TFPgtkSignalFunction; data:pointer) : guint;
-    function ConnectAfterPasteClipboard (proc:TFPgtkSignalFunction; data:pointer) : guint;
-  end;
-
-
-  TFPgtkEntry = class (TFPgtkEditable)
-  Private
-    function GetVisibility : boolean;
-    procedure SetVisibility (TheValue : boolean);
-    function GetMaxLength : word;
-    procedure SetMaxLength (TheValue : word);
-  Protected
-    procedure CreateGtkObject; override;
-    procedure SetText (TheValue:string); Override;
-  Public
-    function TheGtkObject : PGtkEntry;
-    procedure AppendText (aText:string);
-    procedure PrependText (aText:string);
-    property Visibility : boolean read GetVisibility write SetVisibility;
-    property MaxLength : word read GetMaxLength write SetMaxLength;
-  end;
-
-
-  TFPgtkSpinButton = class (TFPgtkEntry)
-  Private
-    function GetAdjustment : TFPgtkAdjustment;
-    procedure SetAdjustment (TheValue : TFPgtkAdjustment);
-    function GetClimbRate : gfloat;
-    procedure SetClimbRate (TheValue : gfloat);
-    function GetDigits : integer;
-    procedure SetDigits (TheValue : integer);
-    function GetAsInteger : integer;
-    procedure SetAsInteger (TheValue : integer);
-    function GetAsFloat : gfloat;
-    procedure SetAsFloat (TheValue : gfloat);
-    function GetUpdatePolicy : TGtkSpinButtonUpdatePolicy;
-    procedure SetUpdatePolicy (TheValue : TGtkSpinButtonUpdatePolicy);
-    function GetNumeric : boolean;
-    procedure SetNumeric (TheValue : boolean);
-    function GetWrap : boolean;
-    procedure SetWrap (TheValue : boolean);
-    function GetShadowType : TGtkShadowType;
-    procedure SetShadowType (TheValue : TGtkShadowType);
-    function GetSnapToTicks : boolean;
-    procedure SetSnapToTicks (TheValue : boolean);
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkSpinButton;
-    procedure Configure (Adj:TFPgtkAdjustment; aClimbRate:gfloat; aDigits:integer);
-    property Adjustment : TFPgtkAdjustment read GetAdjustment write SetAdjustment;
-    property ClimbRate : gfloat read GetClimbRate write SetClimbRate;
-    property Digits : integer read GetDigits write SetDigits;
-    property AsInteger : integer read GetAsInteger write SetAsInteger;
-    property AsFloat : gfloat read GetAsFloat write SetAsFloat;
-    property UpdatePolicy : TGtkSpinButtonUpdatePolicy read GetUpdatePolicy write SetUpdatePolicy;
-    property Numeric : boolean read GetNumeric write SetNumeric;
-    procedure Spin (direction:TGtkSpinType; increment:gfloat);
-    property Wrap : boolean read GetWrap write SetWrap;
-    property ShadowType : TGtkShadowType read GetShadowType write SetShadowType;
-    property SnapToTicks : boolean read GetSnapToTicks write SetSnapToTicks;
-    procedure Update;
-  end;
-
-
-  TFPgtkText = class (TFPgtkEditable)
-  Private
-    FLines:TStrings;
-    FIsChanged:boolean;
-    procedure SigChanged (Sender:TFPgtkObject; data:pointer);
-    function GetLines : TStrings;
-    function GetWordWrap : boolean;
-    procedure SetWordWrap (TheValue : boolean);
-    function GetLineWrap : boolean;
-    procedure SetLineWrap (TheValue : boolean);
-    function GetPoint : integer;
-    procedure SetPoint (TheValue : integer);
-    function GetHAdjustment : TFPgtkAdjustment;
-    procedure SetHAdjustment (TheValue : TFPgtkAdjustment);
-    function GetVAdjustment : TFPgtkAdjustment;
-    procedure SetVAdjustment (TheValue : TFPgtkAdjustment);
-  Protected
-    procedure CreateGtkObject; override;
-    procedure RefreshLines;
-    procedure SetText (TheValue:string); Override;
-  Public
-    function TheGtkObject : PGtkText;
-    constructor Create;
-    destructor Destroy; Override;
-    property Lines : TStrings read GetLines;
-    procedure Freeze;
-    procedure Thaw;
-    function TextLength : guint;
-    procedure Insert (font:PgdkFont; fore:PgdkColor; back:PgdkColor; TheText:string);
-    procedure DeleteBackward (number:longword);
-    procedure DeleteForward (number:longword);
-    property WordWrap : boolean read GetWordWrap write SetWordWrap;
-    property LineWrap : boolean read GetLineWrap write SetLineWrap;
-    property Point : integer read GetPoint write SetPoint;
-    procedure SetAdjustments (hadj:TFPgtkAdjustment; vadj:TFPgtkAdjustment);
-    property HAdjustment : TFPgtkAdjustment read GetHAdjustment write SetHAdjustment;
-    property VAdjustment : TFPgtkAdjustment read GetVAdjustment write SetVAdjustment;
-  end;
-
-
-  TFPgtkRuler = class (TFPgtkWidget)
-  Public
-    function TheGtkObject : PGtkRuler;
-    procedure SetMetric (aMetric:TGtkMetricType);
-    procedure SetRange (Lower:float; Upper:float; Position:float; MaxSize:float);
-  end;
-
-
-  TFPgtkHRuler = class (TFPgtkRuler)
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkHRuler;
-  end;
-
-
-  TFPgtkVRuler = class (TFPgtkRuler)
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkVRuler;
-  end;
-
-
-  TFPgtkRange = class (TFPgtkWidget)
-  Private
-    function GetAdjustment : TFPgtkAdjustment;
-    procedure SetAdjustment (TheValue : TFPgtkAdjustment);
-    function GetUpdatePolicy : TgtkUpdateType;
-    procedure SetUpdatePolicy (TheValue : TgtkUpdateType);
-  Protected
-    FAdj:TFPgtkAdjustment;
-  Public
-    function TheGtkObject : PGtkRange;
-    property Adjustment : TFPgtkAdjustment read GetAdjustment write SetAdjustment;
-    property UpdatePolicy : TgtkUpdateType read GetUpdatePolicy write SetUpdatePolicy;
-    constructor Create (AnAdjustment:TFPgtkAdjustment);
-    procedure DrawBackground;
-    procedure DrawTrough;
-    procedure DrawStepForw;
-    procedure DrawStepBack;
-    procedure DrawSlider;
-    procedure SliderUpdate;
-    function TroughClick (X:integer; Y:integer; var JumpPerc:gfloat) : integer;
-    procedure DefaultHSliderUpdate;
-    procedure DefaultVSliderUpdate;
-    function DefaultHTroughClick (X:integer; Y:integer; var JumpPerc:gfloat) : integer;
-    function DefaultVTroughClick (X:integer; Y:integer; var JumpPerc:gfloat) : integer;
-    procedure defaultHMotion (XDelta:integer; YDelta:integer);
-    procedure defaultVMotion (XDelta:integer; YDelta:integer);
-    procedure ClearBackground;
-  end;
-
-
-  TFPgtkScale = class (TFPgtkRange)
-  Private
-    function GetDrawValue : boolean;
-    procedure SetDrawValue (TheValue : boolean);
-    function GetValuePos : TGtkPositionType;
-    procedure SetValuePos (TheValue : TGtkPositionType);
-  Public
-    function TheGtkObject : PGtkScale;
-    procedure SetDigits (TheValue:integer);
-    property DrawValue : boolean read GetDrawValue write SetDrawValue;
-    property ValuePos : TGtkPositionType read GetValuePos write SetValuePos;
-  end;
-
-
-  TFPgtkHScale = class (TFPgtkScale)
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkHScale;
-  end;
-
-
-  TFPgtkVScale = class (TFPgtkScale)
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkVScale;
-  end;
-
-
-  TFPgtkScrollbar = class (TFPgtkRange)
-  Public
-    function TheGtkObject : PGtkScrollbar;
-  end;
-
-
-  TFPgtkHScrollbar = class (TFPgtkScrollbar)
-  Protected
-    procedure CreateGtkObject; Override;
-  Public
-    function TheGtkObject : PGtkHScrollbar;
-  end;
-
-
-  TFPgtkVScrollbar = class (TFPgtkScrollbar)
-  Protected
-    procedure CreateGtkObject; Override;
-  Public
-  end;
-
-
-  TFPgtkSeparator = class (TFPgtkWidget)
-  Public
-    function TheGtkObject : PGtkSeparator;
-  end;
-
-
-  TFPgtkHSeparator = class (TFPgtkSeparator)
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkHSeparator;
-  end;
-
-
-  TFPgtkVSeparator = class (TFPgtkSeparator)
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkVSeparator;
-  end;
-
-
-  TFPgtkPreview = class (TFPgtkWidget)
-  Private
-    function GetExpand : longbool;
-    procedure SetExpand (TheValue : longbool);
-    function GetDither : TGdkRgbDither;
-    procedure SetDither (TheValue : TGdkRgbDither);
-  Protected
-    procedure CreateGtkObject; override;
-  Public
-    function TheGtkObject : PGtkPreview;
-    procedure Size (aWidth:integer; aHeight:integer);
-    procedure Put (aWindow:PGdkWindow; gc:PGdkGC; SrcX:integer; SrcY:integer; destX:integer; DestY:integer; aWidth:integer; aHeight:integer);
-    procedure DrawRow (data:pguchar; X:integer; Y:integer; W:integer);
-    property Expand : longbool read GetExpand write SetExpand;
-    property Dither : TGdkRgbDither read GetDither write SetDither;
-  end;
-
-
-  TFPgtkProgress = class (TFPgtkWidget)
-  Private
-    function GetShowtext : longbool;
-    procedure SetShowtext (TheValue : longbool);
-    function GetTextXAlign : gfloat;
-    procedure SetTextXAlign (TheValue : gfloat);
-    function GetTextYAlign : gfloat;
-    procedure SetTextYAlign (TheValue : gfloat);
-    function GetCurrentValue : float;
-    procedure SetCurrentValue (TheValue : float);
-    function GetPercentage : float;
-    procedure SetPercentage (TheValue : float);
-    function GetFormatString : string;
-    procedure SetFormatString (TheValue : string);
-    function GetAdjustment : TFPgtkAdjustment;
-    procedure SetAdjustment (TheValue : TFPgtkAdjustment);
-    function GetActivityMode : longbool;
-    procedure SetActivityMode (TheValue : longbool);
-  Public
-    function TheGtkObject : PGtkProgress;
-    property Showtext : longbool read GetShowtext write SetShowtext;
-    property TextXAlign : gfloat read GetTextXAlign write SetTextXAlign;
-    property TextYAlign : gfloat read GetTextYAlign write SetTextYAlign;
-    procedure SetTextAlignment (anXalign:gfloat; anYAlign:gfloat);
-    property CurrentValue : float read GetCurrentValue write SetCurrentValue;
-    property Percentage : float read GetPercentage write SetPercentage;
-    function PercentageFromValue (aValue:gfloat) : gfloat;
-    property FormatString : string read GetFormatString write SetFormatString;
-    property Adjustment : TFPgtkAdjustment read GetAdjustment write SetAdjustment;
-    property ActivityMode : longbool read GetActivityMode write SetActivityMode;
-    function CurrentText : string;
-    function TextFromValue (aValue:gfloat) : string;
-    procedure Configure (aValue:gfloat; aMin:gfloat; aMax:gfloat);
-  end;
-
-
-  TFPgtkProgressBar = class (TFPgtkProgress)
-  Private
-    FAdj:TFPgtkAdjustment;
-    function GetBarStyle : TGtkProgressBarStyle;
-    procedure SetBarStyle (TheValue : TGtkProgressBarStyle);
-    function GetDiscreteBlocks : longword;
-    procedure SetDiscreteBlocks (TheValue : longword);
-    function GetActivityStep : longword;
-    procedure SetActivityStep (TheValue : longword);
-    function GetActivityBlocks : longword;
-    procedure SetActivityBlocks (TheValue : longword);
-    function GetOrientation : TGtkProgressBarOrientation;
-    procedure SetOrientation (TheValue : TGtkProgressBarOrientation);
-  Protected
-    procedure CreateGtkObject; Override;
-  Public
-    function TheGtkObject : PGtkProgressBar;
-    constructor Create (adj:TFPgtkAdjustment);
-    property BarStyle : TGtkProgressBarStyle read GetBarStyle write SetBarStyle;
-    property DiscreteBlocks : longword read GetDiscreteBlocks write SetDiscreteBlocks;
-    property ActivityStep : longword read GetActivityStep write SetActivityStep;
-    property ActivityBlocks : longword read GetActivityBlocks write SetActivityBlocks;
-    property Orientation : TGtkProgressBarOrientation read GetOrientation write SetOrientation;
-  end;
-
-
-  TFPgtkItemFactory = class (TFPgtkObject)
-  Public
-  end;
-
-{ TFPgtkToolTips }
-var 
-  TheTooltips : TFPgtkTooltips;
-{ TFPgtkButton }
-const
-  DefaultButtonModifiers : TGdkModifierType = GDK_MOD1_MASK;
-{ TFPgtkWindow }
-const
-  drNone = 0;
-  drOk = 1;
-  drCancel = 2;
-  drYes = 3;
-  drNo = 4;
-  drRetry = 5;
-  NoMainLevel = high (guint);
-{ TFPgtkFontSelection }
-resourcestring
-  sFontNotFound = 'Can''t find font "%s" on this system';
-
-Const
-// TFPgtkObject
-  sgDestroy = 'destroy';
-// TFPgtkData
-  sgDisconnect = 'disconnect';
-// TFPgtkAdjustment
-  sgValueChanged = 'value_changed';
-  sgChanged = 'changed';
-// TFPgtkWidget
-  sgShow = 'show';
-  sghide = 'hide';
-  sgmap = 'map';
-  sgunmap = 'unmap';
-  sgrealize = 'realize';
-  sgunrealize = 'unrealize';
-  sgDrawFocus = 'draw-focus';
-  sgDrawDefault = 'draw-defaut';
-  sgParentSet = 'parent-set';
-  sgGrabFocus = 'grab-focus';
-  sgEvent = 'event';
-  sgButtonPressEvent = 'button-press-event';
-  sgButtonReleaseEvent = 'button-release-event';
-  sgMotionNotifyEvent = 'motion-notify-event';
-  sgDeleteEvent = 'delete-event';
-  sgDestroyEvent = 'destroy-event';
-  sgExposeEvent = 'expose-event';
-  sgKeyPressEvent = 'key-press-event';
-  sgKeyReleaseEvent = 'key-release-event';
-  sgEnterNotifyEvent = 'enter-notify-event';
-  sgLeaveNotifyEvent = 'leave-notify-event';
-  sgConfigureEvent = 'configure-event';
-  sgFocusInEvent = 'focus-in-event';
-  sgFocusOutEvent = 'focus-out-event';
-  sgMapEvent = 'map-event';
-  sgUnmapEvent = 'unmap-event';
-  sgPropertyNotifyEvent = 'property-notify-event';
-  sgSelectionClearEvent = 'selection-clear-event';
-  sgSelectionRequestEvent = 'selection-request-event';
-  sgSelectionNotifyEvent = 'selection-notify-event';
-  sgProximityInEvent = 'proximity-in-event';
-  sgProximityOutEvent = 'proximity-out-event';
-  sgClientEvent = 'client-event';
-  sgNoExposeEvent = 'no-expose-event';
-  sgVisibilityNotifyEvent = 'visibility-notify-event';
-// TFPgtkContainer
-  sgAdd = 'add';
-  sgRemove = 'remove';
-  sgCheckResize = 'check-resize';
-  sgFocus = 'focus';
-  sgSetFocusChild = 'set-focus';
-// TFPgtkButton
-  sgClicked = 'clicked';
-  sgPressed = 'pressed';
-  sgReleased = 'released';
-  sgEnter = 'enter';
-  sgLeave = 'leave';
-// TFPgtkToggleButton
-  sgToggled = 'toggled';
-// TFPgtkItem
-  sgSelect = 'select';
-  sgDeselect = 'deselect';
-  sgToggle = 'toggle';
-// TFPgtkMenuItem
-  sgActivate = 'activate';
-  sgActivateItem = 'activate-item';
-// TFPgtkListItem
-  sgToggleFocusRow = 'toggle-focus-row';
-  sgSelectAll = 'select-all';
-  sgUnselectAll = 'unselect-all';
-  sgUndoSelection = 'undo-selection';
-  sgStartSelection = 'start-selection';
-  sgEndSelection = 'end-selection';
-  sgToggleAddMode = 'toggle-add-mode';
-  sgExtendSelection = 'extend-selection';
-  sgScrollVertical = 'scroll-vertical';
-  sgScrollHorizontal = 'scroll-horizontal';
-// TFPgtkTreeItem
-  sgCollapse = 'collapse';
-  sgExpand = 'expand';
-// TFPgtkWindow
-  sgSetFocus = 'set-focus';
-// TFPgtkInputDialog
-  sgEnableDevice = 'enable-device';
-  sgDisableDevice = 'disable-device';
-// TFPgtkHandleBox
-  sgChildAttached = 'child-attached';
-  sgChildDetached = 'child-detached';
-// TFPgtkStatusbar
-  sgTextPopped = 'text-popped';
-  sgTextPushed = 'test-pushed';
-// TFPgtkCList
-  sgSelectRow = 'select-row';
-  sgUnselectRow = 'unselect-row';
-  sgRowMove = 'row-move';
-  sgScrolHorizontal = 'scroll-horizontal';
-  sgAbortColumnResize = 'abort-column-resize';
-  sgClickColumn = 'click-column';
-  sgResizeColumn = 'resize-column';
-// TFPgtkNotebook
-  sgSwitchPage = 'switch-page';
-// TFPgtkList
-  sgSelectionChanged = 'selection-changed';
-  sgSelectChild = 'select-child';
-  sgUnselectChild = 'unselect-child';
-// TFPgtkMenuShell
-  sgDeActivate = 'deactivate';
-  sgSelectionDone = 'selection-done';
-  sgCancel = 'cancel';
-  sgMoveCurrent = 'move-current';
-  sgActivateCurrent = 'activate-current';
-// TFPgtkCalendar
-  sgMonthChanged = 'month-changed';
-  sgDaySelected = 'day-selected';
-  sgDaySelectedDoubleClick = 'day-selected-double-click';
-  sgPrevMonth = 'prev-month';
-  sgNextMonth = 'next-month';
-  sgPrevYear = 'prev-year';
-  sgNextYear = 'next-year';
-// TFPgtkEditable
-  sgInsertText = 'insert-text';
-  sgDeleteText = 'delete-text';
-  sgSetEditable = 'set-editable';
-  sgMoveCursor = 'move-cursor';
-  sgMoveWord = 'move-word';
-  sgMovePage = 'move-page';
-  sgMoveToRow = 'move-to-row';
-  sgMoveToCol = 'move-to-column';
-  sgKillChar = 'kill-char';
-  sgKillWord = 'kill-word';
-  sgKillLine = 'kill-line';
-  sgCutClipboard = 'cut-clipboard';
-  sgCopyClipboard = 'copy-clipboard';
-  sgPasteClipboard = 'paste-clipboard';
-
-// TFPgtkObject
-function GetPascalInstance (gtkObject:PGtkObject; ObjClass:TFPgtkObjectClass) : TFPgtkObject; Overload;
-function GetPascalInstance (gtkObject:PGtkObject) : TFPgtkObject; Overload;
-function ConvertToGtkObject (AnObject:TFPgtkObject) : PGtkObject;
-function ConvertToPgChar (AString:string) : PgChar;
-function FreeFPgtkObjects (Data:pointer) : longbool; Cdecl;
-procedure DestroyData (data:pointer); Cdecl;
-function IntToPointer (Value:integer) : pointer;
-function PointerToInt (Value:pointer) : integer;
-// TFPgtkToolTips
-function GetTooltipsData (Widget:TFPgtkWidget) : PGtkTooltipsData;
-function ComposeTooltip (TooltipText:string; PrivText:string) : string;
-procedure DecomposeTooltip (Tooltip:string; var TooltipText:string; var PrivText:string);
-// TFPgtkWidget
-function GetPascalInstance (Widget:PGtkWidget) : TFPgtkWidget; Overload;
-function GetPascalInstance (Widget:PGtkWidget; ObjClass:TFPgtkObjectClass) : TFPgtkWidget; Overload;
-function ConvertToGtkWidget (AnObject:TFPgtkWidget) : PGtkWidget;
-// TFPgtkImage
-function NewImage (aWidth:integer; aHeight:integer) : PGdkImage;
-// TFPgtkPixmap
-function StringsToPPgchar (Data:TStrings) : PPgchar;
-function ArrayToPPgchar (Data:array of string) : PPgchar;
-procedure CreateGdkPixmap (var ThePixmap:PGdkPixmap; var TheMask:PGdkBitmap; aWindow:PGdkWindow; data:array of string);
-// TFPgtkRadioButtonGroup
-function RadioButtonGroupCreateFromStrings (TheItems:TStrings; ToggledFunction:TFPgtkSignalFunction) : TFPgtkRadioButtonGroup;
-// TFPgtkWindow
-procedure AcceleratorAdd (AG:PGtkAccelGroup; aWidget:TFPgtkWidget; aSignal:string; Key:guint; Mods:TGdkModifierType; Flags:TGtkAccelFlags);
-procedure AcceleratorRemove (AG:PGtkAccelGroup; aWidget:TFPgtkWidget; Key:guint; Mods:TGdkModifierType); Overload;
-procedure AccelGroupLock (AG:PGtkAccelGroup);
-procedure AccelGroupUnlock (AG:PGtkAccelGroup);
-function AccelKeyName (Key:guint; Mods:TGdkModifierType) : string;
-procedure AccelKeyParse (AccelName:string; var Key:guint; var Mods:TGdkModifierType);
-procedure AccelGroupActivate (AG:PGtkAccelGroup; Key:guint; Mods:TGdkModifierType);
-// TFPgtkButtonBox
-procedure SetButtonBoxDefaultSize (aMinWidth:integer; aMinHeight:integer);
-procedure GetButtonBoxDefaultSize (var aMinWidth:integer; var aMinHeight:integer);
-procedure SetButtonBoxDefaultPadding (aIPadX:integer; aIPadY:integer);
-procedure GetButtonBoxDefaultPadding (var aIPadX:integer; var aIPadY:integer);
-// TFPgtkPreview
-procedure SetGamma (aGamma:double);
-
-IMPLEMENTATION
-
- { TFPgtkObject }
-
-function TFPgtkObject.TheGtkObject : PGtkObject;
-begin
-  result := PgtkObject(FGtkObject);
-end;
-
-const
-  dtPascalInstance = 'Pascal_Instance';
-
-type
-  TIntegerPointer = record
-    case word of 
-      0 : (i : integer);
-      1 : (p : pointer);
-  end;
-
-var
-  ObjectsToFree : TList;
-  ip : TIntegerPointer;
-
-procedure Signalproc (Sender:PGtkobject; Data:pointer); cdecl;
-var p : TFPgtkSignalFunction;
-begin
-with PSignalData(data)^ do
-  begin
-  p := TFPgtkSignalFunction (TheSignalProc);
-  p (TheWidget as TFPgtkObject, TheData)
-  end;
-end;
-
-function TFPgtkObject.SignalConnect (signal:string; proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@Signalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkObject.SignalConnectAfter (signal:string; proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@Signalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-procedure BooleanSignalproc (Sender:PGtkobject; Bool:boolean; data:pointer); cdecl;
-var p : TFPgtkBooleanSignalFunction;
-begin
-with PSignalData(data)^ do
-  begin
-  p := TFPgtkBooleanSignalFunction (TheSignalProc);
-  p (TheWidget as TFPgtkObject, Bool, TheData)
-  end;
-end;
-
-function TFPgtkObject.BooleanSignalConnect (signal:string; proc:TFPgtkBooleanSignalFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@BooleanSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkObject.BooleanSignalConnectAfter (signal:string; proc:TFPgtkBooleanSignalFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@BooleanSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function GetPascalInstance (gtkObject:PGtkObject; ObjClass:TFPgtkObjectClass) : TFPgtkObject; Overload;
-begin
-  result := GetPascalInstance(GtkObject);
-  if not assigned(result) and assigned(GtkObject) then
-    result := ObjClass.CreateFromObject (GtkObject);
-end;
-
-
-function GetPascalInstance (gtkObject:PGtkObject) : TFPgtkObject; Overload;
-var p : pointer;
-begin
-  result := nil;
-  if assigned (gtkobject) then
-    begin
-    p := gtk_object_get_data (gtkObject, dtPascalInstance);
-    if assigned(p) then
-      result := PPascalClassData(p)^.TheInstance;
-    end;
-end;
-
-
-function ConvertToGtkObject (AnObject:TFPgtkObject) : PGtkObject;
-begin
-  if assigned(AnObject) then
-    result := AnObject.TheGtkObject
-  else
-    result := nil;
-end;
-
-
-function ConvertToPgChar (AString:string) : PgChar;
-begin
-  result := pointer(aString);
-end;
-
-
-function TFPgtkObject.ConvertSignalData (proc:TFPgtkSignalFunction; data:pointer; FreeIt:boolean) : PSignalData;
-begin
-  new (result);
-  with result^ do
-    begin
-    TheSignalProc := proc;
-    TheWidget := self;
-    TheData := data;
-    end;
-  if FreeIt then
-    SignalDatas.Add (result);
-end;
-
-function FreeFPgtkObjects (Data:pointer) : longbool; Cdecl;
-var r : integer;
-    obj : TFPgtkObject;
-begin
-  for r := ObjectsToFree.Count-1 downto 0 do
-    begin
-    obj := TFPgtkObject(ObjectsToFree[r]);
-    if assigned (Obj) then
-      Obj.Free;
-    end;
-  ObjectsToFree.Clear;
-  result := False;
-end;
-
-
-procedure TFPgtkObject.FreeClass (Sender:TFPgtkObject; Data:pointer);
-begin
-  if FDestroying = dsAlive then
-    begin
-    if ObjectsToFree.Count = 0 then
-      g_idle_Add (@FreeFPgtkObjects, null);
-    ObjectsToFree.Add (self);
-    FGtkObject := null;
-    FDestroying := dsWaiting;
-    end;
-end;
-
-procedure TFPgtkObject.CheckConvertDatas;
-begin
-  if not assigned (ConvertDatas) then
-    begin
-    ConvertDatas := TStringList.Create;
-    ConvertDatas.Sorted := True;
-    end;
-end;
-
-procedure TFPgtkObject.CheckNotifyList;
-begin
-  if not assigned (Notifylist) then
-    NotifyList := TList.Create;
-end;
-
-procedure TFPgtkObject.InitCreate;
-begin
-  inherited create;
-  SignalDatas := TList.Create;
-end;
-
-procedure TFPgtkObject.FinalCreate;
-begin
-  PascalInstance.TheInstance := Self;
-  SetData (dtPascalInstance, @PascalInstance);
-  ConnectDestroy (@FreeClass, nil);
-end;
-
-constructor TFPgtkObject.Create;
-begin
-  InitCreate;
-  CreateGtkObject;
-  FinalCreate;
-end;
-
-
-constructor TFPgtkObject.CreateFromObject (GtkObject:PGtkObject);
-begin
-  InitCreate;
-  FGtkObject := GtkObject;
-  FinalCreate;
-end;
-
-
-procedure TFPgtkObject.AskNotification (AnObject:TFPgtkObject);
-begin
-  CheckNotifyList;
-  with NotifyList do
-    if indexof(AnObject) < 0 then
-      begin
-      Add (AnObject);
-      AnObject.AskNotification (Self);
-      end;
-end;
-
-destructor TFPgtkObject.Destroy;
-var r : integer;
-    datapointer : PSignalData;
-begin
-  FDestroying := dsDestroying;
-  if assigned(NotifyList) then
-    begin
-    for r := 0 to NotifyList.count-1 do
-      TFPgtkObject(NotifyList[r]).NotifyDestroy (Self);
-    NotifyList.Free;
-    NotifyList := nil;
-    end;
-  if assigned(FGtkObject) and not Gtk_Object_destroyed(FGtkObject) then
-    begin
-    gtk_object_destroy (FGtkObject);
-    FGtkObject := nil;
-    end;
-  for r := 0 to SignalDatas.count-1 do
-    begin
-    datapointer := signaldatas[r];
-    dispose (datapointer);
-    end;
-  signaldatas.Free;
-  if assigned (convertDatas) then
-    ConvertDatas.Free;
-  r := ObjectsToFree.indexof (self);
-  if r >= 0 then
-    ObjectsToFree[r] := nil;
-  inherited destroy;
-end;
-
-
-procedure TFPgtkObject.NotifyDestroy (AnObject:TFPgtkObject);
-var r : integer;
-begin
-  if assigned(NotifyList) then
-    begin
-    r := NotifyList.indexOf (AnObject);
-    if r >= 0 then
-      NotifyList.Delete (r);
-    end;
-end;
-
-function TFPgtkObject.ConnectDestroy (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnect (sgDestroy, proc, data);
-end;
-
-function TFPgtkObject.ConnectAfterDestroy (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnectAfter (sgDestroy, proc, data);
-end;
-
-procedure TFPgtkObject.SignalDisconnect (SignalHandler:guint);
-begin
-  gtk_signal_disconnect (TheGtkObject, SignalHandler);
-end;
-
-procedure TFPgtkObject.SignalBlockHandler (SignalHandler:guint);
-begin
-  gtk_signal_handler_block (TheGtkObject, SignalHandler);
-end;
-
-procedure TFPgtkObject.SignalUnblockHandler (SignalHandler:guint);
-begin
-  gtk_signal_handler_unblock (TheGtkObject, SignalHandler);
-end;
-
-procedure TFPgtkObject.SignalEmit (aName:string; Args:array of const);
-begin
-  gtk_signal_emit_by_name (TheGtkObject, pgchar(aName), Args);
-end;
-
-function TFPgtkObject.SignalNEmissions (aName:string) : guint;
-begin
-  result := gtk_signal_n_emissions_by_name (FGtkObject, pgchar(aName));
-end;
-
-procedure TFPgtkObject.SignalEmitStop (aName:string);
-begin
-  gtk_signal_emit_stop_by_name (FGtkObject, pgchar(aName));
-end;
-
-procedure TFPgtkObject.SetData (Key:string; Data:pointer);
-begin
-  gtk_object_set_data (TheGtkObject, ConvertToPgchar(Key), Data);
-end;
-
-function TFPgtkObject.GetUserData : pointer;
-begin
-  result := gtk_object_get_user_data(TheGtkObject);
-end;
-
-procedure TFPgtkObject.SetUserData (TheValue:pointer);
-begin
-  gtk_object_set_user_data(TheGtkObject,TheValue);
-end;
-
-procedure TFPgtkObject.SetDataFull (Key:string; Data:pointer; Destroyer:TFPgtkSignalFunction);
-begin
-  gtk_object_set_data_full (TheGtkObject, pgChar(Key), ConvertSignalData (Destroyer, data, false), TGtkDestroyNotify(@DestroyData));
-  CheckConvertDatas;
-  ConvertDatas.Add (Key);
-end;
-
-procedure TFPgtkObject.RemoveData (Key:string);
-var r : integer;
-begin
-  gtk_object_remove_data (TheGtkObject, pgChar(Key));
-  if assigned (ConvertDatas) then
-    begin
-    r := ConvertDatas.indexof (Key);
-    if r >= 0 then
-    ConvertDatas.Delete (r);
-    end;
-end;
-
-function TFPgtkObject.GetData (Key:string) : pointer;
-var p  : pointer;
-begin
-  p := gtk_object_get_data (TheGtkObject, pgChar(Key));
-  if assigned(ConvertDatas) and (ConvertDatas.IndexOf (Key) >= 0) then
-    result := PPascalClassData (PSignalData(p)^.TheData)^.TheInstance
-  else
-    result := p;
-end;
-
-procedure DestroyData (data:pointer); Cdecl;
-begin
-  with PSignaldata(data)^ do
-    TheSignalProc (TheWidget, TheData);
-end;
-
-
-function IntToPointer (Value:integer) : pointer;
-begin
-  ip.i := Value;
-  result := ip.p;
-end;
-
-
-function PointerToInt (Value:pointer) : integer;
-begin
-  ip.p := Value;
-  result := ip.i;
-end;
-
-
-function TFPgtkObject.GtkDestroyed : boolean;
-begin
-  result := gtk_object_destroyed (TheGtkObject);
-end;
-
-procedure TFPgtkObject.Constructed;
-begin
-  gtk_object_constructed (TheGtkObject);
-end;
-
-procedure TFPgtkObject.ConstructedDefault;
-begin
-  gtk_object_default_construct (TheGtkObject);
-end;
-
-procedure TFPgtkObject.Sink;
-begin
-  gtk_object_sink (TheGtkObject);
-end;
-
-procedure TFPgtkObject.Ref;
-begin
-  gtk_object_ref (TheGtkObject);
-end;
-
-procedure TFPgtkObject.Unref;
-begin
-  gtk_object_unref (TheGtkObject);
-end;
-
-procedure TFPgtkObject.WeakRef (Notify:TFPgtkSignalFunction; data:pointer);
-begin
-  gtk_object_weakref (TheGtkObject, TGtkDestroyNotify(@DestroyData), ConvertSignalData (Notify, data, true));
-end;
-
-procedure TFPgtkObject.WeakUnref (notify:TFPgtkSignalFunction; data:pointer);
-begin
-  gtk_object_weakunref (TheGtkObject, TGtkDestroyNotify(@DestroyData), ConvertSignalData (Notify, data, true));
-end;
-
- { TFPgtkData }
-
-function TFPgtkData.TheGtkObject : PGtkData;
-begin
-  result := PgtkData(FGtkObject);
-end;
-
-
-function TFPgtkData.ConnectDisconnect (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnect (sgDisconnect, proc, data);
-end;
-
-function TFPgtkData.ConnectAfterDisconnect (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnectAfter (sgDisconnect, proc, data);
-end;
-
- { TFPgtkAdjustment }
-
-function TFPgtkAdjustment.TheGtkObject : PGtkAdjustment;
-begin
-  result := PgtkAdjustment(FGtkObject);
-end;
-
-procedure TFPgtkAdjustment.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_Adjustment_new (0,0,10,1,2,2));
-end;
-
-
-procedure TFPgtkAdjustment.Configure (aLower:gfloat; anUpper:gfloat; aValue:gfloat; aStepInc:gfloat; aPageInc:gfloat; aPageSize:gfloat);
-begin
-  Lower := aLower;
-  Upper := anUpper;
-  Value := aValue;
-  StepIncrement := aStepInc;
-  PageIncrement := aPageInc;
-  PageSize := aPageSize;
-end;
-
-function TFPgtkAdjustment.ConnectValueChanged (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnect (sgValueChanged, proc, data);
-end;
-
-function TFPgtkAdjustment.ConnectAfterValueChanged (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnectAfter (sgValueChanged, proc, data);
-end;
-
-function TFPgtkAdjustment.ConnectChanged (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnect (sgChanged, proc, data);
-end;
-
-function TFPgtkAdjustment.ConnectAfterChanged (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnectAfter (sgChanged, proc, data);
-end;
-
-procedure TFPgtkAdjustment.ValueChanged;
-begin
-  gtk_Adjustment_Value_Changed (TheGtkObject);
-end;
-
-procedure TFPgtkAdjustment.Changed;
-begin
-  gtk_Adjustment_Changed (TheGtkObject);
-end;
-
-procedure TFPgtkAdjustment.ClampPage (aLower:gfloat; aUpper:gfloat);
-begin
-  gtk_Adjustment_Clamp_Page (TheGtkObject, aLower, aUpper);
-end;
-
-function TFPgtkAdjustment.GetValue : gfloat;
-begin
-  result := TheGtkObject^.Value;
-end;
-
-procedure TFPgtkAdjustment.SetValue (TheValue:gfloat);
-begin
-  gtk_Adjustment_set_Value(TheGtkObject,TheValue);
-end;
-
-function TFPgtkAdjustment.GetLower : gfloat;
-begin
-  result := TheGtkObject^.Lower;
-end;
-
-procedure TFPgtkAdjustment.SetLower (TheValue:gfloat);
-begin
-  TheGtkObject^.Lower := TheValue;
-end;
-
-function TFPgtkAdjustment.GetUpper : gfloat;
-begin
-  result := TheGtkObject^.Upper;
-end;
-
-procedure TFPgtkAdjustment.SetUpper (TheValue:gfloat);
-begin
-  TheGtkObject^.Upper := TheValue;
-end;
-
-function TFPgtkAdjustment.GetStepIncrement : gfloat;
-begin
-  result := TheGtkObject^.Step_Increment;
-end;
-
-procedure TFPgtkAdjustment.SetStepIncrement (TheValue:gfloat);
-begin
-  TheGtkObject^.Step_Increment := TheValue;
-end;
-
-function TFPgtkAdjustment.GetPageIncrement : gfloat;
-begin
-  result := TheGtkObject^.Page_Increment;
-end;
-
-procedure TFPgtkAdjustment.SetPageIncrement (TheValue:gfloat);
-begin
-  TheGtkObject^.Page_increment := TheValue;
-end;
-
-function TFPgtkAdjustment.GetPageSize : gfloat;
-begin
-  result := TheGtkObject^.Page_Size;
-end;
-
-procedure TFPgtkAdjustment.SetPageSize (TheValue:gfloat);
-begin
-  TheGtkObject^.Page_Size := TheValue;
-end;
-
- { TFPgtkToolTips }
-
-function TFPgtkToolTips.TheGtkObject : PGtkToolTips;
-begin
-  result := PgtkToolTips(FGtkObject);
-end;
-
-procedure TFPgtkToolTips.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_tooltips_new);
-end;
-
-
-procedure TFPgtkToolTips.SetColors (Fore:PGdkColor; Back:PGdkColor);
-begin
-  gtk_tooltips_set_colors (TheGtkObject, Fore, Back);
-end;
-
-procedure TFPgtkToolTips.SetTip (Widget:TFPgtkWidget; TipText:string; TipPrivate:string);
-begin
-  gtk_tooltips_set_tip (TheGtkObject, PGtkwidget(ConvertToGtkObject(Widget)), ConvertToPgchar(TipText), ConvertToPgchar(TipPrivate));
-end;
-
-function TFPgtkToolTips.GetEnabled : boolean;
-begin
-  result := boolean(gtk.enabled(TheGtkObject^));
-end;
-
-procedure TFPgtkToolTips.SetEnabled (TheValue:boolean);
-begin
-  if TheValue then
-    gtk_tooltips_enable (TheGtkObject)
-  else
-    gtk_tooltips_disable (TheGtkObject);
-end;
-
-function TFPgtkToolTips.GetDelay : integer;
-begin
-  result := gtk.delay(TheGtkObject^);
-end;
-
-procedure TFPgtkToolTips.SetDelay (TheValue:integer);
-begin
-  gtk_tooltips_set_delay(TheGtkObject,TheValue);
-end;
-
-function TFPgtkToolTips.GetColorForeground : PGdkColor;
-begin
-  result := TheGtkObject^.foreground;
-end;
-
-procedure TFPgtkToolTips.SetColorForeground (TheValue:PGdkColor);
-begin
-  SetColors (TheValue, ColorBackGround);
-end;
-
-function TFPgtkToolTips.GetColorBackground : PGdkColor;
-begin
-  result := TheGtkObject^.background;
-end;
-
-procedure TFPgtkToolTips.SetColorBackground (TheValue:PGdkColor);
-begin
-  SetColors (ColorForeground, TheValue);
-end;
-
-function GetTooltipsData (Widget:TFPgtkWidget) : PGtkTooltipsData;
-begin
-  result := gtk_tooltips_data_get (ConvertToGtkWidget(Widget));
-end;
-
-
-function ComposeTooltip (TooltipText:string; PrivText:string) : string;
-begin
-  result := TooltipText;
-  if PrivText <> '' then
-    result := result + '|' + PrivText;
-end;
-
-
-procedure DecomposeTooltip (Tooltip:string; var TooltipText:string; var PrivText:string);
-var r : integer;
-begin
-  r := pos ('|', tooltip);
-  if r > 0 then
-    begin
-    TooltipText := copy(Tooltip, 1, r-1);
-    PrivText := copy (Tooltip, r+1, maxint);
-    end
-  else
-    begin
-    TooltipText := Tooltip;
-    PrivText := '';
-    end;
-end;
-
-
-procedure CheckTooltips;
-begin
-if not assigned (TheTooltips) then
-  TheTooltips := TFPgtkTooltips.Create;
-end;
-
-
-procedure TFPgtkToolTips.ForceWindow;
-begin
-  gtk_tooltips_force_window (TheGtkObject);
-end;
-
- { TFPgtkWidget }
-
-function TFPgtkWidget.TheGtkObject : PGtkWidget;
-begin
-  result := PgtkWidget(FGtkObject);
-end;
-
-
-function TFPgtkWidget.GetTheGtkWidget : PGtkWidget;
-begin
-  result := PGtkWidget (TheGtkObject);
-end;
-
-procedure TFPgtkWidget.SetTheGtkWidget (TheValue:PGtkWidget);
-begin
-  FGtkObject := PgtkObject (TheValue);
-end;
-
-function GetPascalInstance (Widget:PGtkWidget) : TFPgtkWidget; Overload;
-begin
-  result := TFPgtkWidget (GetPascalInstance (PGtkObject(widget)));
-end;
-
-
-function GetPascalInstance (Widget:PGtkWidget; ObjClass:TFPgtkObjectClass) : TFPgtkWidget; Overload;
-begin
-  result := TFPgtkWidget (GetPascalInstance (PGtkObject(Widget), ObjClass));
-end;
-
-
-function ConvertToGtkWidget (AnObject:TFPgtkWidget) : PGtkWidget;
-begin
-  if assigned(AnObject) then
-    result := AnObject.TheGtkWidget
-  else
-    result := nil;
-end;
-
-
-procedure WidgetSignalproc (Sender:PGtkobject; Widget:PGtkwidget; Data:pointer); cdecl;
-var p : TFPgtkWidgetSignalFunction;
-begin
-with PSignalData(data)^ do
-  begin
-  p := TFPgtkWidgetSignalFunction (TheSignalProc);
-  p (TheWidget as TFPgtkObject, GetPascalInstance(PGtkObject(Widget),TFPgtkwidget) as TFPgtkwidget, TheData)
-  end;
-end;
-
-function TFPgtkWidget.WidgetSignalConnect (signal:string; proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@WidgetSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkWidget.WidgetSignalConnectAfter (signal:string; proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@WidgetSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-procedure TFPgtkWidget.SetFlags (NewFlags:longint);
-begin
-  gtk_widget_set_flags (TheGtkObject, NewFlags);
-end;
-
-procedure TFPgtkWidget.UnsetFlags (NewUnsetFlags:longint);
-begin
-  gtk_widget_unset_flags (TheGtkObject, NewUnsetFlags);
-end;
-
-procedure TFPgtkWidget.Map;
-begin
-  gtk_widget_map (TheGtkObject);
-end;
-
-procedure TFPgtkWidget.Unmap;
-begin
-  gtk_widget_unmap (TheGtkObject);
-end;
-
-procedure TFPgtkWidget.QueueDraw;
-begin
-  gtk_widget_queue_draw (TheGtkObject);
-end;
-
-procedure TFPgtkWidget.QueueResize;
-begin
-  gtk_widget_queue_resize (TheGtkObject);
-end;
-
-procedure TFPgtkWidget.Draw (Rectangle:PGdkRectangle); Overload;
-begin
-  gtk_widget_draw (TheGtkObject, Rectangle);
-end;
-
-procedure TFPgtkWidget.DrawFocus;
-begin
-  gtk_widget_draw_focus (TheGtkObject);
-end;
-
-procedure TFPgtkWidget.DrawDefault;
-begin
-  gtk_widget_draw_default (TheGtkObject);
-end;
-
-procedure TFPgtkWidget.Show;
-begin
-  gtk_widget_show (TheGtkObject);
-end;
-
-procedure TFPgtkWidget.Hide;
-begin
-  gtk_widget_hide (TheGtkObject);
-end;
-
-procedure TFPgtkWidget.Realize;
-begin
-  gtk_widget_realize (TheGtkObject);
-end;
-
-procedure TFPgtkWidget.Unrealize;
-begin
-  gtk_widget_unrealize (TheGtkObject);
-end;
-
-procedure TFPgtkWidget.ShowNow;
-begin
-  gtk_widget_show_now (TheGtkObject);
-end;
-
-procedure TFPgtkWidget.ShowAll;
-begin
-  gtk_widget_show_all (TheGtkObject);
-end;
-
-procedure TFPgtkWidget.HideAll;
-begin
-  gtk_widget_hide_all (TheGtkObject);
-end;
-
-procedure TFPgtkWidget.SetAllocation (AnAllocation:TGtkAllocation); Overload;
-begin
-  with AnAllocation do
-    SetAllocation (x, y, width, height);
-end;
-
-procedure TFPgtkWidget.SetAllocation (x:integer; y:integer; width:integer; height:integer); Overload;
-begin
-  SetUPosition (x, y);
-  SetUSize (width, height);
-end;
-
-function TFPgtkWidget.GetAllocation : TGtkAllocation;
-begin
-  result := TheGtkObject^.allocation;
-end;
-
-procedure TFPgtkWidget.SetUPosition (x:integer; y:integer);
-begin
-  gtk_widget_set_uposition (TheGtkObject, x, y);
-end;
-
-procedure TFPgtkWidget.SetUsize (width:integer; height:integer);
-begin
-  gtk_widget_set_usize (TheGtkObject, width, height);
-end;
-
-function TFPgtkWidget.GetName : string;
-begin
-  result := gtk_widget_get_name(TheGtkObject);
-end;
-
-procedure TFPgtkWidget.SetName (TheValue:string);
-begin
-  gtk_widget_set_name(TheGtkObject,ConvertToPgchar(TheValue));
-end;
-
-function TFPgtkWidget.GetPropFlags : longint;
-begin
-  result := gtk_widget_Flags (TheGtkObject);
-end;
-
-procedure TFPgtkWidget.SetPropFlags (TheValue:longint);
-var f : integer;
-begin
-  f := GetPropFlags;
-  UnsetFlags (f and not TheValue);
-  SetFlags (not f and TheValue);
-end;
-
-function TFPgtkWidget.GetState : longint;
-begin
-  result := gtk_widget_State(TheGtkObject);
-end;
-
-function TFPgtkWidget.GetSavedState : longint;
-begin
-  result := gtk_widget_Saved_State(TheGtkObject);
-end;
-
-function TFPgtkWidget.GetParent : TFPgtkWidget;
-var gtkparent : PgtkWidget;
-    o : TFPgtkObject;
-begin
-  gtkParent := TheGtkObject^.parent;
-  o := GetPascalInstance (PgtkObject(GtkParent));
-  if o is TFPgtkWidget then
-    result := TFPgtkWidget(o)
-  else
-    result := nil;
-end;
-
-procedure TFPgtkWidget.SetParent (TheValue:TFPgtkWidget);
-var gtkparent : PgtkWidget;
-begin
-  gtkParent := TheGtkObject^.parent;
-  if assigned(TheValue) then
-    if assigned(gtkParent) then
-      reparent (TheValue)
-    else
-      gtk_widget_set_parent (TheGtkWidget, ConvertToGtkWidget(TheValue))
-  else
-    if assigned(gtkParent) then
-      gtk_widget_unparent (TheGtkWidget);
-end;    
-      
-
-function TFPgtkWidget.GetParentWindow : PGdkWindow;
-begin
-  result := gtk_widget_get_parent_window(TheGtkObject);
-end;
-
-procedure TFPgtkWidget.SetParentWindow (TheValue:PGdkWindow);
-begin
-  gtk_widget_set_parent_window(TheGtkObject,TheValue);
-end;
-
-procedure TFPgtkWidget.Unparent;
-begin
-  gtk_widget_unparent (TheGtkObject);
-end;
-
-procedure TFPgtkWidget.Reparent (NewParent:TFPgtkWidget);
-begin
-  if (NewParent is TFpgtkContainer) then
-    begin
-    ref;
-    TFPgtkContainer(Parent).remove (self);
-    TFPgtkContainer(NewParent).Add (Self);
-    unref;
-    end;
-end;
-
-function TFPgtkWidget.GetVisible : boolean;
-begin
-  result := gtk_widget_Visible(TheGtkObject);
-end;
-
-procedure TFPgtkWidget.SetVisible (TheValue:boolean);
-begin
-  if TheValue then
-    Show
-  else
-    Hide;
-end;
-
-function TFPgtkWidget.GetNoWindow : boolean;
-begin
-  result := gtk_widget_No_Window(TheGtkObject);
-end;
-
-procedure TFPgtkWidget.SetNoWindow (TheValue:boolean);
-begin
-  if TheValue then
-    SetFlags (GTK_NO_WINDOW)
-  else
-    UnSetFlags (GTK_NO_WINDOW);
-end;
-
-function TFPgtkWidget.GetRealized : boolean;
-begin
-  result := gtk_widget_realized(TheGtkObject);
-end;
-
-procedure TFPgtkWidget.SetRealized (TheValue:boolean);
-begin
-  if TheValue then 
-    Realize
-  else
-    Unrealize;
-end;
-
-function TFPgtkWidget.GetMapped : boolean;
-begin
-  result := gtk_widget_Mapped(TheGtkObject);
-end;
-
-procedure TFPgtkWidget.SetMapped (TheValue:boolean);
-begin
-  if TheValue then
-    Map
-  else
-    Unmap;
-end;
-
-function TFPgtkWidget.GetDrawable : boolean;
-begin
-  result := gtk_widget_Drawable(TheGtkObject);
-end;
-
-function TFPgtkWidget.GetIsSensitive : boolean;
-begin
-  result := gtk_widget_Is_Sensitive(TheGtkObject);
-end;
-
-function TFPgtkWidget.GetSensitive : boolean;
-begin
-  result := gtk_widget_Sensitive(TheGtkObject);
-end;
-
-procedure TFPgtkWidget.SetSensitive (TheValue:boolean);
-begin
-  gtk_widget_set_sensitive(TheGtkObject,TheValue);
-end;
-
-function TFPgtkWidget.GetParentSensitive : boolean;
-begin
-  result := gtk_widget_Parent_Sensitive(TheGtkObject);
-end;
-
-procedure TFPgtkWidget.SetParentSensitive (TheValue:boolean);
-begin
-  if TheValue then
-    SetFlags (GTK_PARENT_SENSITIVE)
-  else
-    UnSetFlags (GTK_PARENT_SENSITIVE);
-end;
-
-function TFPgtkWidget.GetAppPaintable : boolean;
-begin
-  result := gtk_widget_App_Paintable(TheGtkObject);
-end;
-
-function TFPgtkWidget.GetCanFocus : boolean;
-begin
-  result := gtk_widget_Can_Focus(TheGtkObject);
-end;
-
-procedure TFPgtkWidget.SetCanFocus (TheValue:boolean);
-begin
-  if TheValue then
-    SetFlags (GTK_CAN_FOCUS)
-  else
-    UnSetFlags (GTK_CAN_FOCUS);
-end;
-
-procedure TFPgtkWidget.GrabFocus;
-begin
-  gtk_widget_grab_focus (TheGtkObject);
-end;
-
-function TFPgtkWidget.GetHasFocus : boolean;
-begin
-  result := gtk_widget_Has_Focus(TheGtkObject);
-end;
-
-function TFPgtkWidget.GetCanDefault : boolean;
-begin
-  result := gtk_widget_Can_Default(TheGtkObject);
-end;
-
-procedure TFPgtkWidget.SetCanDefault (TheValue:boolean);
-begin
-  if TheValue then
-    SetFlags (GTK_CAN_DEFAULT)
-  else
-    UnSetFlags (GTK_CAN_DEFAULT);
-end;
-
-procedure TFPgtkWidget.GrabDefault;
-begin
-  gtk_widget_grab_default (TheGtkObject);
-end;
-
-function TFPgtkWidget.GetHasDefault : boolean;
-begin
-  result := gtk_widget_Has_Default(TheGtkObject);
-end;
-
-function TFPgtkWidget.GetReceivesDefault : boolean;
-begin
-  result := gtk_widget_Receives_Default(TheGtkObject);
-end;
-
-function TFPgtkWidget.GetCompositeChild : boolean;
-begin
-  result := gtk_widget_Composite_Child(TheGtkObject);
-end;
-
-function TFPgtkWidget.GetTooltip : string;
-var data : PGtkTooltipsData;
-begin
-  data := Gtk_Tooltips_Data_Get (TheGtkObject);
-  if assigned(data) then
-    with data^ do
-      result := ComposeTooltip (Tip_Text, tip_private)
-  else
-    result := '';
-end;
-
-procedure TFPgtkWidget.SetTooltip (TheValue:string);
-var t, p : string;
-    ttdata : PGtkTooltipsData;
-begin
-  if TheValue = '' then
-    begin
-    ttdata := GetTooltipsData (Self);
-    if assigned (ttdata) then
-      ; // find a way to remove the hint. Setting '' does not remove
-    end
-  else
-    begin
-    CheckTooltips;
-    DecomposeTooltip (TheValue, t, p);
-    TheToolTips.SetTip (self, t, p);
-    end;
-end;
-
-procedure TFPgtkWidget.HideOnDelete;
-begin
-  gtk_widget_hide_on_delete (TheGtkObject);
-end;
-
-function TFPgtkWidget.GetColormap : PGdkColormap;
-begin
-  result := gtk_widget_get_colormap(TheGtkObject);
-end;
-
-procedure TFPgtkWidget.SetColormap (TheValue:PGdkColormap);
-begin
-  gtk_widget_set_colormap(TheGtkObject,TheValue);
-end;
-
-function TFPgtkWidget.ConnectShow (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnect (sgShow, proc, data);
-end;
-
-function TFPgtkWidget.ConnectAfterShow (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnectAfter (sgShow, proc, data);
-end;
-
-function TFPgtkWidget.Connecthide (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnect (sghide, proc, data);
-end;
-
-function TFPgtkWidget.ConnectAfterhide (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnectAfter (sghide, proc, data);
-end;
-
-function TFPgtkWidget.Connectmap (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnect (sgmap, proc, data);
-end;
-
-function TFPgtkWidget.ConnectAftermap (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnectAfter (sgmap, proc, data);
-end;
-
-function TFPgtkWidget.Connectunmap (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnect (sgunmap, proc, data);
-end;
-
-function TFPgtkWidget.ConnectAfterunmap (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnectAfter (sgunmap, proc, data);
-end;
-
-function TFPgtkWidget.Connectrealize (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnect (sgrealize, proc, data);
-end;
-
-function TFPgtkWidget.ConnectAfterrealize (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnectAfter (sgrealize, proc, data);
-end;
-
-function TFPgtkWidget.Connectunrealize (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnect (sgunrealize, proc, data);
-end;
-
-function TFPgtkWidget.ConnectAfterunrealize (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnectAfter (sgunrealize, proc, data);
-end;
-
-function TFPgtkWidget.ConnectDrawFocus (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnect (sgDrawFocus, proc, data);
-end;
-
-function TFPgtkWidget.ConnectAfterDrawFocus (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnectAfter (sgDrawFocus, proc, data);
-end;
-
-function TFPgtkWidget.ConnectDrawDefault (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnect (sgDrawDefault, proc, data);
-end;
-
-function TFPgtkWidget.ConnectAfterDrawDefault (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnectAfter (sgDrawDefault, proc, data);
-end;
-
-function TFPgtkWidget.ConnectParentSet (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-begin
-  result := WidgetSignalConnect (sgParentSet, proc, data);
-end;
-
-function TFPgtkWidget.ConnectAfterParentSet (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-begin
-  result := WidgetSignalConnectAfter (sgParentSet, proc, data);
-end;
-
-function TFPgtkWidget.ConnectGrabFocus (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnect (sgGrabFocus, proc, data);
-end;
-
-function TFPgtkWidget.ConnectAfterGrabFocus (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnectAfter (sgGrabFocus, proc, data);
-end;
-
-function Eventfunc (Sender:PGtkwidget; Event:PGdkEvent; data:pointer) : boolean; cdecl;
-var p : TFPgtkEventFunction;
-begin
-with PSignalData(data)^ do
-  begin
-  p := TFPgtkEventFunction (TheSignalProc);
-  result := p (TheWidget as TFPgtkWidget, Event, TheData)
-  end;
-end;
-
-function TFPgtkWidget.EventConnect (signal:string; proc:TFPgtkEventFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@Eventfunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkWidget.EventConnectAfter (signal:string; proc:TFPgtkEventFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@Eventfunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkWidget.ConnectEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
-begin
-  result := EventConnect (sgEvent, proc, data);
-end;
-
-function TFPgtkWidget.ConnectAfterEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
-begin
-  result := EventConnectAfter (sgEvent, proc, data);
-end;
-
-function EventButtonfunc (Sender:PGtkwidget; Event:PGdkEventButton; data:pointer) : boolean; cdecl;
-var p : TFPgtkEventButtonFunction;
-begin
-with PSignalData(data)^ do
-  begin
-  p := TFPgtkEventButtonFunction (TheSignalProc);
-  result := p (TheWidget as TFPgtkWidget, Event, TheData)
-  end;
-end;
-
-function TFPgtkWidget.EventButtonConnect (signal:string; proc:TFPgtkEventButtonFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@EventButtonfunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkWidget.EventButtonConnectAfter (signal:string; proc:TFPgtkEventButtonFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@EventButtonfunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkWidget.ConnectButtonPressEvent (proc:TFPgtkEventButtonFunction; data:pointer) : guint;
-begin
-  result := EventButtonConnect (sgButtonPressEvent, proc, data);
-end;
-
-function TFPgtkWidget.ConnectAfterButtonPressEvent (proc:TFPgtkEventButtonFunction; data:pointer) : guint;
-begin
-  result := EventButtonConnectAfter (sgButtonPressEvent, proc, data);
-end;
-
-function TFPgtkWidget.ConnectButtonReleaseEvent (proc:TFPgtkEventButtonFunction; data:pointer) : guint;
-begin
-  result := EventButtonConnect (sgButtonReleaseEvent, proc, data);
-end;
-
-function TFPgtkWidget.ConnectAfterButtonReleaseEvent (proc:TFPgtkEventButtonFunction; data:pointer) : guint;
-begin
-  result := EventButtonConnectAfter (sgButtonReleaseEvent, proc, data);
-end;
-
-function EventMotionfunc (Sender:PGtkwidget; Event:PGdkEventMotion; data:pointer) : boolean; cdecl;
-var p : TFPgtkEventMotionFunction;
-begin
-with PSignalData(data)^ do
-  begin
-  p := TFPgtkEventMotionFunction (TheSignalProc);
-  result := p (TheWidget as TFPgtkWidget, Event, TheData)
-  end;
-end;
-
-function TFPgtkWidget.EventMotionConnect (signal:string; proc:TFPgtkEventMotionFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@EventMotionfunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkWidget.EventMotionConnectAfter (signal:string; proc:TFPgtkEventMotionFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@EventMotionfunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkWidget.ConnectMotionNotifyEvent (proc:TFPgtkEventMotionFunction; data:pointer) : guint;
-begin
-  result := EventMotionConnect (sgMotionNotifyEvent, proc, data);
-end;
-
-function TFPgtkWidget.ConnectAfterMotionNotifyEvent (proc:TFPgtkEventMotionFunction; data:pointer) : guint;
-begin
-  result := EventMotionConnectAfter (sgMotionNotifyEvent, proc, data);
-end;
-
-function TFPgtkWidget.ConnectDeleteEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
-begin
-  result := EventConnect (sgDeleteEvent, proc, data);
-end;
-
-function TFPgtkWidget.ConnectAfterDeleteEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
-begin
-  result := EventConnectAfter (sgDeleteEvent, proc, data);
-end;
-
-function TFPgtkWidget.ConnectDestroyEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
-begin
-  result := EventConnect (sgDestroyEvent, proc, data);
-end;
-
-function TFPgtkWidget.ConnectAfterDestroyEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
-begin
-  result := EventConnectAfter (sgDestroyEvent, proc, data);
-end;
-
-function EventExposefunc (Sender:PGtkwidget; Event:PGdkEventExpose; data:pointer) : boolean; cdecl;
-var p : TFPgtkEventExposeFunction;
-begin
-with PSignalData(data)^ do
-  begin
-  p := TFPgtkEventExposeFunction (TheSignalProc);
-  result := p (TheWidget as TFPgtkWidget, Event, TheData)
-  end;
-end;
-
-function TFPgtkWidget.EventExposeConnect (signal:string; proc:TFPgtkEventExposeFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@EventExposefunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkWidget.EventExposeConnectAfter (signal:string; proc:TFPgtkEventExposeFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@EventExposefunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkWidget.ConnectExposeEvent (proc:TFPgtkEventExposeFunction; data:pointer) : guint;
-begin
-  result := EventExposeConnect (sgExposeEvent, proc, data);
-end;
-
-function TFPgtkWidget.ConnectAfterExposeEvent (proc:TFPgtkEventExposeFunction; data:pointer) : guint;
-begin
-  result := EventExposeConnectAfter (sgExposeEvent, proc, data);
-end;
-
-function EventKeyfunc (Sender:PGtkwidget; Event:PGdkEventKey; data:pointer) : boolean; cdecl;
-var p : TFPgtkEventKeyFunction;
-begin
-with PSignalData(data)^ do
-  begin
-  p := TFPgtkEventKeyFunction (TheSignalProc);
-  result := p (TheWidget as TFPgtkWidget, Event, TheData)
-  end;
-end;
-
-function TFPgtkWidget.EventKeyConnect (signal:string; proc:TFPgtkEventKeyFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@EventKeyfunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkWidget.EventKeyConnectAfter (signal:string; proc:TFPgtkEventKeyFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@EventKeyfunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkWidget.ConnectKeyPressEvent (proc:TFPgtkEventKeyFunction; data:pointer) : guint;
-begin
-  result := EventKeyConnect (sgKeyPressEvent, proc, data);
-end;
-
-function TFPgtkWidget.ConnectAfterKeyPressEvent (proc:TFPgtkEventKeyFunction; data:pointer) : guint;
-begin
-  result := EventKeyConnectAfter (sgKeyPressEvent, proc, data);
-end;
-
-function TFPgtkWidget.ConnectKeyReleaseEvent (proc:TFPgtkEventKeyFunction; data:pointer) : guint;
-begin
-  result := EventKeyConnect (sgKeyReleaseEvent, proc, data);
-end;
-
-function TFPgtkWidget.ConnectAfterKeyReleaseEvent (proc:TFPgtkEventKeyFunction; data:pointer) : guint;
-begin
-  result := EventKeyConnectAfter (sgKeyReleaseEvent, proc, data);
-end;
-
-function EventCrossingfunc (Sender:PGtkwidget; Event:PGdkEventCrossing; data:pointer) : boolean; cdecl;
-var p : TFPgtkEventCrossingFunction;
-begin
-with PSignalData(data)^ do
-  begin
-  p := TFPgtkEventCrossingFunction (TheSignalProc);
-  result := p (TheWidget as TFPgtkWidget, Event, TheData)
-  end;
-end;
-
-function TFPgtkWidget.EventCrossingConnect (signal:string; proc:TFPgtkEventCrossingFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@EventCrossingfunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkWidget.EventCrossingConnectAfter (signal:string; proc:TFPgtkEventCrossingFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@EventCrossingfunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkWidget.ConnectEnterNotifyEvent (proc:TFPgtkEventCrossingFunction; data:pointer) : guint;
-begin
-  result := EventCrossingConnect (sgEnterNotifyEvent, proc, data);
-end;
-
-function TFPgtkWidget.ConnectAfterEnterNotifyEvent (proc:TFPgtkEventCrossingFunction; data:pointer) : guint;
-begin
-  result := EventCrossingConnectAfter (sgEnterNotifyEvent, proc, data);
-end;
-
-function TFPgtkWidget.ConnectLeaveNotifyEvent (proc:TFPgtkEventCrossingFunction; data:pointer) : guint;
-begin
-  result := EventCrossingConnect (sgLeaveNotifyEvent, proc, data);
-end;
-
-function TFPgtkWidget.ConnectAfterLeaveNotifyEvent (proc:TFPgtkEventCrossingFunction; data:pointer) : guint;
-begin
-  result := EventCrossingConnectAfter (sgLeaveNotifyEvent, proc, data);
-end;
-
-function EventConfigurefunc (Sender:PGtkwidget; Event:PGdkEventConfigure; data:pointer) : boolean; cdecl;
-var p : TFPgtkEventConfigureFunction;
-begin
-with PSignalData(data)^ do
-  begin
-  p := TFPgtkEventConfigureFunction (TheSignalProc);
-  result := p (TheWidget as TFPgtkWidget, Event, TheData)
-  end;
-end;
-
-function TFPgtkWidget.EventConfigureConnect (signal:string; proc:TFPgtkEventConfigureFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@EventConfigurefunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkWidget.EventConfigureConnectAfter (signal:string; proc:TFPgtkEventConfigureFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@EventConfigurefunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkWidget.ConnectConfigureEvent (proc:TFPgtkEventConfigureFunction; data:pointer) : guint;
-begin
-  result := EventConfigureConnect (sgConfigureEvent, proc, data);
-end;
-
-function TFPgtkWidget.ConnectAfterConfigureEvent (proc:TFPgtkEventConfigureFunction; data:pointer) : guint;
-begin
-  result := EventConfigureConnectAfter (sgConfigureEvent, proc, data);
-end;
-
-function EventFocusfunc (Sender:PGtkwidget; Event:PGdkEventFocus; data:pointer) : boolean; cdecl;
-var p : TFPgtkEventFocusFunction;
-begin
-with PSignalData(data)^ do
-  begin
-  p := TFPgtkEventFocusFunction (TheSignalProc);
-  result := p (TheWidget as TFPgtkWidget, Event, TheData)
-  end;
-end;
-
-function TFPgtkWidget.EventFocusConnect (signal:string; proc:TFPgtkEventFocusFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@EventFocusfunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkWidget.EventFocusConnectAfter (signal:string; proc:TFPgtkEventFocusFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@EventFocusfunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkWidget.ConnectFocusInEvent (proc:TFPgtkEventFocusFunction; data:pointer) : guint;
-begin
-  result := EventFocusConnect (sgFocusInEvent, proc, data);
-end;
-
-function TFPgtkWidget.ConnectAfterFocusInEvent (proc:TFPgtkEventFocusFunction; data:pointer) : guint;
-begin
-  result := EventFocusConnectAfter (sgFocusInEvent, proc, data);
-end;
-
-function TFPgtkWidget.ConnectFocusOutEvent (proc:TFPgtkEventFocusFunction; data:pointer) : guint;
-begin
-  result := EventFocusConnect (sgFocusOutEvent, proc, data);
-end;
-
-function TFPgtkWidget.ConnectAfterFocusOutEvent (proc:TFPgtkEventFocusFunction; data:pointer) : guint;
-begin
-  result := EventFocusConnectAfter (sgFocusOutEvent, proc, data);
-end;
-
-function TFPgtkWidget.ConnectMapEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
-begin
-  result := EventConnect (sgMapEvent, proc, data);
-end;
-
-function TFPgtkWidget.ConnectAfterMapEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
-begin
-  result := EventConnectAfter (sgMapEvent, proc, data);
-end;
-
-function TFPgtkWidget.ConnectUnmapEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
-begin
-  result := EventConnect (sgUnmapEvent, proc, data);
-end;
-
-function TFPgtkWidget.ConnectAfterUnmapEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
-begin
-  result := EventConnectAfter (sgUnmapEvent, proc, data);
-end;
-
-function EventPropertyfunc (Sender:PGtkwidget; Event:PGdkEventProperty; data:pointer) : boolean; cdecl;
-var p : TFPgtkEventPropertyFunction;
-begin
-with PSignalData(data)^ do
-  begin
-  p := TFPgtkEventPropertyFunction (TheSignalProc);
-  result := p (TheWidget as TFPgtkWidget, Event, TheData)
-  end;
-end;
-
-function TFPgtkWidget.EventPropertyConnect (signal:string; proc:TFPgtkEventPropertyFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@EventPropertyfunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkWidget.EventPropertyConnectAfter (signal:string; proc:TFPgtkEventPropertyFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@EventPropertyfunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkWidget.ConnectPropertyNotifyEvent (proc:TFPgtkEventPropertyFunction; data:pointer) : guint;
-begin
-  result := EventPropertyConnect (sgPropertyNotifyEvent, proc, data);
-end;
-
-function TFPgtkWidget.ConnectAfterPropertyNotifyEvent (proc:TFPgtkEventPropertyFunction; data:pointer) : guint;
-begin
-  result := EventPropertyConnectAfter (sgPropertyNotifyEvent, proc, data);
-end;
-
-function EventSelectionfunc (Sender:PGtkwidget; Event:PGdkEventSelection; data:pointer) : boolean; cdecl;
-var p : TFPgtkEventSelectionFunction;
-begin
-with PSignalData(data)^ do
-  begin
-  p := TFPgtkEventSelectionFunction (TheSignalProc);
-  result := p (TheWidget as TFPgtkWidget, Event, TheData)
-  end;
-end;
-
-function TFPgtkWidget.EventSelectionConnect (signal:string; proc:TFPgtkEventSelectionFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@EventSelectionfunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkWidget.EventSelectionConnectAfter (signal:string; proc:TFPgtkEventSelectionFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@EventSelectionfunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkWidget.ConnectSelectionClearEvent (proc:TFPgtkEventSelectionFunction; data:pointer) : guint;
-begin
-  result := EventSelectionConnect (sgSelectionClearEvent, proc, data);
-end;
-
-function TFPgtkWidget.ConnectAfterSelectionClearEvent (proc:TFPgtkEventSelectionFunction; data:pointer) : guint;
-begin
-  result := EventSelectionConnectAfter (sgSelectionClearEvent, proc, data);
-end;
-
-function TFPgtkWidget.ConnectSelectionRequestEvent (proc:TFPgtkEventSelectionFunction; data:pointer) : guint;
-begin
-  result := EventSelectionConnect (sgSelectionRequestEvent, proc, data);
-end;
-
-function TFPgtkWidget.ConnectAfterSelectionRequestEvent (proc:TFPgtkEventSelectionFunction; data:pointer) : guint;
-begin
-  result := EventSelectionConnectAfter (sgSelectionRequestEvent, proc, data);
-end;
-
-function TFPgtkWidget.ConnectSelectionNotifyEvent (proc:TFPgtkEventSelectionFunction; data:pointer) : guint;
-begin
-  result := EventSelectionConnect (sgSelectionNotifyEvent, proc, data);
-end;
-
-function TFPgtkWidget.ConnectAfterSelectionNotifyEvent (proc:TFPgtkEventSelectionFunction; data:pointer) : guint;
-begin
-  result := EventSelectionConnectAfter (sgSelectionNotifyEvent, proc, data);
-end;
-
-function EventProximityfunc (Sender:PGtkwidget; Event:PGdkEventProximity; data:pointer) : boolean; cdecl;
-var p : TFPgtkEventProximityFunction;
-begin
-with PSignalData(data)^ do
-  begin
-  p := TFPgtkEventProximityFunction (TheSignalProc);
-  result := p (TheWidget as TFPgtkWidget, Event, TheData)
-  end;
-end;
-
-function TFPgtkWidget.EventProximityConnect (signal:string; proc:TFPgtkEventProximityFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@EventProximityfunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkWidget.EventProximityConnectAfter (signal:string; proc:TFPgtkEventProximityFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@EventProximityfunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkWidget.ConnectProximityInEvent (proc:TFPgtkEventProximityFunction; data:pointer) : guint;
-begin
-  result := EventProximityConnect (sgProximityInEvent, proc, data);
-end;
-
-function TFPgtkWidget.ConnectAfterProximityInEvent (proc:TFPgtkEventProximityFunction; data:pointer) : guint;
-begin
-  result := EventProximityConnectAfter (sgProximityInEvent, proc, data);
-end;
-
-function TFPgtkWidget.ConnectProximityOutEvent (proc:TFPgtkEventProximityFunction; data:pointer) : guint;
-begin
-  result := EventProximityConnect (sgProximityOutEvent, proc, data);
-end;
-
-function TFPgtkWidget.ConnectAfterProximityOutEvent (proc:TFPgtkEventProximityFunction; data:pointer) : guint;
-begin
-  result := EventProximityConnectAfter (sgProximityOutEvent, proc, data);
-end;
-
-function EventClientfunc (Sender:PGtkwidget; Event:PGdkEventClient; data:pointer) : boolean; cdecl;
-var p : TFPgtkEventClientFunction;
-begin
-with PSignalData(data)^ do
-  begin
-  p := TFPgtkEventClientFunction (TheSignalProc);
-  result := p (TheWidget as TFPgtkWidget, Event, TheData)
-  end;
-end;
-
-function TFPgtkWidget.EventClientConnect (signal:string; proc:TFPgtkEventClientFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@EventClientfunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkWidget.EventClientConnectAfter (signal:string; proc:TFPgtkEventClientFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@EventClientfunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkWidget.ConnectClientEvent (proc:TFPgtkEventClientFunction; data:pointer) : guint;
-begin
-  result := EventClientConnect (sgClientEvent, proc, data);
-end;
-
-function TFPgtkWidget.ConnectAfterClientEvent (proc:TFPgtkEventClientFunction; data:pointer) : guint;
-begin
-  result := EventClientConnectAfter (sgClientEvent, proc, data);
-end;
-
-function EventNoExposefunc (Sender:PGtkwidget; Event:PGdkEventNoExpose; data:pointer) : boolean; cdecl;
-var p : TFPgtkEventNoExposeFunction;
-begin
-with PSignalData(data)^ do
-  begin
-  p := TFPgtkEventNoExposeFunction (TheSignalProc);
-  result := p (TheWidget as TFPgtkWidget, Event, TheData)
-  end;
-end;
-
-function TFPgtkWidget.EventNoExposeConnect (signal:string; proc:TFPgtkEventNoExposeFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@EventNoExposefunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkWidget.EventNoExposeConnectAfter (signal:string; proc:TFPgtkEventNoExposeFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@EventNoExposefunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkWidget.ConnectNoExposeEvent (proc:TFPgtkEventNoExposeFunction; data:pointer) : guint;
-begin
-  result := EventNoExposeConnect (sgNoExposeEvent, proc, data);
-end;
-
-function TFPgtkWidget.ConnectAfterNoExposeEvent (proc:TFPgtkEventNoExposeFunction; data:pointer) : guint;
-begin
-  result := EventNoExposeConnectAfter (sgNoExposeEvent, proc, data);
-end;
-
-function TFPgtkWidget.ConnectVisibilityNotifyEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
-begin
-  result := EventConnect (sgVisibilityNotifyEvent, proc, data);
-end;
-
-function TFPgtkWidget.ConnectAfterVisibilityNotifyEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
-begin
-  result := EventConnectAfter (sgVisibilityNotifyEvent, proc, data);
-end;
-
-procedure TFPgtkWidget.LockAccelerators;
-begin
-  gtk_widget_lock_accelerators (TheGtkObject);
-end;
-
-procedure TFPgtkWidget.UnlockAccelerators;
-begin
-  gtk_widget_unlock_accelerators (TheGtkObject);
-end;
-
-procedure TFPgtkWidget.RemoveAccelerators (aSignal:string; OnlyVisible:boolean);
-begin
-  gtk_widget_remove_accelerators (TheGtkObject, ConvertToPgchar(aSignal), OnlyVisible);
-end;
-
-procedure TFPgtkWidget.ActivateAccelGroups (Key:guint; Mods:TGdkModifierType);
-begin
-  gtk_accel_groups_activate (FGtkObject, Key, Mods);
-end;
-
-procedure TFPgtkWidget.AcceleratorAdd (AG:PGtkAccelGroup; aSignal:string; Key:guint; Mods:TGdkModifierType; acFlags:TGtkAccelFlags); Overload;
-begin
-  gtk_widget_add_accelerator (TheGtkWidget, pgchar(aSignal),
-        AG, Key, Mods, acFlags);
-end;
-
- { TFPgtkGroup }
-
-
-procedure TFPgtkGroup.FreeList;
-begin
-  if FGList <> null then
-    begin
-    if FManageLists then
-      g_list_free (FGList);
-    FGList := null;
-    end;
-end;
-
-procedure TFPgtkGroup.FreeSList;
-begin
-  if FGSList <> null then
-    begin
-    if FManageLists then
-      g_slist_free (FGSList);
-    FGSlist := null;
-    end;
-end;
-
-function TFPgtkGroup.CreateGList : PGList;
-var r : integer;
-begin
-  FreeList;
-  result := null;
-  for r := pred(count) downto 0 do
-    result := g_list_prepend (result, GetData(r));
-  FGList := result;
-end;
-
-function TFPgtkGroup.CreateGSList : PGSList;
-var r : integer;
-begin
-  FreeSList;
-  result := null;
-  for r := pred(count) downto 0 do
-    result := g_slist_prepend (result, GetData(r));
-  FGSList := result;
-end;
-
-procedure TFPgtkGroup.BuildFromGtkList;
-var p : PGList;
-begin
-  clear;
-  p := FGList;
-  while p <> null do
-    begin
-    add (UngetData(p^.data));
-    p := p^.Next;
-    end;
-  FListChanged := False;
-  FSListChanged := False;
-  FClassesChanged := False;
-  FreeSList;
-end;
-
-procedure TFPgtkGroup.BuildFromGtkSList;
-var p :PGSList;
-begin
-  clear;
-  p := FGSList;
-  while p <> null do
-    begin
-    add (UngetData(p^.data));
-    p := p^.Next;
-    end;
-  FListChanged := False;
-  FSListChanged := False;
-  FClassesChanged := False;
-  FreeList;
-end;
-
-procedure TFPgtkGroup.Notify (ptr:pointer; Action:TListNotification);
-begin
-  inherited;
-  FClassesChanged := True;
-end;
-
-function TFPgtkGroup.GetData (index:integer) : pointer;
-// GetData needs to give the pointer to the data in the List or SList of GTK
-begin
-  result := items[index];
-end;
-
-function TFPgtkGroup.UngetData (data:pointer) : pointer;
-// UngetData needs to give the item in this list from the datapointer of GTK
-begin
-  result := data
-end;
-
-constructor TFPgtkGroup.Create;
-begin
-  inherited create;
-  FClassesChanged := False;
-  FListChanged := false;
-  FSListChanged := False;
-  FGList := null;
-  FGSList := null;
-  FNotUpdating := True;
-  FManageLists := True;
-end;
-
-
-destructor TFPgtkGroup.Destroy;
-begin
-  if ManageLists then
-    begin
-    FreeList;
-    FreeSList;
-    end;
-  inherited Destroy;
-end;
-
-
-function TFPgtkGroup.GetGtkList (buffered:boolean) : PGList;
-begin
-  if buffered then
-    if FClasseschanged then
-      result := CreateGList
-    else if FSListChanged then
-      begin
-      BuildFromGtkSList;
-      result := CreateGList;
-      end
-    else
-      result := FGlist
-  else
-    result := CreateGList;
-end;
-
-function TFPgtkGroup.GetGtkSList (buffered:boolean) : PGSList;
-begin
-  if buffered then
-    if FClassesChanged then
-      result := CreateGSList
-    else if FListChanged then
-      begin
-      BuildFromGtkList;
-      result := CreateGSList;
-      end
-    else
-      result := FGSlist
-  else
-    result := CreateGSList;
-end;
-
-procedure TFPgtkGroup.BeginUpdate;
-begin
-  FNotUpdating := False;
-end;
-
-procedure TFPgtkGroup.EndUpdate;
-begin
-  FNotUpdating := True;
-  if FlistChanged then
-    BuildFromGtkSList
-  else if FSListChanged then
-    BuildFromGtkSList
-  else if FClassesChanged then
-    begin
-    FreeSList;
-    FreeList;
-    end;
-end;
-
-procedure TFPgtkGroup.ForEach (Proc:TFPgtkForEachProcedure; data:pointer);
-var r: integer;
-begin
-  for r := 0 to pred(count) do
-    Proc (items[r], data);
-end;
-
-function TFPgtkGroup.GetGtkListProp : PGList;
-begin
-  result := GetGtkList (True);
-end;
-
-procedure TFPgtkGroup.SetGtkListProp (TheValue:PGList);
-begin
-  FGList := TheValue;
-  if FNotUpdating then
-    BuildFromGtkList
-  else
-    FListChanged := True;
-end;
-
-function TFPgtkGroup.GetGtkSListProp : PGSList;
-begin
-  result := GetGtkSList (True);
-end;
-
-procedure TFPgtkGroup.SetGtkSListProp (TheValue:PGSList);
-begin
-  FGSlist := TheValue;
-  if FNotUpdating then
-    BuildFromGtkSList
-  else
-    FSListChanged := True;
-end;
-
- { TFPgtkWidgetGroup }
-
-
-function TFPgtkWidgetGroup.GetData (index:integer) : pointer;
-begin
-  result := items[index].FgtkObject;
-end;
-
-function TFPgtkWidgetGroup.UnGetData (data:pointer) : pointer;
-begin
-  result := GetPascalInstance (PGtkObject(Data));
-end;
-
-procedure TFPgtkWidgetGroup.AddToContainer (Container:TFPgtkContainer);
-var r : integer;
-begin
-  for r := 0 to pred(count) do
-    Container.Add (items[r]);
-end;
-
-procedure TFPgtkWidgetGroup.PackInBox (box:TFPgtkBox; AtStart:boolean; Expanding:boolean; Fill:boolean; Padding:integer);
-var r : integer;
-begin
-  if AtStart then
-    for r := 0 to pred(Count) do
-      box.PackStart (items[r], expanding, fill, padding)
-  else
-    for r := pred(Count) downto 0 do
-      box.PackEnd (items[r], expanding, fill, padding);
-end;
-
-function TFPgtkWidgetGroup.GetItem (Index:integer) : TFPgtkWidget;
-begin
-  result := TFPgtkWidget (Inherited items[index]);
-end;
-
-procedure TFPgtkWidgetGroup.SetItem (Index:integer; TheValue:TFPgtkWidget);
-begin
-  inherited items[index] := TheValue;
-end;
-
-function TFPgtkWidgetGroup.GetTooltips (index:integer) : string;
-begin
-  result := items[index].Tooltip;
-end;
-
-procedure TFPgtkWidgetGroup.SetTooltips (index:integer; TheValue:string);
-begin
-  Items[index].Tooltip := TheValue;
-end;
-
- { TFPgtkMisc }
-
-function TFPgtkMisc.TheGtkObject : PGtkMisc;
-begin
-  result := PgtkMisc(FGtkObject);
-end;
-
-
-procedure TFPgtkMisc.SetAlignment (x:gfloat; y:gfloat);
-begin
-  gtk_misc_set_alignment (TheGtkObject, x, y);
-end;
-
-procedure TFPgtkMisc.SetPadding (x:word; y:word);
-begin
-  gtk_misc_set_padding (TheGtkObject, x, y);
-end;
-
-function TFPgtkMisc.GetXAlign : gfloat;
-begin
-  result := TheGtkObject^.XAlign;
-end;
-
-procedure TFPgtkMisc.SetXAlign (TheValue:gfloat);
-begin
-  SetAlignment (TheValue, YAlign);
-end;
-
-function TFPgtkMisc.GetYAlign : gfloat;
-begin
-  result := TheGtkObject^.YAlign;
-end;
-
-procedure TFPgtkMisc.SetYAlign (TheValue:gfloat);
-begin
-  SetAlignment (XAlign, TheValue);
-end;
-
-function TFPgtkMisc.GetXPad : word;
-begin
-  result := TheGtkObject^.XPad;
-end;
-
-procedure TFPgtkMisc.SetXPad (TheValue:word);
-begin
-  SetPadding (TheValue, YPad);
-end;
-
-function TFPgtkMisc.GetYPad : word;
-begin
-  result := TheGtkObject^.YPad;
-end;
-
-procedure TFPgtkMisc.SetYPad (TheValue:word);
-begin
-  SetPadding (XPad, TheValue);
-end;
-
- { TFPgtkLabel }
-
-function TFPgtkLabel.TheGtkObject : PGtkLabel;
-begin
-  result := PgtkLabel(FGtkObject);
-end;
-
-procedure TFPgtkLabel.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_label_new (null));
-end;
-
-
-constructor TFPgtkLabel.Create (aText:string);
-begin
-  inherited create;
-  Text := aText;
-  SetAlignment (0.0, 0.5);
-end;
-
-
-function TFPgtkLabel.GetText : string;
-begin
-  result := TheGtkObject^.TheLabel;
-end;
-
-procedure TFPgtkLabel.SetText (TheValue:string);
-begin
-  gtk_label_set_text(TheGtkObject,ConvertToPgchar(TheValue));
-end;
-
-function TFPgtkLabel.GetPattern : string;
-begin
-  result := TheGtkObject^.pattern;
-end;
-
-procedure TFPgtkLabel.SetPattern (TheValue:string);
-begin
-  gtk_label_set_pattern(TheGtkObject,ConvertToPgchar(TheValue));
-end;
-
-function TFPgtkLabel.GetJustify : TGtkJustification;
-begin
-  result := gtk.jtype(TheGtkObject^);
-end;
-
-procedure TFPgtkLabel.SetJustify (TheValue:TGtkJustification);
-begin
-  gtk_label_set_justify(TheGtkObject,TheValue);
-end;
-
-function TFPgtkLabel.GetLineWrap : boolean;
-begin
-  result := TheGtkObject^.wrap;
-end;
-
-procedure TFPgtkLabel.SetLineWrap (TheValue:boolean);
-begin
-  gtk_label_set_line_wrap(TheGtkObject,TheValue);
-end;
-
-function TFPgtkLabel.ParseUline (aText:string) : guint;
-begin
-  result := gtk_label_parse_uline (TheGtkObject, ConvertToPgchar(aText));
-end;
-
- { TFPgtkAccelLabel }
-
-function TFPgtkAccelLabel.TheGtkObject : PGtkAccelLabel;
-begin
-  result := PgtkAccelLabel(FGtkObject);
-end;
-
-procedure TFPgtkAccelLabel.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_accel_label_new (''));
-end;
-
-
-function TFPgtkAccelLabel.GetAccelWidget : TFPgtkWidget;
-begin
-  result := GetPascalInstance(PGtkObject(TheGtkObject^.accel_widget),tfpgtkwidget) as tfpgtkwidget;
-end;
-
-procedure TFPgtkAccelLabel.SetAccelWidget (TheValue:TFPgtkWidget);
-begin
-  gtk_accel_label_set_accel_widget(TheGtkObject,PGtkwidget(ConvertToGtkObject(TheValue)));
-end;
-
-function TFPgtkAccelLabel.AccelText : string;
-begin
-  result := TheGtkObject^.accel_string;
-end;
-
-procedure TFPgtkAccelLabel.Refetch;
-begin
-  gtk_accel_label_refetch (TheGtkObject);
-end;
-
- { TFPgtkTipsQuery }
-
-function TFPgtkTipsQuery.TheGtkObject : PGtkTipsQuery;
-begin
-  result := PgtkTipsQuery(FGtkObject);
-end;
-
-procedure TFPgtkTipsQuery.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_tips_query_new);
-end;
-
-
- { TFPgtkArrow }
-
-function TFPgtkArrow.TheGtkObject : PGtkArrow;
-begin
-  result := PgtkArrow(FGtkObject);
-end;
-
-procedure TFPgtkArrow.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_arrow_new (GTK_ARROW_LEFT,GTK_SHADOW_NONE));
-end;
-
-
-function TFPgtkArrow.GetArrowType : TGtkArrowType;
-begin
-  result := TGtkArrowType (TheGtkObject^.arrow_type);
-end;
-
-procedure TFPgtkArrow.SetArrowType (TheValue:TGtkArrowType);
-begin
-  gtk_arrow_set (TheGtkObject, TheValue, ShadowType);
-end;
-
-function TFPgtkArrow.GetShadowType : TGtkShadowType;
-begin
-  result := TGtkShadowtype (TheGtkObject^.shadow_type);
-end;
-
-procedure TFPgtkArrow.SetShadowType (TheValue:TGtkShadowType);
-begin
-  gtk_arrow_set (TheGtkObject, ArrowType, TheValue);
-end;
-
-procedure TFPgtkArrow.SetTypes (AnArrowType:TGtkArrowType; AShadowtype:TGtkShadowType);
-begin
-  gtk_arrow_set (TheGtkObject, AnArrowType, AShadowtype);
-end;
-
-constructor TFPgtkArrow.Create (AnArrowType:TGtkArrowType; AShadowType:TGtkShadowType);
-begin
-  inherited create;
-  SetTypes (AnArrowType, AShadowType);
-end;
-
-
- { TFPgtkImage }
-
-function TFPgtkImage.TheGtkObject : PGtkImage;
-begin
-  result := PgtkImage(FGtkObject);
-end;
-
-procedure TFPgtkImage.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_image_new (FImage, FMask));
-end;
-
-
-function TFPgtkImage.GetImageProp : PGdkImage;
-var m : PGdkBitmap;
-begin
-  gtk_image_get (TheGtkObject, @result, @m);
-end;
-
-procedure TFPgtkImage.SetImageProp (TheValue:PGdkImage);
-begin
-  gtk_Image_set (TheGtkObject, TheValue, nil);
-end;
-
-function TFPgtkImage.GetMask : PGdkBitMap;
-var p : PGdkPixmap;
-begin
-  gtk_image_get (TheGtkObject, @p, @result);
-end;
-
-procedure TFPgtkImage.SetMask (TheValue:PGdkBitMap);
-begin
-  gtk_image_set (TheGtkObject, Image, TheValue);
-end;
-
-procedure TFPgtkImage.SetImage (anImage:PGdkImage; aMask:PGdkBitmap);
-begin
-  gtk_image_set (TheGtkObject, anImage, aMask);
-end;
-
-constructor TFPgtkImage.Create (anImage:PGdkImage; aMask:PGdkBitmap);
-begin
-  FImage := anImage;
-  FMask := aMask;
-  inherited create;
-end;
-
-
-function NewImage (aWidth:integer; aHeight:integer) : PGdkImage;
-begin
-  result := gdk_image_new (gdk_image_fastest, gdk_visual_get_system, aWidth, aHeight);
-end;
-
-
- { TFPgtkPixmap }
-
-function TFPgtkPixmap.TheGtkObject : PGtkPixmap;
-begin
-  result := PgtkPixmap(FGtkObject);
-end;
-
-procedure TFPgtkPixmap.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_pixmap_new (FPixMap, FMask));
-end;
-
-var
-  EmptyBitmap : PGdkPixmap;
-
-function StringsToPPgchar (Data:TStrings) : PPgchar;
-var r : integer;
-    a : PStringArray;
-begin
-  getmem (a, sizeof (pgchar) * Data.count);
-  for r := 0 to Data.Count-1 do
-    a^[r] := pchar (Data[r]);
-  result := ppgchar (a);
-end;
-
-
-function ArrayToPPgchar (Data:array of string) : PPgchar;
-var r,t : integer;
-    a : PStringArray;
-begin
-  getmem (a, sizeof (pgchar) * (high(data)-low(data)+1));
-  t := 0;
-  for r := low(data) to high(data) do
-    begin
-    a^[r] := pchar (data[t]);
-    inc (t);
-    end;
-  result := ppgchar (a);
-end;
-
-
-function TFPgtkPixmap.GetBuildInsensitive : longbool;
-begin
-  result := longbool(gtk.build_insensitive(TheGtkObject^));
-end;
-
-procedure TFPgtkPixmap.SetBuildInsensitive (TheValue:longbool);
-begin
-  gtk_pixmap_set_build_insensitive(TheGtkObject,gint(TheValue));
-end;
-
-constructor TFPgtkPixmap.Create;
-begin
-  if not assigned (EmptyBitmap) then
-    EmptyBitmap := gdk_pixmap_new (null, 1, 1, 1);
-  FPixMap := EmptyBitmap;
-  FMask := PGdkBitmap (EmptyBitmap);
-  inherited create;
-end;
-
-
-constructor TFPgtkPixmap.CreateFromFile (Filename:string; Window:TFPgtkWidget);
-begin
-  FPixMap := gdk_pixmap_create_from_xpm (ConvertToGtkWidget(Window)^.window, @FMask, nil, pgchar(Filename));
-  inherited create;
-end;
-
-
-constructor TFPgtkPixmap.CreateFromStrings (Data:TStrings; Window:TFPgtkWidget);
-var ppdata : ppgchar;
-begin
-  ppdata := StringsToPPgchar(Data);
-  FPixMap := gdk_pixmap_create_from_xpm_d (ConvertToGtkWidget(Window)^.window, @FMask, nil, ppdata);
-  inherited create;
-  freemem (ppdata, sizeof (pgchar) * Data.count);
-end;
-
-
-constructor TFPgtkPixmap.CreateFromText (Data:string; Window:TFPgtkWidget);
-var l : TStrings;
-begin
-  l := TStringList.Create;
-  try
-    l.Text := data;
-    CreateFromStrings (l, Window);
-  finally
-    l.Free;
-  end;
-end;
-
-
-function TFPgtkPixmap.GetPixmapProp : PGdkPixMap;
-var m : PGdkBitmap;
-begin
-  gtk_pixmap_get (TheGtkObject, @result, @m);
-end;
-
-procedure TFPgtkPixmap.SetPixmapProp (TheValue:PGdkPixMap);
-begin
-  gtk_pixmap_set (TheGtkObject, TheValue, nil);
-end;
-
-function TFPgtkPixmap.GetMask : PGdkBitMap;
-var p : PGdkPixmap;
-begin
-  gtk_pixmap_get (TheGtkObject, @p, @result);
-end;
-
-procedure TFPgtkPixmap.SetMask (TheValue:PGdkBitMap);
-begin
-  gtk_pixmap_set (TheGtkObject, Pixmap, TheValue);
-end;
-
-procedure TFPgtkPixmap.SetPixmap (aPixmap:PGdkPixMap; aMask:PGdkBitmap);
-begin
-  gtk_pixmap_set (TheGtkObject, aPixmap, aMask);
-end;
-
-procedure TFPgtkPixmap.GetPixmap (var aPixmap:PGdkPixmap; var aMask:PGdkBitmap);
-var P:PGdkPixmap; 
-   M:PGdkBitmap;
-begin
-  gtk_pixmap_get (TheGtkObject, @p, @m);
-  apixmap := p;
-  amask := m;
-end;
-
-procedure TFPgtkPixmap.LoadFromFile (Filename:string);
-var bm : PGdkBitmap;
-    pm : PGdkPixmap;
-begin
-  pm := gdk_pixmap_colormap_create_from_xpm (nil, Colormap, @bm, nil, pgchar(Filename));
-  SetPixmap (pm, bm);
-end;
-
-procedure TFPgtkPixmap.LoadFromStrings (data:TStrings);
-var bm : PGdkBitmap;
-    pm : PGdkPixmap;
-    ppdata : ppgchar;
-begin
-  ppdata := StringsToPPgchar(Data);
-  pm := gdk_pixmap_colormap_create_from_xpm_d (nil, Colormap, @bm, nil, ppdata);
-  SetPixmap (pm, bm);
-  freemem (ppdata, sizeof (pgchar) * Data.count);
-end;
-
-procedure TFPgtkPixmap.LoadFromText (data:string);
-var l : TStrings;
-begin
-  l := TStringList.Create;
-  try
-    l.Text := data;
-    LoadFromStrings (l);
-  finally
-    l.Free;
-  end;
-end;
-
-procedure TFPgtkPixmap.LoadFromArray (data:array of string);
-var bm : PGdkBitmap;
-    pm : PGdkPixmap;
-    ppdata : ppgchar;
-begin
-  ppdata := ArrayToPPgchar(Data);
-  pm := gdk_pixmap_colormap_create_from_xpm_d (nil, Colormap, @bm, nil, ppdata);
-  SetPixmap (pm, bm);
-  freemem (ppdata, sizeof (pgchar) * (high(data)-low(data)+1));
-end;
-
-procedure CreateGdkPixmap (var ThePixmap:PGdkPixmap; var TheMask:PGdkBitmap; aWindow:PGdkWindow; data:array of string);
-var ppdata : ppgchar;
-begin
-  ppdata := ArrayToPPgchar(Data);
-  ThePixmap := gdk_pixmap_create_from_xpm_d (aWindow, @TheMask, nil, ppdata);
-  freemem (ppdata, sizeof (pgchar) * (high(data)-low(data)+1));
-end;
-
-
- { TFPgtkContainer }
-
-function TFPgtkContainer.TheGtkObject : PGtkContainer;
-begin
-  result := PgtkContainer(FGtkObject);
-end;
-
-
-function TFPgtkContainer.GetBorder : integer;
-begin
-  result := gtk.border_width(TheGtkObject^);
-end;
-
-procedure TFPgtkContainer.SetBorder (TheValue:integer);
-begin
-  gtk_container_set_border_width(TheGtkObject,TheValue);
-end;
-
-procedure TFPgtkContainer.Add (AWidget:TFPgtkWidget; IsVisible:boolean); Overload;
-begin
-  gtk_container_add (TheGtkObject, ConvertToGtkWidget(AWidget));
-  if IsVisible then
-    AWidget.Show;
-end;
-
-procedure TFPgtkContainer.Add (AWidget:TFPgtkWidget); Overload;
-begin
-  gtk_container_add (TheGtkObject, ConvertToGtkWidget(AWidget));
-  AWidget.Show;
-end;
-
-procedure TFPgtkContainer.Remove (AWidget:TFPgtkWidget);
-begin
-  gtk_container_remove (TheGtkObject, PGtkwidget(ConvertToGtkObject(AWidget)));
-end;
-
-constructor TFPgtkContainer.Create;
-begin
-  inherited create;
-  FChildren := TFPgtkWidgetGroup.Create;
-end;
-
-
-destructor TFPgtkContainer.Destroy;
-begin
-  if assigned(FChildren) then
-    FChildren.Free;
-  inherited destroy;
-end;
-
-
-function TFPgtkContainer.GetChildren : TFPgtkWidgetGroup;
-begin
-  FChildren.GtkList := gtk_container_children (TheGtkObject);
-  result := FChildren;
-end;
-
-procedure TFPgtkContainer.Focus (Direction:TGtkDirectionType);
-begin
-  gtk_container_focus (TheGtkObject, Direction);
-end;
-
-procedure TFPgtkContainer.FocusChild (Child:TFPgtkWidget);
-begin
-  gtk_container_set_focus_child (TheGtkObject, PGtkwidget(ConvertToGtkObject(Child)));
-end;
-
-procedure TFPgtkContainer.RegisterToplevel;
-begin
-  gtk_container_register_toplevel (TheGtkObject);
-end;
-
-procedure TFPgtkContainer.UnregisterToplevel;
-begin
-  gtk_container_unregister_toplevel (TheGtkObject);
-end;
-
-procedure TFPgtkContainer.ResizeChildren;
-begin
-  gtk_container_resize_children (TheGtkObject);
-end;
-
-function DirectionFunctionSignalfunc (Sender:PGtkobject; Direction:TGtkDirectionType; data:pointer) : TGtkDirectionType; cdecl;
-var p : TFPgtkDirectionFunctionSignalFunction;
-begin
-with PSignalData(data)^ do
-  begin
-  p := TFPgtkDirectionFunctionSignalFunction (TheSignalProc);
-  result := p (TheWidget as TFPgtkObject, Direction, TheData)
-  end;
-end;
-
-function TFPgtkContainer.DirectionFunctionSignalConnect (signal:string; proc:TFPgtkDirectionFunctionSignalFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@DirectionFunctionSignalfunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkContainer.DirectionFunctionSignalConnectAfter (signal:string; proc:TFPgtkDirectionFunctionSignalFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@DirectionFunctionSignalfunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkContainer.ConnectAdd (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-begin
-  result := WidgetSignalConnect (sgAdd, proc, data);
-end;
-
-function TFPgtkContainer.ConnectAfterAdd (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-begin
-  result := WidgetSignalConnectAfter (sgAdd, proc, data);
-end;
-
-function TFPgtkContainer.ConnectRemove (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-begin
-  result := WidgetSignalConnect (sgRemove, proc, data);
-end;
-
-function TFPgtkContainer.ConnectAfterRemove (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-begin
-  result := WidgetSignalConnectAfter (sgRemove, proc, data);
-end;
-
-function TFPgtkContainer.ConnectCheckResize (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnect (sgCheckResize, proc, data);
-end;
-
-function TFPgtkContainer.ConnectAfterCheckResize (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnectAfter (sgCheckResize, proc, data);
-end;
-
-function TFPgtkContainer.ConnectFocus (proc:TFPgtkDirectionFunctionSignalFunction; data:pointer) : guint;
-begin
-  result := DirectionFunctionSignalConnect (sgFocus, proc, data);
-end;
-
-function TFPgtkContainer.ConnectAfterFocus (proc:TFPgtkDirectionFunctionSignalFunction; data:pointer) : guint;
-begin
-  result := DirectionFunctionSignalConnectAfter (sgFocus, proc, data);
-end;
-
-function TFPgtkContainer.ConnectSetFocusChild (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-begin
-  result := WidgetSignalConnect (sgSetFocusChild, proc, data);
-end;
-
-function TFPgtkContainer.ConnectAfterSetFocusChild (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-begin
-  result := WidgetSignalConnectAfter (sgSetFocusChild, proc, data);
-end;
-
- { TFPgtkBin }
-
-function TFPgtkBin.TheGtkObject : PGtkBin;
-begin
-  result := PgtkBin(FGtkObject);
-end;
-
-
-function TFPgtkBin.GetChild : TFPgtkWidget;
-begin
-  result := GetPascalInstance(PGtkObject(TheGtkObject^.Child),tfpgtkwidget) as tfpgtkwidget;
-end;
-
-procedure TFPgtkBin.SetChild (TheValue:TFPgtkWidget);
-begin
-  Add (TheValue);
-end;
-
- { TFPgtkAlignment }
-
-function TFPgtkAlignment.TheGtkObject : PGtkAlignment;
-begin
-  result := PgtkAlignment(FGtkObject);
-end;
-
-
-procedure TFPgtkAlignment.Configure (anXAlign:gfloat; anYAlign:gfloat; anXScale:gfloat; anYScale:gfloat);
-begin
-  gtk_alignment_set (TheGtkObject, anXAlign, anYAlign, anXScale, anYScale);
-end;
-
- { TFPgtkFrame }
-
-function TFPgtkFrame.TheGtkObject : PGtkFrame;
-begin
-  result := PgtkFrame(FGtkObject);
-end;
-
-procedure TFPgtkFrame.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_frame_new (nil));
-end;
-
-
-function TFPgtkFrame.GetText : string;
-begin
-  result := TheGtkObject^.thelabel;
-end;
-
-procedure TFPgtkFrame.SetText (TheValue:string);
-begin
-  gtk_frame_set_label(TheGtkObject,ConvertToPgchar(TheValue));
-end;
-
-function TFPgtkFrame.GetAlignment : gfloat;
-begin
-  result := TheGtkObject^.label_xalign;
-end;
-
-procedure TFPgtkFrame.SetAlignment (TheValue:gfloat);
-begin
-  gtk_frame_set_label_align (ThegtkObject, TheValue, 0.0);
-end;
-
-function TFPgtkFrame.GetShadowType : TgtkShadowType;
-begin
-  result := TheGtkObject^.shadow_type;
-end;
-
-procedure TFPgtkFrame.SetShadowType (TheValue:TgtkShadowType);
-begin
-  gtk_frame_set_shadow_type(TheGtkObject,TheValue);
-end;
-
- { TFPgtkAspectFrame }
-
-function TFPgtkAspectFrame.TheGtkObject : PGtkAspectFrame;
-begin
-  result := PgtkAspectFrame(FGtkObject);
-end;
-
-procedure TFPgtkAspectFrame.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_aspect_frame_new (nil,0,0,1,1));
-end;
-
-
-procedure TFPgtkAspectFrame.Configure (anXAlign:gfloat; anYAlign:gfloat; Ratio:gfloat; ObeyChild:longbool);
-begin
-  gtk_aspect_frame_set (TheGtkObject, anXAlign, anYAlign, Ratio, gint(ObeyChild));
-end;
-
- { TFPgtkButton }
-
-function TFPgtkButton.TheGtkObject : PGtkButton;
-begin
-  result := PgtkButton(FGtkObject);
-end;
-
-procedure TFPgtkButton.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_button_new);
-end;
-
-
-function TFPgtkButton.LabelClass : TFPgtkLabelClass;
-begin
-  result := TFPgtkLabel;
-end;
-
-procedure TFPgtkButton.CreateLabel (aText:string);
-begin
-if not assigned (FLabel) then
-  begin
-  FLabel := LabelClass.Create ('');
-  with FLabel do
-    begin
-    AskNotification (Self);
-    FAccelKey := ParseULine (aText);
-    end;
-  if assigned(AddContainer) then
-    AddContainer.Add (FLabel)
-  else
-    Add (FLabel);
-  LabelCreated;  
-  end;
-end;
-
-procedure TFPgtkButton.NotifyDestroy (AnObject:TFPgtkObject);
-begin
-  inherited;
-  if AnObject = FLabel then
-    FLabel := nil;
-end;
-
-function TFPgtkButton.ConnectClicked (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnect (sgClicked, proc, data);
-end;
-
-function TFPgtkButton.ConnectAfterClicked (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnectAfter (sgClicked, proc, data);
-end;
-
-function TFPgtkButton.ConnectPressed (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnect (sgPressed, proc, data);
-end;
-
-function TFPgtkButton.ConnectAfterPressed (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnectAfter (sgPressed, proc, data);
-end;
-
-function TFPgtkButton.ConnectReleased (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnect (sgReleased, proc, data);
-end;
-
-function TFPgtkButton.ConnectAfterReleased (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnectAfter (sgReleased, proc, data);
-end;
-
-function TFPgtkButton.ConnectEnter (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnect (sgEnter, proc, data);
-end;
-
-function TFPgtkButton.ConnectAfterEnter (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnectAfter (sgEnter, proc, data);
-end;
-
-function TFPgtkButton.ConnectLeave (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnect (sgLeave, proc, data);
-end;
-
-function TFPgtkButton.ConnectAfterLeave (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnectAfter (sgLeave, proc, data);
-end;
-
-procedure TFPgtkButton.Clicked;
-begin
-  gtk_button_Clicked (TheGtkObject);
-end;
-
-procedure TFPgtkButton.Pressed;
-begin
-  gtk_button_Pressed (TheGtkObject);
-end;
-
-procedure TFPgtkButton.Released;
-begin
-  gtk_button_Released (TheGtkObject);
-end;
-
-procedure TFPgtkButton.Enter;
-begin
-  gtk_button_Enter (TheGtkObject);
-end;
-
-procedure TFPgtkButton.Leave;
-begin
-  gtk_button_Leave (TheGtkObject);
-end;
-
-constructor TFPgtkButton.Create;
-begin
-  inherited create;
-  FAddContainer := nil;
-end;
-
-
-constructor TFPgtkButton.CreateWithLabel (aText:string);
-begin
-  create;
-  Text := aText;
-end;
-
-
-constructor TFPgtkButton.CreateWithLabel (aText:string; AccelGroup:PGtkAccelGroup);
-begin
-  create;
-  Text := aText;
-  if (FAccelKey <> 0) and assigned(AccelGroup) then
-    AcceleratorAdd (AccelGroup, sgClicked, FAccelKey, DefaultButtonModifiers, GTK_ACCEL_Visible);
-end;
-
-
-function TFPgtkButton.GetText : string;
-begin
-  if assigned (FLabel) then
-    result := FLabel.Text
-  else
-    result := '';
-end;
-
-procedure TFPgtkButton.SetText (TheValue:string);
-begin
-  if assigned (FLabel) then
-    FLabel.Text := TheValue
-  else
-    if TheValue <> '' then
-      CreateLabel (TheValue);
-end;
-
-function TFPgtkButton.GetReliefStyle : TGtkReliefStyle;
-begin
-  result := gtk_button_get_relief(TheGtkObject);
-end;
-
-procedure TFPgtkButton.SetReliefStyle (TheValue:TGtkReliefStyle);
-begin
-  gtk_button_set_relief(TheGtkObject,TheValue);
-end;
-
-procedure TFPgtkButton.LabelCreated;
-begin
-  FLabel.setalignment (0.5,0.5);
-end;
-
- { TFPgtkToggleButton }
-
-function TFPgtkToggleButton.TheGtkObject : PGtkToggleButton;
-begin
-  result := PgtkToggleButton(FGtkObject);
-end;
-
-procedure TFPgtkToggleButton.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_toggle_button_new);
-end;
-
-
-function TFPgtkToggleButton.ConnectToggled (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnect (sgToggled, proc, data);
-end;
-
-function TFPgtkToggleButton.ConnectAfterToggled (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnectAfter (sgToggled, proc, data);
-end;
-
-procedure TFPgtkToggleButton.Toggled;
-begin
-  gtk_toggle_button_toggled (TheGtkObject);
-end;
-
-function TFPgtkToggleButton.GetActive : boolean;
-begin
-  result := gtk_toggle_button_get_active(TheGtkObject);
-end;
-
-procedure TFPgtkToggleButton.SetActive (TheValue:boolean);
-begin
-  gtk_toggle_button_set_active(TheGtkObject,TheValue);
-end;
-
-function TFPgtkToggleButton.GetDrawIndicator : boolean;
-begin
-  result := boolean(gtk.draw_indicator(TheGtkObject^));
-end;
-
-procedure TFPgtkToggleButton.SetDrawIndicator (TheValue:boolean);
-begin
-  gtk.Set_draw_indicator(TheGtkObject^,guint(TheValue))
-end;
-
- { TFPgtkCheckButton }
-
-function TFPgtkCheckButton.TheGtkObject : PGtkCheckButton;
-begin
-  result := PgtkCheckButton(FGtkObject);
-end;
-
-procedure TFPgtkCheckButton.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_check_button_new);
-end;
-
-
- { TFPgtkRadioButton }
-
-function TFPgtkRadioButton.TheGtkObject : PGtkRadioButton;
-begin
-  result := PgtkRadioButton(FGtkObject);
-end;
-
-
-constructor TFPgtkRadioButton.Create (AGroup:TFPgtkRadioButtonGroup);
-begin
-  FGroup := AGroup;
-  inherited create;
-end;
-
-
-constructor TFPgtkRadioButton.CreateWithLabel (AGroup:TFPgtkRadioButtonGroup; aText:string);
-begin
-  FGroup := AGroup;
-  inherited CreateWithLabel (aText);
-end;
-
-
-procedure TFPgtkRadioButton.CreateGtkObject;
-begin
-  if not assigned (FGroup) then
-    FGroup := TFPgtkRadioButtonGroup.Create;
-  TheGtkWidget := gtk_radio_button_new (FGroup.GtkSList);
-  FGroup.GtkSList := gtk_radio_button_group (TheGtkObject);
-end;
-
- { TFPgtkRadioButtonGroup }
-
-
-function TFPgtkRadioButtonGroup.GetItem (index:integer) : TFPgtkRadioButton;
-begin
-  result := TFPgtkRadioButton(Inherited items[index]);
-end;
-
-procedure TFPgtkRadioButtonGroup.SetItem (index:integer; TheValue:TFPgtkRadioButton);
-begin
-  inherited items[index] := TheValue;
-end;
-
-function TFPgtkRadioButtonGroup.ActiveButtonText : string;
-begin
-  result := ActiveButton.Text;
-end;
-
-function TFPgtkRadioButtonGroup.ActiveButtonIndex : integer;
-begin
-  Result := pred(count);
-  while (Result >= 0) and (not items[Result].Active) do
-    dec (Result);
-end;
-
-function TFPgtkRadioButtonGroup.ActiveButton : TFPgtkRadioButton;
-var r : integer;
-begin
-  r := ActiveButtonIndex;
-  if r >= 0 then
-    result := items[r]
-  else
-    result := nil;
-end;
-
-function RadioButtonGroupCreateFromStrings (TheItems:TStrings; ToggledFunction:TFPgtkSignalFunction) : TFPgtkRadioButtonGroup;
-var r : integer;
-    b : TFPgtkRadioButton;
-begin
-  result := TFPgtkRadioButtonGroup.Create;
-  result.BeginUpdate;
-  for r := TheItems.count-1 downto 0 do
-    begin
-    b := TFPgtkRadioButton.CreateWithLabel (result, TheItems[r]);
-    if assigned(toggledfunction) then
-      b.connecttoggled (ToggledFunction, IntToPointer(r));
-    end;
-  b.active := true;
-  result.EndUpdate;
-end;
-
-
- { TFPgtkOptionMenu }
-
-function TFPgtkOptionMenu.TheGtkObject : PGtkOptionMenu;
-begin
-  result := PgtkOptionMenu(FGtkObject);
-end;
-
-procedure TFPgtkOptionMenu.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_option_menu_new);
-end;
-
-
-function TFPgtkOptionMenu.GetMenu : TFPgtkMenu;
-begin
-  result := GetPascalInstance(PGtkObject(gtk_option_menu_get_menu(TheGtkObject)),tfpgtkmenu) as tfpgtkmenu;
-end;
-
-procedure TFPgtkOptionMenu.setmenu (TheValue:TFPgtkMenu);
-begin
-  gtk_option_menu_set_menu(TheGtkObject, ConvertToGtkWidget(TheValue));
-end;
-
-procedure TFPgtkOptionMenu.RemoveMenu;
-begin
-  gtk_option_menu_remove_menu (TheGtkObject);
-end;
-
-procedure TFPgtkOptionMenu.SetHistory (index:integer);
-begin
-  gtk_option_menu_set_history (TheGtkObject, index);
-end;
-
-procedure TFPgtkOptionMenu.Clear;
-var w : TFPgtkWidget;
-begin
-  w := Menu;
-  if assigned(w) then
-    begin
-    w := TFPgtkMenu(w).Active;
-    if assigned (w) then
-      TFPgtkItem(w).Deselect;
-    end;
-end;
-
- { TFPgtkItem }
-
-function TFPgtkItem.TheGtkObject : PGtkItem;
-begin
-  result := PgtkItem(FGtkObject);
-end;
-
-
-function TFPgtkItem.LabelClass : TFPgtkLabelClass;
-begin
-  result := TFPgtkLabel;
-end;
-
-procedure TFPgtkItem.CreateLabel (aText:string);
-begin
-  if not assigned (FLabel) then
-    begin
-    FLabel := LabelClass.Create ('');
-    with FLabel do
-      begin
-      AskNotification (Self);
-      FAccelKey := ParseULine (aText);
-      end;
-    if assigned(AddContainer) then
-      AddContainer.Add (FLabel)
-    else
-      Add (FLabel);
-    LabelCreated;
-    end;
-end;
-
-procedure TFPgtkItem.NotifyDestroy (AnObject:TFPgtkObject);
-begin
-  inherited;
-  if AnObject = FLabel then
-    FLabel := nil;
-end;
-
-function TFPgtkItem.ConnectSelect (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnect (sgSelect, proc, data);
-end;
-
-function TFPgtkItem.ConnectAfterSelect (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnectAfter (sgSelect, proc, data);
-end;
-
-function TFPgtkItem.ConnectDeselect (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnect (sgDeselect, proc, data);
-end;
-
-function TFPgtkItem.ConnectAfterDeselect (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnectAfter (sgDeselect, proc, data);
-end;
-
-function TFPgtkItem.ConnectToggle (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnect (sgToggle, proc, data);
-end;
-
-function TFPgtkItem.ConnectAfterToggle (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnectAfter (sgToggle, proc, data);
-end;
-
-procedure TFPgtkItem.Select;
-begin
-  gtk_item_Select (TheGtkObject);
-end;
-
-procedure TFPgtkItem.Deselect;
-begin
-  gtk_item_Deselect (TheGtkObject);
-end;
-
-procedure TFPgtkItem.Toggle;
-begin
-  gtk_item_Toggle (TheGtkObject);
-end;
-
-constructor TFPgtkItem.Create;
-begin
-  inherited;
-  FAddContainer := nil;
-end;
-
-
-constructor TFPgtkItem.CreateWithLabel (aText:string);
-begin
-  inherited create;
-  Text := aText;
-end;
-
-
-function TFPgtkItem.GetText : string;
-begin
-  if assigned (FLabel) then
-    result := FLabel.Text
-  else
-    result := '';
-end;
-
-procedure TFPgtkItem.SetText (TheValue:string);
-begin
-  if assigned (FLabel) then
-    FLabel.Text := TheValue
-  else
-    if TheValue <> '' then
-      CreateLabel (TheValue);
-end;
-
-procedure TFPgtkItem.LabelCreated;
-begin
-end;
-
- { TFPgtkItemGroup }
-
-
-function TFPgtkItemGroup.GetItem (index:integer) : TFPgtkItem;
-begin
-  result := TFPgtkItem (inherited items[index]);
-end;
-
-procedure TFPgtkItemGroup.SetItem (index:integer; TheValue:TFPgtkItem);
-begin
-  inherited items[index] := TheValue;
-end;
-
-procedure TFPgtkItemGroup.FillFromList (aList:TStrings);
-var r : integer;
-    i : TFPgtkItem;
-begin
-  BeginUpdate;
-  for r := 0 to aList.count-1 do
-    begin
-    i := FItemClass.CreateWithLabel (aList[r]);
-    add (i);
-    i.Show;
-    end;
-  EndUpdate;
-end;
-
-procedure TFPgtkItemGroup.FillFromCommaText (aList:string);
-var l : TStrings;
-begin
-  l := TStringList.Create;
-  try
-    l.commatext := aList;
-    FillFromList (l);
-  finally
-    l.Free;
-  end;
-end;
-
-procedure TFPgtkItemGroup.FillFromArray (aList:array of string);
-var r : integer;
-    l : TStrings;
-begin
-  l := TStringlist.Create;
-  try
-    for r := low (aList) to high(aList) do
-      l.Add (aList[r]);
-    FillFromList (l);
-  finally
-    l.Free;
-  end;
-end;
-
-procedure TFPgtkItemGroup.SignalConnect (Signal:string; proc:TFPgtkSignalFunction; data:pointer);
-var r : integer;
-begin
-  if assigned (Proc) then
-    for r := 0 to count-1 do
-      Items[r].SignalConnect (Signal, proc, data);
-end;
-
-constructor TFPgtkItemGroup.create (AnItemClass:TFPgtkItemClass);
-begin
-  inherited create;
-  FItemClass := AnItemClass;
-end;
-
-
-function TFPgtkItemGroup.AddTextItem (aText:string) : TFPgtkItem;
-begin
-  result := FItemClass.CreateWithLabel (aText);
-  Add (result);
-  result.Show;
-end;
-
- { TFPgtkMenuItem }
-
-function TFPgtkMenuItem.TheGtkObject : PGtkMenuItem;
-begin
-  result := PgtkMenuItem(FGtkObject);
-end;
-
-procedure TFPgtkMenuItem.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_menu_item_new);
-end;
-
-
-function TFPgtkMenuItem.ConnectActivate (proc:TFPgtksignalFunction; data:pointer) : guint;
-begin
-  result := signalConnect (sgActivate, proc, data);
-end;
-
-function TFPgtkMenuItem.ConnectAfterActivate (proc:TFPgtksignalFunction; data:pointer) : guint;
-begin
-  result := signalConnectAfter (sgActivate, proc, data);
-end;
-
-function TFPgtkMenuItem.ConnectActivateItem (proc:TFPgtksignalFunction; data:pointer) : guint;
-begin
-  result := signalConnect (sgActivateItem, proc, data);
-end;
-
-function TFPgtkMenuItem.ConnectAfterActivateItem (proc:TFPgtksignalFunction; data:pointer) : guint;
-begin
-  result := signalConnectAfter (sgActivateItem, proc, data);
-end;
-
-procedure TFPgtkMenuItem.Activate;
-begin
-  gtk_menu_item_activate (TheGtkObject);
-end;
-
-procedure TFPgtkMenuItem.SetSubMenu (aSubMenu:TFPgtkWidget);
-begin
-  gtk_menu_item_Set_submenu (TheGtkObject, PGtkwidget(ConvertToGtkObject(aSubMenu)));
-end;
-
-procedure TFPgtkMenuItem.RemoveSubMenu;
-begin
-  gtk_menu_item_remove_submenu (TheGtkObject);
-end;
-
-procedure TFPgtkMenuItem.Configure (ShowToggleIndicator:boolean; ShowSubmenuIndicator:boolean);
-begin
-  gtk_menu_item_configure (TheGtkObject, ord(ShowToggleIndicator), ord(ShowSubmenuIndicator));
-end;
-
-procedure TFPgtkMenuItem.RightJustify;
-begin
-  gtk_menu_item_right_justify (TheGtkObject);
-end;
-
-function TFPgtkMenuItem.GetPlacement : TGtkSubmenuPlacement;
-begin
-  result := TGtkSubmenuPlacement(submenu_placement(TheGtkObject^));
-end;
-
-procedure TFPgtkMenuItem.SetPlacement (TheValue:TGtkSubmenuPlacement);
-begin
-  gtk_menu_item_set_placement(TheGtkObject,TheValue);
-end;
-
-function TFPgtkMenuItem.GetToggleIndicator : boolean;
-begin
-  result := boolean(gtk.show_toggle_indicator(TheGtkObject^));
-end;
-
-procedure TFPgtkMenuItem.SetToggleIndicator (TheValue:boolean);
-begin
-  Configure (TheValue, SubMenuIndicator);
-end;
-
-function TFPgtkMenuItem.GetSubMenuIndicator : boolean;
-begin
-  result := boolean(gtk.show_submenu_indicator(TheGtkObject^));
-end;
-
-procedure TFPgtkMenuItem.SetSubMenuIndicator (TheValue:boolean);
-begin
-  configure (ToggleIndicator, TheValue);
-end;
-
-function TFPgtkMenuItem.GetJustifyRight : boolean;
-begin
-  result := boolean(gtk.right_justify(TheGtkObject^));
-end;
-
-procedure TFPgtkMenuItem.SetJustifyRight (TheValue:boolean);
-begin
-  gtk.Set_right_justify(TheGtkObject^,guint(TheValue))
-end;
-
-function TFPgtkMenuItem.GetSubMenu : TFPgtkMenuShell;
-begin
-  result := GetPascalInstance(PGtkObject(TheGtkObject^.submenu),tfpgtkmenushell) as tfpgtkmenushell;
-end;
-
-procedure TFPgtkMenuItem.SetPropSubMenu (TheValue:TFPgtkMenuShell);
-begin
-  SetSubMenu (TheValue);
-end;
-
-function TFPgtkMenuItem.LabelClass : TFPgtkLabelClass;
-begin
-  result := TFPgtkAccelLabel;
-end;
-
-procedure TFPgtkMenuItem.LabelCreated;
-begin
-  with (TheLabel as TFPgtkAccelLabel) do
-    AccelWidget := Self;
-end;
-
- { TFPgtkCheckMenuItem }
-
-function TFPgtkCheckMenuItem.TheGtkObject : PGtkCheckMenuItem;
-begin
-  result := PgtkCheckMenuItem(FGtkObject);
-end;
-
-procedure TFPgtkCheckMenuItem.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_check_menu_item_new);
-end;
-
-
-function TFPgtkCheckMenuItem.ConnectToggled (proc:TFPgtksignalFunction; data:pointer) : guint;
-begin
-  result := signalConnect (sgToggled, proc, data);
-end;
-
-function TFPgtkCheckMenuItem.ConnectAfterToggled (proc:TFPgtksignalFunction; data:pointer) : guint;
-begin
-  result := signalConnectAfter (sgToggled, proc, data);
-end;
-
-procedure TFPgtkCheckMenuItem.Toggled;
-begin
-  gtk_check_menu_item_toggled (TheGtkObject);
-end;
-
-function TFPgtkCheckMenuItem.GetActive : boolean;
-begin
-  result := boolean(gtk.active(TheGtkObject^));
-end;
-
-procedure TFPgtkCheckMenuItem.SetActive (TheValue:boolean);
-begin
-  gtk_check_menu_item_set_active(TheGtkObject,TheValue);
-end;
-
-function TFPgtkCheckMenuItem.GetShowToggle : boolean;
-begin
-  result := boolean(gtk.always_show_toggle(TheGtkObject^));
-end;
-
-procedure TFPgtkCheckMenuItem.SetShowToggle (TheValue:boolean);
-begin
-  gtk_check_menu_item_set_show_toggle(TheGtkObject,TheValue);
-end;
-
- { TFPgtkRadioMenuItem }
-
-function TFPgtkRadioMenuItem.TheGtkObject : PGtkRadioMenuItem;
-begin
-  result := PgtkRadioMenuItem(FGtkObject);
-end;
-
-
-procedure TFPgtkRadioMenuItem.CreateGtkObject;
-begin
-  if not assigned(FGroup) then
-    FGroup := TFPgtkRadioMenuGroup.Create;
-  TheGtkWidget := gtk_radio_menu_item_new (FGroup.GtkSList);
-  FGroup.GtkSList := gtk_radio_menu_item_group (TheGtkObject);
-end;
-
-constructor TFPgtkRadioMenuItem.Create (AGroup:TFPgtkRadioMenuGroup);
-begin
-  FGroup := AGroup;
-  inherited create;
-end;
-
-
-constructor TFPgtkRadioMenuItem.CreateWithLabel (Agroup:TFPgtkRadioMenuGroup; aText:string);
-begin
-  FGroup := Agroup;
-  inherited CreateWithLabel (aText);
-end;
-
-
- { TFPgtkRadioMenuGroup }
-
-
-function TFPgtkRadioMenuGroup.GetItem (index:integer) : TFPgtkRadioMenuItem;
-begin
-  result := TFPgtkRadioMenuItem(Inherited items[index]);
-end;
-
-procedure TFPgtkRadioMenuGroup.SetItem (index:integer; TheValue:TFPgtkRadioMenuItem);
-begin
-  inherited items[index] := TheValue;
-end;
-
-function TFPgtkRadioMenuGroup.ActiveMenuText : string;
-begin
-  result := ActiveMenu.Text;
-end;
-
-function TFPgtkRadioMenuGroup.ActiveMenuIndex : integer;
-begin
-  Result := pred(count);
-  while (Result >= 0) and (not items[Result].Active) do
-    dec (Result);
-end;
-
-function TFPgtkRadioMenuGroup.ActiveMenu : TFPgtkRadioMenuItem;
-var r : integer;
-begin
-  r := ActiveMenuIndex;
-  if r >= 0 then
-    result := items[r]
-  else
-    result := nil;
-end;
-
-constructor TFPgtkRadioMenuGroup.create;
-begin
-  inherited create (TFPgtkRadioMenuItem);
-end;
-
-
- { TFPgtkTearOffMenuItem }
-
-function TFPgtkTearOffMenuItem.TheGtkObject : PGtkTearOffMenuItem;
-begin
-  result := PgtkTearOffMenuItem(FGtkObject);
-end;
-
-procedure TFPgtkTearOffMenuItem.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_tearoff_menu_item_new);
-end;
-
-
- { TFPgtkListItem }
-
-function TFPgtkListItem.TheGtkObject : PGtkListItem;
-begin
-  result := PgtkListItem(FGtkObject);
-end;
-
-procedure TFPgtkListItem.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_list_item_new);
-end;
-
-
-procedure ScrollSignalproc (Sender:PGtkobject; ScrollType:TgtkScrollType; position:gfloat; data:pointer); cdecl;
-var p : TFPgtkScrollSignalFunction;
-begin
-with PSignalData(data)^ do
-  begin
-  p := TFPgtkScrollSignalFunction (TheSignalProc);
-  p (TheWidget as TFPgtkObject, ScrollType, position, TheData)
-  end;
-end;
-
-function TFPgtkListItem.ScrollSignalConnect (signal:string; proc:TFPgtkScrollSignalFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@ScrollSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkListItem.ScrollSignalConnectAfter (signal:string; proc:TFPgtkScrollSignalFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@ScrollSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-procedure ScrollBooleanSignalproc (Sender:PGtkobject; ScrolType:TgtkScrollType; Position:gfloat; AutoStartSelection:boolean; data:pointer); cdecl;
-var p : TFPgtkScrollBooleanSignalFunction;
-begin
-with PSignalData(data)^ do
-  begin
-  p := TFPgtkScrollBooleanSignalFunction (TheSignalProc);
-  p (TheWidget as TFPgtkObject, ScrolType, Position, AutoStartSelection, TheData)
-  end;
-end;
-
-function TFPgtkListItem.ScrollBooleanSignalConnect (signal:string; proc:TFPgtkScrollBooleanSignalFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@ScrollBooleanSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkListItem.ScrollBooleanSignalConnectAfter (signal:string; proc:TFPgtkScrollBooleanSignalFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@ScrollBooleanSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkListItem.ConnectToggleFocusRow (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnect (sgToggleFocusRow, proc, data);
-end;
-
-function TFPgtkListItem.ConnectAfterToggleFocusRow (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnectAfter (sgToggleFocusRow, proc, data);
-end;
-
-function TFPgtkListItem.ConnectSelectAll (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnect (sgSelectAll, proc, data);
-end;
-
-function TFPgtkListItem.ConnectAfterSelectAll (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnectAfter (sgSelectAll, proc, data);
-end;
-
-function TFPgtkListItem.ConnectUnselectAll (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnect (sgUnselectAll, proc, data);
-end;
-
-function TFPgtkListItem.ConnectAfterUnselectAll (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnectAfter (sgUnselectAll, proc, data);
-end;
-
-function TFPgtkListItem.ConnectUndoSelection (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnect (sgUndoSelection, proc, data);
-end;
-
-function TFPgtkListItem.ConnectAfterUndoSelection (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnectAfter (sgUndoSelection, proc, data);
-end;
-
-function TFPgtkListItem.ConnectStartSelection (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnect (sgStartSelection, proc, data);
-end;
-
-function TFPgtkListItem.ConnectAfterStartSelection (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnectAfter (sgStartSelection, proc, data);
-end;
-
-function TFPgtkListItem.ConnectEndSelection (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnect (sgEndSelection, proc, data);
-end;
-
-function TFPgtkListItem.ConnectAfterEndSelection (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnectAfter (sgEndSelection, proc, data);
-end;
-
-function TFPgtkListItem.ConnectToggleAddMode (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnect (sgToggleAddMode, proc, data);
-end;
-
-function TFPgtkListItem.ConnectAfterToggleAddMode (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnectAfter (sgToggleAddMode, proc, data);
-end;
-
-function TFPgtkListItem.ConnectExtendSelection (proc:TFPgtkScrollBooleanSignalFunction; data:pointer) : guint;
-begin
-  result := ScrollBooleanSignalConnect (sgExtendSelection, proc, data);
-end;
-
-function TFPgtkListItem.ConnectAfterExtendSelection (proc:TFPgtkScrollBooleanSignalFunction; data:pointer) : guint;
-begin
-  result := ScrollBooleanSignalConnectAfter (sgExtendSelection, proc, data);
-end;
-
-function TFPgtkListItem.ConnectScrollVertical (proc:TFPgtkScrollSignalFunction; data:pointer) : guint;
-begin
-  result := ScrollSignalConnect (sgScrollVertical, proc, data);
-end;
-
-function TFPgtkListItem.ConnectAfterScrollVertical (proc:TFPgtkScrollSignalFunction; data:pointer) : guint;
-begin
-  result := ScrollSignalConnectAfter (sgScrollVertical, proc, data);
-end;
-
-function TFPgtkListItem.ConnectScrollHorizontal (proc:TFPgtkScrollSignalFunction; data:pointer) : guint;
-begin
-  result := ScrollSignalConnect (sgScrollHorizontal, proc, data);
-end;
-
-function TFPgtkListItem.ConnectAfterScrollHorizontal (proc:TFPgtkScrollSignalFunction; data:pointer) : guint;
-begin
-  result := ScrollSignalConnectAfter (sgScrollHorizontal, proc, data);
-end;
-
-procedure TFPgtkListItem.Select;
-begin
-  gtk_list_item_select (TheGtkObject);
-end;
-
-procedure TFPgtkListItem.Deselect;
-begin
-  gtk_list_item_deselect (TheGtkObject);
-end;
-
- { TFPgtkListItemGroup }
-
-
-constructor TFPgtkListItemGroup.create;
-begin
-  inherited create (TFPgtkListItem);
-  ManageLists := false;
-end;
-
-
- { TFPgtkTreeItem }
-
-function TFPgtkTreeItem.TheGtkObject : PGtkTreeItem;
-begin
-  result := PgtkTreeItem(FGtkObject);
-end;
-
-procedure TFPgtkTreeItem.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_tree_item_new);
-end;
-
-
-function TFPgtkTreeItem.GetSubTree : TFPgtkWidget;
-begin
-  result := GetPascalInstance(PGtkObject(gtk_tree_item_subtree(TheGtkObject)),tfpgtkwidget) as tfpgtkwidget;
-end;
-
-procedure TFPgtkTreeItem.SetSubTree (TheValue:TFPgtkWidget);
-begin
-  if assigned(TheValue) then
-    gtk_tree_item_set_subtree (TheGtkObject, ConvertToGtkWidget(TheValue))
-  else
-    gtk_tree_item_remove_subtree (TheGtkObject);
-end;
-
-function TFPgtkTreeItem.GetPixPlus : TFPgtkWidget;
-begin
-  result := GetPascalInstance(PGtkObject(TheGtkObject^.plus_pix_widget),tfpgtkwidget) as tfpgtkwidget;
-end;
-
-function TFPgtkTreeItem.GetPixMinus : TFPgtkWidget;
-begin
-  result := GetPascalInstance(PGtkObject(TheGtkObject^.minus_pix_widget),tfpgtkwidget) as tfpgtkwidget;
-end;
-
-function TFPgtkTreeItem.GetExpanded : boolean;
-begin
-  result := boolean(gtk.expanded(TheGtkObject^));
-end;
-
-procedure TFPgtkTreeItem.SetExpanded (TheValue:boolean);
-begin
-  if TheValue then
-    Expand
-  else
-    collapse;
-end;
-
-procedure TFPgtkTreeItem.Select;
-begin
-  gtk_tree_item_select (TheGtkObject);
-end;
-
-procedure TFPgtkTreeItem.Deselect;
-begin
-  gtk_tree_item_deselect (TheGtkObject);
-end;
-
-procedure TFPgtkTreeItem.Expand;
-begin
-  gtk_tree_item_expand (TheGtkObject);
-end;
-
-procedure TFPgtkTreeItem.Collapse;
-begin
-  gtk_tree_item_collapse (TheGtkObject);
-end;
-
-function TFPgtkTreeItem.ConnectCollapse (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnect (sgCollapse, proc, data);
-end;
-
-function TFPgtkTreeItem.ConnectAfterCollapse (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnectAfter (sgCollapse, proc, data);
-end;
-
-function TFPgtkTreeItem.ConnectExpand (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnect (sgExpand, proc, data);
-end;
-
-function TFPgtkTreeItem.ConnectAfterExpand (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnectAfter (sgExpand, proc, data);
-end;
-
- { TFPgtkWindow }
-
-function TFPgtkWindow.TheGtkObject : PGtkWindow;
-begin
-  result := PgtkWindow(FGtkObject);
-end;
-
-procedure TFPgtkWindow.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_window_new (TheWindowType));
-end;
-
-
-constructor TFPgtkWindow.Create (AType:TGtkWindowType);
-begin
-  TheWindowType := AType;
-  inherited Create;
-  FAccelGroups := TList.Create;
-  FMainLevel := NoMainLevel;
-end;
-
-
-destructor TFPgtkWindow.Destroy;
-begin
-  FAccelGroups.Free;
-  inherited;
-end;
-
-
-function TFPgtkWindow.GetWindowType : TGtkWindowType;
-begin
-  result := TheGtkObject^.thetype;
-end;
-
-procedure TFPgtkWindow.SetWindowType (TheValue:TGtkWindowType);
-begin
-  TheGtkObject^.thetype := TheValue;
-end;
-
-function TFPgtkWindow.GetTitle : string;
-begin
-  result := TheGtkObject^.title;
-end;
-
-procedure TFPgtkWindow.SetTitle (TheValue:string);
-begin
-  gtk_window_set_title(TheGtkObject,ConvertToPgchar(TheValue));
-end;
-
-function TFPgtkWindow.GetModal : boolean;
-begin
-  result := boolean(gtk.modal(TheGtkObject^));
-end;
-
-procedure TFPgtkWindow.SetModal (TheValue:boolean);
-begin
-  gtk_window_set_modal(TheGtkObject,TheValue);
-end;
-
-procedure TFPgtkWindow.DoDialogResult (Action:integer; Sender:TFPgtkObject);
-begin
-  if assigned (OnDialogResult) then
-    OnDialogResult (self, FDialogResult, Action, Sender);
-end;
-
-procedure TFPgtkWindow.DoDialogInit (InitData:pointer);
-begin
-  if assigned (OnDialogInit) then
-    OnDialogInit (self, InitData);
-  FDialogResult := InitData;
-end;
-
-procedure TFPgtkWindow.Close;
-begin
-  if (FDestroying = dsAlive) then
-    gtk_widget_destroy (TheGtkWidget);
-end;
-
-procedure TFPgtkWindow.CloseWindow (Sender:TFPgtkObject; data:pointer);
-begin
-  Close;
-end;
-
-procedure TFPgtkWindow.CloseWithResult (Sender:TFPgtkObject; data:pointer);
-begin
-  ModalAction := pointertoint(data);
-end;
-
-procedure TFPgtkWindow.SetModalAction (TheValue:integer);
-begin
-  FModalAction := TheValue;
-  if TheValue <> 0 then
-    begin
-    DoDialogResult (FModalAction, self);
-    close;
-    end;
-end;
-
-procedure TFPgtkWindow.ExecuteEnds (Sender:TFPgtkObject; data:pointer);
-begin
-  if gtk_main_level = FMainLevel then
-    gtk_main_quit;
-end;
-
-function TFPgtkWindow.Execute (anOnDialogInit:DialogInitCallBack; anInitData:pointer; anOnDialogResult:DialogResultCallBack) : integer;
-begin
-  FModalAction := drNone;
-  if assigned (anOnDialogInit) then
-    OnDialogInit := anOnDialogInit;
-  DoDialogInit (anInitData);
-  if assigned (anOnDialogResult) then
-    OnDialogResult := anOnDialogResult;
-  ConnectDestroy (@ExecuteEnds, nil);
-  Modal := True;
-  Show;
-  FMainLevel := gtk_main_level + 1;
-  try
-    gtk_main;
-    result := FModalAction;
-  finally
-    FMainLevel := NoMainLevel;
-  end;
-end;
-
-function TFPgtkWindow.ConnectSetFocus (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-begin
-  result := WidgetSignalConnect (sgSetFocus, proc, data);
-end;
-
-function TFPgtkWindow.ConnectAfterSetFocus (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-begin
-  result := WidgetSignalConnectAfter (sgSetFocus, proc, data);
-end;
-
-procedure TFPgtkWindow.SetTransientFor (aParent:TFPgtkWindow);
-begin
-  gtk_window_set_transient_for (TheGtkObject, PGtkwindow(ConvertToGtkObject(aParent)));
-end;
-
-procedure TFPgtkWindow.DefaultWidget (Widget:TFPgtkWidget);
-begin
-  gtk_window_set_default (TheGtkObject, PGtkwidget(ConvertToGtkObject(Widget)));
-end;
-
-procedure TFPgtkWindow.FocusedWidget (NewFocus:TFPgtkWidget);
-begin
-  gtk_window_set_focus (TheGtkObject, PGtkwidget(ConvertToGtkObject(NewFocus)));
-end;
-
-function TFPgtkWindow.GetUserSizable : boolean;
-begin
-  result := (allow_grow(TheGtkObject^)=1) and (auto_shrink(TheGtkObject^)=0);
-end;
-
-procedure TFPgtkWindow.SetUserSizable (TheValue:boolean);
-begin
-  if TheValue then
-    gtk_window_set_policy (TheGtkObject, gint(FALSE), gint(TRUE), gint(FALSE))
-  else
-    gtk_window_set_policy (TheGtkObject, gint(FALSE), gint(FALSE), gint(TRUE));
-end;
-
-procedure TFPgtkWindow.ActivateFocus;
-begin
-  gtk_window_activate_focus (TheGtkObject);
-end;
-
-procedure TFPgtkWindow.ActivateDefault;
-begin
-  gtk_window_activate_default (TheGtkObject);
-end;
-
-procedure TFPgtkWindow.SetDefaultSize (Width:gint; Height:gint);
-begin
-  gtk_window_set_default_size (TheGtkObject, Width, Height);
-end;
-
-function TFPgtkWindow.GetPosition : TGtkWindowPosition;
-begin
-  result := TGtkWindowPosition (gtk.position (TheGtkObject^));
-end;
-
-procedure TFPgtkWindow.SetPosition (TheValue:TGtkWindowPosition);
-begin
-  gtk_window_set_position(TheGtkObject,TheValue);
-end;
-
-function TFPgtkWindow.GetAccelGroups (ID:integer) : PGtkAccelGroup;
-begin
-  result := FAccelGroups[ID];
-  if result = nil then
-    result := FAccelGroups[-1];
-end;
-
-function TFPgtkWindow.AccelGroupNew : integer;
-var ag : Pgtkaccelgroup;
-begin
-  result := FAccelGroups.Count;
-  ag := gtk_accel_group_new;
-  FAccelGroups.Add (ag);
-  gtk_window_add_accel_group (TheGtkObject, ag);
-end;
-
-procedure TFPgtkWindow.AccelGroupDelete (ID:integer);
-begin
-  gtk_accel_group_detach (FAccelGroups[ID], FGtkObject);
-  FAccelGroups[ID] := nil;
-end;
-
-procedure TFPgtkWindow.AcceleratorAdd (AG:integer; aWidget:TFPgtkWidget; aSignal:string; Key:guint; Mods:TGdkModifierType; acFlags:TGtkAccelFlags); Overload;
-begin
-  gtk_widget_add_accelerator (ConvertToGtkWidget(aWidget), pgchar(aSignal),
-        AccelGroups[AG], Key, Mods, acFlags);
-end;
-
-procedure AcceleratorAdd (AG:PGtkAccelGroup; aWidget:TFPgtkWidget; aSignal:string; Key:guint; Mods:TGdkModifierType; Flags:TGtkAccelFlags);
-begin
-  gtk_widget_add_accelerator (ConvertToGtkWidget(aWidget), pgchar(aSignal),
-        AG, Key, Mods, Flags);
-end;
-
-
-procedure TFPgtkWindow.AcceleratorRemove (AG:integer; aWidget:TFPgtkWidget; Key:guint; Mods:TGdkModifierType); Overload;
-begin
-  gtk_widget_remove_accelerator (ConvertToGtkWidget(aWidget), AccelGroups[AG], Key, Mods);
-end;
-
-procedure AcceleratorRemove (AG:PGtkAccelGroup; aWidget:TFPgtkWidget; Key:guint; Mods:TGdkModifierType); Overload;
-begin
-  gtk_widget_remove_accelerator (ConvertToGtkWidget(aWidget), AG, Key, Mods);
-end;
-
-
-procedure TFPgtkWindow.AccelGroupLock (AG:integer);
-begin
-  gtk_accel_group_lock (AccelGroups[AG]);
-end;
-
-procedure AccelGroupLock (AG:PGtkAccelGroup);
-begin
-  gtk_accel_group_lock (AG);
-end;
-
-
-procedure TFPgtkWindow.AccelGroupUnlock (AG:integer);
-begin
-  gtk_accel_group_unlock (AccelGroups[AG]);
-end;
-
-procedure AccelGroupUnlock (AG:PGtkAccelGroup);
-begin
-  gtk_accel_group_unlock (AG);
-end;
-
-
-function AccelKeyName (Key:guint; Mods:TGdkModifierType) : string;
-begin
-  result := string (gtk_accelerator_name(Key, Mods));
-end;
-
-
-procedure AccelKeyParse (AccelName:string; var Key:guint; var Mods:TGdkModifierType);
-var k : guint;
-    m : TGdkModifierType;
-begin
-  gtk_accelerator_parse (pgchar(AccelName), @k, @m);
-  Key := k;
-  Mods := m;
-end;
-
-
-procedure TFPgtkWindow.AccelGroupActivate (AG:integer; Key:guint; Mods:TGdkModifierType);
-begin
-  gtk_accel_group_activate (AccelGroups[AG], Key, Mods);
-end;
-
-procedure AccelGroupActivate (AG:PGtkAccelGroup; Key:guint; Mods:TGdkModifierType);
-begin
-  gtk_accel_group_activate (AG, Key, Mods);
-end;
-
-
- { TFPgtkColorSelectionDialog }
-
-function TFPgtkColorSelectionDialog.TheGtkObject : PGtkColorSelectionDialog;
-begin
-  result := PgtkColorSelectionDialog(FGtkObject);
-end;
-
-procedure TFPgtkColorSelectionDialog.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_color_selection_dialog_new (''));
-end;
-
-
-function TFPgtkColorSelectionDialog.GetColorSel : TFPgtkColorSelection;
-begin
-  result := GetPascalInstance(PGtkObject(TheGtkObject^.Colorsel),tfpgtkcolorselection) as tfpgtkcolorselection;
-end;
-
-function TFPgtkColorSelectionDialog.GetButtonOK : TFPgtkButton;
-begin
-  result := GetPascalInstance(PGtkObject(TheGtkObject^.ok_button),tfpgtkbutton) as tfpgtkbutton;
-end;
-
-function TFPgtkColorSelectionDialog.GetButtonCancel : TFPgtkButton;
-begin
-  result := GetPascalInstance(PGtkObject(TheGtkObject^.cancel_button),tfpgtkbutton) as tfpgtkbutton;
-end;
-
-function TFPgtkColorSelectionDialog.GetButtonHelp : TFPgtkButton;
-begin
-  result := GetPascalInstance(PGtkObject(TheGtkObject^.help_button),tfpgtkbutton) as tfpgtkbutton;
-end;
-
- { TFPgtkDialog }
-
-function TFPgtkDialog.TheGtkObject : PGtkDialog;
-begin
-  result := PgtkDialog(FGtkObject);
-end;
-
-procedure TFPgtkDialog.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_dialog_new);
-end;
-
-
-function TFPgtkDialog.GetActionArea : TFPgtkHBox;
-begin
-  result := GetPascalInstance(PGtkObject(TheGtkObject^.action_area),tfpgtkhbox) as tfpgtkhbox;
-end;
-
-function TFPgtkDialog.GetVBox : TFPgtkVBox;
-begin
-  result := GetPascalInstance(PGtkObject(TheGtkObject^.vbox),tfpgtkvbox) as tfpgtkvbox;
-end;
-
-constructor TFPgtkDialog.create;
-begin
-  inherited create (gtk_window_dialog);
-end;
-
-
- { TFPgtkInputDialog }
-
-function TFPgtkInputDialog.TheGtkObject : PGtkInputDialog;
-begin
-  result := PgtkInputDialog(FGtkObject);
-end;
-
-procedure TFPgtkInputDialog.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_input_dialog_new);
-end;
-
-
-function TFPgtkInputDialog.GetButtonClose : TFPgtkButton;
-begin
-  result := GetPascalInstance(PGtkObject(TheGtkObject^.close_button),tfpgtkbutton) as tfpgtkbutton;
-end;
-
-function TFPgtkInputDialog.GetButtonSave : TFPgtkButton;
-begin
-  result := GetPascalInstance(PGtkObject(TheGtkObject^.save_button),tfpgtkbutton) as tfpgtkbutton;
-end;
-
-procedure DeviceSignalproc (Sender:PGtkinputdialog; DeviceID:integer; Data:pointer); cdecl;
-var p : TFPgtkDeviceSignalFunction;
-begin
-with PSignalData(data)^ do
-  begin
-  p := TFPgtkDeviceSignalFunction (TheSignalProc);
-  p (TheWidget as TFPgtkInputDialog, DeviceID, TheData)
-  end;
-end;
-
-function TFPgtkInputDialog.DeviceSignalConnect (signal:string; proc:TFPgtkDeviceSignalFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@DeviceSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkInputDialog.DeviceSignalConnectAfter (signal:string; proc:TFPgtkDeviceSignalFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@DeviceSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkInputDialog.ConnectEnableDevice (proc:TFPgtkDeviceSignalFunction; data:pointer) : guint;
-begin
-  result := DeviceSignalConnect (sgEnableDevice, proc, data);
-end;
-
-function TFPgtkInputDialog.ConnectAfterEnableDevice (proc:TFPgtkDeviceSignalFunction; data:pointer) : guint;
-begin
-  result := DeviceSignalConnectAfter (sgEnableDevice, proc, data);
-end;
-
-function TFPgtkInputDialog.ConnectDisableDevice (proc:TFPgtkDeviceSignalFunction; data:pointer) : guint;
-begin
-  result := DeviceSignalConnect (sgDisableDevice, proc, data);
-end;
-
-function TFPgtkInputDialog.ConnectAfterDisableDevice (proc:TFPgtkDeviceSignalFunction; data:pointer) : guint;
-begin
-  result := DeviceSignalConnectAfter (sgDisableDevice, proc, data);
-end;
-
- { TFPgtkFileSelection }
-
-function TFPgtkFileSelection.TheGtkObject : PGtkFileSelection;
-begin
-  result := PgtkFileSelection(FGtkObject);
-end;
-
-procedure TFPgtkFileSelection.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_file_selection_new ('Select a file'));
-end;
-
-
-function TFPgtkFileSelection.GetFilename : string;
-begin
-  result := gtk_file_selection_get_filename(TheGtkObject);
-end;
-
-procedure TFPgtkFileSelection.SetFilename (TheValue:string);
-begin
-  gtk_file_selection_set_filename(TheGtkObject,Pgchar(TheValue));
-end;
-
-procedure TFPgtkFileSelection.Complete (Pattern:string);
-begin
-  gtk_file_selection_complete (TheGtkObject, ConvertToPgchar(Pattern));
-end;
-
-procedure TFPgtkFileSelection.ShowFileOpButtons;
-begin
-  gtk_file_selection_show_fileop_buttons (TheGtkObject);
-end;
-
-procedure TFPgtkFileSelection.HideFileOpButtons;
-begin
-  gtk_file_selection_hide_fileop_buttons (TheGtkObject);
-end;
-
-function TFPgtkFileSelection.GetDirList : TFPgtkCList;
-begin
-  result := GetPascalInstance(PGtkObject(TheGtkObject^.dir_list),tfpgtkclist) as tfpgtkclist;
-end;
-
-function TFPgtkFileSelection.GetFileList : TFPgtkCList;
-begin
-  result := GetPascalInstance(PGtkObject(TheGtkObject^.file_list),tfpgtkclist) as tfpgtkclist;
-end;
-
-function TFPgtkFileSelection.GetOkButton : TFPgtkButton;
-begin
-  result := GetPascalInstance(PGtkObject(TheGtkObject^.ok_button),tfpgtkbutton) as tfpgtkbutton;
-end;
-
-function TFPgtkFileSelection.GetCancelButton : TFPgtkButton;
-begin
-  result := GetPascalInstance(PGtkObject(TheGtkObject^.cancel_button),tfpgtkbutton) as tfpgtkbutton;
-end;
-
-function TFPgtkFileSelection.GetHistoryPulldown : TFPgtkOptionMenu;
-begin
-  result := GetPascalInstance(PGtkObject(TheGtkObject^.history_pulldown),tfpgtkoptionmenu) as tfpgtkoptionmenu;
-end;
-
-function TFPgtkFileSelection.GetFileOpDialog : TFPgtkDialog;
-begin
-  result := GetPascalInstance(PGtkObject(TheGtkObject^.fileop_dialog),tfpgtkdialog) as tfpgtkdialog;
-end;
-
-function TFPgtkFileSelection.GetFileOpCreateDir : TFPgtkButton;
-begin
-  result := GetPascalInstance(PGtkObject(TheGtkObject^.fileop_c_dir),tfpgtkbutton) as tfpgtkbutton;
-end;
-
-function TFPgtkFileSelection.GetFileOpDelFile : TFPgtkButton;
-begin
-  result := GetPascalInstance(PGtkObject(TheGtkObject^.fileop_del_file),tfpgtkbutton) as tfpgtkbutton;
-end;
-
-function TFPgtkFileSelection.GetFileOpRenFile : TFPgtkButton;
-begin
-  result := GetPascalInstance(PGtkObject(TheGtkObject^.fileop_ren_file),tfpgtkbutton) as tfpgtkbutton;
-end;
-
- { TFPgtkFontSelectionDialog }
-
-function TFPgtkFontSelectionDialog.TheGtkObject : PGtkFontSelectionDialog;
-begin
-  result := PgtkFontSelectionDialog(FGtkObject);
-end;
-
-procedure TFPgtkFontSelectionDialog.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_font_selection_dialog_new (''));
-end;
-
-
-function TFPgtkFontSelectionDialog.GetFontSel : TFPgtkFontSelection;
-begin
-  result := GetPascalInstance(PGtkObject(TheGtkObject^.fontsel),tfpgtkfontselection) as tfpgtkfontselection;
-end;
-
-function TFPgtkFontSelectionDialog.GetButtonOk : TFPgtkButton;
-begin
-  result := GetPascalInstance(PGtkObject(TheGtkObject^.ok_button),tfpgtkbutton) as tfpgtkbutton;
-end;
-
-function TFPgtkFontSelectionDialog.GetButtonApply : TFPgtkButton;
-begin
-  result := GetPascalInstance(PGtkObject(TheGtkObject^.apply_button),tfpgtkbutton) as tfpgtkbutton;
-end;
-
-function TFPgtkFontSelectionDialog.GetButtonCancel : TFPgtkButton;
-begin
-  result := GetPascalInstance(PGtkObject(TheGtkObject^.cancel_button),tfpgtkbutton) as tfpgtkbutton;
-end;
-
- { TFPgtkEventBox }
-
-function TFPgtkEventBox.TheGtkObject : PGtkEventBox;
-begin
-  result := PgtkEventBox(FGtkObject);
-end;
-
-procedure TFPgtkEventBox.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_event_box_new);
-end;
-
-
- { TFPgtkHandleBox }
-
-function TFPgtkHandleBox.TheGtkObject : PGtkHandleBox;
-begin
-  result := PgtkHandleBox(FGtkObject);
-end;
-
-procedure TFPgtkHandleBox.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_handle_box_new);
-end;
-
-
-function TFPgtkHandleBox.GetShadowType : TGtkShadowtype;
-begin
-  result := TheGtkObject^.shadow_type;
-end;
-
-procedure TFPgtkHandleBox.SetShadowType (TheValue:TGtkShadowtype);
-begin
-  gtk_handle_box_set_shadow_type(TheGtkObject,TheValue);
-end;
-
-function TFPgtkHandleBox.GetHandlePosition : TGtkPositionType;
-begin
-  result := TGtkPositionType (gtk.handle_position(TheGtkObject^));
-end;
-
-procedure TFPgtkHandleBox.SetHandlePosition (TheValue:TGtkPositionType);
-begin
-  gtk_handle_box_set_handle_position(TheGtkObject,TheValue);
-end;
-
-function TFPgtkHandleBox.GetSnapEdge : TGtkPositionType;
-begin
-  result := TGtkPositionType (gtk.snap_edge(TheGtkObject^));
-end;
-
-procedure TFPgtkHandleBox.SetSnapEdge (TheValue:TGtkPositionType);
-begin
-  gtk_handle_box_set_snap_edge(TheGtkObject,TheValue);
-end;
-
-function TFPgtkHandleBox.GetChildDetached : boolean;
-begin
-  result := boolean(gtk.child_detached(TheGtkObject^));
-end;
-
-function TFPgtkHandleBox.ConnectChildAttached (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-begin
-  result := WidgetSignalConnect (sgChildAttached, proc, data);
-end;
-
-function TFPgtkHandleBox.ConnectAfterChildAttached (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-begin
-  result := WidgetSignalConnectAfter (sgChildAttached, proc, data);
-end;
-
-function TFPgtkHandleBox.ConnectChildDetached (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-begin
-  result := WidgetSignalConnect (sgChildDetached, proc, data);
-end;
-
-function TFPgtkHandleBox.ConnectAfterChildDetached (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-begin
-  result := WidgetSignalConnectAfter (sgChildDetached, proc, data);
-end;
-
- { TFPgtkScrolledWindow }
-
-function TFPgtkScrolledWindow.TheGtkObject : PGtkScrolledWindow;
-begin
-  result := PgtkScrolledWindow(FGtkObject);
-end;
-
-
-procedure TFPgtkScrolledWindow.CreateGtkObject;
-var h, v : PgtkAdjustment;
-begin
-  if assigned (FHScroll) then
-    h := PGtkAdjustment(ConvertToGtkObject(FHScroll))
-  else
-    h := null;
-  if assigned (FVScroll) then
-    v := PGtkAdjustment(ConvertToGtkObject(FVScroll))
-  else
-    v := null;
-  FGtkObject := PGtkObject (gtk_scrolled_window_new (h, v));
-end;
-
-constructor TFPgtkScrolledWindow.Create (hadj:TFPgtkAdjustment; vadj:TFPgtkAdjustment);
-begin
-  FVScroll := vadj;
-  FHScroll := hadj;
-  inherited create;
-  setusize (200,170);
-end;
-
-
-function TFPgtkScrolledWindow.GetHPolicy : TGtkPolicyType;
-begin
-  result := gtk.hscrollbar_policy(TheGtkObject^);
-end;
-
-procedure TFPgtkScrolledWindow.SetHPolicy (TheValue:TGtkPolicyType);
-begin
-  gtk_scrolled_window_set_policy (TheGtkObject, TheValue, VPolicy);
-end;
-
-function TFPgtkScrolledWindow.GetVPolicy : TGtkPolicyType;
-begin
-  result := gtk.vscrollbar_policy(TheGtkObject^);
-end;
-
-procedure TFPgtkScrolledWindow.SetVPolicy (TheValue:TGtkPolicyType);
-begin
-  gtk_scrolled_window_set_policy (TheGtkObject, HPolicy, TheValue);
-end;
-
-procedure TFPgtkScrolledWindow.SetPolicy (aHScrollBar:TGtkPolicyType; aVScrollbar:TGtkPolicyType); Overload;
-begin
-  gtk_scrolled_window_set_policy (TheGtkObject, aHScrollBar, aVScrollbar);
-end;
-
-procedure TFPgtkScrolledWindow.SetPolicy (aPolicy:TGtkPolicyType); Overload;
-begin
-  SetPolicy (aPolicy, aPolicy);
-end;
-
-function TFPgtkScrolledWindow.GetHAdjustment : TFPgtkAdjustment;
-begin
-  result := GetPascalInstance(PGtkObject(gtk_scrolled_window_get_hadjustment(TheGtkObject)),tfpgtkadjustment) as tfpgtkadjustment;
-end;
-
-procedure TFPgtkScrolledWindow.SetHAdjustment (TheValue:TFPgtkAdjustment);
-begin
-  gtk_scrolled_window_set_hadjustment(TheGtkObject,PGtkadjustment(ConvertToGtkObject(TheValue)));
-end;
-
-function TFPgtkScrolledWindow.GetVAdjustment : TFPgtkAdjustment;
-begin
-  result := GetPascalInstance(PGtkObject(gtk_scrolled_window_get_vadjustment(TheGtkObject)),tfpgtkadjustment) as tfpgtkadjustment;
-end;
-
-procedure TFPgtkScrolledWindow.SetVAdjustment (TheValue:TFPgtkAdjustment);
-begin
-  gtk_scrolled_window_set_vadjustment(TheGtkObject,PGtkadjustment(ConvertToGtkObject(TheValue)));
-end;
-
-procedure TFPgtkScrolledWindow.AddWithViewport (aChild:TFPgtkWidget);
-begin
-  gtk_scrolled_window_add_with_viewport (TheGtkObject, ConvertToGtkWidget(aChild));
-  TFPgtkViewport.createFromObject (PGtkObject(PGtkBin(TheGtkObject)^.child));
-  aChild.Show;
-end;
-
-function TFPgtkScrolledWindow.GetPlacement : TGtkCornerType;
-begin
-  result := gtk.window_placement(TheGtkObject^);
-end;
-
-procedure TFPgtkScrolledWindow.SetPlacement (TheValue:TGtkCornerType);
-begin
-  gtk_scrolled_window_set_placement(TheGtkObject,TheValue);
-end;
-
-function TFPgtkScrolledWindow.GetHScrollbar : TFPgtkScrollbar;
-var w : TFPgtkObject;
-    gtkwidg : PGtkObject;
-begin
-  gtkwidg := PGtkObject(TheGtkObject^.hscrollbar);
-  w := GetPascalInstance (gtkwidg);
-  if assigned (w) then
-    result := (w as TFPgtkScrollbar)
-  else
-    result := TFPgtkHScrollbar.CreateFromObject (gtkwidg);
-end;
-
-function TFPgtkScrolledWindow.GetVScrollbar : TFPgtkScrollbar;
-var w : TFPgtkObject;
-    gtkwidg : PGtkObject;
-begin
-  gtkwidg := PGtkObject(TheGtkObject^.vscrollbar);
-  w := GetPascalInstance (gtkwidg);
-  if assigned (w) then
-    result := (w as TFPgtkScrollbar)
-  else
-    result := TFPgtkVScrollbar.CreateFromObject (gtkwidg);
-end;
-
-procedure TFPgtkScrolledWindow.UpdatePolicy (UpdPolicy:TGtkUpdateType);
-var sb : TFpgtkScrollbar;
-begin
-  sb := HScrollbar;
-  if assigned(sb) then
-    sb.UpdatePolicy := UpdPolicy;
-  sb := VScrollbar;
-  if assigned(sb) then
-    sb.UpdatePolicy := UpdPolicy;
-end;
-
- { TFPgtkViewport }
-
-function TFPgtkViewport.TheGtkObject : PGtkViewport;
-begin
-  result := PgtkViewport(FGtkObject);
-end;
-
-
-procedure TFPgtkViewport.CreateGtkObject;
-var h, v : PgtkAdjustment;
-begin
-  if assigned (FHScroll) then
-    h := PGtkAdjustment(ConvertToGtkObject(FHScroll))
-  else
-    h := null;
-  if assigned (FVScroll) then
-    v := PGtkAdjustment(ConvertToGtkObject(FVScroll))
-  else
-    v := null;
-  FGtkObject := PGtkObject (gtk_scrolled_window_new (h, v));
-end;
-
-constructor TFPgtkViewport.Create (hadj:TFPgtkAdjustment; vadj:TFPgtkAdjustment);
-begin
-  FVScroll := vadj;
-  FHScroll := hadj;
-  inherited create;
-end;
-
-
-function TFPgtkViewport.GetHAdjustment : TFPgtkAdjustment;
-begin
-  result := GetPascalInstance(PGtkObject(gtk_viewport_get_hadjustment(TheGtkObject)),tfpgtkadjustment) as tfpgtkadjustment;
-end;
-
-procedure TFPgtkViewport.SetHAdjustment (TheValue:TFPgtkAdjustment);
-begin
-  gtk_viewport_set_hadjustment(TheGtkObject,PGtkadjustment(ConvertToGtkObject(TheValue)));
-end;
-
-function TFPgtkViewport.GetVAdjustment : TFPgtkAdjustment;
-begin
-  result := GetPascalInstance(PGtkObject(gtk_viewport_get_vadjustment(TheGtkObject)),tfpgtkadjustment) as tfpgtkadjustment;
-end;
-
-procedure TFPgtkViewport.SetVAdjustment (TheValue:TFPgtkAdjustment);
-begin
-  gtk_viewport_set_vadjustment(TheGtkObject,PGtkadjustment(ConvertToGtkObject(TheValue)));
-end;
-
-function TFPgtkViewport.GetShadowType : TgtkShadowType;
-begin
-  result := TheGtkObject^.shadow_type;
-end;
-
-procedure TFPgtkViewport.SetShadowType (TheValue:TgtkShadowType);
-begin
-  gtk_viewport_set_shadow_type(TheGtkObject,TheValue);
-end;
-
- { TFPgtkBox }
-
-function TFPgtkBox.TheGtkObject : PGtkBox;
-begin
-  result := PgtkBox(FGtkObject);
-end;
-
-
-function TFPgtkBox.GetHomogeneous : boolean;
-begin
-  result := boolean(gtk.homogeneous(TheGtkObject^));
-end;
-
-procedure TFPgtkBox.SetHomogeneous (TheValue:boolean);
-begin
-  gtk_Box_set_homogeneous(TheGtkObject,TheValue);
-end;
-
-function TFPgtkBox.GetSpacing : integer;
-begin
-  result := TheGtkObject^.spacing;
-end;
-
-procedure TFPgtkBox.SetSpacing (TheValue:integer);
-begin
-  gtk_Box_set_spacing(TheGtkObject,TheValue);
-end;
-
-procedure TFPgtkBox.ReorderChild (Widget:TFPgtkWidget; Position:integer);
-begin
-  gtk_Box_reorder_child (TheGtkObject, PGtkwidget(ConvertToGtkObject(Widget)), Position);
-end;
-
-procedure TFPgtkBox.GetChildPacking (Widget:TFPgtkWidget; var Expand:boolean; var Fill:boolean; var Padding:integer; var PackType:TGtkPackType);
-var PT : PGtkPackType;
-begin
-  pt := @PackType;
-  gtk_box_query_child_packing (TheGtkObject, ConvertToGtkWidget(Widget), 
-                               @expand, @fill, @padding, pt);
-end;
-
-procedure TFPgtkBox.SetChildPacking (Widget:TFPgtkWidget; Expand:boolean; Fill:boolean; Padding:integer; PackType:TGtkPackType);
-begin
-  gtk_Box_set_child_packing (TheGtkObject, PGtkwidget(ConvertToGtkObject(Widget)), Expand, Fill, Padding, PackType);
-end;
-
-procedure TFPgtkBox.PackStart (Widget:TFPgtkWidget); Overload;
-begin
-  gtk_box_pack_start_defaults (TheGtkObject, ConvertToGtkWidget(Widget));
-  widget.Show;
-end;
-
-procedure TFPgtkBox.PackStart (Widget:TFPgtkWidget; IsVisible:boolean); Overload;
-begin
-  gtk_box_pack_start_defaults (TheGtkObject, ConvertToGtkWidget(Widget));
-  if isvisible then
-    widget.Show;
-end;
-
-procedure TFPgtkBox.PackStart (Widget:TFPgtkWidget; expand:boolean; fill:boolean; padding:integer); Overload;
-begin
-  gtk_box_pack_start (TheGtkObject, ConvertToGtkWidget(Widget), expand, fill, padding);
-  widget.Show;
-end;
-
-procedure TFPgtkBox.PackStart (Widget:TFPgtkWidget; expand:boolean; fill:boolean; padding:integer; IsVisible:boolean); Overload;
-begin
-  gtk_box_pack_start (TheGtkObject, ConvertToGtkWidget(Widget), expand, fill, padding);
-  if isvisible then
-    widget.Show;
-end;
-
-procedure TFPgtkBox.PackEnd (Widget:TFPgtkWidget); Overload;
-begin
-  gtk_box_pack_end_defaults (TheGtkObject, ConvertToGtkWidget(Widget));
-  widget.Show;
-end;
-
-procedure TFPgtkBox.PackEnd (Widget:TFPgtkWidget; IsVisible:boolean); Overload;
-begin
-  gtk_box_pack_end_defaults (TheGtkObject, ConvertToGtkWidget(Widget));
-  if isvisible then
-    widget.Show;
-end;
-
-procedure TFPgtkBox.PackEnd (Widget:TFPgtkWidget; expand:boolean; fill:boolean; padding:integer); Overload;
-begin
-  gtk_box_pack_end (TheGtkObject, ConvertToGtkWidget(Widget), expand, fill, padding);
-  widget.Show;
-end;
-
-procedure TFPgtkBox.PackEnd (Widget:TFPgtkWidget; expand:boolean; fill:boolean; padding:integer; IsVisible:boolean); Overload;
-begin
-  gtk_box_pack_end (TheGtkObject, ConvertToGtkWidget(Widget), expand, fill, padding);
-  if isvisible then
-    widget.Show;
-end;
-
- { TFPgtkButtonBox }
-
-function TFPgtkButtonBox.TheGtkObject : PGtkButtonBox;
-begin
-  result := PgtkButtonBox(FGtkObject);
-end;
-
-
-procedure SetButtonBoxDefaultSize (aMinWidth:integer; aMinHeight:integer);
-begin
-  gtk_button_box_set_child_size_default (aMinWidth, aMinheight);
-end;
-
-
-procedure GetButtonBoxDefaultSize (var aMinWidth:integer; var aMinHeight:integer);
-begin
-  gtk_button_box_get_child_size_default (@aMinWidth, @aMinheight);
-end;
-
-
-procedure SetButtonBoxDefaultPadding (aIPadX:integer; aIPadY:integer);
-begin
-  gtk_button_box_set_child_size_default (aIPadX, aIPadY);
-end;
-
-
-procedure GetButtonBoxDefaultPadding (var aIPadX:integer; var aIPadY:integer);
-begin
-  gtk_button_box_get_child_size_default (@aIPadX, @aIPadY);
-end;
-
-
-function TFPgtkButtonBox.GetSpacing : integer;
-begin
-  result := gtk_button_box_get_spacing(TheGtkObject);
-end;
-
-procedure TFPgtkButtonBox.SetSpacing (TheValue:integer);
-begin
-  gtk_button_box_set_spacing(TheGtkObject,TheValue);
-end;
-
-function TFPgtkButtonBox.GetLayout : TGtkButtonBoxStyle;
-begin
-  result := gtk_button_box_get_layout(TheGtkObject);
-end;
-
-procedure TFPgtkButtonBox.SetLayout (TheValue:TGtkButtonBoxStyle);
-begin
-  gtk_button_box_set_layout(TheGtkObject,TheValue);
-end;
-
-function TFPgtkButtonBox.GetMinWidth : integer;
-var x, y : integer;
-begin
-  gtk_button_box_get_child_size (TheGtkObject, @x, @y);
-  result := x;
-end;
-
-procedure TFPgtkButtonBox.SetMinWidth (TheValue:integer);
-begin
-  gtk_button_box_set_child_size (TheGtkObject, TheValue, ChildMinHeight);
-end;
-
-function TFPgtkButtonBox.GetMinHeight : integer;
-var x, y : integer;
-begin
-  gtk_button_box_get_child_size (TheGtkObject, @x, @y);
-  result := y;
-end;
-
-procedure TFPgtkButtonBox.SetMinHeight (TheValue:integer);
-begin
-  gtk_button_box_set_child_size (TheGtkObject, ChildMinWidth, TheValue);
-end;
-
-function TFPgtkButtonBox.GetChildPadX : integer;
-var x, y : integer;
-begin
-  gtk_button_box_get_child_ipadding (TheGtkObject, @x, @y);
-  result := x;
-end;
-
-procedure TFPgtkButtonBox.SetChildPadX (TheValue:integer);
-begin
-  gtk_button_box_set_child_ipadding (TheGtkObject, TheValue, ChildPadY);
-end;
-
-function TFPgtkButtonBox.GetChildPadY : integer;
-var x, y : integer;
-begin
-  gtk_button_box_get_child_ipadding (TheGtkObject, @x, @y);
-  result := y;
-end;
-
-procedure TFPgtkButtonBox.SetChildPadY (TheValue:integer);
-begin
-  gtk_button_box_set_child_ipadding (TheGtkObject, ChildPadX, TheValue);
-end;
-
- { TFPgtkHButtonBox }
-
-function TFPgtkHButtonBox.TheGtkObject : PGtkHButtonBox;
-begin
-  result := PgtkHButtonBox(FGtkObject);
-end;
-
-procedure TFPgtkHButtonBox.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_hbutton_box_new);
-end;
-
-
- { TFPgtkVButtonBox }
-
-function TFPgtkVButtonBox.TheGtkObject : PGtkVButtonBox;
-begin
-  result := PgtkVButtonBox(FGtkObject);
-end;
-
-procedure TFPgtkVButtonBox.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_vbutton_box_new);
-end;
-
-
- { TFPgtkVBox }
-
-function TFPgtkVBox.TheGtkObject : PGtkVBox;
-begin
-  result := PgtkVBox(FGtkObject);
-end;
-
-procedure TFPgtkVBox.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_VBox_new (False, 1));
-end;
-
-
- { TFPgtkColorSelection }
-
-function TFPgtkColorSelection.TheGtkObject : PGtkColorSelection;
-begin
-  result := PgtkColorSelection(FGtkObject);
-end;
-
-procedure TFPgtkColorSelection.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_color_selection_new);
-end;
-
-
-function TFPgtkColorSelection.GetUpdatePolicy : TGtkUpdateType;
-begin
-  result := TheGtkObject^.policy;
-end;
-
-procedure TFPgtkColorSelection.SetUpdatePolicy (TheValue:TGtkUpdateType);
-begin
-  gtk_color_selection_set_update_policy(TheGtkObject,TheValue);
-end;
-
-function TFPgtkColorSelection.GetColor : double;
-var c : double;
-begin
-  gtk_color_selection_get_color (TheGtkObject, @c);
-  result := c;
-end;
-
-procedure TFPgtkColorSelection.SetColor (TheValue:double);
-begin
-  gtk_color_selection_set_color (TheGtkObject, @TheValue);
-end;
-
-function TFPgtkColorSelection.GetUseOpacity : longbool;
-begin
-  result := longbool(TheGtkObject^.use_opacity);
-end;
-
-procedure TFPgtkColorSelection.SetUseOpacity (TheValue:longbool);
-begin
-  gtk_color_selection_set_opacity(TheGtkObject,gint(TheValue));
-end;
-
- { TFPgtkGammaCurve }
-
-function TFPgtkGammaCurve.TheGtkObject : PGtkGammaCurve;
-begin
-  result := PgtkGammaCurve(FGtkObject);
-end;
-
-procedure TFPgtkGammaCurve.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_gamma_curve_new);
-end;
-
-
- { TFPgtkHBox }
-
-function TFPgtkHBox.TheGtkObject : PGtkHBox;
-begin
-  result := PgtkHBox(FGtkObject);
-end;
-
-procedure TFPgtkHBox.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_HBox_new (False, 1));
-end;
-
-
- { TFPgtkCombo }
-
-function TFPgtkCombo.TheGtkObject : PGtkCombo;
-begin
-  result := PgtkCombo(FGtkObject);
-end;
-
-procedure TFPgtkCombo.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_combo_new);
-end;
-
-
-function TFPgtkCombo.GetEntry : TFPgtkEntry;
-begin
-  result := GetPascalInstance(PGtkObject(TheGtkObject^.entry), TFPgtkEntry) as tfpgtkentry;
-end;
-
-function TFPgtkCombo.GetList : TFPgtkList;
-begin
-  result := GetPascalInstance(PGtkObject(TheGtkObject^.list), TFPgtkList) as TFPgtkList;
-end;
-
-function TFPgtkCombo.GetButton : TFpGtkButton;
-begin
-  result := GetPascalInstance(PGtkObject(TheGtkObject^.button), TFPgtkButton) as TFPgtkButton;
-end;
-
-function TFPgtkCombo.GetValueInList : longbool;
-begin
-  result := longbool(gtk.value_in_list(TheGtkObject^));
-end;
-
-procedure TFPgtkCombo.SetValueInListProp (TheValue:longbool);
-begin
-  gtk_combo_set_value_in_list (TheGtkObject, gint(TheValue), gint(OkIfEmpty));
-end;
-
-function TFPgtkCombo.GetOkIfEmpty : longbool;
-begin
-  result := longbool(gtk.ok_if_empty(TheGtkObject^));
-end;
-
-procedure TFPgtkCombo.SetOkIfEmpty (TheValue:longbool);
-begin
-  gtk_combo_set_value_in_list (TheGtkObject, gint(ValueInList), gint(TheValue));
-end;
-
-function TFPgtkCombo.GetUseArrows : longbool;
-begin
-  result := longbool(gtk.use_arrows(TheGtkObject^));
-end;
-
-procedure TFPgtkCombo.SetUseArrows (TheValue:longbool);
-begin
-  gtk_combo_set_use_arrows(TheGtkObject,gint(TheValue));
-end;
-
-function TFPgtkCombo.GetUseArrowsAlways : longbool;
-begin
-  result := longbool(gtk.use_arrows_always(TheGtkObject^));
-end;
-
-procedure TFPgtkCombo.SetUseArrowsAlways (TheValue:longbool);
-begin
-  gtk_combo_set_use_arrows_always(TheGtkObject,gint(TheValue));
-end;
-
-function TFPgtkCombo.GetCaseSensitive : longbool;
-begin
-  result := longbool(gtk.case_sensitive(TheGtkObject^));
-end;
-
-procedure TFPgtkCombo.SetCaseSensitive (TheValue:longbool);
-begin
-  gtk_combo_set_case_sensitive(TheGtkObject,gint(TheValue));
-end;
-
-procedure TFPgtkCombo.SetItemString (Item:TFPgtkItem; ItemValue:string);
-begin
-  gtk_combo_set_item_string (TheGtkObject, PGtkitem(ConvertToGtkObject(Item)), ConvertToPgchar(ItemValue));
-end;
-
-procedure TFPgtkCombo.DisableActivate;
-begin
-  gtk_combo_disable_activate (TheGtkObject);
-end;
-
-procedure TFPgtkCombo.SetValueInList (Val:longbool; IsOkIfEmpty:longbool);
-begin
-  gtk_combo_set_value_in_list (TheGtkObject, gint(Val), gint(IsOkIfEmpty));
-end;
-
- { TFPgtkStatusbar }
-
-function TFPgtkStatusbar.TheGtkObject : PGtkStatusbar;
-begin
-  result := PgtkStatusbar(FGtkObject);
-end;
-
-procedure TFPgtkStatusbar.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_statusbar_new);
-end;
-
-
-function TFPgtkStatusbar.GetContextID (ContextDescr:string) : integer;
-begin
-  result := gtk_statusbar_get_context_id (TheGtkObject, ConvertToPgchar(ContextDescr));
-end;
-
-function TFPgtkStatusbar.Push (contextID:integer; text:string) : integer;
-begin
-  result := gtk_statusbar_push (TheGtkObject, contextID, ConvertToPgchar(text));
-end;
-
-procedure TFPgtkStatusbar.Pop (contextID:integer);
-begin
-  gtk_statusbar_pop (TheGtkObject, contextID);
-end;
-
-procedure TFPgtkStatusbar.Remove (contextID:integer; MessageID:integer);
-begin
-  gtk_statusbar_remove (TheGtkObject, contextID, MessageID);
-end;
-
-procedure StatusbarSignalproc (Sender:PGtkobject; contextID:integer; text:pgChar; data:pointer); cdecl;
-var p : TFPgtkStatusbarSignalFunction;
-begin
-with PSignalData(data)^ do
-  begin
-  p := TFPgtkStatusbarSignalFunction (TheSignalProc);
-  p (TheWidget as TFPgtkObject, contextID, text, TheData)
-  end;
-end;
-
-function TFPgtkStatusbar.StatusbarSignalConnect (signal:string; proc:TFPgtkStatusbarSignalFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@StatusbarSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkStatusbar.StatusbarSignalConnectAfter (signal:string; proc:TFPgtkStatusbarSignalFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@StatusbarSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkStatusbar.ConnectTextPopped (proc:TFPgtkStatusbarSignalFunction; data:pointer) : guint;
-begin
-  result := StatusbarSignalConnect (sgTextPopped, proc, data);
-end;
-
-function TFPgtkStatusbar.ConnectAfterTextPopped (proc:TFPgtkStatusbarSignalFunction; data:pointer) : guint;
-begin
-  result := StatusbarSignalConnectAfter (sgTextPopped, proc, data);
-end;
-
-function TFPgtkStatusbar.ConnectTextPushed (proc:TFPgtkStatusbarSignalFunction; data:pointer) : guint;
-begin
-  result := StatusbarSignalConnect (sgTextPushed, proc, data);
-end;
-
-function TFPgtkStatusbar.ConnectAfterTextPushed (proc:TFPgtkStatusbarSignalFunction; data:pointer) : guint;
-begin
-  result := StatusbarSignalConnectAfter (sgTextPushed, proc, data);
-end;
-
- { TFPgtkCList }
-
-function TFPgtkCList.TheGtkObject : PGtkCList;
-begin
-  result := PgtkCList(FGtkObject);
-end;
-
-procedure TFPgtkCList.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_clist_new (FColumnCount));
-end;
-
-
-constructor TFPgtkCList.Create (aColumnCount:integer);
-begin
-  FColumnCount := aColumnCount;
-  inherited create;
-end;
-
-
-function TFPgtkCList.GetShadowType : TGtkShadowType;
-begin
-  result := TheGtkObject^.shadow_type;
-end;
-
-procedure TFPgtkCList.SetShadowType (TheValue:TGtkShadowType);
-begin
-  gtk_clist_set_shadow_type(TheGtkObject,TheValue);
-end;
-
-function TFPgtkCList.GetSelectionMode : TGtkSelectionMode;
-begin
-  result := TheGtkObject^.selection_mode;
-end;
-
-procedure TFPgtkCList.SetSelectionMode (TheValue:TGtkSelectionMode);
-begin
-  gtk_clist_set_selection_mode(TheGtkObject,TheValue);
-end;
-
-procedure TFPgtkCList.Freeze;
-begin
-  gtk_clist_freeze (TheGtkObject);
-end;
-
-procedure TFPgtkCList.Thaw;
-begin
-  gtk_clist_thaw (TheGtkObject);
-end;
-
-procedure TFPgtkCList.ShowTitles;
-begin
-  gtk_clist_Column_titles_show (TheGtkObject);
-end;
-
-procedure TFPgtkCList.HideTitles;
-begin
-  gtk_clist_column_titles_hide (TheGtkObject);
-end;
-
-procedure TFPgtkCList.ActiveTitles;
-begin
-  gtk_clist_column_titles_active (TheGtkObject);
-end;
-
-procedure TFPgtkCList.PassiveTitles;
-begin
-  gtk_clist_column_titles_passive (TheGtkObject);
-end;
-
-procedure TFPgtkCList.ActiveTitle (column:integer);
-begin
-  gtk_clist_column_title_active (TheGtkObject, column);
-end;
-
-procedure TFPgtkCList.PassiveTitle (column:integer);
-begin
-  gtk_clist_column_title_passive (TheGtkObject, column);
-end;
-
-function TFPgtkCList.GetColumnTitle (column:integer) : string;
-begin
-  result := gtk_clist_get_column_title(TheGtkObject,column);
-end;
-
-procedure TFPgtkCList.SetColumnTitle (column:integer; TheValue:string);
-begin
-  gtk_clist_set_column_title(TheGtkObject,column,ConvertToPgchar(TheValue));
-end;
-
-function TFPgtkCList.GetColumnWidget (column:integer) : TFPgtkWidget;
-begin
-  result := GetPascalInstance(PGtkObject(gtk_clist_get_column_widget(TheGtkObject,column)),tfpgtkwidget) as tfpgtkwidget;
-end;
-
-procedure TFPgtkCList.SetColumnWidget (column:integer; TheValue:TFPgtkWidget);
-begin
-  gtk_clist_set_column_widget(TheGtkObject,column,PGtkwidget(ConvertToGtkObject(TheValue)));
-end;
-
-procedure TFPgtkCList.SetColumnJustification (column:integer; justification:TGtkJustification);
-begin
-  gtk_clist_set_column_justification (TheGtkObject, column, justification);
-end;
-
-procedure TFPgtkCList.SetColumnVisibility (column:integer; aVisible:boolean);
-begin
-  gtk_clist_set_column_visibility (TheGtkObject, column, aVisible);
-end;
-
-procedure TFPgtkCList.SetColumnResizeable (column:integer; Resizeable:boolean);
-begin
-  gtk_clist_set_column_resizeable (TheGtkObject, column, Resizeable);
-end;
-
-procedure TFPgtkCList.SetColumnAutoResize (column:integer; autoResize:boolean);
-begin
-  gtk_clist_set_column_auto_resize (TheGtkObject, column, autoResize);
-end;
-
-function TFPgtkCList.OptimalColumnWidth (column:integer) : integer;
-begin
-  result := gtk_clist_optimal_column_width (TheGtkObject, column);
-end;
-
-procedure TFPgtkCList.SetColumnWidth (column:integer; width:integer);
-begin
-  gtk_clist_set_column_width (TheGtkObject, column, width);
-end;
-
-procedure TFPgtkCList.SetColumnMinWidth (column:integer; MinWidth:integer);
-begin
-  gtk_clist_set_column_min_width (TheGtkObject, column, MinWidth);
-end;
-
-procedure TFPgtkCList.SetColumnMaxWidth (column:integer; MaxWidth:integer);
-begin
-  gtk_clist_set_column_max_width (TheGtkObject, column, MaxWidth);
-end;
-
-function TFPgtkCList.AutoSizeColumns : integer;
-begin
-  result := gtk_clist_columns_autosize (TheGtkObject);
-end;
-
-procedure TFPgtkCList.ConfigureColumnWidth (column:integer; Width:integer; MinWidth:integer; MaxWidth:integer);
-begin
-  SetColumnWidth (column, Width);
-  SetColumnMaxWidth (column, MaxWidth);
-  SetColumnMinWidth (column, MinWidth);
-end;
-
-procedure TFPgtkCList.ConfigureColumn (column:integer; Justification:TGtkJustification; Visibility:boolean; Resizeable:boolean; AutoSize:boolean);
-begin
-  SetColumnJustification (column, Justification);
-  SetColumnVisibility (column, Visibility);
-  SetColumnResizeable (column, Resizeable);
-  SetColumnAutoResize (column, AutoSize);
-end;
-
-procedure TFPgtkCList.SetRowHeight (height:integer);
-begin
-  gtk_clist_set_row_height (TheGtkObject, height);
-end;
-
-procedure TFPgtkCList.MoveTo (row:integer; column:integer; RowAlign:gfloat; ColAlign:gfloat);
-begin
-  gtk_clist_moveto (TheGtkObject, row, column, RowAlign, ColAlign);
-end;
-
-function TFPgtkCList.RowIsVisible (Row:integer) : TGtkVisibility;
-begin
-  result := gtk_clist_row_is_visible (TheGtkObject, Row);
-end;
-
-function TFPgtkCList.GetCellType (Row:integer; column:integer) : TGtkCellType;
-begin
-  result := gtk_clist_get_cell_type (TheGtkObject, Row, column);
-end;
-
-function TFPgtkCList.GetCellText (Row:integer; Column:integer) : string;
-var s : pgchar;
-    r : integer;
-begin
-  r := gtk_clist_get_text (TheGtkObject, row, column, @s);
-  if (r = 0) then
-    result := ''
-  else
-    result := string(s^);
-end;
-
-procedure TFPgtkCList.SetCellText (Row:integer; Column:integer; TheValue:string);
-begin
-  gtk_clist_set_text(TheGtkObject,Row, Column,ConvertToPgchar(TheValue));
-end;
-
-procedure TFPgtkCList.SetPixmap (row:integer; column:integer; pixmap:PGdkPixmap; mask:PGdkBitmap);
-begin
-  gtk_clist_set_pixmap (TheGtkObject, row, column, pixmap, mask);
-end;
-
-procedure TFPgtkCList.GetPixmap (row:integer; column:integer; var pixmap:PGdkPixmap; var mask:PGdkBitmap);
-begin
-  gtk_clist_get_pixmap (TheGtkObject, row, column, @pixmap, @mask);
-end;
-
-procedure TFPgtkCList.SetPixText (row:integer; column:integer; text:string; spacing:guint8; pixmap:PGdkPixmap; mask:PGdkBitmap);
-begin
-  gtk_clist_set_pixtext (TheGtkObject, row, column, ConvertToPgchar(text), spacing, pixmap, mask);
-end;
-
-procedure TFPgtkCList.GetPixText (row:integer; column:integer; var text:string; var aspacing:guint8; var pixmap:PGdkPixmap; var mask:PGdkBitmap);
-var r : integer;
-    s : PPgchar;
-begin
-  s := nil;
-  r := gtk_clist_get_pixtext (TheGtkObject, row, column, s, @aspacing, @pixmap, @mask);
-  if r = 0 then
-    begin
-    text := '';
-    pixmap := nil;
-    mask := nil;
-    end
-  else
-    text := string (s^);
-end;
-
-procedure TFPgtkCList.SetForeground (row:integer; color:PGdkColor);
-begin
-  gtk_clist_set_foreground (TheGtkObject, row, color);
-end;
-
-procedure TFPgtkCList.SetBackground (row:integer; color:PGdkColor);
-begin
-  gtk_clist_set_background (TheGtkObject, row, color);
-end;
-
-function TFPgtkCList.GetCellStyle (row:integer; column:integer) : PGtkStyle;
-begin
-  result := gtk_clist_get_cell_style(TheGtkObject,row, column);
-end;
-
-procedure TFPgtkCList.SetCellStyle (row:integer; column:integer; TheValue:PGtkStyle);
-begin
-  gtk_clist_set_cell_style(TheGtkObject,row, column,TheValue);
-end;
-
-function TFPgtkCList.GetRowStyle (row:integer) : PGtkStyle;
-begin
-  result := gtk_clist_get_row_style(TheGtkObject,row);
-end;
-
-procedure TFPgtkCList.SetRowStyle (row:integer; TheValue:PGtkStyle);
-begin
-  gtk_clist_set_row_style(TheGtkObject,row,TheValue);
-end;
-
-procedure TFPgtkCList.SetShift (row:integer; column:integer; vertical:integer; horizontal:integer);
-begin
-  gtk_clist_set_shift (TheGtkObject, row, column, vertical, horizontal);
-end;
-
-procedure TFPgtkCList.Remove (row:integer);
-begin
-  gtk_clist_remove (TheGtkObject, row);
-end;
-
-procedure TFPgtkCList.Prepend (Data:TStrings); Overload;
-var ppdata : ppgchar;
-begin
-  ppdata := StringsToPPgchar (Data);
-  gtk_clist_prepend (TheGtkObject, ppdata);
-  freemem (ppdata, sizeof (pgchar) * data.count);
-end;
-
-procedure TFPgtkCList.Prepend (Text:string; separator:string); Overload;
-var l : TStrings;
-    s : string;
-begin
-  l := TStringList.Create;
-  try
-    if pos('"',separator) = 0 then
-      s := stringreplace (Text, '"', '""', [rfReplaceAll]);
-    if separator <> '' then
-      s := stringreplace(Text, separator, '","', [rfReplaceAll]);
-    l.CommaText := '"'+s+'"';
-    Prepend (l);
-  finally
-    l.Free;
-  end;
-end;
-
-procedure TFPgtkCList.Prepend (data:array of string); Overload;
-var ppdata : ppgchar;
-begin
-  ppdata := ArrayToPPgchar (Data);
-  gtk_clist_prepend (TheGtkObject, ppdata);
-  freemem (ppdata, sizeof (pgchar) * (high(data)-low(data)+1));
-end;
-
-procedure TFPgtkCList.Append (data:TStrings); Overload;
-var ppdata : ppgchar;
-begin
-  ppdata := StringsToPPgchar (Data);
-  gtk_clist_append (TheGtkObject, ppdata);
-  freemem (ppdata, sizeof (pgchar) * data.count);
-end;
-
-procedure TFPgtkCList.Append (Text:string; Separator:string); Overload;
-var l : TStrings;
-    s : string;
-begin
-  l := TStringList.Create;
-  try
-    if pos('"',separator) = 0 then
-      s := stringreplace (Text, '"', '""', [rfReplaceAll]);
-    if separator <> '' then
-      s := stringreplace(Text, separator, '","', [rfReplaceAll]);
-    l.CommaText := '"' + s + '"';
-    Append (l);
-  finally
-    l.Free;
-  end;
-end;
-
-procedure TFPgtkCList.Append (data:array of string); Overload;
-var ppdata : ppgchar;
-begin
-  ppdata := ArrayToPPgchar (Data);
-  gtk_clist_append (TheGtkObject, ppdata);
-  freemem (ppdata, sizeof (pgchar) * (high(data)-low(data)+1));
-end;
-
-procedure TFPgtkCList.Insert (row:integer; data:TStrings); Overload;
-var ppdata : ppgchar;
-begin
-  ppdata := StringsToPPgchar (Data);
-  gtk_clist_insert (TheGtkObject, row, ppdata);
-  freemem (ppdata, sizeof (pgchar) * data.count);
-end;
-
-procedure TFPgtkCList.Insert (row:integer; Text:string; Separator:string); Overload;
-var l : TStrings;
-    s : string;
-begin
-  l := TStringList.Create;
-  try
-    if pos('"',separator) = 0 then
-      s := stringreplace (Text, '"', '""', [rfReplaceAll]);
-    if separator <> '' then
-      s := stringreplace(Text, separator, '","', [rfReplaceAll]);
-    l.CommaText := '"' + s + '"';
-    Insert (row, l);
-  finally
-    l.Free;
-  end;
-end;
-
-procedure TFPgtkCList.Insert (row:integer; data:array of string); Overload;
-var ppdata : ppgchar;
-begin
-  ppdata := ArrayToPPgchar (Data);
-  gtk_clist_insert (TheGtkObject, row, ppdata);
-  freemem (ppdata, sizeof (pgchar) * (high(data)-low(data)+1));
-end;
-
-function TFPgtkCList.GetRowData (row:integer) : pointer;
-begin
-  result := gtk_clist_get_row_data(TheGtkObject,row);
-end;
-
-procedure TFPgtkCList.SetRowData (row:integer; TheValue:pointer);
-begin
-  gtk_clist_set_row_data(TheGtkObject,row,TheValue);
-end;
-
-function TFPgtkCList.FindRowFromData (data:pointer) : integer;
-begin
-  result := gtk_clist_find_row_from_data (TheGtkObject, data);
-end;
-
-procedure TFPgtkCList.SelectRow (row:integer; column:integer);
-begin
-  gtk_clist_select_row (TheGtkObject, row, column);
-end;
-
-procedure TFPgtkCList.UnselectRow (row:integer; column:integer);
-begin
-  gtk_clist_unselect_row (TheGtkObject, row, column);
-end;
-
-procedure TFPgtkCList.Clear;
-begin
-  gtk_clist_clear (TheGtkObject);
-end;
-
-procedure TFPgtkCList.SelectAll;
-begin
-  gtk_clist_select_all (TheGtkObject);
-end;
-
-procedure TFPgtkCList.UnselectAll;
-begin
-  gtk_clist_unselect_all (TheGtkObject);
-end;
-
-procedure TFPgtkCList.SwapRows (row1:integer; row2:integer);
-begin
-  gtk_clist_swap_rows (TheGtkObject, row1, row2);
-end;
-
-procedure TFPgtkCList.RowMove (sourceRow:integer; destRow:integer);
-begin
-  if sourceRow = DestRow then
-    Exit;
-  gtk_clist_row_move (TheGtkObject, sourceRow, destRow);
-end;
-
-procedure TFPgtkCList.Sort;
-begin
-  gtk_clist_sort (TheGtkObject);
-end;
-
-procedure TFPgtkCList.SetCompareFunc (TheValue:TGtkCListCompareFunc);
-begin
-  gtk_clist_set_Compare_func(TheGtkObject,TheValue);
-end;
-
-function TFPgtkCList.GetSortColumn : integer;
-begin
-  result := TheGtkObject^.sort_column;
-end;
-
-procedure TFPgtkCList.SetSortColumn (TheValue:integer);
-begin
-  gtk_clist_set_sort_column(TheGtkObject,TheValue);
-end;
-
-function TFPgtkCList.GetSetSortType : TGtkSortType;
-begin
-  result := TheGtkObject^.sort_type;
-end;
-
-procedure TFPgtkCList.SetSetSortType (TheValue:TGtkSortType);
-begin
-  gtk_clist_set_sort_type(TheGtkObject,TheValue);
-end;
-
-procedure TFPgtkCList.SetAutoSort (autoSort:boolean);
-begin
-  gtk_clist_set_auto_sort (TheGtkObject, autoSort);
-end;
-
-function TFPgtkCList.GetHAdjustment : TFPgtkAdjustment;
-begin
-  result := GetPascalInstance(PGtkObject(gtk_clist_get_hadjustment(TheGtkObject)),tfpgtkadjustment) as tfpgtkadjustment;
-end;
-
-procedure TFPgtkCList.SetHAdjustment (TheValue:TFPgtkAdjustment);
-begin
-  gtk_clist_set_hadjustment(TheGtkObject,PGtkadjustment(ConvertToGtkObject(TheValue)));
-end;
-
-function TFPgtkCList.GetVAdjustment : TFPgtkAdjustment;
-begin
-  result := GetPascalInstance(PGtkObject(gtk_clist_get_vadjustment(TheGtkObject)),tfpgtkadjustment) as tfpgtkadjustment;
-end;
-
-procedure TFPgtkCList.SetVAdjustment (TheValue:TFPgtkAdjustment);
-begin
-  gtk_clist_set_vadjustment(TheGtkObject,PGtkadjustment(ConvertToGtkObject(TheValue)));
-end;
-
-procedure TFPgtkCList.SetReorderable (reorderable:boolean);
-begin
-  gtk_clist_set_reorderable (TheGtkObject, reorderable);
-end;
-
-function TFPgtkCList.Count : integer;
-begin
-  result := TheGtkObject^.rows;
-end;
-
-procedure CListScrollSignalproc (Sender:PGtkobject; ScrollType:TgtkScrollType; position:gfloat; data:pointer); cdecl;
-var p : TFPgtkCListScrollSignalFunction;
-begin
-with PSignalData(data)^ do
-  begin
-  p := TFPgtkCListScrollSignalFunction (TheSignalProc);
-  p (TheWidget as TFPgtkObject, ScrollType, position, TheData)
-  end;
-end;
-
-function TFPgtkCList.CListScrollSignalConnect (signal:string; proc:TFPgtkCListScrollSignalFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@CListScrollSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkCList.CListScrollSignalConnectAfter (signal:string; proc:TFPgtkCListScrollSignalFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@CListScrollSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-procedure CListScrollBooleanSignalproc (Sender:PGtkobject; ScrollType:TgtkScrollType; Position:gfloat; AutoStartSelection:boolean; data:pointer); cdecl;
-var p : TFPgtkCListScrollBooleanSignalFunction;
-begin
-with PSignalData(data)^ do
-  begin
-  p := TFPgtkCListScrollBooleanSignalFunction (TheSignalProc);
-  p (TheWidget as TFPgtkObject, ScrollType, Position, AutoStartSelection, TheData)
-  end;
-end;
-
-function TFPgtkCList.CListScrollBooleanSignalConnect (signal:string; proc:TFPgtkCListScrollBooleanSignalFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@CListScrollBooleanSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkCList.CListScrollBooleanSignalConnectAfter (signal:string; proc:TFPgtkCListScrollBooleanSignalFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@CListScrollBooleanSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-procedure SelectRowSignalproc (Sender:PGtkobject; row:integer; column:integer; event:PGdkEventButton; data:pointer); cdecl;
-var p : TFPgtkSelectRowSignalFunction;
-begin
-with PSignalData(data)^ do
-  begin
-  p := TFPgtkSelectRowSignalFunction (TheSignalProc);
-  p (TheWidget as TFPgtkObject, row, column, event, TheData)
-  end;
-end;
-
-function TFPgtkCList.SelectRowSignalConnect (signal:string; proc:TFPgtkSelectRowSignalFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@SelectRowSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkCList.SelectRowSignalConnectAfter (signal:string; proc:TFPgtkSelectRowSignalFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@SelectRowSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkCList.ConnectSelectRow (proc:TFPgtkSelectRowSignalFunction; data:pointer) : guint;
-begin
-  result := SelectRowSignalConnect (sgSelectRow, proc, data);
-end;
-
-function TFPgtkCList.ConnectAfterSelectRow (proc:TFPgtkSelectRowSignalFunction; data:pointer) : guint;
-begin
-  result := SelectRowSignalConnectAfter (sgSelectRow, proc, data);
-end;
-
-function TFPgtkCList.ConnectUnselectRow (proc:TFPgtkSelectRowSignalFunction; data:pointer) : guint;
-begin
-  result := SelectRowSignalConnect (sgUnselectRow, proc, data);
-end;
-
-function TFPgtkCList.ConnectAfterUnselectRow (proc:TFPgtkSelectRowSignalFunction; data:pointer) : guint;
-begin
-  result := SelectRowSignalConnectAfter (sgUnselectRow, proc, data);
-end;
-
-procedure MoveSignalproc (Sender:PGtkobject; arg1:integer; arg2:integer; data:pointer); cdecl;
-var p : TFPgtkMoveSignalFunction;
-begin
-with PSignalData(data)^ do
-  begin
-  p := TFPgtkMoveSignalFunction (TheSignalProc);
-  p (TheWidget as TFPgtkObject, arg1, arg2, TheData)
-  end;
-end;
-
-function TFPgtkCList.MoveSignalConnect (signal:string; proc:TFPgtkMoveSignalFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@MoveSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkCList.MoveSignalConnectAfter (signal:string; proc:TFPgtkMoveSignalFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@MoveSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkCList.ConnectRowMove (proc:TFPgtkMoveSignalFunction; data:pointer) : guint;
-begin
-  result := MoveSignalConnect (sgRowMove, proc, data);
-end;
-
-function TFPgtkCList.ConnectAfterRowMove (proc:TFPgtkMoveSignalFunction; data:pointer) : guint;
-begin
-  result := MoveSignalConnectAfter (sgRowMove, proc, data);
-end;
-
-function TFPgtkCList.ConnectScrollVertical (proc:TFPgtkCListScrollSignalFunction; data:pointer) : guint;
-begin
-  result := CListScrollSignalConnect (sgScrollVertical, proc, data);
-end;
-
-function TFPgtkCList.ConnectAfterScrollVertical (proc:TFPgtkCListScrollSignalFunction; data:pointer) : guint;
-begin
-  result := CListScrollSignalConnectAfter (sgScrollVertical, proc, data);
-end;
-
-function TFPgtkCList.ConnectScrolHorizontal (proc:TFPgtkCListScrollSignalFunction; data:pointer) : guint;
-begin
-  result := CListScrollSignalConnect (sgScrolHorizontal, proc, data);
-end;
-
-function TFPgtkCList.ConnectAfterScrolHorizontal (proc:TFPgtkCListScrollSignalFunction; data:pointer) : guint;
-begin
-  result := CListScrollSignalConnectAfter (sgScrolHorizontal, proc, data);
-end;
-
-function TFPgtkCList.ConnectToggleFocusRow (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnect (sgToggleFocusRow, proc, data);
-end;
-
-function TFPgtkCList.ConnectAfterToggleFocusRow (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnectAfter (sgToggleFocusRow, proc, data);
-end;
-
-function TFPgtkCList.ConnectSelectAll (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnect (sgSelectAll, proc, data);
-end;
-
-function TFPgtkCList.ConnectAfterSelectAll (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnectAfter (sgSelectAll, proc, data);
-end;
-
-function TFPgtkCList.ConnectUnselectAll (proc:TFPgtksignalFunction; data:pointer) : guint;
-begin
-  result := signalConnect (sgUnselectAll, proc, data);
-end;
-
-function TFPgtkCList.ConnectAfterUnselectAll (proc:TFPgtksignalFunction; data:pointer) : guint;
-begin
-  result := signalConnectAfter (sgUnselectAll, proc, data);
-end;
-
-function TFPgtkCList.ConnectUndoSelection (proc:TFPgtksignalFunction; data:pointer) : guint;
-begin
-  result := signalConnect (sgUndoSelection, proc, data);
-end;
-
-function TFPgtkCList.ConnectAfterUndoSelection (proc:TFPgtksignalFunction; data:pointer) : guint;
-begin
-  result := signalConnectAfter (sgUndoSelection, proc, data);
-end;
-
-function TFPgtkCList.ConnectStartSelection (proc:TFPgtksignalFunction; data:pointer) : guint;
-begin
-  result := signalConnect (sgStartSelection, proc, data);
-end;
-
-function TFPgtkCList.ConnectAfterStartSelection (proc:TFPgtksignalFunction; data:pointer) : guint;
-begin
-  result := signalConnectAfter (sgStartSelection, proc, data);
-end;
-
-function TFPgtkCList.ConnectEndSelection (proc:TFPgtksignalFunction; data:pointer) : guint;
-begin
-  result := signalConnect (sgEndSelection, proc, data);
-end;
-
-function TFPgtkCList.ConnectAfterEndSelection (proc:TFPgtksignalFunction; data:pointer) : guint;
-begin
-  result := signalConnectAfter (sgEndSelection, proc, data);
-end;
-
-function TFPgtkCList.ConnectToggleAddMode (proc:TFPgtksignalFunction; data:pointer) : guint;
-begin
-  result := signalConnect (sgToggleAddMode, proc, data);
-end;
-
-function TFPgtkCList.ConnectAfterToggleAddMode (proc:TFPgtksignalFunction; data:pointer) : guint;
-begin
-  result := signalConnectAfter (sgToggleAddMode, proc, data);
-end;
-
-function TFPgtkCList.ConnectAbortColumnResize (proc:TFPgtksignalFunction; data:pointer) : guint;
-begin
-  result := signalConnect (sgAbortColumnResize, proc, data);
-end;
-
-function TFPgtkCList.ConnectAfterAbortColumnResize (proc:TFPgtksignalFunction; data:pointer) : guint;
-begin
-  result := signalConnectAfter (sgAbortColumnResize, proc, data);
-end;
-
-function TFPgtkCList.ConnectExtendSelection (proc:TFPgtkCListScrollBooleanSignalFunction; data:pointer) : guint;
-begin
-  result := CListScrollBooleanSignalConnect (sgExtendSelection, proc, data);
-end;
-
-function TFPgtkCList.ConnectAfterExtendSelection (proc:TFPgtkCListScrollBooleanSignalFunction; data:pointer) : guint;
-begin
-  result := CListScrollBooleanSignalConnectAfter (sgExtendSelection, proc, data);
-end;
-
-procedure ColumnClickedSignalproc (Sender:PGtkobject; column:integer; data:pointer); cdecl;
-var p : TFPgtkColumnClickedSignalFunction;
-begin
-with PSignalData(data)^ do
-  begin
-  p := TFPgtkColumnClickedSignalFunction (TheSignalProc);
-  p (TheWidget as TFPgtkObject, column, TheData)
-  end;
-end;
-
-function TFPgtkCList.ColumnClickedSignalConnect (signal:string; proc:TFPgtkColumnClickedSignalFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@ColumnClickedSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkCList.ColumnClickedSignalConnectAfter (signal:string; proc:TFPgtkColumnClickedSignalFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@ColumnClickedSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkCList.ConnectClickColumn (proc:TFPgtkColumnClickedSignalFunction; data:pointer) : guint;
-begin
-  result := ColumnClickedSignalConnect (sgClickColumn, proc, data);
-end;
-
-function TFPgtkCList.ConnectAfterClickColumn (proc:TFPgtkColumnClickedSignalFunction; data:pointer) : guint;
-begin
-  result := ColumnClickedSignalConnectAfter (sgClickColumn, proc, data);
-end;
-
-procedure ResizeColumnSignalproc (Sender:PGtkobject; column:integer; width:integer; data:pointer); cdecl;
-var p : TFPgtkResizeColumnSignalFunction;
-begin
-with PSignalData(data)^ do
-  begin
-  p := TFPgtkResizeColumnSignalFunction (TheSignalProc);
-  p (TheWidget as TFPgtkObject, column, width, TheData)
-  end;
-end;
-
-function TFPgtkCList.ResizeColumnSignalConnect (signal:string; proc:TFPgtkResizeColumnSignalFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@ResizeColumnSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkCList.ResizeColumnSignalConnectAfter (signal:string; proc:TFPgtkResizeColumnSignalFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@ResizeColumnSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkCList.ConnectResizeColumn (proc:TFPgtkResizeColumnSignalFunction; data:pointer) : guint;
-begin
-  result := ResizeColumnSignalConnect (sgResizeColumn, proc, data);
-end;
-
-function TFPgtkCList.ConnectAfterResizeColumn (proc:TFPgtkResizeColumnSignalFunction; data:pointer) : guint;
-begin
-  result := ResizeColumnSignalConnectAfter (sgResizeColumn, proc, data);
-end;
-
- { TFPgtkCTree }
-
-function TFPgtkCTree.TheGtkObject : PGtkCTree;
-begin
-  result := PgtkCTree(FGtkObject);
-end;
-
-
-function TFPgtkCTree.GetLineStyle : TGtkCTreeLineStyle;
-begin
-  result := TGtkCTreeLineStyle(gtk.line_style(TheGtkObject^));
-end;
-
-procedure TFPgtkCTree.SetLineStyle (TheValue:TGtkCTreeLineStyle);
-begin
-  gtk_ctree_set_line_style(TheGtkObject,TheValue);
-end;
-
-function TFPgtkCTree.GetShowStub : boolean;
-begin
-  result := boolean(gtk.show_stub(TheGtkObject^));
-end;
-
-procedure TFPgtkCTree.SetShowStub (TheValue:boolean);
-begin
-  gtk_ctree_set_show_stub(TheGtkObject,TheValue);
-end;
-
-function TFPgtkCTree.GetExpanderStyle : TGtkCTreeExpanderStyle;
-begin
-  result := TGtkCTreeExpanderStyle(gtk.expander_style(TheGtkObject^));
-end;
-
-procedure TFPgtkCTree.SetExpanderStyle (TheValue:TGtkCTreeExpanderStyle);
-begin
-  gtk_ctree_set_expander_style(TheGtkObject,TheValue);
-end;
-
-function TFPgtkCTree.GetSpacing : guint;
-begin
-  result := TheGtkObject^.tree_spacing;
-end;
-
-procedure TFPgtkCTree.SetSpacing (TheValue:guint);
-begin
-  gtk_ctree_set_spacing(TheGtkObject,TheValue);
-end;
-
-function TFPgtkCTree.GetIndent : guint;
-begin
-  result := TheGtkObject^.tree_indent;
-end;
-
-procedure TFPgtkCTree.SetIndent (TheValue:guint);
-begin
-  gtk_ctree_set_indent(TheGtkObject,TheValue);
-end;
-
-function TFPgtkCTree.GetTreeColumn : integer;
-begin
-  result := TheGtkObject^.tree_column;
-end;
-
-constructor TFPgtkCTree.Create (aColumnCount:integer; aTreeColumn:integer);
-begin
-  FTreeColumn := aTreeColumn;
-  inherited Create (aColumnCount);
-end;
-
-
-procedure TFPgtkCTree.RemoveNode (node:PGtkCTreeNode);
-begin
-  gtk_ctree_remove_node (TheGtkObject, node);
-end;
-
-function TFPgtkCTree.InsertNode (aParent:PGtkCTreeNode; Sibling:PGtkCTreeNode; data:string; aSpacing:guint8; PixmapClosed:PGdkPixmap; MaskClosed:PGdkBitmap; PixmapOpened:PGdkPixmap; MaskOpened:PGdkBitmap; IsLeaf:boolean; Expanded:boolean) : PGtkCTreeNode; Overload;
-begin
-  result := gtk_ctree_insert_node (TheGtkObject, aParent, Sibling, ConvertToPgchar(data), aSpacing, PixmapClosed, MaskClosed, PixmapOpened, MaskOpened, IsLeaf, Expanded);
-end;
-
-function TFPgtkCTree.InsertNode (aParent:PGtkCTreeNode; Sibling:PGtkCTreeNode; data:string; aSpacing:guint8; IsLeaf:boolean; Expanded:boolean) : PGtkCTreeNode; Overload;
-begin
-  result := InsertNode (aParent, Sibling, data, aSpacing, nil, nil, nil, nil, IsLeaf, Expanded);
-end;
-
-procedure FPgtkCTreeFunc (Tree:PGtkCTree; Node:PGtkCTreeNode; data:pointer); Cdecl;
-var p : TFPgtkCTreeFunction;
-begin
-  with PSignalData(data)^ do
-  begin
-    p := TFPgtkCTreeFunction (TheSignalProc);
-    p (TFPgtkCTree(GetPascalInstance(PgtkObject(Tree))), Node, data);
-  end;
-end;
-
-
-procedure TFPgtkCTree.PostRecursive (aNode:PGtkCTreeNode; func:TFPgtkCTreeFunction; data:pointer);
-begin
-  gtk_CTree_post_recursive (TheGtkObject, aNode, @FPgtkCTreeFunc, 
-        ConvertSignalData(TFPgtkSignalFunction(func), data, true));
-end;
-
-procedure TFPgtkCTree.PostRecursiveToDepth (aNode:PGtkCTreeNode; aDepth:integer; func:TFPgtkCTreeFunction; data:pointer);
-begin
-  gtk_CTree_post_recursive_to_depth (TheGtkObject, aNode, aDepth, @FPgtkCTreeFunc, 
-        ConvertSignalData(TFPgtkSignalFunction(func), data, true));
-end;
-
-procedure TFPgtkCTree.PreRecursive (aNode:PGtkCTreeNode; func:TFPgtkCTreeFunction; data:pointer);
-begin
-  gtk_CTree_pre_recursive (TheGtkObject, aNode, @FPgtkCTreeFunc, 
-        ConvertSignalData(TFPgtkSignalFunction(func), data, true));
-end;
-
-procedure TFPgtkCTree.PreRecursiveToDepth (aNode:PGtkCTreeNode; aDepth:integer; func:TFPgtkCTreeFunction; data:pointer);
-begin
-  gtk_CTree_pre_recursive_to_depth (TheGtkObject, aNode, aDepth, @FPgtkCTreeFunc, 
-        ConvertSignalData(TFPgtkSignalFunction(func), data, true));
-end;
-
-procedure TFPgtkCTree.IsViewable (aNode:PGtkCTreeNode);
-begin
-  gtk_ctree_is_viewable (TheGtkObject, aNode);
-end;
-
-procedure TFPgtkCTree.LastChild (aNode:PGtkCTreeNode);
-begin
-  gtk_ctree_last (TheGtkObject, aNode);
-end;
-
-function TFPgtkCTree.IsChild (anAncestor:PGtkCTreeNode; aChild:PGtkCTreeNode) : boolean;
-begin
-  result := gtk_ctree_find (TheGtkObject, anAncestor, aChild);
-end;
-
-function TFPgtkCTree.IsAncestor (anAncestor:PGtkCTreeNode; aChild:PGtkCTreeNode) : boolean;
-begin
-  result := gtk_ctree_is_ancestor (TheGtkObject, anAncestor, aChild);
-end;
-
-function TFPgtkCTree.IsHotSpot (X:integer; Y:integer) : boolean;
-begin
-  result := gtk_ctree_is_hot_spot (TheGtkObject, X, Y);
-end;
-
-procedure TFPgtkCTree.MoveNode (aNode:PGtkCTreeNode; NewParent:PGtkCTreeNode; NewSibling:PGtkCTreeNode);
-begin
-  gtk_ctree_move (TheGtkObject, aNode, NewParent, NewSibling);
-end;
-
-procedure TFPgtkCTree.Expand (aNode:PGtkCTreeNode);
-begin
-  gtk_ctree_expand (TheGtkObject, aNode);
-end;
-
-procedure TFPgtkCTree.ExpandRecursive (aNode:PGtkCTreeNode);
-begin
-  gtk_ctree_expand_recursive (TheGtkObject, aNode);
-end;
-
-procedure TFPgtkCTree.ExpandToDepth (aNode:PGtkCTreeNode; aDepth:integer);
-begin
-  gtk_ctree_expand_to_depth (TheGtkObject, aNode, aDepth);
-end;
-
-procedure TFPgtkCTree.Collapse (aNode:PGtkCTreeNode);
-begin
-  gtk_ctree_collapse (TheGtkObject, aNode);
-end;
-
-procedure TFPgtkCTree.CollapseRecursive (aNode:PGtkCTreeNode);
-begin
-  gtk_ctree_collapse_recursive (TheGtkObject, aNode);
-end;
-
-procedure TFPgtkCTree.CollapseToDepth (aNode:PGtkCTreeNode; aDepth:integer);
-begin
-  gtk_ctree_collapse_to_depth (TheGtkObject, aNode, aDepth);
-end;
-
-procedure TFPgtkCTree.SelectNode (aNode:PGtkCTreeNode);
-begin
-  gtk_ctree_select (TheGtkObject, aNode);
-end;
-
-procedure TFPgtkCTree.SelectRecursive (aNode:PGtkCTreeNode);
-begin
-  gtk_ctree_select_recursive (TheGtkObject, aNode);
-end;
-
-procedure TFPgtkCTree.UnselectNode (aNode:PGtkCTreeNode);
-begin
-  gtk_ctree_unselect (TheGtkObject, aNode);
-end;
-
-procedure TFPgtkCTree.UnselectRecursive (aNode:PGtkCTreeNode);
-begin
-  gtk_ctree_unselect_recursive (TheGtkObject, aNode);
-end;
-
-procedure TFPgtkCTree.RealSelectRecursive (aNode:PGtkCTreeNode; aState:boolean);
-begin
-  gtk_ctree_real_select_recursive (TheGtkObject, aNode, ord(aState));
-end;
-
-function TFPgtkCTree.NodeGetCellType (Node:PGtkCTreeNode; column:integer) : TGtkCellType;
-begin
-  result := gtk_ctree_node_get_cell_type (TheGtkObject, Node, column);
-end;
-
-function TFPgtkCTree.GetNodeCellText (Node:PGtkCTreeNode; Column:integer) : string;
-var s : pgchar;
-    r : integer;
-begin
-  r := gtk_ctree_node_get_text (TheGtkObject, node, column, @s);
-  if (r = 0) then
-    result := ''
-  else
-    result := string(s^);
-end;
-
-procedure TFPgtkCTree.SetNodeCellText (Node:PGtkCTreeNode; Column:integer; TheValue:string);
-begin
-  gtk_ctree_node_set_text(TheGtkObject,Node, Column,ConvertToPgchar(TheValue));
-end;
-
-procedure TFPgtkCTree.NodeSetPixmap (Node:PGtkCTreeNode; column:integer; pixmap:PGdkPixmap; mask:PGdkBitmap);
-begin
-  gtk_ctree_node_set_pixmap (TheGtkObject, Node, column, pixmap, mask);
-end;
-
-procedure TFPgtkCTree.NodeGetPixmap (Node:PGtkCTreeNode; column:integer; var pixmap:PGdkPixmap; var mask:PGdkBitmap);
-begin
-  gtk_ctree_node_get_pixmap (TheGtkObject, node, column, @pixmap, @mask);
-end;
-
-procedure TFPgtkCTree.NodeSetPixText (Node:PGtkCTreeNode; column:integer; text:string; aspacing:guint8; pixmap:PGdkPixmap; mask:PGdkBitmap);
-begin
-  gtk_ctree_node_set_pixtext (TheGtkObject, Node, column, ConvertToPgchar(text), aspacing, pixmap, mask);
-end;
-
-procedure TFPgtkCTree.NodeGetPixText (Node:PGtkCTreeNode; column:integer; var text:string; var aspacing:guint8; var pixmap:PGdkPixmap; var mask:PGdkBitmap);
-var r : integer;
-    s : PPgchar;
-begin
-  s := nil;
-  r := gtk_ctree_node_get_pixtext (TheGtkObject, node, column, s, @aspacing, @pixmap, @mask);
-  if r = 0 then
-    begin
-    text := '';
-    pixmap := nil;
-    mask := nil;
-    end
-  else
-    text := string (s^);
-end;
-
-procedure TFPgtkCTree.SetNodeInfo (aNode:PGtkCTreeNode; aText:string; aSpacing:guint8; PixmapClosed:PGdkPixmap; MaskClosed:PGdkBitmap; PixmapOpened:PGdkPixmap; MaskOpened:PGdkBitmap; IsLeaf:boolean; Expanded:boolean); Overload;
-begin
-  gtk_ctree_set_node_info (TheGtkObject, aNode, ConvertToPgchar(aText), aSpacing, PixmapClosed, MaskClosed, PixmapOpened, MaskOpened, IsLeaf, Expanded);
-end;
-
-procedure TFPgtkCTree.GetNodeInfo (aNode:PGtkCTreeNode; var aText:string; var aSpacing:guint8; var PixmapClosed:PGdkPixmap; var MaskClosed:PGdkBitmap; var PixmapOpened:PGdkPixmap; var MaskOpened:PGdkBitmap; var IsLeaf:boolean; var Expanded:boolean); Overload;
-var r : integer;
-    s : PPgchar;
-begin
-  s := nil;
-  r := gtk_ctree_get_node_info (TheGtkObject, aNode, s, 
-      @aspacing, @pixmapClosed, @maskClosed, @pixmapOpened, @maskOpened,
-      @IsLeaf, @expanded);
-  if r = 0 then
-    begin
-    atext := '';
-    Spacing := 0;
-    pixmapClosed := nil;
-    maskClosed := nil;
-    pixmapOpened := nil;
-    maskOpened := nil;
-    IsLeaf := false;
-    Expanded := false;
-    end
-  else
-    atext := string (s^);
-end;
-
-procedure TFPgtkCTree.NodeSetShift (Node:PGtkCTreeNode; column:integer; vertical:integer; horizontal:integer);
-begin
-  gtk_ctree_node_set_shift (TheGtkObject, Node, column, vertical, horizontal);
-end;
-
-function TFPgtkCTree.GetNodeSelectable (Node:PGtkCTreeNode) : boolean;
-begin
-  result := gtk_ctree_node_get_selectable(TheGtkObject,Node);
-end;
-
-procedure TFPgtkCTree.SetNodeSelectable (Node:PGtkCTreeNode; TheValue:boolean);
-begin
-  gtk_ctree_node_set_selectable(TheGtkObject,Node,TheValue);
-end;
-
-procedure TFPgtkCTree.NodeSetForeground (Node:PGtkCTreeNode; color:PGdkColor);
-begin
-  gtk_ctree_node_set_foreground (TheGtkObject, Node, color);
-end;
-
-procedure TFPgtkCTree.NodeSetBackground (Node:PGtkCTreeNode; color:PGdkColor);
-begin
-  gtk_ctree_node_set_background (TheGtkObject, Node, color);
-end;
-
-function TFPgtkCTree.GetNodeCellStyle (Node:PGtkCTreeNode; column:integer) : PGtkStyle;
-begin
-  result := gtk_ctree_node_get_cell_style(TheGtkObject,Node, column);
-end;
-
-procedure TFPgtkCTree.SetNodeCellStyle (Node:PGtkCTreeNode; column:integer; TheValue:PGtkStyle);
-begin
-  gtk_ctree_node_set_cell_style(TheGtkObject,Node, column,TheValue);
-end;
-
-function TFPgtkCTree.GetNodeRowStyle (Node:PGtkCTreeNode) : PGtkStyle;
-begin
-  result := gtk_ctree_node_get_row_style(TheGtkObject,Node);
-end;
-
-procedure TFPgtkCTree.SetNodeRowStyle (Node:PGtkCTreeNode; TheValue:PGtkStyle);
-begin
-  gtk_ctree_node_set_row_style(TheGtkObject,Node,TheValue);
-end;
-
-function TFPgtkCTree.GetNodeData (Node:PGtkCTreeNode) : pointer;
-begin
-  result := gtk_ctree_node_get_row_data(TheGtkObject,Node);
-end;
-
-procedure TFPgtkCTree.SetNodeData (Node:PGtkCTreeNode; TheValue:pointer);
-begin
-  gtk_ctree_node_set_row_data(TheGtkObject,Node,TheValue);
-end;
-
-procedure TFPgtkCTree.NodeMoveTo (aNode:PGtkCTreeNode; column:integer; RowAlign:gfloat; ColAlign:gfloat);
-begin
-  gtk_ctree_node_moveto (TheGtkObject, aNode, column, RowAlign, ColAlign);
-end;
-
-function TFPgtkCTree.IsVisible (aNode:PGtkCTreeNode) : TGtkVisibility;
-begin
-  result := gtk_ctree_node_is_visible (TheGtkObject, aNode);
-end;
-
-function TFPgtkCTree.GetCompareDragFunc : TGtkCTreeCompareDragFunc;
-begin
-  result := TheGtkObject^.drag_compare;
-end;
-
-procedure TFPgtkCTree.SetCompareDragFunc (TheValue:TGtkCTreeCompareDragFunc);
-begin
-  gtk_ctree_set_drag_compare_func(TheGtkObject,TheValue);
-end;
-
-procedure TFPgtkCTree.SortNode (aNode:PGtkCTreeNode);
-begin
-  gtk_ctree_sort_node (TheGtkObject, aNode);
-end;
-
-procedure TFPgtkCTree.SortRecursive (aNode:PGtkCTreeNode);
-begin
-  gtk_ctree_sort_recursive (TheGtkObject, aNode);
-end;
-
-function TFPgtkCTree.NthNode (Row:integer) : PGtkCTreeNode;
-begin
-  result := gtk_ctree_node_Nth (TheGtkObject, Row);
-end;
-
- { TFPgtkFixed }
-
-function TFPgtkFixed.TheGtkObject : PGtkFixed;
-begin
-  result := PgtkFixed(FGtkObject);
-end;
-
-procedure TFPgtkFixed.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_fixed_new);
-end;
-
-
-procedure TFPgtkFixed.Put (Widget:TFPgtkWidget; x:integer; y:integer);
-begin
-  gtk_fixed_put (TheGtkObject, PGtkwidget(ConvertToGtkObject(Widget)), x, y);
-end;
-
-procedure TFPgtkFixed.Move (Widget:TFPgtkWidget; x:integer; y:integer);
-begin
-  gtk_fixed_move (TheGtkObject, PGtkwidget(ConvertToGtkObject(Widget)), x, y);
-end;
-
-procedure TFPgtkFixed.GetPos (Widget:TFPgtkWidget; var PosX:integer; var PosY:integer);
-var g : TFPgtkGroup;
-    r : integer;
-begin
-  g := TFPgtkGroup.Create;
-  try
-    g.ManageLists := false;
-    g.gtkList := TheGtkObject^.children;
-    r := g.indexof (Widget);
-    if r < 0 then
-      begin
-      PosX := -1;
-      PosY := -1;
-      end
-    else
-      with PGtkFixedChild(g.Items[r])^ do
-        begin
-        PosX := x;
-        PosY := Y;
-        end;
-  finally
-    g.Free;
-  end;
-end;
-
- { TFPgtkNotebook }
-
-function TFPgtkNotebook.TheGtkObject : PGtkNotebook;
-begin
-  result := PgtkNotebook(FGtkObject);
-end;
-
-procedure TFPgtkNotebook.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_notebook_new);
-end;
-
-
-procedure TFPgtkNotebook.AppendPage (Child:TFPgtkWidget; TabLabel:TFPgtkWidget);
-begin
-  gtk_notebook_append_page (TheGtkObject, ConvertTogtkWidget(Child), ConvertTogtkWidget(TabLabel));
-  Child.Show;
-end;
-
-procedure TFPgtkNotebook.AppendPageFull (Child:TFPgtkWidget; TabLabel:TFPgtkWidget; MenuLabel:TFPgtkWidget; IsVisible:boolean);
-begin
-  if assigned (MenuLabel) then
-    gtk_notebook_append_page_menu (TheGtkObject, ConvertTogtkWidget(Child), ConvertTogtkWidget(TabLabel), ConvertTogtkWidget(MenuLabel))
-  else
-    gtk_notebook_append_page (TheGtkObject, ConvertTogtkWidget(Child), ConvertTogtkWidget(TabLabel));
-  if isvisible then
-    Child.Show;
-end;
-
-procedure TFPgtkNotebook.PrependPage (Child:TFPgtkWidget; TabLabel:TFPgtkWidget);
-begin
-  gtk_notebook_Prepend_page (TheGtkObject, PGtkwidget(ConvertToGtkObject(Child)), PGtkwidget(ConvertToGtkObject(TabLabel)));
-end;
-
-procedure TFPgtkNotebook.PrependPageFull (Child:TFPgtkWidget; TabLabel:TFPgtkWidget; MenuLabel:TFPgtkWidget; IsVisible:boolean);
-begin
-  if assigned (MenuLabel) then
-    gtk_notebook_prepend_page_menu (TheGtkObject, ConvertTogtkWidget(Child), ConvertTogtkWidget(TabLabel), ConvertTogtkWidget(MenuLabel))
-  else
-    gtk_notebook_prepend_page (TheGtkObject, ConvertTogtkWidget(Child), ConvertTogtkWidget(TabLabel));
-  if isvisible then
-    Child.Show;
-end;
-
-procedure TFPgtkNotebook.InsertPage (Child:TFPgtkWidget; TabLabel:TFPgtkWidget; Position:integer);
-begin
-  gtk_notebook_insert_page (TheGtkObject, PGtkwidget(ConvertToGtkObject(Child)), PGtkwidget(ConvertToGtkObject(TabLabel)), Position);
-end;
-
-procedure TFPgtkNotebook.InsertPageFull (Child:TFPgtkWidget; TabLabel:TFPgtkWidget; MenuLabel:TFPgtkWidget; IsVisible:boolean; Position:integer);
-begin
-  if assigned (MenuLabel) then
-    gtk_notebook_insert_page_menu (TheGtkObject, ConvertTogtkWidget(Child), ConvertTogtkWidget(TabLabel), ConvertTogtkWidget(MenuLabel), position)
-  else
-    gtk_notebook_insert_page (TheGtkObject, ConvertTogtkWidget(Child), ConvertTogtkWidget(TabLabel), position);
-  if isvisible then
-    Child.Show;
-end;
-
-procedure TFPgtkNotebook.RemovePage (PageNumber:integer);
-begin
-  gtk_notebook_remove_page (TheGtkObject, PageNumber);
-end;
-
-function TFPgtkNotebook.PageNumberOf (Child:TFPgtkWidget) : integer;
-begin
-  result := gtk_notebook_page_num (TheGtkObject, PGtkwidget(ConvertToGtkObject(Child)));
-end;
-
-procedure TFPgtkNotebook.NextPage;
-begin
-  gtk_notebook_next_page (TheGtkObject);
-end;
-
-procedure TFPgtkNotebook.PrevPage;
-begin
-  gtk_notebook_prev_page (TheGtkObject);
-end;
-
-procedure TFPgtkNotebook.ReorderPage (Child:TFPgtkWidget; PageNum:integer);
-begin
-  gtk_notebook_reorder_child (TheGtkObject, PGtkwidget(ConvertToGtkObject(Child)), PageNum);
-end;
-
-function TFPgtkNotebook.GetPageIndex : integer;
-begin
-  result := gtk_notebook_get_current_page(TheGtkObject);
-end;
-
-procedure TFPgtkNotebook.SetPageIndex (TheValue:integer);
-begin
-  gtk_notebook_set_page(TheGtkObject,TheValue);
-end;
-
-function TFPgtkNotebook.GetPage : TFPgtkWidget;
-begin
-  result := GetChildOnPage (PageIndex);
-end;
-
-procedure TFPgtkNotebook.SetPage (TheValue:TFPgtkWidget);
-var r : integer;
-begin
-  r := PageNumberOf (TheValue);
-  if r > -1 then
-    PageIndex := r;
-end;
-
-function TFPgtkNotebook.GetTabPos : TGtkPositionType;
-begin
-  result := gtk.tab_pos(TheGtkObject^);
-end;
-
-procedure TFPgtkNotebook.SetTabPos (TheValue:TGtkPositionType);
-begin
-  gtk_notebook_set_tab_pos(TheGtkObject,TheValue);
-end;
-
-function TFPgtkNotebook.GetShowTabs : boolean;
-begin
-  result := boolean(gtk.show_tabs(TheGtkObject^));
-end;
-
-procedure TFPgtkNotebook.SetShowTabs (TheValue:boolean);
-begin
-  gtk_notebook_set_show_tabs(TheGtkObject,TheValue);
-end;
-
-function TFPgtkNotebook.GetShowBorder : boolean;
-begin
-  result := boolean(gtk.show_border(TheGtkObject^));
-end;
-
-procedure TFPgtkNotebook.SetShowBorder (TheValue:boolean);
-begin
-  gtk_notebook_set_show_border(TheGtkObject,TheValue);
-end;
-
-function TFPgtkNotebook.GetScrollable : boolean;
-begin
-  result := boolean(gtk.scrollable(TheGtkObject^));
-end;
-
-procedure TFPgtkNotebook.SetScrollable (TheValue:boolean);
-begin
-  gtk_notebook_set_scrollable(TheGtkObject,TheValue);
-end;
-
-function TFPgtkNotebook.GetHomogenous : boolean;
-begin
-  result := boolean(gtk.homogeneous(TheGtkObject^));
-end;
-
-procedure TFPgtkNotebook.SetHomogenous (TheValue:boolean);
-begin
-  gtk_notebook_set_homogeneous_tabs(TheGtkObject,TheValue);
-end;
-
-function TFPgtkNotebook.GetTabHBorder : word;
-begin
-  result := TheGtkObject^.tab_hborder;
-end;
-
-procedure TFPgtkNotebook.SetTabHBorder (TheValue:word);
-begin
-  gtk_notebook_set_tab_hborder(TheGtkObject,TheValue);
-end;
-
-function TFPgtkNotebook.GetTabVBorder : word;
-begin
-  result := TheGtkObject^.tab_vborder;
-end;
-
-procedure TFPgtkNotebook.SetTabVBorder (TheValue:word);
-begin
-  gtk_notebook_set_tab_vborder(TheGtkObject,TheValue);
-end;
-
-procedure TFPgtkNotebook.SetTabBorders (BorderWidth:word);
-begin
-  gtk_notebook_set_tab_border (TheGtkObject, BorderWidth);
-end;
-
-function TFPgtkNotebook.GetMenuLabelOf (Child:TFPgtkWidget) : TFPgtkWidget;
-begin
-  result := GetPascalInstance (PGtkObject(gtk_notebook_get_menu_label (TheGtkObject, ConvertTogtkWidget(Child)))) as TFPgtkWidget;
-end;
-
-procedure TFPgtkNotebook.SetMenuLabel (Child:TFPgtkWidget; MenuLabel:TFPgtkWidget);
-begin
-  gtk_notebook_set_menu_label (TheGtkObject, PGtkwidget(ConvertToGtkObject(Child)), PGtkwidget(ConvertToGtkObject(MenuLabel)));
-end;
-
-function TFPgtkNotebook.GetTabLabelOf (Child:TFPgtkWidget) : TFPgtkWidget;
-begin
-  result := GetPascalInstance (PGtkObject(gtk_notebook_get_tab_label (TheGtkObject, ConvertTogtkWidget(Child)))) as TFPgtkWidget;
-end;
-
-procedure TFPgtkNotebook.SetTabLabel (Child:TFPgtkWidget; TabLabel:TFPgtkWidget);
-begin
-  gtk_notebook_set_tab_label (TheGtkObject, PGtkwidget(ConvertToGtkObject(Child)), PGtkwidget(ConvertToGtkObject(TabLabel)));
-end;
-
-function TFPgtkNotebook.GetChildOnPage (PageNum:integer) : TFPgtkWidget;
-begin
-  result := GetPascalInstance (PGtkObject(gtk_notebook_get_nth_page (TheGtkObject, PageNum))) as TFPgtkWidget;
-end;
-
-procedure TFPgtkNotebook.GetTabLabelPacking (Widget:TFPgtkWidget; var Expand:boolean; var Fill:boolean; var PackType:TGtkPackType);
-var PT : PGtkPackType;
-begin
-  pt := @PackType;
-  gtk_notebook_query_tab_label_packing (TheGtkObject, ConvertTogtkWidget(widget), 
-                               @expand, @fill, pt);
-end;
-
-procedure TFPgtkNotebook.SetTabLabelPacking (Widget:TFPgtkWidget; Expand:boolean; Fill:boolean; PackType:TGtkPackType);
-begin
-  gtk_notebook_set_tab_label_packing (TheGtkObject, PGtkwidget(ConvertToGtkObject(Widget)), Expand, Fill, PackType);
-end;
-
-procedure TFPgtkNotebook.EnablePopup;
-begin
-  gtk_notebook_popup_enable (TheGtkObject);
-end;
-
-procedure TFPgtkNotebook.DisablePopup;
-begin
-  gtk_notebook_popup_disable (TheGtkObject);
-end;
-
-procedure PageSwitchSignalproc (Sender:PGtkobject; PageRec:PGtkNotebookPage; aPageNum:integer; data:pointer); cdecl;
-var p : TFPgtkPageSwitchSignalFunction;
-begin
-with PSignalData(data)^ do
-  begin
-  p := TFPgtkPageSwitchSignalFunction (TheSignalProc);
-  p (TheWidget as TFPgtkObject, PageRec, aPageNum, TheData)
-  end;
-end;
-
-function TFPgtkNotebook.PageSwitchSignalConnect (signal:string; proc:TFPgtkPageSwitchSignalFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@PageSwitchSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkNotebook.PageSwitchSignalConnectAfter (signal:string; proc:TFPgtkPageSwitchSignalFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@PageSwitchSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkNotebook.ConnectSwitchPage (proc:TFPgtkPageSwitchSignalFunction; data:pointer) : guint;
-begin
-  result := PageSwitchSignalConnect (sgSwitchPage, proc, data);
-end;
-
-function TFPgtkNotebook.ConnectAfterSwitchPage (proc:TFPgtkPageSwitchSignalFunction; data:pointer) : guint;
-begin
-  result := PageSwitchSignalConnectAfter (sgSwitchPage, proc, data);
-end;
-
- { TFPgtkFontSelection }
-
-function TFPgtkFontSelection.TheGtkObject : PGtkFontSelection;
-begin
-  result := PgtkFontSelection(FGtkObject);
-end;
-
-procedure TFPgtkFontSelection.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_font_selection_new);
-end;
-
-
-function TFPgtkFontSelection.GetFontName : string;
-begin
-  result := gtk_font_selection_get_font_name(TheGtkObject);
-end;
-
-procedure TFPgtkFontSelection.SetFontName (TheValue:string);
-begin
-  if not gtk_font_selection_set_font_name (TheGtkObject, pgchar(TheValue)) then
-    raise exception.CreateFmt (sFontNotFound, [TheValue]);
-end;
-
-function TFPgtkFontSelection.GetFont : PGdkFont;
-begin
-  result := gtk_font_selection_get_font (TheGtkObject);
-end;
-
-function TFPgtkFontSelection.GetPreviewText : string;
-begin
-  result := gtk_font_selection_get_preview_text(TheGtkObject);
-end;
-
-procedure TFPgtkFontSelection.SetPreviewText (TheValue:string);
-begin
-  gtk_font_selection_set_preview_text(TheGtkObject,ConvertToPgchar(TheValue));
-end;
-
-procedure TFPgtkFontSelection.SetFilter (FilterType:TGtkFontFilterType; FontType:TGtkFontType; Foundries:array of string; Weights:array of string; Slants:array of string; SetWidths:array of string; Spacings:array of string; CharSets:array of string);
-var ppF, ppW, ppSl, ppSW, ppSp, ppC : ppgchar;
-
-  function MakePP (data : array of string) : ppgchar;
-  begin
-    if high(data) > low(data) then
-      result := ArrayToPPgchar(data)
-    else
-      result := nil;
-  end;
-
-  procedure FreePP (ppdata : ppgchar; data : array of string);
-  begin
-    if assigned (ppdata) then
-      freemem (ppdata, sizeof (pgchar) * (high(data)-low(data)+1));
-  end;
-
-begin
-  ppF := MakePP(Foundries);
-  ppW := MakePP(Weights);
-  ppSl := MakePP(Slants);
-  ppSW := MakePP(SetWidths);
-  ppSp := MakePP(Spacings);
-  ppC := MakePP(CharSets);
-  gtk_font_selection_set_filter (TheGtkObject, FilterType, FontType, ppF, ppW, ppSl, ppSW, ppSp, ppC);
-  FreePP (ppF, Foundries);
-  FreePP (ppW, Weights);
-  FreePP (ppSl, Slants);
-  FreePP (ppSW, SetWidths);
-  FreePP (ppSp, Spacings);
-  FreePP (ppC, CharSets);
-end;
-
- { TFPgtkPaned }
-
-function TFPgtkPaned.TheGtkObject : PGtkPaned;
-begin
-  result := PgtkPaned(FGtkObject);
-end;
-
-
-function TFPgtkPaned.GetGutterSize : word;
-begin
-  result := TheGtkObject^.gutter_size;
-end;
-
-procedure TFPgtkPaned.SetGutterSize (TheValue:word);
-begin
-  {$ifdef gtkwin}
-  TheGtkObject^.gutter_size := TheValue;
-  {$else}
-  gtk_paned_set_gutter_size(TheGtkObject,TheValue);
-  {$endif}
-end;
-
-function TFPgtkPaned.GetHandleSize : word;
-begin
-  result := TheGtkObject^.handle_size;
-end;
-
-procedure TFPgtkPaned.SetHandleSize (TheValue:word);
-begin
-  gtk_paned_set_handle_size(TheGtkObject,TheValue);
-end;
-
-function TFPgtkPaned.GetPosition : integer;
-begin
-  result := TheGtkObject^.child1_size;
-end;
-
-procedure TFPgtkPaned.SetPosition (TheValue:integer);
-begin
-  gtk_paned_set_position(TheGtkObject,TheValue);
-end;
-
-procedure TFPgtkPaned.ComputePosition (AnAllocation:integer; Child1Req:integer; Child2Req:integer);
-begin
-  gtk_paned_compute_position (TheGtkObject, AnAllocation, Child1Req, Child2Req);
-end;
-
-procedure TFPgtkPaned.Add1 (Child:TFPgtkWidget); Overload;
-begin
-  gtk_paned_add1 (TheGtkObject, ConvertToGtkWidget(Child));
-  Child.Show;
-end;
-
-procedure TFPgtkPaned.Pack1 (Child:TFPgtkWidget; Resize:boolean; Shrink:boolean); Overload;
-begin
-  gtk_paned_pack1 (TheGtkObject, ConvertToGtkWidget(Child), Resize, Shrink);
-  Child.Show;
-end;
-
-procedure TFPgtkPaned.Add1 (Child:TFPgtkWidget; isVisible:boolean); Overload;
-begin
-  gtk_paned_add1 (TheGtkObject, ConvertToGtkWidget(Child));
-  if isvisible then
-    Child.Show;
-end;
-
-procedure TFPgtkPaned.Pack1 (Child:TFPgtkWidget; Resize:boolean; Shrink:boolean; IsVisible:boolean); Overload;
-begin
-  gtk_paned_pack1 (TheGtkObject, ConvertToGtkWidget(Child), Resize, Shrink);
-  if isvisible then
-    Child.Show;
-end;
-
-procedure TFPgtkPaned.Add2 (Child:TFPgtkWidget); Overload;
-begin
-  gtk_paned_add2 (TheGtkObject, ConvertToGtkWidget(Child));
-  Child.Show;
-end;
-
-procedure TFPgtkPaned.Pack2 (Child:TFPgtkWidget; Resize:boolean; Shrink:boolean); Overload;
-begin
-  gtk_paned_pack2 (TheGtkObject, ConvertToGtkWidget(Child), Resize, Shrink);
-  Child.Show;
-end;
-
-procedure TFPgtkPaned.Add2 (Child:TFPgtkWidget; IsVisible:boolean); Overload;
-begin
-  gtk_paned_add2 (TheGtkObject, ConvertToGtkWidget(Child));
-  if isvisible then
-    Child.Show;
-end;
-
-procedure TFPgtkPaned.Pack2 (Child:TFPgtkWidget; Resize:boolean; Shrink:boolean; IsVisible:boolean); Overload;
-begin
-  gtk_paned_pack2 (TheGtkObject, ConvertToGtkWidget(Child), Resize, Shrink);
-  if isvisible then
-    Child.Show;
-end;
-
- { TFPgtkHPaned }
-
-function TFPgtkHPaned.TheGtkObject : PGtkHPaned;
-begin
-  result := PgtkHPaned(FGtkObject);
-end;
-
-procedure TFPgtkHPaned.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_hpaned_new);
-end;
-
-
- { TFPgtkVPaned }
-
-function TFPgtkVPaned.TheGtkObject : PGtkVPaned;
-begin
-  result := PgtkVPaned(FGtkObject);
-end;
-
-procedure TFPgtkVPaned.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_vpaned_new);
-end;
-
-
- { TFPgtkLayout }
-
-function TFPgtkLayout.TheGtkObject : PGtkLayout;
-begin
-  result := PgtkLayout(FGtkObject);
-end;
-
-procedure TFPgtkLayout.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_layout_new (nil,nil));
-end;
-
-
-function TFPgtkLayout.GetHAdj : TFPgtkAdjustment;
-begin
-  result := GetPascalInstance(PGtkObject(gtk_layout_get_hadjustment(TheGtkObject)),tfpgtkadjustment) as tfpgtkadjustment;
-end;
-
-procedure TFPgtkLayout.SetHAdj (TheValue:TFPgtkAdjustment);
-begin
-  gtk_layout_set_hadjustment(TheGtkObject,PGtkadjustment(ConvertToGtkObject(TheValue)));
-end;
-
-function TFPgtkLayout.GetVAdj : TFPgtkAdjustment;
-begin
-  result := GetPascalInstance(PGtkObject(gtk_layout_get_vadjustment(TheGtkObject)),tfpgtkadjustment) as tfpgtkadjustment;
-end;
-
-procedure TFPgtkLayout.SetVAdj (TheValue:TFPgtkAdjustment);
-begin
-  gtk_layout_set_vadjustment(TheGtkObject,PGtkadjustment(ConvertToGtkObject(TheValue)));
-end;
-
-procedure TFPgtkLayout.Freeze;
-begin
-  gtk_layout_freeze (TheGtkObject);
-end;
-
-procedure TFPgtkLayout.Thaw;
-begin
-  gtk_layout_thaw (TheGtkObject);
-end;
-
-procedure TFPgtkLayout.Put (aWidget:TFPgtkWidget; X:integer; Y:integer); Overload;
-begin
-  gtk_layout_put (TheGtkObject, PGtkwidget(ConvertToGtkObject(aWidget)), X, Y);
-  aWidget.Show;
-end;
-
-procedure TFPgtkLayout.Put (aWidget:TFPgtkWidget; X:integer; Y:integer; aVisible:boolean); Overload;
-begin
-  gtk_layout_put (TheGtkObject, PGtkwidget(ConvertToGtkObject(aWidget)), X, Y);
-  if aVisible then
-    aWidget.Show;
-end;
-
-procedure TFPgtkLayout.Move (aWidget:TFPgtkWidget; X:integer; Y:integer);
-begin
-  gtk_layout_move (TheGtkObject, PGtkwidget(ConvertToGtkObject(aWidget)), X, Y);
-end;
-
-procedure TFPgtkLayout.SetSize (aWidth:integer; aHeight:integer);
-begin
-  gtk_layout_set_size (TheGtkObject, aWidth, aHeight);
-end;
-
- { TFPgtkList }
-
-function TFPgtkList.TheGtkObject : PGtkList;
-begin
-  result := PgtkList(FGtkObject);
-end;
-
-procedure TFPgtkList.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_list_new);
-end;
-
-
-function TFPgtkList.ConnectSelectionChanged (proc:TFPgtksignalFunction; data:pointer) : guint;
-begin
-  result := signalConnect (sgSelectionChanged, proc, data);
-end;
-
-function TFPgtkList.ConnectAfterSelectionChanged (proc:TFPgtksignalFunction; data:pointer) : guint;
-begin
-  result := signalConnectAfter (sgSelectionChanged, proc, data);
-end;
-
-function TFPgtkList.ConnectSelectChild (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-begin
-  result := WidgetSignalConnect (sgSelectChild, proc, data);
-end;
-
-function TFPgtkList.ConnectAfterSelectChild (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-begin
-  result := WidgetSignalConnectAfter (sgSelectChild, proc, data);
-end;
-
-function TFPgtkList.ConnectUnselectChild (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-begin
-  result := WidgetSignalConnect (sgUnselectChild, proc, data);
-end;
-
-function TFPgtkList.ConnectAfterUnselectChild (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-begin
-  result := WidgetSignalConnectAfter (sgUnselectChild, proc, data);
-end;
-
-function TFPgtkList.GetSelectionMode : TGtkSelectionMode;
-begin
-  result := TGtkSelectionMode(Selection_mode(TheGtkObject^));
-end;
-
-procedure TFPgtkList.SetSelectionMode (TheValue:TGtkSelectionMode);
-begin
-  gtk_list_set_selection_mode(TheGtkObject,TheValue);
-end;
-
-procedure TFPgtkList.InsertItems (TheItems:TFPgtkListItemGroup; position:integer);
-begin
-  gtk_list_insert_items (TheGtkObject, TheItems.GtkList, position);
-end;
-
-procedure TFPgtkList.AppendItems (TheItems:TFPgtkListItemGroup);
-begin
-  gtk_list_append_items (TheGtkObject, TheItems.GtkList);
-end;
-
-procedure TFPgtkList.PrependItems (TheItems:TFPgtkListItemGroup);
-begin
-  gtk_list_prepend_items (TheGtkObject, TheItems.GtkList);
-end;
-
-procedure TFPgtkList.RemoveItems (TheItems:TFPgtkListItemGroup);
-begin
-  gtk_list_remove_items (TheGtkObject, TheItems.GtkList);
-end;
-
-procedure TFPgtkList.RemoveItemsNoUnref (TheItems:TFPgtkListItemGroup);
-begin
-  gtk_list_remove_items_no_unref (TheGtkObject, TheItems.GtkList);
-end;
-
-procedure TFPgtkList.ClearItems (FromItem:integer; ToItem:integer);
-begin
-  if ToItem >= 0 then
-    inc (ToItem);
-  gtk_list_clear_items (TheGtkObject, FromItem, ToItem);
-end;
-
-procedure TFPgtkList.ClearAll;
-begin
-  ClearItems (0,-1);
-end;
-
-procedure TFPgtkList.SelectItem (Item:integer);
-begin
-  gtk_list_select_item (TheGtkObject, Item);
-end;
-
-procedure TFPgtkList.UnselectItem (Item:integer);
-begin
-  gtk_list_unselect_item (TheGtkObject, Item);
-end;
-
-procedure TFPgtkList.SelectChild (Child:TFPgtkWidget);
-begin
-  gtk_list_select_child (TheGtkObject, PGtkwidget(ConvertToGtkObject(Child)));
-end;
-
-procedure TFPgtkList.UnselectChild (Child:TFPgtkWidget);
-begin
-  gtk_list_unselect_child (TheGtkObject, PGtkwidget(ConvertToGtkObject(Child)));
-end;
-
-function TFPgtkList.ChildPosition (Child:TFPgtkWidget) : integer;
-begin
-  result := gtk_list_child_position (TheGtkObject, PGtkwidget(ConvertToGtkObject(Child)));
-end;
-
-procedure TFPgtkList.ExtendSelection (ScrollType:TGtkScrollType; Position:gfloat; AutoStartSelection:boolean);
-begin
-  gtk_list_extend_selection (TheGtkObject, ScrollType, Position, AutoStartSelection);
-end;
-
-procedure TFPgtkList.StartSelection;
-begin
-  gtk_list_start_selection (TheGtkObject);
-end;
-
-procedure TFPgtkList.EndSelection;
-begin
-  gtk_list_end_selection (TheGtkObject);
-end;
-
-procedure TFPgtkList.SelectAll;
-begin
-  gtk_list_select_all (TheGtkObject);
-end;
-
-procedure TFPgtkList.UnselectAll;
-begin
-  gtk_list_unselect_all (TheGtkObject);
-end;
-
-procedure TFPgtkList.ScrollHorizontal (ScrollType:TGtkScrollType; Position:gfloat);
-begin
-  gtk_list_scroll_horizontal (TheGtkObject, ScrollType, Position);
-end;
-
-procedure TFPgtkList.ScrollVertical (ScrollType:TGtkScrollType; Position:gfloat);
-begin
-  gtk_list_scroll_vertical (TheGtkObject, ScrollType, Position);
-end;
-
-procedure TFPgtkList.ToggleAddMode;
-begin
-  gtk_list_toggle_add_mode (TheGtkObject);
-end;
-
-procedure TFPgtkList.ToggleFocusRow;
-begin
-  gtk_list_toggle_focus_row (TheGtkObject);
-end;
-
-procedure TFPgtkList.ToggleRow (Child:TFPgtkWidget);
-begin
-  gtk_list_toggle_row (TheGtkObject, PGtkwidget(ConvertToGtkObject(Child)));
-end;
-
-procedure TFPgtkList.UndoSelection;
-begin
-  gtk_list_undo_selection (TheGtkObject);
-end;
-
-procedure TFPgtkList.EndDragSelection;
-begin
-  gtk_list_end_drag_selection (TheGtkObject);
-end;
-
-procedure TFPgtkList.GetSelection (aGroup:TFPgtkGroup);
-begin
-  with aGroup do
-    begin
-    ManageLists := False;
-    GtkList := TheGtkObject^.Selection;
-    end;
-end;
-
- { TFPgtkMenuShell }
-
-function TFPgtkMenuShell.TheGtkObject : PGtkMenuShell;
-begin
-  result := PgtkMenuShell(FGtkObject);
-end;
-
-
-procedure MoveCurrentSignalproc (Sender:PGtkobject; dir:TGtkMenuDirectionType; data:pointer); cdecl;
-var p : TFPgtkMoveCurrentSignalFunction;
-begin
-with PSignalData(data)^ do
-  begin
-  p := TFPgtkMoveCurrentSignalFunction (TheSignalProc);
-  p (TheWidget as TFPgtkObject, dir, TheData)
-  end;
-end;
-
-function TFPgtkMenuShell.MoveCurrentSignalConnect (signal:string; proc:TFPgtkMoveCurrentSignalFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@MoveCurrentSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkMenuShell.MoveCurrentSignalConnectAfter (signal:string; proc:TFPgtkMoveCurrentSignalFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@MoveCurrentSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-procedure TFPgtkMenuShell.GtkPrepend (MenuItem:TFPgtkWidget);
-begin
-  gtk_menu_shell_prepend (TheGtkObject, PGtkwidget(ConvertToGtkObject(MenuItem)));
-end;
-
-procedure TFPgtkMenuShell.GtkInsert (MenuItem:TFPgtkWidget; position:integer);
-begin
-  gtk_menu_shell_insert (TheGtkObject, PGtkwidget(ConvertToGtkObject(MenuItem)), position);
-end;
-
-procedure TFPgtkMenuShell.GtkAppend (MenuItem:TFPgtkWidget);
-begin
-  gtk_menu_shell_append (TheGtkObject, PGtkwidget(ConvertToGtkObject(MenuItem)));
-end;
-
-procedure TFPgtkMenuShell.ActivateItem (MenuItem:TFPgtkWidget; ForceDeactivate:boolean);
-begin
-  gtk_menu_shell_activate_item (TheGtkObject, PGtkwidget(ConvertToGtkObject(MenuItem)), ForceDeactivate);
-end;
-
-procedure TFPgtkMenuShell.SelectItem (MenuItem:TFPgtkWidget);
-begin
-  gtk_menu_shell_select_item (TheGtkObject, PGtkwidget(ConvertToGtkObject(MenuItem)));
-end;
-
-procedure TFPgtkMenuShell.DeActivate;
-begin
-  gtk_menu_shell_deactivate (TheGtkObject);
-end;
-
-procedure TFPgtkMenuShell.Prepend (MenuItem:TFPgtkWidget); Overload;
-begin
-  GtkPrepend (MenuItem);
-  MenuItem.Show;
-end;
-
-procedure TFPgtkMenuShell.Prepend (MenuItem:TFPgtkWidget; CreateVisible:boolean); Overload;
-begin
-  GtkPrepend (MenuItem);
-  if createvisible then
-    MenuItem.Show;
-end;
-
-procedure TFPgtkMenuShell.Insert (MenuItem:TFPgtkWidget; position:integer); Overload;
-begin
-  GtkInsert (MenuItem, position);
-  MenuItem.Show;
-end;
-
-procedure TFPgtkMenuShell.Insert (MenuItem:TFPgtkWidget; position:integer; CreateVisible:boolean); Overload;
-begin
-  GtkInsert (MenuItem, position);
-  if createvisible then
-    MenuItem.Show;
-end;
-
-procedure TFPgtkMenuShell.Append (MenuItem:TFPgtkWidget); Overload;
-begin
-  GtkAppend (MenuItem);
-  MenuItem.Show;
-end;
-
-procedure TFPgtkMenuShell.Append (MenuItem:TFPgtkWidget; CreateVisible:boolean); Overload;
-begin
-  GtkAppend (MenuItem);
-  if createvisible then
-    MenuItem.Show;
-end;
-
-function TFPgtkMenuShell.ConnectDeActivate (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnect (sgDeActivate, proc, data);
-end;
-
-function TFPgtkMenuShell.ConnectAfterDeActivate (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnectAfter (sgDeActivate, proc, data);
-end;
-
-function TFPgtkMenuShell.ConnectSelectionDone (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnect (sgSelectionDone, proc, data);
-end;
-
-function TFPgtkMenuShell.ConnectAfterSelectionDone (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnectAfter (sgSelectionDone, proc, data);
-end;
-
-function TFPgtkMenuShell.ConnectCancel (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnect (sgCancel, proc, data);
-end;
-
-function TFPgtkMenuShell.ConnectAfterCancel (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnectAfter (sgCancel, proc, data);
-end;
-
-function TFPgtkMenuShell.ConnectMoveCurrent (proc:TFPgtkMoveCurrentSignalFunction; data:pointer) : guint;
-begin
-  result := MoveCurrentSignalConnect (sgMoveCurrent, proc, data);
-end;
-
-function TFPgtkMenuShell.ConnectAfterMoveCurrent (proc:TFPgtkMoveCurrentSignalFunction; data:pointer) : guint;
-begin
-  result := MoveCurrentSignalConnectAfter (sgMoveCurrent, proc, data);
-end;
-
-function TFPgtkMenuShell.ConnectActivateCurrent (proc:TFPgtkBooleanSignalFunction; data:pointer) : guint;
-begin
-  result := BooleanSignalConnect (sgActivateCurrent, proc, data);
-end;
-
-function TFPgtkMenuShell.ConnectAfterActivateCurrent (proc:TFPgtkBooleanSignalFunction; data:pointer) : guint;
-begin
-  result := BooleanSignalConnectAfter (sgActivateCurrent, proc, data);
-end;
-
- { TFPgtkMenuBar }
-
-function TFPgtkMenuBar.TheGtkObject : PGtkMenuBar;
-begin
-  result := PgtkMenuBar(FGtkObject);
-end;
-
-procedure TFPgtkMenuBar.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_menu_bar_new);
-end;
-
-
-procedure TFPgtkMenuBar.GtkPrepend (MenuItem:TFPgtkWidget);
-begin
-  gtk_menu_bar_prepend (TheGtkObject, PGtkwidget(ConvertToGtkObject(MenuItem)));
-end;
-
-procedure TFPgtkMenuBar.GtkInsert (MenuItem:TFPgtkWidget; position:integer);
-begin
-  gtk_menu_bar_insert (TheGtkObject, PGtkwidget(ConvertToGtkObject(MenuItem)), position);
-end;
-
-procedure TFPgtkMenuBar.GtkAppend (MenuItem:TFPgtkWidget);
-begin
-  gtk_menu_bar_append (TheGtkObject, PGtkwidget(ConvertToGtkObject(MenuItem)));
-end;
-
-function TFPgtkMenuBar.GetShadow : TgtkShadowType;
-begin
-  result := TheGtkObject^.shadow_type;
-end;
-
-procedure TFPgtkMenuBar.SetShadow (TheValue:TgtkShadowType);
-begin
-  gtk_menu_bar_set_shadow_type(TheGtkObject,TheValue);
-end;
-
- { TFPgtkMenu }
-
-function TFPgtkMenu.TheGtkObject : PGtkMenu;
-begin
-  result := PgtkMenu(FGtkObject);
-end;
-
-procedure TFPgtkMenu.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_menu_new);
-end;
-
-
-procedure TFPgtkMenu.GtkPrepend (MenuItem:TFPgtkWidget);
-begin
-  gtk_menu_prepend (TheGtkObject, PGtkwidget(ConvertToGtkObject(MenuItem)));
-end;
-
-procedure TFPgtkMenu.GtkInsert (MenuItem:TFPgtkWidget; position:integer);
-begin
-  gtk_menu_insert (TheGtkObject, PGtkwidget(ConvertToGtkObject(MenuItem)), position);
-end;
-
-procedure TFPgtkMenu.GtkAppend (MenuItem:TFPgtkWidget);
-begin
-  gtk_menu_append (TheGtkObject, PGtkwidget(ConvertToGtkObject(MenuItem)));
-end;
-
-procedure FPgtkMenuPos (Sender:PgtkMenu; x:pgint; y:pgint; data:pointer); Cdecl;
-var p : TFPgtkMenuPosFunction;
-begin
-  with PSignalData (data)^ do
-    begin
-    p := TFPgtkMenuPosFunction (TheSignalProc);
-    p(TFPgtkMenu(GetPascalInstance(PgtkObject(Sender))), x^, y^, data);
-    end;
-end;
-
-
-procedure FPgtkMenuDetacher (AttachedWidget:PgtkWidget; TheMenu:PgtkMenu); Cdecl;
-var m : TFPgtkMenu;
-    a : TFPgtkWidget;
-begin
-  m := (GetPascalInstance(PgtkObject(TheMenu)) as TFPgtkMenu);
-  if assigned(m) and assigned(m.FDetacher) then
-    begin
-    a := TFPgtkWidget (GetPascalInstance(PgtkObject(AttachedWidget)));
-    m.FDetacher (a, m);
-    end
-end;
-
-
-procedure TFPgtkMenu.ReorderChild (MenuItem:TFPgtkWidget; position:integer);
-begin
-  gtk_menu_reorder_child (TheGtkObject, PGtkwidget(ConvertToGtkObject(MenuItem)), position);
-end;
-
-procedure TFPgtkMenu.Popup (button:guint); Overload;
-begin
-  gtk_menu_popup (TheGtkObject, null, null, null, null, button, 0);
-end;
-
-procedure TFPgtkMenu.Popup (ParentShell:TFPgtkWidget; ParentItem:TFPgtkWidget; func:TFPgtkMenuPosFunction; data:pointer; button:guint; ActivateTime:guint32); Overload;
-begin
-  gtk_menu_popup (TheGtkObject, ConvertTogtkWidget(ParentShell), ConvertTogtkWidget(ParentItem),
-      @FPgtkMenuPos, ConvertSignalData(TFPgtkSignalFunction(func), data, true), button, ActivateTime);
-end;
-
-procedure TFPgtkMenu.PopDown;
-begin
-  gtk_menu_popdown (TheGtkObject);
-end;
-
-procedure TFPgtkMenu.Reposition;
-begin
-  gtk_menu_reposition (TheGtkObject);
-end;
-
-procedure TFPgtkMenu.AttachToWidget (Widget:TFPgtkWidget; detacher:TFPgtkMenuDetachFunction);
-begin
-  FDetacher := detacher;
-  gtk_menu_attach_to_widget (TheGtkObject, ConvertTogtkWidget(Widget), @FPgtkMenuDetacher);
-end;
-
-procedure TFPgtkMenu.Detach;
-begin
-  gtk_menu_detach (TheGtkObject);
-end;
-
-procedure TFPgtkMenu.SetTitle (TheValue:string);
-begin
-  gtk_menu_set_title(TheGtkObject,Pgchar(TheValue));
-end;
-
-function TFPgtkMenu.GetActive : TFPgtkWidget;
-begin
-  result := GetPascalInstance(PGtkObject(gtk_menu_get_active(TheGtkObject)),tfpgtkwidget) as tfpgtkwidget;
-end;
-
-procedure TFPgtkMenu.SetActive (TheValue:TFPgtkWidget);
-var r : integer;
-begin
-  r := Children.indexof (TheValue);
-  if r >= 0 then
-    SetActiveIndex (r);
-end;
-
-function TFPgtkMenu.GetActiveIndex : integer;
-begin
-  result := Children.indexof (GetActive);
-end;
-
-procedure TFPgtkMenu.SetActiveIndex (TheValue:integer);
-begin
-  gtk_menu_set_active(TheGtkObject,TheValue);
-end;
-
-function TFPgtkMenu.GetTearOffState : boolean;
-begin
-  result := boolean(gtk.torn_off(TheGtkObject^));
-end;
-
-procedure TFPgtkMenu.SetTearOffState (TheValue:boolean);
-begin
-  gtk_menu_set_tearoff_state(TheGtkObject,TheValue);
-end;
-
-function TFPgtkMenu.GetAttachedTo : TFPgtkWidget;
-begin
-  result := GetPascalInstance(PGtkObject(gtk_menu_get_attach_widget(TheGtkObject)),tfpgtkwidget) as tfpgtkwidget;
-end;
-
-procedure TFPgtkMenu.SetAttachedTo (TheValue:TFPgtkWidget);
-begin
-  AttachToWidget (TheValue, nil);
-end;
-
-function TFPgtkMenu.GetAccelGroup : PGtkAccelGroup;
-begin
-  result := gtk_menu_ensure_uline_accel_group(TheGtkObject);
-end;
-
-procedure TFPgtkMenu.SetAccelGroup (TheValue:PGtkAccelGroup);
-begin
-  gtk_menu_set_accel_group(TheGtkObject,TheValue);
-end;
-
- { TFPgtkPacker }
-
-function TFPgtkPacker.TheGtkObject : PGtkPacker;
-begin
-  result := PgtkPacker(FGtkObject);
-end;
-
-procedure TFPgtkPacker.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_packer_new);
-end;
-
-
-procedure TFPgtkPacker.Add (Child:TFPgtkWidget; Side:TGtkSideType; Anchor:TGtkAnchorType; options:TGtkPackerOptions); Overload;
-begin
-  gtk_packer_add_defaults (TheGtkObject, Child.TheGtkWidget, Side, anchor, options);
-  Child.Show;
-end;
-
-procedure TFPgtkPacker.Add (Child:TFPgtkWidget; Side:TGtkSideType; Anchor:TGtkAnchorType; options:TGtkPackerOptions; aVisible:boolean); Overload;
-begin
-  gtk_packer_add_defaults (TheGtkObject, Child.TheGtkWidget, Side, anchor, options);
-  if aVisible then
-    Child.Show;
-end;
-
-procedure TFPgtkPacker.Add (Child:TFPgtkWidget; Side:TGtkSideType; Anchor:TGtkAnchorType; options:TGtkPackerOptions; aBorder:guint; PadX:Guint; PadY:guint; IPadX:guint; IPadY:guint); Overload;
-begin
-  gtk_packer_add (TheGtkObject, Child.TheGtkWidget, Side, anchor, options, aborder, padX, PadY, IPadX, IPadY);
-  Child.Show;
-end;
-
-procedure TFPgtkPacker.Add (Child:TFPgtkWidget; Side:TGtkSideType; Anchor:TGtkAnchorType; options:TGtkPackerOptions; aBorder:guint; PadX:Guint; PadY:guint; IPadX:guint; IPadY:guint; aVisible:boolean); Overload;
-begin
-  gtk_packer_add (TheGtkObject, Child.TheGtkWidget, Side, anchor, options, aborder, padX, PadY, IPadX, IPadY);
-  if aVisible then
-    Child.Show;
-end;
-
-procedure TFPgtkPacker.ReorderChild (aChild:TFPgtkWidget; position:integer);
-begin
-  gtk_packer_reorder_child (TheGtkObject, PGtkwidget(ConvertToGtkObject(aChild)), position);
-end;
-
-function TFPgtkPacker.GetSpacing : guint;
-begin
-  result := TheGtkObject^.spacing;
-end;
-
-procedure TFPgtkPacker.SetSpacing (TheValue:guint);
-begin
-  gtk_packer_set_spacing(TheGtkObject,TheValue);
-end;
-
-procedure TFPgtkPacker.DefaultBorder (aBorder:guint);
-begin
-  gtk_packer_set_default_border_width (TheGtkObject, aBorder);
-end;
-
-procedure TFPgtkPacker.DefaultPad (PadX:guint; PadY:guint);
-begin
-  gtk_packer_set_default_pad (TheGtkObject, PadX, PadY);
-end;
-
-procedure TFPgtkPacker.DefaultIPad (IPadX:guint; IPadY:guint);
-begin
-  gtk_packer_set_default_ipad (TheGtkObject, IPadX, IPadY);
-end;
-
-procedure TFPgtkPacker.Configure (aChild:TFPgtkWidget; Side:TGtkSideType; Anchor:TGtkAnchorType; options:TGtkPackerOptions; aBorder:guint; PadX:Guint; PadY:guint; IPadX:guint; IPadY:guint); Overload;
-begin
-  gtk_packer_set_child_packing (TheGtkObject, PGtkwidget(ConvertToGtkObject(aChild)), Side, Anchor, options, aBorder, PadX, PadY, IPadX, IPadY);
-end;
-
- { TFPgtkTable }
-
-function TFPgtkTable.TheGtkObject : PGtkTable;
-begin
-  result := PgtkTable(FGtkObject);
-end;
-
-procedure TFPgtkTable.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_table_new (1,1,False));
-end;
-
-
-constructor TFPgtkTable.Create (AColumns:integer; ARows:integer);
-begin
-  inherited create;
-  resize (AColumns, ARows);
-end;
-
-
-procedure TFPgtkTable.Resize (AColumns:integer; ARows:integer);
-begin
-  gtk_table_resize (TheGtkObject, ARows, AColumns);
-end;
-
-procedure TFPgtkTable.Attach (Widget:TFPgtkWidget; left:integer; right:integer; top:integer; bottom:integer; XOptions:integer; YOptions:integer; XPadding:integer; YPadding:integer; IsVisible:boolean);
-begin
-  gtk_table_attach (TheGtkObject, ConvertToGtkWidget(Widget), left, right, top, bottom,
-                    XOptions, YOptions, XPadding, YPadding);
-  if isvisible then
-    widget.Show;
-end;
-
-procedure TFPgtkTable.Attach (Widget:TFPgtkWidget; left:integer; right:integer; top:integer; bottom:integer; XOptions:integer; YOptions:integer; XPadding:integer; YPadding:integer);
-begin
-  gtk_table_attach (TheGtkObject, ConvertTogtkWidget(Widget), left, right, top, bottom,
-                    XOptions, YOptions, XPadding, YPadding);
-  widget.Show;
-end;
-
-procedure TFPgtkTable.Attach (Widget:TFPgtkWidget; left:integer; right:integer; top:integer; bottom:integer; IsVisible:boolean);
-begin
-  gtk_table_attach_defaults (TheGtkObject, ConvertTogtkWidget(Widget), left, right, top, bottom);
-  if isvisible then
-    widget.Show;
-end;
-
-procedure TFPgtkTable.Attach (Widget:TFPgtkWidget; left:integer; right:integer; top:integer; bottom:integer);
-begin
-  gtk_table_attach_defaults (TheGtkObject, ConvertTogtkWidget(Widget), left, right, top, bottom);
-  widget.Show;
-end;
-
-function TFPgtkTable.GetRowCount : integer;
-begin
-  result := TheGtkObject^.nrows;
-end;
-
-function TFPgtkTable.GetColCount : integer;
-begin
-  result := TheGtkObject^.ncols;
-end;
-
-function TFPgtkTable.GetHomogeneous : boolean;
-begin
-  result := boolean(gtk.homogeneous(TheGtkObject^));
-end;
-
-procedure TFPgtkTable.SetHomogeneous (TheValue:boolean);
-begin
-  gtk_table_set_homogeneous(TheGtkObject,TheValue);
-end;
-
-function TFPgtkTable.GetRowSpacings : integer;
-begin
-  result := TheGtkObject^.column_spacing;
-end;
-
-procedure TFPgtkTable.SetRowSpacings (TheValue:integer);
-begin
-  gtk_table_set_row_spacings(TheGtkObject,TheValue);
-end;
-
-function TFPgtkTable.GetColSpacings : integer;
-begin
-  result := TheGtkObject^.row_spacing;
-end;
-
-procedure TFPgtkTable.SetColSpacings (TheValue:integer);
-begin
-  gtk_table_set_col_spacings(TheGtkObject,TheValue);
-end;
-
-procedure TFPgtkTable.SetOneRowSpacing (row:integer; TheValue:integer);
-begin
-  gtk_table_set_row_spacing (TheGtkObject, row, TheValue);
-end;
-
-procedure TFPgtkTable.SetOneColSpacing (Column:integer; TheValue:integer);
-begin
-  gtk_table_set_col_spacing (TheGtkObject, Column, TheValue);
-end;
-
- { TFPgtkToolbar }
-
-function TFPgtkToolbar.TheGtkObject : PGtkToolbar;
-begin
-  result := PgtkToolbar(FGtkObject);
-end;
-
-procedure TFPgtkToolbar.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_toolbar_new (GTK_ORIENTATION_HORIZONTAL,GTK_TOOLBAR_BOTH));
-end;
-
-
-function TFPgtkToolbar.GetButtonRelief : TGtkReliefStyle;
-begin
-  result := gtk_toolbar_get_button_relief(TheGtkObject);
-end;
-
-procedure TFPgtkToolbar.SetButtonRelief (TheValue:TGtkReliefStyle);
-begin
-  gtk_toolbar_set_button_relief(TheGtkObject,TheValue);
-end;
-
-function TFPgtkToolbar.GetTooltips : TFPgtkTooltips;
-begin
-  result := GetPascalInstance(PGtkObject(TheGtkObject^.tooltips),tfpgtktooltips) as tfpgtktooltips;
-end;
-
-function TFPgtkToolbar.GetEnableTooltips : longbool;
-begin
-  result := tooltips.enabled;
-end;
-
-procedure TFPgtkToolbar.SetEnableTooltips (TheValue:longbool);
-begin
-  gtk_toolbar_set_tooltips(TheGtkObject,gint(TheValue));
-end;
-
-function TFPgtkToolbar.GetSpaceStyle : TGtkToolbarSpaceStyle;
-begin
-  result := TheGtkObject^.space_style;
-end;
-
-procedure TFPgtkToolbar.SetSpaceStyle (TheValue:TGtkToolbarSpaceStyle);
-begin
-  gtk_toolbar_set_space_style(TheGtkObject,TheValue);
-end;
-
-function TFPgtkToolbar.GetSpaceSize : integer;
-begin
-  result := TheGtkObject^.space_size;
-end;
-
-procedure TFPgtkToolbar.SetSpaceSize (TheValue:integer);
-begin
-  gtk_toolbar_set_space_size(TheGtkObject,TheValue);
-end;
-
-function TFPgtkToolbar.GetStyle : TGtkToolbarStyle;
-begin
-  result := TheGtkObject^.style;
-end;
-
-procedure TFPgtkToolbar.SetStyle (TheValue:TGtkToolbarStyle);
-begin
-  gtk_toolbar_set_style(TheGtkObject,TheValue);
-end;
-
-function TFPgtkToolbar.GetOrientation : tGtkOrientation;
-begin
-  result := TheGtkObject^.orientation;
-end;
-
-procedure TFPgtkToolbar.SetOrientation (TheValue:tGtkOrientation);
-begin
-  gtk_toolbar_set_orientation(TheGtkObject,TheValue);
-end;
-
-procedure TFPgtkToolbar.InsertWidget (Widget:TFPgtkWidget; TooltipText:string; TooltipPrivate:string; Position:integer);
-begin
-  gtk_toolbar_insert_widget (TheGtkObject, ConvertToGtkWidget(Widget), ConvertToPgchar(TooltipText), ConvertTopgchar(TooltipPrivate), Position);
-  Widget.Show;
-end;
-
-procedure TFPgtkToolbar.PrependWidget (Widget:TFPgtkWidget; TooltipText:string; TooltipPrivate:string);
-begin
-  gtk_toolbar_prepend_widget (TheGtkObject, ConvertToGtkWidget(Widget), ConvertTopgchar(TooltipText), ConvertTopgchar(TooltipPrivate));
-  Widget.Show;
-end;
-
-procedure TFPgtkToolbar.AppendWidget (Widget:TFPgtkWidget; TooltipText:string; TooltipPrivate:string);
-begin
-  gtk_toolbar_append_widget (TheGtkObject, ConvertToGtkWidget(Widget), ConvertTopgchar(TooltipText), ConvertTopgchar(TooltipPrivate));
-  Widget.Show;
-end;
-
-function TFPgtkToolbar.InsertElement (ButtonType:TGtkToolbarChildType; PrevRadioBut:TFPgtkWidget; Text:string; TooltipText:string; TooltipPrivate:string; Icon:TFPgtkWidget; CallBack:TFPgtkSignalFunction; data:pointer; position:integer) : TFPgtkWidget;
-var w : PGtkWidget;
-    t : TFPgtkObjectClass;
-begin
-  w := gtk_toolbar_insert_element (TheGtkObject, ButtonType, 
-           ConvertToGtkwidget(PrevRadioBut), ConvertTopgchar(Text), 
-           ConvertTopgchar(TooltipText), ConvertTopgchar(TooltipPrivate), 
-           ConvertToGtkwidget(Icon), 
-           gtk_signal_func(@SignalProc), 
-           ConvertSignalData(TFPgtkSignalFunction(callback), data, true), 
-           position);
-  if assigned (w) then
-    begin
-    case ButtonType of
-      GTK_TOOLBAR_CHILD_WIDGET:
-        t := TFPgtkWidget;
-      GTK_TOOLBAR_CHILD_BUTTON:
-        t := TFPgtkButton;
-      GTK_TOOLBAR_CHILD_TOGGLEBUTTON:
-        t := TFPgtkToggleButton;
-      GTK_TOOLBAR_CHILD_RADIOBUTTON:
-        t := TFPgtkRadioButton;
-    end;
-    if t = TFPgtkWidget then
-      result := GetPascalInstance (w)
-    else
-      result := GetPascalInstance (w, t);
-    end
-  else
-    result := nil;
-end;
-
-function TFPgtkToolbar.AppendElement (ButtonType:TGtkToolbarChildType; PrevRadioBut:TFPgtkWidget; Text:string; TooltipText:string; TooltipPrivate:string; Icon:TFPgtkWidget; CallBack:TFPgtkSignalFunction; data:pointer) : TFPgtkWidget;
-var w : PGtkWidget;
-    t : TFPgtkObjectClass;
-begin
-  w := gtk_toolbar_append_element (TheGtkObject, ButtonType, ConvertToGtkwidget(PrevRadioBut), 
-          ConvertTopgchar(Text), ConvertTopgchar(TooltipText), ConvertTopgchar(TooltipPrivate), 
-          ConvertToGtkwidget(Icon), gtk_signal_func(@SignalProc), 
-          ConvertSignalData(TFPgtkSignalFunction(callback), data, true));
-  if assigned (w) then
-    begin
-    case ButtonType of
-      GTK_TOOLBAR_CHILD_WIDGET:
-        t := TFPgtkWidget;
-      GTK_TOOLBAR_CHILD_BUTTON:
-        t := TFPgtkButton;
-      GTK_TOOLBAR_CHILD_TOGGLEBUTTON:
-        t := TFPgtkToggleButton;
-      GTK_TOOLBAR_CHILD_RADIOBUTTON:
-        t := TFPgtkRadioButton;
-    end;
-    if t = TFPgtkWidget then
-      result := GetPascalInstance (w)
-    else
-      result := GetPascalInstance (w, t);
-    end
-  else
-    result := nil;
-end;
-
-function TFPgtkToolbar.PrependElement (ButtonType:TGtkToolbarChildType; PrevRadioBut:TFPgtkWidget; Text:string; TooltipText:string; TooltipPrivate:string; Icon:TFPgtkWidget; CallBack:TFPgtkSignalFunction; data:pointer) : TFPgtkWidget;
-var w : PGtkWidget;
-    t : TFPgtkObjectClass;
-begin
-  w := gtk_toolbar_prepend_element (TheGtkObject, ButtonType, ConvertToGtkwidget(PrevRadioBut), 
-          ConvertTopgchar(Text), ConvertTopgchar(TooltipText), ConvertTopgchar(TooltipPrivate), 
-          ConvertToGtkwidget(Icon), gtk_signal_func(@SignalProc), 
-          ConvertSignalData(TFPgtkSignalFunction(callback), data, true));
-  if assigned (w) then
-    begin
-    case ButtonType of
-      GTK_TOOLBAR_CHILD_WIDGET:
-        t := TFPgtkWidget;
-      GTK_TOOLBAR_CHILD_BUTTON:
-        t := TFPgtkButton;
-      GTK_TOOLBAR_CHILD_TOGGLEBUTTON:
-        t := TFPgtkToggleButton;
-      GTK_TOOLBAR_CHILD_RADIOBUTTON:
-        t := TFPgtkRadioButton;
-    end;
-    if t = TFPgtkWidget then
-      result := GetPascalInstance (w)
-    else
-      result := GetPascalInstance (w, t);
-    end
-  else
-    result := nil;
-end;
-
-function TFPgtkToolbar.InsertItem (Text:string; TooltipText:string; TooltipPrivate:string; Icon:TFPgtkWidget; CallBack:TFPgtkSignalFunction; data:pointer; position:integer) : TFPgtkWidget; Overload;
-begin
-  result := GetPascalInstance (
-      gtk_toolbar_insert_item (TheGtkObject, ConvertTopgchar(Text), ConvertTopgchar(TooltipText), ConvertTopgchar(TooltipPrivate), ConvertToGtkWidget(Icon), 
-              gtk_signal_func(@SignalProc), ConvertSignalData(TFPgtkSignalFunction(callback), data, true), position),
-      TFPgtkButton);
-end;
-
-function TFPgtkToolbar.AppendItem (Text:string; TooltipText:string; TooltipPrivate:string; Icon:TFPgtkWidget; CallBack:TFPgtkSignalFunction; data:pointer) : TFPgtkWidget; Overload;
-begin
-  result := GetPascalInstance (
-      gtk_toolbar_append_item (TheGtkObject, ConvertTopgchar(Text), ConvertTopgchar(TooltipText), ConvertTopgchar(TooltipPrivate), 
-              ConvertToGtkWidget(Icon), gtk_signal_func(@SignalProc), ConvertSignalData(TFPgtkSignalFunction(callback), data, true)),
-      TFPgtkButton);
-end;
-
-function TFPgtkToolbar.PrependItem (Text:string; TooltipText:string; TooltipPrivate:string; Icon:TFPgtkWidget; CallBack:TFPgtkSignalFunction; data:pointer) : TFPgtkWidget; Overload;
-begin
-  result := GetPascalInstance (
-      gtk_toolbar_prepend_item (TheGtkObject, Converttopgchar(Text), Converttopgchar(TooltipText), 
-              Converttopgchar(TooltipPrivate), ConvertToGtkWidget(Icon), gtk_signal_func(@SignalProc), 
-              ConvertSignalData(TFPgtkSignalFunction(callback), data, true)), 
-      TFPgtkButton);
-end;
-
-function TFPgtkToolbar.InsertItem (Text:string; TooltipText:string; TooltipPrivate:string; Icon:array of string; CallBack:TFPgtkSignalFunction; data:pointer; position:integer) : TFPgtkWidget; Overload;
-var pm : TFPgtkPixmap;
-begin
-  if low(icon) < high(icon) then
-    begin
-    pm := TFPgtkPixmap.Create;
-    pm.loadFromArray (icon);
-    end
-  else
-    pm := nil;
-  result := GetPascalInstance (
-      gtk_toolbar_insert_item (TheGtkObject, ConvertTopgchar(Text), ConvertTopgchar(TooltipText), ConvertTopgchar(TooltipPrivate), ConvertToGtkWidget(pm), 
-              gtk_signal_func(@SignalProc), ConvertSignalData(TFPgtkSignalFunction(callback), data, true), position),
-      TFPgtkButton);
-end;
-
-function TFPgtkToolbar.AppendItem (Text:string; TooltipText:string; TooltipPrivate:string; Icon:array of string; CallBack:TFPgtkSignalFunction; data:pointer) : TFPgtkWidget; Overload;
-var pm : TFPgtkPixmap;
-begin
-  if low(icon) < high(icon) then
-    begin
-    pm := TFPgtkPixmap.Create;
-    pm.loadFromArray (icon);
-    end
-  else
-    pm := nil;
-  result := GetPascalInstance (
-      gtk_toolbar_append_item (TheGtkObject, ConvertTopgchar(Text), ConvertTopgchar(TooltipText), ConvertTopgchar(TooltipPrivate), 
-              ConvertToGtkWidget(pm), gtk_signal_func(@SignalProc), ConvertSignalData(TFPgtkSignalFunction(callback), data, true)),
-      TFPgtkButton);
-end;
-
-function TFPgtkToolbar.PrependItem (Text:string; TooltipText:string; TooltipPrivate:string; Icon:array of string; CallBack:TFPgtkSignalFunction; data:pointer) : TFPgtkWidget; Overload;
-var pm : TFPgtkPixmap;
-begin
-  if low(icon) < high(icon) then
-    begin
-    pm := TFPgtkPixmap.Create;
-    pm.loadFromArray (icon);
-    end
-  else
-    pm := nil;
-  result := GetPascalInstance (
-      gtk_toolbar_prepend_item (TheGtkObject, Converttopgchar(Text), Converttopgchar(TooltipText), 
-              Converttopgchar(TooltipPrivate), ConvertToGtkWidget(pm), gtk_signal_func(@SignalProc), 
-              ConvertSignalData(TFPgtkSignalFunction(callback), data, true)), 
-      TFPgtkButton);
-end;
-
-procedure TFPgtkToolbar.InsertSpace (position:integer);
-begin
-  gtk_toolbar_insert_space (TheGtkObject, position);
-end;
-
-procedure TFPgtkToolbar.AppendSpace;
-begin
-  gtk_toolbar_append_space (TheGtkObject);
-end;
-
-procedure TFPgtkToolbar.PrependSpace;
-begin
-  gtk_toolbar_prepend_space (TheGtkObject);
-end;
-
- { TFPgtkTree }
-
-function TFPgtkTree.TheGtkObject : PGtkTree;
-begin
-  result := PgtkTree(FGtkObject);
-end;
-
-procedure TFPgtkTree.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_tree_new);
-end;
-
-
-function TFPgtkTree.ConnectSelectionChanged (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnect (sgSelectionChanged, proc, data);
-end;
-
-function TFPgtkTree.ConnectAfterSelectionChanged (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnectAfter (sgSelectionChanged, proc, data);
-end;
-
-function TFPgtkTree.ConnectSelectChild (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-begin
-  result := WidgetSignalConnect (sgSelectChild, proc, data);
-end;
-
-function TFPgtkTree.ConnectAfterSelectChild (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-begin
-  result := WidgetSignalConnectAfter (sgSelectChild, proc, data);
-end;
-
-function TFPgtkTree.ConnectUnselectChild (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-begin
-  result := WidgetSignalConnect (sgUnselectChild, proc, data);
-end;
-
-function TFPgtkTree.ConnectAfterUnselectChild (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
-begin
-  result := WidgetSignalConnectAfter (sgUnselectChild, proc, data);
-end;
-
-function TFPgtkTree.GetSelectionMode : TGtkSelectionMode;
-begin
-  result := gtk.selection_mode(TheGtkObject^);
-end;
-
-procedure TFPgtkTree.SetSelectionMode (TheValue:TGtkSelectionMode);
-begin
-  gtk_tree_set_selection_mode(TheGtkObject,TheValue);
-end;
-
-function TFPgtkTree.GetViewLines : boolean;
-begin
-  result := boolean(gtk.view_line(TheGtkObject^));
-end;
-
-procedure TFPgtkTree.SetViewLines (TheValue:boolean);
-begin
-  gtk_tree_set_view_lines(TheGtkObject,guint(TheValue));
-end;
-
-function TFPgtkTree.GetViewMode : TGtkTreeViewMode;
-begin
-  result := gtk.view_mode(TheGtkObject^);
-end;
-
-procedure TFPgtkTree.SetViewMode (TheValue:TGtkTreeViewMode);
-begin
-  gtk_tree_set_view_mode(TheGtkObject,TheValue);
-end;
-
-procedure TFPgtkTree.Append (TreeItem:TFPgtkWidget);
-begin
-  gtk_tree_append (TheGtkObject, PGtkwidget(ConvertToGtkObject(TreeItem)));
-  TreeItem.Show;
-end;
-
-procedure TFPgtkTree.Prepend (TreeItem:TFPgtkWidget);
-begin
-  gtk_tree_prepend (TheGtkObject, PGtkwidget(ConvertToGtkObject(TreeItem)));
-  TreeItem.Show;
-end;
-
-procedure TFPgtkTree.Insert (TreeItem:TFPgtkWidget; position:integer);
-begin
-  gtk_tree_insert (TheGtkObject, PGtkwidget(ConvertToGtkObject(TreeItem)),position);
-  TreeItem.show;
-end;
-
-procedure TFPgtkTree.Remove (TreeItem:TFPgtkWidget);
-var l : PGList;
-begin
-{$ifndef win32}
-  gtk_tree_remove_item (TheGtkObject, ConvertToGtkWidget(TreeItem));
-{$else}
-  l := null;
-  l := g_list_append (l, ConvertToGtkWidget(TreeItem));
-  gtk_tree_remove_items (TheGtkObject, l);
-  g_list_free (l);
-{$endif}
-end;
-
-procedure TFPgtkTree.ClearItems (StartPos:integer; EndPos:integer);
-begin
-  gtk_tree_clear_items (TheGtkObject, StartPos, EndPos);
-end;
-
-procedure TFPgtkTree.SelectItem (Item:integer);
-begin
-  gtk_tree_select_item (TheGtkObject, Item);
-end;
-
-procedure TFPgtkTree.UnselectItem (Item:integer);
-begin
-  gtk_tree_unselect_item (TheGtkObject, Item);
-end;
-
-procedure TFPgtkTree.SelectChild (TreeItem:TFPgtkWidget);
-begin
-  gtk_tree_select_child (TheGtkObject, PGtkwidget(ConvertToGtkObject(TreeItem)));
-end;
-
-procedure TFPgtkTree.UnselectChild (TreeItem:TFPgtkWidget);
-begin
-  gtk_tree_unselect_child (TheGtkObject, PGtkwidget(ConvertToGtkObject(TreeItem)));
-end;
-
-function TFPgtkTree.ChildPosition (TreeItem:TFPgtkWidget) : integer;
-begin
-  result := gtk_tree_child_position (TheGtkObject, PGtkwidget(ConvertToGtkObject(TreeItem)));
-end;
-
-function TFPgtkTree.RootTree : TFPgtkTree;
-begin
-  result := GetPascalInstance(PGtkObject(GTK_TREE_ROOT_TREE(TheGtkObject))) as TFPgtkTree;
-end;
-
-function TFPgtkTree.IsRootTree : boolean;
-begin
-  result := GTK_IS_ROOT_TREE (TheGtkObject);
-end;
-
-procedure TFPgtkTree.GetSelection (aGroup:TFPgtkGroup);
-begin
-  aGroup.ManageLists := false;
-  aGroup.GtkList := Gtk_Tree_selection (TheGtkObject);
-end;
-
-function TFPgtkTree.Level : integer;
-begin
-  result := TheGtkObject^.level;
-end;
-
- { TFPgtkCalendar }
-
-function TFPgtkCalendar.TheGtkObject : PGtkCalendar;
-begin
-  result := PgtkCalendar(FGtkObject);
-end;
-
-procedure TFPgtkCalendar.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_calendar_new);
-end;
-
-
-function TFPgtkCalendar.SelectMonth (aMonth:guint; aYear:guint) : integer;
-begin
-  result := gtk_calendar_select_month (TheGtkObject, aMonth-1, aYear);
-end;
-
-procedure TFPgtkCalendar.SelectDay (aDay:guint);
-begin
-  gtk_calendar_select_day (TheGtkObject, aDay);
-end;
-
-function TFPgtkCalendar.MarkDay (aDay:guint) : integer;
-begin
-  result := gtk_calendar_mark_day (TheGtkObject, aDay);
-end;
-
-function TFPgtkCalendar.UnmarkDay (aDay:guint) : integer;
-begin
-  result := gtk_calendar_unmark_day (TheGtkObject, aDay);
-end;
-
-procedure TFPgtkCalendar.ClearMarks;
-begin
-  gtk_calendar_clear_marks (TheGtkObject);
-end;
-
-function TFPgtkCalendar.GetDisplayOptions : TGtkCalendarDisplayOptions;
-begin
-  result := TheGtkObject^.display_flags;
-end;
-
-procedure TFPgtkCalendar.SetDisplayOptions (TheValue:TGtkCalendarDisplayOptions);
-begin
-  gtk_calendar_display_options(TheGtkObject,TheValue);
-end;
-
-function TFPgtkCalendar.GetDate : TDatetime;
-var y, m, d : guint;
-begin
-  gtk_calendar_get_date (TheGtkObject, @y, @m, @d);
-  result := encodedate (y,m+1,d);
-end;
-
-procedure TFPgtkCalendar.SetDate (TheValue:TDatetime);
-var y,m,d : word;
-begin
-  decodedate (TheValue, y,m,d);
-  SelectMonth(m,y);
-  SelectDay(d);
-end;
-
-procedure TFPgtkCalendar.Freeze;
-begin
-  gtk_calendar_freeze (TheGtkObject);
-end;
-
-procedure TFPgtkCalendar.Thaw;
-begin
-  gtk_calendar_thaw (TheGtkObject);
-end;
-
-function TFPgtkCalendar.ConnectMonthChanged (proc:TFPgtksignalFunction; data:pointer) : guint;
-begin
-  result := signalConnect (sgMonthChanged, proc, data);
-end;
-
-function TFPgtkCalendar.ConnectAfterMonthChanged (proc:TFPgtksignalFunction; data:pointer) : guint;
-begin
-  result := signalConnectAfter (sgMonthChanged, proc, data);
-end;
-
-function TFPgtkCalendar.ConnectDaySelected (proc:TFPgtksignalFunction; data:pointer) : guint;
-begin
-  result := signalConnect (sgDaySelected, proc, data);
-end;
-
-function TFPgtkCalendar.ConnectAfterDaySelected (proc:TFPgtksignalFunction; data:pointer) : guint;
-begin
-  result := signalConnectAfter (sgDaySelected, proc, data);
-end;
-
-function TFPgtkCalendar.ConnectDaySelectedDoubleClick (proc:TFPgtksignalFunction; data:pointer) : guint;
-begin
-  result := signalConnect (sgDaySelectedDoubleClick, proc, data);
-end;
-
-function TFPgtkCalendar.ConnectAfterDaySelectedDoubleClick (proc:TFPgtksignalFunction; data:pointer) : guint;
-begin
-  result := signalConnectAfter (sgDaySelectedDoubleClick, proc, data);
-end;
-
-function TFPgtkCalendar.ConnectPrevMonth (proc:TFPgtksignalFunction; data:pointer) : guint;
-begin
-  result := signalConnect (sgPrevMonth, proc, data);
-end;
-
-function TFPgtkCalendar.ConnectAfterPrevMonth (proc:TFPgtksignalFunction; data:pointer) : guint;
-begin
-  result := signalConnectAfter (sgPrevMonth, proc, data);
-end;
-
-function TFPgtkCalendar.ConnectNextMonth (proc:TFPgtksignalFunction; data:pointer) : guint;
-begin
-  result := signalConnect (sgNextMonth, proc, data);
-end;
-
-function TFPgtkCalendar.ConnectAfterNextMonth (proc:TFPgtksignalFunction; data:pointer) : guint;
-begin
-  result := signalConnectAfter (sgNextMonth, proc, data);
-end;
-
-function TFPgtkCalendar.ConnectPrevYear (proc:TFPgtksignalFunction; data:pointer) : guint;
-begin
-  result := signalConnect (sgPrevYear, proc, data);
-end;
-
-function TFPgtkCalendar.ConnectAfterPrevYear (proc:TFPgtksignalFunction; data:pointer) : guint;
-begin
-  result := signalConnectAfter (sgPrevYear, proc, data);
-end;
-
-function TFPgtkCalendar.ConnectNextYear (proc:TFPgtksignalFunction; data:pointer) : guint;
-begin
-  result := signalConnect (sgNextYear, proc, data);
-end;
-
-function TFPgtkCalendar.ConnectAfterNextYear (proc:TFPgtksignalFunction; data:pointer) : guint;
-begin
-  result := signalConnectAfter (sgNextYear, proc, data);
-end;
-
- { TFPgtkDrawingArea }
-
-function TFPgtkDrawingArea.TheGtkObject : PGtkDrawingArea;
-begin
-  result := PgtkDrawingArea(FGtkObject);
-end;
-
-procedure TFPgtkDrawingArea.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_drawing_area_new);
-end;
-
-
-procedure TFPgtkDrawingArea.SetSize (Width:integer; Height:integer);
-begin
-  gtk_drawing_area_Size (TheGtkObject, Width, Height);
-end;
-
- { TFPgtkCurve }
-
-function TFPgtkCurve.TheGtkObject : PGtkCurve;
-begin
-  result := PgtkCurve(FGtkObject);
-end;
-
-procedure TFPgtkCurve.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_curve_new);
-end;
-
-
-procedure TFPgtkCurve.SetRange (MinX:float; MaxX:float; MinY:float; MaxY:float);
-begin
-  gtk_curve_set_range (TheGtkObject, MinX, MaxX, MinY, MaxY);
-end;
-
-procedure TFPgtkCurve.Reset;
-begin
-  gtk_curve_reset (TheGtkObject);
-end;
-
-procedure TFPgtkCurve.SetGamma (GammaValue:float);
-begin
-  gtk_curve_set_gamma (TheGtkObject, GammaValue);
-end;
-
-function TFPgtkCurve.GetCurveType : TGtkCurveType;
-begin
-  result := TheGtkObject^.curve_type;
-end;
-
-procedure TFPgtkCurve.SetCurveType (TheValue:TGtkCurveType);
-begin
-  gtk_curve_set_curve_type(TheGtkObject,TheValue);
-end;
-
- { TFPgtkEditable }
-
-function TFPgtkEditable.TheGtkObject : PGtkEditable;
-begin
-  result := PgtkEditable(FGtkObject);
-end;
-
-
-function TFPgtkEditable.GetHasSelection : boolean;
-begin
-  result := SelectionStart <> SelectionEnd;
-end;
-
-function TFPgtkEditable.GetEditable : boolean;
-begin
-  result := boolean(gtk.editable(TheGtkObject^));
-end;
-
-procedure TFPgtkEditable.SetEditable (TheValue:boolean);
-begin
-  gtk_Editable_set_editable(TheGtkObject,TheValue);
-end;
-
-function TFPgtkEditable.GetVisible : boolean;
-begin
-  result := boolean(gtk.visible(TheGtkObject^));
-end;
-
-procedure TFPgtkEditable.SetVisible (TheValue:boolean);
-begin
-  gtk.Set_visible(TheGtkObject^,guint(TheValue))
-end;
-
-function TFPgtkEditable.GetPosition : integer;
-begin
-  result := gtk_Editable_get_position(TheGtkObject);
-end;
-
-procedure TFPgtkEditable.SetPosition (TheValue:integer);
-begin
-  gtk_Editable_set_position(TheGtkObject,TheValue);
-end;
-
-function TFPgtkEditable.GetSelectionStart : integer;
-begin
-  result := TheGtkObject^.selection_start_pos;
-end;
-
-procedure TFPgtkEditable.SetSelectionStart (TheValue:integer);
-begin
-  gtk_editable_select_region (TheGtkObject, TheValue, SelectionEnd);
-end;
-
-function TFPgtkEditable.GetSelectionEnd : integer;
-begin
-  result := TheGtkObject^.Selection_end_pos;
-end;
-
-procedure TFPgtkEditable.SetSelectionEnd (TheValue:integer);
-begin
-  gtk_editable_select_region (TheGtkObject, SelectionStart, TheValue);
-end;
-
-procedure TFPgtkEditable.SetSelection (TheValue:string);
-var b : integer;
-begin
-  if HasSelection then
-    begin
-    b := SelectionStart;
-    deleteText (SelectionStart, SelectionEnd);
-    end
-  else
-    b := position;
-  InsertText (TheValue, b);
-  Position := b + length(TheValue);
-  SelectRegion (b, position);
-end;  
-
-function TFPgtkEditable.GetSelection : string;
-var c : pgchar;
-begin
-  c := gtk_editable_get_chars (TheGtkObject, SelectionStart, SelectionEnd);
-  result := string (c);
-  g_free (c);
-end;
-
-function TFPgtkEditable.GetText : string;
-var c : pgchar;
-begin
-  c := gtk_editable_get_chars (TheGtkObject, 0, -1);
-  result := string (c);
-  g_free (c);
-end;
-
-procedure TFPgtkEditable.Changed;
-begin
-  gtk_Editable_Changed (TheGtkObject);
-end;
-
-procedure TFPgtkEditable.InsertText (NewText:string; AtPosition:integer);
-var p : integer;
-begin
-  p := AtPosition;
-  gtk_editable_insert_text (TheGtkObject, pgchar(NewText), length(NewText), @p);
-end;
-
-procedure TFPgtkEditable.DeleteText (StartPos:integer; EndPos:integer);
-begin
-  gtk_Editable_Delete_Text (TheGtkObject, StartPos, EndPos);
-end;
-
-procedure TFPgtkEditable.GetChars (StartPos:integer; EndPos:integer);
-begin
-  gtk_Editable_get_chars (TheGtkObject, StartPos, EndPos);
-end;
-
-procedure TFPgtkEditable.CutClipboard;
-begin
-  gtk_Editable_cut_clipboard (TheGtkObject);
-end;
-
-procedure TFPgtkEditable.CopyClipboard;
-begin
-  gtk_Editable_copy_clipboard (TheGtkObject);
-end;
-
-procedure TFPgtkEditable.PasteClipboard;
-begin
-  gtk_Editable_paste_clipboard (TheGtkObject);
-end;
-
-procedure TFPgtkEditable.SelectRegion (StartPos:integer; EndPos:integer);
-begin
-  gtk_Editable_select_region (TheGtkObject, StartPos, EndPos);
-end;
-
-procedure TFPgtkEditable.ClaimSelection (claim:boolean; time:guint32);
-begin
-  gtk_Editable_claim_selection (TheGtkObject, claim, time);
-end;
-
-procedure TFPgtkEditable.DeleteSelection;
-begin
-  gtk_Editable_delete_selection (TheGtkObject);
-end;
-
-procedure TFPgtkEditable.Clear;
-begin
-  DeleteText (0,-1);
-end;
-
-procedure InsertSignalproc (Sender:PGtkobject; NewText:pgChar; TextLength:integer; var Position:integer; data:pointer); cdecl;
-var p : TFPgtkInsertSignalFunction;
-begin
-with PSignalData(data)^ do
-  begin
-  p := TFPgtkInsertSignalFunction (TheSignalProc);
-  p (TheWidget as TFPgtkObject, NewText, TextLength, Position, TheData)
-  end;
-end;
-
-function TFPgtkEditable.InsertSignalConnect (signal:string; proc:TFPgtkInsertSignalFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@InsertSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkEditable.InsertSignalConnectAfter (signal:string; proc:TFPgtkInsertSignalFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@InsertSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-procedure DeleteSignalproc (Sender:PGtkobject; StartPos:integer; EndPos:integer; data:pointer); cdecl;
-var p : TFPgtkDeleteSignalFunction;
-begin
-with PSignalData(data)^ do
-  begin
-  p := TFPgtkDeleteSignalFunction (TheSignalProc);
-  p (TheWidget as TFPgtkObject, StartPos, EndPos, TheData)
-  end;
-end;
-
-function TFPgtkEditable.DeleteSignalConnect (signal:string; proc:TFPgtkDeleteSignalFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@DeleteSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkEditable.DeleteSignalConnectAfter (signal:string; proc:TFPgtkDeleteSignalFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@DeleteSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-procedure XYSignalproc (Sender:PGtkobject; x:integer; y:integer; data:pointer); cdecl;
-var p : TFPgtkXYSignalFunction;
-begin
-with PSignalData(data)^ do
-  begin
-  p := TFPgtkXYSignalFunction (TheSignalProc);
-  p (TheWidget as TFPgtkObject, x, y, TheData)
-  end;
-end;
-
-function TFPgtkEditable.XYSignalConnect (signal:string; proc:TFPgtkXYSignalFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@XYSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkEditable.XYSignalConnectAfter (signal:string; proc:TFPgtkXYSignalFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@XYSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-procedure DirectionSignalproc (Sender:PGtkobject; Direction:integer; data:pointer); cdecl;
-var p : TFPgtkDirectionSignalFunction;
-begin
-with PSignalData(data)^ do
-  begin
-  p := TFPgtkDirectionSignalFunction (TheSignalProc);
-  p (TheWidget as TFPgtkObject, Direction, TheData)
-  end;
-end;
-
-function TFPgtkEditable.DirectionSignalConnect (signal:string; proc:TFPgtkDirectionSignalFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@DirectionSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkEditable.DirectionSignalConnectAfter (signal:string; proc:TFPgtkDirectionSignalFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@DirectionSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-procedure MoveWordSignalproc (Sender:PGtkobject; NumWords:integer; data:pointer); cdecl;
-var p : TFPgtkMoveWordSignalFunction;
-begin
-with PSignalData(data)^ do
-  begin
-  p := TFPgtkMoveWordSignalFunction (TheSignalProc);
-  p (TheWidget as TFPgtkObject, NumWords, TheData)
-  end;
-end;
-
-function TFPgtkEditable.MoveWordSignalConnect (signal:string; proc:TFPgtkMoveWordSignalFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@MoveWordSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkEditable.MoveWordSignalConnectAfter (signal:string; proc:TFPgtkMoveWordSignalFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@MoveWordSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-procedure MovetoSignalproc (Sender:PGtkobject; MoveTo:integer; data:pointer); cdecl;
-var p : TFPgtkMovetoSignalFunction;
-begin
-with PSignalData(data)^ do
-  begin
-  p := TFPgtkMovetoSignalFunction (TheSignalProc);
-  p (TheWidget as TFPgtkObject, MoveTo, TheData)
-  end;
-end;
-
-function TFPgtkEditable.MovetoSignalConnect (signal:string; proc:TFPgtkMovetoSignalFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@MovetoSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkEditable.MovetoSignalConnectAfter (signal:string; proc:TFPgtkMovetoSignalFunction; data:pointer) : guint;
-begin
-  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@MovetoSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
-end;
-
-function TFPgtkEditable.ConnectChanged (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnect (sgChanged, proc, data);
-end;
-
-function TFPgtkEditable.ConnectAfterChanged (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnectAfter (sgChanged, proc, data);
-end;
-
-function TFPgtkEditable.ConnectActivate (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnect (sgActivate, proc, data);
-end;
-
-function TFPgtkEditable.ConnectAfterActivate (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnectAfter (sgActivate, proc, data);
-end;
-
-function TFPgtkEditable.ConnectInsertText (proc:TFPgtkInsertSignalFunction; data:pointer) : guint;
-begin
-  result := InsertSignalConnect (sgInsertText, proc, data);
-end;
-
-function TFPgtkEditable.ConnectAfterInsertText (proc:TFPgtkInsertSignalFunction; data:pointer) : guint;
-begin
-  result := InsertSignalConnectAfter (sgInsertText, proc, data);
-end;
-
-function TFPgtkEditable.ConnectDeleteText (proc:TFPgtkDeleteSignalFunction; data:pointer) : guint;
-begin
-  result := DeleteSignalConnect (sgDeleteText, proc, data);
-end;
-
-function TFPgtkEditable.ConnectAfterDeleteText (proc:TFPgtkDeleteSignalFunction; data:pointer) : guint;
-begin
-  result := DeleteSignalConnectAfter (sgDeleteText, proc, data);
-end;
-
-function TFPgtkEditable.ConnectSetEditable (proc:TFPgtkBooleanSignalFunction; data:pointer) : guint;
-begin
-  result := BooleanSignalConnect (sgSetEditable, proc, data);
-end;
-
-function TFPgtkEditable.ConnectAfterSetEditable (proc:TFPgtkBooleanSignalFunction; data:pointer) : guint;
-begin
-  result := BooleanSignalConnectAfter (sgSetEditable, proc, data);
-end;
-
-function TFPgtkEditable.ConnectMoveCursor (proc:TFPgtkXYSignalFunction; data:pointer) : guint;
-begin
-  result := XYSignalConnect (sgMoveCursor, proc, data);
-end;
-
-function TFPgtkEditable.ConnectAfterMoveCursor (proc:TFPgtkXYSignalFunction; data:pointer) : guint;
-begin
-  result := XYSignalConnectAfter (sgMoveCursor, proc, data);
-end;
-
-function TFPgtkEditable.ConnectMoveWord (proc:TFPgtkMoveWordSignalFunction; data:pointer) : guint;
-begin
-  result := MoveWordSignalConnect (sgMoveWord, proc, data);
-end;
-
-function TFPgtkEditable.ConnectAfterMoveWord (proc:TFPgtkMoveWordSignalFunction; data:pointer) : guint;
-begin
-  result := MoveWordSignalConnectAfter (sgMoveWord, proc, data);
-end;
-
-function TFPgtkEditable.ConnectMovePage (proc:TFPgtkXYSignalFunction; data:pointer) : guint;
-begin
-  result := XYSignalConnect (sgMovePage, proc, data);
-end;
-
-function TFPgtkEditable.ConnectAfterMovePage (proc:TFPgtkXYSignalFunction; data:pointer) : guint;
-begin
-  result := XYSignalConnectAfter (sgMovePage, proc, data);
-end;
-
-function TFPgtkEditable.ConnectMoveToRow (proc:TFPgtkMoveToSignalFunction; data:pointer) : guint;
-begin
-  result := MoveToSignalConnect (sgMoveToRow, proc, data);
-end;
-
-function TFPgtkEditable.ConnectAfterMoveToRow (proc:TFPgtkMoveToSignalFunction; data:pointer) : guint;
-begin
-  result := MoveToSignalConnectAfter (sgMoveToRow, proc, data);
-end;
-
-function TFPgtkEditable.ConnectMoveToCol (proc:TFPgtkMoveToSignalFunction; data:pointer) : guint;
-begin
-  result := MoveToSignalConnect (sgMoveToCol, proc, data);
-end;
-
-function TFPgtkEditable.ConnectAfterMoveToCol (proc:TFPgtkMoveToSignalFunction; data:pointer) : guint;
-begin
-  result := MoveToSignalConnectAfter (sgMoveToCol, proc, data);
-end;
-
-function TFPgtkEditable.ConnectKillChar (proc:TFPgtkDirectionSignalFunction; data:pointer) : guint;
-begin
-  result := DirectionSignalConnect (sgKillChar, proc, data);
-end;
-
-function TFPgtkEditable.ConnectAfterKillChar (proc:TFPgtkDirectionSignalFunction; data:pointer) : guint;
-begin
-  result := DirectionSignalConnectAfter (sgKillChar, proc, data);
-end;
-
-function TFPgtkEditable.ConnectKillWord (proc:TFPgtkDirectionSignalFunction; data:pointer) : guint;
-begin
-  result := DirectionSignalConnect (sgKillWord, proc, data);
-end;
-
-function TFPgtkEditable.ConnectAfterKillWord (proc:TFPgtkDirectionSignalFunction; data:pointer) : guint;
-begin
-  result := DirectionSignalConnectAfter (sgKillWord, proc, data);
-end;
-
-function TFPgtkEditable.ConnectKillLine (proc:TFPgtkDirectionSignalFunction; data:pointer) : guint;
-begin
-  result := DirectionSignalConnect (sgKillLine, proc, data);
-end;
-
-function TFPgtkEditable.ConnectAfterKillLine (proc:TFPgtkDirectionSignalFunction; data:pointer) : guint;
-begin
-  result := DirectionSignalConnectAfter (sgKillLine, proc, data);
-end;
-
-function TFPgtkEditable.ConnectCutClipboard (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnect (sgCutClipboard, proc, data);
-end;
-
-function TFPgtkEditable.ConnectAfterCutClipboard (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnectAfter (sgCutClipboard, proc, data);
-end;
-
-function TFPgtkEditable.ConnectCopyClipboard (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnect (sgCopyClipboard, proc, data);
-end;
-
-function TFPgtkEditable.ConnectAfterCopyClipboard (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnectAfter (sgCopyClipboard, proc, data);
-end;
-
-function TFPgtkEditable.ConnectPasteClipboard (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnect (sgPasteClipboard, proc, data);
-end;
-
-function TFPgtkEditable.ConnectAfterPasteClipboard (proc:TFPgtkSignalFunction; data:pointer) : guint;
-begin
-  result := SignalConnectAfter (sgPasteClipboard, proc, data);
-end;
-
- { TFPgtkEntry }
-
-function TFPgtkEntry.TheGtkObject : PGtkEntry;
-begin
-  result := PgtkEntry(FGtkObject);
-end;
-
-procedure TFPgtkEntry.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_Entry_new);
-end;
-
-
-procedure TFPgtkEntry.SetText (TheValue:string);
-begin
-  gtk_Entry_set_text (TheGtkObject, Pgchar(TheValue));
-end;
-
-procedure TFPgtkEntry.AppendText (aText:string);
-begin
-  gtk_Entry_append_text (TheGtkObject, ConvertToPgchar(aText));
-end;
-
-procedure TFPgtkEntry.PrependText (aText:string);
-begin
-  gtk_Entry_prepend_text (TheGtkObject, ConvertToPgchar(aText));
-end;
-
-function TFPgtkEntry.GetVisibility : boolean;
-begin
-  result := boolean(gtk.visible(TheGtkObject^));
-end;
-
-procedure TFPgtkEntry.SetVisibility (TheValue:boolean);
-begin
-  gtk_Entry_set_visibility(TheGtkObject,TheValue);
-end;
-
-function TFPgtkEntry.GetMaxLength : word;
-begin
-  result := TheGtkObject^.text_max_length;
-end;
-
-procedure TFPgtkEntry.SetMaxLength (TheValue:word);
-begin
-  gtk_Entry_set_max_length(TheGtkObject,TheValue);
-end;
-
- { TFPgtkSpinButton }
-
-function TFPgtkSpinButton.TheGtkObject : PGtkSpinButton;
-begin
-  result := PgtkSpinButton(FGtkObject);
-end;
-
-procedure TFPgtkSpinButton.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_spin_button_new (TFPgtkAdjustment.Create.TheGtkObject,1,0));
-end;
-
-
-procedure TFPgtkSpinButton.Configure (Adj:TFPgtkAdjustment; aClimbRate:gfloat; aDigits:integer);
-begin
-  if assigned (Adj) then
-    gtk_spin_button_configure (TheGtkObject, PGtkadjustment(Adj.TheGtkObject), aClimbRate, aDigits)
-  else
-    gtk_spin_button_configure (TheGtkObject, nil, aClimbRate, aDigits);
-end;
-
-function TFPgtkSpinButton.GetAdjustment : TFPgtkAdjustment;
-begin
-  result := GetPascalInstance(PGtkObject(gtk_spin_button_get_adjustment(TheGtkObject)),TFPGtkAdjustment) as TFPgtkAdjustment;
-end;
-
-procedure TFPgtkSpinButton.SetAdjustment (TheValue:TFPgtkAdjustment);
-begin
-  gtk_spin_button_set_adjustment(TheGtkObject,PGtkadjustment(ConvertToGtkObject(TheValue)));
-end;
-
-function TFPgtkSpinButton.GetClimbRate : gfloat;
-begin
-  result := TheGtkObject^.climb_rate;
-end;
-
-procedure TFPgtkSpinButton.SetClimbRate (TheValue:gfloat);
-begin
-  TheGtkObject^.climb_rate := TheValue;
-end;
-
-function TFPgtkSpinButton.GetDigits : integer;
-begin
-  result := gtk.digits(TheGtkObject^);
-end;
-
-procedure TFPgtkSpinButton.SetDigits (TheValue:integer);
-begin
-  gtk_spin_button_set_digits(TheGtkObject,TheValue);
-end;
-
-function TFPgtkSpinButton.GetAsInteger : integer;
-begin
-  result := gtk_spin_button_get_value_as_int(TheGtkObject);
-end;
-
-procedure TFPgtkSpinButton.SetAsInteger (TheValue:integer);
-begin
-  gtk_spin_button_set_Value(TheGtkObject,TheValue);
-end;
-
-function TFPgtkSpinButton.GetAsFloat : gfloat;
-begin
-  result := gtk_spin_button_get_value_as_int(TheGtkObject);
-end;
-
-procedure TFPgtkSpinButton.SetAsFloat (TheValue:gfloat);
-begin
-  gtk_spin_button_set_Value(TheGtkObject,TheValue);
-end;
-
-function TFPgtkSpinButton.GetUpdatePolicy : TGtkSpinButtonUpdatePolicy;
-begin
-  result := TheGtkObject^.update_policy;
-end;
-
-procedure TFPgtkSpinButton.SetUpdatePolicy (TheValue:TGtkSpinButtonUpdatePolicy);
-begin
-  gtk_spin_button_set_update_policy(TheGtkObject,TheValue);
-end;
-
-function TFPgtkSpinButton.GetNumeric : boolean;
-begin
-  result := boolean(gtk.numeric(TheGtkObject^));
-end;
-
-procedure TFPgtkSpinButton.SetNumeric (TheValue:boolean);
-begin
-  gtk_spin_button_set_numeric(TheGtkObject,TheValue);
-end;
-
-procedure TFPgtkSpinButton.Spin (direction:TGtkSpinType; increment:gfloat);
-begin
-  gtk_spin_button_spin (TheGtkObject, direction, increment);
-end;
-
-function TFPgtkSpinButton.GetWrap : boolean;
-begin
-  result := boolean(gtk.wrap(TheGtkObject^));
-end;
-
-procedure TFPgtkSpinButton.SetWrap (TheValue:boolean);
-begin
-  gtk_spin_button_set_wrap(TheGtkObject,TheValue);
-end;
-
-function TFPgtkSpinButton.GetShadowType : TGtkShadowType;
-begin
-  result := TheGtkObject^.shadow_type;
-end;
-
-procedure TFPgtkSpinButton.SetShadowType (TheValue:TGtkShadowType);
-begin
-  gtk_spin_button_set_shadow_type(TheGtkObject,TheValue);
-end;
-
-function TFPgtkSpinButton.GetSnapToTicks : boolean;
-begin
-  result := boolean(gtk.snap_to_ticks(TheGtkObject^));
-end;
-
-procedure TFPgtkSpinButton.SetSnapToTicks (TheValue:boolean);
-begin
-  gtk_spin_button_set_snap_to_ticks(TheGtkObject,TheValue);
-end;
-
-procedure TFPgtkSpinButton.Update;
-begin
-  gtk_spin_button_update (TheGtkObject);
-end;
-
- { TFPgtkText }
-
-function TFPgtkText.TheGtkObject : PGtkText;
-begin
-  result := PgtkText(FGtkObject);
-end;
-
-procedure TFPgtkText.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_Text_new (null,null));
-end;
-
-
-constructor TFPgtkText.Create;
-begin
-  inherited create;
-  editable := true;
-  wordwrap := true;
-  linewrap := true;
-  FLines := TStringlist.Create;
-  ConnectChanged (@SigChanged, nil);
-end;
-
-
-destructor TFPgtkText.Destroy;
-begin
-  FLines.Free;
-  inherited;
-end;
-
-
-procedure TFPgtkText.SigChanged (Sender:TFPgtkObject; data:pointer);
-begin
-  FIsChanged := True;
-end;
-
-procedure TFPgtkText.RefreshLines;
-begin
-  if not assigned (FLines) then
-    FLines := TStringlist.Create;
-  FLines.Text := Text;
-end;
-
-function TFPgtkText.GetLines : TStrings;
-begin
-  if FIsChanged then
-    RefreshLines;
-  result := FLines;
-end;
-
-procedure TFPgtkText.Freeze;
-begin
-  gtk_Text_Freeze (TheGtkObject);
-end;
-
-procedure TFPgtkText.Thaw;
-begin
-  gtk_Text_Thaw (TheGtkObject);
-end;
-
-function TFPgtkText.TextLength : guint;
-begin
-  result := gtk_Text_get_length (TheGtkObject);
-end;
-
-procedure TFPgtkText.Insert (font:PgdkFont; fore:PgdkColor; back:PgdkColor; TheText:string);
-begin
-  gtk_text_insert (TheGtkObject, font, fore, back, pgchar(TheText), length(TheText));
-end;
-
-procedure TFPgtkText.DeleteBackward (number:longword);
-begin
-  gtk_Text_Backward_Delete (TheGtkObject, number);
-end;
-
-procedure TFPgtkText.DeleteForward (number:longword);
-begin
-  gtk_Text_Forward_Delete (TheGtkObject, number);
-end;
-
-function TFPgtkText.GetWordWrap : boolean;
-begin
-  result := boolean(gtk.word_wrap(TheGtkObject^));
-end;
-
-procedure TFPgtkText.SetWordWrap (TheValue:boolean);
-begin
-  gtk_text_set_word_wrap (TheGtkObject,gint(TheValue));
-end;
-
-function TFPgtkText.GetLineWrap : boolean;
-begin
-  result := boolean(gtk.Line_Wrap(TheGtkObject^));
-end;
-
-procedure TFPgtkText.SetLineWrap (TheValue:boolean);
-begin
-{$IFDEF win32 or go32v2}
-  Set_Line_Wrap (TheGtkObject^, gint(TheValue));
-{$ELSE}
-  gtk_Text_Set_Line_Wrap (TheGtkObject, gint(TheValue));
-{$ENDIF}
-end;
-
-function TFPgtkText.GetPoint : integer;
-begin
-  result := gtk_Text_get_Point(TheGtkObject);
-end;
-
-procedure TFPgtkText.SetPoint (TheValue:integer);
-begin
-  gtk_Text_set_Point(TheGtkObject,TheValue);
-end;
-
-procedure TFPgtkText.SetAdjustments (hadj:TFPgtkAdjustment; vadj:TFPgtkAdjustment);
-begin
-  gtk_text_set_adjustments (TheGtkObject, hadj.TheGtkObject, vadj.TheGtkObject);
-end;
-
-function TFPgtkText.GetHAdjustment : TFPgtkAdjustment;
-begin
-  result := GetPascalInstance(PGtkObject(TheGtkObject^.hadj),tfpgtkadjustment) as tfpgtkadjustment;
-end;
-
-procedure TFPgtkText.SetHAdjustment (TheValue:TFPgtkAdjustment);
-begin
-  gtk_Text_Set_Adjustments(TheGtkObject, TheValue.TheGtkObject, TheGtkObject^.vadj);
-end;
-
-function TFPgtkText.GetVAdjustment : TFPgtkAdjustment;
-begin
-  result := GetPascalInstance(PGtkObject(TheGtkObject^.vadj),tfpgtkadjustment) as tfpgtkadjustment;
-end;
-
-procedure TFPgtkText.SetVAdjustment (TheValue:TFPgtkAdjustment);
-begin
-  gtk_Text_Set_Adjustments(TheGtkObject, TheGtkObject^.hadj, TheValue.TheGtkObject);
-end;
-
-procedure TFPgtkText.SetText (TheValue:string);
-begin
-  Freeze;
-  {$ifdef gtkwin}
-  TheValue := stringreplace (TheValue, #13#10, #10, [rfReplaceAll]);
-  {$endif}
-  clear;
-  Insert (null, null, null, TheValue);
-  Thaw;
-end;
-
- { TFPgtkRuler }
-
-function TFPgtkRuler.TheGtkObject : PGtkRuler;
-begin
-  result := PgtkRuler(FGtkObject);
-end;
-
-
-procedure TFPgtkRuler.SetMetric (aMetric:TGtkMetricType);
-begin
-  gtk_ruler_set_metric (TheGtkObject, aMetric);
-end;
-
-procedure TFPgtkRuler.SetRange (Lower:float; Upper:float; Position:float; MaxSize:float);
-begin
-  gtk_ruler_set_range (TheGtkObject, Lower, Upper, Position, MaxSize);
-end;
-
- { TFPgtkHRuler }
-
-function TFPgtkHRuler.TheGtkObject : PGtkHRuler;
-begin
-  result := PgtkHRuler(FGtkObject);
-end;
-
-procedure TFPgtkHRuler.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_hruler_new);
-end;
-
-
- { TFPgtkVRuler }
-
-function TFPgtkVRuler.TheGtkObject : PGtkVRuler;
-begin
-  result := PgtkVRuler(FGtkObject);
-end;
-
-procedure TFPgtkVRuler.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_vruler_new);
-end;
-
-
- { TFPgtkRange }
-
-function TFPgtkRange.TheGtkObject : PGtkRange;
-begin
-  result := PgtkRange(FGtkObject);
-end;
-
-
-function TFPgtkRange.GetAdjustment : TFPgtkAdjustment;
-begin
-  result := GetPascalInstance(PGtkObject(gtk_Range_get_Adjustment(TheGtkObject)),tfpgtkadjustment) as tfpgtkadjustment;
-end;
-
-procedure TFPgtkRange.SetAdjustment (TheValue:TFPgtkAdjustment);
-begin
-  gtk_Range_set_adjustment(TheGtkObject,PGtkadjustment(ConvertToGtkObject(TheValue)));
-end;
-
-function TFPgtkRange.GetUpdatePolicy : TgtkUpdateType;
-begin
-  result := gtk.policy(TheGtkObject^);
-end;
-
-procedure TFPgtkRange.SetUpdatePolicy (TheValue:TgtkUpdateType);
-begin
-  gtk_Range_set_update_policy(TheGtkObject,TheValue);
-end;
-
-constructor TFPgtkRange.Create (AnAdjustment:TFPgtkAdjustment);
-begin
-  FAdj := AnAdjustment;
-  inherited create;
-end;
-
-
-procedure TFPgtkRange.DrawBackground;
-begin
-  gtk_Range_draw_background (TheGtkObject);
-end;
-
-procedure TFPgtkRange.DrawTrough;
-begin
-  gtk_Range_draw_trough (TheGtkObject);
-end;
-
-procedure TFPgtkRange.DrawStepForw;
-begin
-  gtk_Range_draw_step_forw (TheGtkObject);
-end;
-
-procedure TFPgtkRange.DrawStepBack;
-begin
-  gtk_Range_draw_step_back (TheGtkObject);
-end;
-
-procedure TFPgtkRange.DrawSlider;
-begin
-  gtk_Range_draw_slider (TheGtkObject);
-end;
-
-procedure TFPgtkRange.SliderUpdate;
-begin
-  gtk_Range_slider_update (TheGtkObject);
-end;
-
-function TFPgtkRange.TroughClick (X:integer; Y:integer; var JumpPerc:gfloat) : integer;
-begin
-  result := gtk_Range_trough_click (TheGtkObject, X, Y, @JumpPerc);
-end;
-
-procedure TFPgtkRange.DefaultHSliderUpdate;
-begin
-  gtk_Range_default_hslider_update (TheGtkObject);
-end;
-
-procedure TFPgtkRange.DefaultVSliderUpdate;
-begin
-  gtk_Range_default_vslider_update (TheGtkObject);
-end;
-
-function TFPgtkRange.DefaultHTroughClick (X:integer; Y:integer; var JumpPerc:gfloat) : integer;
-begin
-  result := gtk_Range_default_htrough_click (TheGtkObject, X, Y, @JumpPerc);
-end;
-
-function TFPgtkRange.DefaultVTroughClick (X:integer; Y:integer; var JumpPerc:gfloat) : integer;
-begin
-  result := gtk_Range_default_vtrough_click (TheGtkObject, X, Y, @JumpPerc);
-end;
-
-procedure TFPgtkRange.defaultHMotion (XDelta:integer; YDelta:integer);
-begin
-  gtk_Range_default_hmotion (TheGtkObject, XDelta, YDelta);
-end;
-
-procedure TFPgtkRange.defaultVMotion (XDelta:integer; YDelta:integer);
-begin
-  gtk_Range_default_vmotion (TheGtkObject, XDelta, YDelta);
-end;
-
-procedure TFPgtkRange.ClearBackground;
-begin
-  gtk_Range_clear_background (TheGtkObject);
-end;
-
- { TFPgtkScale }
-
-function TFPgtkScale.TheGtkObject : PGtkScale;
-begin
-  result := PgtkScale(FGtkObject);
-end;
-
-
-procedure TFPgtkScale.SetDigits (TheValue:integer);
-begin
-  gtk_scale_set_digits (TheGtkObject, TheValue);
-end;
-
-function TFPgtkScale.GetDrawValue : boolean;
-begin
-  result := boolean(gtk.draw_value(TheGtkObject^));
-end;
-
-procedure TFPgtkScale.SetDrawValue (TheValue:boolean);
-begin
-  gtk_scale_set_draw_value(TheGtkObject,TheValue);
-end;
-
-function TFPgtkScale.GetValuePos : TGtkPositionType;
-begin
-  result := gtk.value_pos(TheGtkObject^);
-end;
-
-procedure TFPgtkScale.SetValuePos (TheValue:TGtkPositionType);
-begin
-  gtk_scale_set_value_pos(TheGtkObject,TheValue);
-end;
-
- { TFPgtkHScale }
-
-function TFPgtkHScale.TheGtkObject : PGtkHScale;
-begin
-  result := PgtkHScale(FGtkObject);
-end;
-
-procedure TFPgtkHScale.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_hscale_new (nil));
-end;
-
-
- { TFPgtkVScale }
-
-function TFPgtkVScale.TheGtkObject : PGtkVScale;
-begin
-  result := PgtkVScale(FGtkObject);
-end;
-
-procedure TFPgtkVScale.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_vscale_new (nil));
-end;
-
-
- { TFPgtkScrollbar }
-
-function TFPgtkScrollbar.TheGtkObject : PGtkScrollbar;
-begin
-  result := PgtkScrollbar(FGtkObject);
-end;
-
-
- { TFPgtkHScrollbar }
-
-function TFPgtkHScrollbar.TheGtkObject : PGtkHScrollbar;
-begin
-  result := PgtkHScrollbar(FGtkObject);
-end;
-
-
-procedure TFPgtkHScrollbar.CreateGtkObject;
-var a : PgtkAdjustment;
-begin
-  if assigned (FAdj) then
-    a := FAdj.TheGtkObject
-  else
-    a := null;
-  FGtkObject := PgtkObject (gtk_hscrollbar_new (a));
-  FAdj := nil;
-end;
-
- { TFPgtkVScrollbar }
-
-
-procedure TFPgtkVScrollbar.CreateGtkObject;
-var a : PgtkAdjustment;
-begin
-  if assigned (FAdj) then
-    a := FAdj.TheGtkObject
-  else
-    a := null;
-  FGtkObject := PgtkObject (gtk_vscrollbar_new (a));
-  FAdj := nil;
-end;
-
- { TFPgtkSeparator }
-
-function TFPgtkSeparator.TheGtkObject : PGtkSeparator;
-begin
-  result := PgtkSeparator(FGtkObject);
-end;
-
-
- { TFPgtkHSeparator }
-
-function TFPgtkHSeparator.TheGtkObject : PGtkHSeparator;
-begin
-  result := PgtkHSeparator(FGtkObject);
-end;
-
-procedure TFPgtkHSeparator.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_HSeparator_new);
-end;
-
-
- { TFPgtkVSeparator }
-
-function TFPgtkVSeparator.TheGtkObject : PGtkVSeparator;
-begin
-  result := PgtkVSeparator(FGtkObject);
-end;
-
-procedure TFPgtkVSeparator.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_VSeparator_new);
-end;
-
-
- { TFPgtkPreview }
-
-function TFPgtkPreview.TheGtkObject : PGtkPreview;
-begin
-  result := PgtkPreview(FGtkObject);
-end;
-
-procedure TFPgtkPreview.CreateGtkObject;
-begin
-  FGtkObject := PGtkObject(gtk_preview_new (GTK_PREVIEW_COLOR));
-end;
-
-
-procedure TFPgtkPreview.Size (aWidth:integer; aHeight:integer);
-begin
-  gtk_preview_size (TheGtkObject, aWidth, aHeight);
-end;
-
-procedure TFPgtkPreview.Put (aWindow:PGdkWindow; gc:PGdkGC; SrcX:integer; SrcY:integer; destX:integer; DestY:integer; aWidth:integer; aHeight:integer);
-begin
-  gtk_preview_put (TheGtkObject, aWindow, gc, SrcX, SrcY, destX, DestY, aWidth, aHeight);
-end;
-
-procedure TFPgtkPreview.DrawRow (data:pguchar; X:integer; Y:integer; W:integer);
-begin
-  gtk_preview_draw_row (TheGtkObject, data, X, Y, W);
-end;
-
-procedure SetGamma (aGamma:double);
-begin
-  gtk_preview_set_gamma (aGamma);
-end;
-
-
-function TFPgtkPreview.GetExpand : longbool;
-begin
-  result := longbool(gtk.expand(TheGtkObject^));
-end;
-
-procedure TFPgtkPreview.SetExpand (TheValue:longbool);
-begin
-  gtk_preview_set_expand(TheGtkObject,gint(TheValue));
-end;
-
-function TFPgtkPreview.GetDither : TGdkRgbDither;
-begin
-  result := TheGtkObject^.dither;
-end;
-
-procedure TFPgtkPreview.SetDither (TheValue:TGdkRgbDither);
-begin
-  gtk_preview_set_dither(TheGtkObject,TheValue);
-end;
-
- { TFPgtkProgress }
-
-function TFPgtkProgress.TheGtkObject : PGtkProgress;
-begin
-  result := PgtkProgress(FGtkObject);
-end;
-
-
-function TFPgtkProgress.GetShowtext : longbool;
-begin
-  result := longbool(gtk.show_text(TheGtkObject^));
-end;
-
-procedure TFPgtkProgress.SetShowtext (TheValue:longbool);
-begin
-  gtk_progress_set_show_text(TheGtkObject,gint(TheValue));
-end;
-
-function TFPgtkProgress.GetTextXAlign : gfloat;
-begin
-  result := TheGtkObject^.x_align;
-end;
-
-procedure TFPgtkProgress.SetTextXAlign (TheValue:gfloat);
-begin
-  gtk_progress_set_text_alignment (TheGtkObject, TheValue, TextYAlign);
-end;
-
-function TFPgtkProgress.GetTextYAlign : gfloat;
-begin
-  result := TheGtkObject^.y_align;
-end;
-
-procedure TFPgtkProgress.SetTextYAlign (TheValue:gfloat);
-begin
-  gtk_progress_set_text_alignment (TheGtkObject, TextXAlign, TheValue);
-end;
-
-procedure TFPgtkProgress.SetTextAlignment (anXalign:gfloat; anYAlign:gfloat);
-begin
-  gtk_progress_set_text_alignment (TheGtkObject, anXalign, anYAlign);
-end;
-
-function TFPgtkProgress.GetCurrentValue : float;
-begin
-  result := gtk_progress_get_Value(TheGtkObject);
-end;
-
-procedure TFPgtkProgress.SetCurrentValue (TheValue:float);
-begin
-  gtk_progress_Set_value (TheGtkObject, TheValue);
-  Draw (nil);
-end;
-
-function TFPgtkProgress.GetPercentage : float;
-begin
-  result := gtk_progress_get_current_percentage(TheGtkObject);
-end;
-
-procedure TFPgtkProgress.SetPercentage (TheValue:float);
-begin
-  gtk_progress_set_percentage(TheGtkObject,TheValue);
-end;
-
-function TFPgtkProgress.PercentageFromValue (aValue:gfloat) : gfloat;
-begin
-  result := gtk_progress_get_percentage_from_value (TheGtkObject, aValue);
-end;
-
-function TFPgtkProgress.GetFormatString : string;
-begin
-  result := TheGtkObject^.format;
-end;
-
-procedure TFPgtkProgress.SetFormatString (TheValue:string);
-begin
-  gtk_progress_set_format_string(TheGtkObject,ConvertToPgchar(TheValue));
-end;
-
-function TFPgtkProgress.GetAdjustment : TFPgtkAdjustment;
-begin
-  result := GetPascalInstance (PGtkObject(TheGtkObject^.adjustment), TFPgtkAdjustment) as TFPgtkAdjustment;
-end;
-
-procedure TFPgtkProgress.SetAdjustment (TheValue:TFPgtkAdjustment);
-begin
-  gtk_progress_set_adjustment(TheGtkObject,PGtkadjustment(ConvertToGtkObject(TheValue)));
-end;
-
-function TFPgtkProgress.GetActivityMode : longbool;
-begin
-  result := longbool(gtk.activity_mode(TheGtkObject^));
-end;
-
-procedure TFPgtkProgress.SetActivityMode (TheValue:longbool);
-begin
-  gtk_progress_set_activity_mode(TheGtkObject,gint(TheValue));
-end;
-
-function TFPgtkProgress.CurrentText : string;
-begin
-  result := gtk_progress_get_current_text (TheGtkObject);
-end;
-
-function TFPgtkProgress.TextFromValue (aValue:gfloat) : string;
-begin
-  result := gtk_progress_get_text_from_value (TheGtkObject, aValue);
-end;
-
-procedure TFPgtkProgress.Configure (aValue:gfloat; aMin:gfloat; aMax:gfloat);
-begin
-  gtk_progress_configure (TheGtkObject, aValue, aMin, aMax);
-end;
-
- { TFPgtkProgressBar }
-
-function TFPgtkProgressBar.TheGtkObject : PGtkProgressBar;
-begin
-  result := PgtkProgressBar(FGtkObject);
-end;
-
-
-constructor TFPgtkProgressBar.Create (adj:TFPgtkAdjustment);
-begin
-  FAdj := adj;
-  inherited create;
-end;
-
-
-procedure TFPgtkProgressBar.CreateGtkObject;
-begin
-  if assigned (FAdj) then
-    TheGtkWidget := gtk_progress_bar_new_with_adjustment (FAdj.TheGtkObject)
-  else
-    TheGtkWidget := gtk_progress_bar_new;
-end;
-
-function TFPgtkProgressBar.GetBarStyle : TGtkProgressBarStyle;
-begin
-  result := TheGtkObject^.bar_style;
-end;
-
-procedure TFPgtkProgressBar.SetBarStyle (TheValue:TGtkProgressBarStyle);
-begin
-  gtk_progress_bar_set_bar_style(TheGtkObject,TheValue);
-end;
-
-function TFPgtkProgressBar.GetDiscreteBlocks : longword;
-begin
-  result := TheGtkObject^.blocks;
-end;
-
-procedure TFPgtkProgressBar.SetDiscreteBlocks (TheValue:longword);
-begin
-  gtk_progress_bar_set_discrete_blocks(TheGtkObject,TheValue);
-end;
-
-function TFPgtkProgressBar.GetActivityStep : longword;
-begin
-  result := TheGtkObject^.activity_step;
-end;
-
-procedure TFPgtkProgressBar.SetActivityStep (TheValue:longword);
-begin
-  gtk_progress_bar_set_activity_step(TheGtkObject,TheValue);
-end;
-
-function TFPgtkProgressBar.GetActivityBlocks : longword;
-begin
-  result := TheGtkObject^.activity_blocks;
-end;
-
-procedure TFPgtkProgressBar.SetActivityBlocks (TheValue:longword);
-begin
-  gtk_progress_bar_set_activity_blocks(TheGtkObject,TheValue);
-end;
-
-function TFPgtkProgressBar.GetOrientation : TGtkProgressBarOrientation;
-begin
-  result := TheGtkObject^.orientation;
-end;
-
-procedure TFPgtkProgressBar.SetOrientation (TheValue:TGtkProgressBarOrientation);
-begin
-  gtk_progress_bar_set_orientation(TheGtkObject,TheValue);
-end;
-
- { TFPgtkItemFactory }
-
-
-INITIALIZATION
-ObjectsToFree := TList.Create;
-
-FINALIZATION
-ObjectsToFree.Free;
-if assigned (TheTooltips) then
-  TheTooltips.Free;
-
-End.
+{$mode objfpc}{$h+} {$ifdef win32}{$define gtkwin}{$endif}
+UNIT FPgtk;
+
+// Generated with GtkWrite by Luk Vandelaer (version 1.08)
+
+INTERFACE
+
+USES classes, sysutils, gtk, gdk, glib, FPglib;
+
+TYPE
+
+  TFPgtkObject = class;
+  TFPgtkData = class;
+  TFPgtkAdjustment = class;
+  TFPgtkToolTips = class;
+  TFPgtkWidget = class;
+  TFPgtkGroup = class;
+  TFPgtkWidgetGroup = class;
+  TFPgtkMisc = class;
+  TFPgtkLabel = class;
+  TFPgtkAccelLabel = class;
+  TFPgtkTipsQuery = class;
+  TFPgtkArrow = class;
+  TFPgtkImage = class;
+  TFPgtkPixmap = class;
+  TFPgtkContainer = class;
+  TFPgtkBin = class;
+  TFPgtkAlignment = class;
+  TFPgtkFrame = class;
+  TFPgtkAspectFrame = class;
+  TFPgtkButton = class;
+  TFPgtkToggleButton = class;
+  TFPgtkCheckButton = class;
+  TFPgtkRadioButton = class;
+  TFPgtkRadioButtonGroup = class;
+  TFPgtkOptionMenu = class;
+  TFPgtkItem = class;
+  TFPgtkItemGroup = class;
+  TFPgtkMenuItem = class;
+  TFPgtkCheckMenuItem = class;
+  TFPgtkRadioMenuItem = class;
+  TFPgtkRadioMenuGroup = class;
+  TFPgtkTearOffMenuItem = class;
+  TFPgtkListItem = class;
+  TFPgtkListItemGroup = class;
+  TFPgtkTreeItem = class;
+  TFPgtkWindow = class;
+  TFPgtkColorSelectionDialog = class;
+  TFPgtkDialog = class;
+  TFPgtkInputDialog = class;
+  TFPgtkFileSelection = class;
+  TFPgtkFontSelectionDialog = class;
+  TFPgtkEventBox = class;
+  TFPgtkHandleBox = class;
+  TFPgtkScrolledWindow = class;
+  TFPgtkViewport = class;
+  TFPgtkBox = class;
+  TFPgtkButtonBox = class;
+  TFPgtkHButtonBox = class;
+  TFPgtkVButtonBox = class;
+  TFPgtkVBox = class;
+  TFPgtkColorSelection = class;
+  TFPgtkGammaCurve = class;
+  TFPgtkHBox = class;
+  TFPgtkCombo = class;
+  TFPgtkStatusbar = class;
+  TFPgtkCList = class;
+  TFPgtkCTree = class;
+  TFPgtkFixed = class;
+  TFPgtkNotebook = class;
+  TFPgtkFontSelection = class;
+  TFPgtkPaned = class;
+  TFPgtkHPaned = class;
+  TFPgtkVPaned = class;
+  TFPgtkLayout = class;
+  TFPgtkList = class;
+  TFPgtkMenuShell = class;
+  TFPgtkMenuBar = class;
+  TFPgtkMenu = class;
+  TFPgtkPacker = class;
+  TFPgtkTable = class;
+  TFPgtkToolbar = class;
+  TFPgtkTree = class;
+  TFPgtkCalendar = class;
+  TFPgtkDrawingArea = class;
+  TFPgtkCurve = class;
+  TFPgtkEditable = class;
+  TFPgtkEntry = class;
+  TFPgtkSpinButton = class;
+  TFPgtkText = class;
+  TFPgtkRuler = class;
+  TFPgtkHRuler = class;
+  TFPgtkVRuler = class;
+  TFPgtkRange = class;
+  TFPgtkScale = class;
+  TFPgtkHScale = class;
+  TFPgtkVScale = class;
+  TFPgtkScrollbar = class;
+  TFPgtkHScrollbar = class;
+  TFPgtkVScrollbar = class;
+  TFPgtkSeparator = class;
+  TFPgtkHSeparator = class;
+  TFPgtkVSeparator = class;
+  TFPgtkPreview = class;
+  TFPgtkProgress = class;
+  TFPgtkProgressBar = class;
+  TFPgtkItemFactory = class;
+
+  TFPgtkSignalFunction = procedure (Sender:TFPgtkObject; Data:pointer) of Object;
+  TFPgtkBooleanSignalFunction = procedure (Sender:TFPgtkObject; Bool:boolean; data:pointer) of Object;
+  FPgtkException = class (Exception) end;
+  PPascalClassData = ^TPascalClassData;
+  TPascalClassData = record
+    TheInstance : TFPgtkObject;
+  end;
+  PSignalData = ^TSignalData;
+  TSignalData = record
+    TheData : pointer;
+    TheWidget : TFPgtkObject;
+    TheSignalProc : TFPgtkSignalFunction;
+  end;
+  TDestroyState = (dsAlive, dsWaiting, dsDestroying);
+  TFPgtkObjectClass = Class of TFPgtkObject;
+
+  PFPgtkObject = ^TFPgtkObject;
+  TFPgtkObject = class
+  Private
+    FDestroying : TDestroyState;
+    PascalInstance:TPascalClassData;
+    ConvertDatas:TStringList;
+    SignalDatas:TList;
+    NotifyList:TList;
+    function ConvertSignalData (proc:TFPgtkSignalFunction; data:pointer; FreeIt:boolean) : PSignalData;
+    procedure FreeClass (Sender:TFPgtkObject; Data:pointer);
+    procedure CheckConvertDatas;
+    procedure CheckNotifyList;
+    procedure InitCreate;
+    procedure FinalCreate;
+    function GetUserData : pointer;
+    procedure SetUserData (TheValue : pointer);
+  Protected
+    FGtkObject:PGtkObject;
+    procedure CreateGtkObject; Virtual; Abstract;
+    procedure NotifyDestroy (AnObject:TFPgtkObject); Virtual;
+  Public
+    function TheGtkObject : PGtkObject;
+    function SignalConnect (Signal:string; Proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function SignalConnectAfter (Signal:string; Proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function BooleanSignalConnect (Signal:string; Proc:TFPgtkBooleanSignalFunction; data:pointer) : guint;
+    function BooleanSignalConnectAfter (Signal:string; Proc:TFPgtkBooleanSignalFunction; data:pointer) : guint;
+    constructor Create;
+    constructor CreateFromObject (GtkObject:PGtkObject);
+    property Destroying : TDestroyState read FDestroying;
+    procedure AskNotification (AnObject:TFPgtkObject);
+    destructor Destroy; Override;
+    function ConnectDestroy (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectAfterDestroy (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    procedure SignalDisconnect (SignalHandler:guint);
+    procedure SignalBlockHandler (SignalHandler:guint);
+    procedure SignalUnblockHandler (SignalHandler:guint);
+    procedure SignalEmit (aName:string; Args:array of const);
+    function SignalNEmissions (aName:string) : guint;
+    procedure SignalEmitStop (aName:string);
+    procedure SetData (Key:string; Data:pointer);
+    property UserData : pointer read GetUserData write SetUserData;
+    procedure SetDataFull (Key:string; Data:pointer; Destroyer:TFPgtkSignalFunction);
+    procedure RemoveData (Key:string);
+    function GetData (Key:string) : pointer;
+    function GtkDestroyed : boolean;
+    procedure Constructed;
+    procedure ConstructedDefault;
+    procedure Sink;
+    procedure Ref;
+    procedure Unref;
+    procedure WeakRef (Notify:TFPgtkSignalFunction; data:pointer);
+    procedure WeakUnref (notify:TFPgtkSignalFunction; data:pointer);
+  end;
+
+
+  TFPgtkData = class (TFPgtkObject)
+  Public
+    function TheGtkObject : PGtkData;
+    function ConnectDisconnect (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectAfterDisconnect (proc:TFPgtkSignalFunction; data:pointer) : guint;
+  end;
+
+
+  TFPgtkAdjustment = class (TFPgtkData)
+  Private
+    function GetValue : gfloat;
+    procedure SetValue (TheValue : gfloat);
+    function GetLower : gfloat;
+    procedure SetLower (TheValue : gfloat);
+    function GetUpper : gfloat;
+    procedure SetUpper (TheValue : gfloat);
+    function GetStepIncrement : gfloat;
+    procedure SetStepIncrement (TheValue : gfloat);
+    function GetPageIncrement : gfloat;
+    procedure SetPageIncrement (TheValue : gfloat);
+    function GetPageSize : gfloat;
+    procedure SetPageSize (TheValue : gfloat);
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkAdjustment;
+    procedure Configure (aLower:gfloat; anUpper:gfloat; aValue:gfloat; aStepInc:gfloat; aPageInc:gfloat; aPageSize:gfloat);
+    function ConnectValueChanged (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectAfterValueChanged (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectChanged (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectAfterChanged (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    procedure ValueChanged;
+    procedure Changed;
+    procedure ClampPage (aLower:gfloat; aUpper:gfloat);
+    property Value : gfloat read GetValue write SetValue;
+    property Lower : gfloat read GetLower write SetLower;
+    property Upper : gfloat read GetUpper write SetUpper;
+    property StepIncrement : gfloat read GetStepIncrement write SetStepIncrement;
+    property PageIncrement : gfloat read GetPageIncrement write SetPageIncrement;
+    property PageSize : gfloat read GetPageSize write SetPageSize;
+  end;
+
+
+  TFPgtkToolTips = class (TFPgtkData)
+  Private
+    function GetEnabled : boolean;
+    procedure SetEnabled (TheValue : boolean);
+    function GetDelay : integer;
+    procedure SetDelay (TheValue : integer);
+    function GetColorForeground : PGdkColor;
+    procedure SetColorForeground (TheValue : PGdkColor);
+    function GetColorBackground : PGdkColor;
+    procedure SetColorBackground (TheValue : PGdkColor);
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkToolTips;
+    procedure SetColors (Fore:PGdkColor; Back:PGdkColor);
+    procedure SetTip (Widget:TFPgtkWidget; TipText:string; TipPrivate:string);
+    property Enabled : boolean read GetEnabled write SetEnabled;
+    property Delay : integer read GetDelay write SetDelay;
+    property ColorForeground : PGdkColor read GetColorForeground write SetColorForeground;
+    property ColorBackground : PGdkColor read GetColorBackground write SetColorBackground;
+    procedure ForceWindow;
+  end;
+
+  TFPgtkWidgetSignalFunction = procedure (Sender:TFPgtkObject; Widget:TFPgtkWidget; Data:pointer) of Object;
+  TFPgtkEventFunction = function (Sender:TFPgtkWidget; Event:PGdkEvent; data:pointer): boolean of Object;
+  TFPgtkEventButtonFunction = function (Sender:TFPgtkWidget; Event:PGdkEventButton; data:pointer): boolean of Object;
+  TFPgtkEventMotionFunction = function (Sender:TFPgtkWidget; Event:PGdkEventMotion; data:pointer): boolean of Object;
+  TFPgtkEventExposeFunction = function (Sender:TFPgtkWidget; Event:PGdkEventExpose; data:pointer): boolean of Object;
+  TFPgtkEventKeyFunction = function (Sender:TFPgtkWidget; Event:PGdkEventKey; data:pointer): boolean of Object;
+  TFPgtkEventCrossingFunction = function (Sender:TFPgtkWidget; Event:PGdkEventCrossing; data:pointer): boolean of Object;
+  TFPgtkEventConfigureFunction = function (Sender:TFPgtkWidget; Event:PGdkEventConfigure; data:pointer): boolean of Object;
+  TFPgtkEventFocusFunction = function (Sender:TFPgtkWidget; Event:PGdkEventFocus; data:pointer): boolean of Object;
+  TFPgtkEventPropertyFunction = function (Sender:TFPgtkWidget; Event:PGdkEventProperty; data:pointer): boolean of Object;
+  TFPgtkEventSelectionFunction = function (Sender:TFPgtkWidget; Event:PGdkEventSelection; data:pointer): boolean of Object;
+  TFPgtkEventProximityFunction = function (Sender:TFPgtkWidget; Event:PGdkEventProximity; data:pointer): boolean of Object;
+  TFPgtkEventClientFunction = function (Sender:TFPgtkWidget; Event:PGdkEventClient; data:pointer): boolean of Object;
+  TFPgtkEventNoExposeFunction = function (Sender:TFPgtkWidget; Event:PGdkEventNoExpose; data:pointer): boolean of Object;
+
+  TFPgtkWidget = class (TFPgtkObject)
+  Private
+    function GetTheGtkWidget : PGtkWidget;
+    procedure SetTheGtkWidget (TheValue : PGtkWidget);
+    function GetAllocation : TGtkAllocation;
+    function GetName : string;
+    procedure SetName (TheValue : string);
+    function GetPropFlags : longint;
+    procedure SetPropFlags (TheValue : longint);
+    function GetState : longint;
+    function GetSavedState : longint;
+    function GetParent : TFPgtkWidget;
+    procedure SetParent (TheValue : TFPgtkWidget);
+    function GetParentWindow : PGdkWindow;
+    procedure SetParentWindow (TheValue : PGdkWindow);
+    procedure Reparent (NewParent:TFPgtkWidget);
+    function GetVisible : boolean;
+    procedure SetVisible (TheValue : boolean);
+    function GetNoWindow : boolean;
+    procedure SetNoWindow (TheValue : boolean);
+    function GetRealized : boolean;
+    procedure SetRealized (TheValue : boolean);
+    function GetMapped : boolean;
+    procedure SetMapped (TheValue : boolean);
+    function GetDrawable : boolean;
+    function GetIsSensitive : boolean;
+    function GetSensitive : boolean;
+    procedure SetSensitive (TheValue : boolean);
+    function GetParentSensitive : boolean;
+    procedure SetParentSensitive (TheValue : boolean);
+    function GetAppPaintable : boolean;
+    function GetCanFocus : boolean;
+    procedure SetCanFocus (TheValue : boolean);
+    function GetHasFocus : boolean;
+    function GetCanDefault : boolean;
+    procedure SetCanDefault (TheValue : boolean);
+    function GetHasDefault : boolean;
+    function GetReceivesDefault : boolean;
+    function GetCompositeChild : boolean;
+    function GetTooltip : string;
+    procedure SetTooltip (TheValue : string);
+    function GetColormap : PGdkColormap;
+    procedure SetColormap (TheValue : PGdkColormap);
+  Protected
+    procedure SetFlags (NewFlags:longint);
+    procedure UnsetFlags (NewUnsetFlags:longint);
+    procedure Map;
+    procedure Unmap;
+    procedure QueueDraw;
+    procedure QueueResize;
+    procedure DrawFocus;
+    procedure DrawDefault;
+  Public
+    function TheGtkObject : PGtkWidget;
+    property TheGtkWidget : PGtkWidget read GetTheGtkWidget write SetTheGtkWidget;
+    function WidgetSignalConnect (Signal:string; Proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+    function WidgetSignalConnectAfter (Signal:string; Proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+    procedure Draw (Rectangle:PGdkRectangle); Overload;
+    procedure Show;
+    procedure Hide;
+    procedure Realize;
+    procedure Unrealize;
+    procedure ShowNow;
+    procedure ShowAll;
+    procedure HideAll;
+    procedure SetAllocation (AnAllocation:TGtkAllocation); Overload;
+    procedure SetAllocation (x:integer; y:integer; width:integer; height:integer); Overload;
+    property Allocation : TGtkAllocation read GetAllocation write SetAllocation;
+    procedure SetUPosition (x:integer; y:integer);
+    procedure SetUsize (width:integer; height:integer);
+    property Name : string read GetName write SetName;
+    property Flags : longint read GetPropFlags write SetPropFlags;
+    property State : longint read GetState;
+    property SavedState : longint read GetSavedState;
+    property Parent : TFPgtkWidget read GetParent write SetParent;
+    property ParentWindow : PGdkWindow read GetParentWindow write SetParentWindow;
+    procedure Unparent;
+    property Visible : boolean read GetVisible write SetVisible;
+    property NoWindow : boolean read GetNoWindow write SetNoWindow;
+    property Realized : boolean read GetRealized write SetRealized;
+    property Mapped : boolean read GetMapped write SetMapped;
+    property Drawable : boolean read GetDrawable;
+    property IsSensitive : boolean read GetIsSensitive;
+    property Sensitive : boolean read GetSensitive write SetSensitive;
+    property ParentSensitive : boolean read GetParentSensitive write SetParentSensitive;
+    property AppPaintable : boolean read GetAppPaintable;
+    property CanFocus : boolean read GetCanFocus write SetCanFocus;
+    procedure GrabFocus;
+    property HasFocus : boolean read GetHasFocus;
+    property CanDefault : boolean read GetCanDefault write SetCanDefault;
+    procedure GrabDefault;
+    property HasDefault : boolean read GetHasDefault;
+    property ReceivesDefault : boolean read GetReceivesDefault;
+    property CompositeChild : boolean read GetCompositeChild;
+    property Tooltip : string read GetTooltip write SetTooltip;
+    procedure HideOnDelete;
+    property Colormap : PGdkColormap read GetColormap write SetColormap;
+    function ConnectShow (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectAfterShow (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function Connecthide (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectAfterhide (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function Connectmap (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectAftermap (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function Connectunmap (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectAfterunmap (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function Connectrealize (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectAfterrealize (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function Connectunrealize (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectAfterunrealize (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectDrawFocus (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectAfterDrawFocus (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectDrawDefault (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectAfterDrawDefault (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectParentSet (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+    function ConnectAfterParentSet (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+    function ConnectGrabFocus (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectAfterGrabFocus (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function EventConnect (Signal:string; Proc:TFPgtkEventFunction; data:pointer) : guint;
+    function EventConnectAfter (Signal:string; Proc:TFPgtkEventFunction; data:pointer) : guint;
+    function ConnectEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
+    function ConnectAfterEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
+    function EventButtonConnect (Signal:string; Proc:TFPgtkEventButtonFunction; data:pointer) : guint;
+    function EventButtonConnectAfter (Signal:string; Proc:TFPgtkEventButtonFunction; data:pointer) : guint;
+    function ConnectButtonPressEvent (proc:TFPgtkEventButtonFunction; data:pointer) : guint;
+    function ConnectAfterButtonPressEvent (proc:TFPgtkEventButtonFunction; data:pointer) : guint;
+    function ConnectButtonReleaseEvent (proc:TFPgtkEventButtonFunction; data:pointer) : guint;
+    function ConnectAfterButtonReleaseEvent (proc:TFPgtkEventButtonFunction; data:pointer) : guint;
+    function EventMotionConnect (Signal:string; Proc:TFPgtkEventMotionFunction; data:pointer) : guint;
+    function EventMotionConnectAfter (Signal:string; Proc:TFPgtkEventMotionFunction; data:pointer) : guint;
+    function ConnectMotionNotifyEvent (proc:TFPgtkEventMotionFunction; data:pointer) : guint;
+    function ConnectAfterMotionNotifyEvent (proc:TFPgtkEventMotionFunction; data:pointer) : guint;
+    function ConnectDeleteEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
+    function ConnectAfterDeleteEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
+    function ConnectDestroyEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
+    function ConnectAfterDestroyEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
+    function EventExposeConnect (Signal:string; Proc:TFPgtkEventExposeFunction; data:pointer) : guint;
+    function EventExposeConnectAfter (Signal:string; Proc:TFPgtkEventExposeFunction; data:pointer) : guint;
+    function ConnectExposeEvent (proc:TFPgtkEventExposeFunction; data:pointer) : guint;
+    function ConnectAfterExposeEvent (proc:TFPgtkEventExposeFunction; data:pointer) : guint;
+    function EventKeyConnect (Signal:string; Proc:TFPgtkEventKeyFunction; data:pointer) : guint;
+    function EventKeyConnectAfter (Signal:string; Proc:TFPgtkEventKeyFunction; data:pointer) : guint;
+    function ConnectKeyPressEvent (proc:TFPgtkEventKeyFunction; data:pointer) : guint;
+    function ConnectAfterKeyPressEvent (proc:TFPgtkEventKeyFunction; data:pointer) : guint;
+    function ConnectKeyReleaseEvent (proc:TFPgtkEventKeyFunction; data:pointer) : guint;
+    function ConnectAfterKeyReleaseEvent (proc:TFPgtkEventKeyFunction; data:pointer) : guint;
+    function EventCrossingConnect (Signal:string; Proc:TFPgtkEventCrossingFunction; data:pointer) : guint;
+    function EventCrossingConnectAfter (Signal:string; Proc:TFPgtkEventCrossingFunction; data:pointer) : guint;
+    function ConnectEnterNotifyEvent (proc:TFPgtkEventCrossingFunction; data:pointer) : guint;
+    function ConnectAfterEnterNotifyEvent (proc:TFPgtkEventCrossingFunction; data:pointer) : guint;
+    function ConnectLeaveNotifyEvent (proc:TFPgtkEventCrossingFunction; data:pointer) : guint;
+    function ConnectAfterLeaveNotifyEvent (proc:TFPgtkEventCrossingFunction; data:pointer) : guint;
+    function EventConfigureConnect (Signal:string; Proc:TFPgtkEventConfigureFunction; data:pointer) : guint;
+    function EventConfigureConnectAfter (Signal:string; Proc:TFPgtkEventConfigureFunction; data:pointer) : guint;
+    function ConnectConfigureEvent (proc:TFPgtkEventConfigureFunction; data:pointer) : guint;
+    function ConnectAfterConfigureEvent (proc:TFPgtkEventConfigureFunction; data:pointer) : guint;
+    function EventFocusConnect (Signal:string; Proc:TFPgtkEventFocusFunction; data:pointer) : guint;
+    function EventFocusConnectAfter (Signal:string; Proc:TFPgtkEventFocusFunction; data:pointer) : guint;
+    function ConnectFocusInEvent (proc:TFPgtkEventFocusFunction; data:pointer) : guint;
+    function ConnectAfterFocusInEvent (proc:TFPgtkEventFocusFunction; data:pointer) : guint;
+    function ConnectFocusOutEvent (proc:TFPgtkEventFocusFunction; data:pointer) : guint;
+    function ConnectAfterFocusOutEvent (proc:TFPgtkEventFocusFunction; data:pointer) : guint;
+    function ConnectMapEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
+    function ConnectAfterMapEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
+    function ConnectUnmapEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
+    function ConnectAfterUnmapEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
+    function EventPropertyConnect (Signal:string; Proc:TFPgtkEventPropertyFunction; data:pointer) : guint;
+    function EventPropertyConnectAfter (Signal:string; Proc:TFPgtkEventPropertyFunction; data:pointer) : guint;
+    function ConnectPropertyNotifyEvent (proc:TFPgtkEventPropertyFunction; data:pointer) : guint;
+    function ConnectAfterPropertyNotifyEvent (proc:TFPgtkEventPropertyFunction; data:pointer) : guint;
+    function EventSelectionConnect (Signal:string; Proc:TFPgtkEventSelectionFunction; data:pointer) : guint;
+    function EventSelectionConnectAfter (Signal:string; Proc:TFPgtkEventSelectionFunction; data:pointer) : guint;
+    function ConnectSelectionClearEvent (proc:TFPgtkEventSelectionFunction; data:pointer) : guint;
+    function ConnectAfterSelectionClearEvent (proc:TFPgtkEventSelectionFunction; data:pointer) : guint;
+    function ConnectSelectionRequestEvent (proc:TFPgtkEventSelectionFunction; data:pointer) : guint;
+    function ConnectAfterSelectionRequestEvent (proc:TFPgtkEventSelectionFunction; data:pointer) : guint;
+    function ConnectSelectionNotifyEvent (proc:TFPgtkEventSelectionFunction; data:pointer) : guint;
+    function ConnectAfterSelectionNotifyEvent (proc:TFPgtkEventSelectionFunction; data:pointer) : guint;
+    function EventProximityConnect (Signal:string; Proc:TFPgtkEventProximityFunction; data:pointer) : guint;
+    function EventProximityConnectAfter (Signal:string; Proc:TFPgtkEventProximityFunction; data:pointer) : guint;
+    function ConnectProximityInEvent (proc:TFPgtkEventProximityFunction; data:pointer) : guint;
+    function ConnectAfterProximityInEvent (proc:TFPgtkEventProximityFunction; data:pointer) : guint;
+    function ConnectProximityOutEvent (proc:TFPgtkEventProximityFunction; data:pointer) : guint;
+    function ConnectAfterProximityOutEvent (proc:TFPgtkEventProximityFunction; data:pointer) : guint;
+    function EventClientConnect (Signal:string; Proc:TFPgtkEventClientFunction; data:pointer) : guint;
+    function EventClientConnectAfter (Signal:string; Proc:TFPgtkEventClientFunction; data:pointer) : guint;
+    function ConnectClientEvent (proc:TFPgtkEventClientFunction; data:pointer) : guint;
+    function ConnectAfterClientEvent (proc:TFPgtkEventClientFunction; data:pointer) : guint;
+    function EventNoExposeConnect (Signal:string; Proc:TFPgtkEventNoExposeFunction; data:pointer) : guint;
+    function EventNoExposeConnectAfter (Signal:string; Proc:TFPgtkEventNoExposeFunction; data:pointer) : guint;
+    function ConnectNoExposeEvent (proc:TFPgtkEventNoExposeFunction; data:pointer) : guint;
+    function ConnectAfterNoExposeEvent (proc:TFPgtkEventNoExposeFunction; data:pointer) : guint;
+    function ConnectVisibilityNotifyEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
+    function ConnectAfterVisibilityNotifyEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
+    procedure LockAccelerators;
+    procedure UnlockAccelerators;
+    procedure RemoveAccelerators (aSignal:string; OnlyVisible:boolean);
+    procedure ActivateAccelGroups (Key:guint; Mods:TGdkModifierType);
+    procedure AcceleratorAdd (AG:PGtkAccelGroup; aSignal:string; Key:guint; Mods:TGdkModifierType; acFlags:TGtkAccelFlags); Overload;
+  end;
+
+  TFPgtkForEachProcedure = procedure (item : pointer; data : pointer) of object;
+
+  TFPgtkGroup = class (TList)
+  Private
+    FManageLists : boolean;
+    FListChanged:boolean;
+    FSListChanged:boolean;
+    FClassesChanged:boolean;
+    FNotUpdating:boolean;
+    FGList:PGList;
+    FGSList:PGSList;
+    procedure FreeList;
+    procedure FreeSList;
+    function CreateGList : PGList;
+    function CreateGSList : PGSList;
+    function GetGtkListProp : PGList;
+    procedure SetGtkListProp (TheValue : PGList);
+    function GetGtkSListProp : PGSList;
+    procedure SetGtkSListProp (TheValue : PGSList);
+  Protected
+    procedure BuildFromGtkList;
+    procedure BuildFromGtkSList;
+    procedure Notify (ptr:pointer; Action:TListNotification); Override;
+    function GetData (index:integer) : pointer; Dynamic;
+    function UngetData (data:pointer) : pointer; Dynamic;
+  Public
+    property ManageLists : boolean read FManageLists write FManageLists;
+    constructor Create;
+    destructor Destroy; Override;
+    function GetGtkList (buffered:boolean) : PGList;
+    function GetGtkSList (buffered:boolean) : PGSList;
+    procedure BeginUpdate;
+    procedure EndUpdate;
+    procedure ForEach (Proc:TFPgtkForEachProcedure; data:pointer);
+    property GtkList : PGList read GetGtkListProp write SetGtkListProp;
+    property GtkSList : PGSList read GetGtkSListProp write SetGtkSListProp;
+  end;
+
+
+  TFPgtkWidgetGroup = class (TFPgtkGroup)
+  Private
+    function GetItem(Index:integer) : TFPgtkWidget;
+    procedure SetItem (Index:integer; TheValue : TFPgtkWidget);
+    function GetTooltips(index:integer) : string;
+    procedure SetTooltips (index:integer; TheValue : string);
+  Public
+    function GetData (index:integer) : pointer; Override;
+    function UnGetData (data:pointer) : pointer; Override;
+    procedure AddToContainer (Container:TFPgtkContainer);
+    procedure PackInBox (box:TFPgtkBox; AtStart:boolean; Expanding:boolean; Fill:boolean; Padding:integer);
+    property Items [Index:integer]  : TFPgtkWidget read GetItem write SetItem;
+    property Tooltips [index:integer]  : string read GetTooltips write SetTooltips;
+  end;
+
+
+  TFPgtkMisc = class (TFPgtkWidget)
+  Private
+    function GetXAlign : gfloat;
+    procedure SetXAlign (TheValue : gfloat);
+    function GetYAlign : gfloat;
+    procedure SetYAlign (TheValue : gfloat);
+    function GetXPad : word;
+    procedure SetXPad (TheValue : word);
+    function GetYPad : word;
+    procedure SetYPad (TheValue : word);
+  Public
+    function TheGtkObject : PGtkMisc;
+    procedure SetAlignment (x:gfloat; y:gfloat);
+    procedure SetPadding (x:word; y:word);
+    property XAlign : gfloat read GetXAlign write SetXAlign;
+    property YAlign : gfloat read GetYAlign write SetYAlign;
+    property XPad : word read GetXPad write SetXPad;
+    property YPad : word read GetYPad write SetYPad;
+  end;
+
+  TFPgtkLabelClass = class of TFPgtkLabel;
+
+  TFPgtkLabel = class (TFPgtkMisc)
+  Private
+    function GetText : string;
+    procedure SetText (TheValue : string);
+    function GetPattern : string;
+    procedure SetPattern (TheValue : string);
+    function GetJustify : TGtkJustification;
+    procedure SetJustify (TheValue : TGtkJustification);
+    function GetLineWrap : boolean;
+    procedure SetLineWrap (TheValue : boolean);
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkLabel;
+    constructor Create (aText:string);
+    property Text : string read GetText write SetText;
+    property Pattern : string read GetPattern write SetPattern;
+    property Justify : TGtkJustification read GetJustify write SetJustify;
+    property LineWrap : boolean read GetLineWrap write SetLineWrap;
+    function ParseUline (aText:string) : guint;
+  end;
+
+
+  TFPgtkAccelLabel = class (TFPgtkLabel)
+  Private
+    function GetAccelWidget : TFPgtkWidget;
+    procedure SetAccelWidget (TheValue : TFPgtkWidget);
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkAccelLabel;
+    property AccelWidget : TFPgtkWidget read GetAccelWidget write SetAccelWidget;
+    function AccelText : string;
+    procedure Refetch;
+  end;
+
+
+  TFPgtkTipsQuery = class (TFPgtkLabel)
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkTipsQuery;
+  end;
+
+
+  TFPgtkArrow = class (TFPgtkMisc)
+  Private
+    function GetArrowType : TGtkArrowType;
+    procedure SetArrowType (TheValue : TGtkArrowType);
+    function GetShadowType : TGtkShadowType;
+    procedure SetShadowType (TheValue : TGtkShadowType);
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkArrow;
+    property ArrowType : TGtkArrowType read GetArrowType write SetArrowType;
+    property ShadowType : TGtkShadowType read GetShadowType write SetShadowType;
+    procedure SetTypes (AnArrowType:TGtkArrowType; AShadowtype:TGtkShadowType);
+    constructor Create (AnArrowType:TGtkArrowType; AShadowType:TGtkShadowType);
+  end;
+
+
+  TFPgtkImage = class (TFPgtkMisc)
+  Private
+    function GetImageProp : PGdkImage;
+    procedure SetImageProp (TheValue : PGdkImage);
+    function GetMask : PGdkBitMap;
+    procedure SetMask (TheValue : PGdkBitMap);
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkImage;
+    FMask:PGdkBitMap;
+    FImage:PGdkImage;
+    property Image : PGdkImage read GetImageProp write SetImageProp;
+    property Mask : PGdkBitMap read GetMask write SetMask;
+    procedure SetImage (anImage:PGdkImage; aMask:PGdkBitmap);
+    constructor Create (anImage:PGdkImage; aMask:PGdkBitmap);
+  end;
+
+  TStringArray = array[0..32000] of pgchar;
+  PStringArray = ^TStringArray;
+
+  TFPgtkPixmap = class (TFPgtkMisc)
+  Private
+    function GetBuildInsensitive : longbool;
+    procedure SetBuildInsensitive (TheValue : longbool);
+    function GetPixmapProp : PGdkPixMap;
+    procedure SetPixmapProp (TheValue : PGdkPixMap);
+    function GetMask : PGdkBitMap;
+    procedure SetMask (TheValue : PGdkBitMap);
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkPixmap;
+    FMask:PGdkBitMap;
+    FPixMap:PGdkPixmap;
+    property BuildInsensitive : longbool read GetBuildInsensitive write SetBuildInsensitive;
+    constructor Create;
+    constructor CreateFromFile (Filename:string; Window:TFPgtkWidget);
+    constructor CreateFromStrings (Data:TStrings; Window:TFPgtkWidget);
+    constructor CreateFromText (Data:string; Window:TFPgtkWidget);
+    property PixMap : PGdkPixMap read GetPixmapProp write SetPixmapProp;
+    property Mask : PGdkBitMap read GetMask write SetMask;
+    procedure SetPixmap (aPixmap:PGdkPixMap; aMask:PGdkBitmap);
+    procedure GetPixmap (var aPixmap:PGdkPixmap; var aMask:PGdkBitmap);
+    procedure LoadFromFile (Filename:string);
+    procedure LoadFromStrings (data:TStrings);
+    procedure LoadFromText (data:string);
+    procedure LoadFromArray (data:array of string);
+  end;
+
+  TFPgtkDirectionFunctionSignalFunction = function (Sender:TFPgtkObject; Direction:TGtkDirectionType; data:pointer): TGtkDirectionType of Object;
+
+  TFPgtkContainer = class (TFPgtkWidget)
+  Private
+    function GetBorder : integer;
+    procedure SetBorder (TheValue : integer);
+    function GetChildren : TFPgtkWidgetGroup;
+  Public
+    function TheGtkObject : PGtkContainer;
+    FChildren:TFPgtkWidgetGroup;
+    property Border : integer read GetBorder write SetBorder;
+    procedure Add (AWidget:TFPgtkWidget; IsVisible:boolean); Overload;
+    procedure Add (AWidget:TFPgtkWidget); Overload;
+    procedure Remove (AWidget:TFPgtkWidget);
+    constructor Create;
+    destructor Destroy; Override;
+    property Children : TFPgtkWidgetGroup read GetChildren;
+    procedure Focus (Direction:TGtkDirectionType);
+    procedure FocusChild (Child:TFPgtkWidget);
+    procedure RegisterToplevel;
+    procedure UnregisterToplevel;
+    procedure ResizeChildren;
+    function DirectionFunctionSignalConnect (Signal:string; Proc:TFPgtkDirectionFunctionSignalFunction; data:pointer) : guint;
+    function DirectionFunctionSignalConnectAfter (Signal:string; Proc:TFPgtkDirectionFunctionSignalFunction; data:pointer) : guint;
+    function ConnectAdd (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+    function ConnectAfterAdd (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+    function ConnectRemove (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+    function ConnectAfterRemove (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+    function ConnectCheckResize (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectAfterCheckResize (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectFocus (proc:TFPgtkDirectionFunctionSignalFunction; data:pointer) : guint;
+    function ConnectAfterFocus (proc:TFPgtkDirectionFunctionSignalFunction; data:pointer) : guint;
+    function ConnectSetFocusChild (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+    function ConnectAfterSetFocusChild (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+  end;
+
+
+  TFPgtkBin = class (TFPgtkContainer)
+  Private
+    function GetChild : TFPgtkWidget;
+    procedure SetChild (TheValue : TFPgtkWidget);
+  Protected
+    property Child : TFPgtkWidget read GetChild write SetChild;
+  Public
+    function TheGtkObject : PGtkBin;
+  end;
+
+
+  TFPgtkAlignment = class (TFPgtkBin)
+  Public
+    function TheGtkObject : PGtkAlignment;
+    procedure Configure (anXAlign:gfloat; anYAlign:gfloat; anXScale:gfloat; anYScale:gfloat);
+  end;
+
+
+  TFPgtkFrame = class (TFPgtkBin)
+  Private
+    function GetText : string;
+    procedure SetText (TheValue : string);
+    function GetAlignment : gfloat;
+    procedure SetAlignment (TheValue : gfloat);
+    function GetShadowType : TgtkShadowType;
+    procedure SetShadowType (TheValue : TgtkShadowType);
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkFrame;
+    property Text : string read GetText write SetText;
+    property Alignment : gfloat read GetAlignment write SetAlignment;
+    property ShadowType : TgtkShadowType read GetShadowType write SetShadowType;
+  end;
+
+
+  TFPgtkAspectFrame = class (TFPgtkFrame)
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkAspectFrame;
+    procedure Configure (anXAlign:gfloat; anYAlign:gfloat; Ratio:gfloat; ObeyChild:longbool);
+  end;
+
+
+  TFPgtkButton = class (TFPgtkBin)
+  Private
+    FAccelKey : guint;
+    FAddContainer : TFPgtkContainer;
+    FLabel : TFPgtkLabel;
+    procedure CreateLabel (aText:string);
+    function GetText : string;
+    procedure SetText (TheValue : string);
+    function GetReliefStyle : TGtkReliefStyle;
+    procedure SetReliefStyle (TheValue : TGtkReliefStyle);
+  Protected
+    procedure CreateGtkObject; override;
+    function LabelClass : TFPgtkLabelClass; Virtual;
+    procedure NotifyDestroy (AnObject:TFPgtkObject); Override;
+    procedure LabelCreated; Virtual;
+  Public
+    function TheGtkObject : PGtkButton;
+    function ConnectClicked (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectAfterClicked (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectPressed (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectAfterPressed (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectReleased (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectAfterReleased (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectEnter (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectAfterEnter (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectLeave (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectAfterLeave (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    procedure Clicked;
+    procedure Pressed;
+    procedure Released;
+    procedure Enter;
+    procedure Leave;
+    constructor Create;
+    constructor CreateWithLabel (aText:string); Overload;
+    constructor CreateWithLabel (aText:string; AccelGroup:PGtkAccelGroup); Overload;
+    property TheLabel : TFPgtkLabel read FLabel;
+    property Text : string read GetText write SetText;
+    property ReliefStyle : TGtkReliefStyle read GetReliefStyle write SetReliefStyle;
+    property AddContainer : TFPgtkContainer read FAddContainer write FAddContainer;
+    property AccelKey : guint read FAccelKey;
+  end;
+
+
+  TFPgtkToggleButton = class (TFPgtkButton)
+  Private
+    function GetActive : boolean;
+    procedure SetActive (TheValue : boolean);
+    function GetDrawIndicator : boolean;
+    procedure SetDrawIndicator (TheValue : boolean);
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkToggleButton;
+    function ConnectToggled (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectAfterToggled (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    procedure Toggled;
+    property Active : boolean read GetActive write SetActive;
+    property DrawIndicator : boolean read GetDrawIndicator write SetDrawIndicator;
+  end;
+
+
+  TFPgtkCheckButton = class (TFPgtkToggleButton)
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkCheckButton;
+  end;
+
+
+  TFPgtkRadioButton = class (TFPgtkCheckButton)
+  Protected
+    procedure CreateGtkObject; Override;
+  Public
+    function TheGtkObject : PGtkRadioButton;
+    FGroup:TFPgtkRadioButtonGroup;
+    constructor Create (AGroup:TFPgtkRadioButtonGroup);
+    constructor CreateWithLabel (AGroup:TFPgtkRadioButtonGroup; aText:string);
+  end;
+
+
+  TFPgtkRadioButtonGroup = class (TFPgtkWidgetGroup)
+  Private
+    function GetItem(index:integer) : TFPgtkRadioButton;
+    procedure SetItem (index:integer; TheValue : TFPgtkRadioButton);
+  Public
+    property Items [index:integer]  : TFPgtkRadioButton read GetItem write SetItem;
+    function ActiveButtonText : string;
+    function ActiveButtonIndex : integer;
+    function ActiveButton : TFPgtkRadioButton;
+  end;
+
+
+  TFPgtkOptionMenu = class (TFPgtkButton)
+  Private
+    function GetMenu : TFPgtkMenu;
+    procedure setmenu (TheValue : TFPgtkMenu);
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkOptionMenu;
+    property Menu : TFPgtkMenu read GetMenu write setmenu;
+    procedure RemoveMenu;
+    procedure SetHistory (index:integer);
+    procedure Clear;
+  end;
+
+  TFPgtkItemClass = class of TFPgtkItem;
+
+  TFPgtkItem = class (TFPgtkBin)
+  Private
+    FAccelKey : guint;
+    FAddContainer : TFPgtkContainer;
+    FLabel : TFPgtkLabel;
+    procedure CreateLabel (aText:string);
+    function GetText : string;
+    procedure SetText (TheValue : string);
+  Protected
+    function LabelClass : TFPgtkLabelClass; Virtual;
+    procedure NotifyDestroy (AnObject:TFPgtkObject); Override;
+    procedure LabelCreated; Virtual;
+  Public
+    function TheGtkObject : PGtkItem;
+    function ConnectSelect (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectAfterSelect (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectDeselect (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectAfterDeselect (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectToggle (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectAfterToggle (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    procedure Select;
+    procedure Deselect;
+    procedure Toggle;
+    constructor Create;
+    constructor CreateWithLabel (aText:string);
+    property TheLabel : TFPgtkLabel read FLabel;
+    property Text : string read GetText write SetText;
+    property AddContainer : TFPgtkContainer read FAddContainer write FAddContainer;
+    property AccelKey : guint read FAccelKey;
+  end;
+
+
+  TFPgtkItemGroup = class (TFPgtkWidgetGroup)
+  Private
+    FItemClass : TFPgtkItemClass;
+    function GetItem(index:integer) : TFPgtkItem;
+    procedure SetItem (index:integer; TheValue : TFPgtkItem);
+  Public
+    property Items [index:integer]  : TFPgtkItem read GetItem write SetItem;
+    procedure FillFromList (aList:TStrings);
+    procedure FillFromCommaText (aList:string);
+    procedure FillFromArray (aList:array of string);
+    property ItemClass : TFPgtkItemClass read FItemClass write FItemClass;
+    procedure SignalConnect (Signal:string; proc:TFPgtkSignalFunction; data:pointer);
+    constructor create (AnItemClass:TFPgtkItemClass);
+    function AddTextItem (aText:string) : TFPgtkItem;
+  end;
+
+
+  TFPgtkMenuItem = class (TFPgtkItem)
+  Private
+    function GetPlacement : TGtkSubmenuPlacement;
+    procedure SetPlacement (TheValue : TGtkSubmenuPlacement);
+    function GetToggleIndicator : boolean;
+    procedure SetToggleIndicator (TheValue : boolean);
+    function GetSubMenuIndicator : boolean;
+    procedure SetSubMenuIndicator (TheValue : boolean);
+    function GetJustifyRight : boolean;
+    procedure SetJustifyRight (TheValue : boolean);
+    function GetSubMenu : TFPgtkMenuShell;
+    procedure SetPropSubMenu (TheValue : TFPgtkMenuShell);
+  Protected
+    procedure CreateGtkObject; override;
+    function LabelClass : TFPgtkLabelClass; Override;
+    procedure LabelCreated; Override;
+  Public
+    function TheGtkObject : PGtkMenuItem;
+    function ConnectActivate (proc:TFPgtksignalFunction; data:pointer) : guint;
+    function ConnectAfterActivate (proc:TFPgtksignalFunction; data:pointer) : guint;
+    function ConnectActivateItem (proc:TFPgtksignalFunction; data:pointer) : guint;
+    function ConnectAfterActivateItem (proc:TFPgtksignalFunction; data:pointer) : guint;
+    procedure Activate;
+    procedure SetSubMenu (aSubMenu:TFPgtkWidget);
+    procedure RemoveSubMenu;
+    procedure Configure (ShowToggleIndicator:boolean; ShowSubmenuIndicator:boolean);
+    procedure RightJustify;
+    property Placement : TGtkSubmenuPlacement read GetPlacement write SetPlacement;
+    property ToggleIndicator : boolean read GetToggleIndicator write SetToggleIndicator;
+    property SubMenuIndicator : boolean read GetSubMenuIndicator write SetSubMenuIndicator;
+    property JustifyRight : boolean read GetJustifyRight write SetJustifyRight;
+    property SubMenu : TFPgtkMenuShell read GetSubMenu write SetPropSubMenu;
+  end;
+
+
+  TFPgtkCheckMenuItem = class (TFPgtkMenuItem)
+  Private
+    function GetActive : boolean;
+    procedure SetActive (TheValue : boolean);
+    function GetShowToggle : boolean;
+    procedure SetShowToggle (TheValue : boolean);
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkCheckMenuItem;
+    function ConnectToggled (proc:TFPgtksignalFunction; data:pointer) : guint;
+    function ConnectAfterToggled (proc:TFPgtksignalFunction; data:pointer) : guint;
+    procedure Toggled;
+    property Active : boolean read GetActive write SetActive;
+    property ShowToggle : boolean read GetShowToggle write SetShowToggle;
+  end;
+
+
+  TFPgtkRadioMenuItem = class (TFPgtkCheckMenuItem)
+  Private
+    FGroup : TFPgtkRadioMenuGroup;
+  Protected
+    procedure CreateGtkObject; Override;
+  Public
+    function TheGtkObject : PGtkRadioMenuItem;
+    constructor Create (AGroup:TFPgtkRadioMenuGroup);
+    constructor CreateWithLabel (Agroup:TFPgtkRadioMenuGroup; aText:string);
+    property Group : TFPgtkRadioMenuGroup read FGroup;
+  end;
+
+
+  TFPgtkRadioMenuGroup = class (TFPgtkItemGroup)
+  Private
+    function GetItem(index:integer) : TFPgtkRadioMenuItem;
+    procedure SetItem (index:integer; TheValue : TFPgtkRadioMenuItem);
+  Public
+    property Items [index:integer]  : TFPgtkRadioMenuItem read GetItem write SetItem;
+    function ActiveMenuText : string;
+    function ActiveMenuIndex : integer;
+    function ActiveMenu : TFPgtkRadioMenuItem;
+    constructor create;
+  end;
+
+
+  TFPgtkTearOffMenuItem = class (TFPgtkMenuItem)
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkTearOffMenuItem;
+  end;
+
+  TFPgtkScrollSignalFunction = procedure (Sender:TFPgtkObject; ScrollType:TgtkScrollType; position:gfloat; data:pointer) of Object;
+  TFPgtkScrollBooleanSignalFunction = procedure (Sender:TFPgtkObject; ScrolType:TgtkScrollType; Position:gfloat; AutoStartSelection:boolean; data:pointer) of Object;
+
+  TFPgtkListItem = class (TFPgtkItem)
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkListItem;
+    function ScrollSignalConnect (Signal:string; Proc:TFPgtkScrollSignalFunction; data:pointer) : guint;
+    function ScrollSignalConnectAfter (Signal:string; Proc:TFPgtkScrollSignalFunction; data:pointer) : guint;
+    function ScrollBooleanSignalConnect (Signal:string; Proc:TFPgtkScrollBooleanSignalFunction; data:pointer) : guint;
+    function ScrollBooleanSignalConnectAfter (Signal:string; Proc:TFPgtkScrollBooleanSignalFunction; data:pointer) : guint;
+    function ConnectToggleFocusRow (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectAfterToggleFocusRow (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectSelectAll (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectAfterSelectAll (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectUnselectAll (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectAfterUnselectAll (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectUndoSelection (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectAfterUndoSelection (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectStartSelection (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectAfterStartSelection (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectEndSelection (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectAfterEndSelection (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectToggleAddMode (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectAfterToggleAddMode (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectExtendSelection (proc:TFPgtkScrollBooleanSignalFunction; data:pointer) : guint;
+    function ConnectAfterExtendSelection (proc:TFPgtkScrollBooleanSignalFunction; data:pointer) : guint;
+    function ConnectScrollVertical (proc:TFPgtkScrollSignalFunction; data:pointer) : guint;
+    function ConnectAfterScrollVertical (proc:TFPgtkScrollSignalFunction; data:pointer) : guint;
+    function ConnectScrollHorizontal (proc:TFPgtkScrollSignalFunction; data:pointer) : guint;
+    function ConnectAfterScrollHorizontal (proc:TFPgtkScrollSignalFunction; data:pointer) : guint;
+    procedure Select;
+    procedure Deselect;
+  end;
+
+
+  TFPgtkListItemGroup = class (TFPgtkItemGroup)
+  Public
+    constructor create;
+  end;
+
+
+  TFPgtkTreeItem = class (TFPgtkItem)
+  Private
+    function GetSubTree : TFPgtkWidget;
+    procedure SetSubTree (TheValue : TFPgtkWidget);
+    function GetPixPlus : TFPgtkWidget;
+    function GetPixMinus : TFPgtkWidget;
+    function GetExpanded : boolean;
+    procedure SetExpanded (TheValue : boolean);
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkTreeItem;
+    property SubTree : TFPgtkWidget read GetSubTree write SetSubTree;
+    property PixPlus : TFPgtkWidget read GetPixPlus;
+    property PixMinus : TFPgtkWidget read GetPixMinus;
+    property Expanded : boolean read GetExpanded write SetExpanded;
+    procedure Select;
+    procedure Deselect;
+    procedure Expand;
+    procedure Collapse;
+    function ConnectCollapse (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectAfterCollapse (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectExpand (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectAfterExpand (proc:TFPgtkSignalFunction; data:pointer) : guint;
+  end;
+
+  DialogResultCallback = procedure (Sender:TFPgtkWindow; DialogResult:pointer; 
+                                    Action:integer; initiator:TFPgtkObject) of object;
+  DialogInitCallback = procedure (Sender : TFPgtkWindow; InitData : pointer) of object;
+  TFPgtkWindowClass = class of TFPgtkWindow;
+
+  TFPgtkWindow = class (TFPgtkBin)
+  Private
+    FAccelGroups:TList;
+    FMainLevel : guint;
+    FModalAction : integer;
+    FOnDialogInit : DialogInitCallback;
+    FOnDialogResult : DialogResultCallback;
+    FDialogResult : pointer;
+    TheWindowType:TGtkWindowType;
+    function GetWindowType : TGtkWindowType;
+    procedure SetWindowType (TheValue : TGtkWindowType);
+    function GetTitle : string;
+    procedure SetTitle (TheValue : string);
+    function GetModal : boolean;
+    procedure SetModal (TheValue : boolean);
+    procedure SetModalAction (TheValue : integer);
+    procedure ExecuteEnds (Sender:TFPgtkObject; data:pointer);
+    function GetUserSizable : boolean;
+    procedure SetUserSizable (TheValue : boolean);
+    function GetPosition : TGtkWindowPosition;
+    procedure SetPosition (TheValue : TGtkWindowPosition);
+    function GetAccelGroups(ID:integer) : PGtkAccelGroup;
+  Protected
+    procedure CreateGtkObject; override;
+    property DialogResult : pointer read FDialogResult write FDialogResult;
+    procedure DoDialogResult (Action:integer; Sender:TFPgtkObject); Virtual;
+    procedure DoDialogInit (InitData:pointer); Virtual;
+  Public
+    function TheGtkObject : PGtkWindow;
+    constructor Create (AType:TGtkWindowType);
+    destructor Destroy; Override;
+    property WindowType : TGtkWindowType read GetWindowType write SetWindowType;
+    property Title : string read GetTitle write SetTitle;
+    property Modal : boolean read GetModal write SetModal;
+    property OnDialogResult : DialogResultCallback read FOnDialogResult write FOnDialogResult;
+    property OnDialogInit : DialogInitCallback read FOnDialogInit write FOnDialogInit;
+    procedure Close;
+    procedure CloseWindow (Sender:TFPgtkObject; data:pointer);
+    procedure CloseWithResult (Sender:TFPgtkObject; data:pointer);
+    property ModalAction : integer read FModalAction write SetModalAction;
+    property MainLevel : guint read FMainLevel;
+    function Execute (anOnDialogInit:DialogInitCallBack; anInitData:pointer; anOnDialogResult:DialogResultCallBack) : integer;
+    function ConnectSetFocus (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+    function ConnectAfterSetFocus (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+    procedure SetTransientFor (aParent:TFPgtkWindow);
+    procedure DefaultWidget (Widget:TFPgtkWidget);
+    procedure FocusedWidget (NewFocus:TFPgtkWidget);
+    property UserSizable : boolean read GetUserSizable write SetUserSizable;
+    procedure ActivateFocus;
+    procedure ActivateDefault;
+    procedure SetDefaultSize (Width:gint; Height:gint);
+    property Position : TGtkWindowPosition read GetPosition write SetPosition;
+    property AccelGroups [ID:integer]  : PGtkAccelGroup read GetAccelGroups;
+    function AccelGroupNew : integer;
+    procedure AccelGroupDelete (ID:integer);
+    procedure AcceleratorAdd (AG:integer; aWidget:TFPgtkWidget; aSignal:string; Key:guint; Mods:TGdkModifierType; acFlags:TGtkAccelFlags); Overload;
+    procedure AcceleratorRemove (AG:integer; aWidget:TFPgtkWidget; Key:guint; Mods:TGdkModifierType); Overload;
+    procedure AccelGroupLock (AG:integer);
+    procedure AccelGroupUnlock (AG:integer);
+    procedure AccelGroupActivate (AG:integer; Key:guint; Mods:TGdkModifierType);
+  end;
+
+
+  TFPgtkColorSelectionDialog = class (TFPgtkWindow)
+  Private
+    function GetColorSel : TFPgtkColorSelection;
+    function GetButtonOK : TFPgtkButton;
+    function GetButtonCancel : TFPgtkButton;
+    function GetButtonHelp : TFPgtkButton;
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkColorSelectionDialog;
+    property ColorSel : TFPgtkColorSelection read GetColorSel;
+    property ButtonOK : TFPgtkButton read GetButtonOK;
+    property ButtonCancel : TFPgtkButton read GetButtonCancel;
+    property ButtonHelp : TFPgtkButton read GetButtonHelp;
+  end;
+
+
+  TFPgtkDialog = class (TFPgtkWindow)
+  Private
+    function GetActionArea : TFPgtkHBox;
+    function GetVBox : TFPgtkVBox;
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkDialog;
+    property ActionArea : TFPgtkHBox read GetActionArea;
+    property VBox : TFPgtkVBox read GetVBox;
+    constructor create;
+  end;
+
+  TFPgtkDeviceSignalFunction = procedure (Sender:TFPgtkInputDialog; DeviceID:integer; Data:pointer) of Object;
+
+  TFPgtkInputDialog = class (TFPgtkDialog)
+  Private
+    function GetButtonClose : TFPgtkButton;
+    function GetButtonSave : TFPgtkButton;
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkInputDialog;
+    property ButtonClose : TFPgtkButton read GetButtonClose;
+    property ButtonSave : TFPgtkButton read GetButtonSave;
+    function DeviceSignalConnect (Signal:string; Proc:TFPgtkDeviceSignalFunction; data:pointer) : guint;
+    function DeviceSignalConnectAfter (Signal:string; Proc:TFPgtkDeviceSignalFunction; data:pointer) : guint;
+    function ConnectEnableDevice (proc:TFPgtkDeviceSignalFunction; data:pointer) : guint;
+    function ConnectAfterEnableDevice (proc:TFPgtkDeviceSignalFunction; data:pointer) : guint;
+    function ConnectDisableDevice (proc:TFPgtkDeviceSignalFunction; data:pointer) : guint;
+    function ConnectAfterDisableDevice (proc:TFPgtkDeviceSignalFunction; data:pointer) : guint;
+  end;
+
+
+  TFPgtkFileSelection = class (TFPgtkWindow)
+  Private
+    function GetFilename : string;
+    procedure SetFilename (TheValue : string);
+    function GetDirList : TFPgtkCList;
+    function GetFileList : TFPgtkCList;
+    function GetOkButton : TFPgtkButton;
+    function GetCancelButton : TFPgtkButton;
+    function GetHistoryPulldown : TFPgtkOptionMenu;
+    function GetFileOpDialog : TFPgtkDialog;
+    function GetFileOpCreateDir : TFPgtkButton;
+    function GetFileOpDelFile : TFPgtkButton;
+    function GetFileOpRenFile : TFPgtkButton;
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkFileSelection;
+    property Filename : string read GetFilename write SetFilename;
+    procedure Complete (Pattern:string);
+    procedure ShowFileOpButtons;
+    procedure HideFileOpButtons;
+    property DirList : TFPgtkCList read GetDirList;
+    property FileList : TFPgtkCList read GetFileList;
+    property OkButton : TFPgtkButton read GetOkButton;
+    property CancelButton : TFPgtkButton read GetCancelButton;
+    property HistoryPulldown : TFPgtkOptionMenu read GetHistoryPulldown;
+    property FileOpDialog : TFPgtkDialog read GetFileOpDialog;
+    property FileOpCreateDir : TFPgtkButton read GetFileOpCreateDir;
+    property FileOpDelFile : TFPgtkButton read GetFileOpDelFile;
+    property FileOpRenFile : TFPgtkButton read GetFileOpRenFile;
+  end;
+
+
+  TFPgtkFontSelectionDialog = class (TFPgtkWindow)
+  Private
+    function GetFontSel : TFPgtkFontSelection;
+    function GetButtonOk : TFPgtkButton;
+    function GetButtonApply : TFPgtkButton;
+    function GetButtonCancel : TFPgtkButton;
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkFontSelectionDialog;
+    property FontSel : TFPgtkFontSelection read GetFontSel;
+    property ButtonOk : TFPgtkButton read GetButtonOk;
+    property ButtonApply : TFPgtkButton read GetButtonApply;
+    property ButtonCancel : TFPgtkButton read GetButtonCancel;
+  end;
+
+
+  TFPgtkEventBox = class (TFPgtkBin)
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkEventBox;
+  end;
+
+
+  TFPgtkHandleBox = class (TFPgtkBin)
+  Private
+    function GetShadowType : TGtkShadowtype;
+    procedure SetShadowType (TheValue : TGtkShadowtype);
+    function GetHandlePosition : TGtkPositionType;
+    procedure SetHandlePosition (TheValue : TGtkPositionType);
+    function GetSnapEdge : TGtkPositionType;
+    procedure SetSnapEdge (TheValue : TGtkPositionType);
+    function GetChildDetached : boolean;
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkHandleBox;
+    property ShadowType : TGtkShadowtype read GetShadowType write SetShadowType;
+    property HandlePosition : TGtkPositionType read GetHandlePosition write SetHandlePosition;
+    property SnapEdge : TGtkPositionType read GetSnapEdge write SetSnapEdge;
+    property ChildDetached : boolean read GetChildDetached;
+    function ConnectChildAttached (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+    function ConnectAfterChildAttached (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+    function ConnectChildDetached (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+    function ConnectAfterChildDetached (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+  end;
+
+
+  TFPgtkScrolledWindow = class (TFPgtkBin)
+  Private
+    FVScroll:TFPgtkAdjustment;
+    FHScroll:TFPgtkAdjustment;
+    function GetHPolicy : TGtkPolicyType;
+    procedure SetHPolicy (TheValue : TGtkPolicyType);
+    function GetVPolicy : TGtkPolicyType;
+    procedure SetVPolicy (TheValue : TGtkPolicyType);
+    function GetHAdjustment : TFPgtkAdjustment;
+    procedure SetHAdjustment (TheValue : TFPgtkAdjustment);
+    function GetVAdjustment : TFPgtkAdjustment;
+    procedure SetVAdjustment (TheValue : TFPgtkAdjustment);
+    function GetPlacement : TGtkCornerType;
+    procedure SetPlacement (TheValue : TGtkCornerType);
+    function GetHScrollbar : TFPgtkScrollbar;
+    function GetVScrollbar : TFPgtkScrollbar;
+  Protected
+    procedure CreateGtkObject; Override;
+  Public
+    function TheGtkObject : PGtkScrolledWindow;
+    constructor Create (hadj:TFPgtkAdjustment; vadj:TFPgtkAdjustment);
+    property HPolicy : TGtkPolicyType read GetHPolicy write SetHPolicy;
+    property VPolicy : TGtkPolicyType read GetVPolicy write SetVPolicy;
+    procedure SetPolicy (aHScrollBar:TGtkPolicyType; aVScrollbar:TGtkPolicyType); Overload;
+    procedure SetPolicy (aPolicy:TGtkPolicyType); Overload;
+    property HAdjustment : TFPgtkAdjustment read GetHAdjustment write SetHAdjustment;
+    property VAdjustment : TFPgtkAdjustment read GetVAdjustment write SetVAdjustment;
+    procedure AddWithViewport (aChild:TFPgtkWidget);
+    property Placement : TGtkCornerType read GetPlacement write SetPlacement;
+    property HScrollbar : TFPgtkScrollbar read GetHScrollbar;
+    property VScrollbar : TFPgtkScrollbar read GetVScrollbar;
+    procedure UpdatePolicy (UpdPolicy:TGtkUpdateType);
+  end;
+
+
+  TFPgtkViewport = class (TFPgtkBin)
+  Private
+    FVScroll:TFPgtkAdjustment;
+    FHScroll:TFPgtkAdjustment;
+    function GetHAdjustment : TFPgtkAdjustment;
+    procedure SetHAdjustment (TheValue : TFPgtkAdjustment);
+    function GetVAdjustment : TFPgtkAdjustment;
+    procedure SetVAdjustment (TheValue : TFPgtkAdjustment);
+    function GetShadowType : TgtkShadowType;
+    procedure SetShadowType (TheValue : TgtkShadowType);
+  Protected
+    procedure CreateGtkObject; Override;
+  Public
+    function TheGtkObject : PGtkViewport;
+    constructor Create (hadj:TFPgtkAdjustment; vadj:TFPgtkAdjustment);
+    property HAdjustment : TFPgtkAdjustment read GetHAdjustment write SetHAdjustment;
+    property VAdjustment : TFPgtkAdjustment read GetVAdjustment write SetVAdjustment;
+    property ShadowType : TgtkShadowType read GetShadowType write SetShadowType;
+  end;
+
+
+  TFPgtkBox = class (TFPgtkContainer)
+  Private
+    function GetHomogeneous : boolean;
+    procedure SetHomogeneous (TheValue : boolean);
+    function GetSpacing : integer;
+    procedure SetSpacing (TheValue : integer);
+  Public
+    function TheGtkObject : PGtkBox;
+    property Homogeneous : boolean read GetHomogeneous write SetHomogeneous;
+    property Spacing : integer read GetSpacing write SetSpacing;
+    procedure ReorderChild (Widget:TFPgtkWidget; Position:integer);
+    procedure GetChildPacking (Widget:TFPgtkWidget; var Expand:boolean; var Fill:boolean; var Padding:integer; var PackType:TGtkPackType);
+    procedure SetChildPacking (Widget:TFPgtkWidget; Expand:boolean; Fill:boolean; Padding:integer; PackType:TGtkPackType);
+    procedure PackStart (Widget:TFPgtkWidget); Overload;
+    procedure PackStart (Widget:TFPgtkWidget; IsVisible:boolean); Overload;
+    procedure PackStart (Widget:TFPgtkWidget; expand:boolean; fill:boolean; padding:integer); Overload;
+    procedure PackStart (Widget:TFPgtkWidget; expand:boolean; fill:boolean; padding:integer; IsVisible:boolean); Overload;
+    procedure PackEnd (Widget:TFPgtkWidget); Overload;
+    procedure PackEnd (Widget:TFPgtkWidget; IsVisible:boolean); Overload;
+    procedure PackEnd (Widget:TFPgtkWidget; expand:boolean; fill:boolean; padding:integer); Overload;
+    procedure PackEnd (Widget:TFPgtkWidget; expand:boolean; fill:boolean; padding:integer; IsVisible:boolean); Overload;
+  end;
+
+
+  TFPgtkButtonBox = class (TFPgtkBox)
+  Private
+    function GetSpacing : integer;
+    procedure SetSpacing (TheValue : integer);
+    function GetLayout : TGtkButtonBoxStyle;
+    procedure SetLayout (TheValue : TGtkButtonBoxStyle);
+    function GetMinWidth : integer;
+    procedure SetMinWidth (TheValue : integer);
+    function GetMinHeight : integer;
+    procedure SetMinHeight (TheValue : integer);
+    function GetChildPadX : integer;
+    procedure SetChildPadX (TheValue : integer);
+    function GetChildPadY : integer;
+    procedure SetChildPadY (TheValue : integer);
+  Public
+    function TheGtkObject : PGtkButtonBox;
+    property Spacing : integer read GetSpacing write SetSpacing;
+    property Layout : TGtkButtonBoxStyle read GetLayout write SetLayout;
+    property ChildMinWidth : integer read GetMinWidth write SetMinWidth;
+    property ChildMinHeight : integer read GetMinHeight write SetMinHeight;
+    property ChildPadX : integer read GetChildPadX write SetChildPadX;
+    property ChildPadY : integer read GetChildPadY write SetChildPadY;
+  end;
+
+
+  TFPgtkHButtonBox = class (TFPgtkButtonBox)
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkHButtonBox;
+  end;
+
+
+  TFPgtkVButtonBox = class (TFPgtkButtonBox)
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkVButtonBox;
+  end;
+
+
+  TFPgtkVBox = class (TFPgtkBox)
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkVBox;
+  end;
+
+
+  TFPgtkColorSelection = class (TFPgtkVBox)
+  Private
+    function GetUpdatePolicy : TGtkUpdateType;
+    procedure SetUpdatePolicy (TheValue : TGtkUpdateType);
+    function GetColor : double;
+    procedure SetColor (TheValue : double);
+    function GetUseOpacity : longbool;
+    procedure SetUseOpacity (TheValue : longbool);
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkColorSelection;
+    property UpdatePolicy : TGtkUpdateType read GetUpdatePolicy write SetUpdatePolicy;
+    property Color : double read GetColor write SetColor;
+    property UseOpacity : longbool read GetUseOpacity write SetUseOpacity;
+  end;
+
+
+  TFPgtkGammaCurve = class (TFPgtkVBOX)
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkGammaCurve;
+  end;
+
+
+  TFPgtkHBox = class (TFPgtkBox)
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkHBox;
+  end;
+
+
+  TFPgtkCombo = class (TFPgtkHBox)
+  Private
+    function GetEntry : TFPgtkEntry;
+    function GetList : TFPgtkList;
+    function GetButton : TFpGtkButton;
+    function GetValueInList : longbool;
+    procedure SetValueInListProp (TheValue : longbool);
+    function GetOkIfEmpty : longbool;
+    procedure SetOkIfEmpty (TheValue : longbool);
+    function GetUseArrows : longbool;
+    procedure SetUseArrows (TheValue : longbool);
+    function GetUseArrowsAlways : longbool;
+    procedure SetUseArrowsAlways (TheValue : longbool);
+    function GetCaseSensitive : longbool;
+    procedure SetCaseSensitive (TheValue : longbool);
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkCombo;
+    property Entry : TFPgtkEntry read GetEntry;
+    property List : TFPgtkList read GetList;
+    property Button : TFpGtkButton read GetButton;
+    property ValueInList : longbool read GetValueInList write SetValueInListProp;
+    property OkIfEmpty : longbool read GetOkIfEmpty write SetOkIfEmpty;
+    property UseArrows : longbool read GetUseArrows write SetUseArrows;
+    property UseArrowsAlways : longbool read GetUseArrowsAlways write SetUseArrowsAlways;
+    property CaseSensitive : longbool read GetCaseSensitive write SetCaseSensitive;
+    procedure SetItemString (Item:TFPgtkItem; ItemValue:string);
+    procedure DisableActivate;
+    procedure SetValueInList (Val:longbool; IsOkIfEmpty:longbool);
+  end;
+
+  TFPgtkStatusbarSignalFunction = procedure (Sender:TFPgtkObject; contextID:integer; text:string; data:pointer) of Object;
+
+  TFPgtkStatusbar = class (TFPgtkHBox)
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkStatusbar;
+    function GetContextID (ContextDescr:string) : integer;
+    function Push (contextID:integer; text:string) : integer;
+    procedure Pop (contextID:integer);
+    procedure Remove (contextID:integer; MessageID:integer);
+    function StatusbarSignalConnect (Signal:string; Proc:TFPgtkStatusbarSignalFunction; data:pointer) : guint;
+    function StatusbarSignalConnectAfter (Signal:string; Proc:TFPgtkStatusbarSignalFunction; data:pointer) : guint;
+    function ConnectTextPopped (proc:TFPgtkStatusbarSignalFunction; data:pointer) : guint;
+    function ConnectAfterTextPopped (proc:TFPgtkStatusbarSignalFunction; data:pointer) : guint;
+    function ConnectTextPushed (proc:TFPgtkStatusbarSignalFunction; data:pointer) : guint;
+    function ConnectAfterTextPushed (proc:TFPgtkStatusbarSignalFunction; data:pointer) : guint;
+  end;
+
+  TFPgtkCListScrollSignalFunction = procedure (Sender:TFPgtkObject; ScrollType:TgtkScrollType; position:gfloat; data:pointer) of Object;
+  TFPgtkCListScrollBooleanSignalFunction = procedure (Sender:TFPgtkObject; ScrollType:TgtkScrollType; Position:gfloat; AutoStartSelection:boolean; data:pointer) of Object;
+  TFPgtkSelectRowSignalFunction = procedure (Sender:TFPgtkObject; row:integer; column:integer; event:PGdkEventButton; data:pointer) of Object;
+  TFPgtkMoveSignalFunction = procedure (Sender:TFPgtkObject; arg1:integer; arg2:integer; data:pointer) of Object;
+  TFPgtkColumnClickedSignalFunction = procedure (Sender:TFPgtkObject; column:integer; data:pointer) of Object;
+  TFPgtkResizeColumnSignalFunction = procedure (Sender:TFPgtkObject; column:integer; width:integer; data:pointer) of Object;
+
+  TFPgtkCList = class (TFPgtkContainer)
+  Private
+    compare : TGtkCListCompareFunc;
+    FColumnCount : integer;
+    function GetShadowType : TGtkShadowType;
+    procedure SetShadowType (TheValue : TGtkShadowType);
+    function GetSelectionMode : TGtkSelectionMode;
+    procedure SetSelectionMode (TheValue : TGtkSelectionMode);
+    function GetColumnTitle(column:integer) : string;
+    procedure SetColumnTitle (column:integer; TheValue : string);
+    function GetColumnWidget(column:integer) : TFPgtkWidget;
+    procedure SetColumnWidget (column:integer; TheValue : TFPgtkWidget);
+    function GetCellText(Row:integer; Column:integer) : string;
+    procedure SetCellText (Row:integer; Column:integer; TheValue : string);
+    function GetCellStyle(row:integer; column:integer) : PGtkStyle;
+    procedure SetCellStyle (row:integer; column:integer; TheValue : PGtkStyle);
+    function GetRowStyle(row:integer) : PGtkStyle;
+    procedure SetRowStyle (row:integer; TheValue : PGtkStyle);
+    function GetRowData(row:integer) : pointer;
+    procedure SetRowData (row:integer; TheValue : pointer);
+    procedure SetCompareFunc (TheValue : TGtkCListCompareFunc);
+    function GetSortColumn : integer;
+    procedure SetSortColumn (TheValue : integer);
+    function GetSetSortType : TGtkSortType;
+    procedure SetSetSortType (TheValue : TGtkSortType);
+    function GetHAdjustment : TFPgtkAdjustment;
+    procedure SetHAdjustment (TheValue : TFPgtkAdjustment);
+    function GetVAdjustment : TFPgtkAdjustment;
+    procedure SetVAdjustment (TheValue : TFPgtkAdjustment);
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkCList;
+    constructor Create (aColumnCount:integer);
+    property ColumnCount : integer read FColumnCount;
+    property ShadowType : TGtkShadowType read GetShadowType write SetShadowType;
+    property SelectionMode : TGtkSelectionMode read GetSelectionMode write SetSelectionMode;
+    procedure Freeze;
+    procedure Thaw;
+    procedure ShowTitles;
+    procedure HideTitles;
+    procedure ActiveTitles;
+    procedure PassiveTitles;
+    procedure ActiveTitle (column:integer);
+    procedure PassiveTitle (column:integer);
+    property ColumnTitle [column:integer]  : string read GetColumnTitle write SetColumnTitle;
+    property ColumnWidget [column:integer]  : TFPgtkWidget read GetColumnWidget write SetColumnWidget;
+    procedure SetColumnJustification (column:integer; justification:TGtkJustification);
+    procedure SetColumnVisibility (column:integer; aVisible:boolean);
+    procedure SetColumnResizeable (column:integer; Resizeable:boolean);
+    procedure SetColumnAutoResize (column:integer; autoResize:boolean);
+    function OptimalColumnWidth (column:integer) : integer;
+    procedure SetColumnWidth (column:integer; width:integer);
+    procedure SetColumnMinWidth (column:integer; MinWidth:integer);
+    procedure SetColumnMaxWidth (column:integer; MaxWidth:integer);
+    function AutoSizeColumns : integer;
+    procedure ConfigureColumnWidth (column:integer; Width:integer; MinWidth:integer; MaxWidth:integer);
+    procedure ConfigureColumn (column:integer; Justification:TGtkJustification; Visibility:boolean; Resizeable:boolean; AutoSize:boolean);
+    procedure SetRowHeight (height:integer);
+    procedure MoveTo (row:integer; column:integer; RowAlign:gfloat; ColAlign:gfloat);
+    function RowIsVisible (Row:integer) : TGtkVisibility;
+    function GetCellType (Row:integer; column:integer) : TGtkCellType;
+    property CellText [Row:integer; Column:integer]  : string read GetCellText write SetCellText;
+    procedure SetPixmap (row:integer; column:integer; pixmap:PGdkPixmap; mask:PGdkBitmap);
+    procedure GetPixmap (row:integer; column:integer; var pixmap:PGdkPixmap; var mask:PGdkBitmap);
+    procedure SetPixText (row:integer; column:integer; text:string; spacing:guint8; pixmap:PGdkPixmap; mask:PGdkBitmap);
+    procedure GetPixText (row:integer; column:integer; var text:string; var aspacing:guint8; var pixmap:PGdkPixmap; var mask:PGdkBitmap);
+    procedure SetForeground (row:integer; color:PGdkColor);
+    procedure SetBackground (row:integer; color:PGdkColor);
+    property CellStyle [row:integer; column:integer]  : PGtkStyle read GetCellStyle write SetCellStyle;
+    property RowStyle [row:integer]  : PGtkStyle read GetRowStyle write SetRowStyle;
+    procedure SetShift (row:integer; column:integer; vertical:integer; horizontal:integer);
+    procedure Remove (row:integer);
+    procedure Prepend (Data:TStrings); Overload;
+    procedure Prepend (Text:string; separator:string); Overload;
+    procedure Prepend (data:array of string); Overload;
+    procedure Append (data:TStrings); Overload;
+    procedure Append (Text:string; Separator:string); Overload;
+    procedure Append (data:array of string); Overload;
+    procedure Insert (row:integer; data:TStrings); Overload;
+    procedure Insert (row:integer; Text:string; Separator:string); Overload;
+    procedure Insert (row:integer; data:array of string); Overload;
+    property RowData [row:integer]  : pointer read GetRowData write SetRowData;
+    function FindRowFromData (data:pointer) : integer;
+    procedure SelectRow (row:integer; column:integer);
+    procedure UnselectRow (row:integer; column:integer);
+    procedure Clear;
+    procedure SelectAll;
+    procedure UnselectAll;
+    procedure SwapRows (row1:integer; row2:integer);
+    procedure RowMove (sourceRow:integer; destRow:integer);
+    procedure Sort;
+    property CompareFunc : TGtkCListCompareFunc read compare write SetCompareFunc;
+    property SortColumn : integer read GetSortColumn write SetSortColumn;
+    property SetSortType : TGtkSortType read GetSetSortType write SetSetSortType;
+    procedure SetAutoSort (autoSort:boolean);
+    property HAdjustment : TFPgtkAdjustment read GetHAdjustment write SetHAdjustment;
+    property VAdjustment : TFPgtkAdjustment read GetVAdjustment write SetVAdjustment;
+    procedure SetReorderable (reorderable:boolean);
+    function Count : integer;
+    function CListScrollSignalConnect (Signal:string; Proc:TFPgtkCListScrollSignalFunction; data:pointer) : guint;
+    function CListScrollSignalConnectAfter (Signal:string; Proc:TFPgtkCListScrollSignalFunction; data:pointer) : guint;
+    function CListScrollBooleanSignalConnect (Signal:string; Proc:TFPgtkCListScrollBooleanSignalFunction; data:pointer) : guint;
+    function CListScrollBooleanSignalConnectAfter (Signal:string; Proc:TFPgtkCListScrollBooleanSignalFunction; data:pointer) : guint;
+    function SelectRowSignalConnect (Signal:string; Proc:TFPgtkSelectRowSignalFunction; data:pointer) : guint;
+    function SelectRowSignalConnectAfter (Signal:string; Proc:TFPgtkSelectRowSignalFunction; data:pointer) : guint;
+    function ConnectSelectRow (proc:TFPgtkSelectRowSignalFunction; data:pointer) : guint;
+    function ConnectAfterSelectRow (proc:TFPgtkSelectRowSignalFunction; data:pointer) : guint;
+    function ConnectUnselectRow (proc:TFPgtkSelectRowSignalFunction; data:pointer) : guint;
+    function ConnectAfterUnselectRow (proc:TFPgtkSelectRowSignalFunction; data:pointer) : guint;
+    function MoveSignalConnect (Signal:string; Proc:TFPgtkMoveSignalFunction; data:pointer) : guint;
+    function MoveSignalConnectAfter (Signal:string; Proc:TFPgtkMoveSignalFunction; data:pointer) : guint;
+    function ConnectRowMove (proc:TFPgtkMoveSignalFunction; data:pointer) : guint;
+    function ConnectAfterRowMove (proc:TFPgtkMoveSignalFunction; data:pointer) : guint;
+    function ConnectScrollVertical (proc:TFPgtkCListScrollSignalFunction; data:pointer) : guint;
+    function ConnectAfterScrollVertical (proc:TFPgtkCListScrollSignalFunction; data:pointer) : guint;
+    function ConnectScrolHorizontal (proc:TFPgtkCListScrollSignalFunction; data:pointer) : guint;
+    function ConnectAfterScrolHorizontal (proc:TFPgtkCListScrollSignalFunction; data:pointer) : guint;
+    function ConnectToggleFocusRow (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectAfterToggleFocusRow (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectSelectAll (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectAfterSelectAll (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectUnselectAll (proc:TFPgtksignalFunction; data:pointer) : guint;
+    function ConnectAfterUnselectAll (proc:TFPgtksignalFunction; data:pointer) : guint;
+    function ConnectUndoSelection (proc:TFPgtksignalFunction; data:pointer) : guint;
+    function ConnectAfterUndoSelection (proc:TFPgtksignalFunction; data:pointer) : guint;
+    function ConnectStartSelection (proc:TFPgtksignalFunction; data:pointer) : guint;
+    function ConnectAfterStartSelection (proc:TFPgtksignalFunction; data:pointer) : guint;
+    function ConnectEndSelection (proc:TFPgtksignalFunction; data:pointer) : guint;
+    function ConnectAfterEndSelection (proc:TFPgtksignalFunction; data:pointer) : guint;
+    function ConnectToggleAddMode (proc:TFPgtksignalFunction; data:pointer) : guint;
+    function ConnectAfterToggleAddMode (proc:TFPgtksignalFunction; data:pointer) : guint;
+    function ConnectAbortColumnResize (proc:TFPgtksignalFunction; data:pointer) : guint;
+    function ConnectAfterAbortColumnResize (proc:TFPgtksignalFunction; data:pointer) : guint;
+    function ConnectExtendSelection (proc:TFPgtkCListScrollBooleanSignalFunction; data:pointer) : guint;
+    function ConnectAfterExtendSelection (proc:TFPgtkCListScrollBooleanSignalFunction; data:pointer) : guint;
+    function ColumnClickedSignalConnect (Signal:string; Proc:TFPgtkColumnClickedSignalFunction; data:pointer) : guint;
+    function ColumnClickedSignalConnectAfter (Signal:string; Proc:TFPgtkColumnClickedSignalFunction; data:pointer) : guint;
+    function ConnectClickColumn (proc:TFPgtkColumnClickedSignalFunction; data:pointer) : guint;
+    function ConnectAfterClickColumn (proc:TFPgtkColumnClickedSignalFunction; data:pointer) : guint;
+    function ResizeColumnSignalConnect (Signal:string; Proc:TFPgtkResizeColumnSignalFunction; data:pointer) : guint;
+    function ResizeColumnSignalConnectAfter (Signal:string; Proc:TFPgtkResizeColumnSignalFunction; data:pointer) : guint;
+    function ConnectResizeColumn (proc:TFPgtkResizeColumnSignalFunction; data:pointer) : guint;
+    function ConnectAfterResizeColumn (proc:TFPgtkResizeColumnSignalFunction; data:pointer) : guint;
+  end;
+
+  TFPgtkCTreeFunction = procedure (TheTree:TFPgtkCTree; TheNode:PGtkCTreeNode; data:pointer) of object;
+
+  TFPgtkCTree = class (TFPgtkCList)
+  Private
+    FTreeColumn:integer;
+    function GetLineStyle : TGtkCTreeLineStyle;
+    procedure SetLineStyle (TheValue : TGtkCTreeLineStyle);
+    function GetShowStub : boolean;
+    procedure SetShowStub (TheValue : boolean);
+    function GetExpanderStyle : TGtkCTreeExpanderStyle;
+    procedure SetExpanderStyle (TheValue : TGtkCTreeExpanderStyle);
+    function GetSpacing : guint;
+    procedure SetSpacing (TheValue : guint);
+    function GetIndent : guint;
+    procedure SetIndent (TheValue : guint);
+    function GetTreeColumn : integer;
+    function GetNodeCellText(Node:PGtkCTreeNode; Column:integer) : string;
+    procedure SetNodeCellText (Node:PGtkCTreeNode; Column:integer; TheValue : string);
+    function GetNodeSelectable(Node:PGtkCTreeNode) : boolean;
+    procedure SetNodeSelectable (Node:PGtkCTreeNode; TheValue : boolean);
+    function GetNodeCellStyle(Node:PGtkCTreeNode; column:integer) : PGtkStyle;
+    procedure SetNodeCellStyle (Node:PGtkCTreeNode; column:integer; TheValue : PGtkStyle);
+    function GetNodeRowStyle(Node:PGtkCTreeNode) : PGtkStyle;
+    procedure SetNodeRowStyle (Node:PGtkCTreeNode; TheValue : PGtkStyle);
+    function GetNodeData(Node:PGtkCTreeNode) : pointer;
+    procedure SetNodeData (Node:PGtkCTreeNode; TheValue : pointer);
+    function GetCompareDragFunc : TGtkCTreeCompareDragFunc;
+    procedure SetCompareDragFunc (TheValue : TGtkCTreeCompareDragFunc);
+  Public
+    function TheGtkObject : PGtkCTree;
+    property LineStyle : TGtkCTreeLineStyle read GetLineStyle write SetLineStyle;
+    property ShowStub : boolean read GetShowStub write SetShowStub;
+    property ExpanderStyle : TGtkCTreeExpanderStyle read GetExpanderStyle write SetExpanderStyle;
+    property Spacing : guint read GetSpacing write SetSpacing;
+    property Indent : guint read GetIndent write SetIndent;
+    property TreeColumn : integer read GetTreeColumn;
+    constructor Create (aColumnCount:integer; aTreeColumn:integer);
+    procedure RemoveNode (node:PGtkCTreeNode);
+    function InsertNode (aParent:PGtkCTreeNode; Sibling:PGtkCTreeNode; data:string; aSpacing:guint8; PixmapClosed:PGdkPixmap; MaskClosed:PGdkBitmap; PixmapOpened:PGdkPixmap; MaskOpened:PGdkBitmap; IsLeaf:boolean; Expanded:boolean) : PGtkCTreeNode; Overload;
+    function InsertNode (aParent:PGtkCTreeNode; Sibling:PGtkCTreeNode; data:string; aSpacing:guint8; IsLeaf:boolean; Expanded:boolean) : PGtkCTreeNode; Overload;
+    procedure PostRecursive (aNode:PGtkCTreeNode; func:TFPgtkCTreeFunction; data:pointer);
+    procedure PostRecursiveToDepth (aNode:PGtkCTreeNode; aDepth:integer; func:TFPgtkCTreeFunction; data:pointer);
+    procedure PreRecursive (aNode:PGtkCTreeNode; func:TFPgtkCTreeFunction; data:pointer);
+    procedure PreRecursiveToDepth (aNode:PGtkCTreeNode; aDepth:integer; func:TFPgtkCTreeFunction; data:pointer);
+    procedure IsViewable (aNode:PGtkCTreeNode);
+    procedure LastChild (aNode:PGtkCTreeNode);
+    function IsChild (anAncestor:PGtkCTreeNode; aChild:PGtkCTreeNode) : boolean;
+    function IsAncestor (anAncestor:PGtkCTreeNode; aChild:PGtkCTreeNode) : boolean;
+    function IsHotSpot (X:integer; Y:integer) : boolean;
+    procedure MoveNode (aNode:PGtkCTreeNode; NewParent:PGtkCTreeNode; NewSibling:PGtkCTreeNode);
+    procedure Expand (aNode:PGtkCTreeNode);
+    procedure ExpandRecursive (aNode:PGtkCTreeNode);
+    procedure ExpandToDepth (aNode:PGtkCTreeNode; aDepth:integer);
+    procedure Collapse (aNode:PGtkCTreeNode);
+    procedure CollapseRecursive (aNode:PGtkCTreeNode);
+    procedure CollapseToDepth (aNode:PGtkCTreeNode; aDepth:integer);
+    procedure SelectNode (aNode:PGtkCTreeNode);
+    procedure SelectRecursive (aNode:PGtkCTreeNode);
+    procedure UnselectNode (aNode:PGtkCTreeNode);
+    procedure UnselectRecursive (aNode:PGtkCTreeNode);
+    procedure RealSelectRecursive (aNode:PGtkCTreeNode; aState:boolean);
+    function NodeGetCellType (Node:PGtkCTreeNode; column:integer) : TGtkCellType;
+    property NodeCellText [Node:PGtkCTreeNode; Column:integer]  : string read GetNodeCellText write SetNodeCellText;
+    procedure NodeSetPixmap (Node:PGtkCTreeNode; column:integer; pixmap:PGdkPixmap; mask:PGdkBitmap);
+    procedure NodeGetPixmap (Node:PGtkCTreeNode; column:integer; var pixmap:PGdkPixmap; var mask:PGdkBitmap);
+    procedure NodeSetPixText (Node:PGtkCTreeNode; column:integer; text:string; aspacing:guint8; pixmap:PGdkPixmap; mask:PGdkBitmap);
+    procedure NodeGetPixText (Node:PGtkCTreeNode; column:integer; var text:string; var aspacing:guint8; var pixmap:PGdkPixmap; var mask:PGdkBitmap);
+    procedure SetNodeInfo (aNode:PGtkCTreeNode; aText:string; aSpacing:guint8; PixmapClosed:PGdkPixmap; MaskClosed:PGdkBitmap; PixmapOpened:PGdkPixmap; MaskOpened:PGdkBitmap; IsLeaf:boolean; Expanded:boolean); Overload;
+    procedure GetNodeInfo (aNode:PGtkCTreeNode; var aText:string; var aSpacing:guint8; var PixmapClosed:PGdkPixmap; var MaskClosed:PGdkBitmap; var PixmapOpened:PGdkPixmap; var MaskOpened:PGdkBitmap; var IsLeaf:boolean; var Expanded:boolean); Overload;
+    procedure NodeSetShift (Node:PGtkCTreeNode; column:integer; vertical:integer; horizontal:integer);
+    property NodeSelectable [Node:PGtkCTreeNode]  : boolean read GetNodeSelectable write SetNodeSelectable;
+    procedure NodeSetForeground (Node:PGtkCTreeNode; color:PGdkColor);
+    procedure NodeSetBackground (Node:PGtkCTreeNode; color:PGdkColor);
+    property NodeCellStyle [Node:PGtkCTreeNode; column:integer]  : PGtkStyle read GetNodeCellStyle write SetNodeCellStyle;
+    property NodeRowStyle [Node:PGtkCTreeNode]  : PGtkStyle read GetNodeRowStyle write SetNodeRowStyle;
+    property NodeData [Node:PGtkCTreeNode]  : pointer read GetNodeData write SetNodeData;
+    procedure NodeMoveTo (aNode:PGtkCTreeNode; column:integer; RowAlign:gfloat; ColAlign:gfloat);
+    function IsVisible (aNode:PGtkCTreeNode) : TGtkVisibility;
+    property CompareDragFunc : TGtkCTreeCompareDragFunc read GetCompareDragFunc write SetCompareDragFunc;
+    procedure SortNode (aNode:PGtkCTreeNode);
+    procedure SortRecursive (aNode:PGtkCTreeNode);
+    function NthNode (Row:integer) : PGtkCTreeNode;
+  end;
+
+
+  TFPgtkFixed = class (TFPgtkContainer)
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkFixed;
+    procedure Put (Widget:TFPgtkWidget; x:integer; y:integer);
+    procedure Move (Widget:TFPgtkWidget; x:integer; y:integer);
+    procedure GetPos (Widget:TFPgtkWidget; var PosX:integer; var PosY:integer);
+  end;
+
+  TFPgtkPageSwitchSignalFunction = procedure (Sender:TFPgtkObject; PageRec:PGtkNotebookPage; aPageNum:integer; data:pointer) of Object;
+
+  TFPgtkNotebook = class (TFPgtkContainer)
+  Private
+    function GetPageIndex : integer;
+    procedure SetPageIndex (TheValue : integer);
+    function GetPage : TFPgtkWidget;
+    procedure SetPage (TheValue : TFPgtkWidget);
+    function GetTabPos : TGtkPositionType;
+    procedure SetTabPos (TheValue : TGtkPositionType);
+    function GetShowTabs : boolean;
+    procedure SetShowTabs (TheValue : boolean);
+    function GetShowBorder : boolean;
+    procedure SetShowBorder (TheValue : boolean);
+    function GetScrollable : boolean;
+    procedure SetScrollable (TheValue : boolean);
+    function GetHomogenous : boolean;
+    procedure SetHomogenous (TheValue : boolean);
+    function GetTabHBorder : word;
+    procedure SetTabHBorder (TheValue : word);
+    function GetTabVBorder : word;
+    procedure SetTabVBorder (TheValue : word);
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkNotebook;
+    procedure AppendPage (Child:TFPgtkWidget; TabLabel:TFPgtkWidget);
+    procedure AppendPageFull (Child:TFPgtkWidget; TabLabel:TFPgtkWidget; MenuLabel:TFPgtkWidget; IsVisible:boolean);
+    procedure PrependPage (Child:TFPgtkWidget; TabLabel:TFPgtkWidget);
+    procedure PrependPageFull (Child:TFPgtkWidget; TabLabel:TFPgtkWidget; MenuLabel:TFPgtkWidget; IsVisible:boolean);
+    procedure InsertPage (Child:TFPgtkWidget; TabLabel:TFPgtkWidget; Position:integer);
+    procedure InsertPageFull (Child:TFPgtkWidget; TabLabel:TFPgtkWidget; MenuLabel:TFPgtkWidget; IsVisible:boolean; Position:integer);
+    procedure RemovePage (PageNumber:integer);
+    function PageNumberOf (Child:TFPgtkWidget) : integer;
+    procedure NextPage;
+    procedure PrevPage;
+    procedure ReorderPage (Child:TFPgtkWidget; PageNum:integer);
+    property PageIndex : integer read GetPageIndex write SetPageIndex;
+    property Page : TFPgtkWidget read GetPage write SetPage;
+    property TabPos : TGtkPositionType read GetTabPos write SetTabPos;
+    property ShowTabs : boolean read GetShowTabs write SetShowTabs;
+    property ShowBorder : boolean read GetShowBorder write SetShowBorder;
+    property Scrollable : boolean read GetScrollable write SetScrollable;
+    property Homogenous : boolean read GetHomogenous write SetHomogenous;
+    property TabHBorder : word read GetTabHBorder write SetTabHBorder;
+    property TabVBorder : word read GetTabVBorder write SetTabVBorder;
+    procedure SetTabBorders (BorderWidth:word);
+    function GetMenuLabelOf (Child:TFPgtkWidget) : TFPgtkWidget;
+    procedure SetMenuLabel (Child:TFPgtkWidget; MenuLabel:TFPgtkWidget);
+    function GetTabLabelOf (Child:TFPgtkWidget) : TFPgtkWidget;
+    procedure SetTabLabel (Child:TFPgtkWidget; TabLabel:TFPgtkWidget);
+    function GetChildOnPage (PageNum:integer) : TFPgtkWidget;
+    procedure GetTabLabelPacking (Widget:TFPgtkWidget; var Expand:boolean; var Fill:boolean; var PackType:TGtkPackType);
+    procedure SetTabLabelPacking (Widget:TFPgtkWidget; Expand:boolean; Fill:boolean; PackType:TGtkPackType);
+    procedure EnablePopup;
+    procedure DisablePopup;
+    function PageSwitchSignalConnect (Signal:string; Proc:TFPgtkPageSwitchSignalFunction; data:pointer) : guint;
+    function PageSwitchSignalConnectAfter (Signal:string; Proc:TFPgtkPageSwitchSignalFunction; data:pointer) : guint;
+    function ConnectSwitchPage (proc:TFPgtkPageSwitchSignalFunction; data:pointer) : guint;
+    function ConnectAfterSwitchPage (proc:TFPgtkPageSwitchSignalFunction; data:pointer) : guint;
+  end;
+
+
+  TFPgtkFontSelection = class (TFPgtkNotebook)
+  Private
+    function GetFontName : string;
+    procedure SetFontName (TheValue : string);
+    function GetPreviewText : string;
+    procedure SetPreviewText (TheValue : string);
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkFontSelection;
+    property FontName : string read GetFontName write SetFontName;
+    function GetFont : PGdkFont;
+    property PreviewText : string read GetPreviewText write SetPreviewText;
+    procedure SetFilter (FilterType:TGtkFontFilterType; FontType:TGtkFontType; Foundries:array of string; Weights:array of string; Slants:array of string; SetWidths:array of string; Spacings:array of string; CharSets:array of string);
+  end;
+
+
+  TFPgtkPaned = class (TFPgtkContainer)
+  Private
+    function GetGutterSize : word;
+    procedure SetGutterSize (TheValue : word);
+    function GetHandleSize : word;
+    procedure SetHandleSize (TheValue : word);
+    function GetPosition : integer;
+    procedure SetPosition (TheValue : integer);
+  Public
+    function TheGtkObject : PGtkPaned;
+    property GutterSize : word read GetGutterSize write SetGutterSize;
+    property HandleSize : word read GetHandleSize write SetHandleSize;
+    property Position : integer read GetPosition write SetPosition;
+    procedure ComputePosition (AnAllocation:integer; Child1Req:integer; Child2Req:integer);
+    procedure Add1 (Child:TFPgtkWidget); Overload;
+    procedure Pack1 (Child:TFPgtkWidget; Resize:boolean; Shrink:boolean); Overload;
+    procedure Add1 (Child:TFPgtkWidget; isVisible:boolean); Overload;
+    procedure Pack1 (Child:TFPgtkWidget; Resize:boolean; Shrink:boolean; IsVisible:boolean); Overload;
+    procedure Add2 (Child:TFPgtkWidget); Overload;
+    procedure Pack2 (Child:TFPgtkWidget; Resize:boolean; Shrink:boolean); Overload;
+    procedure Add2 (Child:TFPgtkWidget; IsVisible:boolean); Overload;
+    procedure Pack2 (Child:TFPgtkWidget; Resize:boolean; Shrink:boolean; IsVisible:boolean); Overload;
+  end;
+
+
+  TFPgtkHPaned = class (TFPgtkPaned)
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkHPaned;
+  end;
+
+
+  TFPgtkVPaned = class (TFPgtkPaned)
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkVPaned;
+  end;
+
+
+  TFPgtkLayout = class (TFPgtkContainer)
+  Private
+    function GetHAdj : TFPgtkAdjustment;
+    procedure SetHAdj (TheValue : TFPgtkAdjustment);
+    function GetVAdj : TFPgtkAdjustment;
+    procedure SetVAdj (TheValue : TFPgtkAdjustment);
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkLayout;
+    property HAdj : TFPgtkAdjustment read GetHAdj write SetHAdj;
+    property VAdj : TFPgtkAdjustment read GetVAdj write SetVAdj;
+    procedure Freeze;
+    procedure Thaw;
+    procedure Put (aWidget:TFPgtkWidget; X:integer; Y:integer); Overload;
+    procedure Put (aWidget:TFPgtkWidget; X:integer; Y:integer; aVisible:boolean); Overload;
+    procedure Move (aWidget:TFPgtkWidget; X:integer; Y:integer);
+    procedure SetSize (aWidth:integer; aHeight:integer);
+  end;
+
+
+  TFPgtkList = class (TFPgtkContainer)
+  Private
+    function GetSelectionMode : TGtkSelectionMode;
+    procedure SetSelectionMode (TheValue : TGtkSelectionMode);
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkList;
+    function ConnectSelectionChanged (proc:TFPgtksignalFunction; data:pointer) : guint;
+    function ConnectAfterSelectionChanged (proc:TFPgtksignalFunction; data:pointer) : guint;
+    function ConnectSelectChild (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+    function ConnectAfterSelectChild (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+    function ConnectUnselectChild (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+    function ConnectAfterUnselectChild (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+    property SelectionMode : TGtkSelectionMode read GetSelectionMode write SetSelectionMode;
+    procedure InsertItems (TheItems:TFPgtkListItemGroup; position:integer);
+    procedure AppendItems (TheItems:TFPgtkListItemGroup);
+    procedure PrependItems (TheItems:TFPgtkListItemGroup);
+    procedure RemoveItems (TheItems:TFPgtkListItemGroup);
+    procedure RemoveItemsNoUnref (TheItems:TFPgtkListItemGroup);
+    procedure ClearItems (FromItem:integer; ToItem:integer);
+    procedure ClearAll;
+    procedure SelectItem (Item:integer);
+    procedure UnselectItem (Item:integer);
+    procedure SelectChild (Child:TFPgtkWidget);
+    procedure UnselectChild (Child:TFPgtkWidget);
+    function ChildPosition (Child:TFPgtkWidget) : integer;
+    procedure ExtendSelection (ScrollType:TGtkScrollType; Position:gfloat; AutoStartSelection:boolean);
+    procedure StartSelection;
+    procedure EndSelection;
+    procedure SelectAll;
+    procedure UnselectAll;
+    procedure ScrollHorizontal (ScrollType:TGtkScrollType; Position:gfloat);
+    procedure ScrollVertical (ScrollType:TGtkScrollType; Position:gfloat);
+    procedure ToggleAddMode;
+    procedure ToggleFocusRow;
+    procedure ToggleRow (Child:TFPgtkWidget);
+    procedure UndoSelection;
+    procedure EndDragSelection;
+    procedure GetSelection (aGroup:TFPgtkGroup);
+  end;
+
+  TFPgtkMoveCurrentSignalFunction = procedure (Sender:TFPgtkObject; dir:TGtkMenuDirectionType; data:pointer) of Object;
+
+  TFPgtkMenuShell = class (TFPgtkContainer)
+  Protected
+    procedure GtkPrepend (MenuItem:TFPgtkWidget); Virtual;
+    procedure GtkInsert (MenuItem:TFPgtkWidget; position:integer); Virtual;
+    procedure GtkAppend (MenuItem:TFPgtkWidget); Virtual;
+  Public
+    function TheGtkObject : PGtkMenuShell;
+    function MoveCurrentSignalConnect (Signal:string; Proc:TFPgtkMoveCurrentSignalFunction; data:pointer) : guint;
+    function MoveCurrentSignalConnectAfter (Signal:string; Proc:TFPgtkMoveCurrentSignalFunction; data:pointer) : guint;
+    procedure ActivateItem (MenuItem:TFPgtkWidget; ForceDeactivate:boolean);
+    procedure SelectItem (MenuItem:TFPgtkWidget);
+    procedure DeActivate;
+    procedure Prepend (MenuItem:TFPgtkWidget); Overload;
+    procedure Prepend (MenuItem:TFPgtkWidget; CreateVisible:boolean); Overload;
+    procedure Insert (MenuItem:TFPgtkWidget; position:integer); Overload;
+    procedure Insert (MenuItem:TFPgtkWidget; position:integer; CreateVisible:boolean); Overload;
+    procedure Append (MenuItem:TFPgtkWidget); Overload;
+    procedure Append (MenuItem:TFPgtkWidget; CreateVisible:boolean); Overload;
+    function ConnectDeActivate (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectAfterDeActivate (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectSelectionDone (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectAfterSelectionDone (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectCancel (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectAfterCancel (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectMoveCurrent (proc:TFPgtkMoveCurrentSignalFunction; data:pointer) : guint;
+    function ConnectAfterMoveCurrent (proc:TFPgtkMoveCurrentSignalFunction; data:pointer) : guint;
+    function ConnectActivateCurrent (proc:TFPgtkBooleanSignalFunction; data:pointer) : guint;
+    function ConnectAfterActivateCurrent (proc:TFPgtkBooleanSignalFunction; data:pointer) : guint;
+  end;
+
+
+  TFPgtkMenuBar = class (TFPgtkMenuShell)
+  Private
+    function GetShadow : TgtkShadowType;
+    procedure SetShadow (TheValue : TgtkShadowType);
+  Protected
+    procedure CreateGtkObject; override;
+    procedure GtkPrepend (MenuItem:TFPgtkWidget); Override;
+    procedure GtkInsert (MenuItem:TFPgtkWidget; position:integer); Override;
+    procedure GtkAppend (MenuItem:TFPgtkWidget); Override;
+  Public
+    function TheGtkObject : PGtkMenuBar;
+    property Shadow : TgtkShadowType read GetShadow write SetShadow;
+  end;
+
+  TFPgtkMenuDetachFunction = procedure (Widget:TFPgtkWidget; menu:TFPgtkMenu) of object;
+  TFPgtkMenuPosFunction = procedure (menu:TFPgtkMenu; var x,y:integer; data:pointer) of object;
+
+  TFPgtkMenu = class (TFPgtkMenuShell)
+  Private
+    procedure SetTitle (TheValue : string);
+    function GetActive : TFPgtkWidget;
+    procedure SetActive (TheValue : TFPgtkWidget);
+    function GetActiveIndex : integer;
+    procedure SetActiveIndex (TheValue : integer);
+    function GetTearOffState : boolean;
+    procedure SetTearOffState (TheValue : boolean);
+    function GetAttachedTo : TFPgtkWidget;
+    procedure SetAttachedTo (TheValue : TFPgtkWidget);
+    function GetAccelGroup : PGtkAccelGroup;
+    procedure SetAccelGroup (TheValue : PGtkAccelGroup);
+  Protected
+    procedure CreateGtkObject; override;
+    procedure GtkPrepend (MenuItem:TFPgtkWidget); Override;
+    procedure GtkInsert (MenuItem:TFPgtkWidget; position:integer); Override;
+    procedure GtkAppend (MenuItem:TFPgtkWidget); Override;
+  Public
+    function TheGtkObject : PGtkMenu;
+    FDetacher:TFPgtkMenuDetachFunction;
+    procedure ReorderChild (MenuItem:TFPgtkWidget; position:integer);
+    procedure Popup (button:guint); Overload;
+    procedure Popup (ParentShell:TFPgtkWidget; ParentItem:TFPgtkWidget; func:TFPgtkMenuPosFunction; data:pointer; button:guint; ActivateTime:guint32); Overload;
+    procedure PopDown;
+    procedure Reposition;
+    procedure AttachToWidget (Widget:TFPgtkWidget; detacher:TFPgtkMenuDetachFunction);
+    procedure Detach;
+    property Title : string write SetTitle;
+    property Active : TFPgtkWidget read GetActive write SetActive;
+    property ActiveIndex : integer read GetActiveIndex write SetActiveIndex;
+    property TearOffState : boolean read GetTearOffState write SetTearOffState;
+    property AttachedTo : TFPgtkWidget read GetAttachedTo write SetAttachedTo;
+    property AccelGroup : PGtkAccelGroup read GetAccelGroup write SetAccelGroup;
+  end;
+
+
+  TFPgtkPacker = class (TFPgtkContainer)
+  Private
+    function GetSpacing : guint;
+    procedure SetSpacing (TheValue : guint);
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkPacker;
+    procedure Add (Child:TFPgtkWidget; Side:TGtkSideType; Anchor:TGtkAnchorType; options:TGtkPackerOptions); Overload;
+    procedure Add (Child:TFPgtkWidget; Side:TGtkSideType; Anchor:TGtkAnchorType; options:TGtkPackerOptions; aVisible:boolean); Overload;
+    procedure Add (Child:TFPgtkWidget; Side:TGtkSideType; Anchor:TGtkAnchorType; options:TGtkPackerOptions; aBorder:guint; PadX:Guint; PadY:guint; IPadX:guint; IPadY:guint); Overload;
+    procedure Add (Child:TFPgtkWidget; Side:TGtkSideType; Anchor:TGtkAnchorType; options:TGtkPackerOptions; aBorder:guint; PadX:Guint; PadY:guint; IPadX:guint; IPadY:guint; aVisible:boolean); Overload;
+    procedure ReorderChild (aChild:TFPgtkWidget; position:integer);
+    property Spacing : guint read GetSpacing write SetSpacing;
+    procedure DefaultBorder (aBorder:guint);
+    procedure DefaultPad (PadX:guint; PadY:guint);
+    procedure DefaultIPad (IPadX:guint; IPadY:guint);
+    procedure Configure (aChild:TFPgtkWidget; Side:TGtkSideType; Anchor:TGtkAnchorType; options:TGtkPackerOptions; aBorder:guint; PadX:Guint; PadY:guint; IPadX:guint; IPadY:guint); Overload;
+  end;
+
+
+  TFPgtkTable = class (TFPgtkContainer)
+  Private
+    function GetRowCount : integer;
+    function GetColCount : integer;
+    function GetHomogeneous : boolean;
+    procedure SetHomogeneous (TheValue : boolean);
+    function GetRowSpacings : integer;
+    procedure SetRowSpacings (TheValue : integer);
+    function GetColSpacings : integer;
+    procedure SetColSpacings (TheValue : integer);
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkTable;
+    constructor Create (AColumns:integer; ARows:integer);
+    procedure Resize (AColumns:integer; ARows:integer);
+    procedure Attach (Widget:TFPgtkWidget; left:integer; right:integer; top:integer; bottom:integer; XOptions:integer; YOptions:integer; XPadding:integer; YPadding:integer; IsVisible:boolean);
+    procedure Attach (Widget:TFPgtkWidget; left:integer; right:integer; top:integer; bottom:integer; XOptions:integer; YOptions:integer; XPadding:integer; YPadding:integer);
+    procedure Attach (Widget:TFPgtkWidget; left:integer; right:integer; top:integer; bottom:integer; IsVisible:boolean);
+    procedure Attach (Widget:TFPgtkWidget; left:integer; right:integer; top:integer; bottom:integer);
+    property RowCount : integer read GetRowCount;
+    property ColCount : integer read GetColCount;
+    property Homogeneous : boolean read GetHomogeneous write SetHomogeneous;
+    property RowSpacings : integer read GetRowSpacings write SetRowSpacings;
+    property ColSpacings : integer read GetColSpacings write SetColSpacings;
+    procedure SetOneRowSpacing (row:integer; TheValue:integer);
+    procedure SetOneColSpacing (Column:integer; TheValue:integer);
+  end;
+
+
+  TFPgtkToolbar = class (TFPgtkContainer)
+  Private
+    function GetButtonRelief : TGtkReliefStyle;
+    procedure SetButtonRelief (TheValue : TGtkReliefStyle);
+    function GetTooltips : TFPgtkTooltips;
+    function GetEnableTooltips : longbool;
+    procedure SetEnableTooltips (TheValue : longbool);
+    function GetSpaceStyle : TGtkToolbarSpaceStyle;
+    procedure SetSpaceStyle (TheValue : TGtkToolbarSpaceStyle);
+    function GetSpaceSize : integer;
+    procedure SetSpaceSize (TheValue : integer);
+    function GetStyle : TGtkToolbarStyle;
+    procedure SetStyle (TheValue : TGtkToolbarStyle);
+    function GetOrientation : tGtkOrientation;
+    procedure SetOrientation (TheValue : tGtkOrientation);
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkToolbar;
+    property ButtonRelief : TGtkReliefStyle read GetButtonRelief write SetButtonRelief;
+    property Tooltips : TFPgtkTooltips read GetTooltips;
+    property EnableTooltips : longbool read GetEnableTooltips write SetEnableTooltips;
+    property SpaceStyle : TGtkToolbarSpaceStyle read GetSpaceStyle write SetSpaceStyle;
+    property SpaceSize : integer read GetSpaceSize write SetSpaceSize;
+    property Style : TGtkToolbarStyle read GetStyle write SetStyle;
+    property Orientation : tGtkOrientation read GetOrientation write SetOrientation;
+    procedure InsertWidget (Widget:TFPgtkWidget; TooltipText:string; TooltipPrivate:string; Position:integer);
+    procedure PrependWidget (Widget:TFPgtkWidget; TooltipText:string; TooltipPrivate:string);
+    procedure AppendWidget (Widget:TFPgtkWidget; TooltipText:string; TooltipPrivate:string);
+    function InsertElement (ButtonType:TGtkToolbarChildType; PrevRadioBut:TFPgtkWidget; Text:string; TooltipText:string; TooltipPrivate:string; Icon:TFPgtkWidget; CallBack:TFPgtkSignalFunction; data:pointer; position:integer) : TFPgtkWidget;
+    function AppendElement (ButtonType:TGtkToolbarChildType; PrevRadioBut:TFPgtkWidget; Text:string; TooltipText:string; TooltipPrivate:string; Icon:TFPgtkWidget; CallBack:TFPgtkSignalFunction; data:pointer) : TFPgtkWidget;
+    function PrependElement (ButtonType:TGtkToolbarChildType; PrevRadioBut:TFPgtkWidget; Text:string; TooltipText:string; TooltipPrivate:string; Icon:TFPgtkWidget; CallBack:TFPgtkSignalFunction; data:pointer) : TFPgtkWidget;
+    function InsertItem (Text:string; TooltipText:string; TooltipPrivate:string; Icon:TFPgtkWidget; CallBack:TFPgtkSignalFunction; data:pointer; position:integer) : TFPgtkWidget; Overload;
+    function AppendItem (Text:string; TooltipText:string; TooltipPrivate:string; Icon:TFPgtkWidget; CallBack:TFPgtkSignalFunction; data:pointer) : TFPgtkWidget; Overload;
+    function PrependItem (Text:string; TooltipText:string; TooltipPrivate:string; Icon:TFPgtkWidget; CallBack:TFPgtkSignalFunction; data:pointer) : TFPgtkWidget; Overload;
+    function InsertItem (Text:string; TooltipText:string; TooltipPrivate:string; Icon:array of string; CallBack:TFPgtkSignalFunction; data:pointer; position:integer) : TFPgtkWidget; Overload;
+    function AppendItem (Text:string; TooltipText:string; TooltipPrivate:string; Icon:array of string; CallBack:TFPgtkSignalFunction; data:pointer) : TFPgtkWidget; Overload;
+    function PrependItem (Text:string; TooltipText:string; TooltipPrivate:string; Icon:array of string; CallBack:TFPgtkSignalFunction; data:pointer) : TFPgtkWidget; Overload;
+    procedure InsertSpace (position:integer);
+    procedure AppendSpace;
+    procedure PrependSpace;
+  end;
+
+
+  TFPgtkTree = class (TFPgtkContainer)
+  Private
+    function GetSelectionMode : TGtkSelectionMode;
+    procedure SetSelectionMode (TheValue : TGtkSelectionMode);
+    function GetViewLines : boolean;
+    procedure SetViewLines (TheValue : boolean);
+    function GetViewMode : TGtkTreeViewMode;
+    procedure SetViewMode (TheValue : TGtkTreeViewMode);
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkTree;
+    function ConnectSelectionChanged (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectAfterSelectionChanged (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectSelectChild (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+    function ConnectAfterSelectChild (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+    function ConnectUnselectChild (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+    function ConnectAfterUnselectChild (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+    property SelectionMode : TGtkSelectionMode read GetSelectionMode write SetSelectionMode;
+    property ViewLines : boolean read GetViewLines write SetViewLines;
+    property ViewMode : TGtkTreeViewMode read GetViewMode write SetViewMode;
+    procedure Append (TreeItem:TFPgtkWidget);
+    procedure Prepend (TreeItem:TFPgtkWidget);
+    procedure Insert (TreeItem:TFPgtkWidget; position:integer);
+    procedure Remove (TreeItem:TFPgtkWidget);
+    procedure ClearItems (StartPos:integer; EndPos:integer);
+    procedure SelectItem (Item:integer);
+    procedure UnselectItem (Item:integer);
+    procedure SelectChild (TreeItem:TFPgtkWidget);
+    procedure UnselectChild (TreeItem:TFPgtkWidget);
+    function ChildPosition (TreeItem:TFPgtkWidget) : integer;
+    function RootTree : TFPgtkTree;
+    function IsRootTree : boolean;
+    procedure GetSelection (aGroup:TFPgtkGroup);
+    function Level : integer;
+  end;
+
+
+  TFPgtkCalendar = class (TFPgtkWidget)
+  Private
+    function GetDisplayOptions : TGtkCalendarDisplayOptions;
+    procedure SetDisplayOptions (TheValue : TGtkCalendarDisplayOptions);
+    function GetDate : TDatetime;
+    procedure SetDate (TheValue : TDatetime);
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkCalendar;
+    function SelectMonth (aMonth:guint; aYear:guint) : integer;
+    procedure SelectDay (aDay:guint);
+    function MarkDay (aDay:guint) : integer;
+    function UnmarkDay (aDay:guint) : integer;
+    procedure ClearMarks;
+    property DisplayOptions : TGtkCalendarDisplayOptions read GetDisplayOptions write SetDisplayOptions;
+    property Date : TDatetime read GetDate write SetDate;
+    procedure Freeze;
+    procedure Thaw;
+    function ConnectMonthChanged (proc:TFPgtksignalFunction; data:pointer) : guint;
+    function ConnectAfterMonthChanged (proc:TFPgtksignalFunction; data:pointer) : guint;
+    function ConnectDaySelected (proc:TFPgtksignalFunction; data:pointer) : guint;
+    function ConnectAfterDaySelected (proc:TFPgtksignalFunction; data:pointer) : guint;
+    function ConnectDaySelectedDoubleClick (proc:TFPgtksignalFunction; data:pointer) : guint;
+    function ConnectAfterDaySelectedDoubleClick (proc:TFPgtksignalFunction; data:pointer) : guint;
+    function ConnectPrevMonth (proc:TFPgtksignalFunction; data:pointer) : guint;
+    function ConnectAfterPrevMonth (proc:TFPgtksignalFunction; data:pointer) : guint;
+    function ConnectNextMonth (proc:TFPgtksignalFunction; data:pointer) : guint;
+    function ConnectAfterNextMonth (proc:TFPgtksignalFunction; data:pointer) : guint;
+    function ConnectPrevYear (proc:TFPgtksignalFunction; data:pointer) : guint;
+    function ConnectAfterPrevYear (proc:TFPgtksignalFunction; data:pointer) : guint;
+    function ConnectNextYear (proc:TFPgtksignalFunction; data:pointer) : guint;
+    function ConnectAfterNextYear (proc:TFPgtksignalFunction; data:pointer) : guint;
+  end;
+
+
+  TFPgtkDrawingArea = class (TFPgtkWidget)
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkDrawingArea;
+    procedure SetSize (Width:integer; Height:integer);
+  end;
+
+
+  TFPgtkCurve = class (TFPgtkDrawingArea)
+  Private
+    function GetCurveType : TGtkCurveType;
+    procedure SetCurveType (TheValue : TGtkCurveType);
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkCurve;
+    procedure SetRange (MinX:float; MaxX:float; MinY:float; MaxY:float);
+    procedure Reset;
+    procedure SetGamma (GammaValue:float);
+    property CurveType : TGtkCurveType read GetCurveType write SetCurveType;
+  end;
+
+  TFPgtkInsertSignalFunction = procedure (Sender:TFPgtkObject; NewText:string; TextLength:integer; var Position:integer; data:pointer) of Object;
+  TFPgtkDeleteSignalFunction = procedure (Sender:TFPgtkObject; StartPos:integer; EndPos:integer; data:pointer) of Object;
+  TFPgtkXYSignalFunction = procedure (Sender:TFPgtkObject; x:integer; y:integer; data:pointer) of Object;
+  TFPgtkDirectionSignalFunction = procedure (Sender:TFPgtkObject; Direction:integer; data:pointer) of Object;
+  TFPgtkMoveWordSignalFunction = procedure (Sender:TFPgtkObject; NumWords:integer; data:pointer) of Object;
+  TFPgtkMovetoSignalFunction = procedure (Sender:TFPgtkObject; MoveTo:integer; data:pointer) of Object;
+
+  TFPgtkEditable = class (TFPgtkWidget)
+  Private
+    function GetEditable : boolean;
+    procedure SetEditable (TheValue : boolean);
+    function GetVisible : boolean;
+    procedure SetVisible (TheValue : boolean);
+    function GetPosition : integer;
+    procedure SetPosition (TheValue : integer);
+    function GetSelectionStart : integer;
+    procedure SetSelectionStart (TheValue : integer);
+    function GetSelectionEnd : integer;
+    procedure SetSelectionEnd (TheValue : integer);
+    function GetSelection : string;
+  Protected
+    function GetHasSelection : boolean; Dynamic;
+    procedure SetSelection (TheValue:string); Dynamic;
+    function GetText : string; Dynamic;
+    procedure SetText (TheValue:string); Dynamic; Abstract;
+  Public
+    function TheGtkObject : PGtkEditable;
+    property HasSelection : boolean read GetHasSelection;
+    property Editable : boolean read GetEditable write SetEditable;
+    property Visible : boolean read GetVisible write SetVisible;
+    property Position : integer read GetPosition write SetPosition;
+    property SelectionStart : integer read GetSelectionStart write SetSelectionStart;
+    property SelectionEnd : integer read GetSelectionEnd write SetSelectionEnd;
+    property Selection : string read GetSelection write SetSelection;
+    property Text : string read GetText write SetText;
+    procedure Changed;
+    procedure InsertText (NewText:string; AtPosition:integer);
+    procedure DeleteText (StartPos:integer; EndPos:integer);
+    procedure GetChars (StartPos:integer; EndPos:integer);
+    procedure CutClipboard;
+    procedure CopyClipboard;
+    procedure PasteClipboard;
+    procedure SelectRegion (StartPos:integer; EndPos:integer);
+    procedure ClaimSelection (claim:boolean; time:guint32);
+    procedure DeleteSelection;
+    procedure Clear;
+    function InsertSignalConnect (Signal:string; Proc:TFPgtkInsertSignalFunction; data:pointer) : guint;
+    function InsertSignalConnectAfter (Signal:string; Proc:TFPgtkInsertSignalFunction; data:pointer) : guint;
+    function DeleteSignalConnect (Signal:string; Proc:TFPgtkDeleteSignalFunction; data:pointer) : guint;
+    function DeleteSignalConnectAfter (Signal:string; Proc:TFPgtkDeleteSignalFunction; data:pointer) : guint;
+    function XYSignalConnect (Signal:string; Proc:TFPgtkXYSignalFunction; data:pointer) : guint;
+    function XYSignalConnectAfter (Signal:string; Proc:TFPgtkXYSignalFunction; data:pointer) : guint;
+    function DirectionSignalConnect (Signal:string; Proc:TFPgtkDirectionSignalFunction; data:pointer) : guint;
+    function DirectionSignalConnectAfter (Signal:string; Proc:TFPgtkDirectionSignalFunction; data:pointer) : guint;
+    function MoveWordSignalConnect (Signal:string; Proc:TFPgtkMoveWordSignalFunction; data:pointer) : guint;
+    function MoveWordSignalConnectAfter (Signal:string; Proc:TFPgtkMoveWordSignalFunction; data:pointer) : guint;
+    function MovetoSignalConnect (Signal:string; Proc:TFPgtkMovetoSignalFunction; data:pointer) : guint;
+    function MovetoSignalConnectAfter (Signal:string; Proc:TFPgtkMovetoSignalFunction; data:pointer) : guint;
+    function ConnectChanged (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectAfterChanged (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectActivate (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectAfterActivate (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectInsertText (proc:TFPgtkInsertSignalFunction; data:pointer) : guint;
+    function ConnectAfterInsertText (proc:TFPgtkInsertSignalFunction; data:pointer) : guint;
+    function ConnectDeleteText (proc:TFPgtkDeleteSignalFunction; data:pointer) : guint;
+    function ConnectAfterDeleteText (proc:TFPgtkDeleteSignalFunction; data:pointer) : guint;
+    function ConnectSetEditable (proc:TFPgtkBooleanSignalFunction; data:pointer) : guint;
+    function ConnectAfterSetEditable (proc:TFPgtkBooleanSignalFunction; data:pointer) : guint;
+    function ConnectMoveCursor (proc:TFPgtkXYSignalFunction; data:pointer) : guint;
+    function ConnectAfterMoveCursor (proc:TFPgtkXYSignalFunction; data:pointer) : guint;
+    function ConnectMoveWord (proc:TFPgtkMoveWordSignalFunction; data:pointer) : guint;
+    function ConnectAfterMoveWord (proc:TFPgtkMoveWordSignalFunction; data:pointer) : guint;
+    function ConnectMovePage (proc:TFPgtkXYSignalFunction; data:pointer) : guint;
+    function ConnectAfterMovePage (proc:TFPgtkXYSignalFunction; data:pointer) : guint;
+    function ConnectMoveToRow (proc:TFPgtkMoveToSignalFunction; data:pointer) : guint;
+    function ConnectAfterMoveToRow (proc:TFPgtkMoveToSignalFunction; data:pointer) : guint;
+    function ConnectMoveToCol (proc:TFPgtkMoveToSignalFunction; data:pointer) : guint;
+    function ConnectAfterMoveToCol (proc:TFPgtkMoveToSignalFunction; data:pointer) : guint;
+    function ConnectKillChar (proc:TFPgtkDirectionSignalFunction; data:pointer) : guint;
+    function ConnectAfterKillChar (proc:TFPgtkDirectionSignalFunction; data:pointer) : guint;
+    function ConnectKillWord (proc:TFPgtkDirectionSignalFunction; data:pointer) : guint;
+    function ConnectAfterKillWord (proc:TFPgtkDirectionSignalFunction; data:pointer) : guint;
+    function ConnectKillLine (proc:TFPgtkDirectionSignalFunction; data:pointer) : guint;
+    function ConnectAfterKillLine (proc:TFPgtkDirectionSignalFunction; data:pointer) : guint;
+    function ConnectCutClipboard (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectAfterCutClipboard (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectCopyClipboard (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectAfterCopyClipboard (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectPasteClipboard (proc:TFPgtkSignalFunction; data:pointer) : guint;
+    function ConnectAfterPasteClipboard (proc:TFPgtkSignalFunction; data:pointer) : guint;
+  end;
+
+
+  TFPgtkEntry = class (TFPgtkEditable)
+  Private
+    function GetVisibility : boolean;
+    procedure SetVisibility (TheValue : boolean);
+    function GetMaxLength : word;
+    procedure SetMaxLength (TheValue : word);
+  Protected
+    procedure CreateGtkObject; override;
+    procedure SetText (TheValue:string); Override;
+  Public
+    function TheGtkObject : PGtkEntry;
+    procedure AppendText (aText:string);
+    procedure PrependText (aText:string);
+    property Visibility : boolean read GetVisibility write SetVisibility;
+    property MaxLength : word read GetMaxLength write SetMaxLength;
+  end;
+
+
+  TFPgtkSpinButton = class (TFPgtkEntry)
+  Private
+    function GetAdjustment : TFPgtkAdjustment;
+    procedure SetAdjustment (TheValue : TFPgtkAdjustment);
+    function GetClimbRate : gfloat;
+    procedure SetClimbRate (TheValue : gfloat);
+    function GetDigits : integer;
+    procedure SetDigits (TheValue : integer);
+    function GetAsInteger : integer;
+    procedure SetAsInteger (TheValue : integer);
+    function GetAsFloat : gfloat;
+    procedure SetAsFloat (TheValue : gfloat);
+    function GetUpdatePolicy : TGtkSpinButtonUpdatePolicy;
+    procedure SetUpdatePolicy (TheValue : TGtkSpinButtonUpdatePolicy);
+    function GetNumeric : boolean;
+    procedure SetNumeric (TheValue : boolean);
+    function GetWrap : boolean;
+    procedure SetWrap (TheValue : boolean);
+    function GetShadowType : TGtkShadowType;
+    procedure SetShadowType (TheValue : TGtkShadowType);
+    function GetSnapToTicks : boolean;
+    procedure SetSnapToTicks (TheValue : boolean);
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkSpinButton;
+    procedure Configure (Adj:TFPgtkAdjustment; aClimbRate:gfloat; aDigits:integer);
+    property Adjustment : TFPgtkAdjustment read GetAdjustment write SetAdjustment;
+    property ClimbRate : gfloat read GetClimbRate write SetClimbRate;
+    property Digits : integer read GetDigits write SetDigits;
+    property AsInteger : integer read GetAsInteger write SetAsInteger;
+    property AsFloat : gfloat read GetAsFloat write SetAsFloat;
+    property UpdatePolicy : TGtkSpinButtonUpdatePolicy read GetUpdatePolicy write SetUpdatePolicy;
+    property Numeric : boolean read GetNumeric write SetNumeric;
+    procedure Spin (direction:TGtkSpinType; increment:gfloat);
+    property Wrap : boolean read GetWrap write SetWrap;
+    property ShadowType : TGtkShadowType read GetShadowType write SetShadowType;
+    property SnapToTicks : boolean read GetSnapToTicks write SetSnapToTicks;
+    procedure Update;
+  end;
+
+
+  TFPgtkText = class (TFPgtkEditable)
+  Private
+    FLines:TStrings;
+    FIsChanged:boolean;
+    procedure SigChanged (Sender:TFPgtkObject; data:pointer);
+    function GetLines : TStrings;
+    function GetWordWrap : boolean;
+    procedure SetWordWrap (TheValue : boolean);
+    function GetLineWrap : boolean;
+    procedure SetLineWrap (TheValue : boolean);
+    function GetPoint : integer;
+    procedure SetPoint (TheValue : integer);
+    function GetHAdjustment : TFPgtkAdjustment;
+    procedure SetHAdjustment (TheValue : TFPgtkAdjustment);
+    function GetVAdjustment : TFPgtkAdjustment;
+    procedure SetVAdjustment (TheValue : TFPgtkAdjustment);
+  Protected
+    procedure CreateGtkObject; override;
+    procedure RefreshLines;
+    procedure SetText (TheValue:string); Override;
+  Public
+    function TheGtkObject : PGtkText;
+    constructor Create;
+    destructor Destroy; Override;
+    property Lines : TStrings read GetLines;
+    procedure Freeze;
+    procedure Thaw;
+    function TextLength : guint;
+    procedure Insert (font:PgdkFont; fore:PgdkColor; back:PgdkColor; TheText:string);
+    procedure DeleteBackward (number:longword);
+    procedure DeleteForward (number:longword);
+    property WordWrap : boolean read GetWordWrap write SetWordWrap;
+    property LineWrap : boolean read GetLineWrap write SetLineWrap;
+    property Point : integer read GetPoint write SetPoint;
+    procedure SetAdjustments (hadj:TFPgtkAdjustment; vadj:TFPgtkAdjustment);
+    property HAdjustment : TFPgtkAdjustment read GetHAdjustment write SetHAdjustment;
+    property VAdjustment : TFPgtkAdjustment read GetVAdjustment write SetVAdjustment;
+  end;
+
+
+  TFPgtkRuler = class (TFPgtkWidget)
+  Public
+    function TheGtkObject : PGtkRuler;
+    procedure SetMetric (aMetric:TGtkMetricType);
+    procedure SetRange (Lower:float; Upper:float; Position:float; MaxSize:float);
+  end;
+
+
+  TFPgtkHRuler = class (TFPgtkRuler)
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkHRuler;
+  end;
+
+
+  TFPgtkVRuler = class (TFPgtkRuler)
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkVRuler;
+  end;
+
+
+  TFPgtkRange = class (TFPgtkWidget)
+  Private
+    function GetAdjustment : TFPgtkAdjustment;
+    procedure SetAdjustment (TheValue : TFPgtkAdjustment);
+    function GetUpdatePolicy : TgtkUpdateType;
+    procedure SetUpdatePolicy (TheValue : TgtkUpdateType);
+  Protected
+    FAdj:TFPgtkAdjustment;
+  Public
+    function TheGtkObject : PGtkRange;
+    property Adjustment : TFPgtkAdjustment read GetAdjustment write SetAdjustment;
+    property UpdatePolicy : TgtkUpdateType read GetUpdatePolicy write SetUpdatePolicy;
+    constructor Create (AnAdjustment:TFPgtkAdjustment);
+    procedure DrawBackground;
+    procedure DrawTrough;
+    procedure DrawStepForw;
+    procedure DrawStepBack;
+    procedure DrawSlider;
+    procedure SliderUpdate;
+    function TroughClick (X:integer; Y:integer; var JumpPerc:gfloat) : integer;
+    procedure DefaultHSliderUpdate;
+    procedure DefaultVSliderUpdate;
+    function DefaultHTroughClick (X:integer; Y:integer; var JumpPerc:gfloat) : integer;
+    function DefaultVTroughClick (X:integer; Y:integer; var JumpPerc:gfloat) : integer;
+    procedure defaultHMotion (XDelta:integer; YDelta:integer);
+    procedure defaultVMotion (XDelta:integer; YDelta:integer);
+    procedure ClearBackground;
+  end;
+
+
+  TFPgtkScale = class (TFPgtkRange)
+  Private
+    function GetDrawValue : boolean;
+    procedure SetDrawValue (TheValue : boolean);
+    function GetValuePos : TGtkPositionType;
+    procedure SetValuePos (TheValue : TGtkPositionType);
+  Public
+    function TheGtkObject : PGtkScale;
+    procedure SetDigits (TheValue:integer);
+    property DrawValue : boolean read GetDrawValue write SetDrawValue;
+    property ValuePos : TGtkPositionType read GetValuePos write SetValuePos;
+  end;
+
+
+  TFPgtkHScale = class (TFPgtkScale)
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkHScale;
+  end;
+
+
+  TFPgtkVScale = class (TFPgtkScale)
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkVScale;
+  end;
+
+
+  TFPgtkScrollbar = class (TFPgtkRange)
+  Public
+    function TheGtkObject : PGtkScrollbar;
+  end;
+
+
+  TFPgtkHScrollbar = class (TFPgtkScrollbar)
+  Protected
+    procedure CreateGtkObject; Override;
+  Public
+    function TheGtkObject : PGtkHScrollbar;
+  end;
+
+
+  TFPgtkVScrollbar = class (TFPgtkScrollbar)
+  Protected
+    procedure CreateGtkObject; Override;
+  Public
+  end;
+
+
+  TFPgtkSeparator = class (TFPgtkWidget)
+  Public
+    function TheGtkObject : PGtkSeparator;
+  end;
+
+
+  TFPgtkHSeparator = class (TFPgtkSeparator)
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkHSeparator;
+  end;
+
+
+  TFPgtkVSeparator = class (TFPgtkSeparator)
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkVSeparator;
+  end;
+
+
+  TFPgtkPreview = class (TFPgtkWidget)
+  Private
+    function GetExpand : longbool;
+    procedure SetExpand (TheValue : longbool);
+    function GetDither : TGdkRgbDither;
+    procedure SetDither (TheValue : TGdkRgbDither);
+  Protected
+    procedure CreateGtkObject; override;
+  Public
+    function TheGtkObject : PGtkPreview;
+    procedure Size (aWidth:integer; aHeight:integer);
+    procedure Put (aWindow:PGdkWindow; gc:PGdkGC; SrcX:integer; SrcY:integer; destX:integer; DestY:integer; aWidth:integer; aHeight:integer);
+    procedure DrawRow (data:pguchar; X:integer; Y:integer; W:integer);
+    property Expand : longbool read GetExpand write SetExpand;
+    property Dither : TGdkRgbDither read GetDither write SetDither;
+  end;
+
+
+  TFPgtkProgress = class (TFPgtkWidget)
+  Private
+    function GetShowtext : longbool;
+    procedure SetShowtext (TheValue : longbool);
+    function GetTextXAlign : gfloat;
+    procedure SetTextXAlign (TheValue : gfloat);
+    function GetTextYAlign : gfloat;
+    procedure SetTextYAlign (TheValue : gfloat);
+    function GetCurrentValue : float;
+    procedure SetCurrentValue (TheValue : float);
+    function GetPercentage : float;
+    procedure SetPercentage (TheValue : float);
+    function GetFormatString : string;
+    procedure SetFormatString (TheValue : string);
+    function GetAdjustment : TFPgtkAdjustment;
+    procedure SetAdjustment (TheValue : TFPgtkAdjustment);
+    function GetActivityMode : longbool;
+    procedure SetActivityMode (TheValue : longbool);
+  Public
+    function TheGtkObject : PGtkProgress;
+    property Showtext : longbool read GetShowtext write SetShowtext;
+    property TextXAlign : gfloat read GetTextXAlign write SetTextXAlign;
+    property TextYAlign : gfloat read GetTextYAlign write SetTextYAlign;
+    procedure SetTextAlignment (anXalign:gfloat; anYAlign:gfloat);
+    property CurrentValue : float read GetCurrentValue write SetCurrentValue;
+    property Percentage : float read GetPercentage write SetPercentage;
+    function PercentageFromValue (aValue:gfloat) : gfloat;
+    property FormatString : string read GetFormatString write SetFormatString;
+    property Adjustment : TFPgtkAdjustment read GetAdjustment write SetAdjustment;
+    property ActivityMode : longbool read GetActivityMode write SetActivityMode;
+    function CurrentText : string;
+    function TextFromValue (aValue:gfloat) : string;
+    procedure Configure (aValue:gfloat; aMin:gfloat; aMax:gfloat);
+  end;
+
+
+  TFPgtkProgressBar = class (TFPgtkProgress)
+  Private
+    FAdj:TFPgtkAdjustment;
+    function GetBarStyle : TGtkProgressBarStyle;
+    procedure SetBarStyle (TheValue : TGtkProgressBarStyle);
+    function GetDiscreteBlocks : longword;
+    procedure SetDiscreteBlocks (TheValue : longword);
+    function GetActivityStep : longword;
+    procedure SetActivityStep (TheValue : longword);
+    function GetActivityBlocks : longword;
+    procedure SetActivityBlocks (TheValue : longword);
+    function GetOrientation : TGtkProgressBarOrientation;
+    procedure SetOrientation (TheValue : TGtkProgressBarOrientation);
+  Protected
+    procedure CreateGtkObject; Override;
+  Public
+    function TheGtkObject : PGtkProgressBar;
+    constructor Create (adj:TFPgtkAdjustment);
+    property BarStyle : TGtkProgressBarStyle read GetBarStyle write SetBarStyle;
+    property DiscreteBlocks : longword read GetDiscreteBlocks write SetDiscreteBlocks;
+    property ActivityStep : longword read GetActivityStep write SetActivityStep;
+    property ActivityBlocks : longword read GetActivityBlocks write SetActivityBlocks;
+    property Orientation : TGtkProgressBarOrientation read GetOrientation write SetOrientation;
+  end;
+
+
+  TFPgtkItemFactory = class (TFPgtkObject)
+  Public
+  end;
+
+{ TFPgtkToolTips }
+var 
+  TheTooltips : TFPgtkTooltips;
+{ TFPgtkButton }
+const
+  DefaultButtonModifiers : TGdkModifierType = GDK_MOD1_MASK;
+{ TFPgtkWindow }
+const
+  drNone = 0;
+  drOk = 1;
+  drCancel = 2;
+  drYes = 3;
+  drNo = 4;
+  drRetry = 5;
+  NoMainLevel = high (guint);
+{ TFPgtkFontSelection }
+resourcestring
+  sFontNotFound = 'Can''t find font "%s" on this system';
+
+Const
+// TFPgtkObject
+  sgDestroy = 'destroy';
+// TFPgtkData
+  sgDisconnect = 'disconnect';
+// TFPgtkAdjustment
+  sgValueChanged = 'value_changed';
+  sgChanged = 'changed';
+// TFPgtkWidget
+  sgShow = 'show';
+  sghide = 'hide';
+  sgmap = 'map';
+  sgunmap = 'unmap';
+  sgrealize = 'realize';
+  sgunrealize = 'unrealize';
+  sgDrawFocus = 'draw-focus';
+  sgDrawDefault = 'draw-defaut';
+  sgParentSet = 'parent-set';
+  sgGrabFocus = 'grab-focus';
+  sgEvent = 'event';
+  sgButtonPressEvent = 'button-press-event';
+  sgButtonReleaseEvent = 'button-release-event';
+  sgMotionNotifyEvent = 'motion-notify-event';
+  sgDeleteEvent = 'delete-event';
+  sgDestroyEvent = 'destroy-event';
+  sgExposeEvent = 'expose-event';
+  sgKeyPressEvent = 'key-press-event';
+  sgKeyReleaseEvent = 'key-release-event';
+  sgEnterNotifyEvent = 'enter-notify-event';
+  sgLeaveNotifyEvent = 'leave-notify-event';
+  sgConfigureEvent = 'configure-event';
+  sgFocusInEvent = 'focus-in-event';
+  sgFocusOutEvent = 'focus-out-event';
+  sgMapEvent = 'map-event';
+  sgUnmapEvent = 'unmap-event';
+  sgPropertyNotifyEvent = 'property-notify-event';
+  sgSelectionClearEvent = 'selection-clear-event';
+  sgSelectionRequestEvent = 'selection-request-event';
+  sgSelectionNotifyEvent = 'selection-notify-event';
+  sgProximityInEvent = 'proximity-in-event';
+  sgProximityOutEvent = 'proximity-out-event';
+  sgClientEvent = 'client-event';
+  sgNoExposeEvent = 'no-expose-event';
+  sgVisibilityNotifyEvent = 'visibility-notify-event';
+// TFPgtkContainer
+  sgAdd = 'add';
+  sgRemove = 'remove';
+  sgCheckResize = 'check-resize';
+  sgFocus = 'focus';
+  sgSetFocusChild = 'set-focus';
+// TFPgtkButton
+  sgClicked = 'clicked';
+  sgPressed = 'pressed';
+  sgReleased = 'released';
+  sgEnter = 'enter';
+  sgLeave = 'leave';
+// TFPgtkToggleButton
+  sgToggled = 'toggled';
+// TFPgtkItem
+  sgSelect = 'select';
+  sgDeselect = 'deselect';
+  sgToggle = 'toggle';
+// TFPgtkMenuItem
+  sgActivate = 'activate';
+  sgActivateItem = 'activate-item';
+// TFPgtkListItem
+  sgToggleFocusRow = 'toggle-focus-row';
+  sgSelectAll = 'select-all';
+  sgUnselectAll = 'unselect-all';
+  sgUndoSelection = 'undo-selection';
+  sgStartSelection = 'start-selection';
+  sgEndSelection = 'end-selection';
+  sgToggleAddMode = 'toggle-add-mode';
+  sgExtendSelection = 'extend-selection';
+  sgScrollVertical = 'scroll-vertical';
+  sgScrollHorizontal = 'scroll-horizontal';
+// TFPgtkTreeItem
+  sgCollapse = 'collapse';
+  sgExpand = 'expand';
+// TFPgtkWindow
+  sgSetFocus = 'set-focus';
+// TFPgtkInputDialog
+  sgEnableDevice = 'enable-device';
+  sgDisableDevice = 'disable-device';
+// TFPgtkHandleBox
+  sgChildAttached = 'child-attached';
+  sgChildDetached = 'child-detached';
+// TFPgtkStatusbar
+  sgTextPopped = 'text-popped';
+  sgTextPushed = 'test-pushed';
+// TFPgtkCList
+  sgSelectRow = 'select-row';
+  sgUnselectRow = 'unselect-row';
+  sgRowMove = 'row-move';
+  sgScrolHorizontal = 'scroll-horizontal';
+  sgAbortColumnResize = 'abort-column-resize';
+  sgClickColumn = 'click-column';
+  sgResizeColumn = 'resize-column';
+// TFPgtkNotebook
+  sgSwitchPage = 'switch-page';
+// TFPgtkList
+  sgSelectionChanged = 'selection-changed';
+  sgSelectChild = 'select-child';
+  sgUnselectChild = 'unselect-child';
+// TFPgtkMenuShell
+  sgDeActivate = 'deactivate';
+  sgSelectionDone = 'selection-done';
+  sgCancel = 'cancel';
+  sgMoveCurrent = 'move-current';
+  sgActivateCurrent = 'activate-current';
+// TFPgtkCalendar
+  sgMonthChanged = 'month-changed';
+  sgDaySelected = 'day-selected';
+  sgDaySelectedDoubleClick = 'day-selected-double-click';
+  sgPrevMonth = 'prev-month';
+  sgNextMonth = 'next-month';
+  sgPrevYear = 'prev-year';
+  sgNextYear = 'next-year';
+// TFPgtkEditable
+  sgInsertText = 'insert-text';
+  sgDeleteText = 'delete-text';
+  sgSetEditable = 'set-editable';
+  sgMoveCursor = 'move-cursor';
+  sgMoveWord = 'move-word';
+  sgMovePage = 'move-page';
+  sgMoveToRow = 'move-to-row';
+  sgMoveToCol = 'move-to-column';
+  sgKillChar = 'kill-char';
+  sgKillWord = 'kill-word';
+  sgKillLine = 'kill-line';
+  sgCutClipboard = 'cut-clipboard';
+  sgCopyClipboard = 'copy-clipboard';
+  sgPasteClipboard = 'paste-clipboard';
+
+// TFPgtkObject
+function GetPascalInstance (gtkObject:PGtkObject; ObjClass:TFPgtkObjectClass) : TFPgtkObject; Overload;
+function GetPascalInstance (gtkObject:PGtkObject) : TFPgtkObject; Overload;
+function ConvertToGtkObject (AnObject:TFPgtkObject) : PGtkObject;
+function ConvertToPgChar (AString:string) : PgChar;
+function FreeFPgtkObjects (Data:pointer) : longbool; Cdecl;
+procedure DestroyData (data:pointer); Cdecl;
+function IntToPointer (Value:integer) : pointer;
+function PointerToInt (Value:pointer) : integer;
+// TFPgtkToolTips
+function GetTooltipsData (Widget:TFPgtkWidget) : PGtkTooltipsData;
+function ComposeTooltip (TooltipText:string; PrivText:string) : string;
+procedure DecomposeTooltip (Tooltip:string; var TooltipText:string; var PrivText:string);
+// TFPgtkWidget
+function GetPascalInstance (Widget:PGtkWidget) : TFPgtkWidget; Overload;
+function GetPascalInstance (Widget:PGtkWidget; ObjClass:TFPgtkObjectClass) : TFPgtkWidget; Overload;
+function ConvertToGtkWidget (AnObject:TFPgtkWidget) : PGtkWidget;
+// TFPgtkImage
+function NewImage (aWidth:integer; aHeight:integer) : PGdkImage;
+// TFPgtkPixmap
+function StringsToPPgchar (Data:TStrings) : PPgchar;
+function ArrayToPPgchar (Data:array of string) : PPgchar;
+procedure CreateGdkPixmap (var ThePixmap:PGdkPixmap; var TheMask:PGdkBitmap; aWindow:PGdkWindow; data:array of string);
+// TFPgtkRadioButtonGroup
+function RadioButtonGroupCreateFromStrings (TheItems:TStrings; ToggledFunction:TFPgtkSignalFunction) : TFPgtkRadioButtonGroup;
+// TFPgtkWindow
+procedure AcceleratorAdd (AG:PGtkAccelGroup; aWidget:TFPgtkWidget; aSignal:string; Key:guint; Mods:TGdkModifierType; Flags:TGtkAccelFlags);
+procedure AcceleratorRemove (AG:PGtkAccelGroup; aWidget:TFPgtkWidget; Key:guint; Mods:TGdkModifierType); Overload;
+procedure AccelGroupLock (AG:PGtkAccelGroup);
+procedure AccelGroupUnlock (AG:PGtkAccelGroup);
+function AccelKeyName (Key:guint; Mods:TGdkModifierType) : string;
+procedure AccelKeyParse (AccelName:string; var Key:guint; var Mods:TGdkModifierType);
+procedure AccelGroupActivate (AG:PGtkAccelGroup; Key:guint; Mods:TGdkModifierType);
+// TFPgtkButtonBox
+procedure SetButtonBoxDefaultSize (aMinWidth:integer; aMinHeight:integer);
+procedure GetButtonBoxDefaultSize (var aMinWidth:integer; var aMinHeight:integer);
+procedure SetButtonBoxDefaultPadding (aIPadX:integer; aIPadY:integer);
+procedure GetButtonBoxDefaultPadding (var aIPadX:integer; var aIPadY:integer);
+// TFPgtkPreview
+procedure SetGamma (aGamma:double);
+
+IMPLEMENTATION
+
+ { TFPgtkObject }
+
+function TFPgtkObject.TheGtkObject : PGtkObject;
+begin
+  result := PgtkObject(FGtkObject);
+end;
+
+const
+  dtPascalInstance = 'Pascal_Instance';
+
+type
+  TIntegerPointer = record
+    case word of 
+      0 : (i : integer);
+      1 : (p : pointer);
+  end;
+
+var
+  ObjectsToFree : TList;
+  ip : TIntegerPointer;
+
+procedure Signalproc (Sender:PGtkobject; Data:pointer); cdecl;
+var p : TFPgtkSignalFunction;
+begin
+with PSignalData(data)^ do
+  begin
+  p := TFPgtkSignalFunction (TheSignalProc);
+  p (TheWidget as TFPgtkObject, TheData)
+  end;
+end;
+
+function TFPgtkObject.SignalConnect (signal:string; proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@Signalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkObject.SignalConnectAfter (signal:string; proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@Signalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+procedure BooleanSignalproc (Sender:PGtkobject; Bool:boolean; data:pointer); cdecl;
+var p : TFPgtkBooleanSignalFunction;
+begin
+with PSignalData(data)^ do
+  begin
+  p := TFPgtkBooleanSignalFunction (TheSignalProc);
+  p (TheWidget as TFPgtkObject, Bool, TheData)
+  end;
+end;
+
+function TFPgtkObject.BooleanSignalConnect (signal:string; proc:TFPgtkBooleanSignalFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@BooleanSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkObject.BooleanSignalConnectAfter (signal:string; proc:TFPgtkBooleanSignalFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@BooleanSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function GetPascalInstance (gtkObject:PGtkObject; ObjClass:TFPgtkObjectClass) : TFPgtkObject; Overload;
+begin
+  result := GetPascalInstance(GtkObject);
+  if not assigned(result) and assigned(GtkObject) then
+    result := ObjClass.CreateFromObject (GtkObject);
+end;
+
+
+function GetPascalInstance (gtkObject:PGtkObject) : TFPgtkObject; Overload;
+var p : pointer;
+begin
+  result := nil;
+  if assigned (gtkobject) then
+    begin
+    p := gtk_object_get_data (gtkObject, dtPascalInstance);
+    if assigned(p) then
+      result := PPascalClassData(p)^.TheInstance;
+    end;
+end;
+
+
+function ConvertToGtkObject (AnObject:TFPgtkObject) : PGtkObject;
+begin
+  if assigned(AnObject) then
+    result := AnObject.TheGtkObject
+  else
+    result := nil;
+end;
+
+
+function ConvertToPgChar (AString:string) : PgChar;
+begin
+  result := pointer(aString);
+end;
+
+
+function TFPgtkObject.ConvertSignalData (proc:TFPgtkSignalFunction; data:pointer; FreeIt:boolean) : PSignalData;
+begin
+  new (result);
+  with result^ do
+    begin
+    TheSignalProc := proc;
+    TheWidget := self;
+    TheData := data;
+    end;
+  if FreeIt then
+    SignalDatas.Add (result);
+end;
+
+function FreeFPgtkObjects (Data:pointer) : longbool; Cdecl;
+var r : integer;
+    obj : TFPgtkObject;
+begin
+  for r := ObjectsToFree.Count-1 downto 0 do
+    begin
+    obj := TFPgtkObject(ObjectsToFree[r]);
+    if assigned (Obj) then
+      Obj.Free;
+    end;
+  ObjectsToFree.Clear;
+  result := False;
+end;
+
+
+procedure TFPgtkObject.FreeClass (Sender:TFPgtkObject; Data:pointer);
+begin
+  if FDestroying = dsAlive then
+    begin
+    if ObjectsToFree.Count = 0 then
+      g_idle_Add (@FreeFPgtkObjects, null);
+    ObjectsToFree.Add (self);
+    FGtkObject := null;
+    FDestroying := dsWaiting;
+    end;
+end;
+
+procedure TFPgtkObject.CheckConvertDatas;
+begin
+  if not assigned (ConvertDatas) then
+    begin
+    ConvertDatas := TStringList.Create;
+    ConvertDatas.Sorted := True;
+    end;
+end;
+
+procedure TFPgtkObject.CheckNotifyList;
+begin
+  if not assigned (Notifylist) then
+    NotifyList := TList.Create;
+end;
+
+procedure TFPgtkObject.InitCreate;
+begin
+  inherited create;
+  SignalDatas := TList.Create;
+end;
+
+procedure TFPgtkObject.FinalCreate;
+begin
+  PascalInstance.TheInstance := Self;
+  SetData (dtPascalInstance, @PascalInstance);
+  ConnectDestroy (@FreeClass, nil);
+end;
+
+constructor TFPgtkObject.Create;
+begin
+  InitCreate;
+  CreateGtkObject;
+  FinalCreate;
+end;
+
+
+constructor TFPgtkObject.CreateFromObject (GtkObject:PGtkObject);
+begin
+  InitCreate;
+  FGtkObject := GtkObject;
+  FinalCreate;
+end;
+
+
+procedure TFPgtkObject.AskNotification (AnObject:TFPgtkObject);
+begin
+  CheckNotifyList;
+  with NotifyList do
+    if indexof(AnObject) < 0 then
+      begin
+      Add (AnObject);
+      AnObject.AskNotification (Self);
+      end;
+end;
+
+destructor TFPgtkObject.Destroy;
+var r : integer;
+    datapointer : PSignalData;
+begin
+  FDestroying := dsDestroying;
+  if assigned(NotifyList) then
+    begin
+    for r := 0 to NotifyList.count-1 do
+      TFPgtkObject(NotifyList[r]).NotifyDestroy (Self);
+    NotifyList.Free;
+    NotifyList := nil;
+    end;
+  if assigned(FGtkObject) and not Gtk_Object_destroyed(FGtkObject) then
+    begin
+    gtk_object_destroy (FGtkObject);
+    FGtkObject := nil;
+    end;
+  for r := 0 to SignalDatas.count-1 do
+    begin
+    datapointer := signaldatas[r];
+    dispose (datapointer);
+    end;
+  signaldatas.Free;
+  if assigned (convertDatas) then
+    ConvertDatas.Free;
+  r := ObjectsToFree.indexof (self);
+  if r >= 0 then
+    ObjectsToFree[r] := nil;
+  inherited destroy;
+end;
+
+
+procedure TFPgtkObject.NotifyDestroy (AnObject:TFPgtkObject);
+var r : integer;
+begin
+  if assigned(NotifyList) then
+    begin
+    r := NotifyList.indexOf (AnObject);
+    if r >= 0 then
+      NotifyList.Delete (r);
+    end;
+end;
+
+function TFPgtkObject.ConnectDestroy (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnect (sgDestroy, proc, data);
+end;
+
+function TFPgtkObject.ConnectAfterDestroy (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnectAfter (sgDestroy, proc, data);
+end;
+
+procedure TFPgtkObject.SignalDisconnect (SignalHandler:guint);
+begin
+  gtk_signal_disconnect (TheGtkObject, SignalHandler);
+end;
+
+procedure TFPgtkObject.SignalBlockHandler (SignalHandler:guint);
+begin
+  gtk_signal_handler_block (TheGtkObject, SignalHandler);
+end;
+
+procedure TFPgtkObject.SignalUnblockHandler (SignalHandler:guint);
+begin
+  gtk_signal_handler_unblock (TheGtkObject, SignalHandler);
+end;
+
+procedure TFPgtkObject.SignalEmit (aName:string; Args:array of const);
+begin
+  gtk_signal_emit_by_name (TheGtkObject, pgchar(aName), Args);
+end;
+
+function TFPgtkObject.SignalNEmissions (aName:string) : guint;
+begin
+  result := gtk_signal_n_emissions_by_name (FGtkObject, pgchar(aName));
+end;
+
+procedure TFPgtkObject.SignalEmitStop (aName:string);
+begin
+  gtk_signal_emit_stop_by_name (FGtkObject, pgchar(aName));
+end;
+
+procedure TFPgtkObject.SetData (Key:string; Data:pointer);
+begin
+  gtk_object_set_data (TheGtkObject, ConvertToPgchar(Key), Data);
+end;
+
+function TFPgtkObject.GetUserData : pointer;
+begin
+  result := gtk_object_get_user_data(TheGtkObject);
+end;
+
+procedure TFPgtkObject.SetUserData (TheValue:pointer);
+begin
+  gtk_object_set_user_data(TheGtkObject,TheValue);
+end;
+
+procedure TFPgtkObject.SetDataFull (Key:string; Data:pointer; Destroyer:TFPgtkSignalFunction);
+begin
+  gtk_object_set_data_full (TheGtkObject, pgChar(Key), ConvertSignalData (Destroyer, data, false), TGtkDestroyNotify(@DestroyData));
+  CheckConvertDatas;
+  ConvertDatas.Add (Key);
+end;
+
+procedure TFPgtkObject.RemoveData (Key:string);
+var r : integer;
+begin
+  gtk_object_remove_data (TheGtkObject, pgChar(Key));
+  if assigned (ConvertDatas) then
+    begin
+    r := ConvertDatas.indexof (Key);
+    if r >= 0 then
+    ConvertDatas.Delete (r);
+    end;
+end;
+
+function TFPgtkObject.GetData (Key:string) : pointer;
+var p  : pointer;
+begin
+  p := gtk_object_get_data (TheGtkObject, pgChar(Key));
+  if assigned(ConvertDatas) and (ConvertDatas.IndexOf (Key) >= 0) then
+    result := PPascalClassData (PSignalData(p)^.TheData)^.TheInstance
+  else
+    result := p;
+end;
+
+procedure DestroyData (data:pointer); Cdecl;
+begin
+  with PSignaldata(data)^ do
+    TheSignalProc (TheWidget, TheData);
+end;
+
+
+function IntToPointer (Value:integer) : pointer;
+begin
+  ip.i := Value;
+  result := ip.p;
+end;
+
+
+function PointerToInt (Value:pointer) : integer;
+begin
+  ip.p := Value;
+  result := ip.i;
+end;
+
+
+function TFPgtkObject.GtkDestroyed : boolean;
+begin
+  result := gtk_object_destroyed (TheGtkObject);
+end;
+
+procedure TFPgtkObject.Constructed;
+begin
+  gtk_object_constructed (TheGtkObject);
+end;
+
+procedure TFPgtkObject.ConstructedDefault;
+begin
+  gtk_object_default_construct (TheGtkObject);
+end;
+
+procedure TFPgtkObject.Sink;
+begin
+  gtk_object_sink (TheGtkObject);
+end;
+
+procedure TFPgtkObject.Ref;
+begin
+  gtk_object_ref (TheGtkObject);
+end;
+
+procedure TFPgtkObject.Unref;
+begin
+  gtk_object_unref (TheGtkObject);
+end;
+
+procedure TFPgtkObject.WeakRef (Notify:TFPgtkSignalFunction; data:pointer);
+begin
+  gtk_object_weakref (TheGtkObject, TGtkDestroyNotify(@DestroyData), ConvertSignalData (Notify, data, true));
+end;
+
+procedure TFPgtkObject.WeakUnref (notify:TFPgtkSignalFunction; data:pointer);
+begin
+  gtk_object_weakunref (TheGtkObject, TGtkDestroyNotify(@DestroyData), ConvertSignalData (Notify, data, true));
+end;
+
+ { TFPgtkData }
+
+function TFPgtkData.TheGtkObject : PGtkData;
+begin
+  result := PgtkData(FGtkObject);
+end;
+
+
+function TFPgtkData.ConnectDisconnect (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnect (sgDisconnect, proc, data);
+end;
+
+function TFPgtkData.ConnectAfterDisconnect (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnectAfter (sgDisconnect, proc, data);
+end;
+
+ { TFPgtkAdjustment }
+
+function TFPgtkAdjustment.TheGtkObject : PGtkAdjustment;
+begin
+  result := PgtkAdjustment(FGtkObject);
+end;
+
+procedure TFPgtkAdjustment.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_Adjustment_new (0,0,10,1,2,2));
+end;
+
+
+procedure TFPgtkAdjustment.Configure (aLower:gfloat; anUpper:gfloat; aValue:gfloat; aStepInc:gfloat; aPageInc:gfloat; aPageSize:gfloat);
+begin
+  Lower := aLower;
+  Upper := anUpper;
+  Value := aValue;
+  StepIncrement := aStepInc;
+  PageIncrement := aPageInc;
+  PageSize := aPageSize;
+end;
+
+function TFPgtkAdjustment.ConnectValueChanged (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnect (sgValueChanged, proc, data);
+end;
+
+function TFPgtkAdjustment.ConnectAfterValueChanged (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnectAfter (sgValueChanged, proc, data);
+end;
+
+function TFPgtkAdjustment.ConnectChanged (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnect (sgChanged, proc, data);
+end;
+
+function TFPgtkAdjustment.ConnectAfterChanged (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnectAfter (sgChanged, proc, data);
+end;
+
+procedure TFPgtkAdjustment.ValueChanged;
+begin
+  gtk_Adjustment_Value_Changed (TheGtkObject);
+end;
+
+procedure TFPgtkAdjustment.Changed;
+begin
+  gtk_Adjustment_Changed (TheGtkObject);
+end;
+
+procedure TFPgtkAdjustment.ClampPage (aLower:gfloat; aUpper:gfloat);
+begin
+  gtk_Adjustment_Clamp_Page (TheGtkObject, aLower, aUpper);
+end;
+
+function TFPgtkAdjustment.GetValue : gfloat;
+begin
+  result := TheGtkObject^.Value;
+end;
+
+procedure TFPgtkAdjustment.SetValue (TheValue:gfloat);
+begin
+  gtk_Adjustment_set_Value(TheGtkObject,TheValue);
+end;
+
+function TFPgtkAdjustment.GetLower : gfloat;
+begin
+  result := TheGtkObject^.Lower;
+end;
+
+procedure TFPgtkAdjustment.SetLower (TheValue:gfloat);
+begin
+  TheGtkObject^.Lower := TheValue;
+end;
+
+function TFPgtkAdjustment.GetUpper : gfloat;
+begin
+  result := TheGtkObject^.Upper;
+end;
+
+procedure TFPgtkAdjustment.SetUpper (TheValue:gfloat);
+begin
+  TheGtkObject^.Upper := TheValue;
+end;
+
+function TFPgtkAdjustment.GetStepIncrement : gfloat;
+begin
+  result := TheGtkObject^.Step_Increment;
+end;
+
+procedure TFPgtkAdjustment.SetStepIncrement (TheValue:gfloat);
+begin
+  TheGtkObject^.Step_Increment := TheValue;
+end;
+
+function TFPgtkAdjustment.GetPageIncrement : gfloat;
+begin
+  result := TheGtkObject^.Page_Increment;
+end;
+
+procedure TFPgtkAdjustment.SetPageIncrement (TheValue:gfloat);
+begin
+  TheGtkObject^.Page_increment := TheValue;
+end;
+
+function TFPgtkAdjustment.GetPageSize : gfloat;
+begin
+  result := TheGtkObject^.Page_Size;
+end;
+
+procedure TFPgtkAdjustment.SetPageSize (TheValue:gfloat);
+begin
+  TheGtkObject^.Page_Size := TheValue;
+end;
+
+ { TFPgtkToolTips }
+
+function TFPgtkToolTips.TheGtkObject : PGtkToolTips;
+begin
+  result := PgtkToolTips(FGtkObject);
+end;
+
+procedure TFPgtkToolTips.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_tooltips_new);
+end;
+
+
+procedure TFPgtkToolTips.SetColors (Fore:PGdkColor; Back:PGdkColor);
+begin
+  gtk_tooltips_set_colors (TheGtkObject, Fore, Back);
+end;
+
+procedure TFPgtkToolTips.SetTip (Widget:TFPgtkWidget; TipText:string; TipPrivate:string);
+begin
+  gtk_tooltips_set_tip (TheGtkObject, PGtkwidget(ConvertToGtkObject(Widget)), ConvertToPgchar(TipText), ConvertToPgchar(TipPrivate));
+end;
+
+function TFPgtkToolTips.GetEnabled : boolean;
+begin
+  result := boolean(gtk.enabled(TheGtkObject^));
+end;
+
+procedure TFPgtkToolTips.SetEnabled (TheValue:boolean);
+begin
+  if TheValue then
+    gtk_tooltips_enable (TheGtkObject)
+  else
+    gtk_tooltips_disable (TheGtkObject);
+end;
+
+function TFPgtkToolTips.GetDelay : integer;
+begin
+  result := gtk.delay(TheGtkObject^);
+end;
+
+procedure TFPgtkToolTips.SetDelay (TheValue:integer);
+begin
+  gtk_tooltips_set_delay(TheGtkObject,TheValue);
+end;
+
+function TFPgtkToolTips.GetColorForeground : PGdkColor;
+begin
+  result := TheGtkObject^.foreground;
+end;
+
+procedure TFPgtkToolTips.SetColorForeground (TheValue:PGdkColor);
+begin
+  SetColors (TheValue, ColorBackGround);
+end;
+
+function TFPgtkToolTips.GetColorBackground : PGdkColor;
+begin
+  result := TheGtkObject^.background;
+end;
+
+procedure TFPgtkToolTips.SetColorBackground (TheValue:PGdkColor);
+begin
+  SetColors (ColorForeground, TheValue);
+end;
+
+function GetTooltipsData (Widget:TFPgtkWidget) : PGtkTooltipsData;
+begin
+  result := gtk_tooltips_data_get (ConvertToGtkWidget(Widget));
+end;
+
+
+function ComposeTooltip (TooltipText:string; PrivText:string) : string;
+begin
+  result := TooltipText;
+  if PrivText <> '' then
+    result := result + '|' + PrivText;
+end;
+
+
+procedure DecomposeTooltip (Tooltip:string; var TooltipText:string; var PrivText:string);
+var r : integer;
+begin
+  r := pos ('|', tooltip);
+  if r > 0 then
+    begin
+    TooltipText := copy(Tooltip, 1, r-1);
+    PrivText := copy (Tooltip, r+1, maxint);
+    end
+  else
+    begin
+    TooltipText := Tooltip;
+    PrivText := '';
+    end;
+end;
+
+
+procedure CheckTooltips;
+begin
+if not assigned (TheTooltips) then
+  TheTooltips := TFPgtkTooltips.Create;
+end;
+
+
+procedure TFPgtkToolTips.ForceWindow;
+begin
+  gtk_tooltips_force_window (TheGtkObject);
+end;
+
+ { TFPgtkWidget }
+
+function TFPgtkWidget.TheGtkObject : PGtkWidget;
+begin
+  result := PgtkWidget(FGtkObject);
+end;
+
+
+function TFPgtkWidget.GetTheGtkWidget : PGtkWidget;
+begin
+  result := PGtkWidget (TheGtkObject);
+end;
+
+procedure TFPgtkWidget.SetTheGtkWidget (TheValue:PGtkWidget);
+begin
+  FGtkObject := PgtkObject (TheValue);
+end;
+
+function GetPascalInstance (Widget:PGtkWidget) : TFPgtkWidget; Overload;
+begin
+  result := TFPgtkWidget (GetPascalInstance (PGtkObject(widget)));
+end;
+
+
+function GetPascalInstance (Widget:PGtkWidget; ObjClass:TFPgtkObjectClass) : TFPgtkWidget; Overload;
+begin
+  result := TFPgtkWidget (GetPascalInstance (PGtkObject(Widget), ObjClass));
+end;
+
+
+function ConvertToGtkWidget (AnObject:TFPgtkWidget) : PGtkWidget;
+begin
+  if assigned(AnObject) then
+    result := AnObject.TheGtkWidget
+  else
+    result := nil;
+end;
+
+
+procedure WidgetSignalproc (Sender:PGtkobject; Widget:PGtkwidget; Data:pointer); cdecl;
+var p : TFPgtkWidgetSignalFunction;
+begin
+with PSignalData(data)^ do
+  begin
+  p := TFPgtkWidgetSignalFunction (TheSignalProc);
+  p (TheWidget as TFPgtkObject, GetPascalInstance(PGtkObject(Widget),TFPgtkwidget) as TFPgtkwidget, TheData)
+  end;
+end;
+
+function TFPgtkWidget.WidgetSignalConnect (signal:string; proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@WidgetSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkWidget.WidgetSignalConnectAfter (signal:string; proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@WidgetSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+procedure TFPgtkWidget.SetFlags (NewFlags:longint);
+begin
+  gtk_widget_set_flags (TheGtkObject, NewFlags);
+end;
+
+procedure TFPgtkWidget.UnsetFlags (NewUnsetFlags:longint);
+begin
+  gtk_widget_unset_flags (TheGtkObject, NewUnsetFlags);
+end;
+
+procedure TFPgtkWidget.Map;
+begin
+  gtk_widget_map (TheGtkObject);
+end;
+
+procedure TFPgtkWidget.Unmap;
+begin
+  gtk_widget_unmap (TheGtkObject);
+end;
+
+procedure TFPgtkWidget.QueueDraw;
+begin
+  gtk_widget_queue_draw (TheGtkObject);
+end;
+
+procedure TFPgtkWidget.QueueResize;
+begin
+  gtk_widget_queue_resize (TheGtkObject);
+end;
+
+procedure TFPgtkWidget.Draw (Rectangle:PGdkRectangle); Overload;
+begin
+  gtk_widget_draw (TheGtkObject, Rectangle);
+end;
+
+procedure TFPgtkWidget.DrawFocus;
+begin
+  gtk_widget_draw_focus (TheGtkObject);
+end;
+
+procedure TFPgtkWidget.DrawDefault;
+begin
+  gtk_widget_draw_default (TheGtkObject);
+end;
+
+procedure TFPgtkWidget.Show;
+begin
+  gtk_widget_show (TheGtkObject);
+end;
+
+procedure TFPgtkWidget.Hide;
+begin
+  gtk_widget_hide (TheGtkObject);
+end;
+
+procedure TFPgtkWidget.Realize;
+begin
+  gtk_widget_realize (TheGtkObject);
+end;
+
+procedure TFPgtkWidget.Unrealize;
+begin
+  gtk_widget_unrealize (TheGtkObject);
+end;
+
+procedure TFPgtkWidget.ShowNow;
+begin
+  gtk_widget_show_now (TheGtkObject);
+end;
+
+procedure TFPgtkWidget.ShowAll;
+begin
+  gtk_widget_show_all (TheGtkObject);
+end;
+
+procedure TFPgtkWidget.HideAll;
+begin
+  gtk_widget_hide_all (TheGtkObject);
+end;
+
+procedure TFPgtkWidget.SetAllocation (AnAllocation:TGtkAllocation); Overload;
+begin
+  with AnAllocation do
+    SetAllocation (x, y, width, height);
+end;
+
+procedure TFPgtkWidget.SetAllocation (x:integer; y:integer; width:integer; height:integer); Overload;
+begin
+  SetUPosition (x, y);
+  SetUSize (width, height);
+end;
+
+function TFPgtkWidget.GetAllocation : TGtkAllocation;
+begin
+  result := TheGtkObject^.allocation;
+end;
+
+procedure TFPgtkWidget.SetUPosition (x:integer; y:integer);
+begin
+  gtk_widget_set_uposition (TheGtkObject, x, y);
+end;
+
+procedure TFPgtkWidget.SetUsize (width:integer; height:integer);
+begin
+  gtk_widget_set_usize (TheGtkObject, width, height);
+end;
+
+function TFPgtkWidget.GetName : string;
+begin
+  result := gtk_widget_get_name(TheGtkObject);
+end;
+
+procedure TFPgtkWidget.SetName (TheValue:string);
+begin
+  gtk_widget_set_name(TheGtkObject,ConvertToPgchar(TheValue));
+end;
+
+function TFPgtkWidget.GetPropFlags : longint;
+begin
+  result := gtk_widget_Flags (TheGtkObject);
+end;
+
+procedure TFPgtkWidget.SetPropFlags (TheValue:longint);
+var f : integer;
+begin
+  f := GetPropFlags;
+  UnsetFlags (f and not TheValue);
+  SetFlags (not f and TheValue);
+end;
+
+function TFPgtkWidget.GetState : longint;
+begin
+  result := gtk_widget_State(TheGtkObject);
+end;
+
+function TFPgtkWidget.GetSavedState : longint;
+begin
+  result := gtk_widget_Saved_State(TheGtkObject);
+end;
+
+function TFPgtkWidget.GetParent : TFPgtkWidget;
+var gtkparent : PgtkWidget;
+    o : TFPgtkObject;
+begin
+  gtkParent := TheGtkObject^.parent;
+  o := GetPascalInstance (PgtkObject(GtkParent));
+  if o is TFPgtkWidget then
+    result := TFPgtkWidget(o)
+  else
+    result := nil;
+end;
+
+procedure TFPgtkWidget.SetParent (TheValue:TFPgtkWidget);
+var gtkparent : PgtkWidget;
+begin
+  gtkParent := TheGtkObject^.parent;
+  if assigned(TheValue) then
+    if assigned(gtkParent) then
+      reparent (TheValue)
+    else
+      gtk_widget_set_parent (TheGtkWidget, ConvertToGtkWidget(TheValue))
+  else
+    if assigned(gtkParent) then
+      gtk_widget_unparent (TheGtkWidget);
+end;    
+      
+
+function TFPgtkWidget.GetParentWindow : PGdkWindow;
+begin
+  result := gtk_widget_get_parent_window(TheGtkObject);
+end;
+
+procedure TFPgtkWidget.SetParentWindow (TheValue:PGdkWindow);
+begin
+  gtk_widget_set_parent_window(TheGtkObject,TheValue);
+end;
+
+procedure TFPgtkWidget.Unparent;
+begin
+  gtk_widget_unparent (TheGtkObject);
+end;
+
+procedure TFPgtkWidget.Reparent (NewParent:TFPgtkWidget);
+begin
+  if (NewParent is TFpgtkContainer) then
+    begin
+    ref;
+    TFPgtkContainer(Parent).remove (self);
+    TFPgtkContainer(NewParent).Add (Self);
+    unref;
+    end;
+end;
+
+function TFPgtkWidget.GetVisible : boolean;
+begin
+  result := gtk_widget_Visible(TheGtkObject);
+end;
+
+procedure TFPgtkWidget.SetVisible (TheValue:boolean);
+begin
+  if TheValue then
+    Show
+  else
+    Hide;
+end;
+
+function TFPgtkWidget.GetNoWindow : boolean;
+begin
+  result := gtk_widget_No_Window(TheGtkObject);
+end;
+
+procedure TFPgtkWidget.SetNoWindow (TheValue:boolean);
+begin
+  if TheValue then
+    SetFlags (GTK_NO_WINDOW)
+  else
+    UnSetFlags (GTK_NO_WINDOW);
+end;
+
+function TFPgtkWidget.GetRealized : boolean;
+begin
+  result := gtk_widget_realized(TheGtkObject);
+end;
+
+procedure TFPgtkWidget.SetRealized (TheValue:boolean);
+begin
+  if TheValue then 
+    Realize
+  else
+    Unrealize;
+end;
+
+function TFPgtkWidget.GetMapped : boolean;
+begin
+  result := gtk_widget_Mapped(TheGtkObject);
+end;
+
+procedure TFPgtkWidget.SetMapped (TheValue:boolean);
+begin
+  if TheValue then
+    Map
+  else
+    Unmap;
+end;
+
+function TFPgtkWidget.GetDrawable : boolean;
+begin
+  result := gtk_widget_Drawable(TheGtkObject);
+end;
+
+function TFPgtkWidget.GetIsSensitive : boolean;
+begin
+  result := gtk_widget_Is_Sensitive(TheGtkObject);
+end;
+
+function TFPgtkWidget.GetSensitive : boolean;
+begin
+  result := gtk_widget_Sensitive(TheGtkObject);
+end;
+
+procedure TFPgtkWidget.SetSensitive (TheValue:boolean);
+begin
+  gtk_widget_set_sensitive(TheGtkObject,TheValue);
+end;
+
+function TFPgtkWidget.GetParentSensitive : boolean;
+begin
+  result := gtk_widget_Parent_Sensitive(TheGtkObject);
+end;
+
+procedure TFPgtkWidget.SetParentSensitive (TheValue:boolean);
+begin
+  if TheValue then
+    SetFlags (GTK_PARENT_SENSITIVE)
+  else
+    UnSetFlags (GTK_PARENT_SENSITIVE);
+end;
+
+function TFPgtkWidget.GetAppPaintable : boolean;
+begin
+  result := gtk_widget_App_Paintable(TheGtkObject);
+end;
+
+function TFPgtkWidget.GetCanFocus : boolean;
+begin
+  result := gtk_widget_Can_Focus(TheGtkObject);
+end;
+
+procedure TFPgtkWidget.SetCanFocus (TheValue:boolean);
+begin
+  if TheValue then
+    SetFlags (GTK_CAN_FOCUS)
+  else
+    UnSetFlags (GTK_CAN_FOCUS);
+end;
+
+procedure TFPgtkWidget.GrabFocus;
+begin
+  gtk_widget_grab_focus (TheGtkObject);
+end;
+
+function TFPgtkWidget.GetHasFocus : boolean;
+begin
+  result := gtk_widget_Has_Focus(TheGtkObject);
+end;
+
+function TFPgtkWidget.GetCanDefault : boolean;
+begin
+  result := gtk_widget_Can_Default(TheGtkObject);
+end;
+
+procedure TFPgtkWidget.SetCanDefault (TheValue:boolean);
+begin
+  if TheValue then
+    SetFlags (GTK_CAN_DEFAULT)
+  else
+    UnSetFlags (GTK_CAN_DEFAULT);
+end;
+
+procedure TFPgtkWidget.GrabDefault;
+begin
+  gtk_widget_grab_default (TheGtkObject);
+end;
+
+function TFPgtkWidget.GetHasDefault : boolean;
+begin
+  result := gtk_widget_Has_Default(TheGtkObject);
+end;
+
+function TFPgtkWidget.GetReceivesDefault : boolean;
+begin
+  result := gtk_widget_Receives_Default(TheGtkObject);
+end;
+
+function TFPgtkWidget.GetCompositeChild : boolean;
+begin
+  result := gtk_widget_Composite_Child(TheGtkObject);
+end;
+
+function TFPgtkWidget.GetTooltip : string;
+var data : PGtkTooltipsData;
+begin
+  data := Gtk_Tooltips_Data_Get (TheGtkObject);
+  if assigned(data) then
+    with data^ do
+      result := ComposeTooltip (Tip_Text, tip_private)
+  else
+    result := '';
+end;
+
+procedure TFPgtkWidget.SetTooltip (TheValue:string);
+var t, p : string;
+    ttdata : PGtkTooltipsData;
+begin
+  if TheValue = '' then
+    begin
+    ttdata := GetTooltipsData (Self);
+    if assigned (ttdata) then
+      ; // find a way to remove the hint. Setting '' does not remove
+    end
+  else
+    begin
+    CheckTooltips;
+    DecomposeTooltip (TheValue, t, p);
+    TheToolTips.SetTip (self, t, p);
+    end;
+end;
+
+procedure TFPgtkWidget.HideOnDelete;
+begin
+  gtk_widget_hide_on_delete (TheGtkObject);
+end;
+
+function TFPgtkWidget.GetColormap : PGdkColormap;
+begin
+  result := gtk_widget_get_colormap(TheGtkObject);
+end;
+
+procedure TFPgtkWidget.SetColormap (TheValue:PGdkColormap);
+begin
+  gtk_widget_set_colormap(TheGtkObject,TheValue);
+end;
+
+function TFPgtkWidget.ConnectShow (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnect (sgShow, proc, data);
+end;
+
+function TFPgtkWidget.ConnectAfterShow (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnectAfter (sgShow, proc, data);
+end;
+
+function TFPgtkWidget.Connecthide (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnect (sghide, proc, data);
+end;
+
+function TFPgtkWidget.ConnectAfterhide (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnectAfter (sghide, proc, data);
+end;
+
+function TFPgtkWidget.Connectmap (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnect (sgmap, proc, data);
+end;
+
+function TFPgtkWidget.ConnectAftermap (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnectAfter (sgmap, proc, data);
+end;
+
+function TFPgtkWidget.Connectunmap (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnect (sgunmap, proc, data);
+end;
+
+function TFPgtkWidget.ConnectAfterunmap (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnectAfter (sgunmap, proc, data);
+end;
+
+function TFPgtkWidget.Connectrealize (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnect (sgrealize, proc, data);
+end;
+
+function TFPgtkWidget.ConnectAfterrealize (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnectAfter (sgrealize, proc, data);
+end;
+
+function TFPgtkWidget.Connectunrealize (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnect (sgunrealize, proc, data);
+end;
+
+function TFPgtkWidget.ConnectAfterunrealize (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnectAfter (sgunrealize, proc, data);
+end;
+
+function TFPgtkWidget.ConnectDrawFocus (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnect (sgDrawFocus, proc, data);
+end;
+
+function TFPgtkWidget.ConnectAfterDrawFocus (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnectAfter (sgDrawFocus, proc, data);
+end;
+
+function TFPgtkWidget.ConnectDrawDefault (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnect (sgDrawDefault, proc, data);
+end;
+
+function TFPgtkWidget.ConnectAfterDrawDefault (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnectAfter (sgDrawDefault, proc, data);
+end;
+
+function TFPgtkWidget.ConnectParentSet (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+begin
+  result := WidgetSignalConnect (sgParentSet, proc, data);
+end;
+
+function TFPgtkWidget.ConnectAfterParentSet (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+begin
+  result := WidgetSignalConnectAfter (sgParentSet, proc, data);
+end;
+
+function TFPgtkWidget.ConnectGrabFocus (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnect (sgGrabFocus, proc, data);
+end;
+
+function TFPgtkWidget.ConnectAfterGrabFocus (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnectAfter (sgGrabFocus, proc, data);
+end;
+
+function Eventfunc (Sender:PGtkwidget; Event:PGdkEvent; data:pointer) : boolean; cdecl;
+var p : TFPgtkEventFunction;
+begin
+with PSignalData(data)^ do
+  begin
+  p := TFPgtkEventFunction (TheSignalProc);
+  result := p (TheWidget as TFPgtkWidget, Event, TheData)
+  end;
+end;
+
+function TFPgtkWidget.EventConnect (signal:string; proc:TFPgtkEventFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@Eventfunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkWidget.EventConnectAfter (signal:string; proc:TFPgtkEventFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@Eventfunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkWidget.ConnectEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
+begin
+  result := EventConnect (sgEvent, proc, data);
+end;
+
+function TFPgtkWidget.ConnectAfterEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
+begin
+  result := EventConnectAfter (sgEvent, proc, data);
+end;
+
+function EventButtonfunc (Sender:PGtkwidget; Event:PGdkEventButton; data:pointer) : boolean; cdecl;
+var p : TFPgtkEventButtonFunction;
+begin
+with PSignalData(data)^ do
+  begin
+  p := TFPgtkEventButtonFunction (TheSignalProc);
+  result := p (TheWidget as TFPgtkWidget, Event, TheData)
+  end;
+end;
+
+function TFPgtkWidget.EventButtonConnect (signal:string; proc:TFPgtkEventButtonFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@EventButtonfunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkWidget.EventButtonConnectAfter (signal:string; proc:TFPgtkEventButtonFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@EventButtonfunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkWidget.ConnectButtonPressEvent (proc:TFPgtkEventButtonFunction; data:pointer) : guint;
+begin
+  result := EventButtonConnect (sgButtonPressEvent, proc, data);
+end;
+
+function TFPgtkWidget.ConnectAfterButtonPressEvent (proc:TFPgtkEventButtonFunction; data:pointer) : guint;
+begin
+  result := EventButtonConnectAfter (sgButtonPressEvent, proc, data);
+end;
+
+function TFPgtkWidget.ConnectButtonReleaseEvent (proc:TFPgtkEventButtonFunction; data:pointer) : guint;
+begin
+  result := EventButtonConnect (sgButtonReleaseEvent, proc, data);
+end;
+
+function TFPgtkWidget.ConnectAfterButtonReleaseEvent (proc:TFPgtkEventButtonFunction; data:pointer) : guint;
+begin
+  result := EventButtonConnectAfter (sgButtonReleaseEvent, proc, data);
+end;
+
+function EventMotionfunc (Sender:PGtkwidget; Event:PGdkEventMotion; data:pointer) : boolean; cdecl;
+var p : TFPgtkEventMotionFunction;
+begin
+with PSignalData(data)^ do
+  begin
+  p := TFPgtkEventMotionFunction (TheSignalProc);
+  result := p (TheWidget as TFPgtkWidget, Event, TheData)
+  end;
+end;
+
+function TFPgtkWidget.EventMotionConnect (signal:string; proc:TFPgtkEventMotionFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@EventMotionfunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkWidget.EventMotionConnectAfter (signal:string; proc:TFPgtkEventMotionFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@EventMotionfunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkWidget.ConnectMotionNotifyEvent (proc:TFPgtkEventMotionFunction; data:pointer) : guint;
+begin
+  result := EventMotionConnect (sgMotionNotifyEvent, proc, data);
+end;
+
+function TFPgtkWidget.ConnectAfterMotionNotifyEvent (proc:TFPgtkEventMotionFunction; data:pointer) : guint;
+begin
+  result := EventMotionConnectAfter (sgMotionNotifyEvent, proc, data);
+end;
+
+function TFPgtkWidget.ConnectDeleteEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
+begin
+  result := EventConnect (sgDeleteEvent, proc, data);
+end;
+
+function TFPgtkWidget.ConnectAfterDeleteEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
+begin
+  result := EventConnectAfter (sgDeleteEvent, proc, data);
+end;
+
+function TFPgtkWidget.ConnectDestroyEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
+begin
+  result := EventConnect (sgDestroyEvent, proc, data);
+end;
+
+function TFPgtkWidget.ConnectAfterDestroyEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
+begin
+  result := EventConnectAfter (sgDestroyEvent, proc, data);
+end;
+
+function EventExposefunc (Sender:PGtkwidget; Event:PGdkEventExpose; data:pointer) : boolean; cdecl;
+var p : TFPgtkEventExposeFunction;
+begin
+with PSignalData(data)^ do
+  begin
+  p := TFPgtkEventExposeFunction (TheSignalProc);
+  result := p (TheWidget as TFPgtkWidget, Event, TheData)
+  end;
+end;
+
+function TFPgtkWidget.EventExposeConnect (signal:string; proc:TFPgtkEventExposeFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@EventExposefunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkWidget.EventExposeConnectAfter (signal:string; proc:TFPgtkEventExposeFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@EventExposefunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkWidget.ConnectExposeEvent (proc:TFPgtkEventExposeFunction; data:pointer) : guint;
+begin
+  result := EventExposeConnect (sgExposeEvent, proc, data);
+end;
+
+function TFPgtkWidget.ConnectAfterExposeEvent (proc:TFPgtkEventExposeFunction; data:pointer) : guint;
+begin
+  result := EventExposeConnectAfter (sgExposeEvent, proc, data);
+end;
+
+function EventKeyfunc (Sender:PGtkwidget; Event:PGdkEventKey; data:pointer) : boolean; cdecl;
+var p : TFPgtkEventKeyFunction;
+begin
+with PSignalData(data)^ do
+  begin
+  p := TFPgtkEventKeyFunction (TheSignalProc);
+  result := p (TheWidget as TFPgtkWidget, Event, TheData)
+  end;
+end;
+
+function TFPgtkWidget.EventKeyConnect (signal:string; proc:TFPgtkEventKeyFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@EventKeyfunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkWidget.EventKeyConnectAfter (signal:string; proc:TFPgtkEventKeyFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@EventKeyfunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkWidget.ConnectKeyPressEvent (proc:TFPgtkEventKeyFunction; data:pointer) : guint;
+begin
+  result := EventKeyConnect (sgKeyPressEvent, proc, data);
+end;
+
+function TFPgtkWidget.ConnectAfterKeyPressEvent (proc:TFPgtkEventKeyFunction; data:pointer) : guint;
+begin
+  result := EventKeyConnectAfter (sgKeyPressEvent, proc, data);
+end;
+
+function TFPgtkWidget.ConnectKeyReleaseEvent (proc:TFPgtkEventKeyFunction; data:pointer) : guint;
+begin
+  result := EventKeyConnect (sgKeyReleaseEvent, proc, data);
+end;
+
+function TFPgtkWidget.ConnectAfterKeyReleaseEvent (proc:TFPgtkEventKeyFunction; data:pointer) : guint;
+begin
+  result := EventKeyConnectAfter (sgKeyReleaseEvent, proc, data);
+end;
+
+function EventCrossingfunc (Sender:PGtkwidget; Event:PGdkEventCrossing; data:pointer) : boolean; cdecl;
+var p : TFPgtkEventCrossingFunction;
+begin
+with PSignalData(data)^ do
+  begin
+  p := TFPgtkEventCrossingFunction (TheSignalProc);
+  result := p (TheWidget as TFPgtkWidget, Event, TheData)
+  end;
+end;
+
+function TFPgtkWidget.EventCrossingConnect (signal:string; proc:TFPgtkEventCrossingFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@EventCrossingfunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkWidget.EventCrossingConnectAfter (signal:string; proc:TFPgtkEventCrossingFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@EventCrossingfunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkWidget.ConnectEnterNotifyEvent (proc:TFPgtkEventCrossingFunction; data:pointer) : guint;
+begin
+  result := EventCrossingConnect (sgEnterNotifyEvent, proc, data);
+end;
+
+function TFPgtkWidget.ConnectAfterEnterNotifyEvent (proc:TFPgtkEventCrossingFunction; data:pointer) : guint;
+begin
+  result := EventCrossingConnectAfter (sgEnterNotifyEvent, proc, data);
+end;
+
+function TFPgtkWidget.ConnectLeaveNotifyEvent (proc:TFPgtkEventCrossingFunction; data:pointer) : guint;
+begin
+  result := EventCrossingConnect (sgLeaveNotifyEvent, proc, data);
+end;
+
+function TFPgtkWidget.ConnectAfterLeaveNotifyEvent (proc:TFPgtkEventCrossingFunction; data:pointer) : guint;
+begin
+  result := EventCrossingConnectAfter (sgLeaveNotifyEvent, proc, data);
+end;
+
+function EventConfigurefunc (Sender:PGtkwidget; Event:PGdkEventConfigure; data:pointer) : boolean; cdecl;
+var p : TFPgtkEventConfigureFunction;
+begin
+with PSignalData(data)^ do
+  begin
+  p := TFPgtkEventConfigureFunction (TheSignalProc);
+  result := p (TheWidget as TFPgtkWidget, Event, TheData)
+  end;
+end;
+
+function TFPgtkWidget.EventConfigureConnect (signal:string; proc:TFPgtkEventConfigureFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@EventConfigurefunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkWidget.EventConfigureConnectAfter (signal:string; proc:TFPgtkEventConfigureFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@EventConfigurefunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkWidget.ConnectConfigureEvent (proc:TFPgtkEventConfigureFunction; data:pointer) : guint;
+begin
+  result := EventConfigureConnect (sgConfigureEvent, proc, data);
+end;
+
+function TFPgtkWidget.ConnectAfterConfigureEvent (proc:TFPgtkEventConfigureFunction; data:pointer) : guint;
+begin
+  result := EventConfigureConnectAfter (sgConfigureEvent, proc, data);
+end;
+
+function EventFocusfunc (Sender:PGtkwidget; Event:PGdkEventFocus; data:pointer) : boolean; cdecl;
+var p : TFPgtkEventFocusFunction;
+begin
+with PSignalData(data)^ do
+  begin
+  p := TFPgtkEventFocusFunction (TheSignalProc);
+  result := p (TheWidget as TFPgtkWidget, Event, TheData)
+  end;
+end;
+
+function TFPgtkWidget.EventFocusConnect (signal:string; proc:TFPgtkEventFocusFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@EventFocusfunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkWidget.EventFocusConnectAfter (signal:string; proc:TFPgtkEventFocusFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@EventFocusfunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkWidget.ConnectFocusInEvent (proc:TFPgtkEventFocusFunction; data:pointer) : guint;
+begin
+  result := EventFocusConnect (sgFocusInEvent, proc, data);
+end;
+
+function TFPgtkWidget.ConnectAfterFocusInEvent (proc:TFPgtkEventFocusFunction; data:pointer) : guint;
+begin
+  result := EventFocusConnectAfter (sgFocusInEvent, proc, data);
+end;
+
+function TFPgtkWidget.ConnectFocusOutEvent (proc:TFPgtkEventFocusFunction; data:pointer) : guint;
+begin
+  result := EventFocusConnect (sgFocusOutEvent, proc, data);
+end;
+
+function TFPgtkWidget.ConnectAfterFocusOutEvent (proc:TFPgtkEventFocusFunction; data:pointer) : guint;
+begin
+  result := EventFocusConnectAfter (sgFocusOutEvent, proc, data);
+end;
+
+function TFPgtkWidget.ConnectMapEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
+begin
+  result := EventConnect (sgMapEvent, proc, data);
+end;
+
+function TFPgtkWidget.ConnectAfterMapEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
+begin
+  result := EventConnectAfter (sgMapEvent, proc, data);
+end;
+
+function TFPgtkWidget.ConnectUnmapEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
+begin
+  result := EventConnect (sgUnmapEvent, proc, data);
+end;
+
+function TFPgtkWidget.ConnectAfterUnmapEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
+begin
+  result := EventConnectAfter (sgUnmapEvent, proc, data);
+end;
+
+function EventPropertyfunc (Sender:PGtkwidget; Event:PGdkEventProperty; data:pointer) : boolean; cdecl;
+var p : TFPgtkEventPropertyFunction;
+begin
+with PSignalData(data)^ do
+  begin
+  p := TFPgtkEventPropertyFunction (TheSignalProc);
+  result := p (TheWidget as TFPgtkWidget, Event, TheData)
+  end;
+end;
+
+function TFPgtkWidget.EventPropertyConnect (signal:string; proc:TFPgtkEventPropertyFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@EventPropertyfunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkWidget.EventPropertyConnectAfter (signal:string; proc:TFPgtkEventPropertyFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@EventPropertyfunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkWidget.ConnectPropertyNotifyEvent (proc:TFPgtkEventPropertyFunction; data:pointer) : guint;
+begin
+  result := EventPropertyConnect (sgPropertyNotifyEvent, proc, data);
+end;
+
+function TFPgtkWidget.ConnectAfterPropertyNotifyEvent (proc:TFPgtkEventPropertyFunction; data:pointer) : guint;
+begin
+  result := EventPropertyConnectAfter (sgPropertyNotifyEvent, proc, data);
+end;
+
+function EventSelectionfunc (Sender:PGtkwidget; Event:PGdkEventSelection; data:pointer) : boolean; cdecl;
+var p : TFPgtkEventSelectionFunction;
+begin
+with PSignalData(data)^ do
+  begin
+  p := TFPgtkEventSelectionFunction (TheSignalProc);
+  result := p (TheWidget as TFPgtkWidget, Event, TheData)
+  end;
+end;
+
+function TFPgtkWidget.EventSelectionConnect (signal:string; proc:TFPgtkEventSelectionFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@EventSelectionfunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkWidget.EventSelectionConnectAfter (signal:string; proc:TFPgtkEventSelectionFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@EventSelectionfunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkWidget.ConnectSelectionClearEvent (proc:TFPgtkEventSelectionFunction; data:pointer) : guint;
+begin
+  result := EventSelectionConnect (sgSelectionClearEvent, proc, data);
+end;
+
+function TFPgtkWidget.ConnectAfterSelectionClearEvent (proc:TFPgtkEventSelectionFunction; data:pointer) : guint;
+begin
+  result := EventSelectionConnectAfter (sgSelectionClearEvent, proc, data);
+end;
+
+function TFPgtkWidget.ConnectSelectionRequestEvent (proc:TFPgtkEventSelectionFunction; data:pointer) : guint;
+begin
+  result := EventSelectionConnect (sgSelectionRequestEvent, proc, data);
+end;
+
+function TFPgtkWidget.ConnectAfterSelectionRequestEvent (proc:TFPgtkEventSelectionFunction; data:pointer) : guint;
+begin
+  result := EventSelectionConnectAfter (sgSelectionRequestEvent, proc, data);
+end;
+
+function TFPgtkWidget.ConnectSelectionNotifyEvent (proc:TFPgtkEventSelectionFunction; data:pointer) : guint;
+begin
+  result := EventSelectionConnect (sgSelectionNotifyEvent, proc, data);
+end;
+
+function TFPgtkWidget.ConnectAfterSelectionNotifyEvent (proc:TFPgtkEventSelectionFunction; data:pointer) : guint;
+begin
+  result := EventSelectionConnectAfter (sgSelectionNotifyEvent, proc, data);
+end;
+
+function EventProximityfunc (Sender:PGtkwidget; Event:PGdkEventProximity; data:pointer) : boolean; cdecl;
+var p : TFPgtkEventProximityFunction;
+begin
+with PSignalData(data)^ do
+  begin
+  p := TFPgtkEventProximityFunction (TheSignalProc);
+  result := p (TheWidget as TFPgtkWidget, Event, TheData)
+  end;
+end;
+
+function TFPgtkWidget.EventProximityConnect (signal:string; proc:TFPgtkEventProximityFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@EventProximityfunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkWidget.EventProximityConnectAfter (signal:string; proc:TFPgtkEventProximityFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@EventProximityfunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkWidget.ConnectProximityInEvent (proc:TFPgtkEventProximityFunction; data:pointer) : guint;
+begin
+  result := EventProximityConnect (sgProximityInEvent, proc, data);
+end;
+
+function TFPgtkWidget.ConnectAfterProximityInEvent (proc:TFPgtkEventProximityFunction; data:pointer) : guint;
+begin
+  result := EventProximityConnectAfter (sgProximityInEvent, proc, data);
+end;
+
+function TFPgtkWidget.ConnectProximityOutEvent (proc:TFPgtkEventProximityFunction; data:pointer) : guint;
+begin
+  result := EventProximityConnect (sgProximityOutEvent, proc, data);
+end;
+
+function TFPgtkWidget.ConnectAfterProximityOutEvent (proc:TFPgtkEventProximityFunction; data:pointer) : guint;
+begin
+  result := EventProximityConnectAfter (sgProximityOutEvent, proc, data);
+end;
+
+function EventClientfunc (Sender:PGtkwidget; Event:PGdkEventClient; data:pointer) : boolean; cdecl;
+var p : TFPgtkEventClientFunction;
+begin
+with PSignalData(data)^ do
+  begin
+  p := TFPgtkEventClientFunction (TheSignalProc);
+  result := p (TheWidget as TFPgtkWidget, Event, TheData)
+  end;
+end;
+
+function TFPgtkWidget.EventClientConnect (signal:string; proc:TFPgtkEventClientFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@EventClientfunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkWidget.EventClientConnectAfter (signal:string; proc:TFPgtkEventClientFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@EventClientfunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkWidget.ConnectClientEvent (proc:TFPgtkEventClientFunction; data:pointer) : guint;
+begin
+  result := EventClientConnect (sgClientEvent, proc, data);
+end;
+
+function TFPgtkWidget.ConnectAfterClientEvent (proc:TFPgtkEventClientFunction; data:pointer) : guint;
+begin
+  result := EventClientConnectAfter (sgClientEvent, proc, data);
+end;
+
+function EventNoExposefunc (Sender:PGtkwidget; Event:PGdkEventNoExpose; data:pointer) : boolean; cdecl;
+var p : TFPgtkEventNoExposeFunction;
+begin
+with PSignalData(data)^ do
+  begin
+  p := TFPgtkEventNoExposeFunction (TheSignalProc);
+  result := p (TheWidget as TFPgtkWidget, Event, TheData)
+  end;
+end;
+
+function TFPgtkWidget.EventNoExposeConnect (signal:string; proc:TFPgtkEventNoExposeFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@EventNoExposefunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkWidget.EventNoExposeConnectAfter (signal:string; proc:TFPgtkEventNoExposeFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@EventNoExposefunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkWidget.ConnectNoExposeEvent (proc:TFPgtkEventNoExposeFunction; data:pointer) : guint;
+begin
+  result := EventNoExposeConnect (sgNoExposeEvent, proc, data);
+end;
+
+function TFPgtkWidget.ConnectAfterNoExposeEvent (proc:TFPgtkEventNoExposeFunction; data:pointer) : guint;
+begin
+  result := EventNoExposeConnectAfter (sgNoExposeEvent, proc, data);
+end;
+
+function TFPgtkWidget.ConnectVisibilityNotifyEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
+begin
+  result := EventConnect (sgVisibilityNotifyEvent, proc, data);
+end;
+
+function TFPgtkWidget.ConnectAfterVisibilityNotifyEvent (proc:TFPgtkEventFunction; data:pointer) : guint;
+begin
+  result := EventConnectAfter (sgVisibilityNotifyEvent, proc, data);
+end;
+
+procedure TFPgtkWidget.LockAccelerators;
+begin
+  gtk_widget_lock_accelerators (TheGtkObject);
+end;
+
+procedure TFPgtkWidget.UnlockAccelerators;
+begin
+  gtk_widget_unlock_accelerators (TheGtkObject);
+end;
+
+procedure TFPgtkWidget.RemoveAccelerators (aSignal:string; OnlyVisible:boolean);
+begin
+  gtk_widget_remove_accelerators (TheGtkObject, ConvertToPgchar(aSignal), OnlyVisible);
+end;
+
+procedure TFPgtkWidget.ActivateAccelGroups (Key:guint; Mods:TGdkModifierType);
+begin
+  gtk_accel_groups_activate (FGtkObject, Key, Mods);
+end;
+
+procedure TFPgtkWidget.AcceleratorAdd (AG:PGtkAccelGroup; aSignal:string; Key:guint; Mods:TGdkModifierType; acFlags:TGtkAccelFlags); Overload;
+begin
+  gtk_widget_add_accelerator (TheGtkWidget, pgchar(aSignal),
+        AG, Key, Mods, acFlags);
+end;
+
+ { TFPgtkGroup }
+
+
+procedure TFPgtkGroup.FreeList;
+begin
+  if FGList <> null then
+    begin
+    if FManageLists then
+      g_list_free (FGList);
+    FGList := null;
+    end;
+end;
+
+procedure TFPgtkGroup.FreeSList;
+begin
+  if FGSList <> null then
+    begin
+    if FManageLists then
+      g_slist_free (FGSList);
+    FGSlist := null;
+    end;
+end;
+
+function TFPgtkGroup.CreateGList : PGList;
+var r : integer;
+begin
+  FreeList;
+  result := null;
+  for r := pred(count) downto 0 do
+    result := g_list_prepend (result, GetData(r));
+  FGList := result;
+end;
+
+function TFPgtkGroup.CreateGSList : PGSList;
+var r : integer;
+begin
+  FreeSList;
+  result := null;
+  for r := pred(count) downto 0 do
+    result := g_slist_prepend (result, GetData(r));
+  FGSList := result;
+end;
+
+procedure TFPgtkGroup.BuildFromGtkList;
+var p : PGList;
+begin
+  clear;
+  p := FGList;
+  while p <> null do
+    begin
+    add (UngetData(p^.data));
+    p := p^.Next;
+    end;
+  FListChanged := False;
+  FSListChanged := False;
+  FClassesChanged := False;
+  FreeSList;
+end;
+
+procedure TFPgtkGroup.BuildFromGtkSList;
+var p :PGSList;
+begin
+  clear;
+  p := FGSList;
+  while p <> null do
+    begin
+    add (UngetData(p^.data));
+    p := p^.Next;
+    end;
+  FListChanged := False;
+  FSListChanged := False;
+  FClassesChanged := False;
+  FreeList;
+end;
+
+procedure TFPgtkGroup.Notify (ptr:pointer; Action:TListNotification);
+begin
+  inherited;
+  FClassesChanged := True;
+end;
+
+function TFPgtkGroup.GetData (index:integer) : pointer;
+// GetData needs to give the pointer to the data in the List or SList of GTK
+begin
+  result := items[index];
+end;
+
+function TFPgtkGroup.UngetData (data:pointer) : pointer;
+// UngetData needs to give the item in this list from the datapointer of GTK
+begin
+  result := data
+end;
+
+constructor TFPgtkGroup.Create;
+begin
+  inherited create;
+  FClassesChanged := False;
+  FListChanged := false;
+  FSListChanged := False;
+  FGList := null;
+  FGSList := null;
+  FNotUpdating := True;
+  FManageLists := True;
+end;
+
+
+destructor TFPgtkGroup.Destroy;
+begin
+  if ManageLists then
+    begin
+    FreeList;
+    FreeSList;
+    end;
+  inherited Destroy;
+end;
+
+
+function TFPgtkGroup.GetGtkList (buffered:boolean) : PGList;
+begin
+  if buffered then
+    if FClasseschanged then
+      result := CreateGList
+    else if FSListChanged then
+      begin
+      BuildFromGtkSList;
+      result := CreateGList;
+      end
+    else
+      result := FGlist
+  else
+    result := CreateGList;
+end;
+
+function TFPgtkGroup.GetGtkSList (buffered:boolean) : PGSList;
+begin
+  if buffered then
+    if FClassesChanged then
+      result := CreateGSList
+    else if FListChanged then
+      begin
+      BuildFromGtkList;
+      result := CreateGSList;
+      end
+    else
+      result := FGSlist
+  else
+    result := CreateGSList;
+end;
+
+procedure TFPgtkGroup.BeginUpdate;
+begin
+  FNotUpdating := False;
+end;
+
+procedure TFPgtkGroup.EndUpdate;
+begin
+  FNotUpdating := True;
+  if FlistChanged then
+    BuildFromGtkSList
+  else if FSListChanged then
+    BuildFromGtkSList
+  else if FClassesChanged then
+    begin
+    FreeSList;
+    FreeList;
+    end;
+end;
+
+procedure TFPgtkGroup.ForEach (Proc:TFPgtkForEachProcedure; data:pointer);
+var r: integer;
+begin
+  for r := 0 to pred(count) do
+    Proc (items[r], data);
+end;
+
+function TFPgtkGroup.GetGtkListProp : PGList;
+begin
+  result := GetGtkList (True);
+end;
+
+procedure TFPgtkGroup.SetGtkListProp (TheValue:PGList);
+begin
+  FGList := TheValue;
+  if FNotUpdating then
+    BuildFromGtkList
+  else
+    FListChanged := True;
+end;
+
+function TFPgtkGroup.GetGtkSListProp : PGSList;
+begin
+  result := GetGtkSList (True);
+end;
+
+procedure TFPgtkGroup.SetGtkSListProp (TheValue:PGSList);
+begin
+  FGSlist := TheValue;
+  if FNotUpdating then
+    BuildFromGtkSList
+  else
+    FSListChanged := True;
+end;
+
+ { TFPgtkWidgetGroup }
+
+
+function TFPgtkWidgetGroup.GetData (index:integer) : pointer;
+begin
+  result := items[index].FgtkObject;
+end;
+
+function TFPgtkWidgetGroup.UnGetData (data:pointer) : pointer;
+begin
+  result := GetPascalInstance (PGtkObject(Data));
+end;
+
+procedure TFPgtkWidgetGroup.AddToContainer (Container:TFPgtkContainer);
+var r : integer;
+begin
+  for r := 0 to pred(count) do
+    Container.Add (items[r]);
+end;
+
+procedure TFPgtkWidgetGroup.PackInBox (box:TFPgtkBox; AtStart:boolean; Expanding:boolean; Fill:boolean; Padding:integer);
+var r : integer;
+begin
+  if AtStart then
+    for r := 0 to pred(Count) do
+      box.PackStart (items[r], expanding, fill, padding)
+  else
+    for r := pred(Count) downto 0 do
+      box.PackEnd (items[r], expanding, fill, padding);
+end;
+
+function TFPgtkWidgetGroup.GetItem (Index:integer) : TFPgtkWidget;
+begin
+  result := TFPgtkWidget (Inherited items[index]);
+end;
+
+procedure TFPgtkWidgetGroup.SetItem (Index:integer; TheValue:TFPgtkWidget);
+begin
+  inherited items[index] := TheValue;
+end;
+
+function TFPgtkWidgetGroup.GetTooltips (index:integer) : string;
+begin
+  result := items[index].Tooltip;
+end;
+
+procedure TFPgtkWidgetGroup.SetTooltips (index:integer; TheValue:string);
+begin
+  Items[index].Tooltip := TheValue;
+end;
+
+ { TFPgtkMisc }
+
+function TFPgtkMisc.TheGtkObject : PGtkMisc;
+begin
+  result := PgtkMisc(FGtkObject);
+end;
+
+
+procedure TFPgtkMisc.SetAlignment (x:gfloat; y:gfloat);
+begin
+  gtk_misc_set_alignment (TheGtkObject, x, y);
+end;
+
+procedure TFPgtkMisc.SetPadding (x:word; y:word);
+begin
+  gtk_misc_set_padding (TheGtkObject, x, y);
+end;
+
+function TFPgtkMisc.GetXAlign : gfloat;
+begin
+  result := TheGtkObject^.XAlign;
+end;
+
+procedure TFPgtkMisc.SetXAlign (TheValue:gfloat);
+begin
+  SetAlignment (TheValue, YAlign);
+end;
+
+function TFPgtkMisc.GetYAlign : gfloat;
+begin
+  result := TheGtkObject^.YAlign;
+end;
+
+procedure TFPgtkMisc.SetYAlign (TheValue:gfloat);
+begin
+  SetAlignment (XAlign, TheValue);
+end;
+
+function TFPgtkMisc.GetXPad : word;
+begin
+  result := TheGtkObject^.XPad;
+end;
+
+procedure TFPgtkMisc.SetXPad (TheValue:word);
+begin
+  SetPadding (TheValue, YPad);
+end;
+
+function TFPgtkMisc.GetYPad : word;
+begin
+  result := TheGtkObject^.YPad;
+end;
+
+procedure TFPgtkMisc.SetYPad (TheValue:word);
+begin
+  SetPadding (XPad, TheValue);
+end;
+
+ { TFPgtkLabel }
+
+function TFPgtkLabel.TheGtkObject : PGtkLabel;
+begin
+  result := PgtkLabel(FGtkObject);
+end;
+
+procedure TFPgtkLabel.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_label_new (null));
+end;
+
+
+constructor TFPgtkLabel.Create (aText:string);
+begin
+  inherited create;
+  Text := aText;
+  SetAlignment (0.0, 0.5);
+end;
+
+
+function TFPgtkLabel.GetText : string;
+begin
+  result := TheGtkObject^.TheLabel;
+end;
+
+procedure TFPgtkLabel.SetText (TheValue:string);
+begin
+  gtk_label_set_text(TheGtkObject,ConvertToPgchar(TheValue));
+end;
+
+function TFPgtkLabel.GetPattern : string;
+begin
+  result := TheGtkObject^.pattern;
+end;
+
+procedure TFPgtkLabel.SetPattern (TheValue:string);
+begin
+  gtk_label_set_pattern(TheGtkObject,ConvertToPgchar(TheValue));
+end;
+
+function TFPgtkLabel.GetJustify : TGtkJustification;
+begin
+  result := gtk.jtype(TheGtkObject^);
+end;
+
+procedure TFPgtkLabel.SetJustify (TheValue:TGtkJustification);
+begin
+  gtk_label_set_justify(TheGtkObject,TheValue);
+end;
+
+function TFPgtkLabel.GetLineWrap : boolean;
+begin
+  result := TheGtkObject^.wrap;
+end;
+
+procedure TFPgtkLabel.SetLineWrap (TheValue:boolean);
+begin
+  gtk_label_set_line_wrap(TheGtkObject,TheValue);
+end;
+
+function TFPgtkLabel.ParseUline (aText:string) : guint;
+begin
+  result := gtk_label_parse_uline (TheGtkObject, ConvertToPgchar(aText));
+end;
+
+ { TFPgtkAccelLabel }
+
+function TFPgtkAccelLabel.TheGtkObject : PGtkAccelLabel;
+begin
+  result := PgtkAccelLabel(FGtkObject);
+end;
+
+procedure TFPgtkAccelLabel.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_accel_label_new (''));
+end;
+
+
+function TFPgtkAccelLabel.GetAccelWidget : TFPgtkWidget;
+begin
+  result := GetPascalInstance(PGtkObject(TheGtkObject^.accel_widget),tfpgtkwidget) as tfpgtkwidget;
+end;
+
+procedure TFPgtkAccelLabel.SetAccelWidget (TheValue:TFPgtkWidget);
+begin
+  gtk_accel_label_set_accel_widget(TheGtkObject,PGtkwidget(ConvertToGtkObject(TheValue)));
+end;
+
+function TFPgtkAccelLabel.AccelText : string;
+begin
+  result := TheGtkObject^.accel_string;
+end;
+
+procedure TFPgtkAccelLabel.Refetch;
+begin
+  gtk_accel_label_refetch (TheGtkObject);
+end;
+
+ { TFPgtkTipsQuery }
+
+function TFPgtkTipsQuery.TheGtkObject : PGtkTipsQuery;
+begin
+  result := PgtkTipsQuery(FGtkObject);
+end;
+
+procedure TFPgtkTipsQuery.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_tips_query_new);
+end;
+
+
+ { TFPgtkArrow }
+
+function TFPgtkArrow.TheGtkObject : PGtkArrow;
+begin
+  result := PgtkArrow(FGtkObject);
+end;
+
+procedure TFPgtkArrow.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_arrow_new (GTK_ARROW_LEFT,GTK_SHADOW_NONE));
+end;
+
+
+function TFPgtkArrow.GetArrowType : TGtkArrowType;
+begin
+  result := TGtkArrowType (TheGtkObject^.arrow_type);
+end;
+
+procedure TFPgtkArrow.SetArrowType (TheValue:TGtkArrowType);
+begin
+  gtk_arrow_set (TheGtkObject, TheValue, ShadowType);
+end;
+
+function TFPgtkArrow.GetShadowType : TGtkShadowType;
+begin
+  result := TGtkShadowtype (TheGtkObject^.shadow_type);
+end;
+
+procedure TFPgtkArrow.SetShadowType (TheValue:TGtkShadowType);
+begin
+  gtk_arrow_set (TheGtkObject, ArrowType, TheValue);
+end;
+
+procedure TFPgtkArrow.SetTypes (AnArrowType:TGtkArrowType; AShadowtype:TGtkShadowType);
+begin
+  gtk_arrow_set (TheGtkObject, AnArrowType, AShadowtype);
+end;
+
+constructor TFPgtkArrow.Create (AnArrowType:TGtkArrowType; AShadowType:TGtkShadowType);
+begin
+  inherited create;
+  SetTypes (AnArrowType, AShadowType);
+end;
+
+
+ { TFPgtkImage }
+
+function TFPgtkImage.TheGtkObject : PGtkImage;
+begin
+  result := PgtkImage(FGtkObject);
+end;
+
+procedure TFPgtkImage.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_image_new (FImage, FMask));
+end;
+
+
+function TFPgtkImage.GetImageProp : PGdkImage;
+var m : PGdkBitmap;
+begin
+  gtk_image_get (TheGtkObject, @result, @m);
+end;
+
+procedure TFPgtkImage.SetImageProp (TheValue:PGdkImage);
+begin
+  gtk_Image_set (TheGtkObject, TheValue, nil);
+end;
+
+function TFPgtkImage.GetMask : PGdkBitMap;
+var p : PGdkPixmap;
+begin
+  gtk_image_get (TheGtkObject, @p, @result);
+end;
+
+procedure TFPgtkImage.SetMask (TheValue:PGdkBitMap);
+begin
+  gtk_image_set (TheGtkObject, Image, TheValue);
+end;
+
+procedure TFPgtkImage.SetImage (anImage:PGdkImage; aMask:PGdkBitmap);
+begin
+  gtk_image_set (TheGtkObject, anImage, aMask);
+end;
+
+constructor TFPgtkImage.Create (anImage:PGdkImage; aMask:PGdkBitmap);
+begin
+  FImage := anImage;
+  FMask := aMask;
+  inherited create;
+end;
+
+
+function NewImage (aWidth:integer; aHeight:integer) : PGdkImage;
+begin
+  result := gdk_image_new (gdk_image_fastest, gdk_visual_get_system, aWidth, aHeight);
+end;
+
+
+ { TFPgtkPixmap }
+
+function TFPgtkPixmap.TheGtkObject : PGtkPixmap;
+begin
+  result := PgtkPixmap(FGtkObject);
+end;
+
+procedure TFPgtkPixmap.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_pixmap_new (FPixMap, FMask));
+end;
+
+var
+  EmptyBitmap : PGdkPixmap;
+
+function StringsToPPgchar (Data:TStrings) : PPgchar;
+var r : integer;
+    a : PStringArray;
+begin
+  getmem (a, sizeof (pgchar) * Data.count);
+  for r := 0 to Data.Count-1 do
+    a^[r] := pchar (Data[r]);
+  result := ppgchar (a);
+end;
+
+
+function ArrayToPPgchar (Data:array of string) : PPgchar;
+var r,t : integer;
+    a : PStringArray;
+begin
+  getmem (a, sizeof (pgchar) * (high(data)-low(data)+1));
+  t := 0;
+  for r := low(data) to high(data) do
+    begin
+    a^[r] := pchar (data[t]);
+    inc (t);
+    end;
+  result := ppgchar (a);
+end;
+
+
+function TFPgtkPixmap.GetBuildInsensitive : longbool;
+begin
+  result := longbool(gtk.build_insensitive(TheGtkObject^));
+end;
+
+procedure TFPgtkPixmap.SetBuildInsensitive (TheValue:longbool);
+begin
+  gtk_pixmap_set_build_insensitive(TheGtkObject,gint(TheValue));
+end;
+
+constructor TFPgtkPixmap.Create;
+begin
+  if not assigned (EmptyBitmap) then
+    EmptyBitmap := gdk_pixmap_new (null, 1, 1, 1);
+  FPixMap := EmptyBitmap;
+  FMask := PGdkBitmap (EmptyBitmap);
+  inherited create;
+end;
+
+
+constructor TFPgtkPixmap.CreateFromFile (Filename:string; Window:TFPgtkWidget);
+begin
+  FPixMap := gdk_pixmap_create_from_xpm (ConvertToGtkWidget(Window)^.window, @FMask, nil, pgchar(Filename));
+  inherited create;
+end;
+
+
+constructor TFPgtkPixmap.CreateFromStrings (Data:TStrings; Window:TFPgtkWidget);
+var ppdata : ppgchar;
+begin
+  ppdata := StringsToPPgchar(Data);
+  FPixMap := gdk_pixmap_create_from_xpm_d (ConvertToGtkWidget(Window)^.window, @FMask, nil, ppdata);
+  inherited create;
+  freemem (ppdata, sizeof (pgchar) * Data.count);
+end;
+
+
+constructor TFPgtkPixmap.CreateFromText (Data:string; Window:TFPgtkWidget);
+var l : TStrings;
+begin
+  l := TStringList.Create;
+  try
+    l.Text := data;
+    CreateFromStrings (l, Window);
+  finally
+    l.Free;
+  end;
+end;
+
+
+function TFPgtkPixmap.GetPixmapProp : PGdkPixMap;
+var m : PGdkBitmap;
+begin
+  gtk_pixmap_get (TheGtkObject, @result, @m);
+end;
+
+procedure TFPgtkPixmap.SetPixmapProp (TheValue:PGdkPixMap);
+begin
+  gtk_pixmap_set (TheGtkObject, TheValue, nil);
+end;
+
+function TFPgtkPixmap.GetMask : PGdkBitMap;
+var p : PGdkPixmap;
+begin
+  gtk_pixmap_get (TheGtkObject, @p, @result);
+end;
+
+procedure TFPgtkPixmap.SetMask (TheValue:PGdkBitMap);
+begin
+  gtk_pixmap_set (TheGtkObject, Pixmap, TheValue);
+end;
+
+procedure TFPgtkPixmap.SetPixmap (aPixmap:PGdkPixMap; aMask:PGdkBitmap);
+begin
+  gtk_pixmap_set (TheGtkObject, aPixmap, aMask);
+end;
+
+procedure TFPgtkPixmap.GetPixmap (var aPixmap:PGdkPixmap; var aMask:PGdkBitmap);
+var P:PGdkPixmap; 
+   M:PGdkBitmap;
+begin
+  gtk_pixmap_get (TheGtkObject, @p, @m);
+  apixmap := p;
+  amask := m;
+end;
+
+procedure TFPgtkPixmap.LoadFromFile (Filename:string);
+var bm : PGdkBitmap;
+    pm : PGdkPixmap;
+begin
+  pm := gdk_pixmap_colormap_create_from_xpm (nil, Colormap, @bm, nil, pgchar(Filename));
+  SetPixmap (pm, bm);
+end;
+
+procedure TFPgtkPixmap.LoadFromStrings (data:TStrings);
+var bm : PGdkBitmap;
+    pm : PGdkPixmap;
+    ppdata : ppgchar;
+begin
+  ppdata := StringsToPPgchar(Data);
+  pm := gdk_pixmap_colormap_create_from_xpm_d (nil, Colormap, @bm, nil, ppdata);
+  SetPixmap (pm, bm);
+  freemem (ppdata, sizeof (pgchar) * Data.count);
+end;
+
+procedure TFPgtkPixmap.LoadFromText (data:string);
+var l : TStrings;
+begin
+  l := TStringList.Create;
+  try
+    l.Text := data;
+    LoadFromStrings (l);
+  finally
+    l.Free;
+  end;
+end;
+
+procedure TFPgtkPixmap.LoadFromArray (data:array of string);
+var bm : PGdkBitmap;
+    pm : PGdkPixmap;
+    ppdata : ppgchar;
+begin
+  ppdata := ArrayToPPgchar(Data);
+  pm := gdk_pixmap_colormap_create_from_xpm_d (nil, Colormap, @bm, nil, ppdata);
+  SetPixmap (pm, bm);
+  freemem (ppdata, sizeof (pgchar) * (high(data)-low(data)+1));
+end;
+
+procedure CreateGdkPixmap (var ThePixmap:PGdkPixmap; var TheMask:PGdkBitmap; aWindow:PGdkWindow; data:array of string);
+var ppdata : ppgchar;
+begin
+  ppdata := ArrayToPPgchar(Data);
+  ThePixmap := gdk_pixmap_create_from_xpm_d (aWindow, @TheMask, nil, ppdata);
+  freemem (ppdata, sizeof (pgchar) * (high(data)-low(data)+1));
+end;
+
+
+ { TFPgtkContainer }
+
+function TFPgtkContainer.TheGtkObject : PGtkContainer;
+begin
+  result := PgtkContainer(FGtkObject);
+end;
+
+
+function TFPgtkContainer.GetBorder : integer;
+begin
+  result := gtk.border_width(TheGtkObject^);
+end;
+
+procedure TFPgtkContainer.SetBorder (TheValue:integer);
+begin
+  gtk_container_set_border_width(TheGtkObject,TheValue);
+end;
+
+procedure TFPgtkContainer.Add (AWidget:TFPgtkWidget; IsVisible:boolean); Overload;
+begin
+  gtk_container_add (TheGtkObject, ConvertToGtkWidget(AWidget));
+  if IsVisible then
+    AWidget.Show;
+end;
+
+procedure TFPgtkContainer.Add (AWidget:TFPgtkWidget); Overload;
+begin
+  gtk_container_add (TheGtkObject, ConvertToGtkWidget(AWidget));
+  AWidget.Show;
+end;
+
+procedure TFPgtkContainer.Remove (AWidget:TFPgtkWidget);
+begin
+  gtk_container_remove (TheGtkObject, PGtkwidget(ConvertToGtkObject(AWidget)));
+end;
+
+constructor TFPgtkContainer.Create;
+begin
+  inherited create;
+  FChildren := TFPgtkWidgetGroup.Create;
+end;
+
+
+destructor TFPgtkContainer.Destroy;
+begin
+  if assigned(FChildren) then
+    FChildren.Free;
+  inherited destroy;
+end;
+
+
+function TFPgtkContainer.GetChildren : TFPgtkWidgetGroup;
+begin
+  FChildren.GtkList := gtk_container_children (TheGtkObject);
+  result := FChildren;
+end;
+
+procedure TFPgtkContainer.Focus (Direction:TGtkDirectionType);
+begin
+  gtk_container_focus (TheGtkObject, Direction);
+end;
+
+procedure TFPgtkContainer.FocusChild (Child:TFPgtkWidget);
+begin
+  gtk_container_set_focus_child (TheGtkObject, PGtkwidget(ConvertToGtkObject(Child)));
+end;
+
+procedure TFPgtkContainer.RegisterToplevel;
+begin
+  gtk_container_register_toplevel (TheGtkObject);
+end;
+
+procedure TFPgtkContainer.UnregisterToplevel;
+begin
+  gtk_container_unregister_toplevel (TheGtkObject);
+end;
+
+procedure TFPgtkContainer.ResizeChildren;
+begin
+  gtk_container_resize_children (TheGtkObject);
+end;
+
+function DirectionFunctionSignalfunc (Sender:PGtkobject; Direction:TGtkDirectionType; data:pointer) : TGtkDirectionType; cdecl;
+var p : TFPgtkDirectionFunctionSignalFunction;
+begin
+with PSignalData(data)^ do
+  begin
+  p := TFPgtkDirectionFunctionSignalFunction (TheSignalProc);
+  result := p (TheWidget as TFPgtkObject, Direction, TheData)
+  end;
+end;
+
+function TFPgtkContainer.DirectionFunctionSignalConnect (signal:string; proc:TFPgtkDirectionFunctionSignalFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@DirectionFunctionSignalfunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkContainer.DirectionFunctionSignalConnectAfter (signal:string; proc:TFPgtkDirectionFunctionSignalFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@DirectionFunctionSignalfunc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkContainer.ConnectAdd (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+begin
+  result := WidgetSignalConnect (sgAdd, proc, data);
+end;
+
+function TFPgtkContainer.ConnectAfterAdd (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+begin
+  result := WidgetSignalConnectAfter (sgAdd, proc, data);
+end;
+
+function TFPgtkContainer.ConnectRemove (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+begin
+  result := WidgetSignalConnect (sgRemove, proc, data);
+end;
+
+function TFPgtkContainer.ConnectAfterRemove (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+begin
+  result := WidgetSignalConnectAfter (sgRemove, proc, data);
+end;
+
+function TFPgtkContainer.ConnectCheckResize (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnect (sgCheckResize, proc, data);
+end;
+
+function TFPgtkContainer.ConnectAfterCheckResize (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnectAfter (sgCheckResize, proc, data);
+end;
+
+function TFPgtkContainer.ConnectFocus (proc:TFPgtkDirectionFunctionSignalFunction; data:pointer) : guint;
+begin
+  result := DirectionFunctionSignalConnect (sgFocus, proc, data);
+end;
+
+function TFPgtkContainer.ConnectAfterFocus (proc:TFPgtkDirectionFunctionSignalFunction; data:pointer) : guint;
+begin
+  result := DirectionFunctionSignalConnectAfter (sgFocus, proc, data);
+end;
+
+function TFPgtkContainer.ConnectSetFocusChild (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+begin
+  result := WidgetSignalConnect (sgSetFocusChild, proc, data);
+end;
+
+function TFPgtkContainer.ConnectAfterSetFocusChild (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+begin
+  result := WidgetSignalConnectAfter (sgSetFocusChild, proc, data);
+end;
+
+ { TFPgtkBin }
+
+function TFPgtkBin.TheGtkObject : PGtkBin;
+begin
+  result := PgtkBin(FGtkObject);
+end;
+
+
+function TFPgtkBin.GetChild : TFPgtkWidget;
+begin
+  result := GetPascalInstance(PGtkObject(TheGtkObject^.Child),tfpgtkwidget) as tfpgtkwidget;
+end;
+
+procedure TFPgtkBin.SetChild (TheValue:TFPgtkWidget);
+begin
+  Add (TheValue);
+end;
+
+ { TFPgtkAlignment }
+
+function TFPgtkAlignment.TheGtkObject : PGtkAlignment;
+begin
+  result := PgtkAlignment(FGtkObject);
+end;
+
+
+procedure TFPgtkAlignment.Configure (anXAlign:gfloat; anYAlign:gfloat; anXScale:gfloat; anYScale:gfloat);
+begin
+  gtk_alignment_set (TheGtkObject, anXAlign, anYAlign, anXScale, anYScale);
+end;
+
+ { TFPgtkFrame }
+
+function TFPgtkFrame.TheGtkObject : PGtkFrame;
+begin
+  result := PgtkFrame(FGtkObject);
+end;
+
+procedure TFPgtkFrame.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_frame_new (nil));
+end;
+
+
+function TFPgtkFrame.GetText : string;
+begin
+  result := TheGtkObject^.thelabel;
+end;
+
+procedure TFPgtkFrame.SetText (TheValue:string);
+begin
+  gtk_frame_set_label(TheGtkObject,ConvertToPgchar(TheValue));
+end;
+
+function TFPgtkFrame.GetAlignment : gfloat;
+begin
+  result := TheGtkObject^.label_xalign;
+end;
+
+procedure TFPgtkFrame.SetAlignment (TheValue:gfloat);
+begin
+  gtk_frame_set_label_align (ThegtkObject, TheValue, 0.0);
+end;
+
+function TFPgtkFrame.GetShadowType : TgtkShadowType;
+begin
+  result := TheGtkObject^.shadow_type;
+end;
+
+procedure TFPgtkFrame.SetShadowType (TheValue:TgtkShadowType);
+begin
+  gtk_frame_set_shadow_type(TheGtkObject,TheValue);
+end;
+
+ { TFPgtkAspectFrame }
+
+function TFPgtkAspectFrame.TheGtkObject : PGtkAspectFrame;
+begin
+  result := PgtkAspectFrame(FGtkObject);
+end;
+
+procedure TFPgtkAspectFrame.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_aspect_frame_new (nil,0,0,1,1));
+end;
+
+
+procedure TFPgtkAspectFrame.Configure (anXAlign:gfloat; anYAlign:gfloat; Ratio:gfloat; ObeyChild:longbool);
+begin
+  gtk_aspect_frame_set (TheGtkObject, anXAlign, anYAlign, Ratio, gint(ObeyChild));
+end;
+
+ { TFPgtkButton }
+
+function TFPgtkButton.TheGtkObject : PGtkButton;
+begin
+  result := PgtkButton(FGtkObject);
+end;
+
+procedure TFPgtkButton.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_button_new);
+end;
+
+
+function TFPgtkButton.LabelClass : TFPgtkLabelClass;
+begin
+  result := TFPgtkLabel;
+end;
+
+procedure TFPgtkButton.CreateLabel (aText:string);
+begin
+if not assigned (FLabel) then
+  begin
+  FLabel := LabelClass.Create ('');
+  with FLabel do
+    begin
+    AskNotification (Self);
+    FAccelKey := ParseULine (aText);
+    end;
+  if assigned(AddContainer) then
+    AddContainer.Add (FLabel)
+  else
+    Add (FLabel);
+  LabelCreated;  
+  end;
+end;
+
+procedure TFPgtkButton.NotifyDestroy (AnObject:TFPgtkObject);
+begin
+  inherited;
+  if AnObject = FLabel then
+    FLabel := nil;
+end;
+
+function TFPgtkButton.ConnectClicked (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnect (sgClicked, proc, data);
+end;
+
+function TFPgtkButton.ConnectAfterClicked (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnectAfter (sgClicked, proc, data);
+end;
+
+function TFPgtkButton.ConnectPressed (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnect (sgPressed, proc, data);
+end;
+
+function TFPgtkButton.ConnectAfterPressed (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnectAfter (sgPressed, proc, data);
+end;
+
+function TFPgtkButton.ConnectReleased (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnect (sgReleased, proc, data);
+end;
+
+function TFPgtkButton.ConnectAfterReleased (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnectAfter (sgReleased, proc, data);
+end;
+
+function TFPgtkButton.ConnectEnter (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnect (sgEnter, proc, data);
+end;
+
+function TFPgtkButton.ConnectAfterEnter (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnectAfter (sgEnter, proc, data);
+end;
+
+function TFPgtkButton.ConnectLeave (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnect (sgLeave, proc, data);
+end;
+
+function TFPgtkButton.ConnectAfterLeave (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnectAfter (sgLeave, proc, data);
+end;
+
+procedure TFPgtkButton.Clicked;
+begin
+  gtk_button_Clicked (TheGtkObject);
+end;
+
+procedure TFPgtkButton.Pressed;
+begin
+  gtk_button_Pressed (TheGtkObject);
+end;
+
+procedure TFPgtkButton.Released;
+begin
+  gtk_button_Released (TheGtkObject);
+end;
+
+procedure TFPgtkButton.Enter;
+begin
+  gtk_button_Enter (TheGtkObject);
+end;
+
+procedure TFPgtkButton.Leave;
+begin
+  gtk_button_Leave (TheGtkObject);
+end;
+
+constructor TFPgtkButton.Create;
+begin
+  inherited create;
+  FAddContainer := nil;
+end;
+
+
+constructor TFPgtkButton.CreateWithLabel (aText:string);
+begin
+  create;
+  Text := aText;
+end;
+
+
+constructor TFPgtkButton.CreateWithLabel (aText:string; AccelGroup:PGtkAccelGroup);
+begin
+  create;
+  Text := aText;
+  if (FAccelKey <> 0) and assigned(AccelGroup) then
+    AcceleratorAdd (AccelGroup, sgClicked, FAccelKey, DefaultButtonModifiers, GTK_ACCEL_Visible);
+end;
+
+
+function TFPgtkButton.GetText : string;
+begin
+  if assigned (FLabel) then
+    result := FLabel.Text
+  else
+    result := '';
+end;
+
+procedure TFPgtkButton.SetText (TheValue:string);
+begin
+  if assigned (FLabel) then
+    FLabel.Text := TheValue
+  else
+    if TheValue <> '' then
+      CreateLabel (TheValue);
+end;
+
+function TFPgtkButton.GetReliefStyle : TGtkReliefStyle;
+begin
+  result := gtk_button_get_relief(TheGtkObject);
+end;
+
+procedure TFPgtkButton.SetReliefStyle (TheValue:TGtkReliefStyle);
+begin
+  gtk_button_set_relief(TheGtkObject,TheValue);
+end;
+
+procedure TFPgtkButton.LabelCreated;
+begin
+  FLabel.setalignment (0.5,0.5);
+end;
+
+ { TFPgtkToggleButton }
+
+function TFPgtkToggleButton.TheGtkObject : PGtkToggleButton;
+begin
+  result := PgtkToggleButton(FGtkObject);
+end;
+
+procedure TFPgtkToggleButton.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_toggle_button_new);
+end;
+
+
+function TFPgtkToggleButton.ConnectToggled (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnect (sgToggled, proc, data);
+end;
+
+function TFPgtkToggleButton.ConnectAfterToggled (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnectAfter (sgToggled, proc, data);
+end;
+
+procedure TFPgtkToggleButton.Toggled;
+begin
+  gtk_toggle_button_toggled (TheGtkObject);
+end;
+
+function TFPgtkToggleButton.GetActive : boolean;
+begin
+  result := gtk_toggle_button_get_active(TheGtkObject);
+end;
+
+procedure TFPgtkToggleButton.SetActive (TheValue:boolean);
+begin
+  gtk_toggle_button_set_active(TheGtkObject,TheValue);
+end;
+
+function TFPgtkToggleButton.GetDrawIndicator : boolean;
+begin
+  result := boolean(gtk.draw_indicator(TheGtkObject^));
+end;
+
+procedure TFPgtkToggleButton.SetDrawIndicator (TheValue:boolean);
+begin
+  gtk.Set_draw_indicator(TheGtkObject^,guint(TheValue))
+end;
+
+ { TFPgtkCheckButton }
+
+function TFPgtkCheckButton.TheGtkObject : PGtkCheckButton;
+begin
+  result := PgtkCheckButton(FGtkObject);
+end;
+
+procedure TFPgtkCheckButton.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_check_button_new);
+end;
+
+
+ { TFPgtkRadioButton }
+
+function TFPgtkRadioButton.TheGtkObject : PGtkRadioButton;
+begin
+  result := PgtkRadioButton(FGtkObject);
+end;
+
+
+constructor TFPgtkRadioButton.Create (AGroup:TFPgtkRadioButtonGroup);
+begin
+  FGroup := AGroup;
+  inherited create;
+end;
+
+
+constructor TFPgtkRadioButton.CreateWithLabel (AGroup:TFPgtkRadioButtonGroup; aText:string);
+begin
+  FGroup := AGroup;
+  inherited CreateWithLabel (aText);
+end;
+
+
+procedure TFPgtkRadioButton.CreateGtkObject;
+begin
+  if not assigned (FGroup) then
+    FGroup := TFPgtkRadioButtonGroup.Create;
+  TheGtkWidget := gtk_radio_button_new (FGroup.GtkSList);
+  FGroup.GtkSList := gtk_radio_button_group (TheGtkObject);
+end;
+
+ { TFPgtkRadioButtonGroup }
+
+
+function TFPgtkRadioButtonGroup.GetItem (index:integer) : TFPgtkRadioButton;
+begin
+  result := TFPgtkRadioButton(Inherited items[index]);
+end;
+
+procedure TFPgtkRadioButtonGroup.SetItem (index:integer; TheValue:TFPgtkRadioButton);
+begin
+  inherited items[index] := TheValue;
+end;
+
+function TFPgtkRadioButtonGroup.ActiveButtonText : string;
+begin
+  result := ActiveButton.Text;
+end;
+
+function TFPgtkRadioButtonGroup.ActiveButtonIndex : integer;
+begin
+  Result := pred(count);
+  while (Result >= 0) and (not items[Result].Active) do
+    dec (Result);
+end;
+
+function TFPgtkRadioButtonGroup.ActiveButton : TFPgtkRadioButton;
+var r : integer;
+begin
+  r := ActiveButtonIndex;
+  if r >= 0 then
+    result := items[r]
+  else
+    result := nil;
+end;
+
+function RadioButtonGroupCreateFromStrings (TheItems:TStrings; ToggledFunction:TFPgtkSignalFunction) : TFPgtkRadioButtonGroup;
+var r : integer;
+    b : TFPgtkRadioButton;
+begin
+  result := TFPgtkRadioButtonGroup.Create;
+  result.BeginUpdate;
+  for r := TheItems.count-1 downto 0 do
+    begin
+    b := TFPgtkRadioButton.CreateWithLabel (result, TheItems[r]);
+    if assigned(toggledfunction) then
+      b.connecttoggled (ToggledFunction, IntToPointer(r));
+    end;
+  b.active := true;
+  result.EndUpdate;
+end;
+
+
+ { TFPgtkOptionMenu }
+
+function TFPgtkOptionMenu.TheGtkObject : PGtkOptionMenu;
+begin
+  result := PgtkOptionMenu(FGtkObject);
+end;
+
+procedure TFPgtkOptionMenu.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_option_menu_new);
+end;
+
+
+function TFPgtkOptionMenu.GetMenu : TFPgtkMenu;
+begin
+  result := GetPascalInstance(PGtkObject(gtk_option_menu_get_menu(TheGtkObject)),tfpgtkmenu) as tfpgtkmenu;
+end;
+
+procedure TFPgtkOptionMenu.setmenu (TheValue:TFPgtkMenu);
+begin
+  gtk_option_menu_set_menu(TheGtkObject, ConvertToGtkWidget(TheValue));
+end;
+
+procedure TFPgtkOptionMenu.RemoveMenu;
+begin
+  gtk_option_menu_remove_menu (TheGtkObject);
+end;
+
+procedure TFPgtkOptionMenu.SetHistory (index:integer);
+begin
+  gtk_option_menu_set_history (TheGtkObject, index);
+end;
+
+procedure TFPgtkOptionMenu.Clear;
+var w : TFPgtkWidget;
+begin
+  w := Menu;
+  if assigned(w) then
+    begin
+    w := TFPgtkMenu(w).Active;
+    if assigned (w) then
+      TFPgtkItem(w).Deselect;
+    end;
+end;
+
+ { TFPgtkItem }
+
+function TFPgtkItem.TheGtkObject : PGtkItem;
+begin
+  result := PgtkItem(FGtkObject);
+end;
+
+
+function TFPgtkItem.LabelClass : TFPgtkLabelClass;
+begin
+  result := TFPgtkLabel;
+end;
+
+procedure TFPgtkItem.CreateLabel (aText:string);
+begin
+  if not assigned (FLabel) then
+    begin
+    FLabel := LabelClass.Create ('');
+    with FLabel do
+      begin
+      AskNotification (Self);
+      FAccelKey := ParseULine (aText);
+      end;
+    if assigned(AddContainer) then
+      AddContainer.Add (FLabel)
+    else
+      Add (FLabel);
+    LabelCreated;
+    end;
+end;
+
+procedure TFPgtkItem.NotifyDestroy (AnObject:TFPgtkObject);
+begin
+  inherited;
+  if AnObject = FLabel then
+    FLabel := nil;
+end;
+
+function TFPgtkItem.ConnectSelect (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnect (sgSelect, proc, data);
+end;
+
+function TFPgtkItem.ConnectAfterSelect (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnectAfter (sgSelect, proc, data);
+end;
+
+function TFPgtkItem.ConnectDeselect (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnect (sgDeselect, proc, data);
+end;
+
+function TFPgtkItem.ConnectAfterDeselect (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnectAfter (sgDeselect, proc, data);
+end;
+
+function TFPgtkItem.ConnectToggle (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnect (sgToggle, proc, data);
+end;
+
+function TFPgtkItem.ConnectAfterToggle (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnectAfter (sgToggle, proc, data);
+end;
+
+procedure TFPgtkItem.Select;
+begin
+  gtk_item_Select (TheGtkObject);
+end;
+
+procedure TFPgtkItem.Deselect;
+begin
+  gtk_item_Deselect (TheGtkObject);
+end;
+
+procedure TFPgtkItem.Toggle;
+begin
+  gtk_item_Toggle (TheGtkObject);
+end;
+
+constructor TFPgtkItem.Create;
+begin
+  inherited;
+  FAddContainer := nil;
+end;
+
+
+constructor TFPgtkItem.CreateWithLabel (aText:string);
+begin
+  inherited create;
+  Text := aText;
+end;
+
+
+function TFPgtkItem.GetText : string;
+begin
+  if assigned (FLabel) then
+    result := FLabel.Text
+  else
+    result := '';
+end;
+
+procedure TFPgtkItem.SetText (TheValue:string);
+begin
+  if assigned (FLabel) then
+    FLabel.Text := TheValue
+  else
+    if TheValue <> '' then
+      CreateLabel (TheValue);
+end;
+
+procedure TFPgtkItem.LabelCreated;
+begin
+end;
+
+ { TFPgtkItemGroup }
+
+
+function TFPgtkItemGroup.GetItem (index:integer) : TFPgtkItem;
+begin
+  result := TFPgtkItem (inherited items[index]);
+end;
+
+procedure TFPgtkItemGroup.SetItem (index:integer; TheValue:TFPgtkItem);
+begin
+  inherited items[index] := TheValue;
+end;
+
+procedure TFPgtkItemGroup.FillFromList (aList:TStrings);
+var r : integer;
+    i : TFPgtkItem;
+begin
+  BeginUpdate;
+  for r := 0 to aList.count-1 do
+    begin
+    i := FItemClass.CreateWithLabel (aList[r]);
+    add (i);
+    i.Show;
+    end;
+  EndUpdate;
+end;
+
+procedure TFPgtkItemGroup.FillFromCommaText (aList:string);
+var l : TStrings;
+begin
+  l := TStringList.Create;
+  try
+    l.commatext := aList;
+    FillFromList (l);
+  finally
+    l.Free;
+  end;
+end;
+
+procedure TFPgtkItemGroup.FillFromArray (aList:array of string);
+var r : integer;
+    l : TStrings;
+begin
+  l := TStringlist.Create;
+  try
+    for r := low (aList) to high(aList) do
+      l.Add (aList[r]);
+    FillFromList (l);
+  finally
+    l.Free;
+  end;
+end;
+
+procedure TFPgtkItemGroup.SignalConnect (Signal:string; proc:TFPgtkSignalFunction; data:pointer);
+var r : integer;
+begin
+  if assigned (Proc) then
+    for r := 0 to count-1 do
+      Items[r].SignalConnect (Signal, proc, data);
+end;
+
+constructor TFPgtkItemGroup.create (AnItemClass:TFPgtkItemClass);
+begin
+  inherited create;
+  FItemClass := AnItemClass;
+end;
+
+
+function TFPgtkItemGroup.AddTextItem (aText:string) : TFPgtkItem;
+begin
+  result := FItemClass.CreateWithLabel (aText);
+  Add (result);
+  result.Show;
+end;
+
+ { TFPgtkMenuItem }
+
+function TFPgtkMenuItem.TheGtkObject : PGtkMenuItem;
+begin
+  result := PgtkMenuItem(FGtkObject);
+end;
+
+procedure TFPgtkMenuItem.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_menu_item_new);
+end;
+
+
+function TFPgtkMenuItem.ConnectActivate (proc:TFPgtksignalFunction; data:pointer) : guint;
+begin
+  result := signalConnect (sgActivate, proc, data);
+end;
+
+function TFPgtkMenuItem.ConnectAfterActivate (proc:TFPgtksignalFunction; data:pointer) : guint;
+begin
+  result := signalConnectAfter (sgActivate, proc, data);
+end;
+
+function TFPgtkMenuItem.ConnectActivateItem (proc:TFPgtksignalFunction; data:pointer) : guint;
+begin
+  result := signalConnect (sgActivateItem, proc, data);
+end;
+
+function TFPgtkMenuItem.ConnectAfterActivateItem (proc:TFPgtksignalFunction; data:pointer) : guint;
+begin
+  result := signalConnectAfter (sgActivateItem, proc, data);
+end;
+
+procedure TFPgtkMenuItem.Activate;
+begin
+  gtk_menu_item_activate (TheGtkObject);
+end;
+
+procedure TFPgtkMenuItem.SetSubMenu (aSubMenu:TFPgtkWidget);
+begin
+  gtk_menu_item_Set_submenu (TheGtkObject, PGtkwidget(ConvertToGtkObject(aSubMenu)));
+end;
+
+procedure TFPgtkMenuItem.RemoveSubMenu;
+begin
+  gtk_menu_item_remove_submenu (TheGtkObject);
+end;
+
+procedure TFPgtkMenuItem.Configure (ShowToggleIndicator:boolean; ShowSubmenuIndicator:boolean);
+begin
+  gtk_menu_item_configure (TheGtkObject, ord(ShowToggleIndicator), ord(ShowSubmenuIndicator));
+end;
+
+procedure TFPgtkMenuItem.RightJustify;
+begin
+  gtk_menu_item_right_justify (TheGtkObject);
+end;
+
+function TFPgtkMenuItem.GetPlacement : TGtkSubmenuPlacement;
+begin
+  result := TGtkSubmenuPlacement(submenu_placement(TheGtkObject^));
+end;
+
+procedure TFPgtkMenuItem.SetPlacement (TheValue:TGtkSubmenuPlacement);
+begin
+  gtk_menu_item_set_placement(TheGtkObject,TheValue);
+end;
+
+function TFPgtkMenuItem.GetToggleIndicator : boolean;
+begin
+  result := boolean(gtk.show_toggle_indicator(TheGtkObject^));
+end;
+
+procedure TFPgtkMenuItem.SetToggleIndicator (TheValue:boolean);
+begin
+  Configure (TheValue, SubMenuIndicator);
+end;
+
+function TFPgtkMenuItem.GetSubMenuIndicator : boolean;
+begin
+  result := boolean(gtk.show_submenu_indicator(TheGtkObject^));
+end;
+
+procedure TFPgtkMenuItem.SetSubMenuIndicator (TheValue:boolean);
+begin
+  configure (ToggleIndicator, TheValue);
+end;
+
+function TFPgtkMenuItem.GetJustifyRight : boolean;
+begin
+  result := boolean(gtk.right_justify(TheGtkObject^));
+end;
+
+procedure TFPgtkMenuItem.SetJustifyRight (TheValue:boolean);
+begin
+  gtk.Set_right_justify(TheGtkObject^,guint(TheValue))
+end;
+
+function TFPgtkMenuItem.GetSubMenu : TFPgtkMenuShell;
+begin
+  result := GetPascalInstance(PGtkObject(TheGtkObject^.submenu),tfpgtkmenushell) as tfpgtkmenushell;
+end;
+
+procedure TFPgtkMenuItem.SetPropSubMenu (TheValue:TFPgtkMenuShell);
+begin
+  SetSubMenu (TheValue);
+end;
+
+function TFPgtkMenuItem.LabelClass : TFPgtkLabelClass;
+begin
+  result := TFPgtkAccelLabel;
+end;
+
+procedure TFPgtkMenuItem.LabelCreated;
+begin
+  with (TheLabel as TFPgtkAccelLabel) do
+    AccelWidget := Self;
+end;
+
+ { TFPgtkCheckMenuItem }
+
+function TFPgtkCheckMenuItem.TheGtkObject : PGtkCheckMenuItem;
+begin
+  result := PgtkCheckMenuItem(FGtkObject);
+end;
+
+procedure TFPgtkCheckMenuItem.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_check_menu_item_new);
+end;
+
+
+function TFPgtkCheckMenuItem.ConnectToggled (proc:TFPgtksignalFunction; data:pointer) : guint;
+begin
+  result := signalConnect (sgToggled, proc, data);
+end;
+
+function TFPgtkCheckMenuItem.ConnectAfterToggled (proc:TFPgtksignalFunction; data:pointer) : guint;
+begin
+  result := signalConnectAfter (sgToggled, proc, data);
+end;
+
+procedure TFPgtkCheckMenuItem.Toggled;
+begin
+  gtk_check_menu_item_toggled (TheGtkObject);
+end;
+
+function TFPgtkCheckMenuItem.GetActive : boolean;
+begin
+  result := boolean(gtk.active(TheGtkObject^));
+end;
+
+procedure TFPgtkCheckMenuItem.SetActive (TheValue:boolean);
+begin
+  gtk_check_menu_item_set_active(TheGtkObject,TheValue);
+end;
+
+function TFPgtkCheckMenuItem.GetShowToggle : boolean;
+begin
+  result := boolean(gtk.always_show_toggle(TheGtkObject^));
+end;
+
+procedure TFPgtkCheckMenuItem.SetShowToggle (TheValue:boolean);
+begin
+  gtk_check_menu_item_set_show_toggle(TheGtkObject,TheValue);
+end;
+
+ { TFPgtkRadioMenuItem }
+
+function TFPgtkRadioMenuItem.TheGtkObject : PGtkRadioMenuItem;
+begin
+  result := PgtkRadioMenuItem(FGtkObject);
+end;
+
+
+procedure TFPgtkRadioMenuItem.CreateGtkObject;
+begin
+  if not assigned(FGroup) then
+    FGroup := TFPgtkRadioMenuGroup.Create;
+  TheGtkWidget := gtk_radio_menu_item_new (FGroup.GtkSList);
+  FGroup.GtkSList := gtk_radio_menu_item_group (TheGtkObject);
+end;
+
+constructor TFPgtkRadioMenuItem.Create (AGroup:TFPgtkRadioMenuGroup);
+begin
+  FGroup := AGroup;
+  inherited create;
+end;
+
+
+constructor TFPgtkRadioMenuItem.CreateWithLabel (Agroup:TFPgtkRadioMenuGroup; aText:string);
+begin
+  FGroup := Agroup;
+  inherited CreateWithLabel (aText);
+end;
+
+
+ { TFPgtkRadioMenuGroup }
+
+
+function TFPgtkRadioMenuGroup.GetItem (index:integer) : TFPgtkRadioMenuItem;
+begin
+  result := TFPgtkRadioMenuItem(Inherited items[index]);
+end;
+
+procedure TFPgtkRadioMenuGroup.SetItem (index:integer; TheValue:TFPgtkRadioMenuItem);
+begin
+  inherited items[index] := TheValue;
+end;
+
+function TFPgtkRadioMenuGroup.ActiveMenuText : string;
+begin
+  result := ActiveMenu.Text;
+end;
+
+function TFPgtkRadioMenuGroup.ActiveMenuIndex : integer;
+begin
+  Result := pred(count);
+  while (Result >= 0) and (not items[Result].Active) do
+    dec (Result);
+end;
+
+function TFPgtkRadioMenuGroup.ActiveMenu : TFPgtkRadioMenuItem;
+var r : integer;
+begin
+  r := ActiveMenuIndex;
+  if r >= 0 then
+    result := items[r]
+  else
+    result := nil;
+end;
+
+constructor TFPgtkRadioMenuGroup.create;
+begin
+  inherited create (TFPgtkRadioMenuItem);
+end;
+
+
+ { TFPgtkTearOffMenuItem }
+
+function TFPgtkTearOffMenuItem.TheGtkObject : PGtkTearOffMenuItem;
+begin
+  result := PgtkTearOffMenuItem(FGtkObject);
+end;
+
+procedure TFPgtkTearOffMenuItem.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_tearoff_menu_item_new);
+end;
+
+
+ { TFPgtkListItem }
+
+function TFPgtkListItem.TheGtkObject : PGtkListItem;
+begin
+  result := PgtkListItem(FGtkObject);
+end;
+
+procedure TFPgtkListItem.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_list_item_new);
+end;
+
+
+procedure ScrollSignalproc (Sender:PGtkobject; ScrollType:TgtkScrollType; position:gfloat; data:pointer); cdecl;
+var p : TFPgtkScrollSignalFunction;
+begin
+with PSignalData(data)^ do
+  begin
+  p := TFPgtkScrollSignalFunction (TheSignalProc);
+  p (TheWidget as TFPgtkObject, ScrollType, position, TheData)
+  end;
+end;
+
+function TFPgtkListItem.ScrollSignalConnect (signal:string; proc:TFPgtkScrollSignalFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@ScrollSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkListItem.ScrollSignalConnectAfter (signal:string; proc:TFPgtkScrollSignalFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@ScrollSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+procedure ScrollBooleanSignalproc (Sender:PGtkobject; ScrolType:TgtkScrollType; Position:gfloat; AutoStartSelection:boolean; data:pointer); cdecl;
+var p : TFPgtkScrollBooleanSignalFunction;
+begin
+with PSignalData(data)^ do
+  begin
+  p := TFPgtkScrollBooleanSignalFunction (TheSignalProc);
+  p (TheWidget as TFPgtkObject, ScrolType, Position, AutoStartSelection, TheData)
+  end;
+end;
+
+function TFPgtkListItem.ScrollBooleanSignalConnect (signal:string; proc:TFPgtkScrollBooleanSignalFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@ScrollBooleanSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkListItem.ScrollBooleanSignalConnectAfter (signal:string; proc:TFPgtkScrollBooleanSignalFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@ScrollBooleanSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkListItem.ConnectToggleFocusRow (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnect (sgToggleFocusRow, proc, data);
+end;
+
+function TFPgtkListItem.ConnectAfterToggleFocusRow (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnectAfter (sgToggleFocusRow, proc, data);
+end;
+
+function TFPgtkListItem.ConnectSelectAll (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnect (sgSelectAll, proc, data);
+end;
+
+function TFPgtkListItem.ConnectAfterSelectAll (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnectAfter (sgSelectAll, proc, data);
+end;
+
+function TFPgtkListItem.ConnectUnselectAll (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnect (sgUnselectAll, proc, data);
+end;
+
+function TFPgtkListItem.ConnectAfterUnselectAll (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnectAfter (sgUnselectAll, proc, data);
+end;
+
+function TFPgtkListItem.ConnectUndoSelection (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnect (sgUndoSelection, proc, data);
+end;
+
+function TFPgtkListItem.ConnectAfterUndoSelection (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnectAfter (sgUndoSelection, proc, data);
+end;
+
+function TFPgtkListItem.ConnectStartSelection (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnect (sgStartSelection, proc, data);
+end;
+
+function TFPgtkListItem.ConnectAfterStartSelection (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnectAfter (sgStartSelection, proc, data);
+end;
+
+function TFPgtkListItem.ConnectEndSelection (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnect (sgEndSelection, proc, data);
+end;
+
+function TFPgtkListItem.ConnectAfterEndSelection (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnectAfter (sgEndSelection, proc, data);
+end;
+
+function TFPgtkListItem.ConnectToggleAddMode (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnect (sgToggleAddMode, proc, data);
+end;
+
+function TFPgtkListItem.ConnectAfterToggleAddMode (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnectAfter (sgToggleAddMode, proc, data);
+end;
+
+function TFPgtkListItem.ConnectExtendSelection (proc:TFPgtkScrollBooleanSignalFunction; data:pointer) : guint;
+begin
+  result := ScrollBooleanSignalConnect (sgExtendSelection, proc, data);
+end;
+
+function TFPgtkListItem.ConnectAfterExtendSelection (proc:TFPgtkScrollBooleanSignalFunction; data:pointer) : guint;
+begin
+  result := ScrollBooleanSignalConnectAfter (sgExtendSelection, proc, data);
+end;
+
+function TFPgtkListItem.ConnectScrollVertical (proc:TFPgtkScrollSignalFunction; data:pointer) : guint;
+begin
+  result := ScrollSignalConnect (sgScrollVertical, proc, data);
+end;
+
+function TFPgtkListItem.ConnectAfterScrollVertical (proc:TFPgtkScrollSignalFunction; data:pointer) : guint;
+begin
+  result := ScrollSignalConnectAfter (sgScrollVertical, proc, data);
+end;
+
+function TFPgtkListItem.ConnectScrollHorizontal (proc:TFPgtkScrollSignalFunction; data:pointer) : guint;
+begin
+  result := ScrollSignalConnect (sgScrollHorizontal, proc, data);
+end;
+
+function TFPgtkListItem.ConnectAfterScrollHorizontal (proc:TFPgtkScrollSignalFunction; data:pointer) : guint;
+begin
+  result := ScrollSignalConnectAfter (sgScrollHorizontal, proc, data);
+end;
+
+procedure TFPgtkListItem.Select;
+begin
+  gtk_list_item_select (TheGtkObject);
+end;
+
+procedure TFPgtkListItem.Deselect;
+begin
+  gtk_list_item_deselect (TheGtkObject);
+end;
+
+ { TFPgtkListItemGroup }
+
+
+constructor TFPgtkListItemGroup.create;
+begin
+  inherited create (TFPgtkListItem);
+  ManageLists := false;
+end;
+
+
+ { TFPgtkTreeItem }
+
+function TFPgtkTreeItem.TheGtkObject : PGtkTreeItem;
+begin
+  result := PgtkTreeItem(FGtkObject);
+end;
+
+procedure TFPgtkTreeItem.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_tree_item_new);
+end;
+
+
+function TFPgtkTreeItem.GetSubTree : TFPgtkWidget;
+begin
+  result := GetPascalInstance(PGtkObject(gtk_tree_item_subtree(TheGtkObject)),tfpgtkwidget) as tfpgtkwidget;
+end;
+
+procedure TFPgtkTreeItem.SetSubTree (TheValue:TFPgtkWidget);
+begin
+  if assigned(TheValue) then
+    gtk_tree_item_set_subtree (TheGtkObject, ConvertToGtkWidget(TheValue))
+  else
+    gtk_tree_item_remove_subtree (TheGtkObject);
+end;
+
+function TFPgtkTreeItem.GetPixPlus : TFPgtkWidget;
+begin
+  result := GetPascalInstance(PGtkObject(TheGtkObject^.plus_pix_widget),tfpgtkwidget) as tfpgtkwidget;
+end;
+
+function TFPgtkTreeItem.GetPixMinus : TFPgtkWidget;
+begin
+  result := GetPascalInstance(PGtkObject(TheGtkObject^.minus_pix_widget),tfpgtkwidget) as tfpgtkwidget;
+end;
+
+function TFPgtkTreeItem.GetExpanded : boolean;
+begin
+  result := boolean(gtk.expanded(TheGtkObject^));
+end;
+
+procedure TFPgtkTreeItem.SetExpanded (TheValue:boolean);
+begin
+  if TheValue then
+    Expand
+  else
+    collapse;
+end;
+
+procedure TFPgtkTreeItem.Select;
+begin
+  gtk_tree_item_select (TheGtkObject);
+end;
+
+procedure TFPgtkTreeItem.Deselect;
+begin
+  gtk_tree_item_deselect (TheGtkObject);
+end;
+
+procedure TFPgtkTreeItem.Expand;
+begin
+  gtk_tree_item_expand (TheGtkObject);
+end;
+
+procedure TFPgtkTreeItem.Collapse;
+begin
+  gtk_tree_item_collapse (TheGtkObject);
+end;
+
+function TFPgtkTreeItem.ConnectCollapse (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnect (sgCollapse, proc, data);
+end;
+
+function TFPgtkTreeItem.ConnectAfterCollapse (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnectAfter (sgCollapse, proc, data);
+end;
+
+function TFPgtkTreeItem.ConnectExpand (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnect (sgExpand, proc, data);
+end;
+
+function TFPgtkTreeItem.ConnectAfterExpand (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnectAfter (sgExpand, proc, data);
+end;
+
+ { TFPgtkWindow }
+
+function TFPgtkWindow.TheGtkObject : PGtkWindow;
+begin
+  result := PgtkWindow(FGtkObject);
+end;
+
+procedure TFPgtkWindow.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_window_new (TheWindowType));
+end;
+
+
+constructor TFPgtkWindow.Create (AType:TGtkWindowType);
+begin
+  TheWindowType := AType;
+  inherited Create;
+  FAccelGroups := TList.Create;
+  FMainLevel := NoMainLevel;
+end;
+
+
+destructor TFPgtkWindow.Destroy;
+begin
+  FAccelGroups.Free;
+  inherited;
+end;
+
+
+function TFPgtkWindow.GetWindowType : TGtkWindowType;
+begin
+  result := TheGtkObject^.thetype;
+end;
+
+procedure TFPgtkWindow.SetWindowType (TheValue:TGtkWindowType);
+begin
+  TheGtkObject^.thetype := TheValue;
+end;
+
+function TFPgtkWindow.GetTitle : string;
+begin
+  result := TheGtkObject^.title;
+end;
+
+procedure TFPgtkWindow.SetTitle (TheValue:string);
+begin
+  gtk_window_set_title(TheGtkObject,ConvertToPgchar(TheValue));
+end;
+
+function TFPgtkWindow.GetModal : boolean;
+begin
+  result := boolean(gtk.modal(TheGtkObject^));
+end;
+
+procedure TFPgtkWindow.SetModal (TheValue:boolean);
+begin
+  gtk_window_set_modal(TheGtkObject,TheValue);
+end;
+
+procedure TFPgtkWindow.DoDialogResult (Action:integer; Sender:TFPgtkObject);
+begin
+  if assigned (OnDialogResult) then
+    OnDialogResult (self, FDialogResult, Action, Sender);
+end;
+
+procedure TFPgtkWindow.DoDialogInit (InitData:pointer);
+begin
+  if assigned (OnDialogInit) then
+    OnDialogInit (self, InitData);
+  FDialogResult := InitData;
+end;
+
+procedure TFPgtkWindow.Close;
+begin
+  if (FDestroying = dsAlive) then
+    gtk_widget_destroy (TheGtkWidget);
+end;
+
+procedure TFPgtkWindow.CloseWindow (Sender:TFPgtkObject; data:pointer);
+begin
+  Close;
+end;
+
+procedure TFPgtkWindow.CloseWithResult (Sender:TFPgtkObject; data:pointer);
+begin
+  ModalAction := pointertoint(data);
+end;
+
+procedure TFPgtkWindow.SetModalAction (TheValue:integer);
+begin
+  FModalAction := TheValue;
+  if TheValue <> 0 then
+    begin
+    DoDialogResult (FModalAction, self);
+    close;
+    end;
+end;
+
+procedure TFPgtkWindow.ExecuteEnds (Sender:TFPgtkObject; data:pointer);
+begin
+  if gtk_main_level = FMainLevel then
+    gtk_main_quit;
+end;
+
+function TFPgtkWindow.Execute (anOnDialogInit:DialogInitCallBack; anInitData:pointer; anOnDialogResult:DialogResultCallBack) : integer;
+begin
+  FModalAction := drNone;
+  if assigned (anOnDialogInit) then
+    OnDialogInit := anOnDialogInit;
+  DoDialogInit (anInitData);
+  if assigned (anOnDialogResult) then
+    OnDialogResult := anOnDialogResult;
+  ConnectDestroy (@ExecuteEnds, nil);
+  Modal := True;
+  Show;
+  FMainLevel := gtk_main_level + 1;
+  try
+    gtk_main;
+    result := FModalAction;
+  finally
+    FMainLevel := NoMainLevel;
+  end;
+end;
+
+function TFPgtkWindow.ConnectSetFocus (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+begin
+  result := WidgetSignalConnect (sgSetFocus, proc, data);
+end;
+
+function TFPgtkWindow.ConnectAfterSetFocus (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+begin
+  result := WidgetSignalConnectAfter (sgSetFocus, proc, data);
+end;
+
+procedure TFPgtkWindow.SetTransientFor (aParent:TFPgtkWindow);
+begin
+  gtk_window_set_transient_for (TheGtkObject, PGtkwindow(ConvertToGtkObject(aParent)));
+end;
+
+procedure TFPgtkWindow.DefaultWidget (Widget:TFPgtkWidget);
+begin
+  gtk_window_set_default (TheGtkObject, PGtkwidget(ConvertToGtkObject(Widget)));
+end;
+
+procedure TFPgtkWindow.FocusedWidget (NewFocus:TFPgtkWidget);
+begin
+  gtk_window_set_focus (TheGtkObject, PGtkwidget(ConvertToGtkObject(NewFocus)));
+end;
+
+function TFPgtkWindow.GetUserSizable : boolean;
+begin
+  result := (allow_grow(TheGtkObject^)=1) and (auto_shrink(TheGtkObject^)=0);
+end;
+
+procedure TFPgtkWindow.SetUserSizable (TheValue:boolean);
+begin
+  if TheValue then
+    gtk_window_set_policy (TheGtkObject, gint(FALSE), gint(TRUE), gint(FALSE))
+  else
+    gtk_window_set_policy (TheGtkObject, gint(FALSE), gint(FALSE), gint(TRUE));
+end;
+
+procedure TFPgtkWindow.ActivateFocus;
+begin
+  gtk_window_activate_focus (TheGtkObject);
+end;
+
+procedure TFPgtkWindow.ActivateDefault;
+begin
+  gtk_window_activate_default (TheGtkObject);
+end;
+
+procedure TFPgtkWindow.SetDefaultSize (Width:gint; Height:gint);
+begin
+  gtk_window_set_default_size (TheGtkObject, Width, Height);
+end;
+
+function TFPgtkWindow.GetPosition : TGtkWindowPosition;
+begin
+  result := TGtkWindowPosition (gtk.position (TheGtkObject^));
+end;
+
+procedure TFPgtkWindow.SetPosition (TheValue:TGtkWindowPosition);
+begin
+  gtk_window_set_position(TheGtkObject,TheValue);
+end;
+
+function TFPgtkWindow.GetAccelGroups (ID:integer) : PGtkAccelGroup;
+begin
+  result := FAccelGroups[ID];
+  if result = nil then
+    result := FAccelGroups[-1];
+end;
+
+function TFPgtkWindow.AccelGroupNew : integer;
+var ag : Pgtkaccelgroup;
+begin
+  result := FAccelGroups.Count;
+  ag := gtk_accel_group_new;
+  FAccelGroups.Add (ag);
+  gtk_window_add_accel_group (TheGtkObject, ag);
+end;
+
+procedure TFPgtkWindow.AccelGroupDelete (ID:integer);
+begin
+  gtk_accel_group_detach (FAccelGroups[ID], FGtkObject);
+  FAccelGroups[ID] := nil;
+end;
+
+procedure TFPgtkWindow.AcceleratorAdd (AG:integer; aWidget:TFPgtkWidget; aSignal:string; Key:guint; Mods:TGdkModifierType; acFlags:TGtkAccelFlags); Overload;
+begin
+  gtk_widget_add_accelerator (ConvertToGtkWidget(aWidget), pgchar(aSignal),
+        AccelGroups[AG], Key, Mods, acFlags);
+end;
+
+procedure AcceleratorAdd (AG:PGtkAccelGroup; aWidget:TFPgtkWidget; aSignal:string; Key:guint; Mods:TGdkModifierType; Flags:TGtkAccelFlags);
+begin
+  gtk_widget_add_accelerator (ConvertToGtkWidget(aWidget), pgchar(aSignal),
+        AG, Key, Mods, Flags);
+end;
+
+
+procedure TFPgtkWindow.AcceleratorRemove (AG:integer; aWidget:TFPgtkWidget; Key:guint; Mods:TGdkModifierType); Overload;
+begin
+  gtk_widget_remove_accelerator (ConvertToGtkWidget(aWidget), AccelGroups[AG], Key, Mods);
+end;
+
+procedure AcceleratorRemove (AG:PGtkAccelGroup; aWidget:TFPgtkWidget; Key:guint; Mods:TGdkModifierType); Overload;
+begin
+  gtk_widget_remove_accelerator (ConvertToGtkWidget(aWidget), AG, Key, Mods);
+end;
+
+
+procedure TFPgtkWindow.AccelGroupLock (AG:integer);
+begin
+  gtk_accel_group_lock (AccelGroups[AG]);
+end;
+
+procedure AccelGroupLock (AG:PGtkAccelGroup);
+begin
+  gtk_accel_group_lock (AG);
+end;
+
+
+procedure TFPgtkWindow.AccelGroupUnlock (AG:integer);
+begin
+  gtk_accel_group_unlock (AccelGroups[AG]);
+end;
+
+procedure AccelGroupUnlock (AG:PGtkAccelGroup);
+begin
+  gtk_accel_group_unlock (AG);
+end;
+
+
+function AccelKeyName (Key:guint; Mods:TGdkModifierType) : string;
+begin
+  result := string (gtk_accelerator_name(Key, Mods));
+end;
+
+
+procedure AccelKeyParse (AccelName:string; var Key:guint; var Mods:TGdkModifierType);
+var k : guint;
+    m : TGdkModifierType;
+begin
+  gtk_accelerator_parse (pgchar(AccelName), @k, @m);
+  Key := k;
+  Mods := m;
+end;
+
+
+procedure TFPgtkWindow.AccelGroupActivate (AG:integer; Key:guint; Mods:TGdkModifierType);
+begin
+  gtk_accel_group_activate (AccelGroups[AG], Key, Mods);
+end;
+
+procedure AccelGroupActivate (AG:PGtkAccelGroup; Key:guint; Mods:TGdkModifierType);
+begin
+  gtk_accel_group_activate (AG, Key, Mods);
+end;
+
+
+ { TFPgtkColorSelectionDialog }
+
+function TFPgtkColorSelectionDialog.TheGtkObject : PGtkColorSelectionDialog;
+begin
+  result := PgtkColorSelectionDialog(FGtkObject);
+end;
+
+procedure TFPgtkColorSelectionDialog.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_color_selection_dialog_new (''));
+end;
+
+
+function TFPgtkColorSelectionDialog.GetColorSel : TFPgtkColorSelection;
+begin
+  result := GetPascalInstance(PGtkObject(TheGtkObject^.Colorsel),tfpgtkcolorselection) as tfpgtkcolorselection;
+end;
+
+function TFPgtkColorSelectionDialog.GetButtonOK : TFPgtkButton;
+begin
+  result := GetPascalInstance(PGtkObject(TheGtkObject^.ok_button),tfpgtkbutton) as tfpgtkbutton;
+end;
+
+function TFPgtkColorSelectionDialog.GetButtonCancel : TFPgtkButton;
+begin
+  result := GetPascalInstance(PGtkObject(TheGtkObject^.cancel_button),tfpgtkbutton) as tfpgtkbutton;
+end;
+
+function TFPgtkColorSelectionDialog.GetButtonHelp : TFPgtkButton;
+begin
+  result := GetPascalInstance(PGtkObject(TheGtkObject^.help_button),tfpgtkbutton) as tfpgtkbutton;
+end;
+
+ { TFPgtkDialog }
+
+function TFPgtkDialog.TheGtkObject : PGtkDialog;
+begin
+  result := PgtkDialog(FGtkObject);
+end;
+
+procedure TFPgtkDialog.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_dialog_new);
+end;
+
+
+function TFPgtkDialog.GetActionArea : TFPgtkHBox;
+begin
+  result := GetPascalInstance(PGtkObject(TheGtkObject^.action_area),tfpgtkhbox) as tfpgtkhbox;
+end;
+
+function TFPgtkDialog.GetVBox : TFPgtkVBox;
+begin
+  result := GetPascalInstance(PGtkObject(TheGtkObject^.vbox),tfpgtkvbox) as tfpgtkvbox;
+end;
+
+constructor TFPgtkDialog.create;
+begin
+  inherited create (gtk_window_dialog);
+end;
+
+
+ { TFPgtkInputDialog }
+
+function TFPgtkInputDialog.TheGtkObject : PGtkInputDialog;
+begin
+  result := PgtkInputDialog(FGtkObject);
+end;
+
+procedure TFPgtkInputDialog.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_input_dialog_new);
+end;
+
+
+function TFPgtkInputDialog.GetButtonClose : TFPgtkButton;
+begin
+  result := GetPascalInstance(PGtkObject(TheGtkObject^.close_button),tfpgtkbutton) as tfpgtkbutton;
+end;
+
+function TFPgtkInputDialog.GetButtonSave : TFPgtkButton;
+begin
+  result := GetPascalInstance(PGtkObject(TheGtkObject^.save_button),tfpgtkbutton) as tfpgtkbutton;
+end;
+
+procedure DeviceSignalproc (Sender:PGtkinputdialog; DeviceID:integer; Data:pointer); cdecl;
+var p : TFPgtkDeviceSignalFunction;
+begin
+with PSignalData(data)^ do
+  begin
+  p := TFPgtkDeviceSignalFunction (TheSignalProc);
+  p (TheWidget as TFPgtkInputDialog, DeviceID, TheData)
+  end;
+end;
+
+function TFPgtkInputDialog.DeviceSignalConnect (signal:string; proc:TFPgtkDeviceSignalFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@DeviceSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkInputDialog.DeviceSignalConnectAfter (signal:string; proc:TFPgtkDeviceSignalFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@DeviceSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkInputDialog.ConnectEnableDevice (proc:TFPgtkDeviceSignalFunction; data:pointer) : guint;
+begin
+  result := DeviceSignalConnect (sgEnableDevice, proc, data);
+end;
+
+function TFPgtkInputDialog.ConnectAfterEnableDevice (proc:TFPgtkDeviceSignalFunction; data:pointer) : guint;
+begin
+  result := DeviceSignalConnectAfter (sgEnableDevice, proc, data);
+end;
+
+function TFPgtkInputDialog.ConnectDisableDevice (proc:TFPgtkDeviceSignalFunction; data:pointer) : guint;
+begin
+  result := DeviceSignalConnect (sgDisableDevice, proc, data);
+end;
+
+function TFPgtkInputDialog.ConnectAfterDisableDevice (proc:TFPgtkDeviceSignalFunction; data:pointer) : guint;
+begin
+  result := DeviceSignalConnectAfter (sgDisableDevice, proc, data);
+end;
+
+ { TFPgtkFileSelection }
+
+function TFPgtkFileSelection.TheGtkObject : PGtkFileSelection;
+begin
+  result := PgtkFileSelection(FGtkObject);
+end;
+
+procedure TFPgtkFileSelection.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_file_selection_new ('Select a file'));
+end;
+
+
+function TFPgtkFileSelection.GetFilename : string;
+begin
+  result := gtk_file_selection_get_filename(TheGtkObject);
+end;
+
+procedure TFPgtkFileSelection.SetFilename (TheValue:string);
+begin
+  gtk_file_selection_set_filename(TheGtkObject,Pgchar(TheValue));
+end;
+
+procedure TFPgtkFileSelection.Complete (Pattern:string);
+begin
+  gtk_file_selection_complete (TheGtkObject, ConvertToPgchar(Pattern));
+end;
+
+procedure TFPgtkFileSelection.ShowFileOpButtons;
+begin
+  gtk_file_selection_show_fileop_buttons (TheGtkObject);
+end;
+
+procedure TFPgtkFileSelection.HideFileOpButtons;
+begin
+  gtk_file_selection_hide_fileop_buttons (TheGtkObject);
+end;
+
+function TFPgtkFileSelection.GetDirList : TFPgtkCList;
+begin
+  result := GetPascalInstance(PGtkObject(TheGtkObject^.dir_list),tfpgtkclist) as tfpgtkclist;
+end;
+
+function TFPgtkFileSelection.GetFileList : TFPgtkCList;
+begin
+  result := GetPascalInstance(PGtkObject(TheGtkObject^.file_list),tfpgtkclist) as tfpgtkclist;
+end;
+
+function TFPgtkFileSelection.GetOkButton : TFPgtkButton;
+begin
+  result := GetPascalInstance(PGtkObject(TheGtkObject^.ok_button),tfpgtkbutton) as tfpgtkbutton;
+end;
+
+function TFPgtkFileSelection.GetCancelButton : TFPgtkButton;
+begin
+  result := GetPascalInstance(PGtkObject(TheGtkObject^.cancel_button),tfpgtkbutton) as tfpgtkbutton;
+end;
+
+function TFPgtkFileSelection.GetHistoryPulldown : TFPgtkOptionMenu;
+begin
+  result := GetPascalInstance(PGtkObject(TheGtkObject^.history_pulldown),tfpgtkoptionmenu) as tfpgtkoptionmenu;
+end;
+
+function TFPgtkFileSelection.GetFileOpDialog : TFPgtkDialog;
+begin
+  result := GetPascalInstance(PGtkObject(TheGtkObject^.fileop_dialog),tfpgtkdialog) as tfpgtkdialog;
+end;
+
+function TFPgtkFileSelection.GetFileOpCreateDir : TFPgtkButton;
+begin
+  result := GetPascalInstance(PGtkObject(TheGtkObject^.fileop_c_dir),tfpgtkbutton) as tfpgtkbutton;
+end;
+
+function TFPgtkFileSelection.GetFileOpDelFile : TFPgtkButton;
+begin
+  result := GetPascalInstance(PGtkObject(TheGtkObject^.fileop_del_file),tfpgtkbutton) as tfpgtkbutton;
+end;
+
+function TFPgtkFileSelection.GetFileOpRenFile : TFPgtkButton;
+begin
+  result := GetPascalInstance(PGtkObject(TheGtkObject^.fileop_ren_file),tfpgtkbutton) as tfpgtkbutton;
+end;
+
+ { TFPgtkFontSelectionDialog }
+
+function TFPgtkFontSelectionDialog.TheGtkObject : PGtkFontSelectionDialog;
+begin
+  result := PgtkFontSelectionDialog(FGtkObject);
+end;
+
+procedure TFPgtkFontSelectionDialog.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_font_selection_dialog_new (''));
+end;
+
+
+function TFPgtkFontSelectionDialog.GetFontSel : TFPgtkFontSelection;
+begin
+  result := GetPascalInstance(PGtkObject(TheGtkObject^.fontsel),tfpgtkfontselection) as tfpgtkfontselection;
+end;
+
+function TFPgtkFontSelectionDialog.GetButtonOk : TFPgtkButton;
+begin
+  result := GetPascalInstance(PGtkObject(TheGtkObject^.ok_button),tfpgtkbutton) as tfpgtkbutton;
+end;
+
+function TFPgtkFontSelectionDialog.GetButtonApply : TFPgtkButton;
+begin
+  result := GetPascalInstance(PGtkObject(TheGtkObject^.apply_button),tfpgtkbutton) as tfpgtkbutton;
+end;
+
+function TFPgtkFontSelectionDialog.GetButtonCancel : TFPgtkButton;
+begin
+  result := GetPascalInstance(PGtkObject(TheGtkObject^.cancel_button),tfpgtkbutton) as tfpgtkbutton;
+end;
+
+ { TFPgtkEventBox }
+
+function TFPgtkEventBox.TheGtkObject : PGtkEventBox;
+begin
+  result := PgtkEventBox(FGtkObject);
+end;
+
+procedure TFPgtkEventBox.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_event_box_new);
+end;
+
+
+ { TFPgtkHandleBox }
+
+function TFPgtkHandleBox.TheGtkObject : PGtkHandleBox;
+begin
+  result := PgtkHandleBox(FGtkObject);
+end;
+
+procedure TFPgtkHandleBox.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_handle_box_new);
+end;
+
+
+function TFPgtkHandleBox.GetShadowType : TGtkShadowtype;
+begin
+  result := TheGtkObject^.shadow_type;
+end;
+
+procedure TFPgtkHandleBox.SetShadowType (TheValue:TGtkShadowtype);
+begin
+  gtk_handle_box_set_shadow_type(TheGtkObject,TheValue);
+end;
+
+function TFPgtkHandleBox.GetHandlePosition : TGtkPositionType;
+begin
+  result := TGtkPositionType (gtk.handle_position(TheGtkObject^));
+end;
+
+procedure TFPgtkHandleBox.SetHandlePosition (TheValue:TGtkPositionType);
+begin
+  gtk_handle_box_set_handle_position(TheGtkObject,TheValue);
+end;
+
+function TFPgtkHandleBox.GetSnapEdge : TGtkPositionType;
+begin
+  result := TGtkPositionType (gtk.snap_edge(TheGtkObject^));
+end;
+
+procedure TFPgtkHandleBox.SetSnapEdge (TheValue:TGtkPositionType);
+begin
+  gtk_handle_box_set_snap_edge(TheGtkObject,TheValue);
+end;
+
+function TFPgtkHandleBox.GetChildDetached : boolean;
+begin
+  result := boolean(gtk.child_detached(TheGtkObject^));
+end;
+
+function TFPgtkHandleBox.ConnectChildAttached (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+begin
+  result := WidgetSignalConnect (sgChildAttached, proc, data);
+end;
+
+function TFPgtkHandleBox.ConnectAfterChildAttached (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+begin
+  result := WidgetSignalConnectAfter (sgChildAttached, proc, data);
+end;
+
+function TFPgtkHandleBox.ConnectChildDetached (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+begin
+  result := WidgetSignalConnect (sgChildDetached, proc, data);
+end;
+
+function TFPgtkHandleBox.ConnectAfterChildDetached (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+begin
+  result := WidgetSignalConnectAfter (sgChildDetached, proc, data);
+end;
+
+ { TFPgtkScrolledWindow }
+
+function TFPgtkScrolledWindow.TheGtkObject : PGtkScrolledWindow;
+begin
+  result := PgtkScrolledWindow(FGtkObject);
+end;
+
+
+procedure TFPgtkScrolledWindow.CreateGtkObject;
+var h, v : PgtkAdjustment;
+begin
+  if assigned (FHScroll) then
+    h := PGtkAdjustment(ConvertToGtkObject(FHScroll))
+  else
+    h := null;
+  if assigned (FVScroll) then
+    v := PGtkAdjustment(ConvertToGtkObject(FVScroll))
+  else
+    v := null;
+  FGtkObject := PGtkObject (gtk_scrolled_window_new (h, v));
+end;
+
+constructor TFPgtkScrolledWindow.Create (hadj:TFPgtkAdjustment; vadj:TFPgtkAdjustment);
+begin
+  FVScroll := vadj;
+  FHScroll := hadj;
+  inherited create;
+  setusize (200,170);
+end;
+
+
+function TFPgtkScrolledWindow.GetHPolicy : TGtkPolicyType;
+begin
+  result := gtk.hscrollbar_policy(TheGtkObject^);
+end;
+
+procedure TFPgtkScrolledWindow.SetHPolicy (TheValue:TGtkPolicyType);
+begin
+  gtk_scrolled_window_set_policy (TheGtkObject, TheValue, VPolicy);
+end;
+
+function TFPgtkScrolledWindow.GetVPolicy : TGtkPolicyType;
+begin
+  result := gtk.vscrollbar_policy(TheGtkObject^);
+end;
+
+procedure TFPgtkScrolledWindow.SetVPolicy (TheValue:TGtkPolicyType);
+begin
+  gtk_scrolled_window_set_policy (TheGtkObject, HPolicy, TheValue);
+end;
+
+procedure TFPgtkScrolledWindow.SetPolicy (aHScrollBar:TGtkPolicyType; aVScrollbar:TGtkPolicyType); Overload;
+begin
+  gtk_scrolled_window_set_policy (TheGtkObject, aHScrollBar, aVScrollbar);
+end;
+
+procedure TFPgtkScrolledWindow.SetPolicy (aPolicy:TGtkPolicyType); Overload;
+begin
+  SetPolicy (aPolicy, aPolicy);
+end;
+
+function TFPgtkScrolledWindow.GetHAdjustment : TFPgtkAdjustment;
+begin
+  result := GetPascalInstance(PGtkObject(gtk_scrolled_window_get_hadjustment(TheGtkObject)),tfpgtkadjustment) as tfpgtkadjustment;
+end;
+
+procedure TFPgtkScrolledWindow.SetHAdjustment (TheValue:TFPgtkAdjustment);
+begin
+  gtk_scrolled_window_set_hadjustment(TheGtkObject,PGtkadjustment(ConvertToGtkObject(TheValue)));
+end;
+
+function TFPgtkScrolledWindow.GetVAdjustment : TFPgtkAdjustment;
+begin
+  result := GetPascalInstance(PGtkObject(gtk_scrolled_window_get_vadjustment(TheGtkObject)),tfpgtkadjustment) as tfpgtkadjustment;
+end;
+
+procedure TFPgtkScrolledWindow.SetVAdjustment (TheValue:TFPgtkAdjustment);
+begin
+  gtk_scrolled_window_set_vadjustment(TheGtkObject,PGtkadjustment(ConvertToGtkObject(TheValue)));
+end;
+
+procedure TFPgtkScrolledWindow.AddWithViewport (aChild:TFPgtkWidget);
+begin
+  gtk_scrolled_window_add_with_viewport (TheGtkObject, ConvertToGtkWidget(aChild));
+  TFPgtkViewport.createFromObject (PGtkObject(PGtkBin(TheGtkObject)^.child));
+  aChild.Show;
+end;
+
+function TFPgtkScrolledWindow.GetPlacement : TGtkCornerType;
+begin
+  result := gtk.window_placement(TheGtkObject^);
+end;
+
+procedure TFPgtkScrolledWindow.SetPlacement (TheValue:TGtkCornerType);
+begin
+  gtk_scrolled_window_set_placement(TheGtkObject,TheValue);
+end;
+
+function TFPgtkScrolledWindow.GetHScrollbar : TFPgtkScrollbar;
+var w : TFPgtkObject;
+    gtkwidg : PGtkObject;
+begin
+  gtkwidg := PGtkObject(TheGtkObject^.hscrollbar);
+  w := GetPascalInstance (gtkwidg);
+  if assigned (w) then
+    result := (w as TFPgtkScrollbar)
+  else
+    result := TFPgtkHScrollbar.CreateFromObject (gtkwidg);
+end;
+
+function TFPgtkScrolledWindow.GetVScrollbar : TFPgtkScrollbar;
+var w : TFPgtkObject;
+    gtkwidg : PGtkObject;
+begin
+  gtkwidg := PGtkObject(TheGtkObject^.vscrollbar);
+  w := GetPascalInstance (gtkwidg);
+  if assigned (w) then
+    result := (w as TFPgtkScrollbar)
+  else
+    result := TFPgtkVScrollbar.CreateFromObject (gtkwidg);
+end;
+
+procedure TFPgtkScrolledWindow.UpdatePolicy (UpdPolicy:TGtkUpdateType);
+var sb : TFpgtkScrollbar;
+begin
+  sb := HScrollbar;
+  if assigned(sb) then
+    sb.UpdatePolicy := UpdPolicy;
+  sb := VScrollbar;
+  if assigned(sb) then
+    sb.UpdatePolicy := UpdPolicy;
+end;
+
+ { TFPgtkViewport }
+
+function TFPgtkViewport.TheGtkObject : PGtkViewport;
+begin
+  result := PgtkViewport(FGtkObject);
+end;
+
+
+procedure TFPgtkViewport.CreateGtkObject;
+var h, v : PgtkAdjustment;
+begin
+  if assigned (FHScroll) then
+    h := PGtkAdjustment(ConvertToGtkObject(FHScroll))
+  else
+    h := null;
+  if assigned (FVScroll) then
+    v := PGtkAdjustment(ConvertToGtkObject(FVScroll))
+  else
+    v := null;
+  FGtkObject := PGtkObject (gtk_scrolled_window_new (h, v));
+end;
+
+constructor TFPgtkViewport.Create (hadj:TFPgtkAdjustment; vadj:TFPgtkAdjustment);
+begin
+  FVScroll := vadj;
+  FHScroll := hadj;
+  inherited create;
+end;
+
+
+function TFPgtkViewport.GetHAdjustment : TFPgtkAdjustment;
+begin
+  result := GetPascalInstance(PGtkObject(gtk_viewport_get_hadjustment(TheGtkObject)),tfpgtkadjustment) as tfpgtkadjustment;
+end;
+
+procedure TFPgtkViewport.SetHAdjustment (TheValue:TFPgtkAdjustment);
+begin
+  gtk_viewport_set_hadjustment(TheGtkObject,PGtkadjustment(ConvertToGtkObject(TheValue)));
+end;
+
+function TFPgtkViewport.GetVAdjustment : TFPgtkAdjustment;
+begin
+  result := GetPascalInstance(PGtkObject(gtk_viewport_get_vadjustment(TheGtkObject)),tfpgtkadjustment) as tfpgtkadjustment;
+end;
+
+procedure TFPgtkViewport.SetVAdjustment (TheValue:TFPgtkAdjustment);
+begin
+  gtk_viewport_set_vadjustment(TheGtkObject,PGtkadjustment(ConvertToGtkObject(TheValue)));
+end;
+
+function TFPgtkViewport.GetShadowType : TgtkShadowType;
+begin
+  result := TheGtkObject^.shadow_type;
+end;
+
+procedure TFPgtkViewport.SetShadowType (TheValue:TgtkShadowType);
+begin
+  gtk_viewport_set_shadow_type(TheGtkObject,TheValue);
+end;
+
+ { TFPgtkBox }
+
+function TFPgtkBox.TheGtkObject : PGtkBox;
+begin
+  result := PgtkBox(FGtkObject);
+end;
+
+
+function TFPgtkBox.GetHomogeneous : boolean;
+begin
+  result := boolean(gtk.homogeneous(TheGtkObject^));
+end;
+
+procedure TFPgtkBox.SetHomogeneous (TheValue:boolean);
+begin
+  gtk_Box_set_homogeneous(TheGtkObject,TheValue);
+end;
+
+function TFPgtkBox.GetSpacing : integer;
+begin
+  result := TheGtkObject^.spacing;
+end;
+
+procedure TFPgtkBox.SetSpacing (TheValue:integer);
+begin
+  gtk_Box_set_spacing(TheGtkObject,TheValue);
+end;
+
+procedure TFPgtkBox.ReorderChild (Widget:TFPgtkWidget; Position:integer);
+begin
+  gtk_Box_reorder_child (TheGtkObject, PGtkwidget(ConvertToGtkObject(Widget)), Position);
+end;
+
+procedure TFPgtkBox.GetChildPacking (Widget:TFPgtkWidget; var Expand:boolean; var Fill:boolean; var Padding:integer; var PackType:TGtkPackType);
+var PT : PGtkPackType;
+begin
+  pt := @PackType;
+  gtk_box_query_child_packing (TheGtkObject, ConvertToGtkWidget(Widget), 
+                               @expand, @fill, @padding, pt);
+end;
+
+procedure TFPgtkBox.SetChildPacking (Widget:TFPgtkWidget; Expand:boolean; Fill:boolean; Padding:integer; PackType:TGtkPackType);
+begin
+  gtk_Box_set_child_packing (TheGtkObject, PGtkwidget(ConvertToGtkObject(Widget)), Expand, Fill, Padding, PackType);
+end;
+
+procedure TFPgtkBox.PackStart (Widget:TFPgtkWidget); Overload;
+begin
+  gtk_box_pack_start_defaults (TheGtkObject, ConvertToGtkWidget(Widget));
+  widget.Show;
+end;
+
+procedure TFPgtkBox.PackStart (Widget:TFPgtkWidget; IsVisible:boolean); Overload;
+begin
+  gtk_box_pack_start_defaults (TheGtkObject, ConvertToGtkWidget(Widget));
+  if isvisible then
+    widget.Show;
+end;
+
+procedure TFPgtkBox.PackStart (Widget:TFPgtkWidget; expand:boolean; fill:boolean; padding:integer); Overload;
+begin
+  gtk_box_pack_start (TheGtkObject, ConvertToGtkWidget(Widget), expand, fill, padding);
+  widget.Show;
+end;
+
+procedure TFPgtkBox.PackStart (Widget:TFPgtkWidget; expand:boolean; fill:boolean; padding:integer; IsVisible:boolean); Overload;
+begin
+  gtk_box_pack_start (TheGtkObject, ConvertToGtkWidget(Widget), expand, fill, padding);
+  if isvisible then
+    widget.Show;
+end;
+
+procedure TFPgtkBox.PackEnd (Widget:TFPgtkWidget); Overload;
+begin
+  gtk_box_pack_end_defaults (TheGtkObject, ConvertToGtkWidget(Widget));
+  widget.Show;
+end;
+
+procedure TFPgtkBox.PackEnd (Widget:TFPgtkWidget; IsVisible:boolean); Overload;
+begin
+  gtk_box_pack_end_defaults (TheGtkObject, ConvertToGtkWidget(Widget));
+  if isvisible then
+    widget.Show;
+end;
+
+procedure TFPgtkBox.PackEnd (Widget:TFPgtkWidget; expand:boolean; fill:boolean; padding:integer); Overload;
+begin
+  gtk_box_pack_end (TheGtkObject, ConvertToGtkWidget(Widget), expand, fill, padding);
+  widget.Show;
+end;
+
+procedure TFPgtkBox.PackEnd (Widget:TFPgtkWidget; expand:boolean; fill:boolean; padding:integer; IsVisible:boolean); Overload;
+begin
+  gtk_box_pack_end (TheGtkObject, ConvertToGtkWidget(Widget), expand, fill, padding);
+  if isvisible then
+    widget.Show;
+end;
+
+ { TFPgtkButtonBox }
+
+function TFPgtkButtonBox.TheGtkObject : PGtkButtonBox;
+begin
+  result := PgtkButtonBox(FGtkObject);
+end;
+
+
+procedure SetButtonBoxDefaultSize (aMinWidth:integer; aMinHeight:integer);
+begin
+  gtk_button_box_set_child_size_default (aMinWidth, aMinheight);
+end;
+
+
+procedure GetButtonBoxDefaultSize (var aMinWidth:integer; var aMinHeight:integer);
+begin
+  gtk_button_box_get_child_size_default (@aMinWidth, @aMinheight);
+end;
+
+
+procedure SetButtonBoxDefaultPadding (aIPadX:integer; aIPadY:integer);
+begin
+  gtk_button_box_set_child_size_default (aIPadX, aIPadY);
+end;
+
+
+procedure GetButtonBoxDefaultPadding (var aIPadX:integer; var aIPadY:integer);
+begin
+  gtk_button_box_get_child_size_default (@aIPadX, @aIPadY);
+end;
+
+
+function TFPgtkButtonBox.GetSpacing : integer;
+begin
+  result := gtk_button_box_get_spacing(TheGtkObject);
+end;
+
+procedure TFPgtkButtonBox.SetSpacing (TheValue:integer);
+begin
+  gtk_button_box_set_spacing(TheGtkObject,TheValue);
+end;
+
+function TFPgtkButtonBox.GetLayout : TGtkButtonBoxStyle;
+begin
+  result := gtk_button_box_get_layout(TheGtkObject);
+end;
+
+procedure TFPgtkButtonBox.SetLayout (TheValue:TGtkButtonBoxStyle);
+begin
+  gtk_button_box_set_layout(TheGtkObject,TheValue);
+end;
+
+function TFPgtkButtonBox.GetMinWidth : integer;
+var x, y : integer;
+begin
+  gtk_button_box_get_child_size (TheGtkObject, @x, @y);
+  result := x;
+end;
+
+procedure TFPgtkButtonBox.SetMinWidth (TheValue:integer);
+begin
+  gtk_button_box_set_child_size (TheGtkObject, TheValue, ChildMinHeight);
+end;
+
+function TFPgtkButtonBox.GetMinHeight : integer;
+var x, y : integer;
+begin
+  gtk_button_box_get_child_size (TheGtkObject, @x, @y);
+  result := y;
+end;
+
+procedure TFPgtkButtonBox.SetMinHeight (TheValue:integer);
+begin
+  gtk_button_box_set_child_size (TheGtkObject, ChildMinWidth, TheValue);
+end;
+
+function TFPgtkButtonBox.GetChildPadX : integer;
+var x, y : integer;
+begin
+  gtk_button_box_get_child_ipadding (TheGtkObject, @x, @y);
+  result := x;
+end;
+
+procedure TFPgtkButtonBox.SetChildPadX (TheValue:integer);
+begin
+  gtk_button_box_set_child_ipadding (TheGtkObject, TheValue, ChildPadY);
+end;
+
+function TFPgtkButtonBox.GetChildPadY : integer;
+var x, y : integer;
+begin
+  gtk_button_box_get_child_ipadding (TheGtkObject, @x, @y);
+  result := y;
+end;
+
+procedure TFPgtkButtonBox.SetChildPadY (TheValue:integer);
+begin
+  gtk_button_box_set_child_ipadding (TheGtkObject, ChildPadX, TheValue);
+end;
+
+ { TFPgtkHButtonBox }
+
+function TFPgtkHButtonBox.TheGtkObject : PGtkHButtonBox;
+begin
+  result := PgtkHButtonBox(FGtkObject);
+end;
+
+procedure TFPgtkHButtonBox.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_hbutton_box_new);
+end;
+
+
+ { TFPgtkVButtonBox }
+
+function TFPgtkVButtonBox.TheGtkObject : PGtkVButtonBox;
+begin
+  result := PgtkVButtonBox(FGtkObject);
+end;
+
+procedure TFPgtkVButtonBox.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_vbutton_box_new);
+end;
+
+
+ { TFPgtkVBox }
+
+function TFPgtkVBox.TheGtkObject : PGtkVBox;
+begin
+  result := PgtkVBox(FGtkObject);
+end;
+
+procedure TFPgtkVBox.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_VBox_new (False, 1));
+end;
+
+
+ { TFPgtkColorSelection }
+
+function TFPgtkColorSelection.TheGtkObject : PGtkColorSelection;
+begin
+  result := PgtkColorSelection(FGtkObject);
+end;
+
+procedure TFPgtkColorSelection.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_color_selection_new);
+end;
+
+
+function TFPgtkColorSelection.GetUpdatePolicy : TGtkUpdateType;
+begin
+  result := TheGtkObject^.policy;
+end;
+
+procedure TFPgtkColorSelection.SetUpdatePolicy (TheValue:TGtkUpdateType);
+begin
+  gtk_color_selection_set_update_policy(TheGtkObject,TheValue);
+end;
+
+function TFPgtkColorSelection.GetColor : double;
+var c : double;
+begin
+  gtk_color_selection_get_color (TheGtkObject, @c);
+  result := c;
+end;
+
+procedure TFPgtkColorSelection.SetColor (TheValue:double);
+begin
+  gtk_color_selection_set_color (TheGtkObject, @TheValue);
+end;
+
+function TFPgtkColorSelection.GetUseOpacity : longbool;
+begin
+  result := longbool(TheGtkObject^.use_opacity);
+end;
+
+procedure TFPgtkColorSelection.SetUseOpacity (TheValue:longbool);
+begin
+  gtk_color_selection_set_opacity(TheGtkObject,gint(TheValue));
+end;
+
+ { TFPgtkGammaCurve }
+
+function TFPgtkGammaCurve.TheGtkObject : PGtkGammaCurve;
+begin
+  result := PgtkGammaCurve(FGtkObject);
+end;
+
+procedure TFPgtkGammaCurve.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_gamma_curve_new);
+end;
+
+
+ { TFPgtkHBox }
+
+function TFPgtkHBox.TheGtkObject : PGtkHBox;
+begin
+  result := PgtkHBox(FGtkObject);
+end;
+
+procedure TFPgtkHBox.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_HBox_new (False, 1));
+end;
+
+
+ { TFPgtkCombo }
+
+function TFPgtkCombo.TheGtkObject : PGtkCombo;
+begin
+  result := PgtkCombo(FGtkObject);
+end;
+
+procedure TFPgtkCombo.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_combo_new);
+end;
+
+
+function TFPgtkCombo.GetEntry : TFPgtkEntry;
+begin
+  result := GetPascalInstance(PGtkObject(TheGtkObject^.entry), TFPgtkEntry) as tfpgtkentry;
+end;
+
+function TFPgtkCombo.GetList : TFPgtkList;
+begin
+  result := GetPascalInstance(PGtkObject(TheGtkObject^.list), TFPgtkList) as TFPgtkList;
+end;
+
+function TFPgtkCombo.GetButton : TFpGtkButton;
+begin
+  result := GetPascalInstance(PGtkObject(TheGtkObject^.button), TFPgtkButton) as TFPgtkButton;
+end;
+
+function TFPgtkCombo.GetValueInList : longbool;
+begin
+  result := longbool(gtk.value_in_list(TheGtkObject^));
+end;
+
+procedure TFPgtkCombo.SetValueInListProp (TheValue:longbool);
+begin
+  gtk_combo_set_value_in_list (TheGtkObject, gint(TheValue), gint(OkIfEmpty));
+end;
+
+function TFPgtkCombo.GetOkIfEmpty : longbool;
+begin
+  result := longbool(gtk.ok_if_empty(TheGtkObject^));
+end;
+
+procedure TFPgtkCombo.SetOkIfEmpty (TheValue:longbool);
+begin
+  gtk_combo_set_value_in_list (TheGtkObject, gint(ValueInList), gint(TheValue));
+end;
+
+function TFPgtkCombo.GetUseArrows : longbool;
+begin
+  result := longbool(gtk.use_arrows(TheGtkObject^));
+end;
+
+procedure TFPgtkCombo.SetUseArrows (TheValue:longbool);
+begin
+  gtk_combo_set_use_arrows(TheGtkObject,gint(TheValue));
+end;
+
+function TFPgtkCombo.GetUseArrowsAlways : longbool;
+begin
+  result := longbool(gtk.use_arrows_always(TheGtkObject^));
+end;
+
+procedure TFPgtkCombo.SetUseArrowsAlways (TheValue:longbool);
+begin
+  gtk_combo_set_use_arrows_always(TheGtkObject,gint(TheValue));
+end;
+
+function TFPgtkCombo.GetCaseSensitive : longbool;
+begin
+  result := longbool(gtk.case_sensitive(TheGtkObject^));
+end;
+
+procedure TFPgtkCombo.SetCaseSensitive (TheValue:longbool);
+begin
+  gtk_combo_set_case_sensitive(TheGtkObject,gint(TheValue));
+end;
+
+procedure TFPgtkCombo.SetItemString (Item:TFPgtkItem; ItemValue:string);
+begin
+  gtk_combo_set_item_string (TheGtkObject, PGtkitem(ConvertToGtkObject(Item)), ConvertToPgchar(ItemValue));
+end;
+
+procedure TFPgtkCombo.DisableActivate;
+begin
+  gtk_combo_disable_activate (TheGtkObject);
+end;
+
+procedure TFPgtkCombo.SetValueInList (Val:longbool; IsOkIfEmpty:longbool);
+begin
+  gtk_combo_set_value_in_list (TheGtkObject, gint(Val), gint(IsOkIfEmpty));
+end;
+
+ { TFPgtkStatusbar }
+
+function TFPgtkStatusbar.TheGtkObject : PGtkStatusbar;
+begin
+  result := PgtkStatusbar(FGtkObject);
+end;
+
+procedure TFPgtkStatusbar.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_statusbar_new);
+end;
+
+
+function TFPgtkStatusbar.GetContextID (ContextDescr:string) : integer;
+begin
+  result := gtk_statusbar_get_context_id (TheGtkObject, ConvertToPgchar(ContextDescr));
+end;
+
+function TFPgtkStatusbar.Push (contextID:integer; text:string) : integer;
+begin
+  result := gtk_statusbar_push (TheGtkObject, contextID, ConvertToPgchar(text));
+end;
+
+procedure TFPgtkStatusbar.Pop (contextID:integer);
+begin
+  gtk_statusbar_pop (TheGtkObject, contextID);
+end;
+
+procedure TFPgtkStatusbar.Remove (contextID:integer; MessageID:integer);
+begin
+  gtk_statusbar_remove (TheGtkObject, contextID, MessageID);
+end;
+
+procedure StatusbarSignalproc (Sender:PGtkobject; contextID:integer; text:pgChar; data:pointer); cdecl;
+var p : TFPgtkStatusbarSignalFunction;
+begin
+with PSignalData(data)^ do
+  begin
+  p := TFPgtkStatusbarSignalFunction (TheSignalProc);
+  p (TheWidget as TFPgtkObject, contextID, text, TheData)
+  end;
+end;
+
+function TFPgtkStatusbar.StatusbarSignalConnect (signal:string; proc:TFPgtkStatusbarSignalFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@StatusbarSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkStatusbar.StatusbarSignalConnectAfter (signal:string; proc:TFPgtkStatusbarSignalFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@StatusbarSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkStatusbar.ConnectTextPopped (proc:TFPgtkStatusbarSignalFunction; data:pointer) : guint;
+begin
+  result := StatusbarSignalConnect (sgTextPopped, proc, data);
+end;
+
+function TFPgtkStatusbar.ConnectAfterTextPopped (proc:TFPgtkStatusbarSignalFunction; data:pointer) : guint;
+begin
+  result := StatusbarSignalConnectAfter (sgTextPopped, proc, data);
+end;
+
+function TFPgtkStatusbar.ConnectTextPushed (proc:TFPgtkStatusbarSignalFunction; data:pointer) : guint;
+begin
+  result := StatusbarSignalConnect (sgTextPushed, proc, data);
+end;
+
+function TFPgtkStatusbar.ConnectAfterTextPushed (proc:TFPgtkStatusbarSignalFunction; data:pointer) : guint;
+begin
+  result := StatusbarSignalConnectAfter (sgTextPushed, proc, data);
+end;
+
+ { TFPgtkCList }
+
+function TFPgtkCList.TheGtkObject : PGtkCList;
+begin
+  result := PgtkCList(FGtkObject);
+end;
+
+procedure TFPgtkCList.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_clist_new (FColumnCount));
+end;
+
+
+constructor TFPgtkCList.Create (aColumnCount:integer);
+begin
+  FColumnCount := aColumnCount;
+  inherited create;
+end;
+
+
+function TFPgtkCList.GetShadowType : TGtkShadowType;
+begin
+  result := TheGtkObject^.shadow_type;
+end;
+
+procedure TFPgtkCList.SetShadowType (TheValue:TGtkShadowType);
+begin
+  gtk_clist_set_shadow_type(TheGtkObject,TheValue);
+end;
+
+function TFPgtkCList.GetSelectionMode : TGtkSelectionMode;
+begin
+  result := TheGtkObject^.selection_mode;
+end;
+
+procedure TFPgtkCList.SetSelectionMode (TheValue:TGtkSelectionMode);
+begin
+  gtk_clist_set_selection_mode(TheGtkObject,TheValue);
+end;
+
+procedure TFPgtkCList.Freeze;
+begin
+  gtk_clist_freeze (TheGtkObject);
+end;
+
+procedure TFPgtkCList.Thaw;
+begin
+  gtk_clist_thaw (TheGtkObject);
+end;
+
+procedure TFPgtkCList.ShowTitles;
+begin
+  gtk_clist_Column_titles_show (TheGtkObject);
+end;
+
+procedure TFPgtkCList.HideTitles;
+begin
+  gtk_clist_column_titles_hide (TheGtkObject);
+end;
+
+procedure TFPgtkCList.ActiveTitles;
+begin
+  gtk_clist_column_titles_active (TheGtkObject);
+end;
+
+procedure TFPgtkCList.PassiveTitles;
+begin
+  gtk_clist_column_titles_passive (TheGtkObject);
+end;
+
+procedure TFPgtkCList.ActiveTitle (column:integer);
+begin
+  gtk_clist_column_title_active (TheGtkObject, column);
+end;
+
+procedure TFPgtkCList.PassiveTitle (column:integer);
+begin
+  gtk_clist_column_title_passive (TheGtkObject, column);
+end;
+
+function TFPgtkCList.GetColumnTitle (column:integer) : string;
+begin
+  result := gtk_clist_get_column_title(TheGtkObject,column);
+end;
+
+procedure TFPgtkCList.SetColumnTitle (column:integer; TheValue:string);
+begin
+  gtk_clist_set_column_title(TheGtkObject,column,ConvertToPgchar(TheValue));
+end;
+
+function TFPgtkCList.GetColumnWidget (column:integer) : TFPgtkWidget;
+begin
+  result := GetPascalInstance(PGtkObject(gtk_clist_get_column_widget(TheGtkObject,column)),tfpgtkwidget) as tfpgtkwidget;
+end;
+
+procedure TFPgtkCList.SetColumnWidget (column:integer; TheValue:TFPgtkWidget);
+begin
+  gtk_clist_set_column_widget(TheGtkObject,column,PGtkwidget(ConvertToGtkObject(TheValue)));
+end;
+
+procedure TFPgtkCList.SetColumnJustification (column:integer; justification:TGtkJustification);
+begin
+  gtk_clist_set_column_justification (TheGtkObject, column, justification);
+end;
+
+procedure TFPgtkCList.SetColumnVisibility (column:integer; aVisible:boolean);
+begin
+  gtk_clist_set_column_visibility (TheGtkObject, column, aVisible);
+end;
+
+procedure TFPgtkCList.SetColumnResizeable (column:integer; Resizeable:boolean);
+begin
+  gtk_clist_set_column_resizeable (TheGtkObject, column, Resizeable);
+end;
+
+procedure TFPgtkCList.SetColumnAutoResize (column:integer; autoResize:boolean);
+begin
+  gtk_clist_set_column_auto_resize (TheGtkObject, column, autoResize);
+end;
+
+function TFPgtkCList.OptimalColumnWidth (column:integer) : integer;
+begin
+  result := gtk_clist_optimal_column_width (TheGtkObject, column);
+end;
+
+procedure TFPgtkCList.SetColumnWidth (column:integer; width:integer);
+begin
+  gtk_clist_set_column_width (TheGtkObject, column, width);
+end;
+
+procedure TFPgtkCList.SetColumnMinWidth (column:integer; MinWidth:integer);
+begin
+  gtk_clist_set_column_min_width (TheGtkObject, column, MinWidth);
+end;
+
+procedure TFPgtkCList.SetColumnMaxWidth (column:integer; MaxWidth:integer);
+begin
+  gtk_clist_set_column_max_width (TheGtkObject, column, MaxWidth);
+end;
+
+function TFPgtkCList.AutoSizeColumns : integer;
+begin
+  result := gtk_clist_columns_autosize (TheGtkObject);
+end;
+
+procedure TFPgtkCList.ConfigureColumnWidth (column:integer; Width:integer; MinWidth:integer; MaxWidth:integer);
+begin
+  SetColumnWidth (column, Width);
+  SetColumnMaxWidth (column, MaxWidth);
+  SetColumnMinWidth (column, MinWidth);
+end;
+
+procedure TFPgtkCList.ConfigureColumn (column:integer; Justification:TGtkJustification; Visibility:boolean; Resizeable:boolean; AutoSize:boolean);
+begin
+  SetColumnJustification (column, Justification);
+  SetColumnVisibility (column, Visibility);
+  SetColumnResizeable (column, Resizeable);
+  SetColumnAutoResize (column, AutoSize);
+end;
+
+procedure TFPgtkCList.SetRowHeight (height:integer);
+begin
+  gtk_clist_set_row_height (TheGtkObject, height);
+end;
+
+procedure TFPgtkCList.MoveTo (row:integer; column:integer; RowAlign:gfloat; ColAlign:gfloat);
+begin
+  gtk_clist_moveto (TheGtkObject, row, column, RowAlign, ColAlign);
+end;
+
+function TFPgtkCList.RowIsVisible (Row:integer) : TGtkVisibility;
+begin
+  result := gtk_clist_row_is_visible (TheGtkObject, Row);
+end;
+
+function TFPgtkCList.GetCellType (Row:integer; column:integer) : TGtkCellType;
+begin
+  result := gtk_clist_get_cell_type (TheGtkObject, Row, column);
+end;
+
+function TFPgtkCList.GetCellText (Row:integer; Column:integer) : string;
+var s : pgchar;
+    r : integer;
+begin
+  r := gtk_clist_get_text (TheGtkObject, row, column, @s);
+  if (r = 0) then
+    result := ''
+  else
+    result := string(s^);
+end;
+
+procedure TFPgtkCList.SetCellText (Row:integer; Column:integer; TheValue:string);
+begin
+  gtk_clist_set_text(TheGtkObject,Row, Column,ConvertToPgchar(TheValue));
+end;
+
+procedure TFPgtkCList.SetPixmap (row:integer; column:integer; pixmap:PGdkPixmap; mask:PGdkBitmap);
+begin
+  gtk_clist_set_pixmap (TheGtkObject, row, column, pixmap, mask);
+end;
+
+procedure TFPgtkCList.GetPixmap (row:integer; column:integer; var pixmap:PGdkPixmap; var mask:PGdkBitmap);
+begin
+  gtk_clist_get_pixmap (TheGtkObject, row, column, @pixmap, @mask);
+end;
+
+procedure TFPgtkCList.SetPixText (row:integer; column:integer; text:string; spacing:guint8; pixmap:PGdkPixmap; mask:PGdkBitmap);
+begin
+  gtk_clist_set_pixtext (TheGtkObject, row, column, ConvertToPgchar(text), spacing, pixmap, mask);
+end;
+
+procedure TFPgtkCList.GetPixText (row:integer; column:integer; var text:string; var aspacing:guint8; var pixmap:PGdkPixmap; var mask:PGdkBitmap);
+var r : integer;
+    s : PPgchar;
+begin
+  s := nil;
+  r := gtk_clist_get_pixtext (TheGtkObject, row, column, s, @aspacing, @pixmap, @mask);
+  if r = 0 then
+    begin
+    text := '';
+    pixmap := nil;
+    mask := nil;
+    end
+  else
+    text := string (s^);
+end;
+
+procedure TFPgtkCList.SetForeground (row:integer; color:PGdkColor);
+begin
+  gtk_clist_set_foreground (TheGtkObject, row, color);
+end;
+
+procedure TFPgtkCList.SetBackground (row:integer; color:PGdkColor);
+begin
+  gtk_clist_set_background (TheGtkObject, row, color);
+end;
+
+function TFPgtkCList.GetCellStyle (row:integer; column:integer) : PGtkStyle;
+begin
+  result := gtk_clist_get_cell_style(TheGtkObject,row, column);
+end;
+
+procedure TFPgtkCList.SetCellStyle (row:integer; column:integer; TheValue:PGtkStyle);
+begin
+  gtk_clist_set_cell_style(TheGtkObject,row, column,TheValue);
+end;
+
+function TFPgtkCList.GetRowStyle (row:integer) : PGtkStyle;
+begin
+  result := gtk_clist_get_row_style(TheGtkObject,row);
+end;
+
+procedure TFPgtkCList.SetRowStyle (row:integer; TheValue:PGtkStyle);
+begin
+  gtk_clist_set_row_style(TheGtkObject,row,TheValue);
+end;
+
+procedure TFPgtkCList.SetShift (row:integer; column:integer; vertical:integer; horizontal:integer);
+begin
+  gtk_clist_set_shift (TheGtkObject, row, column, vertical, horizontal);
+end;
+
+procedure TFPgtkCList.Remove (row:integer);
+begin
+  gtk_clist_remove (TheGtkObject, row);
+end;
+
+procedure TFPgtkCList.Prepend (Data:TStrings); Overload;
+var ppdata : ppgchar;
+begin
+  ppdata := StringsToPPgchar (Data);
+  gtk_clist_prepend (TheGtkObject, ppdata);
+  freemem (ppdata, sizeof (pgchar) * data.count);
+end;
+
+procedure TFPgtkCList.Prepend (Text:string; separator:string); Overload;
+var l : TStrings;
+    s : string;
+begin
+  l := TStringList.Create;
+  try
+    if pos('"',separator) = 0 then
+      s := stringreplace (Text, '"', '""', [rfReplaceAll]);
+    if separator <> '' then
+      s := stringreplace(Text, separator, '","', [rfReplaceAll]);
+    l.CommaText := '"'+s+'"';
+    Prepend (l);
+  finally
+    l.Free;
+  end;
+end;
+
+procedure TFPgtkCList.Prepend (data:array of string); Overload;
+var ppdata : ppgchar;
+begin
+  ppdata := ArrayToPPgchar (Data);
+  gtk_clist_prepend (TheGtkObject, ppdata);
+  freemem (ppdata, sizeof (pgchar) * (high(data)-low(data)+1));
+end;
+
+procedure TFPgtkCList.Append (data:TStrings); Overload;
+var ppdata : ppgchar;
+begin
+  ppdata := StringsToPPgchar (Data);
+  gtk_clist_append (TheGtkObject, ppdata);
+  freemem (ppdata, sizeof (pgchar) * data.count);
+end;
+
+procedure TFPgtkCList.Append (Text:string; Separator:string); Overload;
+var l : TStrings;
+    s : string;
+begin
+  l := TStringList.Create;
+  try
+    if pos('"',separator) = 0 then
+      s := stringreplace (Text, '"', '""', [rfReplaceAll]);
+    if separator <> '' then
+      s := stringreplace(Text, separator, '","', [rfReplaceAll]);
+    l.CommaText := '"' + s + '"';
+    Append (l);
+  finally
+    l.Free;
+  end;
+end;
+
+procedure TFPgtkCList.Append (data:array of string); Overload;
+var ppdata : ppgchar;
+begin
+  ppdata := ArrayToPPgchar (Data);
+  gtk_clist_append (TheGtkObject, ppdata);
+  freemem (ppdata, sizeof (pgchar) * (high(data)-low(data)+1));
+end;
+
+procedure TFPgtkCList.Insert (row:integer; data:TStrings); Overload;
+var ppdata : ppgchar;
+begin
+  ppdata := StringsToPPgchar (Data);
+  gtk_clist_insert (TheGtkObject, row, ppdata);
+  freemem (ppdata, sizeof (pgchar) * data.count);
+end;
+
+procedure TFPgtkCList.Insert (row:integer; Text:string; Separator:string); Overload;
+var l : TStrings;
+    s : string;
+begin
+  l := TStringList.Create;
+  try
+    if pos('"',separator) = 0 then
+      s := stringreplace (Text, '"', '""', [rfReplaceAll]);
+    if separator <> '' then
+      s := stringreplace(Text, separator, '","', [rfReplaceAll]);
+    l.CommaText := '"' + s + '"';
+    Insert (row, l);
+  finally
+    l.Free;
+  end;
+end;
+
+procedure TFPgtkCList.Insert (row:integer; data:array of string); Overload;
+var ppdata : ppgchar;
+begin
+  ppdata := ArrayToPPgchar (Data);
+  gtk_clist_insert (TheGtkObject, row, ppdata);
+  freemem (ppdata, sizeof (pgchar) * (high(data)-low(data)+1));
+end;
+
+function TFPgtkCList.GetRowData (row:integer) : pointer;
+begin
+  result := gtk_clist_get_row_data(TheGtkObject,row);
+end;
+
+procedure TFPgtkCList.SetRowData (row:integer; TheValue:pointer);
+begin
+  gtk_clist_set_row_data(TheGtkObject,row,TheValue);
+end;
+
+function TFPgtkCList.FindRowFromData (data:pointer) : integer;
+begin
+  result := gtk_clist_find_row_from_data (TheGtkObject, data);
+end;
+
+procedure TFPgtkCList.SelectRow (row:integer; column:integer);
+begin
+  gtk_clist_select_row (TheGtkObject, row, column);
+end;
+
+procedure TFPgtkCList.UnselectRow (row:integer; column:integer);
+begin
+  gtk_clist_unselect_row (TheGtkObject, row, column);
+end;
+
+procedure TFPgtkCList.Clear;
+begin
+  gtk_clist_clear (TheGtkObject);
+end;
+
+procedure TFPgtkCList.SelectAll;
+begin
+  gtk_clist_select_all (TheGtkObject);
+end;
+
+procedure TFPgtkCList.UnselectAll;
+begin
+  gtk_clist_unselect_all (TheGtkObject);
+end;
+
+procedure TFPgtkCList.SwapRows (row1:integer; row2:integer);
+begin
+  gtk_clist_swap_rows (TheGtkObject, row1, row2);
+end;
+
+procedure TFPgtkCList.RowMove (sourceRow:integer; destRow:integer);
+begin
+  if sourceRow = DestRow then
+    Exit;
+  gtk_clist_row_move (TheGtkObject, sourceRow, destRow);
+end;
+
+procedure TFPgtkCList.Sort;
+begin
+  gtk_clist_sort (TheGtkObject);
+end;
+
+procedure TFPgtkCList.SetCompareFunc (TheValue:TGtkCListCompareFunc);
+begin
+  gtk_clist_set_Compare_func(TheGtkObject,TheValue);
+end;
+
+function TFPgtkCList.GetSortColumn : integer;
+begin
+  result := TheGtkObject^.sort_column;
+end;
+
+procedure TFPgtkCList.SetSortColumn (TheValue:integer);
+begin
+  gtk_clist_set_sort_column(TheGtkObject,TheValue);
+end;
+
+function TFPgtkCList.GetSetSortType : TGtkSortType;
+begin
+  result := TheGtkObject^.sort_type;
+end;
+
+procedure TFPgtkCList.SetSetSortType (TheValue:TGtkSortType);
+begin
+  gtk_clist_set_sort_type(TheGtkObject,TheValue);
+end;
+
+procedure TFPgtkCList.SetAutoSort (autoSort:boolean);
+begin
+  gtk_clist_set_auto_sort (TheGtkObject, autoSort);
+end;
+
+function TFPgtkCList.GetHAdjustment : TFPgtkAdjustment;
+begin
+  result := GetPascalInstance(PGtkObject(gtk_clist_get_hadjustment(TheGtkObject)),tfpgtkadjustment) as tfpgtkadjustment;
+end;
+
+procedure TFPgtkCList.SetHAdjustment (TheValue:TFPgtkAdjustment);
+begin
+  gtk_clist_set_hadjustment(TheGtkObject,PGtkadjustment(ConvertToGtkObject(TheValue)));
+end;
+
+function TFPgtkCList.GetVAdjustment : TFPgtkAdjustment;
+begin
+  result := GetPascalInstance(PGtkObject(gtk_clist_get_vadjustment(TheGtkObject)),tfpgtkadjustment) as tfpgtkadjustment;
+end;
+
+procedure TFPgtkCList.SetVAdjustment (TheValue:TFPgtkAdjustment);
+begin
+  gtk_clist_set_vadjustment(TheGtkObject,PGtkadjustment(ConvertToGtkObject(TheValue)));
+end;
+
+procedure TFPgtkCList.SetReorderable (reorderable:boolean);
+begin
+  gtk_clist_set_reorderable (TheGtkObject, reorderable);
+end;
+
+function TFPgtkCList.Count : integer;
+begin
+  result := TheGtkObject^.rows;
+end;
+
+procedure CListScrollSignalproc (Sender:PGtkobject; ScrollType:TgtkScrollType; position:gfloat; data:pointer); cdecl;
+var p : TFPgtkCListScrollSignalFunction;
+begin
+with PSignalData(data)^ do
+  begin
+  p := TFPgtkCListScrollSignalFunction (TheSignalProc);
+  p (TheWidget as TFPgtkObject, ScrollType, position, TheData)
+  end;
+end;
+
+function TFPgtkCList.CListScrollSignalConnect (signal:string; proc:TFPgtkCListScrollSignalFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@CListScrollSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkCList.CListScrollSignalConnectAfter (signal:string; proc:TFPgtkCListScrollSignalFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@CListScrollSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+procedure CListScrollBooleanSignalproc (Sender:PGtkobject; ScrollType:TgtkScrollType; Position:gfloat; AutoStartSelection:boolean; data:pointer); cdecl;
+var p : TFPgtkCListScrollBooleanSignalFunction;
+begin
+with PSignalData(data)^ do
+  begin
+  p := TFPgtkCListScrollBooleanSignalFunction (TheSignalProc);
+  p (TheWidget as TFPgtkObject, ScrollType, Position, AutoStartSelection, TheData)
+  end;
+end;
+
+function TFPgtkCList.CListScrollBooleanSignalConnect (signal:string; proc:TFPgtkCListScrollBooleanSignalFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@CListScrollBooleanSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkCList.CListScrollBooleanSignalConnectAfter (signal:string; proc:TFPgtkCListScrollBooleanSignalFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@CListScrollBooleanSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+procedure SelectRowSignalproc (Sender:PGtkobject; row:integer; column:integer; event:PGdkEventButton; data:pointer); cdecl;
+var p : TFPgtkSelectRowSignalFunction;
+begin
+with PSignalData(data)^ do
+  begin
+  p := TFPgtkSelectRowSignalFunction (TheSignalProc);
+  p (TheWidget as TFPgtkObject, row, column, event, TheData)
+  end;
+end;
+
+function TFPgtkCList.SelectRowSignalConnect (signal:string; proc:TFPgtkSelectRowSignalFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@SelectRowSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkCList.SelectRowSignalConnectAfter (signal:string; proc:TFPgtkSelectRowSignalFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@SelectRowSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkCList.ConnectSelectRow (proc:TFPgtkSelectRowSignalFunction; data:pointer) : guint;
+begin
+  result := SelectRowSignalConnect (sgSelectRow, proc, data);
+end;
+
+function TFPgtkCList.ConnectAfterSelectRow (proc:TFPgtkSelectRowSignalFunction; data:pointer) : guint;
+begin
+  result := SelectRowSignalConnectAfter (sgSelectRow, proc, data);
+end;
+
+function TFPgtkCList.ConnectUnselectRow (proc:TFPgtkSelectRowSignalFunction; data:pointer) : guint;
+begin
+  result := SelectRowSignalConnect (sgUnselectRow, proc, data);
+end;
+
+function TFPgtkCList.ConnectAfterUnselectRow (proc:TFPgtkSelectRowSignalFunction; data:pointer) : guint;
+begin
+  result := SelectRowSignalConnectAfter (sgUnselectRow, proc, data);
+end;
+
+procedure MoveSignalproc (Sender:PGtkobject; arg1:integer; arg2:integer; data:pointer); cdecl;
+var p : TFPgtkMoveSignalFunction;
+begin
+with PSignalData(data)^ do
+  begin
+  p := TFPgtkMoveSignalFunction (TheSignalProc);
+  p (TheWidget as TFPgtkObject, arg1, arg2, TheData)
+  end;
+end;
+
+function TFPgtkCList.MoveSignalConnect (signal:string; proc:TFPgtkMoveSignalFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@MoveSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkCList.MoveSignalConnectAfter (signal:string; proc:TFPgtkMoveSignalFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@MoveSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkCList.ConnectRowMove (proc:TFPgtkMoveSignalFunction; data:pointer) : guint;
+begin
+  result := MoveSignalConnect (sgRowMove, proc, data);
+end;
+
+function TFPgtkCList.ConnectAfterRowMove (proc:TFPgtkMoveSignalFunction; data:pointer) : guint;
+begin
+  result := MoveSignalConnectAfter (sgRowMove, proc, data);
+end;
+
+function TFPgtkCList.ConnectScrollVertical (proc:TFPgtkCListScrollSignalFunction; data:pointer) : guint;
+begin
+  result := CListScrollSignalConnect (sgScrollVertical, proc, data);
+end;
+
+function TFPgtkCList.ConnectAfterScrollVertical (proc:TFPgtkCListScrollSignalFunction; data:pointer) : guint;
+begin
+  result := CListScrollSignalConnectAfter (sgScrollVertical, proc, data);
+end;
+
+function TFPgtkCList.ConnectScrolHorizontal (proc:TFPgtkCListScrollSignalFunction; data:pointer) : guint;
+begin
+  result := CListScrollSignalConnect (sgScrolHorizontal, proc, data);
+end;
+
+function TFPgtkCList.ConnectAfterScrolHorizontal (proc:TFPgtkCListScrollSignalFunction; data:pointer) : guint;
+begin
+  result := CListScrollSignalConnectAfter (sgScrolHorizontal, proc, data);
+end;
+
+function TFPgtkCList.ConnectToggleFocusRow (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnect (sgToggleFocusRow, proc, data);
+end;
+
+function TFPgtkCList.ConnectAfterToggleFocusRow (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnectAfter (sgToggleFocusRow, proc, data);
+end;
+
+function TFPgtkCList.ConnectSelectAll (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnect (sgSelectAll, proc, data);
+end;
+
+function TFPgtkCList.ConnectAfterSelectAll (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnectAfter (sgSelectAll, proc, data);
+end;
+
+function TFPgtkCList.ConnectUnselectAll (proc:TFPgtksignalFunction; data:pointer) : guint;
+begin
+  result := signalConnect (sgUnselectAll, proc, data);
+end;
+
+function TFPgtkCList.ConnectAfterUnselectAll (proc:TFPgtksignalFunction; data:pointer) : guint;
+begin
+  result := signalConnectAfter (sgUnselectAll, proc, data);
+end;
+
+function TFPgtkCList.ConnectUndoSelection (proc:TFPgtksignalFunction; data:pointer) : guint;
+begin
+  result := signalConnect (sgUndoSelection, proc, data);
+end;
+
+function TFPgtkCList.ConnectAfterUndoSelection (proc:TFPgtksignalFunction; data:pointer) : guint;
+begin
+  result := signalConnectAfter (sgUndoSelection, proc, data);
+end;
+
+function TFPgtkCList.ConnectStartSelection (proc:TFPgtksignalFunction; data:pointer) : guint;
+begin
+  result := signalConnect (sgStartSelection, proc, data);
+end;
+
+function TFPgtkCList.ConnectAfterStartSelection (proc:TFPgtksignalFunction; data:pointer) : guint;
+begin
+  result := signalConnectAfter (sgStartSelection, proc, data);
+end;
+
+function TFPgtkCList.ConnectEndSelection (proc:TFPgtksignalFunction; data:pointer) : guint;
+begin
+  result := signalConnect (sgEndSelection, proc, data);
+end;
+
+function TFPgtkCList.ConnectAfterEndSelection (proc:TFPgtksignalFunction; data:pointer) : guint;
+begin
+  result := signalConnectAfter (sgEndSelection, proc, data);
+end;
+
+function TFPgtkCList.ConnectToggleAddMode (proc:TFPgtksignalFunction; data:pointer) : guint;
+begin
+  result := signalConnect (sgToggleAddMode, proc, data);
+end;
+
+function TFPgtkCList.ConnectAfterToggleAddMode (proc:TFPgtksignalFunction; data:pointer) : guint;
+begin
+  result := signalConnectAfter (sgToggleAddMode, proc, data);
+end;
+
+function TFPgtkCList.ConnectAbortColumnResize (proc:TFPgtksignalFunction; data:pointer) : guint;
+begin
+  result := signalConnect (sgAbortColumnResize, proc, data);
+end;
+
+function TFPgtkCList.ConnectAfterAbortColumnResize (proc:TFPgtksignalFunction; data:pointer) : guint;
+begin
+  result := signalConnectAfter (sgAbortColumnResize, proc, data);
+end;
+
+function TFPgtkCList.ConnectExtendSelection (proc:TFPgtkCListScrollBooleanSignalFunction; data:pointer) : guint;
+begin
+  result := CListScrollBooleanSignalConnect (sgExtendSelection, proc, data);
+end;
+
+function TFPgtkCList.ConnectAfterExtendSelection (proc:TFPgtkCListScrollBooleanSignalFunction; data:pointer) : guint;
+begin
+  result := CListScrollBooleanSignalConnectAfter (sgExtendSelection, proc, data);
+end;
+
+procedure ColumnClickedSignalproc (Sender:PGtkobject; column:integer; data:pointer); cdecl;
+var p : TFPgtkColumnClickedSignalFunction;
+begin
+with PSignalData(data)^ do
+  begin
+  p := TFPgtkColumnClickedSignalFunction (TheSignalProc);
+  p (TheWidget as TFPgtkObject, column, TheData)
+  end;
+end;
+
+function TFPgtkCList.ColumnClickedSignalConnect (signal:string; proc:TFPgtkColumnClickedSignalFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@ColumnClickedSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkCList.ColumnClickedSignalConnectAfter (signal:string; proc:TFPgtkColumnClickedSignalFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@ColumnClickedSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkCList.ConnectClickColumn (proc:TFPgtkColumnClickedSignalFunction; data:pointer) : guint;
+begin
+  result := ColumnClickedSignalConnect (sgClickColumn, proc, data);
+end;
+
+function TFPgtkCList.ConnectAfterClickColumn (proc:TFPgtkColumnClickedSignalFunction; data:pointer) : guint;
+begin
+  result := ColumnClickedSignalConnectAfter (sgClickColumn, proc, data);
+end;
+
+procedure ResizeColumnSignalproc (Sender:PGtkobject; column:integer; width:integer; data:pointer); cdecl;
+var p : TFPgtkResizeColumnSignalFunction;
+begin
+with PSignalData(data)^ do
+  begin
+  p := TFPgtkResizeColumnSignalFunction (TheSignalProc);
+  p (TheWidget as TFPgtkObject, column, width, TheData)
+  end;
+end;
+
+function TFPgtkCList.ResizeColumnSignalConnect (signal:string; proc:TFPgtkResizeColumnSignalFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@ResizeColumnSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkCList.ResizeColumnSignalConnectAfter (signal:string; proc:TFPgtkResizeColumnSignalFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@ResizeColumnSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkCList.ConnectResizeColumn (proc:TFPgtkResizeColumnSignalFunction; data:pointer) : guint;
+begin
+  result := ResizeColumnSignalConnect (sgResizeColumn, proc, data);
+end;
+
+function TFPgtkCList.ConnectAfterResizeColumn (proc:TFPgtkResizeColumnSignalFunction; data:pointer) : guint;
+begin
+  result := ResizeColumnSignalConnectAfter (sgResizeColumn, proc, data);
+end;
+
+ { TFPgtkCTree }
+
+function TFPgtkCTree.TheGtkObject : PGtkCTree;
+begin
+  result := PgtkCTree(FGtkObject);
+end;
+
+
+function TFPgtkCTree.GetLineStyle : TGtkCTreeLineStyle;
+begin
+  result := TGtkCTreeLineStyle(gtk.line_style(TheGtkObject^));
+end;
+
+procedure TFPgtkCTree.SetLineStyle (TheValue:TGtkCTreeLineStyle);
+begin
+  gtk_ctree_set_line_style(TheGtkObject,TheValue);
+end;
+
+function TFPgtkCTree.GetShowStub : boolean;
+begin
+  result := boolean(gtk.show_stub(TheGtkObject^));
+end;
+
+procedure TFPgtkCTree.SetShowStub (TheValue:boolean);
+begin
+  gtk_ctree_set_show_stub(TheGtkObject,TheValue);
+end;
+
+function TFPgtkCTree.GetExpanderStyle : TGtkCTreeExpanderStyle;
+begin
+  result := TGtkCTreeExpanderStyle(gtk.expander_style(TheGtkObject^));
+end;
+
+procedure TFPgtkCTree.SetExpanderStyle (TheValue:TGtkCTreeExpanderStyle);
+begin
+  gtk_ctree_set_expander_style(TheGtkObject,TheValue);
+end;
+
+function TFPgtkCTree.GetSpacing : guint;
+begin
+  result := TheGtkObject^.tree_spacing;
+end;
+
+procedure TFPgtkCTree.SetSpacing (TheValue:guint);
+begin
+  gtk_ctree_set_spacing(TheGtkObject,TheValue);
+end;
+
+function TFPgtkCTree.GetIndent : guint;
+begin
+  result := TheGtkObject^.tree_indent;
+end;
+
+procedure TFPgtkCTree.SetIndent (TheValue:guint);
+begin
+  gtk_ctree_set_indent(TheGtkObject,TheValue);
+end;
+
+function TFPgtkCTree.GetTreeColumn : integer;
+begin
+  result := TheGtkObject^.tree_column;
+end;
+
+constructor TFPgtkCTree.Create (aColumnCount:integer; aTreeColumn:integer);
+begin
+  FTreeColumn := aTreeColumn;
+  inherited Create (aColumnCount);
+end;
+
+
+procedure TFPgtkCTree.RemoveNode (node:PGtkCTreeNode);
+begin
+  gtk_ctree_remove_node (TheGtkObject, node);
+end;
+
+function TFPgtkCTree.InsertNode (aParent:PGtkCTreeNode; Sibling:PGtkCTreeNode; data:string; aSpacing:guint8; PixmapClosed:PGdkPixmap; MaskClosed:PGdkBitmap; PixmapOpened:PGdkPixmap; MaskOpened:PGdkBitmap; IsLeaf:boolean; Expanded:boolean) : PGtkCTreeNode; Overload;
+begin
+  result := gtk_ctree_insert_node (TheGtkObject, aParent, Sibling, ConvertToPgchar(data), aSpacing, PixmapClosed, MaskClosed, PixmapOpened, MaskOpened, IsLeaf, Expanded);
+end;
+
+function TFPgtkCTree.InsertNode (aParent:PGtkCTreeNode; Sibling:PGtkCTreeNode; data:string; aSpacing:guint8; IsLeaf:boolean; Expanded:boolean) : PGtkCTreeNode; Overload;
+begin
+  result := InsertNode (aParent, Sibling, data, aSpacing, nil, nil, nil, nil, IsLeaf, Expanded);
+end;
+
+procedure FPgtkCTreeFunc (Tree:PGtkCTree; Node:PGtkCTreeNode; data:pointer); Cdecl;
+var p : TFPgtkCTreeFunction;
+begin
+  with PSignalData(data)^ do
+  begin
+    p := TFPgtkCTreeFunction (TheSignalProc);
+    p (TFPgtkCTree(GetPascalInstance(PgtkObject(Tree))), Node, data);
+  end;
+end;
+
+
+procedure TFPgtkCTree.PostRecursive (aNode:PGtkCTreeNode; func:TFPgtkCTreeFunction; data:pointer);
+begin
+  gtk_CTree_post_recursive (TheGtkObject, aNode, @FPgtkCTreeFunc, 
+        ConvertSignalData(TFPgtkSignalFunction(func), data, true));
+end;
+
+procedure TFPgtkCTree.PostRecursiveToDepth (aNode:PGtkCTreeNode; aDepth:integer; func:TFPgtkCTreeFunction; data:pointer);
+begin
+  gtk_CTree_post_recursive_to_depth (TheGtkObject, aNode, aDepth, @FPgtkCTreeFunc, 
+        ConvertSignalData(TFPgtkSignalFunction(func), data, true));
+end;
+
+procedure TFPgtkCTree.PreRecursive (aNode:PGtkCTreeNode; func:TFPgtkCTreeFunction; data:pointer);
+begin
+  gtk_CTree_pre_recursive (TheGtkObject, aNode, @FPgtkCTreeFunc, 
+        ConvertSignalData(TFPgtkSignalFunction(func), data, true));
+end;
+
+procedure TFPgtkCTree.PreRecursiveToDepth (aNode:PGtkCTreeNode; aDepth:integer; func:TFPgtkCTreeFunction; data:pointer);
+begin
+  gtk_CTree_pre_recursive_to_depth (TheGtkObject, aNode, aDepth, @FPgtkCTreeFunc, 
+        ConvertSignalData(TFPgtkSignalFunction(func), data, true));
+end;
+
+procedure TFPgtkCTree.IsViewable (aNode:PGtkCTreeNode);
+begin
+  gtk_ctree_is_viewable (TheGtkObject, aNode);
+end;
+
+procedure TFPgtkCTree.LastChild (aNode:PGtkCTreeNode);
+begin
+  gtk_ctree_last (TheGtkObject, aNode);
+end;
+
+function TFPgtkCTree.IsChild (anAncestor:PGtkCTreeNode; aChild:PGtkCTreeNode) : boolean;
+begin
+  result := gtk_ctree_find (TheGtkObject, anAncestor, aChild);
+end;
+
+function TFPgtkCTree.IsAncestor (anAncestor:PGtkCTreeNode; aChild:PGtkCTreeNode) : boolean;
+begin
+  result := gtk_ctree_is_ancestor (TheGtkObject, anAncestor, aChild);
+end;
+
+function TFPgtkCTree.IsHotSpot (X:integer; Y:integer) : boolean;
+begin
+  result := gtk_ctree_is_hot_spot (TheGtkObject, X, Y);
+end;
+
+procedure TFPgtkCTree.MoveNode (aNode:PGtkCTreeNode; NewParent:PGtkCTreeNode; NewSibling:PGtkCTreeNode);
+begin
+  gtk_ctree_move (TheGtkObject, aNode, NewParent, NewSibling);
+end;
+
+procedure TFPgtkCTree.Expand (aNode:PGtkCTreeNode);
+begin
+  gtk_ctree_expand (TheGtkObject, aNode);
+end;
+
+procedure TFPgtkCTree.ExpandRecursive (aNode:PGtkCTreeNode);
+begin
+  gtk_ctree_expand_recursive (TheGtkObject, aNode);
+end;
+
+procedure TFPgtkCTree.ExpandToDepth (aNode:PGtkCTreeNode; aDepth:integer);
+begin
+  gtk_ctree_expand_to_depth (TheGtkObject, aNode, aDepth);
+end;
+
+procedure TFPgtkCTree.Collapse (aNode:PGtkCTreeNode);
+begin
+  gtk_ctree_collapse (TheGtkObject, aNode);
+end;
+
+procedure TFPgtkCTree.CollapseRecursive (aNode:PGtkCTreeNode);
+begin
+  gtk_ctree_collapse_recursive (TheGtkObject, aNode);
+end;
+
+procedure TFPgtkCTree.CollapseToDepth (aNode:PGtkCTreeNode; aDepth:integer);
+begin
+  gtk_ctree_collapse_to_depth (TheGtkObject, aNode, aDepth);
+end;
+
+procedure TFPgtkCTree.SelectNode (aNode:PGtkCTreeNode);
+begin
+  gtk_ctree_select (TheGtkObject, aNode);
+end;
+
+procedure TFPgtkCTree.SelectRecursive (aNode:PGtkCTreeNode);
+begin
+  gtk_ctree_select_recursive (TheGtkObject, aNode);
+end;
+
+procedure TFPgtkCTree.UnselectNode (aNode:PGtkCTreeNode);
+begin
+  gtk_ctree_unselect (TheGtkObject, aNode);
+end;
+
+procedure TFPgtkCTree.UnselectRecursive (aNode:PGtkCTreeNode);
+begin
+  gtk_ctree_unselect_recursive (TheGtkObject, aNode);
+end;
+
+procedure TFPgtkCTree.RealSelectRecursive (aNode:PGtkCTreeNode; aState:boolean);
+begin
+  gtk_ctree_real_select_recursive (TheGtkObject, aNode, ord(aState));
+end;
+
+function TFPgtkCTree.NodeGetCellType (Node:PGtkCTreeNode; column:integer) : TGtkCellType;
+begin
+  result := gtk_ctree_node_get_cell_type (TheGtkObject, Node, column);
+end;
+
+function TFPgtkCTree.GetNodeCellText (Node:PGtkCTreeNode; Column:integer) : string;
+var s : pgchar;
+    r : integer;
+begin
+  r := gtk_ctree_node_get_text (TheGtkObject, node, column, @s);
+  if (r = 0) then
+    result := ''
+  else
+    result := string(s^);
+end;
+
+procedure TFPgtkCTree.SetNodeCellText (Node:PGtkCTreeNode; Column:integer; TheValue:string);
+begin
+  gtk_ctree_node_set_text(TheGtkObject,Node, Column,ConvertToPgchar(TheValue));
+end;
+
+procedure TFPgtkCTree.NodeSetPixmap (Node:PGtkCTreeNode; column:integer; pixmap:PGdkPixmap; mask:PGdkBitmap);
+begin
+  gtk_ctree_node_set_pixmap (TheGtkObject, Node, column, pixmap, mask);
+end;
+
+procedure TFPgtkCTree.NodeGetPixmap (Node:PGtkCTreeNode; column:integer; var pixmap:PGdkPixmap; var mask:PGdkBitmap);
+begin
+  gtk_ctree_node_get_pixmap (TheGtkObject, node, column, @pixmap, @mask);
+end;
+
+procedure TFPgtkCTree.NodeSetPixText (Node:PGtkCTreeNode; column:integer; text:string; aspacing:guint8; pixmap:PGdkPixmap; mask:PGdkBitmap);
+begin
+  gtk_ctree_node_set_pixtext (TheGtkObject, Node, column, ConvertToPgchar(text), aspacing, pixmap, mask);
+end;
+
+procedure TFPgtkCTree.NodeGetPixText (Node:PGtkCTreeNode; column:integer; var text:string; var aspacing:guint8; var pixmap:PGdkPixmap; var mask:PGdkBitmap);
+var r : integer;
+    s : PPgchar;
+begin
+  s := nil;
+  r := gtk_ctree_node_get_pixtext (TheGtkObject, node, column, s, @aspacing, @pixmap, @mask);
+  if r = 0 then
+    begin
+    text := '';
+    pixmap := nil;
+    mask := nil;
+    end
+  else
+    text := string (s^);
+end;
+
+procedure TFPgtkCTree.SetNodeInfo (aNode:PGtkCTreeNode; aText:string; aSpacing:guint8; PixmapClosed:PGdkPixmap; MaskClosed:PGdkBitmap; PixmapOpened:PGdkPixmap; MaskOpened:PGdkBitmap; IsLeaf:boolean; Expanded:boolean); Overload;
+begin
+  gtk_ctree_set_node_info (TheGtkObject, aNode, ConvertToPgchar(aText), aSpacing, PixmapClosed, MaskClosed, PixmapOpened, MaskOpened, IsLeaf, Expanded);
+end;
+
+procedure TFPgtkCTree.GetNodeInfo (aNode:PGtkCTreeNode; var aText:string; var aSpacing:guint8; var PixmapClosed:PGdkPixmap; var MaskClosed:PGdkBitmap; var PixmapOpened:PGdkPixmap; var MaskOpened:PGdkBitmap; var IsLeaf:boolean; var Expanded:boolean); Overload;
+var r : integer;
+    s : PPgchar;
+begin
+  s := nil;
+  r := gtk_ctree_get_node_info (TheGtkObject, aNode, s, 
+      @aspacing, @pixmapClosed, @maskClosed, @pixmapOpened, @maskOpened,
+      @IsLeaf, @expanded);
+  if r = 0 then
+    begin
+    atext := '';
+    Spacing := 0;
+    pixmapClosed := nil;
+    maskClosed := nil;
+    pixmapOpened := nil;
+    maskOpened := nil;
+    IsLeaf := false;
+    Expanded := false;
+    end
+  else
+    atext := string (s^);
+end;
+
+procedure TFPgtkCTree.NodeSetShift (Node:PGtkCTreeNode; column:integer; vertical:integer; horizontal:integer);
+begin
+  gtk_ctree_node_set_shift (TheGtkObject, Node, column, vertical, horizontal);
+end;
+
+function TFPgtkCTree.GetNodeSelectable (Node:PGtkCTreeNode) : boolean;
+begin
+  result := gtk_ctree_node_get_selectable(TheGtkObject,Node);
+end;
+
+procedure TFPgtkCTree.SetNodeSelectable (Node:PGtkCTreeNode; TheValue:boolean);
+begin
+  gtk_ctree_node_set_selectable(TheGtkObject,Node,TheValue);
+end;
+
+procedure TFPgtkCTree.NodeSetForeground (Node:PGtkCTreeNode; color:PGdkColor);
+begin
+  gtk_ctree_node_set_foreground (TheGtkObject, Node, color);
+end;
+
+procedure TFPgtkCTree.NodeSetBackground (Node:PGtkCTreeNode; color:PGdkColor);
+begin
+  gtk_ctree_node_set_background (TheGtkObject, Node, color);
+end;
+
+function TFPgtkCTree.GetNodeCellStyle (Node:PGtkCTreeNode; column:integer) : PGtkStyle;
+begin
+  result := gtk_ctree_node_get_cell_style(TheGtkObject,Node, column);
+end;
+
+procedure TFPgtkCTree.SetNodeCellStyle (Node:PGtkCTreeNode; column:integer; TheValue:PGtkStyle);
+begin
+  gtk_ctree_node_set_cell_style(TheGtkObject,Node, column,TheValue);
+end;
+
+function TFPgtkCTree.GetNodeRowStyle (Node:PGtkCTreeNode) : PGtkStyle;
+begin
+  result := gtk_ctree_node_get_row_style(TheGtkObject,Node);
+end;
+
+procedure TFPgtkCTree.SetNodeRowStyle (Node:PGtkCTreeNode; TheValue:PGtkStyle);
+begin
+  gtk_ctree_node_set_row_style(TheGtkObject,Node,TheValue);
+end;
+
+function TFPgtkCTree.GetNodeData (Node:PGtkCTreeNode) : pointer;
+begin
+  result := gtk_ctree_node_get_row_data(TheGtkObject,Node);
+end;
+
+procedure TFPgtkCTree.SetNodeData (Node:PGtkCTreeNode; TheValue:pointer);
+begin
+  gtk_ctree_node_set_row_data(TheGtkObject,Node,TheValue);
+end;
+
+procedure TFPgtkCTree.NodeMoveTo (aNode:PGtkCTreeNode; column:integer; RowAlign:gfloat; ColAlign:gfloat);
+begin
+  gtk_ctree_node_moveto (TheGtkObject, aNode, column, RowAlign, ColAlign);
+end;
+
+function TFPgtkCTree.IsVisible (aNode:PGtkCTreeNode) : TGtkVisibility;
+begin
+  result := gtk_ctree_node_is_visible (TheGtkObject, aNode);
+end;
+
+function TFPgtkCTree.GetCompareDragFunc : TGtkCTreeCompareDragFunc;
+begin
+  result := TheGtkObject^.drag_compare;
+end;
+
+procedure TFPgtkCTree.SetCompareDragFunc (TheValue:TGtkCTreeCompareDragFunc);
+begin
+  gtk_ctree_set_drag_compare_func(TheGtkObject,TheValue);
+end;
+
+procedure TFPgtkCTree.SortNode (aNode:PGtkCTreeNode);
+begin
+  gtk_ctree_sort_node (TheGtkObject, aNode);
+end;
+
+procedure TFPgtkCTree.SortRecursive (aNode:PGtkCTreeNode);
+begin
+  gtk_ctree_sort_recursive (TheGtkObject, aNode);
+end;
+
+function TFPgtkCTree.NthNode (Row:integer) : PGtkCTreeNode;
+begin
+  result := gtk_ctree_node_Nth (TheGtkObject, Row);
+end;
+
+ { TFPgtkFixed }
+
+function TFPgtkFixed.TheGtkObject : PGtkFixed;
+begin
+  result := PgtkFixed(FGtkObject);
+end;
+
+procedure TFPgtkFixed.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_fixed_new);
+end;
+
+
+procedure TFPgtkFixed.Put (Widget:TFPgtkWidget; x:integer; y:integer);
+begin
+  gtk_fixed_put (TheGtkObject, PGtkwidget(ConvertToGtkObject(Widget)), x, y);
+end;
+
+procedure TFPgtkFixed.Move (Widget:TFPgtkWidget; x:integer; y:integer);
+begin
+  gtk_fixed_move (TheGtkObject, PGtkwidget(ConvertToGtkObject(Widget)), x, y);
+end;
+
+procedure TFPgtkFixed.GetPos (Widget:TFPgtkWidget; var PosX:integer; var PosY:integer);
+var g : TFPgtkGroup;
+    r : integer;
+begin
+  g := TFPgtkGroup.Create;
+  try
+    g.ManageLists := false;
+    g.gtkList := TheGtkObject^.children;
+    r := g.indexof (Widget);
+    if r < 0 then
+      begin
+      PosX := -1;
+      PosY := -1;
+      end
+    else
+      with PGtkFixedChild(g.Items[r])^ do
+        begin
+        PosX := x;
+        PosY := Y;
+        end;
+  finally
+    g.Free;
+  end;
+end;
+
+ { TFPgtkNotebook }
+
+function TFPgtkNotebook.TheGtkObject : PGtkNotebook;
+begin
+  result := PgtkNotebook(FGtkObject);
+end;
+
+procedure TFPgtkNotebook.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_notebook_new);
+end;
+
+
+procedure TFPgtkNotebook.AppendPage (Child:TFPgtkWidget; TabLabel:TFPgtkWidget);
+begin
+  gtk_notebook_append_page (TheGtkObject, ConvertTogtkWidget(Child), ConvertTogtkWidget(TabLabel));
+  Child.Show;
+end;
+
+procedure TFPgtkNotebook.AppendPageFull (Child:TFPgtkWidget; TabLabel:TFPgtkWidget; MenuLabel:TFPgtkWidget; IsVisible:boolean);
+begin
+  if assigned (MenuLabel) then
+    gtk_notebook_append_page_menu (TheGtkObject, ConvertTogtkWidget(Child), ConvertTogtkWidget(TabLabel), ConvertTogtkWidget(MenuLabel))
+  else
+    gtk_notebook_append_page (TheGtkObject, ConvertTogtkWidget(Child), ConvertTogtkWidget(TabLabel));
+  if isvisible then
+    Child.Show;
+end;
+
+procedure TFPgtkNotebook.PrependPage (Child:TFPgtkWidget; TabLabel:TFPgtkWidget);
+begin
+  gtk_notebook_Prepend_page (TheGtkObject, PGtkwidget(ConvertToGtkObject(Child)), PGtkwidget(ConvertToGtkObject(TabLabel)));
+end;
+
+procedure TFPgtkNotebook.PrependPageFull (Child:TFPgtkWidget; TabLabel:TFPgtkWidget; MenuLabel:TFPgtkWidget; IsVisible:boolean);
+begin
+  if assigned (MenuLabel) then
+    gtk_notebook_prepend_page_menu (TheGtkObject, ConvertTogtkWidget(Child), ConvertTogtkWidget(TabLabel), ConvertTogtkWidget(MenuLabel))
+  else
+    gtk_notebook_prepend_page (TheGtkObject, ConvertTogtkWidget(Child), ConvertTogtkWidget(TabLabel));
+  if isvisible then
+    Child.Show;
+end;
+
+procedure TFPgtkNotebook.InsertPage (Child:TFPgtkWidget; TabLabel:TFPgtkWidget; Position:integer);
+begin
+  gtk_notebook_insert_page (TheGtkObject, PGtkwidget(ConvertToGtkObject(Child)), PGtkwidget(ConvertToGtkObject(TabLabel)), Position);
+end;
+
+procedure TFPgtkNotebook.InsertPageFull (Child:TFPgtkWidget; TabLabel:TFPgtkWidget; MenuLabel:TFPgtkWidget; IsVisible:boolean; Position:integer);
+begin
+  if assigned (MenuLabel) then
+    gtk_notebook_insert_page_menu (TheGtkObject, ConvertTogtkWidget(Child), ConvertTogtkWidget(TabLabel), ConvertTogtkWidget(MenuLabel), position)
+  else
+    gtk_notebook_insert_page (TheGtkObject, ConvertTogtkWidget(Child), ConvertTogtkWidget(TabLabel), position);
+  if isvisible then
+    Child.Show;
+end;
+
+procedure TFPgtkNotebook.RemovePage (PageNumber:integer);
+begin
+  gtk_notebook_remove_page (TheGtkObject, PageNumber);
+end;
+
+function TFPgtkNotebook.PageNumberOf (Child:TFPgtkWidget) : integer;
+begin
+  result := gtk_notebook_page_num (TheGtkObject, PGtkwidget(ConvertToGtkObject(Child)));
+end;
+
+procedure TFPgtkNotebook.NextPage;
+begin
+  gtk_notebook_next_page (TheGtkObject);
+end;
+
+procedure TFPgtkNotebook.PrevPage;
+begin
+  gtk_notebook_prev_page (TheGtkObject);
+end;
+
+procedure TFPgtkNotebook.ReorderPage (Child:TFPgtkWidget; PageNum:integer);
+begin
+  gtk_notebook_reorder_child (TheGtkObject, PGtkwidget(ConvertToGtkObject(Child)), PageNum);
+end;
+
+function TFPgtkNotebook.GetPageIndex : integer;
+begin
+  result := gtk_notebook_get_current_page(TheGtkObject);
+end;
+
+procedure TFPgtkNotebook.SetPageIndex (TheValue:integer);
+begin
+  gtk_notebook_set_page(TheGtkObject,TheValue);
+end;
+
+function TFPgtkNotebook.GetPage : TFPgtkWidget;
+begin
+  result := GetChildOnPage (PageIndex);
+end;
+
+procedure TFPgtkNotebook.SetPage (TheValue:TFPgtkWidget);
+var r : integer;
+begin
+  r := PageNumberOf (TheValue);
+  if r > -1 then
+    PageIndex := r;
+end;
+
+function TFPgtkNotebook.GetTabPos : TGtkPositionType;
+begin
+  result := gtk.tab_pos(TheGtkObject^);
+end;
+
+procedure TFPgtkNotebook.SetTabPos (TheValue:TGtkPositionType);
+begin
+  gtk_notebook_set_tab_pos(TheGtkObject,TheValue);
+end;
+
+function TFPgtkNotebook.GetShowTabs : boolean;
+begin
+  result := boolean(gtk.show_tabs(TheGtkObject^));
+end;
+
+procedure TFPgtkNotebook.SetShowTabs (TheValue:boolean);
+begin
+  gtk_notebook_set_show_tabs(TheGtkObject,TheValue);
+end;
+
+function TFPgtkNotebook.GetShowBorder : boolean;
+begin
+  result := boolean(gtk.show_border(TheGtkObject^));
+end;
+
+procedure TFPgtkNotebook.SetShowBorder (TheValue:boolean);
+begin
+  gtk_notebook_set_show_border(TheGtkObject,TheValue);
+end;
+
+function TFPgtkNotebook.GetScrollable : boolean;
+begin
+  result := boolean(gtk.scrollable(TheGtkObject^));
+end;
+
+procedure TFPgtkNotebook.SetScrollable (TheValue:boolean);
+begin
+  gtk_notebook_set_scrollable(TheGtkObject,TheValue);
+end;
+
+function TFPgtkNotebook.GetHomogenous : boolean;
+begin
+  result := boolean(gtk.homogeneous(TheGtkObject^));
+end;
+
+procedure TFPgtkNotebook.SetHomogenous (TheValue:boolean);
+begin
+  gtk_notebook_set_homogeneous_tabs(TheGtkObject,TheValue);
+end;
+
+function TFPgtkNotebook.GetTabHBorder : word;
+begin
+  result := TheGtkObject^.tab_hborder;
+end;
+
+procedure TFPgtkNotebook.SetTabHBorder (TheValue:word);
+begin
+  gtk_notebook_set_tab_hborder(TheGtkObject,TheValue);
+end;
+
+function TFPgtkNotebook.GetTabVBorder : word;
+begin
+  result := TheGtkObject^.tab_vborder;
+end;
+
+procedure TFPgtkNotebook.SetTabVBorder (TheValue:word);
+begin
+  gtk_notebook_set_tab_vborder(TheGtkObject,TheValue);
+end;
+
+procedure TFPgtkNotebook.SetTabBorders (BorderWidth:word);
+begin
+  gtk_notebook_set_tab_border (TheGtkObject, BorderWidth);
+end;
+
+function TFPgtkNotebook.GetMenuLabelOf (Child:TFPgtkWidget) : TFPgtkWidget;
+begin
+  result := GetPascalInstance (PGtkObject(gtk_notebook_get_menu_label (TheGtkObject, ConvertTogtkWidget(Child)))) as TFPgtkWidget;
+end;
+
+procedure TFPgtkNotebook.SetMenuLabel (Child:TFPgtkWidget; MenuLabel:TFPgtkWidget);
+begin
+  gtk_notebook_set_menu_label (TheGtkObject, PGtkwidget(ConvertToGtkObject(Child)), PGtkwidget(ConvertToGtkObject(MenuLabel)));
+end;
+
+function TFPgtkNotebook.GetTabLabelOf (Child:TFPgtkWidget) : TFPgtkWidget;
+begin
+  result := GetPascalInstance (PGtkObject(gtk_notebook_get_tab_label (TheGtkObject, ConvertTogtkWidget(Child)))) as TFPgtkWidget;
+end;
+
+procedure TFPgtkNotebook.SetTabLabel (Child:TFPgtkWidget; TabLabel:TFPgtkWidget);
+begin
+  gtk_notebook_set_tab_label (TheGtkObject, PGtkwidget(ConvertToGtkObject(Child)), PGtkwidget(ConvertToGtkObject(TabLabel)));
+end;
+
+function TFPgtkNotebook.GetChildOnPage (PageNum:integer) : TFPgtkWidget;
+begin
+  result := GetPascalInstance (PGtkObject(gtk_notebook_get_nth_page (TheGtkObject, PageNum))) as TFPgtkWidget;
+end;
+
+procedure TFPgtkNotebook.GetTabLabelPacking (Widget:TFPgtkWidget; var Expand:boolean; var Fill:boolean; var PackType:TGtkPackType);
+var PT : PGtkPackType;
+begin
+  pt := @PackType;
+  gtk_notebook_query_tab_label_packing (TheGtkObject, ConvertTogtkWidget(widget), 
+                               @expand, @fill, pt);
+end;
+
+procedure TFPgtkNotebook.SetTabLabelPacking (Widget:TFPgtkWidget; Expand:boolean; Fill:boolean; PackType:TGtkPackType);
+begin
+  gtk_notebook_set_tab_label_packing (TheGtkObject, PGtkwidget(ConvertToGtkObject(Widget)), Expand, Fill, PackType);
+end;
+
+procedure TFPgtkNotebook.EnablePopup;
+begin
+  gtk_notebook_popup_enable (TheGtkObject);
+end;
+
+procedure TFPgtkNotebook.DisablePopup;
+begin
+  gtk_notebook_popup_disable (TheGtkObject);
+end;
+
+procedure PageSwitchSignalproc (Sender:PGtkobject; PageRec:PGtkNotebookPage; aPageNum:integer; data:pointer); cdecl;
+var p : TFPgtkPageSwitchSignalFunction;
+begin
+with PSignalData(data)^ do
+  begin
+  p := TFPgtkPageSwitchSignalFunction (TheSignalProc);
+  p (TheWidget as TFPgtkObject, PageRec, aPageNum, TheData)
+  end;
+end;
+
+function TFPgtkNotebook.PageSwitchSignalConnect (signal:string; proc:TFPgtkPageSwitchSignalFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@PageSwitchSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkNotebook.PageSwitchSignalConnectAfter (signal:string; proc:TFPgtkPageSwitchSignalFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@PageSwitchSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkNotebook.ConnectSwitchPage (proc:TFPgtkPageSwitchSignalFunction; data:pointer) : guint;
+begin
+  result := PageSwitchSignalConnect (sgSwitchPage, proc, data);
+end;
+
+function TFPgtkNotebook.ConnectAfterSwitchPage (proc:TFPgtkPageSwitchSignalFunction; data:pointer) : guint;
+begin
+  result := PageSwitchSignalConnectAfter (sgSwitchPage, proc, data);
+end;
+
+ { TFPgtkFontSelection }
+
+function TFPgtkFontSelection.TheGtkObject : PGtkFontSelection;
+begin
+  result := PgtkFontSelection(FGtkObject);
+end;
+
+procedure TFPgtkFontSelection.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_font_selection_new);
+end;
+
+
+function TFPgtkFontSelection.GetFontName : string;
+begin
+  result := gtk_font_selection_get_font_name(TheGtkObject);
+end;
+
+procedure TFPgtkFontSelection.SetFontName (TheValue:string);
+begin
+  if not gtk_font_selection_set_font_name (TheGtkObject, pgchar(TheValue)) then
+    raise exception.CreateFmt (sFontNotFound, [TheValue]);
+end;
+
+function TFPgtkFontSelection.GetFont : PGdkFont;
+begin
+  result := gtk_font_selection_get_font (TheGtkObject);
+end;
+
+function TFPgtkFontSelection.GetPreviewText : string;
+begin
+  result := gtk_font_selection_get_preview_text(TheGtkObject);
+end;
+
+procedure TFPgtkFontSelection.SetPreviewText (TheValue:string);
+begin
+  gtk_font_selection_set_preview_text(TheGtkObject,ConvertToPgchar(TheValue));
+end;
+
+procedure TFPgtkFontSelection.SetFilter (FilterType:TGtkFontFilterType; FontType:TGtkFontType; Foundries:array of string; Weights:array of string; Slants:array of string; SetWidths:array of string; Spacings:array of string; CharSets:array of string);
+var ppF, ppW, ppSl, ppSW, ppSp, ppC : ppgchar;
+
+  function MakePP (data : array of string) : ppgchar;
+  begin
+    if high(data) > low(data) then
+      result := ArrayToPPgchar(data)
+    else
+      result := nil;
+  end;
+
+  procedure FreePP (ppdata : ppgchar; data : array of string);
+  begin
+    if assigned (ppdata) then
+      freemem (ppdata, sizeof (pgchar) * (high(data)-low(data)+1));
+  end;
+
+begin
+  ppF := MakePP(Foundries);
+  ppW := MakePP(Weights);
+  ppSl := MakePP(Slants);
+  ppSW := MakePP(SetWidths);
+  ppSp := MakePP(Spacings);
+  ppC := MakePP(CharSets);
+  gtk_font_selection_set_filter (TheGtkObject, FilterType, FontType, ppF, ppW, ppSl, ppSW, ppSp, ppC);
+  FreePP (ppF, Foundries);
+  FreePP (ppW, Weights);
+  FreePP (ppSl, Slants);
+  FreePP (ppSW, SetWidths);
+  FreePP (ppSp, Spacings);
+  FreePP (ppC, CharSets);
+end;
+
+ { TFPgtkPaned }
+
+function TFPgtkPaned.TheGtkObject : PGtkPaned;
+begin
+  result := PgtkPaned(FGtkObject);
+end;
+
+
+function TFPgtkPaned.GetGutterSize : word;
+begin
+  result := TheGtkObject^.gutter_size;
+end;
+
+procedure TFPgtkPaned.SetGutterSize (TheValue:word);
+begin
+  {$ifdef gtkwin}
+  TheGtkObject^.gutter_size := TheValue;
+  {$else}
+  gtk_paned_set_gutter_size(TheGtkObject,TheValue);
+  {$endif}
+end;
+
+function TFPgtkPaned.GetHandleSize : word;
+begin
+  result := TheGtkObject^.handle_size;
+end;
+
+procedure TFPgtkPaned.SetHandleSize (TheValue:word);
+begin
+  gtk_paned_set_handle_size(TheGtkObject,TheValue);
+end;
+
+function TFPgtkPaned.GetPosition : integer;
+begin
+  result := TheGtkObject^.child1_size;
+end;
+
+procedure TFPgtkPaned.SetPosition (TheValue:integer);
+begin
+  gtk_paned_set_position(TheGtkObject,TheValue);
+end;
+
+procedure TFPgtkPaned.ComputePosition (AnAllocation:integer; Child1Req:integer; Child2Req:integer);
+begin
+  gtk_paned_compute_position (TheGtkObject, AnAllocation, Child1Req, Child2Req);
+end;
+
+procedure TFPgtkPaned.Add1 (Child:TFPgtkWidget); Overload;
+begin
+  gtk_paned_add1 (TheGtkObject, ConvertToGtkWidget(Child));
+  Child.Show;
+end;
+
+procedure TFPgtkPaned.Pack1 (Child:TFPgtkWidget; Resize:boolean; Shrink:boolean); Overload;
+begin
+  gtk_paned_pack1 (TheGtkObject, ConvertToGtkWidget(Child), Resize, Shrink);
+  Child.Show;
+end;
+
+procedure TFPgtkPaned.Add1 (Child:TFPgtkWidget; isVisible:boolean); Overload;
+begin
+  gtk_paned_add1 (TheGtkObject, ConvertToGtkWidget(Child));
+  if isvisible then
+    Child.Show;
+end;
+
+procedure TFPgtkPaned.Pack1 (Child:TFPgtkWidget; Resize:boolean; Shrink:boolean; IsVisible:boolean); Overload;
+begin
+  gtk_paned_pack1 (TheGtkObject, ConvertToGtkWidget(Child), Resize, Shrink);
+  if isvisible then
+    Child.Show;
+end;
+
+procedure TFPgtkPaned.Add2 (Child:TFPgtkWidget); Overload;
+begin
+  gtk_paned_add2 (TheGtkObject, ConvertToGtkWidget(Child));
+  Child.Show;
+end;
+
+procedure TFPgtkPaned.Pack2 (Child:TFPgtkWidget; Resize:boolean; Shrink:boolean); Overload;
+begin
+  gtk_paned_pack2 (TheGtkObject, ConvertToGtkWidget(Child), Resize, Shrink);
+  Child.Show;
+end;
+
+procedure TFPgtkPaned.Add2 (Child:TFPgtkWidget; IsVisible:boolean); Overload;
+begin
+  gtk_paned_add2 (TheGtkObject, ConvertToGtkWidget(Child));
+  if isvisible then
+    Child.Show;
+end;
+
+procedure TFPgtkPaned.Pack2 (Child:TFPgtkWidget; Resize:boolean; Shrink:boolean; IsVisible:boolean); Overload;
+begin
+  gtk_paned_pack2 (TheGtkObject, ConvertToGtkWidget(Child), Resize, Shrink);
+  if isvisible then
+    Child.Show;
+end;
+
+ { TFPgtkHPaned }
+
+function TFPgtkHPaned.TheGtkObject : PGtkHPaned;
+begin
+  result := PgtkHPaned(FGtkObject);
+end;
+
+procedure TFPgtkHPaned.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_hpaned_new);
+end;
+
+
+ { TFPgtkVPaned }
+
+function TFPgtkVPaned.TheGtkObject : PGtkVPaned;
+begin
+  result := PgtkVPaned(FGtkObject);
+end;
+
+procedure TFPgtkVPaned.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_vpaned_new);
+end;
+
+
+ { TFPgtkLayout }
+
+function TFPgtkLayout.TheGtkObject : PGtkLayout;
+begin
+  result := PgtkLayout(FGtkObject);
+end;
+
+procedure TFPgtkLayout.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_layout_new (nil,nil));
+end;
+
+
+function TFPgtkLayout.GetHAdj : TFPgtkAdjustment;
+begin
+  result := GetPascalInstance(PGtkObject(gtk_layout_get_hadjustment(TheGtkObject)),tfpgtkadjustment) as tfpgtkadjustment;
+end;
+
+procedure TFPgtkLayout.SetHAdj (TheValue:TFPgtkAdjustment);
+begin
+  gtk_layout_set_hadjustment(TheGtkObject,PGtkadjustment(ConvertToGtkObject(TheValue)));
+end;
+
+function TFPgtkLayout.GetVAdj : TFPgtkAdjustment;
+begin
+  result := GetPascalInstance(PGtkObject(gtk_layout_get_vadjustment(TheGtkObject)),tfpgtkadjustment) as tfpgtkadjustment;
+end;
+
+procedure TFPgtkLayout.SetVAdj (TheValue:TFPgtkAdjustment);
+begin
+  gtk_layout_set_vadjustment(TheGtkObject,PGtkadjustment(ConvertToGtkObject(TheValue)));
+end;
+
+procedure TFPgtkLayout.Freeze;
+begin
+  gtk_layout_freeze (TheGtkObject);
+end;
+
+procedure TFPgtkLayout.Thaw;
+begin
+  gtk_layout_thaw (TheGtkObject);
+end;
+
+procedure TFPgtkLayout.Put (aWidget:TFPgtkWidget; X:integer; Y:integer); Overload;
+begin
+  gtk_layout_put (TheGtkObject, PGtkwidget(ConvertToGtkObject(aWidget)), X, Y);
+  aWidget.Show;
+end;
+
+procedure TFPgtkLayout.Put (aWidget:TFPgtkWidget; X:integer; Y:integer; aVisible:boolean); Overload;
+begin
+  gtk_layout_put (TheGtkObject, PGtkwidget(ConvertToGtkObject(aWidget)), X, Y);
+  if aVisible then
+    aWidget.Show;
+end;
+
+procedure TFPgtkLayout.Move (aWidget:TFPgtkWidget; X:integer; Y:integer);
+begin
+  gtk_layout_move (TheGtkObject, PGtkwidget(ConvertToGtkObject(aWidget)), X, Y);
+end;
+
+procedure TFPgtkLayout.SetSize (aWidth:integer; aHeight:integer);
+begin
+  gtk_layout_set_size (TheGtkObject, aWidth, aHeight);
+end;
+
+ { TFPgtkList }
+
+function TFPgtkList.TheGtkObject : PGtkList;
+begin
+  result := PgtkList(FGtkObject);
+end;
+
+procedure TFPgtkList.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_list_new);
+end;
+
+
+function TFPgtkList.ConnectSelectionChanged (proc:TFPgtksignalFunction; data:pointer) : guint;
+begin
+  result := signalConnect (sgSelectionChanged, proc, data);
+end;
+
+function TFPgtkList.ConnectAfterSelectionChanged (proc:TFPgtksignalFunction; data:pointer) : guint;
+begin
+  result := signalConnectAfter (sgSelectionChanged, proc, data);
+end;
+
+function TFPgtkList.ConnectSelectChild (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+begin
+  result := WidgetSignalConnect (sgSelectChild, proc, data);
+end;
+
+function TFPgtkList.ConnectAfterSelectChild (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+begin
+  result := WidgetSignalConnectAfter (sgSelectChild, proc, data);
+end;
+
+function TFPgtkList.ConnectUnselectChild (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+begin
+  result := WidgetSignalConnect (sgUnselectChild, proc, data);
+end;
+
+function TFPgtkList.ConnectAfterUnselectChild (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+begin
+  result := WidgetSignalConnectAfter (sgUnselectChild, proc, data);
+end;
+
+function TFPgtkList.GetSelectionMode : TGtkSelectionMode;
+begin
+  result := TGtkSelectionMode(Selection_mode(TheGtkObject^));
+end;
+
+procedure TFPgtkList.SetSelectionMode (TheValue:TGtkSelectionMode);
+begin
+  gtk_list_set_selection_mode(TheGtkObject,TheValue);
+end;
+
+procedure TFPgtkList.InsertItems (TheItems:TFPgtkListItemGroup; position:integer);
+begin
+  gtk_list_insert_items (TheGtkObject, TheItems.GtkList, position);
+end;
+
+procedure TFPgtkList.AppendItems (TheItems:TFPgtkListItemGroup);
+begin
+  gtk_list_append_items (TheGtkObject, TheItems.GtkList);
+end;
+
+procedure TFPgtkList.PrependItems (TheItems:TFPgtkListItemGroup);
+begin
+  gtk_list_prepend_items (TheGtkObject, TheItems.GtkList);
+end;
+
+procedure TFPgtkList.RemoveItems (TheItems:TFPgtkListItemGroup);
+begin
+  gtk_list_remove_items (TheGtkObject, TheItems.GtkList);
+end;
+
+procedure TFPgtkList.RemoveItemsNoUnref (TheItems:TFPgtkListItemGroup);
+begin
+  gtk_list_remove_items_no_unref (TheGtkObject, TheItems.GtkList);
+end;
+
+procedure TFPgtkList.ClearItems (FromItem:integer; ToItem:integer);
+begin
+  if ToItem >= 0 then
+    inc (ToItem);
+  gtk_list_clear_items (TheGtkObject, FromItem, ToItem);
+end;
+
+procedure TFPgtkList.ClearAll;
+begin
+  ClearItems (0,-1);
+end;
+
+procedure TFPgtkList.SelectItem (Item:integer);
+begin
+  gtk_list_select_item (TheGtkObject, Item);
+end;
+
+procedure TFPgtkList.UnselectItem (Item:integer);
+begin
+  gtk_list_unselect_item (TheGtkObject, Item);
+end;
+
+procedure TFPgtkList.SelectChild (Child:TFPgtkWidget);
+begin
+  gtk_list_select_child (TheGtkObject, PGtkwidget(ConvertToGtkObject(Child)));
+end;
+
+procedure TFPgtkList.UnselectChild (Child:TFPgtkWidget);
+begin
+  gtk_list_unselect_child (TheGtkObject, PGtkwidget(ConvertToGtkObject(Child)));
+end;
+
+function TFPgtkList.ChildPosition (Child:TFPgtkWidget) : integer;
+begin
+  result := gtk_list_child_position (TheGtkObject, PGtkwidget(ConvertToGtkObject(Child)));
+end;
+
+procedure TFPgtkList.ExtendSelection (ScrollType:TGtkScrollType; Position:gfloat; AutoStartSelection:boolean);
+begin
+  gtk_list_extend_selection (TheGtkObject, ScrollType, Position, AutoStartSelection);
+end;
+
+procedure TFPgtkList.StartSelection;
+begin
+  gtk_list_start_selection (TheGtkObject);
+end;
+
+procedure TFPgtkList.EndSelection;
+begin
+  gtk_list_end_selection (TheGtkObject);
+end;
+
+procedure TFPgtkList.SelectAll;
+begin
+  gtk_list_select_all (TheGtkObject);
+end;
+
+procedure TFPgtkList.UnselectAll;
+begin
+  gtk_list_unselect_all (TheGtkObject);
+end;
+
+procedure TFPgtkList.ScrollHorizontal (ScrollType:TGtkScrollType; Position:gfloat);
+begin
+  gtk_list_scroll_horizontal (TheGtkObject, ScrollType, Position);
+end;
+
+procedure TFPgtkList.ScrollVertical (ScrollType:TGtkScrollType; Position:gfloat);
+begin
+  gtk_list_scroll_vertical (TheGtkObject, ScrollType, Position);
+end;
+
+procedure TFPgtkList.ToggleAddMode;
+begin
+  gtk_list_toggle_add_mode (TheGtkObject);
+end;
+
+procedure TFPgtkList.ToggleFocusRow;
+begin
+  gtk_list_toggle_focus_row (TheGtkObject);
+end;
+
+procedure TFPgtkList.ToggleRow (Child:TFPgtkWidget);
+begin
+  gtk_list_toggle_row (TheGtkObject, PGtkwidget(ConvertToGtkObject(Child)));
+end;
+
+procedure TFPgtkList.UndoSelection;
+begin
+  gtk_list_undo_selection (TheGtkObject);
+end;
+
+procedure TFPgtkList.EndDragSelection;
+begin
+  gtk_list_end_drag_selection (TheGtkObject);
+end;
+
+procedure TFPgtkList.GetSelection (aGroup:TFPgtkGroup);
+begin
+  with aGroup do
+    begin
+    ManageLists := False;
+    GtkList := TheGtkObject^.Selection;
+    end;
+end;
+
+ { TFPgtkMenuShell }
+
+function TFPgtkMenuShell.TheGtkObject : PGtkMenuShell;
+begin
+  result := PgtkMenuShell(FGtkObject);
+end;
+
+
+procedure MoveCurrentSignalproc (Sender:PGtkobject; dir:TGtkMenuDirectionType; data:pointer); cdecl;
+var p : TFPgtkMoveCurrentSignalFunction;
+begin
+with PSignalData(data)^ do
+  begin
+  p := TFPgtkMoveCurrentSignalFunction (TheSignalProc);
+  p (TheWidget as TFPgtkObject, dir, TheData)
+  end;
+end;
+
+function TFPgtkMenuShell.MoveCurrentSignalConnect (signal:string; proc:TFPgtkMoveCurrentSignalFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@MoveCurrentSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkMenuShell.MoveCurrentSignalConnectAfter (signal:string; proc:TFPgtkMoveCurrentSignalFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@MoveCurrentSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+procedure TFPgtkMenuShell.GtkPrepend (MenuItem:TFPgtkWidget);
+begin
+  gtk_menu_shell_prepend (TheGtkObject, PGtkwidget(ConvertToGtkObject(MenuItem)));
+end;
+
+procedure TFPgtkMenuShell.GtkInsert (MenuItem:TFPgtkWidget; position:integer);
+begin
+  gtk_menu_shell_insert (TheGtkObject, PGtkwidget(ConvertToGtkObject(MenuItem)), position);
+end;
+
+procedure TFPgtkMenuShell.GtkAppend (MenuItem:TFPgtkWidget);
+begin
+  gtk_menu_shell_append (TheGtkObject, PGtkwidget(ConvertToGtkObject(MenuItem)));
+end;
+
+procedure TFPgtkMenuShell.ActivateItem (MenuItem:TFPgtkWidget; ForceDeactivate:boolean);
+begin
+  gtk_menu_shell_activate_item (TheGtkObject, PGtkwidget(ConvertToGtkObject(MenuItem)), ForceDeactivate);
+end;
+
+procedure TFPgtkMenuShell.SelectItem (MenuItem:TFPgtkWidget);
+begin
+  gtk_menu_shell_select_item (TheGtkObject, PGtkwidget(ConvertToGtkObject(MenuItem)));
+end;
+
+procedure TFPgtkMenuShell.DeActivate;
+begin
+  gtk_menu_shell_deactivate (TheGtkObject);
+end;
+
+procedure TFPgtkMenuShell.Prepend (MenuItem:TFPgtkWidget); Overload;
+begin
+  GtkPrepend (MenuItem);
+  MenuItem.Show;
+end;
+
+procedure TFPgtkMenuShell.Prepend (MenuItem:TFPgtkWidget; CreateVisible:boolean); Overload;
+begin
+  GtkPrepend (MenuItem);
+  if createvisible then
+    MenuItem.Show;
+end;
+
+procedure TFPgtkMenuShell.Insert (MenuItem:TFPgtkWidget; position:integer); Overload;
+begin
+  GtkInsert (MenuItem, position);
+  MenuItem.Show;
+end;
+
+procedure TFPgtkMenuShell.Insert (MenuItem:TFPgtkWidget; position:integer; CreateVisible:boolean); Overload;
+begin
+  GtkInsert (MenuItem, position);
+  if createvisible then
+    MenuItem.Show;
+end;
+
+procedure TFPgtkMenuShell.Append (MenuItem:TFPgtkWidget); Overload;
+begin
+  GtkAppend (MenuItem);
+  MenuItem.Show;
+end;
+
+procedure TFPgtkMenuShell.Append (MenuItem:TFPgtkWidget; CreateVisible:boolean); Overload;
+begin
+  GtkAppend (MenuItem);
+  if createvisible then
+    MenuItem.Show;
+end;
+
+function TFPgtkMenuShell.ConnectDeActivate (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnect (sgDeActivate, proc, data);
+end;
+
+function TFPgtkMenuShell.ConnectAfterDeActivate (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnectAfter (sgDeActivate, proc, data);
+end;
+
+function TFPgtkMenuShell.ConnectSelectionDone (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnect (sgSelectionDone, proc, data);
+end;
+
+function TFPgtkMenuShell.ConnectAfterSelectionDone (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnectAfter (sgSelectionDone, proc, data);
+end;
+
+function TFPgtkMenuShell.ConnectCancel (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnect (sgCancel, proc, data);
+end;
+
+function TFPgtkMenuShell.ConnectAfterCancel (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnectAfter (sgCancel, proc, data);
+end;
+
+function TFPgtkMenuShell.ConnectMoveCurrent (proc:TFPgtkMoveCurrentSignalFunction; data:pointer) : guint;
+begin
+  result := MoveCurrentSignalConnect (sgMoveCurrent, proc, data);
+end;
+
+function TFPgtkMenuShell.ConnectAfterMoveCurrent (proc:TFPgtkMoveCurrentSignalFunction; data:pointer) : guint;
+begin
+  result := MoveCurrentSignalConnectAfter (sgMoveCurrent, proc, data);
+end;
+
+function TFPgtkMenuShell.ConnectActivateCurrent (proc:TFPgtkBooleanSignalFunction; data:pointer) : guint;
+begin
+  result := BooleanSignalConnect (sgActivateCurrent, proc, data);
+end;
+
+function TFPgtkMenuShell.ConnectAfterActivateCurrent (proc:TFPgtkBooleanSignalFunction; data:pointer) : guint;
+begin
+  result := BooleanSignalConnectAfter (sgActivateCurrent, proc, data);
+end;
+
+ { TFPgtkMenuBar }
+
+function TFPgtkMenuBar.TheGtkObject : PGtkMenuBar;
+begin
+  result := PgtkMenuBar(FGtkObject);
+end;
+
+procedure TFPgtkMenuBar.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_menu_bar_new);
+end;
+
+
+procedure TFPgtkMenuBar.GtkPrepend (MenuItem:TFPgtkWidget);
+begin
+  gtk_menu_bar_prepend (TheGtkObject, PGtkwidget(ConvertToGtkObject(MenuItem)));
+end;
+
+procedure TFPgtkMenuBar.GtkInsert (MenuItem:TFPgtkWidget; position:integer);
+begin
+  gtk_menu_bar_insert (TheGtkObject, PGtkwidget(ConvertToGtkObject(MenuItem)), position);
+end;
+
+procedure TFPgtkMenuBar.GtkAppend (MenuItem:TFPgtkWidget);
+begin
+  gtk_menu_bar_append (TheGtkObject, PGtkwidget(ConvertToGtkObject(MenuItem)));
+end;
+
+function TFPgtkMenuBar.GetShadow : TgtkShadowType;
+begin
+  result := TheGtkObject^.shadow_type;
+end;
+
+procedure TFPgtkMenuBar.SetShadow (TheValue:TgtkShadowType);
+begin
+  gtk_menu_bar_set_shadow_type(TheGtkObject,TheValue);
+end;
+
+ { TFPgtkMenu }
+
+function TFPgtkMenu.TheGtkObject : PGtkMenu;
+begin
+  result := PgtkMenu(FGtkObject);
+end;
+
+procedure TFPgtkMenu.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_menu_new);
+end;
+
+
+procedure TFPgtkMenu.GtkPrepend (MenuItem:TFPgtkWidget);
+begin
+  gtk_menu_prepend (TheGtkObject, PGtkwidget(ConvertToGtkObject(MenuItem)));
+end;
+
+procedure TFPgtkMenu.GtkInsert (MenuItem:TFPgtkWidget; position:integer);
+begin
+  gtk_menu_insert (TheGtkObject, PGtkwidget(ConvertToGtkObject(MenuItem)), position);
+end;
+
+procedure TFPgtkMenu.GtkAppend (MenuItem:TFPgtkWidget);
+begin
+  gtk_menu_append (TheGtkObject, PGtkwidget(ConvertToGtkObject(MenuItem)));
+end;
+
+procedure FPgtkMenuPos (Sender:PgtkMenu; x:pgint; y:pgint; data:pointer); Cdecl;
+var p : TFPgtkMenuPosFunction;
+begin
+  with PSignalData (data)^ do
+    begin
+    p := TFPgtkMenuPosFunction (TheSignalProc);
+    p(TFPgtkMenu(GetPascalInstance(PgtkObject(Sender))), x^, y^, data);
+    end;
+end;
+
+
+procedure FPgtkMenuDetacher (AttachedWidget:PgtkWidget; TheMenu:PgtkMenu); Cdecl;
+var m : TFPgtkMenu;
+    a : TFPgtkWidget;
+begin
+  m := (GetPascalInstance(PgtkObject(TheMenu)) as TFPgtkMenu);
+  if assigned(m) and assigned(m.FDetacher) then
+    begin
+    a := TFPgtkWidget (GetPascalInstance(PgtkObject(AttachedWidget)));
+    m.FDetacher (a, m);
+    end
+end;
+
+
+procedure TFPgtkMenu.ReorderChild (MenuItem:TFPgtkWidget; position:integer);
+begin
+  gtk_menu_reorder_child (TheGtkObject, PGtkwidget(ConvertToGtkObject(MenuItem)), position);
+end;
+
+procedure TFPgtkMenu.Popup (button:guint); Overload;
+begin
+  gtk_menu_popup (TheGtkObject, null, null, null, null, button, 0);
+end;
+
+procedure TFPgtkMenu.Popup (ParentShell:TFPgtkWidget; ParentItem:TFPgtkWidget; func:TFPgtkMenuPosFunction; data:pointer; button:guint; ActivateTime:guint32); Overload;
+begin
+  gtk_menu_popup (TheGtkObject, ConvertTogtkWidget(ParentShell), ConvertTogtkWidget(ParentItem),
+      @FPgtkMenuPos, ConvertSignalData(TFPgtkSignalFunction(func), data, true), button, ActivateTime);
+end;
+
+procedure TFPgtkMenu.PopDown;
+begin
+  gtk_menu_popdown (TheGtkObject);
+end;
+
+procedure TFPgtkMenu.Reposition;
+begin
+  gtk_menu_reposition (TheGtkObject);
+end;
+
+procedure TFPgtkMenu.AttachToWidget (Widget:TFPgtkWidget; detacher:TFPgtkMenuDetachFunction);
+begin
+  FDetacher := detacher;
+  gtk_menu_attach_to_widget (TheGtkObject, ConvertTogtkWidget(Widget), @FPgtkMenuDetacher);
+end;
+
+procedure TFPgtkMenu.Detach;
+begin
+  gtk_menu_detach (TheGtkObject);
+end;
+
+procedure TFPgtkMenu.SetTitle (TheValue:string);
+begin
+  gtk_menu_set_title(TheGtkObject,Pgchar(TheValue));
+end;
+
+function TFPgtkMenu.GetActive : TFPgtkWidget;
+begin
+  result := GetPascalInstance(PGtkObject(gtk_menu_get_active(TheGtkObject)),tfpgtkwidget) as tfpgtkwidget;
+end;
+
+procedure TFPgtkMenu.SetActive (TheValue:TFPgtkWidget);
+var r : integer;
+begin
+  r := Children.indexof (TheValue);
+  if r >= 0 then
+    SetActiveIndex (r);
+end;
+
+function TFPgtkMenu.GetActiveIndex : integer;
+begin
+  result := Children.indexof (GetActive);
+end;
+
+procedure TFPgtkMenu.SetActiveIndex (TheValue:integer);
+begin
+  gtk_menu_set_active(TheGtkObject,TheValue);
+end;
+
+function TFPgtkMenu.GetTearOffState : boolean;
+begin
+  result := boolean(gtk.torn_off(TheGtkObject^));
+end;
+
+procedure TFPgtkMenu.SetTearOffState (TheValue:boolean);
+begin
+  gtk_menu_set_tearoff_state(TheGtkObject,TheValue);
+end;
+
+function TFPgtkMenu.GetAttachedTo : TFPgtkWidget;
+begin
+  result := GetPascalInstance(PGtkObject(gtk_menu_get_attach_widget(TheGtkObject)),tfpgtkwidget) as tfpgtkwidget;
+end;
+
+procedure TFPgtkMenu.SetAttachedTo (TheValue:TFPgtkWidget);
+begin
+  AttachToWidget (TheValue, nil);
+end;
+
+function TFPgtkMenu.GetAccelGroup : PGtkAccelGroup;
+begin
+  result := gtk_menu_ensure_uline_accel_group(TheGtkObject);
+end;
+
+procedure TFPgtkMenu.SetAccelGroup (TheValue:PGtkAccelGroup);
+begin
+  gtk_menu_set_accel_group(TheGtkObject,TheValue);
+end;
+
+ { TFPgtkPacker }
+
+function TFPgtkPacker.TheGtkObject : PGtkPacker;
+begin
+  result := PgtkPacker(FGtkObject);
+end;
+
+procedure TFPgtkPacker.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_packer_new);
+end;
+
+
+procedure TFPgtkPacker.Add (Child:TFPgtkWidget; Side:TGtkSideType; Anchor:TGtkAnchorType; options:TGtkPackerOptions); Overload;
+begin
+  gtk_packer_add_defaults (TheGtkObject, Child.TheGtkWidget, Side, anchor, options);
+  Child.Show;
+end;
+
+procedure TFPgtkPacker.Add (Child:TFPgtkWidget; Side:TGtkSideType; Anchor:TGtkAnchorType; options:TGtkPackerOptions; aVisible:boolean); Overload;
+begin
+  gtk_packer_add_defaults (TheGtkObject, Child.TheGtkWidget, Side, anchor, options);
+  if aVisible then
+    Child.Show;
+end;
+
+procedure TFPgtkPacker.Add (Child:TFPgtkWidget; Side:TGtkSideType; Anchor:TGtkAnchorType; options:TGtkPackerOptions; aBorder:guint; PadX:Guint; PadY:guint; IPadX:guint; IPadY:guint); Overload;
+begin
+  gtk_packer_add (TheGtkObject, Child.TheGtkWidget, Side, anchor, options, aborder, padX, PadY, IPadX, IPadY);
+  Child.Show;
+end;
+
+procedure TFPgtkPacker.Add (Child:TFPgtkWidget; Side:TGtkSideType; Anchor:TGtkAnchorType; options:TGtkPackerOptions; aBorder:guint; PadX:Guint; PadY:guint; IPadX:guint; IPadY:guint; aVisible:boolean); Overload;
+begin
+  gtk_packer_add (TheGtkObject, Child.TheGtkWidget, Side, anchor, options, aborder, padX, PadY, IPadX, IPadY);
+  if aVisible then
+    Child.Show;
+end;
+
+procedure TFPgtkPacker.ReorderChild (aChild:TFPgtkWidget; position:integer);
+begin
+  gtk_packer_reorder_child (TheGtkObject, PGtkwidget(ConvertToGtkObject(aChild)), position);
+end;
+
+function TFPgtkPacker.GetSpacing : guint;
+begin
+  result := TheGtkObject^.spacing;
+end;
+
+procedure TFPgtkPacker.SetSpacing (TheValue:guint);
+begin
+  gtk_packer_set_spacing(TheGtkObject,TheValue);
+end;
+
+procedure TFPgtkPacker.DefaultBorder (aBorder:guint);
+begin
+  gtk_packer_set_default_border_width (TheGtkObject, aBorder);
+end;
+
+procedure TFPgtkPacker.DefaultPad (PadX:guint; PadY:guint);
+begin
+  gtk_packer_set_default_pad (TheGtkObject, PadX, PadY);
+end;
+
+procedure TFPgtkPacker.DefaultIPad (IPadX:guint; IPadY:guint);
+begin
+  gtk_packer_set_default_ipad (TheGtkObject, IPadX, IPadY);
+end;
+
+procedure TFPgtkPacker.Configure (aChild:TFPgtkWidget; Side:TGtkSideType; Anchor:TGtkAnchorType; options:TGtkPackerOptions; aBorder:guint; PadX:Guint; PadY:guint; IPadX:guint; IPadY:guint); Overload;
+begin
+  gtk_packer_set_child_packing (TheGtkObject, PGtkwidget(ConvertToGtkObject(aChild)), Side, Anchor, options, aBorder, PadX, PadY, IPadX, IPadY);
+end;
+
+ { TFPgtkTable }
+
+function TFPgtkTable.TheGtkObject : PGtkTable;
+begin
+  result := PgtkTable(FGtkObject);
+end;
+
+procedure TFPgtkTable.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_table_new (1,1,False));
+end;
+
+
+constructor TFPgtkTable.Create (AColumns:integer; ARows:integer);
+begin
+  inherited create;
+  resize (AColumns, ARows);
+end;
+
+
+procedure TFPgtkTable.Resize (AColumns:integer; ARows:integer);
+begin
+  gtk_table_resize (TheGtkObject, ARows, AColumns);
+end;
+
+procedure TFPgtkTable.Attach (Widget:TFPgtkWidget; left:integer; right:integer; top:integer; bottom:integer; XOptions:integer; YOptions:integer; XPadding:integer; YPadding:integer; IsVisible:boolean);
+begin
+  gtk_table_attach (TheGtkObject, ConvertToGtkWidget(Widget), left, right, top, bottom,
+                    XOptions, YOptions, XPadding, YPadding);
+  if isvisible then
+    widget.Show;
+end;
+
+procedure TFPgtkTable.Attach (Widget:TFPgtkWidget; left:integer; right:integer; top:integer; bottom:integer; XOptions:integer; YOptions:integer; XPadding:integer; YPadding:integer);
+begin
+  gtk_table_attach (TheGtkObject, ConvertTogtkWidget(Widget), left, right, top, bottom,
+                    XOptions, YOptions, XPadding, YPadding);
+  widget.Show;
+end;
+
+procedure TFPgtkTable.Attach (Widget:TFPgtkWidget; left:integer; right:integer; top:integer; bottom:integer; IsVisible:boolean);
+begin
+  gtk_table_attach_defaults (TheGtkObject, ConvertTogtkWidget(Widget), left, right, top, bottom);
+  if isvisible then
+    widget.Show;
+end;
+
+procedure TFPgtkTable.Attach (Widget:TFPgtkWidget; left:integer; right:integer; top:integer; bottom:integer);
+begin
+  gtk_table_attach_defaults (TheGtkObject, ConvertTogtkWidget(Widget), left, right, top, bottom);
+  widget.Show;
+end;
+
+function TFPgtkTable.GetRowCount : integer;
+begin
+  result := TheGtkObject^.nrows;
+end;
+
+function TFPgtkTable.GetColCount : integer;
+begin
+  result := TheGtkObject^.ncols;
+end;
+
+function TFPgtkTable.GetHomogeneous : boolean;
+begin
+  result := boolean(gtk.homogeneous(TheGtkObject^));
+end;
+
+procedure TFPgtkTable.SetHomogeneous (TheValue:boolean);
+begin
+  gtk_table_set_homogeneous(TheGtkObject,TheValue);
+end;
+
+function TFPgtkTable.GetRowSpacings : integer;
+begin
+  result := TheGtkObject^.column_spacing;
+end;
+
+procedure TFPgtkTable.SetRowSpacings (TheValue:integer);
+begin
+  gtk_table_set_row_spacings(TheGtkObject,TheValue);
+end;
+
+function TFPgtkTable.GetColSpacings : integer;
+begin
+  result := TheGtkObject^.row_spacing;
+end;
+
+procedure TFPgtkTable.SetColSpacings (TheValue:integer);
+begin
+  gtk_table_set_col_spacings(TheGtkObject,TheValue);
+end;
+
+procedure TFPgtkTable.SetOneRowSpacing (row:integer; TheValue:integer);
+begin
+  gtk_table_set_row_spacing (TheGtkObject, row, TheValue);
+end;
+
+procedure TFPgtkTable.SetOneColSpacing (Column:integer; TheValue:integer);
+begin
+  gtk_table_set_col_spacing (TheGtkObject, Column, TheValue);
+end;
+
+ { TFPgtkToolbar }
+
+function TFPgtkToolbar.TheGtkObject : PGtkToolbar;
+begin
+  result := PgtkToolbar(FGtkObject);
+end;
+
+procedure TFPgtkToolbar.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_toolbar_new (GTK_ORIENTATION_HORIZONTAL,GTK_TOOLBAR_BOTH));
+end;
+
+
+function TFPgtkToolbar.GetButtonRelief : TGtkReliefStyle;
+begin
+  result := gtk_toolbar_get_button_relief(TheGtkObject);
+end;
+
+procedure TFPgtkToolbar.SetButtonRelief (TheValue:TGtkReliefStyle);
+begin
+  gtk_toolbar_set_button_relief(TheGtkObject,TheValue);
+end;
+
+function TFPgtkToolbar.GetTooltips : TFPgtkTooltips;
+begin
+  result := GetPascalInstance(PGtkObject(TheGtkObject^.tooltips),tfpgtktooltips) as tfpgtktooltips;
+end;
+
+function TFPgtkToolbar.GetEnableTooltips : longbool;
+begin
+  result := tooltips.enabled;
+end;
+
+procedure TFPgtkToolbar.SetEnableTooltips (TheValue:longbool);
+begin
+  gtk_toolbar_set_tooltips(TheGtkObject,gint(TheValue));
+end;
+
+function TFPgtkToolbar.GetSpaceStyle : TGtkToolbarSpaceStyle;
+begin
+  result := TheGtkObject^.space_style;
+end;
+
+procedure TFPgtkToolbar.SetSpaceStyle (TheValue:TGtkToolbarSpaceStyle);
+begin
+  gtk_toolbar_set_space_style(TheGtkObject,TheValue);
+end;
+
+function TFPgtkToolbar.GetSpaceSize : integer;
+begin
+  result := TheGtkObject^.space_size;
+end;
+
+procedure TFPgtkToolbar.SetSpaceSize (TheValue:integer);
+begin
+  gtk_toolbar_set_space_size(TheGtkObject,TheValue);
+end;
+
+function TFPgtkToolbar.GetStyle : TGtkToolbarStyle;
+begin
+  result := TheGtkObject^.style;
+end;
+
+procedure TFPgtkToolbar.SetStyle (TheValue:TGtkToolbarStyle);
+begin
+  gtk_toolbar_set_style(TheGtkObject,TheValue);
+end;
+
+function TFPgtkToolbar.GetOrientation : tGtkOrientation;
+begin
+  result := TheGtkObject^.orientation;
+end;
+
+procedure TFPgtkToolbar.SetOrientation (TheValue:tGtkOrientation);
+begin
+  gtk_toolbar_set_orientation(TheGtkObject,TheValue);
+end;
+
+procedure TFPgtkToolbar.InsertWidget (Widget:TFPgtkWidget; TooltipText:string; TooltipPrivate:string; Position:integer);
+begin
+  gtk_toolbar_insert_widget (TheGtkObject, ConvertToGtkWidget(Widget), ConvertToPgchar(TooltipText), ConvertTopgchar(TooltipPrivate), Position);
+  Widget.Show;
+end;
+
+procedure TFPgtkToolbar.PrependWidget (Widget:TFPgtkWidget; TooltipText:string; TooltipPrivate:string);
+begin
+  gtk_toolbar_prepend_widget (TheGtkObject, ConvertToGtkWidget(Widget), ConvertTopgchar(TooltipText), ConvertTopgchar(TooltipPrivate));
+  Widget.Show;
+end;
+
+procedure TFPgtkToolbar.AppendWidget (Widget:TFPgtkWidget; TooltipText:string; TooltipPrivate:string);
+begin
+  gtk_toolbar_append_widget (TheGtkObject, ConvertToGtkWidget(Widget), ConvertTopgchar(TooltipText), ConvertTopgchar(TooltipPrivate));
+  Widget.Show;
+end;
+
+function TFPgtkToolbar.InsertElement (ButtonType:TGtkToolbarChildType; PrevRadioBut:TFPgtkWidget; Text:string; TooltipText:string; TooltipPrivate:string; Icon:TFPgtkWidget; CallBack:TFPgtkSignalFunction; data:pointer; position:integer) : TFPgtkWidget;
+var w : PGtkWidget;
+    t : TFPgtkObjectClass;
+begin
+  w := gtk_toolbar_insert_element (TheGtkObject, ButtonType, 
+           ConvertToGtkwidget(PrevRadioBut), ConvertTopgchar(Text), 
+           ConvertTopgchar(TooltipText), ConvertTopgchar(TooltipPrivate), 
+           ConvertToGtkwidget(Icon), 
+           gtk_signal_func(@SignalProc), 
+           ConvertSignalData(TFPgtkSignalFunction(callback), data, true), 
+           position);
+  if assigned (w) then
+    begin
+    case ButtonType of
+      GTK_TOOLBAR_CHILD_WIDGET:
+        t := TFPgtkWidget;
+      GTK_TOOLBAR_CHILD_BUTTON:
+        t := TFPgtkButton;
+      GTK_TOOLBAR_CHILD_TOGGLEBUTTON:
+        t := TFPgtkToggleButton;
+      GTK_TOOLBAR_CHILD_RADIOBUTTON:
+        t := TFPgtkRadioButton;
+    end;
+    if t = TFPgtkWidget then
+      result := GetPascalInstance (w)
+    else
+      result := GetPascalInstance (w, t);
+    end
+  else
+    result := nil;
+end;
+
+function TFPgtkToolbar.AppendElement (ButtonType:TGtkToolbarChildType; PrevRadioBut:TFPgtkWidget; Text:string; TooltipText:string; TooltipPrivate:string; Icon:TFPgtkWidget; CallBack:TFPgtkSignalFunction; data:pointer) : TFPgtkWidget;
+var w : PGtkWidget;
+    t : TFPgtkObjectClass;
+begin
+  w := gtk_toolbar_append_element (TheGtkObject, ButtonType, ConvertToGtkwidget(PrevRadioBut), 
+          ConvertTopgchar(Text), ConvertTopgchar(TooltipText), ConvertTopgchar(TooltipPrivate), 
+          ConvertToGtkwidget(Icon), gtk_signal_func(@SignalProc), 
+          ConvertSignalData(TFPgtkSignalFunction(callback), data, true));
+  if assigned (w) then
+    begin
+    case ButtonType of
+      GTK_TOOLBAR_CHILD_WIDGET:
+        t := TFPgtkWidget;
+      GTK_TOOLBAR_CHILD_BUTTON:
+        t := TFPgtkButton;
+      GTK_TOOLBAR_CHILD_TOGGLEBUTTON:
+        t := TFPgtkToggleButton;
+      GTK_TOOLBAR_CHILD_RADIOBUTTON:
+        t := TFPgtkRadioButton;
+    end;
+    if t = TFPgtkWidget then
+      result := GetPascalInstance (w)
+    else
+      result := GetPascalInstance (w, t);
+    end
+  else
+    result := nil;
+end;
+
+function TFPgtkToolbar.PrependElement (ButtonType:TGtkToolbarChildType; PrevRadioBut:TFPgtkWidget; Text:string; TooltipText:string; TooltipPrivate:string; Icon:TFPgtkWidget; CallBack:TFPgtkSignalFunction; data:pointer) : TFPgtkWidget;
+var w : PGtkWidget;
+    t : TFPgtkObjectClass;
+begin
+  w := gtk_toolbar_prepend_element (TheGtkObject, ButtonType, ConvertToGtkwidget(PrevRadioBut), 
+          ConvertTopgchar(Text), ConvertTopgchar(TooltipText), ConvertTopgchar(TooltipPrivate), 
+          ConvertToGtkwidget(Icon), gtk_signal_func(@SignalProc), 
+          ConvertSignalData(TFPgtkSignalFunction(callback), data, true));
+  if assigned (w) then
+    begin
+    case ButtonType of
+      GTK_TOOLBAR_CHILD_WIDGET:
+        t := TFPgtkWidget;
+      GTK_TOOLBAR_CHILD_BUTTON:
+        t := TFPgtkButton;
+      GTK_TOOLBAR_CHILD_TOGGLEBUTTON:
+        t := TFPgtkToggleButton;
+      GTK_TOOLBAR_CHILD_RADIOBUTTON:
+        t := TFPgtkRadioButton;
+    end;
+    if t = TFPgtkWidget then
+      result := GetPascalInstance (w)
+    else
+      result := GetPascalInstance (w, t);
+    end
+  else
+    result := nil;
+end;
+
+function TFPgtkToolbar.InsertItem (Text:string; TooltipText:string; TooltipPrivate:string; Icon:TFPgtkWidget; CallBack:TFPgtkSignalFunction; data:pointer; position:integer) : TFPgtkWidget; Overload;
+begin
+  result := GetPascalInstance (
+      gtk_toolbar_insert_item (TheGtkObject, ConvertTopgchar(Text), ConvertTopgchar(TooltipText), ConvertTopgchar(TooltipPrivate), ConvertToGtkWidget(Icon), 
+              gtk_signal_func(@SignalProc), ConvertSignalData(TFPgtkSignalFunction(callback), data, true), position),
+      TFPgtkButton);
+end;
+
+function TFPgtkToolbar.AppendItem (Text:string; TooltipText:string; TooltipPrivate:string; Icon:TFPgtkWidget; CallBack:TFPgtkSignalFunction; data:pointer) : TFPgtkWidget; Overload;
+begin
+  result := GetPascalInstance (
+      gtk_toolbar_append_item (TheGtkObject, ConvertTopgchar(Text), ConvertTopgchar(TooltipText), ConvertTopgchar(TooltipPrivate), 
+              ConvertToGtkWidget(Icon), gtk_signal_func(@SignalProc), ConvertSignalData(TFPgtkSignalFunction(callback), data, true)),
+      TFPgtkButton);
+end;
+
+function TFPgtkToolbar.PrependItem (Text:string; TooltipText:string; TooltipPrivate:string; Icon:TFPgtkWidget; CallBack:TFPgtkSignalFunction; data:pointer) : TFPgtkWidget; Overload;
+begin
+  result := GetPascalInstance (
+      gtk_toolbar_prepend_item (TheGtkObject, Converttopgchar(Text), Converttopgchar(TooltipText), 
+              Converttopgchar(TooltipPrivate), ConvertToGtkWidget(Icon), gtk_signal_func(@SignalProc), 
+              ConvertSignalData(TFPgtkSignalFunction(callback), data, true)), 
+      TFPgtkButton);
+end;
+
+function TFPgtkToolbar.InsertItem (Text:string; TooltipText:string; TooltipPrivate:string; Icon:array of string; CallBack:TFPgtkSignalFunction; data:pointer; position:integer) : TFPgtkWidget; Overload;
+var pm : TFPgtkPixmap;
+begin
+  if low(icon) < high(icon) then
+    begin
+    pm := TFPgtkPixmap.Create;
+    pm.loadFromArray (icon);
+    end
+  else
+    pm := nil;
+  result := GetPascalInstance (
+      gtk_toolbar_insert_item (TheGtkObject, ConvertTopgchar(Text), ConvertTopgchar(TooltipText), ConvertTopgchar(TooltipPrivate), ConvertToGtkWidget(pm), 
+              gtk_signal_func(@SignalProc), ConvertSignalData(TFPgtkSignalFunction(callback), data, true), position),
+      TFPgtkButton);
+end;
+
+function TFPgtkToolbar.AppendItem (Text:string; TooltipText:string; TooltipPrivate:string; Icon:array of string; CallBack:TFPgtkSignalFunction; data:pointer) : TFPgtkWidget; Overload;
+var pm : TFPgtkPixmap;
+begin
+  if low(icon) < high(icon) then
+    begin
+    pm := TFPgtkPixmap.Create;
+    pm.loadFromArray (icon);
+    end
+  else
+    pm := nil;
+  result := GetPascalInstance (
+      gtk_toolbar_append_item (TheGtkObject, ConvertTopgchar(Text), ConvertTopgchar(TooltipText), ConvertTopgchar(TooltipPrivate), 
+              ConvertToGtkWidget(pm), gtk_signal_func(@SignalProc), ConvertSignalData(TFPgtkSignalFunction(callback), data, true)),
+      TFPgtkButton);
+end;
+
+function TFPgtkToolbar.PrependItem (Text:string; TooltipText:string; TooltipPrivate:string; Icon:array of string; CallBack:TFPgtkSignalFunction; data:pointer) : TFPgtkWidget; Overload;
+var pm : TFPgtkPixmap;
+begin
+  if low(icon) < high(icon) then
+    begin
+    pm := TFPgtkPixmap.Create;
+    pm.loadFromArray (icon);
+    end
+  else
+    pm := nil;
+  result := GetPascalInstance (
+      gtk_toolbar_prepend_item (TheGtkObject, Converttopgchar(Text), Converttopgchar(TooltipText), 
+              Converttopgchar(TooltipPrivate), ConvertToGtkWidget(pm), gtk_signal_func(@SignalProc), 
+              ConvertSignalData(TFPgtkSignalFunction(callback), data, true)), 
+      TFPgtkButton);
+end;
+
+procedure TFPgtkToolbar.InsertSpace (position:integer);
+begin
+  gtk_toolbar_insert_space (TheGtkObject, position);
+end;
+
+procedure TFPgtkToolbar.AppendSpace;
+begin
+  gtk_toolbar_append_space (TheGtkObject);
+end;
+
+procedure TFPgtkToolbar.PrependSpace;
+begin
+  gtk_toolbar_prepend_space (TheGtkObject);
+end;
+
+ { TFPgtkTree }
+
+function TFPgtkTree.TheGtkObject : PGtkTree;
+begin
+  result := PgtkTree(FGtkObject);
+end;
+
+procedure TFPgtkTree.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_tree_new);
+end;
+
+
+function TFPgtkTree.ConnectSelectionChanged (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnect (sgSelectionChanged, proc, data);
+end;
+
+function TFPgtkTree.ConnectAfterSelectionChanged (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnectAfter (sgSelectionChanged, proc, data);
+end;
+
+function TFPgtkTree.ConnectSelectChild (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+begin
+  result := WidgetSignalConnect (sgSelectChild, proc, data);
+end;
+
+function TFPgtkTree.ConnectAfterSelectChild (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+begin
+  result := WidgetSignalConnectAfter (sgSelectChild, proc, data);
+end;
+
+function TFPgtkTree.ConnectUnselectChild (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+begin
+  result := WidgetSignalConnect (sgUnselectChild, proc, data);
+end;
+
+function TFPgtkTree.ConnectAfterUnselectChild (proc:TFPgtkWidgetSignalFunction; data:pointer) : guint;
+begin
+  result := WidgetSignalConnectAfter (sgUnselectChild, proc, data);
+end;
+
+function TFPgtkTree.GetSelectionMode : TGtkSelectionMode;
+begin
+  result := gtk.selection_mode(TheGtkObject^);
+end;
+
+procedure TFPgtkTree.SetSelectionMode (TheValue:TGtkSelectionMode);
+begin
+  gtk_tree_set_selection_mode(TheGtkObject,TheValue);
+end;
+
+function TFPgtkTree.GetViewLines : boolean;
+begin
+  result := boolean(gtk.view_line(TheGtkObject^));
+end;
+
+procedure TFPgtkTree.SetViewLines (TheValue:boolean);
+begin
+  gtk_tree_set_view_lines(TheGtkObject,guint(TheValue));
+end;
+
+function TFPgtkTree.GetViewMode : TGtkTreeViewMode;
+begin
+  result := gtk.view_mode(TheGtkObject^);
+end;
+
+procedure TFPgtkTree.SetViewMode (TheValue:TGtkTreeViewMode);
+begin
+  gtk_tree_set_view_mode(TheGtkObject,TheValue);
+end;
+
+procedure TFPgtkTree.Append (TreeItem:TFPgtkWidget);
+begin
+  gtk_tree_append (TheGtkObject, PGtkwidget(ConvertToGtkObject(TreeItem)));
+  TreeItem.Show;
+end;
+
+procedure TFPgtkTree.Prepend (TreeItem:TFPgtkWidget);
+begin
+  gtk_tree_prepend (TheGtkObject, PGtkwidget(ConvertToGtkObject(TreeItem)));
+  TreeItem.Show;
+end;
+
+procedure TFPgtkTree.Insert (TreeItem:TFPgtkWidget; position:integer);
+begin
+  gtk_tree_insert (TheGtkObject, PGtkwidget(ConvertToGtkObject(TreeItem)),position);
+  TreeItem.show;
+end;
+
+procedure TFPgtkTree.Remove (TreeItem:TFPgtkWidget);
+var l : PGList;
+begin
+{$ifndef win32}
+  gtk_tree_remove_item (TheGtkObject, ConvertToGtkWidget(TreeItem));
+{$else}
+  l := null;
+  l := g_list_append (l, ConvertToGtkWidget(TreeItem));
+  gtk_tree_remove_items (TheGtkObject, l);
+  g_list_free (l);
+{$endif}
+end;
+
+procedure TFPgtkTree.ClearItems (StartPos:integer; EndPos:integer);
+begin
+  gtk_tree_clear_items (TheGtkObject, StartPos, EndPos);
+end;
+
+procedure TFPgtkTree.SelectItem (Item:integer);
+begin
+  gtk_tree_select_item (TheGtkObject, Item);
+end;
+
+procedure TFPgtkTree.UnselectItem (Item:integer);
+begin
+  gtk_tree_unselect_item (TheGtkObject, Item);
+end;
+
+procedure TFPgtkTree.SelectChild (TreeItem:TFPgtkWidget);
+begin
+  gtk_tree_select_child (TheGtkObject, PGtkwidget(ConvertToGtkObject(TreeItem)));
+end;
+
+procedure TFPgtkTree.UnselectChild (TreeItem:TFPgtkWidget);
+begin
+  gtk_tree_unselect_child (TheGtkObject, PGtkwidget(ConvertToGtkObject(TreeItem)));
+end;
+
+function TFPgtkTree.ChildPosition (TreeItem:TFPgtkWidget) : integer;
+begin
+  result := gtk_tree_child_position (TheGtkObject, PGtkwidget(ConvertToGtkObject(TreeItem)));
+end;
+
+function TFPgtkTree.RootTree : TFPgtkTree;
+begin
+  result := GetPascalInstance(PGtkObject(GTK_TREE_ROOT_TREE(TheGtkObject))) as TFPgtkTree;
+end;
+
+function TFPgtkTree.IsRootTree : boolean;
+begin
+  result := GTK_IS_ROOT_TREE (TheGtkObject);
+end;
+
+procedure TFPgtkTree.GetSelection (aGroup:TFPgtkGroup);
+begin
+  aGroup.ManageLists := false;
+  aGroup.GtkList := Gtk_Tree_selection (TheGtkObject);
+end;
+
+function TFPgtkTree.Level : integer;
+begin
+  result := TheGtkObject^.level;
+end;
+
+ { TFPgtkCalendar }
+
+function TFPgtkCalendar.TheGtkObject : PGtkCalendar;
+begin
+  result := PgtkCalendar(FGtkObject);
+end;
+
+procedure TFPgtkCalendar.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_calendar_new);
+end;
+
+
+function TFPgtkCalendar.SelectMonth (aMonth:guint; aYear:guint) : integer;
+begin
+  result := gtk_calendar_select_month (TheGtkObject, aMonth-1, aYear);
+end;
+
+procedure TFPgtkCalendar.SelectDay (aDay:guint);
+begin
+  gtk_calendar_select_day (TheGtkObject, aDay);
+end;
+
+function TFPgtkCalendar.MarkDay (aDay:guint) : integer;
+begin
+  result := gtk_calendar_mark_day (TheGtkObject, aDay);
+end;
+
+function TFPgtkCalendar.UnmarkDay (aDay:guint) : integer;
+begin
+  result := gtk_calendar_unmark_day (TheGtkObject, aDay);
+end;
+
+procedure TFPgtkCalendar.ClearMarks;
+begin
+  gtk_calendar_clear_marks (TheGtkObject);
+end;
+
+function TFPgtkCalendar.GetDisplayOptions : TGtkCalendarDisplayOptions;
+begin
+  result := TheGtkObject^.display_flags;
+end;
+
+procedure TFPgtkCalendar.SetDisplayOptions (TheValue:TGtkCalendarDisplayOptions);
+begin
+  gtk_calendar_display_options(TheGtkObject,TheValue);
+end;
+
+function TFPgtkCalendar.GetDate : TDatetime;
+var y, m, d : guint;
+begin
+  gtk_calendar_get_date (TheGtkObject, @y, @m, @d);
+  result := encodedate (y,m+1,d);
+end;
+
+procedure TFPgtkCalendar.SetDate (TheValue:TDatetime);
+var y,m,d : word;
+begin
+  decodedate (TheValue, y,m,d);
+  SelectMonth(m,y);
+  SelectDay(d);
+end;
+
+procedure TFPgtkCalendar.Freeze;
+begin
+  gtk_calendar_freeze (TheGtkObject);
+end;
+
+procedure TFPgtkCalendar.Thaw;
+begin
+  gtk_calendar_thaw (TheGtkObject);
+end;
+
+function TFPgtkCalendar.ConnectMonthChanged (proc:TFPgtksignalFunction; data:pointer) : guint;
+begin
+  result := signalConnect (sgMonthChanged, proc, data);
+end;
+
+function TFPgtkCalendar.ConnectAfterMonthChanged (proc:TFPgtksignalFunction; data:pointer) : guint;
+begin
+  result := signalConnectAfter (sgMonthChanged, proc, data);
+end;
+
+function TFPgtkCalendar.ConnectDaySelected (proc:TFPgtksignalFunction; data:pointer) : guint;
+begin
+  result := signalConnect (sgDaySelected, proc, data);
+end;
+
+function TFPgtkCalendar.ConnectAfterDaySelected (proc:TFPgtksignalFunction; data:pointer) : guint;
+begin
+  result := signalConnectAfter (sgDaySelected, proc, data);
+end;
+
+function TFPgtkCalendar.ConnectDaySelectedDoubleClick (proc:TFPgtksignalFunction; data:pointer) : guint;
+begin
+  result := signalConnect (sgDaySelectedDoubleClick, proc, data);
+end;
+
+function TFPgtkCalendar.ConnectAfterDaySelectedDoubleClick (proc:TFPgtksignalFunction; data:pointer) : guint;
+begin
+  result := signalConnectAfter (sgDaySelectedDoubleClick, proc, data);
+end;
+
+function TFPgtkCalendar.ConnectPrevMonth (proc:TFPgtksignalFunction; data:pointer) : guint;
+begin
+  result := signalConnect (sgPrevMonth, proc, data);
+end;
+
+function TFPgtkCalendar.ConnectAfterPrevMonth (proc:TFPgtksignalFunction; data:pointer) : guint;
+begin
+  result := signalConnectAfter (sgPrevMonth, proc, data);
+end;
+
+function TFPgtkCalendar.ConnectNextMonth (proc:TFPgtksignalFunction; data:pointer) : guint;
+begin
+  result := signalConnect (sgNextMonth, proc, data);
+end;
+
+function TFPgtkCalendar.ConnectAfterNextMonth (proc:TFPgtksignalFunction; data:pointer) : guint;
+begin
+  result := signalConnectAfter (sgNextMonth, proc, data);
+end;
+
+function TFPgtkCalendar.ConnectPrevYear (proc:TFPgtksignalFunction; data:pointer) : guint;
+begin
+  result := signalConnect (sgPrevYear, proc, data);
+end;
+
+function TFPgtkCalendar.ConnectAfterPrevYear (proc:TFPgtksignalFunction; data:pointer) : guint;
+begin
+  result := signalConnectAfter (sgPrevYear, proc, data);
+end;
+
+function TFPgtkCalendar.ConnectNextYear (proc:TFPgtksignalFunction; data:pointer) : guint;
+begin
+  result := signalConnect (sgNextYear, proc, data);
+end;
+
+function TFPgtkCalendar.ConnectAfterNextYear (proc:TFPgtksignalFunction; data:pointer) : guint;
+begin
+  result := signalConnectAfter (sgNextYear, proc, data);
+end;
+
+ { TFPgtkDrawingArea }
+
+function TFPgtkDrawingArea.TheGtkObject : PGtkDrawingArea;
+begin
+  result := PgtkDrawingArea(FGtkObject);
+end;
+
+procedure TFPgtkDrawingArea.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_drawing_area_new);
+end;
+
+
+procedure TFPgtkDrawingArea.SetSize (Width:integer; Height:integer);
+begin
+  gtk_drawing_area_Size (TheGtkObject, Width, Height);
+end;
+
+ { TFPgtkCurve }
+
+function TFPgtkCurve.TheGtkObject : PGtkCurve;
+begin
+  result := PgtkCurve(FGtkObject);
+end;
+
+procedure TFPgtkCurve.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_curve_new);
+end;
+
+
+procedure TFPgtkCurve.SetRange (MinX:float; MaxX:float; MinY:float; MaxY:float);
+begin
+  gtk_curve_set_range (TheGtkObject, MinX, MaxX, MinY, MaxY);
+end;
+
+procedure TFPgtkCurve.Reset;
+begin
+  gtk_curve_reset (TheGtkObject);
+end;
+
+procedure TFPgtkCurve.SetGamma (GammaValue:float);
+begin
+  gtk_curve_set_gamma (TheGtkObject, GammaValue);
+end;
+
+function TFPgtkCurve.GetCurveType : TGtkCurveType;
+begin
+  result := TheGtkObject^.curve_type;
+end;
+
+procedure TFPgtkCurve.SetCurveType (TheValue:TGtkCurveType);
+begin
+  gtk_curve_set_curve_type(TheGtkObject,TheValue);
+end;
+
+ { TFPgtkEditable }
+
+function TFPgtkEditable.TheGtkObject : PGtkEditable;
+begin
+  result := PgtkEditable(FGtkObject);
+end;
+
+
+function TFPgtkEditable.GetHasSelection : boolean;
+begin
+  result := SelectionStart <> SelectionEnd;
+end;
+
+function TFPgtkEditable.GetEditable : boolean;
+begin
+  result := boolean(gtk.editable(TheGtkObject^));
+end;
+
+procedure TFPgtkEditable.SetEditable (TheValue:boolean);
+begin
+  gtk_Editable_set_editable(TheGtkObject,TheValue);
+end;
+
+function TFPgtkEditable.GetVisible : boolean;
+begin
+  result := boolean(gtk.visible(TheGtkObject^));
+end;
+
+procedure TFPgtkEditable.SetVisible (TheValue:boolean);
+begin
+  gtk.Set_visible(TheGtkObject^,guint(TheValue))
+end;
+
+function TFPgtkEditable.GetPosition : integer;
+begin
+  result := gtk_Editable_get_position(TheGtkObject);
+end;
+
+procedure TFPgtkEditable.SetPosition (TheValue:integer);
+begin
+  gtk_Editable_set_position(TheGtkObject,TheValue);
+end;
+
+function TFPgtkEditable.GetSelectionStart : integer;
+begin
+  result := TheGtkObject^.selection_start_pos;
+end;
+
+procedure TFPgtkEditable.SetSelectionStart (TheValue:integer);
+begin
+  gtk_editable_select_region (TheGtkObject, TheValue, SelectionEnd);
+end;
+
+function TFPgtkEditable.GetSelectionEnd : integer;
+begin
+  result := TheGtkObject^.Selection_end_pos;
+end;
+
+procedure TFPgtkEditable.SetSelectionEnd (TheValue:integer);
+begin
+  gtk_editable_select_region (TheGtkObject, SelectionStart, TheValue);
+end;
+
+procedure TFPgtkEditable.SetSelection (TheValue:string);
+var b : integer;
+begin
+  if HasSelection then
+    begin
+    b := SelectionStart;
+    deleteText (SelectionStart, SelectionEnd);
+    end
+  else
+    b := position;
+  InsertText (TheValue, b);
+  Position := b + length(TheValue);
+  SelectRegion (b, position);
+end;  
+
+function TFPgtkEditable.GetSelection : string;
+var c : pgchar;
+begin
+  c := gtk_editable_get_chars (TheGtkObject, SelectionStart, SelectionEnd);
+  result := string (c);
+  g_free (c);
+end;
+
+function TFPgtkEditable.GetText : string;
+var c : pgchar;
+begin
+  c := gtk_editable_get_chars (TheGtkObject, 0, -1);
+  result := string (c);
+  g_free (c);
+end;
+
+procedure TFPgtkEditable.Changed;
+begin
+  gtk_Editable_Changed (TheGtkObject);
+end;
+
+procedure TFPgtkEditable.InsertText (NewText:string; AtPosition:integer);
+var p : integer;
+begin
+  p := AtPosition;
+  gtk_editable_insert_text (TheGtkObject, pgchar(NewText), length(NewText), @p);
+end;
+
+procedure TFPgtkEditable.DeleteText (StartPos:integer; EndPos:integer);
+begin
+  gtk_Editable_Delete_Text (TheGtkObject, StartPos, EndPos);
+end;
+
+procedure TFPgtkEditable.GetChars (StartPos:integer; EndPos:integer);
+begin
+  gtk_Editable_get_chars (TheGtkObject, StartPos, EndPos);
+end;
+
+procedure TFPgtkEditable.CutClipboard;
+begin
+  gtk_Editable_cut_clipboard (TheGtkObject);
+end;
+
+procedure TFPgtkEditable.CopyClipboard;
+begin
+  gtk_Editable_copy_clipboard (TheGtkObject);
+end;
+
+procedure TFPgtkEditable.PasteClipboard;
+begin
+  gtk_Editable_paste_clipboard (TheGtkObject);
+end;
+
+procedure TFPgtkEditable.SelectRegion (StartPos:integer; EndPos:integer);
+begin
+  gtk_Editable_select_region (TheGtkObject, StartPos, EndPos);
+end;
+
+procedure TFPgtkEditable.ClaimSelection (claim:boolean; time:guint32);
+begin
+  gtk_Editable_claim_selection (TheGtkObject, claim, time);
+end;
+
+procedure TFPgtkEditable.DeleteSelection;
+begin
+  gtk_Editable_delete_selection (TheGtkObject);
+end;
+
+procedure TFPgtkEditable.Clear;
+begin
+  DeleteText (0,-1);
+end;
+
+procedure InsertSignalproc (Sender:PGtkobject; NewText:pgChar; TextLength:integer; var Position:integer; data:pointer); cdecl;
+var p : TFPgtkInsertSignalFunction;
+begin
+with PSignalData(data)^ do
+  begin
+  p := TFPgtkInsertSignalFunction (TheSignalProc);
+  p (TheWidget as TFPgtkObject, NewText, TextLength, Position, TheData)
+  end;
+end;
+
+function TFPgtkEditable.InsertSignalConnect (signal:string; proc:TFPgtkInsertSignalFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@InsertSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkEditable.InsertSignalConnectAfter (signal:string; proc:TFPgtkInsertSignalFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@InsertSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+procedure DeleteSignalproc (Sender:PGtkobject; StartPos:integer; EndPos:integer; data:pointer); cdecl;
+var p : TFPgtkDeleteSignalFunction;
+begin
+with PSignalData(data)^ do
+  begin
+  p := TFPgtkDeleteSignalFunction (TheSignalProc);
+  p (TheWidget as TFPgtkObject, StartPos, EndPos, TheData)
+  end;
+end;
+
+function TFPgtkEditable.DeleteSignalConnect (signal:string; proc:TFPgtkDeleteSignalFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@DeleteSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkEditable.DeleteSignalConnectAfter (signal:string; proc:TFPgtkDeleteSignalFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@DeleteSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+procedure XYSignalproc (Sender:PGtkobject; x:integer; y:integer; data:pointer); cdecl;
+var p : TFPgtkXYSignalFunction;
+begin
+with PSignalData(data)^ do
+  begin
+  p := TFPgtkXYSignalFunction (TheSignalProc);
+  p (TheWidget as TFPgtkObject, x, y, TheData)
+  end;
+end;
+
+function TFPgtkEditable.XYSignalConnect (signal:string; proc:TFPgtkXYSignalFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@XYSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkEditable.XYSignalConnectAfter (signal:string; proc:TFPgtkXYSignalFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@XYSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+procedure DirectionSignalproc (Sender:PGtkobject; Direction:integer; data:pointer); cdecl;
+var p : TFPgtkDirectionSignalFunction;
+begin
+with PSignalData(data)^ do
+  begin
+  p := TFPgtkDirectionSignalFunction (TheSignalProc);
+  p (TheWidget as TFPgtkObject, Direction, TheData)
+  end;
+end;
+
+function TFPgtkEditable.DirectionSignalConnect (signal:string; proc:TFPgtkDirectionSignalFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@DirectionSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkEditable.DirectionSignalConnectAfter (signal:string; proc:TFPgtkDirectionSignalFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@DirectionSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+procedure MoveWordSignalproc (Sender:PGtkobject; NumWords:integer; data:pointer); cdecl;
+var p : TFPgtkMoveWordSignalFunction;
+begin
+with PSignalData(data)^ do
+  begin
+  p := TFPgtkMoveWordSignalFunction (TheSignalProc);
+  p (TheWidget as TFPgtkObject, NumWords, TheData)
+  end;
+end;
+
+function TFPgtkEditable.MoveWordSignalConnect (signal:string; proc:TFPgtkMoveWordSignalFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@MoveWordSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkEditable.MoveWordSignalConnectAfter (signal:string; proc:TFPgtkMoveWordSignalFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@MoveWordSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+procedure MovetoSignalproc (Sender:PGtkobject; MoveTo:integer; data:pointer); cdecl;
+var p : TFPgtkMovetoSignalFunction;
+begin
+with PSignalData(data)^ do
+  begin
+  p := TFPgtkMovetoSignalFunction (TheSignalProc);
+  p (TheWidget as TFPgtkObject, MoveTo, TheData)
+  end;
+end;
+
+function TFPgtkEditable.MovetoSignalConnect (signal:string; proc:TFPgtkMovetoSignalFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect (FGtkObject, pgChar(signal), gtk_signal_func(@MovetoSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkEditable.MovetoSignalConnectAfter (signal:string; proc:TFPgtkMovetoSignalFunction; data:pointer) : guint;
+begin
+  result := gtk_signal_connect_After (FGtkObject, pgChar(signal), gtk_signal_func(@MovetoSignalproc), ConvertSignalData(TFPgtkSignalFunction(proc), data, true));
+end;
+
+function TFPgtkEditable.ConnectChanged (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnect (sgChanged, proc, data);
+end;
+
+function TFPgtkEditable.ConnectAfterChanged (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnectAfter (sgChanged, proc, data);
+end;
+
+function TFPgtkEditable.ConnectActivate (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnect (sgActivate, proc, data);
+end;
+
+function TFPgtkEditable.ConnectAfterActivate (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnectAfter (sgActivate, proc, data);
+end;
+
+function TFPgtkEditable.ConnectInsertText (proc:TFPgtkInsertSignalFunction; data:pointer) : guint;
+begin
+  result := InsertSignalConnect (sgInsertText, proc, data);
+end;
+
+function TFPgtkEditable.ConnectAfterInsertText (proc:TFPgtkInsertSignalFunction; data:pointer) : guint;
+begin
+  result := InsertSignalConnectAfter (sgInsertText, proc, data);
+end;
+
+function TFPgtkEditable.ConnectDeleteText (proc:TFPgtkDeleteSignalFunction; data:pointer) : guint;
+begin
+  result := DeleteSignalConnect (sgDeleteText, proc, data);
+end;
+
+function TFPgtkEditable.ConnectAfterDeleteText (proc:TFPgtkDeleteSignalFunction; data:pointer) : guint;
+begin
+  result := DeleteSignalConnectAfter (sgDeleteText, proc, data);
+end;
+
+function TFPgtkEditable.ConnectSetEditable (proc:TFPgtkBooleanSignalFunction; data:pointer) : guint;
+begin
+  result := BooleanSignalConnect (sgSetEditable, proc, data);
+end;
+
+function TFPgtkEditable.ConnectAfterSetEditable (proc:TFPgtkBooleanSignalFunction; data:pointer) : guint;
+begin
+  result := BooleanSignalConnectAfter (sgSetEditable, proc, data);
+end;
+
+function TFPgtkEditable.ConnectMoveCursor (proc:TFPgtkXYSignalFunction; data:pointer) : guint;
+begin
+  result := XYSignalConnect (sgMoveCursor, proc, data);
+end;
+
+function TFPgtkEditable.ConnectAfterMoveCursor (proc:TFPgtkXYSignalFunction; data:pointer) : guint;
+begin
+  result := XYSignalConnectAfter (sgMoveCursor, proc, data);
+end;
+
+function TFPgtkEditable.ConnectMoveWord (proc:TFPgtkMoveWordSignalFunction; data:pointer) : guint;
+begin
+  result := MoveWordSignalConnect (sgMoveWord, proc, data);
+end;
+
+function TFPgtkEditable.ConnectAfterMoveWord (proc:TFPgtkMoveWordSignalFunction; data:pointer) : guint;
+begin
+  result := MoveWordSignalConnectAfter (sgMoveWord, proc, data);
+end;
+
+function TFPgtkEditable.ConnectMovePage (proc:TFPgtkXYSignalFunction; data:pointer) : guint;
+begin
+  result := XYSignalConnect (sgMovePage, proc, data);
+end;
+
+function TFPgtkEditable.ConnectAfterMovePage (proc:TFPgtkXYSignalFunction; data:pointer) : guint;
+begin
+  result := XYSignalConnectAfter (sgMovePage, proc, data);
+end;
+
+function TFPgtkEditable.ConnectMoveToRow (proc:TFPgtkMoveToSignalFunction; data:pointer) : guint;
+begin
+  result := MoveToSignalConnect (sgMoveToRow, proc, data);
+end;
+
+function TFPgtkEditable.ConnectAfterMoveToRow (proc:TFPgtkMoveToSignalFunction; data:pointer) : guint;
+begin
+  result := MoveToSignalConnectAfter (sgMoveToRow, proc, data);
+end;
+
+function TFPgtkEditable.ConnectMoveToCol (proc:TFPgtkMoveToSignalFunction; data:pointer) : guint;
+begin
+  result := MoveToSignalConnect (sgMoveToCol, proc, data);
+end;
+
+function TFPgtkEditable.ConnectAfterMoveToCol (proc:TFPgtkMoveToSignalFunction; data:pointer) : guint;
+begin
+  result := MoveToSignalConnectAfter (sgMoveToCol, proc, data);
+end;
+
+function TFPgtkEditable.ConnectKillChar (proc:TFPgtkDirectionSignalFunction; data:pointer) : guint;
+begin
+  result := DirectionSignalConnect (sgKillChar, proc, data);
+end;
+
+function TFPgtkEditable.ConnectAfterKillChar (proc:TFPgtkDirectionSignalFunction; data:pointer) : guint;
+begin
+  result := DirectionSignalConnectAfter (sgKillChar, proc, data);
+end;
+
+function TFPgtkEditable.ConnectKillWord (proc:TFPgtkDirectionSignalFunction; data:pointer) : guint;
+begin
+  result := DirectionSignalConnect (sgKillWord, proc, data);
+end;
+
+function TFPgtkEditable.ConnectAfterKillWord (proc:TFPgtkDirectionSignalFunction; data:pointer) : guint;
+begin
+  result := DirectionSignalConnectAfter (sgKillWord, proc, data);
+end;
+
+function TFPgtkEditable.ConnectKillLine (proc:TFPgtkDirectionSignalFunction; data:pointer) : guint;
+begin
+  result := DirectionSignalConnect (sgKillLine, proc, data);
+end;
+
+function TFPgtkEditable.ConnectAfterKillLine (proc:TFPgtkDirectionSignalFunction; data:pointer) : guint;
+begin
+  result := DirectionSignalConnectAfter (sgKillLine, proc, data);
+end;
+
+function TFPgtkEditable.ConnectCutClipboard (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnect (sgCutClipboard, proc, data);
+end;
+
+function TFPgtkEditable.ConnectAfterCutClipboard (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnectAfter (sgCutClipboard, proc, data);
+end;
+
+function TFPgtkEditable.ConnectCopyClipboard (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnect (sgCopyClipboard, proc, data);
+end;
+
+function TFPgtkEditable.ConnectAfterCopyClipboard (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnectAfter (sgCopyClipboard, proc, data);
+end;
+
+function TFPgtkEditable.ConnectPasteClipboard (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnect (sgPasteClipboard, proc, data);
+end;
+
+function TFPgtkEditable.ConnectAfterPasteClipboard (proc:TFPgtkSignalFunction; data:pointer) : guint;
+begin
+  result := SignalConnectAfter (sgPasteClipboard, proc, data);
+end;
+
+ { TFPgtkEntry }
+
+function TFPgtkEntry.TheGtkObject : PGtkEntry;
+begin
+  result := PgtkEntry(FGtkObject);
+end;
+
+procedure TFPgtkEntry.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_Entry_new);
+end;
+
+
+procedure TFPgtkEntry.SetText (TheValue:string);
+begin
+  gtk_Entry_set_text (TheGtkObject, Pgchar(TheValue));
+end;
+
+procedure TFPgtkEntry.AppendText (aText:string);
+begin
+  gtk_Entry_append_text (TheGtkObject, ConvertToPgchar(aText));
+end;
+
+procedure TFPgtkEntry.PrependText (aText:string);
+begin
+  gtk_Entry_prepend_text (TheGtkObject, ConvertToPgchar(aText));
+end;
+
+function TFPgtkEntry.GetVisibility : boolean;
+begin
+  result := boolean(gtk.visible(TheGtkObject^));
+end;
+
+procedure TFPgtkEntry.SetVisibility (TheValue:boolean);
+begin
+  gtk_Entry_set_visibility(TheGtkObject,TheValue);
+end;
+
+function TFPgtkEntry.GetMaxLength : word;
+begin
+  result := TheGtkObject^.text_max_length;
+end;
+
+procedure TFPgtkEntry.SetMaxLength (TheValue:word);
+begin
+  gtk_Entry_set_max_length(TheGtkObject,TheValue);
+end;
+
+ { TFPgtkSpinButton }
+
+function TFPgtkSpinButton.TheGtkObject : PGtkSpinButton;
+begin
+  result := PgtkSpinButton(FGtkObject);
+end;
+
+procedure TFPgtkSpinButton.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_spin_button_new (TFPgtkAdjustment.Create.TheGtkObject,1,0));
+end;
+
+
+procedure TFPgtkSpinButton.Configure (Adj:TFPgtkAdjustment; aClimbRate:gfloat; aDigits:integer);
+begin
+  if assigned (Adj) then
+    gtk_spin_button_configure (TheGtkObject, PGtkadjustment(Adj.TheGtkObject), aClimbRate, aDigits)
+  else
+    gtk_spin_button_configure (TheGtkObject, nil, aClimbRate, aDigits);
+end;
+
+function TFPgtkSpinButton.GetAdjustment : TFPgtkAdjustment;
+begin
+  result := GetPascalInstance(PGtkObject(gtk_spin_button_get_adjustment(TheGtkObject)),TFPGtkAdjustment) as TFPgtkAdjustment;
+end;
+
+procedure TFPgtkSpinButton.SetAdjustment (TheValue:TFPgtkAdjustment);
+begin
+  gtk_spin_button_set_adjustment(TheGtkObject,PGtkadjustment(ConvertToGtkObject(TheValue)));
+end;
+
+function TFPgtkSpinButton.GetClimbRate : gfloat;
+begin
+  result := TheGtkObject^.climb_rate;
+end;
+
+procedure TFPgtkSpinButton.SetClimbRate (TheValue:gfloat);
+begin
+  TheGtkObject^.climb_rate := TheValue;
+end;
+
+function TFPgtkSpinButton.GetDigits : integer;
+begin
+  result := gtk.digits(TheGtkObject^);
+end;
+
+procedure TFPgtkSpinButton.SetDigits (TheValue:integer);
+begin
+  gtk_spin_button_set_digits(TheGtkObject,TheValue);
+end;
+
+function TFPgtkSpinButton.GetAsInteger : integer;
+begin
+  result := gtk_spin_button_get_value_as_int(TheGtkObject);
+end;
+
+procedure TFPgtkSpinButton.SetAsInteger (TheValue:integer);
+begin
+  gtk_spin_button_set_Value(TheGtkObject,TheValue);
+end;
+
+function TFPgtkSpinButton.GetAsFloat : gfloat;
+begin
+  result := gtk_spin_button_get_value_as_int(TheGtkObject);
+end;
+
+procedure TFPgtkSpinButton.SetAsFloat (TheValue:gfloat);
+begin
+  gtk_spin_button_set_Value(TheGtkObject,TheValue);
+end;
+
+function TFPgtkSpinButton.GetUpdatePolicy : TGtkSpinButtonUpdatePolicy;
+begin
+  result := TheGtkObject^.update_policy;
+end;
+
+procedure TFPgtkSpinButton.SetUpdatePolicy (TheValue:TGtkSpinButtonUpdatePolicy);
+begin
+  gtk_spin_button_set_update_policy(TheGtkObject,TheValue);
+end;
+
+function TFPgtkSpinButton.GetNumeric : boolean;
+begin
+  result := boolean(gtk.numeric(TheGtkObject^));
+end;
+
+procedure TFPgtkSpinButton.SetNumeric (TheValue:boolean);
+begin
+  gtk_spin_button_set_numeric(TheGtkObject,TheValue);
+end;
+
+procedure TFPgtkSpinButton.Spin (direction:TGtkSpinType; increment:gfloat);
+begin
+  gtk_spin_button_spin (TheGtkObject, direction, increment);
+end;
+
+function TFPgtkSpinButton.GetWrap : boolean;
+begin
+  result := boolean(gtk.wrap(TheGtkObject^));
+end;
+
+procedure TFPgtkSpinButton.SetWrap (TheValue:boolean);
+begin
+  gtk_spin_button_set_wrap(TheGtkObject,TheValue);
+end;
+
+function TFPgtkSpinButton.GetShadowType : TGtkShadowType;
+begin
+  result := TheGtkObject^.shadow_type;
+end;
+
+procedure TFPgtkSpinButton.SetShadowType (TheValue:TGtkShadowType);
+begin
+  gtk_spin_button_set_shadow_type(TheGtkObject,TheValue);
+end;
+
+function TFPgtkSpinButton.GetSnapToTicks : boolean;
+begin
+  result := boolean(gtk.snap_to_ticks(TheGtkObject^));
+end;
+
+procedure TFPgtkSpinButton.SetSnapToTicks (TheValue:boolean);
+begin
+  gtk_spin_button_set_snap_to_ticks(TheGtkObject,TheValue);
+end;
+
+procedure TFPgtkSpinButton.Update;
+begin
+  gtk_spin_button_update (TheGtkObject);
+end;
+
+ { TFPgtkText }
+
+function TFPgtkText.TheGtkObject : PGtkText;
+begin
+  result := PgtkText(FGtkObject);
+end;
+
+procedure TFPgtkText.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_Text_new (null,null));
+end;
+
+
+constructor TFPgtkText.Create;
+begin
+  inherited create;
+  editable := true;
+  wordwrap := true;
+  linewrap := true;
+  FLines := TStringlist.Create;
+  ConnectChanged (@SigChanged, nil);
+end;
+
+
+destructor TFPgtkText.Destroy;
+begin
+  FLines.Free;
+  inherited;
+end;
+
+
+procedure TFPgtkText.SigChanged (Sender:TFPgtkObject; data:pointer);
+begin
+  FIsChanged := True;
+end;
+
+procedure TFPgtkText.RefreshLines;
+begin
+  if not assigned (FLines) then
+    FLines := TStringlist.Create;
+  FLines.Text := Text;
+end;
+
+function TFPgtkText.GetLines : TStrings;
+begin
+  if FIsChanged then
+    RefreshLines;
+  result := FLines;
+end;
+
+procedure TFPgtkText.Freeze;
+begin
+  gtk_Text_Freeze (TheGtkObject);
+end;
+
+procedure TFPgtkText.Thaw;
+begin
+  gtk_Text_Thaw (TheGtkObject);
+end;
+
+function TFPgtkText.TextLength : guint;
+begin
+  result := gtk_Text_get_length (TheGtkObject);
+end;
+
+procedure TFPgtkText.Insert (font:PgdkFont; fore:PgdkColor; back:PgdkColor; TheText:string);
+begin
+  gtk_text_insert (TheGtkObject, font, fore, back, pgchar(TheText), length(TheText));
+end;
+
+procedure TFPgtkText.DeleteBackward (number:longword);
+begin
+  gtk_Text_Backward_Delete (TheGtkObject, number);
+end;
+
+procedure TFPgtkText.DeleteForward (number:longword);
+begin
+  gtk_Text_Forward_Delete (TheGtkObject, number);
+end;
+
+function TFPgtkText.GetWordWrap : boolean;
+begin
+  result := boolean(gtk.word_wrap(TheGtkObject^));
+end;
+
+procedure TFPgtkText.SetWordWrap (TheValue:boolean);
+begin
+  gtk_text_set_word_wrap (TheGtkObject,gint(TheValue));
+end;
+
+function TFPgtkText.GetLineWrap : boolean;
+begin
+  result := boolean(gtk.Line_Wrap(TheGtkObject^));
+end;
+
+procedure TFPgtkText.SetLineWrap (TheValue:boolean);
+begin
+{$IFDEF win32 or go32v2}
+  Set_Line_Wrap (TheGtkObject^, gint(TheValue));
+{$ELSE}
+  gtk_Text_Set_Line_Wrap (TheGtkObject, gint(TheValue));
+{$ENDIF}
+end;
+
+function TFPgtkText.GetPoint : integer;
+begin
+  result := gtk_Text_get_Point(TheGtkObject);
+end;
+
+procedure TFPgtkText.SetPoint (TheValue:integer);
+begin
+  gtk_Text_set_Point(TheGtkObject,TheValue);
+end;
+
+procedure TFPgtkText.SetAdjustments (hadj:TFPgtkAdjustment; vadj:TFPgtkAdjustment);
+begin
+  gtk_text_set_adjustments (TheGtkObject, hadj.TheGtkObject, vadj.TheGtkObject);
+end;
+
+function TFPgtkText.GetHAdjustment : TFPgtkAdjustment;
+begin
+  result := GetPascalInstance(PGtkObject(TheGtkObject^.hadj),tfpgtkadjustment) as tfpgtkadjustment;
+end;
+
+procedure TFPgtkText.SetHAdjustment (TheValue:TFPgtkAdjustment);
+begin
+  gtk_Text_Set_Adjustments(TheGtkObject, TheValue.TheGtkObject, TheGtkObject^.vadj);
+end;
+
+function TFPgtkText.GetVAdjustment : TFPgtkAdjustment;
+begin
+  result := GetPascalInstance(PGtkObject(TheGtkObject^.vadj),tfpgtkadjustment) as tfpgtkadjustment;
+end;
+
+procedure TFPgtkText.SetVAdjustment (TheValue:TFPgtkAdjustment);
+begin
+  gtk_Text_Set_Adjustments(TheGtkObject, TheGtkObject^.hadj, TheValue.TheGtkObject);
+end;
+
+procedure TFPgtkText.SetText (TheValue:string);
+begin
+  Freeze;
+  {$ifdef gtkwin}
+  TheValue := stringreplace (TheValue, #13#10, #10, [rfReplaceAll]);
+  {$endif}
+  clear;
+  Insert (null, null, null, TheValue);
+  Thaw;
+end;
+
+ { TFPgtkRuler }
+
+function TFPgtkRuler.TheGtkObject : PGtkRuler;
+begin
+  result := PgtkRuler(FGtkObject);
+end;
+
+
+procedure TFPgtkRuler.SetMetric (aMetric:TGtkMetricType);
+begin
+  gtk_ruler_set_metric (TheGtkObject, aMetric);
+end;
+
+procedure TFPgtkRuler.SetRange (Lower:float; Upper:float; Position:float; MaxSize:float);
+begin
+  gtk_ruler_set_range (TheGtkObject, Lower, Upper, Position, MaxSize);
+end;
+
+ { TFPgtkHRuler }
+
+function TFPgtkHRuler.TheGtkObject : PGtkHRuler;
+begin
+  result := PgtkHRuler(FGtkObject);
+end;
+
+procedure TFPgtkHRuler.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_hruler_new);
+end;
+
+
+ { TFPgtkVRuler }
+
+function TFPgtkVRuler.TheGtkObject : PGtkVRuler;
+begin
+  result := PgtkVRuler(FGtkObject);
+end;
+
+procedure TFPgtkVRuler.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_vruler_new);
+end;
+
+
+ { TFPgtkRange }
+
+function TFPgtkRange.TheGtkObject : PGtkRange;
+begin
+  result := PgtkRange(FGtkObject);
+end;
+
+
+function TFPgtkRange.GetAdjustment : TFPgtkAdjustment;
+begin
+  result := GetPascalInstance(PGtkObject(gtk_Range_get_Adjustment(TheGtkObject)),tfpgtkadjustment) as tfpgtkadjustment;
+end;
+
+procedure TFPgtkRange.SetAdjustment (TheValue:TFPgtkAdjustment);
+begin
+  gtk_Range_set_adjustment(TheGtkObject,PGtkadjustment(ConvertToGtkObject(TheValue)));
+end;
+
+function TFPgtkRange.GetUpdatePolicy : TgtkUpdateType;
+begin
+  result := gtk.policy(TheGtkObject^);
+end;
+
+procedure TFPgtkRange.SetUpdatePolicy (TheValue:TgtkUpdateType);
+begin
+  gtk_Range_set_update_policy(TheGtkObject,TheValue);
+end;
+
+constructor TFPgtkRange.Create (AnAdjustment:TFPgtkAdjustment);
+begin
+  FAdj := AnAdjustment;
+  inherited create;
+end;
+
+
+procedure TFPgtkRange.DrawBackground;
+begin
+  gtk_Range_draw_background (TheGtkObject);
+end;
+
+procedure TFPgtkRange.DrawTrough;
+begin
+  gtk_Range_draw_trough (TheGtkObject);
+end;
+
+procedure TFPgtkRange.DrawStepForw;
+begin
+  gtk_Range_draw_step_forw (TheGtkObject);
+end;
+
+procedure TFPgtkRange.DrawStepBack;
+begin
+  gtk_Range_draw_step_back (TheGtkObject);
+end;
+
+procedure TFPgtkRange.DrawSlider;
+begin
+  gtk_Range_draw_slider (TheGtkObject);
+end;
+
+procedure TFPgtkRange.SliderUpdate;
+begin
+  gtk_Range_slider_update (TheGtkObject);
+end;
+
+function TFPgtkRange.TroughClick (X:integer; Y:integer; var JumpPerc:gfloat) : integer;
+begin
+  result := gtk_Range_trough_click (TheGtkObject, X, Y, @JumpPerc);
+end;
+
+procedure TFPgtkRange.DefaultHSliderUpdate;
+begin
+  gtk_Range_default_hslider_update (TheGtkObject);
+end;
+
+procedure TFPgtkRange.DefaultVSliderUpdate;
+begin
+  gtk_Range_default_vslider_update (TheGtkObject);
+end;
+
+function TFPgtkRange.DefaultHTroughClick (X:integer; Y:integer; var JumpPerc:gfloat) : integer;
+begin
+  result := gtk_Range_default_htrough_click (TheGtkObject, X, Y, @JumpPerc);
+end;
+
+function TFPgtkRange.DefaultVTroughClick (X:integer; Y:integer; var JumpPerc:gfloat) : integer;
+begin
+  result := gtk_Range_default_vtrough_click (TheGtkObject, X, Y, @JumpPerc);
+end;
+
+procedure TFPgtkRange.defaultHMotion (XDelta:integer; YDelta:integer);
+begin
+  gtk_Range_default_hmotion (TheGtkObject, XDelta, YDelta);
+end;
+
+procedure TFPgtkRange.defaultVMotion (XDelta:integer; YDelta:integer);
+begin
+  gtk_Range_default_vmotion (TheGtkObject, XDelta, YDelta);
+end;
+
+procedure TFPgtkRange.ClearBackground;
+begin
+  gtk_Range_clear_background (TheGtkObject);
+end;
+
+ { TFPgtkScale }
+
+function TFPgtkScale.TheGtkObject : PGtkScale;
+begin
+  result := PgtkScale(FGtkObject);
+end;
+
+
+procedure TFPgtkScale.SetDigits (TheValue:integer);
+begin
+  gtk_scale_set_digits (TheGtkObject, TheValue);
+end;
+
+function TFPgtkScale.GetDrawValue : boolean;
+begin
+  result := boolean(gtk.draw_value(TheGtkObject^));
+end;
+
+procedure TFPgtkScale.SetDrawValue (TheValue:boolean);
+begin
+  gtk_scale_set_draw_value(TheGtkObject,TheValue);
+end;
+
+function TFPgtkScale.GetValuePos : TGtkPositionType;
+begin
+  result := gtk.value_pos(TheGtkObject^);
+end;
+
+procedure TFPgtkScale.SetValuePos (TheValue:TGtkPositionType);
+begin
+  gtk_scale_set_value_pos(TheGtkObject,TheValue);
+end;
+
+ { TFPgtkHScale }
+
+function TFPgtkHScale.TheGtkObject : PGtkHScale;
+begin
+  result := PgtkHScale(FGtkObject);
+end;
+
+procedure TFPgtkHScale.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_hscale_new (nil));
+end;
+
+
+ { TFPgtkVScale }
+
+function TFPgtkVScale.TheGtkObject : PGtkVScale;
+begin
+  result := PgtkVScale(FGtkObject);
+end;
+
+procedure TFPgtkVScale.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_vscale_new (nil));
+end;
+
+
+ { TFPgtkScrollbar }
+
+function TFPgtkScrollbar.TheGtkObject : PGtkScrollbar;
+begin
+  result := PgtkScrollbar(FGtkObject);
+end;
+
+
+ { TFPgtkHScrollbar }
+
+function TFPgtkHScrollbar.TheGtkObject : PGtkHScrollbar;
+begin
+  result := PgtkHScrollbar(FGtkObject);
+end;
+
+
+procedure TFPgtkHScrollbar.CreateGtkObject;
+var a : PgtkAdjustment;
+begin
+  if assigned (FAdj) then
+    a := FAdj.TheGtkObject
+  else
+    a := null;
+  FGtkObject := PgtkObject (gtk_hscrollbar_new (a));
+  FAdj := nil;
+end;
+
+ { TFPgtkVScrollbar }
+
+
+procedure TFPgtkVScrollbar.CreateGtkObject;
+var a : PgtkAdjustment;
+begin
+  if assigned (FAdj) then
+    a := FAdj.TheGtkObject
+  else
+    a := null;
+  FGtkObject := PgtkObject (gtk_vscrollbar_new (a));
+  FAdj := nil;
+end;
+
+ { TFPgtkSeparator }
+
+function TFPgtkSeparator.TheGtkObject : PGtkSeparator;
+begin
+  result := PgtkSeparator(FGtkObject);
+end;
+
+
+ { TFPgtkHSeparator }
+
+function TFPgtkHSeparator.TheGtkObject : PGtkHSeparator;
+begin
+  result := PgtkHSeparator(FGtkObject);
+end;
+
+procedure TFPgtkHSeparator.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_HSeparator_new);
+end;
+
+
+ { TFPgtkVSeparator }
+
+function TFPgtkVSeparator.TheGtkObject : PGtkVSeparator;
+begin
+  result := PgtkVSeparator(FGtkObject);
+end;
+
+procedure TFPgtkVSeparator.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_VSeparator_new);
+end;
+
+
+ { TFPgtkPreview }
+
+function TFPgtkPreview.TheGtkObject : PGtkPreview;
+begin
+  result := PgtkPreview(FGtkObject);
+end;
+
+procedure TFPgtkPreview.CreateGtkObject;
+begin
+  FGtkObject := PGtkObject(gtk_preview_new (GTK_PREVIEW_COLOR));
+end;
+
+
+procedure TFPgtkPreview.Size (aWidth:integer; aHeight:integer);
+begin
+  gtk_preview_size (TheGtkObject, aWidth, aHeight);
+end;
+
+procedure TFPgtkPreview.Put (aWindow:PGdkWindow; gc:PGdkGC; SrcX:integer; SrcY:integer; destX:integer; DestY:integer; aWidth:integer; aHeight:integer);
+begin
+  gtk_preview_put (TheGtkObject, aWindow, gc, SrcX, SrcY, destX, DestY, aWidth, aHeight);
+end;
+
+procedure TFPgtkPreview.DrawRow (data:pguchar; X:integer; Y:integer; W:integer);
+begin
+  gtk_preview_draw_row (TheGtkObject, data, X, Y, W);
+end;
+
+procedure SetGamma (aGamma:double);
+begin
+  gtk_preview_set_gamma (aGamma);
+end;
+
+
+function TFPgtkPreview.GetExpand : longbool;
+begin
+  result := longbool(gtk.expand(TheGtkObject^));
+end;
+
+procedure TFPgtkPreview.SetExpand (TheValue:longbool);
+begin
+  gtk_preview_set_expand(TheGtkObject,gint(TheValue));
+end;
+
+function TFPgtkPreview.GetDither : TGdkRgbDither;
+begin
+  result := TheGtkObject^.dither;
+end;
+
+procedure TFPgtkPreview.SetDither (TheValue:TGdkRgbDither);
+begin
+  gtk_preview_set_dither(TheGtkObject,TheValue);
+end;
+
+ { TFPgtkProgress }
+
+function TFPgtkProgress.TheGtkObject : PGtkProgress;
+begin
+  result := PgtkProgress(FGtkObject);
+end;
+
+
+function TFPgtkProgress.GetShowtext : longbool;
+begin
+  result := longbool(gtk.show_text(TheGtkObject^));
+end;
+
+procedure TFPgtkProgress.SetShowtext (TheValue:longbool);
+begin
+  gtk_progress_set_show_text(TheGtkObject,gint(TheValue));
+end;
+
+function TFPgtkProgress.GetTextXAlign : gfloat;
+begin
+  result := TheGtkObject^.x_align;
+end;
+
+procedure TFPgtkProgress.SetTextXAlign (TheValue:gfloat);
+begin
+  gtk_progress_set_text_alignment (TheGtkObject, TheValue, TextYAlign);
+end;
+
+function TFPgtkProgress.GetTextYAlign : gfloat;
+begin
+  result := TheGtkObject^.y_align;
+end;
+
+procedure TFPgtkProgress.SetTextYAlign (TheValue:gfloat);
+begin
+  gtk_progress_set_text_alignment (TheGtkObject, TextXAlign, TheValue);
+end;
+
+procedure TFPgtkProgress.SetTextAlignment (anXalign:gfloat; anYAlign:gfloat);
+begin
+  gtk_progress_set_text_alignment (TheGtkObject, anXalign, anYAlign);
+end;
+
+function TFPgtkProgress.GetCurrentValue : float;
+begin
+  result := gtk_progress_get_Value(TheGtkObject);
+end;
+
+procedure TFPgtkProgress.SetCurrentValue (TheValue:float);
+begin
+  gtk_progress_Set_value (TheGtkObject, TheValue);
+  Draw (nil);
+end;
+
+function TFPgtkProgress.GetPercentage : float;
+begin
+  result := gtk_progress_get_current_percentage(TheGtkObject);
+end;
+
+procedure TFPgtkProgress.SetPercentage (TheValue:float);
+begin
+  gtk_progress_set_percentage(TheGtkObject,TheValue);
+end;
+
+function TFPgtkProgress.PercentageFromValue (aValue:gfloat) : gfloat;
+begin
+  result := gtk_progress_get_percentage_from_value (TheGtkObject, aValue);
+end;
+
+function TFPgtkProgress.GetFormatString : string;
+begin
+  result := TheGtkObject^.format;
+end;
+
+procedure TFPgtkProgress.SetFormatString (TheValue:string);
+begin
+  gtk_progress_set_format_string(TheGtkObject,ConvertToPgchar(TheValue));
+end;
+
+function TFPgtkProgress.GetAdjustment : TFPgtkAdjustment;
+begin
+  result := GetPascalInstance (PGtkObject(TheGtkObject^.adjustment), TFPgtkAdjustment) as TFPgtkAdjustment;
+end;
+
+procedure TFPgtkProgress.SetAdjustment (TheValue:TFPgtkAdjustment);
+begin
+  gtk_progress_set_adjustment(TheGtkObject,PGtkadjustment(ConvertToGtkObject(TheValue)));
+end;
+
+function TFPgtkProgress.GetActivityMode : longbool;
+begin
+  result := longbool(gtk.activity_mode(TheGtkObject^));
+end;
+
+procedure TFPgtkProgress.SetActivityMode (TheValue:longbool);
+begin
+  gtk_progress_set_activity_mode(TheGtkObject,gint(TheValue));
+end;
+
+function TFPgtkProgress.CurrentText : string;
+begin
+  result := gtk_progress_get_current_text (TheGtkObject);
+end;
+
+function TFPgtkProgress.TextFromValue (aValue:gfloat) : string;
+begin
+  result := gtk_progress_get_text_from_value (TheGtkObject, aValue);
+end;
+
+procedure TFPgtkProgress.Configure (aValue:gfloat; aMin:gfloat; aMax:gfloat);
+begin
+  gtk_progress_configure (TheGtkObject, aValue, aMin, aMax);
+end;
+
+ { TFPgtkProgressBar }
+
+function TFPgtkProgressBar.TheGtkObject : PGtkProgressBar;
+begin
+  result := PgtkProgressBar(FGtkObject);
+end;
+
+
+constructor TFPgtkProgressBar.Create (adj:TFPgtkAdjustment);
+begin
+  FAdj := adj;
+  inherited create;
+end;
+
+
+procedure TFPgtkProgressBar.CreateGtkObject;
+begin
+  if assigned (FAdj) then
+    TheGtkWidget := gtk_progress_bar_new_with_adjustment (FAdj.TheGtkObject)
+  else
+    TheGtkWidget := gtk_progress_bar_new;
+end;
+
+function TFPgtkProgressBar.GetBarStyle : TGtkProgressBarStyle;
+begin
+  result := TheGtkObject^.bar_style;
+end;
+
+procedure TFPgtkProgressBar.SetBarStyle (TheValue:TGtkProgressBarStyle);
+begin
+  gtk_progress_bar_set_bar_style(TheGtkObject,TheValue);
+end;
+
+function TFPgtkProgressBar.GetDiscreteBlocks : longword;
+begin
+  result := TheGtkObject^.blocks;
+end;
+
+procedure TFPgtkProgressBar.SetDiscreteBlocks (TheValue:longword);
+begin
+  gtk_progress_bar_set_discrete_blocks(TheGtkObject,TheValue);
+end;
+
+function TFPgtkProgressBar.GetActivityStep : longword;
+begin
+  result := TheGtkObject^.activity_step;
+end;
+
+procedure TFPgtkProgressBar.SetActivityStep (TheValue:longword);
+begin
+  gtk_progress_bar_set_activity_step(TheGtkObject,TheValue);
+end;
+
+function TFPgtkProgressBar.GetActivityBlocks : longword;
+begin
+  result := TheGtkObject^.activity_blocks;
+end;
+
+procedure TFPgtkProgressBar.SetActivityBlocks (TheValue:longword);
+begin
+  gtk_progress_bar_set_activity_blocks(TheGtkObject,TheValue);
+end;
+
+function TFPgtkProgressBar.GetOrientation : TGtkProgressBarOrientation;
+begin
+  result := TheGtkObject^.orientation;
+end;
+
+procedure TFPgtkProgressBar.SetOrientation (TheValue:TGtkProgressBarOrientation);
+begin
+  gtk_progress_bar_set_orientation(TheGtkObject,TheValue);
+end;
+
+ { TFPgtkItemFactory }
+
+
+INITIALIZATION
+ObjectsToFree := TList.Create;
+
+FINALIZATION
+ObjectsToFree.Free;
+if assigned (TheTooltips) then
+  TheTooltips.Free;
+
+End.

+ 1137 - 1137
packages/extra/fpgtk/fpgtkext.pp

@@ -1,1137 +1,1137 @@
-{$mode objfpc}{$h+}
-unit FPgtkExt;
-
-interface
-
-uses FPgtk, gtk, gdk, glib, sysutils, classes;
-
-{ ==== Application object ==== }
-
-type
-  TFPgtkApplication = class
-  Private
-    FMainwindow : TFPgtkWindow;
-    FMainDestroysignal : guint;
-    procedure SetMainWindow (Value:TFPgtkWindow);
-    procedure MainDestroyed (Sender:TFPgtkObject; data:pointer);
-  Public
-    constructor Create;
-    destructor Destroy; override;
-    procedure Run;
-    property Mainwindow : TFPgtkWindow read FMainwindow write SetMainwindow;
-  end;
-
-var
-  Application : TFPgtkApplication;
-
-{ ==== Extra Widgets ==== }
-
-type
-
-  TFPgtkFileEntry = class (TFPgtkHBox)
-  private
-    FEdit : TFPgtkEntry;
-    FButton : TFPgtkButton;
-    FImage : TFPgtkPixmap;
-    procedure OpenFileSelection (Sender : TFPgtkObject; data : pointer);
-    procedure CloseFileSelection (Sender:TFPgtkWindow; DialogResult:pointer; 
-                                    Action:integer; initiator:TFPgtkObject);
-    procedure SetFilename (Value : string);
-    function GetFilename : string;
-  public
-    constructor create;
-    property Edit : TFPgtkEntry read FEdit;
-    property Button : TFPgtkButton read FButton;
-    property Image : TFPgtkPixmap read FImage;
-    property Filename : string read GetFilename write SetFilename;
-  end;
-
-  TFPgtkCheckedButton = class (TFPgtkToggleButton)
-  private
-    FChecked, FUnchecked : TFPgtkPixmap;
-    procedure ChangeCheck (Sender:TFPgtkObject; data:pointer);
-  public
-    constructor Create;
-    constructor CreateWithLabel (aText:string);
-    constructor CreateWithLabel (aText:string; AccelGroup : PGtkAccelGroup);
-  end;
-
-{ ==== Widget who needs a scrollwindow ==== }
-
-type
-
-  TFPgtkScrollText = class (TFPgtkScrolledWindow)
-  private
-    FText : TFPgtkText;
-    procedure SetTooltip (Value : string);
-    function GetTooltip : string;
-    function GetUdpatePolicy : TGtkUpdateType;
-    procedure SetUpdatePolicy (Value : TGtkUpdateType);
-    function GetText : string;
-    procedure SetText (Value : string);
-    function GetLines : TStrings;
-  public
-    constructor create;
-    procedure Clear;
-    property TheText : TFPgtkText read FText;
-    property Tooltip : string read GetTooltip write SetTooltip;
-    property UpdatePolicy : TGtkUpdateType read GetUdpatePolicy write SetUpdatePolicy;
-    property Text : string read GetText write SetText;
-    property Lines : TStrings read GetLines;
-  end;
-
-  TFPgtkScrollList = class (TFPgtkScrolledWindow)
-  private
-    FList : TFPgtkList;
-  public
-    constructor create;
-    property List : TFPgtkList read FList;
-  end;
-
-  TFPgtkScrollCList = class (TFPgtkScrolledWindow)
-  private
-    FCList : TFPgtkCList;
-  public
-    constructor create (CountColumns : integer);
-    property CList : TFPgtkCList read FCList;
-  end;
-
-  TFPgtkScrollTree = class (TFPgtkScrolledWindow)
-  private
-    FTree : TFPgtkTree;
-  public
-    constructor create;
-    property Tree : TFPgtkTree read FTree;
-  end;
-
-{ ==== Message dialogs ==== }
-
-type
-  TModalResult = Low(Integer)..High(Integer);
-  
-  TMsgDlgType = (mtWarning, mtError, mtInformation, mtConfirmation, mtCustom);
-  TMsgDlgBtn = (mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore,
-                mbAll, mbNoToAll, mbYesToAll, mbHelp);
-  TMsgDlgButtons = set of TMsgDlgBtn;
-
-const
-  mbYesNo            = [mbYes,mbNo];
-  mbYesNoCancel      = [mbYes, mbNo, mbCancel];
-  mbOKCancel         = [mbOK, mbCancel];
-  mbAbortRetryIgnore = [mbAbort, mbRetry, mbIgnore];
-  
-  mrNone = 0;
-  mrOK = mrNone + 1;
-  mrCancel = mrNone + 2;
-  mrAbort = mrNone + 3;
-  mrRetry = mrNone + 4;
-  mrIgnore = mrNone + 5;
-  mrYes = mrNone + 6;
-  mrNo = mrNone + 7;
-  mrAll = mrNone + 8;
-  mrNoToAll = mrNone + 9;
-  mrYesToAll = mrNone + 10;
-                                 
-function MessageDlg(const aMsg: string; DlgType: TMsgDlgType;
-                    Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;
-                
-
-function MessageDlg(const Fmt: string; Args : Array of const; DlgType: TMsgDlgType;
-                    Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;
-                                                              
-procedure ShowMessage (const aTitle, aMessage : string);
-
-{ ==== Menu handling ==== }
-
-type
-  TAccelKeyDef = record
-    Key : guint;
-    Mods : TGdkModifierType;
-    AG : PGtkAccelGroup;
-  end;
-  PAccelKeyDef = ^TAccelKeyDef;
-
-  TAccelModifier = (amShift, amLock, amControl, amMod1, amMod2, amMod3, amMod4,
-                    amMod5, amButton1, amButton2, amButton3, amButton4, amButton5,
-                    amRelease);
-  TAccelModifiersSet = set of TAccelModifier;
-
-const
-  amAlt = amMod1;
-  gdk_Alt_mask = gdk_mod1_Mask;
-  DefaultAccelFlags : TGtkAccelFlags = GTK_ACCEL_VISIBLE;
-
-function RemoveUnderscore (s : string) : string;
-function ConvertAccelModifier (amSet : TAccelModifiersSet) : TGdkModifierType;
-function ConvertModifierType (Mods : TGdkModifierType) : TAccelModifiersSet;
-function MakeAccelKeyDef (aWindow : TFPgtkWindow; anAG : integer; aKey : guint; aMods : TGdkModifierType) : PAccelKeyDef; overload;
-function MakeAccelKeyDef (aWindow : TFPgtkWindow; anAG : integer; aKey : guint; aMods : TAccelModifiersSet) : PAccelKeyDef; overload;
-function MakeAccelKeyDef (anAG : PGtkAccelGroup; aKey : guint; aMods : TGdkModifierType) : PAccelKeyDef; overload;
-function MakeAccelKeyDef (anAG : PGtkAccelGroup; aKey : guint; aMods : TAccelModifiersSet) : PAccelKeyDef; overload;
-
-function NewMenuBar (items : array of TFPgtkMenuItem) : TFPgtkMenuBar;
-function NewMenu (ATitle : string; items : array of TFPgtkMenuItem) : TFPgtkMenu;
-
-function NewMenuItem (ACaption, AToolTip, AprivText : string; Accelerator : PAccelKeyDef;
-                      ActivateFunc : TFPgtkSignalFunction; AData : pointer) : TFPgtkMenuItem; overload;
-function NewMenuItem (ACaption, AToolTip, AprivText : string;
-                      ActivateFunc : TFPgtkSignalFunction; AData : pointer) : TFPgtkMenuItem; overload;
-function NewMenuItem (ACaption : string; Accelerator : PAccelKeyDef;
-                      ActivateFunc : TFPgtkSignalFunction; AData : pointer) : TFPgtkMenuItem; overload;
-function NewMenuItem (ACaption : string; ActivateFunc : TFPgtkSignalFunction; AData : pointer) : TFPgtkMenuItem; overload;
-function NewMenuItem (ACaption : string) : TFPgtkMenuItem; overload;
-
-function NewLine : TFPgtkMenuItem;
-function NewTearOffMenu : TFPgtkTearOffMenuItem;
-
-function NewSubMenu (ACaption, ATooltip, AprivText : string; Accelerator : PAccelKeyDef;
-                     Items : array of TFPgtkMenuItem) : TFPgtkMenuItem; Overload;
-function NewSubMenu (ACaption, ATooltip, AprivText : string;
-                     Items : array of TFPgtkMenuItem) : TFPgtkMenuItem; Overload;
-function NewSubMenu (ACaption : string; Accelerator : PAccelKeyDef;
-                     Items : array of TFPgtkMenuItem) : TFPgtkMenuItem; Overload;
-function NewSubMenu (ACaption : string; Items : array of TFPgtkMenuItem) : TFPgtkMenuItem; Overload;
-
-function NewCheckMenuItem (ACaption, AToolTip, AprivText : string; Accelerator : PAccelKeyDef;
-                      ToggledFunc : TFPgtkSignalFunction; AData : pointer) : TFPgtkCheckMenuItem; Overload;
-function NewCheckMenuItem (ACaption, AToolTip, AprivText : string;
-                      ToggledFunc : TFPgtkSignalFunction; AData : pointer) : TFPgtkCheckMenuItem; Overload;
-function NewCheckMenuItem (ACaption : string; Accelerator : PAccelKeyDef;
-                      ToggledFunc : TFPgtkSignalFunction; AData : pointer) : TFPgtkCheckMenuItem; Overload;
-function NewCheckMenuItem (ACaption : string; ToggledFunc : TFPgtkSignalFunction; AData : pointer) : TFPgtkCheckMenuItem; Overload;
-
-procedure InsertMenuItemGroup (InMenu : TFPgtkMenuShell; position : integer; MenuItems : TFPgtkItemGroup); Overload;
-procedure InsertMenuItemGroup (InMenu : TFPgtkMenuShell; position : integer;
-                 MenuItems : TFPgtkItemGroup; ActivateProc : TFPgtkSignalFunction; ActivateData : pointer); Overload;
-procedure AppendMenuItemGroup (InMenu : TFPgtkmenuShell; MenuItems : TFPgtkItemGroup); Overload;
-procedure AppendMenuItemGroup (InMenu : TFPgtkmenuShell; MenuItems : TFPgtkItemGroup;
-                               ActivateProc : TFPgtkSignalFunction; ActivateData : pointer); Overload;
-procedure PrependMenuItemGroup (InMenu : TFPgtkmenuShell; MenuItems : TFPgtkItemGroup); Overload;
-procedure PrependMenuItemGroup (InMenu : TFPgtkmenuShell; MenuItems : TFPgtkItemGroup;
-                                ActivateProc : TFPgtkSignalFunction; ActivateData : pointer); Overload;
-
-implementation
-
-resourcestring
-  rsNothingToRun = 'No main window defined, nothing to do...';
-  rsErrorTitle = 'Error occured';
-  rsMessageTitle = 'Message';
-  sErrWrongItemType = 'Items in list are not from TFPgtkMenuItem class.';
-
- { TFPgtkApplication }
-
-constructor TFPgtkApplication.Create;
-begin
-  gtk_init (@argc, @argv);
-  inherited create;
-  FMainWindow := nil;
-end;
-
-destructor TFPgtkApplication.Destroy;
-begin
-  if assigned (FMainWindow) then
-    FMainWindow.Free;
-  gtk_Exit (0);
-  inherited;
-end;
-
-procedure TFPgtkApplication.SetMainWindow (Value : TFPgtkWindow);
-begin
-  if FMainWindow <> Value then
-    begin
-    if assigned (FMainWindow) and (FMainDestroySignal > 0) then
-      FMainWindow.signalDisconnect (FMainDestroySignal);
-    FMainWindow := Value;
-    if Assigned (Value) then
-      FMainDestroySignal := FMainWindow.ConnectDestroy (@MainDestroyed, nil);
-    end;
-end;
-
-procedure TFPgtkApplication.MainDestroyed (Sender:TFPgtkObject; data:pointer);
-begin
-  FMainWindow := nil;
-  FMainDestroySignal := 0;
-  gtk_main_quit;
-end;
-
-procedure TFPgtkApplication.Run;
-begin
-  if assigned (FMainWindow) then
-    while assigned (FMainWindow) do
-      try
-        FMainWindow.execute (nil, nil, nil);
-        //gtk_main;
-        FreeFPgtkObjects (nil);
-      except
-        on e : exception do
-          ShowMessage (rsErrorTitle, e.message);
-      end
-  else
-    ShowMessage (rsMessageTitle, rsNothingToRun);
-end;
-
-{ TFPgtkScrollText }
-
-constructor TFPgtkScrollText.create;
-begin
-  inherited create (nil,nil);
-  FText := TFPgtkText.Create;
-  Add (FText);
-  HPolicy := Gtk_Policy_Never;
-end;
-
-function TFPgtkScrollText.GetTooltip : string;
-begin
-  result := inherited Tooltip;
-end;
-
-procedure TFPgtkScrollText.SetTooltip (Value : string);
-begin
-  TheText.Tooltip := Value;
-  inherited Tooltip := Value;
-end;
-
-function TFPgtkScrollText.GetUdpatePolicy : TGtkUpdateType;
-begin
-  result := VScrollbar.UpdatePolicy;
-end;
-
-procedure TFPgtkScrollText.Clear;
-begin
-  if assigned(TheText) then
-    TheText.Clear;
-end;
-
-procedure TFPgtkScrollText.SetUpdatePolicy (Value : TGtkUpdateType);
-begin
-  VScrollbar.UpdatePolicy := Value;
-  {$ifndef gtkwin}
-  HScrollbar.UpdatePolicy := Value;
-  {$endif}
-end;
-
-function TFPgtkScrollText.GetText : string;
-begin
-  if assigned(TheText) then
-    begin
-    result := TheText.Text;
-    end
-  else
-    begin
-    result := '';
-    end;
-end;
-
-procedure TFPgtkScrollText.SetText (Value : string);
-begin
-  if assigned (TheText) then
-    TheText.Text := Value;
-end;
-
-function TFPgtkScrollText.GetLines : TStrings;
-begin
-  if assigned (TheText) then
-    result := TheText.Lines
-  else
-    result := nil;
-end;
-
-{ TFPgtkScrollList }
-
-constructor TFPgtkScrollList.create;
-begin
-  inherited create (nil, nil);
-  setusize (100, 40);
-  FList := TFPgtkList.Create;
-  AddWithViewport (FList);
-end;
-
-{ TFPgtkScrollCList }
-
-constructor TFPgtkScrollCList.create (CountColumns : integer);
-begin
-  inherited create (nil, nil);
-  setusize (100, 40);
-  FCList := TFPgtkCList.Create (CountColumns);
-  Add (FCList);
-end;
-
-{ TFPgtkScrollTree }
-
-constructor TFPgtkScrollTree.create;
-begin
-  inherited create (nil, nil);
-  FTree := TFPgtkTree.Create;
-  AddWithViewport (FTree);
-  FTree.Show;
-end;
-
-{ Menu functions }
-
-function RemoveUnderscore (s : string) : string;
-begin
-  result := stringreplace (s, '_', '', [rfReplaceAll]);
-end;
-
-type
-  TFPgtkMenuItemType = class of TFPgtkMenuItem;
-
-function MakeAccelKeyDef (aWindow : TFPgtkWindow; anAG : integer; aKey : guint; aMods : TGdkModifierType) : PAccelKeyDef;
-begin
-  new (result);
-  with result^ do
-    begin
-    AG := aWindow.AccelGroups[anAG];
-    Key := aKey;
-    Mods := aMods;
-    end;
-end;
-
-function MakeAccelKeyDef (aWindow : TFPgtkWindow; anAG : integer; aKey : guint; aMods : TAccelModifiersSet) : PAccelKeyDef;
-begin
-  new (result);
-  with result^ do
-    begin
-    AG := aWindow.AccelGroups[anAG];
-    Key := aKey;
-    Mods := ConvertAccelModifier (aMods);
-    end;
-end;
-
-function MakeAccelKeyDef (anAG : PGtkAccelGroup; aKey : guint; aMods : TGdkModifierType) : PAccelKeyDef;
-begin
-  new (result);
-  with result^ do
-    begin
-    AG := anAG;
-    Key := aKey;
-    Mods := aMods;
-    end;
-end;
-
-function MakeAccelKeyDef (anAG : PGtkAccelGroup; aKey : guint; aMods : TAccelModifiersSet) : PAccelKeyDef;
-begin
-  new (result);
-  with result^ do
-    begin
-    AG := anAG;
-    Key := aKey;
-    Mods := ConvertAccelModifier (aMods);
-    end;
-end;
-
-function ConvertAccelModifier (amSet : TAccelModifiersSet) : TGdkModifierType;
-var am : TAccelModifier;
-begin
-  result := 0;
-  for am := low(TAccelModifier) to high (TAccelModifier) do
-    if am in amSet then
-      result := result + (1 shl ord(am));
-end;
-
-function ConvertModifierType (Mods : TGdkModifierType) : TAccelModifiersSet;
-var am : TAccelModifier;
-begin
-  result := [];
-  for am := low(TAccelModifier) to high (TAccelModifier) do
-    if (Mods and (1 shl ord(am))) <> 0 then
-      result := result + [am];
-end;
-
-function NewMenuBar (items : array of TFPgtkMenuItem) : TFPgtkMenuBar;
-var r : integer;
-begin
-  result := TFPgtkMenuBar.Create;
-  with result do
-    for r := low(items) to high (items) do
-      append (items[r]);
-end;
-
-function NewMenu (ATitle : string; items : array of TFPgtkMenuItem) : TFPgtkMenu;
-var r : integer;
-    AG : PGtkAccelGroup;
-    m : TFPgtkMenuItem;
-begin
-  result := TFPgtkMenu.Create;
-  with result do
-    begin
-    Title := ATitle;
-    ag := AccelGroup;
-    for r := low(items) to high(items) do
-      begin
-      m := items[r];
-      Append (m);
-      if m.AccelKey <> 0 then
-        m.AcceleratorAdd (AG, sgActivateItem, m.AccelKey, 0, TGtkAccelFlags(0));
-      end;
-    end;
-end;
-
-function CreateMenuItem (Atype : TFPgtkMenuItemType; ACaption, ATooltip,
-                         APrivText : string; Accelerator : PAccelKeyDef) : TFPgtkMenuItem;
-begin
-  result := AType.CreateWithLabel (ACaption);
-  if (ATooltip <> '') or (APrivText <> '') then
-    result.Tooltip := ComposeTooltip (ATooltip, APrivText);
-  if assigned(accelerator) then
-    begin
-    with Accelerator^ do
-      result.AcceleratorAdd (AG, sgActivateItem, Key, Mods, DefaultAccelFlags);
-    dispose (Accelerator);
-    end;
-end;
-
-function NewMenuItem (ACaption, AToolTip, AprivText : string; Accelerator : PAccelKeyDef;
-                      ActivateFunc : TFPgtkSignalFunction; AData : pointer) : TFPgtkMenuItem;
-begin
-  result := CreateMenuItem (TFPgtkMenuItem, ACaption, ATooltip, APrivtext, Accelerator);
-  if assigned (ActivateFunc) then
-    result.ConnectActivate (ActivateFunc, AData);
-end;
-
-function NewMenuItem (ACaption, AToolTip, AprivText : string;
-                      ActivateFunc : TFPgtkSignalFunction; AData : pointer) : TFPgtkMenuItem;
-begin
-  result := NewMenuItem (aCaption, aTooltip, aPrivText, nil, ActivateFunc, aData);
-end;
-
-function NewMenuItem (ACaption : string; Accelerator : PAccelKeyDef;
-                      ActivateFunc : TFPgtkSignalFunction; AData : pointer) : TFPgtkMenuItem;
-begin
-  result := NewMenuItem (aCaption, '', '', Accelerator, ActivateFunc, aData);
-end;
-
-function NewMenuItem (ACaption : string; ActivateFunc : TFPgtkSignalFunction; AData : pointer) : TFPgtkMenuItem;
-begin
-  result := NewMenuItem (aCaption, '', '', nil, ActivateFunc, aData);
-end;
-
-function NewMenuItem (ACaption : string) : TFPgtkMenuItem;
-begin
-  result := NewMenuItem (aCaption, '', '', nil, nil, nil);
-end;
-
-function NewLine : TFPgtkMenuItem;
-begin
-  result := TFPgtkMenuItem.Create;
-end;
-
-function NewTearOffMenu : TFPgtkTearOffMenuItem;
-begin
-  result := TFPgtkTearOffMenuItem.create;
-end;
-
-function NewSubMenu (ACaption, ATooltip, AprivText : string; Accelerator : PAccelKeyDef;
-                     Items : array of TFPgtkMenuItem) : TFPgtkMenuItem;
-begin
-  result := CreateMenuItem (TFPgtkMenuItem, ACaption, ATooltip, APrivText, Accelerator);
-  result.SetSubmenu (NewMenu ('', Items));
-end;
-
-function NewSubMenu (ACaption, ATooltip, AprivText : string;
-                     Items : array of TFPgtkMenuItem) : TFPgtkMenuItem;
-begin
-  result := NewSubMenu (aCaption, aTooltip, aPrivText, nil, Items);
-end;
-
-function NewSubMenu (ACaption : string; Accelerator : PAccelKeyDef;
-                     Items : array of TFPgtkMenuItem) : TFPgtkMenuItem;
-begin
-  result := NewSubMenu (aCaption, '', '', Accelerator, Items);
-end;
-
-function NewSubMenu (ACaption : string; Items : array of TFPgtkMenuItem) : TFPgtkMenuItem;
-begin
-  result := NewSubMenu (aCaption, '', '', nil, Items);
-end;
-
-function NewCheckMenuItem (ACaption, AToolTip, AprivText : string; Accelerator : PAccelKeyDef;
-                      ToggledFunc : TFPgtkSignalFunction; AData : pointer) : TFPgtkCheckMenuItem;
-begin
-  result := TFPgtkCheckMenuItem(CreateMenuItem (TFPgtkCheckMenuItem, ACaption, ATooltip, APrivText, Accelerator));
-  if assigned (ToggledFunc) then
-    Result.ConnectToggled (ToggledFunc, AData);
-end;
-
-function NewCheckMenuItem (ACaption, AToolTip, AprivText : string;
-                      ToggledFunc : TFPgtkSignalFunction; AData : pointer) : TFPgtkCheckMenuItem;
-begin
-  result := NewCheckMenuItem (aCaption, aToolTip, aPrivText, nil, ToggledFunc, AData);
-end;
-
-function NewCheckMenuItem (ACaption : string; Accelerator : PAccelKeyDef;
-                      ToggledFunc : TFPgtkSignalFunction; AData : pointer) : TFPgtkCheckMenuItem;
-begin
-  result := NewCheckMenuItem (aCaption, '', '', Accelerator, ToggledFunc, AData);
-end;
-
-function NewCheckMenuItem (ACaption : string; ToggledFunc : TFPgtkSignalFunction; AData : pointer) : TFPgtkCheckMenuItem;
-begin
-  result := NewCheckMenuItem (aCaption, '', '', nil, ToggledFunc, AData);
-end;
-
-procedure InsertMenuItemGroup (InMenu : TFPgtkMenuShell; position : integer; MenuItems : TFPgtkItemGroup);
-begin
-  InsertMenuItemGroup (InMenu, position, MenuItems, nil, nil);
-end;
-
-procedure InsertMenuItemGroup (InMenu : TFPgtkMenuShell; position : integer;
-                 MenuItems : TFPgtkItemGroup; ActivateProc : TFPgtkSignalFunction; ActivateData : pointer);
-var r : integer;
-begin
-  if (MenuItems.count > 0) then
-    if (MenuItems.items[0] is TFPgtkMenuItem) then
-      with InMenu do
-        for r := MenuItems.count-1 downto 0 do
-          begin
-          if assigned(ActivateProc) then
-            if assigned (ActivateData) then
-              TFPgtkMenuItem(MenuItems.items[r]).ConnectActivate (ActivateProc, ActivateData)
-            else
-              TFPgtkMenuItem(MenuItems.items[r]).ConnectActivate (ActivateProc, inttopointer(r));
-          Insert (TFPgtkMenuItem(MenuItems.items[r]), position);
-          end
-    else
-      raise FPgtkException.Create (sErrWrongItemType);
-end;
-
-procedure AppendMenuItemGroup (InMenu : TFPgtkmenuShell; MenuItems : TFPgtkItemGroup);
-begin
-  AppendMenuItemGroup (InMenu, MenuItems, nil, nil);
-end;
-
-procedure AppendMenuItemGroup (InMenu : TFPgtkmenuShell; MenuItems : TFPgtkItemGroup;
-                                ActivateProc : TFPgtkSignalFunction; ActivateData : pointer);
-var r : integer;
-begin
-  if (MenuItems.count > 0) then
-    if MenuItems.items[0] is TFPgtkMenuItem then
-      with InMenu do
-        for r := 0 to MenuItems.count-1 do
-          begin
-          if assigned(ActivateProc) then
-            if assigned (ActivateData) then
-              TFPgtkMenuItem(MenuItems.items[r]).ConnectActivate (ActivateProc, ActivateData)
-            else
-              TFPgtkMenuItem(MenuItems.items[r]).ConnectActivate (ActivateProc, inttopointer(r));
-          Append (TFPgtkMenuItem(MenuItems.items[r]));
-          end
-    else
-      raise FPgtkException.Create (sErrWrongItemType);
-end;
-
-procedure PrependMenuItemGroup (InMenu : TFPgtkmenuShell; MenuItems : TFPgtkItemGroup);
-begin
-  PrependMenuItemGroup (InMenu, MenuItems, nil, nil);
-end;
-
-procedure PrependMenuItemGroup (InMenu : TFPgtkmenuShell; MenuItems : TFPgtkItemGroup;
-                                ActivateProc : TFPgtkSignalFunction; ActivateData : pointer);
-var r : integer;
-begin
-  if (MenuItems.count > 0) then
-    if MenuItems.items[0] is TFPgtkMenuItem then
-      with InMenu do
-        for r := MenuItems.count-1 downto 0 do
-          begin
-          if assigned(ActivateProc) then
-            if assigned (ActivateData) then
-              TFPgtkMenuItem(MenuItems.items[r]).ConnectActivate (ActivateProc, ActivateData)
-            else
-              TFPgtkMenuItem(MenuItems.items[r]).ConnectActivate (ActivateProc, inttopointer(r));
-          Prepend (TFPgtkMenuItem(MenuItems.items[r]));
-          end
-    else
-      raise FPgtkException.Create (sErrWrongItemType);
-end;
-
-{ TFileEntryDialog }
-
-type
-  TFileEntryDialog = class (TFPgtkFileSelection)
-  public
-    constructor create (AType:TGtkWindowType);
-    procedure DoDialogInit (InitData : pointer); override;
-  end;
-
-  PFileEntryData = ^TFileEntryData;
-  TFileEntryData = record
-    aFilename : string;
-  end;
-
-constructor TFileEntryDialog.Create (AType:TGtkWindowType);
-begin
-  inherited;
-  OKButton.ConnectClicked (@CloseWithResult, inttopointer(drOk));
-  CancelButton.ConnectClicked (@CloseWindow, nil);
-end;
-
-procedure TFileEntryDialog.DoDialogInit (InitData : pointer);
-begin
-  with PFileEntryData(InitData)^ do
-    Filename := aFilename;
-end;
-
-{ TFPgtkFileEntry }
-
-const
-  FileEntryXPM =
-      '16 13 4 1'#13#10+
-      '. c None'#13#10+     // no color
-      '# c #000000'#13#10+  // black
-      'y c #ffff00'#13#10+  // yellow
-      'g c #AFAF00'#13#10+  // grayed yellow
-      '.......#####....'#13#10+
-      '............#.#.'#13#10+
-      '.............##.'#13#10+
-      '..####......###.'#13#10+
-      '##yyyy#####.....'#13#10+
-      '#yyyyyyyyy#.....'#13#10+
-      '#yyyyyyyyy#.....'#13#10+
-      '#yyyy###########'#13#10+
-      '#yyy#ggggggggg#.'#13#10+
-      '#yy#ggggggggg#..'#13#10+
-      '#y#ggggggggg#...'#13#10+
-      '##ggggggggg#....'#13#10+
-      '###########.....';
-
-var
-  DefFileEntryPixmap : PGdkPixmap;
-  DefFileEntryBitmask : PGdkBitmap;
-
-constructor TFPgtkFileEntry.create;
-begin
-  inherited;
-  FEdit := TFPgtkEntry.Create;
-  FButton := TFPgtkButton.Create;
-  FImage := TFPgtkPixMap.Create;
-  with FImage do
-    if assigned (DefFileEntryPixmap) then
-      SetPixmap (DefFileEntryPixmap, DefFileEntryBitmask)
-    else
-      begin
-      loadfromtext (FileEntryXPM);
-      GetPixmap (DefFileEntryPixmap, DefFileEntryBitmask);
-      end;
-  with FButton do
-    begin
-    Add (FImage);
-    ConnectClicked (@OpenFileSelection, self);
-    end;
-  PackStart (FEdit, true, true, 0);
-  PackStart (FButton, false, true, 0);
-end;
-
-procedure TFPgtkFileEntry.SetFilename (Value : string);
-begin
-  FEdit.Text := Value;
-end;
-
-function TFPgtkFileEntry.GetFilename : string;
-begin
-  result := FEdit.Text;
-end;
-
-procedure TFPgtkFileEntry.OpenFileSelection (Sender : TFPgtkObject; data : pointer);
-var d : TFileEntryData;
-begin
-  d.aFilename := Filename;
-  with TFileEntryDialog.Create(gtk_window_dialog) do
-    Execute (nil, @d, @CloseFileSelection);
-end;
-
-procedure TFPgtkFileEntry.CloseFileSelection (Sender:TFPgtkWindow; DialogResult:pointer; 
-                                    Action:integer; initiator:TFPgtkObject);
-begin
-  if action = drOk then
-    Filename := (Sender as TFileEntryDialog).Filename;
-end;
-
-{ TFPgtkCheckedButton }
-
-const
-  XPMChecked : array [0..17] of ansistring = (
-          '15 13 4 1',
-          '. c None',      // None
-          '# c #000000',   // Black
-          '- c #FFFFFF',   // White
-          'o c #0000FF',   // Blue
-          '..............o',
-          '.............o-',
-          '............o-.',
-          '..########.o-..',
-          '..#......#o-...',
-          '..#......o-....',
-          '..o-....oo-....',
-          '.ooo-..oo-.....',
-          '..ooo-oo-#.....',
-          '..#oooo-.#.....',
-          '..##ooo-##.....',
-          '.....o-........',
-          '...............');
-
-  XPMUnChecked : array [0..17] of ansistring = (
-          '15 13 4 1',
-          '. c None',      // None
-          '# c #000000',   // Black
-          '- c #FFFFFF',   // White
-          'o c #0000FF',   // Blue
-          '...............',
-          '...............',
-          '...............',
-          '..########.....',
-          '..#......#.....',
-          '..#......#.....',
-          '..#......#.....',
-          '..#......#.....',
-          '..#......#.....',
-          '..#......#.....',
-          '..########.....',
-          '...............',
-          '...............');
-
-var
-  DefChecked, DefUnchecked : PGdkPixmap;
-  DefCheckedBM, DefUncheckedBM : PGdkBitmap;
-
-procedure TFPgtkCheckedButton.ChangeCheck (Sender:TFPgtkObject; data:pointer);
-var b : boolean;
-begin
-  b := Active;
-  FChecked.visible := b;
-  FUnchecked.visible := not b;
-end;
-
-constructor TFPgtkCheckedButton.CreateWithLabel (aText:string);
-begin
-  create;
-  Text := aText;
-end;
-
-constructor TFPgtkCheckedButton.CreateWithLabel (aText:string; AccelGroup : PGtkAccelGroup);
-begin
-  create;
-  Text := aText;
-  if (AccelKey <> 0) and assigned(AccelGroup) then
-    AcceleratorAdd (AccelGroup, sgClicked, AccelKey, DefaultButtonModifiers, GTK_ACCEL_Visible);
-end;
-
-constructor TFPgtkCheckedButton.create;
-begin
-  inherited;
-  DrawIndicator := False;
-  AddContainer := TFPgtkHBox.Create;
-  Add (AddContainer);
-  FChecked := TFPgtkPixMap.Create;
-  with FChecked do
-    if assigned (DefChecked) then
-      SetPixmap (DefChecked, DefCheckedBM)
-    else
-      begin
-      loadfromArray (XPMChecked);
-      GetPixmap (DefChecked, DefCheckedBM);
-      end;
-  FUnchecked := TFPgtkPixMap.Create;
-  with FUnchecked do
-    if assigned (DefUnchecked) then
-      SetPixmap (DefUnchecked, DefUncheckedBM)
-    else
-      begin
-      loadfromArray (XPMUnchecked);
-      GetPixmap (DefUnchecked, DefUncheckedBM);
-      end;
-  with TFPgtkBox(AddContainer) do
-    begin
-    PackStart (FChecked, false, false, 0);
-    PackStart (FUnChecked, false, false, 0);
-    end;
-  ChangeCheck (self, nil);
-  ConnectToggled (@ChangeCheck, nil);
-end;
-
-{ ShowMessage }
-
-resourcestring
-  rsOk = '   Ok   ';
-
-function MessageWindow (aTitle, aMessage : string) : TFPgtkWindow;
-var b : TFPgtkBox;
-    but : TFPgtkButton;
-    l : TFPgtkLabel;
-    AG : integer;
-    bb : TFPgtkButtonBox;
-begin
-  result := TFPgtkWindow.create (gtk_window_dialog);
-
-  result.setDefaultSize (200,25);
-  result.title := aTitle;
-
-  AG := result.AccelGroupNew;
-
-  b := TFPgtkVBox.create;
-  b.Homogeneous := false;
-  b.border := 15;
-  b.spacing := 15;
-
-  l := TFPgtkLabel.Create (aMessage);
-  b.Packstart (l, true, true, 0); // Text to show
-
-  bb := TFPgtkHButtonBox.create;
-  bb.Layout := GTK_BUTTONBOX_DEFAULT_STYLE;
-  b.PackEnd (bb, false, false, 0);
-
-  but := TFPgtkButton.CreateWithLabel (rsOk);                 // Ok button to close
-  but.ConnectClicked (@(result.CloseWindow), nil);
-  result.AcceleratorAdd (AG, but, sgClicked, gdk_Cancel, 0, TGTKAccelFlags(0));
-  result.AcceleratorAdd (AG, but, sgClicked, gdk_Return, 0, TGTKAccelFlags(0));
-  bb.add (but);
-
-  result.Add (b);
-end;
-
-procedure ShowMessage (const aTitle, aMessage : string);
-begin
-  with MessageWindow (aTitle, aMessage) do
-    Execute (nil, nil, nil);
-end;
-
-{ MessageDialog }
-
-type
-  TMessageDialogWindow = Class(TFPgtkWindow)
-    FImage : TFPGtkPixMap;
-    FLabel : TFPGtkLabel;
-    FLTable : TFPgtkTable;
-    FVBox : TFPgtkVBox;
-    FButtonBox: TFPgtkButtonBox;
-    Constructor Create(AMsg:String; DlgType:TMsgDlgType; Buttons: TMsgDlgButtons);
-    Procedure CreateButtons(Buttons: TMsgDlgButtons);
-  end;
-
-const
-
-IMGInfo : Array[1..37] of string = ('32 32 4 1',
-  '. c None',
-  '  c None',
-  'a c #ffffff', //#c3c3c3',
-  '# c #0000ff',
-  '............#######.............',
-  '.........###aaaaaaa###..........',
-  '.......##aaaaaaaaaaaaa##........',
-  '......#aaaaaaa###aaaaaaa#.......',
-  '.....#aaaaaaa#####aaaaaaa#......',
-  '....#aaaaaaa#######aaaaaaa#.....',
-  '...#aaaaaaaa#######aaaaaaaa#....',
-  '..#aaaaaaaaa#######aaaaaaaaa#...',
-  '..#aaaaaaaaaa#####aaaaaaaaaa#...',
-  '.#aaaaaaaaaaaa###aaaaaaaaaaaa#..',
-  '.#aaaaaaaaaaaaaaaaaaaaaaaaaaa#..',
-  '.#aaaaaaaaaaa#####aaaaaaaaaaa#..',
-  '#aaaaaaaaaaaa#####aaaaaaaaaaaa#.',
-  '#aaaaaaaaaaaa#####aaaaaaaaaaaa#.',
-  '#aaaaaaaaaaaa#####aaaaaaaaaaaa#.',
-  '#aaaaaaaaaaaa#####aaaaaaaaaaaa#.',
-  '#aaaaaaaaaaaa#####aaaaaaaaaaaa#.',
-  '#aaaaaaaaaaaa#####aaaaaaaaaaaa#.',
-  '#aaaaaaaaaaaa#####aaaaaaaaaaaa#.',
-  '.#aaaaaaaaaaa#####aaaaaaaaaaa#..',
-  '.#aaaaaaaaaaa#####aaaaaaaaaaa#..',
-  '.#aaaaaaaaaa#######aaaaaaaaaa#..',
-  '..#aaaaaaaaa#######aaaaaaaaa#...',
-  '..#aaaaaaaaa#######aaaaaaaaa#...',
-  '...#aaaaaaaaaaaaaaaaaaaaaaa#....',
-  '....#aaaaaaaaaaaaaaaaaaaaa#.....',
-  '.....#aaaaaaaaaaaaaaaaaaa#......',
-  '......#aaaaaaaaaaaaaaaaa#.......',
-  '.......##aaaaaaaaaaaaa##........',
-  '.........###aaaaaaa###..........',
-  '............#######.............',
-  '................................');
-
-IMGWarning :Array[1..37] of string = ('32 32 4 1',
-  '# c #000000',
-  'b c #9c999c',
-  '. c None',
-  'a c #ffff00',
-  '.............###................',
-  '............#aaa#...............',
-  '...........#aaaaa#b.............',
-  '...........#aaaaa#bb............',
-  '..........#aaaaaaa#bb...........',
-  '..........#aaaaaaa#bb...........',
-  '.........#aaaaaaaaa#bb..........',
-  '.........#aaaaaaaaa#bb..........',
-  '........#aaaaaaaaaaa#bb.........',
-  '........#aaaa###aaaa#bb.........',
-  '.......#aaaa#####aaaa#bb........',
-  '.......#aaaa#####aaaa#bb........',
-  '......#aaaaa#####aaaaa#bb.......',
-  '......#aaaaa#####aaaaa#bb.......',
-  '.....#aaaaaa#####aaaaaa#bb......',
-  '.....#aaaaaa#####aaaaaa#bb......',
-  '....#aaaaaaaa###aaaaaaaa#bb.....',
-  '....#aaaaaaaa###aaaaaaaa#bb.....',
-  '...#aaaaaaaaa###aaaaaaaaa#bb....',
-  '...#aaaaaaaaaa#aaaaaaaaaa#bb....',
-  '..#aaaaaaaaaaa#aaaaaaaaaaa#bb...',
-  '..#aaaaaaaaaaaaaaaaaaaaaaa#bb...',
-  '.#aaaaaaaaaaaa##aaaaaaaaaaa#bb..',
-  '.#aaaaaaaaaaa####aaaaaaaaaa#bb..',
-  '#aaaaaaaaaaaa####aaaaaaaaaaa#bb.',
-  '#aaaaaaaaaaaaa##aaaaaaaaaaaa#bb.',
-  '#aaaaaaaaaaaaaaaaaaaaaaaaaaa#bbb',
-  '#aaaaaaaaaaaaaaaaaaaaaaaaaaa#bbb',
-  '.#aaaaaaaaaaaaaaaaaaaaaaaaa#bbbb',
-  '..#########################bbbbb',
-  '....bbbbbbbbbbbbbbbbbbbbbbbbbbb.',
-  '.....bbbbbbbbbbbbbbbbbbbbbbbbb..');
-
-IMGError : Array[1..37] of string = ('32 32 4 1',
-  '. c None',
-  'b c #808080',
-  '# c #c00000',
-  'a c #ffffff',
-  '................................',
-  '................................',
-  '................................',
-  '............#######.............',
-  '...........###########..........',
-  '........###############.........',
-  '.......##################.......',
-  '......####################......',
-  '.....###aa############aa###.....',
-  '.....###aaa##########aaa###.....',
-  '....#####aaa########aaa#####....',
-  '....######aaa######aaa######....',
-  '...########aaa####aaa########...',
-  '...#########aaa##aaa#########b..',
-  '...##########aaaaaa##########b..',
-  '...###########aaaa###########b..',
-  '...###########aaaa###########b..',
-  '...##########aaaaaa##########b..',
-  '...#########aaa##aaa#########b..',
-  '...########aaa####aaa#######bb..',
-  '....######aaa######aaa######bb..',
-  '.....####aaa########aaa#####bb..',
-  '.....###aaa##########aaa###bbb..',
-  '.....###aa############aa##bbb...',
-  '......####################bb....',
-  '.......##################bb.....',
-  '.........###############bb......',
-  '..........###########bbbb.......',
-  '.............#######bbb.........',
-  '................................',
-  '................................',
-  '................................');
-
-IMGConfirmation : Array[1..37] of string = ('32 32 4 1',
-  '. c None',
-  'b c #808080',
-  'a c #c00000',
-  '# c #ffffff',
-  '................................',
-  '................................',
-  '................................',
-  '................................',
-  '.............######.............',
-  '..........###########...........',
-  '.........##############.........',
-  '........################........',
-  '.......##################.......',
-  '......########aaaaa#######......',
-  '.....########aaaaaaa#######.....',
-  '.....#######aa#####aa######.....',
-  '.....#######a######aa#######....',
-  '....###############aa#######b...',
-  '....###############aa#######bb..',
-  '....##############aa########bb..',
-  '....#############aa#########bb..',
-  '....############aa##########bb..',
-  '....###########aa###########bb..',
-  '.....##########aa##########bbb..',
-  '.....##########aa##########bbb..',
-  '.....##########aa##########bb...',
-  '......#########aa#########bb....',
-  '.......##################bbb....',
-  '........#######aa#######bbb.....',
-  '.........######aa######bbb......',
-  '...........###########bbb.......',
-  '.............######bbbbb........',
-  '................................',
-  '................................',
-  '................................',
-  '................................');
-
-
-Constructor TMessageDialogWindow.Create(AMsg : String;DlgType:TMsgDlgType;Buttons: TMsgDlgButtons);
-const
-  OH = GTK_FILL OR GTK_EXPAND;
-begin
-  Inherited Create(GTK_WINDOW_DIALOG);
-  FVBox:=TFPGtkVBox.Create;
-  FVBox.Spacing:=4;
-  FVBox.Border:=8;
-  Add(FVBox);
-  FLTable:=TFpgtkTable.Create(10,1);
-  if DlgType <> mtCustom then
-    begin
-    FImage:=TFPGtkPixMap.Create;
-    With FImage do
-      Case DlgType of
-        mtInformation  : LoadFromArray(Imginfo);
-        mtWarning      : LoadFromArray(imgWarning);
-        mtConfirmation : LoadFromArray(imgConfirmation);
-        mtError        : LoadFromArray(imgError);
-      end;
-    FLTable.Attach(FImage,1,2,0,1,OH,OH,0,0);
-    end;
-  FLabel:=TFPGtkLabel.Create(Amsg);
-  FLTable.Attach(FLabel,4,9,0,1,OH,OH,0,0);
-  FButtonBox:=TFPgtkHButtonBox.Create;
-  with FButtonBox do
-    begin
-    Layout := GTK_BUTTONBOX_DEFAULT_STYLE;
-    spacing := 4;
-    end;
-  CreateButtons(Buttons);
-  FVBox.PackStart(FLTable,false,False,8);
-  FVBox.PackStart(FButtonBox,false,False,8);
-end;
-
-Const 
-  ButtonText : Array[TMsgDlgBtn] of string  =
-       ('Yes', 'No', 'OK', 'Cancel','Abort', 'Retry', 'Ignore',
-        'All', 'NoToAll', 'YesToAll', 'Help');
-  ButtonResult : array [TMsgDlgbtn] of TModalResult =
-       (mrYes, mrNo, mrOK, mrCAncel, mrAbort, mrRetry, mrIgnore, 
-        mrAll, mrNoToAll, mrYesToAll, 0);
-                         
-Procedure TMessageDialogWindow.CreateButtons(Buttons: TMsgDlgButtons);
-Var
-  b : TMsgDlgBtn;
-  bw : TFPGtkButton;
-begin
-  For B:=Low(TMsgDlgBtn) to high(TMsgDlgBtn) do
-    If b in Buttons then
-      begin
-      BW:=TFPGtkButton.CreateWithLabel(ButtonText[b]);
-      BW.ConnectClicked(@CloseWithResult,IntToPointer(ButtonResult[b]));
-      BW.Setusize(50,25);
-      FButtonBox.PackStart(BW,False,False,4);
-      end;
-end;
-
-function MessageDlg(const aMsg: string; DlgType: TMsgDlgType;
-                    Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;
-begin
-  With TMessageDialogWindow.Create(AMsg,DlgType,Buttons) do
-    Result:=Execute(Nil,Nil,Nil);
-end;  
-
-function MessageDlg(const Fmt: string; Args : Array of const; DlgType: TMsgDlgType;
-                    Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;
-begin
-  Result:=MessageDlg(Format(Fmt,Args),Dlgtype,Buttons,HelpCtx);
-end;
-
-end.
+{$mode objfpc}{$h+}
+unit FPgtkExt;
+
+interface
+
+uses FPgtk, gtk, gdk, glib, sysutils, classes;
+
+{ ==== Application object ==== }
+
+type
+  TFPgtkApplication = class
+  Private
+    FMainwindow : TFPgtkWindow;
+    FMainDestroysignal : guint;
+    procedure SetMainWindow (Value:TFPgtkWindow);
+    procedure MainDestroyed (Sender:TFPgtkObject; data:pointer);
+  Public
+    constructor Create;
+    destructor Destroy; override;
+    procedure Run;
+    property Mainwindow : TFPgtkWindow read FMainwindow write SetMainwindow;
+  end;
+
+var
+  Application : TFPgtkApplication;
+
+{ ==== Extra Widgets ==== }
+
+type
+
+  TFPgtkFileEntry = class (TFPgtkHBox)
+  private
+    FEdit : TFPgtkEntry;
+    FButton : TFPgtkButton;
+    FImage : TFPgtkPixmap;
+    procedure OpenFileSelection (Sender : TFPgtkObject; data : pointer);
+    procedure CloseFileSelection (Sender:TFPgtkWindow; DialogResult:pointer; 
+                                    Action:integer; initiator:TFPgtkObject);
+    procedure SetFilename (Value : string);
+    function GetFilename : string;
+  public
+    constructor create;
+    property Edit : TFPgtkEntry read FEdit;
+    property Button : TFPgtkButton read FButton;
+    property Image : TFPgtkPixmap read FImage;
+    property Filename : string read GetFilename write SetFilename;
+  end;
+
+  TFPgtkCheckedButton = class (TFPgtkToggleButton)
+  private
+    FChecked, FUnchecked : TFPgtkPixmap;
+    procedure ChangeCheck (Sender:TFPgtkObject; data:pointer);
+  public
+    constructor Create;
+    constructor CreateWithLabel (aText:string);
+    constructor CreateWithLabel (aText:string; AccelGroup : PGtkAccelGroup);
+  end;
+
+{ ==== Widget who needs a scrollwindow ==== }
+
+type
+
+  TFPgtkScrollText = class (TFPgtkScrolledWindow)
+  private
+    FText : TFPgtkText;
+    procedure SetTooltip (Value : string);
+    function GetTooltip : string;
+    function GetUdpatePolicy : TGtkUpdateType;
+    procedure SetUpdatePolicy (Value : TGtkUpdateType);
+    function GetText : string;
+    procedure SetText (Value : string);
+    function GetLines : TStrings;
+  public
+    constructor create;
+    procedure Clear;
+    property TheText : TFPgtkText read FText;
+    property Tooltip : string read GetTooltip write SetTooltip;
+    property UpdatePolicy : TGtkUpdateType read GetUdpatePolicy write SetUpdatePolicy;
+    property Text : string read GetText write SetText;
+    property Lines : TStrings read GetLines;
+  end;
+
+  TFPgtkScrollList = class (TFPgtkScrolledWindow)
+  private
+    FList : TFPgtkList;
+  public
+    constructor create;
+    property List : TFPgtkList read FList;
+  end;
+
+  TFPgtkScrollCList = class (TFPgtkScrolledWindow)
+  private
+    FCList : TFPgtkCList;
+  public
+    constructor create (CountColumns : integer);
+    property CList : TFPgtkCList read FCList;
+  end;
+
+  TFPgtkScrollTree = class (TFPgtkScrolledWindow)
+  private
+    FTree : TFPgtkTree;
+  public
+    constructor create;
+    property Tree : TFPgtkTree read FTree;
+  end;
+
+{ ==== Message dialogs ==== }
+
+type
+  TModalResult = Low(Integer)..High(Integer);
+  
+  TMsgDlgType = (mtWarning, mtError, mtInformation, mtConfirmation, mtCustom);
+  TMsgDlgBtn = (mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore,
+                mbAll, mbNoToAll, mbYesToAll, mbHelp);
+  TMsgDlgButtons = set of TMsgDlgBtn;
+
+const
+  mbYesNo            = [mbYes,mbNo];
+  mbYesNoCancel      = [mbYes, mbNo, mbCancel];
+  mbOKCancel         = [mbOK, mbCancel];
+  mbAbortRetryIgnore = [mbAbort, mbRetry, mbIgnore];
+  
+  mrNone = 0;
+  mrOK = mrNone + 1;
+  mrCancel = mrNone + 2;
+  mrAbort = mrNone + 3;
+  mrRetry = mrNone + 4;
+  mrIgnore = mrNone + 5;
+  mrYes = mrNone + 6;
+  mrNo = mrNone + 7;
+  mrAll = mrNone + 8;
+  mrNoToAll = mrNone + 9;
+  mrYesToAll = mrNone + 10;
+                                 
+function MessageDlg(const aMsg: string; DlgType: TMsgDlgType;
+                    Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;
+                
+
+function MessageDlg(const Fmt: string; Args : Array of const; DlgType: TMsgDlgType;
+                    Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;
+                                                              
+procedure ShowMessage (const aTitle, aMessage : string);
+
+{ ==== Menu handling ==== }
+
+type
+  TAccelKeyDef = record
+    Key : guint;
+    Mods : TGdkModifierType;
+    AG : PGtkAccelGroup;
+  end;
+  PAccelKeyDef = ^TAccelKeyDef;
+
+  TAccelModifier = (amShift, amLock, amControl, amMod1, amMod2, amMod3, amMod4,
+                    amMod5, amButton1, amButton2, amButton3, amButton4, amButton5,
+                    amRelease);
+  TAccelModifiersSet = set of TAccelModifier;
+
+const
+  amAlt = amMod1;
+  gdk_Alt_mask = gdk_mod1_Mask;
+  DefaultAccelFlags : TGtkAccelFlags = GTK_ACCEL_VISIBLE;
+
+function RemoveUnderscore (s : string) : string;
+function ConvertAccelModifier (amSet : TAccelModifiersSet) : TGdkModifierType;
+function ConvertModifierType (Mods : TGdkModifierType) : TAccelModifiersSet;
+function MakeAccelKeyDef (aWindow : TFPgtkWindow; anAG : integer; aKey : guint; aMods : TGdkModifierType) : PAccelKeyDef; overload;
+function MakeAccelKeyDef (aWindow : TFPgtkWindow; anAG : integer; aKey : guint; aMods : TAccelModifiersSet) : PAccelKeyDef; overload;
+function MakeAccelKeyDef (anAG : PGtkAccelGroup; aKey : guint; aMods : TGdkModifierType) : PAccelKeyDef; overload;
+function MakeAccelKeyDef (anAG : PGtkAccelGroup; aKey : guint; aMods : TAccelModifiersSet) : PAccelKeyDef; overload;
+
+function NewMenuBar (items : array of TFPgtkMenuItem) : TFPgtkMenuBar;
+function NewMenu (ATitle : string; items : array of TFPgtkMenuItem) : TFPgtkMenu;
+
+function NewMenuItem (ACaption, AToolTip, AprivText : string; Accelerator : PAccelKeyDef;
+                      ActivateFunc : TFPgtkSignalFunction; AData : pointer) : TFPgtkMenuItem; overload;
+function NewMenuItem (ACaption, AToolTip, AprivText : string;
+                      ActivateFunc : TFPgtkSignalFunction; AData : pointer) : TFPgtkMenuItem; overload;
+function NewMenuItem (ACaption : string; Accelerator : PAccelKeyDef;
+                      ActivateFunc : TFPgtkSignalFunction; AData : pointer) : TFPgtkMenuItem; overload;
+function NewMenuItem (ACaption : string; ActivateFunc : TFPgtkSignalFunction; AData : pointer) : TFPgtkMenuItem; overload;
+function NewMenuItem (ACaption : string) : TFPgtkMenuItem; overload;
+
+function NewLine : TFPgtkMenuItem;
+function NewTearOffMenu : TFPgtkTearOffMenuItem;
+
+function NewSubMenu (ACaption, ATooltip, AprivText : string; Accelerator : PAccelKeyDef;
+                     Items : array of TFPgtkMenuItem) : TFPgtkMenuItem; Overload;
+function NewSubMenu (ACaption, ATooltip, AprivText : string;
+                     Items : array of TFPgtkMenuItem) : TFPgtkMenuItem; Overload;
+function NewSubMenu (ACaption : string; Accelerator : PAccelKeyDef;
+                     Items : array of TFPgtkMenuItem) : TFPgtkMenuItem; Overload;
+function NewSubMenu (ACaption : string; Items : array of TFPgtkMenuItem) : TFPgtkMenuItem; Overload;
+
+function NewCheckMenuItem (ACaption, AToolTip, AprivText : string; Accelerator : PAccelKeyDef;
+                      ToggledFunc : TFPgtkSignalFunction; AData : pointer) : TFPgtkCheckMenuItem; Overload;
+function NewCheckMenuItem (ACaption, AToolTip, AprivText : string;
+                      ToggledFunc : TFPgtkSignalFunction; AData : pointer) : TFPgtkCheckMenuItem; Overload;
+function NewCheckMenuItem (ACaption : string; Accelerator : PAccelKeyDef;
+                      ToggledFunc : TFPgtkSignalFunction; AData : pointer) : TFPgtkCheckMenuItem; Overload;
+function NewCheckMenuItem (ACaption : string; ToggledFunc : TFPgtkSignalFunction; AData : pointer) : TFPgtkCheckMenuItem; Overload;
+
+procedure InsertMenuItemGroup (InMenu : TFPgtkMenuShell; position : integer; MenuItems : TFPgtkItemGroup); Overload;
+procedure InsertMenuItemGroup (InMenu : TFPgtkMenuShell; position : integer;
+                 MenuItems : TFPgtkItemGroup; ActivateProc : TFPgtkSignalFunction; ActivateData : pointer); Overload;
+procedure AppendMenuItemGroup (InMenu : TFPgtkmenuShell; MenuItems : TFPgtkItemGroup); Overload;
+procedure AppendMenuItemGroup (InMenu : TFPgtkmenuShell; MenuItems : TFPgtkItemGroup;
+                               ActivateProc : TFPgtkSignalFunction; ActivateData : pointer); Overload;
+procedure PrependMenuItemGroup (InMenu : TFPgtkmenuShell; MenuItems : TFPgtkItemGroup); Overload;
+procedure PrependMenuItemGroup (InMenu : TFPgtkmenuShell; MenuItems : TFPgtkItemGroup;
+                                ActivateProc : TFPgtkSignalFunction; ActivateData : pointer); Overload;
+
+implementation
+
+resourcestring
+  rsNothingToRun = 'No main window defined, nothing to do...';
+  rsErrorTitle = 'Error occured';
+  rsMessageTitle = 'Message';
+  sErrWrongItemType = 'Items in list are not from TFPgtkMenuItem class.';
+
+ { TFPgtkApplication }
+
+constructor TFPgtkApplication.Create;
+begin
+  gtk_init (@argc, @argv);
+  inherited create;
+  FMainWindow := nil;
+end;
+
+destructor TFPgtkApplication.Destroy;
+begin
+  if assigned (FMainWindow) then
+    FMainWindow.Free;
+  gtk_Exit (0);
+  inherited;
+end;
+
+procedure TFPgtkApplication.SetMainWindow (Value : TFPgtkWindow);
+begin
+  if FMainWindow <> Value then
+    begin
+    if assigned (FMainWindow) and (FMainDestroySignal > 0) then
+      FMainWindow.signalDisconnect (FMainDestroySignal);
+    FMainWindow := Value;
+    if Assigned (Value) then
+      FMainDestroySignal := FMainWindow.ConnectDestroy (@MainDestroyed, nil);
+    end;
+end;
+
+procedure TFPgtkApplication.MainDestroyed (Sender:TFPgtkObject; data:pointer);
+begin
+  FMainWindow := nil;
+  FMainDestroySignal := 0;
+  gtk_main_quit;
+end;
+
+procedure TFPgtkApplication.Run;
+begin
+  if assigned (FMainWindow) then
+    while assigned (FMainWindow) do
+      try
+        FMainWindow.execute (nil, nil, nil);
+        //gtk_main;
+        FreeFPgtkObjects (nil);
+      except
+        on e : exception do
+          ShowMessage (rsErrorTitle, e.message);
+      end
+  else
+    ShowMessage (rsMessageTitle, rsNothingToRun);
+end;
+
+{ TFPgtkScrollText }
+
+constructor TFPgtkScrollText.create;
+begin
+  inherited create (nil,nil);
+  FText := TFPgtkText.Create;
+  Add (FText);
+  HPolicy := Gtk_Policy_Never;
+end;
+
+function TFPgtkScrollText.GetTooltip : string;
+begin
+  result := inherited Tooltip;
+end;
+
+procedure TFPgtkScrollText.SetTooltip (Value : string);
+begin
+  TheText.Tooltip := Value;
+  inherited Tooltip := Value;
+end;
+
+function TFPgtkScrollText.GetUdpatePolicy : TGtkUpdateType;
+begin
+  result := VScrollbar.UpdatePolicy;
+end;
+
+procedure TFPgtkScrollText.Clear;
+begin
+  if assigned(TheText) then
+    TheText.Clear;
+end;
+
+procedure TFPgtkScrollText.SetUpdatePolicy (Value : TGtkUpdateType);
+begin
+  VScrollbar.UpdatePolicy := Value;
+  {$ifndef gtkwin}
+  HScrollbar.UpdatePolicy := Value;
+  {$endif}
+end;
+
+function TFPgtkScrollText.GetText : string;
+begin
+  if assigned(TheText) then
+    begin
+    result := TheText.Text;
+    end
+  else
+    begin
+    result := '';
+    end;
+end;
+
+procedure TFPgtkScrollText.SetText (Value : string);
+begin
+  if assigned (TheText) then
+    TheText.Text := Value;
+end;
+
+function TFPgtkScrollText.GetLines : TStrings;
+begin
+  if assigned (TheText) then
+    result := TheText.Lines
+  else
+    result := nil;
+end;
+
+{ TFPgtkScrollList }
+
+constructor TFPgtkScrollList.create;
+begin
+  inherited create (nil, nil);
+  setusize (100, 40);
+  FList := TFPgtkList.Create;
+  AddWithViewport (FList);
+end;
+
+{ TFPgtkScrollCList }
+
+constructor TFPgtkScrollCList.create (CountColumns : integer);
+begin
+  inherited create (nil, nil);
+  setusize (100, 40);
+  FCList := TFPgtkCList.Create (CountColumns);
+  Add (FCList);
+end;
+
+{ TFPgtkScrollTree }
+
+constructor TFPgtkScrollTree.create;
+begin
+  inherited create (nil, nil);
+  FTree := TFPgtkTree.Create;
+  AddWithViewport (FTree);
+  FTree.Show;
+end;
+
+{ Menu functions }
+
+function RemoveUnderscore (s : string) : string;
+begin
+  result := stringreplace (s, '_', '', [rfReplaceAll]);
+end;
+
+type
+  TFPgtkMenuItemType = class of TFPgtkMenuItem;
+
+function MakeAccelKeyDef (aWindow : TFPgtkWindow; anAG : integer; aKey : guint; aMods : TGdkModifierType) : PAccelKeyDef;
+begin
+  new (result);
+  with result^ do
+    begin
+    AG := aWindow.AccelGroups[anAG];
+    Key := aKey;
+    Mods := aMods;
+    end;
+end;
+
+function MakeAccelKeyDef (aWindow : TFPgtkWindow; anAG : integer; aKey : guint; aMods : TAccelModifiersSet) : PAccelKeyDef;
+begin
+  new (result);
+  with result^ do
+    begin
+    AG := aWindow.AccelGroups[anAG];
+    Key := aKey;
+    Mods := ConvertAccelModifier (aMods);
+    end;
+end;
+
+function MakeAccelKeyDef (anAG : PGtkAccelGroup; aKey : guint; aMods : TGdkModifierType) : PAccelKeyDef;
+begin
+  new (result);
+  with result^ do
+    begin
+    AG := anAG;
+    Key := aKey;
+    Mods := aMods;
+    end;
+end;
+
+function MakeAccelKeyDef (anAG : PGtkAccelGroup; aKey : guint; aMods : TAccelModifiersSet) : PAccelKeyDef;
+begin
+  new (result);
+  with result^ do
+    begin
+    AG := anAG;
+    Key := aKey;
+    Mods := ConvertAccelModifier (aMods);
+    end;
+end;
+
+function ConvertAccelModifier (amSet : TAccelModifiersSet) : TGdkModifierType;
+var am : TAccelModifier;
+begin
+  result := 0;
+  for am := low(TAccelModifier) to high (TAccelModifier) do
+    if am in amSet then
+      result := result + (1 shl ord(am));
+end;
+
+function ConvertModifierType (Mods : TGdkModifierType) : TAccelModifiersSet;
+var am : TAccelModifier;
+begin
+  result := [];
+  for am := low(TAccelModifier) to high (TAccelModifier) do
+    if (Mods and (1 shl ord(am))) <> 0 then
+      result := result + [am];
+end;
+
+function NewMenuBar (items : array of TFPgtkMenuItem) : TFPgtkMenuBar;
+var r : integer;
+begin
+  result := TFPgtkMenuBar.Create;
+  with result do
+    for r := low(items) to high (items) do
+      append (items[r]);
+end;
+
+function NewMenu (ATitle : string; items : array of TFPgtkMenuItem) : TFPgtkMenu;
+var r : integer;
+    AG : PGtkAccelGroup;
+    m : TFPgtkMenuItem;
+begin
+  result := TFPgtkMenu.Create;
+  with result do
+    begin
+    Title := ATitle;
+    ag := AccelGroup;
+    for r := low(items) to high(items) do
+      begin
+      m := items[r];
+      Append (m);
+      if m.AccelKey <> 0 then
+        m.AcceleratorAdd (AG, sgActivateItem, m.AccelKey, 0, TGtkAccelFlags(0));
+      end;
+    end;
+end;
+
+function CreateMenuItem (Atype : TFPgtkMenuItemType; ACaption, ATooltip,
+                         APrivText : string; Accelerator : PAccelKeyDef) : TFPgtkMenuItem;
+begin
+  result := AType.CreateWithLabel (ACaption);
+  if (ATooltip <> '') or (APrivText <> '') then
+    result.Tooltip := ComposeTooltip (ATooltip, APrivText);
+  if assigned(accelerator) then
+    begin
+    with Accelerator^ do
+      result.AcceleratorAdd (AG, sgActivateItem, Key, Mods, DefaultAccelFlags);
+    dispose (Accelerator);
+    end;
+end;
+
+function NewMenuItem (ACaption, AToolTip, AprivText : string; Accelerator : PAccelKeyDef;
+                      ActivateFunc : TFPgtkSignalFunction; AData : pointer) : TFPgtkMenuItem;
+begin
+  result := CreateMenuItem (TFPgtkMenuItem, ACaption, ATooltip, APrivtext, Accelerator);
+  if assigned (ActivateFunc) then
+    result.ConnectActivate (ActivateFunc, AData);
+end;
+
+function NewMenuItem (ACaption, AToolTip, AprivText : string;
+                      ActivateFunc : TFPgtkSignalFunction; AData : pointer) : TFPgtkMenuItem;
+begin
+  result := NewMenuItem (aCaption, aTooltip, aPrivText, nil, ActivateFunc, aData);
+end;
+
+function NewMenuItem (ACaption : string; Accelerator : PAccelKeyDef;
+                      ActivateFunc : TFPgtkSignalFunction; AData : pointer) : TFPgtkMenuItem;
+begin
+  result := NewMenuItem (aCaption, '', '', Accelerator, ActivateFunc, aData);
+end;
+
+function NewMenuItem (ACaption : string; ActivateFunc : TFPgtkSignalFunction; AData : pointer) : TFPgtkMenuItem;
+begin
+  result := NewMenuItem (aCaption, '', '', nil, ActivateFunc, aData);
+end;
+
+function NewMenuItem (ACaption : string) : TFPgtkMenuItem;
+begin
+  result := NewMenuItem (aCaption, '', '', nil, nil, nil);
+end;
+
+function NewLine : TFPgtkMenuItem;
+begin
+  result := TFPgtkMenuItem.Create;
+end;
+
+function NewTearOffMenu : TFPgtkTearOffMenuItem;
+begin
+  result := TFPgtkTearOffMenuItem.create;
+end;
+
+function NewSubMenu (ACaption, ATooltip, AprivText : string; Accelerator : PAccelKeyDef;
+                     Items : array of TFPgtkMenuItem) : TFPgtkMenuItem;
+begin
+  result := CreateMenuItem (TFPgtkMenuItem, ACaption, ATooltip, APrivText, Accelerator);
+  result.SetSubmenu (NewMenu ('', Items));
+end;
+
+function NewSubMenu (ACaption, ATooltip, AprivText : string;
+                     Items : array of TFPgtkMenuItem) : TFPgtkMenuItem;
+begin
+  result := NewSubMenu (aCaption, aTooltip, aPrivText, nil, Items);
+end;
+
+function NewSubMenu (ACaption : string; Accelerator : PAccelKeyDef;
+                     Items : array of TFPgtkMenuItem) : TFPgtkMenuItem;
+begin
+  result := NewSubMenu (aCaption, '', '', Accelerator, Items);
+end;
+
+function NewSubMenu (ACaption : string; Items : array of TFPgtkMenuItem) : TFPgtkMenuItem;
+begin
+  result := NewSubMenu (aCaption, '', '', nil, Items);
+end;
+
+function NewCheckMenuItem (ACaption, AToolTip, AprivText : string; Accelerator : PAccelKeyDef;
+                      ToggledFunc : TFPgtkSignalFunction; AData : pointer) : TFPgtkCheckMenuItem;
+begin
+  result := TFPgtkCheckMenuItem(CreateMenuItem (TFPgtkCheckMenuItem, ACaption, ATooltip, APrivText, Accelerator));
+  if assigned (ToggledFunc) then
+    Result.ConnectToggled (ToggledFunc, AData);
+end;
+
+function NewCheckMenuItem (ACaption, AToolTip, AprivText : string;
+                      ToggledFunc : TFPgtkSignalFunction; AData : pointer) : TFPgtkCheckMenuItem;
+begin
+  result := NewCheckMenuItem (aCaption, aToolTip, aPrivText, nil, ToggledFunc, AData);
+end;
+
+function NewCheckMenuItem (ACaption : string; Accelerator : PAccelKeyDef;
+                      ToggledFunc : TFPgtkSignalFunction; AData : pointer) : TFPgtkCheckMenuItem;
+begin
+  result := NewCheckMenuItem (aCaption, '', '', Accelerator, ToggledFunc, AData);
+end;
+
+function NewCheckMenuItem (ACaption : string; ToggledFunc : TFPgtkSignalFunction; AData : pointer) : TFPgtkCheckMenuItem;
+begin
+  result := NewCheckMenuItem (aCaption, '', '', nil, ToggledFunc, AData);
+end;
+
+procedure InsertMenuItemGroup (InMenu : TFPgtkMenuShell; position : integer; MenuItems : TFPgtkItemGroup);
+begin
+  InsertMenuItemGroup (InMenu, position, MenuItems, nil, nil);
+end;
+
+procedure InsertMenuItemGroup (InMenu : TFPgtkMenuShell; position : integer;
+                 MenuItems : TFPgtkItemGroup; ActivateProc : TFPgtkSignalFunction; ActivateData : pointer);
+var r : integer;
+begin
+  if (MenuItems.count > 0) then
+    if (MenuItems.items[0] is TFPgtkMenuItem) then
+      with InMenu do
+        for r := MenuItems.count-1 downto 0 do
+          begin
+          if assigned(ActivateProc) then
+            if assigned (ActivateData) then
+              TFPgtkMenuItem(MenuItems.items[r]).ConnectActivate (ActivateProc, ActivateData)
+            else
+              TFPgtkMenuItem(MenuItems.items[r]).ConnectActivate (ActivateProc, inttopointer(r));
+          Insert (TFPgtkMenuItem(MenuItems.items[r]), position);
+          end
+    else
+      raise FPgtkException.Create (sErrWrongItemType);
+end;
+
+procedure AppendMenuItemGroup (InMenu : TFPgtkmenuShell; MenuItems : TFPgtkItemGroup);
+begin
+  AppendMenuItemGroup (InMenu, MenuItems, nil, nil);
+end;
+
+procedure AppendMenuItemGroup (InMenu : TFPgtkmenuShell; MenuItems : TFPgtkItemGroup;
+                                ActivateProc : TFPgtkSignalFunction; ActivateData : pointer);
+var r : integer;
+begin
+  if (MenuItems.count > 0) then
+    if MenuItems.items[0] is TFPgtkMenuItem then
+      with InMenu do
+        for r := 0 to MenuItems.count-1 do
+          begin
+          if assigned(ActivateProc) then
+            if assigned (ActivateData) then
+              TFPgtkMenuItem(MenuItems.items[r]).ConnectActivate (ActivateProc, ActivateData)
+            else
+              TFPgtkMenuItem(MenuItems.items[r]).ConnectActivate (ActivateProc, inttopointer(r));
+          Append (TFPgtkMenuItem(MenuItems.items[r]));
+          end
+    else
+      raise FPgtkException.Create (sErrWrongItemType);
+end;
+
+procedure PrependMenuItemGroup (InMenu : TFPgtkmenuShell; MenuItems : TFPgtkItemGroup);
+begin
+  PrependMenuItemGroup (InMenu, MenuItems, nil, nil);
+end;
+
+procedure PrependMenuItemGroup (InMenu : TFPgtkmenuShell; MenuItems : TFPgtkItemGroup;
+                                ActivateProc : TFPgtkSignalFunction; ActivateData : pointer);
+var r : integer;
+begin
+  if (MenuItems.count > 0) then
+    if MenuItems.items[0] is TFPgtkMenuItem then
+      with InMenu do
+        for r := MenuItems.count-1 downto 0 do
+          begin
+          if assigned(ActivateProc) then
+            if assigned (ActivateData) then
+              TFPgtkMenuItem(MenuItems.items[r]).ConnectActivate (ActivateProc, ActivateData)
+            else
+              TFPgtkMenuItem(MenuItems.items[r]).ConnectActivate (ActivateProc, inttopointer(r));
+          Prepend (TFPgtkMenuItem(MenuItems.items[r]));
+          end
+    else
+      raise FPgtkException.Create (sErrWrongItemType);
+end;
+
+{ TFileEntryDialog }
+
+type
+  TFileEntryDialog = class (TFPgtkFileSelection)
+  public
+    constructor create (AType:TGtkWindowType);
+    procedure DoDialogInit (InitData : pointer); override;
+  end;
+
+  PFileEntryData = ^TFileEntryData;
+  TFileEntryData = record
+    aFilename : string;
+  end;
+
+constructor TFileEntryDialog.Create (AType:TGtkWindowType);
+begin
+  inherited;
+  OKButton.ConnectClicked (@CloseWithResult, inttopointer(drOk));
+  CancelButton.ConnectClicked (@CloseWindow, nil);
+end;
+
+procedure TFileEntryDialog.DoDialogInit (InitData : pointer);
+begin
+  with PFileEntryData(InitData)^ do
+    Filename := aFilename;
+end;
+
+{ TFPgtkFileEntry }
+
+const
+  FileEntryXPM =
+      '16 13 4 1'#13#10+
+      '. c None'#13#10+     // no color
+      '# c #000000'#13#10+  // black
+      'y c #ffff00'#13#10+  // yellow
+      'g c #AFAF00'#13#10+  // grayed yellow
+      '.......#####....'#13#10+
+      '............#.#.'#13#10+
+      '.............##.'#13#10+
+      '..####......###.'#13#10+
+      '##yyyy#####.....'#13#10+
+      '#yyyyyyyyy#.....'#13#10+
+      '#yyyyyyyyy#.....'#13#10+
+      '#yyyy###########'#13#10+
+      '#yyy#ggggggggg#.'#13#10+
+      '#yy#ggggggggg#..'#13#10+
+      '#y#ggggggggg#...'#13#10+
+      '##ggggggggg#....'#13#10+
+      '###########.....';
+
+var
+  DefFileEntryPixmap : PGdkPixmap;
+  DefFileEntryBitmask : PGdkBitmap;
+
+constructor TFPgtkFileEntry.create;
+begin
+  inherited;
+  FEdit := TFPgtkEntry.Create;
+  FButton := TFPgtkButton.Create;
+  FImage := TFPgtkPixMap.Create;
+  with FImage do
+    if assigned (DefFileEntryPixmap) then
+      SetPixmap (DefFileEntryPixmap, DefFileEntryBitmask)
+    else
+      begin
+      loadfromtext (FileEntryXPM);
+      GetPixmap (DefFileEntryPixmap, DefFileEntryBitmask);
+      end;
+  with FButton do
+    begin
+    Add (FImage);
+    ConnectClicked (@OpenFileSelection, self);
+    end;
+  PackStart (FEdit, true, true, 0);
+  PackStart (FButton, false, true, 0);
+end;
+
+procedure TFPgtkFileEntry.SetFilename (Value : string);
+begin
+  FEdit.Text := Value;
+end;
+
+function TFPgtkFileEntry.GetFilename : string;
+begin
+  result := FEdit.Text;
+end;
+
+procedure TFPgtkFileEntry.OpenFileSelection (Sender : TFPgtkObject; data : pointer);
+var d : TFileEntryData;
+begin
+  d.aFilename := Filename;
+  with TFileEntryDialog.Create(gtk_window_dialog) do
+    Execute (nil, @d, @CloseFileSelection);
+end;
+
+procedure TFPgtkFileEntry.CloseFileSelection (Sender:TFPgtkWindow; DialogResult:pointer; 
+                                    Action:integer; initiator:TFPgtkObject);
+begin
+  if action = drOk then
+    Filename := (Sender as TFileEntryDialog).Filename;
+end;
+
+{ TFPgtkCheckedButton }
+
+const
+  XPMChecked : array [0..17] of ansistring = (
+          '15 13 4 1',
+          '. c None',      // None
+          '# c #000000',   // Black
+          '- c #FFFFFF',   // White
+          'o c #0000FF',   // Blue
+          '..............o',
+          '.............o-',
+          '............o-.',
+          '..########.o-..',
+          '..#......#o-...',
+          '..#......o-....',
+          '..o-....oo-....',
+          '.ooo-..oo-.....',
+          '..ooo-oo-#.....',
+          '..#oooo-.#.....',
+          '..##ooo-##.....',
+          '.....o-........',
+          '...............');
+
+  XPMUnChecked : array [0..17] of ansistring = (
+          '15 13 4 1',
+          '. c None',      // None
+          '# c #000000',   // Black
+          '- c #FFFFFF',   // White
+          'o c #0000FF',   // Blue
+          '...............',
+          '...............',
+          '...............',
+          '..########.....',
+          '..#......#.....',
+          '..#......#.....',
+          '..#......#.....',
+          '..#......#.....',
+          '..#......#.....',
+          '..#......#.....',
+          '..########.....',
+          '...............',
+          '...............');
+
+var
+  DefChecked, DefUnchecked : PGdkPixmap;
+  DefCheckedBM, DefUncheckedBM : PGdkBitmap;
+
+procedure TFPgtkCheckedButton.ChangeCheck (Sender:TFPgtkObject; data:pointer);
+var b : boolean;
+begin
+  b := Active;
+  FChecked.visible := b;
+  FUnchecked.visible := not b;
+end;
+
+constructor TFPgtkCheckedButton.CreateWithLabel (aText:string);
+begin
+  create;
+  Text := aText;
+end;
+
+constructor TFPgtkCheckedButton.CreateWithLabel (aText:string; AccelGroup : PGtkAccelGroup);
+begin
+  create;
+  Text := aText;
+  if (AccelKey <> 0) and assigned(AccelGroup) then
+    AcceleratorAdd (AccelGroup, sgClicked, AccelKey, DefaultButtonModifiers, GTK_ACCEL_Visible);
+end;
+
+constructor TFPgtkCheckedButton.create;
+begin
+  inherited;
+  DrawIndicator := False;
+  AddContainer := TFPgtkHBox.Create;
+  Add (AddContainer);
+  FChecked := TFPgtkPixMap.Create;
+  with FChecked do
+    if assigned (DefChecked) then
+      SetPixmap (DefChecked, DefCheckedBM)
+    else
+      begin
+      loadfromArray (XPMChecked);
+      GetPixmap (DefChecked, DefCheckedBM);
+      end;
+  FUnchecked := TFPgtkPixMap.Create;
+  with FUnchecked do
+    if assigned (DefUnchecked) then
+      SetPixmap (DefUnchecked, DefUncheckedBM)
+    else
+      begin
+      loadfromArray (XPMUnchecked);
+      GetPixmap (DefUnchecked, DefUncheckedBM);
+      end;
+  with TFPgtkBox(AddContainer) do
+    begin
+    PackStart (FChecked, false, false, 0);
+    PackStart (FUnChecked, false, false, 0);
+    end;
+  ChangeCheck (self, nil);
+  ConnectToggled (@ChangeCheck, nil);
+end;
+
+{ ShowMessage }
+
+resourcestring
+  rsOk = '   Ok   ';
+
+function MessageWindow (aTitle, aMessage : string) : TFPgtkWindow;
+var b : TFPgtkBox;
+    but : TFPgtkButton;
+    l : TFPgtkLabel;
+    AG : integer;
+    bb : TFPgtkButtonBox;
+begin
+  result := TFPgtkWindow.create (gtk_window_dialog);
+
+  result.setDefaultSize (200,25);
+  result.title := aTitle;
+
+  AG := result.AccelGroupNew;
+
+  b := TFPgtkVBox.create;
+  b.Homogeneous := false;
+  b.border := 15;
+  b.spacing := 15;
+
+  l := TFPgtkLabel.Create (aMessage);
+  b.Packstart (l, true, true, 0); // Text to show
+
+  bb := TFPgtkHButtonBox.create;
+  bb.Layout := GTK_BUTTONBOX_DEFAULT_STYLE;
+  b.PackEnd (bb, false, false, 0);
+
+  but := TFPgtkButton.CreateWithLabel (rsOk);                 // Ok button to close
+  but.ConnectClicked (@(result.CloseWindow), nil);
+  result.AcceleratorAdd (AG, but, sgClicked, gdk_Cancel, 0, TGTKAccelFlags(0));
+  result.AcceleratorAdd (AG, but, sgClicked, gdk_Return, 0, TGTKAccelFlags(0));
+  bb.add (but);
+
+  result.Add (b);
+end;
+
+procedure ShowMessage (const aTitle, aMessage : string);
+begin
+  with MessageWindow (aTitle, aMessage) do
+    Execute (nil, nil, nil);
+end;
+
+{ MessageDialog }
+
+type
+  TMessageDialogWindow = Class(TFPgtkWindow)
+    FImage : TFPGtkPixMap;
+    FLabel : TFPGtkLabel;
+    FLTable : TFPgtkTable;
+    FVBox : TFPgtkVBox;
+    FButtonBox: TFPgtkButtonBox;
+    Constructor Create(AMsg:String; DlgType:TMsgDlgType; Buttons: TMsgDlgButtons);
+    Procedure CreateButtons(Buttons: TMsgDlgButtons);
+  end;
+
+const
+
+IMGInfo : Array[1..37] of string = ('32 32 4 1',
+  '. c None',
+  '  c None',
+  'a c #ffffff', //#c3c3c3',
+  '# c #0000ff',
+  '............#######.............',
+  '.........###aaaaaaa###..........',
+  '.......##aaaaaaaaaaaaa##........',
+  '......#aaaaaaa###aaaaaaa#.......',
+  '.....#aaaaaaa#####aaaaaaa#......',
+  '....#aaaaaaa#######aaaaaaa#.....',
+  '...#aaaaaaaa#######aaaaaaaa#....',
+  '..#aaaaaaaaa#######aaaaaaaaa#...',
+  '..#aaaaaaaaaa#####aaaaaaaaaa#...',
+  '.#aaaaaaaaaaaa###aaaaaaaaaaaa#..',
+  '.#aaaaaaaaaaaaaaaaaaaaaaaaaaa#..',
+  '.#aaaaaaaaaaa#####aaaaaaaaaaa#..',
+  '#aaaaaaaaaaaa#####aaaaaaaaaaaa#.',
+  '#aaaaaaaaaaaa#####aaaaaaaaaaaa#.',
+  '#aaaaaaaaaaaa#####aaaaaaaaaaaa#.',
+  '#aaaaaaaaaaaa#####aaaaaaaaaaaa#.',
+  '#aaaaaaaaaaaa#####aaaaaaaaaaaa#.',
+  '#aaaaaaaaaaaa#####aaaaaaaaaaaa#.',
+  '#aaaaaaaaaaaa#####aaaaaaaaaaaa#.',
+  '.#aaaaaaaaaaa#####aaaaaaaaaaa#..',
+  '.#aaaaaaaaaaa#####aaaaaaaaaaa#..',
+  '.#aaaaaaaaaa#######aaaaaaaaaa#..',
+  '..#aaaaaaaaa#######aaaaaaaaa#...',
+  '..#aaaaaaaaa#######aaaaaaaaa#...',
+  '...#aaaaaaaaaaaaaaaaaaaaaaa#....',
+  '....#aaaaaaaaaaaaaaaaaaaaa#.....',
+  '.....#aaaaaaaaaaaaaaaaaaa#......',
+  '......#aaaaaaaaaaaaaaaaa#.......',
+  '.......##aaaaaaaaaaaaa##........',
+  '.........###aaaaaaa###..........',
+  '............#######.............',
+  '................................');
+
+IMGWarning :Array[1..37] of string = ('32 32 4 1',
+  '# c #000000',
+  'b c #9c999c',
+  '. c None',
+  'a c #ffff00',
+  '.............###................',
+  '............#aaa#...............',
+  '...........#aaaaa#b.............',
+  '...........#aaaaa#bb............',
+  '..........#aaaaaaa#bb...........',
+  '..........#aaaaaaa#bb...........',
+  '.........#aaaaaaaaa#bb..........',
+  '.........#aaaaaaaaa#bb..........',
+  '........#aaaaaaaaaaa#bb.........',
+  '........#aaaa###aaaa#bb.........',
+  '.......#aaaa#####aaaa#bb........',
+  '.......#aaaa#####aaaa#bb........',
+  '......#aaaaa#####aaaaa#bb.......',
+  '......#aaaaa#####aaaaa#bb.......',
+  '.....#aaaaaa#####aaaaaa#bb......',
+  '.....#aaaaaa#####aaaaaa#bb......',
+  '....#aaaaaaaa###aaaaaaaa#bb.....',
+  '....#aaaaaaaa###aaaaaaaa#bb.....',
+  '...#aaaaaaaaa###aaaaaaaaa#bb....',
+  '...#aaaaaaaaaa#aaaaaaaaaa#bb....',
+  '..#aaaaaaaaaaa#aaaaaaaaaaa#bb...',
+  '..#aaaaaaaaaaaaaaaaaaaaaaa#bb...',
+  '.#aaaaaaaaaaaa##aaaaaaaaaaa#bb..',
+  '.#aaaaaaaaaaa####aaaaaaaaaa#bb..',
+  '#aaaaaaaaaaaa####aaaaaaaaaaa#bb.',
+  '#aaaaaaaaaaaaa##aaaaaaaaaaaa#bb.',
+  '#aaaaaaaaaaaaaaaaaaaaaaaaaaa#bbb',
+  '#aaaaaaaaaaaaaaaaaaaaaaaaaaa#bbb',
+  '.#aaaaaaaaaaaaaaaaaaaaaaaaa#bbbb',
+  '..#########################bbbbb',
+  '....bbbbbbbbbbbbbbbbbbbbbbbbbbb.',
+  '.....bbbbbbbbbbbbbbbbbbbbbbbbb..');
+
+IMGError : Array[1..37] of string = ('32 32 4 1',
+  '. c None',
+  'b c #808080',
+  '# c #c00000',
+  'a c #ffffff',
+  '................................',
+  '................................',
+  '................................',
+  '............#######.............',
+  '...........###########..........',
+  '........###############.........',
+  '.......##################.......',
+  '......####################......',
+  '.....###aa############aa###.....',
+  '.....###aaa##########aaa###.....',
+  '....#####aaa########aaa#####....',
+  '....######aaa######aaa######....',
+  '...########aaa####aaa########...',
+  '...#########aaa##aaa#########b..',
+  '...##########aaaaaa##########b..',
+  '...###########aaaa###########b..',
+  '...###########aaaa###########b..',
+  '...##########aaaaaa##########b..',
+  '...#########aaa##aaa#########b..',
+  '...########aaa####aaa#######bb..',
+  '....######aaa######aaa######bb..',
+  '.....####aaa########aaa#####bb..',
+  '.....###aaa##########aaa###bbb..',
+  '.....###aa############aa##bbb...',
+  '......####################bb....',
+  '.......##################bb.....',
+  '.........###############bb......',
+  '..........###########bbbb.......',
+  '.............#######bbb.........',
+  '................................',
+  '................................',
+  '................................');
+
+IMGConfirmation : Array[1..37] of string = ('32 32 4 1',
+  '. c None',
+  'b c #808080',
+  'a c #c00000',
+  '# c #ffffff',
+  '................................',
+  '................................',
+  '................................',
+  '................................',
+  '.............######.............',
+  '..........###########...........',
+  '.........##############.........',
+  '........################........',
+  '.......##################.......',
+  '......########aaaaa#######......',
+  '.....########aaaaaaa#######.....',
+  '.....#######aa#####aa######.....',
+  '.....#######a######aa#######....',
+  '....###############aa#######b...',
+  '....###############aa#######bb..',
+  '....##############aa########bb..',
+  '....#############aa#########bb..',
+  '....############aa##########bb..',
+  '....###########aa###########bb..',
+  '.....##########aa##########bbb..',
+  '.....##########aa##########bbb..',
+  '.....##########aa##########bb...',
+  '......#########aa#########bb....',
+  '.......##################bbb....',
+  '........#######aa#######bbb.....',
+  '.........######aa######bbb......',
+  '...........###########bbb.......',
+  '.............######bbbbb........',
+  '................................',
+  '................................',
+  '................................',
+  '................................');
+
+
+Constructor TMessageDialogWindow.Create(AMsg : String;DlgType:TMsgDlgType;Buttons: TMsgDlgButtons);
+const
+  OH = GTK_FILL OR GTK_EXPAND;
+begin
+  Inherited Create(GTK_WINDOW_DIALOG);
+  FVBox:=TFPGtkVBox.Create;
+  FVBox.Spacing:=4;
+  FVBox.Border:=8;
+  Add(FVBox);
+  FLTable:=TFpgtkTable.Create(10,1);
+  if DlgType <> mtCustom then
+    begin
+    FImage:=TFPGtkPixMap.Create;
+    With FImage do
+      Case DlgType of
+        mtInformation  : LoadFromArray(Imginfo);
+        mtWarning      : LoadFromArray(imgWarning);
+        mtConfirmation : LoadFromArray(imgConfirmation);
+        mtError        : LoadFromArray(imgError);
+      end;
+    FLTable.Attach(FImage,1,2,0,1,OH,OH,0,0);
+    end;
+  FLabel:=TFPGtkLabel.Create(Amsg);
+  FLTable.Attach(FLabel,4,9,0,1,OH,OH,0,0);
+  FButtonBox:=TFPgtkHButtonBox.Create;
+  with FButtonBox do
+    begin
+    Layout := GTK_BUTTONBOX_DEFAULT_STYLE;
+    spacing := 4;
+    end;
+  CreateButtons(Buttons);
+  FVBox.PackStart(FLTable,false,False,8);
+  FVBox.PackStart(FButtonBox,false,False,8);
+end;
+
+Const 
+  ButtonText : Array[TMsgDlgBtn] of string  =
+       ('Yes', 'No', 'OK', 'Cancel','Abort', 'Retry', 'Ignore',
+        'All', 'NoToAll', 'YesToAll', 'Help');
+  ButtonResult : array [TMsgDlgbtn] of TModalResult =
+       (mrYes, mrNo, mrOK, mrCAncel, mrAbort, mrRetry, mrIgnore, 
+        mrAll, mrNoToAll, mrYesToAll, 0);
+                         
+Procedure TMessageDialogWindow.CreateButtons(Buttons: TMsgDlgButtons);
+Var
+  b : TMsgDlgBtn;
+  bw : TFPGtkButton;
+begin
+  For B:=Low(TMsgDlgBtn) to high(TMsgDlgBtn) do
+    If b in Buttons then
+      begin
+      BW:=TFPGtkButton.CreateWithLabel(ButtonText[b]);
+      BW.ConnectClicked(@CloseWithResult,IntToPointer(ButtonResult[b]));
+      BW.Setusize(50,25);
+      FButtonBox.PackStart(BW,False,False,4);
+      end;
+end;
+
+function MessageDlg(const aMsg: string; DlgType: TMsgDlgType;
+                    Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;
+begin
+  With TMessageDialogWindow.Create(AMsg,DlgType,Buttons) do
+    Result:=Execute(Nil,Nil,Nil);
+end;  
+
+function MessageDlg(const Fmt: string; Args : Array of const; DlgType: TMsgDlgType;
+                    Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;
+begin
+  Result:=MessageDlg(Format(Fmt,Args),Dlgtype,Buttons,HelpCtx);
+end;
+
+end.