Photino.API
1.2.0-alpha
dotnet add package Photino.API --version 1.2.0-alpha
NuGet\Install-Package Photino.API -Version 1.2.0-alpha
<PackageReference Include="Photino.API" Version="1.2.0-alpha" />
paket add Photino.API --version 1.2.0-alpha
#r "nuget: Photino.API, 1.2.0-alpha"
// Install Photino.API as a Cake Addin #addin nuget:?package=Photino.API&version=1.2.0-alpha&prerelease // Install Photino.API as a Cake Tool #tool nuget:?package=Photino.API&version=1.2.0-alpha&prerelease
Photino.API
API for performing back-end logic via Photino.NET and .NET 5 from the font-end.
Install and Use
Install Photino.API via NuGet using your IDE, package manager, the .NET CLI, or which ever other method of installing NuGet packages you prefer.
After installing, you will need to register the API with a PhotinoWindow
// Program.cs
[STAThread]
private static void Main(string[] args)
{
var api = new PhotinoApi();
var window = new PhotinoWindow()
.SetTitle("Example")
.RegisterApi(api)
.Load("wwwroot/index.html");
window.WaitForClose();
}
photino.js
The point of Photino.API is to make it possible to write most your application logic on your front-end. To do this, you will need photino.js.
Install as an NPM module
npm i photino.js
Usage
import { Photino } from 'photino.js';
(async function() {
await Photino.window.setTitle('Custom Title');
})();
...or
As a UMD module (download here)
<script src="https://unpkg.com/photino.js"></script>
Usage
const Photino = PhotinoAPI.Photino;
(async function() {
await Photino.window.setTitle('Custom Title');
})();
The API
The API is broken up into "modules" which act as categories for "methods".
Modules
Window
Photino.window
Method | Description |
---|---|
getTitle(): Promise<string> |
Get the window title |
getMaximized(): Promise<boolean> |
Get whether or not the window is maximized |
getMinimized(): Promise<boolean> |
Get whether or not the window is minimized |
getDevToolsEnabled(): Promise<boolean> |
Get whether or not dev tools are enabled |
getContextMenuEnabled(): Promise<boolean> |
Get whether or not the context menu is enabled |
getTopMost(): Promise<boolean> |
Get whether or not the window is top-most |
getChromeless(): Promise<boolean> |
Get whether or not the window is chromeless |
getFullScreen(): Promise<boolean> |
Get whether or not the window is full-screen |
getResizable(): Promise<boolean> |
Get whether or not the window is resizable |
getWidth(): Promise<number> |
Get the width of the window |
getHeight(): Promise<number> |
Get the height of the window |
getTop(): Promise<number> |
Get the top location of the window |
getLeft(): Promise<number> |
Get the left location of the window |
setTitle(title: string): Promise<void> |
Set the window title |
setMaximized(maximized: boolean): Promise<void> |
Set whether or not the window is maximized |
setMinimized(minimized: boolean): Promise<void> |
Set whether or not the window is minimized |
setDevToolsEnabled(enabled: boolean): Promise<void> |
Set whether or not dev tools are enabled |
setContextMenuEnabled(enabled: boolean): Promise<void> |
Set whether or not the context menu is enabled |
setTopMost(topMost: boolean): Promise<void> |
Set whether or not the window is top-most |
setChromeless(chromeless: boolean): Promise<void> |
Set whether or not the window is chromeless |
setFullScreen(fullScreen: boolean): Promise<void> |
Set whether or not the window is full-screen |
setResizable(resizable: boolean): Promise<void> |
Set whether or not the window is resizable |
setWidth(width: number): Promise<void> |
Set the width of the window |
setHeight(height: number): Promise<void> |
Set the height of the window |
setTop(top: number): Promise<void> |
Set the top location of the window |
setLeft(left: number): Promise<void> |
Set the left location of the window |
close(): Promise<void> |
Close the window |
load(path: string): Promise<void> |
Load an HTML document via URL or file path |
loadRawString(content: string): Promise<void> |
Load a raw string |
center(): Promise<void> |
Center the window |
Windows Only:
Method | Description |
---|---|
hitTest(hitTest: string): void |
Perform a hit-test on the window.<br />Hit-Tests: drag , n , s , e , w , ne , nw , se , sw |
drag(): void |
Perform the drag hit-test (HTCAPTION ) |
resizeTopLeft(): void |
Perform the nw hit-test (HTTOPLEFT ) |
resizeTop(): void |
Perform the n hit-test (HTTOP ) |
resizeTopRight(): void |
Perform the ne hit-test (HTTOPRIGHT ) |
resizeRight(): void |
Perform the e hit-test (HTRIGHT ) |
resizeBottomRight(): void |
Perform the se hit-test (HTBOTTOMRIGHT ) |
resizeBottom(): void |
Perform the s hit-test (HTBOTTOM ) |
resizeBottomLeft(): void |
Perform the sw hit-test (HTBOTTOMLEFT ) |
resizeLeft(): void |
Perform the w hit-test (HTLEFT ) |
Hit-Test Example:
const elDragArea = document.getElementById('drag-area');
elDragArea.addEventListener('mousedown', function (ev) {
Photino.window.drag();
ev.preventDefault();
ev.stopPropagation();
})
All hit-test methods are synchronous
More about Windows hit-tests here
Hit-tests must be enabled on the .NET end of your app:
// Program.cs [STAThread] private static void Main(string[] args) { var api = new PhotinoApi() .SetHandleHitTest(true); ... }
IO
Photino.io
Method | Description |
---|---|
readFile(path: string): Promise<Uint8Array> |
Read data of a file |
readFileText(path: string, encoding: Encoding = null): Promise<string> |
Read all text in a file |
readFileLines(path: string, encoding: Encoding = null): Promise<string[]> |
Read all lines in a file |
writeFile(path: string, data: Uint8Array): Promise<void> |
Write data to a file |
writeFileText(path: string, contents: string, encoding: Encoding = null): Promise<void> |
Write all text to a file |
writeFileLines(path: string, contents: string[], encoding: Encoding = null): Promise<void> |
Write all lines to a file |
listFiles(path: string, searchPattern: string = null, recursive: boolean = false): Promise<string[]> |
List files in a folder |
listFolders(path: string, searchPattern: string = null, recursive: boolean = false): Promise<string[]> |
List folders in a folder |
createFolder(path: string): Promise<void> |
Create a folder |
deleteFile(path: string): Promise<void> |
Delete a file |
deleteFolder(path: string, recursive: boolean = false): Promise<void> |
Delete a folder |
fileExists(path: string): Promise<boolean> |
Check if a file exists |
folderExists(path: string): Promise<boolean> |
Check if a folder exists |
resolvePath(path: string): Promise<string> |
Resolve to an absolute path |
getExtension(path: string): Promise<string> |
Get the extension of a file |
OS
Photino.os
Method | Description |
---|---|
isWindows(): Promise<boolean> |
Whether or not the current operating system is Windows |
isLinux(): Promise<boolean> |
Whether or not the current operating system is Linux |
isMacOs(): Promise<boolean> |
Whether or not the current operating system is MacOS |
getEnvar(key: string): Promise<string> |
Get the value of an environment variable |
cmd(command: string): Promise<string> |
Execute a command using the operating system's default shell |
App
Photino.app
Method | Description |
---|---|
exit(exitCode: number): Promise<void> |
Exit the application with a given exit code |
cwd(): Promise<string> |
Get the application's current working directory |
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 is compatible. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net5.0
- Newtonsoft.Json (>= 13.0.1)
- Photino.NET (>= 2.0.13)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.2.0-alpha | 608 | 10/20/2021 |
1.1.1-alpha | 154 | 10/19/2021 |
1.1.0-alpha | 208 | 10/17/2021 |
1.0.1-alpha | 200 | 8/21/2021 |