method private connect_events =
(* connect the press on button 3 for contextual menu *)
ignore (view#event#connect#button_press ~callback:
(
fun ev ->
match GdkEvent.get_type ev with
`BUTTON_PRESS when GdkEvent.Button.button ev = 3 ->
(
GToolbox.popup_menu
~button: 3
~time: (Int32.zero)
~entries: self#menu;
true
)
| `TWO_BUTTON_PRESS ->
(
let x = int_of_float (GdkEvent.Button.x ev) in
let y = int_of_float (GdkEvent.Button.y ev) in
match view#get_path_at_pos ~x ~y with
None -> true
| Some (path,_,_,_) ->
let d =
let it = store#get_iter path in
store#get ~row: it ~column: col_data
in
self#on_double_click d;
true
)
| `BUTTON_PRESS
| `BUTTON_RELEASE
| `THREE_BUTTON_PRESS -> false
)
);
ignore
(view#selection#connect#changed
(fun () ->
let sel = view#selection in
match sel#get_selected_rows with
[] ->
selection <- [];
List.iter self#on_deselect selection
| l ->
let l = List.map
(fun path ->
let it = store#get_iter path in
store#get ~row: it ~column: col_data
)
l
in
let newly_selected =
List.filter (fun e -> not (List.mem e selection)) l
in
let no_more_selected =
List.filter (fun e -> not (List.mem e l)) selection
in
selection <- l;
List.iter self#on_deselect no_more_selected;
List.iter self#on_select newly_selected;
)
);
(*
let f_select_table ~row ~column ~event =
try
let d = List.nth data row in
selection <- d ::
(List.filter (fun d2 -> d <> d2) selection);
self#on_select d;
with Failure _ -> ()
in
let f_unselect_table ~row ~column ~event =
let d = List.nth data row in
selection <-
(List.filter (fun d2 -> d <> d2) selection);
self#on_deselect d;
check_double_click event d
in
ignore (wlist#connect#select_row f_select_table);
ignore (wlist#connect#unselect_row f_unselect_table);
ignore (wlist#connect#click_column
(fun c ->
let n = c + 1 in
if current_sort = n or (- current_sort) = n then
current_sort <- (- current_sort)
else
current_sort <- n;
self#update
)
);
*)
()