37
37
////////////////////////////////////////////////////
38
38
CheckLst, StdCtrls, Controls, LCLType, SysUtils, Classes, LMessages, LCLProc,
39
39
////////////////////////////////////////////////////
40
WSCheckLst, WSLCLClasses,
40
WSCheckLst, WSLCLClasses;
75
74
{ TGtk2WSCheckListBox }
77
procedure Gtk2WS_CheckListBoxDataFunc(tree_column: PGtkTreeViewColumn;
78
cell: PGtkCellRenderer; tree_model: PGtkTreeModel; iter: PGtkTreeIter; data: Pointer); cdecl;
76
procedure Gtk2WS_CheckListBoxDataFunc({%H-}tree_column: PGtkTreeViewColumn;
77
cell: PGtkCellRenderer; tree_model: PGtkTreeModel; iter: PGtkTreeIter; {%H-}data: Pointer); cdecl;
81
80
ADisabled: gboolean;
91
90
g_object_set(cell, 'activatable', [gboolean(not ADisabled), nil]);
94
procedure Gtk2WS_CheckListBoxToggle(cellrenderertoggle : PGtkCellRendererToggle;
93
procedure Gtk2WS_CheckListBoxToggle({%H-}cellrenderertoggle : PGtkCellRendererToggle;
95
94
arg1 : PGChar; WidgetInfo: PWidgetInfo); cdecl;
99
TreeView: PGtkTreeView;
100
ListStore: PGtkTreeModel;
102
AState: TCheckBoxState;
99
104
{$IFDEF EventTrace}
100
105
EventTrace('Gtk2WS_CheckListBoxToggle', WidgetInfo^.LCLObject);
102
TCheckListBox(widgetInfo^.lclObject).Toggle(StrToInt(arg1));
109
TreeView := PGtkTreeView(WidgetInfo^.CoreWidget);
110
ListStore := gtk_tree_view_get_model(TreeView);
112
if gtk_tree_model_iter_nth_child(ListStore, @Iter, nil, Param) then
114
TCustomCheckListBox(WidgetInfo^.LCLObject).Toggle(Param);
115
AState:=TCustomCheckListBox(WidgetInfo^.LCLObject).State[Param];
117
gtk_list_store_set(ListStore, @Iter, [gtk2CLBState,
122
Path := gtk_tree_path_new_from_indices(Param, -1);
125
if TreeView^.priv^.tree <> nil then
126
gtk_tree_view_set_cursor(TreeView, Path, nil, False);
127
gtk_tree_path_free(Path);
130
FillChar(Mess{%H-}, SizeOf(Mess), #0);
103
131
Mess.Msg := LM_CHANGED;
104
Val(arg1, Mess.WParam);
105
133
Mess.Result := 0;
134
Mess.WParam := Param;
106
135
DeliverMessage(widgetInfo^.lclObject, Mess);
109
procedure Gtk2WS_CheckListBoxRowActivate(treeview : PGtkTreeView;
110
arg1 : PGtkTreePath; arg2 : PGtkTreeViewColumn; WidgetInfo: PWidgetInfo); cdecl;
115
APathStr := gtk_tree_path_to_string(arg1);
116
AIndex := StrToInt(APathStr);
118
if TCheckListBox(widgetInfo^.lclObject).ItemEnabled[AIndex] then
119
TCheckListBox(widgetInfo^.lclObject).Toggle(AIndex);
122
139
class procedure TGtk2WSCustomCheckListBox.SetCallbacks(const AGtkWidget: PGtkWidget;
176
193
gtk_tree_view_column_set_clickable(GTK_TREE_VIEW_COLUMN(column), True);
178
195
SignalConnect(PGtkWidget(renderer), 'toggled', @Gtk2WS_CheckListBoxToggle, WidgetInfo);
179
// don't toggle on double-click
180
//SignalConnect(TreeViewWidget, 'row_activated', @Gtk2WS_CheckListBoxRowActivate, WidgetInfo);
182
//g_signal_connect (renderer, 'toggled', G_CALLBACK (@gtk_clb_toggle), AWinControl);
183
//g_signal_connect (TreeViewWidget, 'row_activated', G_CALLBACK (@gtk_clb_toggle_row_activated), AWinControl);
186
198
renderer := gtk_cell_renderer_text_new();
218
230
Disabled: gboolean;
221
WidgetInfo := GetWidgetInfo(PGtkWidget(ACheckListBox.Handle));
233
WidgetInfo := GetWidgetInfo({%H-}PGtkWidget(ACheckListBox.Handle));
223
235
TreeView := PGtkTreeView(WidgetInfo^.CoreWidget);
224
236
ListStore := gtk_tree_view_get_model(TreeView);
242
254
Result := cbUnchecked;
243
WidgetInfo := GetWidgetInfo(PGtkWidget(ACheckListBox.Handle));
255
WidgetInfo := GetWidgetInfo({%H-}PGtkWidget(ACheckListBox.Handle));
245
257
TreeView := PGtkTreeView(WidgetInfo^.CoreWidget);
246
258
ListStore := gtk_tree_view_get_model(TreeView);
261
273
ListStore: PGtkTreeModel;
262
274
Disabled: gboolean;
264
WidgetInfo := GetWidgetInfo(PGtkWidget(ACheckListBox.Handle));
276
WidgetInfo := GetWidgetInfo({%H-}PGtkWidget(ACheckListBox.Handle));
266
278
TreeView := PGtkTreeView(WidgetInfo^.CoreWidget);
267
279
ListStore := gtk_tree_view_get_model(TreeView);
280
292
WidgetInfo: PWidgetInfo;
281
293
ListStore: PGtkTreeModel;
283
WidgetInfo := GetWidgetInfo(PGtkWidget(ACheckListBox.Handle));
295
WidgetInfo := GetWidgetInfo({%H-}PGtkWidget(ACheckListBox.Handle));
285
297
TreeView := PGtkTreeView(WidgetInfo^.CoreWidget);
286
298
ListStore := gtk_tree_view_get_model(TreeView);