Class: Volay::Widget::SystemTray
- Defined in:
- lib/volay/widget/system_tray.rb
Overview
Events class
Constant Summary collapse
- LEFT_CLICK =
1- RIGHT_CLICK =
3- M_KEYCODE =
47
Instance Attribute Summary
Attributes inherited from Events
Instance Method Summary collapse
-
#get_position(window) ⇒ Object
Retrieve the good position to be above the status icon.
-
#on_popup_menu_quit_activate ⇒ Object
When quit button is clicked.
-
#on_status_icon_button_press_event(_widget, event) ⇒ Object
When left click on the status icon, popup the window menu.
-
#on_status_icon_popup_menu(_widget, _event, time) ⇒ Object
When right click on the status icon.
-
#on_system_tray_window_focus_out_event ⇒ Object
When click outside the window.
-
#on_system_tray_window_key_release_event(_widget, event) ⇒ Object
Check for M keycode to toggle mute.
Methods inherited from Events
Constructor Details
This class inherits a constructor from Volay::Widget::Events
Instance Method Details
#get_position(window) ⇒ Object
Retrieve the good position to be above the status icon
71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/volay/widget/system_tray.rb', line 71 def get_position(window) _e, screen, rectangle, orientation = @app.get_object('status_icon') .geometry window.set_screen(screen) monitor_num = screen.get_monitor_at_point(rectangle.x, rectangle.y) monitor = screen.get_monitor_geometry(monitor_num) window_width, window_height = window.size if orientation == Gtk::Orientation::VERTICAL if monitor.width - rectangle.x == rectangle.width # right panel posx = monitor.x + monitor.width - window_width - rectangle.width else # left panel posx = rectangle.x + rectangle.width posy = rectangle.y end else total = rectangle.y + rectangle.height + window_height if total <= monitor.y + monitor.height posy = rectangle.y + rectangle.height else posy = rectangle.y - window_height posx = if rectangle.x + window_width <= monitor.x + monitor.width rectangle.x else monitor.x + monitor.width - window_width end end end [posx, posy] end |
#on_popup_menu_quit_activate ⇒ Object
When quit button is clicked
61 62 63 |
# File 'lib/volay/widget/system_tray.rb', line 61 def Gtk.main_quit end |
#on_status_icon_button_press_event(_widget, event) ⇒ Object
When left click on the status icon, popup the window menu
17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/volay/widget/system_tray.rb', line 17 def (, event) return unless event.is_a?(Gdk::EventButton) && event. == LEFT_CLICK return on_system_tray_window_focus_out_event if @app.get_object('system_tray_window').visible? window = @app.get_object('system_tray_window') posx, posy = get_position(window) window.move(posx, posy) @app.get_object('system_tray_window').show_all end |
#on_status_icon_popup_menu(_widget, _event, time) ⇒ Object
When right click on the status icon
52 53 54 55 56 |
# File 'lib/volay/widget/system_tray.rb', line 52 def (, _event, time) = @app.get_object('popup_menu') .show_all .popup(nil, nil, 0, time) end |
#on_system_tray_window_focus_out_event ⇒ Object
When click outside the window
32 33 34 |
# File 'lib/volay/widget/system_tray.rb', line 32 def on_system_tray_window_focus_out_event @app.get_object('system_tray_window').hide end |
#on_system_tray_window_key_release_event(_widget, event) ⇒ Object
Check for M keycode to toggle mute
39 40 41 42 43 44 |
# File 'lib/volay/widget/system_tray.rb', line 39 def on_system_tray_window_key_release_event(, event) return unless event.is_a?(Gdk::EventKey) && event.hardware_keycode == M_KEYCODE @app.mixer.toggle @app.utils.update_status_icon end |