github.com/jmigpin/editor@v1.6.0/ui/mainmenu.go (about) 1 package ui 2 3 import ( 4 "github.com/jmigpin/editor/util/drawutil/drawer4" 5 "github.com/jmigpin/editor/util/uiutil/widget" 6 ) 7 8 type MainMenuButton struct { 9 *widget.FloatBoxButton 10 sa *widget.ScrollArea 11 Toolbar *Toolbar 12 } 13 14 func NewMainMenuButton(root *Root) *MainMenuButton { 15 mmb := &MainMenuButton{} 16 17 content := &widget.ENode{} 18 19 mmb.FloatBoxButton = widget.NewFloatBoxButton(root.UI, root.MultiLayer, root.MenuLayer, content) 20 mmb.FloatBoxButton.Label.Text.SetStr(string(rune(8801))) // 3 lines rune 21 mmb.FloatBoxButton.Label.Pad.Left = 5 22 mmb.FloatBoxButton.Label.Pad.Right = 5 23 24 // theme 25 mmb.SetThemePaletteNamePrefix("mm_") 26 content.SetThemePaletteNamePrefix("mm_content_") 27 28 // float content 29 mmb.Toolbar = NewToolbar(root.UI) 30 if d, ok := mmb.Toolbar.Drawer.(*drawer4.Drawer); ok { 31 d.Opt.EarlyExitMeasure = false // full measure to avoid flicker (want the menu size stable) 32 } 33 mmb.sa = widget.NewScrollArea(root.UI, mmb.Toolbar, false, true) 34 mmb.sa.LeftScroll = ScrollBarLeft 35 border := widget.NewBorder(root.UI, mmb.sa) 36 border.SetAll(1) 37 n1 := WrapInBottomShadowOrNone(root.UI, border) 38 content.Append(n1) 39 40 return mmb 41 }