diff --git a/src/Shortcuts Window/code.rs b/src/Shortcuts Window/code.rs new file mode 100644 index 00000000..242ddd1e --- /dev/null +++ b/src/Shortcuts Window/code.rs @@ -0,0 +1,10 @@ +use crate::workbench; +use gtk::prelude::*; + +pub fn main() { + let shortcuts_window: gtk::ShortcutsWindow = + workbench::builder().object("shortcuts_window").unwrap(); + let button: gtk::Button = workbench::builder().object("button").unwrap(); + + button.connect_clicked(move |_| shortcuts_window.present()); +} diff --git a/src/Shortcuts Window/main.blp b/src/Shortcuts Window/main.blp new file mode 100644 index 00000000..30c17fbc --- /dev/null +++ b/src/Shortcuts Window/main.blp @@ -0,0 +1,162 @@ +using Gtk 4.0; +using Adw 1; + +Adw.StatusPage { + title: _("Shortcuts Window"); + description: _("A window showing the application's keyboard shortcuts"); + + Box { + spacing: 50; + halign: center; + orientation: vertical; + + Button button { + label: _("Open"); + + styles [ + "suggested-action", + "pill", + ] + } + + Box { + orientation: vertical; + + LinkButton { + label: _("API Reference"); + uri: "https://docs.gtk.org/gtk4/class.ShortcutsWindow.html"; + } + + LinkButton { + label: _("Human Interface Guidelines"); + uri: "https://developer.gnome.org/hig/reference/keyboard.html"; + } + } + } +} + +Gtk.ShortcutsWindow shortcuts_window { + hide-on-close: true; + + Gtk.ShortcutsSection { + section-name: _("Shortcuts"); + max-height: 18; + + Gtk.ShortcutsGroup { + title: _("Application"); + + Gtk.ShortcutsShortcut { + accelerator: "Return"; + title: _("Run Code"); + } + + Gtk.ShortcutsShortcut { + accelerator: "Return"; + title: _("Format"); + } + + Gtk.ShortcutsShortcut { + accelerator: "N"; + title: _("New Project"); + } + + Gtk.ShortcutsShortcut { + accelerator: "O"; + title: _("Open Project"); + } + + Gtk.ShortcutsShortcut { + accelerator: "O"; + title: _("Open Library"); + } + + Gtk.ShortcutsShortcut { + accelerator: "I"; + title: _("Inspector"); + } + + Gtk.ShortcutsShortcut { + accelerator: "W"; + title: _("Close Window"); + } + + Gtk.ShortcutsShortcut { + accelerator: "M"; + title: _("Reveal in Files"); + } + + Gtk.ShortcutsShortcut { + accelerator: "question"; + title: _("Keyboard Shortcuts"); + } + + Gtk.ShortcutsShortcut { + accelerator: "Q"; + title: _("Quit"); + } + } + + Gtk.ShortcutsGroup { + title: _("Editor"); + + Gtk.ShortcutsShortcut { + accelerator: "X"; + title: _("Cut"); + } + + Gtk.ShortcutsShortcut { + accelerator: "C"; + title: _("Copy"); + } + + Gtk.ShortcutsShortcut { + accelerator: "V"; + title: _("Paste"); + } + + Gtk.ShortcutsShortcut { + accelerator: "F"; + title: _("Find"); + } + + Gtk.ShortcutsShortcut { + accelerator: "Z"; + title: _("Undo"); + } + + Gtk.ShortcutsShortcut { + accelerator: "space"; + title: _("Show code suggestions"); + } + + Gtk.ShortcutsShortcut { + accelerator: "Z"; + title: _("Redo"); + } + } + + Gtk.ShortcutsGroup { + title: _("Console"); + + Gtk.ShortcutsShortcut { + accelerator: "K"; + title: _("Toggle Console"); + } + + Gtk.ShortcutsShortcut { + accelerator: "C"; + title: _("Copy"); + } + + Gtk.ShortcutsShortcut { + accelerator: "A"; + title: _("Select All"); + } + + Gtk.ShortcutsShortcut { + accelerator: "K"; + title: _("Clear"); + } + } + } +} diff --git a/src/Shortcuts Window/main.js b/src/Shortcuts Window/main.js new file mode 100644 index 00000000..5a2bc4da --- /dev/null +++ b/src/Shortcuts Window/main.js @@ -0,0 +1,6 @@ +const shortcuts_window = workbench.builder.get_object("shortcuts_window"); +const button = workbench.builder.get_object("button"); + +button.connect("clicked", () => { + shortcuts_window.present(); +}); diff --git a/src/Shortcuts Window/main.json b/src/Shortcuts Window/main.json new file mode 100644 index 00000000..b6235522 --- /dev/null +++ b/src/Shortcuts Window/main.json @@ -0,0 +1,6 @@ +{ + "category": "user_interface", + "description": "A window showing the application's keyboard shortcuts", + "panels": ["ui", "preview"], + "autorun": true +} \ No newline at end of file diff --git a/src/Shortcuts Window/main.py b/src/Shortcuts Window/main.py new file mode 100644 index 00000000..122b0f26 --- /dev/null +++ b/src/Shortcuts Window/main.py @@ -0,0 +1,6 @@ +import workbench + +shortcuts_window = workbench.builder.get_object("shortcuts_window") +button = workbench.builder.get_object("button") + +button.connect("clicked", lambda *_: shortcuts_window.present()) diff --git a/src/Shortcuts Window/main.vala b/src/Shortcuts Window/main.vala new file mode 100644 index 00000000..8bd21b8f --- /dev/null +++ b/src/Shortcuts Window/main.vala @@ -0,0 +1,10 @@ +#! /usr/bin/env -S vala workbench.vala --pkg gtk4 --pkg libadwaita-1 + +public void main() { + var shortcuts_window = (Gtk.ShortcutsWindow) workbench.builder.get_object("shortcuts_window"); + var button = (Gtk.Button) workbench.builder.get_object("button"); + + button.clicked.connect(() => { + shortcuts_window.present(); + }); +}