146 lines
5.3 KiB
JavaScript
146 lines
5.3 KiB
JavaScript
import Widget from 'resource:///com/github/Aylur/ags/widget.js';
|
|
import { setupCursorHover } from "../.widgetutils/cursorhover.js";
|
|
import PopupWindow from '../.widgethacks/popupwindow.js';
|
|
import Keybinds from "./keybinds.js";
|
|
import PeriodicTable from "./periodictable.js";
|
|
import { ExpandingIconTabContainer } from '../.commonwidgets/tabcontainer.js';
|
|
import { checkKeybind } from '../.widgetutils/keybind.js';
|
|
import clickCloseRegion from '../.commonwidgets/clickcloseregion.js';
|
|
|
|
const cheatsheets = [
|
|
{
|
|
name: 'Keybinds',
|
|
materialIcon: 'keyboard',
|
|
contentWidget: Keybinds,
|
|
},
|
|
{
|
|
name: 'Periodic table',
|
|
materialIcon: 'experiment',
|
|
contentWidget: PeriodicTable,
|
|
},
|
|
];
|
|
|
|
const CheatsheetHeader = () => Widget.CenterBox({
|
|
vertical: false,
|
|
startWidget: Widget.Box({}),
|
|
centerWidget: Widget.Box({
|
|
vertical: true,
|
|
className: "spacing-h-15",
|
|
children: [
|
|
Widget.Box({
|
|
hpack: 'center',
|
|
className: 'spacing-h-5 cheatsheet-title',
|
|
children: [
|
|
Widget.Label({
|
|
hpack: 'center',
|
|
css: 'margin-right: 0.682rem;',
|
|
className: 'txt-title',
|
|
label: 'Cheat sheet',
|
|
}),
|
|
Widget.Label({
|
|
vpack: 'center',
|
|
className: "cheatsheet-key txt-small",
|
|
label: "",
|
|
}),
|
|
Widget.Label({
|
|
vpack: 'center',
|
|
className: "cheatsheet-key-notkey txt-small",
|
|
label: "+",
|
|
}),
|
|
Widget.Label({
|
|
vpack: 'center',
|
|
className: "cheatsheet-key txt-small",
|
|
label: "/",
|
|
})
|
|
]
|
|
}),
|
|
]
|
|
}),
|
|
endWidget: Widget.Button({
|
|
vpack: 'start',
|
|
hpack: 'end',
|
|
className: "cheatsheet-closebtn icon-material txt txt-hugeass",
|
|
onClicked: () => {
|
|
closeWindowOnAllMonitors('cheatsheet');
|
|
},
|
|
child: Widget.Label({
|
|
className: 'icon-material txt txt-hugeass',
|
|
label: 'close'
|
|
}),
|
|
setup: setupCursorHover,
|
|
}),
|
|
});
|
|
|
|
const sheetContents = [];
|
|
const SheetContent = (id) => {
|
|
sheetContents[id] = ExpandingIconTabContainer({
|
|
tabsHpack: 'center',
|
|
tabSwitcherClassName: 'sidebar-icontabswitcher',
|
|
transitionDuration: userOptions.animations.durationLarge * 1.4,
|
|
icons: cheatsheets.map((api) => api.materialIcon),
|
|
names: cheatsheets.map((api) => api.name),
|
|
children: cheatsheets.map((api) => api.contentWidget()),
|
|
onChange: (self, id) => {
|
|
self.shown = cheatsheets[id].name;
|
|
}
|
|
});
|
|
return sheetContents[id];
|
|
}
|
|
|
|
export default (id) => {
|
|
const sheets = SheetContent(id);
|
|
const widgetContent = Widget.Box({
|
|
vertical: true,
|
|
className: "cheatsheet-bg spacing-v-5",
|
|
children: [
|
|
CheatsheetHeader(),
|
|
sheets,
|
|
]
|
|
});
|
|
return PopupWindow({
|
|
monitor: id,
|
|
name: `cheatsheet${id}`,
|
|
layer: 'overlay',
|
|
keymode: 'on-demand',
|
|
visible: false,
|
|
anchor: ['top', 'bottom', 'left', 'right'],
|
|
child: Widget.Box({
|
|
vertical: true,
|
|
children: [
|
|
clickCloseRegion({ name: 'cheatsheet' }),
|
|
Widget.Box({
|
|
children: [
|
|
clickCloseRegion({ name: 'cheatsheet' }),
|
|
widgetContent,
|
|
clickCloseRegion({ name: 'cheatsheet' }),
|
|
]
|
|
}),
|
|
clickCloseRegion({ name: 'cheatsheet' }),
|
|
],
|
|
setup: (self) => self.on('key-press-event', (widget, event) => { // Typing
|
|
// Whole sheet
|
|
if (checkKeybind(event, userOptions.keybinds.cheatsheet.nextTab))
|
|
sheetContents.forEach(tab => tab.nextTab())
|
|
else if (checkKeybind(event, userOptions.keybinds.cheatsheet.prevTab))
|
|
sheetContents.forEach(tab => tab.prevTab())
|
|
else if (checkKeybind(event, userOptions.keybinds.cheatsheet.cycleTab))
|
|
sheetContents.forEach(tab => tab.cycleTab())
|
|
// Keybinds
|
|
if (sheets.attribute.names[sheets.attribute.shown.value] == 'Keybinds') { // If Keybinds tab is focused
|
|
if (checkKeybind(event, userOptions.keybinds.cheatsheet.keybinds.nextTab)) {
|
|
sheetContents.forEach((sheet) => {
|
|
const toSwitchTab = sheet.attribute.children[sheet.attribute.shown.value];
|
|
toSwitchTab.nextTab();
|
|
})
|
|
}
|
|
else if (checkKeybind(event, userOptions.keybinds.cheatsheet.keybinds.prevTab)) {
|
|
sheetContents.forEach((sheet) => {
|
|
const toSwitchTab = sheet.attribute.children[sheet.attribute.shown.value];
|
|
toSwitchTab.prevTab();
|
|
})
|
|
}
|
|
}
|
|
})
|
|
})
|
|
});
|
|
} |