Add drag-and-drop support for single file selection
Implemented functionality to handle single file drag-and-drop in the UI, including error handling for multiple files and directories. Updated localization files to support new messages related to drag-and-drop usage and errors.
This commit is contained in:
@@ -14,6 +14,7 @@ import (
|
||||
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/setting"
|
||||
"github.com/nicksnyder/go-i18n/v2/i18n"
|
||||
"image/color"
|
||||
"os"
|
||||
"path/filepath"
|
||||
)
|
||||
|
||||
@@ -195,6 +196,10 @@ func newFileForConversion(app kernel.AppContract) *fileForConversion {
|
||||
|
||||
buttonTitle := app.GetLocalizerService().GetMessage(&i18n.LocalizeConfig{
|
||||
MessageID: "choose",
|
||||
}) + "\n\r\n\r" + app.GetLocalizerService().GetMessage(&i18n.LocalizeConfig{
|
||||
MessageID: "or",
|
||||
}) + "\n\r\n\r" + app.GetLocalizerService().GetMessage(&i18n.LocalizeConfig{
|
||||
MessageID: "dragAndDrop1File",
|
||||
})
|
||||
|
||||
fileForConversion.message = canvas.NewText("", color.RGBA{R: 255, G: 0, B: 0, A: 255})
|
||||
@@ -225,10 +230,54 @@ func newFileForConversion(app kernel.AppContract) *fileForConversion {
|
||||
fileForConversion.eventSelectFile(nil)
|
||||
|
||||
listableURI := storage.NewFileURI(filepath.Dir(r.URI().Path()))
|
||||
locationURI, err = storage.ListerForURI(listableURI)
|
||||
locationURI, _ = storage.ListerForURI(listableURI)
|
||||
}, locationURI)
|
||||
})
|
||||
|
||||
app.GetWindow().SetOnDropped(func(position fyne.Position, uris []fyne.URI) {
|
||||
if len(uris) == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
if len(uris) > 1 {
|
||||
fileForConversion.message.Text = app.GetLocalizerService().GetMessage(&i18n.LocalizeConfig{
|
||||
MessageID: "errorDragAndDrop1File",
|
||||
})
|
||||
setStringErrorStyle(fileForConversion.message)
|
||||
fileForConversion.eventSelectFile(errors.New(fileForConversion.message.Text))
|
||||
return
|
||||
}
|
||||
|
||||
uri := uris[0]
|
||||
info, err := os.Stat(uri.Path())
|
||||
if err != nil {
|
||||
fileForConversion.message.Text = err.Error()
|
||||
setStringErrorStyle(fileForConversion.message)
|
||||
fileForConversion.eventSelectFile(err)
|
||||
return
|
||||
}
|
||||
if info.IsDir() {
|
||||
fileForConversion.message.Text = app.GetLocalizerService().GetMessage(&i18n.LocalizeConfig{
|
||||
MessageID: "errorIsFolder",
|
||||
})
|
||||
setStringErrorStyle(fileForConversion.message)
|
||||
fileForConversion.eventSelectFile(errors.New(fileForConversion.message.Text))
|
||||
return
|
||||
}
|
||||
|
||||
fileForConversion.file.Path = uri.Path()
|
||||
fileForConversion.file.Name = uri.Name()
|
||||
fileForConversion.file.Ext = uri.Extension()
|
||||
|
||||
fileForConversion.message.Text = uri.Path()
|
||||
setStringSuccessStyle(fileForConversion.message)
|
||||
|
||||
fileForConversion.eventSelectFile(nil)
|
||||
|
||||
listableURI := storage.NewFileURI(filepath.Dir(uri.Path()))
|
||||
locationURI, _ = storage.ListerForURI(listableURI)
|
||||
})
|
||||
|
||||
return fileForConversion
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user