mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-22 17:02:35 +02:00
gtk3: started imagelist implementation in TListView.
git-svn-id: trunk@47417 -
This commit is contained in:
parent
2eeabc2538
commit
fb6111e65f
@ -523,6 +523,7 @@ type
|
|||||||
TGtk3ListView = class(TGtk3ScrollableWin)
|
TGtk3ListView = class(TGtk3ScrollableWin)
|
||||||
private
|
private
|
||||||
FPreselectedIndices: TFPList;
|
FPreselectedIndices: TFPList;
|
||||||
|
FImages: TFPList;
|
||||||
FIsTreeView: Boolean;
|
FIsTreeView: Boolean;
|
||||||
protected
|
protected
|
||||||
function CreateWidget(const Params: TCreateParams):PGtkWidget; override;
|
function CreateWidget(const Params: TCreateParams):PGtkWidget; override;
|
||||||
@ -533,6 +534,7 @@ type
|
|||||||
function getHorizontalScrollbar: PGtkScrollbar; override;
|
function getHorizontalScrollbar: PGtkScrollbar; override;
|
||||||
function getVerticalScrollbar: PGtkScrollbar; override;
|
function getVerticalScrollbar: PGtkScrollbar; override;
|
||||||
function GetScrolledWindow: PGtkScrolledWindow; override;
|
function GetScrolledWindow: PGtkScrolledWindow; override;
|
||||||
|
procedure ClearImages;
|
||||||
procedure ColumnDelete(AIndex: Integer);
|
procedure ColumnDelete(AIndex: Integer);
|
||||||
function ColumnGetWidth(AIndex: Integer): Integer;
|
function ColumnGetWidth(AIndex: Integer): Integer;
|
||||||
procedure ColumnInsert(AIndex: Integer; AColumn: TListColumn);
|
procedure ColumnInsert(AIndex: Integer; AColumn: TListColumn);
|
||||||
@ -552,7 +554,9 @@ type
|
|||||||
function ItemGetState(const AIndex: Integer; const AItem: TListItem; const AState: TListItemState;
|
function ItemGetState(const AIndex: Integer; const AItem: TListItem; const AState: TListItemState;
|
||||||
out AIsSet: Boolean): Boolean;
|
out AIsSet: Boolean): Boolean;
|
||||||
|
|
||||||
|
procedure UpdateImageCellsSize;
|
||||||
|
|
||||||
|
property Images: TFPList read FImages write FImages;
|
||||||
property IsTreeView: Boolean read FIsTreeView;
|
property IsTreeView: Boolean read FIsTreeView;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -5166,6 +5170,7 @@ var
|
|||||||
PtrType: GType;
|
PtrType: GType;
|
||||||
TreeModel: PGtkTreeModel;
|
TreeModel: PGtkTreeModel;
|
||||||
begin
|
begin
|
||||||
|
FImages := nil;
|
||||||
FScrollX := 0;
|
FScrollX := 0;
|
||||||
FScrollY := 0;
|
FScrollY := 0;
|
||||||
FPreselectedIndices := nil;
|
FPreselectedIndices := nil;
|
||||||
@ -5216,6 +5221,8 @@ end;
|
|||||||
|
|
||||||
destructor TGtk3ListView.Destroy;
|
destructor TGtk3ListView.Destroy;
|
||||||
begin
|
begin
|
||||||
|
ClearImages;
|
||||||
|
FreeAndNil(FImages);
|
||||||
FreeAndNil(FPreselectedIndices);
|
FreeAndNil(FPreselectedIndices);
|
||||||
inherited Destroy;
|
inherited Destroy;
|
||||||
end;
|
end;
|
||||||
@ -5244,6 +5251,19 @@ begin
|
|||||||
Result := nil;
|
Result := nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TGtk3ListView.ClearImages;
|
||||||
|
var
|
||||||
|
i: Integer;
|
||||||
|
begin
|
||||||
|
if Assigned(FImages) then
|
||||||
|
begin
|
||||||
|
for i := FImages.Count - 1 downto 0 do
|
||||||
|
if FImages[i] <> nil then
|
||||||
|
TGtk3Object(FImages[i]).Free;
|
||||||
|
FImages.Clear;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TGtk3ListView.ColumnDelete(AIndex: Integer);
|
procedure TGtk3ListView.ColumnDelete(AIndex: Integer);
|
||||||
var
|
var
|
||||||
AColumn: PGtkTreeViewColumn;
|
AColumn: PGtkTreeViewColumn;
|
||||||
@ -5273,7 +5293,7 @@ procedure Gtk3WSLV_ListViewGetPixbufDataFuncForColumn(tree_column: PGtkTreeViewC
|
|||||||
cell: PGtkCellRenderer; tree_model: PGtkTreeModel; iter: PGtkTreeIter; AData: GPointer); cdecl;
|
cell: PGtkCellRenderer; tree_model: PGtkTreeModel; iter: PGtkTreeIter; AData: GPointer); cdecl;
|
||||||
var
|
var
|
||||||
ListItem: TListItem;
|
ListItem: TListItem;
|
||||||
Images: TList;
|
Images: TFPList;
|
||||||
// Widgets: PTVWidgets;
|
// Widgets: PTVWidgets;
|
||||||
ListColumn: TListColumn;
|
ListColumn: TListColumn;
|
||||||
ImageIndex: Integer;
|
ImageIndex: Integer;
|
||||||
@ -5289,7 +5309,7 @@ begin
|
|||||||
Exit;
|
Exit;
|
||||||
ColumnIndex := ListColumn.Index;
|
ColumnIndex := ListColumn.Index;
|
||||||
// Images := Widgets^.Images;
|
// Images := Widgets^.Images;
|
||||||
Images := nil;
|
Images := TGtk3ListView(AData).Images;
|
||||||
if Images = nil then
|
if Images = nil then
|
||||||
Exit;
|
Exit;
|
||||||
ImageIndex := -1;
|
ImageIndex := -1;
|
||||||
@ -5677,6 +5697,12 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TGtk3ListView.UpdateImageCellsSize;
|
||||||
|
begin
|
||||||
|
// must get renderer via property
|
||||||
|
// gtk_tree_view_column_get_cell_renderers
|
||||||
|
end;
|
||||||
|
|
||||||
{ TGtk3ComboBox }
|
{ TGtk3ComboBox }
|
||||||
|
|
||||||
function TGtk3ComboBox.GetItemIndex: Integer;
|
function TGtk3ComboBox.GetItemIndex: Integer;
|
||||||
|
@ -879,9 +879,38 @@ end;
|
|||||||
|
|
||||||
class procedure TGtk3WSCustomListView.SetImageList(const ALV: TCustomListView;
|
class procedure TGtk3WSCustomListView.SetImageList(const ALV: TCustomListView;
|
||||||
const AList: TListViewImageList; const AValue: TCustomImageList);
|
const AList: TListViewImageList; const AValue: TCustomImageList);
|
||||||
|
var
|
||||||
|
AView: TGtk3ListView;
|
||||||
|
i: Integer;
|
||||||
|
Bmp: TBitmap;
|
||||||
begin
|
begin
|
||||||
|
if not WSCheckHandleAllocated(ALV, 'SetImageList') then
|
||||||
|
exit;
|
||||||
DebugLn('TGtk3WSCustomListView.SetImageList ');
|
DebugLn('TGtk3WSCustomListView.SetImageList ');
|
||||||
|
AView := TGtk3ListView(ALV.Handle);
|
||||||
// inherited SetImageList(ALV, AList, AValue);
|
// inherited SetImageList(ALV, AList, AValue);
|
||||||
|
if ((AList = lvilLarge) and not AView.IsTreeView) or
|
||||||
|
((AList = lvilSmall) and AView.IsTreeView) then
|
||||||
|
begin
|
||||||
|
if Assigned(AView.Images) then
|
||||||
|
AView.ClearImages
|
||||||
|
else
|
||||||
|
AView.Images := TFPList.Create;
|
||||||
|
if Assigned(AValue) then
|
||||||
|
begin
|
||||||
|
for i := 0 to AValue.Count - 1 do
|
||||||
|
begin
|
||||||
|
Bmp := TBitmap.Create;
|
||||||
|
AValue.GetBitmap(i, Bmp);
|
||||||
|
AView.Images.Add(Bmp);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if AView.IsTreeView then
|
||||||
|
AView.UpdateImageCellsSize;
|
||||||
|
|
||||||
|
AView.Update(nil);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
class procedure TGtk3WSCustomListView.SetItemsCount(const ALV: TCustomListView;
|
class procedure TGtk3WSCustomListView.SetItemsCount(const ALV: TCustomListView;
|
||||||
|
Loading…
Reference in New Issue
Block a user