Compare commits
14 Commits
431b843e4a
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 2344cce5d1 | |||
| 5e6a56b594 | |||
| 46232968f6 | |||
|
b8b7e692cc
|
|||
|
|
8811c923f4 | ||
|
|
b6b4188bc1 | ||
|
|
83b7b4c388 | ||
|
|
3d7aaf79b6 | ||
|
|
7b22de81e7 | ||
|
|
29d928c6ad | ||
|
|
f17f13786d | ||
|
|
c0a9098bec | ||
|
|
d199204a53 | ||
|
|
5d8da6198b |
@@ -1,4 +1,4 @@
|
||||
// swift-tools-version: 5.8
|
||||
// swift-tools-version: 6.0
|
||||
// The swift-tools-version declares the minimum version of Swift required to build this package.
|
||||
|
||||
import PackageDescription
|
||||
@@ -9,23 +9,24 @@ let package = Package(
|
||||
.macOS(.v13)
|
||||
],
|
||||
dependencies: [
|
||||
.package(url: "https://github.com/AparokshaUI/Adwaita", from: "0.2.0"),
|
||||
.package(url: "https://github.com/AparokshaUI/Localized", from: "0.2.0")
|
||||
.package(url: "https://git.aparoksha.dev/aparoksha/adwaita-swift", branch: "main"),
|
||||
.package(url: "https://git.aparoksha.dev/aparoksha/localized", branch: "main")
|
||||
],
|
||||
targets: [
|
||||
.executableTarget(
|
||||
name: "AdwaitaTemplate",
|
||||
dependencies: [
|
||||
.product(name: "Adwaita", package: "Adwaita"),
|
||||
.product(name: "Localized", package: "Localized")
|
||||
.product(name: "Adwaita", package: "adwaita-swift"),
|
||||
.product(name: "Localized", package: "localized")
|
||||
],
|
||||
path: "Sources",
|
||||
resources: [
|
||||
.process("Localized.yml")
|
||||
],
|
||||
plugins: [
|
||||
.plugin(name: "GenerateLocalized", package: "Localized")
|
||||
.plugin(name: "GenerateLocalized", package: "localized")
|
||||
]
|
||||
)
|
||||
]
|
||||
],
|
||||
swiftLanguageModes: [.v5]
|
||||
)
|
||||
|
||||
61
README.md
61
README.md
@@ -1,62 +1,7 @@
|
||||
<p align="center">
|
||||
<img width="256" alt="Adwaita Template Icon" src="data/icons/io.github.AparokshaUI.AdwaitaTemplate.svg">
|
||||
<h1 align="center">Adwaita Template</h1>
|
||||
<h1 align="center">Bachelorproef | Fase 2</h1>
|
||||
</p>
|
||||
|
||||
_Adwaita Template_ is a template application for the [Adwaita for Swift package](https://github.com/AparokshaUI/Adwaita/).
|
||||
Deze repository bevat een simpele, niet-functionele Calculator-UI, geschreven met [Adwaita for Swift](https://adwaita-swift.aparoksha.dev/documentation/adwaita/).
|
||||
|
||||
## Table of Contents
|
||||
|
||||
- [Installation](#Installation)
|
||||
- [Usage](#Usage)
|
||||
- [Thanks](#Thanks)
|
||||
|
||||
## Installation
|
||||
|
||||
Install the [GNOME Builder](https://flathub.org/apps/org.gnome.Builder) IDE.
|
||||
|
||||
For designing an app icon, [App Icon Preview](https://flathub.org/apps/org.gnome.design.AppIconPreview) and [Inkscape](https://flathub.org/apps/org.inkscape.Inkscape) are recommended.
|
||||
|
||||
> [!NOTE]
|
||||
> You do not have to install any dependencies of Adwaita for Swift, including Swift, on your system.
|
||||
> The Adwaita template runs in a [Flatpak](https://flatpak.org/).
|
||||
> The GNOME Builder will automatically download dependencies from [Flathub](https://flathub.org).
|
||||
> You can also use [Visual Studio Code](https://code.visualstudio.com/) with a Docker [dev container](https://code.visualstudio.com/docs/devcontainers/containers) hosting the Swift toolchain and Adwaita libraries.
|
||||
|
||||
## Usage
|
||||
|
||||
1. Open this project in the GNOME Builder. It will start downloading the dependencies.
|
||||
- GNOME Builder will start downloading dependencies when opened.
|
||||
- For Visual Studio Code, enable the [Dev Containers extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) and reopen the project window with the dev container. It may take a couple minutes to build.
|
||||
2. Build and run the application.
|
||||
- For GNOME Builder, use the "run" icon in the toolbar.
|
||||
- For Visual Studio Code, select the "run and debug" tab in the leftmost sidebar, and then tap the run icon next to "Debug AdwaitaTemplate".
|
||||
3. Change the app's name and other information about the application in the following files (and file names):
|
||||
- `README.md`
|
||||
- `Package.swift`
|
||||
- `io.github.AparokshaUI.AdwaitaTemplate.json`
|
||||
- `Sources/AdwaitaTemplate.swift`
|
||||
- `data/io.github.AparokshaUI.AdwaitaTemplate.metainfo.xml`
|
||||
- `data/io.github.AparokshaUI.AdwaitaTemplate.desktop`
|
||||
- `data/icons/io.github.AparokshaUI.AdwaitaTemplate.Source.svg`
|
||||
- `data/icons/io.github.AparokshaUI.AdwaitaTemplate.svg`
|
||||
- `data/icons/io.github.AparokshaUI.AdwaitaTemplate-symbolic.svg`
|
||||
4. Edit the code. Help is available [here](https://david-swift.gitbook.io/adwaita/), ask questions in the [discussions](https://github.com/AparokshaUI/Adwaita/discussions/).
|
||||
5. You can edit the app's icons using the previously installed tools according to [this](https://blogs.gnome.org/tbernard/2019/12/30/designing-an-icon-for-your-app/) tutorial.
|
||||
6. In GNOME Builder, click on the dropdown next to the hammer and then on `Export`. Wait until the file manager appears, open the `.flatpak` file and install the app on your device!
|
||||
7. If you want to publish your app, replace `debug` in the following build commands by `release`:
|
||||
```
|
||||
"swift build -c debug --static-swift-stdlib",
|
||||
"install -Dm755 .build/debug/AdwaitaTemplate /app/bin/AdwaitaTemplate",
|
||||
```
|
||||
|
||||
### Flatpak SPM Generator
|
||||
|
||||
If you want to e.g. publish your app on Flathub where no internet connection is allowed while running the build commands,
|
||||
you can use [this tool](https://github.com/flatpak/flatpak-builder-tools/tree/master/spm) that lets you generate a Flatpak manifest JSON from a Swift package.
|
||||
|
||||
## Thanks
|
||||
|
||||
### Dependencies
|
||||
- [Adwaita for Swift](https://github.com/AparokshaUI/Adwaita) licensed under the [MIT License](https://github.com/AparokshaUI/Adwaita/blob/main/LICENSE.md)
|
||||
- [Localized](https://github.com/AparokshaUI/Localized) licensed under the [MIT License](https://github.com/AparokshaUI/Localized/blob/master/LICENSE.md)
|
||||
Deze UI werd ontwikkeld tijdens Fase 2 van de bachelorproef, om aan te tonen dat het mogelijk is om applicaties te schrijven die gebruik maken van Adwaita for Swift.
|
||||
@@ -5,19 +5,94 @@ import Adwaita
|
||||
|
||||
@main
|
||||
struct AdwaitaTemplate: App {
|
||||
|
||||
let id = "io.github.AparokshaUI.AdwaitaTemplate"
|
||||
var app: GTUIApp!
|
||||
let app = AdwaitaApp(id: "io.github.AparokshaUI.AdwaitaTemplate")
|
||||
|
||||
var scene: Scene {
|
||||
Window(id: "main") { window in
|
||||
Text(Loc.helloWorld)
|
||||
.padding()
|
||||
.topToolbar {
|
||||
ToolbarView(app: app, window: window)
|
||||
VStack(spacing: 8) {
|
||||
Text("Calculations here...")
|
||||
.selectable(false)
|
||||
VStack(spacing: 8) {
|
||||
HStack(spacing: 8) {
|
||||
Button("AC") {}
|
||||
.keyboardShortcut("c", app: app)
|
||||
.hexpand()
|
||||
Button("") {}
|
||||
.hexpand()
|
||||
Button("%") {}
|
||||
.keyboardShortcut("percent", app: app)
|
||||
.hexpand()
|
||||
Button("/") {}
|
||||
.keyboardShortcut("slash", app: app)
|
||||
.hexpand()
|
||||
}
|
||||
.vexpand()
|
||||
HStack(spacing: 8) {
|
||||
Button("7") {}
|
||||
.keyboardShortcut("7", app: app)
|
||||
.hexpand()
|
||||
Button("8") {}
|
||||
.keyboardShortcut("8", app: app)
|
||||
.hexpand()
|
||||
Button("9") {}
|
||||
.keyboardShortcut("9", app: app)
|
||||
.hexpand()
|
||||
Button("*") {}
|
||||
.keyboardShortcut("asterisk", app: app)
|
||||
.hexpand()
|
||||
}
|
||||
.vexpand()
|
||||
HStack(spacing: 8) {
|
||||
Button("4") {}
|
||||
.keyboardShortcut("4", app: app)
|
||||
.hexpand()
|
||||
Button("5") {}
|
||||
.keyboardShortcut("5", app: app)
|
||||
.hexpand()
|
||||
Button("6") {}
|
||||
.keyboardShortcut("6", app: app)
|
||||
.hexpand()
|
||||
Button("-") {}
|
||||
.keyboardShortcut("minus", app: app)
|
||||
.hexpand()
|
||||
}
|
||||
.vexpand()
|
||||
HStack(spacing: 8) {
|
||||
Button("1") {}
|
||||
.keyboardShortcut("1", app: app)
|
||||
.hexpand()
|
||||
Button("2") {}
|
||||
.keyboardShortcut("2", app: app)
|
||||
.hexpand()
|
||||
Button("3") {}
|
||||
.keyboardShortcut("3", app: app)
|
||||
.hexpand()
|
||||
Button("+") {}
|
||||
.keyboardShortcut("plus", app: app)
|
||||
.hexpand()
|
||||
}
|
||||
.vexpand()
|
||||
HStack(spacing: 8) {
|
||||
Button("0") {}
|
||||
.keyboardShortcut("0", app: app)
|
||||
.hexpand()
|
||||
Button("") {}
|
||||
.hexpand()
|
||||
Button(",") {}
|
||||
.keyboardShortcut("comma", app: app)
|
||||
.hexpand()
|
||||
Button("=") {}
|
||||
.keyboardShortcut("equal", app: app)
|
||||
.hexpand()
|
||||
}
|
||||
.vexpand()
|
||||
}
|
||||
}
|
||||
.padding()
|
||||
.topToolbar {
|
||||
ToolbarView(app: app, window: window)
|
||||
}
|
||||
}
|
||||
.defaultSize(width: 450, height: 300)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -12,9 +12,9 @@ closeWindow:
|
||||
en: Close Window
|
||||
de: Fenster schliessen
|
||||
|
||||
quit:
|
||||
en: Quit
|
||||
de: Verlassen
|
||||
about:
|
||||
en: About AdwaitaTemplate
|
||||
de: Info zu AdwaitaTemplate
|
||||
|
||||
mainMenu:
|
||||
en: Main Menu
|
||||
|
||||
@@ -2,12 +2,13 @@ import Adwaita
|
||||
|
||||
struct ToolbarView: View {
|
||||
|
||||
var app: GTUIApp
|
||||
var window: GTUIApplicationWindow
|
||||
@State private var about = false
|
||||
var app: AdwaitaApp
|
||||
var window: AdwaitaWindow
|
||||
|
||||
var view: Body {
|
||||
HeaderBar.end {
|
||||
Menu(icon: .default(icon: .openMenu), app: app, window: window) {
|
||||
Menu(icon: .default(icon: .openMenu)) {
|
||||
MenuButton(Loc.newWindow, window: false) {
|
||||
app.addWindow("main")
|
||||
}
|
||||
@@ -17,14 +18,22 @@ struct ToolbarView: View {
|
||||
}
|
||||
.keyboardShortcut("w".ctrl())
|
||||
MenuSection {
|
||||
MenuButton(Loc.quit, window: false) {
|
||||
app.quit()
|
||||
MenuButton(Loc.about, window: false) {
|
||||
about = true
|
||||
}
|
||||
.keyboardShortcut("q".ctrl())
|
||||
}
|
||||
}
|
||||
.primary()
|
||||
.tooltip(Loc.mainMenu)
|
||||
.aboutDialog(
|
||||
visible: $about,
|
||||
app: "AdwaitaTemplate",
|
||||
developer: "david-swift",
|
||||
version: "dev",
|
||||
icon: .custom(name: "io.github.AparokshaUI.AdwaitaTemplate"),
|
||||
website: .init(string: "https://git.aparoksha.dev/aparoksha/adwaita-template")!,
|
||||
issues: .init(string: "https://git.aparoksha.dev/aparoksha/adwaita-template/issues")!
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
54
data/release-manifest/manifest.json
Normal file
54
data/release-manifest/manifest.json
Normal file
@@ -0,0 +1,54 @@
|
||||
{
|
||||
"app-id": "io.github.AparokshaUI.AdwaitaTemplate",
|
||||
"runtime": "org.gnome.Platform",
|
||||
"runtime-version": "46",
|
||||
"sdk": "org.gnome.Sdk",
|
||||
"sdk-extensions": [
|
||||
"org.freedesktop.Sdk.Extension.swift5"
|
||||
],
|
||||
"command": "AdwaitaTemplate",
|
||||
"finish-args": [
|
||||
"--share=ipc",
|
||||
"--socket=fallback-x11",
|
||||
"--device=dri",
|
||||
"--socket=wayland"
|
||||
],
|
||||
"build-options": {
|
||||
"append-path": "/usr/lib/sdk/swift5/bin",
|
||||
"prepend-ld-library-path": "/usr/lib/sdk/swift5/lib"
|
||||
},
|
||||
"cleanup": [
|
||||
"/include",
|
||||
"/lib/pkgconfig",
|
||||
"/man",
|
||||
"/share/doc",
|
||||
"/share/gtk-doc",
|
||||
"/share/man",
|
||||
"/share/pkgconfig",
|
||||
"*.la",
|
||||
"*.a"
|
||||
],
|
||||
"modules": [
|
||||
{
|
||||
"name": "AdwaitaTemplate",
|
||||
"builddir": true,
|
||||
"buildsystem": "simple",
|
||||
"sources": [
|
||||
{
|
||||
"type": "dir",
|
||||
"path": "."
|
||||
}
|
||||
],
|
||||
"build-commands": [
|
||||
"./setup-offline.sh",
|
||||
"swift build -c release --static-swift-stdlib --skip-update",
|
||||
"strip .build/release/AdwaitaTemplate",
|
||||
"install -Dm755 .build/release/AdwaitaTemplate /app/bin/AdwaitaTemplate",
|
||||
"install -Dm644 data/io.github.AparokshaUI.AdwaitaTemplate.metainfo.xml $DESTDIR/app/share/metainfo/io.github.AparokshaUI.AdwaitaTemplate.metainfo.xml",
|
||||
"install -Dm644 data/io.github.AparokshaUI.AdwaitaTemplate.desktop $DESTDIR/app/share/applications/io.github.AparokshaUI.AdwaitaTemplate.desktop",
|
||||
"install -Dm644 data/icons/io.github.AparokshaUI.AdwaitaTemplate.svg $DESTDIR/app/share/icons/hicolor/scalable/apps/io.github.AparokshaUI.AdwaitaTemplate.svg",
|
||||
"install -Dm644 data/icons/io.github.AparokshaUI.AdwaitaTemplate-symbolic.svg $DESTDIR/app/share/icons/hicolor/symbolic/apps/io.github.AparokshaUI.AdwaitaTemplate-symbolic.svg"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,10 +1,10 @@
|
||||
{
|
||||
"app-id": "io.github.AparokshaUI.AdwaitaTemplate",
|
||||
"runtime": "org.gnome.Platform",
|
||||
"runtime-version": "46",
|
||||
"runtime-version": "48",
|
||||
"sdk": "org.gnome.Sdk",
|
||||
"sdk-extensions": [
|
||||
"org.freedesktop.Sdk.Extension.swift5"
|
||||
"org.freedesktop.Sdk.Extension.swift6"
|
||||
],
|
||||
"command": "AdwaitaTemplate",
|
||||
"finish-args": [
|
||||
@@ -14,8 +14,8 @@
|
||||
"--socket=wayland"
|
||||
],
|
||||
"build-options": {
|
||||
"append-path": "/usr/lib/sdk/swift5/bin",
|
||||
"prepend-ld-library-path": "/usr/lib/sdk/swift5/lib"
|
||||
"append-path": "/usr/lib/sdk/swift6/bin",
|
||||
"prepend-ld-library-path": "/usr/lib/sdk/swift6/lib"
|
||||
},
|
||||
"cleanup": [
|
||||
"/include",
|
||||
@@ -41,6 +41,7 @@
|
||||
],
|
||||
"build-commands": [
|
||||
"swift build -c debug --static-swift-stdlib",
|
||||
"strip .build/debug/AdwaitaTemplate",
|
||||
"install -Dm755 .build/debug/AdwaitaTemplate /app/bin/AdwaitaTemplate",
|
||||
"install -Dm644 data/io.github.AparokshaUI.AdwaitaTemplate.metainfo.xml $DESTDIR/app/share/metainfo/io.github.AparokshaUI.AdwaitaTemplate.metainfo.xml",
|
||||
"install -Dm644 data/io.github.AparokshaUI.AdwaitaTemplate.desktop $DESTDIR/app/share/applications/io.github.AparokshaUI.AdwaitaTemplate.desktop",
|
||||
|
||||
Reference in New Issue
Block a user