diff --git a/src/clipboard.py b/src/clipboard.py index bd058c9..5a7cc30 100644 --- a/src/clipboard.py +++ b/src/clipboard.py @@ -5,21 +5,26 @@ from src import sendkeys def clipboard_poll(app: tk) -> None: - data.log.info('clipboard thread started') - text = None + data.log.debug('clipboard thread started') + text = None # Last clipboard entry + old_trade = None # This is the last trade, not the last clipboard entry while True: try: new_text = app.clipboard_get() except tk.TclError: new_text = None - if new_text != text: + if text and new_text != text: data.log.info(new_text) text = new_text res_prefix = data.re_clipboard_prefix.search(text) if res_prefix: data.log.info(f'User: {res_prefix["user"]}') res = data.re_clipboard.search(text) - sendkeys.send_text(text) + if old_trade != text: # Don't send old trade again. Happnes sometimes if clipboard is used by other tools and restored + sendkeys.send_text(text) + old_trade = text + else: + data.log.info(f'Didn\'t send. Clipboard "{text}" already sent.') if res: trade = data.Trade.by_regex_result(res) data.log.info(trade) diff --git a/src/gui.py b/src/gui.py index cf47b12..dd1eefc 100644 --- a/src/gui.py +++ b/src/gui.py @@ -25,23 +25,27 @@ class Gui(Tk): def add_tab(self, number: int, message: Message) -> None: self.wm_deiconify() - tab = ttk.Frame(self.tab_control, style='BW.TLabel') if message.user not in self.tabs: - self.tabs[message.user] = dict() + self.tabs[message.user] = {'tab': ttk.Frame(self.tab_control, style='BW.TLabel')} + tab = self.tabs[message.user]['tab'] if message.trade.item not in self.tabs[message.user]: self.tabs[message.user][message.trade.item] = (tab, message) ttk.Label(tab, text=message.trade.item, style='BW.TLabel').pack(anchor='e', side='left') Label(tab, text=f'{message.trade.amount} {message.trade.currency}').pack(anchor='e', side='left') self.add_button(tab=tab, text='Inv', callback=self.inv_callback, message=message) + self.add_button(tab=tab, text='Trade', callback=self.trade_callback, message=message) + self.add_button(tab=tab, text='Ty', callback=self.ty_callback, message=message) + self.add_button(tab=tab, text='Wait', callback=self.wait_callback, message=message) + self.add_button(tab=tab, text='X', callback=self.destroy_tab, message=message) # Button(tab, text='Inv', command=lambda mess=message: self.inv_callback(message, tab)).pack(anchor='e', side='left') - Button(tab, text='Trade', command=lambda mess=message: self.trade_callback(message, tab)).pack(anchor='e', side='left') - Button(tab, text='Ty', command=lambda mess=message: self.ty_callback(message, tab)).pack(anchor='e', side='left') - Button(tab, text='Wait', command=lambda mess=message: self.wait_callback(message, tab)).pack(anchor='e', side='left') - Button(tab, text='X', command=lambda mess=message: self.destroy_tab(message, tab)).pack(anchor='e', side='left') + # Button(tab, text='Trade', command=lambda mess=message: self.trade_callback(message, tab)).pack(anchor='e', side='left') + # Button(tab, text='Ty', command=lambda mess=message: self.ty_callback(message, tab)).pack(anchor='e', side='left') + # Button(tab, text='Wait', command=lambda mess=message: self.wait_callback(message, tab)).pack(anchor='e', side='left') + # 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) - - def add_button(tab: ttk.Frame, text: str, callback: Callable, message: Message) -> None: - Button(tab, text=text, command=lambda mess=message: callback(message, tab)).pack(anchor='e', side='left') + + def add_button(self, tab: ttk.Frame, text: str, callback: Callable, message: Message) -> None: + Button(tab, text=text, command=lambda: callback(message, tab)).pack(anchor='e', side='left') def start_move(self, event): self.x = event.x @@ -76,9 +80,11 @@ class Gui(Tk): def destroy_tab(self, message: Message, tab: ttk.Frame) -> None: if message.user in self.tabs: if message.trade.item in self.tabs[message.user]: + # Delete the item del self.tabs[message.user][message.trade.item] - if not self.tabs[message.user]: + if len(self.tabs[message.user]) == 1: + # If no item from this user is left, then also delete the tab del self.tabs[message.user] - tab.destroy() + tab.destroy() if not self.tabs: self.wm_withdraw()