def select_image(self, skinstring, allow_multi=True, windowheader="", resource_addon="", skinhelper_backgrounds=False, current_value=""): '''helper which lets the user select an image or imagepath from resourceaddons or custom path''' xbmc.executebuiltin("ActivateWindow(busydialog)") images = [] if not windowheader: windowheader = self.addon.getLocalizedString(32020) if not current_value: current_value = xbmc.getInfoLabel("Skin.String(%s.label)" % skinstring).decode("utf-8") # none option images.append((self.addon.getLocalizedString(32001), "", "", "DefaultAddonNone.png")) # custom single images.append((self.addon.getLocalizedString(32004), "", "", "DefaultAddonPicture.png")) # custom multi if allow_multi: images.append((self.addon.getLocalizedString(32005), "", "", "DefaultFolder.png")) # backgrounds supplied in our special skinsettings.xml file skinimages = self.skinsettings if skinimages.get(skinstring): for item in skinimages[skinstring]: if not item["condition"] or getCondVisibility(item["condition"]): images.append((item["label"], item["value"], item["description"], item["icon"])) # backgrounds provided by skinhelper if skinhelper_backgrounds: from skinshortcuts import get_skinhelper_backgrounds for label, image in get_skinhelper_backgrounds(): images.append((label, image, "Skin Helper Backgrounds", xbmc.getInfoLabel(image))) # resource addon images if resource_addon: from resourceaddons import get_resourceimages images += get_resourceimages(resource_addon) # create listitems listitems = [] for label, imagepath, label2, icon in images: listitem = xbmcgui.ListItem(label=label, label2=label2, iconImage=icon) listitem.setPath(imagepath) listitems.append(listitem) # show select dialog with choices dialog = DialogSelect("DialogSelect.xml", "", listing=listitems, windowtitle=windowheader, richlayout=True, getmorebutton=resource_addon, autofocuslabel=current_value) xbmc.executebuiltin("Dialog.Close(busydialog)") dialog.doModal() result = dialog.result del dialog if isinstance(result, bool): if result: # refresh listing requested by getmore button return self.select_image(skinstring, allow_multi, windowheader, resource_addon, skinhelper_backgrounds, current_value) elif result: label = result.getLabel().decode("utf-8") if label == self.addon.getLocalizedString(32004): # browse for single image custom_image = SkinSettings().save_skin_image(skinstring, False, self.addon.getLocalizedString(32004)) if custom_image: result.setPath(custom_image) else: return self.selectimage() elif label == self.addon.getLocalizedString(32005): # browse for image path custom_image = SkinSettings().save_skin_image(skinstring, True, self.addon.getLocalizedString(32005)) if custom_image: result.setPath(custom_image) else: return self.selectimage() # return values return (result.getLabel().decode("utf-8"), result.getfilename().decode("utf-8")) # return empty values return ("", "")
def select_image(self, skinstring, allow_multi=True, windowheader="", resource_addon="", skinhelper_backgrounds=False, current_value=""): '''helper which lets the user select an image or imagepath from resourceaddons or custom path''' xbmc.executebuiltin("ActivateWindow(busydialog)") images = [] if not windowheader: windowheader = self.addon.getLocalizedString(32020) if not current_value: current_value = xbmc.getInfoLabel("Skin.String(%s.label)" % skinstring).decode("utf-8") # none option images.append((self.addon.getLocalizedString(32001), "", "", "DefaultAddonNone.png")) # custom single images.append((self.addon.getLocalizedString(32004), "", "", "DefaultAddonPicture.png")) # custom multi if allow_multi: images.append((self.addon.getLocalizedString(32005), "", "", "DefaultFolder.png")) # backgrounds supplied in our special skinsettings.xml file skinimages = self.skinsettings if skinimages.get(skinstring): for item in skinimages[skinstring]: if not item["condition"] or xbmc.getCondVisibility(item["condition"]): images.append((item["label"], item["value"], item["description"], item["icon"])) # backgrounds provided by skinhelper if skinhelper_backgrounds: from skinshortcuts import get_skinhelper_backgrounds for label, image in get_skinhelper_backgrounds(): images.append((label, image, "Skin Helper Backgrounds", xbmc.getInfoLabel(image))) # resource addon images if resource_addon: from resourceaddons import get_resourceimages images += get_resourceimages(resource_addon) # create listitems listitems = [] for label, imagepath, label2, icon in images: listitem = xbmcgui.ListItem(label=label, label2=label2, iconImage=icon) listitem.setPath(imagepath) listitems.append(listitem) # show select dialog with choices dialog = DialogSelect("DialogSelect.xml", "", listing=listitems, windowtitle=windowheader, richlayout=True, getmorebutton=resource_addon, autofocuslabel=current_value) xbmc.executebuiltin("Dialog.Close(busydialog)") dialog.doModal() result = dialog.result del dialog if isinstance(result, bool): if result: # refresh listing requested by getmore button return self.select_image(skinstring, allow_multi, windowheader, resource_addon, skinhelper_backgrounds, current_value) elif result: label = result.getLabel().decode("utf-8") if label == self.addon.getLocalizedString(32004): # browse for single image custom_image = SkinSettings().save_skin_image(skinstring, False, self.addon.getLocalizedString(32004)) if custom_image: result.setPath(custom_image) else: return self.selectimage() elif label == self.addon.getLocalizedString(32005): # browse for image path custom_image = SkinSettings().save_skin_image(skinstring, True, self.addon.getLocalizedString(32005)) if custom_image: result.setPath(custom_image) else: return self.selectimage() # return values return (result.getLabel().decode("utf-8"), result.getfilename().decode("utf-8")) # return empty values return ("", "")