Compare commits
77 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
74949e0861 | |
|
|
d89f111553 | |
|
|
a47c09cd97 | |
|
|
074f02bf0e | |
|
|
e46a005774 | |
|
|
6ced58ff10 | |
|
|
a79907aac6 | |
|
|
f682c78b3f | |
|
|
b5420c19a0 | |
|
|
188d4e420c | |
|
|
efcfe7a376 | |
|
|
f913883f5c | |
|
|
4337da3caf | |
|
|
058d025aaa | |
|
|
90d9eb6149 | |
|
|
441f9ac4f7 | |
|
|
18e0c20ccb | |
|
|
d5bd359a43 | |
|
|
d5b34e9572 | |
|
|
77c6010a44 | |
|
|
f64ef8a598 | |
|
|
0e9f9a73ff | |
|
|
c3011cf944 | |
|
|
463fd08ff2 | |
|
|
ff1b7bb66b | |
|
|
eec0dd890d | |
|
|
4009c109a8 | |
|
|
622ea4d43b | |
|
|
4c2e3d403e | |
|
|
99b207253b | |
|
|
53cf0f9ea3 | |
|
|
99a386065e | |
|
|
4acd3798c8 | |
|
|
8d589183eb | |
|
|
e8b430c909 | |
|
|
94b98c5048 | |
|
|
62faac71b4 | |
|
|
7d13a31e39 | |
|
|
d8bdb40217 | |
|
|
25d2b40d51 | |
|
|
13262ba46d | |
|
|
37e733b280 | |
|
|
b8913f4ed7 | |
|
|
f4edc9dc33 | |
|
|
aa840182b0 | |
|
|
7de1087666 | |
|
|
fb3bce2f7b | |
|
|
c42976c453 | |
|
|
679f5c3523 | |
|
|
ada669500f | |
|
|
1f4f120eb2 | |
|
|
d591153da4 | |
|
|
59a623abfd | |
|
|
275d065c74 | |
|
|
3f8be1bfc0 | |
|
|
a5a4c7cd11 | |
|
|
8b77041cf2 | |
|
|
cdbe799232 | |
|
|
dbc5e3f551 | |
|
|
bdce26ebb6 | |
|
|
dcadfb69f5 | |
|
|
6f30c78251 | |
|
|
c334ddd7c2 | |
|
|
7a59735ad9 | |
|
|
2cc24c74fe | |
|
|
c7fbc8ae5a | |
|
|
b8943ed0db | |
|
|
9b70107668 | |
|
|
1b0f9964b9 | |
|
|
88e689a9e3 | |
|
|
b0511f18e0 | |
|
|
21347fd740 | |
|
|
1745e17c27 | |
|
|
4536776082 | |
|
|
61c27e6948 | |
|
|
bf3c7ec511 | |
|
|
cc7652b1e3 |
8
.envrc
|
|
@ -1,9 +1 @@
|
||||||
use flake
|
use flake
|
||||||
flutter pub get
|
|
||||||
flutter config --enable-linux-desktop
|
|
||||||
dart pub global activate flutter_distributor
|
|
||||||
echo "**********************************************************************"
|
|
||||||
echo "* flutter build linux --release *"
|
|
||||||
echo "* flutter_distributor package --platform=linux --targets=zip *"
|
|
||||||
echo "* yq eval pubspec.lock -o=json -P > pubspec.lock.json *"
|
|
||||||
echo "**********************************************************************"
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
# These are supported funding model platforms
|
||||||
|
|
||||||
|
github: [ymauray, marxjohnson, flexiondotorg]
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
---
|
||||||
|
name: Bug report
|
||||||
|
about: Create a report to help us improve
|
||||||
|
title: 'bug: description of the bug you encountered'
|
||||||
|
labels: ''
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**I confirm this bug has not already been reported**
|
||||||
|
- [ ] I have searched the issues and this bug has not been reported previously
|
||||||
|
|
||||||
|
**Describe the bug**
|
||||||
|
A clear and concise description of what the bug is.
|
||||||
|
|
||||||
|
**To Reproduce**
|
||||||
|
Steps to reproduce the behavior:
|
||||||
|
1. Go to '...'
|
||||||
|
2. Click on '....'
|
||||||
|
3. Scroll down to '....'
|
||||||
|
4. See error
|
||||||
|
|
||||||
|
**Expected behavior**
|
||||||
|
A clear and concise description of what you expected to happen.
|
||||||
|
|
||||||
|
**Desktop (please complete the following information):**
|
||||||
|
- Quickgui Versdion: [e.g 1.2.9]
|
||||||
|
- OS: [e.g. Ubuntu]
|
||||||
|
- Version [e.g. 24.04]
|
||||||
|
|
||||||
|
**Screenshots**
|
||||||
|
If applicable, add screenshots to help explain your problem.
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add any other context about the problem here.
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
---
|
||||||
|
name: Feature request
|
||||||
|
about: Suggest an idea for this project
|
||||||
|
title: 'feat: describe the feature you are requesting'
|
||||||
|
labels: ''
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**I confirm this feature has not been previously requested**
|
||||||
|
- [ ] I have searched the issues and this feature has not previously been requested
|
||||||
|
|
||||||
|
**Is your feature request related to a problem? Please describe.**
|
||||||
|
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||||
|
|
||||||
|
**Describe the solution you'd like**
|
||||||
|
A clear and concise description of what you want to happen.
|
||||||
|
|
||||||
|
**Describe alternatives you've considered**
|
||||||
|
A clear and concise description of any alternative solutions or features you've considered.
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add any other context or screenshots about the feature request here.
|
||||||
|
|
@ -3,5 +3,8 @@ updates:
|
||||||
- package-ecosystem: "github-actions"
|
- package-ecosystem: "github-actions"
|
||||||
directory: "/"
|
directory: "/"
|
||||||
schedule:
|
schedule:
|
||||||
# Check for updates to GitHub Actions every week
|
|
||||||
interval: "weekly"
|
interval: "weekly"
|
||||||
|
- package-ecosystem: "pub"
|
||||||
|
directory: "/"
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,34 @@
|
||||||
|
# Description
|
||||||
|
|
||||||
|
Please include a summary of the changes along with any relevant motivation and context.
|
||||||
|
|
||||||
|
<!-- Delete if not relevant -->
|
||||||
|
|
||||||
|
- Closes #
|
||||||
|
- Fixes #
|
||||||
|
- Resolves #
|
||||||
|
|
||||||
|
## Type of change
|
||||||
|
|
||||||
|
<!-- Delete any that are not relevant -->
|
||||||
|
|
||||||
|
- [ ] Bug fix (non-breaking change which fixes an issue)
|
||||||
|
- [ ] New feature (non-breaking change which adds functionality)
|
||||||
|
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
|
||||||
|
- [ ] Packaging (updates the packaging)
|
||||||
|
- [ ] Documentation (updates the documentation)
|
||||||
|
|
||||||
|
# Checklist:
|
||||||
|
|
||||||
|
<!-- Delete any that are not relevant -->
|
||||||
|
|
||||||
|
- [ ] I have performed a self-review of my code
|
||||||
|
- [ ] I have tested my code in common scenarios and confirmed there are no regressions
|
||||||
|
- [ ] I have added comments to my code, particularly in hard-to-understand sections
|
||||||
|
- [ ] I have made corresponding changes to the documentation
|
||||||
|
- [ ] I have updated and committed `pubspec.yaml` and `pubspec.lock`
|
||||||
|
- `flutter pub get`
|
||||||
|
- [ ] I have updated and committed `pubspec.lock.json` (*required for Nix*)
|
||||||
|
- `yq eval pubspec.lock -o=json -P > pubspec.lock.json`
|
||||||
|
|
||||||
|
*`yq` above is [yq-go](https://github.com/mikefarah/yq)*
|
||||||
|
|
@ -4,9 +4,19 @@ on:
|
||||||
pull_request:
|
pull_request:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
|
paths:
|
||||||
|
- pubspec.yaml
|
||||||
|
- assets/**
|
||||||
|
- lib/**
|
||||||
|
- linux/**
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
|
paths:
|
||||||
|
- pubspec.yaml
|
||||||
|
- assets/**
|
||||||
|
- lib/**
|
||||||
|
- linux/**
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
# TODO: arm64 runner
|
# TODO: arm64 runner
|
||||||
|
|
@ -17,7 +27,7 @@ jobs:
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
steps:
|
steps:
|
||||||
- name: "Checkout 🥡"
|
- name: "Checkout 🥡"
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v6
|
||||||
- name: "Install Flutter 🦋"
|
- name: "Install Flutter 🦋"
|
||||||
uses: subosito/flutter-action@v2
|
uses: subosito/flutter-action@v2
|
||||||
with:
|
with:
|
||||||
|
|
@ -26,7 +36,7 @@ jobs:
|
||||||
flutter-version-file: pubspec.yaml
|
flutter-version-file: pubspec.yaml
|
||||||
- name: "Install dependencies 💾"
|
- name: "Install dependencies 💾"
|
||||||
run: |
|
run: |
|
||||||
sudo apt-get -y install clang cmake ninja-build pkg-config libgtk-3-0 libgtk-3-dev libblkid1 liblzma5
|
sudo apt-get -y install clang cmake libblkid1 liblzma5 libgtk-3-0 libgtk-3-dev ninja-build pkg-config
|
||||||
- name: Install Flutter dependencies 🦋
|
- name: Install Flutter dependencies 🦋
|
||||||
run: flutter pub get
|
run: flutter pub get
|
||||||
- name: Enable Linux Desktop 🐧
|
- name: Enable Linux Desktop 🐧
|
||||||
|
|
@ -36,7 +46,7 @@ jobs:
|
||||||
- name: Show artifacts 👀
|
- name: Show artifacts 👀
|
||||||
run: tree build/linux/x64/release/bundle
|
run: tree build/linux/x64/release/bundle
|
||||||
- name: Upload artifacts ⤴️
|
- name: Upload artifacts ⤴️
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v7
|
||||||
with:
|
with:
|
||||||
name: Quickgui-${{github.run_number}}-linux-x64
|
name: Quickgui-${{github.run_number}}-linux-x64
|
||||||
path: build/linux/x64/release/bundle
|
path: build/linux/x64/release/bundle
|
||||||
|
|
@ -46,7 +56,7 @@ jobs:
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
steps:
|
steps:
|
||||||
- name: "Checkout 🥡"
|
- name: "Checkout 🥡"
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v6
|
||||||
- name: "Install Flutter 🦋"
|
- name: "Install Flutter 🦋"
|
||||||
uses: subosito/flutter-action@v2
|
uses: subosito/flutter-action@v2
|
||||||
with:
|
with:
|
||||||
|
|
@ -55,7 +65,7 @@ jobs:
|
||||||
flutter-version-file: pubspec.yaml
|
flutter-version-file: pubspec.yaml
|
||||||
- name: "Install dependencies 💾"
|
- name: "Install dependencies 💾"
|
||||||
run: |
|
run: |
|
||||||
sudo apt-get -y install clang cmake ninja-build pkg-config libgtk-3-0 libgtk-3-dev libblkid1 liblzma5
|
sudo apt-get -y install clang cmake libblkid1 liblzma5 libgtk-3-0 libgtk-3-dev ninja-build pkg-config
|
||||||
sudo apt-get -y install debhelper-compat distro-info dput devscripts rsync
|
sudo apt-get -y install debhelper-compat distro-info dput devscripts rsync
|
||||||
- name: Install Flutter dependencies 🦋
|
- name: Install Flutter dependencies 🦋
|
||||||
run: flutter pub get
|
run: flutter pub get
|
||||||
|
|
@ -64,7 +74,7 @@ jobs:
|
||||||
- name: Build artifacts 🏗️
|
- name: Build artifacts 🏗️
|
||||||
run: flutter build linux --release
|
run: flutter build linux --release
|
||||||
- name: "Import gpg key 🔑"
|
- name: "Import gpg key 🔑"
|
||||||
uses: crazy-max/ghaction-import-gpg@v6
|
uses: crazy-max/ghaction-import-gpg@v7
|
||||||
with:
|
with:
|
||||||
gpg_private_key: ${{ secrets.PPA_GPG_PRIVATE_KEY }}
|
gpg_private_key: ${{ secrets.PPA_GPG_PRIVATE_KEY }}
|
||||||
passphrase: ${{ secrets.PPA_GPG_PASSPHRASE }}
|
passphrase: ${{ secrets.PPA_GPG_PASSPHRASE }}
|
||||||
|
|
@ -108,11 +118,11 @@ jobs:
|
||||||
contents: "read"
|
contents: "read"
|
||||||
steps:
|
steps:
|
||||||
- name: "Checkout 🥡"
|
- name: "Checkout 🥡"
|
||||||
uses: "actions/checkout@v4"
|
uses: "actions/checkout@v6"
|
||||||
- name: "Install Nix ❄️"
|
- name: "Install Nix ❄️"
|
||||||
uses: "DeterminateSystems/nix-installer-action@v12"
|
uses: "DeterminateSystems/nix-installer-action@v22"
|
||||||
- name: "Enable Magic Nix Cache 🪄"
|
- name: "Enable Magic Nix Cache 🪄"
|
||||||
uses: "DeterminateSystems/magic-nix-cache-action@v7"
|
uses: "DeterminateSystems/magic-nix-cache-action@v9"
|
||||||
- name: "Build with Nix ❄️"
|
- name: "Build with Nix ❄️"
|
||||||
run: |
|
run: |
|
||||||
nix build .#quickgui
|
nix build .#quickgui
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
name: Flake ❄️ Checker ✅
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
schedule:
|
||||||
|
- cron: '42 0 * * 6'
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
flake-checker:
|
||||||
|
name: Flake Checker
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v6
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
- uses: DeterminateSystems/nix-installer-action@v22
|
||||||
|
- uses: DeterminateSystems/magic-nix-cache-action@v9
|
||||||
|
- uses: DeterminateSystems/flake-checker-action@v12
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
name: Flake ❄️ Lock 🔒️ Updater ✨
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: '37 13 14,28 * *'
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
lock-updater:
|
||||||
|
name: Flake Lock Updater
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v6
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
- uses: DeterminateSystems/nix-installer-action@v22
|
||||||
|
- uses: DeterminateSystems/magic-nix-cache-action@v9
|
||||||
|
- uses: DeterminateSystems/update-flake-lock@v28
|
||||||
|
with:
|
||||||
|
pr-title: "chore: update flake.lock"
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
name: "Lint Pull Request 🐙"
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request_target:
|
||||||
|
types:
|
||||||
|
- opened
|
||||||
|
- edited
|
||||||
|
- synchronize
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
pull-requests: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
main:
|
||||||
|
name: Validate pull request title
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
steps:
|
||||||
|
- uses: amannn/action-semantic-pull-request@v6
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
with:
|
||||||
|
# If the PR only contains a single commit, the action will validate that
|
||||||
|
# it matches the configured pattern.
|
||||||
|
validateSingleCommit: true
|
||||||
|
# Related to `validateSingleCommit` you can opt-in to validate that the PR
|
||||||
|
# title matches a single commit to avoid confusion.
|
||||||
|
validateSingleCommitMatchesPrTitle: true
|
||||||
|
|
@ -24,7 +24,7 @@ jobs:
|
||||||
name: "Check versions ⚖️"
|
name: "Check versions ⚖️"
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v6
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- name: "Compare App and Git versions 🟰"
|
- name: "Compare App and Git versions 🟰"
|
||||||
|
|
@ -46,7 +46,7 @@ jobs:
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
steps:
|
steps:
|
||||||
- name: "Checkout 🥡"
|
- name: "Checkout 🥡"
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v6
|
||||||
- name: "Install Flutter 🦋"
|
- name: "Install Flutter 🦋"
|
||||||
uses: subosito/flutter-action@v2
|
uses: subosito/flutter-action@v2
|
||||||
with:
|
with:
|
||||||
|
|
@ -100,12 +100,12 @@ jobs:
|
||||||
id-token: "write"
|
id-token: "write"
|
||||||
contents: "read"
|
contents: "read"
|
||||||
steps:
|
steps:
|
||||||
- uses: "actions/checkout@v4"
|
- uses: "actions/checkout@v6"
|
||||||
with:
|
with:
|
||||||
ref: "${{ (inputs.tag != null) && format('refs/tags/{0}', inputs.tag) || '' }}"
|
ref: "${{ (inputs.tag != null) && format('refs/tags/{0}', inputs.tag) || '' }}"
|
||||||
- uses: "DeterminateSystems/nix-installer-action@v12"
|
- uses: "DeterminateSystems/nix-installer-action@v22"
|
||||||
- uses: "DeterminateSystems/magic-nix-cache-action@v7"
|
- uses: "DeterminateSystems/magic-nix-cache-action@v9"
|
||||||
- uses: "DeterminateSystems/flakehub-push@v4"
|
- uses: "DeterminateSystems/flakehub-push@v6"
|
||||||
with:
|
with:
|
||||||
visibility: "public"
|
visibility: "public"
|
||||||
name: "quickemu-project/quickgui"
|
name: "quickemu-project/quickgui"
|
||||||
|
|
@ -117,7 +117,7 @@ jobs:
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
steps:
|
steps:
|
||||||
- name: "Checkout 🥡"
|
- name: "Checkout 🥡"
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v6
|
||||||
- name: "Install Flutter 🦋"
|
- name: "Install Flutter 🦋"
|
||||||
uses: subosito/flutter-action@v2
|
uses: subosito/flutter-action@v2
|
||||||
with:
|
with:
|
||||||
|
|
@ -126,7 +126,7 @@ jobs:
|
||||||
flutter-version-file: pubspec.yaml
|
flutter-version-file: pubspec.yaml
|
||||||
- name: "Install dependencies 💾"
|
- name: "Install dependencies 💾"
|
||||||
run: |
|
run: |
|
||||||
sudo apt-get -y install clang cmake ninja-build pkg-config libgtk-3-0 libgtk-3-dev libblkid1 liblzma5
|
sudo apt-get -y install clang cmake libblkid1 liblzma5 libgtk-3-0 libgtk-3-dev ninja-build pkg-config
|
||||||
sudo apt-get -y install debhelper-compat distro-info dput devscripts rsync
|
sudo apt-get -y install debhelper-compat distro-info dput devscripts rsync
|
||||||
- name: Install Flutter dependencies 🦋
|
- name: Install Flutter dependencies 🦋
|
||||||
run: flutter pub get
|
run: flutter pub get
|
||||||
|
|
@ -135,7 +135,7 @@ jobs:
|
||||||
- name: Build artifacts 🏗️
|
- name: Build artifacts 🏗️
|
||||||
run: flutter build linux --release
|
run: flutter build linux --release
|
||||||
- name: "Import gpg key 🔑"
|
- name: "Import gpg key 🔑"
|
||||||
uses: crazy-max/ghaction-import-gpg@v6
|
uses: crazy-max/ghaction-import-gpg@v7
|
||||||
with:
|
with:
|
||||||
gpg_private_key: ${{ secrets.PPA_GPG_PRIVATE_KEY }}
|
gpg_private_key: ${{ secrets.PPA_GPG_PRIVATE_KEY }}
|
||||||
passphrase: ${{ secrets.PPA_GPG_PASSPHRASE }}
|
passphrase: ${{ secrets.PPA_GPG_PASSPHRASE }}
|
||||||
|
|
|
||||||
|
|
@ -6,8 +6,6 @@
|
||||||
.packages
|
.packages
|
||||||
build/
|
build/
|
||||||
dist/
|
dist/
|
||||||
# If you're building an application, you may want to check-in your pubspec.lock
|
|
||||||
pubspec.lock
|
|
||||||
|
|
||||||
# Directory created by dartdoc
|
# Directory created by dartdoc
|
||||||
# If you don't generate documentation locally you can remove this line.
|
# If you don't generate documentation locally you can remove this line.
|
||||||
|
|
|
||||||
24
.metadata
|
|
@ -4,7 +4,27 @@
|
||||||
# This file should be version controlled and should not be manually edited.
|
# This file should be version controlled and should not be manually edited.
|
||||||
|
|
||||||
version:
|
version:
|
||||||
revision: 3595343e20a61ff16d14e8ecc25f364276bb1b8b
|
revision: "761747bfc538b5af34aa0d3fac380f1bc331ec49"
|
||||||
channel: stable
|
channel: "stable"
|
||||||
|
|
||||||
project_type: app
|
project_type: app
|
||||||
|
|
||||||
|
# Tracks metadata for the flutter migrate command
|
||||||
|
migration:
|
||||||
|
platforms:
|
||||||
|
- platform: root
|
||||||
|
create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
|
||||||
|
base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
|
||||||
|
- platform: macos
|
||||||
|
create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
|
||||||
|
base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
|
||||||
|
|
||||||
|
# User provided section
|
||||||
|
|
||||||
|
# List of Local paths (relative to this file) that should be
|
||||||
|
# ignored by the migrate tool.
|
||||||
|
#
|
||||||
|
# Files that are not part of the templates will be ignored by default.
|
||||||
|
unmanaged_files:
|
||||||
|
- 'lib/main.dart'
|
||||||
|
- 'ios/Runner.xcodeproj/project.pbxproj'
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"editor.codeActionsOnSave": {
|
"editor.codeActionsOnSave": {
|
||||||
"source.fixAll": true,
|
"source.fixAll": "explicit",
|
||||||
"source.organizeImports": true,
|
"source.organizeImports": "explicit"
|
||||||
},
|
},
|
||||||
"cmake.sourceDirectory": "${workspaceFolder}/linux"
|
"cmake.sourceDirectory": "${workspaceFolder}/linux"
|
||||||
}
|
}
|
||||||
|
|
@ -0,0 +1,128 @@
|
||||||
|
# Contributor Covenant Code of Conduct
|
||||||
|
|
||||||
|
## Our Pledge
|
||||||
|
|
||||||
|
We as members, contributors, and leaders pledge to make participation in our
|
||||||
|
community a harassment-free experience for everyone, regardless of age, body
|
||||||
|
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
||||||
|
identity and expression, level of experience, education, socio-economic status,
|
||||||
|
nationality, personal appearance, race, religion, or sexual identity
|
||||||
|
and orientation.
|
||||||
|
|
||||||
|
We pledge to act and interact in ways that contribute to an open, welcoming,
|
||||||
|
diverse, inclusive, and healthy community.
|
||||||
|
|
||||||
|
## Our Standards
|
||||||
|
|
||||||
|
Examples of behavior that contributes to a positive environment for our
|
||||||
|
community include:
|
||||||
|
|
||||||
|
* Demonstrating empathy and kindness toward other people
|
||||||
|
* Being respectful of differing opinions, viewpoints, and experiences
|
||||||
|
* Giving and gracefully accepting constructive feedback
|
||||||
|
* Accepting responsibility and apologizing to those affected by our mistakes,
|
||||||
|
and learning from the experience
|
||||||
|
* Focusing on what is best not just for us as individuals, but for the
|
||||||
|
overall community
|
||||||
|
|
||||||
|
Examples of unacceptable behavior include:
|
||||||
|
|
||||||
|
* The use of sexualized language or imagery, and sexual attention or
|
||||||
|
advances of any kind
|
||||||
|
* Trolling, insulting or derogatory comments, and personal or political attacks
|
||||||
|
* Public or private harassment
|
||||||
|
* Publishing others' private information, such as a physical or email
|
||||||
|
address, without their explicit permission
|
||||||
|
* Other conduct which could reasonably be considered inappropriate in a
|
||||||
|
professional setting
|
||||||
|
|
||||||
|
## Enforcement Responsibilities
|
||||||
|
|
||||||
|
Community leaders are responsible for clarifying and enforcing our standards of
|
||||||
|
acceptable behavior and will take appropriate and fair corrective action in
|
||||||
|
response to any behavior that they deem inappropriate, threatening, offensive,
|
||||||
|
or harmful.
|
||||||
|
|
||||||
|
Community leaders have the right and responsibility to remove, edit, or reject
|
||||||
|
comments, commits, code, wiki edits, issues, and other contributions that are
|
||||||
|
not aligned to this Code of Conduct, and will communicate reasons for moderation
|
||||||
|
decisions when appropriate.
|
||||||
|
|
||||||
|
## Scope
|
||||||
|
|
||||||
|
This Code of Conduct applies within all community spaces, and also applies when
|
||||||
|
an individual is officially representing the community in public spaces.
|
||||||
|
Examples of representing our community include using an official e-mail address,
|
||||||
|
posting via an official social media account, or acting as an appointed
|
||||||
|
representative at an online or offline event.
|
||||||
|
|
||||||
|
## Enforcement
|
||||||
|
|
||||||
|
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||||
|
reported to the community leaders responsible for enforcement at
|
||||||
|
#quickemu channel on Discord.
|
||||||
|
All complaints will be reviewed and investigated promptly and fairly.
|
||||||
|
|
||||||
|
All community leaders are obligated to respect the privacy and security of the
|
||||||
|
reporter of any incident.
|
||||||
|
|
||||||
|
## Enforcement Guidelines
|
||||||
|
|
||||||
|
Community leaders will follow these Community Impact Guidelines in determining
|
||||||
|
the consequences for any action they deem in violation of this Code of Conduct:
|
||||||
|
|
||||||
|
### 1. Correction
|
||||||
|
|
||||||
|
**Community Impact**: Use of inappropriate language or other behavior deemed
|
||||||
|
unprofessional or unwelcome in the community.
|
||||||
|
|
||||||
|
**Consequence**: A private, written warning from community leaders, providing
|
||||||
|
clarity around the nature of the violation and an explanation of why the
|
||||||
|
behavior was inappropriate. A public apology may be requested.
|
||||||
|
|
||||||
|
### 2. Warning
|
||||||
|
|
||||||
|
**Community Impact**: A violation through a single incident or series
|
||||||
|
of actions.
|
||||||
|
|
||||||
|
**Consequence**: A warning with consequences for continued behavior. No
|
||||||
|
interaction with the people involved, including unsolicited interaction with
|
||||||
|
those enforcing the Code of Conduct, for a specified period of time. This
|
||||||
|
includes avoiding interactions in community spaces as well as external channels
|
||||||
|
like social media. Violating these terms may lead to a temporary or
|
||||||
|
permanent ban.
|
||||||
|
|
||||||
|
### 3. Temporary Ban
|
||||||
|
|
||||||
|
**Community Impact**: A serious violation of community standards, including
|
||||||
|
sustained inappropriate behavior.
|
||||||
|
|
||||||
|
**Consequence**: A temporary ban from any sort of interaction or public
|
||||||
|
communication with the community for a specified period of time. No public or
|
||||||
|
private interaction with the people involved, including unsolicited interaction
|
||||||
|
with those enforcing the Code of Conduct, is allowed during this period.
|
||||||
|
Violating these terms may lead to a permanent ban.
|
||||||
|
|
||||||
|
### 4. Permanent Ban
|
||||||
|
|
||||||
|
**Community Impact**: Demonstrating a pattern of violation of community
|
||||||
|
standards, including sustained inappropriate behavior, harassment of an
|
||||||
|
individual, or aggression toward or disparagement of classes of individuals.
|
||||||
|
|
||||||
|
**Consequence**: A permanent ban from any sort of public interaction within
|
||||||
|
the community.
|
||||||
|
|
||||||
|
## Attribution
|
||||||
|
|
||||||
|
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
||||||
|
version 2.0, available at
|
||||||
|
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
|
||||||
|
|
||||||
|
Community Impact Guidelines were inspired by [Mozilla's code of conduct
|
||||||
|
enforcement ladder](https://github.com/mozilla/diversity).
|
||||||
|
|
||||||
|
[homepage]: https://www.contributor-covenant.org
|
||||||
|
|
||||||
|
For answers to common questions about this code of conduct, see the FAQ at
|
||||||
|
https://www.contributor-covenant.org/faq. Translations are available at
|
||||||
|
https://www.contributor-covenant.org/translations.
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
# Contributing
|
||||||
|
|
||||||
|
We welcome contributions to Quickgui.
|
||||||
|
|
||||||
|
- Help other Quickgui users by answering questions in the [Quickgui Discussions](https://github.com/quickemu-project/discussions/categories/quickgui) 🛟
|
||||||
|
- Improve the documentation in [this README](https://github.com/quickemu-project/quickgui/edit/master/README.md) and the [Quickgui Wiki](https://github.com/quickemu-project/quickgui/wiki) 📖
|
||||||
|
- File bug reports and feature requests in the [Quickgui Issues](https://github.com/quickemu-project/quickgui/issues) 📁
|
||||||
|
- Submit [Quickgui Pull requests](https://github.com/quickemu-project/quickgui/pulls) to fix bugs 🐞 or add new features ✨
|
||||||
|
- Commit messages must [conform to the Conventional Commits specification](https://www.conventionalcommits.org/).
|
||||||
23
README.md
|
|
@ -33,7 +33,7 @@ If you don't have Quickemu installed then go and follow the Quickemu installatio
|
||||||
A .deb package is available for Debian on our [release page](https://github.com/quickemu-project/quickgui/releases).
|
A .deb package is available for Debian on our [release page](https://github.com/quickemu-project/quickgui/releases).
|
||||||
|
|
||||||
- Download the latest .deb package
|
- Download the latest .deb package
|
||||||
- Install it with `apt-get install ./quickgui-1.2.9+1-linux.deb`
|
- Install it with `apt-get install ./quickgui-1.2.10+1-linux.deb`
|
||||||
|
|
||||||
## Fedora
|
## Fedora
|
||||||
|
|
||||||
|
|
@ -64,7 +64,7 @@ systemPackages = with pkgs; [
|
||||||
Ubuntu users can install Quickgui using the [.deb package described above for Debian](#debian) or from our PPA.
|
Ubuntu users can install Quickgui using the [.deb package described above for Debian](#debian) or from our PPA.
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
sudo add-apt-repository ppa:flexiondotorg/quickgui
|
sudo apt-add-repository ppa:flexiondotorg/quickemu
|
||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
sudo apt-get install quickgui
|
sudo apt-get install quickgui
|
||||||
```
|
```
|
||||||
|
|
@ -78,14 +78,14 @@ We provide an AppImage and a pre-compiled binary of Quickemu in a .zip file.
|
||||||
The AppImage should work on most Linux distributions.
|
The AppImage should work on most Linux distributions.
|
||||||
|
|
||||||
* [Download](https://github.com/quickemu-project/quickgui/releases) the latest AppImage.
|
* [Download](https://github.com/quickemu-project/quickgui/releases) the latest AppImage.
|
||||||
* `chmod +x quickgui-1.2.9+1-linux.AppImage`
|
* `chmod +x quickgui-1.2.10+1-linux.AppImage`
|
||||||
* `./quickgui-1.2.9+1-linux.AppImage`
|
* `./quickgui-1.2.10+1-linux.AppImage`
|
||||||
|
|
||||||
### Pre-compiled binary
|
### Pre-compiled binary
|
||||||
|
|
||||||
* [Download](https://github.com/quickemu-project/quickgui/releases) the latest .zip file.
|
* [Download](https://github.com/quickemu-project/quickgui/releases) the latest .zip file.
|
||||||
* `unzip quickgui-1.2.9+1-linux.zip`
|
* `unzip quickgui-1.2.10+1-linux.zip`
|
||||||
* `cd quickgui-1.2.9+1-linux`
|
* `cd quickgui-1.2.10+1-linux`
|
||||||
* `chmod +x quickgui`
|
* `chmod +x quickgui`
|
||||||
* `./quickgui`
|
* `./quickgui`
|
||||||
|
|
||||||
|
|
@ -100,6 +100,17 @@ To compile the Quickgui yourself:
|
||||||
* `flutter config --enable-linux-desktop`
|
* `flutter config --enable-linux-desktop`
|
||||||
* `flutter build linux --release`
|
* `flutter build linux --release`
|
||||||
|
|
||||||
|
## Macos
|
||||||
|
This requires flutter to be installed as well as xcode development for macos nad cocoapods.
|
||||||
|
It will install quickgui app in the applications and after running the command below you should be able to search for it through spotlight
|
||||||
|
```bash
|
||||||
|
git clone https://github.com/quickemu-project/quickgui.git
|
||||||
|
cd quickgui
|
||||||
|
flutter pub get
|
||||||
|
flutter config --enable-macos-desktop
|
||||||
|
flutter build macos --release
|
||||||
|
```
|
||||||
|
|
||||||
The compiled binary will be in `build/linux/x64/release/bundle/quickgui`.
|
The compiled binary will be in `build/linux/x64/release/bundle/quickgui`.
|
||||||
You can run it with:
|
You can run it with:
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
# Security Policy
|
||||||
|
|
||||||
|
## Supported Versions
|
||||||
|
|
||||||
|
Here are the versions of Quickgui currently being supported with security updates.
|
||||||
|
|
||||||
|
| Version | Supported |
|
||||||
|
| ------- | ------------------ |
|
||||||
|
| 1.2.x | :white_check_mark: |
|
||||||
|
| < 1.1 | :x: |
|
||||||
|
|
||||||
|
## Reporting a Vulnerability
|
||||||
|
|
||||||
|
If you discover a vulnerability in Quickgui then [file an issue](https://github.com/quickemu-project/quickgui/issues/new) and click *Report a vulnerability*.
|
||||||
|
|
||||||
|
- Quickgui is a spare-time hobby project.
|
||||||
|
- We do not have SLAs for responding to security issues.
|
||||||
|
- It is a best-efforts basis.
|
||||||
|
|
@ -49,8 +49,8 @@ msgstr "Správce stahování"
|
||||||
msgid "Downloading (no progress available)..."
|
msgid "Downloading (no progress available)..."
|
||||||
msgstr "Probíhá stahování (průběh není k dispozici) …"
|
msgstr "Probíhá stahování (průběh není k dispozici) …"
|
||||||
|
|
||||||
msgid "Downloading...{0}%"
|
msgid "Downloading... {0}%"
|
||||||
msgstr "Probíhá stahování …{0}%"
|
msgstr "Probíhá stahování … {0}%"
|
||||||
|
|
||||||
msgid "Downloading {0}"
|
msgid "Downloading {0}"
|
||||||
msgstr "Probíhá stahování {0}"
|
msgstr "Probíhá stahování {0}"
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,7 @@ msgstr "Dadlwythwr"
|
||||||
msgid "Downloading (no progress available)..."
|
msgid "Downloading (no progress available)..."
|
||||||
msgstr "Llwytho i lawr (dim cynnydd ar gael)..."
|
msgstr "Llwytho i lawr (dim cynnydd ar gael)..."
|
||||||
|
|
||||||
msgid "Downloading...{0}%"
|
msgid "Downloading... {0}%"
|
||||||
msgstr "Llwytho i lawr... {0}%"
|
msgstr "Llwytho i lawr... {0}%"
|
||||||
|
|
||||||
msgid "Downloading {0}"
|
msgid "Downloading {0}"
|
||||||
|
|
|
||||||
|
|
@ -50,8 +50,8 @@ msgstr "Downloader"
|
||||||
msgid "Downloading (no progress available)..."
|
msgid "Downloading (no progress available)..."
|
||||||
msgstr "Lädt herunter (Kein Fortschritt verfügbar) …"
|
msgstr "Lädt herunter (Kein Fortschritt verfügbar) …"
|
||||||
|
|
||||||
msgid "Downloading...{0}%"
|
msgid "Downloading... {0}%"
|
||||||
msgstr "Herunterladen …{0}%"
|
msgstr "Herunterladen … {0}%"
|
||||||
|
|
||||||
msgid "Downloading {0}"
|
msgid "Downloading {0}"
|
||||||
msgstr "{0} wird herunterladen"
|
msgstr "{0} wird herunterladen"
|
||||||
|
|
|
||||||
|
|
@ -49,8 +49,8 @@ msgstr "Downloader"
|
||||||
msgid "Downloading (no progress available)..."
|
msgid "Downloading (no progress available)..."
|
||||||
msgstr "Downloading (no progress available)..."
|
msgstr "Downloading (no progress available)..."
|
||||||
|
|
||||||
msgid "Downloading...{0}%"
|
msgid "Downloading... {0}%"
|
||||||
msgstr "Downloading...{0}%"
|
msgstr "Downloading... {0}%"
|
||||||
|
|
||||||
msgid "Downloading {0}"
|
msgid "Downloading {0}"
|
||||||
msgstr "Downloading {0}"
|
msgstr "Downloading {0}"
|
||||||
|
|
@ -184,3 +184,15 @@ msgstr "SSH username"
|
||||||
# Connect to the VM via SSH
|
# Connect to the VM via SSH
|
||||||
msgid "Connect"
|
msgid "Connect"
|
||||||
msgstr "Connect"
|
msgstr "Connect"
|
||||||
|
|
||||||
|
msgid "Loading available downloads"
|
||||||
|
msgstr "Loading available downloads"
|
||||||
|
|
||||||
|
msgid "Powered by"
|
||||||
|
msgstr "Powered by"
|
||||||
|
|
||||||
|
msgid "Error"
|
||||||
|
msgstr "Error"
|
||||||
|
|
||||||
|
msgid "Could not write to the working directory. Please check the permissions."
|
||||||
|
msgstr "Could not write to the working directory. Please check the permissions."
|
||||||
|
|
|
||||||
|
|
@ -62,8 +62,8 @@ msgid "Downloading (no progress available)..."
|
||||||
msgstr "Descargando (progreso no disponible)..."
|
msgstr "Descargando (progreso no disponible)..."
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "Downloading...{0}%"
|
msgid "Downloading... {0}%"
|
||||||
msgstr "Descargando...{0}%"
|
msgstr "Descargando... {0}%"
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "Downloading {0}"
|
msgid "Downloading {0}"
|
||||||
|
|
|
||||||
|
|
@ -49,8 +49,8 @@ msgstr "Gestionnaire de téléchargements"
|
||||||
msgid "Downloading (no progress available)..."
|
msgid "Downloading (no progress available)..."
|
||||||
msgstr "Téléchargement (pas de barre de progression)..."
|
msgstr "Téléchargement (pas de barre de progression)..."
|
||||||
|
|
||||||
msgid "Downloading...{0}%"
|
msgid "Downloading... {0}%"
|
||||||
msgstr "Téléchargement...{0}%"
|
msgstr "Téléchargement... {0}%"
|
||||||
|
|
||||||
msgid "Downloading {0}"
|
msgid "Downloading {0}"
|
||||||
msgstr "Téléchargement de {0}"
|
msgstr "Téléchargement de {0}"
|
||||||
|
|
@ -184,3 +184,15 @@ msgstr "Nom d'utilisateur SSH"
|
||||||
# Connect to the VM via SSH
|
# Connect to the VM via SSH
|
||||||
msgid "Connect"
|
msgid "Connect"
|
||||||
msgstr "Connecter"
|
msgstr "Connecter"
|
||||||
|
|
||||||
|
msgid "Error"
|
||||||
|
msgstr "Erreur"
|
||||||
|
|
||||||
|
msgid "Could not write to the working directory. Please check the permissions."
|
||||||
|
msgstr "Impossible d'écrire dans le répertoire de travail. Veuillez vérifier les permissions."
|
||||||
|
|
||||||
|
msgid "Loading available downloads"
|
||||||
|
msgstr "Chargement des téléchargements disponibles"
|
||||||
|
|
||||||
|
msgid "Powered by"
|
||||||
|
msgstr "Propulsé par"
|
||||||
|
|
|
||||||
|
|
@ -51,8 +51,8 @@ msgstr "Inneal luchdachadh sìos"
|
||||||
msgid "Downloading (no progress available)..."
|
msgid "Downloading (no progress available)..."
|
||||||
msgstr "A ’luchdachadh sìos (chan eil adhartas ri fhaighinn)"
|
msgstr "A ’luchdachadh sìos (chan eil adhartas ri fhaighinn)"
|
||||||
|
|
||||||
msgid "Downloading...{0}%"
|
msgid "Downloading... {0}%"
|
||||||
msgstr "A ’luchdachadh sìos...{0}%"
|
msgstr "A ’luchdachadh sìos... {0}%"
|
||||||
|
|
||||||
msgid "Downloading {0}"
|
msgid "Downloading {0}"
|
||||||
msgstr "Thèid {0} a luchdachadh sìos"
|
msgstr "Thèid {0} a luchdachadh sìos"
|
||||||
|
|
|
||||||
|
|
@ -49,8 +49,8 @@ msgstr "Letöltő"
|
||||||
msgid "Downloading (no progress available)..."
|
msgid "Downloading (no progress available)..."
|
||||||
msgstr "Letöltés (a haladásról nincs visszajelzés)..."
|
msgstr "Letöltés (a haladásról nincs visszajelzés)..."
|
||||||
|
|
||||||
msgid "Downloading...{0}%"
|
msgid "Downloading... {0}%"
|
||||||
msgstr "Letöltés...{0}%"
|
msgstr "Letöltés... {0}%"
|
||||||
|
|
||||||
msgid "Downloading {0}"
|
msgid "Downloading {0}"
|
||||||
msgstr "Letöltés {0}"
|
msgstr "Letöltés {0}"
|
||||||
|
|
|
||||||
|
|
@ -54,8 +54,8 @@ msgstr "Download"
|
||||||
msgid "Downloading (no progress available)..."
|
msgid "Downloading (no progress available)..."
|
||||||
msgstr "Download (nessun progresso disponibile)..."
|
msgstr "Download (nessun progresso disponibile)..."
|
||||||
|
|
||||||
msgid "Downloading...{0}%"
|
msgid "Downloading... {0}%"
|
||||||
msgstr "Scaricando...{0}%"
|
msgstr "Scaricando... {0}%"
|
||||||
|
|
||||||
msgid "Downloading {0}"
|
msgid "Downloading {0}"
|
||||||
msgstr "Scaricamento di {0}"
|
msgstr "Scaricamento di {0}"
|
||||||
|
|
|
||||||
|
|
@ -49,8 +49,8 @@ msgstr "ダウンローダ"
|
||||||
msgid "Downloading (no progress available)..."
|
msgid "Downloading (no progress available)..."
|
||||||
msgstr "ダウンロード中(進行状況を推定中)..."
|
msgstr "ダウンロード中(進行状況を推定中)..."
|
||||||
|
|
||||||
msgid "Downloading...{0}%"
|
msgid "Downloading... {0}%"
|
||||||
msgstr "ダウンロード中...{0}%"
|
msgstr "ダウンロード中... {0}%"
|
||||||
|
|
||||||
msgid "Downloading {0}"
|
msgid "Downloading {0}"
|
||||||
msgstr "{0}をダウンロード中"
|
msgstr "{0}をダウンロード中"
|
||||||
|
|
|
||||||
|
|
@ -55,8 +55,8 @@ msgstr "Downloader"
|
||||||
msgid "Downloading (no progress available)..."
|
msgid "Downloading (no progress available)..."
|
||||||
msgstr "Downloaden (geen voortgang beschikbaar)..."
|
msgstr "Downloaden (geen voortgang beschikbaar)..."
|
||||||
|
|
||||||
msgid "Downloading...{0}%"
|
msgid "Downloading... {0}%"
|
||||||
msgstr "Downloaden...{0}%"
|
msgstr "Downloaden... {0}%"
|
||||||
|
|
||||||
msgid "Downloading {0}"
|
msgid "Downloading {0}"
|
||||||
msgstr "Downloaden {0}"
|
msgstr "Downloaden {0}"
|
||||||
|
|
|
||||||
|
|
@ -55,8 +55,8 @@ msgstr "Nedlaster"
|
||||||
msgid "Downloading (no progress available)..."
|
msgid "Downloading (no progress available)..."
|
||||||
msgstr "Nedlasting (ingen fremgang tilgjengelig)..."
|
msgstr "Nedlasting (ingen fremgang tilgjengelig)..."
|
||||||
|
|
||||||
msgid "Downloading...{0}%"
|
msgid "Downloading... {0}%"
|
||||||
msgstr "Laster ned...{0}%"
|
msgstr "Laster ned... {0}%"
|
||||||
|
|
||||||
msgid "Downloading {0}"
|
msgid "Downloading {0}"
|
||||||
msgstr "Laster ned {0}"
|
msgstr "Laster ned {0}"
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,7 @@ msgstr "Telecargador"
|
||||||
msgid "Downloading (no progress available)..."
|
msgid "Downloading (no progress available)..."
|
||||||
msgstr "Telecargament (cap de barra de progression pas disponibla)..."
|
msgstr "Telecargament (cap de barra de progression pas disponibla)..."
|
||||||
|
|
||||||
msgid "Downloading...{0}%"
|
msgid "Downloading... {0}%"
|
||||||
msgstr "Telecargament... {0} %"
|
msgstr "Telecargament... {0} %"
|
||||||
|
|
||||||
msgid "Downloading {0}"
|
msgid "Downloading {0}"
|
||||||
|
|
|
||||||
|
|
@ -49,8 +49,8 @@ msgstr "Downloader"
|
||||||
msgid "Downloading (no progress available)..."
|
msgid "Downloading (no progress available)..."
|
||||||
msgstr "Baixando (progresso não disponível)..."
|
msgstr "Baixando (progresso não disponível)..."
|
||||||
|
|
||||||
msgid "Downloading...{0}%"
|
msgid "Downloading... {0}%"
|
||||||
msgstr "Baixando...{0}%"
|
msgstr "Baixando... {0}%"
|
||||||
|
|
||||||
msgid "Downloading {0}"
|
msgid "Downloading {0}"
|
||||||
msgstr "Baixando {0}"
|
msgstr "Baixando {0}"
|
||||||
|
|
|
||||||
|
|
@ -49,8 +49,8 @@ msgstr "Transferidor"
|
||||||
msgid "Downloading (no progress available)..."
|
msgid "Downloading (no progress available)..."
|
||||||
msgstr "A transferir (progresso não disponível)..."
|
msgstr "A transferir (progresso não disponível)..."
|
||||||
|
|
||||||
msgid "Downloading...{0}%"
|
msgid "Downloading... {0}%"
|
||||||
msgstr "A transferir...{0}%"
|
msgstr "A transferir... {0}%"
|
||||||
|
|
||||||
msgid "Downloading {0}"
|
msgid "Downloading {0}"
|
||||||
msgstr "A transferir {0}"
|
msgstr "A transferir {0}"
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ msgstr ""
|
||||||
msgid "Downloading (no progress available)..."
|
msgid "Downloading (no progress available)..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Downloading...{0}%"
|
msgid "Downloading... {0}%"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Downloading {0}"
|
msgid "Downloading {0}"
|
||||||
|
|
@ -187,3 +187,14 @@ msgstr ""
|
||||||
msgid "Connect"
|
msgid "Connect"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Error"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Could not write to the working directory. Please check the permissions."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Loading available downloads"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Powered by"
|
||||||
|
msgstr ""
|
||||||
|
|
|
||||||
|
|
@ -55,8 +55,8 @@ msgstr "Загрузчик"
|
||||||
msgid "Downloading (no progress available)..."
|
msgid "Downloading (no progress available)..."
|
||||||
msgstr "Загрузка (нет прогресса)..."
|
msgstr "Загрузка (нет прогресса)..."
|
||||||
|
|
||||||
msgid "Downloading...{0}%"
|
msgid "Downloading... {0}%"
|
||||||
msgstr "Загрузка...{0}%"
|
msgstr "Загрузка... {0}%"
|
||||||
|
|
||||||
msgid "Downloading {0}"
|
msgid "Downloading {0}"
|
||||||
msgstr "Загрузка {0}"
|
msgstr "Загрузка {0}"
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
# Swedish translation for quickgui.
|
# Swedish translation for quickgui.
|
||||||
# Åke Engelbrektson <eson@svenskasprakfiler.se>, 2022.
|
# Åke Engelbrektson <eson@svenskasprakfiler.se>, 2022, 2024.
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: quickgui\n"
|
"Project-Id-Version: quickgui\n"
|
||||||
"POT-Creation-Date: 2021-09-29 09:59+0200\n"
|
"POT-Creation-Date: 2021-09-29 09:59+0200\n"
|
||||||
"PO-Revision-Date: 2022-06-13 13:19+0200\n"
|
"PO-Revision-Date: 2024-08-14 21:09+0200\n"
|
||||||
"Last-Translator: Åke Engelbrektson <eson@svenskasprakfiler.se>\n"
|
"Last-Translator: Åke Engelbrektson <eson@svenskasprakfiler.se>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
"Language: sv\n"
|
"Language: sv\n"
|
||||||
|
|
@ -13,7 +13,7 @@ msgstr ""
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"X-Generator: Poedit 3.1\n"
|
"X-Generator: Poedit 3.4.4\n"
|
||||||
"X-Poedit-Basepath: .\n"
|
"X-Poedit-Basepath: .\n"
|
||||||
|
|
||||||
msgid "Quickgui : a Flutter frontend for Quickget and Quickemu"
|
msgid "Quickgui : a Flutter frontend for Quickget and Quickemu"
|
||||||
|
|
@ -52,7 +52,7 @@ msgstr "Nerladdare"
|
||||||
msgid "Downloading (no progress available)..."
|
msgid "Downloading (no progress available)..."
|
||||||
msgstr "Laddar ner (inget förlopp tillgängligt)..."
|
msgstr "Laddar ner (inget förlopp tillgängligt)..."
|
||||||
|
|
||||||
msgid "Downloading...{0}%"
|
msgid "Downloading... {0}%"
|
||||||
msgstr "Laddar ner... {0}%"
|
msgstr "Laddar ner... {0}%"
|
||||||
|
|
||||||
msgid "Downloading {0}"
|
msgid "Downloading {0}"
|
||||||
|
|
@ -135,3 +135,74 @@ msgstr "Du är på väg att stoppa den virtuella maskinen {0}"
|
||||||
|
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr "Språk"
|
msgstr "Språk"
|
||||||
|
|
||||||
|
msgid "Directory where the machines are stored"
|
||||||
|
msgstr "Plats där maskinerna lagras"
|
||||||
|
|
||||||
|
msgid "Search version"
|
||||||
|
msgstr "Sök version"
|
||||||
|
|
||||||
|
msgid "quickemu was not found in your PATH"
|
||||||
|
msgstr "quickemu kunde inte hittas i din PATH"
|
||||||
|
|
||||||
|
msgid "Please install it and try again."
|
||||||
|
msgstr "Installera det och försök igen."
|
||||||
|
|
||||||
|
# The complete sentence is "See github.com/quickemu-project/quickemu for more information"
|
||||||
|
msgid "See"
|
||||||
|
msgstr "Se"
|
||||||
|
|
||||||
|
# The complete sentence is "See github.com/quickemu-project/quickemu for more information"
|
||||||
|
msgid "for more information"
|
||||||
|
msgstr "för mer information"
|
||||||
|
|
||||||
|
msgid "Delete {0}"
|
||||||
|
msgstr "Ta bort {0}"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"You are about to delete {0}. This cannot be undone. Would you like to delete "
|
||||||
|
"the disk image but keep the configuration, or delete the whole VM?"
|
||||||
|
msgstr ""
|
||||||
|
"Du är på väg att ta bort {0}. Detta kan inte ångras. Vill du ta bort "
|
||||||
|
"diskavbildningen men behålla konfigurationen eller ta bort hela den "
|
||||||
|
"virtuella datorn?"
|
||||||
|
|
||||||
|
msgid "Delete disk image"
|
||||||
|
msgstr "Ta bor diskavbilden"
|
||||||
|
|
||||||
|
msgid "Delete whole VM"
|
||||||
|
msgstr "Ta bort hela den virtuella datorn"
|
||||||
|
|
||||||
|
msgid "Connect display with SPICE"
|
||||||
|
msgstr "Anslut skärm med SPICE"
|
||||||
|
|
||||||
|
msgid "SPICE client not found"
|
||||||
|
msgstr "Ingen SPICE-klient hittades"
|
||||||
|
|
||||||
|
msgid "Connect with SSH"
|
||||||
|
msgstr "Anslut via SSH"
|
||||||
|
|
||||||
|
msgid "SSH server not detected on guest"
|
||||||
|
msgstr "Ingen SSH-server identifierad på gästen"
|
||||||
|
|
||||||
|
msgid "Launch SSH connection to {0}"
|
||||||
|
msgstr "Starta SSH-anslutning till {0}"
|
||||||
|
|
||||||
|
msgid "SSH username"
|
||||||
|
msgstr "SSH-användarnamn"
|
||||||
|
|
||||||
|
# Connect to the VM via SSH
|
||||||
|
msgid "Connect"
|
||||||
|
msgstr "Anslut"
|
||||||
|
|
||||||
|
msgid "Error"
|
||||||
|
msgstr "Fel"
|
||||||
|
|
||||||
|
msgid "Could not write to the working directory. Please check the permissions."
|
||||||
|
msgstr "Kunde inte skriva till arbetsmappen. Kontrollera rättigheterna."
|
||||||
|
|
||||||
|
msgid "Loading available downloads"
|
||||||
|
msgstr "Läser in tillgängliga nerladdningar"
|
||||||
|
|
||||||
|
msgid "Powered by"
|
||||||
|
msgstr "Drivs av"
|
||||||
|
|
|
||||||
|
|
@ -49,8 +49,8 @@ msgstr "Yükleyici"
|
||||||
msgid "Downloading (no progress available)..."
|
msgid "Downloading (no progress available)..."
|
||||||
msgstr "Yükleniyor (ilerleme yok)..."
|
msgstr "Yükleniyor (ilerleme yok)..."
|
||||||
|
|
||||||
msgid "Downloading...{0}%"
|
msgid "Downloading... {0}%"
|
||||||
msgstr "Yükleniyor...{0}%"
|
msgstr "Yükleniyor... {0}%"
|
||||||
|
|
||||||
msgid "Downloading {0}"
|
msgid "Downloading {0}"
|
||||||
msgstr "Yükleniyor {0}"
|
msgstr "Yükleniyor {0}"
|
||||||
|
|
|
||||||
|
|
@ -47,6 +47,14 @@ mkShell rec {
|
||||||
# Packages installed via `dart pub global activate package_name` are
|
# Packages installed via `dart pub global activate package_name` are
|
||||||
# located in the `$PUB_CACHE/bin` directory.
|
# located in the `$PUB_CACHE/bin` directory.
|
||||||
shellHook = ''
|
shellHook = ''
|
||||||
|
flutter pub get
|
||||||
|
yq eval pubspec.lock -o=json -P > pubspec.lock.json
|
||||||
|
flutter config --enable-linux-desktop
|
||||||
|
dart pub global activate flutter_distributor
|
||||||
|
echo "**********************************************************************"
|
||||||
|
echo "* flutter build linux --release *"
|
||||||
|
echo "* flutter_distributor package --platform=linux --targets=zip *"
|
||||||
|
echo "**********************************************************************"
|
||||||
if [ -z "$PUB_CACHE" ]; then
|
if [ -z "$PUB_CACHE" ]; then
|
||||||
export PATH="$PATH":"$HOME/.pub-cache/bin"
|
export PATH="$PATH":"$HOME/.pub-cache/bin"
|
||||||
else
|
else
|
||||||
|
|
|
||||||
|
|
@ -12,3 +12,10 @@ releases:
|
||||||
dart-define:
|
dart-define:
|
||||||
APP_ENV: dev
|
APP_ENV: dev
|
||||||
publish_to: none
|
publish_to: none
|
||||||
|
- name: macos-dev
|
||||||
|
jobs:
|
||||||
|
- name: quickgui-dev-macos
|
||||||
|
package:
|
||||||
|
platform: macos
|
||||||
|
target: dmg
|
||||||
|
publish_to: none
|
||||||
59
flake.lock
|
|
@ -2,12 +2,26 @@
|
||||||
"nodes": {
|
"nodes": {
|
||||||
"flake-schemas": {
|
"flake-schemas": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1697467827,
|
"lastModified": 1775244557,
|
||||||
"narHash": "sha256-j8SR19V1SRysyJwpOBF4TLuAvAjF5t+gMiboN4gYQDU=",
|
"narHash": "sha256-iYXRXIX9eafJmwJFAhqT3YxvvpNRuPFSLRCSpvGh8Ic=",
|
||||||
"rev": "764932025c817d4e500a8d2a4d8c565563923d29",
|
"rev": "15edbeeaf77e42216dbcba8bfd907fdeabb75a2b",
|
||||||
"revCount": 29,
|
"revCount": 132,
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
"url": "https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.1.2/018b3da8-4cc3-7fbb-8ff7-1588413c53e2/source.tar.gz"
|
"url": "https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.4.2/019d5cf2-ee3c-7313-964e-f3f83c35d509/source.tar.gz"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://flakehub.com/f/DeterminateSystems/flake-schemas/%2A.tar.gz"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-schemas_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1761577921,
|
||||||
|
"narHash": "sha256-eK3/xbUOrxp9fFlei09XNjqcdiHXxndzrTXp7jFpOk8=",
|
||||||
|
"rev": "47849c7625e223d36766968cc6dc23ba0e135922",
|
||||||
|
"revCount": 107,
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.2.0/019a4a84-544d-7c59-b26d-e334e320c932/source.tar.gz"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
|
|
@ -16,22 +30,43 @@
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1719254875,
|
"lastModified": 1777077449,
|
||||||
"narHash": "sha256-ECni+IkwXjusHsm9Sexdtq8weAq/yUyt1TWIemXt3Ko=",
|
"narHash": "sha256-AIiMJiqvGrN4HyLEbKAoCSRRYn0rnlW5VbKNIMIYqm4=",
|
||||||
"rev": "2893f56de08021cffd9b6b6dfc70fd9ccd51eb60",
|
"rev": "a4bf06618f0b5ee50f14ed8f0da77d34ecc19160",
|
||||||
"revCount": 643242,
|
"revCount": 911667,
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
"url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.643242%2Brev-2893f56de08021cffd9b6b6dfc70fd9ccd51eb60/0190530b-f61b-7788-9601-b336b1caf671/source.tar.gz"
|
"url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2511.911667%2Brev-a4bf06618f0b5ee50f14ed8f0da77d34ecc19160/019dcae8-75b0-71d1-abd5-feab9658f0fa/source.tar.gz"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
"url": "https://flakehub.com/f/NixOS/nixpkgs/0.1.%2A.tar.gz"
|
"url": "https://flakehub.com/f/NixOS/nixpkgs/%2A.tar.gz"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"quickemu": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-schemas": "flake-schemas_2",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1770727319,
|
||||||
|
"narHash": "sha256-djTJr1I0LDBdbIPtTVWB4b/t1jSQ2/+RtQtWTnMLBFs=",
|
||||||
|
"rev": "81d038cbaeb8fc4f7154489447fe9f856299c742",
|
||||||
|
"revCount": 2292,
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://api.flakehub.com/f/pinned/quickemu-project/quickemu/4.9.9/019c47be-6c19-773e-881b-f7d33905672f/source.tar.gz"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://flakehub.com/f/quickemu-project/quickemu/%2A.tar.gz"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-schemas": "flake-schemas",
|
"flake-schemas": "flake-schemas",
|
||||||
"nixpkgs": "nixpkgs"
|
"nixpkgs": "nixpkgs",
|
||||||
|
"quickemu": "quickemu"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
45
flake.nix
|
|
@ -1,38 +1,47 @@
|
||||||
{
|
{
|
||||||
description = "Quickemu flake";
|
description = "Quickgui flake";
|
||||||
inputs = {
|
inputs = {
|
||||||
flake-schemas.url = "https://flakehub.com/f/DeterminateSystems/flake-schemas/*.tar.gz";
|
flake-schemas.url = "https://flakehub.com/f/DeterminateSystems/flake-schemas/*.tar.gz";
|
||||||
nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.1.*.tar.gz";
|
nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/*.tar.gz";
|
||||||
|
quickemu.url = "https://flakehub.com/f/quickemu-project/quickemu/*.tar.gz";
|
||||||
|
quickemu.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = {
|
outputs = {
|
||||||
self,
|
self,
|
||||||
flake-schemas,
|
flake-schemas,
|
||||||
nixpkgs,
|
nixpkgs,
|
||||||
|
quickemu,
|
||||||
}: let
|
}: let
|
||||||
forAllSystems = function:
|
# Define supported systems and a helper function for generating system-specific outputs
|
||||||
nixpkgs.lib.genAttrs [
|
#TODO: Add the following as quickemu/quickgui/GitHub builders support them:
|
||||||
"x86_64-linux"
|
# aarch64-darwin aarch64-linux x86_64-darwin
|
||||||
# TODO: Enable when upstream supports these platforms
|
supportedSystems = [ "aarch64-linux" "x86_64-linux" ];
|
||||||
#"aarch64-linux"
|
|
||||||
#"x86_64-darwin"
|
forEachSupportedSystem = f: nixpkgs.lib.genAttrs supportedSystems (system: f {
|
||||||
#"aarch64-darwin"
|
system = system;
|
||||||
] (system: function nixpkgs.legacyPackages.${system});
|
pkgs = import nixpkgs { inherit system; };
|
||||||
|
});
|
||||||
in {
|
in {
|
||||||
# Schemas tell Nix about the structure of your flake's outputs
|
# Define schemas for the flake's outputs
|
||||||
schemas = flake-schemas.schemas;
|
schemas = flake-schemas.schemas;
|
||||||
|
|
||||||
overlays.default = final: prev: {
|
# Define overlays for each supported system
|
||||||
quickgui = final.callPackage ./package.nix {};
|
overlays = forEachSupportedSystem ({pkgs, system, ...}: {
|
||||||
};
|
default = final: prev: {
|
||||||
|
quickgui = final.callPackage ./package.nix { quickemu = quickemu.packages.${system}.default; };
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
packages = forAllSystems (pkgs: rec {
|
# Define packages for each supported system
|
||||||
quickgui = pkgs.callPackage ./package.nix {};
|
packages = forEachSupportedSystem ({pkgs, system, ...}: rec {
|
||||||
|
quickgui = pkgs.callPackage ./package.nix { quickemu = quickemu.packages.${system}.default; };
|
||||||
default = quickgui;
|
default = quickgui;
|
||||||
});
|
});
|
||||||
|
|
||||||
devShells = forAllSystems (pkgs: {
|
# Define devShells for each supported system
|
||||||
default = pkgs.callPackage ./devshell.nix {};
|
devShells = forEachSupportedSystem ({pkgs, system, ...}: {
|
||||||
|
default = pkgs.callPackage ./devshell.nix { quickemu = quickemu.packages.${system}.default; };
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,20 +1,20 @@
|
||||||
import 'dart:io';
|
|
||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
import 'dart:io';
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter/services.dart';
|
||||||
import 'package:package_info_plus/package_info_plus.dart';
|
import 'package:package_info_plus/package_info_plus.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:tuple/tuple.dart';
|
import 'package:tuple/tuple.dart';
|
||||||
import 'package:window_size/window_size.dart';
|
import 'package:window_size/window_size.dart';
|
||||||
import 'package:flutter/services.dart';
|
|
||||||
|
|
||||||
import 'src/app.dart';
|
import 'src/app.dart';
|
||||||
import 'src/mixins/app_version.dart';
|
import 'src/mixins/app_version.dart';
|
||||||
import 'src/model/app_settings.dart';
|
import 'src/model/app_settings.dart';
|
||||||
import 'src/model/operating_system.dart';
|
import 'src/model/operating_system.dart';
|
||||||
import 'src/model/option.dart';
|
import 'src/model/option.dart';
|
||||||
import 'src/model/version.dart';
|
|
||||||
import 'src/model/osicons.dart';
|
import 'src/model/osicons.dart';
|
||||||
|
import 'src/model/version.dart';
|
||||||
|
|
||||||
Future<List<OperatingSystem>> loadOperatingSystems(bool showUbuntus) async {
|
Future<List<OperatingSystem>> loadOperatingSystems(bool showUbuntus) async {
|
||||||
var process = await Process.run('quickget', ['--list-csv']);
|
var process = await Process.run('quickget', ['--list-csv']);
|
||||||
|
|
@ -65,9 +65,7 @@ Future<void> getIcons() async {
|
||||||
.where((String key) => key.contains('.svg'))
|
.where((String key) => key.contains('.svg'))
|
||||||
.toList();
|
.toList();
|
||||||
for (final imagePath in imagePaths) {
|
for (final imagePath in imagePaths) {
|
||||||
String filename = imagePath
|
String filename = imagePath.split('/').last;
|
||||||
.split('/')
|
|
||||||
.last;
|
|
||||||
String id = filename.substring(0, filename.lastIndexOf('.'));
|
String id = filename.substring(0, filename.lastIndexOf('.'));
|
||||||
osIcons[id] = imagePath;
|
osIcons[id] = imagePath;
|
||||||
}
|
}
|
||||||
|
|
@ -76,8 +74,13 @@ Future<void> getIcons() async {
|
||||||
void main() async {
|
void main() async {
|
||||||
WidgetsFlutterBinding.ensureInitialized();
|
WidgetsFlutterBinding.ensureInitialized();
|
||||||
// Don't forget to also change the size in linux/my_application.cc:50
|
// Don't forget to also change the size in linux/my_application.cc:50
|
||||||
setWindowMinSize(const Size(692, 580));
|
if (Platform.isMacOS) {
|
||||||
setWindowMaxSize(const Size(692, 580));
|
setWindowMinSize(const Size(692 + 2, 580 + 30));
|
||||||
|
setWindowMaxSize(const Size(692 + 2, 580 + 30));
|
||||||
|
} else {
|
||||||
|
setWindowMinSize(const Size(692, 580));
|
||||||
|
setWindowMaxSize(const Size(800, 720));
|
||||||
|
}
|
||||||
final foundQuickGet = await Process.run('which', ['quickget']);
|
final foundQuickGet = await Process.run('which', ['quickget']);
|
||||||
if (foundQuickGet.exitCode == 0) {
|
if (foundQuickGet.exitCode == 0) {
|
||||||
gOperatingSystems = loadOperatingSystems(false);
|
gOperatingSystems = loadOperatingSystems(false);
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ import 'model/app_settings.dart';
|
||||||
import 'pages/main_page.dart';
|
import 'pages/main_page.dart';
|
||||||
|
|
||||||
class App extends StatefulWidget {
|
class App extends StatefulWidget {
|
||||||
const App({Key? key}) : super(key: key);
|
const App({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<App> createState() => _AppState();
|
State<App> createState() => _AppState();
|
||||||
|
|
@ -61,15 +61,14 @@ class _AppState extends State<App> with PreferencesMixin {
|
||||||
builder: (context, appSettings, _) => MaterialApp(
|
builder: (context, appSettings, _) => MaterialApp(
|
||||||
theme: ThemeData(
|
theme: ThemeData(
|
||||||
useMaterial3: true,
|
useMaterial3: true,
|
||||||
colorScheme: ColorScheme.fromSwatch(
|
colorScheme: ColorScheme.fromSwatch(
|
||||||
primarySwatch: Colors.pink,
|
primarySwatch: Colors.pink,
|
||||||
backgroundColor: Colors.white,
|
backgroundColor: Colors.white,
|
||||||
)
|
)),
|
||||||
),
|
|
||||||
darkTheme: ThemeData(
|
darkTheme: ThemeData(
|
||||||
useMaterial3: true,
|
useMaterial3: true,
|
||||||
colorScheme: ColorScheme.fromSwatch(
|
colorScheme: ColorScheme.fromSwatch(
|
||||||
primarySwatch: darkGrey,
|
primarySwatch: Colors.pink,
|
||||||
backgroundColor: darkGrey.shade700,
|
backgroundColor: darkGrey.shade700,
|
||||||
brightness: Brightness.dark,
|
brightness: Brightness.dark,
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -4,3 +4,15 @@ var gIsSnap = Platform.environment['SNAP']?.isNotEmpty ?? false;
|
||||||
const String prefWorkingDirectory = 'workingDirectory';
|
const String prefWorkingDirectory = 'workingDirectory';
|
||||||
const String prefThemeMode = 'themeMode';
|
const String prefThemeMode = 'themeMode';
|
||||||
const String prefCurrentLocale = 'currentLocale';
|
const String prefCurrentLocale = 'currentLocale';
|
||||||
|
|
||||||
|
Future<String> fetchQuickemuVersion() async {
|
||||||
|
// Get the version of quickemu
|
||||||
|
var result = await Process.run('quickemu', ['--version']);
|
||||||
|
|
||||||
|
// If successful return the trimmed version
|
||||||
|
if (result.exitCode == 0) {
|
||||||
|
return result.stdout.trim();
|
||||||
|
} else {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,11 +15,11 @@ import '../widgets/downloader/download_progress_bar.dart';
|
||||||
|
|
||||||
class Downloader extends StatefulWidget {
|
class Downloader extends StatefulWidget {
|
||||||
const Downloader({
|
const Downloader({
|
||||||
Key? key,
|
|
||||||
required this.operatingSystem,
|
required this.operatingSystem,
|
||||||
required this.version,
|
required this.version,
|
||||||
this.option,
|
this.option,
|
||||||
}) : super(key: key);
|
super.key,
|
||||||
|
});
|
||||||
|
|
||||||
final OperatingSystem operatingSystem;
|
final OperatingSystem operatingSystem;
|
||||||
final Version version;
|
final Version version;
|
||||||
|
|
@ -30,7 +30,7 @@ class Downloader extends StatefulWidget {
|
||||||
}
|
}
|
||||||
|
|
||||||
class _DownloaderState extends State<Downloader> {
|
class _DownloaderState extends State<Downloader> {
|
||||||
final notificationsClient = NotificationsClient();
|
final notificationsClient = Platform.isMacOS ? null : NotificationsClient();
|
||||||
final curlPattern = RegExp("( [0-9.]+%)");
|
final curlPattern = RegExp("( [0-9.]+%)");
|
||||||
late final Stream<double> _progressStream;
|
late final Stream<double> _progressStream;
|
||||||
bool _downloadFinished = false;
|
bool _downloadFinished = false;
|
||||||
|
|
@ -71,7 +71,7 @@ class _DownloaderState extends State<Downloader> {
|
||||||
controller.close();
|
controller.close();
|
||||||
setState(() {
|
setState(() {
|
||||||
_downloadFinished = true;
|
_downloadFinished = true;
|
||||||
notificationsClient.notify(
|
notificationsClient?.notify(
|
||||||
_cancelled
|
_cancelled
|
||||||
? context.t('Download cancelled')
|
? context.t('Download cancelled')
|
||||||
: context.t('Download complete'),
|
: context.t('Download complete'),
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ import '../widgets/home_page/downloader_menu.dart';
|
||||||
import '../widgets/home_page/logo.dart';
|
import '../widgets/home_page/logo.dart';
|
||||||
|
|
||||||
class DownloaderPage extends StatelessWidget {
|
class DownloaderPage extends StatelessWidget {
|
||||||
const DownloaderPage({Key? key}) : super(key: key);
|
const DownloaderPage({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ import '../widgets/home_page/main_menu.dart';
|
||||||
import '../widgets/left_menu.dart';
|
import '../widgets/left_menu.dart';
|
||||||
|
|
||||||
class MainPage extends StatefulWidget {
|
class MainPage extends StatefulWidget {
|
||||||
const MainPage({Key? key}) : super(key: key);
|
const MainPage({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<MainPage> createState() => _MainPageState();
|
State<MainPage> createState() => _MainPageState();
|
||||||
|
|
@ -23,6 +23,7 @@ class _MainPageState extends State<MainPage> {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
GettextLocalizations.of(context).enableExceptions(true);
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
title: Text(context.t('Main menu')),
|
title: Text(context.t('Main menu')),
|
||||||
|
|
|
||||||
|
|
@ -9,17 +9,18 @@ import 'package:flutter_svg/flutter_svg.dart';
|
||||||
import 'package:gettext_i18n/gettext_i18n.dart';
|
import 'package:gettext_i18n/gettext_i18n.dart';
|
||||||
import 'package:path/path.dart' as path;
|
import 'package:path/path.dart' as path;
|
||||||
import 'package:process_run/shell.dart';
|
import 'package:process_run/shell.dart';
|
||||||
|
import 'package:version/version.dart';
|
||||||
|
|
||||||
import '../globals.dart';
|
import '../globals.dart';
|
||||||
import '../mixins/preferences_mixin.dart';
|
import '../mixins/preferences_mixin.dart';
|
||||||
import '../model/vminfo.dart';
|
|
||||||
import '../model/osicons.dart';
|
import '../model/osicons.dart';
|
||||||
|
import '../model/vminfo.dart';
|
||||||
|
|
||||||
/// VM manager page.
|
/// VM manager page.
|
||||||
/// Displays a list of available VMs, running state and connection info,
|
/// Displays a list of available VMs, running state and connection info,
|
||||||
/// with buttons to start and stop VMs.
|
/// with buttons to start and stop VMs.
|
||||||
class Manager extends StatefulWidget {
|
class Manager extends StatefulWidget {
|
||||||
const Manager({Key? key}) : super(key: key);
|
const Manager({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<Manager> createState() => _ManagerState();
|
State<Manager> createState() => _ManagerState();
|
||||||
|
|
@ -32,6 +33,7 @@ class _ManagerState extends State<Manager> with PreferencesMixin {
|
||||||
final List<String> _sshVms = [];
|
final List<String> _sshVms = [];
|
||||||
String? _terminalEmulator;
|
String? _terminalEmulator;
|
||||||
final List<String> _supportedTerminalEmulators = [
|
final List<String> _supportedTerminalEmulators = [
|
||||||
|
if (Platform.isMacOS) 'osascript',
|
||||||
'alacritty',
|
'alacritty',
|
||||||
'cool-retro-term',
|
'cool-retro-term',
|
||||||
'gnome-terminal',
|
'gnome-terminal',
|
||||||
|
|
@ -48,7 +50,7 @@ class _ManagerState extends State<Manager> with PreferencesMixin {
|
||||||
'uxrvt',
|
'uxrvt',
|
||||||
'xfce4-terminal',
|
'xfce4-terminal',
|
||||||
'xrvt',
|
'xrvt',
|
||||||
'xterm'
|
'xterm',
|
||||||
];
|
];
|
||||||
Timer? refreshTimer;
|
Timer? refreshTimer;
|
||||||
|
|
||||||
|
|
@ -82,8 +84,7 @@ class _ManagerState extends State<Manager> with PreferencesMixin {
|
||||||
// Find out which terminal emulator we have set as the default.
|
// Find out which terminal emulator we have set as the default.
|
||||||
String result = whichSync('x-terminal-emulator') ?? '';
|
String result = whichSync('x-terminal-emulator') ?? '';
|
||||||
if (result.isNotEmpty) {
|
if (result.isNotEmpty) {
|
||||||
String terminalEmulator =
|
String terminalEmulator = await File(result).resolveSymbolicLinks();
|
||||||
await File(result).resolveSymbolicLinks();
|
|
||||||
terminalEmulator = path.basenameWithoutExtension(terminalEmulator);
|
terminalEmulator = path.basenameWithoutExtension(terminalEmulator);
|
||||||
if (_supportedTerminalEmulators.contains(terminalEmulator)) {
|
if (_supportedTerminalEmulators.contains(terminalEmulator)) {
|
||||||
setState(() {
|
setState(() {
|
||||||
|
|
@ -108,7 +109,7 @@ class _ManagerState extends State<Manager> with PreferencesMixin {
|
||||||
void _detectSpice() async {
|
void _detectSpice() async {
|
||||||
var result = whichSync('spicy') ?? '';
|
var result = whichSync('spicy') ?? '';
|
||||||
setState(() {
|
setState(() {
|
||||||
_spicy = result.isNotEmpty ;
|
_spicy = result.isNotEmpty;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -155,8 +156,10 @@ class _ManagerState extends State<Manager> with PreferencesMixin {
|
||||||
File pidFile = File('$name/$name.pid');
|
File pidFile = File('$name/$name.pid');
|
||||||
if (pidFile.existsSync()) {
|
if (pidFile.existsSync()) {
|
||||||
String pid = pidFile.readAsStringSync().trim();
|
String pid = pidFile.readAsStringSync().trim();
|
||||||
Directory procDir = Directory('/proc/$pid');
|
// Check if the process is still running using kill -0, which is
|
||||||
if (procDir.existsSync()) {
|
// a portable way to check if a process is running on macOS and Linux.
|
||||||
|
ProcessResult result = Process.runSync('kill', ['-0', pid]);
|
||||||
|
if (result.exitCode == 0) {
|
||||||
if (_activeVms.containsKey(name)) {
|
if (_activeVms.containsKey(name)) {
|
||||||
activeVms[name] = _activeVms[name]!;
|
activeVms[name] = _activeVms[name]!;
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -270,7 +273,7 @@ class _ManagerState extends State<Manager> with PreferencesMixin {
|
||||||
}
|
}
|
||||||
String vmStem = currentVm;
|
String vmStem = currentVm;
|
||||||
SvgPicture? osIcon;
|
SvgPicture? osIcon;
|
||||||
while(vmStem.contains('-')) {
|
while (vmStem.contains('-')) {
|
||||||
vmStem = vmStem.substring(0, vmStem.lastIndexOf('-'));
|
vmStem = vmStem.substring(0, vmStem.lastIndexOf('-'));
|
||||||
if (osIcons.containsKey(vmStem)) {
|
if (osIcons.containsKey(vmStem)) {
|
||||||
osIcon = SvgPicture.asset(
|
osIcon = SvgPicture.asset(
|
||||||
|
|
@ -298,7 +301,11 @@ class _ManagerState extends State<Manager> with PreferencesMixin {
|
||||||
? null
|
? null
|
||||||
: () async {
|
: () async {
|
||||||
Map<String, VmInfo> activeVms = _activeVms;
|
Map<String, VmInfo> activeVms = _activeVms;
|
||||||
List<String> command = ['quickemu', '--vm', '$currentVm.conf'];
|
List<String> command = [
|
||||||
|
'quickemu',
|
||||||
|
'--vm',
|
||||||
|
'$currentVm.conf'
|
||||||
|
];
|
||||||
if (_spicy) {
|
if (_spicy) {
|
||||||
command.addAll(['--display', 'spice']);
|
command.addAll(['--display', 'spice']);
|
||||||
}
|
}
|
||||||
|
|
@ -324,7 +331,7 @@ class _ManagerState extends State<Manager> with PreferencesMixin {
|
||||||
builder: (BuildContext context) => AlertDialog(
|
builder: (BuildContext context) => AlertDialog(
|
||||||
title: Text(context.t('Stop The Virtual Machine?')),
|
title: Text(context.t('Stop The Virtual Machine?')),
|
||||||
content: Text(context.t(
|
content: Text(context.t(
|
||||||
'You are about to terminate the virtual machine',
|
'You are about to terminate the virtual machine {0}',
|
||||||
args: [currentVm])),
|
args: [currentVm])),
|
||||||
actions: <Widget>[
|
actions: <Widget>[
|
||||||
TextButton(
|
TextButton(
|
||||||
|
|
@ -337,11 +344,24 @@ class _ManagerState extends State<Manager> with PreferencesMixin {
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
).then((result) {
|
).then((result) async {
|
||||||
result = result ?? false;
|
result = result ?? false;
|
||||||
if (result) {
|
if (result) {
|
||||||
var shell = Shell();
|
var shell = Shell();
|
||||||
shell.run(['killall', currentVm].join(' '));
|
// If Quickemu is newer than 4.9.6, use the new --kill option
|
||||||
|
// which is macOS compatible.
|
||||||
|
var quickemuVersion =
|
||||||
|
Version.parse(await fetchQuickemuVersion());
|
||||||
|
if (quickemuVersion >= Version(4, 9, 6)) {
|
||||||
|
shell.run([
|
||||||
|
'quickemu',
|
||||||
|
'--vm',
|
||||||
|
'$currentVm.conf',
|
||||||
|
'--kill'
|
||||||
|
].join(' '));
|
||||||
|
} else {
|
||||||
|
shell.run(['killall', currentVm].join(' '));
|
||||||
|
}
|
||||||
setState(() {
|
setState(() {
|
||||||
_activeVms.remove(currentVm);
|
_activeVms.remove(currentVm);
|
||||||
});
|
});
|
||||||
|
|
@ -422,8 +442,8 @@ class _ManagerState extends State<Manager> with PreferencesMixin {
|
||||||
IconButton(
|
IconButton(
|
||||||
icon: SvgPicture.asset('assets/images/console.svg',
|
icon: SvgPicture.asset('assets/images/console.svg',
|
||||||
semanticsLabel: 'Connect with SSH',
|
semanticsLabel: 'Connect with SSH',
|
||||||
colorFilter: ColorFilter.mode(sshy ? buttonColor : Colors.grey, BlendMode.srcIn)
|
colorFilter: ColorFilter.mode(
|
||||||
),
|
sshy ? buttonColor : Colors.grey, BlendMode.srcIn)),
|
||||||
tooltip: sshy
|
tooltip: sshy
|
||||||
? context.t('Connect with SSH')
|
? context.t('Connect with SSH')
|
||||||
: context.t('SSH server not detected on guest'),
|
: context.t('SSH server not detected on guest'),
|
||||||
|
|
@ -452,7 +472,10 @@ class _ManagerState extends State<Manager> with PreferencesMixin {
|
||||||
child: Text(context.t('Cancel')),
|
child: Text(context.t('Cancel')),
|
||||||
),
|
),
|
||||||
TextButton(
|
TextButton(
|
||||||
onPressed: () => Navigator.pop(context, true),
|
onPressed: () {
|
||||||
|
if (usernameController.text.isEmpty) return;
|
||||||
|
Navigator.of(context).pop(true);
|
||||||
|
},
|
||||||
child: Text(context.t('Connect')),
|
child: Text(context.t('Connect')),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|
@ -470,6 +493,11 @@ class _ManagerState extends State<Manager> with PreferencesMixin {
|
||||||
// Strip the extension as x-terminal-emulator may point to a .wrapper
|
// Strip the extension as x-terminal-emulator may point to a .wrapper
|
||||||
switch (path
|
switch (path
|
||||||
.basenameWithoutExtension(_terminalEmulator!)) {
|
.basenameWithoutExtension(_terminalEmulator!)) {
|
||||||
|
case 'osascript':
|
||||||
|
sshArgs = [
|
||||||
|
'-e \'tell app "Terminal" to do script "${sshArgs.join(' ')}"\''
|
||||||
|
];
|
||||||
|
break;
|
||||||
case 'gnome-terminal':
|
case 'gnome-terminal':
|
||||||
case 'mate-terminal':
|
case 'mate-terminal':
|
||||||
sshArgs.insert(0, '--');
|
sshArgs.insert(0, '--');
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ import '../model/operating_system.dart';
|
||||||
import '../model/osicons.dart';
|
import '../model/osicons.dart';
|
||||||
|
|
||||||
class OperatingSystemSelection extends StatefulWidget {
|
class OperatingSystemSelection extends StatefulWidget {
|
||||||
const OperatingSystemSelection({Key? key}) : super(key: key);
|
const OperatingSystemSelection({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<OperatingSystemSelection> createState() =>
|
State<OperatingSystemSelection> createState() =>
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ import 'package:gettext_i18n/gettext_i18n.dart';
|
||||||
import '../model/version.dart';
|
import '../model/version.dart';
|
||||||
|
|
||||||
class OptionSelection extends StatefulWidget {
|
class OptionSelection extends StatefulWidget {
|
||||||
const OptionSelection(this.version, {Key? key}) : super(key: key);
|
const OptionSelection(this.version, {super.key});
|
||||||
|
|
||||||
final Version version;
|
final Version version;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,7 @@ import '../model/version.dart';
|
||||||
import 'option_selection.dart';
|
import 'option_selection.dart';
|
||||||
|
|
||||||
class VersionSelection extends StatefulWidget {
|
class VersionSelection extends StatefulWidget {
|
||||||
const VersionSelection({Key? key, required this.operatingSystem})
|
const VersionSelection({required this.operatingSystem, super.key});
|
||||||
: super(key: key);
|
|
||||||
|
|
||||||
final OperatingSystem operatingSystem;
|
final OperatingSystem operatingSystem;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,10 +3,10 @@ import 'package:gettext_i18n/gettext_i18n.dart';
|
||||||
|
|
||||||
class CancelDismissButton extends StatelessWidget {
|
class CancelDismissButton extends StatelessWidget {
|
||||||
const CancelDismissButton({
|
const CancelDismissButton({
|
||||||
Key? key,
|
|
||||||
required this.downloadFinished,
|
required this.downloadFinished,
|
||||||
required this.onCancel,
|
required this.onCancel,
|
||||||
}) : super(key: key);
|
super.key,
|
||||||
|
});
|
||||||
|
|
||||||
final bool downloadFinished;
|
final bool downloadFinished;
|
||||||
final VoidCallback onCancel;
|
final VoidCallback onCancel;
|
||||||
|
|
|
||||||
|
|
@ -2,12 +2,12 @@ import 'package:flutter/material.dart';
|
||||||
import 'package:gettext_i18n/gettext_i18n.dart';
|
import 'package:gettext_i18n/gettext_i18n.dart';
|
||||||
|
|
||||||
class DownloadLabel extends StatelessWidget {
|
class DownloadLabel extends StatelessWidget {
|
||||||
const DownloadLabel(
|
const DownloadLabel({
|
||||||
{Key? key,
|
required this.downloadFinished,
|
||||||
required this.downloadFinished,
|
required this.data,
|
||||||
required this.data,
|
required this.downloader,
|
||||||
required this.downloader})
|
super.key,
|
||||||
: super(key: key);
|
});
|
||||||
|
|
||||||
final bool downloadFinished;
|
final bool downloadFinished;
|
||||||
final double? data;
|
final double? data;
|
||||||
|
|
|
||||||
|
|
@ -2,10 +2,10 @@ import 'package:flutter/material.dart';
|
||||||
|
|
||||||
class DownloadProgressBar extends StatelessWidget {
|
class DownloadProgressBar extends StatelessWidget {
|
||||||
const DownloadProgressBar({
|
const DownloadProgressBar({
|
||||||
Key? key,
|
|
||||||
required this.downloadFinished,
|
required this.downloadFinished,
|
||||||
required this.data,
|
required this.data,
|
||||||
}) : super(key: key);
|
super.key,
|
||||||
|
});
|
||||||
|
|
||||||
final bool downloadFinished;
|
final bool downloadFinished;
|
||||||
final double? data;
|
final double? data;
|
||||||
|
|
|
||||||
|
|
@ -8,9 +8,8 @@ import '../../globals.dart';
|
||||||
import '../../mixins/preferences_mixin.dart';
|
import '../../mixins/preferences_mixin.dart';
|
||||||
import '../home_page/home_page_button_group.dart';
|
import '../home_page/home_page_button_group.dart';
|
||||||
|
|
||||||
|
|
||||||
class DownloaderMenu extends StatefulWidget {
|
class DownloaderMenu extends StatefulWidget {
|
||||||
const DownloaderMenu({Key? key}) : super(key: key);
|
const DownloaderMenu({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<DownloaderMenu> createState() => _DownloaderMenuState();
|
State<DownloaderMenu> createState() => _DownloaderMenuState();
|
||||||
|
|
|
||||||
|
|
@ -2,11 +2,11 @@ import 'package:flutter/material.dart';
|
||||||
|
|
||||||
class DownloaderPageButton extends StatelessWidget {
|
class DownloaderPageButton extends StatelessWidget {
|
||||||
const DownloaderPageButton({
|
const DownloaderPageButton({
|
||||||
Key? key,
|
|
||||||
this.label,
|
this.label,
|
||||||
required this.text,
|
required this.text,
|
||||||
this.onPressed,
|
this.onPressed,
|
||||||
}) : super(key: key);
|
super.key,
|
||||||
|
});
|
||||||
|
|
||||||
final String? label;
|
final String? label;
|
||||||
final String text;
|
final String text;
|
||||||
|
|
|
||||||
|
|
@ -2,11 +2,11 @@ import 'package:flutter/material.dart';
|
||||||
|
|
||||||
class HomePageButton extends StatelessWidget {
|
class HomePageButton extends StatelessWidget {
|
||||||
const HomePageButton({
|
const HomePageButton({
|
||||||
Key? key,
|
|
||||||
this.label,
|
this.label,
|
||||||
required this.text,
|
required this.text,
|
||||||
this.onPressed,
|
this.onPressed,
|
||||||
}) : super(key: key);
|
super.key,
|
||||||
|
});
|
||||||
|
|
||||||
final String? label;
|
final String? label;
|
||||||
final String text;
|
final String text;
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,8 @@ import 'dart:io';
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:gettext_i18n/gettext_i18n.dart';
|
import 'package:gettext_i18n/gettext_i18n.dart';
|
||||||
|
import 'package:quickgui/src/globals.dart';
|
||||||
|
import 'package:quickgui/src/mixins/preferences_mixin.dart';
|
||||||
import 'package:tuple/tuple.dart';
|
import 'package:tuple/tuple.dart';
|
||||||
|
|
||||||
import '../../model/operating_system.dart';
|
import '../../model/operating_system.dart';
|
||||||
|
|
@ -13,23 +15,24 @@ import '../../pages/version_selection.dart';
|
||||||
import 'downloader_page_button.dart';
|
import 'downloader_page_button.dart';
|
||||||
|
|
||||||
class HomePageButtonGroup extends StatefulWidget {
|
class HomePageButtonGroup extends StatefulWidget {
|
||||||
const HomePageButtonGroup({Key? key}) : super(key: key);
|
const HomePageButtonGroup({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<HomePageButtonGroup> createState() => _HomePageButtonGroupState();
|
State<HomePageButtonGroup> createState() => _HomePageButtonGroupState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _HomePageButtonGroupState extends State<HomePageButtonGroup> {
|
class _HomePageButtonGroupState extends State<HomePageButtonGroup>
|
||||||
|
with PreferencesMixin {
|
||||||
OperatingSystem? _selectedOperatingSystem;
|
OperatingSystem? _selectedOperatingSystem;
|
||||||
Version? _selectedVersion;
|
Version? _selectedVersion;
|
||||||
Option? _selectedOption;
|
Option? _selectedOption;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
var _versionButtonLabel =
|
var versionButtonLabel =
|
||||||
_selectedVersion?.version ?? context.t('Select...');
|
_selectedVersion?.version ?? context.t('Select...');
|
||||||
if (_selectedOption?.option.isNotEmpty ?? false) {
|
if (_selectedOption?.option.isNotEmpty ?? false) {
|
||||||
_versionButtonLabel = "$_versionButtonLabel (${_selectedOption!.option})";
|
versionButtonLabel = "$versionButtonLabel (${_selectedOption!.option})";
|
||||||
}
|
}
|
||||||
return Row(
|
return Row(
|
||||||
children: [
|
children: [
|
||||||
|
|
@ -60,7 +63,7 @@ class _HomePageButtonGroupState extends State<HomePageButtonGroup> {
|
||||||
),
|
),
|
||||||
DownloaderPageButton(
|
DownloaderPageButton(
|
||||||
label: context.t('Version'),
|
label: context.t('Version'),
|
||||||
text: _versionButtonLabel, //_selectedVersion?.version ?? 'Select...',
|
text: versionButtonLabel, //_selectedVersion?.version ?? 'Select...',
|
||||||
onPressed: (_selectedOperatingSystem != null)
|
onPressed: (_selectedOperatingSystem != null)
|
||||||
? () {
|
? () {
|
||||||
Navigator.of(context)
|
Navigator.of(context)
|
||||||
|
|
@ -85,16 +88,50 @@ class _HomePageButtonGroupState extends State<HomePageButtonGroup> {
|
||||||
text: context.t('Download'),
|
text: context.t('Download'),
|
||||||
onPressed: (_selectedVersion == null)
|
onPressed: (_selectedVersion == null)
|
||||||
? null
|
? null
|
||||||
: () {
|
: () async {
|
||||||
Navigator.of(context).push(
|
final workingDirectory =
|
||||||
MaterialPageRoute(
|
await getPreference<String>(prefWorkingDirectory);
|
||||||
builder: (context) => Downloader(
|
final tmpFile = File("$workingDirectory/modecheck.tmp");
|
||||||
operatingSystem: _selectedOperatingSystem!,
|
if (tmpFile.existsSync()) {
|
||||||
version: _selectedVersion!,
|
tmpFile.deleteSync();
|
||||||
option: _selectedOption,
|
}
|
||||||
|
try {
|
||||||
|
tmpFile.createSync();
|
||||||
|
} catch (e) {
|
||||||
|
// Do nothing
|
||||||
|
}
|
||||||
|
if (tmpFile.existsSync()) {
|
||||||
|
tmpFile.deleteSync();
|
||||||
|
|
||||||
|
Navigator.of(context).push(
|
||||||
|
MaterialPageRoute(
|
||||||
|
builder: (context) => Downloader(
|
||||||
|
operatingSystem: _selectedOperatingSystem!,
|
||||||
|
version: _selectedVersion!,
|
||||||
|
option: _selectedOption,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
);
|
||||||
);
|
} else {
|
||||||
|
showDialog(
|
||||||
|
context: context,
|
||||||
|
builder: (context) => AlertDialog(
|
||||||
|
title: Text(context.t('Error')),
|
||||||
|
content: Text(
|
||||||
|
context.t(
|
||||||
|
'Could not write to the working directory. Please check the permissions.'),
|
||||||
|
),
|
||||||
|
actions: [
|
||||||
|
TextButton(
|
||||||
|
onPressed: () {
|
||||||
|
Navigator.of(context).pop();
|
||||||
|
},
|
||||||
|
child: Text(context.t('OK')),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,7 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
class Logo extends StatelessWidget {
|
class Logo extends StatelessWidget {
|
||||||
const Logo({
|
const Logo({super.key});
|
||||||
Key? key,
|
|
||||||
}) : super(key: key);
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ import '../../pages/manager.dart';
|
||||||
import '../home_page/home_page_button.dart';
|
import '../home_page/home_page_button.dart';
|
||||||
|
|
||||||
class MainMenu extends StatelessWidget {
|
class MainMenu extends StatelessWidget {
|
||||||
const MainMenu({Key? key}) : super(key: key);
|
const MainMenu({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ import '../mixins/preferences_mixin.dart';
|
||||||
import '../model/app_settings.dart';
|
import '../model/app_settings.dart';
|
||||||
|
|
||||||
class LeftMenu extends StatefulWidget {
|
class LeftMenu extends StatefulWidget {
|
||||||
const LeftMenu({Key? key}) : super(key: key);
|
const LeftMenu({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<LeftMenu> createState() => _LeftMenuState();
|
State<LeftMenu> createState() => _LeftMenuState();
|
||||||
|
|
@ -22,9 +22,10 @@ class _LeftMenuState extends State<LeftMenu> with PreferencesMixin {
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
|
fetchQuickemuVersion();
|
||||||
_dropdownMenuItems = supportedLocales
|
_dropdownMenuItems = supportedLocales
|
||||||
.map((e) => DropdownMenuItem(child: Text(e), value: e))
|
.map((e) => DropdownMenuItem(value: e, child: Text(e)))
|
||||||
.toList();
|
.toList();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|
@ -42,15 +43,47 @@ class _LeftMenuState extends State<LeftMenu> with PreferencesMixin {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
var _version = AppVersion.packageInfo!.version;
|
var version = AppVersion.packageInfo!.version;
|
||||||
return Consumer<AppSettings>(
|
return Consumer<AppSettings>(
|
||||||
builder: (context, appSettings, _) {
|
builder: (context, appSettings, _) {
|
||||||
return Drawer(
|
return Drawer(
|
||||||
child: ListView(
|
child: ListView(
|
||||||
children: [
|
children: [
|
||||||
ListTile(
|
Padding(
|
||||||
title: Text("Quickgui $_version",
|
// Minimal bottom padding
|
||||||
style: const TextStyle(fontSize: 24.0, fontWeight: FontWeight.bold)),
|
padding: const EdgeInsets.only(bottom: 0)
|
||||||
|
.add(const EdgeInsets.symmetric(horizontal: 16)),
|
||||||
|
child: Container(
|
||||||
|
padding: const EdgeInsets.symmetric(vertical: 4.0),
|
||||||
|
child: Text("Quickgui $version",
|
||||||
|
style: const TextStyle(
|
||||||
|
fontSize: 24.0, fontWeight: FontWeight.bold)),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
FutureBuilder<String>(
|
||||||
|
future: fetchQuickemuVersion(),
|
||||||
|
builder:
|
||||||
|
(BuildContext context, AsyncSnapshot<String> snapshot) {
|
||||||
|
if (snapshot.connectionState == ConnectionState.waiting) {
|
||||||
|
return const CircularProgressIndicator(); // or some other widget while waiting
|
||||||
|
} else {
|
||||||
|
String poweredByText =
|
||||||
|
"${context.t('Powered by')} Quickemu";
|
||||||
|
if (snapshot.hasData) {
|
||||||
|
poweredByText += " ${snapshot.data}";
|
||||||
|
}
|
||||||
|
return Padding(
|
||||||
|
// Minimal top padding
|
||||||
|
padding: const EdgeInsets.only(top: 0)
|
||||||
|
.add(const EdgeInsets.symmetric(horizontal: 16)),
|
||||||
|
child: Container(
|
||||||
|
child: Text(poweredByText,
|
||||||
|
style: const TextStyle(
|
||||||
|
fontSize: 12.0, fontWeight: FontWeight.bold)),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
},
|
||||||
),
|
),
|
||||||
Container(
|
Container(
|
||||||
height: 4.0,
|
height: 4.0,
|
||||||
|
|
@ -59,7 +92,8 @@ class _LeftMenuState extends State<LeftMenu> with PreferencesMixin {
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 16),
|
padding: const EdgeInsets.symmetric(horizontal: 16),
|
||||||
child: Row(
|
child: Row(
|
||||||
children: [
|
children: [
|
||||||
Text(context.t('Use dark mode'),
|
Text(
|
||||||
|
context.t('Use dark mode'),
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: Colors.grey[300],
|
color: Colors.grey[300],
|
||||||
),
|
),
|
||||||
|
|
@ -68,22 +102,22 @@ class _LeftMenuState extends State<LeftMenu> with PreferencesMixin {
|
||||||
child: Container(),
|
child: Container(),
|
||||||
),
|
),
|
||||||
Switch(
|
Switch(
|
||||||
value: Theme.of(context).colorScheme.brightness == Brightness.dark,
|
value: Theme.of(context).colorScheme.brightness ==
|
||||||
onChanged: null,
|
Brightness.dark,
|
||||||
activeColor: Colors.grey[300],
|
activeColor: Colors.black26,
|
||||||
activeTrackColor: Colors.grey[300],
|
activeTrackColor: Theme.of(context).colorScheme.primary,
|
||||||
inactiveThumbColor: Colors.grey[300],
|
inactiveThumbColor: Colors.grey[500],
|
||||||
inactiveTrackColor: Colors.grey[300],
|
inactiveTrackColor: Colors.grey[300],
|
||||||
/*
|
|
||||||
onChanged: (value) {
|
onChanged: (value) {
|
||||||
appSettings.useDarkMode = value;
|
appSettings.useDarkMode = value;
|
||||||
savePreference(prefThemeMode, value);
|
savePreference(prefThemeMode, value);
|
||||||
},
|
},
|
||||||
activeColor: Colors.white,
|
// activeColor: Colors.white,
|
||||||
activeTrackColor: Colors.black26,
|
// activeTrackColor: Colors.black26,
|
||||||
inactiveThumbColor: Theme.of(context).colorScheme.onPrimary,
|
// inactiveThumbColor:
|
||||||
inactiveTrackColor: Theme.of(context).colorScheme.primary,
|
// Theme.of(context).colorScheme.onPrimary,
|
||||||
*/
|
// inactiveTrackColor: Theme.of(context).colorScheme.primary,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|
@ -113,6 +147,42 @@ class _LeftMenuState extends State<LeftMenu> with PreferencesMixin {
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
Container(
|
||||||
|
height: 32.0,
|
||||||
|
),
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 16),
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
RichText(
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
text: TextSpan(
|
||||||
|
style: DefaultTextStyle.of(context).style,
|
||||||
|
children: const <TextSpan>[
|
||||||
|
TextSpan(
|
||||||
|
text: 'Authors\n',
|
||||||
|
style: TextStyle(fontWeight: FontWeight.bold)),
|
||||||
|
TextSpan(text: 'Yannick Mauray\n'),
|
||||||
|
TextSpan(text: 'Mark Johnson\n'),
|
||||||
|
TextSpan(text: 'Martin Wimpress\n'),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
RichText(
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
text: TextSpan(
|
||||||
|
style: DefaultTextStyle.of(context).style,
|
||||||
|
children: const <TextSpan>[
|
||||||
|
TextSpan(text: '© 2021 - 2024\n'),
|
||||||
|
TextSpan(
|
||||||
|
text: 'Quickemu Project\n',
|
||||||
|
style: TextStyle(fontWeight: FontWeight.bold)),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ static void my_application_activate(GApplication* application) {
|
||||||
gtk_window_set_title(window, "quickgui");
|
gtk_window_set_title(window, "quickgui");
|
||||||
}
|
}
|
||||||
|
|
||||||
gtk_window_set_default_size(window, 692, 580);
|
gtk_window_set_default_size(window, 800, 720);
|
||||||
gtk_widget_show(GTK_WIDGET(window));
|
gtk_widget_show(GTK_WIDGET(window));
|
||||||
|
|
||||||
g_autoptr(FlDartProject) project = fl_dart_project_new();
|
g_autoptr(FlDartProject) project = fl_dart_project_new();
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
# Flutter-related
|
||||||
|
**/Flutter/ephemeral/
|
||||||
|
**/Pods/
|
||||||
|
|
||||||
|
# Xcode-related
|
||||||
|
**/dgph
|
||||||
|
**/xcuserdata/
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
|
||||||
|
#include "ephemeral/Flutter-Generated.xcconfig"
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
|
||||||
|
#include "ephemeral/Flutter-Generated.xcconfig"
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
//
|
||||||
|
// Generated file. Do not edit.
|
||||||
|
//
|
||||||
|
|
||||||
|
import FlutterMacOS
|
||||||
|
import Foundation
|
||||||
|
|
||||||
|
import package_info_plus
|
||||||
|
import shared_preferences_foundation
|
||||||
|
import url_launcher_macos
|
||||||
|
import window_size
|
||||||
|
|
||||||
|
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
|
||||||
|
FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin"))
|
||||||
|
SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin"))
|
||||||
|
UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin"))
|
||||||
|
WindowSizePlugin.register(with: registry.registrar(forPlugin: "WindowSizePlugin"))
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,43 @@
|
||||||
|
platform :osx, '10.14'
|
||||||
|
|
||||||
|
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
|
||||||
|
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
|
||||||
|
|
||||||
|
project 'Runner', {
|
||||||
|
'Debug' => :debug,
|
||||||
|
'Profile' => :release,
|
||||||
|
'Release' => :release,
|
||||||
|
}
|
||||||
|
|
||||||
|
def flutter_root
|
||||||
|
generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'ephemeral', 'Flutter-Generated.xcconfig'), __FILE__)
|
||||||
|
unless File.exist?(generated_xcode_build_settings_path)
|
||||||
|
raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure \"flutter pub get\" is executed first"
|
||||||
|
end
|
||||||
|
|
||||||
|
File.foreach(generated_xcode_build_settings_path) do |line|
|
||||||
|
matches = line.match(/FLUTTER_ROOT\=(.*)/)
|
||||||
|
return matches[1].strip if matches
|
||||||
|
end
|
||||||
|
raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Flutter-Generated.xcconfig, then run \"flutter pub get\""
|
||||||
|
end
|
||||||
|
|
||||||
|
require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
|
||||||
|
|
||||||
|
flutter_macos_podfile_setup
|
||||||
|
|
||||||
|
target 'Runner' do
|
||||||
|
use_frameworks!
|
||||||
|
use_modular_headers!
|
||||||
|
|
||||||
|
flutter_install_all_macos_pods File.dirname(File.realpath(__FILE__))
|
||||||
|
target 'RunnerTests' do
|
||||||
|
inherit! :search_paths
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
post_install do |installer|
|
||||||
|
installer.pods_project.targets.each do |target|
|
||||||
|
flutter_additional_macos_build_settings(target)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
@ -0,0 +1,41 @@
|
||||||
|
PODS:
|
||||||
|
- FlutterMacOS (1.0.0)
|
||||||
|
- package_info_plus (0.0.1):
|
||||||
|
- FlutterMacOS
|
||||||
|
- shared_preferences_foundation (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- FlutterMacOS
|
||||||
|
- url_launcher_macos (0.0.1):
|
||||||
|
- FlutterMacOS
|
||||||
|
- window_size (0.0.2):
|
||||||
|
- FlutterMacOS
|
||||||
|
|
||||||
|
DEPENDENCIES:
|
||||||
|
- FlutterMacOS (from `Flutter/ephemeral`)
|
||||||
|
- package_info_plus (from `Flutter/ephemeral/.symlinks/plugins/package_info_plus/macos`)
|
||||||
|
- shared_preferences_foundation (from `Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/darwin`)
|
||||||
|
- url_launcher_macos (from `Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos`)
|
||||||
|
- window_size (from `Flutter/ephemeral/.symlinks/plugins/window_size/macos`)
|
||||||
|
|
||||||
|
EXTERNAL SOURCES:
|
||||||
|
FlutterMacOS:
|
||||||
|
:path: Flutter/ephemeral
|
||||||
|
package_info_plus:
|
||||||
|
:path: Flutter/ephemeral/.symlinks/plugins/package_info_plus/macos
|
||||||
|
shared_preferences_foundation:
|
||||||
|
:path: Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/darwin
|
||||||
|
url_launcher_macos:
|
||||||
|
:path: Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos
|
||||||
|
window_size:
|
||||||
|
:path: Flutter/ephemeral/.symlinks/plugins/window_size/macos
|
||||||
|
|
||||||
|
SPEC CHECKSUMS:
|
||||||
|
FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24
|
||||||
|
package_info_plus: fa739dd842b393193c5ca93c26798dff6e3d0e0c
|
||||||
|
shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78
|
||||||
|
url_launcher_macos: 5f437abeda8c85500ceb03f5c1938a8c5a705399
|
||||||
|
window_size: 339dafa0b27a95a62a843042038fa6c3c48de195
|
||||||
|
|
||||||
|
PODFILE CHECKSUM: 236401fc2c932af29a9fcf0e97baeeb2d750d367
|
||||||
|
|
||||||
|
COCOAPODS: 1.15.2
|
||||||
|
|
@ -0,0 +1,821 @@
|
||||||
|
// !$*UTF8*$!
|
||||||
|
{
|
||||||
|
archiveVersion = 1;
|
||||||
|
classes = {
|
||||||
|
};
|
||||||
|
objectVersion = 54;
|
||||||
|
objects = {
|
||||||
|
|
||||||
|
/* Begin PBXAggregateTarget section */
|
||||||
|
33CC111A2044C6BA0003C045 /* Flutter Assemble */ = {
|
||||||
|
isa = PBXAggregateTarget;
|
||||||
|
buildConfigurationList = 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */;
|
||||||
|
buildPhases = (
|
||||||
|
33CC111E2044C6BF0003C045 /* ShellScript */,
|
||||||
|
);
|
||||||
|
dependencies = (
|
||||||
|
);
|
||||||
|
name = "Flutter Assemble";
|
||||||
|
productName = FLX;
|
||||||
|
};
|
||||||
|
/* End PBXAggregateTarget section */
|
||||||
|
|
||||||
|
/* Begin PBXBuildFile section */
|
||||||
|
1BE543F3FBBB4C06DEC7A142 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D7B8DA22B0A54BBE9BCBC89F /* Pods_Runner.framework */; };
|
||||||
|
331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C80D7294CF71000263BE5 /* RunnerTests.swift */; };
|
||||||
|
335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; };
|
||||||
|
33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; };
|
||||||
|
33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; };
|
||||||
|
33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; };
|
||||||
|
33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; };
|
||||||
|
556376D73D985479212CC116 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5BA7153C071C61C298B27A8E /* Pods_RunnerTests.framework */; };
|
||||||
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
|
/* Begin PBXContainerItemProxy section */
|
||||||
|
331C80D9294CF71000263BE5 /* PBXContainerItemProxy */ = {
|
||||||
|
isa = PBXContainerItemProxy;
|
||||||
|
containerPortal = 33CC10E52044A3C60003C045 /* Project object */;
|
||||||
|
proxyType = 1;
|
||||||
|
remoteGlobalIDString = 33CC10EC2044A3C60003C045;
|
||||||
|
remoteInfo = Runner;
|
||||||
|
};
|
||||||
|
33CC111F2044C79F0003C045 /* PBXContainerItemProxy */ = {
|
||||||
|
isa = PBXContainerItemProxy;
|
||||||
|
containerPortal = 33CC10E52044A3C60003C045 /* Project object */;
|
||||||
|
proxyType = 1;
|
||||||
|
remoteGlobalIDString = 33CC111A2044C6BA0003C045;
|
||||||
|
remoteInfo = FLX;
|
||||||
|
};
|
||||||
|
/* End PBXContainerItemProxy section */
|
||||||
|
|
||||||
|
/* Begin PBXCopyFilesBuildPhase section */
|
||||||
|
33CC110E2044A8840003C045 /* Bundle Framework */ = {
|
||||||
|
isa = PBXCopyFilesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
dstPath = "";
|
||||||
|
dstSubfolderSpec = 10;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
name = "Bundle Framework";
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
/* End PBXCopyFilesBuildPhase section */
|
||||||
|
|
||||||
|
/* Begin PBXFileReference section */
|
||||||
|
19D1D10CEE112AEFE7E1767A /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = "<group>"; };
|
||||||
|
1BE3B465CD1572F2B2D20FD9 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
|
||||||
|
331C80D5294CF71000263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
|
331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = "<group>"; };
|
||||||
|
333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = "<group>"; };
|
||||||
|
335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = "<group>"; };
|
||||||
|
33CC10ED2044A3C60003C045 /* quickgui.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = quickgui.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
|
33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||||
|
33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = "<group>"; };
|
||||||
|
33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = "<group>"; };
|
||||||
|
33CC10F72044A3C60003C045 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Runner/Info.plist; sourceTree = "<group>"; };
|
||||||
|
33CC11122044BFA00003C045 /* MainFlutterWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainFlutterWindow.swift; sourceTree = "<group>"; };
|
||||||
|
33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = "<group>"; };
|
||||||
|
33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = "<group>"; };
|
||||||
|
33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = "<group>"; };
|
||||||
|
33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = "<group>"; };
|
||||||
|
33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = "<group>"; };
|
||||||
|
33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = "<group>"; };
|
||||||
|
5BA7153C071C61C298B27A8E /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
|
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = "<group>"; };
|
||||||
|
950FEF9E0622AA1DB23932BB /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = "<group>"; };
|
||||||
|
95A2808058381DC2EEC275FC /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
|
||||||
|
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = "<group>"; };
|
||||||
|
C0B7021831AC0B71E4AF216A /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
|
||||||
|
D7B8DA22B0A54BBE9BCBC89F /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
|
D7FA05E1CC5B19461025C6AD /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = "<group>"; };
|
||||||
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
|
331C80D2294CF70F00263BE5 /* Frameworks */ = {
|
||||||
|
isa = PBXFrameworksBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
556376D73D985479212CC116 /* Pods_RunnerTests.framework in Frameworks */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
33CC10EA2044A3C60003C045 /* Frameworks */ = {
|
||||||
|
isa = PBXFrameworksBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
1BE543F3FBBB4C06DEC7A142 /* Pods_Runner.framework in Frameworks */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
/* End PBXFrameworksBuildPhase section */
|
||||||
|
|
||||||
|
/* Begin PBXGroup section */
|
||||||
|
331C80D6294CF71000263BE5 /* RunnerTests */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
331C80D7294CF71000263BE5 /* RunnerTests.swift */,
|
||||||
|
);
|
||||||
|
path = RunnerTests;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
33BA886A226E78AF003329D5 /* Configs */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
33E5194F232828860026EE4D /* AppInfo.xcconfig */,
|
||||||
|
9740EEB21CF90195004384FC /* Debug.xcconfig */,
|
||||||
|
7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
|
||||||
|
333000ED22D3DE5D00554162 /* Warnings.xcconfig */,
|
||||||
|
);
|
||||||
|
path = Configs;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
33CC10E42044A3C60003C045 = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
33FAB671232836740065AC1E /* Runner */,
|
||||||
|
33CEB47122A05771004F2AC0 /* Flutter */,
|
||||||
|
331C80D6294CF71000263BE5 /* RunnerTests */,
|
||||||
|
33CC10EE2044A3C60003C045 /* Products */,
|
||||||
|
D73912EC22F37F3D000D13A0 /* Frameworks */,
|
||||||
|
93FB5BDFAA139FEF4CABA9BA /* Pods */,
|
||||||
|
);
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
33CC10EE2044A3C60003C045 /* Products */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
33CC10ED2044A3C60003C045 /* quickgui.app */,
|
||||||
|
331C80D5294CF71000263BE5 /* RunnerTests.xctest */,
|
||||||
|
);
|
||||||
|
name = Products;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
33CC11242044D66E0003C045 /* Resources */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
33CC10F22044A3C60003C045 /* Assets.xcassets */,
|
||||||
|
33CC10F42044A3C60003C045 /* MainMenu.xib */,
|
||||||
|
33CC10F72044A3C60003C045 /* Info.plist */,
|
||||||
|
);
|
||||||
|
name = Resources;
|
||||||
|
path = ..;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
33CEB47122A05771004F2AC0 /* Flutter */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */,
|
||||||
|
33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */,
|
||||||
|
33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */,
|
||||||
|
33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */,
|
||||||
|
);
|
||||||
|
path = Flutter;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
33FAB671232836740065AC1E /* Runner */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
33CC10F02044A3C60003C045 /* AppDelegate.swift */,
|
||||||
|
33CC11122044BFA00003C045 /* MainFlutterWindow.swift */,
|
||||||
|
33E51913231747F40026EE4D /* DebugProfile.entitlements */,
|
||||||
|
33E51914231749380026EE4D /* Release.entitlements */,
|
||||||
|
33CC11242044D66E0003C045 /* Resources */,
|
||||||
|
33BA886A226E78AF003329D5 /* Configs */,
|
||||||
|
);
|
||||||
|
path = Runner;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
93FB5BDFAA139FEF4CABA9BA /* Pods */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
C0B7021831AC0B71E4AF216A /* Pods-Runner.debug.xcconfig */,
|
||||||
|
1BE3B465CD1572F2B2D20FD9 /* Pods-Runner.release.xcconfig */,
|
||||||
|
95A2808058381DC2EEC275FC /* Pods-Runner.profile.xcconfig */,
|
||||||
|
950FEF9E0622AA1DB23932BB /* Pods-RunnerTests.debug.xcconfig */,
|
||||||
|
19D1D10CEE112AEFE7E1767A /* Pods-RunnerTests.release.xcconfig */,
|
||||||
|
D7FA05E1CC5B19461025C6AD /* Pods-RunnerTests.profile.xcconfig */,
|
||||||
|
);
|
||||||
|
path = Pods;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
D73912EC22F37F3D000D13A0 /* Frameworks */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
D7B8DA22B0A54BBE9BCBC89F /* Pods_Runner.framework */,
|
||||||
|
5BA7153C071C61C298B27A8E /* Pods_RunnerTests.framework */,
|
||||||
|
);
|
||||||
|
name = Frameworks;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
/* End PBXGroup section */
|
||||||
|
|
||||||
|
/* Begin PBXNativeTarget section */
|
||||||
|
331C80D4294CF70F00263BE5 /* RunnerTests */ = {
|
||||||
|
isa = PBXNativeTarget;
|
||||||
|
buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */;
|
||||||
|
buildPhases = (
|
||||||
|
40EE0DAE63B1E96400157795 /* [CP] Check Pods Manifest.lock */,
|
||||||
|
331C80D1294CF70F00263BE5 /* Sources */,
|
||||||
|
331C80D2294CF70F00263BE5 /* Frameworks */,
|
||||||
|
331C80D3294CF70F00263BE5 /* Resources */,
|
||||||
|
);
|
||||||
|
buildRules = (
|
||||||
|
);
|
||||||
|
dependencies = (
|
||||||
|
331C80DA294CF71000263BE5 /* PBXTargetDependency */,
|
||||||
|
);
|
||||||
|
name = RunnerTests;
|
||||||
|
productName = RunnerTests;
|
||||||
|
productReference = 331C80D5294CF71000263BE5 /* RunnerTests.xctest */;
|
||||||
|
productType = "com.apple.product-type.bundle.unit-test";
|
||||||
|
};
|
||||||
|
33CC10EC2044A3C60003C045 /* Runner */ = {
|
||||||
|
isa = PBXNativeTarget;
|
||||||
|
buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */;
|
||||||
|
buildPhases = (
|
||||||
|
D70F1D8E1864647EE1620381 /* [CP] Check Pods Manifest.lock */,
|
||||||
|
33CC10E92044A3C60003C045 /* Sources */,
|
||||||
|
33CC10EA2044A3C60003C045 /* Frameworks */,
|
||||||
|
33CC10EB2044A3C60003C045 /* Resources */,
|
||||||
|
33CC110E2044A8840003C045 /* Bundle Framework */,
|
||||||
|
3399D490228B24CF009A79C7 /* ShellScript */,
|
||||||
|
3911F4199D1C6D839AC39703 /* [CP] Embed Pods Frameworks */,
|
||||||
|
);
|
||||||
|
buildRules = (
|
||||||
|
);
|
||||||
|
dependencies = (
|
||||||
|
33CC11202044C79F0003C045 /* PBXTargetDependency */,
|
||||||
|
);
|
||||||
|
name = Runner;
|
||||||
|
productName = Runner;
|
||||||
|
productReference = 33CC10ED2044A3C60003C045 /* quickgui.app */;
|
||||||
|
productType = "com.apple.product-type.application";
|
||||||
|
};
|
||||||
|
/* End PBXNativeTarget section */
|
||||||
|
|
||||||
|
/* Begin PBXProject section */
|
||||||
|
33CC10E52044A3C60003C045 /* Project object */ = {
|
||||||
|
isa = PBXProject;
|
||||||
|
attributes = {
|
||||||
|
BuildIndependentTargetsInParallel = YES;
|
||||||
|
LastSwiftUpdateCheck = 0920;
|
||||||
|
LastUpgradeCheck = 1510;
|
||||||
|
ORGANIZATIONNAME = "";
|
||||||
|
TargetAttributes = {
|
||||||
|
331C80D4294CF70F00263BE5 = {
|
||||||
|
CreatedOnToolsVersion = 14.0;
|
||||||
|
TestTargetID = 33CC10EC2044A3C60003C045;
|
||||||
|
};
|
||||||
|
33CC10EC2044A3C60003C045 = {
|
||||||
|
CreatedOnToolsVersion = 9.2;
|
||||||
|
LastSwiftMigration = 1100;
|
||||||
|
ProvisioningStyle = Automatic;
|
||||||
|
SystemCapabilities = {
|
||||||
|
com.apple.Sandbox = {
|
||||||
|
enabled = 1;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
33CC111A2044C6BA0003C045 = {
|
||||||
|
CreatedOnToolsVersion = 9.2;
|
||||||
|
ProvisioningStyle = Manual;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
buildConfigurationList = 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */;
|
||||||
|
compatibilityVersion = "Xcode 9.3";
|
||||||
|
developmentRegion = en;
|
||||||
|
hasScannedForEncodings = 0;
|
||||||
|
knownRegions = (
|
||||||
|
en,
|
||||||
|
Base,
|
||||||
|
);
|
||||||
|
mainGroup = 33CC10E42044A3C60003C045;
|
||||||
|
productRefGroup = 33CC10EE2044A3C60003C045 /* Products */;
|
||||||
|
projectDirPath = "";
|
||||||
|
projectRoot = "";
|
||||||
|
targets = (
|
||||||
|
33CC10EC2044A3C60003C045 /* Runner */,
|
||||||
|
331C80D4294CF70F00263BE5 /* RunnerTests */,
|
||||||
|
33CC111A2044C6BA0003C045 /* Flutter Assemble */,
|
||||||
|
);
|
||||||
|
};
|
||||||
|
/* End PBXProject section */
|
||||||
|
|
||||||
|
/* Begin PBXResourcesBuildPhase section */
|
||||||
|
331C80D3294CF70F00263BE5 /* Resources */ = {
|
||||||
|
isa = PBXResourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
33CC10EB2044A3C60003C045 /* Resources */ = {
|
||||||
|
isa = PBXResourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */,
|
||||||
|
33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
/* End PBXResourcesBuildPhase section */
|
||||||
|
|
||||||
|
/* Begin PBXShellScriptBuildPhase section */
|
||||||
|
3399D490228B24CF009A79C7 /* ShellScript */ = {
|
||||||
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
alwaysOutOfDate = 1;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
inputFileListPaths = (
|
||||||
|
);
|
||||||
|
inputPaths = (
|
||||||
|
);
|
||||||
|
outputFileListPaths = (
|
||||||
|
);
|
||||||
|
outputPaths = (
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
shellPath = /bin/sh;
|
||||||
|
shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n";
|
||||||
|
};
|
||||||
|
33CC111E2044C6BF0003C045 /* ShellScript */ = {
|
||||||
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
inputFileListPaths = (
|
||||||
|
Flutter/ephemeral/FlutterInputs.xcfilelist,
|
||||||
|
);
|
||||||
|
inputPaths = (
|
||||||
|
Flutter/ephemeral/tripwire,
|
||||||
|
);
|
||||||
|
outputFileListPaths = (
|
||||||
|
Flutter/ephemeral/FlutterOutputs.xcfilelist,
|
||||||
|
);
|
||||||
|
outputPaths = (
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
shellPath = /bin/sh;
|
||||||
|
shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire";
|
||||||
|
};
|
||||||
|
3911F4199D1C6D839AC39703 /* [CP] Embed Pods Frameworks */ = {
|
||||||
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
inputFileListPaths = (
|
||||||
|
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
|
||||||
|
);
|
||||||
|
name = "[CP] Embed Pods Frameworks";
|
||||||
|
outputFileListPaths = (
|
||||||
|
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
shellPath = /bin/sh;
|
||||||
|
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
|
||||||
|
showEnvVarsInLog = 0;
|
||||||
|
};
|
||||||
|
40EE0DAE63B1E96400157795 /* [CP] Check Pods Manifest.lock */ = {
|
||||||
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
inputFileListPaths = (
|
||||||
|
);
|
||||||
|
inputPaths = (
|
||||||
|
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
||||||
|
"${PODS_ROOT}/Manifest.lock",
|
||||||
|
);
|
||||||
|
name = "[CP] Check Pods Manifest.lock";
|
||||||
|
outputFileListPaths = (
|
||||||
|
);
|
||||||
|
outputPaths = (
|
||||||
|
"$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt",
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
shellPath = /bin/sh;
|
||||||
|
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||||
|
showEnvVarsInLog = 0;
|
||||||
|
};
|
||||||
|
D70F1D8E1864647EE1620381 /* [CP] Check Pods Manifest.lock */ = {
|
||||||
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
inputFileListPaths = (
|
||||||
|
);
|
||||||
|
inputPaths = (
|
||||||
|
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
||||||
|
"${PODS_ROOT}/Manifest.lock",
|
||||||
|
);
|
||||||
|
name = "[CP] Check Pods Manifest.lock";
|
||||||
|
outputFileListPaths = (
|
||||||
|
);
|
||||||
|
outputPaths = (
|
||||||
|
"$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
shellPath = /bin/sh;
|
||||||
|
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||||
|
showEnvVarsInLog = 0;
|
||||||
|
};
|
||||||
|
/* End PBXShellScriptBuildPhase section */
|
||||||
|
|
||||||
|
/* Begin PBXSourcesBuildPhase section */
|
||||||
|
331C80D1294CF70F00263BE5 /* Sources */ = {
|
||||||
|
isa = PBXSourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
33CC10E92044A3C60003C045 /* Sources */ = {
|
||||||
|
isa = PBXSourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */,
|
||||||
|
33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */,
|
||||||
|
335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
/* End PBXSourcesBuildPhase section */
|
||||||
|
|
||||||
|
/* Begin PBXTargetDependency section */
|
||||||
|
331C80DA294CF71000263BE5 /* PBXTargetDependency */ = {
|
||||||
|
isa = PBXTargetDependency;
|
||||||
|
target = 33CC10EC2044A3C60003C045 /* Runner */;
|
||||||
|
targetProxy = 331C80D9294CF71000263BE5 /* PBXContainerItemProxy */;
|
||||||
|
};
|
||||||
|
33CC11202044C79F0003C045 /* PBXTargetDependency */ = {
|
||||||
|
isa = PBXTargetDependency;
|
||||||
|
target = 33CC111A2044C6BA0003C045 /* Flutter Assemble */;
|
||||||
|
targetProxy = 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */;
|
||||||
|
};
|
||||||
|
/* End PBXTargetDependency section */
|
||||||
|
|
||||||
|
/* Begin PBXVariantGroup section */
|
||||||
|
33CC10F42044A3C60003C045 /* MainMenu.xib */ = {
|
||||||
|
isa = PBXVariantGroup;
|
||||||
|
children = (
|
||||||
|
33CC10F52044A3C60003C045 /* Base */,
|
||||||
|
);
|
||||||
|
name = MainMenu.xib;
|
||||||
|
path = Runner;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
/* End PBXVariantGroup section */
|
||||||
|
|
||||||
|
/* Begin XCBuildConfiguration section */
|
||||||
|
331C80DB294CF71000263BE5 /* Debug */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
baseConfigurationReference = 950FEF9E0622AA1DB23932BB /* Pods-RunnerTests.debug.xcconfig */;
|
||||||
|
buildSettings = {
|
||||||
|
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||||
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
|
MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)";
|
||||||
|
MARKETING_VERSION = 1.0;
|
||||||
|
PRODUCT_BUNDLE_IDENTIFIER = "quickemu-project.quickgui.RunnerTests";
|
||||||
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
SWIFT_VERSION = 5.0;
|
||||||
|
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/quickgui.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/quickgui";
|
||||||
|
};
|
||||||
|
name = Debug;
|
||||||
|
};
|
||||||
|
331C80DC294CF71000263BE5 /* Release */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
baseConfigurationReference = 19D1D10CEE112AEFE7E1767A /* Pods-RunnerTests.release.xcconfig */;
|
||||||
|
buildSettings = {
|
||||||
|
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||||
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
|
MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)";
|
||||||
|
MARKETING_VERSION = 1.0;
|
||||||
|
PRODUCT_BUNDLE_IDENTIFIER = "quickemu-project.quickgui.RunnerTests";
|
||||||
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
SWIFT_VERSION = 5.0;
|
||||||
|
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/quickgui.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/quickgui";
|
||||||
|
};
|
||||||
|
name = Release;
|
||||||
|
};
|
||||||
|
331C80DD294CF71000263BE5 /* Profile */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
baseConfigurationReference = D7FA05E1CC5B19461025C6AD /* Pods-RunnerTests.profile.xcconfig */;
|
||||||
|
buildSettings = {
|
||||||
|
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||||
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
|
MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)";
|
||||||
|
MARKETING_VERSION = 1.0;
|
||||||
|
PRODUCT_BUNDLE_IDENTIFIER = "quickemu-project.quickgui.RunnerTests";
|
||||||
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
SWIFT_VERSION = 5.0;
|
||||||
|
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/quickgui.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/quickgui";
|
||||||
|
};
|
||||||
|
name = Profile;
|
||||||
|
};
|
||||||
|
338D0CE9231458BD00FA5F75 /* Profile */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
|
||||||
|
buildSettings = {
|
||||||
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
|
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
|
||||||
|
CLANG_ANALYZER_NONNULL = YES;
|
||||||
|
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||||
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||||
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
|
CLANG_ENABLE_MODULES = YES;
|
||||||
|
CLANG_ENABLE_OBJC_ARC = YES;
|
||||||
|
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||||
|
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||||
|
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||||
|
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||||
|
CLANG_WARN_EMPTY_BODY = YES;
|
||||||
|
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||||
|
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||||
|
CLANG_WARN_INT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||||
|
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||||
|
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||||
|
CODE_SIGN_IDENTITY = "-";
|
||||||
|
COPY_PHASE_STRIP = NO;
|
||||||
|
DEAD_CODE_STRIPPING = YES;
|
||||||
|
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||||
|
ENABLE_NS_ASSERTIONS = NO;
|
||||||
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
|
ENABLE_USER_SCRIPT_SANDBOXING = NO;
|
||||||
|
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||||
|
GCC_NO_COMMON_BLOCKS = YES;
|
||||||
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||||
|
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||||
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||||
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
|
MACOSX_DEPLOYMENT_TARGET = 10.14;
|
||||||
|
MTL_ENABLE_DEBUG_INFO = NO;
|
||||||
|
SDKROOT = macosx;
|
||||||
|
SWIFT_COMPILATION_MODE = wholemodule;
|
||||||
|
SWIFT_OPTIMIZATION_LEVEL = "-O";
|
||||||
|
};
|
||||||
|
name = Profile;
|
||||||
|
};
|
||||||
|
338D0CEA231458BD00FA5F75 /* Profile */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */;
|
||||||
|
buildSettings = {
|
||||||
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
|
CLANG_ENABLE_MODULES = YES;
|
||||||
|
CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements;
|
||||||
|
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "-";
|
||||||
|
CODE_SIGN_STYLE = Automatic;
|
||||||
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
|
DEVELOPMENT_TEAM = "";
|
||||||
|
INFOPLIST_FILE = Runner/Info.plist;
|
||||||
|
INFOPLIST_KEY_CFBundleDisplayName = quickgui;
|
||||||
|
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.developer-tools";
|
||||||
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
|
"$(inherited)",
|
||||||
|
"@executable_path/../Frameworks",
|
||||||
|
);
|
||||||
|
MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)";
|
||||||
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
|
SWIFT_VERSION = 5.0;
|
||||||
|
};
|
||||||
|
name = Profile;
|
||||||
|
};
|
||||||
|
338D0CEB231458BD00FA5F75 /* Profile */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
CODE_SIGN_STYLE = Manual;
|
||||||
|
MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)";
|
||||||
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
};
|
||||||
|
name = Profile;
|
||||||
|
};
|
||||||
|
33CC10F92044A3C60003C045 /* Debug */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
|
||||||
|
buildSettings = {
|
||||||
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
|
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
|
||||||
|
CLANG_ANALYZER_NONNULL = YES;
|
||||||
|
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||||
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||||
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
|
CLANG_ENABLE_MODULES = YES;
|
||||||
|
CLANG_ENABLE_OBJC_ARC = YES;
|
||||||
|
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||||
|
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||||
|
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||||
|
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||||
|
CLANG_WARN_EMPTY_BODY = YES;
|
||||||
|
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||||
|
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||||
|
CLANG_WARN_INT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||||
|
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||||
|
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||||
|
CODE_SIGN_IDENTITY = "-";
|
||||||
|
COPY_PHASE_STRIP = NO;
|
||||||
|
DEAD_CODE_STRIPPING = YES;
|
||||||
|
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||||
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
|
ENABLE_TESTABILITY = YES;
|
||||||
|
ENABLE_USER_SCRIPT_SANDBOXING = NO;
|
||||||
|
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||||
|
GCC_DYNAMIC_NO_PIC = NO;
|
||||||
|
GCC_NO_COMMON_BLOCKS = YES;
|
||||||
|
GCC_OPTIMIZATION_LEVEL = 0;
|
||||||
|
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||||
|
"DEBUG=1",
|
||||||
|
"$(inherited)",
|
||||||
|
);
|
||||||
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||||
|
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||||
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||||
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
|
MACOSX_DEPLOYMENT_TARGET = 10.14;
|
||||||
|
MTL_ENABLE_DEBUG_INFO = YES;
|
||||||
|
ONLY_ACTIVE_ARCH = YES;
|
||||||
|
SDKROOT = macosx;
|
||||||
|
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
||||||
|
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||||
|
};
|
||||||
|
name = Debug;
|
||||||
|
};
|
||||||
|
33CC10FA2044A3C60003C045 /* Release */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
|
||||||
|
buildSettings = {
|
||||||
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
|
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
|
||||||
|
CLANG_ANALYZER_NONNULL = YES;
|
||||||
|
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||||
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||||
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
|
CLANG_ENABLE_MODULES = YES;
|
||||||
|
CLANG_ENABLE_OBJC_ARC = YES;
|
||||||
|
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||||
|
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||||
|
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||||
|
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||||
|
CLANG_WARN_EMPTY_BODY = YES;
|
||||||
|
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||||
|
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||||
|
CLANG_WARN_INT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||||
|
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||||
|
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||||
|
CODE_SIGN_IDENTITY = "-";
|
||||||
|
COPY_PHASE_STRIP = NO;
|
||||||
|
DEAD_CODE_STRIPPING = YES;
|
||||||
|
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||||
|
ENABLE_NS_ASSERTIONS = NO;
|
||||||
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
|
ENABLE_USER_SCRIPT_SANDBOXING = NO;
|
||||||
|
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||||
|
GCC_NO_COMMON_BLOCKS = YES;
|
||||||
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||||
|
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||||
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||||
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
|
MACOSX_DEPLOYMENT_TARGET = 10.14;
|
||||||
|
MTL_ENABLE_DEBUG_INFO = NO;
|
||||||
|
SDKROOT = macosx;
|
||||||
|
SWIFT_COMPILATION_MODE = wholemodule;
|
||||||
|
SWIFT_OPTIMIZATION_LEVEL = "-O";
|
||||||
|
};
|
||||||
|
name = Release;
|
||||||
|
};
|
||||||
|
33CC10FC2044A3C60003C045 /* Debug */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */;
|
||||||
|
buildSettings = {
|
||||||
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
|
CLANG_ENABLE_MODULES = YES;
|
||||||
|
CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements;
|
||||||
|
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "-";
|
||||||
|
CODE_SIGN_STYLE = Automatic;
|
||||||
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
|
DEVELOPMENT_TEAM = "";
|
||||||
|
INFOPLIST_FILE = Runner/Info.plist;
|
||||||
|
INFOPLIST_KEY_CFBundleDisplayName = quickgui;
|
||||||
|
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.developer-tools";
|
||||||
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
|
"$(inherited)",
|
||||||
|
"@executable_path/../Frameworks",
|
||||||
|
);
|
||||||
|
MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)";
|
||||||
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
|
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||||
|
SWIFT_VERSION = 5.0;
|
||||||
|
};
|
||||||
|
name = Debug;
|
||||||
|
};
|
||||||
|
33CC10FD2044A3C60003C045 /* Release */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */;
|
||||||
|
buildSettings = {
|
||||||
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
|
CLANG_ENABLE_MODULES = YES;
|
||||||
|
CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements;
|
||||||
|
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "-";
|
||||||
|
CODE_SIGN_STYLE = Automatic;
|
||||||
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
|
DEVELOPMENT_TEAM = "";
|
||||||
|
INFOPLIST_FILE = Runner/Info.plist;
|
||||||
|
INFOPLIST_KEY_CFBundleDisplayName = quickgui;
|
||||||
|
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.developer-tools";
|
||||||
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
|
"$(inherited)",
|
||||||
|
"@executable_path/../Frameworks",
|
||||||
|
);
|
||||||
|
MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)";
|
||||||
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
|
SWIFT_VERSION = 5.0;
|
||||||
|
};
|
||||||
|
name = Release;
|
||||||
|
};
|
||||||
|
33CC111C2044C6BA0003C045 /* Debug */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
CODE_SIGN_STYLE = Manual;
|
||||||
|
MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)";
|
||||||
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
};
|
||||||
|
name = Debug;
|
||||||
|
};
|
||||||
|
33CC111D2044C6BA0003C045 /* Release */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
CODE_SIGN_STYLE = Automatic;
|
||||||
|
MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)";
|
||||||
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
};
|
||||||
|
name = Release;
|
||||||
|
};
|
||||||
|
/* End XCBuildConfiguration section */
|
||||||
|
|
||||||
|
/* Begin XCConfigurationList section */
|
||||||
|
331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = {
|
||||||
|
isa = XCConfigurationList;
|
||||||
|
buildConfigurations = (
|
||||||
|
331C80DB294CF71000263BE5 /* Debug */,
|
||||||
|
331C80DC294CF71000263BE5 /* Release */,
|
||||||
|
331C80DD294CF71000263BE5 /* Profile */,
|
||||||
|
);
|
||||||
|
defaultConfigurationIsVisible = 0;
|
||||||
|
defaultConfigurationName = Release;
|
||||||
|
};
|
||||||
|
33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */ = {
|
||||||
|
isa = XCConfigurationList;
|
||||||
|
buildConfigurations = (
|
||||||
|
33CC10F92044A3C60003C045 /* Debug */,
|
||||||
|
33CC10FA2044A3C60003C045 /* Release */,
|
||||||
|
338D0CE9231458BD00FA5F75 /* Profile */,
|
||||||
|
);
|
||||||
|
defaultConfigurationIsVisible = 0;
|
||||||
|
defaultConfigurationName = Release;
|
||||||
|
};
|
||||||
|
33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */ = {
|
||||||
|
isa = XCConfigurationList;
|
||||||
|
buildConfigurations = (
|
||||||
|
33CC10FC2044A3C60003C045 /* Debug */,
|
||||||
|
33CC10FD2044A3C60003C045 /* Release */,
|
||||||
|
338D0CEA231458BD00FA5F75 /* Profile */,
|
||||||
|
);
|
||||||
|
defaultConfigurationIsVisible = 0;
|
||||||
|
defaultConfigurationName = Release;
|
||||||
|
};
|
||||||
|
33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */ = {
|
||||||
|
isa = XCConfigurationList;
|
||||||
|
buildConfigurations = (
|
||||||
|
33CC111C2044C6BA0003C045 /* Debug */,
|
||||||
|
33CC111D2044C6BA0003C045 /* Release */,
|
||||||
|
338D0CEB231458BD00FA5F75 /* Profile */,
|
||||||
|
);
|
||||||
|
defaultConfigurationIsVisible = 0;
|
||||||
|
defaultConfigurationName = Release;
|
||||||
|
};
|
||||||
|
/* End XCConfigurationList section */
|
||||||
|
};
|
||||||
|
rootObject = 33CC10E52044A3C60003C045 /* Project object */;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>IDEDidComputeMac32BitWarning</key>
|
||||||
|
<true/>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
|
|
@ -0,0 +1,98 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Scheme
|
||||||
|
LastUpgradeVersion = "1510"
|
||||||
|
version = "1.3">
|
||||||
|
<BuildAction
|
||||||
|
parallelizeBuildables = "YES"
|
||||||
|
buildImplicitDependencies = "YES">
|
||||||
|
<BuildActionEntries>
|
||||||
|
<BuildActionEntry
|
||||||
|
buildForTesting = "YES"
|
||||||
|
buildForRunning = "YES"
|
||||||
|
buildForProfiling = "YES"
|
||||||
|
buildForArchiving = "YES"
|
||||||
|
buildForAnalyzing = "YES">
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "33CC10EC2044A3C60003C045"
|
||||||
|
BuildableName = "quickgui.app"
|
||||||
|
BlueprintName = "Runner"
|
||||||
|
ReferencedContainer = "container:Runner.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</BuildActionEntry>
|
||||||
|
</BuildActionEntries>
|
||||||
|
</BuildAction>
|
||||||
|
<TestAction
|
||||||
|
buildConfiguration = "Debug"
|
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||||
|
<MacroExpansion>
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "33CC10EC2044A3C60003C045"
|
||||||
|
BuildableName = "quickgui.app"
|
||||||
|
BlueprintName = "Runner"
|
||||||
|
ReferencedContainer = "container:Runner.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</MacroExpansion>
|
||||||
|
<Testables>
|
||||||
|
<TestableReference
|
||||||
|
skipped = "NO"
|
||||||
|
parallelizable = "YES">
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "331C80D4294CF70F00263BE5"
|
||||||
|
BuildableName = "RunnerTests.xctest"
|
||||||
|
BlueprintName = "RunnerTests"
|
||||||
|
ReferencedContainer = "container:Runner.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</TestableReference>
|
||||||
|
</Testables>
|
||||||
|
</TestAction>
|
||||||
|
<LaunchAction
|
||||||
|
buildConfiguration = "Debug"
|
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
|
launchStyle = "0"
|
||||||
|
useCustomWorkingDirectory = "NO"
|
||||||
|
ignoresPersistentStateOnLaunch = "NO"
|
||||||
|
debugDocumentVersioning = "YES"
|
||||||
|
debugServiceExtension = "internal"
|
||||||
|
allowLocationSimulation = "YES">
|
||||||
|
<BuildableProductRunnable
|
||||||
|
runnableDebuggingMode = "0">
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "33CC10EC2044A3C60003C045"
|
||||||
|
BuildableName = "quickgui.app"
|
||||||
|
BlueprintName = "Runner"
|
||||||
|
ReferencedContainer = "container:Runner.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</BuildableProductRunnable>
|
||||||
|
</LaunchAction>
|
||||||
|
<ProfileAction
|
||||||
|
buildConfiguration = "Profile"
|
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||||
|
savedToolIdentifier = ""
|
||||||
|
useCustomWorkingDirectory = "NO"
|
||||||
|
debugDocumentVersioning = "YES">
|
||||||
|
<BuildableProductRunnable
|
||||||
|
runnableDebuggingMode = "0">
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "33CC10EC2044A3C60003C045"
|
||||||
|
BuildableName = "quickgui.app"
|
||||||
|
BlueprintName = "Runner"
|
||||||
|
ReferencedContainer = "container:Runner.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</BuildableProductRunnable>
|
||||||
|
</ProfileAction>
|
||||||
|
<AnalyzeAction
|
||||||
|
buildConfiguration = "Debug">
|
||||||
|
</AnalyzeAction>
|
||||||
|
<ArchiveAction
|
||||||
|
buildConfiguration = "Release"
|
||||||
|
revealArchiveInOrganizer = "YES">
|
||||||
|
</ArchiveAction>
|
||||||
|
</Scheme>
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Workspace
|
||||||
|
version = "1.0">
|
||||||
|
<FileRef
|
||||||
|
location = "group:Runner.xcodeproj">
|
||||||
|
</FileRef>
|
||||||
|
<FileRef
|
||||||
|
location = "group:Pods/Pods.xcodeproj">
|
||||||
|
</FileRef>
|
||||||
|
</Workspace>
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>IDEDidComputeMac32BitWarning</key>
|
||||||
|
<true/>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
import Cocoa
|
||||||
|
import FlutterMacOS
|
||||||
|
|
||||||
|
@NSApplicationMain
|
||||||
|
class AppDelegate: FlutterAppDelegate {
|
||||||
|
override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,68 @@
|
||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"size" : "16x16",
|
||||||
|
"idiom" : "mac",
|
||||||
|
"filename" : "app_icon_16.png",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "16x16",
|
||||||
|
"idiom" : "mac",
|
||||||
|
"filename" : "app_icon_32.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "32x32",
|
||||||
|
"idiom" : "mac",
|
||||||
|
"filename" : "app_icon_32.png",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "32x32",
|
||||||
|
"idiom" : "mac",
|
||||||
|
"filename" : "app_icon_64.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "128x128",
|
||||||
|
"idiom" : "mac",
|
||||||
|
"filename" : "app_icon_128.png",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "128x128",
|
||||||
|
"idiom" : "mac",
|
||||||
|
"filename" : "app_icon_256.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "256x256",
|
||||||
|
"idiom" : "mac",
|
||||||
|
"filename" : "app_icon_256.png",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "256x256",
|
||||||
|
"idiom" : "mac",
|
||||||
|
"filename" : "app_icon_512.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "512x512",
|
||||||
|
"idiom" : "mac",
|
||||||
|
"filename" : "app_icon_512.png",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "512x512",
|
||||||
|
"idiom" : "mac",
|
||||||
|
"filename" : "app_icon_1024.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"version" : 1,
|
||||||
|
"author" : "xcode"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 39 KiB |
|
After Width: | Height: | Size: 4.2 KiB |
|
After Width: | Height: | Size: 520 B |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 931 B |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
|
@ -0,0 +1,343 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||||
|
<dependencies>
|
||||||
|
<deployment identifier="macosx"/>
|
||||||
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
|
||||||
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
|
</dependencies>
|
||||||
|
<objects>
|
||||||
|
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
|
||||||
|
<connections>
|
||||||
|
<outlet property="delegate" destination="Voe-Tx-rLC" id="GzC-gU-4Uq"/>
|
||||||
|
</connections>
|
||||||
|
</customObject>
|
||||||
|
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||||
|
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||||
|
<customObject id="Voe-Tx-rLC" customClass="AppDelegate" customModule="Runner" customModuleProvider="target">
|
||||||
|
<connections>
|
||||||
|
<outlet property="applicationMenu" destination="uQy-DD-JDr" id="XBo-yE-nKs"/>
|
||||||
|
<outlet property="mainFlutterWindow" destination="QvC-M9-y7g" id="gIp-Ho-8D9"/>
|
||||||
|
</connections>
|
||||||
|
</customObject>
|
||||||
|
<customObject id="YLy-65-1bz" customClass="NSFontManager"/>
|
||||||
|
<menu title="Main Menu" systemMenu="main" id="AYu-sK-qS6">
|
||||||
|
<items>
|
||||||
|
<menuItem title="APP_NAME" id="1Xt-HY-uBw">
|
||||||
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
|
<menu key="submenu" title="APP_NAME" systemMenu="apple" id="uQy-DD-JDr">
|
||||||
|
<items>
|
||||||
|
<menuItem title="About APP_NAME" id="5kV-Vb-QxS">
|
||||||
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
|
<connections>
|
||||||
|
<action selector="orderFrontStandardAboutPanel:" target="-1" id="Exp-CZ-Vem"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
|
<menuItem isSeparatorItem="YES" id="VOq-y0-SEH"/>
|
||||||
|
<menuItem title="Preferences…" keyEquivalent="," id="BOF-NM-1cW"/>
|
||||||
|
<menuItem isSeparatorItem="YES" id="wFC-TO-SCJ"/>
|
||||||
|
<menuItem title="Services" id="NMo-om-nkz">
|
||||||
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
|
<menu key="submenu" title="Services" systemMenu="services" id="hz9-B4-Xy5"/>
|
||||||
|
</menuItem>
|
||||||
|
<menuItem isSeparatorItem="YES" id="4je-JR-u6R"/>
|
||||||
|
<menuItem title="Hide APP_NAME" keyEquivalent="h" id="Olw-nP-bQN">
|
||||||
|
<connections>
|
||||||
|
<action selector="hide:" target="-1" id="PnN-Uc-m68"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
|
<menuItem title="Hide Others" keyEquivalent="h" id="Vdr-fp-XzO">
|
||||||
|
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
||||||
|
<connections>
|
||||||
|
<action selector="hideOtherApplications:" target="-1" id="VT4-aY-XCT"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
|
<menuItem title="Show All" id="Kd2-mp-pUS">
|
||||||
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
|
<connections>
|
||||||
|
<action selector="unhideAllApplications:" target="-1" id="Dhg-Le-xox"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
|
<menuItem isSeparatorItem="YES" id="kCx-OE-vgT"/>
|
||||||
|
<menuItem title="Quit APP_NAME" keyEquivalent="q" id="4sb-4s-VLi">
|
||||||
|
<connections>
|
||||||
|
<action selector="terminate:" target="-1" id="Te7-pn-YzF"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
|
</items>
|
||||||
|
</menu>
|
||||||
|
</menuItem>
|
||||||
|
<menuItem title="Edit" id="5QF-Oa-p0T">
|
||||||
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
|
<menu key="submenu" title="Edit" id="W48-6f-4Dl">
|
||||||
|
<items>
|
||||||
|
<menuItem title="Undo" keyEquivalent="z" id="dRJ-4n-Yzg">
|
||||||
|
<connections>
|
||||||
|
<action selector="undo:" target="-1" id="M6e-cu-g7V"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
|
<menuItem title="Redo" keyEquivalent="Z" id="6dh-zS-Vam">
|
||||||
|
<connections>
|
||||||
|
<action selector="redo:" target="-1" id="oIA-Rs-6OD"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
|
<menuItem isSeparatorItem="YES" id="WRV-NI-Exz"/>
|
||||||
|
<menuItem title="Cut" keyEquivalent="x" id="uRl-iY-unG">
|
||||||
|
<connections>
|
||||||
|
<action selector="cut:" target="-1" id="YJe-68-I9s"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
|
<menuItem title="Copy" keyEquivalent="c" id="x3v-GG-iWU">
|
||||||
|
<connections>
|
||||||
|
<action selector="copy:" target="-1" id="G1f-GL-Joy"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
|
<menuItem title="Paste" keyEquivalent="v" id="gVA-U4-sdL">
|
||||||
|
<connections>
|
||||||
|
<action selector="paste:" target="-1" id="UvS-8e-Qdg"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
|
<menuItem title="Paste and Match Style" keyEquivalent="V" id="WeT-3V-zwk">
|
||||||
|
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
||||||
|
<connections>
|
||||||
|
<action selector="pasteAsPlainText:" target="-1" id="cEh-KX-wJQ"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
|
<menuItem title="Delete" id="pa3-QI-u2k">
|
||||||
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
|
<connections>
|
||||||
|
<action selector="delete:" target="-1" id="0Mk-Ml-PaM"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
|
<menuItem title="Select All" keyEquivalent="a" id="Ruw-6m-B2m">
|
||||||
|
<connections>
|
||||||
|
<action selector="selectAll:" target="-1" id="VNm-Mi-diN"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
|
<menuItem isSeparatorItem="YES" id="uyl-h8-XO2"/>
|
||||||
|
<menuItem title="Find" id="4EN-yA-p0u">
|
||||||
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
|
<menu key="submenu" title="Find" id="1b7-l0-nxx">
|
||||||
|
<items>
|
||||||
|
<menuItem title="Find…" tag="1" keyEquivalent="f" id="Xz5-n4-O0W">
|
||||||
|
<connections>
|
||||||
|
<action selector="performFindPanelAction:" target="-1" id="cD7-Qs-BN4"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
|
<menuItem title="Find and Replace…" tag="12" keyEquivalent="f" id="YEy-JH-Tfz">
|
||||||
|
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
||||||
|
<connections>
|
||||||
|
<action selector="performFindPanelAction:" target="-1" id="WD3-Gg-5AJ"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
|
<menuItem title="Find Next" tag="2" keyEquivalent="g" id="q09-fT-Sye">
|
||||||
|
<connections>
|
||||||
|
<action selector="performFindPanelAction:" target="-1" id="NDo-RZ-v9R"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
|
<menuItem title="Find Previous" tag="3" keyEquivalent="G" id="OwM-mh-QMV">
|
||||||
|
<connections>
|
||||||
|
<action selector="performFindPanelAction:" target="-1" id="HOh-sY-3ay"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
|
<menuItem title="Use Selection for Find" tag="7" keyEquivalent="e" id="buJ-ug-pKt">
|
||||||
|
<connections>
|
||||||
|
<action selector="performFindPanelAction:" target="-1" id="U76-nv-p5D"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
|
<menuItem title="Jump to Selection" keyEquivalent="j" id="S0p-oC-mLd">
|
||||||
|
<connections>
|
||||||
|
<action selector="centerSelectionInVisibleArea:" target="-1" id="IOG-6D-g5B"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
|
</items>
|
||||||
|
</menu>
|
||||||
|
</menuItem>
|
||||||
|
<menuItem title="Spelling and Grammar" id="Dv1-io-Yv7">
|
||||||
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
|
<menu key="submenu" title="Spelling" id="3IN-sU-3Bg">
|
||||||
|
<items>
|
||||||
|
<menuItem title="Show Spelling and Grammar" keyEquivalent=":" id="HFo-cy-zxI">
|
||||||
|
<connections>
|
||||||
|
<action selector="showGuessPanel:" target="-1" id="vFj-Ks-hy3"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
|
<menuItem title="Check Document Now" keyEquivalent=";" id="hz2-CU-CR7">
|
||||||
|
<connections>
|
||||||
|
<action selector="checkSpelling:" target="-1" id="fz7-VC-reM"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
|
<menuItem isSeparatorItem="YES" id="bNw-od-mp5"/>
|
||||||
|
<menuItem title="Check Spelling While Typing" id="rbD-Rh-wIN">
|
||||||
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
|
<connections>
|
||||||
|
<action selector="toggleContinuousSpellChecking:" target="-1" id="7w6-Qz-0kB"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
|
<menuItem title="Check Grammar With Spelling" id="mK6-2p-4JG">
|
||||||
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
|
<connections>
|
||||||
|
<action selector="toggleGrammarChecking:" target="-1" id="muD-Qn-j4w"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
|
<menuItem title="Correct Spelling Automatically" id="78Y-hA-62v">
|
||||||
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
|
<connections>
|
||||||
|
<action selector="toggleAutomaticSpellingCorrection:" target="-1" id="2lM-Qi-WAP"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
|
</items>
|
||||||
|
</menu>
|
||||||
|
</menuItem>
|
||||||
|
<menuItem title="Substitutions" id="9ic-FL-obx">
|
||||||
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
|
<menu key="submenu" title="Substitutions" id="FeM-D8-WVr">
|
||||||
|
<items>
|
||||||
|
<menuItem title="Show Substitutions" id="z6F-FW-3nz">
|
||||||
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
|
<connections>
|
||||||
|
<action selector="orderFrontSubstitutionsPanel:" target="-1" id="oku-mr-iSq"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
|
<menuItem isSeparatorItem="YES" id="gPx-C9-uUO"/>
|
||||||
|
<menuItem title="Smart Copy/Paste" id="9yt-4B-nSM">
|
||||||
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
|
<connections>
|
||||||
|
<action selector="toggleSmartInsertDelete:" target="-1" id="3IJ-Se-DZD"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
|
<menuItem title="Smart Quotes" id="hQb-2v-fYv">
|
||||||
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
|
<connections>
|
||||||
|
<action selector="toggleAutomaticQuoteSubstitution:" target="-1" id="ptq-xd-QOA"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
|
<menuItem title="Smart Dashes" id="rgM-f4-ycn">
|
||||||
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
|
<connections>
|
||||||
|
<action selector="toggleAutomaticDashSubstitution:" target="-1" id="oCt-pO-9gS"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
|
<menuItem title="Smart Links" id="cwL-P1-jid">
|
||||||
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
|
<connections>
|
||||||
|
<action selector="toggleAutomaticLinkDetection:" target="-1" id="Gip-E3-Fov"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
|
<menuItem title="Data Detectors" id="tRr-pd-1PS">
|
||||||
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
|
<connections>
|
||||||
|
<action selector="toggleAutomaticDataDetection:" target="-1" id="R1I-Nq-Kbl"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
|
<menuItem title="Text Replacement" id="HFQ-gK-NFA">
|
||||||
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
|
<connections>
|
||||||
|
<action selector="toggleAutomaticTextReplacement:" target="-1" id="DvP-Fe-Py6"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
|
</items>
|
||||||
|
</menu>
|
||||||
|
</menuItem>
|
||||||
|
<menuItem title="Transformations" id="2oI-Rn-ZJC">
|
||||||
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
|
<menu key="submenu" title="Transformations" id="c8a-y6-VQd">
|
||||||
|
<items>
|
||||||
|
<menuItem title="Make Upper Case" id="vmV-6d-7jI">
|
||||||
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
|
<connections>
|
||||||
|
<action selector="uppercaseWord:" target="-1" id="sPh-Tk-edu"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
|
<menuItem title="Make Lower Case" id="d9M-CD-aMd">
|
||||||
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
|
<connections>
|
||||||
|
<action selector="lowercaseWord:" target="-1" id="iUZ-b5-hil"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
|
<menuItem title="Capitalize" id="UEZ-Bs-lqG">
|
||||||
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
|
<connections>
|
||||||
|
<action selector="capitalizeWord:" target="-1" id="26H-TL-nsh"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
|
</items>
|
||||||
|
</menu>
|
||||||
|
</menuItem>
|
||||||
|
<menuItem title="Speech" id="xrE-MZ-jX0">
|
||||||
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
|
<menu key="submenu" title="Speech" id="3rS-ZA-NoH">
|
||||||
|
<items>
|
||||||
|
<menuItem title="Start Speaking" id="Ynk-f8-cLZ">
|
||||||
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
|
<connections>
|
||||||
|
<action selector="startSpeaking:" target="-1" id="654-Ng-kyl"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
|
<menuItem title="Stop Speaking" id="Oyz-dy-DGm">
|
||||||
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
|
<connections>
|
||||||
|
<action selector="stopSpeaking:" target="-1" id="dX8-6p-jy9"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
|
</items>
|
||||||
|
</menu>
|
||||||
|
</menuItem>
|
||||||
|
</items>
|
||||||
|
</menu>
|
||||||
|
</menuItem>
|
||||||
|
<menuItem title="View" id="H8h-7b-M4v">
|
||||||
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
|
<menu key="submenu" title="View" id="HyV-fh-RgO">
|
||||||
|
<items>
|
||||||
|
<menuItem title="Enter Full Screen" keyEquivalent="f" id="4J7-dP-txa">
|
||||||
|
<modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
|
||||||
|
<connections>
|
||||||
|
<action selector="toggleFullScreen:" target="-1" id="dU3-MA-1Rq"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
|
</items>
|
||||||
|
</menu>
|
||||||
|
</menuItem>
|
||||||
|
<menuItem title="Window" id="aUF-d1-5bR">
|
||||||
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
|
<menu key="submenu" title="Window" systemMenu="window" id="Td7-aD-5lo">
|
||||||
|
<items>
|
||||||
|
<menuItem title="Minimize" keyEquivalent="m" id="OY7-WF-poV">
|
||||||
|
<connections>
|
||||||
|
<action selector="performMiniaturize:" target="-1" id="VwT-WD-YPe"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
|
<menuItem title="Zoom" id="R4o-n2-Eq4">
|
||||||
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
|
<connections>
|
||||||
|
<action selector="performZoom:" target="-1" id="DIl-cC-cCs"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
|
<menuItem isSeparatorItem="YES" id="eu3-7i-yIM"/>
|
||||||
|
<menuItem title="Bring All to Front" id="LE2-aR-0XJ">
|
||||||
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
|
<connections>
|
||||||
|
<action selector="arrangeInFront:" target="-1" id="DRN-fu-gQh"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
|
</items>
|
||||||
|
</menu>
|
||||||
|
</menuItem>
|
||||||
|
<menuItem title="Help" id="EPT-qC-fAb">
|
||||||
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
|
<menu key="submenu" title="Help" systemMenu="help" id="rJ0-wn-3NY"/>
|
||||||
|
</menuItem>
|
||||||
|
</items>
|
||||||
|
<point key="canvasLocation" x="142" y="-258"/>
|
||||||
|
</menu>
|
||||||
|
<window title="APP_NAME" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" id="QvC-M9-y7g" customClass="MainFlutterWindow" customModule="Runner" customModuleProvider="target">
|
||||||
|
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
|
||||||
|
<rect key="contentRect" x="335" y="390" width="800" height="600"/>
|
||||||
|
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1577"/>
|
||||||
|
<view key="contentView" wantsLayer="YES" id="EiT-Mj-1SZ">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="800" height="600"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
</view>
|
||||||
|
</window>
|
||||||
|
</objects>
|
||||||
|
</document>
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
// Application-level settings for the Runner target.
|
||||||
|
//
|
||||||
|
// This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the
|
||||||
|
// future. If not, the values below would default to using the project name when this becomes a
|
||||||
|
// 'flutter create' template.
|
||||||
|
|
||||||
|
// The application's name. By default this is also the title of the Flutter window.
|
||||||
|
PRODUCT_NAME = quickgui
|
||||||
|
|
||||||
|
// The application's bundle identifier
|
||||||
|
PRODUCT_BUNDLE_IDENTIFIER = quickemu-project.quickgui
|
||||||
|
|
||||||
|
// The copyright displayed in application information
|
||||||
|
PRODUCT_COPYRIGHT = Copyright © 2024 quickemu-project. All rights reserved.
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
#include "../../Flutter/Flutter-Debug.xcconfig"
|
||||||
|
#include "Warnings.xcconfig"
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
#include "../../Flutter/Flutter-Release.xcconfig"
|
||||||
|
#include "Warnings.xcconfig"
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings
|
||||||
|
GCC_WARN_UNDECLARED_SELECTOR = YES
|
||||||
|
CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES
|
||||||
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE
|
||||||
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES
|
||||||
|
CLANG_WARN_PRAGMA_PACK = YES
|
||||||
|
CLANG_WARN_STRICT_PROTOTYPES = YES
|
||||||
|
CLANG_WARN_COMMA = YES
|
||||||
|
GCC_WARN_STRICT_SELECTOR_MATCH = YES
|
||||||
|
CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES
|
||||||
|
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES
|
||||||
|
GCC_WARN_SHADOW = YES
|
||||||
|
CLANG_WARN_UNREACHABLE_CODE = YES
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>com.apple.security.cs.allow-jit</key>
|
||||||
|
<true/>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleDevelopmentRegion</key>
|
||||||
|
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||||
|
<key>CFBundleExecutable</key>
|
||||||
|
<string>$(EXECUTABLE_NAME)</string>
|
||||||
|
<key>CFBundleIconFile</key>
|
||||||
|
<string></string>
|
||||||
|
<key>CFBundleIdentifier</key>
|
||||||
|
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||||
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
|
<string>6.0</string>
|
||||||
|
<key>CFBundleName</key>
|
||||||
|
<string>$(PRODUCT_NAME)</string>
|
||||||
|
<key>CFBundlePackageType</key>
|
||||||
|
<string>APPL</string>
|
||||||
|
<key>CFBundleShortVersionString</key>
|
||||||
|
<string>$(FLUTTER_BUILD_NAME)</string>
|
||||||
|
<key>CFBundleVersion</key>
|
||||||
|
<string>$(FLUTTER_BUILD_NUMBER)</string>
|
||||||
|
<key>LSMinimumSystemVersion</key>
|
||||||
|
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
|
||||||
|
<key>NSHumanReadableCopyright</key>
|
||||||
|
<string>$(PRODUCT_COPYRIGHT)</string>
|
||||||
|
<key>NSMainNibFile</key>
|
||||||
|
<string>MainMenu</string>
|
||||||
|
<key>NSPrincipalClass</key>
|
||||||
|
<string>NSApplication</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
import Cocoa
|
||||||
|
import FlutterMacOS
|
||||||
|
|
||||||
|
class MainFlutterWindow: NSWindow {
|
||||||
|
override func awakeFromNib() {
|
||||||
|
let flutterViewController = FlutterViewController()
|
||||||
|
let windowFrame = self.frame
|
||||||
|
self.contentViewController = flutterViewController
|
||||||
|
self.setFrame(windowFrame, display: true)
|
||||||
|
|
||||||
|
RegisterGeneratedPlugins(registry: flutterViewController)
|
||||||
|
|
||||||
|
super.awakeFromNib()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict/>
|
||||||
|
</plist>
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
import Cocoa
|
||||||
|
import FlutterMacOS
|
||||||
|
import XCTest
|
||||||
|
|
||||||
|
class RunnerTests: XCTestCase {
|
||||||
|
|
||||||
|
func testExample() {
|
||||||
|
// If you add code to the Runner application, consider adding tests here.
|
||||||
|
// See https://developer.apple.com/documentation/xctest for more information about using XCTest.
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
title: quickgui
|
||||||
|
contents:
|
||||||
|
- x: 456
|
||||||
|
y: 200
|
||||||
|
type: link
|
||||||
|
path: "/Applications"
|
||||||
|
- x: 200
|
||||||
|
y: 200
|
||||||
|
type: file
|
||||||
|
path: quickgui.app
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
, quickemu
|
, quickemu
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
runtimeBinDependencies = [ gnome.zenity ];
|
runtimeBinDependencies = [ quickemu gnome.zenity ];
|
||||||
versionMatches = builtins.match ''
|
versionMatches = builtins.match ''
|
||||||
.*
|
.*
|
||||||
.*version:[[:blank:]]([[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+\+?[[:digit:]]*)
|
.*version:[[:blank:]]([[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+\+?[[:digit:]]*)
|
||||||
|
|
@ -25,7 +25,6 @@ flutter.buildFlutterApplication rec {
|
||||||
};
|
};
|
||||||
|
|
||||||
# These things are added to LD_LIBRARY_PATH, but not PATH
|
# These things are added to LD_LIBRARY_PATH, but not PATH
|
||||||
runtimeDependencies = [ quickemu ];
|
|
||||||
extraWrapProgramArgs = "--prefix PATH : ${lib.makeBinPath runtimeBinDependencies}";
|
extraWrapProgramArgs = "--prefix PATH : ${lib.makeBinPath runtimeBinDependencies}";
|
||||||
|
|
||||||
nativeBuildInputs = [ copyDesktopItems ];
|
nativeBuildInputs = [ copyDesktopItems ];
|
||||||
|
|
|
||||||
|
|
@ -4,21 +4,21 @@
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "_discoveryapis_commons",
|
"name": "_discoveryapis_commons",
|
||||||
"sha256": "f8bb1fdbd77f3d5c1d62b5b0eca75fbf1e41bf4f6c62628f880582e2182ae45d",
|
"sha256": "113c4100b90a5b70a983541782431b82168b3cae166ab130649c36eb3559d498",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "1.0.6"
|
"version": "1.0.7"
|
||||||
},
|
},
|
||||||
"ansicolor": {
|
"ansicolor": {
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "ansicolor",
|
"name": "ansicolor",
|
||||||
"sha256": "8bf17a8ff6ea17499e40a2d2542c2f481cd7615760c6d34065cb22bfd22e6880",
|
"sha256": "50e982d500bc863e1d703448afdbf9e5a72eb48840a4f766fa361ffd6877055f",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "2.0.2"
|
"version": "2.0.3"
|
||||||
},
|
},
|
||||||
"archive": {
|
"archive": {
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
|
|
@ -34,11 +34,11 @@
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "args",
|
"name": "args",
|
||||||
"sha256": "7cf60b9f0cc88203c5a190b4cd62a99feea42759a7fa695010eb5de1c0b2252a",
|
"sha256": "bf9f5caeea8d8fe6721a9c358dd8a5c1947b27f1cfaa18b39c301273594919e6",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "2.5.0"
|
"version": "2.6.0"
|
||||||
},
|
},
|
||||||
"async": {
|
"async": {
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
|
|
@ -94,11 +94,11 @@
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "cli_util",
|
"name": "cli_util",
|
||||||
"sha256": "c05b7406fdabc7a49a3929d4af76bcaccbbffcbcdcf185b082e1ae07da323d19",
|
"sha256": "ff6785f7e9e3c38ac98b2fb035701789de90154024a75b6cb926445e83197d1c",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "0.4.1"
|
"version": "0.4.2"
|
||||||
},
|
},
|
||||||
"clock": {
|
"clock": {
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
|
|
@ -134,21 +134,21 @@
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "cross_file",
|
"name": "cross_file",
|
||||||
"sha256": "55d7b444feb71301ef6b8838dbc1ae02e63dd48c8773f3810ff53bb1e2945b32",
|
"sha256": "7caf6a750a0c04effbb52a676dce9a4a592e10ad35c34d6d2d0e4811160d5670",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "0.3.4+1"
|
"version": "0.3.4+2"
|
||||||
},
|
},
|
||||||
"crypto": {
|
"crypto": {
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "crypto",
|
"name": "crypto",
|
||||||
"sha256": "ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab",
|
"sha256": "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "3.0.3"
|
"version": "3.0.6"
|
||||||
},
|
},
|
||||||
"cupertino_icons": {
|
"cupertino_icons": {
|
||||||
"dependency": "direct main",
|
"dependency": "direct main",
|
||||||
|
|
@ -184,11 +184,21 @@
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "dio",
|
"name": "dio",
|
||||||
"sha256": "11e40df547d418cc0c4900a9318b26304e665da6fa4755399a9ff9efd09034b5",
|
"sha256": "5598aa796bbf4699afd5c67c0f5f6e2ed542afc956884b9cd58c306966efc260",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "5.4.3+1"
|
"version": "5.7.0"
|
||||||
|
},
|
||||||
|
"dio_web_adapter": {
|
||||||
|
"dependency": "transitive",
|
||||||
|
"description": {
|
||||||
|
"name": "dio_web_adapter",
|
||||||
|
"sha256": "33259a9276d6cea88774a0000cfae0d861003497755969c92faa223108620dc8",
|
||||||
|
"url": "https://pub.dev"
|
||||||
|
},
|
||||||
|
"source": "hosted",
|
||||||
|
"version": "2.0.0"
|
||||||
},
|
},
|
||||||
"fake_async": {
|
"fake_async": {
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
|
|
@ -204,31 +214,31 @@
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "ffi",
|
"name": "ffi",
|
||||||
"sha256": "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21",
|
"sha256": "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "2.1.2"
|
"version": "2.1.3"
|
||||||
},
|
},
|
||||||
"file": {
|
"file": {
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "file",
|
"name": "file",
|
||||||
"sha256": "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c",
|
"sha256": "a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "7.0.0"
|
"version": "7.0.1"
|
||||||
},
|
},
|
||||||
"file_picker": {
|
"file_picker": {
|
||||||
"dependency": "direct main",
|
"dependency": "direct main",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "file_picker",
|
"name": "file_picker",
|
||||||
"sha256": "2ca051989f69d1b2ca012b2cf3ccf78c70d40144f0861ff2c063493f7c8c3d45",
|
"sha256": "16dc141db5a2ccc6520ebb6a2eb5945b1b09e95085c021d9f914f8ded7f1465c",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "8.0.5"
|
"version": "8.1.4"
|
||||||
},
|
},
|
||||||
"flutter": {
|
"flutter": {
|
||||||
"dependency": "direct main",
|
"dependency": "direct main",
|
||||||
|
|
@ -296,21 +306,21 @@
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "flutter_plugin_android_lifecycle",
|
"name": "flutter_plugin_android_lifecycle",
|
||||||
"sha256": "c6b0b4c05c458e1c01ad9bcc14041dd7b1f6783d487be4386f793f47a8a4d03e",
|
"sha256": "9b78450b89f059e96c9ebb355fa6b3df1d6b330436e0b885fb49594c41721398",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "2.0.20"
|
"version": "2.0.23"
|
||||||
},
|
},
|
||||||
"flutter_svg": {
|
"flutter_svg": {
|
||||||
"dependency": "direct main",
|
"dependency": "direct main",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "flutter_svg",
|
"name": "flutter_svg",
|
||||||
"sha256": "7b4ca6cf3304575fe9c8ec64813c8d02ee41d2afe60bcfe0678bcb5375d596a2",
|
"sha256": "54900a1a1243f3c4a5506d853a2b5c2dbc38d5f27e52a52618a8054401431123",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "2.0.10+1"
|
"version": "2.0.16"
|
||||||
},
|
},
|
||||||
"flutter_test": {
|
"flutter_test": {
|
||||||
"dependency": "direct dev",
|
"dependency": "direct dev",
|
||||||
|
|
@ -348,11 +358,11 @@
|
||||||
"dependency": "direct main",
|
"dependency": "direct main",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "gettext_i18n",
|
"name": "gettext_i18n",
|
||||||
"sha256": "e15f1a6bd5b79435377d8245359e68750af5091d30f571abe36fd10ba5cc5eee",
|
"sha256": "1acdb7f6bb7c06aaa69016a248de20123ac9af2e1a29321244012fbf6f2d4bdd",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "1.0.5"
|
"version": "1.0.7"
|
||||||
},
|
},
|
||||||
"gettext_parser": {
|
"gettext_parser": {
|
||||||
"dependency": "direct main",
|
"dependency": "direct main",
|
||||||
|
|
@ -378,11 +388,11 @@
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "google_identity_services_web",
|
"name": "google_identity_services_web",
|
||||||
"sha256": "9482364c9f8b7bd36902572ebc3a7c2b5c8ee57a9c93e6eb5099c1a9ec5265d8",
|
"sha256": "55580f436822d64c8ff9a77e37d61f5fb1e6c7ec9d632a43ee324e2a05c3c6c9",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "0.3.1+1"
|
"version": "0.3.3"
|
||||||
},
|
},
|
||||||
"googleapis": {
|
"googleapis": {
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
|
|
@ -408,11 +418,11 @@
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "http",
|
"name": "http",
|
||||||
"sha256": "761a297c042deedc1ffbb156d6e2af13886bb305c2a343a4d972504cd67dd938",
|
"sha256": "b9c29a161230ee03d3ccf545097fccd9b87a5264228c5d348202e0f0c28f9010",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "1.2.1"
|
"version": "1.2.2"
|
||||||
},
|
},
|
||||||
"http_parser": {
|
"http_parser": {
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
|
|
@ -428,11 +438,11 @@
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "image",
|
"name": "image",
|
||||||
"sha256": "2237616a36c0d69aef7549ab439b833fb7f9fb9fc861af2cc9ac3eedddd69ca8",
|
"sha256": "f31d52537dc417fdcde36088fdf11d191026fd5e4fae742491ebd40e5a8bea7d",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "4.2.0"
|
"version": "4.3.0"
|
||||||
},
|
},
|
||||||
"intl": {
|
"intl": {
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
|
|
@ -468,21 +478,21 @@
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "leak_tracker",
|
"name": "leak_tracker",
|
||||||
"sha256": "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a",
|
"sha256": "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "10.0.4"
|
"version": "10.0.5"
|
||||||
},
|
},
|
||||||
"leak_tracker_flutter_testing": {
|
"leak_tracker_flutter_testing": {
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "leak_tracker_flutter_testing",
|
"name": "leak_tracker_flutter_testing",
|
||||||
"sha256": "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8",
|
"sha256": "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "3.0.3"
|
"version": "3.0.5"
|
||||||
},
|
},
|
||||||
"leak_tracker_testing": {
|
"leak_tracker_testing": {
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
|
|
@ -518,11 +528,11 @@
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "logging",
|
"name": "logging",
|
||||||
"sha256": "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340",
|
"sha256": "c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "1.2.0"
|
"version": "1.3.0"
|
||||||
},
|
},
|
||||||
"matcher": {
|
"matcher": {
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
|
|
@ -538,31 +548,31 @@
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "material_color_utilities",
|
"name": "material_color_utilities",
|
||||||
"sha256": "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a",
|
"sha256": "f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "0.8.0"
|
"version": "0.11.1"
|
||||||
},
|
},
|
||||||
"meta": {
|
"meta": {
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "meta",
|
"name": "meta",
|
||||||
"sha256": "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136",
|
"sha256": "bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "1.12.0"
|
"version": "1.15.0"
|
||||||
},
|
},
|
||||||
"msix": {
|
"msix": {
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "msix",
|
"name": "msix",
|
||||||
"sha256": "519b183d15dc9f9c594f247e2d2339d855cf0eaacc30e19b128e14f3ecc62047",
|
"sha256": "c50d6bd1aafe0d071a3c1e5a5ccb056404502935cb0a549e3178c4aae16caf33",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "3.16.7"
|
"version": "3.16.8"
|
||||||
},
|
},
|
||||||
"mustache_template": {
|
"mustache_template": {
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
|
|
@ -598,21 +608,21 @@
|
||||||
"dependency": "direct main",
|
"dependency": "direct main",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "package_info_plus",
|
"name": "package_info_plus",
|
||||||
"sha256": "b93d8b4d624b4ea19b0a5a208b2d6eff06004bc3ce74c06040b120eeadd00ce0",
|
"sha256": "da8d9ac8c4b1df253d1a328b7bf01ae77ef132833479ab40763334db13b91cce",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "8.0.0"
|
"version": "8.1.1"
|
||||||
},
|
},
|
||||||
"package_info_plus_platform_interface": {
|
"package_info_plus_platform_interface": {
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "package_info_plus_platform_interface",
|
"name": "package_info_plus_platform_interface",
|
||||||
"sha256": "f49918f3433a3146047372f9d4f1f847511f2acd5cd030e1f44fe5a50036b70e",
|
"sha256": "ac1f4a4847f1ade8e6a87d1f39f5d7c67490738642e2542f559ec38c37489a66",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "3.0.0"
|
"version": "3.0.1"
|
||||||
},
|
},
|
||||||
"parse_app_package": {
|
"parse_app_package": {
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
|
|
@ -638,11 +648,11 @@
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "path_parsing",
|
"name": "path_parsing",
|
||||||
"sha256": "e3e67b1629e6f7e8100b367d3db6ba6af4b1f0bb80f64db18ef1fbabd2fa9ccf",
|
"sha256": "883402936929eac138ee0a45da5b0f2c80f89913e6dc3bf77eb65b84b409c6ca",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "1.0.1"
|
"version": "1.1.0"
|
||||||
},
|
},
|
||||||
"path_provider_linux": {
|
"path_provider_linux": {
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
|
|
@ -668,11 +678,11 @@
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "path_provider_windows",
|
"name": "path_provider_windows",
|
||||||
"sha256": "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170",
|
"sha256": "bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "2.2.1"
|
"version": "2.3.0"
|
||||||
},
|
},
|
||||||
"petitparser": {
|
"petitparser": {
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
|
|
@ -688,11 +698,11 @@
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "platform",
|
"name": "platform",
|
||||||
"sha256": "9b71283fc13df574056616011fb138fd3b793ea47cc509c189a6c3fa5f8a1a65",
|
"sha256": "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "3.1.5"
|
"version": "3.1.6"
|
||||||
},
|
},
|
||||||
"plist_parser": {
|
"plist_parser": {
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
|
|
@ -718,11 +728,11 @@
|
||||||
"dependency": "direct main",
|
"dependency": "direct main",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "process_run",
|
"name": "process_run",
|
||||||
"sha256": "8d9c6198b98fbbfb511edd42e7364e24d85c163e47398919871b952dc86a423e",
|
"sha256": "a68fa9727392edad97a2a96a77ce8b0c17d28336ba1b284b1dfac9595a4299ea",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "0.14.2"
|
"version": "1.2.2+1"
|
||||||
},
|
},
|
||||||
"provider": {
|
"provider": {
|
||||||
"dependency": "direct main",
|
"dependency": "direct main",
|
||||||
|
|
@ -768,11 +778,11 @@
|
||||||
"dependency": "direct main",
|
"dependency": "direct main",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "quiver",
|
"name": "quiver",
|
||||||
"sha256": "b1c1ac5ce6688d77f65f3375a9abb9319b3cb32486bdc7a1e0fdf004d7ba4e47",
|
"sha256": "ea0b925899e64ecdfbf9c7becb60d5b50e706ade44a85b2363be2a22d88117d2",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "3.2.1"
|
"version": "3.2.2"
|
||||||
},
|
},
|
||||||
"recase": {
|
"recase": {
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
|
|
@ -788,71 +798,71 @@
|
||||||
"dependency": "direct main",
|
"dependency": "direct main",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "shared_preferences",
|
"name": "shared_preferences",
|
||||||
"sha256": "d3bbe5553a986e83980916ded2f0b435ef2e1893dfaa29d5a7a790d0eca12180",
|
"sha256": "95f9997ca1fb9799d494d0cb2a780fd7be075818d59f00c43832ed112b158a82",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "2.2.3"
|
"version": "2.3.3"
|
||||||
},
|
},
|
||||||
"shared_preferences_android": {
|
"shared_preferences_android": {
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "shared_preferences_android",
|
"name": "shared_preferences_android",
|
||||||
"sha256": "93d0ec9dd902d85f326068e6a899487d1f65ffcd5798721a95330b26c8131577",
|
"sha256": "7f172d1b06de5da47b6264c2692ee2ead20bbbc246690427cdb4fc301cd0c549",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "2.2.3"
|
"version": "2.3.4"
|
||||||
},
|
},
|
||||||
"shared_preferences_foundation": {
|
"shared_preferences_foundation": {
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "shared_preferences_foundation",
|
"name": "shared_preferences_foundation",
|
||||||
"sha256": "0a8a893bf4fd1152f93fec03a415d11c27c74454d96e2318a7ac38dd18683ab7",
|
"sha256": "07e050c7cd39bad516f8d64c455f04508d09df104be326d8c02551590a0d513d",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "2.4.0"
|
"version": "2.5.3"
|
||||||
},
|
},
|
||||||
"shared_preferences_linux": {
|
"shared_preferences_linux": {
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "shared_preferences_linux",
|
"name": "shared_preferences_linux",
|
||||||
"sha256": "9f2cbcf46d4270ea8be39fa156d86379077c8a5228d9dfdb1164ae0bb93f1faa",
|
"sha256": "580abfd40f415611503cae30adf626e6656dfb2f0cee8f465ece7b6defb40f2f",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "2.3.2"
|
"version": "2.4.1"
|
||||||
},
|
},
|
||||||
"shared_preferences_platform_interface": {
|
"shared_preferences_platform_interface": {
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "shared_preferences_platform_interface",
|
"name": "shared_preferences_platform_interface",
|
||||||
"sha256": "22e2ecac9419b4246d7c22bfbbda589e3acf5c0351137d87dd2939d984d37c3b",
|
"sha256": "57cbf196c486bc2cf1f02b85784932c6094376284b3ad5779d1b1c6c6a816b80",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "2.3.2"
|
"version": "2.4.1"
|
||||||
},
|
},
|
||||||
"shared_preferences_web": {
|
"shared_preferences_web": {
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "shared_preferences_web",
|
"name": "shared_preferences_web",
|
||||||
"sha256": "9aee1089b36bd2aafe06582b7d7817fd317ef05fc30e6ba14bff247d0933042a",
|
"sha256": "d2ca4132d3946fec2184261726b355836a82c33d7d5b67af32692aff18a4684e",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "2.3.0"
|
"version": "2.4.2"
|
||||||
},
|
},
|
||||||
"shared_preferences_windows": {
|
"shared_preferences_windows": {
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "shared_preferences_windows",
|
"name": "shared_preferences_windows",
|
||||||
"sha256": "841ad54f3c8381c480d0c9b508b89a34036f512482c407e6df7a9c4aa2ef8f59",
|
"sha256": "94ef0f72b2d71bc3e700e025db3710911bd51a71cefb65cc609dd0d9a982e3c1",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "2.3.2"
|
"version": "2.4.1"
|
||||||
},
|
},
|
||||||
"shell_executor": {
|
"shell_executor": {
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
|
|
@ -924,11 +934,11 @@
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "synchronized",
|
"name": "synchronized",
|
||||||
"sha256": "539ef412b170d65ecdafd780f924e5be3f60032a1128df156adad6c5b373d558",
|
"sha256": "69fe30f3a8b04a0be0c15ae6490fc859a78ef4c43ae2dd5e8a623d45bfcf9225",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "3.1.0+1"
|
"version": "3.3.0+3"
|
||||||
},
|
},
|
||||||
"term_glyph": {
|
"term_glyph": {
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
|
|
@ -944,11 +954,11 @@
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "test_api",
|
"name": "test_api",
|
||||||
"sha256": "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f",
|
"sha256": "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "0.7.0"
|
"version": "0.7.2"
|
||||||
},
|
},
|
||||||
"tuple": {
|
"tuple": {
|
||||||
"dependency": "direct main",
|
"dependency": "direct main",
|
||||||
|
|
@ -964,61 +974,61 @@
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "typed_data",
|
"name": "typed_data",
|
||||||
"sha256": "facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c",
|
"sha256": "f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "1.3.2"
|
"version": "1.4.0"
|
||||||
},
|
},
|
||||||
"url_launcher": {
|
"url_launcher": {
|
||||||
"dependency": "direct main",
|
"dependency": "direct main",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "url_launcher",
|
"name": "url_launcher",
|
||||||
"sha256": "21b704ce5fa560ea9f3b525b43601c678728ba46725bab9b01187b4831377ed3",
|
"sha256": "9d06212b1362abc2f0f0d78e6f09f726608c74e3b9462e8368bb03314aa8d603",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "6.3.0"
|
"version": "6.3.1"
|
||||||
},
|
},
|
||||||
"url_launcher_android": {
|
"url_launcher_android": {
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "url_launcher_android",
|
"name": "url_launcher_android",
|
||||||
"sha256": "ceb2625f0c24ade6ef6778d1de0b2e44f2db71fded235eb52295247feba8c5cf",
|
"sha256": "6fc2f56536ee873eeb867ad176ae15f304ccccc357848b351f6f0d8d4a40d193",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "6.3.3"
|
"version": "6.3.14"
|
||||||
},
|
},
|
||||||
"url_launcher_ios": {
|
"url_launcher_ios": {
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "url_launcher_ios",
|
"name": "url_launcher_ios",
|
||||||
"sha256": "7068716403343f6ba4969b4173cbf3b84fc768042124bc2c011e5d782b24fe89",
|
"sha256": "e43b677296fadce447e987a2f519dcf5f6d1e527dc35d01ffab4fff5b8a7063e",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "6.3.0"
|
"version": "6.3.1"
|
||||||
},
|
},
|
||||||
"url_launcher_linux": {
|
"url_launcher_linux": {
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "url_launcher_linux",
|
"name": "url_launcher_linux",
|
||||||
"sha256": "ab360eb661f8879369acac07b6bb3ff09d9471155357da8443fd5d3cf7363811",
|
"sha256": "4e9ba368772369e3e08f231d2301b4ef72b9ff87c31192ef471b380ef29a4935",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "3.1.1"
|
"version": "3.2.1"
|
||||||
},
|
},
|
||||||
"url_launcher_macos": {
|
"url_launcher_macos": {
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "url_launcher_macos",
|
"name": "url_launcher_macos",
|
||||||
"sha256": "9a1a42d5d2d95400c795b2914c36fdcb525870c752569438e4ebb09a2b5d90de",
|
"sha256": "769549c999acdb42b8bcfa7c43d72bf79a382ca7441ab18a808e101149daf672",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "3.2.0"
|
"version": "3.2.1"
|
||||||
},
|
},
|
||||||
"url_launcher_platform_interface": {
|
"url_launcher_platform_interface": {
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
|
|
@ -1034,21 +1044,21 @@
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "url_launcher_web",
|
"name": "url_launcher_web",
|
||||||
"sha256": "8d9e750d8c9338601e709cd0885f95825086bd8b642547f26bda435aade95d8a",
|
"sha256": "772638d3b34c779ede05ba3d38af34657a05ac55b06279ea6edd409e323dca8e",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "2.3.1"
|
"version": "2.3.3"
|
||||||
},
|
},
|
||||||
"url_launcher_windows": {
|
"url_launcher_windows": {
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "url_launcher_windows",
|
"name": "url_launcher_windows",
|
||||||
"sha256": "ecf9725510600aa2bb6d7ddabe16357691b6d2805f66216a97d1b881e21beff7",
|
"sha256": "44cf3aabcedde30f2dba119a9dea3b0f2672fbe6fa96e85536251d678216b3c4",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "3.1.1"
|
"version": "3.1.3"
|
||||||
},
|
},
|
||||||
"uuid": {
|
"uuid": {
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
|
|
@ -1064,31 +1074,31 @@
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "vector_graphics",
|
"name": "vector_graphics",
|
||||||
"sha256": "32c3c684e02f9bc0afb0ae0aa653337a2fe022e8ab064bcd7ffda27a74e288e3",
|
"sha256": "27d5fefe86fb9aace4a9f8375b56b3c292b64d8c04510df230f849850d912cb7",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "1.1.11+1"
|
"version": "1.1.15"
|
||||||
},
|
},
|
||||||
"vector_graphics_codec": {
|
"vector_graphics_codec": {
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "vector_graphics_codec",
|
"name": "vector_graphics_codec",
|
||||||
"sha256": "c86987475f162fadff579e7320c7ddda04cd2fdeffbe1129227a85d9ac9e03da",
|
"sha256": "2430b973a4ca3c4dbc9999b62b8c719a160100dcbae5c819bae0cacce32c9cdb",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "1.1.11+1"
|
"version": "1.1.12"
|
||||||
},
|
},
|
||||||
"vector_graphics_compiler": {
|
"vector_graphics_compiler": {
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "vector_graphics_compiler",
|
"name": "vector_graphics_compiler",
|
||||||
"sha256": "12faff3f73b1741a36ca7e31b292ddeb629af819ca9efe9953b70bd63fc8cd81",
|
"sha256": "1b4b9e706a10294258727674a340ae0d6e64a7231980f9f9a3d12e4b42407aad",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "1.1.11+1"
|
"version": "1.1.16"
|
||||||
},
|
},
|
||||||
"vector_math": {
|
"vector_math": {
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
|
|
@ -1100,35 +1110,45 @@
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "2.1.4"
|
"version": "2.1.4"
|
||||||
},
|
},
|
||||||
|
"version": {
|
||||||
|
"dependency": "direct main",
|
||||||
|
"description": {
|
||||||
|
"name": "version",
|
||||||
|
"sha256": "3d4140128e6ea10d83da32fef2fa4003fccbf6852217bb854845802f04191f94",
|
||||||
|
"url": "https://pub.dev"
|
||||||
|
},
|
||||||
|
"source": "hosted",
|
||||||
|
"version": "3.0.2"
|
||||||
|
},
|
||||||
"vm_service": {
|
"vm_service": {
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "vm_service",
|
"name": "vm_service",
|
||||||
"sha256": "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec",
|
"sha256": "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "14.2.1"
|
"version": "14.2.5"
|
||||||
},
|
},
|
||||||
"web": {
|
"web": {
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "web",
|
"name": "web",
|
||||||
"sha256": "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27",
|
"sha256": "cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "0.5.1"
|
"version": "1.1.0"
|
||||||
},
|
},
|
||||||
"win32": {
|
"win32": {
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "win32",
|
"name": "win32",
|
||||||
"sha256": "a79dbe579cb51ecd6d30b17e0cae4e0ea15e2c0e66f69ad4198f22a6789e94f4",
|
"sha256": "8b338d4486ab3fbc0ba0db9f9b4f5239b6697fcee427939a40e720cbb9ee0a69",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "5.5.1"
|
"version": "5.9.0"
|
||||||
},
|
},
|
||||||
"window_size": {
|
"window_size": {
|
||||||
"dependency": "direct main",
|
"dependency": "direct main",
|
||||||
|
|
@ -1145,11 +1165,11 @@
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
"description": {
|
"description": {
|
||||||
"name": "xdg_directories",
|
"name": "xdg_directories",
|
||||||
"sha256": "faea9dee56b520b55a566385b84f2e8de55e7496104adada9962e0bd11bcff1d",
|
"sha256": "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15",
|
||||||
"url": "https://pub.dev"
|
"url": "https://pub.dev"
|
||||||
},
|
},
|
||||||
"source": "hosted",
|
"source": "hosted",
|
||||||
"version": "1.0.4"
|
"version": "1.1.0"
|
||||||
},
|
},
|
||||||
"xml": {
|
"xml": {
|
||||||
"dependency": "transitive",
|
"dependency": "transitive",
|
||||||
|
|
@ -1173,7 +1193,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"sdks": {
|
"sdks": {
|
||||||
"dart": ">=3.4.0 <4.0.0",
|
"dart": ">=3.5.0 <4.0.0",
|
||||||
"flutter": ">=3.22.0"
|
"flutter": ">=3.24.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
23
pubspec.yaml
|
|
@ -1,7 +1,7 @@
|
||||||
name: quickgui
|
name: quickgui
|
||||||
description: Desktop frontend for Quickget and Quickemu
|
description: An elegant virtual machine manager for the desktop
|
||||||
publish_to: 'none' # Remove this line if you wish to publish to pub.dev
|
publish_to: 'none' # Remove this line if you wish to publish to pub.dev
|
||||||
version: 1.2.9+1
|
version: 1.2.10+1
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
flutter: "3.22.0"
|
flutter: "3.22.0"
|
||||||
|
|
@ -14,18 +14,19 @@ dependencies:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
cupertino_icons: ^1.0.8
|
cupertino_icons: ^1.0.8
|
||||||
desktop_notifications: ^0.6.3
|
desktop_notifications: ^0.6.3
|
||||||
file_picker: ^8.0.5
|
file_picker: ^8.0.6
|
||||||
flutter_svg: ^2.0.10+1
|
flutter_svg: ^2.1.0
|
||||||
gettext: ^1.2.0
|
gettext: ^1.2.0
|
||||||
gettext_i18n: ^1.0.5
|
gettext_i18n: ^1.0.7
|
||||||
gettext_parser: ^0.2.0
|
gettext_parser: ^0.2.0
|
||||||
package_info_plus: ^8.0.0
|
package_info_plus: ^9.0.1
|
||||||
process_run: ^0.14.2
|
process_run: ^1.1.0
|
||||||
provider: ^6.1.2
|
provider: ^6.1.5
|
||||||
quiver: ^3.2.1
|
quiver: ^3.2.2
|
||||||
url_launcher: ^6.3.0
|
url_launcher: ^6.3.0
|
||||||
shared_preferences: ^2.2.3
|
shared_preferences: ^2.3.2
|
||||||
tuple: ^2.0.2
|
tuple: ^2.0.2
|
||||||
|
version: ^3.0.2
|
||||||
window_size:
|
window_size:
|
||||||
git:
|
git:
|
||||||
url: https://github.com/google/flutter-desktop-embedding.git
|
url: https://github.com/google/flutter-desktop-embedding.git
|
||||||
|
|
@ -35,7 +36,7 @@ dependencies:
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
flutter_distributor: ^0.4.5
|
flutter_distributor: ^0.6.6
|
||||||
flutter_lints: ^4.0.0
|
flutter_lints: ^4.0.0
|
||||||
|
|
||||||
flutter:
|
flutter:
|
||||||
|
|
|
||||||