diff options
| author | Tomas Bzatek <tbzatek@redhat.com> | 2024-12-23 23:59:45 +0100 |
|---|---|---|
| committer | Tomas Bzatek <tbzatek@redhat.com> | 2025-11-27 19:36:10 +0100 |
| commit | b9703b29819b619037cc282d719c187e51bacd30 (patch) | |
| tree | bd6d73e5fb6bcb6eb307844103b3dff185f2ac9a /libgtk_kylix/GTKView.pas | |
| parent | a9634b933f71a9045e61d29c486f2d51d39fd1e2 (diff) | |
| download | tuxcmd-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.pas | 95 |
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); |
