mirror of
https://github.com/zoriya/bubbles.git
synced 2026-08-05 04:36:07 +00:00
feat(filepicker): optional file permissions and file size
This commit is contained in:
@@ -5,6 +5,7 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"sort"
|
"sort"
|
||||||
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
@@ -35,6 +36,8 @@ func New() Model {
|
|||||||
Cursor: ">",
|
Cursor: ">",
|
||||||
AllowedTypes: []string{},
|
AllowedTypes: []string{},
|
||||||
selected: 0,
|
selected: 0,
|
||||||
|
ShowPermissions: true,
|
||||||
|
ShowSize: true,
|
||||||
ShowHidden: false,
|
ShowHidden: false,
|
||||||
DirAllowed: false,
|
DirAllowed: false,
|
||||||
FileAllowed: true,
|
FileAllowed: true,
|
||||||
@@ -145,11 +148,13 @@ type Model struct {
|
|||||||
// If empty the user may select any file.
|
// If empty the user may select any file.
|
||||||
AllowedTypes []string
|
AllowedTypes []string
|
||||||
|
|
||||||
KeyMap KeyMap
|
KeyMap KeyMap
|
||||||
files []os.DirEntry
|
files []os.DirEntry
|
||||||
ShowHidden bool
|
ShowPermissions bool
|
||||||
DirAllowed bool
|
ShowSize bool
|
||||||
FileAllowed bool
|
ShowHidden bool
|
||||||
|
DirAllowed bool
|
||||||
|
FileAllowed bool
|
||||||
|
|
||||||
FileSelected string
|
FileSelected string
|
||||||
selected int
|
selected int
|
||||||
@@ -382,9 +387,16 @@ func (m Model) View() string {
|
|||||||
disabled := !m.canSelect(name) && !f.IsDir()
|
disabled := !m.canSelect(name) && !f.IsDir()
|
||||||
|
|
||||||
if m.selected == i {
|
if m.selected == i {
|
||||||
selected := fmt.Sprintf(" %s %"+fmt.Sprint(m.Styles.FileSize.GetWidth())+"s %s", info.Mode().String(), size, name)
|
selected := ""
|
||||||
|
if m.ShowPermissions {
|
||||||
|
selected += " " + info.Mode().String()
|
||||||
|
}
|
||||||
|
if m.ShowSize {
|
||||||
|
selected += " " + fmt.Sprintf("%"+strconv.Itoa(m.Styles.FileSize.GetWidth())+"s", size)
|
||||||
|
}
|
||||||
|
selected += " " + name
|
||||||
if isSymlink {
|
if isSymlink {
|
||||||
selected = fmt.Sprintf("%s → %s", selected, symlinkPath)
|
selected += " → " + symlinkPath
|
||||||
}
|
}
|
||||||
if disabled {
|
if disabled {
|
||||||
s.WriteString(m.Styles.DisabledSelected.Render(m.Cursor) + m.Styles.DisabledSelected.Render(selected))
|
s.WriteString(m.Styles.DisabledSelected.Render(m.Cursor) + m.Styles.DisabledSelected.Render(selected))
|
||||||
@@ -405,10 +417,17 @@ func (m Model) View() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fileName := style.Render(name)
|
fileName := style.Render(name)
|
||||||
|
s.WriteString(m.Styles.Cursor.Render(" "))
|
||||||
if isSymlink {
|
if isSymlink {
|
||||||
fileName = fmt.Sprintf("%s → %s", fileName, symlinkPath)
|
fileName += " → " + symlinkPath
|
||||||
}
|
}
|
||||||
s.WriteString(fmt.Sprintf(" %s %s %s", m.Styles.Permission.Render(info.Mode().String()), m.Styles.FileSize.Render(size), fileName))
|
if m.ShowPermissions {
|
||||||
|
s.WriteString(" " + m.Styles.Permission.Render(info.Mode().String()))
|
||||||
|
}
|
||||||
|
if m.ShowSize {
|
||||||
|
s.WriteString(" " + m.Styles.FileSize.Render(size))
|
||||||
|
}
|
||||||
|
s.WriteString(" " + fileName)
|
||||||
s.WriteRune('\n')
|
s.WriteRune('\n')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user