forked from openlp/openlp
Finish storing list data in config files
Add delete_value method Finish updating Plugins to TreeWidgets, Context Menus and Config saving. bzr-revno: 258
This commit is contained in:
parent
ae7e7d47de
commit
38590ff47a
@ -21,7 +21,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
import logging
|
||||
|
||||
from openlp.core.lib import PluginConfig
|
||||
from openlp.core.lib import PluginUtils
|
||||
|
||||
class Plugin(object):
|
||||
"""
|
||||
@ -86,7 +85,6 @@ class Plugin(object):
|
||||
self.version = version
|
||||
self.icon = None
|
||||
self.config = PluginConfig(self.name)
|
||||
self.pluginutils = PluginUtils()
|
||||
self.weight = 0
|
||||
# Set up logging
|
||||
self.log = logging.getLogger(self.name)
|
||||
|
@ -37,6 +37,12 @@ class PluginConfig(object):
|
||||
Get a configuration value from the configuration registry.
|
||||
"""
|
||||
return ConfigHelper.get_config(self.section, key, default)
|
||||
|
||||
def delete_config(self, key):
|
||||
"""
|
||||
Delete a configuration value from the configuration registry.
|
||||
"""
|
||||
return ConfigHelper.delete_config(self.section, key)
|
||||
|
||||
def set_config(self, key, value):
|
||||
"""
|
||||
|
@ -64,13 +64,17 @@ class PluginUtils(object):
|
||||
|
||||
def _save_display_list(self, displaylist):
|
||||
"""
|
||||
Save display list from the config files
|
||||
Save display list from the config files tidy up the list
|
||||
"""
|
||||
c = displaylist.rowCount()
|
||||
self.config.set_config("List Count", str(c))
|
||||
for i in range (0, int(c)):
|
||||
self.config.set_config("List Item "+str(i), str(displaylist.item(i, 0).text()))
|
||||
|
||||
oldcount = self.config.get_config("List Count")
|
||||
newcount = displaylist.rowCount()
|
||||
self.config.set_config("List Count", str(newcount))
|
||||
for i in range (0, int(newcount)):
|
||||
self.config.set_config("List Item "+str(i), str(displaylist.item(i, 0).text()))
|
||||
if oldcount > newcount: # Tidy up any old list itrms if list is smaller now
|
||||
for i in range(int(newcount) , int(oldcount)):
|
||||
self.config.delete_config("List Item "+str(i))
|
||||
|
||||
def _get_last_dir(self):
|
||||
"""
|
||||
Read the last directory used for plugin
|
||||
@ -80,9 +84,9 @@ class PluginUtils(object):
|
||||
lastdir = ""
|
||||
return lastdir
|
||||
|
||||
def _save_last_directory(self, list):
|
||||
def _save_last_directory(self, filename):
|
||||
"""
|
||||
Save the last directory used for plugin
|
||||
"""
|
||||
path , nm = os.path.split(str(list))
|
||||
path , nm = os.path.split(str(filename))
|
||||
self.config.set_config("Last Dir", path)
|
||||
|
@ -57,6 +57,11 @@ class ConfigHelper(object):
|
||||
reg.create_section(section)
|
||||
return reg.set_value(section, key, value)
|
||||
|
||||
@staticmethod
|
||||
def delete_config(section, key):
|
||||
reg = ConfigHelper.get_registry()
|
||||
reg.delete_value(section, key)
|
||||
|
||||
@staticmethod
|
||||
def get_registry():
|
||||
"""
|
||||
|
@ -23,11 +23,11 @@ import logging
|
||||
from PyQt4 import QtCore, QtGui
|
||||
|
||||
from openlp.core.resources import *
|
||||
from openlp.core.lib import Plugin, MediaManagerItem
|
||||
from openlp.core.lib import Plugin,PluginUtils, MediaManagerItem
|
||||
from openlp.plugins.bibles.lib import BibleManager
|
||||
from openlp.plugins.bibles.forms import BibleImportForm
|
||||
|
||||
class BiblePlugin(Plugin):
|
||||
class BiblePlugin(Plugin, PluginUtils):
|
||||
global log
|
||||
log=logging.getLogger("BiblePlugin")
|
||||
log.info("Bible Plugin loaded")
|
||||
@ -170,11 +170,19 @@ class BiblePlugin(Plugin):
|
||||
# Add the search tab widget to the page layout
|
||||
self.MediaManagerItem.PageLayout.addWidget(self.SearchTabWidget)
|
||||
|
||||
self.listView = QtGui.QListWidget()
|
||||
self.listView.setGeometry(QtCore.QRect(10, 200, 256, 391))
|
||||
self.listView.setObjectName("listView")
|
||||
self.listView.setAlternatingRowColors(True)
|
||||
self.MediaManagerItem.PageLayout.addWidget(self.listView)
|
||||
self.BibleListView = QtGui.QTableWidget()
|
||||
self.BibleListView.setColumnCount(2)
|
||||
self.BibleListView.setColumnHidden(0, True)
|
||||
self.BibleListView.setColumnWidth(1, 275)
|
||||
self.BibleListView.setShowGrid(False)
|
||||
self.BibleListView.setSortingEnabled(False)
|
||||
self.BibleListView.setAlternatingRowColors(True)
|
||||
self.BibleListView.setHorizontalHeaderLabels(QtCore.QStringList(["","Bible Verses"]))
|
||||
|
||||
self.BibleListView.setGeometry(QtCore.QRect(10, 200, 256, 391))
|
||||
self.BibleListView.setObjectName("listView")
|
||||
self.BibleListView.setAlternatingRowColors(True)
|
||||
self.MediaManagerItem.PageLayout.addWidget(self.BibleListView)
|
||||
|
||||
#QtCore.QObject.connect(self.QuickTab, QtCore.SIGNAL("triggered()"), self.onQuickTabClick)
|
||||
QtCore.QObject.connect( self.SearchTabWidget, QtCore.SIGNAL("currentChanged ( QWidget * )" ), self.onQuickTabClick)
|
||||
@ -188,11 +196,11 @@ class BiblePlugin(Plugin):
|
||||
QtCore.QObject.connect(self.QuickSearchButton, QtCore.SIGNAL("pressed()"), self.onQuickSearchButton)
|
||||
|
||||
#define and add the context menu
|
||||
self.listView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
|
||||
self.BibleListView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
|
||||
|
||||
self.listView.addAction(self.pluginutils.add_to_context_menu(self.listView, ':/system/system_preview.png', "&Preview Verse", self.onBiblePreviewClick))
|
||||
self.listView.addAction(self.pluginutils.add_to_context_menu(self.listView, ':/system/system_live.png', "&Show Live", self.onBibleLiveClick))
|
||||
self.listView.addAction(self.pluginutils.add_to_context_menu(self.listView, ':/system/system_add.png', "&Add to Service", self.onBibleAddClick))
|
||||
self.BibleListView.addAction(self.add_to_context_menu(self.BibleListView, ':/system/system_preview.png', "&Preview Verse", self.onBiblePreviewClick))
|
||||
self.BibleListView.addAction(self.add_to_context_menu(self.BibleListView, ':/system/system_live.png', "&Show Live", self.onBibleLiveClick))
|
||||
self.BibleListView.addAction(self.add_to_context_menu(self.BibleListView, ':/system/system_add.png', "&Add to Service", self.onBibleAddClick))
|
||||
return self.MediaManagerItem
|
||||
|
||||
def add_import_menu_item(self, import_menu):
|
||||
@ -241,21 +249,19 @@ class BiblePlugin(Plugin):
|
||||
pass
|
||||
|
||||
def _initialise_form(self):
|
||||
bibles = self.biblemanager.get_bibles()
|
||||
bibles = self.biblemanager.get_bibles("full")
|
||||
self.QuickSearchComboBox.addItem("Text Search")
|
||||
self.QuickSearchComboBox.addItem("Verse Search")
|
||||
first = True
|
||||
for b in bibles: # load bibles into the combo boxes
|
||||
self.QuickVersionComboBox.addItem(b)
|
||||
|
||||
bibles = self.biblemanager.get_bibles("partial") # Without HTTP
|
||||
first = True
|
||||
for b in bibles: # load bibles into the combo boxes
|
||||
self.AdvancedVersionComboBox.addItem(b)
|
||||
if first:
|
||||
first = False
|
||||
self._initialise_bible(b) # use the fist bible as the trigger
|
||||
|
||||
def _initialise_bible(self, bible):
|
||||
log.debug("_initialise_bible %s ", bible)
|
||||
self._initialise_bible_quick(bible)
|
||||
self._initialise_bible_advanced(bible)
|
||||
self._initialise_bible_advanced(b) # use the first bible as the trigger
|
||||
|
||||
def _initialise_bible_advanced(self, bible):
|
||||
log.debug("_initialise_bible_advanced %s ", bible)
|
||||
@ -318,7 +324,7 @@ class BiblePlugin(Plugin):
|
||||
versefrom = int(self.AdvancedFromVerse.currentText())
|
||||
verseto = int(self.AdvancedToVerse.currentText())
|
||||
self.searchresults = self.biblemanager.get_verse_text(bible, book, chapfrom, chapto, versefrom, verseto)
|
||||
self._display_results()
|
||||
self._display_results(bible)
|
||||
|
||||
def onQuickSearchButton(self):
|
||||
self.log.debug("onQuickSearchButton")
|
||||
@ -333,15 +339,24 @@ class BiblePlugin(Plugin):
|
||||
def _search_text(self, bible, text):
|
||||
self.log.debug("_search Text %s,%s", bible, text)
|
||||
self.searchresults = self.biblemanager.get_verse_from_text(bible,text)
|
||||
self._display_results()
|
||||
self._display_results(bible)
|
||||
|
||||
def _verse_search(self):
|
||||
self._display_results()
|
||||
# def _verse_search(self):
|
||||
# self._display_results()
|
||||
|
||||
def _display_results(self):
|
||||
self.listView.clear() # clear the results
|
||||
def _display_results(self, bible):
|
||||
self.BibleListView.clear() # clear the results
|
||||
self.BibleListView.setRowCount(0)
|
||||
self.BibleListView.setHorizontalHeaderLabels(QtCore.QStringList(["","Bible Verses"]))
|
||||
for book, chap, vse , txt in self.searchresults:
|
||||
self.listView.addItem(book + " " +str(chap) + ":"+ str(vse))
|
||||
c = self.BibleListView.rowCount()
|
||||
self.BibleListView.setRowCount(c+1)
|
||||
twi = QtGui.QTableWidgetItem(str(bible))
|
||||
self.BibleListView.setItem(c , 0, twi)
|
||||
twi = QtGui.QTableWidgetItem(str(book + " " +str(chap) + ":"+ str(vse)))
|
||||
self.BibleListView.setItem(c , 1, twi)
|
||||
self.BibleListView.setRowHeight(c, 20)
|
||||
|
||||
|
||||
def _initialise_bible_quick(self, bible): # not sure if needed yet!
|
||||
a=1
|
||||
|
@ -17,13 +17,13 @@ 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
|
||||
Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
"""
|
||||
|
||||
import os
|
||||
from PyQt4 import QtCore, QtGui
|
||||
from openlp.core.resources import *
|
||||
from openlp.core.lib import Plugin, MediaManagerItem
|
||||
from openlp.core.lib import Plugin, PluginUtils, MediaManagerItem
|
||||
#from forms import EditSongForm
|
||||
|
||||
class ImagePlugin(Plugin):
|
||||
class ImagePlugin(Plugin, PluginUtils):
|
||||
def __init__(self):
|
||||
# Call the parent constructor
|
||||
Plugin.__init__(self, 'Images', '1.9.0')
|
||||
@ -59,25 +59,54 @@ class ImagePlugin(Plugin):
|
||||
'Add the selected image(s) to the service', ':/system/system_add.png',
|
||||
self.onImageAddClick, 'ImageAddItem')
|
||||
## Add the songlist widget ##
|
||||
self.ImageListView = QtGui.QTableWidget()
|
||||
self.ImageListView.setColumnCount(2)
|
||||
self.ImageListView.setColumnHidden(0, True)
|
||||
self.ImageListView.setColumnWidth(1, 275)
|
||||
self.ImageListView.setShowGrid(False)
|
||||
self.ImageListView.setSortingEnabled(False)
|
||||
self.ImageListView.setAlternatingRowColors(True)
|
||||
self.ImageListView.setHorizontalHeaderLabels(QtCore.QStringList(["","Name"]))
|
||||
self.ImageListView.setAlternatingRowColors(True)
|
||||
self.ImageListView.setGeometry(QtCore.QRect(10, 100, 256, 591))
|
||||
self.ImageListView.setObjectName("ImageListView")
|
||||
self.MediaManagerItem.PageLayout.addWidget(self.ImageListView)
|
||||
|
||||
#define and add the context menu
|
||||
self.ImageListView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
|
||||
|
||||
self.listView = QtGui.QListWidget()
|
||||
self.listView.setGeometry(QtCore.QRect(10, 100, 256, 591))
|
||||
self.listView.setObjectName("listView")
|
||||
self.MediaManagerItem.PageLayout.addWidget(self.listView)
|
||||
self.ImageListView.addAction(self.add_to_context_menu(self.ImageListView, ':/system/system_preview.png', "&Preview Image", self.onImagePreviewClick))
|
||||
self.ImageListView.addAction(self.add_to_context_menu(self.ImageListView, ':/system/system_live.png', "&Show Live", self.onImageLiveClick))
|
||||
self.ImageListView.addAction(self.add_to_context_menu(self.ImageListView, ':/system/system_add.png', "&Add to Service", self.onImageAddClick))
|
||||
|
||||
return self.MediaManagerItem
|
||||
|
||||
def initialise(self):
|
||||
self.onImagesNewClick()
|
||||
list = self._load_display_list()
|
||||
self._load_image_list(list)
|
||||
|
||||
def onImagesNewClick(self):
|
||||
files = self.config.get_files(u'jpg,gif,png,bmp')
|
||||
self.listView.clear()
|
||||
for f in files:
|
||||
self.listView.addItem(f)
|
||||
files = self.MediaManagerItem.getInputFiles("Select Image(s)", self._get_last_dir(), "Images (*.jpg *.gif *.png *.bmp)")
|
||||
if len(files) > 0:
|
||||
self._load_image_list(files)
|
||||
self._save_last_directory(files[0])
|
||||
self._save_display_list(self.ImageListView)
|
||||
|
||||
def _load_image_list(self, list):
|
||||
for f in list:
|
||||
fl , nm = os.path.split(str(f))
|
||||
c = self.ImageListView.rowCount()
|
||||
self.ImageListView.setRowCount(c+1)
|
||||
twi = QtGui.QTableWidgetItem(str(f))
|
||||
self.ImageListView.setItem(c , 0, twi)
|
||||
twi = QtGui.QTableWidgetItem(str(nm))
|
||||
self.ImageListView.setItem(c , 1, twi)
|
||||
self.ImageListView.setRowHeight(c, 20)
|
||||
|
||||
def onImageDeleteClick(self):
|
||||
pass
|
||||
cr = self.ImageListView.currentRow()
|
||||
self.ImageListView.removeRow(int(cr))
|
||||
self._save_display_list(self.ImageListView)
|
||||
|
||||
def onImagePreviewClick(self):
|
||||
pass
|
||||
|
@ -80,7 +80,7 @@ class PresentationPlugin(Plugin, PluginUtils):
|
||||
|
||||
self.PresentationListView.addAction(self.add_to_context_menu(self.PresentationListView, ':/system/system_preview.png', "&Preview Presentation", self.onPresentationPreviewClick))
|
||||
self.PresentationListView.addAction(self.add_to_context_menu(self.PresentationListView, ':/system/system_live.png', "&Show Live", self.onPresentationLiveClick))
|
||||
self.PresentationListView.addAction(self.pluginutils.add_to_context_menu(self.PresentationListView, ':/system/system_add.png', "&Add to Service", self.onPresentationAddClick))
|
||||
self.PresentationListView.addAction(self.add_to_context_menu(self.PresentationListView, ':/system/system_add.png', "&Add to Service", self.onPresentationAddClick))
|
||||
|
||||
return self.MediaManagerItem
|
||||
|
||||
|
@ -17,13 +17,13 @@ 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
|
||||
Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
"""
|
||||
|
||||
import os
|
||||
from PyQt4 import QtCore, QtGui
|
||||
|
||||
from openlp.core.resources import *
|
||||
from openlp.core.lib import Plugin, MediaManagerItem
|
||||
from openlp.core.lib import Plugin,PluginUtils, MediaManagerItem
|
||||
|
||||
class VideoPlugin(Plugin):
|
||||
class VideoPlugin(Plugin, PluginUtils):
|
||||
def __init__(self):
|
||||
# Call the parent constructor
|
||||
Plugin.__init__(self, 'Videos', '1.9.0')
|
||||
@ -40,8 +40,8 @@ class VideoPlugin(Plugin):
|
||||
self.MediaManagerItem.addToolbar()
|
||||
# Create buttons for the toolbar
|
||||
## New Song Button ##
|
||||
self.MediaManagerItem.addToolbarButton('Load Video', 'Load videos into openlp.org',
|
||||
':/videos/video_load.png', self.onVideoLoadClick, 'VideoLoadItem')
|
||||
self.MediaManagerItem.addToolbarButton('New Video', 'Load videos into openlp.org',
|
||||
':/videos/video_load.png', self.onVideoNewClick, 'VideoNewItem')
|
||||
## Delete Song Button ##
|
||||
self.MediaManagerItem.addToolbarButton('Delete Video', 'Delete the selected video',
|
||||
':/videos/video_delete.png', self.onVideoDeleteClick, 'VideoDeleteItem')
|
||||
@ -57,26 +57,54 @@ class VideoPlugin(Plugin):
|
||||
self.MediaManagerItem.addToolbarButton('Add Video To Service',
|
||||
'Add the selected video(s) to the service', ':/system/system_add.png',
|
||||
self.onVideoAddClick, 'VideoAddItem')
|
||||
## Add the songlist widget ##
|
||||
|
||||
self.listView = QtGui.QListWidget()
|
||||
self.listView.setGeometry(QtCore.QRect(10, 100, 256, 591))
|
||||
self.listView.setObjectName("listView")
|
||||
self.MediaManagerItem.PageLayout.addWidget(self.listView)
|
||||
## Add the videolist widget ##
|
||||
self.VideoListView = QtGui.QTableWidget()
|
||||
self.VideoListView.setColumnCount(2)
|
||||
self.VideoListView.setColumnHidden(0, True)
|
||||
self.VideoListView.setColumnWidth(1, 275)
|
||||
self.VideoListView.setShowGrid(False)
|
||||
self.VideoListView.setSortingEnabled(False)
|
||||
self.VideoListView.setAlternatingRowColors(True)
|
||||
self.VideoListView.setHorizontalHeaderLabels(QtCore.QStringList(["","Name"]))
|
||||
self.VideoListView.setAlternatingRowColors(True)
|
||||
self.VideoListView.setGeometry(QtCore.QRect(10, 100, 256, 591))
|
||||
self.VideoListView.setObjectName("VideoListView")
|
||||
self.MediaManagerItem.PageLayout.addWidget(self.VideoListView)
|
||||
|
||||
#define and add the context menu
|
||||
self.VideoListView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
|
||||
|
||||
self.VideoListView.addAction(self.add_to_context_menu(self.VideoListView, ':/system/system_preview.png', "&Preview Video", self.onVideoPreviewClick))
|
||||
self.VideoListView.addAction(self.add_to_context_menu(self.VideoListView, ':/system/system_live.png', "&Show Live", self.onVideoLiveClick))
|
||||
self.VideoListView.addAction(self.add_to_context_menu(self.VideoListView, ':/system/system_add.png', "&Add to Service", self.onVideoAddClick))
|
||||
return self.MediaManagerItem
|
||||
|
||||
def initialise(self):
|
||||
self.onVideoLoadClick()
|
||||
list = self._load_display_list()
|
||||
self._load_video_list(list)
|
||||
|
||||
def onVideoLoadClick(self):
|
||||
files = self.config.get_files(u'avi,mpeg')
|
||||
self.listView.clear()
|
||||
for f in files:
|
||||
self.listView.addItem(f)
|
||||
def onVideoNewClick(self):
|
||||
files = self.MediaManagerItem.getInputFiles("Select Image(s)", self._get_last_dir(), "Images (*.avi *.mpeg)")
|
||||
if len(files) > 0:
|
||||
self._load_video_list(files)
|
||||
self._save_last_directory(files[0])
|
||||
self._save_display_list(self.VideoListView)
|
||||
|
||||
def _load_video_list(self, list):
|
||||
for f in list:
|
||||
fl , nm = os.path.split(str(f))
|
||||
c = self.VideoListView.rowCount()
|
||||
self.VideoListView.setRowCount(c+1)
|
||||
twi = QtGui.QTableWidgetItem(str(f))
|
||||
self.VideoListView.setItem(c , 0, twi)
|
||||
twi = QtGui.QTableWidgetItem(str(nm))
|
||||
self.VideoListView.setItem(c , 1, twi)
|
||||
self.VideoListView.setRowHeight(c, 20)
|
||||
|
||||
def onVideoDeleteClick(self):
|
||||
pass
|
||||
cr = self.VideoListView.currentRow()
|
||||
self.VideoListView.removeRow(int(cr))
|
||||
self._save_display_list(self.VideoListView)
|
||||
|
||||
def onVideoPreviewClick(self):
|
||||
pass
|
||||
|
Loading…
Reference in New Issue
Block a user