Added ags
TODO copy ags config
This commit is contained in:
63
roles/ags/files/widget/settings/SettingsDialog.ts
Normal file
63
roles/ags/files/widget/settings/SettingsDialog.ts
Normal file
@@ -0,0 +1,63 @@
|
||||
import RegularWindow from "widget/RegularWindow"
|
||||
import layout from "./layout"
|
||||
import icons from "lib/icons"
|
||||
import options from "options"
|
||||
|
||||
const current = Variable(layout[0].attribute.name)
|
||||
|
||||
const Header = () => Widget.CenterBox({
|
||||
class_name: "header",
|
||||
start_widget: Widget.Button({
|
||||
class_name: "reset",
|
||||
on_clicked: options.reset,
|
||||
hpack: "start",
|
||||
vpack: "start",
|
||||
child: Widget.Icon(icons.ui.refresh),
|
||||
tooltip_text: "Reset",
|
||||
}),
|
||||
center_widget: Widget.Box({
|
||||
class_name: "pager horizontal",
|
||||
children: layout.map(({ attribute: { name, icon } }) => Widget.Button({
|
||||
xalign: 0,
|
||||
class_name: current.bind().as(v => `${v === name ? "active" : ""}`),
|
||||
on_clicked: () => current.value = name,
|
||||
child: Widget.Box([
|
||||
Widget.Icon(icon),
|
||||
Widget.Label(name),
|
||||
]),
|
||||
})),
|
||||
}),
|
||||
end_widget: Widget.Button({
|
||||
class_name: "close",
|
||||
hpack: "end",
|
||||
vpack: "start",
|
||||
child: Widget.Icon(icons.ui.close),
|
||||
on_clicked: () => App.closeWindow("settings-dialog"),
|
||||
}),
|
||||
})
|
||||
|
||||
const PagesStack = () => Widget.Stack({
|
||||
transition: "slide_left_right",
|
||||
children: layout.reduce((obj, page) => ({ ...obj, [page.attribute.name]: page }), {}),
|
||||
shown: current.bind() as never,
|
||||
})
|
||||
|
||||
export default () => RegularWindow({
|
||||
name: "settings-dialog",
|
||||
class_name: "settings-dialog",
|
||||
title: "Settings",
|
||||
setup(win) {
|
||||
win.on("delete-event", () => {
|
||||
win.hide()
|
||||
return true
|
||||
})
|
||||
win.set_default_size(500, 600)
|
||||
},
|
||||
child: Widget.Box({
|
||||
vertical: true,
|
||||
children: [
|
||||
Header(),
|
||||
PagesStack(),
|
||||
],
|
||||
}),
|
||||
})
|
||||
Reference in New Issue
Block a user