forked from openlp/openlp
Style Fixes
This commit is contained in:
parent
c8042f6023
commit
564b2e41ae
@ -1,5 +1,5 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4
|
# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# OpenLP - Open Source Lyrics Projection #
|
# OpenLP - Open Source Lyrics Projection #
|
||||||
@ -37,8 +37,7 @@ import logging
|
|||||||
import os
|
import os
|
||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
from openlp.core.lib import build_icon, clean_tags, expand_tags, translate, \
|
from openlp.core.lib import build_icon, clean_tags, expand_tags, translate, ImageSource
|
||||||
ImageSource
|
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -247,12 +246,10 @@ class ServiceItem(object):
|
|||||||
previous_pages = {}
|
previous_pages = {}
|
||||||
for slide in self._raw_frames:
|
for slide in self._raw_frames:
|
||||||
verse_tag = slide[u'verseTag']
|
verse_tag = slide[u'verseTag']
|
||||||
if verse_tag in previous_pages and \
|
if verse_tag in previous_pages and previous_pages[verse_tag][0] == slide[u'raw_slide']:
|
||||||
previous_pages[verse_tag][0] == slide[u'raw_slide']:
|
|
||||||
pages = previous_pages[verse_tag][1]
|
pages = previous_pages[verse_tag][1]
|
||||||
else:
|
else:
|
||||||
pages = \
|
pages = self.renderer.format_slide(slide[u'raw_slide'], self)
|
||||||
self.renderer.format_slide(slide[u'raw_slide'], self)
|
|
||||||
previous_pages[verse_tag] = (slide[u'raw_slide'], pages)
|
previous_pages[verse_tag] = (slide[u'raw_slide'], pages)
|
||||||
for page in pages:
|
for page in pages:
|
||||||
page = page.replace(u'<br>', u'{br}')
|
page = page.replace(u'<br>', u'{br}')
|
||||||
@ -263,8 +260,7 @@ class ServiceItem(object):
|
|||||||
u'html': html.replace(u'&nbsp;', u' '),
|
u'html': html.replace(u'&nbsp;', u' '),
|
||||||
u'verseTag': verse_tag
|
u'verseTag': verse_tag
|
||||||
})
|
})
|
||||||
elif self.service_item_type == ServiceItemType.Image or \
|
elif self.service_item_type == ServiceItemType.Image or self.service_item_type == ServiceItemType.Command:
|
||||||
self.service_item_type == ServiceItemType.Command:
|
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
log.error(u'Invalid value renderer: %s' % self.service_item_type)
|
log.error(u'Invalid value renderer: %s' % self.service_item_type)
|
||||||
@ -290,8 +286,7 @@ class ServiceItem(object):
|
|||||||
self.image_border = background
|
self.image_border = background
|
||||||
self.service_item_type = ServiceItemType.Image
|
self.service_item_type = ServiceItemType.Image
|
||||||
self._raw_frames.append({u'title': title, u'path': path})
|
self._raw_frames.append({u'title': title, u'path': path})
|
||||||
self.renderer.image_manager.addImage(
|
self.renderer.image_manager.addImage(path, ImageSource.ImagePlugin, self.image_border)
|
||||||
path, ImageSource.ImagePlugin, self.image_border)
|
|
||||||
self._new_item()
|
self._new_item()
|
||||||
|
|
||||||
def add_from_text(self, raw_slide, verse_tag=None):
|
def add_from_text(self, raw_slide, verse_tag=None):
|
||||||
@ -305,8 +300,7 @@ class ServiceItem(object):
|
|||||||
verse_tag = verse_tag.upper()
|
verse_tag = verse_tag.upper()
|
||||||
self.service_item_type = ServiceItemType.Text
|
self.service_item_type = ServiceItemType.Text
|
||||||
title = raw_slide[:30].split(u'\n')[0]
|
title = raw_slide[:30].split(u'\n')[0]
|
||||||
self._raw_frames.append(
|
self._raw_frames.append({u'title': title, u'raw_slide': raw_slide, u'verseTag': verse_tag})
|
||||||
{u'title': title, u'raw_slide': raw_slide, u'verseTag': verse_tag})
|
|
||||||
self._new_item()
|
self._new_item()
|
||||||
|
|
||||||
def add_from_command(self, path, file_name, image):
|
def add_from_command(self, path, file_name, image):
|
||||||
@ -323,8 +317,7 @@ class ServiceItem(object):
|
|||||||
The command of/for the slide.
|
The command of/for the slide.
|
||||||
"""
|
"""
|
||||||
self.service_item_type = ServiceItemType.Command
|
self.service_item_type = ServiceItemType.Command
|
||||||
self._raw_frames.append(
|
self._raw_frames.append({u'title': file_name, u'image': image, u'path': path})
|
||||||
{u'title': file_name, u'image': image, u'path': path})
|
|
||||||
self._new_item()
|
self._new_item()
|
||||||
|
|
||||||
def get_service_repr(self, lite_save):
|
def get_service_repr(self, lite_save):
|
||||||
@ -360,15 +353,12 @@ class ServiceItem(object):
|
|||||||
elif self.service_item_type == ServiceItemType.Image:
|
elif self.service_item_type == ServiceItemType.Image:
|
||||||
if lite_save:
|
if lite_save:
|
||||||
for slide in self._raw_frames:
|
for slide in self._raw_frames:
|
||||||
service_data.append(
|
service_data.append({u'title': slide[u'title'], u'path': slide[u'path']})
|
||||||
{u'title': slide[u'title'], u'path': slide[u'path']})
|
|
||||||
else:
|
else:
|
||||||
service_data = [slide[u'title'] for slide in self._raw_frames]
|
service_data = [slide[u'title'] for slide in self._raw_frames]
|
||||||
elif self.service_item_type == ServiceItemType.Command:
|
elif self.service_item_type == ServiceItemType.Command:
|
||||||
for slide in self._raw_frames:
|
for slide in self._raw_frames:
|
||||||
service_data.append(
|
service_data.append({u'title': slide[u'title'], u'image': slide[u'image'], u'path': slide[u'path']})
|
||||||
{u'title': slide[u'title'], u'image': slide[u'image'],
|
|
||||||
u'path': slide[u'path']})
|
|
||||||
return {u'header': service_header, u'data': service_data}
|
return {u'header': service_header, u'data': service_data}
|
||||||
|
|
||||||
def set_from_service(self, serviceitem, path=None):
|
def set_from_service(self, serviceitem, path=None):
|
||||||
@ -421,17 +411,13 @@ class ServiceItem(object):
|
|||||||
self.add_from_image(filename, text_image)
|
self.add_from_image(filename, text_image)
|
||||||
else:
|
else:
|
||||||
for text_image in serviceitem[u'serviceitem'][u'data']:
|
for text_image in serviceitem[u'serviceitem'][u'data']:
|
||||||
self.add_from_image(text_image[u'path'],
|
self.add_from_image(text_image[u'path'], text_image[u'title'])
|
||||||
text_image[u'title'])
|
|
||||||
elif self.service_item_type == ServiceItemType.Command:
|
elif self.service_item_type == ServiceItemType.Command:
|
||||||
for text_image in serviceitem[u'serviceitem'][u'data']:
|
for text_image in serviceitem[u'serviceitem'][u'data']:
|
||||||
if path:
|
if path:
|
||||||
self.add_from_command(
|
self.add_from_command(path, text_image[u'title'], text_image[u'image'])
|
||||||
path, text_image[u'title'], text_image[u'image'])
|
|
||||||
else:
|
else:
|
||||||
self.add_from_command(
|
self.add_from_command(text_image[u'path'], text_image[u'title'], text_image[u'image'])
|
||||||
text_image[u'path'], text_image[u'title'],
|
|
||||||
text_image[u'image'])
|
|
||||||
|
|
||||||
self._new_item()
|
self._new_item()
|
||||||
|
|
||||||
@ -505,8 +491,7 @@ class ServiceItem(object):
|
|||||||
"""
|
"""
|
||||||
Confirms if the ServiceItem uses a file
|
Confirms if the ServiceItem uses a file
|
||||||
"""
|
"""
|
||||||
return self.service_item_type == ServiceItemType.Image or \
|
return self.service_item_type == ServiceItemType.Image or self.service_item_type == ServiceItemType.Command
|
||||||
self.service_item_type == ServiceItemType.Command
|
|
||||||
|
|
||||||
def is_text(self):
|
def is_text(self):
|
||||||
"""
|
"""
|
||||||
@ -573,7 +558,7 @@ class ServiceItem(object):
|
|||||||
|
|
||||||
def remove_frame(self, frame):
|
def remove_frame(self, frame):
|
||||||
"""
|
"""
|
||||||
Remove the soecified frame from the item
|
Remove the specified frame from the item
|
||||||
"""
|
"""
|
||||||
if frame in self._raw_frames:
|
if frame in self._raw_frames:
|
||||||
self._raw_frames.remove(frame)
|
self._raw_frames.remove(frame)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4
|
# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# OpenLP - Open Source Lyrics Projection #
|
# OpenLP - Open Source Lyrics Projection #
|
||||||
@ -39,17 +39,14 @@ log = logging.getLogger(__name__)
|
|||||||
|
|
||||||
from PyQt4 import QtCore, QtGui
|
from PyQt4 import QtCore, QtGui
|
||||||
|
|
||||||
from openlp.core.lib import OpenLPToolbar, ServiceItem, Receiver, build_icon, \
|
from openlp.core.lib import OpenLPToolbar, ServiceItem, Receiver, build_icon, ItemCapabilities, SettingsManager, \
|
||||||
ItemCapabilities, SettingsManager, translate, str_to_bool, \
|
translate, str_to_bool, check_directory_exists
|
||||||
check_directory_exists
|
|
||||||
from openlp.core.lib.theme import ThemeLevel
|
from openlp.core.lib.theme import ThemeLevel
|
||||||
from openlp.core.lib.settings import Settings
|
from openlp.core.lib.settings import Settings
|
||||||
from openlp.core.lib.ui import UiStrings, critical_error_message_box, \
|
from openlp.core.lib.ui import UiStrings, critical_error_message_box, create_widget_action, find_and_set_in_combo_box
|
||||||
create_widget_action, find_and_set_in_combo_box
|
|
||||||
from openlp.core.ui import ServiceNoteForm, ServiceItemEditForm, StartTimeForm
|
from openlp.core.ui import ServiceNoteForm, ServiceItemEditForm, StartTimeForm
|
||||||
from openlp.core.ui.printserviceform import PrintServiceForm
|
from openlp.core.ui.printserviceform import PrintServiceForm
|
||||||
from openlp.core.utils import AppLocation, delete_file, split_filename, \
|
from openlp.core.utils import AppLocation, delete_file, split_filename, format_time
|
||||||
format_time
|
|
||||||
from openlp.core.utils.actions import ActionList, CategoryOrder
|
from openlp.core.utils.actions import ActionList, CategoryOrder
|
||||||
|
|
||||||
class ServiceManagerList(QtGui.QTreeWidget):
|
class ServiceManagerList(QtGui.QTreeWidget):
|
||||||
@ -127,30 +124,21 @@ class ServiceManager(QtGui.QWidget):
|
|||||||
self.layout.setMargin(0)
|
self.layout.setMargin(0)
|
||||||
# Create the top toolbar
|
# Create the top toolbar
|
||||||
self.toolbar = OpenLPToolbar(self)
|
self.toolbar = OpenLPToolbar(self)
|
||||||
self.toolbar.addToolbarAction(u'newService',
|
self.toolbar.addToolbarAction(u'newService', text=UiStrings().NewService, icon=u':/general/general_new.png',
|
||||||
text=UiStrings().NewService, icon=u':/general/general_new.png',
|
tooltip=UiStrings().CreateService, triggers=self.onNewServiceClicked)
|
||||||
tooltip=UiStrings().CreateService,
|
self.toolbar.addToolbarAction(u'openService', text=UiStrings().OpenService, icon=u':/general/general_open.png',
|
||||||
triggers=self.onNewServiceClicked)
|
tooltip=translate('OpenLP.ServiceManager', 'Load an existing service.'), triggers=self.onLoadServiceClicked)
|
||||||
self.toolbar.addToolbarAction(u'openService',
|
self.toolbar.addToolbarAction(u'saveService', text=UiStrings().SaveService, icon=u':/general/general_save.png',
|
||||||
text=UiStrings().OpenService, icon=u':/general/general_open.png',
|
tooltip=translate('OpenLP.ServiceManager', 'Save this service.'), triggers=self.decideSaveMethod)
|
||||||
tooltip=translate('OpenLP.ServiceManager',
|
|
||||||
'Load an existing service.'), triggers=self.onLoadServiceClicked)
|
|
||||||
self.toolbar.addToolbarAction(u'saveService',
|
|
||||||
text=UiStrings().SaveService, icon=u':/general/general_save.png',
|
|
||||||
tooltip=translate('OpenLP.ServiceManager', 'Save this service.'),
|
|
||||||
triggers=self.decideSaveMethod)
|
|
||||||
self.toolbar.addSeparator()
|
self.toolbar.addSeparator()
|
||||||
self.themeLabel = QtGui.QLabel(u'%s:' % UiStrings().Theme, self)
|
self.themeLabel = QtGui.QLabel(u'%s:' % UiStrings().Theme, self)
|
||||||
self.themeLabel.setMargin(3)
|
self.themeLabel.setMargin(3)
|
||||||
self.themeLabel.setObjectName(u'themeLabel')
|
self.themeLabel.setObjectName(u'themeLabel')
|
||||||
self.toolbar.addToolbarWidget(self.themeLabel)
|
self.toolbar.addToolbarWidget(self.themeLabel)
|
||||||
self.themeComboBox = QtGui.QComboBox(self.toolbar)
|
self.themeComboBox = QtGui.QComboBox(self.toolbar)
|
||||||
self.themeComboBox.setToolTip(translate('OpenLP.ServiceManager',
|
self.themeComboBox.setToolTip(translate('OpenLP.ServiceManager', 'Select a theme for the service.'))
|
||||||
'Select a theme for the service.'))
|
self.themeComboBox.setSizeAdjustPolicy(QtGui.QComboBox.AdjustToMinimumContentsLength)
|
||||||
self.themeComboBox.setSizeAdjustPolicy(
|
self.themeComboBox.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)
|
||||||
QtGui.QComboBox.AdjustToMinimumContentsLength)
|
|
||||||
self.themeComboBox.setSizePolicy(
|
|
||||||
QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)
|
|
||||||
self.themeComboBox.setObjectName(u'themeComboBox')
|
self.themeComboBox.setObjectName(u'themeComboBox')
|
||||||
self.toolbar.addToolbarWidget(self.themeComboBox)
|
self.toolbar.addToolbarWidget(self.themeComboBox)
|
||||||
self.toolbar.setObjectName(u'toolbar')
|
self.toolbar.setObjectName(u'toolbar')
|
||||||
@ -161,15 +149,12 @@ class ServiceManager(QtGui.QWidget):
|
|||||||
QtGui.QAbstractItemView.CurrentChanged |
|
QtGui.QAbstractItemView.CurrentChanged |
|
||||||
QtGui.QAbstractItemView.DoubleClicked |
|
QtGui.QAbstractItemView.DoubleClicked |
|
||||||
QtGui.QAbstractItemView.EditKeyPressed)
|
QtGui.QAbstractItemView.EditKeyPressed)
|
||||||
self.serviceManagerList.setDragDropMode(
|
self.serviceManagerList.setDragDropMode(QtGui.QAbstractItemView.DragDrop)
|
||||||
QtGui.QAbstractItemView.DragDrop)
|
|
||||||
self.serviceManagerList.setAlternatingRowColors(True)
|
self.serviceManagerList.setAlternatingRowColors(True)
|
||||||
self.serviceManagerList.setHeaderHidden(True)
|
self.serviceManagerList.setHeaderHidden(True)
|
||||||
self.serviceManagerList.setExpandsOnDoubleClick(False)
|
self.serviceManagerList.setExpandsOnDoubleClick(False)
|
||||||
self.serviceManagerList.setContextMenuPolicy(
|
self.serviceManagerList.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
|
||||||
QtCore.Qt.CustomContextMenu)
|
QtCore.QObject.connect(self.serviceManagerList, QtCore.SIGNAL('customContextMenuRequested(QPoint)'),
|
||||||
QtCore.QObject.connect(self.serviceManagerList,
|
|
||||||
QtCore.SIGNAL('customContextMenuRequested(QPoint)'),
|
|
||||||
self.contextMenu)
|
self.contextMenu)
|
||||||
self.serviceManagerList.setObjectName(u'serviceManagerList')
|
self.serviceManagerList.setObjectName(u'serviceManagerList')
|
||||||
# enable drop
|
# enable drop
|
||||||
@ -253,36 +238,24 @@ class ServiceManager(QtGui.QWidget):
|
|||||||
category=UiStrings().Service, triggers=self.makeLive)
|
category=UiStrings().Service, triggers=self.makeLive)
|
||||||
self.layout.addWidget(self.orderToolbar)
|
self.layout.addWidget(self.orderToolbar)
|
||||||
# Connect up our signals and slots
|
# Connect up our signals and slots
|
||||||
QtCore.QObject.connect(self.themeComboBox,
|
QtCore.QObject.connect(self.themeComboBox, QtCore.SIGNAL(u'activated(int)'), self.onThemeComboBoxSelected)
|
||||||
QtCore.SIGNAL(u'activated(int)'), self.onThemeComboBoxSelected)
|
QtCore.QObject.connect(self.serviceManagerList, QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.onMakeLive)
|
||||||
QtCore.QObject.connect(self.serviceManagerList,
|
QtCore.QObject.connect(self.serviceManagerList, QtCore.SIGNAL(u'itemCollapsed(QTreeWidgetItem*)'),
|
||||||
QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.onMakeLive)
|
self.collapsed)
|
||||||
QtCore.QObject.connect(self.serviceManagerList,
|
QtCore.QObject.connect(self.serviceManagerList, QtCore.SIGNAL(u'itemExpanded(QTreeWidgetItem*)'), self.expanded)
|
||||||
QtCore.SIGNAL(u'itemCollapsed(QTreeWidgetItem*)'), self.collapsed)
|
QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'theme_update_list'), self.updateThemeList)
|
||||||
QtCore.QObject.connect(self.serviceManagerList,
|
QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'servicemanager_preview_live'), self.previewLive)
|
||||||
QtCore.SIGNAL(u'itemExpanded(QTreeWidgetItem*)'), self.expanded)
|
QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'servicemanager_next_item'), self.nextItem)
|
||||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'servicemanager_previous_item'),
|
||||||
QtCore.SIGNAL(u'theme_update_list'), self.updateThemeList)
|
self.previousItem)
|
||||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'servicemanager_set_item'), self.onSetItem)
|
||||||
QtCore.SIGNAL(u'servicemanager_preview_live'), self.previewLive)
|
QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'config_updated'), self.configUpdated)
|
||||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'config_screen_changed'),
|
||||||
QtCore.SIGNAL(u'servicemanager_next_item'), self.nextItem)
|
|
||||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
|
||||||
QtCore.SIGNAL(u'servicemanager_previous_item'), self.previousItem)
|
|
||||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
|
||||||
QtCore.SIGNAL(u'servicemanager_set_item'), self.onSetItem)
|
|
||||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
|
||||||
QtCore.SIGNAL(u'config_updated'), self.configUpdated)
|
|
||||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
|
||||||
QtCore.SIGNAL(u'config_screen_changed'),
|
|
||||||
self.regenerateServiceItems)
|
self.regenerateServiceItems)
|
||||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'theme_update_global'), self.themeChange)
|
||||||
QtCore.SIGNAL(u'theme_update_global'), self.themeChange)
|
QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'service_item_update'), self.serviceItemUpdate)
|
||||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
|
||||||
QtCore.SIGNAL(u'service_item_update'), self.serviceItemUpdate)
|
|
||||||
# Last little bits of setting up
|
# Last little bits of setting up
|
||||||
self.service_theme = unicode(Settings().value(
|
self.service_theme = unicode(Settings().value(self.mainwindow.serviceManagerSettingsSection + u'/service theme',
|
||||||
self.mainwindow.serviceManagerSettingsSection + u'/service theme',
|
|
||||||
QtCore.QVariant(u'')).toString())
|
QtCore.QVariant(u'')).toString())
|
||||||
self.servicePath = AppLocation.get_section_data_path(u'servicemanager')
|
self.servicePath = AppLocation.get_section_data_path(u'servicemanager')
|
||||||
# build the drag and drop context menu
|
# build the drag and drop context menu
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4
|
# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# OpenLP - Open Source Lyrics Projection #
|
# OpenLP - Open Source Lyrics Projection #
|
||||||
@ -32,12 +32,10 @@ import os
|
|||||||
|
|
||||||
from PyQt4 import QtCore, QtGui
|
from PyQt4 import QtCore, QtGui
|
||||||
|
|
||||||
from openlp.core.lib import MediaManagerItem, build_icon, ItemCapabilities, \
|
from openlp.core.lib import MediaManagerItem, build_icon, ItemCapabilities, SettingsManager, translate, \
|
||||||
SettingsManager, translate, check_item_selected, Receiver, MediaType, \
|
check_item_selected, Receiver, MediaType, ServiceItem, build_html, ServiceItemContext
|
||||||
ServiceItem, build_html, ServiceItemContext
|
|
||||||
from openlp.core.lib.settings import Settings
|
from openlp.core.lib.settings import Settings
|
||||||
from openlp.core.lib.ui import UiStrings, critical_error_message_box, \
|
from openlp.core.lib.ui import UiStrings, critical_error_message_box, create_horizontal_adjusting_combo_box
|
||||||
create_horizontal_adjusting_combo_box
|
|
||||||
from openlp.core.ui import DisplayController, Display, DisplayControllerType
|
from openlp.core.ui import DisplayController, Display, DisplayControllerType
|
||||||
from openlp.core.ui.media import get_media_players, set_media_players
|
from openlp.core.ui.media import get_media_players, set_media_players
|
||||||
from openlp.core.utils import locale_compare
|
from openlp.core.utils import locale_compare
|
||||||
@ -67,25 +65,17 @@ class MediaMediaItem(MediaManagerItem):
|
|||||||
self.displayController = DisplayController(parent)
|
self.displayController = DisplayController(parent)
|
||||||
self.displayController.controllerLayout = QtGui.QVBoxLayout()
|
self.displayController.controllerLayout = QtGui.QVBoxLayout()
|
||||||
self.plugin.mediaController.register_controller(self.displayController)
|
self.plugin.mediaController.register_controller(self.displayController)
|
||||||
self.plugin.mediaController.set_controls_visible(self.displayController,
|
self.plugin.mediaController.set_controls_visible(self.displayController, False)
|
||||||
False)
|
self.displayController.previewDisplay = Display(self.displayController, False, self.displayController)
|
||||||
self.displayController.previewDisplay = Display(self.displayController,
|
|
||||||
False, self.displayController)
|
|
||||||
self.displayController.previewDisplay.hide()
|
self.displayController.previewDisplay.hide()
|
||||||
self.displayController.previewDisplay.setGeometry(
|
self.displayController.previewDisplay.setGeometry(QtCore.QRect(0, 0, 300, 300))
|
||||||
QtCore.QRect(0, 0, 300, 300))
|
self.displayController.previewDisplay.screen = {u'size':self.displayController.previewDisplay.geometry()}
|
||||||
self.displayController.previewDisplay.screen = \
|
|
||||||
{u'size':self.displayController.previewDisplay.geometry()}
|
|
||||||
self.displayController.previewDisplay.setup()
|
self.displayController.previewDisplay.setup()
|
||||||
self.plugin.mediaController.setup_display(
|
self.plugin.mediaController.setup_display(self.displayController.previewDisplay, False)
|
||||||
self.displayController.previewDisplay, False)
|
|
||||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||||
QtCore.SIGNAL(u'video_background_replaced'),
|
QtCore.SIGNAL(u'video_background_replaced'), self.videobackgroundReplaced)
|
||||||
self.videobackgroundReplaced)
|
QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'mediaitem_media_rebuild'), self.rebuild_players)
|
||||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'config_screen_changed'), self.displaySetup)
|
||||||
QtCore.SIGNAL(u'mediaitem_media_rebuild'), self.rebuild_players)
|
|
||||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
|
||||||
QtCore.SIGNAL(u'config_screen_changed'), self.displaySetup)
|
|
||||||
# Allow DnD from the desktop
|
# Allow DnD from the desktop
|
||||||
self.listView.activateDnD()
|
self.listView.activateDnD()
|
||||||
|
|
||||||
@ -96,8 +86,7 @@ class MediaMediaItem(MediaManagerItem):
|
|||||||
self.resetAction.setText(UiStrings().ResetBG)
|
self.resetAction.setText(UiStrings().ResetBG)
|
||||||
self.resetAction.setToolTip(UiStrings().ResetLiveBG)
|
self.resetAction.setToolTip(UiStrings().ResetLiveBG)
|
||||||
self.automatic = UiStrings().Automatic
|
self.automatic = UiStrings().Automatic
|
||||||
self.displayTypeLabel.setText(
|
self.displayTypeLabel.setText(translate('MediaPlugin.MediaItem', 'Use Player:'))
|
||||||
translate('MediaPlugin.MediaItem', 'Use Player:'))
|
|
||||||
self.rebuild_players()
|
self.rebuild_players()
|
||||||
|
|
||||||
def requiredIcons(self):
|
def requiredIcons(self):
|
||||||
@ -112,11 +101,10 @@ class MediaMediaItem(MediaManagerItem):
|
|||||||
|
|
||||||
def addEndHeaderBar(self):
|
def addEndHeaderBar(self):
|
||||||
# Replace backgrounds do not work at present so remove functionality.
|
# Replace backgrounds do not work at present so remove functionality.
|
||||||
self.replaceAction = self.toolbar.addToolbarAction(u'replaceAction',
|
self.replaceAction = self.toolbar.addToolbarAction(u'replaceAction', icon=u':/slides/slide_blank.png',
|
||||||
icon=u':/slides/slide_blank.png', triggers=self.onReplaceClick)
|
triggers=self.onReplaceClick)
|
||||||
self.resetAction = self.toolbar.addToolbarAction(u'resetAction',
|
self.resetAction = self.toolbar.addToolbarAction(u'resetAction', icon=u':/system/system_close.png',
|
||||||
icon=u':/system/system_close.png', visible=False,
|
visible=False, triggers=self.onResetClick)
|
||||||
triggers=self.onResetClick)
|
|
||||||
self.mediaWidget = QtGui.QWidget(self)
|
self.mediaWidget = QtGui.QWidget(self)
|
||||||
self.mediaWidget.setObjectName(u'mediaWidget')
|
self.mediaWidget.setObjectName(u'mediaWidget')
|
||||||
self.displayLayout = QtGui.QFormLayout(self.mediaWidget)
|
self.displayLayout = QtGui.QFormLayout(self.mediaWidget)
|
||||||
@ -124,15 +112,12 @@ class MediaMediaItem(MediaManagerItem):
|
|||||||
self.displayLayout.setObjectName(u'displayLayout')
|
self.displayLayout.setObjectName(u'displayLayout')
|
||||||
self.displayTypeLabel = QtGui.QLabel(self.mediaWidget)
|
self.displayTypeLabel = QtGui.QLabel(self.mediaWidget)
|
||||||
self.displayTypeLabel.setObjectName(u'displayTypeLabel')
|
self.displayTypeLabel.setObjectName(u'displayTypeLabel')
|
||||||
self.displayTypeComboBox = create_horizontal_adjusting_combo_box(
|
self.displayTypeComboBox = create_horizontal_adjusting_combo_box(self.mediaWidget, u'displayTypeComboBox')
|
||||||
self.mediaWidget, u'displayTypeComboBox')
|
|
||||||
self.displayTypeLabel.setBuddy(self.displayTypeComboBox)
|
self.displayTypeLabel.setBuddy(self.displayTypeComboBox)
|
||||||
self.displayLayout.addRow(self.displayTypeLabel,
|
self.displayLayout.addRow(self.displayTypeLabel, self.displayTypeComboBox)
|
||||||
self.displayTypeComboBox)
|
|
||||||
# Add the Media widget to the page layout
|
# Add the Media widget to the page layout
|
||||||
self.pageLayout.addWidget(self.mediaWidget)
|
self.pageLayout.addWidget(self.mediaWidget)
|
||||||
QtCore.QObject.connect(self.displayTypeComboBox,
|
QtCore.QObject.connect(self.displayTypeComboBox, QtCore.SIGNAL(u'currentIndexChanged (int)'),
|
||||||
QtCore.SIGNAL(u'currentIndexChanged (int)'),
|
|
||||||
self.overridePlayerChanged)
|
self.overridePlayerChanged)
|
||||||
|
|
||||||
def overridePlayerChanged(self, index):
|
def overridePlayerChanged(self, index):
|
||||||
@ -171,19 +156,16 @@ class MediaMediaItem(MediaManagerItem):
|
|||||||
service_item.shortname = service_item.title
|
service_item.shortname = service_item.title
|
||||||
(path, name) = os.path.split(filename)
|
(path, name) = os.path.split(filename)
|
||||||
service_item.add_from_command(path, name,CLAPPERBOARD)
|
service_item.add_from_command(path, name,CLAPPERBOARD)
|
||||||
if self.plugin.liveController.mediaController.video(
|
if self.plugin.liveController.mediaController.video(DisplayControllerType.Live, service_item,
|
||||||
DisplayControllerType.Live, service_item,
|
|
||||||
videoBehindText=True):
|
videoBehindText=True):
|
||||||
self.resetAction.setVisible(True)
|
self.resetAction.setVisible(True)
|
||||||
else:
|
else:
|
||||||
critical_error_message_box(UiStrings().LiveBGError,
|
critical_error_message_box(UiStrings().LiveBGError,
|
||||||
translate('MediaPlugin.MediaItem',
|
translate('MediaPlugin.MediaItem', 'There was no display item to amend.'))
|
||||||
'There was no display item to amend.'))
|
|
||||||
else:
|
else:
|
||||||
critical_error_message_box(UiStrings().LiveBGError,
|
critical_error_message_box(UiStrings().LiveBGError,
|
||||||
unicode(translate('MediaPlugin.MediaItem',
|
unicode(translate('MediaPlugin.MediaItem',
|
||||||
'There was a problem replacing your background, '
|
'There was a problem replacing your background, the media file "%s" no longer exists.')) % filename)
|
||||||
'the media file "%s" no longer exists.')) % filename)
|
|
||||||
|
|
||||||
def generateSlideData(self, service_item, item=None, xmlVersion=False,
|
def generateSlideData(self, service_item, item=None, xmlVersion=False,
|
||||||
remote=False, context=ServiceItemContext.Live):
|
remote=False, context=ServiceItemContext.Live):
|
||||||
@ -197,8 +179,7 @@ class MediaMediaItem(MediaManagerItem):
|
|||||||
# File is no longer present
|
# File is no longer present
|
||||||
critical_error_message_box(
|
critical_error_message_box(
|
||||||
translate('MediaPlugin.MediaItem', 'Missing Media File'),
|
translate('MediaPlugin.MediaItem', 'Missing Media File'),
|
||||||
unicode(translate('MediaPlugin.MediaItem',
|
unicode(translate('MediaPlugin.MediaItem', 'The file %s no longer exists.')) % filename)
|
||||||
'The file %s no longer exists.')) % filename)
|
|
||||||
return False
|
return False
|
||||||
service_item.title = unicode(self.displayTypeComboBox.currentText())
|
service_item.title = unicode(self.displayTypeComboBox.currentText())
|
||||||
service_item.shortname = service_item.title
|
service_item.shortname = service_item.title
|
||||||
@ -213,8 +194,7 @@ class MediaMediaItem(MediaManagerItem):
|
|||||||
service_item.add_capability(ItemCapabilities.RequiresMedia)
|
service_item.add_capability(ItemCapabilities.RequiresMedia)
|
||||||
service_item.add_capability(ItemCapabilities.HasDetailedTitleDisplay)
|
service_item.add_capability(ItemCapabilities.HasDetailedTitleDisplay)
|
||||||
if Settings().value(self.settingsSection + u'/media auto start',
|
if Settings().value(self.settingsSection + u'/media auto start',
|
||||||
QtCore.QVariant(QtCore.Qt.Unchecked)).toInt()[0]\
|
QtCore.QVariant(QtCore.Qt.Unchecked)).toInt()[0] == QtCore.Qt.Checked:
|
||||||
== QtCore.Qt.Checked:
|
|
||||||
service_item.will_auto_start = True
|
service_item.will_auto_start = True
|
||||||
# force a non-existent theme
|
# force a non-existent theme
|
||||||
service_item.theme = -1
|
service_item.theme = -1
|
||||||
@ -232,22 +212,19 @@ class MediaMediaItem(MediaManagerItem):
|
|||||||
the settings
|
the settings
|
||||||
"""
|
"""
|
||||||
self.populateDisplayTypes()
|
self.populateDisplayTypes()
|
||||||
self.onNewFileMasks = unicode(translate('MediaPlugin.MediaItem',
|
self.onNewFileMasks = unicode(translate('MediaPlugin.MediaItem', 'Videos (%s);;Audio (%s);;%s (*)')) % (
|
||||||
'Videos (%s);;Audio (%s);;%s (*)')) % (
|
|
||||||
u' '.join(self.plugin.mediaController.video_extensions_list),
|
u' '.join(self.plugin.mediaController.video_extensions_list),
|
||||||
u' '.join(self.plugin.mediaController.audio_extensions_list),
|
u' '.join(self.plugin.mediaController.audio_extensions_list), UiStrings().AllFiles)
|
||||||
UiStrings().AllFiles)
|
|
||||||
|
|
||||||
def displaySetup(self):
|
def displaySetup(self):
|
||||||
self.plugin.mediaController.setup_display(
|
self.plugin.mediaController.setup_display(self.displayController.previewDisplay, False)
|
||||||
self.displayController.previewDisplay, False)
|
|
||||||
|
|
||||||
def populateDisplayTypes(self):
|
def populateDisplayTypes(self):
|
||||||
"""
|
"""
|
||||||
Load the combobox with the enabled media players,
|
Load the combobox with the enabled media players,
|
||||||
allowing user to select a specific player if settings allow
|
allowing user to select a specific player if settings allow
|
||||||
"""
|
"""
|
||||||
# block signals to avoid unnecessary overridePlayerChanged Signales
|
# block signals to avoid unnecessary overridePlayerChanged Signals
|
||||||
# while combo box creation
|
# while combo box creation
|
||||||
self.displayTypeComboBox.blockSignals(True)
|
self.displayTypeComboBox.blockSignals(True)
|
||||||
self.displayTypeComboBox.clear()
|
self.displayTypeComboBox.clear()
|
||||||
@ -273,7 +250,7 @@ class MediaMediaItem(MediaManagerItem):
|
|||||||
Remove a media item from the list.
|
Remove a media item from the list.
|
||||||
"""
|
"""
|
||||||
if check_item_selected(self.listView, translate('MediaPlugin.MediaItem',
|
if check_item_selected(self.listView, translate('MediaPlugin.MediaItem',
|
||||||
'You must select a media file to delete.')):
|
'You must select a media file to delete.')):
|
||||||
row_list = [item.row() for item in self.listView.selectedIndexes()]
|
row_list = [item.row() for item in self.listView.selectedIndexes()]
|
||||||
row_list.sort(reverse=True)
|
row_list.sort(reverse=True)
|
||||||
for row in row_list:
|
for row in row_list:
|
||||||
@ -284,8 +261,7 @@ class MediaMediaItem(MediaManagerItem):
|
|||||||
def loadList(self, media):
|
def loadList(self, media):
|
||||||
# Sort the media by its filename considering language specific
|
# Sort the media by its filename considering language specific
|
||||||
# characters.
|
# characters.
|
||||||
media.sort(cmp=locale_compare,
|
media.sort(cmp=locale_compare, key=lambda filename: os.path.split(unicode(filename))[1])
|
||||||
key=lambda filename: os.path.split(unicode(filename))[1])
|
|
||||||
for track in media:
|
for track in media:
|
||||||
track_info = QtCore.QFileInfo(track)
|
track_info = QtCore.QFileInfo(track)
|
||||||
if not os.path.exists(track):
|
if not os.path.exists(track):
|
||||||
@ -296,8 +272,7 @@ class MediaMediaItem(MediaManagerItem):
|
|||||||
elif track_info.isFile():
|
elif track_info.isFile():
|
||||||
filename = os.path.split(unicode(track))[1]
|
filename = os.path.split(unicode(track))[1]
|
||||||
item_name = QtGui.QListWidgetItem(filename)
|
item_name = QtGui.QListWidgetItem(filename)
|
||||||
if u'*.%s' % (filename.split(u'.')[-1].lower()) in \
|
if u'*.%s' % (filename.split(u'.')[-1].lower()) in self.plugin.mediaController.audio_extensions_list:
|
||||||
self.plugin.mediaController.audio_extensions_list:
|
|
||||||
item_name.setIcon(AUDIO)
|
item_name.setIcon(AUDIO)
|
||||||
else:
|
else:
|
||||||
item_name.setIcon(VIDEO)
|
item_name.setIcon(VIDEO)
|
||||||
@ -312,8 +287,7 @@ class MediaMediaItem(MediaManagerItem):
|
|||||||
|
|
||||||
def getList(self, type=MediaType.Audio):
|
def getList(self, type=MediaType.Audio):
|
||||||
media = SettingsManager.load_list(self.settingsSection, u'media')
|
media = SettingsManager.load_list(self.settingsSection, u'media')
|
||||||
media.sort(cmp=locale_compare,
|
media.sort(cmp=locale_compare, key=lambda filename: os.path.split(unicode(filename))[1])
|
||||||
key=lambda filename: os.path.split(unicode(filename))[1])
|
|
||||||
ext = []
|
ext = []
|
||||||
if type == MediaType.Audio:
|
if type == MediaType.Audio:
|
||||||
ext = self.plugin.mediaController.audio_extensions_list
|
ext = self.plugin.mediaController.audio_extensions_list
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4
|
# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# OpenLP - Open Source Lyrics Projection #
|
# OpenLP - Open Source Lyrics Projection #
|
||||||
@ -69,34 +69,24 @@ class MediaTab(SettingsTab):
|
|||||||
|
|
||||||
def retranslateUi(self):
|
def retranslateUi(self):
|
||||||
self.advancedGroupBox.setTitle(UiStrings().Advanced)
|
self.advancedGroupBox.setTitle(UiStrings().Advanced)
|
||||||
self.overridePlayerCheckBox.setText(
|
self.overridePlayerCheckBox.setText(translate('MediaPlugin.MediaTab', 'Allow media player to be overridden'))
|
||||||
translate('MediaPlugin.MediaTab',
|
self.autoStartCheckBox.setText(translate('MediaPlugin.MediaTab', 'Start Live items automatically'))
|
||||||
'Allow media player to be overridden'))
|
|
||||||
self.autoStartCheckBox.setText(
|
|
||||||
translate('MediaPlugin.MediaTab',
|
|
||||||
'Start Live items automatically'))
|
|
||||||
|
|
||||||
def load(self):
|
def load(self):
|
||||||
self.overridePlayerCheckBox.setChecked(Settings().value(
|
self.overridePlayerCheckBox.setChecked(Settings().value(self.settingsSection + u'/override player',
|
||||||
self.settingsSection + u'/override player',
|
|
||||||
QtCore.QVariant(QtCore.Qt.Unchecked)).toInt()[0])
|
QtCore.QVariant(QtCore.Qt.Unchecked)).toInt()[0])
|
||||||
self.autoStartCheckBox.setChecked(Settings().value(
|
self.autoStartCheckBox.setChecked(Settings().value(self.settingsSection + u'/media auto start',
|
||||||
self.settingsSection + u'/media auto start',
|
|
||||||
QtCore.QVariant(QtCore.Qt.Unchecked)).toInt()[0])
|
QtCore.QVariant(QtCore.Qt.Unchecked)).toInt()[0])
|
||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
override_changed = False
|
override_changed = False
|
||||||
setting_key = self.settingsSection + u'/override player'
|
setting_key = self.settingsSection + u'/override player'
|
||||||
if Settings().value(setting_key).toInt()[0] != \
|
if Settings().value(setting_key).toInt()[0] != self.overridePlayerCheckBox.checkState():
|
||||||
self.overridePlayerCheckBox.checkState():
|
Settings().setValue(setting_key, QtCore.QVariant(self.overridePlayerCheckBox.checkState()))
|
||||||
Settings().setValue(setting_key,
|
|
||||||
QtCore.QVariant(self.overridePlayerCheckBox.checkState()))
|
|
||||||
override_changed = True
|
override_changed = True
|
||||||
setting_key = self.settingsSection + u'/media auto start'
|
setting_key = self.settingsSection + u'/media auto start'
|
||||||
if Settings().value(setting_key).toInt()[0] !=\
|
if Settings().value(setting_key).toInt()[0] != self.autoStartCheckBox.checkState():
|
||||||
self.autoStartCheckBox.checkState():
|
Settings().setValue(setting_key, QtCore.QVariant(self.autoStartCheckBox.checkState()))
|
||||||
Settings().setValue(setting_key,
|
|
||||||
QtCore.QVariant(self.autoStartCheckBox.checkState()))
|
|
||||||
if override_changed:
|
if override_changed:
|
||||||
self.parent.resetSupportedSuffixes()
|
self.parent.resetSupportedSuffixes()
|
||||||
Receiver.send_message(u'mediaitem_media_rebuild')
|
Receiver.send_message(u'mediaitem_media_rebuild')
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4
|
# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# OpenLP - Open Source Lyrics Projection #
|
# OpenLP - Open Source Lyrics Projection #
|
||||||
@ -41,8 +41,7 @@ class MediaPlugin(Plugin):
|
|||||||
log.info(u'%s MediaPlugin loaded', __name__)
|
log.info(u'%s MediaPlugin loaded', __name__)
|
||||||
|
|
||||||
def __init__(self, plugin_helpers):
|
def __init__(self, plugin_helpers):
|
||||||
Plugin.__init__(self, u'media', plugin_helpers,
|
Plugin.__init__(self, u'media', plugin_helpers, MediaMediaItem)
|
||||||
MediaMediaItem)
|
|
||||||
self.weight = -6
|
self.weight = -6
|
||||||
self.iconPath = u':/plugins/plugin_media.png'
|
self.iconPath = u':/plugins/plugin_media.png'
|
||||||
self.icon = build_icon(self.iconPath)
|
self.icon = build_icon(self.iconPath)
|
||||||
@ -54,8 +53,7 @@ class MediaPlugin(Plugin):
|
|||||||
Create the settings Tab
|
Create the settings Tab
|
||||||
"""
|
"""
|
||||||
visible_name = self.getString(StringContent.VisibleName)
|
visible_name = self.getString(StringContent.VisibleName)
|
||||||
self.settingsTab = MediaTab(parent, self.name, visible_name[u'title'],
|
self.settingsTab = MediaTab(parent, self.name, visible_name[u'title'], self.iconPath)
|
||||||
self.iconPath)
|
|
||||||
|
|
||||||
def about(self):
|
def about(self):
|
||||||
about_text = translate('MediaPlugin', '<strong>Media Plugin</strong>'
|
about_text = translate('MediaPlugin', '<strong>Media Plugin</strong>'
|
||||||
@ -84,8 +82,7 @@ class MediaPlugin(Plugin):
|
|||||||
u'delete': translate('MediaPlugin', 'Delete the selected media.'),
|
u'delete': translate('MediaPlugin', 'Delete the selected media.'),
|
||||||
u'preview': translate('MediaPlugin', 'Preview the selected media.'),
|
u'preview': translate('MediaPlugin', 'Preview the selected media.'),
|
||||||
u'live': translate('MediaPlugin', 'Send the selected media live.'),
|
u'live': translate('MediaPlugin', 'Send the selected media live.'),
|
||||||
u'service': translate('MediaPlugin',
|
u'service': translate('MediaPlugin', 'Add the selected media to the service.')
|
||||||
'Add the selected media to the service.')
|
|
||||||
}
|
}
|
||||||
self.setPluginUiTextStrings(tooltips)
|
self.setPluginUiTextStrings(tooltips)
|
||||||
|
|
||||||
@ -131,12 +128,10 @@ class MediaPlugin(Plugin):
|
|||||||
log.debug(u'Converting old setting to new setting')
|
log.debug(u'Converting old setting to new setting')
|
||||||
new_players = []
|
new_players = []
|
||||||
if players:
|
if players:
|
||||||
new_players = [player for player in players \
|
new_players = [player for player in players if player != u'phonon']
|
||||||
if player != u'phonon']
|
|
||||||
new_players.insert(0, u'phonon')
|
new_players.insert(0, u'phonon')
|
||||||
self.mediaController.mediaPlayers[u'phonon'].isActive = True
|
self.mediaController.mediaPlayers[u'phonon'].isActive = True
|
||||||
settings.setValue(u'players', \
|
settings.setValue(u'players', QtCore.QVariant(u','.join(new_players)))
|
||||||
QtCore.QVariant(u','.join(new_players)))
|
|
||||||
self.settingsTab.load()
|
self.settingsTab.load()
|
||||||
settings.remove(u'use phonon')
|
settings.remove(u'use phonon')
|
||||||
settings.endGroup()
|
settings.endGroup()
|
||||||
|
Loading…
Reference in New Issue
Block a user