diff --git a/cmd/miqt-uic/types.go b/cmd/miqt-uic/types.go index 334859be..46f3f63c 100644 --- a/cmd/miqt-uic/types.go +++ b/cmd/miqt-uic/types.go @@ -61,6 +61,7 @@ type UiString struct { type UiIcon struct { ResourceFile string `xml:"resource,attr"` + Theme string `xml:"theme,attr"` NormalOff *string `xml:"normaloff,omitempty"` NormalOn *string `xml:"normalon,omitempty"` diff --git a/cmd/miqt-uic/ui2go.go b/cmd/miqt-uic/ui2go.go index 27bc6712..79417501 100644 --- a/cmd/miqt-uic/ui2go.go +++ b/cmd/miqt-uic/ui2go.go @@ -75,13 +75,22 @@ func renderIcon(iconVal *UiIcon, ret *strings.Builder) string { iconName := fmt.Sprintf("icon%d", IconCounter) IconCounter++ - ret.WriteString(iconName + " := qt.NewQIcon()\n") + if iconVal.Theme != "" { + ret.WriteString(iconName + ` := qt.QIcon_FromTheme(` + strconv.Quote(iconVal.Theme) + ")\n") + } else { + ret.WriteString(iconName + " := qt.NewQIcon()\n") + } // A base entry is a synonym for NormalOff. Don't need them both - if iconVal.NormalOff != nil { + if iconVal.NormalOff != nil && *iconVal.NormalOff != "." { ret.WriteString(iconName + ".AddFile4(" + strconv.Quote(*iconVal.NormalOff) + ", qt.NewQSize(), qt.QIcon__Normal, qt.QIcon__Off)\n") } else { - ret.WriteString(iconName + ".AddFile(" + strconv.Quote(strings.TrimSpace(iconVal.Base)) + ")\n") + base := strings.TrimSpace(iconVal.Base) + if base == "" || base == "." { + // skip + } else { + ret.WriteString(iconName + ".AddFile(" + strconv.Quote(strings.TrimSpace(iconVal.Base)) + ")\n") + } } if iconVal.NormalOn != nil {