diff --git a/openlp/core/lib/pluginmanager.py b/openlp/core/lib/pluginmanager.py index fa4e36c32..26442cd82 100644 --- a/openlp/core/lib/pluginmanager.py +++ b/openlp/core/lib/pluginmanager.py @@ -86,18 +86,22 @@ class PluginManager(object): __import__(modulename, globals(), locals(), []) except ImportError, e: log.error(u'Failed to import module %s on path %s for reason %s', modulename, path, e.args[0]) - self.plugin_classes = Plugin.__subclasses__() + plugin_classes = Plugin.__subclasses__() self.plugins = [] + self.plugin_list=[] plugin_objects = [] - for p in self.plugin_classes: + for p in plugin_classes: try: plugin = p(self.plugin_helpers) log.debug(u'loaded plugin %s with helpers', unicode(p)) log.debug(u'Plugin: %s', unicode(p)) + pList = {u'name': plugin.name, u'version':plugin.version, u'status': u'Inactive'} if plugin.check_pre_conditions(): log.debug(u'Appending %s ', unicode(p)) plugin_objects.append(plugin) eventmanager.register(plugin) + pList[u'status'] = u'Active' + self.plugin_list.append(pList) except TypeError: log.error(u'loaded plugin %s has no helpers', unicode(p)) self.plugins = sorted(plugin_objects, self.order_by_weight) diff --git a/openlp/core/ui/__init__.py b/openlp/core/ui/__init__.py index 10b046748..7f8cc54eb 100644 --- a/openlp/core/ui/__init__.py +++ b/openlp/core/ui/__init__.py @@ -27,6 +27,7 @@ from generaltab import GeneralTab from themestab import ThemesTab from about import AboutForm from alertform import AlertForm +from plugindialoglistform import PluginForm from settingsform import SettingsForm from servicemanager import ServiceManager from thememanager import ThemeManager diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index fe5fc14ab..350cf5f4c 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -23,7 +23,8 @@ import logging from PyQt4 import QtCore, QtGui from openlp.core.ui import AboutForm, SettingsForm, AlertForm, \ - ServiceManager, ThemeManager, MainDisplay, SlideController + ServiceManager, ThemeManager, MainDisplay, SlideController, \ + PluginForm from openlp.core.lib import translate, Plugin, MediaManagerItem, \ SettingsTab, EventManager, RenderManager, PluginConfig, \ SettingsManager, PluginManager, EventType @@ -203,6 +204,12 @@ class Ui_MainWindow(object): QtGui.QIcon.Normal, QtGui.QIcon.Off) self.ToolsAlertItem.setIcon(AlertIcon) self.ToolsAlertItem.setObjectName(u'ToolsAlertItem') + self.PluginItem = QtGui.QAction(MainWindow) + PluginIcon = QtGui.QIcon() + PluginIcon.addPixmap(QtGui.QPixmap(u':/tools/tools_alert.png'), + QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.PluginItem.setIcon(AlertIcon) + self.PluginItem.setObjectName(u'PluginItem') self.HelpDocumentationItem = QtGui.QAction(MainWindow) ContentsIcon = QtGui.QIcon() ContentsIcon.addPixmap(QtGui.QPixmap(u':/system/system_help_contents.png'), @@ -264,6 +271,7 @@ class Ui_MainWindow(object): self.OptionsMenu.addSeparator() self.OptionsMenu.addAction(self.OptionsSettingsItem) self.ToolsMenu.addAction(self.ToolsAlertItem) + self.ToolsMenu.addAction(self.PluginItem) self.ToolsMenu.addSeparator() self.ToolsMenu.addAction(self.ToolsAddToolItem) self.HelpMenu.addAction(self.HelpDocumentationItem) @@ -362,6 +370,10 @@ class Ui_MainWindow(object): self.ToolsAlertItem.setStatusTip( translate(u'mainWindow', u'Show an alert message')) self.ToolsAlertItem.setShortcut(translate(u'mainWindow', u'F7')) + self.PluginItem.setText(translate(u'mainWindow', u'&Plugin')) + self.PluginItem.setStatusTip( + translate(u'mainWindow', u'List the Plugins')) + self.PluginItem.setShortcut(translate(u'mainWindow', u'Alt+F7')) self.HelpDocumentationItem.setText( translate(u'mainWindow', u'&User Guide')) self.HelpAboutItem.setText(translate(u'mainWindow', u'&About')) @@ -408,6 +420,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): self.mainDisplay = MainDisplay(self, screens) self.generalConfig = PluginConfig(u'General') self.alertForm = AlertForm(self) + self.pluginForm = PluginForm(self) self.aboutForm = AboutForm() self.settingsForm = SettingsForm(self.screenList, self) # Set up the path with plugins @@ -441,6 +454,8 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): QtCore.SIGNAL(u'triggered()'), self.onHelpAboutItemClicked) QtCore.QObject.connect(self.ToolsAlertItem, QtCore.SIGNAL(u'triggered()'), self.onToolsAlertItemClicked) + QtCore.QObject.connect(self.PluginItem, + QtCore.SIGNAL(u'triggered()'), self.onPluginItemClicked) QtCore.QObject.connect(self.OptionsSettingsItem, QtCore.SIGNAL(u'triggered()'), self.onOptionsSettingsItemClicked) #warning cyclic dependency @@ -514,6 +529,13 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): """ self.alertForm.exec_() + def onPluginItemClicked(self): + """ + Show the Plugin form + """ + self.pluginForm.load() + self.pluginForm.exec_() + def onOptionsSettingsItemClicked(self): """ Show the Settings dialog diff --git a/openlp/core/ui/plugindialoglistform.py b/openlp/core/ui/plugindialoglistform.py new file mode 100644 index 000000000..fc0844600 --- /dev/null +++ b/openlp/core/ui/plugindialoglistform.py @@ -0,0 +1,76 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'plugindialoglistform.ui' +# +# Created: Thu Aug 13 05:52:06 2009 +# by: PyQt4 UI code generator 4.5.4 +# +# WARNING! All changes made in this file will be lost! + +import logging +from PyQt4 import QtCore, QtGui +from openlp.core.lib import translate + +class PluginForm(QtGui.QDialog): + global log + log = logging.getLogger(u'PluginForm') + + def __init__(self, parent=None): + QtGui.QDialog.__init__(self, None) + self.parent = parent + self.setupUi(self) + log.debug(u'Defined') + + def setupUi(self, PluginForm): + PluginForm.setObjectName(u'PluginForm') + PluginForm.resize(400, 393) + self.PluginViewList = QtGui.QTableWidget(PluginForm) + self.PluginViewList.setGeometry(QtCore.QRect(20, 10, 371, 331)) + self.PluginViewList.setObjectName(u'PluginViewList') + self.PluginViewList.setShowGrid(False) + self.PluginViewList.setGridStyle(QtCore.Qt.SolidLine) + self.PluginViewList.setSortingEnabled(False) + self.PluginViewList.setColumnCount(3) + item = QtGui.QTableWidgetItem() + self.PluginViewList.setHorizontalHeaderItem(0, item) + item = QtGui.QTableWidgetItem() + self.PluginViewList.setHorizontalHeaderItem(1, item) + item = QtGui.QTableWidgetItem() + self.PluginViewList.setHorizontalHeaderItem(2, item) + self.PluginViewList.horizontalHeader().setVisible(True) + self.PluginViewList.verticalHeader().setVisible(False) + self.ButtonBox = QtGui.QDialogButtonBox(PluginForm) + self.ButtonBox.setGeometry(QtCore.QRect(220, 350, 170, 25)) + self.ButtonBox.setStandardButtons(QtGui.QDialogButtonBox.Ok) + self.ButtonBox.setObjectName(u'ButtonBox') + + self.retranslateUi(PluginForm) + QtCore.QObject.connect(self.ButtonBox, QtCore.SIGNAL(u'accepted()'), PluginForm.close) + QtCore.QMetaObject.connectSlotsByName(PluginForm) + + def retranslateUi(self, PluginForm): + PluginForm.setWindowTitle(translate(u'PluginForm', u'Plugin list')) + self.PluginViewList.horizontalHeaderItem(0).setText(translate(u'PluginForm', u'Name')) + self.PluginViewList.horizontalHeaderItem(1).setText(translate(u'PluginForm', u'Version')) + self.PluginViewList.horizontalHeaderItem(2).setText(translate(u'PluginForm', u'Status')) + + def load(self): + """ + Load the plugin details into the screen + """ + for plugin in self.parent.plugin_manager.plugin_list: + row = self.PluginViewList.rowCount() + self.PluginViewList.setRowCount(row + 1) + item1 = QtGui.QTableWidgetItem(plugin[u'name']) + item1.setTextAlignment(QtCore.Qt.AlignVCenter) + item2 = QtGui.QTableWidgetItem(plugin[u'version']) + item2.setTextAlignment(QtCore.Qt.AlignVCenter) + item3 = QtGui.QTableWidgetItem(translate(u'PluginForm', plugin[u'status'])) + item3.setTextAlignment(QtCore.Qt.AlignVCenter) + self.PluginViewList.setItem(row, 0, item1) + self.PluginViewList.setItem(row, 1, item2) + self.PluginViewList.setItem(row, 2, item3) + self.PluginViewList.setRowHeight(row, 15) + + + diff --git a/openlp/plugins/presentations/lib/__init__.py b/openlp/plugins/presentations/lib/__init__.py index 627f40e36..4eb846020 100644 --- a/openlp/plugins/presentations/lib/__init__.py +++ b/openlp/plugins/presentations/lib/__init__.py @@ -19,6 +19,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA """ from mediaitem import PresentationMediaItem from presentationtab import PresentationTab -from impressslidecontroller import impressToolbar +from impresscontroller import impressController -__all__ = ['PresentationMediaItem', 'PresentationTab', 'impressToolbar'] +__all__ = ['PresentationMediaItem', 'PresentationTab', 'impressController'] diff --git a/openlp/plugins/presentations/lib/presentationtab.py b/openlp/plugins/presentations/lib/presentationtab.py index 911638970..b343de0d8 100644 --- a/openlp/plugins/presentations/lib/presentationtab.py +++ b/openlp/plugins/presentations/lib/presentationtab.py @@ -20,14 +20,14 @@ Place, Suite 330, Boston, MA 02111-1307 USA from PyQt4 import Qt, QtCore, QtGui -from openlp.core.lib import SettingsTab, translate +from openlp.core.lib import SettingsTab, translate, str_to_bool class PresentationTab(SettingsTab): """ PresentationsTab is the Presentations settings tab in the settings dialog. """ def __init__(self): - SettingsTab.__init__(self, translate(u'PresentationTab', u'Presentation'), u'Presentation') + SettingsTab.__init__(self, translate(u'PresentationTab', u'Presentation'), u'Presentations') def setupUi(self): self.setObjectName(u'PresentationTab') @@ -41,7 +41,6 @@ class PresentationTab(SettingsTab): self.PresentationLeftLayout.setObjectName(u'PresentationLeftLayout') self.PresentationLeftLayout.setSpacing(8) self.PresentationLeftLayout.setMargin(0) - self.VerseDisplayGroupBox = QtGui.QGroupBox(self) self.VerseDisplayGroupBox.setObjectName(u'VerseDisplayGroupBox') self.VerseDisplayLayout = QtGui.QGridLayout(self.VerseDisplayGroupBox) @@ -53,36 +52,25 @@ class PresentationTab(SettingsTab): self.VerseTypeLayout.setSpacing(8) self.VerseTypeLayout.setMargin(0) self.VerseTypeLayout.setObjectName(u'VerseTypeLayout') - self.PowerpointCheckBox = QtGui.QCheckBox(self.VerseDisplayGroupBox) + self.PowerpointCheckBox.setTristate(False) self.PowerpointCheckBox.setObjectName(u'PowerpointCheckBox') self.VerseDisplayLayout.addWidget(self.PowerpointCheckBox, 0, 0, 1, 1) - - self.PowerpointPath = QtGui.QLineEdit(self.VerseDisplayGroupBox) - self.PowerpointPath.setObjectName(u'PowerpointPath') - self.VerseDisplayLayout.addWidget(self.PowerpointPath, 1, 0, 1, 1) - self.ImpressCheckBox = QtGui.QCheckBox(self.VerseDisplayGroupBox) + self.ImpressCheckBox.setTristate(False) self.ImpressCheckBox.setObjectName(u'ImpressCheckBox') self.VerseDisplayLayout.addWidget(self.ImpressCheckBox, 2, 0, 1, 1) - - self.ImpressPath = QtGui.QLineEdit(self.VerseDisplayGroupBox) - self.ImpressPath.setObjectName(u'ImpressPath') - self.VerseDisplayLayout.addWidget(self.ImpressPath, 3, 0, 1, 1) - self.PresentationThemeWidget = QtGui.QWidget(self.VerseDisplayGroupBox) self.PresentationThemeWidget.setObjectName(u'PresentationThemeWidget') self.PresentationThemeLayout = QtGui.QHBoxLayout(self.PresentationThemeWidget) self.PresentationThemeLayout.setSpacing(8) self.PresentationThemeLayout.setMargin(0) self.PresentationThemeLayout.setObjectName(u'PresentationThemeLayout') - self.PresentationLeftLayout.addWidget(self.VerseDisplayGroupBox) self.PresentationLeftSpacer = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.PresentationLeftLayout.addItem(self.PresentationLeftSpacer) self.PresentationLayout.addWidget(self.PresentationLeftWidget) - self.PresentationRightWidget = QtGui.QWidget(self) self.PresentationRightWidget.setObjectName(u'PresentationRightWidget') self.PresentationRightLayout = QtGui.QVBoxLayout(self.PresentationRightWidget) @@ -94,42 +82,15 @@ class PresentationTab(SettingsTab): self.PresentationRightLayout.addItem(self.PresentationRightSpacer) self.PresentationLayout.addWidget(self.PresentationRightWidget) - # Signals and slots - #QtCore.QObject.connect(self.NewChaptersCheckBox, - # QtCore.SIGNAL(u'stateChanged(int)'), self.onNewChaptersCheckBoxChanged) - def retranslateUi(self): self.PowerpointCheckBox.setText(translate(u'PresentationTab', 'Powerpoint available:')) self.ImpressCheckBox.setText(translate(u'PresentationTab', 'Impress available:')) - self.PowerpointPath.setText(u'powerpoint.exe ') - self.ImpressPath.setText(u'openoffice.org -nologo -show ') - - def onNewChaptersCheckBoxChanged(self): - check_state = self.NewChaptersCheckBox.checkState() - self.show_new_chapters = False - if check_state == 2: # we have a set value convert to True/False - self.show_new_chapters = True - def load(self): - pass -# self.paragraph_style = (self.config.get_config(u'paragraph style', u'True')) -# self.show_new_chapters = (self.config.get_config(u'display new chapter', u"False')) -# self.display_style = int(self.config.get_config(u'display brackets', u'0')) -# self.Presentation_theme = int(self.config.get_config(u'Presentation theme', u'0')) -# self.Presentation_search = (self.config.get_config(u'search as type', u'True')) -# if self.paragraph_style: -# self.ParagraphRadioButton.setChecked(True) -# else: -# self.VerseRadioButton.setChecked(True) -# self.NewChaptersCheckBox.setChecked(self.show_new_chapters) -# self.DisplayStyleComboBox.setCurrentIndex(self.display_style) -# self.PresentationSearchCheckBox.setChecked(self.Presentation_search) + self.PowerpointCheckBox.setChecked(int(self.config.get_config(u'Powerpoint', 0))) + self.ImpressCheckBox.setChecked(int(self.config.get_config(u'Impress', 0))) def save(self): - pass -# self.config.set_config(u'paragraph style', unicode(self.paragraph_style)) -# self.config.set_config(u'display new chapter', unicode(self.show_new_chapters)) -# self.config.set_config(u'display brackets', unicode(self.display_style)) -# self.config.set_config(u'search as type', unicode(self.Presentation_search)) -# self.config.set_config(u'Presentation theme', unicode(self.Presentation_theme)) \ No newline at end of file + self.config.set_config(u'Powerpoint', unicode(self.PowerpointCheckBox.checkState())) + self.config.set_config(u'Impress', unicode(self.ImpressCheckBox.checkState())) + print self.PowerpointCheckBox.checkState(), unicode(self.PowerpointCheckBox.checkState()) diff --git a/openlp/plugins/presentations/presentationplugin.py b/openlp/plugins/presentations/presentationplugin.py index 8a03aa255..8c78e131f 100644 --- a/openlp/plugins/presentations/presentationplugin.py +++ b/openlp/plugins/presentations/presentationplugin.py @@ -24,7 +24,7 @@ import logging from PyQt4 import QtCore, QtGui from openlp.core.lib import Plugin, MediaManagerItem -from openlp.plugins.presentations.lib import PresentationMediaItem, PresentationTab, impressToolbar +from openlp.plugins.presentations.lib import PresentationMediaItem, PresentationTab, impressController class PresentationPlugin(Plugin): @@ -66,17 +66,17 @@ class PresentationPlugin(Plugin): If Not do not install the plugin. """ log.debug('check_pre_conditions') - impress = True - try: - #Check to see if we have uno installed - import uno - #openoffice = impressToolbar() - self.registerControllers(u'Impress', None) - except: - pass + + if int(self.config.get_config(u'Powerpoint', 0)) == 2: + try: + #Check to see if we have uno installed + import uno + #openoffice = impressController() + self.registerControllers(u'Impress', None) + except: + pass #If we have no controllers disable plugin if len(self.controllers) > 0: return True else: return False -# return self.openoffice.checkOoPid() diff --git a/openlp/plugins/remotes/lib/__init__.py b/openlp/plugins/remotes/lib/__init__.py index 5581e75fe..a35185ad9 100644 --- a/openlp/plugins/remotes/lib/__init__.py +++ b/openlp/plugins/remotes/lib/__init__.py @@ -18,4 +18,4 @@ this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA """ -from mediaitem import RemoteMediaItem +from remotetab import RemoteTab diff --git a/openlp/plugins/remotes/lib/mediaitem.py b/openlp/plugins/remotes/lib/mediaitem.py deleted file mode 100644 index f66dd6189..000000000 --- a/openlp/plugins/remotes/lib/mediaitem.py +++ /dev/null @@ -1,215 +0,0 @@ -# -*- coding: utf-8 -*- -# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 -""" -OpenLP - Open Source Lyrics Projection -Copyright (c) 2008 Raoul Snyman -Portions copyright (c) 2008-2009 Martin Thompson, Tim Bentley - -This program is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free Software -Foundation; version 2 of the License. - -This program is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A -PARTICULAR PURPOSE. See the GNU General Public License for more details. - -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 logging - -from PyQt4 import QtCore, QtGui - -from openlp.core.lib import MediaManagerItem, SongXMLParser, ServiceItem, translate, BaseListWithDnD - -class RemoteListView(BaseListWithDnD): - def __init__(self, parent=None): - self.PluginName = u'Remote' - BaseListWithDnD.__init__(self, parent) - -class RemoteMediaItem(MediaManagerItem): - """ - This is the custom media manager item for Custom Slides. - """ - global log - log=logging.getLogger(u'RemoteMediaItem') - log.info(u'Remote Media Item loaded') - - def __init__(self, parent, icon, title): - MediaManagerItem.__init__(self, parent, icon, title) - self.parent = parent - self.TranslationContext = u'RemotesPlugin' - self.PluginTextShort = u'Remotes' - self.ConfigSection = u'Remotes' - self.ListViewWithDnD_class = RemoteListView - MediaManagerItem.__init__(self, parent, icon, title) - - def initialise(self): - pass - - def setupUi(self): - # Add a toolbar - self.addToolbar() -# # Create buttons for the toolbar -# ## New Custom Button ## -# self.addToolbarButton( -# translate(u'CustomMediaItem',u'New Custom Item'), -# translate(u'CustomMediaItem',u'Add a new Custom Item'), -# u':/custom/custom_new.png', self.onCustomNewClick, u'CustomNewItem') -# ## Edit Custom Button ## -# self.addToolbarButton( -# translate(u'CustomMediaItem',u'Edit Custom Item'), -# translate(u'CustomMediaItem',u'Edit the selected Custom Item'), -# u':/custom/custom_edit.png', self.onCustomEditClick, u'CustomEditItem') -# ## Delete Custom Button ## -# self.addToolbarButton( -# translate(u'CustomMediaItem',u'Delete Custom Item'), -# translate(u'CustomMediaItem',u'Delete the selected Custom Item'), -# u':/custom/custom_delete.png', self.onCustomDeleteClick, u'CustomDeleteItem') -# ## Separator Line ## -# self.addToolbarSeparator() -# ## Preview Custom Button ## -# self.addToolbarButton( -# translate(u'CustomMediaItem',u'Preview Custom Item'), -# translate(u'CustomMediaItem',u'Preview the selected Custom Item'), -# u':/system/system_preview.png', self.onCustomPreviewClick, u'CustomPreviewItem') -# ## Live Custom Button ## -# self.addToolbarButton( -# translate(u'CustomMediaItem',u'Go Live'), -# translate(u'CustomMediaItem', u'Send the selected Custom live'), -# u':/system/system_live.png', self.onCustomLiveClick, u'CustomLiveItem') -# ## Add Custom Button ## -# self.addToolbarButton( -# translate(u'CustomMediaItem',u'Add Custom To Service'), -# translate(u'CustomMediaItem',u'Add the selected Custom(s) to the service'), -# u':/system/system_add.png', self.onCustomAddClick, u'CustomAddItem') -# # Add the Customlist widget -# self.CustomWidget = QtGui.QWidget(self) -# sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) -# sizePolicy.setHorizontalStretch(0) -# sizePolicy.setVerticalStretch(0) -# sizePolicy.setHeightForWidth(self.CustomWidget.sizePolicy().hasHeightForWidth()) -# self.CustomWidget.setSizePolicy(sizePolicy) -# self.CustomWidget.setObjectName(u'CustomWidget') -# # Add the Custom widget to the page layout -# self.PageLayout.addWidget(self.CustomWidget) -# self.CustomListView = CustomList() -# self.CustomListView.setAlternatingRowColors(True) -# self.CustomListData = TextListData() -# self.CustomListView.setModel(self.CustomListData) -# self.CustomListView.setDragEnabled(True) -# self.PageLayout.addWidget(self.CustomListView) -# # Signals -# QtCore.QObject.connect(self.CustomListView, -# QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.onCustomPreviewClick) -# #define and add the context menu -# self.CustomListView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu) -# self.CustomListView.addAction(self.contextMenuAction(self.CustomListView, -# ':/custom/custom_edit.png', translate(u'CustomMediaItem', u'&Edit Custom'), -# self.onCustomEditClick)) -# self.CustomListView.addAction(self.contextMenuSeparator(self.CustomListView)) -# self.CustomListView.addAction(self.contextMenuAction( -# self.CustomListView, ':/system/system_preview.png', -# translate(u'CustomMediaItem',u'&Preview Custom'), self.onCustomPreviewClick)) -# self.CustomListView.addAction(self.contextMenuAction( -# self.CustomListView, ':/system/system_live.png', -# translate(u'CustomMediaItem',u'&Show Live'), self.onCustomLiveClick)) -# self.CustomListView.addAction(self.contextMenuAction( -# self.CustomListView, ':/system/system_add.png', -# translate(u'CustomMediaItem',u'&Add to Service'), self.onCustomAddClick)) - -# def retranslateUi(self): -# self.ClearTextButton.setText(translate(u'CustomMediaItem', u'Clear')) -# self.SearchTextButton.setText(translate(u'CustomMediaItem', u'Search')) - -# def initialise(self): -# self.loadCustomList(self.parent.custommanager.get_all_slides()) -# -# def loadCustomList(self, list): -# self.CustomListData.resetStore() -# for CustomSlide in list: -# self.CustomListData.addRow(CustomSlide.id,CustomSlide.title) -# -# def onClearTextButtonClick(self): -# """ -# Clear the search text. -# """ -# self.SearchTextEdit.clear() -# -# def onSearchTextEditChanged(self, text): -# # only search if > 3 characters -# if len(text) > 3: -# self.onSearchTextButtonClick() -# -# def onSearchTextButtonClick(self): -# search_keywords = str(self.SearchTextEdit.displayText()) -# search_results = [] -# search_type = self.SearchTypeComboBox.currentText() -# search_results = self.Custommanager.search_Custom_lyrics(search_keywords) -# self._display_results(search_results) -# -# def onCustomNewClick(self): -# self.parent.edit_custom_form.loadCustom(0) -# self.parent.edit_custom_form.exec_() -# self.initialise() -# -# def onCustomEditClick(self): -# indexes = self.CustomListView.selectedIndexes() -# for index in indexes: -# self.parent.edit_custom_form.loadCustom(self.CustomListData.getId(index)) -# self.parent.edit_custom_form.exec_() -# self.initialise() -# -# def onCustomDeleteClick(self): -# indexes = self.CustomListView.selectedIndexes() -# for index in indexes: -# id = self.CustomListData.getId(index) -# self.parent.custommanager.delete_custom(id) -# self.CustomListData.deleteRow(index) -# -# def onCustomPreviewClick(self): -# log.debug(u'Custom Preview Requested') -# service_item = ServiceItem(self.parent) -# service_item.addIcon(u':/media/media_song.png') -# self.generateSlideData(service_item) -# self.parent.preview_controller.addServiceItem(service_item) -# -# def onCustomLiveClick(self): -# log.debug(u'Custom Live Requested') -# service_item = ServiceItem(self.parent) -# service_item.addIcon(u':/media/media_song.png') -# self.generateSlideData(service_item) -# self.parent.live_controller.addServiceItem(service_item) -# -# def onCustomAddClick(self): -# log.debug(u'Custom Add Requested') -# service_item = ServiceItem(self.parent) -# service_item.addIcon(u':/media/media_song.png') -# self.generateSlideData(service_item) -# self.parent.service_manager.addServiceItem(service_item) -# -# def generateSlideData(self, service_item): -# raw_slides =[] -# raw_footer = [] -# slide = None -# theme = None -# indexes = self.CustomListView.selectedIndexes() -# for index in indexes: -# id = self.CustomListData.getId(index) -# customSlide = self.parent.custommanager.get_custom(id) -# title = customSlide.title -# credit = customSlide.credits -# theme = customSlide.theme_name -# if len(theme) is not 0 : -# service_item.theme = theme -# songXML=SongXMLParser(customSlide.text) -# verseList = songXML.get_verses() -# for verse in verseList: -# raw_slides.append(verse[1]) -# raw_footer.append(title + u' '+ credit) -# if theme is not None: -# service_item.title = title -# for slide in raw_slides: -# service_item.add_from_text(slide[:30], slide) -# service_item.raw_footer = raw_footer diff --git a/openlp/plugins/remotes/remoteplugin.py b/openlp/plugins/remotes/remoteplugin.py index 1c37c3c2c..98be53b01 100644 --- a/openlp/plugins/remotes/remoteplugin.py +++ b/openlp/plugins/remotes/remoteplugin.py @@ -23,6 +23,7 @@ import sys from PyQt4 import QtNetwork, QtGui, QtCore from openlp.core.lib import Plugin, Event, EventType +from openlp.plugins.remotes.lib import RemoteTab class RemotesPlugin(Plugin): @@ -35,10 +36,16 @@ class RemotesPlugin(Plugin): Plugin.__init__(self, u'Remotes', u'1.9.0', plugin_helpers) self.weight = -1 self.server = QtNetwork.QUdpSocket() - self.server.bind(4316) + self.server.bind(int(self.config.get_config(u'remote port', 4316))) QtCore.QObject.connect(self.server, QtCore.SIGNAL(u'readyRead()'), self.readData) + def get_settings_tab(self): + """ + Create the settings Tab + """ + return RemoteTab() + def readData(self): log.info(u'Remoted data has arrived') while self.server.hasPendingDatagrams(): diff --git a/resources/forms/plugindialoglistform.ui b/resources/forms/plugindialoglistform.ui new file mode 100644 index 000000000..3e76962bd --- /dev/null +++ b/resources/forms/plugindialoglistform.ui @@ -0,0 +1,108 @@ + + + PluginViewDialog + + + + 0 + 0 + 400 + 393 + + + + Plugin list + + + + + 20 + 10 + 371 + 331 + + + + false + + + Qt::SolidLine + + + 1 + + + true + + + true + + + false + + + + + Name + + + + + Version + + + + + Status + + + + + qqq + + + + + aaa + + + + + ccc + + + + + + + 220 + 350 + 170 + 25 + + + + QDialogButtonBox::Ok + + + + + + + ButtonBox + accepted() + PluginViewDialog + close() + + + 370 + 364 + + + 460 + 367 + + + + +