forked from openlp/openlp
145 lines
6.5 KiB
Python
145 lines
6.5 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
###############################################################################
|
|
# OpenLP - Open Source Lyrics Projection #
|
|
# --------------------------------------------------------------------------- #
|
|
# Copyright (c) 2008-2020 OpenLP Developers #
|
|
# --------------------------------------------------------------------------- #
|
|
# 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 #
|
|
###############################################################################
|
|
"""
|
|
The :mod:`~openlp.plugins.planningcenter.PlanningCenterPlugin` module contains
|
|
the Plugin class for the PlanningCenter plugin.
|
|
"""
|
|
import logging
|
|
|
|
from openlp.core.common.i18n import translate
|
|
from openlp.core.common.registry import Registry
|
|
from openlp.core.lib.plugin import Plugin, StringContent
|
|
from openlp.core.lib.ui import create_action
|
|
from openlp.core.state import State
|
|
from openlp.core.ui.icons import UiIcons
|
|
from openlp.plugins.planningcenter.forms.selectplanform import SelectPlanForm
|
|
from openlp.plugins.planningcenter.lib.planningcentertab import PlanningCenterTab
|
|
|
|
log = logging.getLogger(__name__)
|
|
|
|
|
|
class PlanningCenterPlugin(Plugin):
|
|
"""
|
|
This plugin enables the user to import services from Planning Center Online.
|
|
"""
|
|
log.info('PlanningCenter Plugin loaded')
|
|
|
|
def __init__(self):
|
|
"""
|
|
Create and set up the PlanningCenter plugin.
|
|
"""
|
|
super(PlanningCenterPlugin, self).__init__('planningcenter', settings_tab_class=PlanningCenterTab)
|
|
self.planningcenter_form = None
|
|
self.icon = UiIcons().planning_center
|
|
self.icon_path = self.icon
|
|
self.weight = -1
|
|
State().add_service('planning_center', self.weight, is_plugin=True)
|
|
State().update_pre_conditions('planning_center', self.check_pre_conditions())
|
|
|
|
def initialise(self):
|
|
"""
|
|
Initialise the plugin
|
|
"""
|
|
log.info('PlanningCenter Initialising')
|
|
super(PlanningCenterPlugin, self).initialise()
|
|
self.import_planning_center.setVisible(True)
|
|
|
|
def add_import_menu_item(self, import_menu):
|
|
"""
|
|
Add "PlanningCenter Service" to the **Import** menu.
|
|
|
|
:param import_menu: The actual **Import** menu item, so that your
|
|
actions can use it as their parent.
|
|
"""
|
|
self.import_planning_center = create_action(import_menu, 'import_planning_center',
|
|
text=translate('PlanningCenterPlugin', 'Planning Center Service'),
|
|
visible=False,
|
|
statustip=translate('PlanningCenterPlugin',
|
|
'Import Planning Center Service Plan \
|
|
from Planning Center Online.'),
|
|
triggers=self.on_import_planning_center_triggered
|
|
)
|
|
import_menu.addAction(self.import_planning_center)
|
|
|
|
def on_import_planning_center_triggered(self):
|
|
"""
|
|
Run the PlanningCenter importer.
|
|
"""
|
|
# Determine which dialog to show based on whether the auth values are set yet
|
|
self.application_id = self.settings.value("planningcenter/application_id")
|
|
self.secret = self.settings.value("planningcenter/secret")
|
|
if len(self.application_id) == 0 or len(self.secret) == 0:
|
|
self.planningcenter_form = Registry().get('settings_form')
|
|
self.planningcenter_form.exec(translate('PlanningCenterPlugin', 'PlanningCenter'))
|
|
else:
|
|
self.planningcenter_form = SelectPlanForm(Registry().get('main_window'), self)
|
|
self.planningcenter_form.exec()
|
|
|
|
@staticmethod
|
|
def about():
|
|
"""
|
|
Provides information for the plugin manager to display.
|
|
|
|
:return: A translatable string with some basic information about the
|
|
PlanningCenter plugin
|
|
"""
|
|
return translate('PlanningCenterPlugin', '<strong>PlanningCenter Plugin</strong>'
|
|
'<br />The planningcenter plugin provides an interface to import \
|
|
service plans from the Planning Center Online v2 API.')
|
|
|
|
def set_plugin_text_strings(self):
|
|
"""
|
|
Called to define all translatable texts of the plugin
|
|
"""
|
|
# Name PluginList
|
|
self.text_strings[StringContent.Name] = {
|
|
'singular': translate('PlanningCenterPlugin', 'PlanningCenter',
|
|
'name singular'),
|
|
'plural': translate('PlanningCenterPlugin', 'PlanningCenter',
|
|
'name plural')
|
|
}
|
|
# Name for MediaDockManager, SettingsManager
|
|
self.text_strings[StringContent.VisibleName] = {
|
|
'title': translate('PlanningCenterPlugin', 'PlanningCenter',
|
|
'container title')
|
|
}
|
|
# Middle Header Bar
|
|
tooltips = {
|
|
'load': '',
|
|
'import': translate('PlanningCenterPlugin', 'Import All Plan Items \
|
|
into Current Service'),
|
|
'new': '',
|
|
'edit': '',
|
|
'delete': '',
|
|
'preview': '',
|
|
'live': '',
|
|
'service': '',
|
|
}
|
|
self.set_plugin_ui_text_strings(tooltips)
|
|
|
|
def finalise(self):
|
|
"""
|
|
Tidy up on exit
|
|
"""
|
|
log.info('PlanningCenter Finalising')
|
|
self.import_planning_center.setVisible(False)
|
|
super(PlanningCenterPlugin, self).finalise()
|