-
Notifications
You must be signed in to change notification settings - Fork 693
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #942 from w1th0utnam3/master
Fix KDialog file open dialog and file filters
- Loading branch information
Showing
12 changed files
with
611 additions
and
269 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
# Contributing to File Picker | ||
|
||
:+1: :tada: First off, thanks for taking the time to contribute to _File Picker_! :tada: :+1: | ||
|
||
The following is a first version of guidelines for contributing to _File Picker_. Feel free to propose changes to this document in a pull request. | ||
|
||
## Issue a Pull Request | ||
|
||
* **Dart code only:** before creating a pull request, please **write unit tests** if you added changes to Dart code under `lib/` (Java/Objective-C code is currently not tested). Please ensure that the **code analysis** via `dart analyze` throws no errors. Please also make sure that your **code is formatted correctly** via `dart format`. You can take a look into our CI pipeline at `.github/workflows/main.yml` for further details. The CI pipeline is triggered automatically when you create a pull request on GitHub. All steps in our pipeline must run without errors. | ||
|
||
* Please **update the package version** in `pubspec.yaml` and `CHANGELOG.md`. We use [semantic versionining (SemVer)](https://semver.org/). TL;DR: increase the patch version when your pull request contains a bug fix. Increase the minor version when a new feature is added. Breaking changes to _File Picker_'s public API should result in an increase in the major version. | ||
|
||
* Please **update the changelog** in `CHANGELOG.md`. Add a new level two heading with the updated package version to the top of the document, e.g. `## major.minor.patch`. Below that, add another level four heading that notes the affected platform(s), e.g. `#### Desktop (Linux)` or `Android`, and describe your changes. If your pull request is associated to an issue, then please reference the issue. The changelog will be shown on https://pub.dev/packages/file_picker/changelog. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
import 'package:file_picker/file_picker.dart'; | ||
import 'package:file_picker/src/linux/kdialog_handler.dart'; | ||
import 'package:file_picker/src/linux/qarma_and_zenity_handler.dart'; | ||
|
||
abstract class DialogHandler { | ||
factory DialogHandler(String pathToExecutable) { | ||
pathToExecutable = pathToExecutable.toLowerCase(); | ||
|
||
if (pathToExecutable.endsWith('kdialog')) { | ||
return KDialogHandler(); | ||
} else if (pathToExecutable.endsWith('qarma') || | ||
pathToExecutable.endsWith('zenity')) { | ||
return QarmaAndZenityHandler(); | ||
} | ||
throw UnimplementedError( | ||
'DialogHandler for executable $pathToExecutable has not been implemented', | ||
); | ||
} | ||
|
||
/// Generates the command line arguments to open a dialog with the respective | ||
/// dialog tool (`kdialog`, `qarma`, or `zenity`). | ||
List<String> generateCommandLineArguments( | ||
String dialogTitle, { | ||
String fileFilter = '', | ||
String fileName = '', | ||
bool multipleFiles = false, | ||
bool pickDirectory = false, | ||
bool saveFile = false, | ||
}); | ||
|
||
/// Converts the specified combination of [type] and [allowedExtensions] into | ||
/// the format required by the respective dialog tool (`kdialog`, `qarma`, | ||
/// or `zenity`) to filter for specific file types. | ||
/// | ||
/// [allowedExtensions] must only be used in combination with [type] equal to | ||
/// [FileType.custom]. | ||
String fileTypeToFileFilter(FileType type, List<String>? allowedExtensions); | ||
|
||
/// Converts the result string (stdout) of `qarma`, `zenity` or `kdialog` | ||
/// into a [List<String>] of file paths. | ||
List<String> resultStringToFilePaths(String fileSelectionResult); | ||
} |
Oops, something went wrong.