def _on_key_press(self, widget, event): modifiers = Gtk.accelerator_get_default_mod_mask() event_and_modifiers = (event.state & modifiers) if event_and_modifiers != 0: # Open search bar on Ctrl + F if (event.keyval == Gdk.KEY_f and event_and_modifiers == Gdk.ModifierType.CONTROL_MASK): self.toolbar.searchbar.toggle_bar() # Go back from Album view on Alt + Left if (event.keyval == Gdk.KEY_Left and event_and_modifiers == Gdk.ModifierType.MOD1_MASK): if (self.toolbar._state != ToolbarState.MAIN): self.curr_view.set_visible_child(self.curr_view._grid) self.toolbar.set_state(ToolbarState.MAIN) else: # Close search bar after Esc is pressed if event.keyval == Gdk.KEY_Escape: self.toolbar.searchbar.show_bar(False) # Also disable selection if self.toolbar._selectionMode: self.toolbar.set_selection_mode(False) # Open search bar when typing printable chars if it not opened # Make sure we skip unprintable chars and don't grab space press # (this is used for play/pause) if not self.toolbar.searchbar.get_reveal_child() and not event.keyval == Gdk.KEY_space: if (event_and_modifiers == Gdk.ModifierType.SHIFT_MASK or event_and_modifiers == 0) and \ GLib.unichar_isprint(chr(Gdk.keyval_to_unicode(event.keyval))): self.toolbar.searchbar.show_bar(True) else: if not self.toolbar.searchbar.get_reveal_child(): if event.keyval == Gdk.KEY_space and self.player.actionbar.get_visible(): self.player.play_pause()
def _on_key_press(self, widget, event): modifiers = Gtk.accelerator_get_default_mod_mask() event_and_modifiers = (event.state & modifiers) if event_and_modifiers != 0: # Open search bar on Ctrl + F if (event.keyval == Gdk.KEY_f and event_and_modifiers == Gdk.ModifierType.CONTROL_MASK): self.toolbar.searchbar.toggle_bar() # Go back from Album view on Alt + Left if (event.keyval == Gdk.KEY_Left and event_and_modifiers == Gdk.ModifierType.MOD1_MASK): if (self.toolbar._state != ToolbarState.MAIN): self.curr_view.set_visible_child(self.curr_view._grid) self.toolbar.set_state(ToolbarState.MAIN) else: if (event.keyval == Gdk.KEY_Delete): if self._stack.get_visible_child() == self.views[3]: self.views[3]._on_delete_activate(None) # Close search bar after Esc is pressed if event.keyval == Gdk.KEY_Escape: self.toolbar.searchbar.show_bar(False) # Also disable selection if self.toolbar._selectionMode: self.toolbar.set_selection_mode(False) # Open search bar when typing printable chars if it not opened # Make sure we skip unprintable chars and don't grab space press # (this is used for play/pause) if not self.toolbar.searchbar.get_reveal_child( ) and not event.keyval == Gdk.KEY_space: if (event_and_modifiers == Gdk.ModifierType.SHIFT_MASK or event_and_modifiers == 0) and \ GLib.unichar_isprint(chr(Gdk.keyval_to_unicode(event.keyval))): self.toolbar.searchbar.show_bar(True) else: if not self.toolbar.searchbar.get_reveal_child(): if event.keyval == Gdk.KEY_space and self.player.actionbar.get_visible( ): if self.get_focus() != self.player.playBtn: self.player.play_pause()
def _on_key_press(self, widget, event): modifiers = Gtk.accelerator_get_default_mod_mask() event_and_modifiers = (event.state & modifiers) if event_and_modifiers != 0: # Open search bar on Ctrl + F if (event.keyval == Gdk.KEY_f and event_and_modifiers == Gdk.ModifierType.CONTROL_MASK): self.toolbar.searchbar.toggle_bar() # Play / Pause on Ctrl + SPACE if (event.keyval == Gdk.KEY_space and event_and_modifiers == Gdk.ModifierType.CONTROL_MASK): self.player.play_pause() # Play previous on Ctrl + B if (event.keyval == Gdk.KEY_b and event_and_modifiers == Gdk.ModifierType.CONTROL_MASK): self.player.play_previous() # Play next on Ctrl + N if (event.keyval == Gdk.KEY_n and event_and_modifiers == Gdk.ModifierType.CONTROL_MASK): self.player.play_next() # Toggle repeat on Ctrl + R if (event.keyval == Gdk.KEY_r and event_and_modifiers == Gdk.ModifierType.CONTROL_MASK): if self.player.get_repeat_mode() == RepeatType.SONG: self.player.set_repeat_mode(RepeatType.NONE) else: self.player.set_repeat_mode(RepeatType.SONG) # Toggle shuffle on Ctrl + S if (event.keyval == Gdk.KEY_s and event_and_modifiers == Gdk.ModifierType.CONTROL_MASK): if self.player.get_repeat_mode() == RepeatType.SHUFFLE: self.player.set_repeat_mode(RepeatType.NONE) else: self.player.set_repeat_mode(RepeatType.SHUFFLE) # Go back from Album view on Alt + Left if (event.keyval == Gdk.KEY_Left and event_and_modifiers == Gdk.ModifierType.MOD1_MASK): if (self.toolbar._state != ToolbarState.MAIN): self.curr_view.set_visible_child(self.curr_view._grid) self.toolbar.set_state(ToolbarState.MAIN) # Go to Albums view on Ctrl + 1 if (event.keyval == Gdk.KEY_1 and event_and_modifiers == Gdk.ModifierType.CONTROL_MASK): self._toggle_view(0, 0) # Go to Artists view on Ctrl + 2 if (event.keyval == Gdk.KEY_2 and event_and_modifiers == Gdk.ModifierType.CONTROL_MASK): self._toggle_view(0, 1) # Go to Songs view on Ctrl + 3 if (event.keyval == Gdk.KEY_3 and event_and_modifiers == Gdk.ModifierType.CONTROL_MASK): self._toggle_view(0, 2) # Go to Playlists view on Ctrl + 4 if (event.keyval == Gdk.KEY_4 and event_and_modifiers == Gdk.ModifierType.CONTROL_MASK): self._toggle_view(0, 3) else: if (event.keyval == Gdk.KEY_Delete): if self._stack.get_visible_child() == self.views[3]: self.views[3].remove_playlist() # Close search bar after Esc is pressed if event.keyval == Gdk.KEY_Escape: self.toolbar.searchbar.show_bar(False) # Also disable selection if self.toolbar._selectionMode: self.toolbar.set_selection_mode(False) # Open the search bar when typing printable chars. key_unic = Gdk.keyval_to_unicode(event.keyval) if ((not self.toolbar.searchbar.get_search_mode() and not event.keyval == Gdk.KEY_space) and GLib.unichar_isprint(chr(key_unic)) and (event_and_modifiers == Gdk.ModifierType.SHIFT_MASK or event_and_modifiers == 0)): self.toolbar.searchbar.show_bar(True)
def _on_key_press(self, widget, event): modifiers = event.get_state() & Gtk.accelerator_get_default_mod_mask() (_, keyval) = event.get_keyval() control_mask = Gdk.ModifierType.CONTROL_MASK shift_mask = Gdk.ModifierType.SHIFT_MASK mod1_mask = Gdk.ModifierType.MOD1_MASK shift_ctrl_mask = control_mask | shift_mask # Ctrl+<KEY> if control_mask == modifiers: if keyval == Gdk.KEY_a: self._select_all() # Open search bar on Ctrl + F if (keyval == Gdk.KEY_f and not self.views[View.PLAYLIST].rename_active and not self.props.selection_mode and self._headerbar.props.state != HeaderBar.State.SEARCH): search_mode = self._search.props.search_mode_active self._search.props.search_mode_active = not search_mode # Play / Pause on Ctrl + SPACE if keyval == Gdk.KEY_space: self._player.play_pause() # Play previous on Ctrl + B if keyval == Gdk.KEY_b: self._player.previous() # Play next on Ctrl + N if keyval == Gdk.KEY_n: self._player.next() # Toggle repeat on Ctrl + R if keyval == Gdk.KEY_r: if self._player.props.repeat_mode == RepeatMode.SONG: self._player.props.repeat_mode = RepeatMode.NONE repeat_state = GLib.Variant("s", ("none")) else: self._player.props.repeat_mode = RepeatMode.SONG repeat_state = GLib.Variant("s", ("song")) self.lookup_action('repeat').change_state(repeat_state) # Toggle shuffle on Ctrl + S if keyval == Gdk.KEY_s: if self._player.props.repeat_mode == RepeatMode.SHUFFLE: self._player.props.repeat_mode = RepeatMode.NONE repeat_state = GLib.Variant("s", ("none")) else: self._player.props.repeat_mode = RepeatMode.SHUFFLE repeat_state = GLib.Variant("s", ("shuffle")) self.lookup_action('repeat').change_state(repeat_state) # Ctrl+Shift+<KEY> elif modifiers == shift_ctrl_mask: if keyval == Gdk.KEY_A: self._deselect_all() # Alt+<KEY> elif modifiers == mod1_mask: # Go back from child view on Alt + Left if keyval == Gdk.KEY_Left: self._switch_back_from_childview() # Headerbar switching if keyval in [Gdk.KEY_1, Gdk.KEY_KP_1]: self._toggle_view(View.ALBUM) if keyval in [Gdk.KEY_2, Gdk.KEY_KP_2]: self._toggle_view(View.ARTIST) if keyval in [Gdk.KEY_3, Gdk.KEY_KP_3]: self._toggle_view(View.SONG) if keyval in [Gdk.KEY_4, Gdk.KEY_KP_4]: self._toggle_view(View.PLAYLIST) # No modifier else: if (keyval == Gdk.KEY_AudioPlay or keyval == Gdk.KEY_AudioPause): self._player.play_pause() if keyval == Gdk.KEY_AudioStop: self._player.stop() if keyval == Gdk.KEY_AudioPrev: self._player.previous() if keyval == Gdk.KEY_AudioNext: self._player.next() if (keyval == Gdk.KEY_Delete and self.props.active_view == self.views[View.PLAYLIST] and not self.views[View.PLAYLIST].rename_active): self.activate_action("playlist_delete", None) # Close selection mode or search bar after Esc is pressed if keyval == Gdk.KEY_Escape: if self.props.selection_mode: self.props.selection_mode = False elif self._search.props.search_mode_active: self._search.props.search_mode_active = False # Open the search bar when typing printable chars. key_unic = Gdk.keyval_to_unicode(keyval) if ((not self._search.props.search_mode_active and not keyval == Gdk.KEY_space) and GLib.unichar_isprint(chr(key_unic)) and (modifiers == shift_mask or modifiers == 0) and not self.views[View.PLAYLIST].rename_active and not self.props.selection_mode and self._headerbar.props.state != HeaderBar.State.SEARCH): self._search.props.search_mode_active = True
def _on_key_press(self, widget, event): modifiers = Gtk.accelerator_get_default_mod_mask() modifiers = (event.state & modifiers) if modifiers != 0: control_mask = Gdk.ModifierType.CONTROL_MASK shift_mask = Gdk.ModifierType.SHIFT_MASK mod1_mask = Gdk.ModifierType.MOD1_MASK if (event.keyval == Gdk.KEY_a and modifiers == control_mask): self._select_all() if (event.keyval == Gdk.KEY_A and modifiers == (shift_mask | control_mask)): self._select_none() # Open search bar on Ctrl + F if (event.keyval == Gdk.KEY_f and modifiers == control_mask): self.toolbar.searchbar.toggle() # Play / Pause on Ctrl + SPACE if (event.keyval == Gdk.KEY_space and modifiers == control_mask): self.player.play_pause() # Play previous on Ctrl + B if (event.keyval == Gdk.KEY_b and modifiers == control_mask): self.player.play_previous() # Play next on Ctrl + N if (event.keyval == Gdk.KEY_n and modifiers == control_mask): self.player.play_next() # Toggle repeat on Ctrl + R if (event.keyval == Gdk.KEY_r and modifiers == control_mask): if self.player.get_repeat_mode() == RepeatType.SONG: self.player.set_repeat_mode(RepeatType.NONE) else: self.player.set_repeat_mode(RepeatType.SONG) # Toggle shuffle on Ctrl + S if (event.keyval == Gdk.KEY_s and modifiers == control_mask): if self.player.get_repeat_mode() == RepeatType.SHUFFLE: self.player.set_repeat_mode(RepeatType.NONE) else: self.player.set_repeat_mode(RepeatType.SHUFFLE) # Go back from Album view on Alt + Left if (event.keyval == Gdk.KEY_Left and modifiers == mod1_mask): self.toolbar.on_back_button_clicked() if ((event.keyval in [Gdk.KEY_1, Gdk.KEY_KP_1]) and modifiers == control_mask): self._toggle_view(View.ALBUM) if ((event.keyval in [Gdk.KEY_2, Gdk.KEY_KP_2]) and modifiers == control_mask): self._toggle_view(View.ARTIST) if ((event.keyval in [Gdk.KEY_3, Gdk.KEY_KP_3]) and modifiers == control_mask): self._toggle_view(View.SONG) if ((event.keyval in [Gdk.KEY_4, Gdk.KEY_KP_4]) and modifiers == control_mask): self._toggle_view(View.PLAYLIST) else: child = self._stack.get_visible_child() if (event.keyval == Gdk.KEY_Delete and child == self.views[View.PLAYLIST]): self.views[View.PLAYLIST].remove_playlist() # Close search bar after Esc is pressed if event.keyval == Gdk.KEY_Escape: self.toolbar.searchbar.reveal(False) # Also disable selection if self.toolbar._selectionMode: self.toolbar.set_selection_mode(False) # Open the search bar when typing printable chars. key_unic = Gdk.keyval_to_unicode(event.keyval) if ((not self.toolbar.searchbar.get_search_mode() and not event.keyval == Gdk.KEY_space) and GLib.unichar_isprint(chr(key_unic)) and (modifiers == Gdk.ModifierType.SHIFT_MASK or modifiers == 0) and not self.views[View.PLAYLIST].rename_active): self.toolbar.searchbar.reveal(True)
def _on_key_press(self, widget, event): modifiers = event.get_state() & Gtk.accelerator_get_default_mod_mask() (_, keyval) = event.get_keyval() control_mask = Gdk.ModifierType.CONTROL_MASK shift_mask = Gdk.ModifierType.SHIFT_MASK mod1_mask = Gdk.ModifierType.MOD1_MASK shift_ctrl_mask = control_mask | shift_mask # Ctrl+<KEY> if control_mask == modifiers: if keyval == Gdk.KEY_a: self._select_all() # Open search bar on Ctrl + F if (keyval == Gdk.KEY_f and not self.views[View.PLAYLIST].rename_active and self._headerbar.props.state != HeaderBar.State.SEARCH): search_mode = self._search.props.search_mode_active self._search.props.search_mode_active = not search_mode # Play / Pause on Ctrl + SPACE if keyval == Gdk.KEY_space: self._player.play_pause() # Play previous on Ctrl + B if keyval == Gdk.KEY_b: self._player.previous() # Play next on Ctrl + N if keyval == Gdk.KEY_n: self._player.next() if keyval == Gdk.KEY_q: self.props.application.quit() # Toggle repeat on Ctrl + R if keyval == Gdk.KEY_r: if self._player.props.repeat_mode == RepeatMode.SONG: self._player.props.repeat_mode = RepeatMode.NONE repeat_state = GLib.Variant("s", ("none")) else: self._player.props.repeat_mode = RepeatMode.SONG repeat_state = GLib.Variant("s", ("song")) self.lookup_action('repeat').change_state(repeat_state) # Toggle shuffle on Ctrl + S if keyval == Gdk.KEY_s: if self._player.props.repeat_mode == RepeatMode.SHUFFLE: self._player.props.repeat_mode = RepeatMode.NONE repeat_state = GLib.Variant("s", ("none")) else: self._player.props.repeat_mode = RepeatMode.SHUFFLE repeat_state = GLib.Variant("s", ("shuffle")) self.lookup_action('repeat').change_state(repeat_state) # Ctrl+Shift+<KEY> elif modifiers == shift_ctrl_mask: if keyval == Gdk.KEY_A: self._select_none() # Alt+<KEY> elif modifiers == mod1_mask: # Go back from child view on Alt + Left if keyval == Gdk.KEY_Left: self._switch_back_from_childview() # Headerbar switching if keyval in [Gdk.KEY_1, Gdk.KEY_KP_1]: self._toggle_view(View.ALBUM) if keyval in [Gdk.KEY_2, Gdk.KEY_KP_2]: self._toggle_view(View.ARTIST) if keyval in [Gdk.KEY_3, Gdk.KEY_KP_3]: self._toggle_view(View.SONG) if keyval in [Gdk.KEY_4, Gdk.KEY_KP_4]: self._toggle_view(View.PLAYLIST) # No modifier else: if (keyval == Gdk.KEY_AudioPlay or keyval == Gdk.KEY_AudioPause): self._player.play_pause() if keyval == Gdk.KEY_AudioStop: self._player.stop() if keyval == Gdk.KEY_AudioPrev: self._player.previous() if keyval == Gdk.KEY_AudioNext: self._player.next() child = self._stack.get_visible_child() if (keyval == Gdk.KEY_Delete and child == self.views[View.PLAYLIST]): self.views[View.PLAYLIST].remove_playlist() # Close selection mode or search bar after Esc is pressed if keyval == Gdk.KEY_Escape: if self.props.selection_mode: self.props.selection_mode = False elif self._search.props.search_mode_active: self._search.props.search_mode_active = False # Open the search bar when typing printable chars. key_unic = Gdk.keyval_to_unicode(keyval) if ((not self._searchbar.get_search_mode() and not keyval == Gdk.KEY_space) and GLib.unichar_isprint(chr(key_unic)) and (modifiers == shift_mask or modifiers == 0) and not self.views[View.PLAYLIST].rename_active and self._headerbar.props.state != HeaderBar.State.SEARCH): self._search.props.search_mode_active = True