From d802e345fe5c2caed0faba7612b5259da7c188c0 Mon Sep 17 00:00:00 2001 From: mappu Date: Sun, 4 May 2025 14:15:58 +1200 Subject: [PATCH] miqt-uic: support SizePolicy --- cmd/miqt-uic/types.go | 24 ++++++++++++++++-------- cmd/miqt-uic/ui2go.go | 11 +++++++++++ 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/cmd/miqt-uic/types.go b/cmd/miqt-uic/types.go index 80d2c4a8..334859be 100644 --- a/cmd/miqt-uic/types.go +++ b/cmd/miqt-uic/types.go @@ -74,15 +74,23 @@ type UiIcon struct { Base string `xml:",chardata"` } +type UiSizePolicy struct { + HSizeType string `xml:"hsizetype,attr"` + VSizeType string `xml:"vsizetype,attr"` + HStretch int `xml:"horstretch"` + VStretch int `xml:"verstretch"` +} + type UiProperty struct { - Name string `xml:"name,attr"` - StringVal *UiString `xml:"string,omitempty"` - NumberVal *string `xml:"number,omitempty"` // Preserve as string literal - BoolVal *bool `xml:"bool,omitempty"` // "true" or "false" - EnumVal *string `xml:"enum,omitempty"` - RectVal *UiRect `xml:"rect,omitempty"` - IconVal *UiIcon `xml:"iconset,omitempty"` - SetVal *string `xml:"set,omitempty"` + Name string `xml:"name,attr"` + StringVal *UiString `xml:"string,omitempty"` + NumberVal *string `xml:"number,omitempty"` // Preserve as string literal + BoolVal *bool `xml:"bool,omitempty"` // "true" or "false" + EnumVal *string `xml:"enum,omitempty"` + RectVal *UiRect `xml:"rect,omitempty"` + IconVal *UiIcon `xml:"iconset,omitempty"` + SetVal *string `xml:"set,omitempty"` + SizePolicyVal *UiSizePolicy `xml:"sizepolicy,omitempty"` } type UiActionReference struct { diff --git a/cmd/miqt-uic/ui2go.go b/cmd/miqt-uic/ui2go.go index 69089e93..b2827441 100644 --- a/cmd/miqt-uic/ui2go.go +++ b/cmd/miqt-uic/ui2go.go @@ -182,6 +182,17 @@ func renderProperties(properties []UiProperty, ret *strings.Builder, targetName, iconName := renderIcon(prop.IconVal, ret) ret.WriteString(`ui.` + targetName + setterFunc + `(` + iconName + ")\n") + } else if prop.Name == "sizePolicy" { + spn := targetName + "__sizePolicy" + ret.WriteString(spn + " := qt.NewQSizePolicy()\n") + ret.WriteString(spn + ".SetHorizontalPolicy(" + normalizeEnumName("QSizePolicy::"+prop.SizePolicyVal.HSizeType) + ")\n") + ret.WriteString(spn + ".SetVerticalPolicy(" + normalizeEnumName("QSizePolicy::"+prop.SizePolicyVal.VSizeType) + ")\n") + ret.WriteString(spn + ".SetHorizontalStretch(" + strconv.Itoa(prop.SizePolicyVal.HStretch) + ")\n") + ret.WriteString(spn + ".SetVerticalStretch(" + strconv.Itoa(prop.SizePolicyVal.VStretch) + ")\n") + ret.WriteString(spn + ".SetHeightForWidth(ui." + targetName + ".SizePolicy().HasHeightForWidth())\n") + ret.WriteString("ui." + targetName + ".SetSizePolicy(*" + spn + ")\n") + ret.WriteString(spn + ".Delete() // setter copies values\n") + } else { ret.WriteString("/* miqt-uic: no handler for " + targetName + " property '" + prop.Name + "' */\n") }