def _generateDescr(item, label, moreLabel, paramsNames, maxItemsCount):
    moduleCompatibles = params_helper.getCompatibles(item)
    compatiblesSet = set()
    for paramType, compatible in moduleCompatibles:
        if paramType in paramsNames:
            compatiblesSet |= set(compatible.split(', '))

    compatiblesSet = list(compatiblesSet)
    compatiblesCount = len(compatiblesSet)
    descrItems = [label, ', '.join(compatiblesSet[:maxItemsCount])]
    if compatiblesCount > maxItemsCount:
        descrItems.append(i18n.makeString(moreLabel, vehCount=text_styles.stats(compatiblesCount - maxItemsCount)))
    return ' '.join(descrItems)
Пример #2
0
    def _packBlocks(self, *args, **kwargs):
        self.item = self.context.buildItem(*args, **kwargs)
        items = super(ShellBlockToolTipData, self)._packBlocks()
        shell = self.item
        statsConfig = self.context.getStatsConfiguration(shell)
        paramsConfig = self.context.getParamsConfiguration(shell)
        statusConfig = self.context.getStatusConfiguration(shell)
        valueWidth = 107
        leftPadding = 20
        rightPadding = 20
        lrPaddings = formatters.packPadding(left=leftPadding,
                                            right=rightPadding)
        blockTopPadding = -4
        blockPadding = formatters.packPadding(left=leftPadding,
                                              right=rightPadding,
                                              top=blockTopPadding)
        textGap = -2
        vDescr = paramsConfig.vehicle.descriptor if paramsConfig.vehicle is not None else None
        params = params_helper.getParameters(shell, vDescr)
        showBasicData = self.__basicDataAllowed and params['isBasic']
        items.append(
            formatters.packBuildUpBlockData(
                HeaderBlockConstructor(shell, statsConfig, leftPadding,
                                       rightPadding, params).construct(),
                padding=formatters.packPadding(left=35,
                                               right=rightPadding,
                                               top=14)))
        priceBlock, invalidWidth = PriceBlockConstructor(
            shell, statsConfig, 80).construct()
        if priceBlock:
            self._setWidth(
                _TOOLTIP_MAX_WIDTH if invalidWidth else _TOOLTIP_MIN_WIDTH)
            items.append(
                formatters.packBuildUpBlockData(priceBlock,
                                                padding=blockPadding,
                                                gap=textGap))
        statusBlock = StatusBlockConstructor(shell, statusConfig).construct()
        if self.__basicDataAllowed:
            statsBlock = CommonStatsBlockConstructor(shell, paramsConfig,
                                                     valueWidth,
                                                     params).construct()
        else:
            statsBlock = _AdvancedCommonStatsBlockConstructior(
                shell, paramsConfig, valueWidth, params).construct()
        bottomPadding = 4 if statusBlock or showBasicData else 0
        if statsBlock:
            items.append(
                formatters.packBuildUpBlockData(statsBlock,
                                                padding=formatters.packPadding(
                                                    left=leftPadding,
                                                    right=rightPadding,
                                                    top=blockTopPadding,
                                                    bottom=bottomPadding),
                                                gap=textGap))
        if statusBlock:
            items.append(
                formatters.packBuildUpBlockData(statusBlock,
                                                padding=lrPaddings))
        if statsConfig.showCompatibles:
            moduleCompatibles = params_helper.getCompatibles(shell)
            compatibleBlocks = []
            for paramType, paramValue in moduleCompatibles:
                compatibleBlocks.append(
                    formatters.packTitleDescBlock(
                        title=text_styles.middleTitle(
                            _ms(MENU.moduleinfo_compatible(paramType))),
                        desc=text_styles.main(paramValue)))

            compatibleBlocks.append(
                formatters.packTextBlockData(text=text_styles.stats(
                    _ms(MENU.MODULEINFO_ADDITIONALINFO))))
            if compatibleBlocks:
                items.append(
                    formatters.packBuildUpBlockData(
                        compatibleBlocks,
                        padding=formatters.packPadding(left=leftPadding,
                                                       bottom=8)))
        if showBasicData:
            boldText = text_styles.neutral(
                TOOLTIPS.SHELL_BASIC_DESCRIPTION_BOLD)
            items.append(
                formatters.packBuildUpBlockData([
                    formatters.packTextBlockData(text_styles.standard(
                        _ms(TOOLTIPS.SHELL_BASIC_DESCRIPTION, bold=boldText)),
                                                 padding=lrPaddings)
                ],
                                                padding=formatters.packPadding(
                                                    right=rightPadding)))
        return items