new types and classes
This commit is contained in:
parent
20df39ee4e
commit
9a3a1b084a
26 changed files with 1324 additions and 2 deletions
208
lib/types.ts
Normal file
208
lib/types.ts
Normal file
|
|
@ -0,0 +1,208 @@
|
|||
import { MwCLIPBOARD, MwCOORDINATE } from "./enums";
|
||||
import { MwPoint, MwRect } from "./structs";
|
||||
|
||||
export type MwClass = object & { __brand: "MwClass" };
|
||||
|
||||
/**
|
||||
* `BaseWidget` represents the lowest level form of widgets before the native layer.
|
||||
* This class contains the fundamental native methods shared by all widgets.
|
||||
*/
|
||||
export interface BaseWidget {
|
||||
area: MwRect;
|
||||
isPending: boolean;
|
||||
parent: BaseWidget;
|
||||
children: BaseWidget[];
|
||||
name: string;
|
||||
cursorCoord: MwPoint;
|
||||
screenSize: MwRect;
|
||||
coordinateType: MwCOORDINATE;
|
||||
nativeClass: MwClass;
|
||||
|
||||
/**
|
||||
* Sets new position and size to this widget
|
||||
* @param area New rect
|
||||
*/
|
||||
setArea(area: MwRect): this;
|
||||
|
||||
/**
|
||||
* Moves this widget to an absolute position
|
||||
* @param x X position
|
||||
* @param y Y position
|
||||
*/
|
||||
move(x: number, y: number): this;
|
||||
|
||||
/**
|
||||
* Changes the size dimension of this widget
|
||||
* @param width New width
|
||||
* @param height New height
|
||||
*/
|
||||
resize(width: number, height: number): this;
|
||||
|
||||
/**
|
||||
* Runs a single step through the event loop
|
||||
* @returns Wether the step was successful
|
||||
*/
|
||||
step(): boolean;
|
||||
|
||||
/**
|
||||
* Start the main loop on this widget
|
||||
*/
|
||||
loop(): this;
|
||||
|
||||
/**
|
||||
* Show/hide this widget
|
||||
* @param toggle Wether the widget is shown
|
||||
*/
|
||||
show(toggle: boolean): this;
|
||||
|
||||
/**
|
||||
* Hides the cursor when being hovered over this widget
|
||||
*/
|
||||
hideCursor(): this;
|
||||
|
||||
/**
|
||||
* Grabs the pointer and pins it to the center of this widget
|
||||
* @param toggle Wether the pointer is grabbed
|
||||
*/
|
||||
grabPointer(toggle: boolean): this;
|
||||
|
||||
/**
|
||||
* Focus this widget
|
||||
*/
|
||||
focus(): this;
|
||||
|
||||
/**
|
||||
* Adds this widget to the tick handler list
|
||||
*/
|
||||
addTickList(): this;
|
||||
|
||||
/**
|
||||
* Forces this widget to render
|
||||
*/
|
||||
forceRender(): this;
|
||||
|
||||
/**
|
||||
* Reparents this widget to a new parent
|
||||
* @param widget New parent
|
||||
*/
|
||||
reparent(widget: BaseWidget): this;
|
||||
|
||||
/**
|
||||
* Adds another widget as child of this one
|
||||
* @param widgets Widgets to add
|
||||
*/
|
||||
addChild(...widgets: BaseWidget[]): this;
|
||||
|
||||
/**
|
||||
* Destroys this widget
|
||||
*/
|
||||
destroy(): null;
|
||||
|
||||
/**
|
||||
* Queues this widget to get clipboard content.
|
||||
* This is ignored in backends that aren't or X11/Wayland.
|
||||
* @param type Clipboard type to get, if you are unsure just use `MwCLIPBOARD_MAIN`
|
||||
*/
|
||||
getClipboard(type: MwCLIPBOARD): undefined;
|
||||
|
||||
/**
|
||||
* Sets a value to an integer property by its key
|
||||
* @param key Prefixed property key
|
||||
* @param value Value to assign to property
|
||||
*/
|
||||
setInteger(key: string, value: number): this;
|
||||
|
||||
/**
|
||||
* Sets a value to a string property by its key
|
||||
* @param key Prefixed property key
|
||||
* @param value Value to assign to property
|
||||
*/
|
||||
setString(key: string, value: string): this;
|
||||
|
||||
/**
|
||||
* Sets the value of a void* property by its key.
|
||||
* You most likely shouldn't use this unless you are extending BaseWidget
|
||||
* @param key Prefixed property key
|
||||
*/
|
||||
setVoid(key: string, value: unknown): this;
|
||||
|
||||
/**
|
||||
* Gets the value of an integer property by its key
|
||||
* @param key Prefixed property key
|
||||
*/
|
||||
getInteger(key: string): number;
|
||||
|
||||
/**
|
||||
* Gets the value of a string property by its key
|
||||
* @param key Prefixed property key
|
||||
*/
|
||||
getString(key: string): string;
|
||||
|
||||
/**
|
||||
* Gets the value of a void* property by its key.
|
||||
* You most likely shouldn't use this unless you are extending BaseWidget
|
||||
* @param key Prefixed property key
|
||||
*/
|
||||
getVoid(key: string): unknown;
|
||||
}
|
||||
|
||||
export interface BaseWidgetConstructor {
|
||||
new (cls: MwClass | null, options: WidgetOptions): BaseWidget;
|
||||
}
|
||||
|
||||
export interface MwNativeClasses {
|
||||
Box: MwClass;
|
||||
Button: MwClass;
|
||||
CheckBox: MwClass;
|
||||
Entry: MwClass;
|
||||
Frame: MwClass;
|
||||
Image: MwClass;
|
||||
Label: MwClass;
|
||||
ListBox: MwClass;
|
||||
Menu: MwClass;
|
||||
NumberEntry: MwClass;
|
||||
ScrollBar: MwClass;
|
||||
SubMenu: MwClass;
|
||||
SubWindow: MwClass;
|
||||
Viewport: MwClass;
|
||||
Window: MwClass;
|
||||
ProgressBar: MwClass;
|
||||
RadioBox: MwClass;
|
||||
ComboBox: MwClass;
|
||||
TreeView: MwClass;
|
||||
}
|
||||
|
||||
export interface Pixmap {
|
||||
size: MwRect;
|
||||
|
||||
/**
|
||||
* Get the raw data of this pixmap
|
||||
*/
|
||||
getRaw(): Buffer;
|
||||
|
||||
/**
|
||||
* Updates this pixmap using raw data
|
||||
* @param data Image data to update
|
||||
*/
|
||||
reloadRaw(data: Buffer | ArrayBuffer): void;
|
||||
}
|
||||
|
||||
export interface PixmapOptions {
|
||||
data?: Buffer;
|
||||
width?: number;
|
||||
height?: number;
|
||||
}
|
||||
|
||||
export interface PixmapConstructor {
|
||||
new (cls: BaseWidget, options?: PixmapOptions): Pixmap;
|
||||
}
|
||||
|
||||
export interface WidgetOptions {
|
||||
name?: string;
|
||||
parent?: BaseWidget;
|
||||
children?: BaseWidget[];
|
||||
x?: number;
|
||||
y?: number;
|
||||
width?: number;
|
||||
height?: number;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue