From 5cc16d00fa4b81b7da52ec858b5369cf061229fa Mon Sep 17 00:00:00 2001 From: axtlos Date: Fri, 22 Apr 2022 13:30:17 +0200 Subject: [PATCH] Add scaling, fix #15 --- jade_log.txt | 9 +- lib/main.dart | 547 +++++++++++-------- linux/flutter/generated_plugin_registrant.cc | 4 + linux/flutter/generated_plugins.cmake | 1 + pubspec.lock | 9 + pubspec.yaml | 6 + 6 files changed, 338 insertions(+), 238 deletions(-) diff --git a/jade_log.txt b/jade_log.txt index 3d4fff2..74bd919 100644 --- a/jade_log.txt +++ b/jade_log.txt @@ -1,9 +1,2 @@ -Chosen location: Asia -Chosen Region: Aqtau -Chosen layout: at -Chosen variant: normal -Username: e -Username: -Username: u -Enable sudo: true \ No newline at end of file +Desktop: gnome \ No newline at end of file diff --git a/lib/main.dart b/lib/main.dart index 22922a8..78ef1d3 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -11,6 +11,7 @@ import 'package:jade_gui/functions/install.dart'; import 'package:jade_gui/classes/keymap.dart'; import 'package:jade_gui/classes/desktop.dart'; import 'package:jade_gui/desktops/desktops.dart'; +import 'package:window_size/window_size.dart'; import 'dart:io'; @@ -44,6 +45,11 @@ Future writeToLog(String message) async { }); } +void setWindowSize() { + setWindowMinSize(Size(0, 0)); + setWindowMaxSize(Size(1300, 870)); +} + void main() => runApp( const MaterialApp( debugShowCheckedModeBanner: false, @@ -69,7 +75,7 @@ class Jadegui extends StatefulWidget { } class _JadeguiState extends State { - var file = File("jade_log.txt").writeAsString(""); + var file = File('${env["HOME"]}/jade_log.txt').writeAsString(""); int _selectedIndex = 0; bool nextpage = false; bool choseLayout = false; @@ -101,6 +107,7 @@ class _JadeguiState extends State { @override Widget build(BuildContext context) { + setWindowSize(); return Scaffold( backgroundColor: const Color.fromARGB(255, 23, 23, 23), body: Row( @@ -287,14 +294,25 @@ class _JadeguiState extends State { Widget condition() { Widget widget; - + double logicWidth = 1300; + double logicHeight = 870; switch (_selectedIndex) { case 0: - widget = welcome(() { - setState(() { - _selectedIndex = _selectedIndex + 1; - }); - }); + widget = SizedBox( + child: FittedBox( + fit: BoxFit.contain, + alignment: Alignment.center, + child: SizedBox( + width: logicWidth, + height: logicHeight, + child: welcome(() { + setState(() { + _selectedIndex = _selectedIndex + 1; + }); + }), + ), + ), + ); break; case 1: widget = locale( @@ -323,179 +341,228 @@ class _JadeguiState extends State { break; case 2: - widget = keyboard( - () { - setState(() { - _selectedIndex = _selectedIndex + 1; - }); - }, - () { - setState(() { - choseLayout = true; - }); - }, - choseLayout, - (layout) { - setState(() { - chosenLayout = layout; - }); - }, - chosenLayout, - (value) { - writeToLog(value); - }, + widget = SizedBox.expand( + child: FittedBox( + fit: BoxFit.contain, + alignment: Alignment.center, + child: SizedBox( + width: logicWidth, + height: logicHeight, + child: keyboard( + () { + setState(() { + _selectedIndex = _selectedIndex + 1; + }); + }, + () { + setState(() { + choseLayout = true; + }); + }, + choseLayout, + (layout) { + setState(() { + chosenLayout = layout; + }); + }, + chosenLayout, + (value) { + writeToLog(value); + }, + ), + ), + ), ); break; case 3: - widget = users( - (value) { - setState(() { - enableSudo = value; - writeToLog("Enable sudo: $enableSudo"); - }); - }, - enableSudo, - (String? value) { - setState(() { - if (value != null) { - setPassword(value, (String encPass) { + widget = SizedBox.expand( + child: FittedBox( + fit: BoxFit.contain, + alignment: Alignment.center, + child: SizedBox( + width: logicWidth, + height: logicHeight, + child: users( + (value) { setState(() { - password = encPass; - clearPass = value; + enableSudo = value; + writeToLog("Enable sudo: $enableSudo"); }); - }); - } - }); - }, - (value) { - setState(() { - confirmPassword = value; - }); - }, - clearPass, - confirmPassword, - (value) { - setState(() { - username = value; - writeToLog("Username: $username"); - }); - }, - username, - (value) { - setState(() { - enableRoot = value; - writeToLog("Enable root: $enableRoot"); - }); - }, - enableRoot, - (String? value) { - setState(() { - if (value != null) { - rootPass = value; - } - }); - }, - (value) { - setState(() { - confirmRootPass = value; - }); - }, - rootPass, - confirmRootPass, - () { - setState(() { - _selectedIndex = _selectedIndex + 1; - }); - }, + }, + enableSudo, + (String? value) { + setState(() { + if (value != null) { + setPassword(value, (String encPass) { + setState(() { + password = encPass; + clearPass = value; + }); + }); + } + }); + }, + (value) { + setState(() { + confirmPassword = value; + }); + }, + clearPass, + confirmPassword, + (value) { + setState(() { + username = value; + writeToLog("Username: $username"); + }); + }, + username, + (value) { + setState(() { + enableRoot = value; + writeToLog("Enable root: $enableRoot"); + }); + }, + enableRoot, + (String? value) { + setState(() { + if (value != null) { + rootPass = value; + } + }); + }, + (value) { + setState(() { + confirmRootPass = value; + }); + }, + rootPass, + confirmRootPass, + () { + setState(() { + _selectedIndex = _selectedIndex + 1; + }); + }, + ), + ), + ), ); break; case 4: - debugPrint(password); - widget = desktopView( - currDesktop, - (selectedDesktop) { - setState(() { - currDesktop = selectedDesktop; - writeToLog("Desktop: ${selectedDesktop.name}"); - }); - }, - () { - setState(() { - _selectedIndex = _selectedIndex + 1; - }); - }, + widget = SizedBox.expand( + child: FittedBox( + fit: BoxFit.contain, + alignment: Alignment.center, + child: SizedBox( + width: logicWidth, + height: logicHeight, + child: desktopView( + currDesktop, + (selectedDesktop) { + setState(() { + currDesktop = selectedDesktop; + writeToLog("Desktop: ${selectedDesktop.name}"); + }); + }, + () { + setState(() { + _selectedIndex = _selectedIndex + 1; + }); + }, + ), + ), + ), ); break; case 5: - widget = misc( - (value) { - setState(() { - ipv6 = value; - writeToLog("IPv6: $ipv6"); - }); - }, - (value) { - setState(() { - hostname = value; - writeToLog("Hostname: $hostname"); - }); - }, - (value) { - setState(() { - enableTimeshift = value; - writeToLog("Enable timeshift: $enableTimeshift"); - }); - }, - ipv6, - hostname, - enableTimeshift, - () { - setState(() { - _selectedIndex = _selectedIndex + 1; - }); - }, + widget = SizedBox.expand( + child: FittedBox( + fit: BoxFit.contain, + alignment: Alignment.center, + child: SizedBox( + width: logicWidth, + height: logicHeight, + child: misc( + (value) { + setState(() { + ipv6 = value; + writeToLog("IPv6: $ipv6"); + }); + }, + (value) { + setState(() { + hostname = value; + writeToLog("Hostname: $hostname"); + }); + }, + (value) { + setState(() { + enableTimeshift = value; + writeToLog("Enable timeshift: $enableTimeshift"); + }); + }, + ipv6, + hostname, + enableTimeshift, + () { + setState(() { + _selectedIndex = _selectedIndex + 1; + }); + }, + ), + ), + ), ); break; case 6: - widget = partitioning( - disks, - (value) { - setState(() { - disks = value; - writeToLog("Disks: $disks"); - }); - }, - (value) { - setState(() { - selectedDisk = value; - writeToLog("Selected disk: $selectedDisk"); - }); - }, - () { - setState(() { - _selectedIndex = _selectedIndex + 1; - }); - }, - (value) { - setState(() { - partitionInfo = value; - writeToLog("Partition info: $partitionInfo"); - }); - }, - selectedDisk, - partitionInfo, - runningPart, - () { - setState(() { - runningPart = true; - }); - }, - runningInfo, - () { - setState(() { - runningInfo = true; - }); - }, + widget = SizedBox.expand( + child: FittedBox( + fit: BoxFit.contain, + alignment: Alignment.center, + child: SizedBox( + width: logicWidth, + height: logicHeight, + child: partitioning( + disks, + (value) { + setState(() { + disks = value; + writeToLog("Disks:widget $disks"); + }); + }, + (value) { + setState(() { + selectedDisk = value; + writeToLog("Selected disk: $selectedDisk"); + }); + }, + () { + setState(() { + _selectedIndex = _selectedIndex + 1; + }); + }, + (value) { + setState(() { + partitionInfo = value; + writeToLog("Partition info: $partitionInfo"); + }); + }, + selectedDisk, + partitionInfo, + runningPart, + () { + setState(() { + runningPart = true; + }); + }, + runningInfo, + () { + setState(() { + runningInfo = true; + }); + }, + ), + ), + ), ); break; case 7: @@ -512,73 +579,93 @@ class _JadeguiState extends State { runningEfi = true; }); }); - widget = summary( - getSelectedLocPack(), - getChosenLayout(), - getChosenVariant(), - username, - enableSudo, - enableRoot, - currDesktop, - selectedDisk, - isEfi, - "grub-efi", - hostname, - ipv6, - enableTimeshift, - _diskType, - partitionInfo, - (value) { - setState(() { - _diskType = value; - //writeToLog("diskType: $_diskType"); - }); - }, - () { - setState(() { - _selectedIndex = _selectedIndex + 1; - }); - }, - runningSum, - () { - setState(() { - runningSum = true; - }); - }, + widget = SizedBox.expand( + child: FittedBox( + fit: BoxFit.contain, + alignment: Alignment.center, + child: SizedBox( + width: logicWidth, + height: logicHeight, + child: summary( + getSelectedLocPack(), + getChosenLayout(), + getChosenVariant(), + username, + enableSudo, + enableRoot, + currDesktop, + selectedDisk, + isEfi, + "grub-efi", + hostname, + ipv6, + enableTimeshift, + _diskType, + partitionInfo, + (value) { + setState(() { + _diskType = value; + //writeToLog("diskType: $_diskType"); + }); + }, + () { + setState(() { + _selectedIndex = _selectedIndex + 1; + }); + }, + runningSum, + () { + setState(() { + runningSum = true; + }); + }, + ), + ), + ), ); break; case 8: - widget = install( - getSelectedLocPack(), - getChosenLayout(), - getChosenVariant(), - username, - password, - enableSudo, - rootPass, - currDesktop, - selectedDisk, - isEfi, - isEfi ? "grub-efi" : "grub-legacy", - hostname, - ipv6, - enableTimeshift, - (value) { - setState(() { - if (value.compareTo(output) == 1) { - writeToLog(value.replaceAll(output, "")); - } - output = output + "\n" + value; - }); - }, - output, - running, - (value) { - setState(() { - running = value; - }); - }, - writeToLog, + widget = SizedBox.expand( + child: FittedBox( + fit: BoxFit.contain, + alignment: Alignment.center, + child: SizedBox( + width: logicWidth, + height: logicHeight, + child: install( + getSelectedLocPack(), + getChosenLayout(), + getChosenVariant(), + username, + password, + enableSudo, + rootPass, + currDesktop, + selectedDisk, + isEfi, + isEfi ? "grub-efi" : "grub-legacy", + hostname, + ipv6, + enableTimeshift, + (value) { + setState(() { + if (value.compareTo(output) == 1) { + writeToLog(value.replaceAll(output, "")); + } + output = output + "\n" + value; + }); + }, + output, + running, + (value) { + setState(() { + running = value; + }); + }, + writeToLog, + ), + ), + ), ); break; default: diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc index e71a16d..9f8c703 100644 --- a/linux/flutter/generated_plugin_registrant.cc +++ b/linux/flutter/generated_plugin_registrant.cc @@ -6,6 +6,10 @@ #include "generated_plugin_registrant.h" +#include void fl_register_plugins(FlPluginRegistry* registry) { + g_autoptr(FlPluginRegistrar) window_size_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "WindowSizePlugin"); + window_size_plugin_register_with_registrar(window_size_registrar); } diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake index 51436ae..9e12128 100644 --- a/linux/flutter/generated_plugins.cmake +++ b/linux/flutter/generated_plugins.cmake @@ -3,6 +3,7 @@ # list(APPEND FLUTTER_PLUGIN_LIST + window_size ) set(PLUGIN_BUNDLED_LIBRARIES) diff --git a/pubspec.lock b/pubspec.lock index 77540f5..d070d2f 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -289,6 +289,15 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.4.4" + window_size: + dependency: "direct main" + description: + path: "plugins/window_size" + ref: a738913c8ce2c9f47515382d40827e794a334274 + resolved-ref: a738913c8ce2c9f47515382d40827e794a334274 + url: "https://github.com/google/flutter-desktop-embedding.git" + source: git + version: "0.1.0" xdg_directories: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index f1337ab..16d9470 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -36,6 +36,12 @@ dependencies: cupertino_icons: ^1.0.2 process_run: ^0.12.3+2 path_provider: ^2.0.9 + window_size: + git: + url: https://github.com/google/flutter-desktop-embedding.git + path: plugins/window_size + ref: a738913c8ce2c9f47515382d40827e794a334274 + dev_dependencies: flutter_test: