forked from openlp/openlp
Allowed slide contrllers to be passed to the plugins. It's broken at
the moment though! bzr-revno: 331
This commit is contained in:
parent
d1a6cc585b
commit
ad48e1f4e6
@ -17,6 +17,7 @@ You should have received a copy of the GNU General Public License along with
|
|||||||
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
|
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
|
||||||
Place, Suite 330, Boston, MA 02111-1307 USA
|
Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
"""
|
"""
|
||||||
|
from PyQt4 import QtCore, QtGui
|
||||||
|
|
||||||
class ImageServiceItem():
|
class ImageServiceItem():
|
||||||
"""
|
"""
|
||||||
@ -24,11 +25,23 @@ class ImageServiceItem():
|
|||||||
the service manager, the slide controller, and the renderer.
|
the service manager, the slide controller, and the renderer.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self, controller):
|
||||||
"""
|
"""
|
||||||
Init Method
|
Init Method
|
||||||
"""
|
"""
|
||||||
self.imgs=[]
|
self.imgs=[]
|
||||||
|
self.slide_controller=controller
|
||||||
|
self.slide_controller.ControllerContents=QtGui.QTableWidget()
|
||||||
|
c=self.slide_controller.ControllerContents
|
||||||
|
c.setColumnCount(2)
|
||||||
|
c.setColumnHidden(0, True)
|
||||||
|
c.setColumnWidth(1, 275)
|
||||||
|
c.setShowGrid(False)
|
||||||
|
c.setSortingEnabled(False)
|
||||||
|
c.setAlternatingRowColors(True)
|
||||||
|
c.setHorizontalHeaderLabels(QtCore.QStringList(["","Name"]))
|
||||||
|
c.setAlternatingRowColors(True)
|
||||||
|
c.setGeometry(QtCore.QRect(10, 100, 256, 591))
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def render(self):
|
def render(self):
|
||||||
@ -36,7 +49,16 @@ class ImageServiceItem():
|
|||||||
The render method is what the plugin uses to render its meda to the
|
The render method is what the plugin uses to render its meda to the
|
||||||
screen.
|
screen.
|
||||||
"""
|
"""
|
||||||
pass
|
# render the "image chooser first"
|
||||||
|
for f in self.imgs:
|
||||||
|
fl , nm = os.path.split(str(f))
|
||||||
|
c = self.slide_controller.rowCount()
|
||||||
|
self.slide_controller.setRowCount(c+1)
|
||||||
|
twi = QtGui.QTableWidgetItem(str(f))
|
||||||
|
self.slide_controller.setItem(c , 0, twi)
|
||||||
|
twi = QtGui.QTableWidgetItem(str(nm))
|
||||||
|
self.slide_controller.setItem(c , 1, twi)
|
||||||
|
self.slide_controller.setRowHeight(c, 20)
|
||||||
|
|
||||||
def get_parent_node(self):
|
def get_parent_node(self):
|
||||||
"""
|
"""
|
||||||
@ -61,4 +83,4 @@ class ImageServiceItem():
|
|||||||
get text from the OOS file and setup the internal structure
|
get text from the OOS file and setup the internal structure
|
||||||
"""
|
"""
|
||||||
self.imgs=eval(text)
|
self.imgs=eval(text)
|
||||||
|
|
||||||
|
@ -67,7 +67,7 @@ class Plugin(object):
|
|||||||
and screen number.
|
and screen number.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, name=None, version=None):
|
def __init__(self, name=None, version=None, preview_controller=None, live_controller=None):
|
||||||
"""
|
"""
|
||||||
This is the constructor for the plugin object. This provides an easy
|
This is the constructor for the plugin object. This provides an easy
|
||||||
way for descendent plugins to populate common data. This method *must*
|
way for descendent plugins to populate common data. This method *must*
|
||||||
@ -89,7 +89,8 @@ class Plugin(object):
|
|||||||
# Set up logging
|
# Set up logging
|
||||||
self.log = logging.getLogger(self.name)
|
self.log = logging.getLogger(self.name)
|
||||||
self.repaint_main_window = None
|
self.repaint_main_window = None
|
||||||
|
self.preview_controller=preview_controller
|
||||||
|
self.live_controller=live_controller
|
||||||
def check_pre_conditions(self):
|
def check_pre_conditions(self):
|
||||||
"""
|
"""
|
||||||
Provides the Plugin with a handle to check if it can be loaded.
|
Provides the Plugin with a handle to check if it can be loaded.
|
||||||
|
@ -35,7 +35,8 @@ class PluginManager(object):
|
|||||||
|
|
||||||
def __init__(self, dir):
|
def __init__(self, dir):
|
||||||
"""
|
"""
|
||||||
The constructor for the plugin manager. This does a, b and c.
|
The constructor for the plugin manager.
|
||||||
|
Passes the controllers on to the plugins for them to interact with via their ServiceItems
|
||||||
"""
|
"""
|
||||||
log.info("Plugin manager initing")
|
log.info("Plugin manager initing")
|
||||||
if not dir in sys.path:
|
if not dir in sys.path:
|
||||||
@ -44,13 +45,14 @@ class PluginManager(object):
|
|||||||
self.basepath = os.path.abspath(dir)
|
self.basepath = os.path.abspath(dir)
|
||||||
log.debug("Base path %s ", self.basepath)
|
log.debug("Base path %s ", self.basepath)
|
||||||
self.plugins = []
|
self.plugins = []
|
||||||
self.find_plugins(dir)
|
# this has to happen after the UI is sroted self.find_plugins(dir)
|
||||||
log.info("Plugin manager done init")
|
log.info("Plugin manager done init")
|
||||||
|
def find_plugins(self, dir, preview_controller, live_controller): # xxx shouldn't dir come from self.basepath
|
||||||
def find_plugins(self, dir):
|
|
||||||
"""
|
"""
|
||||||
Scan the directory dir for objects inheriting from openlp.plugin
|
Scan the directory dir for objects inheriting from openlp.plugin
|
||||||
"""
|
"""
|
||||||
|
self.preview_controller=preview_controller
|
||||||
|
self.live_controller=live_controller
|
||||||
startdepth=len(os.path.abspath(dir).split(os.sep))
|
startdepth=len(os.path.abspath(dir).split(os.sep))
|
||||||
log.debug("find plugins %s at depth %d" %( str(dir), startdepth))
|
log.debug("find plugins %s at depth %d" %( str(dir), startdepth))
|
||||||
|
|
||||||
@ -76,7 +78,12 @@ class PluginManager(object):
|
|||||||
self.plugins = []
|
self.plugins = []
|
||||||
plugin_objects = []
|
plugin_objects = []
|
||||||
for p in self.plugin_classes:
|
for p in self.plugin_classes:
|
||||||
plugin = p()
|
try:
|
||||||
|
plugin = p(self.preview_controller, self.live_controller)
|
||||||
|
log.debug('loaded plugin' + str(p) + ' with controllers'+str(self.preview_controller)+str(self.live_controller))
|
||||||
|
except TypeError: # xxx need to get rid of this once all plugins are up to date
|
||||||
|
plugin = p()
|
||||||
|
log.debug('loaded plugin' + str(p) + ' with no controllers')
|
||||||
if plugin.check_pre_conditions():
|
if plugin.check_pre_conditions():
|
||||||
plugin_objects.append(plugin)
|
plugin_objects.append(plugin)
|
||||||
self.plugins = sorted(plugin_objects, self.order_by_weight)
|
self.plugins = sorted(plugin_objects, self.order_by_weight)
|
||||||
|
@ -40,6 +40,12 @@ class MainWindow(object):
|
|||||||
pluginpath = os.path.abspath(os.path.join(pluginpath, '..', '..','plugins'))
|
pluginpath = os.path.abspath(os.path.join(pluginpath, '..', '..','plugins'))
|
||||||
self.plugin_manager = PluginManager(pluginpath)
|
self.plugin_manager = PluginManager(pluginpath)
|
||||||
self.setupUi()
|
self.setupUi()
|
||||||
|
self.plugin_manager.find_plugins(pluginpath, self.PreviewController, self.LiveController)
|
||||||
|
self.receiver = Receiver()
|
||||||
|
QtCore.QObject.connect(self.receiver.get_receiver(),QtCore.SIGNAL("openlprepaint"),self.repaint)
|
||||||
|
|
||||||
|
def repaint(self):
|
||||||
|
self.main_window.repaint()
|
||||||
|
|
||||||
def setupUi(self):
|
def setupUi(self):
|
||||||
self.main_window.setObjectName("main_window")
|
self.main_window.setObjectName("main_window")
|
||||||
|
@ -21,8 +21,9 @@ import os
|
|||||||
from time import sleep
|
from time import sleep
|
||||||
from PyQt4 import QtCore, QtGui
|
from PyQt4 import QtCore, QtGui
|
||||||
|
|
||||||
class SlideController(QtCore.QObject):
|
class SlideController(QtGui.QWidget):
|
||||||
def __init__(self, control_splitter):
|
def __init__(self, control_splitter):
|
||||||
|
QtGui.QWidget.__init__(self)
|
||||||
self.Pane = QtGui.QWidget(control_splitter)
|
self.Pane = QtGui.QWidget(control_splitter)
|
||||||
self.Splitter = QtGui.QSplitter(self.Pane)
|
self.Splitter = QtGui.QSplitter(self.Pane)
|
||||||
self.Splitter.setOrientation(QtCore.Qt.Vertical)
|
self.Splitter.setOrientation(QtCore.Qt.Vertical)
|
||||||
|
@ -24,17 +24,17 @@ from openlp.core.lib import Plugin, PluginUtils, MediaManagerItem, ImageServiceI
|
|||||||
#from forms import EditSongForm
|
#from forms import EditSongForm
|
||||||
|
|
||||||
class ImagePlugin(Plugin, PluginUtils):
|
class ImagePlugin(Plugin, PluginUtils):
|
||||||
def __init__(self):
|
def __init__(self, preview_controller, live_controller):
|
||||||
# Call the parent constructor
|
# Call the parent constructor
|
||||||
Plugin.__init__(self, 'Images', '1.9.0')
|
Plugin.__init__(self, 'Images', '1.9.0', preview_controller, live_controller)
|
||||||
self.weight = -7
|
self.weight = -7
|
||||||
# Create the plugin icon
|
# Create the plugin icon
|
||||||
self.icon = QtGui.QIcon()
|
self.icon = QtGui.QIcon()
|
||||||
self.icon.addPixmap(QtGui.QPixmap(':/media/media_image.png'),
|
self.icon.addPixmap(QtGui.QPixmap(':/media/media_image.png'),
|
||||||
QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
||||||
|
|
||||||
self.preview_service_item=ImageServiceItem()
|
self.preview_service_item=ImageServiceItem(preview_controller)
|
||||||
self.live_service_item=ImageServiceItem()
|
self.live_service_item=ImageServiceItem(live_controller)
|
||||||
|
|
||||||
def get_media_manager_item(self):
|
def get_media_manager_item(self):
|
||||||
# Create the MediaManagerItem object
|
# Create the MediaManagerItem object
|
||||||
|
Loading…
Reference in New Issue
Block a user