def run(addon): """Show a dialog box that contains a lot of information (all there is to know) about the addon. @param An addons.Addon object. """ ident = addon.getId() dialog, area = sb.util.dialog.createButtonDialog('addon-inspector-dialog', ['ok'], 'ok', size=(570, 450)) msg = "" msg += '<h3>' + language.translate(ident) + '</h3>' if language.isDefined(ident + '-readme'): msg += "<p>" + language.translate(ident + '-readme') def makeField(header, content): return '<tr><td width="20%" bgcolor="#E8E8E8" align="right"><b>' + header + \ '</b></td><td width="80%">' + content + '</td></tr>' beginTable = '<p><table width="100%" border=0 cellpadding=6 cellspacing=0>' endTable = '</table>' # # General Information # msg += beginTable msg += makeField('Summary:', language.translate(ident + '-summary', '-')) msg += makeField('Version:', language.translate(ident + '-version', '-')) msg += makeField( 'Last Modified:', time.strftime("%a, %d %b %Y %H:%M:%S", time.localtime(addon.getLastModified()))) msg += makeField('Author(s):', language.translate(ident + '-author', '-')) msg += makeField('Contact:', language.translate(ident + '-contact', '-')) msg += makeField('Copyright:', language.translate(ident + '-copyright', '-')) msg += makeField('License:', language.translate(ident + '-license', '-')) msg += makeField('Category:', addon.getCategory().getPath()) msg += makeField('Format:', language.translate(addon.getType())) msg += makeField('Identifier:', addon.getId()) msg += endTable # # Raw Dependencies # msg += '<h3>Dependencies</h3>' + beginTable allDeps = [] # Excluded categories. dep = [] for category in addon.getExcludedCategories(): dep.append(category.getPath()) allDeps.append(('Excluded Categories:', dep)) # Keywords. for type, label in [(sb.addon.EXCLUDES, 'Excludes:'), (sb.addon.REQUIRES, 'Requires:'), (sb.addon.PROVIDES, 'Provides:'), (sb.addon.OFFERS, 'Offers:')]: # Make a copy of the list so we can modify it. dep = [] for kw in addon.getKeywords(type): dep.append(kw) allDeps.append((label, dep)) # Create a table out of each dependency type. for heading, listing in allDeps: msg += makeField(heading, string.join(listing, '<br>')) msg += endTable # # Content Analysis # msg += '<h3>Contents</h3>' + beginTable msg += makeField('Content Path:', addon.getContentPath()) msg += endTable #msg += "<p>format-specific data" #msg += "<br>content analysis, size" #msg += "<br>list of files, if a bundle" #msg += '<h3>Identifiers</h3>' #msg += "<br>all internal identifiers used by the addon" #msg += '<h3>Metadata</h3>' #msg += "<br>metadata analysis, source" text = area.createFormattedText() text.setMinSize(500, 200) text.setText(msg) dialog.run()
def run(addon): """Show a dialog box that contains a lot of information (all there is to know) about the addon. @param An addons.Addon object. """ ident = addon.getId() dialog, area = sb.util.dialog.createButtonDialog( 'addon-inspector-dialog', ['ok'], 'ok', size=(570, 450)) msg = "" msg += '<h3>' + language.translate(ident) + '</h3>' if language.isDefined(ident + '-readme'): msg += "<p>" + language.translate(ident + '-readme') def makeField(header, content): return '<tr><td width="20%" bgcolor="#E8E8E8" align="right"><b>' + header + \ '</b></td><td width="80%">' + content + '</td></tr>' beginTable = '<p><table width="100%" border=0 cellpadding=6 cellspacing=0>' endTable = '</table>' # # General Information # msg += beginTable msg += makeField('Summary:', language.translate(ident + '-summary', '-')) msg += makeField('Version:', language.translate(ident + '-version', '-')) msg += makeField('Last Modified:', time.strftime("%a, %d %b %Y %H:%M:%S", time.localtime(addon.getLastModified()))) msg += makeField('Author(s):', language.translate(ident + '-author', '-')) msg += makeField('Contact:', language.translate(ident + '-contact', '-')) msg += makeField('Copyright:', language.translate(ident + '-copyright', '-')) msg += makeField('License:', language.translate(ident + '-license', '-')) msg += makeField('Category:', addon.getCategory().getPath()) msg += makeField('Format:', language.translate(addon.getType())) msg += makeField('Identifier:', addon.getId()) msg += endTable # # Raw Dependencies # msg += '<h3>Dependencies</h3>' + beginTable allDeps = [] # Excluded categories. dep = [] for category in addon.getExcludedCategories(): dep.append(category.getPath()) allDeps.append(('Excluded Categories:', dep)) # Keywords. for type, label in [(sb.addon.EXCLUDES, 'Excludes:'), (sb.addon.REQUIRES, 'Requires:'), (sb.addon.PROVIDES, 'Provides:'), (sb.addon.OFFERS, 'Offers:')]: # Make a copy of the list so we can modify it. dep = [] for kw in addon.getKeywords(type): dep.append(kw) allDeps.append((label, dep)) # Create a table out of each dependency type. for heading, listing in allDeps: msg += makeField(heading, string.join(listing, '<br>')) msg += endTable # # Content Analysis # msg += '<h3>Contents</h3>' + beginTable msg += makeField('Content Path:', addon.getContentPath()) msg += endTable #msg += "<p>format-specific data" #msg += "<br>content analysis, size" #msg += "<br>list of files, if a bundle" #msg += '<h3>Identifiers</h3>' #msg += "<br>all internal identifiers used by the addon" #msg += '<h3>Metadata</h3>' #msg += "<br>metadata analysis, source" text = area.createFormattedText() text.setMinSize(500, 200) text.setText(msg) dialog.run()
def refreshList(): """Refreshes the list of addons.""" addonList.freeze() # Try to keep the old selection, if there is one. oldSelections = addonList.getSelectedItems() addonList.clear() # Filtering parameters. profile = pr.getActive() isDefaults = profile is pr.getDefaults() if tree.getSelectedItem(): filterCategory = ao.getCategory(tree.getSelectedItem()) else: filterCategory = None # Which addons are currently attached? defaultAddons = pr.getDefaults().getAddons() if not isDefaults: profileAddons = pr.getActive().getAddons() else: profileAddons = None # Categories that will be in bold font in category-tree. boldCategories = [] # Determine filtering options. mode = listFilter.getSelectedItem() onlyCompatible = False onlyPWAD = False alsoBoxes = False if 'compatible' in mode: onlyCompatible = True if 'pwad' in mode: onlyPWAD = True if 'with-boxes' in mode: alsoBoxes = True for addon in ao.getAddons(): # Does this addon pass the filter? if not isDefaults and onlyCompatible: if not addon.isCompatibleWith(pr.getActive()): # Cannot be listed. continue if onlyPWAD and (addon.getType() != 'addon-type-wad' or not addon.isPWAD()): continue # Has a category been selected? if filterCategory and not filterCategory.isAncestorOf( addon.getCategory()): # Not in the category. continue # Addons in boxes are not listed unless the correct category is selected. if not alsoBoxes and addon.getBox(): # Addons in boxes are only visible if the selected category is a box category. boxCateg = addon.getBox().getContentCategoryLongId() if not filterCategory: continue if filterCategory.getLongId().find(boxCateg) != 0: # Not the right category. continue # Passed the filter! id = addon.getId() versionStr = '' icon = determineIcon(addon, profile, defaultAddons, profileAddons) if language.isDefined(id + '-version'): versionStr = language.translate(id + '-version') name = language.translate(id) if addon.getBox() and alsoBoxes: name += ' ' + language.translate('addon-list-in-box') addonList.addItemWithColumns(id, icon, name, versionStr) # Reselect old items. oldSelections.reverse() for sel in oldSelections: addonList.selectItem(sel) addonList.ensureVisible(sel) sortList() updateButtons() addonList.unfreeze() # Update the counter text. countText.setText( language.expand(language.translate('addon-counter'), str(len(addonList.getItems())), str(ao.getAddonCount()))) # Update boldings in category-tree. # --TODO!-- global mustRefreshList mustRefreshList = False
def refreshList(): """Refreshes the list of addons.""" addonList.freeze() # Try to keep the old selection, if there is one. oldSelections = addonList.getSelectedItems() addonList.clear() # Filtering parameters. profile = pr.getActive() isDefaults = profile is pr.getDefaults() if tree.getSelectedItem(): filterCategory = ao.getCategory(tree.getSelectedItem()) else: filterCategory = None # Which addons are currently attached? defaultAddons = pr.getDefaults().getAddons() if not isDefaults: profileAddons = pr.getActive().getAddons() else: profileAddons = None # Categories that will be in bold font in category-tree. boldCategories = [] # Determine filtering options. mode = listFilter.getSelectedItem() onlyCompatible = False onlyPWAD = False alsoBoxes = False if 'compatible' in mode: onlyCompatible = True if 'pwad' in mode: onlyPWAD = True if 'with-boxes' in mode: alsoBoxes = True for addon in ao.getAddons(): # Does this addon pass the filter? if not isDefaults and onlyCompatible: if not addon.isCompatibleWith(pr.getActive()): # Cannot be listed. continue if onlyPWAD and (addon.getType() != 'addon-type-wad' or not addon.isPWAD()): continue # Has a category been selected? if filterCategory and not filterCategory.isAncestorOf(addon.getCategory()): # Not in the category. continue # Addons in boxes are not listed unless the correct category is selected. if not alsoBoxes and addon.getBox(): # Addons in boxes are only visible if the selected category is a box category. boxCateg = addon.getBox().getContentCategoryLongId() if not filterCategory: continue if filterCategory.getLongId().find(boxCateg) != 0: # Not the right category. continue # Passed the filter! id = addon.getId() versionStr = '' icon = determineIcon(addon, profile, defaultAddons, profileAddons) if language.isDefined(id + '-version'): versionStr = language.translate(id + '-version') name = language.translate(id) if addon.getBox() and alsoBoxes: name += ' ' + language.translate('addon-list-in-box') addonList.addItemWithColumns(id, icon, name, versionStr) # Reselect old items. oldSelections.reverse() for sel in oldSelections: addonList.selectItem(sel) addonList.ensureVisible(sel) sortList() updateButtons() addonList.unfreeze() # Update the counter text. countText.setText(language.expand(language.translate('addon-counter'), str(len(addonList.getItems())), str(ao.getAddonCount()))) # Update boldings in category-tree. # --TODO!-- global mustRefreshList mustRefreshList = False