Merge branch 'main' into 2.0

This commit is contained in:
louisnw
2024-04-14 16:42:19 +01:00
2 changed files with 24 additions and 4 deletions

View File

@ -1,3 +1,4 @@
import asyncio
import random
from typing import Union, Optional, Callable
@ -80,10 +81,19 @@ class Table(Pane, dict):
self._formatters = {}
self.headings = headings
self.is_shown = True
def wrapper(rId, cId=None):
if return_clicked_cells:
self.win.handlers[self.id] = lambda rId, cId: func(self[rId], cId)
func(self[rId], cId)
else:
self.win.handlers[self.id] = lambda rId: func(self[rId])
func(self[rId])
async def async_wrapper(rId, cId=None):
if return_clicked_cells:
await func(self[rId], cId)
else:
await func(self[rId])
self.win.handlers[self.id] = async_wrapper if asyncio.iscoroutinefunction(func) else wrapper
self.return_clicked_cells = return_clicked_cells
self.run_script(f'''

View File

@ -49,10 +49,20 @@ class SwitcherWidget(Widget):
class MenuWidget(Widget):
def __init__(self, topbar, options, default, separator, align, func):
super().__init__(topbar, value=default, func=func)
self.options = list(options)
self.run_script(f'''
{self.id} = {topbar.id}.makeMenu({list(options)}, "{default}", {jbool(separator)}, "{self.id}", "{align}")
''')
def set(self, option):
if option not in self.options:
raise ValueError(f"Option {option} not in menu options ({self.options})")
self.value = option
self.run_script(f'''
{self.id}.updateMenu("{option}")
''')
self.win.handlers[self.id](option)
class ButtonWidget(Widget):
def __init__(self, topbar, button, separator, align, func):