lazarus/lcl/interfaces/gtk2/gtk2lclintf.inc
2008-07-22 09:48:15 +00:00

121 lines
4.0 KiB
PHP

{%MainUnit gtk2int.pp}
{ $Id$ }
{******************************************************************************
All GTK2 interface communication implementations.
Initial Revision : Sat Jan 17 19:00:00 2004
!! Keep alphabetical !!
Support routines go to gtk2proc.pp
******************************************************************************
Implementation
******************************************************************************
*****************************************************************************
* *
* This file is part of the Lazarus Component Library (LCL) *
* *
* See the file COPYING.modifiedLGPL.txt, included in this distribution, *
* for details about the copyright. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
* *
*****************************************************************************
}
//##apiwiz##sps## // Do not remove
procedure TGtk2WidgetSet.DrawGrid(DC: HDC; const R: TRect; DX, DY: Integer);
var
X, Y: Integer;
W, H: Integer;
SavedDC: Integer;
begin
SavedDC := SaveDC(DC);
try
W := (R.Right - R.Left - 1) div DX;
H := (R.Bottom - R.Top - 1) div DY;
// remove rows from clip rect
for Y := 0 to H do
begin
ExcludeClipRect(DC, R.Left, R.Top + Y * DY + 1, R.Right + 1, R.Top + (Y + 1) * DY);
end;
// draw vertical lines cross excluded rows -> only grid cross points painted
for X := 0 to W do
begin
if MoveToEx(DC, R.Left + X * DX, R.Top, nil) then
LineTo(DC, R.Left + X * DX, R.Bottom + 1);
end;
finally
RestoreDC(DC, SavedDC);
end;
end;
function TGtk2WidgetSet.ExtUTF8Out(DC: HDC; X, Y: Integer; Options: Longint;
Rect: PRect; Str: PChar; Count: Longint; Dx: PInteger): Boolean;
begin
// all fonts are UTF-8 under gtk2 => no mapping needed
Result:=ExtTextOut(DC,X,Y,Options,Rect,Str,Count,Dx);
end;
{------------------------------------------------------------------------------
Function: RawImage_QueryDescription
Params: AFlags:
ADesc:
Returns:
------------------------------------------------------------------------------}
//function TGtk2WidgetSet.RawImage_QueryDescription(AFlags: TRawImageQueryFlags; var ADesc: TRawImageDescription): Boolean;
//begin
// // override only when queried formats are different from screen description
//end;
function TGtk2WidgetSet.TextUTF8Out(DC: HDC; X, Y: Integer; Str: PChar;
Count: Longint): Boolean;
begin
// all fonts are UTF-8 under gtk2 => no mapping needed
Result := TextOut(DC, X, Y, Str, Count);
end;
function TGtk2WidgetSet.ComboBoxDropDown(Handle: HWND; DropDown: boolean): boolean;
var
WidgetInfo: PWidgetInfo;
Combo: PGtkComboBox;
begin
WidgetInfo := GetWidgetInfo(Pointer(Handle), False);
Combo := PGtkComboBox(WidgetInfo^.CoreWidget);
case DropDown of
True : gtk_combo_box_popup(Combo);
False: gtk_combo_box_popdown(Combo);
end;
Result:=true;
end;
function TGtk2WidgetSet.SetComboMinDropDownSize(Handle: HWND; MinItemsWidth,
MinItemsHeight, MinItemCount: integer): boolean;
var
p: PGtkWidget;
Menu: PGtkWidget;
Requisition: TGtkRequisition;
begin
Result:=True;
p := GetWidgetInfo(Pointer(Handle), False)^.CoreWidget;
Menu := PGtkWidget(g_object_get_data(G_OBJECT(p), 'Menu'));
if Menu<>nil then begin
Requisition.width := MinItemsWidth;
Requisition.height := MinItemsHeight * MinItemCount;
gtk_widget_size_request(Menu, @Requisition);
end;
end;
//##apiwiz##eps## // Do not remove, no wizard declaration after this line