This commit is contained in:
Rui Carmo
2026-01-21 23:53:57 +00:00
commit a0e31d43fd
52 changed files with 6312 additions and 0 deletions
+74
View File
@@ -0,0 +1,74 @@
import io
from pathlib import Path
from textual import on
from textual.app import App, ComposeResult
from textual.events import DeliveryComplete
from textual.widgets import Button, Input, Label
class ScreenshotApp(App[None]):
def compose(self) -> ComposeResult:
yield Button("screenshot: no filename or mime", id="button-1")
yield Button("screenshot: screenshot.svg / open in browser", id="button-2")
yield Button("screenshot: screenshot.svg / download", id="button-3")
yield Button(
"screenshot: screenshot.svg / open in browser / plaintext mime",
id="button-4",
)
yield Label("Deliver custom file:")
yield Input(id="custom-path-input", placeholder="Path to file...")
@on(Button.Pressed, selector="#button-1")
def on_button_pressed(self) -> None:
screenshot_string = self.export_screenshot()
string_io = io.StringIO(screenshot_string)
self.deliver_text(string_io)
@on(Button.Pressed, selector="#button-2")
def on_button_pressed_2(self) -> None:
screenshot_string = self.export_screenshot()
string_io = io.StringIO(screenshot_string)
self.deliver_text(
string_io, save_filename="screenshot.svg", open_method="browser"
)
@on(Button.Pressed, selector="#button-3")
def on_button_pressed_3(self) -> None:
screenshot_string = self.export_screenshot()
string_io = io.StringIO(screenshot_string)
self.deliver_text(
string_io, save_filename="screenshot.svg", open_method="download"
)
@on(Button.Pressed, selector="#button-4")
def on_button_pressed_4(self) -> None:
screenshot_string = self.export_screenshot()
string_io = io.StringIO(screenshot_string)
self.deliver_text(
string_io,
save_filename="screenshot.svg",
open_method="browser",
mime_type="text/plain",
)
@on(DeliveryComplete)
def on_delivery_complete(self, event: DeliveryComplete) -> None:
self.notify(title="Download complete", message=event.key)
@on(Input.Submitted)
def on_input_submitted(self, event: Input.Submitted) -> None:
path = Path(event.value)
if path.exists():
self.deliver_binary(path)
else:
self.notify(
title="Invalid path",
message="The path does not exist.",
severity="error",
)
app = ScreenshotApp()
if __name__ == "__main__":
app.run()