mirror of
https://github.com/rivo/tview.git
synced 2024-11-19 03:25:34 +00:00
commit
db90355feb
29
table.go
29
table.go
@ -130,6 +130,11 @@ type Table struct {
|
|||||||
// Likewise for entire columns.
|
// Likewise for entire columns.
|
||||||
selected func(row, column int)
|
selected func(row, column int)
|
||||||
|
|
||||||
|
// An optional function which gets called when the user changes the selection.
|
||||||
|
// If entire rows selected, the column value is undefined.
|
||||||
|
// Likewise for entire columns.
|
||||||
|
selectionChanged func(row, column int)
|
||||||
|
|
||||||
// An optional function which gets called when the user presses Escape, Tab,
|
// An optional function which gets called when the user presses Escape, Tab,
|
||||||
// or Backtab. Also when the user presses Enter if nothing is selectable.
|
// or Backtab. Also when the user presses Enter if nothing is selectable.
|
||||||
done func(key tcell.Key)
|
done func(key tcell.Key)
|
||||||
@ -203,6 +208,13 @@ func (t *Table) GetSelectable() (rows, columns bool) {
|
|||||||
return t.rowsSelectable, t.columnsSelectable
|
return t.rowsSelectable, t.columnsSelectable
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetSelection returns the position of the current selection.
|
||||||
|
// If entire rows are selected, the column index is undefined.
|
||||||
|
// Likewise for entire columns.
|
||||||
|
func (t *Table) GetSelection() (row, column int) {
|
||||||
|
return t.selectedRow, t.selectedColumn
|
||||||
|
}
|
||||||
|
|
||||||
// Select sets the selected cell. Depending on the selection settings
|
// Select sets the selected cell. Depending on the selection settings
|
||||||
// specified via SetSelectable(), this may be an entire row or column, or even
|
// specified via SetSelectable(), this may be an entire row or column, or even
|
||||||
// ignored completely.
|
// ignored completely.
|
||||||
@ -230,6 +242,15 @@ func (t *Table) SetSelectedFunc(handler func(row, column int)) *Table {
|
|||||||
return t
|
return t
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetSelectionChangedFunc sets a handler which is called whenever the user changes
|
||||||
|
// selected cell/row/column. The handler receives the position of the selection.
|
||||||
|
// If entire rows are selected, the column index is undefined.
|
||||||
|
// Likewise for entire columns.
|
||||||
|
func (t *Table) SetSelectionChangedFunc(handler func(row, column int)) *Table {
|
||||||
|
t.selectionChanged = handler
|
||||||
|
return t
|
||||||
|
}
|
||||||
|
|
||||||
// SetDoneFunc sets a handler which is called whenever the user presses the
|
// SetDoneFunc sets a handler which is called whenever the user presses the
|
||||||
// Escape, Tab, or Backtab key. If nothing is selected, it is also called when
|
// Escape, Tab, or Backtab key. If nothing is selected, it is also called when
|
||||||
// user presses the Enter key (because pressing Enter on a selection triggers
|
// user presses the Enter key (because pressing Enter on a selection triggers
|
||||||
@ -637,6 +658,9 @@ func (t *Table) InputHandler() func(event *tcell.EventKey, setFocus func(p Primi
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var previouslySelectedRow = t.selectedRow
|
||||||
|
var previouslySelectedColumn = t.selectedColumn
|
||||||
|
|
||||||
// Movement functions.
|
// Movement functions.
|
||||||
var (
|
var (
|
||||||
getCell = func(row, column int) *TableCell {
|
getCell = func(row, column int) *TableCell {
|
||||||
@ -819,5 +843,10 @@ func (t *Table) InputHandler() func(event *tcell.EventKey, setFocus func(p Primi
|
|||||||
t.selected(t.selectedRow, t.selectedColumn)
|
t.selected(t.selectedRow, t.selectedColumn)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if t.selectionChanged != nil &&
|
||||||
|
(previouslySelectedRow != t.selectedRow || previouslySelectedColumn != t.selectedColumn) {
|
||||||
|
t.selectionChanged(t.selectedRow, t.selectedColumn)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user