forked from openlp/openlp
r1276
This commit is contained in:
commit
4257bc2e4a
@ -158,7 +158,7 @@ class MediaManagerItem(QtGui.QWidget):
|
|||||||
|
|
||||||
``icon``
|
``icon``
|
||||||
The icon of the button. This can be an instance of QIcon, or a
|
The icon of the button. This can be an instance of QIcon, or a
|
||||||
string cotaining either the absolute path to the image, or an
|
string containing either the absolute path to the image, or an
|
||||||
internal resource path starting with ':/'.
|
internal resource path starting with ':/'.
|
||||||
|
|
||||||
``slot``
|
``slot``
|
||||||
|
@ -61,7 +61,7 @@ class OpenLPToolbar(QtGui.QToolBar):
|
|||||||
|
|
||||||
``icon``
|
``icon``
|
||||||
The icon of the button. This can be an instance of QIcon, or a
|
The icon of the button. This can be an instance of QIcon, or a
|
||||||
string cotaining either the absolute path to the image, or an
|
string containing either the absolute path to the image, or an
|
||||||
internal resource path starting with ':/'.
|
internal resource path starting with ':/'.
|
||||||
|
|
||||||
``tooltip``
|
``tooltip``
|
||||||
|
@ -72,7 +72,7 @@ class MainDisplay(DisplayWidget):
|
|||||||
self.setWindowIcon(mainIcon)
|
self.setWindowIcon(mainIcon)
|
||||||
self.retranslateUi()
|
self.retranslateUi()
|
||||||
self.setStyleSheet(u'border: 0px; margin: 0px; padding: 0px;')
|
self.setStyleSheet(u'border: 0px; margin: 0px; padding: 0px;')
|
||||||
self.setWindowFlags(QtCore.Qt.FramelessWindowHint |
|
self.setWindowFlags(QtCore.Qt.FramelessWindowHint | QtCore.Qt.Tool |
|
||||||
QtCore.Qt.WindowStaysOnTopHint)
|
QtCore.Qt.WindowStaysOnTopHint)
|
||||||
if self.isLive:
|
if self.isLive:
|
||||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||||
|
@ -28,7 +28,7 @@ import logging
|
|||||||
|
|
||||||
from PyQt4 import QtCore, QtGui
|
from PyQt4 import QtCore, QtGui
|
||||||
|
|
||||||
from openlp.core.lib import PluginStatus, StringContent, translate
|
from openlp.core.lib import PluginStatus, Receiver, StringContent, translate
|
||||||
from plugindialog import Ui_PluginViewDialog
|
from plugindialog import Ui_PluginViewDialog
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
@ -129,7 +129,9 @@ class PluginForm(QtGui.QDialog, Ui_PluginViewDialog):
|
|||||||
if self.programaticChange:
|
if self.programaticChange:
|
||||||
return
|
return
|
||||||
if status == 0:
|
if status == 0:
|
||||||
|
Receiver.send_message(u'cursor_busy')
|
||||||
self.activePlugin.toggleStatus(PluginStatus.Active)
|
self.activePlugin.toggleStatus(PluginStatus.Active)
|
||||||
|
Receiver.send_message(u'cursor_normal')
|
||||||
else:
|
else:
|
||||||
self.activePlugin.toggleStatus(PluginStatus.Inactive)
|
self.activePlugin.toggleStatus(PluginStatus.Inactive)
|
||||||
status_text = unicode(
|
status_text = unicode(
|
||||||
|
@ -334,9 +334,8 @@ class ThemeManager(QtGui.QWidget):
|
|||||||
row = self.themeListWidget.row(item)
|
row = self.themeListWidget.row(item)
|
||||||
self.themeListWidget.takeItem(row)
|
self.themeListWidget.takeItem(row)
|
||||||
self.deleteTheme(theme)
|
self.deleteTheme(theme)
|
||||||
# As we do not reload the themes, push out the change
|
# As we do not reload the themes, push out the change. Reload the
|
||||||
# Reaload the list as the internal lists and events need
|
# list as the internal lists and events need to be triggered.
|
||||||
# to be triggered
|
|
||||||
self._pushThemes()
|
self._pushThemes()
|
||||||
|
|
||||||
def deleteTheme(self, theme):
|
def deleteTheme(self, theme):
|
||||||
|
@ -32,7 +32,7 @@ from PyQt4 import QtCore, QtGui
|
|||||||
from sqlalchemy.sql import or_
|
from sqlalchemy.sql import or_
|
||||||
|
|
||||||
from openlp.core.lib import MediaManagerItem, BaseListWithDnD, Receiver, \
|
from openlp.core.lib import MediaManagerItem, BaseListWithDnD, Receiver, \
|
||||||
ItemCapabilities, translate, check_item_selected
|
ItemCapabilities, translate, check_item_selected, PluginStatus
|
||||||
from openlp.plugins.songs.forms import EditSongForm, SongMaintenanceForm, \
|
from openlp.plugins.songs.forms import EditSongForm, SongMaintenanceForm, \
|
||||||
SongImportForm
|
SongImportForm
|
||||||
from openlp.plugins.songs.lib import OpenLyrics, SongXML
|
from openlp.plugins.songs.lib import OpenLyrics, SongXML
|
||||||
@ -378,10 +378,12 @@ class SongMediaItem(MediaManagerItem):
|
|||||||
raw_footer.append(song.title)
|
raw_footer.append(song.title)
|
||||||
raw_footer.append(author_list)
|
raw_footer.append(author_list)
|
||||||
raw_footer.append(song.copyright)
|
raw_footer.append(song.copyright)
|
||||||
raw_footer.append(unicode(
|
if QtCore.QSettings().value(u'general/ccli number',
|
||||||
translate('SongsPlugin.MediaItem', 'CCLI License: ') +
|
QtCore.QVariant(u'')).toString():
|
||||||
QtCore.QSettings().value(u'general/ccli number',
|
raw_footer.append(unicode(
|
||||||
QtCore.QVariant(u'')).toString()))
|
translate('SongsPlugin.MediaItem', 'CCLI License: ') +
|
||||||
|
QtCore.QSettings().value(u'general/ccli number',
|
||||||
|
QtCore.QVariant(u'')).toString()))
|
||||||
service_item.raw_footer = raw_footer
|
service_item.raw_footer = raw_footer
|
||||||
service_item.audit = [
|
service_item.audit = [
|
||||||
song.title, author_audit, song.copyright, unicode(song.ccli_number)
|
song.title, author_audit, song.copyright, unicode(song.ccli_number)
|
||||||
@ -396,46 +398,46 @@ class SongMediaItem(MediaManagerItem):
|
|||||||
Triggered by a song being loaded by the service item
|
Triggered by a song being loaded by the service item
|
||||||
"""
|
"""
|
||||||
log.debug(u'serviceLoad')
|
log.debug(u'serviceLoad')
|
||||||
if item.data_string:
|
if self.plugin.status != PluginStatus.Active or not item.data_string:
|
||||||
search_results = self.parent.manager.get_all_objects(Song,
|
return
|
||||||
Song.search_title == re.compile(r'\W+', re.UNICODE).sub(u' ',
|
search_results = self.parent.manager.get_all_objects(Song,
|
||||||
item.data_string[u'title'].split(u'@')[0].lower()).strip(),
|
Song.search_title == re.compile(r'\W+', re.UNICODE).sub(u' ',
|
||||||
Song.search_title.asc())
|
item.data_string[u'title'].split(u'@')[0].lower()).strip(),
|
||||||
author_list = item.data_string[u'authors'].split(u', ')
|
Song.search_title.asc())
|
||||||
# The service item always has an author (at least it has u'' as
|
author_list = item.data_string[u'authors'].split(u', ')
|
||||||
# author). However, songs saved in the database do not have to have
|
# The service item always has an author (at least it has u'' as
|
||||||
# an author.
|
# author). However, songs saved in the database do not have to have
|
||||||
if u'' in author_list:
|
# an author.
|
||||||
author_list.remove(u'')
|
if u'' in author_list:
|
||||||
editId = 0
|
author_list.remove(u'')
|
||||||
add_song = True
|
editId = 0
|
||||||
if search_results:
|
add_song = True
|
||||||
for song in search_results:
|
if search_results:
|
||||||
same_authors = True
|
for song in search_results:
|
||||||
# If the author counts are different, we do not have to do
|
same_authors = True
|
||||||
# any further checking. This is also important when a song
|
# If the author counts are different, we do not have to do any
|
||||||
# does not have any author (because we can not loop over an
|
# further checking. This is also important when a song does not
|
||||||
# empty list).
|
# have any author (because we can not loop over an empty list).
|
||||||
if len(song.authors) == len(author_list):
|
if len(song.authors) == len(author_list):
|
||||||
for author in song.authors:
|
for author in song.authors:
|
||||||
if author.display_name not in author_list:
|
if author.display_name not in author_list:
|
||||||
same_authors = False
|
same_authors = False
|
||||||
else:
|
else:
|
||||||
same_authors = False
|
same_authors = False
|
||||||
# All authors are the same, so we can stop here and the song
|
# All authors are the same, so we can stop here and the song
|
||||||
# does not have to be saved.
|
# does not have to be saved.
|
||||||
if same_authors:
|
if same_authors:
|
||||||
add_song = False
|
add_song = False
|
||||||
editId = song.id
|
editId = song.id
|
||||||
break
|
break
|
||||||
if add_song:
|
if add_song:
|
||||||
if self.addSongFromService:
|
if self.addSongFromService:
|
||||||
editId = self.openLyrics.xml_to_song(item.xml_version)
|
editId = self.openLyrics.xml_to_song(item.xml_version)
|
||||||
self.onSearchTextButtonClick()
|
self.onSearchTextButtonClick()
|
||||||
# Update service with correct song id.
|
# Update service with correct song id.
|
||||||
if editId:
|
if editId:
|
||||||
Receiver.send_message(u'service_item_update',
|
Receiver.send_message(u'service_item_update',
|
||||||
u'%s:%s' % (editId, item._uuid))
|
u'%s:%s' % (editId, item._uuid))
|
||||||
|
|
||||||
def collateSongTitles(self, song_1, song_2):
|
def collateSongTitles(self, song_1, song_2):
|
||||||
"""
|
"""
|
||||||
|
@ -83,6 +83,58 @@ Root: HKCU; SubKey: Software\OpenLP\OpenLP\custom; ValueType: dword; ValueName:
|
|||||||
Root: HKCU; SubKey: Software\OpenLP\OpenLP\images; ValueType: dword; ValueName: status; ValueData: $00000001
|
Root: HKCU; SubKey: Software\OpenLP\OpenLP\images; ValueType: dword; ValueName: status; ValueData: $00000001
|
||||||
Root: HKCU; SubKey: Software\OpenLP\OpenLP\media; ValueType: dword; ValueName: status; ValueData: $00000001
|
Root: HKCU; SubKey: Software\OpenLP\OpenLP\media; ValueType: dword; ValueName: status; ValueData: $00000001
|
||||||
Root: HKCU; SubKey: Software\OpenLP\OpenLP\presentations; ValueType: dword; ValueName: status; ValueData: $00000001
|
Root: HKCU; SubKey: Software\OpenLP\OpenLP\presentations; ValueType: dword; ValueName: status; ValueData: $00000001
|
||||||
Root: HKCU; SubKey: Software\OpenLP\OpenLP\remotes; ValueType: dword; ValueName: status; ValueData: $00000001
|
Root: HKCU; SubKey: Software\OpenLP\OpenLP\remotes; ValueType: dword; ValueName: status; ValueData: $00000000
|
||||||
Root: HKCU; SubKey: Software\OpenLP\OpenLP\songs; ValueType: dword; ValueName: status; ValueData: $00000001
|
Root: HKCU; SubKey: Software\OpenLP\OpenLP\songs; ValueType: dword; ValueName: status; ValueData: $00000001
|
||||||
Root: HKCU; SubKey: Software\OpenLP\OpenLP\songusage; ValueType: dword; ValueName: status; ValueData: $00000001
|
Root: HKCU; SubKey: Software\OpenLP\OpenLP\songusage; ValueType: dword; ValueName: status; ValueData: $00000001
|
||||||
|
|
||||||
|
[Code]
|
||||||
|
function GetUninstallString(): String;
|
||||||
|
var
|
||||||
|
sUnInstPath: String;
|
||||||
|
sUnInstallString: String;
|
||||||
|
begin
|
||||||
|
sUnInstPath := ExpandConstant('Software\Microsoft\Windows\CurrentVersion\Uninstall\{#emit SetupSetting("AppId")}_is1');
|
||||||
|
sUnInstallString := '';
|
||||||
|
if not RegQueryStringValue(HKLM, sUnInstPath, 'UninstallString', sUnInstallString) then
|
||||||
|
RegQueryStringValue(HKCU, sUnInstPath, 'UninstallString', sUnInstallString);
|
||||||
|
Result := sUnInstallString;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function IsUpgrade(): Boolean;
|
||||||
|
begin
|
||||||
|
Result := (GetUninstallString() <> '');
|
||||||
|
end;
|
||||||
|
|
||||||
|
// Return Values:
|
||||||
|
// 1 - uninstall string is empty
|
||||||
|
// 2 - error executing the UnInstallString
|
||||||
|
// 3 - successfully executed the UnInstallString
|
||||||
|
function UnInstallOldVersion(): Integer;
|
||||||
|
var
|
||||||
|
sUnInstallString: String;
|
||||||
|
iResultCode: Integer;
|
||||||
|
begin
|
||||||
|
Result := 0;
|
||||||
|
sUnInstallString := GetUninstallString();
|
||||||
|
if sUnInstallString <> '' then
|
||||||
|
begin
|
||||||
|
sUnInstallString := RemoveQuotes(sUnInstallString);
|
||||||
|
if Exec(sUnInstallString, '/SILENT /NORESTART /SUPPRESSMSGBOXES','', SW_HIDE, ewWaitUntilTerminated, iResultCode) then
|
||||||
|
Result := 3
|
||||||
|
else
|
||||||
|
Result := 2;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
Result := 1;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure CurStepChanged(CurStep: TSetupStep);
|
||||||
|
begin
|
||||||
|
if (CurStep=ssInstall) then
|
||||||
|
begin
|
||||||
|
if (IsUpgrade()) then
|
||||||
|
begin
|
||||||
|
UnInstallOldVersion();
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
Binary file not shown.
Loading…
Reference in New Issue
Block a user