take out delay

This commit is contained in:
Jeff Carr 2025-02-14 19:12:18 -06:00
parent 74de0ac89d
commit 29f8f406ef
Notes: Jeff Carr 2025-02-14 19:30:48 -06:00
// `autogen:go.mod`

module go.wit.com/toolkits/tree

go 1.22

toolchain go1.23.6

require (
	go.wit.com/lib/protobuf/guipb v0.0.2
	go.wit.com/log v0.22.16
	go.wit.com/widget v1.1.29
	google.golang.org/protobuf v1.36.5
)

// `autogen:go.sum`

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=
go.wit.com/lib/protobuf/guipb v0.0.2 h1:ZR4cLy+XheRQEFLlissBmASJDqiLfHaAluF6wYbVuOo=
go.wit.com/lib/protobuf/guipb v0.0.2/go.mod h1:mZsirb7zRgsE2IGHuvHkG7j85hkrGZl3NAALOEkjowA=
go.wit.com/log v0.22.16 h1:E0Vd0Z2ILtfjhs7J/CQ4g13DK1jtQiYl6l5KOBGsZoA=
go.wit.com/log v0.22.16/go.mod h1:/c5Uj30sWRQ4B5ei2ElB6Q8Si/cK6v+KbxnH208KD84=
go.wit.com/widget v1.1.29 h1:rURM/N1hbrl0btGlBIUx0SCre9jj+hshvkBLMMa008I=
go.wit.com/widget v1.1.29/go.mod h1:wj7TpAr2gk7Poa+v8XQkH1aidnTdgAa/a8GxrMtcztw=
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.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM=
google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=

// `autogen:toolkitConfig.marshal.pb.go`

// Code generated by go.wit.com/apps/autogenpb DO NOT EDIT.
// This file was autogenerated with autogenpb v0.0.52-1-g4fdcc99 2025.02.12_1512
//     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 tree

import (
	"google.golang.org/protobuf/encoding/protojson"
	"google.golang.org/protobuf/encoding/prototext"
	"google.golang.org/protobuf/proto"
)

// human readable JSON
func (v *ToolkitConfigs) FormatJSON() string {
	return protojson.Format(v)
}

// marshal json
func (v *ToolkitConfigs) MarshalJSON() ([]byte, error) {
	return protojson.Marshal(v)
}

// unmarshal json
func (v *ToolkitConfigs) 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 *ToolkitConfigs) FormatTEXT() string {
	v.fixUuid()
	return prototext.Format(v)
}

// unmarshalTEXT. This reads the .text config file back in after the user edits it
func (v *ToolkitConfigs) UnmarshalTEXT(data []byte) error {
	return prototext.Unmarshal(data, v)
}

// marshal to wire. This is called winning.
func (v *ToolkitConfigs) Marshal() ([]byte, error) {
	v.fixUuid()
	return proto.Marshal(v)
}

// unmarshal from wire. You have won.
func (v *ToolkitConfigs) Unmarshal(data []byte) error {
	return proto.Unmarshal(data, v)
}

// `autogen:toolkitConfig.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.52-1-g4fdcc99 2025.02.12_1512
// autogenpb auto generates Sort(), Unique() and Marshal() functions
//     go install go.wit.com/apps/autogenpb@latest

// Copyright 2025 WIT.COM Inc Licensed GPL 3.0

// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.33.0
// 	protoc        v3.21.12
// source: toolkitConfig.proto

package tree // 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)
)

type ToolkitConfig struct {
	sync.RWMutex // auto-added by go.wit.com/apps/autogenpb

	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Plugin string `protobuf:"bytes,1,opt,name=plugin,proto3" json:"plugin,omitempty"` // 'gocui', 'andlabs', etc
	Name   string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`     // variable name 'fullscreen'
	Value  string `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"`   // value "true"
}

func (x *ToolkitConfig) Reset() {
	*x = ToolkitConfig{}
	if protoimpl.UnsafeEnabled {
		mi := &file_toolkitConfig_proto_msgTypes[0]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ToolkitConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ToolkitConfig) ProtoMessage() {}

func (x *ToolkitConfig) ProtoReflect() protoreflect.Message {
	mi := &file_toolkitConfig_proto_msgTypes[0]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ToolkitConfig.ProtoReflect.Descriptor instead.
func (*ToolkitConfig) Descriptor() ([]byte, []int) {
	return file_toolkitConfig_proto_rawDescGZIP(), []int{0}
}

func (x *ToolkitConfig) GetPlugin() string {
	if x != nil {
		return x.Plugin
	}
	return ""
}

func (x *ToolkitConfig) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *ToolkitConfig) GetValue() string {
	if x != nil {
		return x.Value
	}
	return ""
}

type ToolkitConfigs struct {
	// sync.RWMutex // skipped. protobuf file has `autogenpb:nomutex`

	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Uuid           string           `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"`       // `autogenpb:uuid:d7886d47-a3b9-43b9-b0f6-17074a9844e6`
	Version        string           `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` // `autogenpb:version:v0.0.1`
	ToolkitConfigs []*ToolkitConfig `protobuf:"bytes,3,rep,name=ToolkitConfigs,proto3" json:"ToolkitConfigs,omitempty"`
}

func (x *ToolkitConfigs) Reset() {
	*x = ToolkitConfigs{}
	if protoimpl.UnsafeEnabled {
		mi := &file_toolkitConfig_proto_msgTypes[1]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ToolkitConfigs) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ToolkitConfigs) ProtoMessage() {}

func (x *ToolkitConfigs) ProtoReflect() protoreflect.Message {
	mi := &file_toolkitConfig_proto_msgTypes[1]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ToolkitConfigs.ProtoReflect.Descriptor instead.
func (*ToolkitConfigs) Descriptor() ([]byte, []int) {
	return file_toolkitConfig_proto_rawDescGZIP(), []int{1}
}

func (x *ToolkitConfigs) GetUuid() string {
	if x != nil {
		return x.Uuid
	}
	return ""
}

func (x *ToolkitConfigs) GetVersion() string {
	if x != nil {
		return x.Version
	}
	return ""
}

func (x *ToolkitConfigs) GetToolkitConfigs() []*ToolkitConfig {
	if x != nil {
		return x.ToolkitConfigs
	}
	return nil
}

var File_toolkitConfig_proto protoreflect.FileDescriptor

var file_toolkitConfig_proto_rawDesc = []byte{
	0x0a, 0x13, 0x74, 0x6f, 0x6f, 0x6c, 0x6b, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x07, 0x66, 0x6f, 0x72, 0x67, 0x65, 0x70, 0x62, 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,
	0x51, 0x0a, 0x0d, 0x54, 0x6f, 0x6f, 0x6c, 0x6b, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
	0x12, 0x16, 0x0a, 0x06, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x06, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05,
	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c,
	0x75, 0x65, 0x22, 0x7e, 0x0a, 0x0e, 0x54, 0x6f, 0x6f, 0x6c, 0x6b, 0x69, 0x74, 0x43, 0x6f, 0x6e,
	0x66, 0x69, 0x67, 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, 0x3e, 0x0a, 0x0e, 0x54, 0x6f, 0x6f, 0x6c, 0x6b, 0x69, 0x74, 0x43, 0x6f, 0x6e,
	0x66, 0x69, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, 0x6f, 0x72,
	0x67, 0x65, 0x70, 0x62, 0x2e, 0x54, 0x6f, 0x6f, 0x6c, 0x6b, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66,
	0x69, 0x67, 0x52, 0x0e, 0x54, 0x6f, 0x6f, 0x6c, 0x6b, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69,
	0x67, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_toolkitConfig_proto_rawDescOnce sync.Once
	file_toolkitConfig_proto_rawDescData = file_toolkitConfig_proto_rawDesc
)

func file_toolkitConfig_proto_rawDescGZIP() []byte {
	file_toolkitConfig_proto_rawDescOnce.Do(func() {
		file_toolkitConfig_proto_rawDescData = protoimpl.X.CompressGZIP(file_toolkitConfig_proto_rawDescData)
	})
	return file_toolkitConfig_proto_rawDescData
}

var file_toolkitConfig_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
var file_toolkitConfig_proto_goTypes = []interface{}{
	(*ToolkitConfig)(nil),  // 0: forgepb.ToolkitConfig
	(*ToolkitConfigs)(nil), // 1: forgepb.ToolkitConfigs
}
var file_toolkitConfig_proto_depIdxs = []int32{
	0, // 0: forgepb.ToolkitConfigs.ToolkitConfigs:type_name -> forgepb.ToolkitConfig
	1, // [1:1] is the sub-list for method output_type
	1, // [1:1] is the sub-list for method input_type
	1, // [1:1] is the sub-list for extension type_name
	1, // [1:1] is the sub-list for extension extendee
	0, // [0:1] is the sub-list for field type_name
}

func init() { file_toolkitConfig_proto_init() }
func file_toolkitConfig_proto_init() {
	if File_toolkitConfig_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_toolkitConfig_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ToolkitConfig); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_toolkitConfig_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ToolkitConfigs); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_toolkitConfig_proto_rawDesc,
			NumEnums:      0,
			NumMessages:   2,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_toolkitConfig_proto_goTypes,
		DependencyIndexes: file_toolkitConfig_proto_depIdxs,
		MessageInfos:      file_toolkitConfig_proto_msgTypes,
	}.Build()
	File_toolkitConfig_proto = out.File
	file_toolkitConfig_proto_rawDesc = nil
	file_toolkitConfig_proto_goTypes = nil
	file_toolkitConfig_proto_depIdxs = nil
}

// `autogen:toolkitConfig.sort.pb.go`

// Code generated by go.wit.com/apps/autogenpb DO NOT EDIT.
// This file was autogenerated with autogenpb v0.0.52-1-g4fdcc99 2025.02.12_1512
//     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 tree

import (
	"fmt"
	"sync"
)

// a simple global lock
var toolkitConfigMu sync.RWMutex

func (x *ToolkitConfigs) fixUuid() {
	if x == nil {
		return
	}
	if x.Uuid == "d7886d47-a3b9-43b9-b0f6-17074a9844e6" {
		return
	}
	x.Uuid = "d7886d47-a3b9-43b9-b0f6-17074a9844e6"
	x.Version = "v0.0.1 go.wit.com/toolkits/tree"
}

func NewToolkitConfigs() *ToolkitConfigs {
	x := new(ToolkitConfigs)
	x.Uuid = "d7886d47-a3b9-43b9-b0f6-17074a9844e6"
	x.Version = "v0.0.1 go.wit.com/toolkits/tree"
	return x
}

// START SORT

// DEFINE THE ToolkitConfigs ITERATOR.
// itializes a new iterator.
func newToolkitConfigsIterator(things []*ToolkitConfigs) *ToolkitConfigsIterator {
	return &ToolkitConfigsIterator{things: things}
}

type ToolkitConfigsIterator struct {
	sync.RWMutex // this isn't getting used properly yet?

	things []*ToolkitConfigs
	index  int
}

func (it *ToolkitConfigsIterator) Scan() bool {
	if it.index >= len(it.things) {
		return false
	}
	it.index++
	return true
}

// Next() returns the next thing in the array
func (it *ToolkitConfigsIterator) Next() *ToolkitConfigs {
	if it.things[it.index-1] == nil {
		fmt.Println("Next() error in ToolkitConfigsIterator", it.index)
	}
	return it.things[it.index-1]
}

// END DEFINE THE ITERATOR

// DEFINE THE ToolkitConfig ITERATOR.
// itializes a new iterator.
func newToolkitConfigIterator(things []*ToolkitConfig) *ToolkitConfigIterator {
	return &ToolkitConfigIterator{things: things}
}

type ToolkitConfigIterator struct {
	sync.RWMutex // this isn't getting used properly yet?

	things []*ToolkitConfig
	index  int
}

func (it *ToolkitConfigIterator) Scan() bool {
	if it.index >= len(it.things) {
		return false
	}
	it.index++
	return true
}

// Next() returns the next thing in the array
func (it *ToolkitConfigIterator) Next() *ToolkitConfig {
	if it.things[it.index-1] == nil {
		fmt.Println("Next() error in ToolkitConfigIterator", it.index)
	}
	return it.things[it.index-1]
}

// END DEFINE THE ITERATOR

// safely returns a slice of pointers to the FRUIT protobufs
func (x *ToolkitConfigs) allToolkitConfigs() []*ToolkitConfig {
	toolkitConfigMu.RLock()
	defer toolkitConfigMu.RUnlock()

	// Create a new slice to hold pointers to each FRUIT
	var tmp []*ToolkitConfig
	tmp = make([]*ToolkitConfig, len(x.ToolkitConfigs))
	for i, p := range x.ToolkitConfigs {
		tmp[i] = p // Copy pointers for safe iteration
	}

	return tmp
}

// safely returns a slice of pointers to the ToolkitConfig protobufs
func (x *ToolkitConfigs) selectAllToolkitConfigs() []*ToolkitConfig {
	toolkitConfigMu.RLock()
	defer toolkitConfigMu.RUnlock()

	// Create a new slice to hold pointers to each ToolkitConfig
	var tmp []*ToolkitConfig
	tmp = make([]*ToolkitConfig, len(x.ToolkitConfigs))
	for i, p := range x.ToolkitConfigs {
		tmp[i] = p // Copy pointers for safe iteration
	}

	return tmp
}

// END SORT

func (x *ToolkitConfigs) Len() int {
	toolkitConfigMu.RLock()
	defer toolkitConfigMu.RUnlock()

	return len(x.ToolkitConfigs)
}

// just a simple Append() shortcut (but still uses the mutex lock)
func (x *ToolkitConfigs) Append(y *ToolkitConfig) {
	toolkitConfigMu.Lock()
	defer toolkitConfigMu.Unlock()

	x.ToolkitConfigs = append(x.ToolkitConfigs, y)
}

func (x *ToolkitConfigs) All() *ToolkitConfigIterator {
	ToolkitConfigPointers := x.selectAllToolkitConfigs()

	iterator := newToolkitConfigIterator(ToolkitConfigPointers)
	return iterator
}

func (x *ToolkitConfigs) Delete(y *ToolkitConfig) bool {
	toolkitConfigMu.Lock()
	defer toolkitConfigMu.Unlock()

	for i, _ := range x.ToolkitConfigs {
		if x.ToolkitConfigs[i] == y {
			x.ToolkitConfigs[i] = x.ToolkitConfigs[len(x.ToolkitConfigs)-1]
			x.ToolkitConfigs = x.ToolkitConfigs[:len(x.ToolkitConfigs)-1]
			return true
		}
	}
	return false
}

// `autogen:`
1 changed files with 1 additions and 2 deletions

View File

@ -9,7 +9,6 @@ import (
"os"
"runtime/debug"
"sync"
"time"
"go.wit.com/log"
"go.wit.com/widget"
@ -38,7 +37,7 @@ func (me *TreeInfo) catchActionChannel() {
log.Verbose("catchActionChannel() on ", a.WidgetId, a.WidgetType, a.ProgName)
muAction.Lock()
me.WaitOK()
time.Sleep(10 * time.Millisecond)
// time.Sleep(10 * time.Millisecond)
me.doAction(a)
muAction.Unlock()
}