mirror of
https://github.com/DYefremov/DemonEditor.git
synced 2025-12-21 16:09:41 +01:00
new player prototype
This commit is contained in:
@@ -1,6 +1,5 @@
|
|||||||
import os
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
import time
|
|
||||||
|
|
||||||
from contextlib import suppress
|
from contextlib import suppress
|
||||||
from functools import lru_cache
|
from functools import lru_cache
|
||||||
@@ -182,9 +181,12 @@ class MainAppWindow:
|
|||||||
self._fav_model = builder.get_object("fav_list_store")
|
self._fav_model = builder.get_object("fav_list_store")
|
||||||
self._services_model = builder.get_object("services_list_store")
|
self._services_model = builder.get_object("services_list_store")
|
||||||
self._bouquets_model = builder.get_object("bouquets_tree_store")
|
self._bouquets_model = builder.get_object("bouquets_tree_store")
|
||||||
self._main_window_box = builder.get_object("main_window_box")
|
self._main_data_box = builder.get_object("main_data_box")
|
||||||
self._player_drawing_area = builder.get_object("player_drawing_area")
|
self._player_drawing_area = builder.get_object("player_drawing_area")
|
||||||
self._player_box = builder.get_object("player_box")
|
self._player_tool_bar = builder.get_object("player_tool_bar")
|
||||||
|
self._status_bar_box = builder.get_object("status_bar_box")
|
||||||
|
self._services_main_box = builder.get_object("services_main_box")
|
||||||
|
self._bouquets_main_box = builder.get_object("bouquets_main_box")
|
||||||
# Enabling events for the drawing area
|
# Enabling events for the drawing area
|
||||||
self._player_drawing_area.set_events(Gdk.ModifierType.BUTTON1_MASK)
|
self._player_drawing_area.set_events(Gdk.ModifierType.BUTTON1_MASK)
|
||||||
self._player_frame = builder.get_object("player_frame")
|
self._player_frame = builder.get_object("player_frame")
|
||||||
@@ -1211,7 +1213,7 @@ class MainAppWindow:
|
|||||||
if not url:
|
if not url:
|
||||||
return
|
return
|
||||||
|
|
||||||
self._player_box.set_visible(True)
|
self._player_drawing_area.set_visible(True)
|
||||||
|
|
||||||
if not self._player:
|
if not self._player:
|
||||||
try:
|
try:
|
||||||
@@ -1234,7 +1236,9 @@ class MainAppWindow:
|
|||||||
if self._player:
|
if self._player:
|
||||||
self._player.release()
|
self._player.release()
|
||||||
self._player = None
|
self._player = None
|
||||||
GLib.idle_add(self._player_box.set_visible, False, priority=GLib.PRIORITY_LOW)
|
GLib.idle_add(self._player_drawing_area.set_visible, False, priority=GLib.PRIORITY_LOW)
|
||||||
|
GLib.idle_add(self._services_main_box.set_visible, True, priority=GLib.PRIORITY_LOW)
|
||||||
|
GLib.idle_add(self._bouquets_main_box.set_visible, True, priority=GLib.PRIORITY_LOW)
|
||||||
|
|
||||||
def on_player_size_allocate(self, area, rectangle=None):
|
def on_player_size_allocate(self, area, rectangle=None):
|
||||||
area.hide()
|
area.hide()
|
||||||
@@ -1243,6 +1247,8 @@ class MainAppWindow:
|
|||||||
def on_drawing_area_realize(self, widget):
|
def on_drawing_area_realize(self, widget):
|
||||||
self._drawing_area_xid = widget.get_window().get_xid()
|
self._drawing_area_xid = widget.get_window().get_xid()
|
||||||
self._player.set_xwindow(self._drawing_area_xid)
|
self._player.set_xwindow(self._drawing_area_xid)
|
||||||
|
self._services_main_box.set_visible(False)
|
||||||
|
self._bouquets_main_box.set_visible(False)
|
||||||
|
|
||||||
def on_player_press(self, area, event):
|
def on_player_press(self, area, event):
|
||||||
if event.button == Gdk.BUTTON_PRIMARY:
|
if event.button == Gdk.BUTTON_PRIMARY:
|
||||||
@@ -1254,14 +1260,10 @@ class MainAppWindow:
|
|||||||
self._main_window.fullscreen() if self._full_screen else self._main_window.unfullscreen()
|
self._main_window.fullscreen() if self._full_screen else self._main_window.unfullscreen()
|
||||||
|
|
||||||
def on_main_window_state(self, window, event):
|
def on_main_window_state(self, window, event):
|
||||||
if event.new_window_state & Gdk.WindowState.FULLSCREEN:
|
full = not event.new_window_state & Gdk.WindowState.FULLSCREEN
|
||||||
if self._main_window_box in window:
|
self._main_data_box.set_visible(full)
|
||||||
window.remove(self._main_window_box)
|
self._player_tool_bar.set_visible(full)
|
||||||
self._player_drawing_area.reparent(window)
|
self._status_bar_box.set_visible(full)
|
||||||
elif self._player_drawing_area in window:
|
|
||||||
window.remove(self._player_drawing_area)
|
|
||||||
window.add(self._main_window_box)
|
|
||||||
self._player_frame.add(self._player_drawing_area)
|
|
||||||
|
|
||||||
# ***************** Filter and search *********************#
|
# ***************** Filter and search *********************#
|
||||||
|
|
||||||
|
|||||||
@@ -1204,7 +1204,30 @@ Author: Dmitriy Yefremov
|
|||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkBox" id="main_window_box">
|
<object class="GtkBox" id="main_box">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="orientation">vertical</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkPaned" id="main_paned">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkDrawingArea" id="player_drawing_area">
|
||||||
|
<property name="width_request">320</property>
|
||||||
|
<property name="height_request">240</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<signal name="button-press-event" handler="on_player_press" swapped="no"/>
|
||||||
|
<signal name="realize" handler="on_drawing_area_realize" swapped="no"/>
|
||||||
|
<signal name="size-allocate" handler="on_player_size_allocate" swapped="no"/>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="resize">False</property>
|
||||||
|
<property name="shrink">True</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox" id="main_data_box">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="margin_top">1</property>
|
<property name="margin_top">1</property>
|
||||||
@@ -1379,7 +1402,7 @@ Author: Dmitriy Yefremov
|
|||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkPaned" id="main_paned">
|
<object class="GtkPaned" id="main_data_paned">
|
||||||
<property name="height_request">250</property>
|
<property name="height_request">250</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
@@ -1905,137 +1928,6 @@ Author: Dmitriy Yefremov
|
|||||||
<property name="position">0</property>
|
<property name="position">0</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
|
||||||
<object class="GtkPaned" id="fav_paned">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">True</property>
|
|
||||||
<property name="orientation">vertical</property>
|
|
||||||
<property name="wide_handle">True</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkBox" id="player_box">
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="orientation">vertical</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkFrame" id="player_frame">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="margin_left">2</property>
|
|
||||||
<property name="margin_right">2</property>
|
|
||||||
<property name="label_xalign">0</property>
|
|
||||||
<property name="label_yalign">0</property>
|
|
||||||
<property name="shadow_type">in</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkDrawingArea" id="player_drawing_area">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<signal name="button-press-event" handler="on_player_press" swapped="no"/>
|
|
||||||
<signal name="realize" handler="on_drawing_area_realize" swapped="no"/>
|
|
||||||
<signal name="size-allocate" handler="on_player_size_allocate" swapped="no"/>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child type="label_item">
|
|
||||||
<placeholder/>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">True</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">0</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkToolbar" id="player_tool_bar">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkToolButton" id="player_play_tool_button">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="label" translatable="yes">Play</property>
|
|
||||||
<property name="stock_id">gtk-media-play</property>
|
|
||||||
<signal name="clicked" handler="on_player_play" swapped="no"/>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="homogeneous">True</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkToolButton" id="player_stop_tool_button">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="label" translatable="yes">Stop</property>
|
|
||||||
<property name="use_underline">True</property>
|
|
||||||
<property name="stock_id">gtk-media-stop</property>
|
|
||||||
<signal name="clicked" handler="on_player_stop" swapped="no"/>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="homogeneous">True</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkSeparatorToolItem">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">True</property>
|
|
||||||
<property name="homogeneous">False</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkToolButton" id="player_full_tool_button">
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="label" translatable="yes">Fullscreen</property>
|
|
||||||
<property name="use_underline">True</property>
|
|
||||||
<property name="stock_id">gtk-fullscreen</property>
|
|
||||||
<signal name="clicked" handler="on_full_screen" swapped="no"/>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="homogeneous">True</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkSeparatorToolItem">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="homogeneous">False</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkToolButton" id="player_close_tool_button">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="tooltip_text" translatable="yes">Close</property>
|
|
||||||
<property name="label" translatable="yes">Close</property>
|
|
||||||
<property name="use_underline">True</property>
|
|
||||||
<property name="stock_id">gtk-close</property>
|
|
||||||
<signal name="clicked" handler="on_player_close" swapped="no"/>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="homogeneous">True</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">False</property>
|
|
||||||
<property name="pack_type">end</property>
|
|
||||||
<property name="position">1</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="resize">True</property>
|
|
||||||
<property name="shrink">True</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkScrolledWindow" id="fav_scrolled_window">
|
<object class="GtkScrolledWindow" id="fav_scrolled_window">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
@@ -2169,12 +2061,6 @@ Author: Dmitriy Yefremov
|
|||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
|
||||||
<property name="resize">True</property>
|
|
||||||
<property name="shrink">True</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">True</property>
|
<property name="expand">True</property>
|
||||||
<property name="fill">True</property>
|
<property name="fill">True</property>
|
||||||
@@ -2437,6 +2323,19 @@ Author: Dmitriy Yefremov
|
|||||||
<property name="position">5</property>
|
<property name="position">5</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="resize">False</property>
|
||||||
|
<property name="shrink">True</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkBox" id="status_bar_box">
|
<object class="GtkBox" id="status_bar_box">
|
||||||
<property name="height_request">24</property>
|
<property name="height_request">24</property>
|
||||||
@@ -2495,7 +2394,108 @@ Author: Dmitriy Yefremov
|
|||||||
<packing>
|
<packing>
|
||||||
<property name="expand">False</property>
|
<property name="expand">False</property>
|
||||||
<property name="fill">False</property>
|
<property name="fill">False</property>
|
||||||
<property name="position">6</property>
|
<property name="pack_type">end</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkFrame" id="player_tool_bar_frame">
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="margin_top">2</property>
|
||||||
|
<property name="margin_bottom">2</property>
|
||||||
|
<property name="label_xalign">0</property>
|
||||||
|
<property name="shadow_type">in</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkToolbar" id="player_tool_bar">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkSeparatorToolItem">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="homogeneous">False</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkToolButton" id="player_play_tool_button">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="label" translatable="yes">Play</property>
|
||||||
|
<property name="stock_id">gtk-media-play</property>
|
||||||
|
<signal name="clicked" handler="on_player_play" swapped="no"/>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="homogeneous">True</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkToolButton" id="player_stop_tool_button">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="label" translatable="yes">Stop</property>
|
||||||
|
<property name="use_underline">True</property>
|
||||||
|
<property name="stock_id">gtk-media-stop</property>
|
||||||
|
<signal name="clicked" handler="on_player_stop" swapped="no"/>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="homogeneous">True</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkToolButton" id="player_full_tool_button">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="label" translatable="yes">Fullscreen</property>
|
||||||
|
<property name="use_underline">True</property>
|
||||||
|
<property name="stock_id">gtk-fullscreen</property>
|
||||||
|
<signal name="clicked" handler="on_full_screen" swapped="no"/>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="homogeneous">True</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkSeparatorToolItem">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="homogeneous">False</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkToolButton" id="player_close_tool_button">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="tooltip_text" translatable="yes">Close</property>
|
||||||
|
<property name="label" translatable="yes">Close</property>
|
||||||
|
<property name="use_underline">True</property>
|
||||||
|
<property name="stock_id">gtk-close</property>
|
||||||
|
<signal name="clicked" handler="on_player_close" swapped="no"/>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="homogeneous">True</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child type="label_item">
|
||||||
|
<placeholder/>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="pack_type">end</property>
|
||||||
|
<property name="position">2</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
|
|||||||
Reference in New Issue
Block a user