Skip to content

Commit 9c78577

Browse files
authored
Allow to hide information about pages in the menu (#471)
* Add the ability to hide page information in the "ListMenu" and "PagedMenu" * Simplify the code for showing page information in the menu * Do not append redundant symbols Do not add a leading space if there is no title. Do not add a new line if there is no title and no pagination. * Add the ability to hide page information in the "ListESCMenu" and "PagedESCMenu"
1 parent 1bd1750 commit 9c78577

File tree

3 files changed

+30
-20
lines changed

3 files changed

+30
-20
lines changed

addons/source-python/packages/source-python/menus/base.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -421,6 +421,21 @@ def _translate_text(text, player_index):
421421
return text
422422

423423

424+
def _format_paged_title(menu, player_index, page):
425+
buffer = ''
426+
427+
if menu.title:
428+
buffer += _translate_text(menu.title, player_index)
429+
430+
if menu.show_pages:
431+
if buffer:
432+
buffer += ' '
433+
434+
buffer += f'[{page.index + 1}/{menu.page_count}]'
435+
436+
return buffer
437+
438+
424439
# =============================================================================
425440
# >> LISTENERS
426441
# =============================================================================

addons/source-python/packages/source-python/menus/esc.py

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
from menus.base import _BaseMenu
1717
from menus.base import _PagedMenuBase
1818
from menus.base import _BaseOption
19+
from menus.base import _format_paged_title
1920
from menus.base import _translate_text
2021
from menus.queue import ESC_SELECTION_CMD
2122
from menus.queue import _esc_queues
@@ -169,7 +170,7 @@ class PagedESCMenu(SimpleESCMenu, _PagedMenuBase):
169170
def __init__(
170171
self, data=None, select_callback=None, build_callback=None, close_callback=None,
171172
description=None, title=None, title_color=WHITE, fill=True,
172-
parent_menu=None):
173+
parent_menu=None, show_pages=True):
173174
"""Initialize the object.
174175
175176
:param iterable|None data: See :meth:`menus.base._BaseMenu.__init__`.
@@ -192,6 +193,7 @@ def __init__(
192193
description, title, title_color)
193194
self.fill = fill
194195
self.parent_menu = parent_menu
196+
self.show_pages = show_pages
195197

196198
@staticmethod
197199
def _get_max_item_count():
@@ -205,16 +207,8 @@ def _format_header(self, player_index, page, data):
205207
:param _PlayerPage page: The player's current page.
206208
:param KeyValues data: The current menu data.
207209
"""
208-
# Create the page info string
209-
info = '[{0}/{1}]'.format(page.index + 1, self.page_count)
210-
211-
if self.title is not None:
212-
data.set_string('title', '{0} {1}'.format(
213-
_translate_text(self.title, player_index), info))
214-
else:
215-
data.set_string('title', info)
216-
217-
data.set_color('color', self.title_color)
210+
buffer = _format_paged_title(self, player_index, page)
211+
data.set_string('title', buffer)
218212

219213
def _format_body(self, player_index, page, data):
220214
"""Prepare the body for the menu.
@@ -316,7 +310,7 @@ class ListESCMenu(PagedESCMenu):
316310
def __init__(
317311
self, data=None, select_callback=None, build_callback=None, close_callback=None,
318312
description=None, title=None, title_color=WHITE, fill=True,
319-
parent_menu=None, items_per_page=5):
313+
parent_menu=None, items_per_page=5, show_pages=True):
320314
"""Initialize the object.
321315
322316
:param iterable|None data: See :meth:`menus.base._BaseMenu.__init__`.
@@ -335,7 +329,7 @@ def __init__(
335329
on a single page (5 is the maximum).
336330
"""
337331
super().__init__(data, select_callback, build_callback, close_callback, description,
338-
title, title_color, fill, parent_menu)
332+
title, title_color, fill, parent_menu, show_pages)
339333
self.items_per_page = items_per_page
340334

341335
def _get_max_item_count(self):

addons/source-python/packages/source-python/menus/radio.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
from menus.base import _BaseMenu
1414
from menus.base import _PagedMenuBase
1515
from menus.base import _BaseOption
16+
from menus.base import _format_paged_title
1617
from menus.base import _translate_text
1718
from menus.queue import _radio_queues
1819
# Messages
@@ -144,7 +145,7 @@ def __init__(
144145
self, data=None, select_callback=None,
145146
build_callback=None, close_callback=None, description=None,
146147
title=None, top_separator='-' * 30, bottom_separator='-' * 30,
147-
fill=True, parent_menu=None):
148+
fill=True, parent_menu=None, show_pages=True):
148149
"""Initialize the object.
149150
150151
:param iterable|None data: See :meth:`menus.base._BaseMenu.__init__`.
@@ -175,6 +176,7 @@ def __init__(
175176
self.bottom_separator = bottom_separator
176177
self.fill = fill
177178
self.parent_menu = parent_menu
179+
self.show_pages = show_pages
178180

179181
@staticmethod
180182
def _get_max_item_count():
@@ -189,11 +191,10 @@ def _format_header(self, player_index, page, slots):
189191
:param slots: A set to which slots can be added.
190192
:type slots: :class:`set`
191193
"""
192-
# Create the page info string
193-
info = '[{0}/{1}]\n'.format(page.index + 1, self.page_count)
194+
buffer = _format_paged_title(self, player_index, page)
194195

195-
buffer = '{0} {1}'.format(_translate_text(
196-
self.title, player_index), info) if self.title else info
196+
if buffer:
197+
buffer += '\n'
197198

198199
# Set description if present
199200
if self.description is not None:
@@ -328,7 +329,7 @@ def __init__(
328329
self, data=None, select_callback=None, build_callback=None, close_callback=None,
329330
description=None, title=None, top_separator='-' * 30,
330331
bottom_separator='-' * 30, fill=True, parent_menu=None,
331-
items_per_page=10):
332+
items_per_page=10, show_pages=True):
332333
"""Initialize the object.
333334
334335
:param iterable|None data: See :meth:`menus.base._BaseMenu.__init__`.
@@ -348,7 +349,7 @@ def __init__(
348349
on a single page.
349350
"""
350351
super().__init__(data, select_callback, build_callback, close_callback, description,
351-
title, top_separator, bottom_separator, fill, parent_menu)
352+
title, top_separator, bottom_separator, fill, parent_menu, show_pages)
352353
self.items_per_page = items_per_page
353354

354355
def _get_max_item_count(self):

0 commit comments

Comments
 (0)