Compare commits

...

14 Commits

Author SHA1 Message Date
2344cce5d1 Update README.md 2025-05-07 13:53:11 +00:00
5e6a56b594 Make buttons scale with window 2025-04-16 11:11:58 +02:00
46232968f6 Updated to latest Adwaita for Swift version 2025-04-16 11:03:15 +02:00
b8b7e692cc Add some more calculator-like layout 2025-04-15 10:33:32 +02:00
david-swift
8811c923f4 Update to latest Meta changes 2024-10-08 12:35:29 +02:00
david-swift
b6b4188bc1 Remove action for now 2024-10-07 17:35:58 +02:00
david-swift
83b7b4c388 Fix action: executable file "node" not found 2024-10-07 17:35:13 +02:00
david-swift
3d7aaf79b6 Use CI container for GNOME 46 2024-10-07 17:25:11 +02:00
david-swift
7b22de81e7 Migrate to the Aparoksha Gitea instance 2024-10-07 17:05:31 +02:00
david-swift
29d928c6ad Add about dialog 2024-09-08 08:48:17 +02:00
david-swift
f17f13786d Add Flatpak CI 2024-08-27 07:04:05 +02:00
david-swift
c0a9098bec Add strip command 2024-07-19 16:00:40 +02:00
david-swift
d199204a53 Merge pull request #5 from stevestreza/vscode
Add support for Visual Studio Code with a dev container
2024-06-14 09:42:07 +02:00
Steve Streza
5d8da6198b More readme notes 2024-06-14 00:32:43 -07:00
7 changed files with 171 additions and 86 deletions

View File

@@ -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]
)

View File

@@ -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.

View File

@@ -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)
}
}

View File

@@ -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

View File

@@ -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")!
)
}
}

View 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"
]
}
]
}

View File

@@ -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",