diff --git a/app/tools/media.py b/app/tools/media.py
index 595ff769..0dff2477 100644
--- a/app/tools/media.py
+++ b/app/tools/media.py
@@ -1,6 +1,6 @@
from app.commons import run_idle
from app.tools import vlc
-from app.ui.uicommons import Gtk
+from app.ui.uicommons import Gtk, Gdk
MRL = "url"
@@ -12,15 +12,24 @@ class Player:
handlers = {"on_play": self.on_play,
"on_stop": self.on_stop,
"on_drawing_area_realize": self.on_drawing_area_realize,
+ "on_press": self.on_press,
+ "on_key_release": self.on_key_release,
+ "on_state_changed": self.on_state_changed,
"on_close_window": self.on_close_window}
builder = Gtk.Builder()
builder.add_objects_from_file("player.glade", ("player_main_window",))
builder.connect_signals(handlers)
self._main_window = builder.get_object("player_main_window")
+ self._main_box = builder.get_object("main_box")
+ self._buttonbox = builder.get_object("buttonbox")
+ self._frame = builder.get_object("")
+ self._drawing_area = builder.get_object("drawing_area")
+ self._drawing_area.set_events(Gdk.ModifierType.BUTTON1_MASK)
self._player = Player.get_vlc_instance().media_player_new()
self._is_played = False
self._url = url
+ self._full_screen = False
@staticmethod
def get_vlc_instance():
@@ -39,6 +48,30 @@ class Player:
self._player.stop()
self._is_played = False
+ def on_press(self, area, event: Gdk.EventButton):
+ if event.button == Gdk.BUTTON_PRIMARY and event.type == Gdk.EventType.DOUBLE_BUTTON_PRESS:
+ self.change_state()
+
+ def on_state_changed(self, window, event):
+ if event.new_window_state & Gdk.WindowState.FULLSCREEN:
+ if self._main_box in window:
+ window.remove(self._main_box)
+ self._drawing_area.reparent(self._main_window)
+ else:
+ if self._drawing_area in self._main_window:
+ window.remove(self._drawing_area)
+ window.add(self._main_box)
+ self._main_box.pack_start(self._drawing_area, True, True, 0)
+ self._main_box.reorder_child(self._drawing_area, 0)
+
+ def change_state(self):
+ self._full_screen = not self._full_screen
+ self._main_window.fullscreen() if self._full_screen else self._main_window.unfullscreen()
+
+ def on_key_release(self, area, key):
+ if key.keyval in (Gdk.KEY_F, Gdk.KEY_f):
+ self.change_state()
+
def on_drawing_area_realize(self, widget):
win_id = widget.get_window().get_xid()
if self._player:
diff --git a/app/tools/player.glade b/app/tools/player.glade
index 150875cf..e311368c 100644
--- a/app/tools/player.glade
+++ b/app/tools/player.glade
@@ -7,6 +7,7 @@
Player
vlc
+
@@ -28,7 +32,7 @@
-