Skip to content

Commit

Permalink
Implement fullscreen support
Browse files Browse the repository at this point in the history
  • Loading branch information
clefebvre committed Nov 2, 2020
1 parent df2c49f commit da37a41
Show file tree
Hide file tree
Showing 2 changed files with 115 additions and 72 deletions.
28 changes: 24 additions & 4 deletions usr/lib/hypnotix/hypnotix.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ def __init__(self, application):
self.providers = []
self.loading = False
self.fullscreen = False
self.mpv = None

# Set the Glade file
gladefile = "/usr/share/hypnotix/hypnotix.ui"
Expand All @@ -80,6 +81,15 @@ def __init__(self, application):
self.channel_treeview = self.builder.get_object("channel_treeview")
self.generic_channel_pixbuf = self.icon_theme.load_icon("tv-symbolic", 22 * self.window.get_scale_factor(), 0)
self.mpv_drawing_area = self.builder.get_object("mpv_drawing_area")
self.mpv_box = self.builder.get_object("mpv_box")
self.main_box = self.builder.get_object("main_box")
self.status_bar = self.builder.get_object("status_bar")
self.stack = self.builder.get_object("stack")
self.fullscreen_box = self.builder.get_object("fullscreen_box")
self.fullscreen_widgets = []
self.fullscreen_widgets.append(self.builder.get_object("sidebar"))
self.fullscreen_widgets.append(self.headerbar)
self.fullscreen_widgets.append(self.status_bar)

# Widget signals
self.window.connect("key-press-event",self.on_key_press_event)
Expand Down Expand Up @@ -285,19 +295,29 @@ def reload(self):
self.show_selected_provider()

def on_mpv_drawing_area_realize(self, widget):
self.wid = str(widget.get_window().get_xid())
self.mpv = mpv.MPV(ytdl=True, wid=str(widget.get_window().get_xid()))
if self.mpv == None:
print("Creating new MPV instance")
self.mpv = mpv.MPV(ytdl=True, wid=str(widget.get_window().get_xid()))

def on_mpv_drawing_area_draw(self, widget, cr):
cr.set_source_rgb(0.0, 0.0, 0.0)
cr.paint()

def toggle_fullscreen(self):
# Toggle state
self.fullscreen = (not self.fullscreen)
if self.fullscreen:
self.mpv.fullscreen = True
# Fullscreen mode
self.window.fullscreen()
for widget in self.fullscreen_widgets:
widget.set_visible(False)
self.main_box.set_border_width(0)
else:
self.mpv.fullscreen = False
# Normal mode
self.window.unfullscreen()
for widget in self.fullscreen_widgets:
widget.set_visible(True)
self.main_box.set_border_width(12)


if __name__ == "__main__":
Expand Down
159 changes: 91 additions & 68 deletions usr/share/hypnotix/hypnotix.ui
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
</object>
<object class="GtkWindow" id="main_window">
<property name="can_focus">False</property>
<property name="border_width">12</property>
<property name="default_width">600</property>
<property name="default_height">400</property>
<property name="icon_name">hypnotix</property>
Expand Down Expand Up @@ -55,144 +54,168 @@
</object>
</child>
<child>
<object class="GtkBox">
<object class="GtkStack" id="stack">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkBox">
<object class="GtkBox" id="main_box">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="spacing">6</property>
<property name="border_width">12</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">6</property>
<child>
<object class="GtkComboBox" id="provider_combo">
<object class="GtkBox" id="sidebar">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="shadow_type">in</property>
<property name="min_content_height">150</property>
<property name="orientation">vertical</property>
<property name="spacing">6</property>
<child>
<object class="GtkComboBox" id="provider_combo">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="shadow_type">in</property>
<property name="min_content_height">150</property>
<child>
<object class="GtkTreeView" id="group_treeview">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="headers_visible">False</property>
<child internal-child="selection">
<object class="GtkTreeSelection"/>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkTreeView" id="group_treeview">
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="headers_visible">False</property>
<child internal-child="selection">
<object class="GtkTreeSelection"/>
<property name="shadow_type">in</property>
<property name="min_content_width">250</property>
<property name="min_content_height">200</property>
<child>
<object class="GtkTreeView" id="channel_treeview">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="headers_visible">False</property>
<property name="enable_search">False</property>
<property name="fixed_height_mode">True</property>
<child internal-child="selection">
<object class="GtkTreeSelection"/>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow">
<object class="GtkBox" id="mpv_box">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="shadow_type">in</property>
<property name="min_content_width">250</property>
<property name="min_content_height">200</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkTreeView" id="channel_treeview">
<object class="GtkDrawingArea" id="mpv_drawing_area">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="headers_visible">False</property>
<property name="enable_search">False</property>
<property name="fixed_height_mode">True</property>
<child internal-child="selection">
<object class="GtkTreeSelection"/>
</child>
<property name="can_focus">False</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox" id="mpv_box">
<object class="GtkBox" id="status_bar">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkDrawingArea" id="mpv_drawing_area">
<placeholder/>
</child>
<child>
<object class="GtkLabel" id="status_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="expand">True</property>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
<property name="position">1</property>
</packing>
</child>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
<property name="name">main_page</property>
</packing>
</child>
<child>
<object class="GtkBox" id="status_bar">
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<placeholder/>
</child>
<child>
<object class="GtkLabel" id="status_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<property name="orientation">vertical</property>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
<property name="name">fullscreen_page</property>
<property name="position">1</property>
</packing>
</child>
</object>
Expand Down

0 comments on commit da37a41

Please sign in to comment.