From 4db998c0b6ec385556819562aa003952dcf17f59 Mon Sep 17 00:00:00 2001 From: John Maguire Date: Tue, 18 Jan 2011 22:56:47 +0000 Subject: [PATCH] Script for shutting down clementine at the end of the current playlist. Fixes issue #271 --- scripts/shutdown/main.py | 27 +++++++++++++++++++++++++++ scripts/shutdown/script.ini | 9 +++++++++ scripts/shutdown/system-shutdown.png | Bin 0 -> 4252 bytes src/ui/mainwindow.cpp | 1 + 4 files changed, 37 insertions(+) create mode 100644 scripts/shutdown/main.py create mode 100644 scripts/shutdown/script.ini create mode 100644 scripts/shutdown/system-shutdown.png diff --git a/scripts/shutdown/main.py b/scripts/shutdown/main.py new file mode 100644 index 000000000..fb046e4da --- /dev/null +++ b/scripts/shutdown/main.py @@ -0,0 +1,27 @@ +import clementine + +from PyQt4.QtGui import QAction + +import sys + +class Plugin: + def __init__(self): + self.enabled = False + clementine.player.PlaylistFinished.connect(self.PlaylistFinished) + self.action = QAction("Shutdown at end", None) + self.action.setCheckable(True) + self.action.triggered.connect(self.Enabled) + clementine.ui.AddAction("playlist_menu", self.action) + + + # Slots + def PlaylistFinished(self): + if self.enabled: + print "Reached the end of the playlist - shutting down." + sys.exit(0) + + def Enabled(self, enabled): + print "Shutdown at end of playlist enabled: %s" % enabled + self.enabled = enabled + +plugin = Plugin() diff --git a/scripts/shutdown/script.ini b/scripts/shutdown/script.ini new file mode 100644 index 000000000..a1d5acd35 --- /dev/null +++ b/scripts/shutdown/script.ini @@ -0,0 +1,9 @@ +[Script] +name=Shutdown At End +description=Adds an option to shutdown Clementine at the end of the current playlist. +author=John Maguire +url=http://www.clementine-player.org +icon=system-shutdown.png + +language=python +script_file=main.py diff --git a/scripts/shutdown/system-shutdown.png b/scripts/shutdown/system-shutdown.png new file mode 100644 index 0000000000000000000000000000000000000000..b4154a5df57192df84947ff01a3e92469b51d6e7 GIT binary patch literal 4252 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"tools_menu", ui_->menu_tools, ui_->action_update_library); scripts_->ui()->RegisterActionLocation("extras_menu", ui_->menu_extras, NULL); scripts_->ui()->RegisterActionLocation("help_menu", ui_->menu_help, NULL); + scripts_->ui()->RegisterActionLocation("playlist_menu", ui_->menu_playlist, NULL); // Load theme StyleSheetLoader* css_loader = new StyleSheetLoader(this);