new unified interface w/ textual: ui.py
This commit is contained in:
parent
5b15152aba
commit
84aacc32dc
|
|
@ -1011,7 +1011,7 @@ def enroll_gott_workshops():
|
||||||
#'GOTT 5: Essentials of Blended Learning (HyFlex)2023-06-25 17:00:00': 17987,
|
#'GOTT 5: Essentials of Blended Learning (HyFlex)2023-06-25 17:00:00': 17987,
|
||||||
#'GOTT 1: Intro to Teaching Online with Canvas2023-05-29 17:00:00': 17985,
|
#'GOTT 1: Intro to Teaching Online with Canvas2023-05-29 17:00:00': 17985,
|
||||||
#'GOTT 1: Intro to Teaching Online with Canvas2023-08-20 17:00:00': 17994
|
#'GOTT 1: Intro to Teaching Online with Canvas2023-08-20 17:00:00': 17994
|
||||||
'GOTT 1: Intro to Online Teaching2024-01-02 16:00:00': 19221,
|
'GOTT 1: Intro to Online Teaching2024-01-02 16:00:00': 19278,
|
||||||
'GOTT 2: Intro to Asynchronous Teaching and Learning2024-01-02 16:00:00': 19222,
|
'GOTT 2: Intro to Asynchronous Teaching and Learning2024-01-02 16:00:00': 19222,
|
||||||
'GOTT 5: Essentials of Blended Learning2024-01-02 16:00:00': 19223,
|
'GOTT 5: Essentials of Blended Learning2024-01-02 16:00:00': 19223,
|
||||||
'GOTT 6: Intro to Live Online Teaching and Learning2024-01-14 16:00:00': 19224,
|
'GOTT 6: Intro to Live Online Teaching and Learning2024-01-14 16:00:00': 19224,
|
||||||
|
|
@ -1369,7 +1369,7 @@ def teacher_to_many_shells():
|
||||||
import os, pickle
|
import os, pickle
|
||||||
|
|
||||||
def create_sandboxes():
|
def create_sandboxes():
|
||||||
courses_to_sandbox = [ (19221, ' Sandbox GOTT1 WI24'),
|
courses_to_sandbox = [ (19278, ' Sandbox GOTT1 WI24'),
|
||||||
(19222, ' Sandbox GOTT2 WI24'),
|
(19222, ' Sandbox GOTT2 WI24'),
|
||||||
(19223, ' Sandbox GOTT5 WI24'),
|
(19223, ' Sandbox GOTT5 WI24'),
|
||||||
#(19224, ' Sandbox GOTT6 WI24')
|
#(19224, ' Sandbox GOTT6 WI24')
|
||||||
|
|
@ -1387,6 +1387,7 @@ def create_sandboxes():
|
||||||
|
|
||||||
for crs_id, label in courses_to_sandbox:
|
for crs_id, label in courses_to_sandbox:
|
||||||
crs_info = getCourses(crs_id)
|
crs_info = getCourses(crs_id)
|
||||||
|
print(json.dumps(crs_info,indent=2))
|
||||||
c_name = crs_info['name']
|
c_name = crs_info['name']
|
||||||
print(f"Students in course {crs_id}: {c_name}" )
|
print(f"Students in course {crs_id}: {c_name}" )
|
||||||
enrolled = course_enrollment(crs_id)
|
enrolled = course_enrollment(crs_id)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,113 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
from textual.app import App, ComposeResult
|
||||||
|
from textual.widgets import Placeholder, Static
|
||||||
|
from textual.containers import VerticalScroll
|
||||||
|
from textual import events
|
||||||
|
from textual.reactive import Reactive
|
||||||
|
|
||||||
|
from itertools import cycle
|
||||||
|
|
||||||
|
hellos = cycle(
|
||||||
|
[
|
||||||
|
"Hola",
|
||||||
|
"Bonjour",
|
||||||
|
"Guten tag",
|
||||||
|
"Salve",
|
||||||
|
"Nǐn hǎo",
|
||||||
|
"Olá",
|
||||||
|
"Asalaam alaikum",
|
||||||
|
"Konnichiwa",
|
||||||
|
"Anyoung haseyo",
|
||||||
|
"Zdravstvuyte",
|
||||||
|
"Hello",
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
class Hello(Static):
|
||||||
|
# Display a greeting.
|
||||||
|
|
||||||
|
DEFAULT_CSS = """
|
||||||
|
Hello {
|
||||||
|
width: 40;
|
||||||
|
height: 9;
|
||||||
|
padding: 1 2;
|
||||||
|
background: $panel;
|
||||||
|
border: $secondary tall;
|
||||||
|
content-align: center middle;
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
|
||||||
|
def on_mount(self) -> None:
|
||||||
|
self.next_word()
|
||||||
|
|
||||||
|
def on_click(self) -> None:
|
||||||
|
self.next_word()
|
||||||
|
|
||||||
|
def next_word(self) -> None:
|
||||||
|
# Get a new hello and update the content area.
|
||||||
|
hello = next(hellos)
|
||||||
|
self.update(f"{hello}, [b]World[/b]!")
|
||||||
|
|
||||||
|
|
||||||
|
class MyApp(App):
|
||||||
|
|
||||||
|
async def startup(self):
|
||||||
|
await self.bind("q", "action_quit")
|
||||||
|
await self.push_view(self.control)
|
||||||
|
|
||||||
|
# Left area with numbers
|
||||||
|
numbers = "\n".join(str(i) for i in range(1, 501))
|
||||||
|
self.view.grid.set_focus("content")
|
||||||
|
h = Hello()
|
||||||
|
self.view.add_right(
|
||||||
|
#VerticalScroll(StrContent(numbers), name="Numbers"),
|
||||||
|
h,
|
||||||
|
width=50,
|
||||||
|
padding=(0,1),
|
||||||
|
)
|
||||||
|
|
||||||
|
# Right area with lorem ipsum placeholder
|
||||||
|
lorem_ipsum = """
|
||||||
|
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
|
||||||
|
tempor incididunt ut labore et dolore magna aliqua.
|
||||||
|
"""
|
||||||
|
self.view.add_right(
|
||||||
|
# VerticalScroll(StrContent(lorem_ipsum), name="Lorem"),
|
||||||
|
Static(lorem_ipsum, name="Lorem"),
|
||||||
|
width=50,
|
||||||
|
padding=(0,1),
|
||||||
|
)
|
||||||
|
|
||||||
|
# Command input at the bottom
|
||||||
|
self.view.add_bottom(Static("Enter command: "), height=3)
|
||||||
|
|
||||||
|
def action_quit(self):
|
||||||
|
self.exit()
|
||||||
|
|
||||||
|
"""
|
||||||
|
class CanvasApp(App):
|
||||||
|
# A Textual app to manage canvas.
|
||||||
|
|
||||||
|
BINDINGS = [("d", "toggle_dark", "Toggle dark mode")]
|
||||||
|
|
||||||
|
def compose(self) -> ComposeResult:
|
||||||
|
# Create child widgets for the app.
|
||||||
|
yield Header()
|
||||||
|
yield Footer()
|
||||||
|
|
||||||
|
def quit(self):
|
||||||
|
self.exit()
|
||||||
|
|
||||||
|
def action_toggle_dark(self) -> None:
|
||||||
|
# An action to toggle dark mode.
|
||||||
|
self.dark = not self.dark
|
||||||
|
"""
|
||||||
|
|
||||||
|
def text_app():
|
||||||
|
app = MyApp()
|
||||||
|
app.run()
|
||||||
|
|
||||||
|
|
||||||
|
text_app()
|
||||||
Loading…
Reference in New Issue