mirror of
https://github.com/Relintai/gdfxr.git
synced 2025-04-20 01:43:13 +02:00
Add default filename for Save As dialog
Trailing number incremented. Co-Authored-By: Russell Matney <russell.matney@gmail.com>
This commit is contained in:
parent
576708bb4a
commit
4562f4b77c
@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
### Added
|
### Added
|
||||||
- Bit depth and sample rate import options.
|
- Bit depth and sample rate import options.
|
||||||
- Paste from JSXFR.
|
- Paste from JSXFR.
|
||||||
|
- Add default filename for Save As dialog, with trailing number incremented.
|
||||||
|
|
||||||
## [1.2.0] - 2022-10-13
|
## [1.2.0] - 2022-10-13
|
||||||
### Added
|
### Added
|
||||||
|
@ -2,6 +2,7 @@ tool
|
|||||||
extends Container
|
extends Container
|
||||||
|
|
||||||
enum ExtraOption { SAVE_AS, COPY, PASTE, PASTE_JSFXR, RECENT }
|
enum ExtraOption { SAVE_AS, COPY, PASTE, PASTE_JSFXR, RECENT }
|
||||||
|
enum DefaultFilename { EMPTY, GUESS_FOR_SAVE }
|
||||||
|
|
||||||
const SFXRConfig := preload("../SFXRConfig.gd")
|
const SFXRConfig := preload("../SFXRConfig.gd")
|
||||||
const SFXRGenerator := preload("../SFXRGenerator.gd")
|
const SFXRGenerator := preload("../SFXRGenerator.gd")
|
||||||
@ -135,11 +136,20 @@ func _popup_message(content: String) -> void:
|
|||||||
dialog.popup_centered()
|
dialog.popup_centered()
|
||||||
|
|
||||||
|
|
||||||
func _popup_file_dialog(mode: int, callback: String) -> void:
|
func _popup_file_dialog(mode: int, callback: String, default_filename: int = DefaultFilename.EMPTY) -> void:
|
||||||
var dialog := EditorFileDialog.new()
|
var dialog := EditorFileDialog.new()
|
||||||
add_child(dialog)
|
add_child(dialog)
|
||||||
dialog.access = EditorFileDialog.ACCESS_RESOURCES
|
dialog.access = EditorFileDialog.ACCESS_RESOURCES
|
||||||
dialog.mode = mode
|
dialog.mode = mode
|
||||||
|
|
||||||
|
match default_filename:
|
||||||
|
DefaultFilename.EMPTY:
|
||||||
|
pass
|
||||||
|
|
||||||
|
DefaultFilename.GUESS_FOR_SAVE:
|
||||||
|
if _path:
|
||||||
|
dialog.current_path = _generate_serial_path(_path)
|
||||||
|
|
||||||
dialog.add_filter("*.sfxr; %s" % translator.tr("SFXR Audio"))
|
dialog.add_filter("*.sfxr; %s" % translator.tr("SFXR Audio"))
|
||||||
dialog.connect("popup_hide", dialog, "queue_free")
|
dialog.connect("popup_hide", dialog, "queue_free")
|
||||||
dialog.connect("file_selected", self, callback)
|
dialog.connect("file_selected", self, callback)
|
||||||
@ -197,6 +207,37 @@ func _sync_ui() -> void:
|
|||||||
_syncing_ui = false
|
_syncing_ui = false
|
||||||
|
|
||||||
|
|
||||||
|
func _generate_serial_path(path: String) -> String:
|
||||||
|
var directory := Directory.new()
|
||||||
|
if directory.open(path.get_base_dir()) != OK:
|
||||||
|
return path
|
||||||
|
|
||||||
|
if not directory.file_exists(path.get_file()):
|
||||||
|
return path
|
||||||
|
|
||||||
|
var basename := path.get_basename()
|
||||||
|
var extension := path.get_extension()
|
||||||
|
|
||||||
|
# Extract trailing number.
|
||||||
|
var num_string: String
|
||||||
|
for i in range(basename.length() - 1, -1, -1):
|
||||||
|
var c: String = basename[i]
|
||||||
|
if "0" <= c and c <= "9":
|
||||||
|
num_string = c + num_string
|
||||||
|
else:
|
||||||
|
break
|
||||||
|
var number := num_string.to_int() if num_string else 0
|
||||||
|
var name_string: String = basename.substr(0, basename.length() - num_string.length())
|
||||||
|
|
||||||
|
while true:
|
||||||
|
number += 1
|
||||||
|
var attemp := "%s%d.%s" % [name_string, number, extension]
|
||||||
|
if not directory.file_exists(attemp):
|
||||||
|
return attemp
|
||||||
|
|
||||||
|
return path # Unreachable
|
||||||
|
|
||||||
|
|
||||||
func _on_param_changed(name, value):
|
func _on_param_changed(name, value):
|
||||||
if _syncing_ui:
|
if _syncing_ui:
|
||||||
return
|
return
|
||||||
@ -318,7 +359,7 @@ func _on_Extra_about_to_show():
|
|||||||
func _on_Extra_id_pressed(id: int) -> void:
|
func _on_Extra_id_pressed(id: int) -> void:
|
||||||
match id:
|
match id:
|
||||||
ExtraOption.SAVE_AS:
|
ExtraOption.SAVE_AS:
|
||||||
_popup_file_dialog(EditorFileDialog.MODE_SAVE_FILE, "_on_SaveAsDialog_confirmed")
|
_popup_file_dialog(EditorFileDialog.MODE_SAVE_FILE, "_on_SaveAsDialog_confirmed", DefaultFilename.GUESS_FOR_SAVE)
|
||||||
|
|
||||||
ExtraOption.COPY:
|
ExtraOption.COPY:
|
||||||
if not _config_clipboard:
|
if not _config_clipboard:
|
||||||
|
Loading…
Reference in New Issue
Block a user