mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-15 08:59:10 +02:00
add csEdit to GTK2 interface to start removing use of GtkOldEditable
git-svn-id: trunk@4649 -
This commit is contained in:
parent
10e86b989c
commit
11880858a9
@ -3084,8 +3084,10 @@ begin
|
|||||||
case TControl(Sender).fCompStyle of
|
case TControl(Sender).fCompStyle of
|
||||||
csComboBox:
|
csComboBox:
|
||||||
Widget:= PGtkWidget(PGtkCombo(Handle)^.entry);
|
Widget:= PGtkWidget(PGtkCombo(Handle)^.entry);
|
||||||
|
{$IfDef GTK1}
|
||||||
csEdit, csMemo:
|
csEdit, csMemo:
|
||||||
Widget:= GetWidgetInfo(Pointer(Handle), true)^.ImplementationWidget;
|
Widget:= GetWidgetInfo(Pointer(Handle), true)^.ImplementationWidget;
|
||||||
|
{$EndIf}
|
||||||
else
|
else
|
||||||
Widget:= nil;
|
Widget:= nil;
|
||||||
end;
|
end;
|
||||||
@ -3107,11 +3109,13 @@ begin
|
|||||||
csComboBox:
|
csComboBox:
|
||||||
Result:= Abs(PGtkOldEditable(PGtkCombo(Handle)^.entry)^.selection_end_pos
|
Result:= Abs(PGtkOldEditable(PGtkCombo(Handle)^.entry)^.selection_end_pos
|
||||||
- PGtkOldEditable(PGtkCombo(Handle)^.entry)^.selection_start_pos);
|
- PGtkOldEditable(PGtkCombo(Handle)^.entry)^.selection_start_pos);
|
||||||
|
{$IfDef GTK1}
|
||||||
csEdit, csMemo:
|
csEdit, csMemo:
|
||||||
begin
|
begin
|
||||||
Widget:= GetWidgetInfo(Pointer(Handle), true)^.ImplementationWidget;
|
Widget:= GetWidgetInfo(Pointer(Handle), true)^.ImplementationWidget;
|
||||||
Result:= Abs(PGtkOldEditable(Widget)^.selection_end_pos - PGtkOldEditable(Widget)^.selection_start_pos);
|
Result:= Abs(PGtkOldEditable(Widget)^.selection_end_pos - PGtkOldEditable(Widget)^.selection_start_pos);
|
||||||
end;
|
end;
|
||||||
|
{$EndIf}
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -3132,8 +3136,10 @@ begin
|
|||||||
csComboBox:
|
csComboBox:
|
||||||
Widget:=PGtkCombo(Handle)^.entry;
|
Widget:=PGtkCombo(Handle)^.entry;
|
||||||
|
|
||||||
|
{$IfDef GTK1}
|
||||||
csEdit, csMemo:
|
csEdit, csMemo:
|
||||||
Widget:=GetWidgetInfo(Pointer(Handle), true)^.ImplementationWidget;
|
Widget:=GetWidgetInfo(Pointer(Handle), true)^.ImplementationWidget;
|
||||||
|
{$EndIf}
|
||||||
|
|
||||||
else
|
else
|
||||||
Widget:=nil;
|
Widget:=nil;
|
||||||
@ -3152,8 +3158,10 @@ begin
|
|||||||
csComboBox:
|
csComboBox:
|
||||||
Widget:=PGtkCombo(Handle)^.entry;
|
Widget:=PGtkCombo(Handle)^.entry;
|
||||||
|
|
||||||
|
{$IfDef GTK1}
|
||||||
csEdit, csMemo:
|
csEdit, csMemo:
|
||||||
Widget:=GetWidgetInfo(Pointer(Handle), true)^.ImplementationWidget;
|
Widget:=GetWidgetInfo(Pointer(Handle), true)^.ImplementationWidget;
|
||||||
|
{$EndIf}
|
||||||
|
|
||||||
else
|
else
|
||||||
Widget:=nil;
|
Widget:=nil;
|
||||||
@ -3416,6 +3424,7 @@ begin
|
|||||||
TComboBox(Sender).Handle)^.entry)));
|
TComboBox(Sender).Handle)^.entry)));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{$IfDef GTK1}
|
||||||
csEdit: Text:= StrPas(gtk_entry_get_text(PgtkEntry(TWinControl(Sender).Handle)));
|
csEdit: Text:= StrPas(gtk_entry_get_text(PgtkEntry(TWinControl(Sender).Handle)));
|
||||||
|
|
||||||
csMemo : begin
|
csMemo : begin
|
||||||
@ -3424,6 +3433,7 @@ begin
|
|||||||
Text := StrPas(CS);
|
Text := StrPas(CS);
|
||||||
g_free(CS);
|
g_free(CS);
|
||||||
end;
|
end;
|
||||||
|
{$EndIf}
|
||||||
else
|
else
|
||||||
Result := False;
|
Result := False;
|
||||||
end;
|
end;
|
||||||
@ -3521,6 +3531,7 @@ begin
|
|||||||
if Str=nil then exit;
|
if Str=nil then exit;
|
||||||
|
|
||||||
if (Sender is TWinControl) then begin
|
if (Sender is TWinControl) then begin
|
||||||
|
{$IfDef GTK1}
|
||||||
case TWinControl(Sender).fCompStyle of
|
case TWinControl(Sender).fCompStyle of
|
||||||
csMemo:
|
csMemo:
|
||||||
begin
|
begin
|
||||||
@ -3531,7 +3542,8 @@ begin
|
|||||||
gtk_editable_insert_text(PGtkOldEditable(Widget),Str,StrLen(Str),@CurMemoLen);
|
gtk_editable_insert_text(PGtkOldEditable(Widget),Str,StrLen(Str),@CurMemoLen);
|
||||||
gtk_text_thaw(PGtkText(Widget));
|
gtk_text_thaw(PGtkText(Widget));
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
{$EndIf}
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -3698,6 +3710,7 @@ begin
|
|||||||
|
|
||||||
csGroupBox : gtk_frame_set_label(pgtkFrame(P),pLabel);
|
csGroupBox : gtk_frame_set_label(pgtkFrame(P),pLabel);
|
||||||
|
|
||||||
|
{$IfDef GTK1}
|
||||||
csEdit : begin
|
csEdit : begin
|
||||||
LockOnChange(PGtkObject(p),+1);
|
LockOnChange(PGtkObject(p),+1);
|
||||||
gtk_entry_set_text(pGtkEntry(P), pLabel);
|
gtk_entry_set_text(pGtkEntry(P), pLabel);
|
||||||
@ -3714,7 +3727,8 @@ begin
|
|||||||
gtk_text_thaw(PGtkText(P));
|
gtk_text_thaw(PGtkText(P));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
csPage:
|
{$EndIf}
|
||||||
|
csPage:
|
||||||
SetNotebookPageTabLabel;
|
SetNotebookPageTabLabel;
|
||||||
|
|
||||||
csComboBox :
|
csComboBox :
|
||||||
@ -4536,6 +4550,7 @@ begin
|
|||||||
SetCallback(LM_CHANGED,Sender);
|
SetCallback(LM_CHANGED,Sender);
|
||||||
End;
|
End;
|
||||||
|
|
||||||
|
{$IfDef GTK1}
|
||||||
csEdit:
|
csEdit:
|
||||||
begin
|
begin
|
||||||
SetCallback(LM_CHANGED, Sender);
|
SetCallback(LM_CHANGED, Sender);
|
||||||
@ -4554,7 +4569,8 @@ begin
|
|||||||
SetCallback(LM_PASTEFROMCLIP, Sender);
|
SetCallback(LM_PASTEFROMCLIP, Sender);
|
||||||
SetCallback(LM_INSERTTEXT, Sender);
|
SetCallback(LM_INSERTTEXT, Sender);
|
||||||
end;
|
end;
|
||||||
|
{$EndIf}
|
||||||
|
|
||||||
csFixed :
|
csFixed :
|
||||||
begin
|
begin
|
||||||
SetCallback(LM_HSCROLL,Sender);
|
SetCallback(LM_HSCROLL,Sender);
|
||||||
@ -5593,9 +5609,10 @@ begin
|
|||||||
csComboBox :
|
csComboBox :
|
||||||
p:=CreateComboBox(TComboBox(Sender));
|
p:=CreateComboBox(TComboBox(Sender));
|
||||||
|
|
||||||
|
{$IfDef GTK1}
|
||||||
csEdit :
|
csEdit :
|
||||||
p := gtk_entry_new();
|
p := gtk_entry_new();
|
||||||
|
{$EndIF}
|
||||||
csFileDialog, csOpenFileDialog, csSaveFileDialog, csSelectDirectoryDialog,
|
csFileDialog, csOpenFileDialog, csSaveFileDialog, csSelectDirectoryDialog,
|
||||||
csPreviewFileDialog:
|
csPreviewFileDialog:
|
||||||
InitializeFileDialog(TFileDialog(Sender),p,StrTemp);
|
InitializeFileDialog(TFileDialog(Sender),p,StrTemp);
|
||||||
@ -5712,6 +5729,7 @@ begin
|
|||||||
gtk_widget_show(p);
|
gtk_widget_show(p);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{$IfDef GTK1}
|
||||||
csMemo :
|
csMemo :
|
||||||
begin
|
begin
|
||||||
P := gtk_scrolled_window_new(nil, nil);
|
P := gtk_scrolled_window_new(nil, nil);
|
||||||
@ -5741,7 +5759,7 @@ begin
|
|||||||
|
|
||||||
SetupProps:= true;
|
SetupProps:= true;
|
||||||
end;
|
end;
|
||||||
|
{$EndIF}
|
||||||
csMenuBar :
|
csMenuBar :
|
||||||
begin
|
begin
|
||||||
P := gtk_menu_bar_new();
|
P := gtk_menu_bar_new();
|
||||||
@ -6845,6 +6863,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{$IfDef GTK1}
|
||||||
csEdit :
|
csEdit :
|
||||||
with TCustomEdit(Sender) do
|
with TCustomEdit(Sender) do
|
||||||
begin
|
begin
|
||||||
@ -6857,7 +6876,7 @@ begin
|
|||||||
(TCustomEdit(Sender).EchoMode = emNormal)
|
(TCustomEdit(Sender).EchoMode = emNormal)
|
||||||
and (TCustomEdit(Sender).PassWordChar=#0));
|
and (TCustomEdit(Sender).PassWordChar=#0));
|
||||||
end;
|
end;
|
||||||
|
{$EndIf}
|
||||||
csProgressBar :
|
csProgressBar :
|
||||||
with TProgressBar(Sender) do
|
with TProgressBar(Sender) do
|
||||||
begin
|
begin
|
||||||
@ -7045,6 +7064,7 @@ begin
|
|||||||
gtk_clist_thaw(GTK_CLIST(Widget));
|
gtk_clist_thaw(GTK_CLIST(Widget));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{$IfDef GTK1}
|
||||||
csMemo:
|
csMemo:
|
||||||
begin
|
begin
|
||||||
ImplWidget:= GetWidgetInfo(wHandle, true)^.ImplementationWidget;
|
ImplWidget:= GetWidgetInfo(wHandle, true)^.ImplementationWidget;
|
||||||
@ -7087,7 +7107,8 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
{$EndIf}
|
||||||
|
|
||||||
csSpinEdit:
|
csSpinEdit:
|
||||||
Begin
|
Begin
|
||||||
AnAdjustment:=gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(wHandle));
|
AnAdjustment:=gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(wHandle));
|
||||||
@ -8172,6 +8193,9 @@ end;
|
|||||||
{ =============================================================================
|
{ =============================================================================
|
||||||
|
|
||||||
$Log$
|
$Log$
|
||||||
|
Revision 1.419 2003/09/18 21:36:00 ajgenius
|
||||||
|
add csEdit to GTK2 interface to start removing use of GtkOldEditable
|
||||||
|
|
||||||
Revision 1.418 2003/09/18 12:15:01 mattias
|
Revision 1.418 2003/09/18 12:15:01 mattias
|
||||||
fixed is checks for TCustomXXX controls
|
fixed is checks for TCustomXXX controls
|
||||||
|
|
||||||
|
@ -70,7 +70,9 @@ type
|
|||||||
procedure AppendText(Sender: TObject; Str: PChar); override;
|
procedure AppendText(Sender: TObject; Str: PChar); override;
|
||||||
function GetText(Sender: TComponent; var Text: String): Boolean; override;
|
function GetText(Sender: TComponent; var Text: String): Boolean; override;
|
||||||
procedure SetLabel(Sender : TObject; Data : Pointer); override;
|
procedure SetLabel(Sender : TObject; Data : Pointer); override;
|
||||||
|
procedure HookSignals(Sender: TObject); override;
|
||||||
|
function SetProperties(Sender : TObject) : integer; override;
|
||||||
|
|
||||||
function GetCursorPos(var lpPoint: TPoint ): Boolean; override;
|
function GetCursorPos(var lpPoint: TPoint ): Boolean; override;
|
||||||
function LoadStockPixmap(StockID: longint) : HBitmap; override;
|
function LoadStockPixmap(StockID: longint) : HBitmap; override;
|
||||||
end;
|
end;
|
||||||
@ -980,6 +982,13 @@ begin
|
|||||||
StrPCopy(strTemp, Caption);
|
StrPCopy(strTemp, Caption);
|
||||||
|
|
||||||
case CompStyle of
|
case CompStyle of
|
||||||
|
csEdit :
|
||||||
|
begin
|
||||||
|
p := gtk_entry_new();
|
||||||
|
gtk_editable_set_editable (PGtkEditable(P), not TCustomEdit(Sender).ReadOnly);
|
||||||
|
gtk_widget_show_all(P);
|
||||||
|
end;
|
||||||
|
|
||||||
csMemo :
|
csMemo :
|
||||||
begin
|
begin
|
||||||
P := gtk_scrolled_window_new(nil, nil);
|
P := gtk_scrolled_window_new(nil, nil);
|
||||||
@ -1037,6 +1046,7 @@ var
|
|||||||
aTextIter1 : TGtkTextIter;
|
aTextIter1 : TGtkTextIter;
|
||||||
aTextIter2 : TGtkTextIter;
|
aTextIter2 : TGtkTextIter;
|
||||||
aTextBuffer : PGtkTextBuffer;
|
aTextBuffer : PGtkTextBuffer;
|
||||||
|
Pos : Integer;
|
||||||
begin
|
begin
|
||||||
Result := 0; //default value just in case nothing sets it
|
Result := 0; //default value just in case nothing sets it
|
||||||
|
|
||||||
@ -1066,6 +1076,12 @@ begin
|
|||||||
gtk_text_buffer_get_selection_bounds(aTextBuffer, @aTextIter1, nil);
|
gtk_text_buffer_get_selection_bounds(aTextBuffer, @aTextIter1, nil);
|
||||||
result := gtk_text_iter_get_offset(@aTextIter1);
|
result := gtk_text_iter_get_offset(@aTextIter1);
|
||||||
end;
|
end;
|
||||||
|
csEdit:
|
||||||
|
begin
|
||||||
|
Widget:= GTK_WIDGET(Pointer(Handle));
|
||||||
|
if not gtk_editable_get_selection_bounds(GTK_EDITABLE(Widget),@result, nil) then
|
||||||
|
result := gtk_editable_get_position(GTK_EDITABLE(Widget));
|
||||||
|
end;
|
||||||
else begin
|
else begin
|
||||||
result := inherited IntSendMessage3(LM_Message, Sender, data);
|
result := inherited IntSendMessage3(LM_Message, Sender, data);
|
||||||
exit;
|
exit;
|
||||||
@ -1087,6 +1103,14 @@ begin
|
|||||||
gtk_text_buffer_get_selection_bounds(aTextBuffer, @aTextIter1, @aTextIter2);
|
gtk_text_buffer_get_selection_bounds(aTextBuffer, @aTextIter1, @aTextIter2);
|
||||||
result:= Abs(gtk_text_iter_get_offset(@aTextIter2) - gtk_text_iter_get_offset(@aTextIter1));
|
result:= Abs(gtk_text_iter_get_offset(@aTextIter2) - gtk_text_iter_get_offset(@aTextIter1));
|
||||||
end;
|
end;
|
||||||
|
csEdit:
|
||||||
|
begin
|
||||||
|
Widget:= GTK_WIDGET(Pointer(Handle));
|
||||||
|
if gtk_editable_get_selection_bounds(GTK_EDITABLE(Widget),@result, @Pos) then
|
||||||
|
result := Pos - Result
|
||||||
|
else
|
||||||
|
result := 0;
|
||||||
|
end;
|
||||||
else begin
|
else begin
|
||||||
result := inherited IntSendMessage3(LM_Message, Sender, data);
|
result := inherited IntSendMessage3(LM_Message, Sender, data);
|
||||||
exit;
|
exit;
|
||||||
@ -1107,6 +1131,15 @@ begin
|
|||||||
{gtk_text_buffer_get_selection_bounds(aTextBuffer, @aTextIter1, nil);
|
{gtk_text_buffer_get_selection_bounds(aTextBuffer, @aTextIter1, nil);
|
||||||
result := gtk_text_iter_get_offset(@aTextIter1);}
|
result := gtk_text_iter_get_offset(@aTextIter1);}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
csEdit:
|
||||||
|
begin
|
||||||
|
Widget:= GTK_WIDGET(Pointer(Handle));
|
||||||
|
if gtk_editable_get_selection_bounds(GTK_EDITABLE(Widget),nil, @Pos) then
|
||||||
|
If (Integer(Data) >= 0) and (Integer(Data)<=Pos) then
|
||||||
|
gtk_editable_select_region(GTK_EDITABLE(Widget), Integer(Data), Pos+1);
|
||||||
|
end;
|
||||||
|
|
||||||
else begin
|
else begin
|
||||||
result := inherited IntSendMessage3(LM_Message, Sender, data);
|
result := inherited IntSendMessage3(LM_Message, Sender, data);
|
||||||
exit;
|
exit;
|
||||||
@ -1129,6 +1162,17 @@ begin
|
|||||||
{gtk_text_buffer_get_selection_bounds(aTextBuffer, @aTextIter1, @aTextIter2);
|
{gtk_text_buffer_get_selection_bounds(aTextBuffer, @aTextIter1, @aTextIter2);
|
||||||
result:= Abs(gtk_text_iter_get_offset(@aTextIter2) - gtk_text_iter_get_offset(@aTextIter1));}
|
result:= Abs(gtk_text_iter_get_offset(@aTextIter2) - gtk_text_iter_get_offset(@aTextIter1));}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
csEdit:
|
||||||
|
begin
|
||||||
|
Widget:= GTK_WIDGET(Pointer(Handle));
|
||||||
|
if gtk_editable_get_selection_bounds(GTK_EDITABLE(Widget),@Pos, nil) then
|
||||||
|
gtk_editable_select_region(GTK_EDITABLE(Widget), Pos, Pos+Integer(Data)+1)
|
||||||
|
else
|
||||||
|
gtk_editable_select_region(GTK_EDITABLE(Widget), gtk_editable_get_position(GTK_EDITABLE(Widget)),
|
||||||
|
gtk_editable_get_position(GTK_EDITABLE(Widget)) + Integer(Data)+1)
|
||||||
|
end;
|
||||||
|
|
||||||
else begin
|
else begin
|
||||||
result := inherited IntSendMessage3(LM_Message, Sender, data);
|
result := inherited IntSendMessage3(LM_Message, Sender, data);
|
||||||
exit;
|
exit;
|
||||||
@ -1156,6 +1200,13 @@ var
|
|||||||
begin
|
begin
|
||||||
Result := True;
|
Result := True;
|
||||||
case TControl(Sender).fCompStyle of
|
case TControl(Sender).fCompStyle of
|
||||||
|
csEdit: begin
|
||||||
|
Widget:= GTK_WIDGET(Pointer(TWinControl(Sender).Handle));
|
||||||
|
CS := gtk_editable_get_chars(GTK_EDITABLE(Widget), 0, -1);
|
||||||
|
Text := StrPas(CS);
|
||||||
|
g_free(CS);
|
||||||
|
end;
|
||||||
|
|
||||||
csMemo : begin
|
csMemo : begin
|
||||||
Widget:= GetWidgetInfo(Pointer(TWinControl(Sender).Handle), True)^.ImplementationWidget;
|
Widget:= GetWidgetInfo(Pointer(TWinControl(Sender).Handle), True)^.ImplementationWidget;
|
||||||
aTextBuffer := gtk_text_view_get_buffer(GTK_TEXT_VIEW(Widget));
|
aTextBuffer := gtk_text_view_get_buffer(GTK_TEXT_VIEW(Widget));
|
||||||
@ -1233,6 +1284,14 @@ begin
|
|||||||
pLabel := pchar(Data);
|
pLabel := pchar(Data);
|
||||||
|
|
||||||
case TControl(Sender).fCompStyle of
|
case TControl(Sender).fCompStyle of
|
||||||
|
csEdit : begin
|
||||||
|
gtk_entry_set_text(pGtkEntry(Widget), pLabel);
|
||||||
|
{LockOnChange(PGtkObject(Widget),+1);
|
||||||
|
gtk_editable_delete_text(pGtkEditable(P), 0, -1);
|
||||||
|
gtk_editable_insert_text(pGtkEditable(P), pLabel, StrLen(pLabel). 0);
|
||||||
|
LockOnChange(PGtkObject(Widget),-1);}
|
||||||
|
end;
|
||||||
|
|
||||||
csMemo : begin
|
csMemo : begin
|
||||||
Widget:= PGtkWidget(GetWidgetInfo(Widget, True)^.ImplementationWidget);
|
Widget:= PGtkWidget(GetWidgetInfo(Widget, True)^.ImplementationWidget);
|
||||||
aTextBuffer := gtk_text_view_get_buffer(GTK_TEXT_VIEW(Widget));
|
aTextBuffer := gtk_text_view_get_buffer(GTK_TEXT_VIEW(Widget));
|
||||||
@ -1250,6 +1309,130 @@ begin
|
|||||||
Assert(False, Format('trace: [Tgtk2Object.SetLabel] %s --> END', [Sender.ClassName]));
|
Assert(False, Format('trace: [Tgtk2Object.SetLabel] %s --> END', [Sender.ClassName]));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure Tgtk2Object.HookSignals(Sender: TObject);
|
||||||
|
begin
|
||||||
|
if (Sender is TWinControl) then
|
||||||
|
Begin
|
||||||
|
inherited HookSignals(Sender);
|
||||||
|
End;
|
||||||
|
|
||||||
|
if (Sender is TControl) then
|
||||||
|
Begin
|
||||||
|
case TControl(sender).FCompStyle of
|
||||||
|
csEdit:
|
||||||
|
begin
|
||||||
|
SetCallback(LM_CHANGED, Sender);
|
||||||
|
SetCallback(LM_ACTIVATE, Sender);
|
||||||
|
SetCallback(LM_CUTTOCLIP, Sender);
|
||||||
|
SetCallback(LM_COPYTOCLIP, Sender);
|
||||||
|
SetCallback(LM_PASTEFROMCLIP, Sender);
|
||||||
|
end;
|
||||||
|
|
||||||
|
csMemo:
|
||||||
|
begin
|
||||||
|
SetCallback(LM_CHANGED, Sender);
|
||||||
|
SetCallback(LM_ACTIVATE, Sender);
|
||||||
|
SetCallback(LM_CUTTOCLIP, Sender);
|
||||||
|
SetCallback(LM_COPYTOCLIP, Sender);
|
||||||
|
SetCallback(LM_PASTEFROMCLIP, Sender);
|
||||||
|
SetCallback(LM_INSERTTEXT, Sender);
|
||||||
|
end;
|
||||||
|
end; //case
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{------------------------------------------------------------------------------
|
||||||
|
Method: TGtk2Object.SetProperties
|
||||||
|
Params: Sender : the lcl object which called this func via SenMessage
|
||||||
|
Returns: currently always 0
|
||||||
|
|
||||||
|
Depending on the compStyle, this function will apply all properties of
|
||||||
|
the calling object to the corresponding GTK2 object.
|
||||||
|
------------------------------------------------------------------------------}
|
||||||
|
function Tgtk2Object.SetProperties(Sender : TObject) : integer;
|
||||||
|
var
|
||||||
|
wHandle : Pointer;
|
||||||
|
Widget, ImplWidget : PGtkWidget;
|
||||||
|
i : Longint;
|
||||||
|
aTextBuffer : PGtkTextBuffer;
|
||||||
|
aTextIter1 : TGtkTextIter;
|
||||||
|
aTextIter2 : TGtkTextIter;
|
||||||
|
begin
|
||||||
|
Result := 0; // default if nobody sets it
|
||||||
|
|
||||||
|
if Sender is TWinControl
|
||||||
|
then
|
||||||
|
Assert(False, Format('Trace: [Tgtk2Object.SetProperties] %s', [Sender.ClassName]))
|
||||||
|
else
|
||||||
|
RaiseException('Tgtk2Object.SetProperties: '
|
||||||
|
+' Sender.ClassName='+Sender.ClassName);
|
||||||
|
|
||||||
|
wHandle:= Pointer(TWinControl(Sender).Handle);
|
||||||
|
Widget:= GTK_WIDGET(wHandle);
|
||||||
|
|
||||||
|
case TControl(Sender).fCompStyle of
|
||||||
|
csEdit :
|
||||||
|
with TCustomEdit(Sender) do
|
||||||
|
begin
|
||||||
|
gtk_editable_set_editable(GTK_ENTRY(wHandle), not (TCustomEdit(Sender).ReadOnly));
|
||||||
|
gtk_entry_set_max_length(GTK_ENTRY(wHandle), TCustomEdit(Sender).MaxLength);
|
||||||
|
gtk_entry_set_visibility(GTK_ENTRY(wHandle), (TCustomEdit(Sender).EchoMode = emNormal) and (TCustomEdit(Sender).PassWordChar=#0));
|
||||||
|
if (TCustomEdit(Sender).EchoMode = emNone) then
|
||||||
|
gtk_entry_set_invisible_char(GTK_ENTRY(wHandle), 0)
|
||||||
|
else
|
||||||
|
gtk_entry_set_invisible_char(GTK_ENTRY(wHandle), Longint(TCustomEdit(Sender).PassWordChar));
|
||||||
|
end;
|
||||||
|
|
||||||
|
csMemo:
|
||||||
|
begin
|
||||||
|
ImplWidget:= GetWidgetInfo(wHandle, true)^.ImplementationWidget;
|
||||||
|
|
||||||
|
gtk_text_view_set_editable (PGtkTextView(ImplWidget), not TCustomMemo(Sender).ReadOnly);
|
||||||
|
if TCustomMemo(Sender).WordWrap then
|
||||||
|
gtk_text_view_set_wrap_mode(PGtkTextView(ImplWidget), GTK_WRAP_WORD)
|
||||||
|
else
|
||||||
|
gtk_text_view_set_wrap_mode(PGtkTextView(ImplWidget), GTK_WRAP_NONE);
|
||||||
|
|
||||||
|
|
||||||
|
case (Sender as TCustomMemo).Scrollbars of
|
||||||
|
ssHorizontal: gtk_scrolled_window_set_policy(
|
||||||
|
GTK_SCROLLED_WINDOW(wHandle),
|
||||||
|
GTK_POLICY_ALWAYS, GTK_POLICY_NEVER);
|
||||||
|
ssVertical: gtk_scrolled_window_set_policy(
|
||||||
|
GTK_SCROLLED_WINDOW(wHandle),
|
||||||
|
GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
|
||||||
|
ssBoth: gtk_scrolled_window_set_policy(
|
||||||
|
GTK_SCROLLED_WINDOW(wHandle),
|
||||||
|
GTK_POLICY_ALWAYS, GTK_POLICY_ALWAYS);
|
||||||
|
ssAutoHorizontal: gtk_scrolled_window_set_policy(
|
||||||
|
GTK_SCROLLED_WINDOW(wHandle),
|
||||||
|
GTK_POLICY_AUTOMATIC, GTK_POLICY_NEVER);
|
||||||
|
ssAutoVertical: gtk_scrolled_window_set_policy(
|
||||||
|
GTK_SCROLLED_WINDOW(wHandle),
|
||||||
|
GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
|
||||||
|
ssAutoBoth: gtk_scrolled_window_set_policy(
|
||||||
|
GTK_SCROLLED_WINDOW(wHandle),
|
||||||
|
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
|
||||||
|
else
|
||||||
|
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(wHandle),
|
||||||
|
GTK_POLICY_NEVER, GTK_POLICY_NEVER);
|
||||||
|
end;
|
||||||
|
|
||||||
|
If (TCustomMemo(Sender).MaxLength >= 0) then begin
|
||||||
|
aTextBuffer := gtk_text_view_get_buffer(GTK_TEXT_VIEW(ImplWidget));
|
||||||
|
i:= gtk_text_buffer_get_char_count(aTextBuffer);
|
||||||
|
if i > TCustomMemo(Sender).MaxLength then begin
|
||||||
|
gtk_text_buffer_get_bounds(aTextBuffer, nil, @aTextIter2);
|
||||||
|
gtk_text_buffer_get_iter_at_offset(aTextBuffer, @aTextIter1, i);
|
||||||
|
gtk_text_buffer_delete(aTextBuffer, @aTextIter1, @aTextIter2);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
else
|
||||||
|
Result := inherited SetProperties(Sender);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
{------------------------------------------------------------------------------
|
{------------------------------------------------------------------------------
|
||||||
Function: GetCursorPos
|
Function: GetCursorPos
|
||||||
Params: lpPoint: The cursorposition
|
Params: lpPoint: The cursorposition
|
||||||
@ -1358,6 +1541,9 @@ end.
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
|
Revision 1.18 2003/09/18 21:36:00 ajgenius
|
||||||
|
add csEdit to GTK2 interface to start removing use of GtkOldEditable
|
||||||
|
|
||||||
Revision 1.17 2003/09/18 17:23:05 ajgenius
|
Revision 1.17 2003/09/18 17:23:05 ajgenius
|
||||||
start using GtkTextView for Gtk2 Memo
|
start using GtkTextView for Gtk2 Memo
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user