About to make some big changes to the imageplugin...

bzr-revno: 332
This commit is contained in:
Martin Thompson 2009-02-20 21:14:52 +00:00
parent ad48e1f4e6
commit 8816b6c2dc
4 changed files with 54 additions and 20 deletions

View File

@ -18,13 +18,16 @@ this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA
"""
from PyQt4 import QtCore, QtGui
import logging
class ImageServiceItem():
"""
The service item is a base class for the plugins to use to interact with
the service manager, the slide controller, and the renderer.
"""
global log
log=logging.getLogger("ImageServiceItem")
log.info("ImageServiceItem loaded")
def __init__(self, controller):
"""
Init Method
@ -58,7 +61,9 @@ class ImageServiceItem():
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)
self.slide_controller.setRowHeight(c, 80)
# render the preview screen here
def get_parent_node(self):
"""
@ -66,11 +71,12 @@ class ImageServiceItem():
Manager.
"""
pass
def add(self, img_filename):
def add(self, filename):
"""
append an image to the list
"""
self.imgs.append(img_filename)
log.info("add:"+filename)
self.imgs.append(filename)
def get_oos_text(self):
"""
@ -82,5 +88,6 @@ class ImageServiceItem():
"""
get text from the OOS file and setup the internal structure
"""
log.info("Set from OOS:"+text)
self.imgs=eval(text)

View File

@ -84,7 +84,9 @@ class PluginManager(object):
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')
log.debug("Plugin="+str(p))
if plugin.check_pre_conditions():
log.debug("Appending "+str(p))
plugin_objects.append(plugin)
self.plugins = sorted(plugin_objects, self.order_by_weight)

View File

@ -28,8 +28,11 @@ from openlp.core.ui import AboutForm, AlertForm, SettingsDialog, SlideController
from openlp.core.lib import Plugin, MediaManagerItem, SettingsTab
from openlp.core import PluginManager
import logging
class MainWindow(object):
global log
log=logging.getLogger("MainWindow")
log.info("MainWindow loaded")
def __init__(self):
self.main_window = QtGui.QMainWindow()
@ -41,6 +44,19 @@ class MainWindow(object):
self.plugin_manager = PluginManager(pluginpath)
self.setupUi()
self.plugin_manager.find_plugins(pluginpath, self.PreviewController, self.LiveController)
# hook methods have to happen after find_plugins. Find plugins needs the controllers
# hence the hooks have moved fromt srtupUI() to here
# Call the hook method to pull in import menus.
# self.plugin_manager.hook_import_menu(self.FileImportMenu)
#
# Call the hook method to pull in export menus.
# self.plugin_manager.hook_import_menu(self.FileExportMenu)
#
# This is where we will eventually get the Plugin Manager to pull in
# the media manager items.
log.info("hook media")
self.plugin_manager.hook_media_manager(self.MediaToolBox)
# End adding media manager items.
self.receiver = Receiver()
QtCore.QObject.connect(self.receiver.get_receiver(),QtCore.SIGNAL("openlprepaint"),self.repaint)
@ -84,14 +100,9 @@ class MainWindow(object):
self.FileMenu.setObjectName("FileMenu")
self.FileImportMenu = QtGui.QMenu(self.FileMenu)
self.FileImportMenu.setObjectName("FileImportMenu")
# Call the hook method to pull in import menus.
self.plugin_manager.hook_import_menu(self.FileImportMenu)
#
self.FileExportMenu = QtGui.QMenu(self.FileMenu)
self.FileExportMenu.setObjectName("FileExportMenu")
# Call the hook method to pull in export menus.
self.plugin_manager.hook_import_menu(self.FileExportMenu)
#
self.OptionsMenu = QtGui.QMenu(self.MenuBar)
self.OptionsMenu.setObjectName("OptionsMenu")
self.OptionsViewMenu = QtGui.QMenu(self.OptionsMenu)
@ -133,10 +144,7 @@ class MainWindow(object):
self.MediaToolBox = QtGui.QToolBox(self.MediaManagerContents)
#self.MediaToolBox.setTabSpacing(0)
self.MediaToolBox.setObjectName("MediaToolBox")
# This is where we will eventually get the Plugin Manager to pull in
# the media manager items.
self.plugin_manager.hook_media_manager(self.MediaToolBox)
# End adding media manager items.
self.MediaManagerLayout.addWidget(self.MediaToolBox)
self.MediaManagerDock.setWidget(self.MediaManagerContents)
self.main_window.addDockWidget(QtCore.Qt.DockWidgetArea(1), self.MediaManagerDock)

View File

@ -22,8 +22,12 @@ from PyQt4 import QtCore, QtGui
from openlp.core.resources import *
from openlp.core.lib import Plugin, PluginUtils, MediaManagerItem, ImageServiceItem
#from forms import EditSongForm
import logging
class ImagePlugin(Plugin, PluginUtils):
global log
log=logging.getLogger("ImagePlugin")
log.info("Image Plugin loaded")
def __init__(self, preview_controller, live_controller):
# Call the parent constructor
Plugin.__init__(self, 'Images', '1.9.0', preview_controller, live_controller)
@ -35,7 +39,6 @@ class ImagePlugin(Plugin, PluginUtils):
self.preview_service_item=ImageServiceItem(preview_controller)
self.live_service_item=ImageServiceItem(live_controller)
def get_media_manager_item(self):
# Create the MediaManagerItem object
self.MediaManagerItem = MediaManagerItem(self.icon, 'Images')
@ -62,9 +65,10 @@ class ImagePlugin(Plugin, PluginUtils):
self.onImageAddClick, 'ImageAddItem')
## Add the songlist widget ##
self.ImageListView = QtGui.QTableWidget()
self.ImageListView.setColumnCount(2)
self.ImageListView.setColumnCount(3)
self.ImageListView.setColumnHidden(0, True)
self.ImageListView.setColumnWidth(1, 275)
# self.ImageListView.setColumnWidth(1, 275)
self.ImageListView.setColumnWidth(2, 100)
self.ImageListView.setShowGrid(False)
self.ImageListView.setSortingEnabled(False)
self.ImageListView.setAlternatingRowColors(True)
@ -89,8 +93,10 @@ class ImagePlugin(Plugin, PluginUtils):
return self.MediaManagerItem
def initialise(self):
log.info("Plugin Initialising")
list = self._load_display_list()
self._load_image_list(list)
log.info("Done")
def onImagesNewClick(self):
files = QtGui.QFileDialog.getOpenFileNames(None, "Select Image(s)", self._get_last_dir(), "Images (*.jpg *.gif *.png *.bmp)")
@ -100,6 +106,7 @@ class ImagePlugin(Plugin, PluginUtils):
self._save_display_list(self.ImageListView)
def _load_image_list(self, list):
h=200
for f in list:
fl , nm = os.path.split(str(f))
c = self.ImageListView.rowCount()
@ -108,7 +115,13 @@ class ImagePlugin(Plugin, PluginUtils):
self.ImageListView.setItem(c , 0, twi)
twi = QtGui.QTableWidgetItem(str(nm))
self.ImageListView.setItem(c , 1, twi)
self.ImageListView.setRowHeight(c, 20)
preview = QtGui.QPixmap(str(f))
twi = QtGui.QTableWidgetItem("")
twi.setBackground(QtGui.QBrush(QtGui.QPixmap(f).scaledToHeight(h)))
# twi.setIcon(QtGui.QIcon(preview.scaledToHeight(h)))
self.ImageListView.setItem(c , 2, twi)
self.ImageListView.setRowHeight(c, h)
def onImageDeleteClick(self):
cr = self.ImageListView.currentRow()
@ -116,7 +129,10 @@ class ImagePlugin(Plugin, PluginUtils):
self._save_display_list(self.ImageListView)
def onImagePreviewClick(self):
self.preview_service_item.add(self.ImageListView.pathtofile)
cr = self.ImageListView.currentRow()
filename = self.ImageListView.item(cr, 0).text()
log.info("Preview "+str(filename))
self.preview_service_item.add(filename)
self.preview_service_item.render()
def onImageLiveClick(self):
@ -124,3 +140,4 @@ class ImagePlugin(Plugin, PluginUtils):
def onImageAddClick(self):
pass