forked from openlp/openlp
Attempt to fix recursion in blanking.
Fixed all the Receiver.send_message instances to stop instantiating the Receiver class.
This commit is contained in:
parent
8c599b6707
commit
1d80bb6229
|
@ -129,16 +129,16 @@ class EventReceiver(QtCore.QObject):
|
||||||
|
|
||||||
class Receiver():
|
class Receiver():
|
||||||
"""
|
"""
|
||||||
Class to allow events to be passed from different parts of the
|
Class to allow events to be passed from different parts of the system. This
|
||||||
system. This is a static wrapper around the ``EventReceiver``
|
is a static wrapper around the ``EventReceiver`` class. As there is only
|
||||||
class. As there is only one instance of it in the system the QT
|
one instance of it in the system the Qt4 signal/slot architecture can send
|
||||||
signal/slot architecture can send messages across the system.
|
messages across the system.
|
||||||
|
|
||||||
To send a message:
|
To send a message:
|
||||||
``Receiver().send_message(u'<<Message ID>>', data)``
|
``Receiver.send_message(u'<<Message ID>>', data)``
|
||||||
|
|
||||||
To receive a Message
|
To receive a Message
|
||||||
``QtCore.QObject.connect(Receiver().get_receiver(), QtCore.SIGNAL(u'<<Message ID>>'), <<ACTION>>)``
|
``QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'<<Message ID>>'), <<ACTION>>)``
|
||||||
"""
|
"""
|
||||||
eventreceiver = EventReceiver()
|
eventreceiver = EventReceiver()
|
||||||
|
|
||||||
|
|
|
@ -48,16 +48,16 @@ class DisplayWidget(QtGui.QWidget):
|
||||||
if type(event) == QtGui.QKeyEvent:
|
if type(event) == QtGui.QKeyEvent:
|
||||||
#here accept the event and do something
|
#here accept the event and do something
|
||||||
if event.key() == QtCore.Qt.Key_Up:
|
if event.key() == QtCore.Qt.Key_Up:
|
||||||
Receiver().send_message(u'live_slidecontroller_previous')
|
Receiver.send_message(u'live_slidecontroller_previous')
|
||||||
event.accept()
|
event.accept()
|
||||||
elif event.key() == QtCore.Qt.Key_Down:
|
elif event.key() == QtCore.Qt.Key_Down:
|
||||||
Receiver().send_message(u'live_slidecontroller_next')
|
Receiver.send_message(u'live_slidecontroller_next')
|
||||||
event.accept()
|
event.accept()
|
||||||
elif event.key() == QtCore.Qt.Key_PageUp:
|
elif event.key() == QtCore.Qt.Key_PageUp:
|
||||||
Receiver().send_message(u'live_slidecontroller_first')
|
Receiver.send_message(u'live_slidecontroller_first')
|
||||||
event.accept()
|
event.accept()
|
||||||
elif event.key() == QtCore.Qt.Key_PageDown:
|
elif event.key() == QtCore.Qt.Key_PageDown:
|
||||||
Receiver().send_message(u'live_slidecontroller_last')
|
Receiver.send_message(u'live_slidecontroller_last')
|
||||||
event.accept()
|
event.accept()
|
||||||
elif event.key() == QtCore.Qt.Key_Escape:
|
elif event.key() == QtCore.Qt.Key_Escape:
|
||||||
self.resetDisplay()
|
self.resetDisplay()
|
||||||
|
@ -111,8 +111,6 @@ class MainDisplay(DisplayWidget):
|
||||||
self.timer_id = 0
|
self.timer_id = 0
|
||||||
self.firstTime = True
|
self.firstTime = True
|
||||||
self.mediaLoaded = False
|
self.mediaLoaded = False
|
||||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
|
||||||
QtCore.SIGNAL(u'live_slide_blank'), self.blankDisplay)
|
|
||||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||||
QtCore.SIGNAL(u'alert_text'), self.displayAlert)
|
QtCore.SIGNAL(u'alert_text'), self.displayAlert)
|
||||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||||
|
@ -209,15 +207,15 @@ class MainDisplay(DisplayWidget):
|
||||||
# self.setWindowOpacity(1)
|
# self.setWindowOpacity(1)
|
||||||
|
|
||||||
def blankDisplay(self, blanked=True):
|
def blankDisplay(self, blanked=True):
|
||||||
if not self.displayBlank:
|
if blanked:
|
||||||
self.displayBlank = True
|
self.displayBlank = True
|
||||||
self.display.setPixmap(QtGui.QPixmap.fromImage(self.blankFrame))
|
self.display.setPixmap(QtGui.QPixmap.fromImage(self.blankFrame))
|
||||||
else:
|
else:
|
||||||
self.displayBlank = False
|
self.displayBlank = False
|
||||||
if self.frame:
|
if self.frame:
|
||||||
self.frameView(self.frame)
|
self.frameView(self.frame)
|
||||||
if blanked != self.displayBlank:
|
#if blanked != self.displayBlank:
|
||||||
self.parent.LiveController.blankButton.setChecked(self.displayBlank)
|
# self.parent.LiveController.blankButton.setChecked(self.displayBlank)
|
||||||
self.parent.generalConfig.set_config(u'Screen Blank', self.displayBlank)
|
self.parent.generalConfig.set_config(u'Screen Blank', self.displayBlank)
|
||||||
|
|
||||||
def displayAlert(self, text=u''):
|
def displayAlert(self, text=u''):
|
||||||
|
|
|
@ -599,7 +599,7 @@ class ServiceManager(QtGui.QWidget):
|
||||||
item, count = self.findServiceItem()
|
item, count = self.findServiceItem()
|
||||||
if self.serviceItems[item][u'data'].editEnabled:
|
if self.serviceItems[item][u'data'].editEnabled:
|
||||||
self.remoteEditTriggered = True
|
self.remoteEditTriggered = True
|
||||||
Receiver().send_message(u'%s_edit' % self.serviceItems[item][u'data'].name, u'L:%s' %
|
Receiver.send_message(u'%s_edit' % self.serviceItems[item][u'data'].name, u'L:%s' %
|
||||||
self.serviceItems[item][u'data'].editId )
|
self.serviceItems[item][u'data'].editId )
|
||||||
|
|
||||||
def onRemoteEditClear(self):
|
def onRemoteEditClear(self):
|
||||||
|
@ -666,7 +666,7 @@ class ServiceManager(QtGui.QWidget):
|
||||||
self.serviceItems.insert(newpos, serviceItem)
|
self.serviceItems.insert(newpos, serviceItem)
|
||||||
self.repaintServiceList(endpos, startCount)
|
self.repaintServiceList(endpos, startCount)
|
||||||
else:
|
else:
|
||||||
Receiver().send_message(u'%s_add_service_item' % plugin)
|
Receiver.send_message(u'%s_add_service_item' % plugin)
|
||||||
|
|
||||||
def updateThemeList(self, theme_list):
|
def updateThemeList(self, theme_list):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -67,7 +67,7 @@ class SettingsForm(QtGui.QDialog, Ui_SettingsDialog):
|
||||||
def accept(self):
|
def accept(self):
|
||||||
for tab_index in range(0, self.SettingsTabWidget.count()):
|
for tab_index in range(0, self.SettingsTabWidget.count()):
|
||||||
self.SettingsTabWidget.widget(tab_index).save()
|
self.SettingsTabWidget.widget(tab_index).save()
|
||||||
Receiver().send_message(u'config_updated')
|
Receiver.send_message(u'config_updated')
|
||||||
return QtGui.QDialog.accept(self)
|
return QtGui.QDialog.accept(self)
|
||||||
|
|
||||||
def postSetUp(self):
|
def postSetUp(self):
|
||||||
|
|
|
@ -162,6 +162,8 @@ class SlideController(QtGui.QWidget):
|
||||||
self.blankButton = self.Toolbar.addToolbarButton(
|
self.blankButton = self.Toolbar.addToolbarButton(
|
||||||
u'Blank Screen', u':/slides/slide_close.png',
|
u'Blank Screen', u':/slides/slide_close.png',
|
||||||
self.trUtf8(u'Blank Screen'), self.onBlankScreen, True)
|
self.trUtf8(u'Blank Screen'), self.onBlankScreen, True)
|
||||||
|
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||||
|
QtCore.SIGNAL(u'live_slide_blank'), self.onBlankDisplay)
|
||||||
if not self.isLive:
|
if not self.isLive:
|
||||||
self.Toolbar.addToolbarSeparator(u'Close Separator')
|
self.Toolbar.addToolbarSeparator(u'Close Separator')
|
||||||
self.Toolbar.addToolbarButton(
|
self.Toolbar.addToolbarButton(
|
||||||
|
@ -504,6 +506,9 @@ class SlideController(QtGui.QWidget):
|
||||||
self.PreviewListWidget.selectRow(0)
|
self.PreviewListWidget.selectRow(0)
|
||||||
self.onSlideSelected()
|
self.onSlideSelected()
|
||||||
|
|
||||||
|
def onBlankDisplay(self):
|
||||||
|
self.blankButton.setChecked(not self.parent.mainDisplay.displayBlank)
|
||||||
|
|
||||||
def onBlankScreen(self, blanked):
|
def onBlankScreen(self, blanked):
|
||||||
"""
|
"""
|
||||||
Blank the screen.
|
Blank the screen.
|
||||||
|
|
|
@ -145,7 +145,7 @@ class ThemeManager(QtGui.QWidget):
|
||||||
name = u'%s (%s)' % (self.global_theme, self.trUtf8(u'default'))
|
name = u'%s (%s)' % (self.global_theme, self.trUtf8(u'default'))
|
||||||
self.ThemeListWidget.item(count).setText(name)
|
self.ThemeListWidget.item(count).setText(name)
|
||||||
self.config.set_config(u'theme global theme', self.global_theme)
|
self.config.set_config(u'theme global theme', self.global_theme)
|
||||||
Receiver().send_message(
|
Receiver.send_message(
|
||||||
u'update_global_theme', self.global_theme)
|
u'update_global_theme', self.global_theme)
|
||||||
self.pushThemes()
|
self.pushThemes()
|
||||||
|
|
||||||
|
@ -265,7 +265,7 @@ class ThemeManager(QtGui.QWidget):
|
||||||
self.pushThemes()
|
self.pushThemes()
|
||||||
|
|
||||||
def pushThemes(self):
|
def pushThemes(self):
|
||||||
Receiver().send_message(u'update_themes', self.getThemes() )
|
Receiver.send_message(u'update_themes', self.getThemes() )
|
||||||
|
|
||||||
def getThemes(self):
|
def getThemes(self):
|
||||||
return self.themelist
|
return self.themelist
|
||||||
|
|
|
@ -135,10 +135,10 @@ class ThemesTab(SettingsTab):
|
||||||
def save(self):
|
def save(self):
|
||||||
self.config.set_config(u'theme global style', self.global_style )
|
self.config.set_config(u'theme global style', self.global_style )
|
||||||
self.config.set_config(u'theme global theme',self.global_theme)
|
self.config.set_config(u'theme global theme',self.global_theme)
|
||||||
Receiver().send_message(u'update_global_theme', self.global_theme )
|
Receiver.send_message(u'update_global_theme', self.global_theme )
|
||||||
|
|
||||||
def postSetUp(self):
|
def postSetUp(self):
|
||||||
Receiver().send_message(u'update_global_theme', self.global_theme )
|
Receiver.send_message(u'update_global_theme', self.global_theme )
|
||||||
|
|
||||||
def onSongLevelButtonPressed(self):
|
def onSongLevelButtonPressed(self):
|
||||||
self.global_style = u'Song'
|
self.global_style = u'Song'
|
||||||
|
|
|
@ -199,9 +199,9 @@ class BibleImportForm(QtGui.QDialog, Ui_BibleImportDialog):
|
||||||
def onCancelButtonClicked(self):
|
def onCancelButtonClicked(self):
|
||||||
# tell import to stop
|
# tell import to stop
|
||||||
self.message = self.trUtf8(u'Bible import stopped')
|
self.message = self.trUtf8(u'Bible import stopped')
|
||||||
Receiver().send_message(u'stop_import')
|
Receiver.send_message(u'stop_import')
|
||||||
# tell bibleplugin to reload the bibles
|
# tell bibleplugin to reload the bibles
|
||||||
Receiver().send_message(u'pre_load_bibles')
|
Receiver.send_message(u'pre_load_bibles')
|
||||||
self.close()
|
self.close()
|
||||||
|
|
||||||
def onImportButtonClicked(self):
|
def onImportButtonClicked(self):
|
||||||
|
@ -220,7 +220,7 @@ class BibleImportForm(QtGui.QDialog, Ui_BibleImportDialog):
|
||||||
self.MessageLabel.setText(message)
|
self.MessageLabel.setText(message)
|
||||||
self.ProgressBar.setValue(self.barmax)
|
self.ProgressBar.setValue(self.barmax)
|
||||||
# tell bibleplugin to reload the bibles
|
# tell bibleplugin to reload the bibles
|
||||||
Receiver().send_message(u'pre_load_bibles')
|
Receiver.send_message(u'pre_load_bibles')
|
||||||
QtGui.QMessageBox.information(self,
|
QtGui.QMessageBox.information(self,
|
||||||
self.trUtf8(u'Information'), self.trUtf8(message))
|
self.trUtf8(u'Information'), self.trUtf8(message))
|
||||||
|
|
||||||
|
|
|
@ -40,7 +40,7 @@ class BibleCSVImpl(BibleCommon):
|
||||||
"""
|
"""
|
||||||
self.bibledb = bibledb
|
self.bibledb = bibledb
|
||||||
self.loadbible = True
|
self.loadbible = True
|
||||||
QtCore.QObject.connect(Receiver().get_receiver(),
|
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||||
QtCore.SIGNAL(u'openlpstopimport'), self.stop_import)
|
QtCore.SIGNAL(u'openlpstopimport'), self.stop_import)
|
||||||
|
|
||||||
def stop_import(self):
|
def stop_import(self):
|
||||||
|
@ -66,7 +66,7 @@ class BibleCSVImpl(BibleCommon):
|
||||||
count += 1
|
count += 1
|
||||||
#Flush the screen events
|
#Flush the screen events
|
||||||
if count % 3 == 0:
|
if count % 3 == 0:
|
||||||
Receiver().send_message(u'process_events')
|
Receiver.send_message(u'process_events')
|
||||||
count = 0
|
count = 0
|
||||||
except:
|
except:
|
||||||
log.exception(u'Loading books from file failed')
|
log.exception(u'Loading books from file failed')
|
||||||
|
@ -97,7 +97,7 @@ class BibleCSVImpl(BibleCommon):
|
||||||
count += 1
|
count += 1
|
||||||
#Every x verses repaint the screen
|
#Every x verses repaint the screen
|
||||||
if count % 3 == 0:
|
if count % 3 == 0:
|
||||||
Receiver().send_message(u'process_events')
|
Receiver.send_message(u'process_events')
|
||||||
count = 0
|
count = 0
|
||||||
except:
|
except:
|
||||||
log.exception(u'Loading verses from file failed')
|
log.exception(u'Loading verses from file failed')
|
||||||
|
|
|
@ -74,7 +74,7 @@ class BibleOSISImpl():
|
||||||
self.loadbible = False
|
self.loadbible = False
|
||||||
if fbibles:
|
if fbibles:
|
||||||
fbibles.close()
|
fbibles.close()
|
||||||
QtCore.QObject.connect(Receiver().get_receiver(),
|
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||||
QtCore.SIGNAL(u'openlpstopimport'), self.stop_import)
|
QtCore.SIGNAL(u'openlpstopimport'), self.stop_import)
|
||||||
|
|
||||||
def stop_import(self):
|
def stop_import(self):
|
||||||
|
@ -173,13 +173,13 @@ class BibleOSISImpl():
|
||||||
testament)
|
testament)
|
||||||
dialogobject.incrementProgressBar(
|
dialogobject.incrementProgressBar(
|
||||||
self.booksOfBible[p[0]])
|
self.booksOfBible[p[0]])
|
||||||
Receiver().send_message(u'process_events')
|
Receiver.send_message(u'process_events')
|
||||||
count = 0
|
count = 0
|
||||||
self.bibledb.add_verse(book.id, p[1], p[2], text)
|
self.bibledb.add_verse(book.id, p[1], p[2], text)
|
||||||
count += 1
|
count += 1
|
||||||
#Every 3 verses repaint the screen
|
#Every 3 verses repaint the screen
|
||||||
if count % 3 == 0:
|
if count % 3 == 0:
|
||||||
Receiver().send_message(u'process_events')
|
Receiver.send_message(u'process_events')
|
||||||
count = 0
|
count = 0
|
||||||
except:
|
except:
|
||||||
log.exception(u'Loading bible from OSIS file failed')
|
log.exception(u'Loading bible from OSIS file failed')
|
||||||
|
|
|
@ -54,7 +54,7 @@ class BibleMediaItem(MediaManagerItem):
|
||||||
MediaManagerItem.__init__(self, parent, icon, title)
|
MediaManagerItem.__init__(self, parent, icon, title)
|
||||||
# place to store the search results
|
# place to store the search results
|
||||||
self.search_results = {}
|
self.search_results = {}
|
||||||
QtCore.QObject.connect(Receiver().get_receiver(),
|
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||||
QtCore.SIGNAL(u'openlpreloadbibles'), self.reloadBibles)
|
QtCore.SIGNAL(u'openlpreloadbibles'), self.reloadBibles)
|
||||||
|
|
||||||
def initPluginNameVisible(self):
|
def initPluginNameVisible(self):
|
||||||
|
@ -284,7 +284,7 @@ class BibleMediaItem(MediaManagerItem):
|
||||||
def setQuickMessage(self, text):
|
def setQuickMessage(self, text):
|
||||||
self.QuickMessage.setText(text)
|
self.QuickMessage.setText(text)
|
||||||
self.AdvancedMessage.setText(text)
|
self.AdvancedMessage.setText(text)
|
||||||
Receiver().send_message(u'process_events')
|
Receiver.send_message(u'process_events')
|
||||||
#minor delay to get the events processed
|
#minor delay to get the events processed
|
||||||
time.sleep(0.1)
|
time.sleep(0.1)
|
||||||
|
|
||||||
|
|
|
@ -82,7 +82,7 @@ class EditCustomForm(QtGui.QDialog, Ui_customEditDialog):
|
||||||
log.debug(u'onPreview')
|
log.debug(u'onPreview')
|
||||||
if button.text() == unicode(self.trUtf8(u'Save && Preview')) \
|
if button.text() == unicode(self.trUtf8(u'Save && Preview')) \
|
||||||
and self.saveCustom():
|
and self.saveCustom():
|
||||||
Receiver().send_message(u'preview_custom')
|
Receiver.send_message(u'preview_custom')
|
||||||
|
|
||||||
def initialise(self):
|
def initialise(self):
|
||||||
self.editAll = False
|
self.editAll = False
|
||||||
|
@ -130,13 +130,13 @@ class EditCustomForm(QtGui.QDialog, Ui_customEditDialog):
|
||||||
self.previewButton.setVisible(True)
|
self.previewButton.setVisible(True)
|
||||||
|
|
||||||
def closePressed(self):
|
def closePressed(self):
|
||||||
Receiver().send_message(u'remote_edit_clear')
|
Receiver.send_message(u'remote_edit_clear')
|
||||||
self.close()
|
self.close()
|
||||||
|
|
||||||
def accept(self):
|
def accept(self):
|
||||||
log.debug(u'accept')
|
log.debug(u'accept')
|
||||||
if self.saveCustom():
|
if self.saveCustom():
|
||||||
Receiver().send_message(u'load_custom_list')
|
Receiver.send_message(u'load_custom_list')
|
||||||
self.close()
|
self.close()
|
||||||
|
|
||||||
def saveCustom(self):
|
def saveCustom(self):
|
||||||
|
|
|
@ -74,7 +74,7 @@ class ImageTab(SettingsTab):
|
||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
self.config.set_config(u'loop delay', self.loop_delay)
|
self.config.set_config(u'loop delay', self.loop_delay)
|
||||||
Receiver().send_message(u'update_spin_delay', self.loop_delay)
|
Receiver.send_message(u'update_spin_delay', self.loop_delay)
|
||||||
|
|
||||||
def postSetUp(self):
|
def postSetUp(self):
|
||||||
Receiver().send_message(u'update_spin_delay', self.loop_delay)
|
Receiver.send_message(u'update_spin_delay', self.loop_delay)
|
||||||
|
|
|
@ -77,7 +77,7 @@ class MessageListener(object):
|
||||||
self.controller.load_presentation(file)
|
self.controller.load_presentation(file)
|
||||||
if self.is_live:
|
if self.is_live:
|
||||||
self.controller.start_presentation()
|
self.controller.start_presentation()
|
||||||
Receiver().send_message(u'live_slide_hide')
|
Receiver.send_message(u'live_slide_hide')
|
||||||
self.controller.slidenumber = 0
|
self.controller.slidenumber = 0
|
||||||
self.timer.start()
|
self.timer.start()
|
||||||
|
|
||||||
|
@ -143,7 +143,7 @@ class MessageListener(object):
|
||||||
Based on the handler passed at startup triggers slide show to shut down
|
Based on the handler passed at startup triggers slide show to shut down
|
||||||
"""
|
"""
|
||||||
if self.is_live:
|
if self.is_live:
|
||||||
Receiver().send_message(u'live_slide_show')
|
Receiver.send_message(u'live_slide_show')
|
||||||
self.controller.close_presentation()
|
self.controller.close_presentation()
|
||||||
self.controller.slidenumber = 0
|
self.controller.slidenumber = 0
|
||||||
self.timer.stop()
|
self.timer.stop()
|
||||||
|
|
|
@ -311,5 +311,5 @@ class PresentationController(object):
|
||||||
prefix = u'live'
|
prefix = u'live'
|
||||||
else:
|
else:
|
||||||
prefix = u'preview'
|
prefix = u'preview'
|
||||||
Receiver().send_message(u'%s_slidecontroller_change' % prefix,
|
Receiver.send_message(u'%s_slidecontroller_change' % prefix,
|
||||||
self.slidenumber - 1)
|
self.slidenumber - 1)
|
||||||
|
|
|
@ -73,9 +73,9 @@ class RemotesPlugin(Plugin):
|
||||||
pos = datagram.find(u':')
|
pos = datagram.find(u':')
|
||||||
event = unicode(datagram[:pos].lower())
|
event = unicode(datagram[:pos].lower())
|
||||||
if event == u'alert':
|
if event == u'alert':
|
||||||
Receiver().send_message(u'alert_text', unicode(datagram[pos + 1:]))
|
Receiver.send_message(u'alert_text', unicode(datagram[pos + 1:]))
|
||||||
if event == u'next_slide':
|
if event == u'next_slide':
|
||||||
Receiver().send_message(u'live_slide_next')
|
Receiver.send_message(u'live_slide_next')
|
||||||
|
|
||||||
def about(self):
|
def about(self):
|
||||||
about_text = self.trUtf8(u'<b>Remote Plugin</b><br>This plugin '
|
about_text = self.trUtf8(u'<b>Remote Plugin</b><br>This plugin '
|
||||||
|
|
|
@ -404,16 +404,16 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
|
||||||
log.debug(u'onPreview')
|
log.debug(u'onPreview')
|
||||||
if button.text() == unicode(self.trUtf8(u'Save && Preview')) \
|
if button.text() == unicode(self.trUtf8(u'Save && Preview')) \
|
||||||
and self.saveSong():
|
and self.saveSong():
|
||||||
Receiver().send_message(u'preview_song')
|
Receiver.send_message(u'preview_song')
|
||||||
|
|
||||||
def closePressed(self):
|
def closePressed(self):
|
||||||
Receiver().send_message(u'remote_edit_clear')
|
Receiver.send_message(u'remote_edit_clear')
|
||||||
self.close()
|
self.close()
|
||||||
|
|
||||||
def accept(self):
|
def accept(self):
|
||||||
log.debug(u'accept')
|
log.debug(u'accept')
|
||||||
if self.saveSong():
|
if self.saveSong():
|
||||||
Receiver().send_message(u'load_song_list')
|
Receiver.send_message(u'load_song_list')
|
||||||
self.close()
|
self.close()
|
||||||
|
|
||||||
def saveSong(self):
|
def saveSong(self):
|
||||||
|
|
Loading…
Reference in New Issue