-
-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
fcf5168
commit 8d060b6
Showing
17 changed files
with
471 additions
and
28 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,10 +1,24 @@ | ||
# Author: Yiannis Charalambous | ||
|
||
from abc import abstractmethod | ||
from typing import Optional | ||
import urwid | ||
|
||
|
||
class Context(object): | ||
def __init__(self, widget: urwid.Widget) -> None: | ||
super().__init__() | ||
class Context(urwid.WidgetWrap): | ||
def __init__(self, widget: Optional[urwid.Widget] = None) -> None: | ||
super().__init__(widget if widget else self.build_ui()) | ||
|
||
self.widget: urwid.Widget = widget | ||
@property | ||
def widget(self) -> urwid.Widget: | ||
assert isinstance(self._wrapped_widget, urwid.Widget) | ||
return self._wrapped_widget | ||
|
||
@widget.setter | ||
def widget(self, value: urwid.Widget) -> None: | ||
self._wrapped_widget = value | ||
|
||
@abstractmethod | ||
def build_ui(self) -> urwid.Widget: | ||
"""Provides a method to build the interface, if not provided.""" | ||
raise NotImplementedError |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
# Author: Yiannis Charalambous | ||
|
||
from typing_extensions import override | ||
|
||
import urwid | ||
from esbmc_ai_config.context import Context | ||
from esbmc_ai_config.context_manager import ContextManager | ||
|
||
|
||
class DialogContext(Context): | ||
def __init__(self, title: str = "", message: str = "") -> None: | ||
self.title: str = title | ||
self.message: str = message | ||
|
||
super().__init__() | ||
|
||
def _on_ok(self, button) -> None: | ||
ContextManager.pop_context() | ||
|
||
@override | ||
def build_ui(self) -> urwid.Widget: | ||
ok_button: urwid.Button = urwid.Button("OK", on_press=self._on_ok) | ||
|
||
body: list[urwid.Widget] = [ | ||
urwid.Text(self.title), | ||
urwid.Divider(), | ||
urwid.Text(self.message), | ||
urwid.Divider(), | ||
urwid.Columns([urwid.AttrMap(ok_button, None, focus_map="reversed")]), | ||
] | ||
|
||
list_menu: urwid.ListBox = urwid.ListBox(body) | ||
# Wrap in nice UI. | ||
overlay: urwid.Widget = urwid.Overlay( | ||
urwid.LineBox(urwid.Padding(list_menu, left=2, right=2)), | ||
urwid.SolidFill("\N{MEDIUM SHADE}"), | ||
align="center", | ||
valign="middle", | ||
width=("relative", 60), | ||
height=("relative", 15), | ||
min_width=20, | ||
min_height=10, | ||
) | ||
return overlay |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
# Author: Yiannis Charalambous | ||
|
||
from typing_extensions import override | ||
|
||
import urwid | ||
from esbmc_ai_config.contexts.base_menu import BaseMenu | ||
from esbmc_ai_config.widgets.text_input_button import TextInputButton | ||
|
||
|
||
class ESBMCMenu(BaseMenu): | ||
def __init__(self) -> None: | ||
super().__init__(title="ESBMC Options", choices=self._get_menu_choices()) | ||
|
||
def _on_esbmc_path(self, title: str, value: str, ok_pressed: bool) -> None: | ||
return | ||
|
||
def _get_menu_choices(self) -> list[str | urwid.Widget]: | ||
return [ | ||
TextInputButton( | ||
"ESBMC Path", | ||
"", | ||
on_submit=self._on_esbmc_path, | ||
), | ||
"ESBMC Parameters", | ||
] | ||
|
||
@override | ||
def build_ui(self) -> urwid.Widget: | ||
self.choices = self._get_menu_choices() | ||
menu: urwid.Widget = super().build_ui() | ||
overlay: urwid.Widget = urwid.Overlay( | ||
urwid.LineBox(menu), | ||
urwid.SolidFill("\N{MEDIUM SHADE}"), | ||
align="center", | ||
valign="middle", | ||
width=("relative", 60), | ||
height=("relative", 15), | ||
min_width=20, | ||
min_height=10, | ||
) | ||
return overlay |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
# Author: Yiannis Charalambous | ||
|
||
from typing_extensions import override | ||
|
||
import urwid | ||
from esbmc_ai_config.context import Context | ||
from esbmc_ai_config.context_manager import ContextManager | ||
from esbmc_ai_config.contexts.dialog_context import DialogContext | ||
from esbmc_ai_config.models.config_manager import ConfigManager | ||
|
||
|
||
class SaveMenu(Context): | ||
def __init__(self) -> None: | ||
super().__init__() | ||
|
||
def _on_cancel(self, button) -> None: | ||
ContextManager.pop_context() | ||
|
||
def _on_ok(self, button) -> None: | ||
ContextManager.pop_context() | ||
ConfigManager.env_config.save() | ||
# TODO | ||
# ConfigManager.json_config.save() | ||
ContextManager.push_context( | ||
DialogContext( | ||
"Success", | ||
"ESBMC-AI Env and Config have been written successfully!", | ||
) | ||
) | ||
|
||
@override | ||
def build_ui(self) -> urwid.Widget: | ||
cancel_button: urwid.Button = urwid.Button("Cancel", on_press=self._on_cancel) | ||
ok_button: urwid.Button = urwid.Button("OK", on_press=self._on_ok) | ||
|
||
body: list[urwid.Widget] = [ | ||
urwid.Text("Confirm"), | ||
urwid.Divider(), | ||
urwid.Text("Are you sure you want to save at location: "), | ||
urwid.Divider(), | ||
urwid.Columns( | ||
[ | ||
("weight", 1, urwid.Divider()), | ||
( | ||
"weight", | ||
2, | ||
urwid.AttrMap(cancel_button, None, focus_map="reversed"), | ||
), | ||
("weight", 1, urwid.Divider()), | ||
("weight", 2, urwid.AttrMap(ok_button, None, focus_map="reversed")), | ||
("weight", 1, urwid.Divider()), | ||
] | ||
), | ||
] | ||
|
||
list_menu: urwid.ListBox = urwid.ListBox(body) | ||
# Wrap in nice UI. | ||
overlay: urwid.Widget = urwid.Overlay( | ||
urwid.LineBox(urwid.Padding(list_menu, left=2, right=2)), | ||
urwid.SolidFill("\N{MEDIUM SHADE}"), | ||
align="center", | ||
valign="middle", | ||
width=("relative", 60), | ||
height=("relative", 15), | ||
min_width=20, | ||
min_height=10, | ||
) | ||
return overlay |
Empty file.
Oops, something went wrong.