118 lines
4.2 KiB
Zig
118 lines
4.2 KiB
Zig
const std = @import("std");
|
|
pub const c = @import("c.zig").c;
|
|
const surface_api = @import("surface.zig");
|
|
|
|
pub const Surface = surface_api.Surface;
|
|
|
|
pub const Tray = opaque {
|
|
pub inline fn setTrayIcon(tray: *Tray, icon: ?*Surface) void {
|
|
return c.SDL_SetTrayIcon(@ptrCast(tray), @ptrCast(icon));
|
|
}
|
|
|
|
pub inline fn setTrayTooltip(tray: *Tray, tooltip: [*c]const u8) void {
|
|
return c.SDL_SetTrayTooltip(@ptrCast(tray), tooltip);
|
|
}
|
|
|
|
pub inline fn createTrayMenu(tray: *Tray) ?*TrayMenu {
|
|
return @ptrCast(c.SDL_CreateTrayMenu(@ptrCast(tray)));
|
|
}
|
|
|
|
pub inline fn getTrayMenu(tray: *Tray) ?*TrayMenu {
|
|
return @ptrCast(c.SDL_GetTrayMenu(@ptrCast(tray)));
|
|
}
|
|
|
|
pub inline fn destroyTray(tray: *Tray) void {
|
|
return c.SDL_DestroyTray(@ptrCast(tray));
|
|
}
|
|
};
|
|
|
|
pub const TrayMenu = opaque {
|
|
pub inline fn getTrayEntries(traymenu: *TrayMenu, count: *c_int) [*c]?*const TrayEntry {
|
|
return c.SDL_GetTrayEntries(@ptrCast(traymenu), @ptrCast(count));
|
|
}
|
|
|
|
pub inline fn insertTrayEntryAt(traymenu: *TrayMenu, pos: c_int, label: [*c]const u8, flags: TrayEntryFlags) ?*TrayEntry {
|
|
return @ptrCast(c.SDL_InsertTrayEntryAt(@ptrCast(traymenu), pos, label, @bitCast(flags)));
|
|
}
|
|
|
|
pub inline fn getTrayMenuParentEntry(traymenu: *TrayMenu) ?*TrayEntry {
|
|
return @ptrCast(c.SDL_GetTrayMenuParentEntry(@ptrCast(traymenu)));
|
|
}
|
|
|
|
pub inline fn getTrayMenuParentTray(traymenu: *TrayMenu) ?*Tray {
|
|
return @ptrCast(c.SDL_GetTrayMenuParentTray(@ptrCast(traymenu)));
|
|
}
|
|
};
|
|
|
|
pub const TrayEntry = opaque {
|
|
pub inline fn createTraySubmenu(trayentry: *TrayEntry) ?*TrayMenu {
|
|
return @ptrCast(c.SDL_CreateTraySubmenu(@ptrCast(trayentry)));
|
|
}
|
|
|
|
pub inline fn getTraySubmenu(trayentry: *TrayEntry) ?*TrayMenu {
|
|
return @ptrCast(c.SDL_GetTraySubmenu(@ptrCast(trayentry)));
|
|
}
|
|
|
|
pub inline fn removeTrayEntry(trayentry: *TrayEntry) void {
|
|
return c.SDL_RemoveTrayEntry(@ptrCast(trayentry));
|
|
}
|
|
|
|
pub inline fn setTrayEntryLabel(trayentry: *TrayEntry, label: [*c]const u8) void {
|
|
return c.SDL_SetTrayEntryLabel(@ptrCast(trayentry), label);
|
|
}
|
|
|
|
pub inline fn getTrayEntryLabel(trayentry: *TrayEntry) [*c]const u8 {
|
|
return c.SDL_GetTrayEntryLabel(@ptrCast(trayentry));
|
|
}
|
|
|
|
pub inline fn setTrayEntryChecked(trayentry: *TrayEntry, checked: bool) void {
|
|
return c.SDL_SetTrayEntryChecked(@ptrCast(trayentry), @bitCast(checked));
|
|
}
|
|
|
|
pub inline fn getTrayEntryChecked(trayentry: *TrayEntry) bool {
|
|
return @bitCast(c.SDL_GetTrayEntryChecked(@ptrCast(trayentry)));
|
|
}
|
|
|
|
pub inline fn setTrayEntryEnabled(trayentry: *TrayEntry, enabled: bool) void {
|
|
return c.SDL_SetTrayEntryEnabled(@ptrCast(trayentry), @bitCast(enabled));
|
|
}
|
|
|
|
pub inline fn getTrayEntryEnabled(trayentry: *TrayEntry) bool {
|
|
return @bitCast(c.SDL_GetTrayEntryEnabled(@ptrCast(trayentry)));
|
|
}
|
|
|
|
pub inline fn setTrayEntryCallback(trayentry: *TrayEntry, callback: TrayCallback, userdata: ?*anyopaque) void {
|
|
return c.SDL_SetTrayEntryCallback(@ptrCast(trayentry), callback, userdata);
|
|
}
|
|
|
|
pub inline fn clickTrayEntry(trayentry: *TrayEntry) void {
|
|
return c.SDL_ClickTrayEntry(@ptrCast(trayentry));
|
|
}
|
|
|
|
pub inline fn getTrayEntryParent(trayentry: *TrayEntry) ?*TrayMenu {
|
|
return @ptrCast(c.SDL_GetTrayEntryParent(@ptrCast(trayentry)));
|
|
}
|
|
};
|
|
|
|
pub const TrayEntryFlags = packed struct(u32) {
|
|
trayentryButton: bool = false, // Make the entry a simple button. Required.
|
|
trayentryCheckbox: bool = false, // Make the entry a checkbox. Required.
|
|
trayentrySubmenu: bool = false, // Prepare the entry to have a submenu. Required
|
|
trayentryDisabled: bool = false, // Make the entry disabled. Optional.
|
|
trayentryChecked: bool = false, // Make the entry checked. This is valid only for checkboxes. Optional.
|
|
pad0: u26 = 0,
|
|
rsvd: bool = false,
|
|
|
|
pub const None = TrayEntryFlags{};
|
|
};
|
|
|
|
pub const TrayCallback = c.SDL_TrayCallback;
|
|
|
|
pub inline fn createTray(icon: ?*Surface, tooltip: [*c]const u8) ?*Tray {
|
|
return @ptrCast(c.SDL_CreateTray(@ptrCast(icon), tooltip));
|
|
}
|
|
|
|
pub inline fn updateTrays() void {
|
|
return c.SDL_UpdateTrays();
|
|
}
|