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
-
+
+
+ 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())