97 lines
4.6 KiB
Python
97 lines
4.6 KiB
Python
# -*- coding: utf-8 -*-
|
|
from __future__ import unicode_literals
|
|
import sound_lib.input, sound_lib.output
|
|
import config
|
|
from mysc import restart
|
|
from . import base
|
|
|
|
class configurationPresenter(base.basePresenter):
|
|
|
|
def __init__(self, session, view, interactor):
|
|
self.session = session
|
|
super(configurationPresenter, self).__init__(view=view, interactor=interactor, modulename="configuration")
|
|
# Control requirement for a restart of the application.
|
|
self.needs_restart = False
|
|
self.create_config()
|
|
self.run()
|
|
|
|
def get_notification_label(self, value):
|
|
if value == "native":
|
|
return _("Native")
|
|
else:
|
|
return _("Custom")
|
|
|
|
def get_update_channel_label(self, value):
|
|
if value == "stable":
|
|
return _("Stable")
|
|
elif value == "weekly":
|
|
return _("Weekly")
|
|
else:
|
|
return _("Alpha")
|
|
|
|
def get_notification_type(self, value):
|
|
if value == _("Native"):
|
|
return "native"
|
|
else:
|
|
return "custom"
|
|
|
|
def get_update_channel_type(self, value):
|
|
if value == _("Stable"):
|
|
return "stable"
|
|
elif value == _("Weekly"):
|
|
return "weekly"
|
|
else:
|
|
return "alpha"
|
|
|
|
def create_config(self):
|
|
self.send_message("create_tab", tab="general")
|
|
self.send_message("set", tab="general", setting="wall_buffer_count", value=self.session.settings["buffers"]["count_for_wall_buffers"])
|
|
self.send_message("set", tab="general", setting="video_buffers_count", value=self.session.settings["buffers"]["count_for_video_buffers"])
|
|
self.send_message("set", tab="general", setting="load_images", value=self.session.settings["general"]["load_images"])
|
|
self.send_message("set", tab="general", setting="use_proxy", value=config.app["app-settings"]["use_proxy"])
|
|
self.send_message("set", tab="general", setting="update_channel", value=self.get_update_channel_label(self.session.settings["general"]["update_channel"]))
|
|
self.send_message("create_tab", tab="chat")
|
|
self.send_message("set", tab="chat", setting="notify_online", value=self.session.settings["chat"]["notify_online"])
|
|
self.send_message("set", tab="chat", setting="notify_offline", value=self.session.settings["chat"]["notify_offline"])
|
|
self.send_message("set", tab="chat", setting="open_unread_conversations", value=self.session.settings["chat"]["open_unread_conversations"])
|
|
self.send_message("set", tab="chat", setting="automove_to_conversations", value=self.session.settings["chat"]["automove_to_conversations"])
|
|
self.send_message("set", tab="chat", setting="notifications", value=self.get_notification_label(self.session.settings["chat"]["notifications"]))
|
|
self.send_message("create_tab", tab="startup_options")
|
|
self.send_message("set", tab="startup", setting="audio_albums", value=self.session.settings["load_at_startup"]["audio_albums"])
|
|
self.send_message("set", tab="startup", setting="video_albums", value=self.session.settings["load_at_startup"]["video_albums"])
|
|
self.send_message("set", tab="startup", setting="communities", value=self.session.settings["load_at_startup"]["communities"])
|
|
self.input_devices = sound_lib.input.Input.get_device_names()
|
|
self.output_devices = sound_lib.output.Output.get_device_names()
|
|
self.send_message("create_tab", tab="sound", arglist=dict(input_devices=self.input_devices, output_devices=self.output_devices, soundpacks=[]))
|
|
self.send_message("set", tab="sound", setting="input", value=config.app["sound"]["input_device"])
|
|
self.send_message("set", tab="sound", setting="output", value=config.app["sound"]["output_device"])
|
|
|
|
def update_setting(self, section, setting, value):
|
|
if section not in self.session.settings:
|
|
raise AttributeError("The configuration section is not present in the spec file.")
|
|
if setting not in self.session.settings[section]:
|
|
raise AttributeError("The setting you specified is not present in the config file.")
|
|
self.session.settings[section][setting] = value
|
|
|
|
def save_settings_file(self):
|
|
self.session.settings.write()
|
|
|
|
def update_app_setting(self, section, setting, value):
|
|
if section not in config.app:
|
|
raise AttributeError("The configuration section is not present in the spec file.")
|
|
if setting not in config.app[section]:
|
|
raise AttributeError("The setting you specified is not present in the config file.")
|
|
# check if certain settings have been changed so we'd restart the client.
|
|
# List of app settings that require a restart after being changed.
|
|
settings_needing_restart = ["use_proxy", "input_device", "output_device"]
|
|
if value != config.app[section][setting] and setting in settings_needing_restart:
|
|
self.needs_restart = True
|
|
config.app[section][setting] = value
|
|
|
|
def save_app_settings_file(self):
|
|
config.app.write()
|
|
if self.needs_restart:
|
|
self.send_message("restart_program")
|
|
|
|
def restart_application(self):
|
|
restart.restart_program() |