Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
// This example requires 80x24 (or bigger)

use Aspectus\Aspectus;
use Aspectus\Component;
use Aspectus\Components\Basic\DefaultMainComponent;
use Aspectus\Message;
use Aspectus\Terminal\TerminalDevice;
use Aspectus\Terminal\Xterm;
Expand All @@ -29,7 +29,7 @@
DATA;

// model
class HexEditorComponent implements Component
class HexEditorComponent extends DefaultMainComponent
{
public const UP = 1;
public const DOWN = 2;
Expand All @@ -51,8 +51,9 @@ class HexEditorComponent implements Component
public function __construct(
private readonly HexView $hexView,
private readonly ProgressBar $progressBar,
private readonly Xterm $xterm
protected Xterm $xterm
) {
parent::__construct($this->xterm);
$this->progressBarStyle = (new StyleBuilder())
->fgi(14)
->bgi(12)
Expand All @@ -71,12 +72,21 @@ public function __construct(
*/
public function update(?Message $message): ?Message
{
return match ($message->type) {
return match ($message?->type) {
Message::KEY_PRESS => $this->handleKeyPress($message['key']),
default => null,
default => parent::update($message),
};
}

public function onInit(Aspectus $aspectus): ?Message
{
$message = parent::onInit($aspectus);
$this->xterm
->showCursor()
->flush();
return $message;
}

private function handleKeyPress(string $key): ?Message
{
$a = 1;
Expand Down
33 changes: 10 additions & 23 deletions examples/input-demo/input-demo.php
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?php

use Aspectus\Aspectus;
use Aspectus\Component;
use Aspectus\Components\Basic\DefaultMainComponent;
use Aspectus\Message;
use Aspectus\Terminal\TerminalDevice;
use Aspectus\Terminal\Xterm;
Expand All @@ -16,7 +16,7 @@

// ///////////////////////////////////////

class MouseInputViewer implements Component
class MouseInputViewer extends DefaultMainComponent
{
private string $received = '';

Expand All @@ -34,9 +34,10 @@ class MouseInputViewer implements Component
private $hexView;

public function __construct(
private readonly Xterm $xterm
protected Xterm $xterm
) {
$this->hexView = new HexView('');
parent::__construct($this->xterm);
}

public function view(): string
Expand Down Expand Up @@ -140,14 +141,12 @@ public function update(?Message $message): ?Message
$this->mouseEvent = null;
$this->received = '';

return match ($message->type) {
Message::INIT => $this->init($message['reference']),
return match ($message?->type) {
Message::KEY_PRESS => $this->handleKeyPress($message['key'], $message['original']),
Message::MOUSE_INPUT => $this->handleMouseInput($message['event']),
Message::MOUSE_FOCUS_IN => $this->handleFocus(true),
Message::MOUSE_FOCUS_OUT => $this->handleFocus(false),
Message::TERMINATE => $this->terminate($message['reference']),
default => null,
default => parent::update($message),
};
}

Expand Down Expand Up @@ -246,25 +245,13 @@ private function addReceived(string $sequence): void
$this->received = $sequence;
}

public function init(Aspectus $aspectus): ?Message
public function onTerminate(Aspectus $aspectus): ?Message
{
$aspectus->xterm
->setPrivateModeSaveCursorAndEnterAlternateScreenBuffer()
->hideCursor()
->flush();

return null;
}

public function terminate(Aspectus $aspectus): ?Message
{
$aspectus->xterm
->setPrivateModeRestoreCursorAndEnterNormalScreenBuffer()
->showCursor()
$message = parent::onTerminate($aspectus);
$this->xterm
->reset()
->flush();

return null;
return $message;
}
}

Expand Down
3 changes: 3 additions & 0 deletions examples/timer/timer-alt-screen-buffer.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@

// ///////////////////////////////////////

/**
* DefaultMainComponent does by default handle the alt screen buffer
*/
class Timer implements Component
{
private int $ticksLeft = 10;
Expand Down
2 changes: 1 addition & 1 deletion src/Aspectus.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ final class Aspectus
/** @var string */
public const SIGNAL_CALLBACK_ID = "__signal_callback_id";

/** @var array<string, string> */
/** @var array<string> */
private array $callbackIds = [];

/** @var array<string, float> */
Expand Down