@@ -3,8 +3,24 @@ open Eio_trace
33let ( ==> ) signal callback =
44 ignore (signal ~callback : GtkSignal. id)
55
6+ let ui_xml = {|
7+ < ui>
8+ < popup name= 'PopupMenu '>
9+ < menuitem action= 'viewport- set- start' />
10+ < menuitem action= 'viewport- set- duration' />
11+ < / popup>
12+ < / ui>
13+ | }
14+
615let create ~title tracefile =
16+ let actions = GAction. action_group ~name: " main" () in
17+ let ui = GAction. ui_manager () in
18+ ui#insert_action_group actions 0 ;
19+ let _id : GAction.ui_id = ui#add_ui_from_string ui_xml; in
20+
721 let window = GWindow. window () in
22+ window#add_accel_group ui#get_accel_group;
23+
824 window#set_title title;
925 window#event#connect#delete ==> (fun _ -> GMain. quit () ; true );
1026 let table = GPack. table ~rows: 3 ~columns: 2 ~homogeneous: false ~packing: window#add () in
@@ -96,6 +112,14 @@ let create ~title tracefile =
96112 )
97113 in
98114
115+ GAction. add_action " viewport-set-start" actions
116+ ~label: " Set start time..."
117+ ~callback: (fun _a -> show_start () );
118+
119+ GAction. add_action " viewport-set-duration" actions
120+ ~label: " Set duration..."
121+ ~callback: (fun _a -> show_duration () );
122+
99123 window#event#connect#key_press ==> (fun ev ->
100124 let keyval = GdkEvent.Key. keyval ev in
101125 if keyval = GdkKeysyms. _F5 then (
@@ -140,13 +164,20 @@ let create ~title tracefile =
140164 | _ -> false
141165 );
142166
167+ let menu = ui#get_widget " /PopupMenu" in
168+ let menu = new GMenu. menu (Gobject. try_cast menu#as_widget " GtkMenu" ) in
169+ GtkMenuProps.Menu. attach_to_widget menu#as_menu window#as_widget;
170+
143171 let drag_start = ref None in
144172 area#event#connect#button_press ==> (fun ev ->
145173 match GdkEvent. get_type ev, GdkEvent.Button. button ev with
146174 | `BUTTON_PRESS , 1 ->
147175 let start_t = View. time_of_x v (GdkEvent.Button. x ev) in
148176 drag_start := Some (start_t, v.scroll_y +. GdkEvent.Button. y ev);
149- true ;
177+ true
178+ | `BUTTON_PRESS , (3 as button ) ->
179+ menu#popup ~button ~time: (GdkEvent.Button. time ev);
180+ true
150181 | _ -> false
151182 );
152183
0 commit comments