package main import ( "github.com/ying32/govcl/vcl" ) type contextAction struct { Name string Callback func(ndata *navData) } // loadedDatabase is a DB-agnostic interface for each loaded database. type loadedDatabase interface { DisplayName() string DriverName() string RootElement() *vcl.TTreeNode RenderForNav(f *TMainForm, ndata *navData) ExecQuery(query string, resultArea *vcl.TListView) NavChildren(ndata *navData) ([]string, error) NavContext(ndata *navData) ([]contextAction, error) Keepalive(ndata *navData) Close() } // navData is the .Data() pointer for each TTreeNode in the left-hand tree. type navData struct { ld loadedDatabase childrenLoaded bool bucketPath []string }