MCPcopy
hub / github.com/lxn/walk / SetModel

Method SetModel

treeview.go:130–201  ·  view source on GitHub ↗
(model TreeModel)

Source from the content-addressed store, hash-verified

128}
129
130func (tv *TreeView) SetModel(model TreeModel) error {
131 if tv.model != nil {
132 tv.model.ItemsReset().Detach(tv.itemsResetEventHandlerHandle)
133 tv.model.ItemChanged().Detach(tv.itemChangedEventHandlerHandle)
134 tv.model.ItemInserted().Detach(tv.itemInsertedEventHandlerHandle)
135 tv.model.ItemRemoved().Detach(tv.itemRemovedEventHandlerHandle)
136
137 tv.disposeImageListAndCaches()
138 }
139
140 tv.model = model
141
142 if model != nil {
143 tv.lazyPopulation = model.LazyPopulation()
144
145 tv.itemsResetEventHandlerHandle = model.ItemsReset().Attach(func(parent TreeItem) {
146 if parent == nil {
147 tv.resetItems()
148 } else if tv.item2Info[parent] != nil {
149 tv.SetSuspended(true)
150 defer tv.SetSuspended(false)
151
152 if err := tv.removeDescendants(parent); err != nil {
153 return
154 }
155
156 if err := tv.insertChildren(parent); err != nil {
157 return
158 }
159 }
160 })
161
162 tv.itemChangedEventHandlerHandle = model.ItemChanged().Attach(func(item TreeItem) {
163 if item == nil || tv.item2Info[item] == nil {
164 return
165 }
166
167 if err := tv.updateItem(item); err != nil {
168 return
169 }
170 })
171
172 tv.itemInsertedEventHandlerHandle = model.ItemInserted().Attach(func(item TreeItem) {
173 tv.SetSuspended(true)
174 defer tv.SetSuspended(false)
175
176 var hInsertAfter win.HTREEITEM
177 parent := item.Parent()
178 for i := parent.ChildCount() - 1; i >= 0; i-- {
179 if parent.ChildAt(i) == item {
180 if i > 0 {
181 hInsertAfter = tv.item2Info[parent.ChildAt(i-1)].handle
182 } else {
183 hInsertAfter = win.TVI_FIRST
184 }
185 }
186 }
187

Callers 1

CreateMethod · 0.95

Calls 15

resetItemsMethod · 0.95
removeDescendantsMethod · 0.95
insertChildrenMethod · 0.95
updateItemMethod · 0.95
insertItemAfterMethod · 0.95
removeItemMethod · 0.95
ItemsResetMethod · 0.65
ItemChangedMethod · 0.65
ItemInsertedMethod · 0.65
ItemRemovedMethod · 0.65
LazyPopulationMethod · 0.65

Tested by

no test coverage detected