Head r892

This commit is contained in:
Jon Tibble 2010-06-28 11:48:58 +01:00
commit 6c182ef70b
18 changed files with 135 additions and 52 deletions

View File

@ -1 +1 @@
1.9.1-bzr821
1.9.2

View File

@ -22,15 +22,19 @@
# 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)
# this must be set by the class which is inheriting
assert(self.PluginName)

View File

@ -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

View File

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

View File

@ -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'),

View File

@ -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

View File

@ -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

View File

@ -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))

View File

@ -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

View File

@ -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

View File

@ -63,7 +63,7 @@ class VersionThread(QtCore.QThread):
self.parent = parent
self.app_version = app_version
self.version_splitter = re.compile(
r'([0-9]+).([0-9]+).([0-9]+)(?:-bzr([0-9]+))')
r'([0-9]+).([0-9]+).([0-9]+)(?:-bzr([0-9]+))?')
def run(self):
"""
@ -79,14 +79,14 @@ class VersionThread(QtCore.QThread):
remote_version[u'major'] = int(match.group(1))
remote_version[u'minor'] = int(match.group(2))
remote_version[u'release'] = int(match.group(3))
if len(match.groups()) > 3:
if len(match.groups()) > 3 and match.group(4):
remote_version[u'revision'] = int(match.group(4))
match = self.version_splitter.match(self.app_version[u'full'])
if match:
local_version[u'major'] = int(match.group(1))
local_version[u'minor'] = int(match.group(2))
local_version[u'release'] = int(match.group(3))
if len(match.groups()) > 3:
if len(match.groups()) > 3 and match.group(4):
local_version[u'revision'] = int(match.group(4))
if remote_version[u'major'] > local_version[u'major'] or \
remote_version[u'minor'] > local_version[u'minor'] or \

View File

@ -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):
"""
@ -83,6 +91,10 @@ class ServiceItemEditForm(QtGui.QDialog, Ui_ServiceItemEditDialog):
row = self.listWidget.row(item)
self.itemList.remove(self.itemList[row])
self.loadData()
if row == self.listWidget.count():
self.listWidget.setCurrentRow(row - 1)
else:
self.listWidget.setCurrentRow(row)
def onItemUp(self):
"""

View File

@ -520,7 +520,11 @@ class SlideController(QtGui.QWidget):
log.debug(u'processManagerItem')
self.onStopLoop()
#If old item was a command tell it to stop
if self.serviceItem and self.serviceItem.is_command():
if self.serviceItem:
if self.serviceItem.is_command():
Receiver.send_message(u'%s_stop' %
self.serviceItem.name.lower(), [serviceItem, self.isLive])
if self.serviceItem.is_media():
self.onMediaStop()
if serviceItem.is_media():
self.onMediaStart(serviceItem)
@ -827,7 +831,7 @@ class SlideController(QtGui.QWidget):
return
Receiver.send_message(u'%s_next' % self.serviceItem.name.lower(),
[self.serviceItem, self.isLive])
if self.serviceItem.is_command():
if self.serviceItem.is_command() and self.isLive:
self.updatePreview()
else:
row = self.PreviewListWidget.currentRow() + 1
@ -851,7 +855,7 @@ class SlideController(QtGui.QWidget):
return
Receiver.send_message(u'%s_previous' % self.serviceItem.name.lower(),
[self.serviceItem, self.isLive])
if self.serviceItem.is_command():
if self.serviceItem.is_command() and self.isLive:
self.updatePreview()
else:
row = self.PreviewListWidget.currentRow() - 1

View File

@ -68,7 +68,8 @@ class OSISBible(BibleDB):
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.divineName_regex = re.compile(
r'<divineName(.*?)>(.*?)</divineName>')
self.spaces_regex = re.compile(r'([ ]{2,})')
self.books = {}
filepath = os.path.join(

View File

@ -41,9 +41,14 @@ from openlp.core.lib import resize_image
if os.name == u'nt':
from win32com.client import Dispatch
import pywintypes
else:
try:
import uno
from com.sun.star.beans import PropertyValue
uno_available = True
except ImportError:
uno_available = False
from PyQt4 import QtCore
@ -78,9 +83,7 @@ class ImpressController(PresentationController):
if os.name == u'nt':
return self.get_com_servicemanager() is not None
else:
# If not windows, and we've got this far then probably
# installed else the import uno would likely have failed
return True
return uno_available
def start_process(self):
"""
@ -132,18 +135,13 @@ class ImpressController(PresentationController):
def get_com_desktop(self):
log.debug(u'get COM Desktop OpenOffice')
try:
desktop = self.manager.createInstance(u'com.sun.star.frame.Desktop')
return desktop
except:
log.exception(u'Failed to get COM desktop')
return None
return self.manager.createInstance(u'com.sun.star.frame.Desktop')
def get_com_servicemanager(self):
log.debug(u'get_com_servicemanager openoffice')
try:
return Dispatch(u'com.sun.star.ServiceManager')
except:
except pywintypes.com_error:
log.exception(u'Failed to get COM service manager')
return None
@ -327,7 +325,10 @@ class ImpressDocument(PresentationDocument):
Returns true if screen is blank
"""
log.debug(u'is blank OpenOffice')
if self.control:
return self.control.isPaused()
else:
return False
def stop_presentation(self):
log.debug(u'stop presentation OpenOffice')

View File

@ -70,16 +70,16 @@ class Controller(object):
if self.doc.slidenumber > 1:
self.doc.goto_slide(self.doc.slidenumber)
def slide(self, slide, live):
log.debug(u'Live = %s, slide' % live)
if not live:
def slide(self, slide):
log.debug(u'Live = %s, slide' % self.is_live)
if not self.is_live:
return
if self.doc.is_blank():
self.doc.slidenumber = int(slide) + 1
return
self.activate()
self.doc.goto_slide(int(slide) + 1)
self.doc.poll_slidenumber(live)
self.doc.poll_slidenumber(self.is_live)
def first(self):
"""
@ -248,11 +248,10 @@ class MessageListener(object):
def slide(self, message):
is_live = message[1]
slide = message[2]
item = message[0]
if is_live:
self.live_handler.slide(slide, item)
self.live_handler.slide(slide)
else:
self.preview_handler.slide(slide, item)
self.preview_handler.slide(slide)
def first(self, message):
is_live = message[1]

View File

@ -42,9 +42,14 @@ if os.name == u'nt':
PAGE_AFTER = 5
PAGE_BOTH = 6
else:
try:
from com.sun.star.awt.FontWeight import BOLD
from com.sun.star.awt.FontSlant import ITALIC
from com.sun.star.style.BreakType import PAGE_BEFORE, PAGE_AFTER, PAGE_BOTH
from com.sun.star.style.BreakType import PAGE_BEFORE, PAGE_AFTER, \
PAGE_BOTH
except ImportError:
pass
class SofImport(OooImport):
"""

View File

@ -25,8 +25,6 @@
import re
from PyQt4 import QtGui
from openlp.core.lib import SongXMLBuilder, translate
from openlp.plugins.songs.lib import VerseType
from openlp.plugins.songs.lib.db import Song, Author, Topic, Book