Notes removed by 'git notes remove'

This commit is contained in:
Jeff Carr 2025-01-31 21:06:25 -06:00
parent 5cecb47daf
commit 04a94a0a81
1 changed files with 0 additions and 984 deletions

View File

@ -1,984 +0,0 @@
// `autogen:go.mod`
module go.wit.com/toolkits/gocui
go 1.21
toolchain go1.23.4
require (
github.com/awesome-gocui/gocui v1.1.0
go.wit.com/log v0.22.10
go.wit.com/toolkits/tree v0.22.4
go.wit.com/widget v1.1.27
google.golang.org/protobuf v1.36.4
)
require (
github.com/gdamore/encoding v1.0.0 // indirect
github.com/gdamore/tcell/v2 v2.4.0 // indirect
github.com/lucasb-eyer/go-colorful v1.0.3 // indirect
github.com/mattn/go-runewidth v0.0.10 // indirect
github.com/rivo/uniseg v0.1.0 // indirect
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68 // indirect
golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf // indirect
golang.org/x/text v0.3.3 // indirect
)
// `autogen:go.sum`
github.com/awesome-gocui/gocui v1.1.0 h1:db2j7yFEoHZjpQFeE2xqiatS8bm1lO3THeLwE6MzOII=
github.com/awesome-gocui/gocui v1.1.0/go.mod h1:M2BXkrp7PR97CKnPRT7Rk0+rtswChPtksw/vRAESGpg=
github.com/gdamore/encoding v1.0.0 h1:+7OoQ1Bc6eTm5niUzBa0Ctsh6JbMW6Ra+YNuAtDBdko=
github.com/gdamore/encoding v1.0.0/go.mod h1:alR0ol34c49FCSBLjhosxzcPHQbf2trDkoo5dl+VrEg=
github.com/gdamore/tcell/v2 v2.4.0 h1:W6dxJEmaxYvhICFoTY3WrLLEXsQ11SaFnKGVEXW57KM=
github.com/gdamore/tcell/v2 v2.4.0/go.mod h1:cTTuF84Dlj/RqmaCIV5p4w8uG1zWdk0SF6oBpwHp4fU=
github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/lucasb-eyer/go-colorful v1.0.3 h1:QIbQXiugsb+q10B+MI+7DI1oQLdmnep86tWFlaaUAac=
github.com/lucasb-eyer/go-colorful v1.0.3/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
github.com/mattn/go-runewidth v0.0.10 h1:CoZ3S2P7pvtP45xOtBw+/mDL2z0RKI576gSkzRRpdGg=
github.com/mattn/go-runewidth v0.0.10/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk=
github.com/rivo/uniseg v0.1.0 h1:+2KBaVoUmb9XzDsrx/Ct0W/EYOSFf/nWTauy++DprtY=
github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
go.wit.com/log v0.22.10 h1:rlSgaYjvxbpcmi9UBQO3ESmbd/jiyFdRQFoGOvpCEUc=
go.wit.com/log v0.22.10/go.mod h1:4uNPFBqhsAh8zNF+zxVEmC3c/9AZ8JeTfUUvRpddvLQ=
go.wit.com/toolkits/tree v0.22.4 h1:yhefolodEfE4+Lmxxhh8fO6+UMjK9TGHuB71Lfg4rcQ=
go.wit.com/toolkits/tree v0.22.4/go.mod h1:b/GAcO13PIv7tx1aSrWv8ALK+ZEk5j78PEdEGaZ4PPA=
go.wit.com/widget v1.1.27 h1:Yd+qp6GZVwLiTTepShXSeWSDqjaCxLyfhU0ch2FrPZ8=
go.wit.com/widget v1.1.27/go.mod h1:OXIdWk7GhVJRLnHTvf45LbPNXGYG/JjbkfnmXtkoiYE=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68 h1:nxC68pudNYkKU6jWhgrqdreuFiOQWj1Fs7T3VrH4Pjw=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf h1:MZ2shdL+ZM/XzY3ZGOnh4Nlpnxz5GSOhOmtHo3iPU6M=
golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/protobuf v1.36.4 h1:6A3ZDJHn/eNqc1i+IdefRzy/9PokBTPvcqMySR7NNIM=
google.golang.org/protobuf v1.36.4/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
// `autogen:view.marshal.pb.go`
// Code generated by go.wit.com/apps/autogenpb DO NOT EDIT.
// This file was autogenerated with autogenpb v0.0.48 2025-01-28_20:32:42_UTC
// go install go.wit.com/apps/autogenpb@latest
//
// define which structs (messages) you want to use in the .proto file
// Then sort.pb.go and marshal.pb.go files are autogenerated
//
// autogenpb uses it and has an example .proto file with instructions
//
package main
import (
"google.golang.org/protobuf/encoding/protojson"
"google.golang.org/protobuf/encoding/prototext"
"google.golang.org/protobuf/proto"
)
// human readable JSON
func (v *Views) FormatJSON() string {
return protojson.Format(v)
}
// marshal json
func (v *Views) MarshalJSON() ([]byte, error) {
return protojson.Marshal(v)
}
// unmarshal json
func (v *Views) UnmarshalJSON(data []byte) error {
return protojson.Unmarshal(data, v)
}
// apparently this isn't stable, but it's awesomely better
// https://protobuf.dev/reference/go/faq/#unstable-text
// it's brilliant for config files!
func (v *Views) FormatTEXT() string {
v.fixUuid()
return prototext.Format(v)
}
// unmarshalTEXT. This reads the .text config file back in after the user edits it
func (v *Views) UnmarshalTEXT(data []byte) error {
return prototext.Unmarshal(data, v)
}
// marshal to wire. This is called winning.
func (v *Views) Marshal() ([]byte, error) {
v.fixUuid()
return proto.Marshal(v)
}
// unmarshal from wire. You have won.
func (v *Views) Unmarshal(data []byte) error {
return proto.Unmarshal(data, v)
}
// `autogen:view.pb.go`
// Code modified by go.wit.com/apps/autogenpb DO NOT EDIT.
//
// user defined Mutex locks were auto added
//
// autogenpb version & build time: v0.0.48 2025-01-28_20:32:42_UTC
// autogenpb auto generates Sort(), Unique() and Marshal() functions
// go install go.wit.com/apps/autogenpb@latest
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.35.2-devel
// protoc v3.21.12
// source: view.proto
package main // autogenpb changed the package name
import (
reflect "reflect"
sync "sync"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
_ "google.golang.org/protobuf/types/known/timestamppb"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
// maybe put all the gocui specific stuff here.
type GocuiState struct {
// sync.RWMutex // skipped. protobuf file has `autogenpb:nomutex`
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Visible bool `protobuf:"varint,1,opt,name=visible,proto3" json:"visible,omitempty"`
Internal bool `protobuf:"varint,2,opt,name=internal,proto3" json:"internal,omitempty"`
W0 int64 `protobuf:"varint,3,opt,name=w0,proto3" json:"w0,omitempty"`
H0 int64 `protobuf:"varint,4,opt,name=h0,proto3" json:"h0,omitempty"`
W1 int64 `protobuf:"varint,5,opt,name=w1,proto3" json:"w1,omitempty"`
H1 int64 `protobuf:"varint,6,opt,name=h1,proto3" json:"h1,omitempty"`
}
func (x *GocuiState) Reset() {
*x = GocuiState{}
mi := &file_view_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *GocuiState) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GocuiState) ProtoMessage() {}
func (x *GocuiState) ProtoReflect() protoreflect.Message {
mi := &file_view_proto_msgTypes[0]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use GocuiState.ProtoReflect.Descriptor instead.
func (*GocuiState) Descriptor() ([]byte, []int) {
return file_view_proto_rawDescGZIP(), []int{0}
}
func (x *GocuiState) GetVisible() bool {
if x != nil {
return x.Visible
}
return false
}
func (x *GocuiState) GetInternal() bool {
if x != nil {
return x.Internal
}
return false
}
func (x *GocuiState) GetW0() int64 {
if x != nil {
return x.W0
}
return 0
}
func (x *GocuiState) GetH0() int64 {
if x != nil {
return x.H0
}
return 0
}
func (x *GocuiState) GetW1() int64 {
if x != nil {
return x.W1
}
return 0
}
func (x *GocuiState) GetH1() int64 {
if x != nil {
return x.H1
}
return 0
}
type ViewSettings struct {
// sync.RWMutex // skipped. protobuf file has `autogenpb:nomutex`
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Pack bool `protobuf:"varint,1,opt,name=pack,proto3" json:"pack,omitempty"`
Framesize int64 `protobuf:"varint,5,opt,name=framesize,proto3" json:"framesize,omitempty"`
}
func (x *ViewSettings) Reset() {
*x = ViewSettings{}
mi := &file_view_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *ViewSettings) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ViewSettings) ProtoMessage() {}
func (x *ViewSettings) ProtoReflect() protoreflect.Message {
mi := &file_view_proto_msgTypes[1]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ViewSettings.ProtoReflect.Descriptor instead.
func (*ViewSettings) Descriptor() ([]byte, []int) {
return file_view_proto_rawDescGZIP(), []int{1}
}
func (x *ViewSettings) GetPack() bool {
if x != nil {
return x.Pack
}
return false
}
func (x *ViewSettings) GetFramesize() int64 {
if x != nil {
return x.Framesize
}
return 0
}
type Tree struct {
sync.RWMutex // auto-added by go.wit.com/apps/autogenpb
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Parent *View `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
Children []*View `protobuf:"bytes,2,rep,name=children,proto3" json:"children,omitempty"`
Node *View `protobuf:"bytes,3,opt,name=node,proto3" json:"node,omitempty"`
}
func (x *Tree) Reset() {
*x = Tree{}
mi := &file_view_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *Tree) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Tree) ProtoMessage() {}
func (x *Tree) ProtoReflect() protoreflect.Message {
mi := &file_view_proto_msgTypes[2]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Tree.ProtoReflect.Descriptor instead.
func (*Tree) Descriptor() ([]byte, []int) {
return file_view_proto_rawDescGZIP(), []int{2}
}
func (x *Tree) GetParent() *View {
if x != nil {
return x.Parent
}
return nil
}
func (x *Tree) GetChildren() []*View {
if x != nil {
return x.Children
}
return nil
}
func (x *Tree) GetNode() *View {
if x != nil {
return x.Node
}
return nil
}
// this is the gocui 'view' in binary tree form
type View struct {
sync.RWMutex // auto-added by go.wit.com/apps/autogenpb
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
WidgetId int64 `protobuf:"varint,3,opt,name=widgetId,proto3" json:"widgetId,omitempty"` // `autogenpb:unique` `autogenpb:sort`
Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` // `autogenpb:unique` `autogenpb:sort`
State *GocuiState `protobuf:"bytes,7,opt,name=state,proto3" json:"state,omitempty"`
}
func (x *View) Reset() {
*x = View{}
mi := &file_view_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *View) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*View) ProtoMessage() {}
func (x *View) ProtoReflect() protoreflect.Message {
mi := &file_view_proto_msgTypes[3]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use View.ProtoReflect.Descriptor instead.
func (*View) Descriptor() ([]byte, []int) {
return file_view_proto_rawDescGZIP(), []int{3}
}
func (x *View) GetWidgetId() int64 {
if x != nil {
return x.WidgetId
}
return 0
}
func (x *View) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *View) GetState() *GocuiState {
if x != nil {
return x.State
}
return nil
}
type Views struct {
sync.RWMutex // auto-added by go.wit.com/apps/autogenpb
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"` // `autogenpb:uuid:d19c1fbb-32c2-4957-aee6-f8128a511dca`
Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` // `autogenpb:version:v0.0.1`
Views []*View `protobuf:"bytes,3,rep,name=Views,proto3" json:"Views,omitempty"`
Tree *Tree `protobuf:"bytes,4,opt,name=tree,proto3" json:"tree,omitempty"`
Junk map[string]string `protobuf:"bytes,5,rep,name=junk,proto3" json:"junk,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
Settings *ViewSettings `protobuf:"bytes,6,opt,name=settings,proto3" json:"settings,omitempty"`
}
func (x *Views) Reset() {
*x = Views{}
mi := &file_view_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *Views) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Views) ProtoMessage() {}
func (x *Views) ProtoReflect() protoreflect.Message {
mi := &file_view_proto_msgTypes[4]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Views.ProtoReflect.Descriptor instead.
func (*Views) Descriptor() ([]byte, []int) {
return file_view_proto_rawDescGZIP(), []int{4}
}
func (x *Views) GetUuid() string {
if x != nil {
return x.Uuid
}
return ""
}
func (x *Views) GetVersion() string {
if x != nil {
return x.Version
}
return ""
}
func (x *Views) GetViews() []*View {
if x != nil {
return x.Views
}
return nil
}
func (x *Views) GetTree() *Tree {
if x != nil {
return x.Tree
}
return nil
}
func (x *Views) GetJunk() map[string]string {
if x != nil {
return x.Junk
}
return nil
}
func (x *Views) GetSettings() *ViewSettings {
if x != nil {
return x.Settings
}
return nil
}
var File_view_proto protoreflect.FileDescriptor
var file_view_proto_rawDesc = []byte{
0x0a, 0x0a, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x04, 0x6d, 0x61,
0x69, 0x6e, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x22, 0x82, 0x01, 0x0a, 0x0a, 0x47, 0x6f, 0x63, 0x75, 0x69, 0x53, 0x74, 0x61,
0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20,
0x01, 0x28, 0x08, 0x52, 0x07, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08,
0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08,
0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x77, 0x30, 0x18, 0x03,
0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x77, 0x30, 0x12, 0x0e, 0x0a, 0x02, 0x68, 0x30, 0x18, 0x04,
0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x68, 0x30, 0x12, 0x0e, 0x0a, 0x02, 0x77, 0x31, 0x18, 0x05,
0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x77, 0x31, 0x12, 0x0e, 0x0a, 0x02, 0x68, 0x31, 0x18, 0x06,
0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x68, 0x31, 0x22, 0x40, 0x0a, 0x0c, 0x56, 0x69, 0x65, 0x77,
0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x63, 0x6b,
0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x70, 0x61, 0x63, 0x6b, 0x12, 0x1c, 0x0a, 0x09,
0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52,
0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x72, 0x0a, 0x04, 0x54, 0x72,
0x65, 0x65, 0x12, 0x22, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x6d, 0x61, 0x69, 0x6e, 0x2e, 0x56, 0x69, 0x65, 0x77, 0x52, 0x06,
0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72,
0x65, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x6d, 0x61, 0x69, 0x6e, 0x2e,
0x56, 0x69, 0x65, 0x77, 0x52, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x12, 0x1e,
0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x6d,
0x61, 0x69, 0x6e, 0x2e, 0x56, 0x69, 0x65, 0x77, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x22, 0x5e,
0x0a, 0x04, 0x56, 0x69, 0x65, 0x77, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x69, 0x64, 0x67, 0x65, 0x74,
0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x77, 0x69, 0x64, 0x67, 0x65, 0x74,
0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18,
0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6d, 0x61, 0x69, 0x6e, 0x2e, 0x47, 0x6f, 0x63,
0x75, 0x69, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x8b,
0x02, 0x0a, 0x05, 0x56, 0x69, 0x65, 0x77, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07,
0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76,
0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x05, 0x56, 0x69, 0x65, 0x77, 0x73, 0x18,
0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x6d, 0x61, 0x69, 0x6e, 0x2e, 0x56, 0x69, 0x65,
0x77, 0x52, 0x05, 0x56, 0x69, 0x65, 0x77, 0x73, 0x12, 0x1e, 0x0a, 0x04, 0x74, 0x72, 0x65, 0x65,
0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x6d, 0x61, 0x69, 0x6e, 0x2e, 0x54, 0x72,
0x65, 0x65, 0x52, 0x04, 0x74, 0x72, 0x65, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x6a, 0x75, 0x6e, 0x6b,
0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6d, 0x61, 0x69, 0x6e, 0x2e, 0x56, 0x69,
0x65, 0x77, 0x73, 0x2e, 0x4a, 0x75, 0x6e, 0x6b, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x6a,
0x75, 0x6e, 0x6b, 0x12, 0x2e, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18,
0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x61, 0x69, 0x6e, 0x2e, 0x56, 0x69, 0x65,
0x77, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69,
0x6e, 0x67, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x4a, 0x75, 0x6e, 0x6b, 0x45, 0x6e, 0x74, 0x72, 0x79,
0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x62, 0x06, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x33,
}
var (
file_view_proto_rawDescOnce sync.Once
file_view_proto_rawDescData = file_view_proto_rawDesc
)
func file_view_proto_rawDescGZIP() []byte {
file_view_proto_rawDescOnce.Do(func() {
file_view_proto_rawDescData = protoimpl.X.CompressGZIP(file_view_proto_rawDescData)
})
return file_view_proto_rawDescData
}
var file_view_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
var file_view_proto_goTypes = []any{
(*GocuiState)(nil), // 0: main.GocuiState
(*ViewSettings)(nil), // 1: main.ViewSettings
(*Tree)(nil), // 2: main.Tree
(*View)(nil), // 3: main.View
(*Views)(nil), // 4: main.Views
nil, // 5: main.Views.JunkEntry
}
var file_view_proto_depIdxs = []int32{
3, // 0: main.Tree.parent:type_name -> main.View
3, // 1: main.Tree.children:type_name -> main.View
3, // 2: main.Tree.node:type_name -> main.View
0, // 3: main.View.state:type_name -> main.GocuiState
3, // 4: main.Views.Views:type_name -> main.View
2, // 5: main.Views.tree:type_name -> main.Tree
5, // 6: main.Views.junk:type_name -> main.Views.JunkEntry
1, // 7: main.Views.settings:type_name -> main.ViewSettings
8, // [8:8] is the sub-list for method output_type
8, // [8:8] is the sub-list for method input_type
8, // [8:8] is the sub-list for extension type_name
8, // [8:8] is the sub-list for extension extendee
0, // [0:8] is the sub-list for field type_name
}
func init() { file_view_proto_init() }
func file_view_proto_init() {
if File_view_proto != nil {
return
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_view_proto_rawDesc,
NumEnums: 0,
NumMessages: 6,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_view_proto_goTypes,
DependencyIndexes: file_view_proto_depIdxs,
MessageInfos: file_view_proto_msgTypes,
}.Build()
File_view_proto = out.File
file_view_proto_rawDesc = nil
file_view_proto_goTypes = nil
file_view_proto_depIdxs = nil
}
// `autogen:view.sort.pb.go`
// Code generated by go.wit.com/apps/autogenpb DO NOT EDIT.
// This file was autogenerated with autogenpb v0.0.48 2025-01-28_20:32:42_UTC
// go install go.wit.com/apps/autogenpb@latest
//
// define which structs (messages) you want to use in the .proto file
// Then sort.pb.go and marshal.pb.go files are autogenerated
//
// autogenpb uses it and has an example .proto file with instructions
//
package main
import (
"fmt"
"sort"
"sync"
)
// a simple global lock
var viewMu sync.RWMutex
func (x *Views) fixUuid() {
if x == nil {
return
}
if x.Uuid == "d19c1fbb-32c2-4957-aee6-f8128a511dca" {
return
}
x.Uuid = "d19c1fbb-32c2-4957-aee6-f8128a511dca"
x.Version = "v0.0.1 go.wit.com/toolkits/gocui"
}
func NewViews() *Views {
x := new(Views)
x.Uuid = "d19c1fbb-32c2-4957-aee6-f8128a511dca"
x.Version = "v0.0.1 go.wit.com/toolkits/gocui"
return x
}
// START SORT
// DEFINE THE Views ITERATOR.
// itializes a new iterator.
func newViewsIterator(things []*Views) *ViewsIterator {
return &ViewsIterator{things: things}
}
type ViewsIterator struct {
sync.RWMutex // this isn't getting used properly yet?
things []*Views
index int
}
func (it *ViewsIterator) Scan() bool {
if it.index >= len(it.things) {
return false
}
it.index++
return true
}
// Next() returns the next thing in the array
func (it *ViewsIterator) Next() *Views {
if it.things[it.index-1] == nil {
fmt.Println("Next() error in ViewsIterator", it.index)
}
return it.things[it.index-1]
}
// END DEFINE THE ITERATOR
// DEFINE THE View ITERATOR.
// itializes a new iterator.
func newViewIterator(things []*View) *ViewIterator {
return &ViewIterator{things: things}
}
type ViewIterator struct {
sync.RWMutex // this isn't getting used properly yet?
things []*View
index int
}
func (it *ViewIterator) Scan() bool {
if it.index >= len(it.things) {
return false
}
it.index++
return true
}
// Next() returns the next thing in the array
func (it *ViewIterator) Next() *View {
if it.things[it.index-1] == nil {
fmt.Println("Next() error in ViewIterator", it.index)
}
return it.things[it.index-1]
}
// END DEFINE THE ITERATOR
// DEFINE THE GocuiState ITERATOR.
// itializes a new iterator.
func newGocuiStateIterator(things []*GocuiState) *GocuiStateIterator {
return &GocuiStateIterator{things: things}
}
type GocuiStateIterator struct {
sync.RWMutex // this isn't getting used properly yet?
things []*GocuiState
index int
}
func (it *GocuiStateIterator) Scan() bool {
if it.index >= len(it.things) {
return false
}
it.index++
return true
}
// Next() returns the next thing in the array
func (it *GocuiStateIterator) Next() *GocuiState {
if it.things[it.index-1] == nil {
fmt.Println("Next() error in GocuiStateIterator", it.index)
}
return it.things[it.index-1]
}
// END DEFINE THE ITERATOR
// DEFINE THE ViewSettings ITERATOR.
// itializes a new iterator.
func newViewSettingsIterator(things []*ViewSettings) *ViewSettingsIterator {
return &ViewSettingsIterator{things: things}
}
type ViewSettingsIterator struct {
sync.RWMutex // this isn't getting used properly yet?
things []*ViewSettings
index int
}
func (it *ViewSettingsIterator) Scan() bool {
if it.index >= len(it.things) {
return false
}
it.index++
return true
}
// Next() returns the next thing in the array
func (it *ViewSettingsIterator) Next() *ViewSettings {
if it.things[it.index-1] == nil {
fmt.Println("Next() error in ViewSettingsIterator", it.index)
}
return it.things[it.index-1]
}
// END DEFINE THE ITERATOR
// DEFINE THE Tree ITERATOR.
// itializes a new iterator.
func newTreeIterator(things []*Tree) *TreeIterator {
return &TreeIterator{things: things}
}
type TreeIterator struct {
sync.RWMutex // this isn't getting used properly yet?
things []*Tree
index int
}
func (it *TreeIterator) Scan() bool {
if it.index >= len(it.things) {
return false
}
it.index++
return true
}
// Next() returns the next thing in the array
func (it *TreeIterator) Next() *Tree {
if it.things[it.index-1] == nil {
fmt.Println("Next() error in TreeIterator", it.index)
}
return it.things[it.index-1]
}
// END DEFINE THE ITERATOR
// sort struct by Name
type ViewName []*View
func (a ViewName) Len() int { return len(a) }
func (a ViewName) Less(i, j int) bool { return a[i].Name < a[j].Name }
func (a ViewName) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
// safely returns a slice of pointers to the FRUIT protobufs
func (x *Views) allViews() []*View {
x.RLock()
defer x.RUnlock()
// Create a new slice to hold pointers to each FRUIT
var tmp []*View
tmp = make([]*View, len(x.Views))
for i, p := range x.Views {
tmp[i] = p // Copy pointers for safe iteration
}
return tmp
}
// safely returns a slice of pointers to the FRUIT protobufs
func (x *Tree) allChildren() []*View {
x.RLock()
defer x.RUnlock()
// Create a new slice to hold pointers to each FRUIT
var tmp []*View
tmp = make([]*View, len(x.Children))
for i, p := range x.Children {
tmp[i] = p // Copy pointers for safe iteration
}
return tmp
}
// safely returns a slice of pointers to the View protobufs
func (x *Views) selectAllViews() []*View {
x.RLock()
defer x.RUnlock()
// Create a new slice to hold pointers to each View
var tmp []*View
tmp = make([]*View, len(x.Views))
for i, p := range x.Views {
tmp[i] = p // Copy pointers for safe iteration
}
return tmp
}
// safely returns a slice of pointers to the View protobufs
func (x *Tree) selectAllChildren() []*View {
x.RLock()
defer x.RUnlock()
// Create a new slice to hold pointers to each View
var tmp []*View
tmp = make([]*View, len(x.Children))
for i, p := range x.Children {
tmp[i] = p // Copy pointers for safe iteration
}
return tmp
}
func (x *Views) SortByName() *ViewIterator {
// copy the pointers as fast as possible.
things := x.selectAllViews()
// todo: try slices.SortFunc() instead to see what happens
sort.Sort(ViewName(things))
// slices.SortFunc(things, func(a, b *Views) bool {
// return a.Name < b.Name // Sort by ??. let the compiler work it out??
// })
return newViewIterator(things)
}
// END SORT
func (x *Views) Len() int {
x.RLock()
defer x.RUnlock()
return len(x.Views)
}
// just a simple Append() shortcut (but still uses the mutex lock)
func (x *Views) Append(y *View) {
x.Lock()
defer x.Unlock()
x.Views = append(x.Views, y)
}
func (x *Views) All() *ViewIterator {
ViewPointers := x.selectAllViews()
iterator := newViewIterator(ViewPointers)
return iterator
}
func (x *Views) Delete(y *View) bool {
x.Lock()
defer x.Unlock()
for i, _ := range x.Views {
if x.Views[i] == y {
x.Views[i] = x.Views[len(x.Views)-1]
x.Views = x.Views[:len(x.Views)-1]
return true
}
}
return false
}
// lookup a Views by the Name
func (x *Views) FindByName(s string) *View {
if x == nil {
return nil
}
x.RLock()
defer x.RUnlock()
for i, _ := range x.Views {
if x.Views[i].Name == s {
return x.Views[i]
}
}
return nil
}
func (x *Views) DeleteByName(s string) bool {
x.Lock()
defer x.Unlock()
for i, _ := range x.Views {
if x.Views[i].Name == s {
x.Views[i] = x.Views[len(x.Views)-1]
x.Views = x.Views[:len(x.Views)-1]
return true
}
}
return false
}
func (x *Views) AppendByName(y *View) bool {
x.Lock()
defer x.Unlock()
for _, p := range x.Views {
if p.Name == y.Name {
return false
}
}
x.Views = append(x.Views, y)
return true
}
// `autogen:`