AJ: started GNOME interface & modified gtk interface so everything is public/protected

git-svn-id: trunk@2072 -
This commit is contained in:
lazarus 2002-08-17 23:40:51 +00:00
parent a4134a4191
commit 688e139c86
2 changed files with 407 additions and 0 deletions

1
.gitattributes vendored
View File

@ -560,6 +560,7 @@ lcl/interfaces/gtk/gtklistslh.inc svneol=native#text/pascal
lcl/interfaces/gtk/gtklistviewcallback.inc svneol=native#text/pascal
lcl/interfaces/gtk/gtkobject.inc svneol=native#text/pascal
lcl/interfaces/gtk/gtkproc.inc svneol=native#text/pascal
lcl/interfaces/gtk/gtkproc.pp svneol=native#text/pascal
lcl/interfaces/gtk/gtkwinapi.inc svneol=native#text/pascal
lcl/interfaces/gtk/gtkwinapih.inc svneol=native#text/pascal
lcl/interfaces/gtk/gtkwinapiwindow.pp svneol=native#text/pascal

View File

@ -0,0 +1,406 @@
unit gtkproc;
{$mode objfpc}{$H+}
interface
uses
InterfaceBase, {$Ifndef NoGdkPixbufLib}gdkpixbuf,{$EndIf} gtk, gdk,
glib, SysUtils, LMessages, Classes, Controls, Forms, VclGlobals,
LCLLinux, LCLType, gtkDef, DynHashArray, LazQueue, GraphType,
GraphicsMath, Graphics, Buttons, Menus, GTKWinApiWindow, StdCtrls, ComCtrls, CListBox,
KeyMap, Calendar, Arrow, Spin, CommCtrl, ExtCtrls, Dialogs, FileCtrl,
LResources, Math, gtkglobals;
(* GTKCallback.inc headers *)
procedure EventTrace(const TheMessage : string; data : pointer);
function gtkNoteBookCloseBtnClicked(Widget: PGtkWidget;
Data: Pointer): GBoolean; cdecl;
function gtkRealizeCB(Widget: PGtkWidget; Data: Pointer): GBoolean; cdecl;
function gtkRealizeAfterCB(Widget: PGtkWidget; Data: Pointer): GBoolean; cdecl;
function gtkshowCB( widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
function gtkHideCB( widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
function gtkactivateCB(widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
function gtkchangedCB( widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
function gtkchanged_editbox( widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
function gtkdaychanged(Widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
function gtkDraw(Widget: PGtkWidget; area: PGDKRectangle;
data: gPointer) : GBoolean; cdecl;
function gtkDrawAfter(Widget: PGtkWidget; area: PGDKRectangle;
data: gPointer) : GBoolean; cdecl;
function gtkExposeEventAfter(Widget: PGtkWidget; Event : PGDKEventExpose;
Data: gPointer): GBoolean; cdecl;
function gtkfrmactivate( widget: PGtkWidget; Event : TgdkEventFocus;
data: gPointer) : GBoolean; cdecl;
function gtkfrmdeactivate( widget: PGtkWidget; Event : TgdkEventFocus;
data: gPointer) : GBoolean; cdecl;
function GTKMap(Widget: PGTKWidget; Data: gPointer): GBoolean; cdecl;
function GTKKeyUpDown(Widget: PGtkWidget; Event : pgdkeventkey;
Data: gPointer) : GBoolean; cdecl;
function GTKFocusCB( widget: PGtkWidget; event:PGdkEventFocus; data: gPointer) : GBoolean; cdecl;
function GTKKillFocusCB(widget: PGtkWidget; event:PGdkEventFocus; data: gPointer) : GBoolean; cdecl;
function gtkdestroyCB(widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
function gtkdeleteCB( widget : PGtkWidget; event : PGdkEvent; data : gPointer) : GBoolean; cdecl;
function gtkresizeCB( widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
function gtkMonthChanged(Widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
procedure DeliverMouseMoveMessage(Widget:PGTKWidget; Event: PGDKEventMotion;
AWinControl: TWinControl);
function ControlGetsMouseMoveBefore(AControl: TControl): boolean;
function gtkMotionNotify(Widget:PGTKWidget; Event: PGDKEventMotion;
Data: gPointer): GBoolean; cdecl;
function GTKMotionNotifyAfter(widget:PGTKWidget; event: PGDKEventMotion;
data: gPointer): GBoolean; cdecl;
function ControlGetsMouseDownBefore(AControl: TControl): boolean;
procedure DeliverMouseDownMessage(widget: PGtkWidget; event : pgdkEventButton;
AWinControl: TWinControl);
function gtkMouseBtnPress(widget: PGtkWidget; event : pgdkEventButton;
data: gPointer) : GBoolean; cdecl;
function gtkMouseBtnPressAfter(widget: PGtkWidget; event : pgdkEventButton;
data: gPointer) : GBoolean; cdecl;
function ControlGetsMouseUpBefore(AControl: TControl): boolean;
procedure DeliverMouseUpMessage(widget: PGtkWidget; event : pgdkEventButton;
AWinControl: TWinControl);
function gtkMouseBtnRelease(widget: PGtkWidget; event : pgdkEventButton;
data: gPointer) : GBoolean; cdecl;
function gtkMouseBtnReleaseAfter(widget: PGtkWidget; event : pgdkEventButton;
data: gPointer) : GBoolean; cdecl;
function gtkclickedCB( widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
function gtkOpenDialogRowSelectCB( widget : PGtkWidget; row : gint;
column : gint; event : pgdkEventButton; data : gPointer ) : GBoolean; cdecl;
function gtkDialogOKclickedCB( widget: PGtkWidget;
data: gPointer) : GBoolean; cdecl;
function gtkDialogCancelclickedCB(widget: PGtkWidget; data: gPointer): GBoolean;cdecl;
function gtkDialogHelpclickedCB(widget: PGtkWidget; data: gPointer): GBoolean;cdecl;
function gtkDialogApplyclickedCB(widget: PGtkWidget; data: gPointer): GBoolean; cdecl;
function gtkDialogCloseQueryCB(widget: PGtkWidget; data: gPointer): GBoolean; cdecl;
procedure UpdateDetailView(OpenDialog: TOpenDialog);
function GTKDialogKeyUpDownCB(Widget: PGtkWidget; Event : pgdkeventkey;
Data: gPointer) : GBoolean; cdecl;
function GTKDialogRealizeCB(Widget: PGtkWidget; Data: Pointer): GBoolean; cdecl;
function GTKDialogFocusInCB(widget: PGtkWidget; data: gPointer): GBoolean; cdecl;
function GTKDialogSelectRowCB(widget: PGtkWidget; Row, Column: gInt;
bevent: pgdkEventButton; data: gPointer): GBoolean; cdecl;
function GTKDialogMenuActivateCB(widget: PGtkWidget; data: gPointer): GBoolean; cdecl;
function gtkDialogDestroyCB(widget: PGtkWidget; data: gPointer): GBoolean; cdecl;
function gtkpressedCB( widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
function gtkenterCB(widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
function gtkleaveCB(widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
function gtkmovecursorCB(widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
function gtksize_allocateCB(widget: PGtkWidget; size :pGtkAllocation;
data: gPointer) : GBoolean; cdecl;
function gtksize_allocate_client(widget: PGtkWidget; size :pGtkAllocation;
data: gPointer) : GBoolean; cdecl;
function gtkswitchpage(widget: PGtkWidget; page: Pgtkwidget; pagenum : integer;
data: gPointer) : GBoolean; cdecl;
function gtkconfigureevent( widget: PGtkWidget; event : PgdkEventConfigure;
data: gPointer) : GBoolean; cdecl;
function gtkreleasedCB( widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
function gtkInsertText( widget: PGtkWidget; char : pChar; NewTextLength : Integer; Position : pgint; data: gPointer) : GBoolean; cdecl;
function gtkDeleteText( widget: PGtkWidget; Startpos, EndPos : Integer; data: gPointer) : GBoolean; cdecl;
function gtkSetEditable( widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
function gtkMoveWord( widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
function gtkMovePage( widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
function gtkMoveToRow( widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
function gtkMoveToColumn( widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
function gtkKillChar( widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
function gtkKillWord( widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
function gtkKillLine( widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
function gtkCutToClip( widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
function gtkCopyToClip( widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
function gtkPasteFromClip( widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
function gtkValueChanged(widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
function gtkTimerCB(Data: gPointer): gint; cdecl;
function gtkFocusInNotifyCB (widget : PGtkWidget; event : PGdkEvent;
data : gpointer) : GBoolean; cdecl;
function gtkFocusOutNotifyCB (widget : PGtkWidget; event : PGdkEvent;
data : gpointer) : GBoolean; cdecl;
function GTKHScrollCB(Adjustment: PGTKAdjustment; data: GPointer): GBoolean; cdecl;
function GTKVScrollCB(Adjustment: PGTKAdjustment;
data: GPointer): GBoolean; cdecl;
function GTKKeySnooper(Widget: PGtkWidget; Event: PGdkEventKey;
FuncData: gPointer): gInt; cdecl;
function gtkYearChanged(Widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
procedure ClipboardSelectionReceivedHandler(TargetWidget: PGtkWidget;
SelectionData: PGtkSelectionData; TimeID: cardinal; Data: Pointer); cdecl;
procedure ClipboardSelectionRequestHandler(TargetWidget: PGtkWidget;
SelectionData: PGtkSelectionData; Info: cardinal; TimeID: cardinal;
Data: Pointer); cdecl;
function ClipboardSelectionLostOwnershipHandler(TargetWidget: PGtkWidget;
EventSelection: PGdkEventSelection; Data: Pointer): cardinal; cdecl;
Procedure GTKStyleChanged(Widget: PGtkWidget; previous_style : PGTKStyle; Data: Pointer); cdecl;
function DeliverPostMessage(const Target: Pointer; var TheMessage): GBoolean;
function DeliverMessage(const Target: Pointer; var AMessage): Integer;
(* gtkDragCallback.inc headers *)
Function edit_drag_data_received(widget : pgtkWidget;
Context : pGdkDragContext;
X : Integer;
Y : Integer;
seldata : pGtkSelectionData;
info : Integer;
time : Integer;
data : pointer) : GBoolean; cdecl;
Function edit_source_drag_data_get(widget : pgtkWidget;
Context : pGdkDragContext;
Selection_data : pGtkSelectionData;
info : Integer;
time : Integer;
data : pointer) : GBoolean; cdecl;
Function Edit_source_drag_data_delete (widget : pGtkWidget;
context : pGdkDragContext;
data : gpointer): gBoolean ; cdecl;
(* gtkListViewCallback.inc headers *)
function gtkLVHScroll(AList: PGTKCList; AData: gPointer): GBoolean; cdecl;
function gtkLVVScroll(AList: PGTKCList; AData: gPointer): GBoolean; cdecl;
function gtkLVAbortColumnResize(AList: PGTKCList; AData: gPointer): GBoolean; cdecl;
function gtkLVResizeColumn(AList: PGTKCList; AColumn, AWidth: Integer; AData: gPointer): GBoolean; cdecl;
function gtkLVClickColumn(AList: PGTKCList; AColumn: Integer; AData: gPointer): GBoolean; cdecl;
function gtkLVRowMove(AList: PGTKCList; AnOldIdx, ANewIdx: Integer; AData: gPointer): GBoolean; cdecl;
function gtkLVSelectRow(AList: PGTKCList; ARow, AColumn: Integer; AEvent: PGDKEventButton; AData: gPointer): GBoolean; cdecl;
function gtkLVUnSelectRow(AList: PGTKCList; ARow, AColumn: Integer; AEvent: PGDKEventButton; AData: gPointer): GBoolean; cdecl;
function gtkLVToggleFocusRow(AList: PGTKCList; AData: gPointer): GBoolean; cdecl;
function gtkLVSelectAll(AList: PGTKCList; AData: gPointer): GBoolean; cdecl;
function gtkLVUnSelectAll(AList: PGTKCList; AData: gPointer): GBoolean; cdecl;
function gtkLVEndSelection(AList: PGTKCList; AData: gPointer): GBoolean; cdecl;
(* gtkComboBoxCallback.inc headers *)
function gtkComboBoxShowCB(widget: PGtkWidget; data: gPointer): GBoolean; cdecl;
function gtkComboBoxHideCB(widget: PGtkWidget; data: gPointer): GBoolean; cdecl;
(* moved from TGTKObject.CreateComponent *)
procedure Set_RC_Name(Sender : TObject; AWidget: PGtkWidget);
(* GTKProc.inc headers *)
procedure RaiseException(const Msg: string);
function CreatePChar(const s: string): PChar;
function ComparePChar(P1, P2: PChar): boolean;
function FindChar(c: char; p:PChar; Max: integer): integer;
function GtkWidgetIsA(Widget: PGtkWidget; AType: TGtkType): boolean;
function WidgetIsDestroyingHandle(Widget: PGtkWidget): boolean;
procedure SetWidgetIsDestroyingHandle(Widget: PGtkWidget);
function ComponentIsDestroyingHandle(AWinControl: TWinControl): boolean;
function LockOnChange(GtkObject: PGtkObject; LockOffset: integer): integer;
procedure SetComboBoxText(ComboWidget: PGtkCombo; NewText: PChar);
function GetComboBoxItemIndex(ComboBox: TComboBox): integer;
procedure SetComboBoxItemIndex(ComboBox: TComboBox; Index: integer);
function GtkPaintMessageToPaintMessage(GtkPaintMsg: TLMGtkPaint): TLMPaint;
function NewGDIRawImage(const AWidth, AHeight: Integer; const ADepth: Byte): PGDIRawImage;
function AllocGDKColor(const AColor: LongInt): TGDKColor;
function CopyDCData(DestinationDC, SourceDC: TDeviceContext): Boolean;
Function RegionType(RGN : PGDKRegion) : Longint;
Procedure SelectGDIRegion(const DC: HDC);
Procedure FreeGDIColor(var GDIColor : TGDIColor);
Procedure AllocGDIColor(DC : hDC; var GDIColor : TGDIColor);
procedure SetGDIColorRef(var GDIColor : TGDIColor; NewColorRef: TColorRef);
Procedure EnsureGCColor(DC: hDC; ColorType: TDevContextsColorType;
IsSolidBrush: Boolean; AsBackground: Boolean);
function GetIndexAsKey(p: pointer): pointer;
function GetRGBAsKey(p: pointer): pointer;
function PaletteIndexExists(Pal : PGDIObject; I : longint): Boolean;
function PaletteRGBExists(Pal : PGDIObject; RGB : longint): Boolean;
function PaletteAddIndex(Pal : PGDIObject; I, RGB : Longint): Boolean;
function PaletteDeleteIndex(Pal : PGDIObject; I : Longint): Boolean;
function PaletteIndexToRGB(Pal : PGDIObject; I : longint): longint;
function PaletteRGBToIndex(Pal : PGDIObject; RGB : longint): longint;
Procedure InitializePalette(Pal : PGDIObject; Entries : PPALETTEENTRY; RGBCount : Longint);
function GTKEventState2ShiftState(KeyState: Word): TShiftState;
function KeyToListCode(KeyCode, VirtKeyCode: Word; Extended: boolean): integer;
procedure GetGTKKeyInfo(const Event: PGDKEventKey; var KeyCode,VirtualKey: Word;
var SysKey, Extended, Toggle: Boolean);
procedure Uncapturehandle;
procedure StoreCommonDialogSetup(ADialog: TCommonDialog);
procedure DestroyCommonDialogAddOns(ADialog: TCommonDialog);
function ObjectToGTKObject(const AObject: TObject): gtk_object;
function GetMainWidget(const Widget: Pointer): Pointer;
procedure SetMainWidget(const ParentWidget, ChildWidget: Pointer);
function GetFixedWidget(const Widget: Pointer): Pointer;
procedure SetFixedWidget(const ParentWidget, FixedWidget: Pointer);
Procedure FixedMoveControl(Parent, Child : PGTKWIdget; Left, Top : Longint);
Procedure FixedPutControl(Parent, Child : PGTKWIdget; Left, Top : Longint);
Function GetControlWindow(Control: Pointer) : PGDKWindow;
function GetDCOffset(DC: TDeviceContext): TPoint;
function CreateWidgetInfo(const Widget: Pointer): PWinWidgetInfo;
function GetWidgetInfo(const Widget: Pointer; const Create: Boolean): PWinWidgetInfo;
procedure FreeWinWidgetInfo(Widget: Pointer);
procedure DestroyWidget(Widget: PGtkWidget);
function GetGtkNoteBookDummyPage(ANoteBookWidget: PGtkNoteBook): PGtkWidget;
procedure SetGtkNoteBookDummyPage(ANoteBookWidget: PGtkNoteBook;
DummyWidget: PGtkWidget);
procedure UpdateNoteBookClientWidget(ANoteBook: TObject);
procedure SetLCLObject(const Widget: Pointer; const AnObject: TObject);
function GetLCLObject(const Widget: Pointer): TObject;
procedure SetHiddenLCLObject(const Widget: Pointer; const AnObject: TObject);
function GetHiddenLCLObject(const Widget: Pointer): TObject;
function GetWidgetOrigin(TheWidget: PGtkWidget): TPoint;
function GetWidgetClientOrigin(TheWidget: PGtkWidget): TPoint;
function TranslateGdkPointToClientArea(SourceWindow: PGdkWindow;
SourcePos: TPoint; DestinationWidget: PGtkWidget): TPoint;
procedure UpdateMouseCaptureControl;
procedure CheckMouseCaptureHandle(CurrentInputWidget: PGtkWidget);
procedure SetCursor(AWinControl : TWinControl; Data: Pointer);
type
TConnectSignalFlag = (
csfAfter, // connect after signal
csfConnectRealize, // auto connect realize handler
csfUpdateSignalMask, // extend signal mask for gdkwindow
csfDesignOnly // mark signal as design only
);
TConnectSignalFlags = set of TConnectSignalFlag;
TDesignSignalType = (
dstUnknown,
dstMousePress,
dstMouseMotion,
dstMouseRelease,
dstDrawAfter,
dstExposeAfter
);
TDesignSignalTypes = set of TDesignSignalType;
TDesignSignalMask = longint;
const
DesignSignalNames: array[TDesignSignalType] of PChar = (
'',
'button-press-event',
'motion-notify-event',
'button-release-event',
'draw',
'expose-event'
);
DesignSignalAfter: array[TDesignSignalType] of boolean =
(false,false,false,false,true,true);
DesignSignalFuncs: array[TDesignSignalType] of Pointer = (
nil,
@gtkMouseBtnPress,
@gtkMotionNotify,
@gtkMouseBtnRelease,
@gtkDrawAfter,
@gtkExposeEventAfter
);
var
DesignSignalMasks: array[TDesignSignalType] of TDesignSignalMask;
procedure InitDesignSignalMasks;
function DesignSignalNameToType(Name: PChar; After: boolean): TDesignSignalType;
function GetDesignSignalMask(Widget: PGtkWidget): TDesignSignalMask;
procedure SetDesignSignalMask(Widget: PGtkWidget; NewMask: TDesignSignalMask);
function GetDesignOnlySignalFlag(Widget: PGtkWidget;
DesignSignalType: TDesignSignalType): boolean;
procedure ConnectSignal(const AnObject:gtk_Object; const ASignal: PChar;
const ACallBackProc: Pointer; LCLComponent: TComponent;
const ReqSignalMask: TGdkEventMask; SFlags: TConnectSignalFlags);
procedure ConnectSignal(const AnObject:gtk_Object; const ASignal: PChar;
const ACallBackProc: Pointer; LCLComponent: TComponent;
const ReqSignalMask: TGdkEventMask);
procedure ConnectSignalAfter(const AnObject:gtk_Object; const ASignal: PChar;
const ACallBackProc: Pointer; LCLComponent: TComponent;
const ReqSignalMask: TGdkEventMask);
procedure ConnectSignal(const AnObject:gtk_Object; const ASignal: PChar;
const ACallBackProc: Pointer; LCLComponent: TComponent);
procedure ConnectSignalAfter(const AnObject:gtk_Object; const ASignal: PChar;
const ACallBackProc: Pointer; LCLComponent: TComponent);
procedure ConnectInternalWidgetsSignals(AWidget: PGtkWidget;
AWinControl: TWinControl);
procedure SetAccelGroup(const Widget: Pointer; const AnAccelGroup: Pointer);
function GetAccelGroup(const Widget: Pointer): Pointer;
procedure SetAccelKey(const Widget: Pointer; const AKey: Integer);
function GetAccelKey(const Widget: Pointer): Integer;
procedure Accelerate(const Widget : Pointer; const Msg : TLMShortCut;
const Signal : string);
procedure GetGdkPixmapFromGraphic(LCLGraphic: TGraphic;
var IconImg, IconMask: PGdkPixmap; var Width, Height: integer);
procedure GetGdkPixmapFromMenuItem(LCLMenuItem: TMenuItem;
var IconImg, IconMask: PGdkPixmap; var Width, Height: integer);
function MENU_ITEM_CLASS(widget: PGtkWidget): PGtkMenuItemClass;
function CHECK_MENU_ITEM_CLASS(widget: PGtkWidget): PGtkCheckMenuItemClass;
function GetRadioMenuItemGroup(LCLMenuItem: TMenuItem): PGSList;
function GetRadioMenuItemGroup(MenuItem: PGtkRadioMenuItem): PGSList;
procedure UpdateRadioGroupChecks(RadioGroup: PGSList);
procedure DrawMenuItemIcon(MenuItem: PGtkCheckMenuItem;
Area: PGdkRectangle); cdecl;
procedure MenuSizeRequest(widget:PGtkWidget; requisition:PGtkRequisition); cdecl;
procedure SetMenuItemLabelText(LCLMenuItem: TMenuItem;
MenuItemWidget: PGtkWidget);
procedure CreateInnerMenuItem(LCLMenuItem: TMenuItem;
MenuItemWidget: PGtkWidget);
function CreateMenuItem(LCLMenuItem: TMenuItem): Pointer;
procedure SaveSizeNotification(Widget: PGtkWidget);
procedure SaveClientSizeNotification(FixWidget: PGtkWidget);
function CreateTopologicalSortedWidgets(HashArray: TDynHashArray): TList;
Procedure ReportNotObsolete(const Texts : String);
function TGDKColorToTColor(value : TGDKColor) : TColor;
function TColortoTGDKColor(value : TColor) : TGDKColor;
procedure UpdateSysColorMap(Widget: PGtkWidget);
function WaitForClipbrdAnswerDummyTimer(Client: Pointer): gint; cdecl;
function WaitForClipboardAnswer(c: PClipboardEventData): boolean;
function RequestSelectionData(ClipboardWidget: PGtkWidget;
ClipboardType: TClipboardType; FormatID: cardinal): TGtkSelectionData;
procedure FreeClipboardTargetEntries(ClipboardType: TClipboardType);
function IndexOfStyle(const WName : String): integer;
Procedure ReleaseStyle(const WName : String);
function GetStyle(const WName : String) : PGTKStyle;
Function GetStyleWidget(WName : String) : PGTKWidget;
function GetDefaultFont : PGDKFont;
Function GetSysGCValues(Color : TColorRef) : TGDKGCValues;
Function DeleteAmpersands(var Str : String) : Longint;
function Ampersands2Underscore(Src: PChar) : PChar;
Function GDKPixel2GDIRGB(Pixel : Longint; Visual : PGDKVisual;
Colormap : PGDKColormap) : TGDIRGB;
Function GetWindowDecorations(AForm : TCustomForm) : Longint;
Function GetWindowFunction(AForm : TCustomForm) : Longint;
implementation
procedure Set_RC_Name(Sender : TObject; AWidget: PGtkWidget);
var RCName: string;
AComponent: TComponent;
begin
if (AWidget=nil) or (not (Sender is TComponent)) then exit;
// check if a unique name can be created
AComponent:=TComponent(Sender);
while (AComponent<>nil) and (AComponent.Name<>'') do begin
AComponent:=AComponent.Owner;
end;
if (AComponent=nil) or (AComponent=TComponent(Application)) then begin
// create unique name
AComponent:=TComponent(Sender);
RCName:=AComponent.Name;
while (AComponent<>nil) do begin
AComponent:=TComponent(AComponent.Owner);
if (AComponent<>nil) and (AComponent.Name<>'') then
RCName:=AComponent.Name+'_'+RCName;
end;
gtk_widget_set_name(AWidget,PChar(RCName));
gtk_widget_set_rc_style(AWidget);
end;
if (Sender is TCustomForm)
and ((Application.MainForm=TCustomForm(Sender))
or (Application.MainForm=nil))
then
UpdateSysColorMap(AWidget);
end;
{$I gtkproc.inc}
{$I gtkcallback.inc}
end.