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)")