forked from openlp/openlp
head
This commit is contained in:
commit
e5da1cb5f9
@ -170,7 +170,7 @@ def check_item_selected(list_widget, message):
|
||||
The message to give the user if no item is selected
|
||||
"""
|
||||
if not list_widget.selectedIndexes():
|
||||
QtGui.QMessageBox.information(self,
|
||||
QtGui.QMessageBox.information(list_widget.parent(),
|
||||
translate('MediaManagerItem', 'No Items Selected'), message)
|
||||
return False
|
||||
return True
|
||||
|
@ -22,17 +22,20 @@
|
||||
# with this program; if not, write to the Free Software Foundation, Inc., 59 #
|
||||
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
|
||||
###############################################################################
|
||||
|
||||
"""
|
||||
Extend QListWidget to handle drag and drop functionality
|
||||
"""
|
||||
from PyQt4 import QtCore, QtGui
|
||||
|
||||
class BaseListWithDnD(QtGui.QListWidget):
|
||||
"""
|
||||
Please put a short description of what this class does in here.
|
||||
Provide a list widget to store objects and handle drag and drop events
|
||||
"""
|
||||
|
||||
def __init__(self, parent=None):
|
||||
"""
|
||||
Initialise the list widget
|
||||
"""
|
||||
QtGui.QListWidget.__init__(self, parent)
|
||||
self.parent = parent
|
||||
# this must be set by the class which is inheriting
|
||||
assert(self.PluginName)
|
||||
|
||||
|
@ -22,7 +22,10 @@
|
||||
# with this program; if not, write to the Free Software Foundation, Inc., 59 #
|
||||
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
|
||||
###############################################################################
|
||||
|
||||
"""
|
||||
Provide additional functionality required by OpenLP from the inherited
|
||||
QDockWidget.
|
||||
"""
|
||||
import logging
|
||||
|
||||
from PyQt4 import QtGui
|
||||
|
@ -22,7 +22,9 @@
|
||||
# with this program; if not, write to the Free Software Foundation, Inc., 59 #
|
||||
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
|
||||
###############################################################################
|
||||
|
||||
"""
|
||||
Provide event handling code for OpenLP
|
||||
"""
|
||||
import logging
|
||||
|
||||
from PyQt4 import QtCore
|
||||
@ -241,7 +243,11 @@ class Receiver(object):
|
||||
``Receiver.send_message(u'<<Message ID>>', data)``
|
||||
|
||||
To receive a Message
|
||||
``QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'<<Message ID>>'), <<ACTION>>)``
|
||||
``QtCore.QObject.connect(
|
||||
Receiver.get_receiver(),
|
||||
QtCore.SIGNAL(u'<<Message ID>>'),
|
||||
<<ACTION>>
|
||||
)``
|
||||
"""
|
||||
eventreceiver = EventReceiver()
|
||||
|
||||
|
@ -22,7 +22,9 @@
|
||||
# with this program; if not, write to the Free Software Foundation, Inc., 59 #
|
||||
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
|
||||
###############################################################################
|
||||
|
||||
"""
|
||||
Provides the generic functions for interfacing plugins with the Media Manager.
|
||||
"""
|
||||
import logging
|
||||
import os
|
||||
|
||||
@ -204,7 +206,9 @@ class MediaManagerItem(QtGui.QWidget):
|
||||
self.addListViewToToolBar()
|
||||
|
||||
def addMiddleHeaderBar(self):
|
||||
# Create buttons for the toolbar
|
||||
"""
|
||||
Create buttons for the media item toolbar
|
||||
"""
|
||||
## Import Button ##
|
||||
if self.hasImportIcon:
|
||||
self.addToolbarButton(
|
||||
@ -267,6 +271,9 @@ class MediaManagerItem(QtGui.QWidget):
|
||||
u':/general/general_add.png', self.onAddClick)
|
||||
|
||||
def addListViewToToolBar(self):
|
||||
"""
|
||||
Creates the main widget for listing items the media item is tracking
|
||||
"""
|
||||
#Add the List widget
|
||||
self.ListView = self.ListViewWithDnD_class(self)
|
||||
self.ListView.uniformItemSizes = True
|
||||
@ -344,6 +351,9 @@ class MediaManagerItem(QtGui.QWidget):
|
||||
pass
|
||||
|
||||
def onFileClick(self):
|
||||
"""
|
||||
Add a file to the list widget to make it available for showing
|
||||
"""
|
||||
files = QtGui.QFileDialog.getOpenFileNames(
|
||||
self, self.OnNewPrompt,
|
||||
SettingsManager.get_last_dir(self.settingsSection),
|
||||
@ -357,6 +367,9 @@ class MediaManagerItem(QtGui.QWidget):
|
||||
self.settingsSection, self.getFileList())
|
||||
|
||||
def getFileList(self):
|
||||
"""
|
||||
Return the current list of files
|
||||
"""
|
||||
count = 0
|
||||
filelist = []
|
||||
while count < self.ListView.count():
|
||||
@ -380,6 +393,15 @@ class MediaManagerItem(QtGui.QWidget):
|
||||
return False
|
||||
|
||||
def IconFromFile(self, file, thumb):
|
||||
"""
|
||||
Create a thumbnail icon from a given file
|
||||
|
||||
``file``
|
||||
The file to create the icon from
|
||||
|
||||
``thumb``
|
||||
The filename to save the thumbnail to
|
||||
"""
|
||||
icon = build_icon(unicode(file))
|
||||
pixmap = icon.pixmap(QtCore.QSize(88, 50))
|
||||
ext = os.path.splitext(thumb)[1].lower()
|
||||
@ -407,6 +429,10 @@ class MediaManagerItem(QtGui.QWidget):
|
||||
u'to be defined by the plugin')
|
||||
|
||||
def onPreviewClick(self):
|
||||
"""
|
||||
Preview an item by building a service item then adding that service
|
||||
item to the preview slide controller.
|
||||
"""
|
||||
if not self.ListView.selectedIndexes() and not self.remoteTriggered:
|
||||
QtGui.QMessageBox.information(self,
|
||||
translate('MediaManagerItem', 'No Items Selected'),
|
||||
@ -420,6 +446,10 @@ class MediaManagerItem(QtGui.QWidget):
|
||||
self.parent.preview_controller.addServiceItem(service_item)
|
||||
|
||||
def onLiveClick(self):
|
||||
"""
|
||||
Send an item live by building a service item then adding that service
|
||||
item to the live slide controller.
|
||||
"""
|
||||
if not self.ListView.selectedIndexes():
|
||||
QtGui.QMessageBox.information(self,
|
||||
translate('MediaManagerItem', 'No Items Selected'),
|
||||
@ -433,6 +463,9 @@ class MediaManagerItem(QtGui.QWidget):
|
||||
self.parent.live_controller.addServiceItem(service_item)
|
||||
|
||||
def onAddClick(self):
|
||||
"""
|
||||
Add a selected item to the current service
|
||||
"""
|
||||
if not self.ListView.selectedIndexes() and not self.remoteTriggered:
|
||||
QtGui.QMessageBox.information(self,
|
||||
translate('MediaManagerItem', 'No Items Selected'),
|
||||
@ -457,6 +490,9 @@ class MediaManagerItem(QtGui.QWidget):
|
||||
self.parent.service_manager.addServiceItem(service_item)
|
||||
|
||||
def onAddEditClick(self):
|
||||
"""
|
||||
Add a selected item to an existing item in the current service.
|
||||
"""
|
||||
if not self.ListView.selectedIndexes() and not self.remoteTriggered:
|
||||
QtGui.QMessageBox.information(self,
|
||||
translate('MediaManagerItem', 'No items selected'),
|
||||
|
@ -22,7 +22,9 @@
|
||||
# with this program; if not, write to the Free Software Foundation, Inc., 59 #
|
||||
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
|
||||
###############################################################################
|
||||
|
||||
"""
|
||||
Provide the generic plugin functionality for OpenLP plugins.
|
||||
"""
|
||||
import logging
|
||||
|
||||
from PyQt4 import QtCore
|
||||
|
@ -304,7 +304,7 @@ class ServiceItem(object):
|
||||
def merge(self, other):
|
||||
"""
|
||||
Updates the _uuid with the value from the original one
|
||||
The _uuid is unique for a give service item but this allows one to
|
||||
The _uuid is unique for a given service item but this allows one to
|
||||
replace an original version.
|
||||
"""
|
||||
self._uuid = other._uuid
|
||||
|
@ -22,7 +22,12 @@
|
||||
# with this program; if not, write to the Free Software Foundation, Inc., 59 #
|
||||
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
|
||||
###############################################################################
|
||||
|
||||
"""
|
||||
Provide handling for persisting OpenLP settings. OpenLP uses QSettings to
|
||||
manage settings persistence. QSettings provides a single API for saving and
|
||||
retrieving settings from the application but writes to disk in an OS dependant
|
||||
format.
|
||||
"""
|
||||
import os
|
||||
|
||||
from PyQt4 import QtCore
|
||||
@ -56,6 +61,9 @@ class SettingsManager(object):
|
||||
u'user interface/preview panel', QtCore.QVariant(True)).toBool()
|
||||
|
||||
def togglePreviewPanel(self, isVisible):
|
||||
"""
|
||||
Toggle the preview panel visibility.
|
||||
"""
|
||||
QtCore.QSettings().setValue(u'user interface/preview panel',
|
||||
QtCore.QVariant(isVisible))
|
||||
|
||||
|
@ -22,7 +22,9 @@
|
||||
# with this program; if not, write to the Free Software Foundation, Inc., 59 #
|
||||
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
|
||||
###############################################################################
|
||||
|
||||
"""
|
||||
Provide the theme XML and handling functions for OpenLP v2 themes.
|
||||
"""
|
||||
import os
|
||||
|
||||
from xml.dom.minidom import Document
|
||||
|
@ -22,7 +22,9 @@
|
||||
# with this program; if not, write to the Free Software Foundation, Inc., 59 #
|
||||
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
|
||||
###############################################################################
|
||||
|
||||
"""
|
||||
Provide common toolbar handling for OpenLP
|
||||
"""
|
||||
import logging
|
||||
|
||||
from PyQt4 import QtCore, QtGui
|
||||
|
@ -73,6 +73,14 @@ class ServiceItemEditForm(QtGui.QDialog, Ui_ServiceItemEditDialog):
|
||||
for frame in self.itemList:
|
||||
item_name = QtGui.QListWidgetItem(frame[u'title'])
|
||||
self.listWidget.addItem(item_name)
|
||||
if self.listWidget.count() == 1:
|
||||
self.downButton.setEnabled(False)
|
||||
self.upButton.setEnabled(False)
|
||||
self.deleteButton.setEnabled(False)
|
||||
else:
|
||||
self.downButton.setEnabled(True)
|
||||
self.upButton.setEnabled(True)
|
||||
self.deleteButton.setEnabled(True)
|
||||
|
||||
def onItemDelete(self):
|
||||
"""
|
||||
|
@ -43,7 +43,8 @@ class BibleListView(BaseListWithDnD):
|
||||
BaseListWithDnD.__init__(self, parent)
|
||||
|
||||
def resizeEvent(self, event):
|
||||
self.parent.onListViewResize(event.size().width(), event.size().width())
|
||||
self.parent().onListViewResize(event.size().width(),
|
||||
event.size().width())
|
||||
|
||||
|
||||
class BibleMediaItem(MediaManagerItem):
|
||||
|
@ -62,10 +62,14 @@ class OSISBible(BibleDB):
|
||||
self.fi_regex = re.compile(r'<FI>(.*?)<Fi>')
|
||||
self.rf_regex = re.compile(r'<RF>(.*?)<Rf>')
|
||||
self.lb_regex = re.compile(r'<lb(.*?)>')
|
||||
self.lg_regex = re.compile(r'<lg(.*?)>')
|
||||
self.l_regex = re.compile(r'<l (.*?)>')
|
||||
self.w_regex = re.compile(r'<w (.*?)>')
|
||||
self.q_regex = re.compile(r'<q (.*?)>')
|
||||
self.q1_regex = re.compile(r'<q(.*?)level="1"(.*?)>')
|
||||
self.q2_regex = re.compile(r'<q(.*?)level="2"(.*?)>')
|
||||
self.trans_regex = re.compile(r'<transChange(.*?)>(.*?)</transChange>')
|
||||
self.divineName_regex = re.compile(
|
||||
r'<divineName(.*?)>(.*?)</divineName>')
|
||||
self.spaces_regex = re.compile(r'([ ]{2,})')
|
||||
self.books = {}
|
||||
filepath = os.path.join(
|
||||
@ -96,7 +100,7 @@ class OSISBible(BibleDB):
|
||||
detect_file = None
|
||||
try:
|
||||
detect_file = open(self.filename, u'r')
|
||||
details = chardet.detect(detect_file.read())
|
||||
details = chardet.detect(detect_file.read(1048576))
|
||||
except IOError:
|
||||
log.exception(u'Failed to detect OSIS file encoding')
|
||||
return
|
||||
@ -150,11 +154,14 @@ class OSISBible(BibleDB):
|
||||
verse_text = self.milestone_regex.sub(u'', verse_text)
|
||||
verse_text = self.fi_regex.sub(u'', verse_text)
|
||||
verse_text = self.rf_regex.sub(u'', verse_text)
|
||||
verse_text = self.lb_regex.sub(u'', verse_text)
|
||||
verse_text = self.lb_regex.sub(u' ', verse_text)
|
||||
verse_text = self.lg_regex.sub(u'', verse_text)
|
||||
verse_text = self.l_regex.sub(u'', verse_text)
|
||||
verse_text = self.w_regex.sub(u'', verse_text)
|
||||
verse_text = self.q_regex.sub(u'', verse_text)
|
||||
verse_text = self.q1_regex.sub(u'"', verse_text)
|
||||
verse_text = self.q2_regex.sub(u'\'', verse_text)
|
||||
verse_text = self.trans_regex.sub(u'', verse_text)
|
||||
verse_text = self.divineName_regex.sub(u'', verse_text)
|
||||
verse_text = verse_text.replace(u'</lb>', u'')\
|
||||
.replace(u'</l>', u'').replace(u'<lg>', u'')\
|
||||
.replace(u'</lg>', u'').replace(u'</q>', u'')\
|
||||
|
@ -589,7 +589,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
|
||||
def onCopyrightInsertButtonTriggered(self):
|
||||
text = self.CopyrightEditItem.text()
|
||||
pos = self.CopyrightEditItem.cursorPosition()
|
||||
text = text[:pos] + u'\xa9' + text[pos:]
|
||||
text = text[:pos] + '\xa9' + text[pos:]
|
||||
self.CopyrightEditItem.setText(text)
|
||||
self.CopyrightEditItem.setFocus()
|
||||
self.CopyrightEditItem.setCursorPosition(pos + 1)
|
||||
|
@ -94,6 +94,10 @@ class VerseType(object):
|
||||
from manager import SongManager
|
||||
from songstab import SongsTab
|
||||
from mediaitem import SongMediaItem
|
||||
from sofimport import SofImport
|
||||
from oooimport import OooImport
|
||||
from songimport import SongImport
|
||||
from songimport import SongImport
|
||||
try:
|
||||
from sofimport import SofImport
|
||||
from oooimport import OooImport
|
||||
except ImportError:
|
||||
pass
|
||||
|
||||
|
@ -25,9 +25,7 @@
|
||||
|
||||
import re
|
||||
|
||||
from PyQt4 import QtGui
|
||||
|
||||
from openlp.core.lib import SongXMLBuilder
|
||||
from openlp.core.lib import SongXMLBuilder, translate
|
||||
from openlp.plugins.songs.lib import VerseType
|
||||
from openlp.plugins.songs.lib.models import Song, Author, Topic, Book
|
||||
|
||||
@ -63,10 +61,10 @@ class SongImport(object):
|
||||
self.verses = []
|
||||
self.versecount = 0
|
||||
self.choruscount = 0
|
||||
self.copyright_string = unicode(QtGui.QApplication.translate(
|
||||
u'SongsPlugin.SongImport', u'copyright'))
|
||||
self.copyright_symbol = unicode(QtGui.QApplication.translate(
|
||||
u'SongsPlugin.SongImport', u'\xa9'))
|
||||
self.copyright_string = unicode(translate(
|
||||
'SongsPlugin.SongImport', 'copyright'))
|
||||
self.copyright_symbol = unicode(translate(
|
||||
'SongsPlugin.SongImport', '\xa9'))
|
||||
|
||||
@staticmethod
|
||||
def process_songs_text(manager, text):
|
||||
|
@ -29,8 +29,13 @@ from PyQt4 import QtCore, QtGui
|
||||
|
||||
from openlp.core.lib import Plugin, build_icon, PluginStatus, Receiver, \
|
||||
translate
|
||||
from openlp.plugins.songs.lib import SongManager, SongMediaItem, SongsTab, \
|
||||
SofImport, OooImport
|
||||
from openlp.plugins.songs.lib import SongManager, SongMediaItem, SongsTab
|
||||
|
||||
try:
|
||||
from openlp.plugins.songs.lib import SofImport, OooImport
|
||||
OOo_available = True
|
||||
except ImportError:
|
||||
OOo_available = False
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
@ -95,46 +100,48 @@ class SongsPlugin(Plugin):
|
||||
self.SongImportItem.setToolTip(translate('SongsPlugin',
|
||||
'Import songs using the import wizard.'))
|
||||
import_menu.addAction(self.SongImportItem)
|
||||
# Songs of Fellowship import menu item - will be removed and the
|
||||
# functionality will be contained within the import wizard
|
||||
self.ImportSofItem = QtGui.QAction(import_menu)
|
||||
self.ImportSofItem.setObjectName(u'ImportSofItem')
|
||||
self.ImportSofItem.setText(
|
||||
translate('SongsPlugin',
|
||||
'Songs of Fellowship (temp menu item)'))
|
||||
self.ImportSofItem.setToolTip(
|
||||
translate('SongsPlugin',
|
||||
'Import songs from the VOLS1_2.RTF, sof3words' \
|
||||
+ '.rtf and sof4words.rtf supplied with the music books'))
|
||||
self.ImportSofItem.setStatusTip(
|
||||
translate('SongsPlugin',
|
||||
'Import songs from the VOLS1_2.RTF, sof3words' \
|
||||
+ '.rtf and sof4words.rtf supplied with the music books'))
|
||||
import_menu.addAction(self.ImportSofItem)
|
||||
# OpenOffice.org import menu item - will be removed and the
|
||||
# functionality will be contained within the import wizard
|
||||
self.ImportOooItem = QtGui.QAction(import_menu)
|
||||
self.ImportOooItem.setObjectName(u'ImportOooItem')
|
||||
self.ImportOooItem.setText(
|
||||
translate('SongsPlugin',
|
||||
'Generic Document/Presentation Import '
|
||||
'(temp menu item)'))
|
||||
self.ImportOooItem.setToolTip(
|
||||
translate('SongsPlugin',
|
||||
'Import songs from '
|
||||
'Word/Writer/Powerpoint/Impress'))
|
||||
self.ImportOooItem.setStatusTip(
|
||||
translate('SongsPlugin',
|
||||
'Import songs from '
|
||||
'Word/Writer/Powerpoint/Impress'))
|
||||
import_menu.addAction(self.ImportOooItem)
|
||||
# Signals and slots
|
||||
QtCore.QObject.connect(self.SongImportItem,
|
||||
QtCore.SIGNAL(u'triggered()'), self.onSongImportItemClicked)
|
||||
QtCore.QObject.connect(self.ImportSofItem,
|
||||
QtCore.SIGNAL(u'triggered()'), self.onImportSofItemClick)
|
||||
QtCore.QObject.connect(self.ImportOooItem,
|
||||
QtCore.SIGNAL(u'triggered()'), self.onImportOooItemClick)
|
||||
if OOo_available:
|
||||
# Songs of Fellowship import menu item - will be removed and the
|
||||
# functionality will be contained within the import wizard
|
||||
self.ImportSofItem = QtGui.QAction(import_menu)
|
||||
self.ImportSofItem.setObjectName(u'ImportSofItem')
|
||||
self.ImportSofItem.setText(
|
||||
translate('SongsPlugin',
|
||||
'Songs of Fellowship (temp menu item)'))
|
||||
self.ImportSofItem.setToolTip(
|
||||
translate('SongsPlugin',
|
||||
'Import songs from the VOLS1_2.RTF, sof3words' \
|
||||
+ '.rtf and sof4words.rtf supplied with the music books'))
|
||||
self.ImportSofItem.setStatusTip(
|
||||
translate('SongsPlugin',
|
||||
'Import songs from the VOLS1_2.RTF, sof3words' \
|
||||
+ '.rtf and sof4words.rtf supplied with the music books'))
|
||||
import_menu.addAction(self.ImportSofItem)
|
||||
# OpenOffice.org import menu item - will be removed and the
|
||||
# functionality will be contained within the import wizard
|
||||
self.ImportOooItem = QtGui.QAction(import_menu)
|
||||
self.ImportOooItem.setObjectName(u'ImportOooItem')
|
||||
self.ImportOooItem.setText(
|
||||
translate('SongsPlugin',
|
||||
'Generic Document/Presentation Import '
|
||||
'(temp menu item)'))
|
||||
self.ImportOooItem.setToolTip(
|
||||
translate('SongsPlugin',
|
||||
'Import songs from '
|
||||
'Word/Writer/Powerpoint/Impress'))
|
||||
self.ImportOooItem.setStatusTip(
|
||||
translate('SongsPlugin',
|
||||
'Import songs from '
|
||||
'Word/Writer/Powerpoint/Impress'))
|
||||
import_menu.addAction(self.ImportOooItem)
|
||||
# Signals and slots
|
||||
QtCore.QObject.connect(self.ImportSofItem,
|
||||
QtCore.SIGNAL(u'triggered()'), self.onImportSofItemClick)
|
||||
QtCore.QObject.connect(self.ImportOooItem,
|
||||
QtCore.SIGNAL(u'triggered()'), self.onImportOooItemClick)
|
||||
|
||||
def add_export_menu_item(self, export_menu):
|
||||
"""
|
||||
|
4254
resources/i18n/openlp_af.ts
Normal file
4254
resources/i18n/openlp_af.ts
Normal file
File diff suppressed because one or more lines are too long
4259
resources/i18n/openlp_de.ts
Normal file
4259
resources/i18n/openlp_de.ts
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
4287
resources/i18n/openlp_en_GB.ts
Normal file
4287
resources/i18n/openlp_en_GB.ts
Normal file
File diff suppressed because it is too large
Load Diff
4457
resources/i18n/openlp_en_ZA.ts
Normal file
4457
resources/i18n/openlp_en_ZA.ts
Normal file
File diff suppressed because one or more lines are too long
4253
resources/i18n/openlp_es.ts
Normal file
4253
resources/i18n/openlp_es.ts
Normal file
File diff suppressed because it is too large
Load Diff
3904
resources/i18n/openlp_hu.ts
Normal file
3904
resources/i18n/openlp_hu.ts
Normal file
File diff suppressed because it is too large
Load Diff
4960
resources/i18n/openlp_ko.ts
Normal file
4960
resources/i18n/openlp_ko.ts
Normal file
File diff suppressed because it is too large
Load Diff
4491
resources/i18n/openlp_nb.ts
Normal file
4491
resources/i18n/openlp_nb.ts
Normal file
File diff suppressed because it is too large
Load Diff
4254
resources/i18n/openlp_pt_BR.ts
Normal file
4254
resources/i18n/openlp_pt_BR.ts
Normal file
File diff suppressed because it is too large
Load Diff
4262
resources/i18n/openlp_sv.ts
Normal file
4262
resources/i18n/openlp_sv.ts
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user