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
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 73 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 elsif rectangle.y + rectangle.height + window_height <= 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 [posx, posy] end |
#on_popup_menu_quit_activate ⇒ Object
When quit button is clicked
63 64 65 |
# File 'lib/volay/widget/system_tray.rb', line 63 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
19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/volay/widget/system_tray.rb', line 19 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
54 55 56 57 58 |
# File 'lib/volay/widget/system_tray.rb', line 54 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
34 35 36 |
# File 'lib/volay/widget/system_tray.rb', line 34 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
41 42 43 44 45 46 |
# File 'lib/volay/widget/system_tray.rb', line 41 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 |