Add the full Rust + GTK4 + libadwaita project skeleton: - Cargo.toml with all dependencies (gtk4 0.11, libadwaita 0.9, webkit6 0.6, reqwest, serde, tokio, libsecret) - build.rs that compiles Blueprint .blp files and bundles a GResource - data/ui/window.blp — AdwApplicationWindow with AdwNavigationSplitView, sidebar with refresh button/spinner and primary menu, content page with article menu - data/resources.gresource.xml bundling UI, HTML, and CSS - data/net.jeena.FeedTheMonkey.gschema.xml with all GSettings keys - html/content.html and html/content.css (minimal placeholders) - src/main.rs, src/app.rs — AdwApplication with APP_ID net.jeena.FeedTheMonkey - src/window.rs — AdwApplicationWindow GObject subclass loading the Blueprint template and persisting window size in GSettings - COPYING (GPL-3.0) restored from master The app compiles and the binary is ready to open a blank window.
108 lines
2.2 KiB
Text
108 lines
2.2 KiB
Text
using Gtk 4.0;
|
|
using Adw 1;
|
|
|
|
template $FeedTheMonkeyWindow : Adw.ApplicationWindow {
|
|
default-width: 900;
|
|
default-height: 600;
|
|
|
|
Adw.ToastOverlay toast_overlay {
|
|
Adw.NavigationSplitView split_view {
|
|
sidebar: Adw.NavigationPage {
|
|
title: _("FeedTheMonkey");
|
|
|
|
Adw.ToolbarView {
|
|
[top]
|
|
Adw.HeaderBar {
|
|
[start]
|
|
Stack refresh_stack {
|
|
StackPage {
|
|
name: "button";
|
|
child: Button refresh_button {
|
|
icon-name: "view-refresh-symbolic";
|
|
tooltip-text: _("Refresh");
|
|
action-name: "win.reload";
|
|
};
|
|
}
|
|
|
|
StackPage {
|
|
name: "spinner";
|
|
child: Adw.Spinner {};
|
|
}
|
|
}
|
|
|
|
[end]
|
|
MenuButton menu_button {
|
|
icon-name: "open-menu-symbolic";
|
|
primary: true;
|
|
menu-model: primary_menu;
|
|
}
|
|
}
|
|
|
|
Adw.StatusPage placeholder_page {
|
|
icon-name: "rss-symbolic";
|
|
title: _("FeedTheMonkey");
|
|
description: _("Log in to load your articles");
|
|
}
|
|
}
|
|
};
|
|
|
|
content: Adw.NavigationPage content_page {
|
|
title: _("FeedTheMonkey");
|
|
|
|
Adw.ToolbarView {
|
|
top-bar-style: raised;
|
|
|
|
[top]
|
|
Adw.HeaderBar {
|
|
[end]
|
|
MenuButton article_menu_button {
|
|
icon-name: "view-more-symbolic";
|
|
menu-model: article_menu;
|
|
visible: false;
|
|
}
|
|
}
|
|
|
|
Adw.StatusPage {
|
|
icon-name: "document-open-symbolic";
|
|
title: _("No Article Selected");
|
|
}
|
|
}
|
|
};
|
|
}
|
|
}
|
|
}
|
|
|
|
menu primary_menu {
|
|
section {
|
|
item {
|
|
label: _("Log Out");
|
|
action: "win.logout";
|
|
}
|
|
}
|
|
|
|
section {
|
|
item {
|
|
label: _("Keyboard Shortcuts");
|
|
action: "win.show-help-overlay";
|
|
}
|
|
|
|
item {
|
|
label: _("About FeedTheMonkey");
|
|
action: "app.about";
|
|
}
|
|
}
|
|
}
|
|
|
|
menu article_menu {
|
|
section {
|
|
item {
|
|
label: _("Mark Unread");
|
|
action: "win.mark-unread";
|
|
}
|
|
|
|
item {
|
|
label: _("Open in Browser");
|
|
action: "win.open-in-browser";
|
|
}
|
|
}
|
|
}
|