diff --git a/packages/extra/fpgtk/fpgtk.pp b/packages/extra/fpgtk/fpgtk.pp index a97718f52e..24c64fedae 100644 --- a/packages/extra/fpgtk/fpgtk.pp +++ b/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. diff --git a/packages/extra/fpgtk/fpgtkext.pp b/packages/extra/fpgtk/fpgtkext.pp index dc36413b4c..2362f303c5 100644 --- a/packages/extra/fpgtk/fpgtkext.pp +++ b/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.