fullscreen works
This commit is contained in:
		| @ -3,7 +3,7 @@ import gi | ||||
| from gtk_mediathek_player.tools import new_button_with_icon, new_radio_button_with_icon | ||||
|  | ||||
| gi.require_version("Gtk", "3.0")  | ||||
| from gi.repository import Gtk, Gio | ||||
| from gi.repository import Gtk, GLib | ||||
|  | ||||
| from . import player_widget | ||||
| from . import search_widget | ||||
| @ -30,23 +30,40 @@ class MainApp(Gtk.Window): | ||||
|  | ||||
|         self._main_stack.show_all() | ||||
|  | ||||
|         self.set_active_pane("search") | ||||
|  | ||||
|  | ||||
|         self._main_container.add(self._main_stack) | ||||
|  | ||||
|         self._headerbar = self._create_headerbar(True) | ||||
|         self._create_fullscreen_bar() | ||||
|          | ||||
|  | ||||
|         #self._main_container.add_overlay(self._create_fullscreen_bar()) | ||||
|  | ||||
|         self._main_container.add_overlay(self._revealer) | ||||
|         self.add(self._main_container) | ||||
|          | ||||
|  | ||||
|         self.connect('motion-notify-event', self.on_mouse_move) | ||||
|  | ||||
|         self._seconds_after_mouse_move = 0 | ||||
|  | ||||
|         self.set_active_pane("search") | ||||
|  | ||||
|         GLib.timeout_add_seconds(1, self.update) | ||||
|  | ||||
|      | ||||
|     def on_mouse_move(self, _, __): | ||||
|         self._player_widget.show_controls() | ||||
|         self._seconds_after_mouse_move = 0 | ||||
|         if self._fullscreen: | ||||
|             self._revealer.set_reveal_child(True) | ||||
|      | ||||
|     def update(self): | ||||
|         if self._seconds_after_mouse_move > 1: | ||||
|             self._revealer.set_reveal_child(False) | ||||
|          | ||||
|         self._seconds_after_mouse_move += 1 | ||||
|         self._player_widget.update_controls() | ||||
|  | ||||
|         return True | ||||
|  | ||||
|  | ||||
|     def on_search(self, _ = None): | ||||
|         if self.get_active_pane() == "player": | ||||
| @ -68,27 +85,31 @@ class MainApp(Gtk.Window): | ||||
|  | ||||
|         fullscreen = tools.new_button_with_icon("view-fullscreen") | ||||
|  | ||||
|         fullscreen.connect("clicked", self.toggle_fullscreen) | ||||
|  | ||||
|         headerbar.pack_end(fullscreen) | ||||
|  | ||||
|         if main_bar: | ||||
|  | ||||
|              | ||||
|             self._create_context_switch() | ||||
|  | ||||
|             self._fullscreen_button = fullscreen | ||||
|  | ||||
|             headerbar.pack_start(self._search_radio) | ||||
|  | ||||
|  | ||||
|  | ||||
|             headerbar.set_show_close_button(True) | ||||
|             headerbar.props.title = "Main Window" | ||||
|             self.set_titlebar(headerbar) | ||||
|          | ||||
|         return headerbar | ||||
|      | ||||
|      | ||||
|     def _create_fullscreen_bar(self): | ||||
|         self._revealer = Gtk.Revealer() | ||||
|         self._revealer.add(self._create_headerbar(False)) | ||||
|         self.set_valign(Gtk.Align.START) | ||||
|         self._revealer.set_valign(Gtk.Align.START) | ||||
|         self._revealer.set_vexpand(False) | ||||
|         self._revealer.set_transition_type(Gtk.RevealerTransitionType.SLIDE_DOWN) | ||||
|         return self._revealer | ||||
|  | ||||
|      | ||||
| @ -105,6 +126,11 @@ class MainApp(Gtk.Window): | ||||
|      | ||||
|     def set_active_pane(self, name: str): | ||||
|         self._main_stack.set_visible_child_name(name) | ||||
|         if name != "player": | ||||
|             self._fullscreen_button.set_sensitive(False) | ||||
|         else: | ||||
|             self._fullscreen_button.set_sensitive(True) | ||||
|  | ||||
|      | ||||
|     def get_active_pane(self): | ||||
|         return self._main_stack.get_visible_child_name() | ||||
| @ -117,4 +143,26 @@ class MainApp(Gtk.Window): | ||||
|         self._player_widget.play_from_uri(uri) | ||||
|         self._player_widget.play() | ||||
|      | ||||
|     def go_fullscreen(self): | ||||
|         if self._fullscreen: | ||||
|             return | ||||
|          | ||||
|         self._fullscreen = True | ||||
|  | ||||
|         self.fullscreen() | ||||
|         self._revealer.set_reveal_child(True) | ||||
|      | ||||
|     def go_unfullscreen(self): | ||||
|         if not self._fullscreen: | ||||
|             return | ||||
|  | ||||
|         self._fullscreen = False | ||||
|          | ||||
|         self.unfullscreen() | ||||
|         self._revealer.set_reveal_child(False) | ||||
|      | ||||
|     def toggle_fullscreen(self,_ = None): | ||||
|         if self._fullscreen: | ||||
|             self.go_unfullscreen() | ||||
|         else: | ||||
|             self.go_fullscreen() | ||||
|  | ||||
| @ -30,8 +30,6 @@ class PlayerWidget(Gtk.Overlay): | ||||
|  | ||||
|         self._seconds_after_mouse_move = 0 | ||||
|  | ||||
|         GLib.timeout_add_seconds(1, self.update_controls) | ||||
|  | ||||
|         self._slider.connect("value-changed", self._on_user_slider_change) | ||||
|  | ||||
|     def update_controls(self): | ||||
|  | ||||
		Reference in New Issue
	
	Block a user