1{%MainUnit gtk2int.pp} 2{****************************************************************************** 3 gtklistslh.inc 4 TGtkListStringList and TGtkCListStringList 5 6 ****************************************************************************** 7 8 ***************************************************************************** 9 This file is part of the Lazarus Component Library (LCL) 10 11 See the file COPYING.modifiedLGPL.txt, included in this distribution, 12 for details about the license. 13 ***************************************************************************** 14} 15 16type 17 { TGtkListStringList } 18 19 TGtkListStringsState = (glsItemCacheNeedsUpdate,glsCountNeedsUpdate); 20 TGtkListStringsStates = set of TGtkListStringsState; 21 22 PPGtkListItem = ^PGtkListItem; 23 24 TGtkListStringList = class(TStrings) 25 private 26 FGtkList : PGtkList; 27 FOwner: TWinControl; 28 FSorted : boolean; 29 FStates: TGtkListStringsStates; 30 FCachedCount: integer; 31 FCachedCapacity: integer; 32 FCachedItems: PPGtkListItem; 33 FUpdateCount: integer; 34 FWithCheckBox: Boolean; 35 protected 36 function GetListItem(Index: integer): PGtkListItem; 37 function GetLabel(Index: integer): PGtkLabel; 38 function GetCount: integer; override; 39 function Get(Index : Integer) : string; override; 40 function GetObject(Index: Integer): TObject; override; 41 procedure Put(Index: Integer; const S: string); override; 42 procedure PutObject(Index: Integer; AnObject: TObject); override; 43 procedure SetSorted(Val : boolean); virtual; 44 procedure CheckForInvalidFocus; 45 procedure ConnectItemCallbacks(Index: integer); 46 procedure ConnectItemCallbacks(Li: PGtkListItem); virtual; 47 procedure ConnectAllCallbacks; virtual; 48 procedure RemoveItemCallbacks(Index: integer); 49 procedure RemoveItemCallbacks(AItem: PGtkListItem); virtual; 50 procedure RemoveAllCallbacks; virtual; 51 procedure UpdateItemCache; 52 function CacheValid: boolean; 53 public 54 constructor Create(List : PGtkList; TheOwner: TWinControl; 55 const AWithCheckBox: Boolean); 56 destructor Destroy; override; 57 function Add(const S: string): Integer; override; 58 procedure Assign(Source : TPersistent); override; 59 procedure Clear; override; 60 procedure Delete(Index : integer); override; 61 function IndexOf(const S: string): Integer; override; 62 procedure Insert(Index : integer; const S: string); override; 63 function GetInsertPosition(const S: string): integer; 64 procedure Move(FromIndex, ToIndex: Integer); override; 65 procedure Sort; virtual; 66 function IsEqual(List: TStrings; CompareObjects: boolean): boolean; 67 procedure BeginUpdate; 68 procedure EndUpdate; 69 procedure ConsistencyCheck; 70 public 71 property Sorted: boolean read FSorted write SetSorted; 72 property Owner: TWinControl read FOwner; 73 end; 74 75