GuiEffect

sealed interface GuiEffect

A one-shot request the controller can't fulfil itself and hands off to the hosting platform (file dialogs, actual I/O, confirmation prompts, clipboard, process exit) - delivered via GuiModel.effects.

Inheritors

Types

Link copied to clipboard
data class ConfirmCloseDirtyPage(val id: EffectId, val pageId: PageId, val documentId: DocumentId, val displayName: String) : GuiEffect

Ask the user how to handle closing a dirty page (save/discard/cancel).

Link copied to clipboard
data class ConfirmExitWithDirtyDocuments(val id: EffectId, val dirtyDocuments: List<DocumentId>) : GuiEffect

Ask the user to confirm exiting while dirtyDocuments still have unsaved changes.

Link copied to clipboard
data class ConfirmReloadDirtyDocument(val id: EffectId, val documentId: DocumentId, val displayName: String) : GuiEffect

Ask the user whether to discard unsaved changes before reloading a document.

Link copied to clipboard
data class CopyTextToClipboard(val id: EffectId, val text: String) : GuiEffect

Put text on the system clipboard.

Link copied to clipboard
data class ExitApplication(val id: EffectId) : GuiEffect

Actually terminate the application/close its window.

Link copied to clipboard
data class PickOpenDocument(val id: EffectId, val acceptedExtensions: Set<String> = setOf("pl", "2p", "txt")) : GuiEffect

Show a native "open file" picker restricted to acceptedExtensions.

Link copied to clipboard
data class PickSaveDestination(val id: EffectId, val documentId: DocumentId, val suggestedName: String) : GuiEffect

Show a native "save as" picker for a document with no origin yet, defaulting to suggestedName.

Link copied to clipboard
data class ReadDocument(val id: EffectId, val documentId: DocumentId, val origin: DocumentOrigin) : GuiEffect

Actually read origin's current content, e.g. to reload a document.

Link copied to clipboard
data class WriteDocument(val id: EffectId, val documentId: DocumentId, val origin: DocumentOrigin, val text: String, val revision: Long) : GuiEffect

Actually persist text to origin; the platform reports back success/failure via a DocumentAction.

Properties

Link copied to clipboard
abstract val id: EffectId

Uniquely identifies this effect instance.