Skip to content

Commit 5a2deb8

Browse files
committed
(#5) Added WindowActionProvider and libnut WindowAction implementation
1 parent b7b1416 commit 5a2deb8

File tree

2 files changed

+83
-0
lines changed

2 files changed

+83
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import libnut = require("@nut-tree/libnut");
2+
import { Region } from "../../region.class";
3+
import { WindowActionProvider } from "./window-action-provider.interface";
4+
5+
export class WindowAction implements WindowActionProvider {
6+
public getWindows(): Promise<number[]> {
7+
return new Promise<number[]>((resolve, reject) => {
8+
try {
9+
resolve(libnut.getWindows());
10+
} catch (e) {
11+
reject(e);
12+
}
13+
});
14+
}
15+
16+
getActiveWindow(): Promise<number> {
17+
return new Promise<number>((resolve, reject) => {
18+
try {
19+
resolve(libnut.getActiveWindow());
20+
} catch (e) {
21+
reject(e);
22+
}
23+
});
24+
}
25+
26+
getWindowRegion(windowHandle: number): Promise<Region> {
27+
return new Promise<Region>((resolve, reject) => {
28+
try {
29+
const windowRect = libnut.getWindowRect(windowHandle);
30+
resolve(new Region(windowRect.x, windowRect.y, windowRect.width, windowRect.height));
31+
} catch (e) {
32+
reject(e);
33+
}
34+
});
35+
}
36+
37+
getWindowTitle(windowHandle: number): Promise<string> {
38+
return new Promise<string>((resolve, reject) => {
39+
try {
40+
resolve(libnut.getWindowTitle(windowHandle));
41+
} catch (e) {
42+
reject(e);
43+
}
44+
});
45+
}
46+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import { Region } from "../../region.class";
2+
3+
/**
4+
* A WindowActionProvider should provide access to a system's window system
5+
*
6+
* @interface WindowActionProvider
7+
*/
8+
export interface WindowActionProvider {
9+
/**
10+
* {@link getWindows} returns a list of window handles for further processing.
11+
* These window handles may serve as input to e.g. {@link getWindowTitle}
12+
*
13+
* @returns A list of window handles
14+
*/
15+
getWindows(): Promise<number[]>;
16+
17+
/**
18+
* {@link getActiveWindow} returns the window handle of the currently active foreground window
19+
*
20+
* @returns The handle to the currently active foreground window
21+
*/
22+
getActiveWindow(): Promise<number>;
23+
24+
/**
25+
* {@link getWindowTitle} returns the title of a window addressed via its window handle
26+
*
27+
* @returns A string representing the title of a window addressed via its window handle
28+
*/
29+
getWindowTitle(windowHandle: number): Promise<string>;
30+
31+
/**
32+
* {@link getWindowRegion} returns a {@link Region} object representing the size and position of the window addressed via its window handle
33+
*
34+
* @returns The {@link Region} occupied by the window addressed via its window handle
35+
*/
36+
getWindowRegion(windowHandle: number): Promise<Region>;
37+
}

0 commit comments

Comments
 (0)