diff --git a/addons/source-python/packages/source-python/menus/base.py b/addons/source-python/packages/source-python/menus/base.py index 6da8e9492..45e4e5a83 100755 --- a/addons/source-python/packages/source-python/menus/base.py +++ b/addons/source-python/packages/source-python/menus/base.py @@ -421,6 +421,21 @@ def _translate_text(text, player_index): return text +def _format_paged_title(menu, player_index, page): + buffer = '' + + if menu.title: + buffer += _translate_text(menu.title, player_index) + + if menu.show_pages: + if buffer: + buffer += ' ' + + buffer += f'[{page.index + 1}/{menu.page_count}]' + + return buffer + + # ============================================================================= # >> LISTENERS # ============================================================================= diff --git a/addons/source-python/packages/source-python/menus/esc.py b/addons/source-python/packages/source-python/menus/esc.py index 59ea11a62..20dd8e44b 100644 --- a/addons/source-python/packages/source-python/menus/esc.py +++ b/addons/source-python/packages/source-python/menus/esc.py @@ -16,6 +16,7 @@ from menus.base import _BaseMenu from menus.base import _PagedMenuBase from menus.base import _BaseOption +from menus.base import _format_paged_title from menus.base import _translate_text from menus.queue import ESC_SELECTION_CMD from menus.queue import _esc_queues @@ -169,7 +170,7 @@ class PagedESCMenu(SimpleESCMenu, _PagedMenuBase): def __init__( self, data=None, select_callback=None, build_callback=None, close_callback=None, description=None, title=None, title_color=WHITE, fill=True, - parent_menu=None): + parent_menu=None, show_pages=True): """Initialize the object. :param iterable|None data: See :meth:`menus.base._BaseMenu.__init__`. @@ -192,6 +193,7 @@ def __init__( description, title, title_color) self.fill = fill self.parent_menu = parent_menu + self.show_pages = show_pages @staticmethod def _get_max_item_count(): @@ -205,16 +207,8 @@ def _format_header(self, player_index, page, data): :param _PlayerPage page: The player's current page. :param KeyValues data: The current menu data. """ - # Create the page info string - info = '[{0}/{1}]'.format(page.index + 1, self.page_count) - - if self.title is not None: - data.set_string('title', '{0} {1}'.format( - _translate_text(self.title, player_index), info)) - else: - data.set_string('title', info) - - data.set_color('color', self.title_color) + buffer = _format_paged_title(self, player_index, page) + data.set_string('title', buffer) def _format_body(self, player_index, page, data): """Prepare the body for the menu. @@ -316,7 +310,7 @@ class ListESCMenu(PagedESCMenu): def __init__( self, data=None, select_callback=None, build_callback=None, close_callback=None, description=None, title=None, title_color=WHITE, fill=True, - parent_menu=None, items_per_page=5): + parent_menu=None, items_per_page=5, show_pages=True): """Initialize the object. :param iterable|None data: See :meth:`menus.base._BaseMenu.__init__`. @@ -335,7 +329,7 @@ def __init__( on a single page (5 is the maximum). """ super().__init__(data, select_callback, build_callback, close_callback, description, - title, title_color, fill, parent_menu) + title, title_color, fill, parent_menu, show_pages) self.items_per_page = items_per_page def _get_max_item_count(self): diff --git a/addons/source-python/packages/source-python/menus/radio.py b/addons/source-python/packages/source-python/menus/radio.py index 1f2bff303..56f31c309 100644 --- a/addons/source-python/packages/source-python/menus/radio.py +++ b/addons/source-python/packages/source-python/menus/radio.py @@ -13,6 +13,7 @@ from menus.base import _BaseMenu from menus.base import _PagedMenuBase from menus.base import _BaseOption +from menus.base import _format_paged_title from menus.base import _translate_text from menus.queue import _radio_queues # Messages @@ -141,7 +142,7 @@ def __init__( self, data=None, select_callback=None, build_callback=None, close_callback=None, description=None, title=None, top_separator='-' * 30, bottom_separator='-' * 30, - fill=True, parent_menu=None): + fill=True, parent_menu=None, show_pages=True): """Initialize the object. :param iterable|None data: See :meth:`menus.base._BaseMenu.__init__`. @@ -172,6 +173,7 @@ def __init__( self.bottom_separator = bottom_separator self.fill = fill self.parent_menu = parent_menu + self.show_pages = show_pages @staticmethod def _get_max_item_count(): @@ -186,11 +188,10 @@ def _format_header(self, player_index, page, slots): :param slots: A set to which slots can be added. :type slots: :class:`set` """ - # Create the page info string - info = '[{0}/{1}]\n'.format(page.index + 1, self.page_count) + buffer = _format_paged_title(self, player_index, page) - buffer = '{0} {1}'.format(_translate_text( - self.title, player_index), info) if self.title else info + if buffer: + buffer += '\n' # Set description if present if self.description is not None: @@ -325,7 +326,7 @@ def __init__( self, data=None, select_callback=None, build_callback=None, close_callback=None, description=None, title=None, top_separator='-' * 30, bottom_separator='-' * 30, fill=True, parent_menu=None, - items_per_page=10): + items_per_page=10, show_pages=True): """Initialize the object. :param iterable|None data: See :meth:`menus.base._BaseMenu.__init__`. @@ -345,7 +346,7 @@ def __init__( on a single page. """ super().__init__(data, select_callback, build_callback, close_callback, description, - title, top_separator, bottom_separator, fill, parent_menu) + title, top_separator, bottom_separator, fill, parent_menu, show_pages) self.items_per_page = items_per_page def _get_max_item_count(self):