mirror of
https://github.com/bombsquad-community/plugin-manager.git
synced 2025-10-08 14:54:36 +00:00
Update party_filter.py
This commit is contained in:
parent
24ffca0f10
commit
7688db7012
1 changed files with 89 additions and 117 deletions
|
|
@ -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()
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue