1 Star 0 Fork 0

mentallxm/walk

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
tableviewcolumnlist.go 2.82 KB
一键复制 编辑 原始数据 按行查看 历史
Alexander Neumann 提交于 2020-07-29 17:22 . Add some TableView stuff
// Copyright 2013 The Walk Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// +build windows
package walk
type TableViewColumnList struct {
tv *TableView
items []*TableViewColumn
}
func newTableViewColumnList(tv *TableView) *TableViewColumnList {
return &TableViewColumnList{tv: tv}
}
// Add adds a TableViewColumn to the end of the list.
func (l *TableViewColumnList) Add(item *TableViewColumn) error {
return l.Insert(len(l.items), item)
}
// At returns the TableViewColumn as the specified index.
//
// Bounds are not checked.
func (l *TableViewColumnList) At(index int) *TableViewColumn {
return l.items[index]
}
// ByName returns the TableViewColumn identified by name, or nil, if no column
// of that name is contained in the TableViewColumnList.
func (l *TableViewColumnList) ByName(name string) *TableViewColumn {
for _, tvc := range l.items {
if tvc.name == name {
return tvc
}
}
return nil
}
// Clear removes all TableViewColumns from the list.
func (l *TableViewColumnList) Clear() error {
for _ = range l.items {
if err := l.RemoveAt(0); err != nil {
return err
}
}
return nil
}
// Index returns the index of the specified TableViewColumn or -1 if it is not
// found.
func (l *TableViewColumnList) Index(item *TableViewColumn) int {
for i, lvi := range l.items {
if lvi == item {
return i
}
}
return -1
}
// Contains returns whether the specified TableViewColumn is found in the list.
func (l *TableViewColumnList) Contains(item *TableViewColumn) bool {
return l.Index(item) > -1
}
// Insert inserts TableViewColumn item at position index.
//
// A TableViewColumn cannot be contained in multiple TableViewColumnLists at the
// same time.
func (l *TableViewColumnList) Insert(index int, item *TableViewColumn) error {
if item.tv != nil {
return newError("duplicate insert")
}
item.tv = l.tv
if item.visible {
if err := item.create(); err != nil {
item.tv = nil
return err
}
}
l.items = append(l.items, nil)
copy(l.items[index+1:], l.items[index:])
l.items[index] = item
return nil
}
// Len returns the number of TableViewColumns in the list.
func (l *TableViewColumnList) Len() int {
return len(l.items)
}
// Remove removes the specified TableViewColumn from the list.
func (l *TableViewColumnList) Remove(item *TableViewColumn) error {
index := l.Index(item)
if index == -1 {
return nil
}
return l.RemoveAt(index)
}
// RemoveAt removes the TableViewColumn at position index.
func (l *TableViewColumnList) RemoveAt(index int) error {
tvc := l.items[index]
if err := tvc.destroy(); err != nil {
return err
}
tvc.tv = nil
l.items = append(l.items[:index], l.items[index+1:]...)
return nil
}
func (l *TableViewColumnList) unsetColumnsTV() {
for _, tvc := range l.items {
tvc.tv = nil
}
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/strawer/walk.git
git@gitee.com:strawer/walk.git
strawer
walk
walk
master

搜索帮助