package ui import ( "fmt" "log" "reflect" ) func LogWindowEvent(view View, evt WindowEventName) { pkg, viewName := windowFQN(view) log.Printf("%s.%s: %s", pkg, viewName, evt) } func LogWindowEventMessage( view View, evt WindowEventName, msg string, args ...any, ) { pkg, viewName := windowFQN(view) log.Printf( "%s.%s: %s [%s]", pkg, viewName, evt, fmt.Sprintf(msg, args...)) } func LogWindowError( view View, evt WindowEventName, err error, ) { pkg, viewName := windowFQN(view) log.Printf( "%s.%s: %s [%s]", pkg, viewName, evt, err) } func windowFQN(view View) ( pkg string, viewName string, ) { t := reflect.TypeOf(view) if t.Kind() == reflect.Pointer { t = t.Elem() } pkg = t.PkgPath() viewName = t.Name() return }