summaryrefslogtreecommitdiff
path: root/libgtk_kylix/GTKView.pas
diff options
context:
space:
mode:
authorTomas Bzatek <tbzatek@redhat.com>2024-12-23 23:59:45 +0100
committerTomas Bzatek <tbzatek@redhat.com>2025-11-27 19:36:10 +0100
commitb9703b29819b619037cc282d719c187e51bacd30 (patch)
treebd6d73e5fb6bcb6eb307844103b3dff185f2ac9a /libgtk_kylix/GTKView.pas
parenta9634b933f71a9045e61d29c486f2d51d39fd1e2 (diff)
downloadtuxcmd-b9703b29819b619037cc282d719c187e51bacd30.tar.xz
Port to g-i generated glib2 bindings
Includes switch to FPC -Mobjfpc and related pointer style fixes.
Diffstat (limited to 'libgtk_kylix/GTKView.pas')
-rw-r--r--libgtk_kylix/GTKView.pas95
1 files changed, 45 insertions, 50 deletions
diff --git a/libgtk_kylix/GTKView.pas b/libgtk_kylix/GTKView.pas
index 3b46fad..3cd00dc 100644
--- a/libgtk_kylix/GTKView.pas
+++ b/libgtk_kylix/GTKView.pas
@@ -21,13 +21,10 @@
*)
unit GTKView;
-{$O+} // Optimization needs to be enabled for this unit due to bug in compiler (fixed columns doesn't work)
interface
-uses gtk2, gdk2, gdk2pixbuf, glib2, Classes, GTKControls, GTKConsts, GTKUtils, GTKClasses, GTKForms, GTKPixbuf;
- // Quick jump: QForms QControls QStdCtrls QComCtrls
-
+uses gtk2, gdk2, gdk2pixbuf, glib2, lazglib2, lazgobject2, Classes, GTKControls, GTKForms;
type
TGTKListItem = class;
@@ -439,10 +436,9 @@ end;
function TGTKView.ConvertToSorted(Index: integer): integer;
var Path: PGtkTreePath;
- Iter: TGtkTreeIter;
begin
Result := Index;
- Path := gtk_tree_path_new_from_string(StringToPgchar(IntToStr(Index)));
+ Path := gtk_tree_path_new_from_string(PChar(IntToStr(Index)));
if not Assigned(Path) then Exit;
if Assigned(FTreeModelSort) then Path := gtk_tree_model_sort_convert_child_path_to_path(FTreeModelSort, Path);
if not Assigned(Path) then Exit;
@@ -452,10 +448,9 @@ end;
function TGTKView.ConvertFromSorted(Index: integer): integer;
var Path: PGtkTreePath;
- Iter: TGtkTreeIter;
begin
Result := Index;
- Path := gtk_tree_path_new_from_string(StringToPgchar(IntToStr(Index)));
+ Path := gtk_tree_path_new_from_string(PChar(IntToStr(Index)));
if not Assigned(Path) then Exit;
if Assigned(FTreeModelSort) then Path := gtk_tree_model_sort_convert_path_to_child_path(FTreeModelSort, Path);
if not Assigned(Path) then Exit;
@@ -520,9 +515,9 @@ begin
FWidget := gtk_tree_view_new_with_model(FTreeModelSort);
end;
FSelection := gtk_tree_view_get_selection(PGtkTreeView(FWidget));
- g_signal_connect(FSelection, 'changed', G_CALLBACK(@TGTKListView_changed), Self);
- g_signal_connect(FWidget, 'row-activated', G_CALLBACK(@TGTKListView_row_activated), Self);
- g_signal_connect_after(FWidget, 'columns-changed', G_CALLBACK(@TGTKListView_columns_changed), Self);
+ g_signal_connect_data(PGObject(FSelection), 'changed', TGCallback(@TGTKListView_changed), Self, nil, G_CONNECT_DEFAULT);
+ g_signal_connect_data(PGObject(FWidget), 'row-activated', TGCallback(@TGTKListView_row_activated), Self, nil, G_CONNECT_DEFAULT);
+ g_signal_connect_data(PGObject(FWidget), 'columns-changed', TGCallback(@TGTKListView_columns_changed), Self, nil, [G_CONNECT_AFTER]);
FTreeModel := gtk_tree_view_get_model(PGtkTreeView(FWidget));
Show;
end;
@@ -540,7 +535,6 @@ function TGTKListView.GetSelected: TGTKListItem;
var Iter: TGtkTreeIter;
Path: PGtkTreePath;
AIndex: integer;
- i: integer;
begin
Result := nil;
Path := nil;
@@ -560,7 +554,7 @@ end;
procedure TGTKListView.SetSelected(Value: TGTKListItem);
var Path: PGtkTreePath;
begin
- Path := gtk_tree_path_new_from_string(StringToPgchar(IntToStr(Value.FIndex)));
+ Path := gtk_tree_path_new_from_string(PChar(IntToStr(Value.FIndex)));
ConvertChildToPath(Path);
gtk_tree_selection_select_path(FSelection, Path);
gtk_tree_path_free(Path);
@@ -596,6 +590,8 @@ var Path: PGtkTreePath;
AIndex: integer;
begin
Result := nil;
+ Path := nil;
+ Column := nil;
if gtk_tree_view_get_path_at_pos(PGtkTreeView(FWidget), X, Y, Path, Column, nil, nil) then begin
if not Assigned(Path) then Exit;
ConvertPathToChild(Path);
@@ -698,7 +694,7 @@ var x: pointer;
Iter: TGtkTreeIter;
begin
x := FList[Index];
- if gtk_tree_model_get_iter_from_string(PGtkTreeModel(FStore), @Iter, StringToPgchar(IntToStr(Index))) then begin
+ if gtk_tree_model_get_iter_from_string(PGtkTreeModel(FStore), @Iter, PChar(IntToStr(Index))) then begin
// (FOwner as TGTKView).CovertSortableIter(Iter);
gtk_list_store_remove(FStore, @Iter);
end;
@@ -839,12 +835,12 @@ end;
function TGTKTreeViewColumn.GetCaption: string;
begin
- Result := PgcharToString(gtk_tree_view_column_get_title(FColumn));
+ Result := String(gtk_tree_view_column_get_title(FColumn));
end;
procedure TGTKTreeViewColumn.SetCaption(Value: string);
begin
- gtk_tree_view_column_set_title(FColumn, StringToPgchar(Value));
+ gtk_tree_view_column_set_title(FColumn, PChar(Value));
end;
function TGTKTreeViewColumn.GetVisible: boolean;
@@ -979,7 +975,7 @@ var NewText: string;
Path: PGtkTreePath;
begin
if Assigned(TGTKTreeViewColumn(data).FOnEdited) then begin
- NewText := PgcharToString(new_text);
+ NewText := String(new_text);
AllowChange := True;
DataColumn := TGTKTreeViewColumn(data).FIndex;
Path := gtk_tree_path_new_from_string(path_string);
@@ -1027,19 +1023,19 @@ begin
end;
if Value = ctImageText then gtk_tree_view_column_pack_start(FColumn, FPixbufRenderer, False);
gtk_tree_view_column_pack_start(FColumn, FRenderer, True);
- if (Value = ctImageText) or (Value = ctText) then g_signal_connect(FRenderer, 'edited', G_CALLBACK(@TGTKTreeViewColumn_edited), Self);
- if Value = ctToggle then g_signal_connect(FRenderer, 'toggled', G_CALLBACK(@TGTKTreeViewColumn_toggled), Self);
- g_signal_connect_after(FColumn, 'clicked', G_CALLBACK(@TGTKTreeViewColumn_clicked), Self);
+ if (Value = ctImageText) or (Value = ctText) then g_signal_connect_data(PGObject(FRenderer), 'edited', TGCallback(@TGTKTreeViewColumn_edited), Self, nil, G_CONNECT_DEFAULT);
+ if Value = ctToggle then g_signal_connect_data(PGObject(FRenderer), 'toggled', TGCallback(@TGTKTreeViewColumn_toggled), Self, nil, G_CONNECT_DEFAULT);
+ g_signal_connect_data(PGObject(FColumn), 'clicked', TGCallback(@TGTKTreeViewColumn_clicked), Self, nil, [G_CONNECT_AFTER]);
end;
procedure TGTKTreeViewColumn.AddAttribute(Attribute: string; Value: integer);
begin
- gtk_tree_view_column_add_attribute(FColumn, FRenderer, StringToPgchar(Attribute), Value);
+ gtk_tree_view_column_add_attribute(FColumn, FRenderer, PChar(Attribute), Value);
end;
procedure TGTKTreeViewColumn.AddImageAttribute(Attribute: string; Value: integer);
begin
- gtk_tree_view_column_add_attribute(FColumn, FPixbufRenderer, StringToPgchar(Attribute), Value);
+ gtk_tree_view_column_add_attribute(FColumn, FPixbufRenderer, PChar(Attribute), Value);
end;
procedure TGTKTreeViewColumn.ClearAttributes;
@@ -1052,15 +1048,15 @@ var AValue: TGValue;
begin
AValue.g_type := G_TYPE_LONG;
AValue.data[0].v_long := Value;
- g_object_set_property(PGObject(FRenderer), StringToPgchar(AProperty), @AValue);
+ g_object_set_property(PGObject(FRenderer), PChar(AProperty), @AValue);
end;
procedure TGTKTreeViewColumn.SetProperty(AProperty: string; Value: string);
var AValue: TGValue;
begin
AValue.g_type := G_TYPE_STRING;
- AValue.data[0].v_pointer := StringToPgchar(Value);
- g_object_set_property(PGObject(FRenderer), StringToPgchar(AProperty), @AValue);
+ AValue.data[0].v_pointer := PChar(Value);
+ g_object_set_property(PGObject(FRenderer), PChar(AProperty), @AValue);
end;
procedure TGTKTreeViewColumn.SetProperty(AProperty: string; Value: Double);
@@ -1068,7 +1064,7 @@ var AValue: TGValue;
begin
AValue.g_type := G_TYPE_DOUBLE;
AValue.data[0].v_double := Value;
- g_object_set_property(PGObject(FRenderer), StringToPgchar(AProperty), @AValue);
+ g_object_set_property(PGObject(FRenderer), PChar(AProperty), @AValue);
end;
procedure TGTKTreeViewColumn.SetProperty(AProperty: string; Value: pointer);
@@ -1076,7 +1072,7 @@ var AValue: TGValue;
begin
AValue.g_type := G_TYPE_POINTER;
AValue.data[0].v_pointer := Value;
- g_object_set_property(PGObject(FRenderer), StringToPgchar(AProperty), @AValue);
+ g_object_set_property(PGObject(FRenderer), PChar(AProperty), @AValue);
end;
procedure TGTKTreeViewColumn.SetImageProperty(AProperty: string; Value: integer);
@@ -1084,15 +1080,15 @@ var AValue: TGValue;
begin
AValue.g_type := G_TYPE_LONG;
AValue.data[0].v_long := Value;
- g_object_set_property(PGObject(FPixbufRenderer), StringToPgchar(AProperty), @AValue);
+ g_object_set_property(PGObject(FPixbufRenderer), PChar(AProperty), @AValue);
end;
procedure TGTKTreeViewColumn.SetImageProperty(AProperty: string; Value: string);
var AValue: TGValue;
begin
AValue.g_type := G_TYPE_STRING;
- AValue.data[0].v_pointer := StringToPgchar(Value);
- g_object_set_property(PGObject(FPixbufRenderer), StringToPgchar(AProperty), @AValue);
+ AValue.data[0].v_pointer := PChar(Value);
+ g_object_set_property(PGObject(FPixbufRenderer), PChar(AProperty), @AValue);
end;
procedure TGTKTreeViewColumn.SetImageProperty(AProperty: string; Value: Double);
@@ -1100,7 +1096,7 @@ var AValue: TGValue;
begin
AValue.g_type := G_TYPE_DOUBLE;
AValue.data[0].v_double := Value;
- g_object_set_property(PGObject(FPixbufRenderer), StringToPgchar(AProperty), @AValue);
+ g_object_set_property(PGObject(FPixbufRenderer), PChar(AProperty), @AValue);
end;
procedure TGTKTreeViewColumn.SetImageProperty(AProperty: string; Value: pointer);
@@ -1108,7 +1104,7 @@ var AValue: TGValue;
begin
AValue.g_type := G_TYPE_POINTER;
AValue.data[0].v_pointer := Value;
- g_object_set_property(PGObject(FPixbufRenderer), StringToPgchar(AProperty), @AValue);
+ g_object_set_property(PGObject(FPixbufRenderer), PChar(AProperty), @AValue);
end;
(********************************************************************************************************************************)
@@ -1130,11 +1126,11 @@ var Iter: TGtkTreeIter;
AValue: TGValue;
begin
Result := '';
- if gtk_tree_model_get_iter_from_string(PGtkTreeModel((FOwner as TGTKListItems).FStore), @Iter, StringToPgchar(IntToStr(FIndex))) then
+ if gtk_tree_model_get_iter_from_string(PGtkTreeModel((FOwner as TGTKListItems).FStore), @Iter, PChar(IntToStr(FIndex))) then
begin
AValue.g_type := 0;
gtk_tree_model_get_value(PGtkTreeModel((FOwner as TGTKListItems).FStore), @Iter, Index, @AValue);
- Result := PgcharToString(AValue.data[0].v_pointer);
+ Result := String(AValue.data[0].v_pointer);
end;
end;
@@ -1143,7 +1139,7 @@ var Iter: TGtkTreeIter;
AValue: TGValue;
begin
Result := 0;
- if gtk_tree_model_get_iter_from_string(PGtkTreeModel((FOwner as TGTKListItems).FStore), @Iter, StringToPgchar(IntToStr(FIndex))) then
+ if gtk_tree_model_get_iter_from_string(PGtkTreeModel((FOwner as TGTKListItems).FStore), @Iter, PChar(IntToStr(FIndex))) then
begin
AValue.g_type := 0;
gtk_tree_model_get_value(PGtkTreeModel((FOwner as TGTKListItems).FStore), @Iter, Index, @AValue);
@@ -1156,7 +1152,7 @@ var Iter: TGtkTreeIter;
AValue: TGValue;
begin
Result := nil;
- if gtk_tree_model_get_iter_from_string(PGtkTreeModel((FOwner as TGTKListItems).FStore), @Iter, StringToPgchar(IntToStr(FIndex))) then
+ if gtk_tree_model_get_iter_from_string(PGtkTreeModel((FOwner as TGTKListItems).FStore), @Iter, PChar(IntToStr(FIndex))) then
begin
AValue.g_type := 0;
gtk_tree_model_get_value(PGtkTreeModel((FOwner as TGTKListItems).FStore), @Iter, Index, @AValue);
@@ -1169,7 +1165,7 @@ var Iter: TGtkTreeIter;
AValue: TGValue;
begin
Result := False;
- if gtk_tree_model_get_iter_from_string(PGtkTreeModel((FOwner as TGTKListItems).FStore), @Iter, StringToPgchar(IntToStr(FIndex))) then
+ if gtk_tree_model_get_iter_from_string(PGtkTreeModel((FOwner as TGTKListItems).FStore), @Iter, PChar(IntToStr(FIndex))) then
begin
AValue.g_type := 0;
gtk_tree_model_get_value(PGtkTreeModel((FOwner as TGTKListItems).FStore), @Iter, Index, @AValue);
@@ -1180,28 +1176,28 @@ end;
procedure TGTKListItem.SetValue(Index: longint; Value: string);
var Iter: TGtkTreeIter;
begin
- if gtk_tree_model_get_iter_from_string(PGtkTreeModel((FOwner as TGTKListItems).FStore), @Iter, StringToPgchar(IntToStr(FIndex)))
- then gtk_list_store_set(PGtkTreeModel((FOwner as TGTKListItems).FStore), @Iter, Index, StringToPgchar(Value), -1);
+ if gtk_tree_model_get_iter_from_string(PGtkTreeModel((FOwner as TGTKListItems).FStore), @Iter, PChar(IntToStr(FIndex)))
+ then gtk_list_store_set(PGtkTreeModel((FOwner as TGTKListItems).FStore), @Iter, Index, PChar(Value), -1);
end;
procedure TGTKListItem.SetValue(Index: longint; Value: integer);
var Iter: TGtkTreeIter;
begin
- if gtk_tree_model_get_iter_from_string(PGtkTreeModel((FOwner as TGTKListItems).FStore), @Iter, StringToPgchar(IntToStr(FIndex)))
+ if gtk_tree_model_get_iter_from_string(PGtkTreeModel((FOwner as TGTKListItems).FStore), @Iter, PChar(IntToStr(FIndex)))
then gtk_list_store_set(PGtkTreeModel((FOwner as TGTKListItems).FStore), @Iter, Index, Value, -1);
end;
procedure TGTKListItem.SetValue(Index: longint; Value: pointer);
var Iter: TGtkTreeIter;
begin
- if gtk_tree_model_get_iter_from_string(PGtkTreeModel((FOwner as TGTKListItems).FStore), @Iter, StringToPgchar(IntToStr(FIndex)))
+ if gtk_tree_model_get_iter_from_string(PGtkTreeModel((FOwner as TGTKListItems).FStore), @Iter, PChar(IntToStr(FIndex)))
then gtk_list_store_set(PGtkTreeModel((FOwner as TGTKListItems).FStore), @Iter, Index, Value, -1);
end;
procedure TGTKListItem.SetValue(Index: longint; Value: boolean);
var Iter: TGtkTreeIter;
begin
- if gtk_tree_model_get_iter_from_string(PGtkTreeModel((FOwner as TGTKListItems).FStore), @Iter, StringToPgchar(IntToStr(FIndex)))
+ if gtk_tree_model_get_iter_from_string(PGtkTreeModel((FOwner as TGTKListItems).FStore), @Iter, PChar(IntToStr(FIndex)))
then gtk_list_store_set(PGtkTreeModel((FOwner as TGTKListItems).FStore), @Iter, Index, Value, -1);
end;
@@ -1209,7 +1205,7 @@ function TGTKListItem.GetSelected: boolean;
var Iter: TGtkTreeIter;
begin
Result := False;
- if gtk_tree_model_get_iter_from_string(PGtkTreeModel((FOwner as TGTKListItems).FStore), @Iter, StringToPgchar(IntToStr(FIndex))) then begin
+ if gtk_tree_model_get_iter_from_string(PGtkTreeModel((FOwner as TGTKListItems).FStore), @Iter, PChar(IntToStr(FIndex))) then begin
// ((FOwner as TGTKListItems).FOwner as TGTKView).ConvertSortableIter(Iter);
Result := gtk_tree_selection_iter_is_selected(((FOwner as TGTKListItems).FOwner as TGTKView).FSelection, @Iter);
end;
@@ -1217,10 +1213,9 @@ end;
procedure TGTKListItem.SetSelected(Value: boolean);
var Iter, NewIter: TGtkTreeIter;
- Path: PGtkTreePath;
begin
try
- if gtk_tree_model_get_iter_from_string(PGtkTreeModel((FOwner as TGTKListItems).FStore), @Iter, StringToPgchar(IntToStr(FIndex))) then begin
+ if gtk_tree_model_get_iter_from_string(PGtkTreeModel((FOwner as TGTKListItems).FStore), @Iter, PChar(IntToStr(FIndex))) then begin
if Assigned(((FOwner as TGTKListItems).FOwner as TGTKView).FTreeModelSort) then begin
gtk_tree_model_sort_convert_child_iter_to_iter(((FOwner as TGTKListItems).FOwner as TGTKView).FTreeModelSort, @NewIter, @Iter);
Iter := NewIter;
@@ -1237,7 +1232,7 @@ var Path: PGtkTreePath;
// Renderer: PGtkCellRenderer;
i : integer;
begin
- Path := gtk_tree_path_new_from_string(StringToPgchar(IntToStr(FIndex)));
+ Path := gtk_tree_path_new_from_string(PChar(IntToStr(FIndex)));
if not Assigned(Path) then Exit;
((FOwner as TGTKListItems).FOwner as TGTKView).ConvertChildToPath(Path);
if not Assigned(Path) then Exit;
@@ -1260,7 +1255,7 @@ var CellEditable: PGtkCellEditable;
Column: PGtkTreeViewColumn;
BackgroundRect, CellRect: TGdkRectangle;
begin
- Path := gtk_tree_path_new_from_string(StringToPgchar(IntToStr(FIndex)));
+ Path := gtk_tree_path_new_from_string(PChar(IntToStr(FIndex)));
if not Assigned(Path) then Exit;
((FOwner as TGTKListItems).FOwner as TGTKView).ConvertChildToPath(Path);
if not Assigned(Path) then Exit;
@@ -1270,7 +1265,7 @@ begin
gtk_tree_view_column_focus_cell(Column, ((FOwner as TGTKListItems).FOwner as TGTKView).Columns[ColumnNo].FRenderer);
CellEditable := gtk_cell_renderer_start_editing(((FOwner as TGTKListItems).FOwner as TGTKView).Columns[ColumnNo].FRenderer,
- nil, ((FOwner as TGTKListItems).FOwner as TGTKView).FWidget, PChar(StringToPgchar(IntToStr(FIndex))),
+ nil, ((FOwner as TGTKListItems).FOwner as TGTKView).FWidget, PChar(PChar(IntToStr(FIndex))),
@BackgroundRect, @CellRect, {GTK_CELL_RENDERER_SELECTED or GTK_CELL_RENDERER_SORTED} 0);
gtk_widget_show(CellEditable);
// gtk_cell_editable_start_editing(CellEditable, nil);
@@ -1284,7 +1279,7 @@ var Rect, BackgroundRect: TGdkRectangle;
Path: PGtkTreePath;
Column: PGtkTreeViewColumn;
begin
- Path := gtk_tree_path_new_from_string(StringToPgchar(IntToStr(FIndex)));
+ Path := gtk_tree_path_new_from_string(PChar(IntToStr(FIndex)));
if not Assigned(Path) then Exit;
((FOwner as TGTKListItems).FOwner as TGTKView).ConvertChildToPath(Path);
if not Assigned(Path) then Exit;
@@ -1306,8 +1301,8 @@ var CellRect, VisibleRect: TGdkRectangle;
begin
Result := False;
gtk_tree_view_get_visible_rect(PGtkTreeView(((FOwner as TGTKListItems).FOwner as TGTKView).FWidget), @VisibleRect);
+ Path := gtk_tree_path_new_from_string(PChar(IntToStr(FIndex)));
if not Assigned(Path) then Exit;
- Path := gtk_tree_path_new_from_string(StringToPgchar(IntToStr(FIndex)));
((FOwner as TGTKListItems).FOwner as TGTKView).ConvertChildToPath(Path);
if not Assigned(Path) then Exit;
gtk_tree_view_get_background_area(PGtkTreeView(((FOwner as TGTKListItems).FOwner as TGTKView).FWidget), Path, nil, @CellRect);