Change out the file selector

This commit is contained in:
zontreck 2025-02-03 11:54:48 -07:00
parent 887a0638cd
commit 31d6cee09b
11 changed files with 42 additions and 22 deletions

View file

@ -29,6 +29,7 @@ The following is the build instructions for this project.
4. To build the installer you will need Inno Setup installed. 4. To build the installer you will need Inno Setup installed.
5. Add the path you installed IS to your path. 5. Add the path you installed IS to your path.
6. Run compile.bat to both build and generate the setup file which will be placed into the out folder. 6. Run compile.bat to both build and generate the setup file which will be placed into the out folder.
7. Enable Developer Mode if you wish to run the output
# MacOS # MacOS
@ -36,6 +37,6 @@ The following is the build instructions for this project.
2. Install XCode 2. Install XCode
3. Install any necessary command line developer tools from XCode 3. Install any necessary command line developer tools from XCode
4. Developer mode? 4. Developer mode?
5. Run the command? `flutter build mac` or `flutter build macos` 5. Run the command `flutter build macos`
**Testing needed** I do not own a Mac, testing by a Mac user will be required. **Testing needed** I do not own a Mac, testing by a Mac user will be required.

View file

@ -12,7 +12,7 @@ Future<int> main(List<String> args) async {
if (parsed.hasArg("help") || parsed.count == 0) { if (parsed.hasArg("help") || parsed.count == 0) {
// Print help information // Print help information
print( print(
"NBT Editor Command Line Interface\nCopyright 2025 Piccari Creations\nLicensed under the GPL\nVersion: ${VERSION}\n\n"); "NBT Editor Command Line Interface\nCopyright 2025 Piccari Creations\nLicensed under the GPL\nVersion: $VERSION\n\n");
var defaults = ArgumentsBuilder.builder() var defaults = ArgumentsBuilder.builder()
.withArgument(BoolArgument(name: "help", value: null)) .withArgument(BoolArgument(name: "help", value: null))

View file

@ -1 +1 @@
const VERSION = "1.1.020225+1616"; const VERSION = "1.1.020325+1153";

View file

@ -1,6 +1,6 @@
import 'dart:typed_data'; import 'dart:typed_data';
import 'package:file_picker/file_picker.dart'; import 'package:file_selector/file_selector.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_treeview/flutter_treeview.dart'; import 'package:flutter_treeview/flutter_treeview.dart';
@ -16,7 +16,6 @@ import 'package:nbteditor/Constants.dart';
import 'package:nbteditor/Consts2.dart'; import 'package:nbteditor/Consts2.dart';
import 'package:nbteditor/SessionData.dart'; import 'package:nbteditor/SessionData.dart';
import 'package:nbteditor/main.dart'; import 'package:nbteditor/main.dart';
import 'package:nbteditor/pages/EditValue.dart';
import 'package:nbteditor/tags/ArrayEntry.dart'; import 'package:nbteditor/tags/ArrayEntry.dart';
import 'package:nbteditor/tags/CompoundTag.dart'; import 'package:nbteditor/tags/CompoundTag.dart';
import 'package:nbteditor/tags/Tag.dart'; import 'package:nbteditor/tags/Tag.dart';
@ -118,12 +117,15 @@ class EditorState extends State<Editor> {
Navigator.pushNamed(context, "/perms"); Navigator.pushNamed(context, "/perms");
return; return;
} }
XTypeGroup typeGroup = const XTypeGroup(
label: 'NBT', extensions: <String>["nbt", "snbt", "dat"]);
var result =
await openFile(acceptedTypeGroups: <XTypeGroup>[typeGroup]);
String? filePath; String? filePath;
var result = await FilePicker.platform.pickFiles();
if (result != null) { if (result != null) {
// Do something with the selected file path // Do something with the selected file path
print('Selected file path: $filePath'); print('Selected file path: $filePath');
filePath = result.files.first.path; filePath = result.path;
} else { } else {
// User canceled the picker // User canceled the picker
print('File selection canceled.'); print('File selection canceled.');
@ -136,8 +138,9 @@ class EditorState extends State<Editor> {
CompoundTag ct = CompoundTag(); CompoundTag ct = CompoundTag();
if (filePath.endsWith(".txt") || filePath.endsWith(".snbt")) { if (filePath.endsWith(".txt") || filePath.endsWith(".snbt")) {
ct = await SnbtIo.readFromFile(filePath) as CompoundTag; ct = await SnbtIo.readFromFile(filePath) as CompoundTag;
} else } else {
ct = await NbtIo.read(filePath); ct = await NbtIo.read(filePath);
}
SessionData.ROOT_TAG = ct; SessionData.ROOT_TAG = ct;
} }
@ -190,11 +193,11 @@ class EditorState extends State<Editor> {
// Prompt for where to save // Prompt for where to save
print("Begin picking file to save to"); print("Begin picking file to save to");
var FSL = await FilePicker.platform.saveFile(bytes: Uint8List(0)); var FSL = await getSaveLocation();
String? filePath; String? filePath;
if (FSL != null) { if (FSL != null) {
filePath = FSL; filePath = FSL.path;
} }
if (filePath == null) { if (filePath == null) {
@ -203,12 +206,15 @@ class EditorState extends State<Editor> {
} }
print(filePath); print(filePath);
CompoundTag tag = controller.children[0].data as CompoundTag; CompoundTag tag = controller.children[0].data as CompoundTag;
Uint8List data = Uint8List(0);
if (result == null) { if (result == null) {
// Save uncompressed // Save uncompressed
NbtIo.write(filePath, tag); data = await NbtIo.writeToStream(tag);
} else { } else {
NbtIo.writeCompressed(filePath, tag); data = await NbtIo.writeToStreamCompressed(tag);
} }
var dataFile = XFile.fromData(data);
await dataFile.saveTo(filePath);
}, },
), ),
ListTile( ListTile(
@ -224,11 +230,11 @@ class EditorState extends State<Editor> {
} }
// Prompt for where to save // Prompt for where to save
print("Begin picking file to save to"); print("Begin picking file to save to");
var FSL = await FilePicker.platform.saveFile(bytes: Uint8List(0)); var FSL = await getSaveLocation();
String? filePath; String? filePath;
if (FSL != null) { if (FSL != null) {
filePath = FSL; filePath = FSL.path;
} }
if (filePath == null) { if (filePath == null) {
@ -236,9 +242,13 @@ class EditorState extends State<Editor> {
return; return;
} }
print(filePath); print(filePath);
Uint8List data = Uint8List(0);
SnbtIo.writeToFile( String str = SnbtIo.writeToString(
filePath, controller.children[0].data as CompoundTag); controller.children[0].data as CompoundTag);
var dataFile = XFile.fromData(Uint8List.fromList(str.codeUnits));
await dataFile.saveTo(filePath);
}, },
) )
]), ]),

View file

@ -7,7 +7,6 @@ import 'package:libac_dart/nbt/impl/CompoundTag.dart';
import 'package:libacflutter/Prompt.dart'; import 'package:libacflutter/Prompt.dart';
import 'package:nbteditor/Constants.dart'; import 'package:nbteditor/Constants.dart';
import 'package:nbteditor/SessionData.dart'; import 'package:nbteditor/SessionData.dart';
import 'package:nbteditor/pages/EditValue.dart';
class SnbtEdit extends StatefulWidget { class SnbtEdit extends StatefulWidget {
const SnbtEdit({super.key}); const SnbtEdit({super.key});
@ -46,7 +45,7 @@ class SnbtState extends State<SnbtEdit> {
type: InputPromptType.Text); type: InputPromptType.Text);
}); });
}, },
icon: Icon(CupertinoIcons.search)) icon: const Icon(CupertinoIcons.search))
], ],
), ),
floatingActionButton: ElevatedButton( floatingActionButton: ElevatedButton(

View file

@ -6,9 +6,13 @@
#include "generated_plugin_registrant.h" #include "generated_plugin_registrant.h"
#include <file_selector_linux/file_selector_plugin.h>
#include <url_launcher_linux/url_launcher_plugin.h> #include <url_launcher_linux/url_launcher_plugin.h>
void fl_register_plugins(FlPluginRegistry* registry) { void fl_register_plugins(FlPluginRegistry* registry) {
g_autoptr(FlPluginRegistrar) file_selector_linux_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "FileSelectorPlugin");
file_selector_plugin_register_with_registrar(file_selector_linux_registrar);
g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar = g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin"); fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin");
url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar); url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar);

View file

@ -3,6 +3,7 @@
# #
list(APPEND FLUTTER_PLUGIN_LIST list(APPEND FLUTTER_PLUGIN_LIST
file_selector_linux
url_launcher_linux url_launcher_linux
) )

View file

@ -5,10 +5,10 @@
import FlutterMacOS import FlutterMacOS
import Foundation import Foundation
import file_picker import file_selector_macos
import url_launcher_macos import url_launcher_macos
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
FilePickerPlugin.register(with: registry.registrar(forPlugin: "FilePickerPlugin")) FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin"))
UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin"))
} }

View file

@ -1,13 +1,12 @@
name: nbteditor name: nbteditor
description: A Minecraft NBT Editor written in Flutter description: A Minecraft NBT Editor written in Flutter
publish_to: "none" publish_to: "none"
version: 1.1.020225+1616 version: 1.1.020325+1153
environment: environment:
sdk: ^3.6.1 sdk: ^3.6.1
dependencies: dependencies:
file_picker: ^8.0.6
flutter: flutter:
sdk: flutter sdk: flutter
flutter_code_editor: ^0.3.2 flutter_code_editor: ^0.3.2
@ -23,7 +22,9 @@ dependencies:
libacflutter: libacflutter:
hosted: https://git.zontreck.com/api/packages/AriasCreations/pub/ hosted: https://git.zontreck.com/api/packages/AriasCreations/pub/
version: ^1.0.013125+1423 version: ^1.0.013125+1423
file_selector: ^1.0.3
flutter_highlight: any
dev_dependencies: dev_dependencies:
flutter_test: flutter_test:
sdk: flutter sdk: flutter

View file

@ -6,10 +6,13 @@
#include "generated_plugin_registrant.h" #include "generated_plugin_registrant.h"
#include <file_selector_windows/file_selector_windows.h>
#include <permission_handler_windows/permission_handler_windows_plugin.h> #include <permission_handler_windows/permission_handler_windows_plugin.h>
#include <url_launcher_windows/url_launcher_windows.h> #include <url_launcher_windows/url_launcher_windows.h>
void RegisterPlugins(flutter::PluginRegistry* registry) { void RegisterPlugins(flutter::PluginRegistry* registry) {
FileSelectorWindowsRegisterWithRegistrar(
registry->GetRegistrarForPlugin("FileSelectorWindows"));
PermissionHandlerWindowsPluginRegisterWithRegistrar( PermissionHandlerWindowsPluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("PermissionHandlerWindowsPlugin")); registry->GetRegistrarForPlugin("PermissionHandlerWindowsPlugin"));
UrlLauncherWindowsRegisterWithRegistrar( UrlLauncherWindowsRegisterWithRegistrar(

View file

@ -3,6 +3,7 @@
# #
list(APPEND FLUTTER_PLUGIN_LIST list(APPEND FLUTTER_PLUGIN_LIST
file_selector_windows
permission_handler_windows permission_handler_windows
url_launcher_windows url_launcher_windows
) )