fixed layout
This commit is contained in:
parent
958fab5ae8
commit
eff36bd9e0
52
src/gui.py
52
src/gui.py
@ -5,18 +5,20 @@ from .data import Message
|
|||||||
from src import sendkeys
|
from src import sendkeys
|
||||||
from typing import Callable
|
from typing import Callable
|
||||||
from src.data import log
|
from src.data import log
|
||||||
|
import sv_ttk
|
||||||
|
|
||||||
|
|
||||||
class Gui(Tk):
|
class Gui(Tk):
|
||||||
def __init__(self, parent=None) -> None:
|
def __init__(self, parent=None) -> None:
|
||||||
Tk.__init__(self, parent)
|
Tk.__init__(self, parent)
|
||||||
|
sv_ttk.set_theme("dark")
|
||||||
self.title("Uber Trader")
|
self.title("Uber Trader")
|
||||||
# self.geometry("300x200+10+20")
|
# self.geometry("300x200+10+20")
|
||||||
self.overrideredirect(1) # remove border
|
self.overrideredirect(1) # remove border
|
||||||
self.wm_withdraw() # Hide window
|
self.wm_withdraw() # Hide window
|
||||||
self.attributes('-topmost', True) # always on top
|
self.attributes('-topmost', True) # always on top
|
||||||
style = ttk.Style()
|
# style = ttk.Style()
|
||||||
style.configure("BW.TLabel", foreground="white", background="black")
|
# style.configure("BW.TLabel", foreground="white", background="black")
|
||||||
self.tab_control = ttk.Notebook(self, style='BW.TLabel')
|
self.tab_control = ttk.Notebook(self, style='BW.TLabel')
|
||||||
self.tab_control.pack(expand=1, fill='both')
|
self.tab_control.pack(expand=1, fill='both')
|
||||||
self.tab_control.bind("<ButtonPress-1>", self.start_move)
|
self.tab_control.bind("<ButtonPress-1>", self.start_move)
|
||||||
@ -27,29 +29,28 @@ class Gui(Tk):
|
|||||||
def add_tab(self, number: int, message: Message) -> None:
|
def add_tab(self, number: int, message: Message) -> None:
|
||||||
self.wm_deiconify()
|
self.wm_deiconify()
|
||||||
if message.user not in self.tabs:
|
if message.user not in self.tabs:
|
||||||
self.tabs[message.user] = {'tab': ttk.Frame(self.tab_control, style='BW.TLabel')}
|
self.tabs[message.user] = {'frame': ttk.Frame(self.tab_control)}
|
||||||
tab = self.tabs[message.user]['tab']
|
self.tabs[message.user]['items'] = {}
|
||||||
|
frame = self.tabs[message.user]['frame']
|
||||||
if message.trade is not None:
|
if message.trade is not None:
|
||||||
if message.trade.item not in self.tabs[message.user]:
|
if message.trade.item not in self.tabs[message.user]['items']:
|
||||||
self.tabs[message.user][message.trade.item] = (tab, message)
|
row = len(self.tabs[message.user]['items'])
|
||||||
ttk.Label(tab, text=message.trade.item, style='BW.TLabel').pack(anchor='e', side='left')
|
self.tabs[message.user]['items'][message.trade.item] = {}
|
||||||
Label(tab, text=f'{message.trade.amount} {message.trade.currency}').pack(anchor='e', side='left')
|
self.tabs[message.user]['items'][message.trade.item]['row'] = row
|
||||||
self.add_button(tab=tab, text='Inv', callback=self.inv_callback, message=message)
|
self.tabs[message.user]['items'][message.trade.item]['message'] = message
|
||||||
self.add_button(tab=tab, text='Trade', callback=self.trade_callback, message=message)
|
ttk.Label(frame, text=message.trade.item).grid(column=0, row=row)
|
||||||
self.add_button(tab=tab, text='Ty', callback=self.ty_callback, message=message)
|
Label(frame, text=f'{message.trade.amount} {message.trade.currency}').grid(column=1, row=row)
|
||||||
self.add_button(tab=tab, text='Wait', callback=self.wait_callback, message=message)
|
self.add_button(tab=frame, text='Inv', callback=self.inv_callback, message=message).grid(column=2, row=row)
|
||||||
self.add_button(tab=tab, text='X', callback=self.destroy_tab, message=message)
|
self.add_button(tab=frame, text='Trade', callback=self.trade_callback, message=message).grid(column=3, row=row)
|
||||||
# Button(tab, text='Inv', command=lambda mess=message: self.inv_callback(message, tab)).pack(anchor='e', side='left')
|
self.add_button(tab=frame, text='Ty', callback=self.ty_callback, message=message).grid(column=4, row=row)
|
||||||
# Button(tab, text='Trade', command=lambda mess=message: self.trade_callback(message, tab)).pack(anchor='e', side='left')
|
self.add_button(tab=frame, text='Wait', callback=self.wait_callback, message=message).grid(column=5, row=row)
|
||||||
# Button(tab, text='Ty', command=lambda mess=message: self.ty_callback(message, tab)).pack(anchor='e', side='left')
|
self.add_button(tab=frame, text='X', callback=self.destroy_tab, message=message).grid(column=6, row=row)
|
||||||
# Button(tab, text='Wait', command=lambda mess=message: self.wait_callback(message, tab)).pack(anchor='e', side='left')
|
self.tab_control.add(frame, text=message.user)
|
||||||
# Button(tab, text='X', command=lambda mess=message: self.destroy_tab(message, tab)).pack(anchor='e', side='left')
|
|
||||||
self.tab_control.add(tab, text=message.user)
|
|
||||||
else:
|
else:
|
||||||
log.warning(f'Trade in message "{str(message)}" is None')
|
log.warning(f'Trade in message "{str(message)}" is None')
|
||||||
|
|
||||||
def add_button(self, tab: ttk.Frame, text: str, callback: Callable, message: Message) -> None:
|
def add_button(self, tab: ttk.Frame, text: str, callback: Callable, message: Message) -> Button:
|
||||||
Button(tab, text=text, command=lambda: callback(message, tab)).pack(anchor='e', side='left')
|
return Button(tab, text=text, command=lambda: callback(message, tab))
|
||||||
|
|
||||||
def start_move(self, event):
|
def start_move(self, event):
|
||||||
self.x = event.x
|
self.x = event.x
|
||||||
@ -83,10 +84,13 @@ class Gui(Tk):
|
|||||||
|
|
||||||
def destroy_tab(self, message: Message, tab: ttk.Frame) -> None:
|
def destroy_tab(self, message: Message, tab: ttk.Frame) -> None:
|
||||||
if message.user in self.tabs:
|
if message.user in self.tabs:
|
||||||
if message.trade.item in self.tabs[message.user]:
|
if message.trade.item in self.tabs[message.user]['items']:
|
||||||
# Delete the item
|
# Delete the item
|
||||||
del self.tabs[message.user][message.trade.item]
|
row = self.tabs[message.user]['items'][message.trade.item]['row']
|
||||||
if len(self.tabs[message.user]) == 1:
|
for widget in self.tabs[message.user]['frame'].grid_slaves(row=row):
|
||||||
|
widget.destroy()
|
||||||
|
del self.tabs[message.user]['items'][message.trade.item]
|
||||||
|
if len(self.tabs[message.user]['items']) == 0:
|
||||||
# If no item from this user is left, then also delete the tab
|
# If no item from this user is left, then also delete the tab
|
||||||
del self.tabs[message.user]
|
del self.tabs[message.user]
|
||||||
tab.destroy()
|
tab.destroy()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user