def __init__(self): self.userthemes_path = try_encode( "special://profile/addon_data/%s/themes/" % xbmc.getSkinDir()) if not xbmcvfs.exists(self.userthemes_path): xbmcvfs.mkdir(self.userthemes_path) self.skinthemes_path = try_encode("special://skin/extras/skinthemes/") if xbmcvfs.exists( "special://home/addons/resource.skinthemes.%s/resources/" % get_skin_name()): self.skinthemes_path = try_encode( "special://home/addons/resource.skinthemes.%s/resources/" % get_skin_name()) self.addon = xbmcaddon.Addon(ADDON_ID)
def backup_theme(self, themename): '''backup a colortheme to a zipfile''' import zipfile backup_path = xbmcgui.Dialog().browse( 3, self.addon.getLocalizedString(32029), "files") if backup_path: backup_name = "%s ColorTheme - %s" % (get_skin_name().capitalize(), themename) backupfile = os.path.join(backup_path, backup_name + ".zip") zip_temp = 'special://temp/%s.zip' % backup_name xbmcvfs.delete(zip_temp) xbmcvfs.delete(backupfile) zip_temp = xbmcvfs.translatePath(zip_temp) zip_file = zipfile.ZipFile(zip_temp, "w", zipfile.ZIP_DEFLATED) abs_src = os.path.abspath( xbmcvfs.translatePath(self.userthemes_path)) for filename in xbmcvfs.listdir(self.userthemes_path)[1]: if (filename.startswith("%s_" % themename) or filename.replace( ".theme", "").replace(".jpg", "") == themename): filename = filename filepath = xbmcvfs.translatePath(self.userthemes_path + filename) absname = os.path.abspath(filepath) arcname = absname[len(abs_src) + 1:] zip_file.write(absname, arcname) zip_file.close() xbmcvfs.copy(zip_temp, backupfile)
def get_backupfilename(self, promptfilename=False): '''get the filename for the new backup''' backupfile = "%s Skinbackup (%s)" % (get_skin_name().capitalize( ), datetime.now().strftime('%Y-%m-%d %H.%M.%S')) if promptfilename: header = self.addon.getLocalizedString(32003) backupfile = xbmcgui.Dialog().input(header, backupfile) backupfile += ".zip" return self.get_backuppath() + backupfile
def backup_theme(self, themename): '''backup a colortheme to a zipfile''' import zipfile backup_path = xbmcgui.Dialog().browse( 3, self.addon.getLocalizedString(32029), "files").decode("utf-8") if backup_path: xbmc.executebuiltin("ActivateWindow(busydialog)") backup_name = try_encode("%s ColorTheme - %s" % (get_skin_name().capitalize(), themename)) backupfile = os.path.join(backup_path, backup_name + try_encode(".zip")) zip_temp = try_encode('special://temp/%s.zip' % backup_name) xbmcvfs.delete(zip_temp) xbmcvfs.delete(backupfile) if sys.version_info.major == 3: zip_temp = xbmcvfs.translatePath(zip_temp).decode("utf-8") zip_file = zipfile.ZipFile(zip_temp, "w", zipfile.ZIP_DEFLATED) abs_src = os.path.abspath( xbmcvfs.translatePath( self.userthemes_path).decode("utf-8")) else: zip_temp = xbmc.translatePath(zip_temp).decode("utf-8") zip_file = zipfile.ZipFile(zip_temp, "w", zipfile.ZIP_DEFLATED) abs_src = os.path.abspath( xbmc.translatePath(self.userthemes_path).decode("utf-8")) for filename in xbmcvfs.listdir(self.userthemes_path)[1]: if (filename.startswith("%s_" % themename) or filename.replace( ".theme", "").replace(".jpg", "") == themename): filename = filename.decode("utf-8") if sys.version_info.major == 3: filepath = xbmcvfs.translatePath( self.userthemes_path + filename).decode("utf-8") else: filepath = xbmc.translatePath(self.userthemes_path + filename).decode("utf-8") absname = os.path.abspath(filepath) arcname = absname[len(abs_src) + 1:] zip_file.write(absname, arcname) zip_file.close() xbmcvfs.copy(zip_temp, backupfile) xbmc.executebuiltin("Dialog.Close(busydialog)")