@@ -44,7 +44,6 @@ class MainWindow : Gtk.Window{
4444 private Gtk . ToolButton btn_browse_snapshot;
4545 private Gtk . ToolButton btn_settings;
4646 private Gtk . ToolButton btn_wizard;
47- private Gtk . Menu menu_extra;
4847
4948 private SnapshotListBox snapshot_list_box;
5049
@@ -209,9 +208,7 @@ class MainWindow : Gtk.Window{
209208 toolbar. add(button);
210209
211210 // click event
212- button. clicked. connect(()= > {
213- menu_extra_popup(null );
214- });
211+ button. clicked. connect(() = > menu_extra_popup());
215212 }
216213
217214 private void init_ui_snapshot_list (){
@@ -357,47 +354,72 @@ class MainWindow : Gtk.Window{
357354 // TODO: low: refresh device list automatically when a device is plugged in
358355 }
359356
360- private bool menu_extra_popup (Gdk . EventButton ? event ){
357+ private bool menu_extra_popup (){
361358
362- menu_extra = new Gtk .Menu ();
359+ Gtk . Menu ? menu_extra = new Gtk .Menu ();
363360 menu_extra. reserve_toggle_size = false ;
364361
365362 Gtk . MenuItem menu_item = null ;
366363
367364 if (! App . live_system()){
368365 // app logs
369- menu_item = create_menu_item(_(" View TimeShift Logs" ), " " , " " , 16 );
366+ menu_item = create_menu_item(_(" View TimeShift Logs" ));
370367 menu_extra. append(menu_item);
371368 menu_item. activate. connect(btn_view_app_logs_clicked);
369+
370+ // pause snapshots
371+ menu_item = create_menu_item(_(" Pause Snapshots" ));
372+ menu_extra. append(menu_item);
373+
374+ Gtk . Menu ? menu_pause = new Gtk .Menu ();
375+ Gtk . MenuItem ? menu_pause_item = create_menu_item(_(" Unpause" ));
376+ menu_pause_item. activate. connect(() = > App . unpause_snapshots());
377+ menu_pause_item. sensitive = App . snapshots_paused;
378+ menu_pause. append(menu_pause_item);
379+
380+ menu_pause_item = create_menu_item(_(" Pause until shutdown" ));
381+ menu_pause_item. activate. connect(() = > App . pause_snapshots_for_this_boot());
382+ menu_pause. append(menu_pause_item);
383+
384+ menu_pause_item = create_menu_item(_(" Pause for 30min" ));
385+ menu_pause_item. activate. connect(() = > App . pause_snapshots_for(1800 ));
386+ menu_pause. append(menu_pause_item);
387+
388+ menu_pause_item = create_menu_item(_(" Pause for 4h" ));
389+ menu_pause_item. activate. connect(() = > App . pause_snapshots_for(3600 * 4 ));
390+ menu_pause. append(menu_pause_item);
391+
392+ menu_pause_item = create_menu_item(_(" Pause for 8h" ));
393+ menu_pause_item. activate. connect(() = > App . pause_snapshots_for(3600 * 8 ));
394+ menu_pause. append(menu_pause_item);
395+
396+ menu_pause_item = create_menu_item(_(" Pause for 12h" ));
397+ menu_pause_item. activate. connect(() = > App . pause_snapshots_for(3600 * 12 ));
398+ menu_pause. append(menu_pause_item);
399+
400+ menu_item. submenu = menu_pause;
372401 }
373402
374403 // about
375- menu_item = create_menu_item(_(" About" ), " " , " " , 16 );
404+ menu_item = create_menu_item(_(" About" ));
376405 menu_extra. append(menu_item);
377406 menu_item. activate. connect(btn_about_clicked);
378407
379408 menu_extra. show_all();
380-
381- if (event != null ) {
382- menu_extra. popup (null , null , null , event. button, event. time);
383- }
384- else {
385- menu_extra. popup (null , null , null , 0 , Gtk . get_current_event_time());
386- }
409+
410+ menu_extra. popup (null , null , null , 0 , Gtk . get_current_event_time());
387411
388412 return true ;
389413 }
390414
391- private Gtk .MenuItem create_menu_item (
392- string label_text , string icon_name_stock , string icon_name_custom ,
393- int icon_size , string tooltip_text = ""){
394-
395- var menu_item = new Gtk .MenuItem ();
415+ private Gtk .MenuItem create_menu_item (string label_text , string tooltip_text = ""){
416+
417+ Gtk . MenuItem menu_item = new Gtk .MenuItem ();
396418
397- var box = new Gtk .Box (Orientation . HORIZONTAL , 3 );
419+ Gtk . Box box = new Gtk .Box (Orientation . HORIZONTAL , 3 );
398420 menu_item. add(box);
399421
400- var label = new Gtk .Label (label_text);
422+ Gtk . Label label = new Gtk .Label (label_text);
401423 label. xalign = (float ) 0.0 ;
402424 label. margin_end = 6 ;
403425 label. set_tooltip_text((tooltip_text. length > 0 ) ? tooltip_text : label_text);
0 commit comments