def prepare_visuals(self):
        """Prepare objects and values for display."""

        ### define max width for text surfaces, by
        ###  subtracting the width of the icon and the
        ### padding in both sides of the icon from the
        ### self.width argument defined upon
        ### initialization; note we also remove some
        ### extra pixels from the width, using an amount
        ### defined empirically, just for better aesthetics

        max_text_width = (
            self.width
            - FILE_ICON.get_width()  # TODO use constant instead
            - (self.padding * 2)
            - 7  # arbitrary value defined empirically
        )

        ### create new text settings that include the max
        ### text width

        self.normal_text_settings = {
            **NORMAL_KWARGS,
            "max_width": max_text_width,
        }

        self.selected_text_settings = {
            **SELECTED_KWARGS,
            "max_width": max_text_width,
        }

        ### define size for background

        ## the height is the height of the tallest object
        ## plus padding from both vertical ends

        max_height = max(
            FILE_ICON.get_height(),
            NORMAL_KWARGS["font_height"],
        )

        height = max_height + (self.padding * 2)

        ## size is self.width plus the height we just
        ## calculated
        bg_size = self.width, height

        ### create and store backgrounds

        self.normal_bg = RECT_SURF_MAP[(*bg_size, NORMAL_PATH_BG)]

        self.selected_bg = RECT_SURF_MAP[(*bg_size, SELECTED_PATH_BG)]

        ### assign current bg
        self.bg = self.normal_bg
Prepare objects and values for display.
nodezator/fileman/pathobj.py