44 lines
No EOL
928 B
TypeScript
44 lines
No EOL
928 B
TypeScript
import {ClientIcon} from "svg-sprites/client-icons";
|
|
import {RemoteIconInfo} from "tc-shared/file/Icons";
|
|
|
|
export type MenuBarEntrySeparator = {
|
|
uniqueId?: string,
|
|
type: "separator"
|
|
};
|
|
export type MenuBarEntryNormal = {
|
|
uniqueId?: string,
|
|
type: "normal",
|
|
label: string,
|
|
|
|
disabled?: boolean,
|
|
visible?: boolean,
|
|
|
|
icon?: ClientIcon | RemoteIconInfo,
|
|
click?: () => void,
|
|
|
|
children?: MenuBarEntry[]
|
|
};
|
|
|
|
export type MenuBarEntry = MenuBarEntrySeparator | MenuBarEntryNormal;
|
|
|
|
export interface MenuBarDriver {
|
|
/**
|
|
* Separators on top level might not be rendered.
|
|
* @param entries
|
|
*/
|
|
setEntries(entries: MenuBarEntry[]);
|
|
|
|
/**
|
|
* Removes the menu bar
|
|
*/
|
|
clearEntries();
|
|
}
|
|
|
|
let driver: MenuBarDriver;
|
|
export function getMenuBarDriver() : MenuBarDriver {
|
|
return driver;
|
|
}
|
|
|
|
export function setMenuBarDriver(driver_: MenuBarDriver) {
|
|
driver = driver_;
|
|
} |