* move launcher code to default.py, modify RunScript in settings
This commit is contained in:
Rob 2021-04-01 15:33:38 -05:00 committed by GitHub
parent d71c923e78
commit 4b066432be
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 70 additions and 74 deletions

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="script.xbmcbackup" <addon id="script.xbmcbackup"
name="Backup" version="1.6.6" provider-name="robweber"> name="Backup" version="1.6.7~beta1" provider-name="robweber">
<requires> <requires>
<import addon="xbmc.python" version="3.0.0"/> <import addon="xbmc.python" version="3.0.0"/>
<import addon="script.module.dateutil" version="2.8.0" /> <import addon="script.module.dateutil" version="2.8.0" />
@ -89,8 +89,8 @@
<screenshot>resources/images/screenshot3.jpg</screenshot> <screenshot>resources/images/screenshot3.jpg</screenshot>
<screenshot>resources/images/screenshot4.jpg</screenshot> <screenshot>resources/images/screenshot4.jpg</screenshot>
</assets> </assets>
<news>Version 1.6.6 <news>Version 1.6.7
- fixed issue with backup rotations not working properly - fixed issue with RunScript not launching Advanced Editor in some cases
</news> </news>
</extension> </extension>
</addon> </addon>

View File

@ -4,6 +4,12 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
## [Unreleased](https://github.com/robweber/xbmcbackup/compare/matrix-1.6.5...robweber:matrix)
### Fixed
- fixed issue when using ```RunScript()``` within settings to launch Advanced Editor
## [Version 1.6.6](https://github.com/robweber/xbmcbackup/compare/matrix-1.6.5...robweber:matrix-1.6.6) - 2020-03-15 ## [Version 1.6.6](https://github.com/robweber/xbmcbackup/compare/matrix-1.6.5...robweber:matrix-1.6.6) - 2020-03-15
### Fixed ### Fixed

View File

@ -1,7 +1,37 @@
import xbmc
import xbmcgui import xbmcgui
import xbmcvfs
import resources.lib.utils as utils import resources.lib.utils as utils
from resources.lib.backup import XbmcBackup from resources.lib.backup import XbmcBackup
from resources.lib.authorizers import DropboxAuthorizer
from resources.lib.advanced_editor import AdvancedBackupEditor
# mode constants
BACKUP = 0
RESTORE = 1
SETTINGS = 2
ADVANCED_EDITOR = 3
LAUNCHER = 4
def authorize_cloud(cloudProvider):
# drobpox
if(cloudProvider == 'dropbox'):
authorizer = DropboxAuthorizer()
if(authorizer.authorize()):
xbmcgui.Dialog().ok(utils.getString(30010), '%s %s' % (utils.getString(30027), utils.getString(30106)))
else:
xbmcgui.Dialog().ok(utils.getString(30010), '%s %s' % (utils.getString(30107), utils.getString(30027)))
def remove_auth():
# triggered from settings.xml - asks if user wants to delete OAuth token information
shouldDelete = xbmcgui.Dialog().yesno(utils.getString(30093), utils.getString(30094), utils.getString(30095), autoclose=7000)
if(shouldDelete):
# delete any of the known token file types
xbmcvfs.delete(xbmcvfs.translatePath(utils.data_dir() + "tokens.txt")) # dropbox
xbmcvfs.delete(xbmcvfs.translatePath(utils.data_dir() + "google_drive.dat")) # google drive
def get_params(): def get_params():
@ -13,6 +43,7 @@ def get_params():
if(args.startswith('?')): if(args.startswith('?')):
args = args[1:] # legacy in case of url params args = args[1:] # legacy in case of url params
splitString = args.split('=') splitString = args.split('=')
utils.log(splitString[1])
param[splitString[0]] = splitString[1] param[splitString[0]] = splitString[1]
except: except:
pass pass
@ -24,12 +55,13 @@ def get_params():
mode = -1 mode = -1
params = get_params() params = get_params()
if("mode" in params): if("mode" in params):
if(params['mode'] == 'backup'): if(params['mode'] == 'backup'):
mode = 0 mode = BACKUP
elif(params['mode'] == 'restore'): elif(params['mode'] == 'restore'):
mode = 1 mode = RESTORE
elif(params['mode'] == 'launcher'):
mode = LAUNCHER
# if mode wasn't passed in as arg, get from user # if mode wasn't passed in as arg, get from user
@ -49,15 +81,30 @@ if(mode != -1):
# run the profile backup # run the profile backup
backup = XbmcBackup() backup = XbmcBackup()
if(mode == 2): if(mode == SETTINGS):
# open the settings dialog # open the settings dialog
utils.openSettings() utils.openSettings()
elif(mode == 3 and utils.getSettingInt('backup_selection_type') == 1): elif(mode == ADVANCED_EDITOR and utils.getSettingInt('backup_selection_type') == 1):
# open the advanced editor # open the advanced editor but only if in advanced mode
xbmc.executebuiltin('RunScript(special://home/addons/script.xbmcbackup/launcher.py, action=advanced_editor)') editor = AdvancedBackupEditor()
editor.showMainScreen()
elif(mode == LAUNCHER):
# copied from old launcher.py
if(params['action'] == 'authorize_cloud'):
authorize_cloud(params['provider'])
elif(params['action'] == 'remove_auth'):
remove_auth()
elif(params['action'] == 'advanced_editor'):
editor = AdvancedBackupEditor()
editor.showMainScreen()
elif(params['action'] == 'advanced_copy_config'):
editor = AdvancedBackupEditor()
editor.copySimpleConfig()
elif(backup.remoteConfigured()): elif(backup.remoteConfigured()):
if(mode == backup.Restore): # if mode was RESTORE
if(mode == RESTORE):
# get list of valid restore points # get list of valid restore points
restorePoints = backup.listBackups() restorePoints = backup.listBackups()
pointNames = [] pointNames = []
@ -90,6 +137,7 @@ if(mode != -1):
else: else:
backup.restore() backup.restore()
else: else:
# mode was BACKUP
backup.backup() backup.backup()
else: else:
# can't go any further # can't go any further

View File

@ -1,58 +0,0 @@
# launcher for various helpful functions found in the settings.xml area
import sys
import xbmcgui
import xbmcvfs
import resources.lib.utils as utils
from resources.lib.authorizers import DropboxAuthorizer
from resources.lib.advanced_editor import AdvancedBackupEditor
def authorize_cloud(cloudProvider):
# drobpox
if(cloudProvider == 'dropbox'):
authorizer = DropboxAuthorizer()
if(authorizer.authorize()):
xbmcgui.Dialog().ok(utils.getString(30010), '%s %s' % (utils.getString(30027), utils.getString(30106)))
else:
xbmcgui.Dialog().ok(utils.getString(30010), '%s %s' % (utils.getString(30107), utils.getString(30027)))
def remove_auth():
# triggered from settings.xml - asks if user wants to delete OAuth token information
shouldDelete = xbmcgui.Dialog().yesno(utils.getString(30093), utils.getString(30094), utils.getString(30095), autoclose=7000)
if(shouldDelete):
# delete any of the known token file types
xbmcvfs.delete(xbmcvfs.translatePath(utils.data_dir() + "tokens.txt")) # dropbox
xbmcvfs.delete(xbmcvfs.translatePath(utils.data_dir() + "google_drive.dat")) # google drive
def get_params():
param = {}
try:
for i in sys.argv:
args = i
if('=' in args):
if(args.startswith('?')):
args = args[1:] # legacy in case of url params
splitString = args.split('=')
param[splitString[0]] = splitString[1]
except:
pass
return param
params = get_params()
if(params['action'] == 'authorize_cloud'):
authorize_cloud(params['provider'])
elif(params['action'] == 'remove_auth'):
remove_auth()
elif(params['action'] == 'advanced_editor'):
editor = AdvancedBackupEditor()
editor.showMainScreen()
elif(params['action'] == 'advanced_copy_config'):
editor = AdvancedBackupEditor()
editor.copySimpleConfig()

View File

@ -147,7 +147,7 @@
<dependency type="visible" setting="remote_selection">2</dependency> <dependency type="visible" setting="remote_selection">2</dependency>
</dependencies> </dependencies>
<control type="button" format="action"> <control type="button" format="action">
<data>RunScript(special://home/addons/script.xbmcbackup/launcher.py,action=authorize_cloud,provider=dropbox)</data> <data>RunScript(script.xbmcbackup,mode=launcher,action=authorize_cloud,provider=dropbox)</data>
</control> </control>
</setting> </setting>
</group> </group>
@ -160,7 +160,7 @@
<dependency type="visible" setting="remote_selection">2</dependency> <dependency type="visible" setting="remote_selection">2</dependency>
</dependencies> </dependencies>
<control type="button" format="action"> <control type="button" format="action">
<data>RunScript(special://home/addons/script.xbmcbackup/launcher.py,action=remove_auth)</data> <data>RunScript(script.xbmcbackup,mode=launcher,action=remove_auth)</data>
</control> </control>
</setting> </setting>
</group> </group>
@ -252,7 +252,7 @@
<dependency type="visible" setting="backup_selection_type">1</dependency> <dependency type="visible" setting="backup_selection_type">1</dependency>
</dependencies> </dependencies>
<control type="button" format="action"> <control type="button" format="action">
<data>RunScript(special://home/addons/script.xbmcbackup/launcher.py,action=advanced_editor)</data> <data>RunScript(script.xbmcbackup,mode=launcher,action=advanced_editor)</data>
</control> </control>
</setting> </setting>
<setting id="advanced_defaults" type="action" label="30139" help=""> <setting id="advanced_defaults" type="action" label="30139" help="">
@ -262,7 +262,7 @@
<dependency type="visible" setting="backup_selection_type">1</dependency> <dependency type="visible" setting="backup_selection_type">1</dependency>
</dependencies> </dependencies>
<control type="button" format="action"> <control type="button" format="action">
<data>RunScript(special://home/addons/script.xbmcbackup/launcher.py,action=advanced_copy_config)</data> <data>RunScript(script.xbmcbackup,mode=launcher,action=advanced_copy_config)</data>
</control> </control>
</setting> </setting>
</group> </group>