model

package
v0.0.0-...-0424493 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 26, 2019 License: MIT Imports: 23 Imported by: 0

Documentation

Index

Constants

View Source
const (
	HomeName = "Home[~]"
	RootName = "Root[/]"
)

Default bookmark names

Variables

View Source
var (
	// RequestCh request user input
	RequestCh = make(chan *Request)

	// ResponseCh user response for request
	ResponseCh = make(chan string)
)

Functions

func LoaderString

func LoaderString(loader Loader) string

LoaderString return @xxx://

func SetDefault

func SetDefault(sh, pg, ed string)

SetDefault set default

Types

type BaseColumn

type BaseColumn struct {
	FileList
	Selector
	Marker
	Filterer
}

BaseColumn is a column in local file systems

func (*BaseColumn) MarkedOrSelected

func (bc *BaseColumn) MarkedOrSelected() []FileItem

MarkedOrSelected if have marks return marked else return selected

func (*BaseColumn) ToggleMarkAll

func (bc *BaseColumn) ToggleMarkAll()

ToggleMarkAll if have marked files clear them, else mark all

func (*BaseColumn) Update

func (bc *BaseColumn) Update()

Update column state

type BaseFileList

type BaseFileList struct {
	// contains filtered or unexported fields
}

BaseFileList a file list with back list

func (*BaseFileList) Files

func (fl *BaseFileList) Files() []FileItem

Files the files of file list

func (*BaseFileList) IsShowDetail

func (fl *BaseFileList) IsShowDetail() bool

IsShowDetail is detail shown

func (*BaseFileList) Order

func (fl *BaseFileList) Order() Order

Order the current order

func (*BaseFileList) Sort

func (fl *BaseFileList) Sort(order Order)

Sort files

func (*BaseFileList) ToggleDetail

func (fl *BaseFileList) ToggleDetail()

ToggleDetail toggle show detail

type BaseFilter

type BaseFilter struct {
	*BaseFileList
	// contains filtered or unexported fields
}

BaseFilter base filter

func (*BaseFilter) DoFilter

func (bf *BaseFilter) DoFilter()

DoFilter apply filter

func (*BaseFilter) Filter

func (bf *BaseFilter) Filter() string

Filter get the filter

func (*BaseFilter) IsShowHidden

func (bf *BaseFilter) IsShowHidden() bool

IsShowHidden if to show hidden file

func (*BaseFilter) SetFilter

func (bf *BaseFilter) SetFilter(filter string)

SetFilter set the filter

func (*BaseFilter) ToggleHidden

func (bf *BaseFilter) ToggleHidden()

ToggleHidden toggle show hidden file

type BaseMarker

type BaseMarker struct {
	*BaseSelector
	// contains filtered or unexported fields
}

BaseMarker base marker

func (*BaseMarker) ClearMark

func (bm *BaseMarker) ClearMark()

ClearMark clear all markes

func (*BaseMarker) IsMarked

func (bm *BaseMarker) IsMarked(idx int) bool

IsMarked determine if the idx is selected

func (*BaseMarker) Mark

func (bm *BaseMarker) Mark(idx int)

Mark add mark

func (*BaseMarker) Marked

func (bm *BaseMarker) Marked() []FileItem

Marked get marked files

func (*BaseMarker) ToggleMark

func (bm *BaseMarker) ToggleMark()

ToggleMark toggle mark current file

func (*BaseMarker) Unmark

func (bm *BaseMarker) Unmark(index int)

Unmark index

type BaseSelector

type BaseSelector struct {
	*BaseFileList
	// contains filtered or unexported fields
}

BaseSelector base selector

func (*BaseSelector) Current

func (co *BaseSelector) Current() int

Current select index

func (*BaseSelector) CurrentFile

func (co *BaseSelector) CurrentFile() (FileItem, error)

CurrentFile current selected file/dir

func (*BaseSelector) Move

func (co *BaseSelector) Move(delta int) bool

Move current select index by delta(can be negtive)

func (*BaseSelector) Select

func (co *BaseSelector) Select(idx int) bool

Select by index

func (*BaseSelector) SelectByName

func (co *BaseSelector) SelectByName(name string) bool

SelectByName select by name

func (*BaseSelector) SelectFirst

func (co *BaseSelector) SelectFirst() bool

SelectFirst move select to first

func (*BaseSelector) SelectLast

func (co *BaseSelector) SelectLast() bool

SelectLast move select to last

type BatchTask

type BatchTask interface {
	CurrentTask() Task
	Task
}

BatchTask mutiple tasks

func NewBatchTask

func NewBatchTask(name string, tasks []Task) BatchTask

NewBatchTask create batch task

type Bookmark

type Bookmark struct {
	Names    []string
	MaxWidth int
	// contains filtered or unexported fields
}

Bookmark manager

func NewBookmark

func NewBookmark(path string) *Bookmark

NewBookmark create bookmark

func (*Bookmark) Add

func (b *Bookmark) Add(name, value string) error

Add a new bookmark

func (*Bookmark) Delete

func (b *Bookmark) Delete(name string) error

Delete a bookmark

func (*Bookmark) Get

func (b *Bookmark) Get(name string) (string, bool)

Get value by name

func (*Bookmark) IsFixed

func (b *Bookmark) IsFixed(name string) bool

IsFixed is the name fixed

type CloseResult

type CloseResult uint8

CloseResult of Group.CloseDir

const (
	CloseSuccess CloseResult = iota
	CloseToParent
	CloseNothing
)

Close types

type Column

type Column interface {
	File() FileItem
	Path() string
	Update()
	Refresh(FileItem) error
	MarkedOrSelected() []FileItem
	ToggleMarkAll()

	FileList
	Filterer
	Marker
	Selector
}

Column represent a directory

func NewLocalColumn

func NewLocalColumn(item FileItem) (Column, error)

NewLocalColumn create column

type DefaultBatchTask

type DefaultBatchTask struct {
	*DefaultTask
	// contains filtered or unexported fields
}

DefaultBatchTask default batch task

func (*DefaultBatchTask) CurrentTask

func (bt *DefaultBatchTask) CurrentTask() Task

CurrentTask the current task

func (*DefaultBatchTask) Start

func (bt *DefaultBatchTask) Start(quit <-chan bool, err chan<- error)

Start task one by one

type DefaultProgresser

type DefaultProgresser struct {
	// contains filtered or unexported fields
}

DefaultProgresser a progress notifier

func (*DefaultProgresser) Attach

func (dp *DefaultProgresser) Attach(listener ProgressListener) Remover

Attach attach notifier

func (*DefaultProgresser) Count

func (dp *DefaultProgresser) Count() int

Count progress count

func (*DefaultProgresser) Current

func (dp *DefaultProgresser) Current() int

Current current progress

func (*DefaultProgresser) End

func (dp *DefaultProgresser) End()

End close all listeners

func (*DefaultProgresser) Progress

func (dp *DefaultProgresser) Progress(c int)

Progress set the progress

type DefaultTask

type DefaultTask struct {
	*DefaultProgresser
	// contains filtered or unexported fields
}

DefaultTask default task

func (*DefaultTask) Name

func (dt *DefaultTask) Name() string

Name return task name

func (*DefaultTask) Start

func (dt *DefaultTask) Start(quit <-chan bool, err chan<- error)

Start start the task

type DirOp

type DirOp interface {
	Read() ([]FileItem, error)
	Write([]FileItem) (Task, error)
	Move([]FileItem) error
	NewFile(string) error
	NewDir(string) error
	To(string) (FileItem, error)
	Shell() error
	Op
}

DirOp dir operators

type FileItem

type FileItem interface {
	Path() string
	Name() string
	Size() int64
	ModTime() time.Time
	Mode() os.FileMode
	IsDir() bool
	Link() (Link, bool)
	Sys() interface{}
}

FileItem represent a file, with absolute path

func Load

func Load(path string) (FileItem, error)

Load file item from path

func LoadFile

func LoadFile(item FileItem) (FileItem, error)

LoadFile load a file as dir, such as .tar file

type FileList

type FileList interface {
	Files() []FileItem
	Sort(order Order)
	Order() Order
	ToggleDetail()
	IsShowDetail() bool
}

FileList sortable file list

type FileOp

type FileOp interface {
	Reader() (io.ReadCloser, error)
	Writer(int) (io.WriteCloser, error)
	View() error
	Edit() error
	Op
}

FileOp file operators

type Filterer

type Filterer interface {
	ToggleHidden()
	IsShowHidden() bool
	Filter() string
	SetFilter(filter string)
	DoFilter()
}

Filterer content can be filtered

type Group

type Group interface {
	Path() string
	Columns() []Column
	Current() Column
	Shift() bool
	OpenDir() error
	OpenRoot(root string) error
	CloseDir() (CloseResult, error)
	JumpTo(colIdx, fileIdx int) bool
	Refresh() error
	Record()
	Restore()
}

Group is a column group

func NewLocalGroup

func NewLocalGroup(path string) (Group, error)

NewLocalGroup create local group

type Link interface {
	IsBroken() bool
	Target() string
	IsDir() bool
}

Link symbolic link

type Loader

type Loader interface {
	Name() string
	Seperator() string
	Support(FileItem) bool
	Create(FileItem) (FileItem, error)
}

Loader such as ssh, zip, tar, tgz

type LocalColumn

type LocalColumn struct {
	*BaseColumn
	// contains filtered or unexported fields
}

LocalColumn use local file system

func (*LocalColumn) File

func (bc *LocalColumn) File() FileItem

File the underground file

func (*LocalColumn) Path

func (bc *LocalColumn) Path() string

Path the underground path of column

func (*LocalColumn) Refresh

func (bc *LocalColumn) Refresh(item FileItem) error

Refresh the specified path

type LocalGroup

type LocalGroup struct {
	// contains filtered or unexported fields
}

LocalGroup local group

func (*LocalGroup) CloseDir

func (g *LocalGroup) CloseDir() (CloseResult, error)

CloseDir close current dir

func (*LocalGroup) Columns

func (g *LocalGroup) Columns() []Column

Columns get columns

func (*LocalGroup) Current

func (g *LocalGroup) Current() Column

Current column

func (*LocalGroup) JumpTo

func (g *LocalGroup) JumpTo(colIdx, fileIdx int) bool

JumpTo a file

func (*LocalGroup) OpenDir

func (g *LocalGroup) OpenDir() error

OpenDir selected dir

func (*LocalGroup) OpenRoot

func (g *LocalGroup) OpenRoot(root string) error

OpenRoot open path in first column

func (*LocalGroup) Path

func (g *LocalGroup) Path() string

Path current path

func (*LocalGroup) Record

func (g *LocalGroup) Record()

Record record current path for jump back

func (*LocalGroup) Refresh

func (g *LocalGroup) Refresh() error

Refresh current dirs

func (*LocalGroup) Restore

func (g *LocalGroup) Restore()

Restore to previous status

func (*LocalGroup) Shift

func (g *LocalGroup) Shift() bool

Shift column

type Marker

type Marker interface {
	Mark(idx int)
	Unmark(idx int)
	ToggleMark()
	Marked() []FileItem
	IsMarked(idx int) bool
	ClearMark()
}

Marker content can be marked

type Op

type Op interface {
	Dir() (FileItem, error)
	Rename(string) error
	Delete() error
	Open() error
}

Op common operators for both file and dir

type Order

type Order uint8

Order type

const (
	OrderByName Order = iota
	OrderByMTime
	OrderBySize
)

Order types

type PathItem

type PathItem struct {
	Loader, Path, Seperator string
}

PathItem parse result

func ParsePath

func ParsePath(path string) []*PathItem

ParsePath parse path /a/b/c.zip@zip:///hello/path /a/b/c.fff@ssh:///opt/c.tgz@tgz:///hello/path

type ProgressListener

type ProgressListener interface {
	Notify(int)
	End()
}

ProgressListener listener for progresser

func NewListener

func NewListener(notifier func(int), end func()) ProgressListener

NewListener create listener

type Progresser

type Progresser interface {
	Count() int
	Current() int
	Progress(int)
	Attach(ProgressListener) Remover
	End()
}

Progresser a progress notifier

type Remover

type Remover interface {
	Remove()
}

Remover remove something from something

type Request

type Request struct {
	Title      string
	IsPassword bool
}

Request content

type Selector

type Selector interface {
	Current() int
	Select(idx int) bool
	SelectByName(name string) bool
	SelectFirst() bool
	SelectLast() bool
	Move(delta int) bool
	CurrentFile() (FileItem, error)
}

Selector content can be selected

type Task

type Task interface {
	Name() string
	Start(<-chan bool, chan<- error)
	Progresser
}

Task a task

func NewTask

func NewTask(name string, action func(chan<- int, <-chan bool, chan<- error)) Task

NewTask create task

type TaskListener

type TaskListener interface {
	Submitted(Task)
	Finished(Task)
	Progress(Task)
}

TaskListener listener for task manager

func NewTaskListener

func NewTaskListener(submitted, finished, progress func(Task)) TaskListener

NewTaskListener create task listener

type TaskManager

type TaskManager struct {
	Tasks []Task
	// contains filtered or unexported fields
}

TaskManager manage tasks

func NewTaskManager

func NewTaskManager() *TaskManager

NewTaskManager create task manager

func (*TaskManager) Attach

func (tm *TaskManager) Attach(tl TaskListener) Remover

Attach listener

func (*TaskManager) Cancel

func (tm *TaskManager) Cancel(task Task)

Cancel task

func (*TaskManager) Submit

func (tm *TaskManager) Submit(task Task) <-chan string

Submit a task to execute

type Workspace

type Workspace struct {
	Groups   []Group
	Clip     []FileItem
	Tm       *TaskManager
	Current  int
	Bookmark *Bookmark
	// contains filtered or unexported fields
}

Workspace hold all state

func NewWorkspace

func NewWorkspace(maxGroups int, wd, configDir string) *Workspace

NewWorkspace create workspace

func (*Workspace) CurrentGroup

func (w *Workspace) CurrentGroup() Group

CurrentGroup get the current group in use

func (*Workspace) IsShowBookmark

func (w *Workspace) IsShowBookmark() bool

IsShowBookmark if to show bookmark

func (*Workspace) IsShowClipDetail

func (w *Workspace) IsShowClipDetail() bool

IsShowClipDetail if to show clip detail

func (*Workspace) IsShowTaskDetail

func (w *Workspace) IsShowTaskDetail() bool

IsShowTaskDetail if to show clip detail

func (*Workspace) ShowClipDetail

func (w *Workspace) ShowClipDetail(show bool)

ShowClipDetail if to show clip detail

func (*Workspace) ShowTaskDetail

func (w *Workspace) ShowTaskDetail(show bool)

ShowTaskDetail if to show task detail

func (*Workspace) SwitchTo

func (w *Workspace) SwitchTo(idx int) Group

SwitchTo change group

func (*Workspace) ToggleBookmark

func (w *Workspace) ToggleBookmark()

ToggleBookmark toggle bookmark

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL