permanent buttons to switch context in headerbar
This commit is contained in:
parent
e46dbddf36
commit
638985c822
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user