Skip to content

Commit

Permalink
temp
Browse files Browse the repository at this point in the history
  • Loading branch information
sassanh committed Jun 6, 2024
1 parent d0719df commit 7eca406
Show file tree
Hide file tree
Showing 2 changed files with 71 additions and 51 deletions.
105 changes: 55 additions & 50 deletions ubo_gui/menu/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -223,13 +223,13 @@ def handle_menu_change(menu: Menu) -> None:
)
last_sub_menu = menu

susbscription = process_subscribable_value(
menu,
handle_menu_change,
self.top.subscriptions.add(
process_subscribable_value(
menu,
handle_menu_change,
),
)

self.top.subscriptions.add(susbscription)

def select_action_item(self: MenuWidget, item: ActionItem) -> None:
"""Select an action item."""
result = item.action()
Expand Down Expand Up @@ -262,13 +262,15 @@ def handle_application_change(application: type[PageWidget]) -> None:
)
if application_instance:
self.close_application(application_instance)
self.open_application(application())
application_instance = application()
self.open_application(application_instance)

subscription = process_subscribable_value(
item.application,
handle_application_change,
self.top.subscriptions.add(
process_subscribable_value(
item.application,
handle_application_change,
),
)
self.top.subscriptions.add(subscription)

def select_submenu_item(self: MenuWidget, item: SubMenuItem) -> None:
"""Select a submenu item."""
Expand Down Expand Up @@ -351,15 +353,15 @@ def _render_header_menu(self: MenuWidget, menu: HeadedMenu) -> HeaderMenuPageWid
)

def handle_heading_change(heading: str) -> None:
logger.debug(
'Handle `heading` change...',
extra={
'new_heading': heading,
'old_heading': list_widget.heading,
'subscription_level': 'widget',
},
)
if heading != list_widget.heading:
logger.debug(
'Handle `heading` change...',
extra={
'new_heading': heading,
'old_heading': list_widget.heading,
'subscription_level': 'widget',
},
)
list_widget.heading = heading

self.widget_subscriptions.add(
Expand All @@ -370,15 +372,15 @@ def handle_heading_change(heading: str) -> None:
)

def handle_sub_heading_change(sub_heading: str) -> None:
logger.debug(
'Handle `sub_heading` change...',
extra={
'new_sub_heading': sub_heading,
'old_sub_heading': list_widget.sub_heading,
'subscription_level': 'widget',
},
)
if sub_heading != list_widget.sub_heading:
logger.debug(
'Handle `sub_heading` change...',
extra={
'new_sub_heading': sub_heading,
'old_sub_heading': list_widget.sub_heading,
'subscription_level': 'widget',
},
)
list_widget.sub_heading = sub_heading

self.widget_subscriptions.add(
Expand Down Expand Up @@ -459,15 +461,15 @@ def _render_items(self: MenuWidget, *_: object) -> None:
self.current_screen = list_widget

def handle_placeholder_change(placeholder: str | None) -> None:
logger.debug(
'Handle `placeholder` change...',
extra={
'new_placeholder': placeholder,
'old_placeholder': list_widget.placeholder,
'subscription_level': 'widget',
},
)
if placeholder != list_widget.placeholder:
logger.debug(
'Handle `placeholder` change...',
extra={
'new_placeholder': placeholder,
'old_placeholder': list_widget.placeholder,
'subscription_level': 'widget',
},
)
list_widget.placeholder = placeholder

self.widget_subscriptions.add(
Expand All @@ -484,25 +486,28 @@ def _render(self: MenuWidget, *_: object) -> None:
if not self.stack:
return

print('Rendering, subscriptions cleared')
title = None
if isinstance(self.top, StackApplicationItem):
print("It's application")
self.current_screen = self.top.application
title = self.top.application.title
if isinstance(self.top, StackMenuItem):
print("It's menu")
menu = self.top.menu
last_items = None

def handle_items_change(items: Sequence[Item]) -> None:
nonlocal last_items
logger.debug(
'Handle `items` change...',
extra={
'new_items': items,
'old_items': last_items,
'subscription_level': 'screen',
},
)
if items != last_items:
logger.debug(
'Handle `items` change...',
extra={
'new_items': items,
'old_items': last_items,
'subscription_level': 'screen',
},
)
self.current_menu_items = items
self._render_items()
if last_items:
Expand All @@ -519,15 +524,15 @@ def handle_items_change(items: Sequence[Item]) -> None:
title = menu.title

def handle_title_change(title: str | None) -> None:
logger.debug(
'Handle `title` change...',
extra={
'new_title': title,
'old_title': self.title,
'subscription_level': 'screen',
},
)
if self._title != title:
logger.debug(
'Handle `title` change...',
extra={
'new_title': title,
'old_title': self.title,
'subscription_level': 'screen',
},
)
self.title = title

self.screen_subscriptions.add(
Expand Down
17 changes: 16 additions & 1 deletion ubo_gui/prompt/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import pathlib
import warnings
from abc import ABC, abstractmethod
from typing import TYPE_CHECKING
from typing import TYPE_CHECKING, Sequence

from kivy.lang.builder import Builder
from kivy.properties import (
Expand Down Expand Up @@ -100,6 +100,21 @@ def get_second_item(self: PromptWidget) -> ActionItem | None:
cache=True,
)

def _items_getter(self: PromptWidget) -> Sequence[Item | None]:
return [self.first_item, self.second_item]

def _items_setter(self: PromptWidget, value: Sequence[Item | None]) -> None:
if len(value) == 0:
return
msg = 'Cannot set items'
raise ValueError(msg)

items: Sequence[Item | None] = AliasProperty(
getter=_items_getter,
setter=_items_setter,
bind=['first_item', 'second_item'],
)

@abstractmethod
def first_option_callback(
self: PromptWidget,
Expand Down

0 comments on commit 7eca406

Please sign in to comment.