Path: blob/main/internal/sidebar/directbutton/button.go
366 views
package directbutton12import (3"context"4"math"56"github.com/diamondburned/gotk4/pkg/gtk/v4"7"github.com/diamondburned/gotkit/gtkutil/cssutil"8"libdb.so/dissent/internal/gtkcord"9"libdb.so/dissent/internal/sidebar/sidebutton"10)1112type Button struct {13*gtk.Overlay14Pill *sidebutton.Pill15Button *gtk.Button1617ctx context.Context18}1920var dmButtonCSS = cssutil.Applier("sidebar-dm-button-overlay", `21.sidebar-dm-button {22padding: 4px 12px;23border-radius: 0;24}25.sidebar-dm-button image {26padding-top: 4px;27padding-bottom: 2px;28}29`)3031func NewButton(ctx context.Context) *Button {32b := Button{ctx: ctx}3334icon := gtk.NewImageFromIconName("chat-bubbles-empty-symbolic")35icon.SetIconSize(gtk.IconSizeLarge)36icon.SetPixelSize(int(math.Round(gtkcord.GuildIconSize * 0.85)))3738b.Button = gtk.NewButton()39b.Button.AddCSSClass("sidebar-dm-button")40b.Button.SetTooltipText("Direct Messages")41b.Button.SetChild(icon)42b.Button.SetHasFrame(false)43b.Button.ConnectClicked(func() {44b.Pill.State = sidebutton.PillActive45b.Pill.Invalidate()4647parent := gtk.BaseWidget(b.Button.Parent())48parent.ActivateAction("win.open-dms", nil)49})5051b.Pill = sidebutton.NewPill()5253b.Overlay = gtk.NewOverlay()54b.Overlay.SetChild(b.Button)55b.Overlay.AddOverlay(b.Pill)5657dmButtonCSS(b)58return &b59}606162