package singlestack

import (
	"github.com/gotk3/gotk3/gtk"
)

type Stack struct {
	*gtk.Stack
	current gtk.IWidget
}

func NewStack() *Stack {
	stack, _ := gtk.StackNew()
	return &Stack{stack, nil}
}

func (s *Stack) Add(w gtk.IWidget) {
	if s.current == w {
		return
	}

	if w != nil {
		s.Stack.Add(w)
		s.Stack.SetVisibleChild(w)
	}

	if s.current != nil {
		s.Stack.Remove(s.current)
	}

	s.current = w
}

func (s *Stack) SetVisibleChild(w gtk.IWidget) {
	s.Add(w)
}

func (s *Stack) GetChild() (gtk.IWidget, error) {
	return s.current, nil
}