package main

// if you include more than just this import
// then your plugin might be doing something un-ideal (just a guess from 2023/02/27)
import (
	"go.wit.com/lib/widget"
	"go.wit.com/log"
)

// delete the child widget from the parent
// p = parent, c = child
func (n *node) destroy() {
	pId := n.parent.WidgetId
	cId := n.WidgetId
	log.Log(NOW, "delete()", pId, cId)

	pt := n.parent.tk
	ct := n.tk
	if ct == nil {
		log.Log(NOW, "delete FAILED (ct = mapToolkit[c] == nil) for c", pId, cId)
		// this pukes out a whole universe of shit
		// listMap()
		return
	}

	switch n.WidgetType {
	case widget.Button:
		log.Log(NOW, "Should delete Button here:", n.progname)
		log.Log(NOW, "Parent:")
		pt.Dump(true)
		log.Log(NOW, "Child:")
		ct.Dump(true)
		if pt.uiBox == nil {
			log.Log(NOW, "Don't know how to destroy this")
		} else {
			log.Log(NOW, "Fuck it, destroy the whole box", n.parent.progname)
			// pt.uiBox.Destroy() // You have a bug: You cannot destroy a uiControl while it still has a parent.
			pt.uiBox.SetPadded(false)
			pt.uiBox.Delete(4)
			ct.uiButton.Disable()
			// ct.uiButton.Hide()
			ct.uiButton.Destroy()
		}

	case widget.Window:
		log.Log(NOW, "Should delete Window here:", n.progname)
	default:
		log.Log(NOW, "Fuckit, let's destroy a button")
		if ct.uiButton != nil {
			pt.uiBox.Delete(4)
			ct.uiButton.Destroy()
		}
	}
}
