UI improvements

This commit is contained in:
Loup 2022-11-19 08:44:56 +05:30 committed by GitHub
parent 7b14938478
commit bc15767e5d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -15,7 +15,6 @@ from bastd.ui.popup import PopupWindow
# mod by ʟօʊքɢǟʀօʊ # mod by ʟօʊքɢǟʀօʊ
# export replays to mods folder and share with your friends or have a backup # export replays to mods folder and share with your friends or have a backup
def Print(*args, color=None, top=None): def Print(*args, color=None, top=None):
out = "" out = ""
for arg in args: for arg in args:
@ -23,7 +22,6 @@ def Print(*args, color=None, top=None):
out += a out += a
ba.screenmessage(out, color=color, top=top) ba.screenmessage(out, color=color, top=top)
def cprint(*args): def cprint(*args):
out = "" out = ""
for arg in args: for arg in args:
@ -31,23 +29,26 @@ def cprint(*args):
out += a out += a
_ba.chatmessage(out) _ba.chatmessage(out)
title="SHARE REPLAY"
title = "SHARE REPLAY"
internal_dir = path.join("ba_data", "..", "..", "..", "files", "bombsquad_config", "replays" + sep) internal_dir = path.join("ba_data", "..", "..", "..", "files", "bombsquad_config", "replays" + sep)
external_dir = path.join(_ba.env()["python_directory_user"], "replays"+sep) external_dir = path.join(_ba.env()["python_directory_user"], "replays"+sep)
tab_sel_texture=ba.gettexture("buttonSquare")
tab_unsel_texture=ba.gettexture("chestIconEmpty")
# colors # colors
pink = (1, 0.2, 0.8) pink = (1, 0.2, 0.8)
green = (0.4, 1, 0.4) green = (0.4, 1, 0.4)
red = (1, 0, 0) red = (1, 0, 0)
blue = (0.26, 0.65, 0.94) blue=(0.26, 0.65,0.94)
blue_highlight= (0.4, 0.7,1)
if not path.exists(external_dir): if not path.exists(external_dir):
mkdir(external_dir) mkdir(external_dir)
Print("You are ready to share replays", color=pink) Print("You are ready to share replays", color=pink)
class Help(PopupWindow): class Help(PopupWindow):
def __init__(self): def __init__(self):
uiscale = ba.app.ui.uiscale uiscale = ba.app.ui.uiscale
@ -66,8 +67,7 @@ class Help(PopupWindow):
def close(self): def close(self):
ba.playsound(ba.getsound('swish')) ba.playsound(ba.getsound('swish'))
ba.containerwidget(edit=self.root_widget, transition="out_right",) ba.containerwidget(edit=self.root_widget, transition="out_right",)
class SyncConfirmation(PopupWindow): class SyncConfirmation(PopupWindow):
def __init__(self): def __init__(self):
uiscale = ba.app.ui.uiscale uiscale = ba.app.ui.uiscale
@ -77,13 +77,14 @@ class SyncConfirmation(PopupWindow):
position=(0.0, 0.0), position=(0.0, 0.0),
size=(self.width, self.height), size=(self.width, self.height),
scale=1.2,) scale=1.2,)
ba.containerwidget(edit=self.root_widget, on_outside_click_call=self.close)
ba.textwidget(parent=self.root_widget, position=(30, self.height * 0.8), ba.textwidget(parent=self.root_widget, position=(30, self.height * 0.8),
text=" Are you sure you want to continue\n\nWARNING:replays with same name in mods folder\n will be overwritten") text=" Are you sure you want to continue\n\nWARNING:replays with same name in mods folder\n will be overwritten")
ba.buttonwidget(parent=self.root_widget, label="CANCEL", size=(200, 80), cancel=ba.buttonwidget(parent=self.root_widget,label=ba.Lstr(resource='cancelText'),size=(200,80),position=(80,50),on_activate_call=self.close)
color=red, position=(80, 50), on_activate_call=self.close)
ba.buttonwidget(parent=self.root_widget, label="continue", size=(200, 80), ba.buttonwidget(parent=self.root_widget,label=ba.Lstr(resource='okText'),size=(200,80),position=(300,50),color=green,on_activate_call=SettingWindow.sync)
position=(300, 50), on_activate_call=SettingWindow.sync)
ba.containerwidget(edit=self.root_widget, on_outside_click_call=self.close,cancel_button=cancel)
def close(self): def close(self):
ba.playsound(ba.getsound('swish')) ba.playsound(ba.getsound('swish'))
@ -94,63 +95,73 @@ class SettingWindow():
def __init__(self): def __init__(self):
global internal global internal
self.draw_ui() self.draw_ui()
ba.containerwidget(edit=self.root,cancel_button=self.close_button)
self.selected_name = None self.selected_name = None
internal = True internal=True
self.on_tab_select(internal) self.on_tab_select(internal)
def on_select_text(self, widget, name): def on_select_text(self, widget,name):
existing_widgets = self.scroll2.get_children() existing_widgets=self.scroll2.get_children()
for i in existing_widgets: for i in existing_widgets:
ba.textwidget(edit=i, color=(1, 1, 1)) ba.textwidget(edit=i,color=(1,1,1))
ba.textwidget(edit=widget, color=(1, 1, 0)) ba.textwidget(edit=widget, color=(1, 1, 0))
self.selected_name = name self.selected_name=name
def on_tab_select(self, _internal):
global internal def on_tab_select(self,_internal):
internal = _internal global internal
if internal == True: internal=_internal
dir_list = listdir(internal_dir) if internal==True:
ba.buttonwidget(edit=self.share_button, label="EXPORT", icon=ba.gettexture("upButton"),) dir_list=listdir(internal_dir)
sel = self.internal_tab ba.buttonwidget(edit=self.share_button,label="EXPORT",icon=ba.gettexture("upButton"),)
unsel = self.external_tab sel=self.internal_tab
else: unsel=self.external_tab
dir_list = listdir(external_dir) else:
ba.buttonwidget(edit=self.share_button, label="IMPORT", dir_list=listdir(external_dir)
icon=ba.gettexture("downButton"),) ba.buttonwidget(edit=self.share_button,label="IMPORT",icon=ba.gettexture("downButton"),)
sel = self.external_tab sel= self.external_tab
unsel = self.internal_tab unsel= self.internal_tab
ba.buttonwidget(edit=sel, texture=ba.gettexture("circleShadow")) ba.buttonwidget(edit=sel,texture=tab_sel_texture,color=blue,size=(120,80))
ba.buttonwidget(edit=unsel, texture=ba.gettexture("nub")) ba.buttonwidget(edit=unsel,texture=tab_unsel_texture,color=blue,size=(120,100))
dir_list = sorted(dir_list) dir_list=sorted(dir_list)
existing_widgets = self.scroll2.get_children() existing_widgets=self.scroll2.get_children()
if existing_widgets: if existing_widgets:
for i in existing_widgets: for i in existing_widgets:
i.delete() i.delete()
height = 900 height = 900
for i in dir_list: for i in dir_list:
height -= 40 height -= 40
a = i a = i
i = ba.textwidget( i = ba.textwidget(
parent=self.scroll2, parent=self.scroll2,
size=(500, 50), size=(500, 50),
text=i.split(".")[0], text=i.split(".")[0],
position=(10, height), position=(10, height),
selectable=True, selectable=True,
max_chars=40, max_chars=40,
click_activate=True,) click_activate=True,)
ba.textwidget(edit=i, on_activate_call=ba.Call(self.on_select_text, i, a)) ba.textwidget(edit=i, on_activate_call=ba.Call(self.on_select_text, i , a))
def draw_ui(self): def draw_ui(self):
self.uiscale = ba.app.ui.uiscale self.uiscale = ba.app.ui.uiscale
self.root = ba.Window(ba.containerwidget( self.root = ba.Window(ba.containerwidget(
size=(900, 670), on_outside_click_call=self.close, transition="in_right")).get_root_widget() size=(900, 670), on_outside_click_call=self.close, transition="in_right")).get_root_widget()
self.close_button = ba.buttonwidget(
parent=self.root,
position=(90, 560),
button_type='backSmall',
size=(60, 60),
label=ba.charstr(ba.SpecialChar.BACK),
scale=1.5,
on_activate_call=self.close)
ba.textwidget( ba.textwidget(
parent=self.root, parent=self.root,
size=(200, 100), size=(200, 100),
position=(150, 550), position=(350, 550),
scale=2, scale=2,
selectable=False, selectable=False,
h_align="center", h_align="center",
@ -160,28 +171,28 @@ class SettingWindow():
ba.buttonwidget( ba.buttonwidget(
parent=self.root, parent=self.root,
position=(450, 580), position=(650, 580),
size=(35, 35), size=(35, 35),
texture=ba.gettexture("achievementEmpty"), texture=ba.gettexture("achievementEmpty"),
label="", label="",
on_activate_call=Help) on_activate_call=Help)
internal_tab_pos = 85, 400 internal_tab_pos=85,400
internal_tab_size = 120, 80 internal_tab_size=120,80
external_tab_pos = 85, 300 external_tab_pos=85,300
external_tab_size = 120, 80 external_tab_size=120,80
self.internal_tab = ba.buttonwidget( self.internal_tab=ba.buttonwidget(
parent=self.root, parent=self.root,
position=internal_tab_pos, position=internal_tab_pos,
size=internal_tab_size, size=internal_tab_size,
button_type="square", button_type="square",
label="INTERNAL", label="INTERNAL",
text_scale=2, text_scale=2,
color=blue, color=blue_highlight,
texture=ba.gettexture("circleShadow")) texture=tab_sel_texture)
self.external_tab = ba.buttonwidget( self.external_tab=ba.buttonwidget(
parent=self.root, parent=self.root,
position=external_tab_pos, position=external_tab_pos,
size=external_tab_size, size=external_tab_size,
@ -189,12 +200,13 @@ class SettingWindow():
label="EXTERNAL", label="EXTERNAL",
text_scale=2, text_scale=2,
color=blue, color=blue,
texture=ba.gettexture("nub")) texture=tab_unsel_texture)
ba.buttonwidget(edit=self.internal_tab, on_activate_call=ba.Call(self.on_tab_select, True)) ba.buttonwidget(edit=self.internal_tab,on_activate_call=ba.Call(self.on_tab_select,True))
ba.buttonwidget(edit=self.external_tab, on_activate_call=ba.Call(self.on_tab_select, False)) ba.buttonwidget(edit=self.external_tab,on_activate_call=ba.Call(self.on_tab_select,False))
self.share_button = ba.buttonwidget(
self.share_button=ba.buttonwidget(
parent=self.root, parent=self.root,
position=(720, 400), position=(720, 400),
size=(110, 50), size=(110, 50),
@ -204,8 +216,8 @@ class SettingWindow():
text_scale=2, text_scale=2,
icon=ba.gettexture("upButton"), icon=ba.gettexture("upButton"),
on_activate_call=self.share) on_activate_call=self.share)
sync_button = ba.buttonwidget( sync_button=ba.buttonwidget(
parent=self.root, parent=self.root,
position=(720, 300), position=(720, 300),
size=(110, 50), size=(110, 50),
@ -214,40 +226,27 @@ class SettingWindow():
label="SYNC", label="SYNC",
text_scale=2, text_scale=2,
icon=ba.gettexture("ouyaYButton"), icon=ba.gettexture("ouyaYButton"),
on_activate_call=SyncConfirmation) on_activate_call=SyncConfirmation)
self.close_button = ba.buttonwidget(
parent=self.root,
position=(800, 590),
size=(35, 35),
texture=ba.gettexture("crossOut"),
label="",
scale=2,
color=(1, 0.2, 0.2),
extra_touch_border_scale=3,
on_activate_call=self.close)
scroll = ba.scrollwidget( scroll = ba.scrollwidget(
parent=self.root, parent=self.root,
size=(500, 400), size=(500, 400),
position=(200, 100),) position=(200, 100),)
self.scroll2 = ba.columnwidget(parent=scroll, size=( self.scroll2 = ba.columnwidget(parent=scroll, size=(
500, 900)) 500, 900))
def share(self): def share(self):
if self.selected_name is None: if self.selected_name is None:
Print("Select a replay", color=red) Print("Select a replay", color=red)
return return
if internal: if internal:self.export()
self.export() else:self.importx()
else:
self.importx()
# image={"texture":ba.gettexture("bombColor"),"tint_texture":None,"tint_color":None,"tint2_color":None}) # image={"texture":ba.gettexture("bombColor"),"tint_texture":None,"tint_color":None,"tint2_color":None})
def sync(self=""): def sync(self=""):
internal_list = listdir(internal_dir) internal_list=listdir(internal_dir)
external_list = listdir(external_dir) external_list=listdir(external_dir)
for i in internal_list: for i in internal_list:
copy(internal_dir+sep+i, external_dir+sep+i) copy(internal_dir+sep+i, external_dir+sep+i)
for i in external_list: for i in external_list:
@ -255,21 +254,21 @@ class SettingWindow():
pass pass
else: else:
copy(external_dir+sep+i, internal_dir+sep+i) copy(external_dir+sep+i, internal_dir+sep+i)
Print("Synced all replays", color=pink) Print("Synced all replays",color=pink)
def export(self): def export(self):
copy(internal_dir+self.selected_name, external_dir+self.selected_name) copy(internal_dir+self.selected_name, external_dir+self.selected_name)
Print(self.selected_name[0:-4]+" exported", top=True, color=pink) Print(self.selected_name[0:-4]+" exported", top=True, color=pink)
def importx(self): def importx(self):
copy(external_dir+self.selected_name, internal_dir+self.selected_name) copy(external_dir+self.selected_name, internal_dir+self.selected_name)
Print(self.selected_name[0:-4]+" imported", top=True, color=green) Print(self.selected_name[0:-4]+" imported", top=True, color=green)
def close(self): def close(self):
ba.playsound(ba.getsound('swish')) ba.playsound(ba.getsound('swish'))
ba.containerwidget(edit=self.root, transition="out_right",) ba.containerwidget(edit=self.root, transition="out_right",)
# ++++++++++++++++for keyboard navigation++++++++++++++++ # ++++++++++++++++for keyboard navigation++++++++++++++++
#ba.widget(edit=self.enable_button, up_widget=decrease_button, down_widget=self.lower_text,left_widget=save_button, right_widget=save_button) #ba.widget(edit=self.enable_button, up_widget=decrease_button, down_widget=self.lower_text,left_widget=save_button, right_widget=save_button)
@ -304,6 +303,6 @@ class Loup(ba.Plugin):
def show_settings_ui(self, button): def show_settings_ui(self, button):
SettingWindow() SettingWindow()
def on_plugin_manager_prompt(self): def on_plugin_manager_prompt(self):
SettingWindow() SettingWindow()