diff --git a/DemonEditor.spec b/DemonEditor.spec index 859d9b16..af10b2fc 100644 --- a/DemonEditor.spec +++ b/DemonEditor.spec @@ -6,6 +6,15 @@ PATH_EXE = [os.path.join(DIR_PATH, EXE_NAME)] block_cipher = None + +excludes = ['app.tools.mpv', + 'gi.repository.Gst', + 'gi.repository.GstBase', + 'gi.repository.GstVideo', + 'youtube_dl', + 'tkinter'] + + ui_files = [('app\\ui\\*.glade', 'ui'), ('app\\ui\\*.css', 'ui'), ('app\\ui\\*.ui', 'ui'), @@ -21,7 +30,7 @@ a = Analysis([EXE_NAME], hiddenimports=[], hookspath=[], runtime_hooks=[], - excludes=['youtube_dl', 'tkinter'], + excludes=excludes, win_no_prefer_redirects=False, win_private_assemblies=False, cipher=block_cipher, diff --git a/app/settings.py b/app/settings.py index 29e98777..2c090c28 100644 --- a/app/settings.py +++ b/app/settings.py @@ -25,7 +25,7 @@ class Defaults(Enum): BACKUP_BEFORE_SAVE = True V5_SUPPORT = False FORCE_BQ_NAMES = False - HTTP_API_SUPPORT = False + HTTP_API_SUPPORT = IS_WIN ENABLE_YT_DL = False ENABLE_SEND_TO = False USE_COLORS = True @@ -35,7 +35,7 @@ class Defaults(Enum): LIST_PICON_SIZE = 32 FAV_CLICK_MODE = 0 PLAY_STREAMS_MODE = 1 if IS_DARWIN else 0 - STREAM_LIB = "gst" if IS_WIN else "vlc" + STREAM_LIB = "mpv" if IS_WIN else "vlc" PROFILE_FOLDER_DEFAULT = False RECORDS_PATH = DATA_PATH + "records{}".format(SEP) ACTIVATE_TRANSCODING = False @@ -619,13 +619,8 @@ class Settings: self._settings["extra_color"] = value @property - @lru_cache(1) def dark_mode(self): - import subprocess - - cmd = ["defaults", "read", "-g", "AppleInterfaceStyle"] - p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate() - return "Dark" in str(p[0]) + return self._settings.get("dark_mode", False) @dark_mode.setter def dark_mode(self, value): diff --git a/app/tools/media.py b/app/tools/media.py index 62e2665b..adbbc53c 100644 --- a/app/tools/media.py +++ b/app/tools/media.py @@ -206,11 +206,6 @@ class GstPlayer(Player): from gi.repository import Gst, GstVideo # Initialization of GStreamer. Gst.init(sys.argv) - gtk_sink = Gst.ElementFactory.make("gtksink") - if not gtk_sink: - msg = "GStreamer error: gtksink plugin not installed!" - log(msg) - raise ImportError(msg) except (OSError, ValueError) as e: log("{}: Load library error: {}".format(__class__.__name__, e)) raise ImportError("No GStreamer is found. Check that it is installed!") @@ -225,11 +220,10 @@ class GstPlayer(Player): self._is_playing = False self._player = Gst.ElementFactory.make("playbin", "player") # Initialization of the playback widget. - self._player.set_property("video-sink", gtk_sink) - vid_widget = gtk_sink.get_property("widget") - vid_widget.connect("motion-notify-event", self.on_mouse_motion) + vid_widget = self.get_video_widget(widget) widget.add(vid_widget) vid_widget.show() + self._player.set_window_handle(self.get_window_handle(vid_widget)) bus = self._player.get_bus() bus.add_signal_watch() diff --git a/app/ui/app_menu_bar.ui b/app/ui/app_menu_bar.ui index cb770e21..61dcaf89 100644 --- a/app/ui/app_menu_bar.ui +++ b/app/ui/app_menu_bar.ui @@ -1,25 +1,5 @@ - -
- - About - app.on_about_app - -
-
- - Settings - app.on_settings - -
-
- - Exit - app.on_close_app - -
-
File @@ -68,21 +48,33 @@ app.on_download +
+ + Settings + app.on_settings + +
+
+ + Exit + app.on_close_app + +
Edit app.hide_menu_bar action-disabled
- - Lock - app.on_locked - - - Hide - app.on_hide - -
+ + Lock + app.on_locked + + + Hide + app.on_hide + +
View @@ -166,5 +158,14 @@ app.on_ftp_client_close + + Help +
+ + About + app.on_about_app + +
+
\ No newline at end of file diff --git a/app/ui/backup_dialog.glade b/app/ui/backup_dialog.glade index 5b165f35..90859c69 100644 --- a/app/ui/backup_dialog.glade +++ b/app/ui/backup_dialog.glade @@ -115,7 +115,6 @@ Author: Dmitriy Yefremov center-on-parent True document-revert - center diff --git a/app/ui/dialogs.glade b/app/ui/dialogs.glade index e1d388b9..138a0540 100644 --- a/app/ui/dialogs.glade +++ b/app/ui/dialogs.glade @@ -92,7 +92,6 @@ Author: Dmitriy Yefremov utility True True - center @@ -182,7 +181,6 @@ Author: Dmitriy Yefremov True True False - center 100 diff --git a/app/ui/dialogs.py b/app/ui/dialogs.py index cc0e693b..bc1ccd47 100644 --- a/app/ui/dialogs.py +++ b/app/ui/dialogs.py @@ -23,7 +23,6 @@ class Dialog(Enum): dialog True True - center {message_type} {buttons_type} diff --git a/app/ui/download_dialog.glade b/app/ui/download_dialog.glade index 09b2def2..b176331d 100755 --- a/app/ui/download_dialog.glade +++ b/app/ui/download_dialog.glade @@ -55,7 +55,6 @@ Author: Dmitriy Yefremov mail-send-receive True True - center diff --git a/app/ui/epg_dialog.glade b/app/ui/epg_dialog.glade index 47580157..873d94e2 100644 --- a/app/ui/epg_dialog.glade +++ b/app/ui/epg_dialog.glade @@ -601,7 +601,6 @@ Author: Dmitriy Yefremov True True True - center diff --git a/app/ui/import_dialog.glade b/app/ui/import_dialog.glade index 2bd1146e..040b5dfc 100644 --- a/app/ui/import_dialog.glade +++ b/app/ui/import_dialog.glade @@ -101,7 +101,6 @@ Author: Dmitriy Yefremov 320 True dialog - center diff --git a/app/ui/iptv.glade b/app/ui/iptv.glade index 8a84866a..0e390b5e 100644 --- a/app/ui/iptv.glade +++ b/app/ui/iptv.glade @@ -75,7 +75,6 @@ Author: Dmitriy Yefremov True True False - center @@ -268,7 +267,6 @@ Author: Dmitriy Yefremov dialog True True - center @@ -1337,7 +1335,6 @@ Author: Dmitriy Yefremov True True True - center diff --git a/app/ui/main_app_window.py b/app/ui/main_app_window.py index fdb8820a..f4c3bb0b 100644 --- a/app/ui/main_app_window.py +++ b/app/ui/main_app_window.py @@ -36,7 +36,7 @@ from .search import SearchProvider from .service_details_dialog import ServiceDetailsDialog, Action from .settings_dialog import show_settings_dialog from .uicommons import (Gtk, Gdk, UI_RESOURCES_PATH, LOCKED_ICON, HIDE_ICON, IPTV_ICON, MOVE_KEYS, KeyboardKey, Column, - FavClickMode, MOD_MASK, APP_FONT) + FavClickMode, MOD_MASK, TEXT_DOMAIN, APP_FONT) class Application(Gtk.Application): @@ -343,78 +343,25 @@ class Application(Gtk.Application): style_provider.load_from_path(UI_RESOURCES_PATH + "style.css") self._status_bar_box.get_style_context().add_provider_for_screen(Gdk.Screen.get_default(), style_provider, Gtk.STYLE_PROVIDER_PRIORITY_USER) - # Layout - if self._settings.is_darwin and self._settings.alternate_layout: - self._main_paned = builder.get_object("main_data_paned") - self._fav_paned = builder.get_object("fav_bouquets_paned") - self._fav_box = self._fav_paned.get_child1() - self._bouquets_box = self._fav_paned.get_child2() - self._left_ar_bq_button = builder.get_object("left_arrow_bq_button") - self._left_ar_bq_button.bind_property("visible", builder.get_object("right_arrow_bq_button"), "visible", 4) - self._left_ar_bq_button.set_visible(True) - self.init_layout(builder) - def init_layout(self, builder): - """ Initializes an alternate layout, if enabled. """ - control_box = builder.get_object("control_button_box") - control_box.set_child_packing(self._control_button, False, True, 0, Gtk.PackType.END) - - extra_box = builder.get_object("toolbar_extra_box") - extra_box.set_child_packing(self._toolbar_extra_tools_box, False, True, 0, Gtk.PackType.END) - self._toolbar_search_box.reorder_child(builder.get_object("search_tool_button"), 0) - - self._top_box.set_child_packing(extra_box, False, True, 0, Gtk.PackType.START) - self._top_box.set_child_packing(self._toolbar_search_box, False, True, 0, Gtk.PackType.END) - self._top_box.reorder_child(extra_box, 0) - - center_box = builder.get_object("center_box") - center_box.reorder_child(self._control_revealer, 0) - center_box.reorder_child(self._ftp_revealer, 1) - center_box.reorder_child(self._main_box, 2) - center_box.set_child_packing(self._control_revealer, False, True, 0, Gtk.PackType.START) - - builder.get_object("fs_box").set_child_packing(self._filter_box, False, True, 0, Gtk.PackType.END) - top_toolbar = builder.get_object("top_toolbar") - top_toolbar.set_child_packing(self._toolbar_search_box, False, True, 0, Gtk.PackType.END) - - services_box = self._main_paned.get_child1() - self._main_paned.remove(services_box) - self._main_paned.remove(self._fav_paned) - self._main_paned.pack1(self._fav_paned, True, True) - self._main_paned.pack2(services_box, True, True) - - self._left_ar_bq_button.set_visible(not self._settings.bq_details_first) - self.init_bq_position() - - def init_bq_position(self): - self._fav_paned.remove(self._fav_box) - self._fav_paned.remove(self._bouquets_box) - - if self._settings.bq_details_first: - self._fav_paned.pack1(self._fav_box, False, False) - self._fav_paned.pack2(self._bouquets_box, False, False) - else: - self._fav_paned.pack1(self._bouquets_box, False, False) - self._fav_paned.pack2(self._fav_box, False, False) - - pack = Gtk.PackType.END if self._settings.bq_details_first else Gtk.PackType.START - self._toolbar_extra_tools_box.set_child_packing(self._add_bouquet_button, False, True, 0, pack) + # Menu bar + main_box = builder.get_object("main_window_box") + builder.set_translation_domain(TEXT_DOMAIN) + builder.add_from_file(UI_RESOURCES_PATH + "app_menu_bar.ui") + menu_bar = Gtk.MenuBar.new_from_model(builder.get_object("menu_bar")) + menu_bar.set_visible(True) + main_box.pack_start(menu_bar, False, False, 0) + main_box.reorder_child(menu_bar, 0) + self._main_data_box.bind_property("visible", menu_bar, "visible") + self._player_box.bind_property("visible", menu_bar, "sensitive", 4) + if self._settings.get("telnet"): + self.init_telnet(builder) def do_startup(self): Gtk.Application.do_startup(self) self.init_keys() self.set_accels() - - builder = Gtk.Builder() - builder.set_translation_domain("demon-editor") - builder.add_from_file(UI_RESOURCES_PATH + "app_menu_bar.ui") - self.set_menubar(builder.get_object("menu_bar")) - self.set_app_menu(builder.get_object("app-menu")) - - if self._settings.get("telnet"): - self.init_telnet(builder) - self.update_profile_label() self.init_drag_and_drop() self.init_appearance() diff --git a/app/ui/main_window.glade b/app/ui/main_window.glade index e0ce9579..75769669 100644 --- a/app/ui/main_window.glade +++ b/app/ui/main_window.glade @@ -1,5 +1,5 @@ -