From 93f68a7fe224e3c49725c22db1358bdff4d46f17 Mon Sep 17 00:00:00 2001 From: DYefremov Date: Sun, 22 Mar 2020 14:13:01 +0300 Subject: [PATCH] added play streams mode options --- app/settings.py | 23 +++++++++++ app/ui/settings_dialog.glade | 80 +++++++++++++++++++++++++++++++++++- app/ui/settings_dialog.py | 25 ++++++++++- 3 files changed, 125 insertions(+), 3 deletions(-) diff --git a/app/settings.py b/app/settings.py index 649a14b7..d0de7f4a 100644 --- a/app/settings.py +++ b/app/settings.py @@ -2,6 +2,7 @@ import copy import json import locale import os +import sys from enum import Enum, IntEnum from pathlib import Path from pprint import pformat @@ -12,6 +13,8 @@ CONFIG_PATH = HOME_PATH + "/.config/demon-editor/" CONFIG_FILE = CONFIG_PATH + "config.json" DATA_PATH = HOME_PATH + "/DemonEditor/data/" +IS_DARWIN = sys.platform == "darwin" + class Defaults(Enum): """ Default program settings """ @@ -26,6 +29,7 @@ class Defaults(Enum): NEW_COLOR = "rgb(255,230,204)" EXTRA_COLOR = "rgb(179,230,204)" FAV_CLICK_MODE = 0 + PLAY_STREAMS_MODE = 1 if IS_DARWIN else 0 PROFILE_FOLDER_DEFAULT = False RECORDS_PATH = DATA_PATH + "records/" ACTIVATE_TRANSCODING = False @@ -119,6 +123,13 @@ class SettingsException(Exception): pass +class PlayStreamsMode(IntEnum): + """ Behavior mode when opening streams. """ + BUILT_IN = 0 + VLC = 1 + M3U = 2 + + class Settings: __INSTANCE = None __VERSION = 1 @@ -454,6 +465,14 @@ class Settings: def transcoding_presets(self, value): self._settings["transcoding_presets"] = value + @property + def play_streams_mode(self): + return PlayStreamsMode(self._settings.get("play_streams_mode", Defaults.PLAY_STREAMS_MODE.value)) + + @play_streams_mode.setter + def play_streams_mode(self, value): + self._settings["play_streams_mode"] = value + # ***** Program settings ***** # @property @@ -536,6 +555,10 @@ class Settings: def fav_click_mode(self, value): self._settings["fav_click_mode"] = value + @property + def is_darwin(self): + return IS_DARWIN + if __name__ == "__main__": pass diff --git a/app/ui/settings_dialog.glade b/app/ui/settings_dialog.glade index 8c1b8e32..814c6798 100644 --- a/app/ui/settings_dialog.glade +++ b/app/ui/settings_dialog.glade @@ -1928,7 +1928,85 @@ Author: Dmitriy Yefremov - + + True + False + 5 + 5 + 0.019999999552965164 + in + + + True + False + center + 5 + 5 + 5 + 5 + + + Built-in player + True + True + False + True + True + get_m3u_radio_button + + + False + True + 0 + + + + + VLC media player + True + True + False + True + True + get_m3u_radio_button + + + False + True + 1 + + + + + Only get m3u file + True + True + False + True + True + play_in_built_radio_button + + + False + True + 2 + + + + + + + True + False + Play streams in: + + + + + False + True + 1 + diff --git a/app/ui/settings_dialog.py b/app/ui/settings_dialog.py index 71370218..4c8760ed 100644 --- a/app/ui/settings_dialog.py +++ b/app/ui/settings_dialog.py @@ -4,7 +4,7 @@ from enum import Enum from app.commons import run_task, run_idle from app.connections import test_telnet, test_ftp, TestException, test_http, HttpApiException -from app.settings import SettingsType, Settings +from app.settings import SettingsType, Settings, PlayStreamsMode from app.ui.dialogs import show_dialog, DialogType from .main_helper import update_entry_data, scroll_to from .uicommons import Gtk, Gdk, UI_RESOURCES_PATH, FavClickMode, DEFAULT_ICON @@ -114,6 +114,9 @@ class SettingsDialog: self._edit_preset_switch.bind_property("active", self._apply_presets_button, "sensitive") self._edit_preset_switch.bind_property("active", builder.get_object("video_options_frame"), "sensitive") self._edit_preset_switch.bind_property("active", builder.get_object("audio_options_frame"), "sensitive") + self._play_in_built_radio_button = builder.get_object("play_in_built_radio_button") + self._play_in_vlc_radio_button = builder.get_object("play_in_vlc_radio_button") + self._get_m3u_radio_button = builder.get_object("get_m3u_radio_button") # Program self._before_save_switch = builder.get_object("before_save_switch") self._before_downloading_switch = builder.get_object("before_downloading_switch") @@ -160,7 +163,6 @@ class SettingsDialog: self._settings = Settings(settings.settings) self._profiles = self._settings.profiles self._s_type = self._settings.setting_type - self.set_settings() self.init_ui_elements(self._s_type) self.init_profiles() @@ -246,6 +248,7 @@ class SettingsDialog: self._before_save_switch.set_active(self._settings.backup_before_save) self._before_downloading_switch.set_active(self._settings.backup_before_downloading) self.set_fav_click_mode(self._settings.fav_click_mode) + self.set_play_stream_mode(self._settings.play_streams_mode) self._load_on_startup_switch.set_active(self._settings.load_last_config) self._default_data_paths_switch.set_active(self._settings.profile_folder_is_default) self._transcoding_switch.set_active(self._settings.activate_transcoding) @@ -305,6 +308,7 @@ class SettingsDialog: self._ext_settings.backup_before_save = self._before_save_switch.get_active() self._ext_settings.backup_before_downloading = self._before_downloading_switch.get_active() self._ext_settings.fav_click_mode = self.get_fav_click_mode() + self._ext_settings.play_streams_mode = self.get_play_stream_mode() self._ext_settings.language = self._lang_combo_box.get_active_id() self._ext_settings.load_last_config = self._load_on_startup_switch.get_active() self._ext_settings.profile_folder_is_default = self._default_data_paths_switch.get_active() @@ -543,6 +547,23 @@ class SettingsDialog: return FavClickMode.DISABLED + @run_idle + def set_play_stream_mode(self, mode): + self._play_in_built_radio_button.set_sensitive(not self._settings.is_darwin) + self._play_in_built_radio_button.set_active(mode is PlayStreamsMode.BUILT_IN) + self._play_in_vlc_radio_button.set_active(mode is PlayStreamsMode.VLC) + self._get_m3u_radio_button.set_active(mode is PlayStreamsMode.M3U) + + def get_play_stream_mode(self): + if self._play_in_built_radio_button.get_active(): + return PlayStreamsMode.BUILT_IN + if self._play_in_vlc_radio_button.get_active(): + return PlayStreamsMode.VLC + if self._get_m3u_radio_button.get_active(): + return PlayStreamsMode.M3U + + return self._settings.play_streams_mode + def on_transcoding_preset_changed(self, button): presets = self._settings.transcoding_presets prs = presets.get(button.get_active_id())