def get_action_objs():
    """Return custom list with action objects.

    That is, objects which perform specific action when
    clicked (when the mouse is released, actually).
    """
    ### instantiate a custom list
    objs = List2D()

    ### instantiate and store a label with 'Actions' as
    ### its text

    actions_label = Object2D.from_surface(
        render_text(text=t.splash_screen.actions, **TEXT_SETTINGS)
    )

    objs.append(actions_label)

    ### define data for action objects to be created;
    ###
    ### each item is a tuple containing the image filename,
    ### a boolean indicating whether to use alpha or not,
    ### the text for the object and the command triggered
    ### by the object, respectively

    actions_data = (
        (NEW_NATIVE_FILE_ICON, t.splash_screen.new_file, APP_REFS.wm.new),
        (FOLDER_ICON, t.splash_screen.open_file, APP_REFS.wm.open),
        (
            AWW_ICON,
            "Read manual",
            partial(open_htsl_link, "nodezator://manual.nodezator.pysite"),
        ),
    )

    ### iterate over it, creating and positioning action
    ### objects

    ## define an initial topleft for the objects
    topleft = actions_label.rect.move(10, 5).bottomleft

    ## iterate

    for surf, text, command in actions_data:

        ## text surface

        text_surf = render_text(
            text=text,
            **TEXT_SETTINGS,
        )

        ## instantiate

        action_obj = Object2D.from_surface(
            surface=(
                combine_surfaces(
                    [surf, text_surf],
                    retrieve_pos_from="midright",
                    assign_pos_to="midleft",
                    offset_pos_by=(3, 0),
                )
            )
        )

        ## set 'on_mouse_release' command to perform the
        ## action
        action_obj.on_mouse_release = get_oblivious_callable(command)

        ## position the object
        action_obj.rect.topleft = topleft

        ## update the topleft used so the next object is
        ## properly positioned if there is one
        topleft = action_obj.rect.move(0, 3).bottomleft

        ## store the action object
        objs.append(action_obj)

    ### finally return the list of objects
    return objs
Return custom list with action objects.

    That is, objects which perform specific action when
    clicked (when the mouse is released, actually).
    
nodezator/splashscreen/factoryfuncs.py