How to arrange report menu options into two columns?

Gramps version AIO64-6.0.3–1, Windows 11

I am making a new graph report based on the Relationship Graph. As I add menu options on each report option page, each menu option occupies an entire line of the report option page.

For example, in the baseline Report Graph on the Graph Style report option page, each menu option for selecting the color for males, females, etc each take an entire line. It seems like each of these menu options don’t need to take up an entire line.

If I add more menu options on the Graph Style report option page the result is that the report window grows vertically. After adding several menu options the report window grows so large that the Cancel and OK selection buttons at the bottom of the window are no longer visible (off the bottom of the screen).

I know that the boolean options can be created as a boolean option list which can span 2 columns, but that doesn’t solve the basic issue of most menu options occupying an entire line. I would like to be able to arrange the menu options into two columns similar to the menu options on the Paper Options report option page.

What I would like to do is to arrange the menu options so that the color menu option and shape menu option for males are both on the same line. Similarly for females, and the rest.

Is there an easy way to do this or must I split the menu options across multiple report option pages?

Thanks

I did some digging and the Paper Options tab use a glade file, papermenu.glade to achieve the layout results. The Paper Options tab is used in almost every report and is the same for all reports that uses it.

I know the configure.py file uses grid settings to tell how much space the options will use. The Genealogical Symbols tab uses a grid setup to achieve two columns that you might find helpful.

I am not a coder so I can only tweak what someone else has dreamt up.

You can look at the narrativeweb.py in gramps/plugins/webreport/

You have all you need to do what you want.

after line 2087, you have:

    def add_menu_options(self, menu):
        """
        Add options to the menu for the website.

        @param: menu -- The menu for which we add options
        """
        self.__add_report_options(menu)  <== for example
        self.__add_report_html(menu)
        self.__add_report_display(menu) 
        self.__add_page_generation_options(menu)
        self.__add_more_pages(menu)
        ...

then in the __add_report_display(menu) at line 2108 , you have:

    def __add_report_options(self, menu):
        """
        Options on the "Report Options" tab.

        @param: menu -- The menu for which we add options
        """
        category_name = _("Report Options")
        addopt = partial(menu.add_option, category_name)

        self.__archive = BooleanOption(_("Store website in .tar.gz archive"), False)
        self.__archive.set_help(_("Whether to store the website in an " "archive file"))
        addopt("archive", self.__archive)
        self.__archive.connect("value-changed", self.__archive_changed)
        ...