Enha: extentions for filepicker

This commit is contained in:
Grail Finder
2025-11-20 23:25:50 +03:00
parent 6e73513aac
commit e8413ce613
3 changed files with 42 additions and 15 deletions

View File

@@ -28,6 +28,7 @@ STT_LANG = "en" # Language for speech recognition (for WHISPER_BINARY mode)
STT_SR = 16000 # Sample rate for audio recording
DBPATH = "gflt.db"
FilePickerDir = "." # Directory where file picker should start
FilePickerExts = "png,jpg,jpeg,gif,webp" # Comma-separated list of allowed file extensions for file picker
#
FetchModelNameAPI = "http://localhost:8080/v1/models"
# external search tool

View File

@@ -65,6 +65,7 @@ type Config struct {
STT_LANG string `toml:"STT_LANG"`
DBPATH string `toml:"DBPATH"`
FilePickerDir string `toml:"FilePickerDir"`
FilePickerExts string `toml:"FilePickerExts"`
}
func LoadConfigOrDefault(fn string) *Config {
@@ -101,6 +102,7 @@ func LoadConfigOrDefault(fn string) *Config {
config.FetchModelNameAPI = "http://localhost:8080/v1/models"
config.STT_SR = 16000
config.FilePickerDir = "." // Default to current directory
config.FilePickerExts = "png,jpg,jpeg,gif,webp" // Default allowed extensions
}
config.CurrentAPI = config.ChatAPI
config.APIMap = map[string]string{

View File

@@ -563,6 +563,27 @@ func makeFilePicker() *tview.Flex {
// Track currently displayed directory (changes as user navigates)
currentDisplayDir := startDir
// Helper function to check if a file has an allowed extension from config
hasAllowedExtension := func(filename string) bool {
// If no allowed extensions are specified in config, allow all files
if cfg.FilePickerExts == "" {
return true
}
// Split the allowed extensions from the config string
allowedExts := strings.Split(cfg.FilePickerExts, ",")
lowerFilename := strings.ToLower(strings.TrimSpace(filename))
for _, ext := range allowedExts {
ext = strings.TrimSpace(ext) // Remove any whitespace around the extension
if ext != "" && strings.HasSuffix(lowerFilename, "."+ext) {
return true
}
}
return false
}
// Helper function to check if a file is an image
isImageFile := func(filename string) bool {
imageExtensions := []string{".png", ".jpg", ".jpeg", ".gif", ".webp", ".bmp", ".tiff", ".svg"}
@@ -690,6 +711,8 @@ func makeFilePicker() *tview.Flex {
statusView.SetText("Current: " + newDir)
})
} else {
// Only show files that have allowed extensions (from config)
if hasAllowedExtension(name) {
// Capture the file name for the closure to avoid loop variable issues
fileName := name
fullFilePath := path.Join(dir, fileName)
@@ -708,6 +731,7 @@ func makeFilePicker() *tview.Flex {
})
}
}
}
statusView.SetText("Current: " + dir)
}