permanent buttons to switch context in headerbar
This commit is contained in:
		| @ -75,17 +75,33 @@ class MainApp(Gtk.Window): | |||||||
|         return True |         return True | ||||||
|  |  | ||||||
|     def on_search(self, _=None): |     def on_search(self, _=None): | ||||||
|         if self.get_active_pane() == "player": |  | ||||||
|             self._player_widget.pause() |  | ||||||
|         self.set_active_pane("search") |         self.set_active_pane("search") | ||||||
|  |  | ||||||
|     def _create_context_switch(self): |     def on_player(self, _=None): | ||||||
|  |         self.set_active_pane("player") | ||||||
|  |  | ||||||
|         self._search_radio = tools.new_button_with_icon("edit-find") |     def _create_context_switch(self, container): | ||||||
|  |  | ||||||
|         self._search_radio.connect("clicked", self.on_search) |         bbox = Gtk.ButtonBox(orientation=Gtk.Orientation.HORIZONTAL) | ||||||
|  |         bbox.set_layout(Gtk.ButtonBoxStyle.EXPAND) | ||||||
|  |  | ||||||
|         # more to come... |         search_radio = tools.new_button_with_icon("edit-find") | ||||||
|  |         search_radio.connect("clicked", self.on_search) | ||||||
|  |  | ||||||
|  |         player_radio = tools.new_button_with_icon("tv-symbolic") | ||||||
|  |         player_radio.connect("clicked", self.on_player) | ||||||
|  |  | ||||||
|  |         bbox.pack_start(player_radio, | ||||||
|  |                         expand=False, | ||||||
|  |                         fill=False, | ||||||
|  |                         padding=0) | ||||||
|  |  | ||||||
|  |         bbox.pack_start(search_radio, | ||||||
|  |                         expand=False, | ||||||
|  |                         fill=False, | ||||||
|  |                         padding=0) | ||||||
|  |  | ||||||
|  |         container.pack_start(bbox) | ||||||
|  |  | ||||||
|     def _create_headerbar(self, main_bar=True): |     def _create_headerbar(self, main_bar=True): | ||||||
|         headerbar = Gtk.HeaderBar() |         headerbar = Gtk.HeaderBar() | ||||||
| @ -96,14 +112,12 @@ class MainApp(Gtk.Window): | |||||||
|  |  | ||||||
|         headerbar.pack_end(fullscreen) |         headerbar.pack_end(fullscreen) | ||||||
|  |  | ||||||
|  |         self._create_context_switch(headerbar) | ||||||
|  |  | ||||||
|         if main_bar: |         if main_bar: | ||||||
|  |  | ||||||
|             self._create_context_switch() |  | ||||||
|  |  | ||||||
|             self._fullscreen_button = fullscreen |             self._fullscreen_button = fullscreen | ||||||
|  |  | ||||||
|             headerbar.pack_start(self._search_radio) |  | ||||||
|  |  | ||||||
|             headerbar.set_show_close_button(True) |             headerbar.set_show_close_button(True) | ||||||
|             headerbar.props.title = "Gtk Mediathek Player" |             headerbar.props.title = "Gtk Mediathek Player" | ||||||
|             self.set_titlebar(headerbar) |             self.set_titlebar(headerbar) | ||||||
| @ -131,11 +145,15 @@ class MainApp(Gtk.Window): | |||||||
|         Gtk.main() |         Gtk.main() | ||||||
|  |  | ||||||
|     def set_active_pane(self, name: str): |     def set_active_pane(self, name: str): | ||||||
|  |         active_pane = self.get_active_pane() | ||||||
|  |  | ||||||
|         self._main_stack.set_visible_child_name(name) |         self._main_stack.set_visible_child_name(name) | ||||||
|         if name != "player": |         if name != "player": | ||||||
|             self._fullscreen_button.set_sensitive(False) |             self._player_widget.pause() | ||||||
|         else: |         else: | ||||||
|             self._fullscreen_button.set_sensitive(True) |             if active_pane != "player": | ||||||
|  |                 if self._player_widget.is_paused(): | ||||||
|  |                     self._player_widget.play() | ||||||
|  |  | ||||||
|     def get_active_pane(self): |     def get_active_pane(self): | ||||||
|         return self._main_stack.get_visible_child_name() |         return self._main_stack.get_visible_child_name() | ||||||
|  | |||||||
| @ -112,6 +112,9 @@ class PlayerWidget(Gtk.Overlay): | |||||||
|                      fill=True, |                      fill=True, | ||||||
|                      padding=0) |                      padding=0) | ||||||
|  |  | ||||||
|  |         # TODO: replace this deprecated (honestly, i find it disturbing that there is no container or css template) | ||||||
|  |         # already there to do this, such that you are forced to create a custom css | ||||||
|  |         # snippet and override the default gtk scheme) | ||||||
|         box.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(.0,.0,.0,.8)) |         box.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(.0,.0,.0,.8)) | ||||||
|  |  | ||||||
|         self._controls.add(box) |         self._controls.add(box) | ||||||
| @ -166,6 +169,15 @@ class PlayerWidget(Gtk.Overlay): | |||||||
|     def get_state(self): |     def get_state(self): | ||||||
|         return self._videoarea.get_state() |         return self._videoarea.get_state() | ||||||
|      |      | ||||||
|  |     def is_playing(self) -> bool: | ||||||
|  |         return self.get_state() == Gst.State.PLAYING | ||||||
|  |      | ||||||
|  |     def is_stopped(self) -> bool: | ||||||
|  |         return self.get_state() == Gst.State.NULL | ||||||
|  |      | ||||||
|  |     def is_paused(self) -> bool: | ||||||
|  |         return self.get_state() == Gst.State.PAUSED | ||||||
|  |  | ||||||
|     def show_controls(self): |     def show_controls(self): | ||||||
|         self._controls.set_reveal_child(True) |         self._controls.set_reveal_child(True) | ||||||
|         self._seconds_after_mouse_move = 0 |         self._seconds_after_mouse_move = 0 | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user