Finishes separating TGtk2WSCustomMemo from the gtk1 counterpart.

git-svn-id: trunk@14863 -
This commit is contained in:
sekelsenmat 2008-04-17 10:11:42 +00:00
parent 58d9858249
commit e8e001fd1d
4 changed files with 59 additions and 22 deletions

View File

@ -58,6 +58,8 @@ uses
gtk2callback.inc headers
}
const
gtkevent_window_state_event = 'window-state-event';
function GTKWindowStateEventCB(widget: PGtkWidget;
state: PGdkEventWindowState;

View File

@ -246,6 +246,40 @@ begin
// not supported
end;
class procedure TGtk2WSCustomMemo.SetCharCase(const ACustomEdit: TCustomEdit;
NewCase: TEditCharCase);
begin
// TODO: implement me!
end;
class procedure TGtk2WSCustomMemo.SetMaxLength(const ACustomEdit: TCustomEdit;
NewLength: integer);
var
Widget: PGtkWidget;
begin
Widget:=PGtkWidget(ACustomEdit.Handle);
if GtkWidgetIsA(Widget, GTK_TYPE_ENTRY) then
gtk_entry_set_max_length(GTK_ENTRY(Widget), guint16(NewLength));
end;
class procedure TGtk2WSCustomMemo.SetReadOnly(const ACustomEdit: TCustomEdit;
NewReadOnly: boolean);
var
Widget: PGtkWidget;
begin
Widget:=PGtkWidget(ACustomEdit.Handle);
if GtkWidgetIsA(Widget, GTK_TYPE_ENTRY) then
gtk_entry_set_editable(GTK_ENTRY(Widget), not ACustomEdit.ReadOnly);
end;
class procedure TGtk2WSCustomMemo.GetPreferredSize(
const AWinControl: TWinControl; var PreferredWidth, PreferredHeight: integer;
WithThemeSpace: Boolean);
begin
GetGTKDefaultWidgetSize(AWinControl,PreferredWidth,PreferredHeight,
WithThemeSpace);
end;
class function TGtk2WSCustomMemo.GetSelStart(const ACustomEdit: TCustomEdit
): integer;
var

View File

@ -139,7 +139,7 @@ begin
SetCallback(LM_VSCROLL, PGtkObject(AWidget), AWidgetInfo^.LCLObject);
end;
g_signal_connect(PGtkObject(AWidgetInfo^.CoreWidget), 'window-state-event',
g_signal_connect(PGtkObject(AWidgetInfo^.CoreWidget), gtkevent_window_state_event,
gtk_signal_func(@GTKWindowStateEventCB), AWidgetInfo^.LCLObject);
end;
@ -186,11 +186,7 @@ begin
else AResizable := FormResizableMap[ABorderStyle];
// gtk_window_set_policy is deprecated in Gtk2
{$IFDEF Gtk2}
gtk_window_set_resizable(GTK_WINDOW(P), gboolean(AResizable));
{$ELSE}
gtk_window_set_policy(GTK_WINDOW(P), AResizable, AResizable, 0);
{$ENDIF}
gtk_window_set_resizable(GTK_WINDOW(P), gboolean(AResizable));
// Sets the title
gtk_window_set_title(PGtkWindow(P), AParams.Caption);
@ -210,10 +206,8 @@ begin
Box := CreateFormContents(ACustomForm, P);
gtk_container_add(PGtkContainer(P), Box);
{$IfDef GTK2}
//so we can double buffer ourselves, eg, the Form Designer
gtk_widget_set_double_buffered(Box, False);
{$EndIf}
//so we can double buffer ourselves, eg, the Form Designer
gtk_widget_set_double_buffered(Box, False);
gtk_widget_show(Box);

View File

@ -24,19 +24,16 @@ unit Gtk2WSStdCtrls;
{$mode objfpc}{$H+}
{$PACKRECORDS c}
interface
uses
Classes, SysUtils, Math, Controls, Graphics,
////////////////////////////////////////////////////
// I M P O R T A N T
////////////////////////////////////////////////////
// To get as little as posible circles,
// uncomment only when needed for registration
////////////////////////////////////////////////////
StdCtrls, LMessages, LCLType, LCLProc,
////////////////////////////////////////////////////
// Bindings
glib2, gdk2, gtk2, Pango,
// RTL, FCL, LCL
Classes, SysUtils, Math, Controls, Graphics,
StdCtrls, LMessages, LCLType, LCLProc,
// Widgetset
WSControls, WSProc, WSStdCtrls, WSLCLClasses, GtkWSStdCtrls, Gtk2Int, GtkDef,
Gtk2CellRenderer, GTKWinApiWindow, GtkGlobals, GtkProc, InterfaceBase,
GtkWSPrivate, Gtk2WSPrivate, GtkExtra;
@ -197,23 +194,33 @@ type
{ TGtk2WSCustomMemo }
TGtk2WSCustomMemo = class(TGtkWSCustomMemo)
TGtk2WSCustomMemo = class(TWSCustomMemo)
private
protected
class procedure SetCallbacks(const AGtkWidget: PGtkWidget; const AWidgetInfo: PWidgetInfo); virtual;
public
class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
class function GetSelStart(const ACustomEdit: TCustomEdit): integer; override;
class function GetSelLength(const ACustomEdit: TCustomEdit): integer; override;
class function GetStrings(const ACustomMemo: TCustomMemo): TStrings; override;
class procedure SetAlignment(const ACustomMemo: TCustomMemo; const AAlignment: TAlignment); override;
class procedure SetColor(const AWinControl: TWinControl);override;
class procedure SetFont(const AWinControl: TWinControl;const AFont : TFont);override;
class procedure SetColor(const AWinControl: TWinControl); override;
class procedure SetFont(const AWinControl: TWinControl;const AFont : TFont); override;
class procedure SetSelStart(const ACustomEdit: TCustomEdit; NewStart: integer); override;
class procedure SetSelLength(const ACustomEdit: TCustomEdit; NewLength: integer); override;
class procedure SetWantTabs(const ACustomMemo: TCustomMemo; const NewWantTabs: boolean); override;
class procedure SetEchoMode(const ACustomEdit: TCustomEdit; NewMode: TEchoMode); override;
class procedure SetPasswordChar(const ACustomEdit: TCustomEdit; NewChar: char); override;
class procedure SetCharCase(const ACustomEdit: TCustomEdit; NewCase: TEditCharCase); override;
class procedure SetMaxLength(const ACustomEdit: TCustomEdit; NewLength: integer); override;
class procedure SetReadOnly(const ACustomEdit: TCustomEdit; NewReadOnly: boolean); override;
class procedure GetPreferredSize(const AWinControl: TWinControl;
var PreferredWidth, PreferredHeight: integer;
WithThemeSpace: Boolean); override;
end;
{ TGtk2WSEdit }