Update party_filter.py

This commit is contained in:
Y-ellow 2025-05-18 21:32:57 +01:00 committed by GitHub
parent 24ffca0f10
commit 7688db7012
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1,5 +1,4 @@
# BY Yelllow | Discord : @y.lw # Discord : @y.lw
# very very very clean code ;)
from __future__ import annotations from __future__ import annotations
from typing import Callable, TypeVar from typing import Callable, TypeVar
@ -13,13 +12,11 @@ is_refreshing = True
hide_full = False hide_full = False
hide_empty = False hide_empty = False
only_empty = False only_empty = False
buttons_or_checkboxes = 2
# TypeVars # TypeVars
ClassType = TypeVar('ClassType') ClassType = TypeVar('ClassType')
MethodType = TypeVar('MethodType') MethodType = TypeVar('MethodType')
def override(cls: ClassType) -> Callable[[MethodType], MethodType]: def override(cls: ClassType) -> Callable[[MethodType], MethodType]:
def decorator(new_method: MethodType) -> MethodType: def decorator(new_method: MethodType) -> MethodType:
method_name = new_method.__code__.co_name method_name = new_method.__code__.co_name
@ -30,16 +27,16 @@ def override(cls: ClassType) -> Callable[[MethodType], MethodType]:
return decorator return decorator
# Enhanced Gather Tab # Enhanced Gather Tab
class EnhancedPublicGatherTab(PublicGatherTab): class EnhancedPublicGatherTab(PublicGatherTab):
@override(PublicGatherTab) @override(PublicGatherTab)
def _build_join_tab(self, width: float, height: float) -> None: def _build_join_tab(self, width: float, height: float) -> None:
self._original__build_join_tab(width, height) self._original__build_join_tab(width, height)
self._open_window_button = bui.buttonwidget( self._open_window_button = bui.buttonwidget(
parent=self._container, label='Party Filter', size=(120, 45), parent=self._container,
position=(110, height - 115), on_activate_call=bs.WeakCall(self._open_window) label='Party Filters',
) size=(120, 45),
position=(110, height - 115),
on_activate_call=bs.WeakCall(self._open_window))
@override(PublicGatherTab) @override(PublicGatherTab)
def _open_window(self) -> None: def _open_window(self) -> None:
@ -47,115 +44,110 @@ class EnhancedPublicGatherTab(PublicGatherTab):
uiscale = bui.app.ui_v1.uiscale uiscale = bui.app.ui_v1.uiscale
scale = 1.8 if uiscale is babase.UIScale.SMALL else 1.55 if uiscale is babase.UIScale.MEDIUM else 1.0 scale = 1.8 if uiscale is babase.UIScale.SMALL else 1.55 if uiscale is babase.UIScale.MEDIUM else 1.0
self.window_root = bui.containerwidget( self.window_root = bui.containerwidget(
scale=scale, stack_offset=(0, -10) if uiscale is babase.UIScale.SMALL else (0, 15), scale=scale,
size=(c_width, c_height), transition='in_scale', on_outside_click_call=bs.WeakCall(self._close_window) stack_offset=(0, -10) if uiscale is babase.UIScale.SMALL else (0, 15),
) size=(c_width, c_height),
color=(0.5, 0.5, 0.5),
transition='in_scale',
on_outside_click_call=bs.WeakCall(self._close_window))
v_ = 65 if buttons_or_checkboxes == 1 else 50 v_ = 50
bui.textwidget(
parent=self.window_root,
size=(0, 0),
h_align='center',
v_align='center',
text='Party Filters Menu',
scale=1.5,
color=(1, 1, 0.7),
maxwidth=c_width * 0.8,
position=(c_width * 0.5, c_height - 60))
bui.textwidget(
parent=self.window_root,
size=(0, 0),
h_align='center',
v_align='center',
text='BY Yelllow',
scale=0.7,
color=(1, 1, 0),
maxwidth=c_width * 0.8,
position=(c_width * 0.5, c_height - 100))
bui.textwidget(parent=self.window_root, size=(0, 0), h_align='center', v_align='center', bui.buttonwidget(
text='Partiy Filter Menu', scale=1.5, color=(1, 1, 0.7), parent=self.window_root,
maxwidth=c_width * 0.8, position=(c_width * 0.5, c_height - 60)) position=(c_width * 0.1, c_height * 0.8),
bui.textwidget(parent=self.window_root, size=(0, 0), h_align='center', v_align='center', size=(60, 60),
text='BY Yelllow', scale=0.8, color=(1, 1, 0), scale=0.8,
maxwidth=c_width * 0.8, position=(c_width * 0.5, c_height - 100)) color=(1, 0.3, 0.3),
label=babase.charstr(babase.SpecialChar.BACK),
bui.buttonwidget(parent=self.window_root, position=(c_width * 0.1, c_height * 0.8), button_type='backSmall',
size=(60, 60), scale=0.8, color=(1, 0.3, 0.3), label=babase.charstr(babase.SpecialChar.BACK), on_activate_call=self._close_window)
button_type='backSmall', on_activate_call=self._close_window)
self._change_ui_button = bui.buttonwidget(parent=self.window_root, position=(c_width * 0.85, c_height * 0.8),
size=(60, 60), scale=0.8, color=(1, 1, 0) if buttons_or_checkboxes == 1 else (0, 0, 1),
label='C' if buttons_or_checkboxes == 1 else 'B', on_activate_call=self._change_ui)
v = c_height - 175 v = c_height - 175
if buttons_or_checkboxes == 1: bui.checkboxwidget(
self._refresh_button = bui.buttonwidget( parent=self.window_root,
parent=self.window_root, label='Stop Refresh' if is_refreshing else 'Start Refresh', text='Freeze Party List',
size=(c_width - 50, 50), position=(30, v), position=(c_height // 2, v),
color=(1, 0, 0) if is_refreshing else (0, 1, 0), on_activate_call=bs.WeakCall(self._toggle_refresh) size=(200, 30),
) color=(0.6, 0.6, 0.6),
else: autoselect=True,
bui.checkboxwidget(parent=self.window_root, text='Stop Refresh', position=(c_height // 2, v), textcolor=(0.8, 0.8, 0.8),
size=(200, 30), autoselect=True, textcolor=(0.8, 0.8, 0.8), value=not is_refreshing, value=not is_refreshing,
on_value_change_call=bs.WeakCall(self._toggle_refresh)) on_value_change_call=bs.WeakCall(self._toggle_refresh))
v -= v_ v -= v_
if buttons_or_checkboxes == 1: bui.checkboxwidget(
self._full_button = bui.buttonwidget( parent=self.window_root,
parent=self.window_root, label='Hide Full Parties' if not hide_full else 'Show Full Parties', text='Hide Full Parties',
size=(c_width - 50, 50), position=(30, v), position=(c_height // 2, v),
color=(1, 0, 0) if not hide_full else (0, 1, 0), on_activate_call=bs.WeakCall(self._toggle_full) size=(200, 30),
) autoselect=True,
else: color=(0.6, 0.6, 0.6),
bui.checkboxwidget(parent=self.window_root, text='Hide Full Parties', position=(c_height // 2, v), textcolor=(0.8, 0.8, 0.8),
size=(200, 30), autoselect=True, textcolor=(0.8, 0.8, 0.8), value=hide_full, value=hide_full,
on_value_change_call=bs.WeakCall(self._toggle_full)) on_value_change_call=bs.WeakCall(self._toggle_full))
v -= v_ v -= v_
if buttons_or_checkboxes == 1: self._empty_checkbox = bui.checkboxwidget(
self._empty_button = bui.buttonwidget( parent=self.window_root,
parent=self.window_root, label='Hide Empty Parties' if not hide_empty else 'Show Empty Parties', text='Hide Empty Parties',
size=(c_width - 50, 50), position=(30, v), position=(c_height // 2, v),
color=(1, 0, 0) if not hide_empty else (0, 1, 0), on_activate_call=bs.WeakCall(self._toggle_empty) size=(200, 30),
) autoselect=True,
else: color=(0.6, 0.6, 0.6),
self._empty_checkbox = bui.checkboxwidget(parent=self.window_root, text='Hide Empty Parties', position=(c_height // 2, v), textcolor=(0.8, 0.8, 0.8),
size=(200, 30), autoselect=True, textcolor=(0.8, 0.8, 0.8), value=hide_empty, value=hide_empty,
on_value_change_call=bs.WeakCall(self._toggle_empty)) on_value_change_call=bs.WeakCall(self._toggle_empty))
v -= v_ v -= v_
if buttons_or_checkboxes == 1: self._only_empty_checkbox = bui.checkboxwidget(
self._only_empty_button = bui.buttonwidget( parent=self.window_root,
parent=self.window_root, label='Empty Parties' if not only_empty else 'All Parties', text='Only Empty Parties',
size=(c_width - 50, 50), position=(30, v), position=(c_height // 2, v),
color=(1, 0, 0) if not only_empty else (0, 1, 0), on_activate_call=bs.WeakCall(self._toggle_only_empty) size=(200, 30),
) autoselect=True,
else: color=(0.6, 0.6, 0.6),
self._only_empty_checkbox = bui.checkboxwidget(parent=self.window_root, text='Empty Parties', position=(c_height // 2, v), textcolor=(0.8, 0.8, 0.8),
size=(200, 30), autoselect=True, textcolor=(0.8, 0.8, 0.8), value=only_empty, value=only_empty,
on_value_change_call=bs.WeakCall(self._toggle_only_empty)) on_value_change_call=bs.WeakCall(self._toggle_only_empty))
@override(PublicGatherTab) @override(PublicGatherTab)
def _close_window(self) -> None: def _close_window(self) -> None:
bui.getsound('shieldDown').play() bui.getsound('shieldDown').play()
bui.containerwidget(edit=self.window_root, transition='out_scale') bui.containerwidget(edit=self.window_root, transition='out_scale')
@override(PublicGatherTab)
def _change_ui(self) -> None:
global buttons_or_checkboxes
buttons_or_checkboxes = 1 if buttons_or_checkboxes == 2 else 2
bui.screenmessage(
f"{'Buttons' if buttons_or_checkboxes == 1 else 'Checkboxes'} Mode",
color=(0, 0, 1) if buttons_or_checkboxes == 1 else (1, 1, 0)
)
bui.buttonwidget(edit=self._change_ui_button,
color=(1, 1, 0) if buttons_or_checkboxes == 1 else (0, 0, 1),
label='C' if buttons_or_checkboxes == 1 else 'B')
self._close_window()
self._open_window()
@override(PublicGatherTab) @override(PublicGatherTab)
def _toggle_refresh(self, _=None) -> None: def _toggle_refresh(self, _=None) -> None:
global is_refreshing global is_refreshing
is_refreshing = not is_refreshing is_refreshing = not is_refreshing
bui.screenmessage(f"Refreshing {'Enabled' if is_refreshing else 'Disabled'}", bui.screenmessage(f"Refreshing {'Enabled' if is_refreshing else 'Disabled'}", color=(1, 1, 0))
color=(0, 1, 0) if is_refreshing else (1, 0, 0))
if buttons_or_checkboxes == 1:
bui.buttonwidget(edit=self._refresh_button,
color=(1, 0, 0) if is_refreshing else (0, 1, 0),
label='Stop Refresh' if is_refreshing else 'Start Refresh')
@override(PublicGatherTab) @override(PublicGatherTab)
def _toggle_full(self, _=None) -> None: def _toggle_full(self, _=None) -> None:
global hide_full global hide_full
hide_full = not hide_full hide_full = not hide_full
bui.screenmessage(f"{'Hiding' if hide_full else 'Showing'} Full Parties", bui.screenmessage(f"{'Hiding' if hide_full else 'Showing'} Full Parties", color=(1, 1, 0))
color=(0, 1, 0) if hide_full else (1, 0, 0))
if buttons_or_checkboxes == 1:
bui.buttonwidget(edit=self._full_button,
color=(1, 0, 0) if not hide_full else (0, 1, 0),
label='Hide Full Parties' if not hide_full else 'Show Full Parties')
self._update_party_rows() self._update_party_rows()
@override(PublicGatherTab) @override(PublicGatherTab)
@ -164,18 +156,8 @@ class EnhancedPublicGatherTab(PublicGatherTab):
hide_empty = not hide_empty hide_empty = not hide_empty
if hide_empty: if hide_empty:
only_empty = False only_empty = False
bui.screenmessage(f"{'Hiding' if hide_empty else 'Showing'} Empty Parties", bui.screenmessage(f"{'Hiding' if hide_empty else 'Showing'} Empty Parties", color=(1, 1, 0))
color=(0, 1, 0) if hide_empty else (1, 0, 0)) if hide_empty:
if buttons_or_checkboxes == 1:
bui.buttonwidget(edit=self._empty_button,
color=(1, 0, 0) if not hide_empty else (0, 1, 0),
label='Hide Empty Parties' if not hide_empty else 'Show Empty Parties')
if hide_empty:
bui.buttonwidget(edit=self._only_empty_button,
color=(1, 0, 0) if not only_empty else (0, 1, 0),
label='Empty Parties' if not only_empty else 'All Parties')
else:
if hide_empty:
bui.checkboxwidget(edit=self._only_empty_checkbox, value=only_empty) bui.checkboxwidget(edit=self._only_empty_checkbox, value=only_empty)
self._update_party_rows() self._update_party_rows()
@ -185,18 +167,8 @@ class EnhancedPublicGatherTab(PublicGatherTab):
only_empty = not only_empty only_empty = not only_empty
if only_empty: if only_empty:
hide_empty = False hide_empty = False
bui.screenmessage(f"{'Only' if only_empty else 'All'} Empty Parties", bui.screenmessage(f"{'Showing Only Empty' if only_empty else 'Showing All'} Parties", color=(1, 1, 0))
color=(0, 1, 0) if only_empty else (1, 0, 0)) if only_empty:
if buttons_or_checkboxes == 1:
bui.buttonwidget(edit=self._only_empty_button,
color=(1, 0, 0) if not only_empty else (0, 1, 0),
label='Empty Parties' if not only_empty else 'All Parties')
if only_empty:
bui.buttonwidget(edit=self._empty_button,
color=(1, 0, 0) if not hide_empty else (0, 1, 0),
label='Hide Empty Parties' if not hide_empty else 'Show Empty Parties')
else:
if only_empty:
bui.checkboxwidget(edit=self._empty_checkbox, value=hide_empty) bui.checkboxwidget(edit=self._empty_checkbox, value=hide_empty)
self._update_party_rows() self._update_party_rows()