mirror of https://gitlab.com/openlp/openlp.git
Start disabled presentations only when necessary. Try and shutdown Impress at the end correctly
This commit is contained in:
parent
318484dc29
commit
6a8f54b5f8
|
@ -125,3 +125,9 @@ class SettingsTab(QtGui.QWidget):
|
||||||
|
|
||||||
"""
|
"""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def tabVisible(self):
|
||||||
|
"""
|
||||||
|
Tab has just been made visible to the user
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
|
@ -55,7 +55,7 @@ class Ui_SettingsDialog(object):
|
||||||
QtCore.QMetaObject.connectSlotsByName(settingsDialog)
|
QtCore.QMetaObject.connectSlotsByName(settingsDialog)
|
||||||
QtCore.QObject.connect(self.settingListWidget,
|
QtCore.QObject.connect(self.settingListWidget,
|
||||||
QtCore.SIGNAL(u'currentRowChanged(int)'),
|
QtCore.SIGNAL(u'currentRowChanged(int)'),
|
||||||
self.stackedLayout.setCurrentIndex)
|
self.tabChanged)
|
||||||
|
|
||||||
def retranslateUi(self, settingsDialog):
|
def retranslateUi(self, settingsDialog):
|
||||||
settingsDialog.setWindowTitle(translate('OpenLP.SettingsForm',
|
settingsDialog.setWindowTitle(translate('OpenLP.SettingsForm',
|
||||||
|
|
|
@ -116,3 +116,10 @@ class SettingsForm(QtGui.QDialog, Ui_SettingsDialog):
|
||||||
for plugin in self.plugins:
|
for plugin in self.plugins:
|
||||||
if plugin.settings_tab:
|
if plugin.settings_tab:
|
||||||
plugin.settings_tab.postSetUp()
|
plugin.settings_tab.postSetUp()
|
||||||
|
|
||||||
|
def tabChanged(self, tabIndex):
|
||||||
|
"""
|
||||||
|
A different settings tab is selected
|
||||||
|
"""
|
||||||
|
self.stackedLayout.setCurrentIndex(tabIndex)
|
||||||
|
self.stackedLayout.currentWidget().tabVisible()
|
||||||
|
|
|
@ -184,7 +184,15 @@ class ImpressController(PresentationController):
|
||||||
if not desktop:
|
if not desktop:
|
||||||
return
|
return
|
||||||
docs = desktop.getComponents()
|
docs = desktop.getComponents()
|
||||||
|
cnt = 0
|
||||||
if docs.hasElements():
|
if docs.hasElements():
|
||||||
|
list = docs.createEnumeration()
|
||||||
|
while list.hasMoreElements():
|
||||||
|
doc = list.nextElement()
|
||||||
|
if doc.getImplementationName() != \
|
||||||
|
u'com.sun.star.comp.framework.BackingComp':
|
||||||
|
cnt = cnt + 1
|
||||||
|
if cnt > 0:
|
||||||
log.debug(u'OpenOffice not terminated as docs are still open')
|
log.debug(u'OpenOffice not terminated as docs are still open')
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
|
|
|
@ -378,7 +378,7 @@ class PresentationController(object):
|
||||||
self.name = name
|
self.name = name
|
||||||
self.document_class = document_class
|
self.document_class = document_class
|
||||||
self.settings_section = self.plugin.settingsSection
|
self.settings_section = self.plugin.settingsSection
|
||||||
self.available = self.check_available()
|
self.available = None
|
||||||
self.temp_folder = os.path.join(
|
self.temp_folder = os.path.join(
|
||||||
AppLocation.get_section_data_path(self.settings_section), name)
|
AppLocation.get_section_data_path(self.settings_section), name)
|
||||||
self.thumbnail_folder = os.path.join(
|
self.thumbnail_folder = os.path.join(
|
||||||
|
@ -392,14 +392,19 @@ class PresentationController(object):
|
||||||
"""
|
"""
|
||||||
Return whether the controller is currently enabled
|
Return whether the controller is currently enabled
|
||||||
"""
|
"""
|
||||||
if self.available:
|
if QtCore.QSettings().value(
|
||||||
return QtCore.QSettings().value(
|
self.settings_section + u'/' + self.name,
|
||||||
self.settings_section + u'/' + self.name,
|
QtCore.QVariant(QtCore.Qt.Checked)).toInt()[0] == \
|
||||||
QtCore.QVariant(QtCore.Qt.Checked)).toInt()[0] == \
|
QtCore.Qt.Checked:
|
||||||
QtCore.Qt.Checked
|
return self.is_available()
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
def is_available(self):
|
||||||
|
if self.available is None:
|
||||||
|
self.available = self.check_available()
|
||||||
|
return self.available
|
||||||
|
|
||||||
def check_available(self):
|
def check_available(self):
|
||||||
"""
|
"""
|
||||||
Presentation app is able to run on this machine
|
Presentation app is able to run on this machine
|
||||||
|
|
|
@ -55,7 +55,6 @@ class PresentationTab(SettingsTab):
|
||||||
for key in self.controllers:
|
for key in self.controllers:
|
||||||
controller = self.controllers[key]
|
controller = self.controllers[key]
|
||||||
checkbox = QtGui.QCheckBox(self.ControllersGroupBox)
|
checkbox = QtGui.QCheckBox(self.ControllersGroupBox)
|
||||||
checkbox.setEnabled(controller.available)
|
|
||||||
checkbox.setObjectName(controller.name + u'CheckBox')
|
checkbox.setObjectName(controller.name + u'CheckBox')
|
||||||
self.PresenterCheckboxes[controller.name] = checkbox
|
self.PresenterCheckboxes[controller.name] = checkbox
|
||||||
self.ControllersLayout.addWidget(checkbox)
|
self.ControllersLayout.addWidget(checkbox)
|
||||||
|
@ -81,17 +80,20 @@ class PresentationTab(SettingsTab):
|
||||||
for key in self.controllers:
|
for key in self.controllers:
|
||||||
controller = self.controllers[key]
|
controller = self.controllers[key]
|
||||||
checkbox = self.PresenterCheckboxes[controller.name]
|
checkbox = self.PresenterCheckboxes[controller.name]
|
||||||
if controller.available:
|
self.setControllerText(checkbox, controller)
|
||||||
checkbox.setText(controller.name)
|
|
||||||
else:
|
|
||||||
checkbox.setText(
|
|
||||||
unicode(translate('PresentationPlugin.PresentationTab',
|
|
||||||
'%s (unavailable)')) % controller.name)
|
|
||||||
self.AdvancedGroupBox.setTitle(UiStrings().Advanced)
|
self.AdvancedGroupBox.setTitle(UiStrings().Advanced)
|
||||||
self.OverrideAppCheckBox.setText(
|
self.OverrideAppCheckBox.setText(
|
||||||
translate('PresentationPlugin.PresentationTab',
|
translate('PresentationPlugin.PresentationTab',
|
||||||
'Allow presentation application to be overriden'))
|
'Allow presentation application to be overriden'))
|
||||||
|
|
||||||
|
def setControllerText(self, checkbox, controller):
|
||||||
|
if checkbox.isEnabled():
|
||||||
|
checkbox.setText(controller.name)
|
||||||
|
else:
|
||||||
|
checkbox.setText(
|
||||||
|
unicode(translate('PresentationPlugin.PresentationTab',
|
||||||
|
'%s (unavailable)')) % controller.name)
|
||||||
|
|
||||||
def load(self):
|
def load(self):
|
||||||
"""
|
"""
|
||||||
Load the settings.
|
Load the settings.
|
||||||
|
@ -113,7 +115,7 @@ class PresentationTab(SettingsTab):
|
||||||
changed = False
|
changed = False
|
||||||
for key in self.controllers:
|
for key in self.controllers:
|
||||||
controller = self.controllers[key]
|
controller = self.controllers[key]
|
||||||
if controller.available:
|
if controller.is_available():
|
||||||
checkbox = self.PresenterCheckboxes[controller.name]
|
checkbox = self.PresenterCheckboxes[controller.name]
|
||||||
setting_key = self.settingsSection + u'/' + controller.name
|
setting_key = self.settingsSection + u'/' + controller.name
|
||||||
if QtCore.QSettings().value(setting_key) != \
|
if QtCore.QSettings().value(setting_key) != \
|
||||||
|
@ -133,3 +135,13 @@ class PresentationTab(SettingsTab):
|
||||||
changed = True
|
changed = True
|
||||||
if changed:
|
if changed:
|
||||||
Receiver.send_message(u'mediaitem_presentation_rebuild')
|
Receiver.send_message(u'mediaitem_presentation_rebuild')
|
||||||
|
|
||||||
|
def tabVisible(self):
|
||||||
|
"""
|
||||||
|
Tab has just been made visible to the user
|
||||||
|
"""
|
||||||
|
for key in self.controllers:
|
||||||
|
controller = self.controllers[key]
|
||||||
|
checkbox = self.PresenterCheckboxes[controller.name]
|
||||||
|
checkbox.setEnabled(controller.is_available())
|
||||||
|
self.setControllerText(checkbox, controller)
|
||||||
|
|
Loading…
Reference in New Issue