Merge 09598e4980cb72c238c4f45a2e0519cbe8aa52d4 into 09149e05664bfbfd0d960dfeeea62e867b8624db

This commit is contained in:
mappu 2025-05-28 19:22:23 +12:00 committed by GitHub
commit 7ceb5b2606
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
41 changed files with 2488 additions and 72 deletions

81
cmd/miqt-uic/testdata/qt5_dialog.ui vendored Normal file
View File

@ -0,0 +1,81 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Dialog</class>
<widget class="QDialog" name="Dialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="geometry">
<rect>
<x>30</x>
<y>240</y>
<width>341</width>
<height>32</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>20</x>
<y>20</y>
<width>171</width>
<height>31</height>
</rect>
</property>
<property name="text">
<string>QDialog as base class</string>
</property>
</widget>
</widget>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>Dialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>Dialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

@ -0,0 +1,45 @@
// Generated by miqt-uic. To update this file, edit the .ui file in
// Qt Designer, and then run 'go generate'.
//
//go:generate miqt-uic go_generate_args
package test_package_name
import (
"github.com/mappu/miqt/qt"
)
type DialogUi struct {
Dialog *qt.QDialog
buttonBox *qt.QDialogButtonBox
label *qt.QLabel
}
// NewDialogUi creates all Qt widget classes for Dialog.
func NewDialogUi() *DialogUi {
ui := &DialogUi{}
ui.Dialog = qt.NewQDialog(nil)
ui.Dialog.SetObjectName("Dialog")
ui.Dialog.Resize(400, 300)
ui.buttonBox = qt.NewQDialogButtonBox(ui.Dialog.QWidget)
ui.buttonBox.SetObjectName("buttonBox")
ui.buttonBox.SetGeometry(qt.NewQRect(30, 240, 341, 32))
ui.buttonBox.SetOrientation(qt.Horizontal)
ui.buttonBox.SetStandardButtons(qt.QDialogButtonBox__Cancel | qt.QDialogButtonBox__Ok)
ui.label = qt.NewQLabel(ui.Dialog.QWidget)
ui.label.SetObjectName("label")
ui.label.SetGeometry(qt.NewQRect(20, 20, 171, 31))
ui.buttonBox.OnAccepted(ui.Dialog.Accept)
ui.buttonBox.OnRejected(ui.Dialog.Reject)
ui.Retranslate()
return ui
}
// Retranslate reapplies all text translations.
func (ui *DialogUi) Retranslate() {
ui.Dialog.SetWindowTitle(qt.QCoreApplication_Tr("Dialog"))
ui.label.SetText(qt.QDialog_Tr("QDialog as base class"))
}

View File

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>600</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<widget class="QPushButton" name="pushButton">
<property name="geometry">
<rect>
<x>20</x>
<y>20</y>
<width>84</width>
<height>33</height>
</rect>
</property>
<property name="text">
<string>PushButton</string>
</property>
</widget>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>29</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,49 @@
// Generated by miqt-uic. To update this file, edit the .ui file in
// Qt Designer, and then run 'go generate'.
//
//go:generate miqt-uic go_generate_args
package test_package_name
import (
"github.com/mappu/miqt/qt"
)
type MainWindowUi struct {
MainWindow *qt.QMainWindow
centralwidget *qt.QWidget
pushButton *qt.QPushButton
menubar *qt.QMenuBar
statusbar *qt.QStatusBar
}
// NewMainWindowUi creates all Qt widget classes for MainWindow.
func NewMainWindowUi() *MainWindowUi {
ui := &MainWindowUi{}
ui.MainWindow = qt.NewQMainWindow(nil)
ui.MainWindow.SetObjectName("MainWindow")
ui.MainWindow.Resize(800, 600)
ui.centralwidget = qt.NewQWidget(ui.MainWindow.QWidget)
ui.centralwidget.SetObjectName("centralwidget")
ui.pushButton = qt.NewQPushButton(ui.centralwidget)
ui.pushButton.SetObjectName("pushButton")
ui.pushButton.SetGeometry(qt.NewQRect(20, 20, 84, 33))
ui.MainWindow.SetCentralWidget(ui.centralwidget) // Set central widget
ui.menubar = qt.NewQMenuBar(ui.MainWindow.QWidget)
ui.menubar.SetObjectName("menubar")
ui.menubar.Resize(800, 29)
ui.MainWindow.SetMenuBar(ui.menubar)
ui.statusbar = qt.NewQStatusBar(ui.MainWindow.QWidget)
ui.statusbar.SetObjectName("statusbar")
ui.MainWindow.SetStatusBar(ui.statusbar)
ui.Retranslate()
return ui
}
// Retranslate reapplies all text translations.
func (ui *MainWindowUi) Retranslate() {
ui.MainWindow.SetWindowTitle(qt.QCoreApplication_Tr("MainWindow"))
ui.pushButton.SetText(qt.QWidget_Tr("PushButton"))
}

View File

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>600</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QPushButton" name="pushButton_2">
<property name="text">
<string>top left</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QPushButton" name="pushButton">
<property name="text">
<string>top right</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QPushButton" name="pushButton_3">
<property name="text">
<string>bottom left</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QPushButton" name="pushButton_4">
<property name="text">
<string>bottom right</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>29</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,73 @@
// Generated by miqt-uic. To update this file, edit the .ui file in
// Qt Designer, and then run 'go generate'.
//
//go:generate miqt-uic go_generate_args
package test_package_name
import (
"github.com/mappu/miqt/qt"
)
type MainWindowUi struct {
MainWindow *qt.QMainWindow
centralwidget *qt.QWidget
gridLayout *qt.QGridLayout
pushButton_2 *qt.QPushButton
pushButton *qt.QPushButton
pushButton_3 *qt.QPushButton
pushButton_4 *qt.QPushButton
menubar *qt.QMenuBar
statusbar *qt.QStatusBar
}
// NewMainWindowUi creates all Qt widget classes for MainWindow.
func NewMainWindowUi() *MainWindowUi {
ui := &MainWindowUi{}
ui.MainWindow = qt.NewQMainWindow(nil)
ui.MainWindow.SetObjectName("MainWindow")
ui.MainWindow.Resize(800, 600)
ui.centralwidget = qt.NewQWidget(ui.MainWindow.QWidget)
ui.centralwidget.SetObjectName("centralwidget")
ui.gridLayout = qt.NewQGridLayout(ui.centralwidget)
ui.gridLayout.SetObjectName("gridLayout")
ui.gridLayout.SetContentsMargins(11, 11, 11, 11)
ui.gridLayout.SetSpacing(6)
ui.pushButton_2 = qt.NewQPushButton(ui.centralwidget)
ui.pushButton_2.SetObjectName("pushButton_2")
ui.gridLayout.AddWidget2(ui.pushButton_2.QWidget, 0, 0)
ui.pushButton = qt.NewQPushButton(ui.centralwidget)
ui.pushButton.SetObjectName("pushButton")
ui.gridLayout.AddWidget2(ui.pushButton.QWidget, 0, 1)
ui.pushButton_3 = qt.NewQPushButton(ui.centralwidget)
ui.pushButton_3.SetObjectName("pushButton_3")
ui.gridLayout.AddWidget2(ui.pushButton_3.QWidget, 1, 0)
ui.pushButton_4 = qt.NewQPushButton(ui.centralwidget)
ui.pushButton_4.SetObjectName("pushButton_4")
ui.gridLayout.AddWidget2(ui.pushButton_4.QWidget, 1, 1)
ui.MainWindow.SetCentralWidget(ui.centralwidget) // Set central widget
ui.menubar = qt.NewQMenuBar(ui.MainWindow.QWidget)
ui.menubar.SetObjectName("menubar")
ui.menubar.Resize(800, 29)
ui.MainWindow.SetMenuBar(ui.menubar)
ui.statusbar = qt.NewQStatusBar(ui.MainWindow.QWidget)
ui.statusbar.SetObjectName("statusbar")
ui.MainWindow.SetStatusBar(ui.statusbar)
ui.Retranslate()
return ui
}
// Retranslate reapplies all text translations.
func (ui *MainWindowUi) Retranslate() {
ui.MainWindow.SetWindowTitle(qt.QCoreApplication_Tr("MainWindow"))
ui.pushButton_2.SetText(qt.QWidget_Tr("top left"))
ui.pushButton.SetText(qt.QWidget_Tr("top right"))
ui.pushButton_3.SetText(qt.QWidget_Tr("bottom left"))
ui.pushButton_4.SetText(qt.QWidget_Tr("bottom right"))
}

View File

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>600</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="pushButton_2">
<property name="text">
<string>PushButton</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton">
<property name="text">
<string>PushButton</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>29</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,61 @@
// Generated by miqt-uic. To update this file, edit the .ui file in
// Qt Designer, and then run 'go generate'.
//
//go:generate miqt-uic go_generate_args
package test_package_name
import (
"github.com/mappu/miqt/qt"
)
type MainWindowUi struct {
MainWindow *qt.QMainWindow
centralwidget *qt.QWidget
horizontalLayout *qt.QHBoxLayout
pushButton_2 *qt.QPushButton
pushButton *qt.QPushButton
menubar *qt.QMenuBar
statusbar *qt.QStatusBar
}
// NewMainWindowUi creates all Qt widget classes for MainWindow.
func NewMainWindowUi() *MainWindowUi {
ui := &MainWindowUi{}
ui.MainWindow = qt.NewQMainWindow(nil)
ui.MainWindow.SetObjectName("MainWindow")
ui.MainWindow.Resize(800, 600)
ui.centralwidget = qt.NewQWidget(ui.MainWindow.QWidget)
ui.centralwidget.SetObjectName("centralwidget")
ui.horizontalLayout = qt.NewQHBoxLayout(ui.centralwidget)
ui.horizontalLayout.SetObjectName("horizontalLayout")
ui.horizontalLayout.SetContentsMargins(11, 11, 11, 11)
ui.horizontalLayout.SetSpacing(6)
ui.pushButton_2 = qt.NewQPushButton(ui.centralwidget)
ui.pushButton_2.SetObjectName("pushButton_2")
ui.horizontalLayout.AddWidget(ui.pushButton_2.QWidget)
ui.pushButton = qt.NewQPushButton(ui.centralwidget)
ui.pushButton.SetObjectName("pushButton")
ui.horizontalLayout.AddWidget(ui.pushButton.QWidget)
ui.MainWindow.SetCentralWidget(ui.centralwidget) // Set central widget
ui.menubar = qt.NewQMenuBar(ui.MainWindow.QWidget)
ui.menubar.SetObjectName("menubar")
ui.menubar.Resize(800, 29)
ui.MainWindow.SetMenuBar(ui.menubar)
ui.statusbar = qt.NewQStatusBar(ui.MainWindow.QWidget)
ui.statusbar.SetObjectName("statusbar")
ui.MainWindow.SetStatusBar(ui.statusbar)
ui.Retranslate()
return ui
}
// Retranslate reapplies all text translations.
func (ui *MainWindowUi) Retranslate() {
ui.MainWindow.SetWindowTitle(qt.QCoreApplication_Tr("MainWindow"))
ui.pushButton_2.SetText(qt.QWidget_Tr("PushButton"))
ui.pushButton.SetText(qt.QWidget_Tr("PushButton"))
}

View File

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>600</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>785</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>29</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,53 @@
// Generated by miqt-uic. To update this file, edit the .ui file in
// Qt Designer, and then run 'go generate'.
//
//go:generate miqt-uic go_generate_args
package test_package_name
import (
"github.com/mappu/miqt/qt"
)
type MainWindowUi struct {
MainWindow *qt.QMainWindow
centralwidget *qt.QWidget
verticalLayout *qt.QVBoxLayout
horizontalSpacer *qt.QSpacerItem
menubar *qt.QMenuBar
statusbar *qt.QStatusBar
}
// NewMainWindowUi creates all Qt widget classes for MainWindow.
func NewMainWindowUi() *MainWindowUi {
ui := &MainWindowUi{}
ui.MainWindow = qt.NewQMainWindow(nil)
ui.MainWindow.SetObjectName("MainWindow")
ui.MainWindow.Resize(800, 600)
ui.centralwidget = qt.NewQWidget(ui.MainWindow.QWidget)
ui.centralwidget.SetObjectName("centralwidget")
ui.verticalLayout = qt.NewQVBoxLayout(ui.centralwidget)
ui.verticalLayout.SetObjectName("verticalLayout")
ui.verticalLayout.SetContentsMargins(11, 11, 11, 11)
ui.verticalLayout.SetSpacing(6)
ui.horizontalSpacer = qt.NewQSpacerItem4(785, 20, qt.QSizePolicy__Expanding, qt.QSizePolicy__Minimum)
ui.verticalLayout.AddItem(ui.horizontalSpacer.QLayoutItem)
ui.MainWindow.SetCentralWidget(ui.centralwidget) // Set central widget
ui.menubar = qt.NewQMenuBar(ui.MainWindow.QWidget)
ui.menubar.SetObjectName("menubar")
ui.menubar.Resize(800, 29)
ui.MainWindow.SetMenuBar(ui.menubar)
ui.statusbar = qt.NewQStatusBar(ui.MainWindow.QWidget)
ui.statusbar.SetObjectName("statusbar")
ui.MainWindow.SetStatusBar(ui.statusbar)
ui.Retranslate()
return ui
}
// Retranslate reapplies all text translations.
func (ui *MainWindowUi) Retranslate() {
ui.MainWindow.SetWindowTitle(qt.QCoreApplication_Tr("MainWindow"))
}

View File

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>600</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget"/>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>29</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
<action name="actionApplicationExit">
<property name="checkable">
<bool>true</bool>
</property>
<property name="icon">
<iconset theme="application-exit"/>
</property>
<property name="text">
<string>ApplicationExit</string>
</property>
<property name="toolTip">
<string>Custom Tooltip</string>
</property>
</action>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,50 @@
// Generated by miqt-uic. To update this file, edit the .ui file in
// Qt Designer, and then run 'go generate'.
//
//go:generate miqt-uic go_generate_args
package test_package_name
import (
"github.com/mappu/miqt/qt"
)
type MainWindowUi struct {
MainWindow *qt.QMainWindow
centralwidget *qt.QWidget
menubar *qt.QMenuBar
statusbar *qt.QStatusBar
actionApplicationExit *qt.QAction
}
// NewMainWindowUi creates all Qt widget classes for MainWindow.
func NewMainWindowUi() *MainWindowUi {
ui := &MainWindowUi{}
ui.MainWindow = qt.NewQMainWindow(nil)
ui.MainWindow.SetObjectName("MainWindow")
ui.MainWindow.Resize(800, 600)
ui.actionApplicationExit = qt.NewQAction()
ui.actionApplicationExit.SetObjectName("actionApplicationExit")
icon0 := qt.QIcon_FromTheme("application-exit")
ui.actionApplicationExit.SetIcon(icon0)
ui.centralwidget = qt.NewQWidget(ui.MainWindow.QWidget)
ui.centralwidget.SetObjectName("centralwidget")
ui.MainWindow.SetCentralWidget(ui.centralwidget) // Set central widget
ui.menubar = qt.NewQMenuBar(ui.MainWindow.QWidget)
ui.menubar.SetObjectName("menubar")
ui.menubar.Resize(800, 29)
ui.MainWindow.SetMenuBar(ui.menubar)
ui.statusbar = qt.NewQStatusBar(ui.MainWindow.QWidget)
ui.statusbar.SetObjectName("statusbar")
ui.MainWindow.SetStatusBar(ui.statusbar)
ui.Retranslate()
return ui
}
// Retranslate reapplies all text translations.
func (ui *MainWindowUi) Retranslate() {
ui.MainWindow.SetWindowTitle(qt.QCoreApplication_Tr("MainWindow"))
ui.actionApplicationExit.SetText(qt.QMainWindow_Tr("ApplicationExit"))
}

View File

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>600</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget"/>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>29</height>
</rect>
</property>
<widget class="QMenu" name="menu_File">
<property name="title">
<string>&amp;File</string>
</property>
<addaction name="actionNew"/>
<addaction name="separator"/>
<addaction name="actionE_xit"/>
</widget>
<addaction name="menu_File"/>
</widget>
<widget class="QStatusBar" name="statusbar"/>
<action name="actionNew">
<property name="text">
<string>New...</string>
</property>
<property name="toolTip">
<string>Custom Tooltip for New</string>
</property>
<property name="shortcut">
<string>Ctrl+N</string>
</property>
</action>
<action name="actionE_xit">
<property name="text">
<string>E&amp;xit</string>
</property>
</action>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,61 @@
// Generated by miqt-uic. To update this file, edit the .ui file in
// Qt Designer, and then run 'go generate'.
//
//go:generate miqt-uic go_generate_args
package test_package_name
import (
"github.com/mappu/miqt/qt"
)
type MainWindowUi struct {
MainWindow *qt.QMainWindow
centralwidget *qt.QWidget
menubar *qt.QMenuBar
menu_File *qt.QMenu
statusbar *qt.QStatusBar
actionNew *qt.QAction
actionE_xit *qt.QAction
}
// NewMainWindowUi creates all Qt widget classes for MainWindow.
func NewMainWindowUi() *MainWindowUi {
ui := &MainWindowUi{}
ui.MainWindow = qt.NewQMainWindow(nil)
ui.MainWindow.SetObjectName("MainWindow")
ui.MainWindow.Resize(800, 600)
ui.actionNew = qt.NewQAction()
ui.actionNew.SetObjectName("actionNew")
ui.actionNew.SetShortcut(qt.NewQKeySequence2("Ctrl+N"))
ui.actionE_xit = qt.NewQAction()
ui.actionE_xit.SetObjectName("actionE_xit")
ui.centralwidget = qt.NewQWidget(ui.MainWindow.QWidget)
ui.centralwidget.SetObjectName("centralwidget")
ui.MainWindow.SetCentralWidget(ui.centralwidget) // Set central widget
ui.menubar = qt.NewQMenuBar(ui.MainWindow.QWidget)
ui.menubar.SetObjectName("menubar")
ui.menubar.Resize(800, 29)
ui.menu_File = qt.NewQMenu(ui.menubar.QWidget)
ui.menu_File.SetObjectName("menu_File")
ui.menu_File.QWidget.AddAction(ui.actionNew)
ui.menu_File.AddSeparator()
ui.menu_File.QWidget.AddAction(ui.actionE_xit)
ui.menubar.AddMenu(ui.menu_File)
ui.MainWindow.SetMenuBar(ui.menubar)
ui.statusbar = qt.NewQStatusBar(ui.MainWindow.QWidget)
ui.statusbar.SetObjectName("statusbar")
ui.MainWindow.SetStatusBar(ui.statusbar)
ui.Retranslate()
return ui
}
// Retranslate reapplies all text translations.
func (ui *MainWindowUi) Retranslate() {
ui.MainWindow.SetWindowTitle(qt.QCoreApplication_Tr("MainWindow"))
ui.actionNew.SetText(qt.QMainWindow_Tr("New..."))
ui.actionE_xit.SetText(qt.QMainWindow_Tr("E&xit"))
ui.menu_File.SetTitle(qt.QMenuBar_Tr("&File"))
}

View File

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>600</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="pushButton_2">
<property name="text">
<string>top left</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton">
<property name="text">
<string>top right</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QPushButton" name="pushButton_4">
<property name="text">
<string>bottom left</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_3">
<property name="text">
<string>bottom right</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>29</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,94 @@
// Generated by miqt-uic. To update this file, edit the .ui file in
// Qt Designer, and then run 'go generate'.
//
//go:generate miqt-uic go_generate_args
package test_package_name
import (
"github.com/mappu/miqt/qt"
)
type MainWindowUi struct {
MainWindow *qt.QMainWindow
centralwidget *qt.QWidget
gridLayout *qt.QGridLayout
verticalLayout *qt.QVBoxLayout
horizontalLayout *qt.QHBoxLayout
pushButton_2 *qt.QPushButton
pushButton *qt.QPushButton
horizontalLayout_2 *qt.QHBoxLayout
pushButton_4 *qt.QPushButton
pushButton_3 *qt.QPushButton
menubar *qt.QMenuBar
statusbar *qt.QStatusBar
}
// NewMainWindowUi creates all Qt widget classes for MainWindow.
func NewMainWindowUi() *MainWindowUi {
ui := &MainWindowUi{}
ui.MainWindow = qt.NewQMainWindow(nil)
ui.MainWindow.SetObjectName("MainWindow")
ui.MainWindow.Resize(800, 600)
ui.centralwidget = qt.NewQWidget(ui.MainWindow.QWidget)
ui.centralwidget.SetObjectName("centralwidget")
ui.gridLayout = qt.NewQGridLayout(ui.centralwidget)
ui.gridLayout.SetObjectName("gridLayout")
ui.gridLayout.SetContentsMargins(11, 11, 11, 11)
ui.gridLayout.SetSpacing(6)
ui.verticalLayout = qt.NewQVBoxLayout2()
ui.verticalLayout.SetObjectName("verticalLayout")
ui.verticalLayout.SetContentsMargins(11, 11, 11, 11)
ui.verticalLayout.SetSpacing(6)
ui.horizontalLayout = qt.NewQHBoxLayout2()
ui.horizontalLayout.SetObjectName("horizontalLayout")
ui.horizontalLayout.SetContentsMargins(11, 11, 11, 11)
ui.horizontalLayout.SetSpacing(6)
ui.pushButton_2 = qt.NewQPushButton(ui.centralwidget)
ui.pushButton_2.SetObjectName("pushButton_2")
ui.horizontalLayout.AddWidget(ui.pushButton_2.QWidget)
ui.pushButton = qt.NewQPushButton(ui.centralwidget)
ui.pushButton.SetObjectName("pushButton")
ui.horizontalLayout.AddWidget(ui.pushButton.QWidget)
ui.verticalLayout.AddLayout(ui.horizontalLayout.QLayout)
ui.horizontalLayout_2 = qt.NewQHBoxLayout2()
ui.horizontalLayout_2.SetObjectName("horizontalLayout_2")
ui.horizontalLayout_2.SetContentsMargins(11, 11, 11, 11)
ui.horizontalLayout_2.SetSpacing(6)
ui.pushButton_4 = qt.NewQPushButton(ui.centralwidget)
ui.pushButton_4.SetObjectName("pushButton_4")
ui.horizontalLayout_2.AddWidget(ui.pushButton_4.QWidget)
ui.pushButton_3 = qt.NewQPushButton(ui.centralwidget)
ui.pushButton_3.SetObjectName("pushButton_3")
ui.horizontalLayout_2.AddWidget(ui.pushButton_3.QWidget)
ui.verticalLayout.AddLayout(ui.horizontalLayout_2.QLayout)
ui.gridLayout.AddLayout(ui.verticalLayout.QLayout, 0, 0)
ui.MainWindow.SetCentralWidget(ui.centralwidget) // Set central widget
ui.menubar = qt.NewQMenuBar(ui.MainWindow.QWidget)
ui.menubar.SetObjectName("menubar")
ui.menubar.Resize(800, 29)
ui.MainWindow.SetMenuBar(ui.menubar)
ui.statusbar = qt.NewQStatusBar(ui.MainWindow.QWidget)
ui.statusbar.SetObjectName("statusbar")
ui.MainWindow.SetStatusBar(ui.statusbar)
ui.Retranslate()
return ui
}
// Retranslate reapplies all text translations.
func (ui *MainWindowUi) Retranslate() {
ui.MainWindow.SetWindowTitle(qt.QCoreApplication_Tr("MainWindow"))
ui.pushButton_2.SetText(qt.QWidget_Tr("top left"))
ui.pushButton.SetText(qt.QWidget_Tr("top right"))
ui.pushButton_4.SetText(qt.QWidget_Tr("bottom left"))
ui.pushButton_3.SetText(qt.QWidget_Tr("bottom right"))
}

View File

@ -0,0 +1,102 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>600</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QGridLayout" name="gridLayout">
<item row="1" column="0">
<widget class="QTabWidget" name="tabWidget_3">
<property name="tabPosition">
<enum>QTabWidget::West</enum>
</property>
<widget class="QWidget" name="tab_5">
<attribute name="title">
<string>Tab 1</string>
</attribute>
</widget>
<widget class="QWidget" name="tab_6">
<attribute name="title">
<string>Tab 2</string>
</attribute>
</widget>
</widget>
</item>
<item row="0" column="1">
<widget class="QTabWidget" name="tabWidget">
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="tab">
<attribute name="title">
<string>First Tab</string>
</attribute>
</widget>
<widget class="QWidget" name="tab_2">
<attribute name="title">
<string>Second Tab</string>
</attribute>
</widget>
</widget>
</item>
<item row="2" column="1">
<widget class="QTabWidget" name="tabWidget_2">
<property name="tabPosition">
<enum>QTabWidget::South</enum>
</property>
<widget class="QWidget" name="tab_3">
<attribute name="title">
<string>Tab 1</string>
</attribute>
</widget>
<widget class="QWidget" name="tab_4">
<attribute name="title">
<string>Tab 2</string>
</attribute>
</widget>
</widget>
</item>
<item row="1" column="2">
<widget class="QTabWidget" name="tabWidget_4">
<property name="tabPosition">
<enum>QTabWidget::East</enum>
</property>
<widget class="QWidget" name="tab_7">
<attribute name="title">
<string>Tab 1</string>
</attribute>
</widget>
<widget class="QWidget" name="tab_8">
<attribute name="title">
<string>Tab 2</string>
</attribute>
</widget>
</widget>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>29</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,114 @@
// Generated by miqt-uic. To update this file, edit the .ui file in
// Qt Designer, and then run 'go generate'.
//
//go:generate miqt-uic go_generate_args
package test_package_name
import (
"github.com/mappu/miqt/qt"
)
type MainWindowUi struct {
MainWindow *qt.QMainWindow
centralwidget *qt.QWidget
gridLayout *qt.QGridLayout
tabWidget_3 *qt.QTabWidget
tab_5 *qt.QWidget
tab_6 *qt.QWidget
tabWidget *qt.QTabWidget
tab *qt.QWidget
tab_2 *qt.QWidget
tabWidget_2 *qt.QTabWidget
tab_3 *qt.QWidget
tab_4 *qt.QWidget
tabWidget_4 *qt.QTabWidget
tab_7 *qt.QWidget
tab_8 *qt.QWidget
menubar *qt.QMenuBar
statusbar *qt.QStatusBar
}
// NewMainWindowUi creates all Qt widget classes for MainWindow.
func NewMainWindowUi() *MainWindowUi {
ui := &MainWindowUi{}
ui.MainWindow = qt.NewQMainWindow(nil)
ui.MainWindow.SetObjectName("MainWindow")
ui.MainWindow.Resize(800, 600)
ui.centralwidget = qt.NewQWidget(ui.MainWindow.QWidget)
ui.centralwidget.SetObjectName("centralwidget")
ui.gridLayout = qt.NewQGridLayout(ui.centralwidget)
ui.gridLayout.SetObjectName("gridLayout")
ui.gridLayout.SetContentsMargins(11, 11, 11, 11)
ui.gridLayout.SetSpacing(6)
ui.tabWidget_3 = qt.NewQTabWidget(ui.centralwidget)
ui.tabWidget_3.SetObjectName("tabWidget_3")
ui.tabWidget_3.SetTabPosition(qt.QTabWidget__West)
ui.tab_5 = qt.NewQWidget(ui.tabWidget_3.QWidget)
ui.tab_5.SetObjectName("tab_5")
ui.tabWidget_3.AddTab(ui.tab_5, "")
ui.tab_6 = qt.NewQWidget(ui.tabWidget_3.QWidget)
ui.tab_6.SetObjectName("tab_6")
ui.tabWidget_3.AddTab(ui.tab_6, "")
ui.gridLayout.AddWidget2(ui.tabWidget_3.QWidget, 1, 0)
ui.tabWidget = qt.NewQTabWidget(ui.centralwidget)
ui.tabWidget.SetObjectName("tabWidget")
ui.tab = qt.NewQWidget(ui.tabWidget.QWidget)
ui.tab.SetObjectName("tab")
ui.tabWidget.AddTab(ui.tab, "")
ui.tab_2 = qt.NewQWidget(ui.tabWidget.QWidget)
ui.tab_2.SetObjectName("tab_2")
ui.tabWidget.AddTab(ui.tab_2, "")
ui.gridLayout.AddWidget2(ui.tabWidget.QWidget, 0, 1)
ui.tabWidget_2 = qt.NewQTabWidget(ui.centralwidget)
ui.tabWidget_2.SetObjectName("tabWidget_2")
ui.tabWidget_2.SetTabPosition(qt.QTabWidget__South)
ui.tab_3 = qt.NewQWidget(ui.tabWidget_2.QWidget)
ui.tab_3.SetObjectName("tab_3")
ui.tabWidget_2.AddTab(ui.tab_3, "")
ui.tab_4 = qt.NewQWidget(ui.tabWidget_2.QWidget)
ui.tab_4.SetObjectName("tab_4")
ui.tabWidget_2.AddTab(ui.tab_4, "")
ui.gridLayout.AddWidget2(ui.tabWidget_2.QWidget, 2, 1)
ui.tabWidget_4 = qt.NewQTabWidget(ui.centralwidget)
ui.tabWidget_4.SetObjectName("tabWidget_4")
ui.tabWidget_4.SetTabPosition(qt.QTabWidget__East)
ui.tab_7 = qt.NewQWidget(ui.tabWidget_4.QWidget)
ui.tab_7.SetObjectName("tab_7")
ui.tabWidget_4.AddTab(ui.tab_7, "")
ui.tab_8 = qt.NewQWidget(ui.tabWidget_4.QWidget)
ui.tab_8.SetObjectName("tab_8")
ui.tabWidget_4.AddTab(ui.tab_8, "")
ui.gridLayout.AddWidget2(ui.tabWidget_4.QWidget, 1, 2)
ui.MainWindow.SetCentralWidget(ui.centralwidget) // Set central widget
ui.menubar = qt.NewQMenuBar(ui.MainWindow.QWidget)
ui.menubar.SetObjectName("menubar")
ui.menubar.Resize(800, 29)
ui.MainWindow.SetMenuBar(ui.menubar)
ui.statusbar = qt.NewQStatusBar(ui.MainWindow.QWidget)
ui.statusbar.SetObjectName("statusbar")
ui.MainWindow.SetStatusBar(ui.statusbar)
ui.Retranslate()
ui.tabWidget.SetCurrentIndex(0)
return ui
}
// Retranslate reapplies all text translations.
func (ui *MainWindowUi) Retranslate() {
ui.MainWindow.SetWindowTitle(qt.QCoreApplication_Tr("MainWindow"))
ui.tabWidget_3.SetTabText(ui.tabWidget_3.IndexOf(ui.tab_5), qt.QTabWidget_Tr("Tab 1"))
ui.tabWidget_3.SetTabText(ui.tabWidget_3.IndexOf(ui.tab_6), qt.QTabWidget_Tr("Tab 2"))
ui.tabWidget.SetTabText(ui.tabWidget.IndexOf(ui.tab), qt.QTabWidget_Tr("First Tab"))
ui.tabWidget.SetTabText(ui.tabWidget.IndexOf(ui.tab_2), qt.QTabWidget_Tr("Second Tab"))
ui.tabWidget_2.SetTabText(ui.tabWidget_2.IndexOf(ui.tab_3), qt.QTabWidget_Tr("Tab 1"))
ui.tabWidget_2.SetTabText(ui.tabWidget_2.IndexOf(ui.tab_4), qt.QTabWidget_Tr("Tab 2"))
ui.tabWidget_4.SetTabText(ui.tabWidget_4.IndexOf(ui.tab_7), qt.QTabWidget_Tr("Tab 1"))
ui.tabWidget_4.SetTabText(ui.tabWidget_4.IndexOf(ui.tab_8), qt.QTabWidget_Tr("Tab 2"))
}

View File

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>600</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QPushButton" name="pushButton">
<property name="text">
<string>PushButton</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_2">
<property name="text">
<string>PushButton</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>29</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,61 @@
// Generated by miqt-uic. To update this file, edit the .ui file in
// Qt Designer, and then run 'go generate'.
//
//go:generate miqt-uic go_generate_args
package test_package_name
import (
"github.com/mappu/miqt/qt"
)
type MainWindowUi struct {
MainWindow *qt.QMainWindow
centralwidget *qt.QWidget
verticalLayout *qt.QVBoxLayout
pushButton *qt.QPushButton
pushButton_2 *qt.QPushButton
menubar *qt.QMenuBar
statusbar *qt.QStatusBar
}
// NewMainWindowUi creates all Qt widget classes for MainWindow.
func NewMainWindowUi() *MainWindowUi {
ui := &MainWindowUi{}
ui.MainWindow = qt.NewQMainWindow(nil)
ui.MainWindow.SetObjectName("MainWindow")
ui.MainWindow.Resize(800, 600)
ui.centralwidget = qt.NewQWidget(ui.MainWindow.QWidget)
ui.centralwidget.SetObjectName("centralwidget")
ui.verticalLayout = qt.NewQVBoxLayout(ui.centralwidget)
ui.verticalLayout.SetObjectName("verticalLayout")
ui.verticalLayout.SetContentsMargins(11, 11, 11, 11)
ui.verticalLayout.SetSpacing(6)
ui.pushButton = qt.NewQPushButton(ui.centralwidget)
ui.pushButton.SetObjectName("pushButton")
ui.verticalLayout.AddWidget(ui.pushButton.QWidget)
ui.pushButton_2 = qt.NewQPushButton(ui.centralwidget)
ui.pushButton_2.SetObjectName("pushButton_2")
ui.verticalLayout.AddWidget(ui.pushButton_2.QWidget)
ui.MainWindow.SetCentralWidget(ui.centralwidget) // Set central widget
ui.menubar = qt.NewQMenuBar(ui.MainWindow.QWidget)
ui.menubar.SetObjectName("menubar")
ui.menubar.Resize(800, 29)
ui.MainWindow.SetMenuBar(ui.menubar)
ui.statusbar = qt.NewQStatusBar(ui.MainWindow.QWidget)
ui.statusbar.SetObjectName("statusbar")
ui.MainWindow.SetStatusBar(ui.statusbar)
ui.Retranslate()
return ui
}
// Retranslate reapplies all text translations.
func (ui *MainWindowUi) Retranslate() {
ui.MainWindow.SetWindowTitle(qt.QCoreApplication_Tr("MainWindow"))
ui.pushButton.SetText(qt.QWidget_Tr("PushButton"))
ui.pushButton_2.SetText(qt.QWidget_Tr("PushButton"))
}

View File

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>600</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>29</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,53 @@
// Generated by miqt-uic. To update this file, edit the .ui file in
// Qt Designer, and then run 'go generate'.
//
//go:generate miqt-uic go_generate_args
package test_package_name
import (
"github.com/mappu/miqt/qt"
)
type MainWindowUi struct {
MainWindow *qt.QMainWindow
centralwidget *qt.QWidget
verticalLayout *qt.QVBoxLayout
verticalSpacer *qt.QSpacerItem
menubar *qt.QMenuBar
statusbar *qt.QStatusBar
}
// NewMainWindowUi creates all Qt widget classes for MainWindow.
func NewMainWindowUi() *MainWindowUi {
ui := &MainWindowUi{}
ui.MainWindow = qt.NewQMainWindow(nil)
ui.MainWindow.SetObjectName("MainWindow")
ui.MainWindow.Resize(800, 600)
ui.centralwidget = qt.NewQWidget(ui.MainWindow.QWidget)
ui.centralwidget.SetObjectName("centralwidget")
ui.verticalLayout = qt.NewQVBoxLayout(ui.centralwidget)
ui.verticalLayout.SetObjectName("verticalLayout")
ui.verticalLayout.SetContentsMargins(11, 11, 11, 11)
ui.verticalLayout.SetSpacing(6)
ui.verticalSpacer = qt.NewQSpacerItem4(20, 40, qt.QSizePolicy__Minimum, qt.QSizePolicy__Expanding)
ui.verticalLayout.AddItem(ui.verticalSpacer.QLayoutItem)
ui.MainWindow.SetCentralWidget(ui.centralwidget) // Set central widget
ui.menubar = qt.NewQMenuBar(ui.MainWindow.QWidget)
ui.menubar.SetObjectName("menubar")
ui.menubar.Resize(800, 29)
ui.MainWindow.SetMenuBar(ui.menubar)
ui.statusbar = qt.NewQStatusBar(ui.MainWindow.QWidget)
ui.statusbar.SetObjectName("statusbar")
ui.MainWindow.SetStatusBar(ui.statusbar)
ui.Retranslate()
return ui
}
// Retranslate reapplies all text translations.
func (ui *MainWindowUi) Retranslate() {
ui.MainWindow.SetWindowTitle(qt.QCoreApplication_Tr("MainWindow"))
}

32
cmd/miqt-uic/testdata/qt5_widget.ui vendored Normal file
View File

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>20</x>
<y>20</y>
<width>231</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>QWidget as base class</string>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,36 @@
// Generated by miqt-uic. To update this file, edit the .ui file in
// Qt Designer, and then run 'go generate'.
//
//go:generate miqt-uic go_generate_args
package test_package_name
import (
"github.com/mappu/miqt/qt"
)
type FormUi struct {
Form *qt.QWidget
label *qt.QLabel
}
// NewFormUi creates all Qt widget classes for Form.
func NewFormUi() *FormUi {
ui := &FormUi{}
ui.Form = qt.NewQWidget(nil)
ui.Form.SetObjectName("Form")
ui.Form.Resize(400, 300)
ui.label = qt.NewQLabel(ui.Form)
ui.label.SetObjectName("label")
ui.label.SetGeometry(qt.NewQRect(20, 20, 231, 21))
ui.Retranslate()
return ui
}
// Retranslate reapplies all text translations.
func (ui *FormUi) Retranslate() {
ui.Form.SetWindowTitle(qt.QCoreApplication_Tr("Form"))
ui.label.SetText(qt.QWidget_Tr("QWidget as base class"))
}

View File

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>600</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="pushButton_2">
<property name="text">
<string>PushButton</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton">
<property name="text">
<string>PushButton</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>22</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,75 @@
// Generated by miqt-uic. To update this file, edit the .ui file in
// Qt Designer, and then run 'go generate'.
//
//go:generate miqt-uic go_generate_args
package test_package_name
import (
qt "github.com/mappu/miqt/qt6"
)
type MainWindowUi struct {
MainWindow *qt.QMainWindow
centralwidget *qt.QWidget
horizontalLayout *qt.QHBoxLayout
pushButton_2 *qt.QPushButton
pushButton *qt.QPushButton
menubar *qt.QMenuBar
statusbar *qt.QStatusBar
}
// NewMainWindowUi creates all Qt widget classes for MainWindow.
func NewMainWindowUi() *MainWindowUi {
ui := &MainWindowUi{}
ui.MainWindow = qt.NewQMainWindow(nil)
MainWindow__objectName := qt.NewQAnyStringView3("MainWindow")
ui.MainWindow.SetObjectName(*MainWindow__objectName)
MainWindow__objectName.Delete() // setter copied value
ui.MainWindow.Resize(800, 600)
ui.centralwidget = qt.NewQWidget(ui.MainWindow.QWidget)
centralwidget__objectName := qt.NewQAnyStringView3("centralwidget")
ui.centralwidget.SetObjectName(*centralwidget__objectName)
centralwidget__objectName.Delete() // setter copied value
ui.horizontalLayout = qt.NewQHBoxLayout(ui.centralwidget)
horizontalLayout__objectName := qt.NewQAnyStringView3("horizontalLayout")
ui.horizontalLayout.SetObjectName(*horizontalLayout__objectName)
horizontalLayout__objectName.Delete() // setter copied value
ui.horizontalLayout.SetContentsMargins(11, 11, 11, 11)
ui.horizontalLayout.SetSpacing(6)
ui.pushButton_2 = qt.NewQPushButton(ui.centralwidget)
pushButton_2__objectName := qt.NewQAnyStringView3("pushButton_2")
ui.pushButton_2.SetObjectName(*pushButton_2__objectName)
pushButton_2__objectName.Delete() // setter copied value
ui.horizontalLayout.AddWidget(ui.pushButton_2.QWidget)
ui.pushButton = qt.NewQPushButton(ui.centralwidget)
pushButton__objectName := qt.NewQAnyStringView3("pushButton")
ui.pushButton.SetObjectName(*pushButton__objectName)
pushButton__objectName.Delete() // setter copied value
ui.horizontalLayout.AddWidget(ui.pushButton.QWidget)
ui.MainWindow.SetCentralWidget(ui.centralwidget) // Set central widget
ui.menubar = qt.NewQMenuBar(ui.MainWindow.QWidget)
menubar__objectName := qt.NewQAnyStringView3("menubar")
ui.menubar.SetObjectName(*menubar__objectName)
menubar__objectName.Delete() // setter copied value
ui.menubar.Resize(800, 22)
ui.MainWindow.SetMenuBar(ui.menubar)
ui.statusbar = qt.NewQStatusBar(ui.MainWindow.QWidget)
statusbar__objectName := qt.NewQAnyStringView3("statusbar")
ui.statusbar.SetObjectName(*statusbar__objectName)
statusbar__objectName.Delete() // setter copied value
ui.MainWindow.SetStatusBar(ui.statusbar)
ui.Retranslate()
return ui
}
// Retranslate reapplies all text translations.
func (ui *MainWindowUi) Retranslate() {
ui.MainWindow.SetWindowTitle(qt.QCoreApplication_Tr("MainWindow"))
ui.pushButton_2.SetText(qt.QWidget_Tr("PushButton"))
ui.pushButton.SetText(qt.QWidget_Tr("PushButton"))
}

View File

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>600</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>785</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>22</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,63 @@
// Generated by miqt-uic. To update this file, edit the .ui file in
// Qt Designer, and then run 'go generate'.
//
//go:generate miqt-uic go_generate_args
package test_package_name
import (
qt "github.com/mappu/miqt/qt6"
)
type MainWindowUi struct {
MainWindow *qt.QMainWindow
centralwidget *qt.QWidget
verticalLayout *qt.QVBoxLayout
horizontalSpacer *qt.QSpacerItem
menubar *qt.QMenuBar
statusbar *qt.QStatusBar
}
// NewMainWindowUi creates all Qt widget classes for MainWindow.
func NewMainWindowUi() *MainWindowUi {
ui := &MainWindowUi{}
ui.MainWindow = qt.NewQMainWindow(nil)
MainWindow__objectName := qt.NewQAnyStringView3("MainWindow")
ui.MainWindow.SetObjectName(*MainWindow__objectName)
MainWindow__objectName.Delete() // setter copied value
ui.MainWindow.Resize(800, 600)
ui.centralwidget = qt.NewQWidget(ui.MainWindow.QWidget)
centralwidget__objectName := qt.NewQAnyStringView3("centralwidget")
ui.centralwidget.SetObjectName(*centralwidget__objectName)
centralwidget__objectName.Delete() // setter copied value
ui.verticalLayout = qt.NewQVBoxLayout(ui.centralwidget)
verticalLayout__objectName := qt.NewQAnyStringView3("verticalLayout")
ui.verticalLayout.SetObjectName(*verticalLayout__objectName)
verticalLayout__objectName.Delete() // setter copied value
ui.verticalLayout.SetContentsMargins(11, 11, 11, 11)
ui.verticalLayout.SetSpacing(6)
ui.horizontalSpacer = qt.NewQSpacerItem4(785, 20, qt.QSizePolicy__Expanding, qt.QSizePolicy__Minimum)
ui.verticalLayout.AddItem(ui.horizontalSpacer.QLayoutItem)
ui.MainWindow.SetCentralWidget(ui.centralwidget) // Set central widget
ui.menubar = qt.NewQMenuBar(ui.MainWindow.QWidget)
menubar__objectName := qt.NewQAnyStringView3("menubar")
ui.menubar.SetObjectName(*menubar__objectName)
menubar__objectName.Delete() // setter copied value
ui.menubar.Resize(800, 22)
ui.MainWindow.SetMenuBar(ui.menubar)
ui.statusbar = qt.NewQStatusBar(ui.MainWindow.QWidget)
statusbar__objectName := qt.NewQAnyStringView3("statusbar")
ui.statusbar.SetObjectName(*statusbar__objectName)
statusbar__objectName.Delete() // setter copied value
ui.MainWindow.SetStatusBar(ui.statusbar)
ui.Retranslate()
return ui
}
// Retranslate reapplies all text translations.
func (ui *MainWindowUi) Retranslate() {
ui.MainWindow.SetWindowTitle(qt.QCoreApplication_Tr("MainWindow"))
}

View File

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>600</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QPushButton" name="pushButton">
<property name="text">
<string>PushButton</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_2">
<property name="text">
<string>PushButton</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>22</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,75 @@
// Generated by miqt-uic. To update this file, edit the .ui file in
// Qt Designer, and then run 'go generate'.
//
//go:generate miqt-uic go_generate_args
package test_package_name
import (
qt "github.com/mappu/miqt/qt6"
)
type MainWindowUi struct {
MainWindow *qt.QMainWindow
centralwidget *qt.QWidget
verticalLayout *qt.QVBoxLayout
pushButton *qt.QPushButton
pushButton_2 *qt.QPushButton
menubar *qt.QMenuBar
statusbar *qt.QStatusBar
}
// NewMainWindowUi creates all Qt widget classes for MainWindow.
func NewMainWindowUi() *MainWindowUi {
ui := &MainWindowUi{}
ui.MainWindow = qt.NewQMainWindow(nil)
MainWindow__objectName := qt.NewQAnyStringView3("MainWindow")
ui.MainWindow.SetObjectName(*MainWindow__objectName)
MainWindow__objectName.Delete() // setter copied value
ui.MainWindow.Resize(800, 600)
ui.centralwidget = qt.NewQWidget(ui.MainWindow.QWidget)
centralwidget__objectName := qt.NewQAnyStringView3("centralwidget")
ui.centralwidget.SetObjectName(*centralwidget__objectName)
centralwidget__objectName.Delete() // setter copied value
ui.verticalLayout = qt.NewQVBoxLayout(ui.centralwidget)
verticalLayout__objectName := qt.NewQAnyStringView3("verticalLayout")
ui.verticalLayout.SetObjectName(*verticalLayout__objectName)
verticalLayout__objectName.Delete() // setter copied value
ui.verticalLayout.SetContentsMargins(11, 11, 11, 11)
ui.verticalLayout.SetSpacing(6)
ui.pushButton = qt.NewQPushButton(ui.centralwidget)
pushButton__objectName := qt.NewQAnyStringView3("pushButton")
ui.pushButton.SetObjectName(*pushButton__objectName)
pushButton__objectName.Delete() // setter copied value
ui.verticalLayout.AddWidget(ui.pushButton.QWidget)
ui.pushButton_2 = qt.NewQPushButton(ui.centralwidget)
pushButton_2__objectName := qt.NewQAnyStringView3("pushButton_2")
ui.pushButton_2.SetObjectName(*pushButton_2__objectName)
pushButton_2__objectName.Delete() // setter copied value
ui.verticalLayout.AddWidget(ui.pushButton_2.QWidget)
ui.MainWindow.SetCentralWidget(ui.centralwidget) // Set central widget
ui.menubar = qt.NewQMenuBar(ui.MainWindow.QWidget)
menubar__objectName := qt.NewQAnyStringView3("menubar")
ui.menubar.SetObjectName(*menubar__objectName)
menubar__objectName.Delete() // setter copied value
ui.menubar.Resize(800, 22)
ui.MainWindow.SetMenuBar(ui.menubar)
ui.statusbar = qt.NewQStatusBar(ui.MainWindow.QWidget)
statusbar__objectName := qt.NewQAnyStringView3("statusbar")
ui.statusbar.SetObjectName(*statusbar__objectName)
statusbar__objectName.Delete() // setter copied value
ui.MainWindow.SetStatusBar(ui.statusbar)
ui.Retranslate()
return ui
}
// Retranslate reapplies all text translations.
func (ui *MainWindowUi) Retranslate() {
ui.MainWindow.SetWindowTitle(qt.QCoreApplication_Tr("MainWindow"))
ui.pushButton.SetText(qt.QWidget_Tr("PushButton"))
ui.pushButton_2.SetText(qt.QWidget_Tr("PushButton"))
}

View File

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>600</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>22</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,63 @@
// Generated by miqt-uic. To update this file, edit the .ui file in
// Qt Designer, and then run 'go generate'.
//
//go:generate miqt-uic go_generate_args
package test_package_name
import (
qt "github.com/mappu/miqt/qt6"
)
type MainWindowUi struct {
MainWindow *qt.QMainWindow
centralwidget *qt.QWidget
verticalLayout *qt.QVBoxLayout
verticalSpacer *qt.QSpacerItem
menubar *qt.QMenuBar
statusbar *qt.QStatusBar
}
// NewMainWindowUi creates all Qt widget classes for MainWindow.
func NewMainWindowUi() *MainWindowUi {
ui := &MainWindowUi{}
ui.MainWindow = qt.NewQMainWindow(nil)
MainWindow__objectName := qt.NewQAnyStringView3("MainWindow")
ui.MainWindow.SetObjectName(*MainWindow__objectName)
MainWindow__objectName.Delete() // setter copied value
ui.MainWindow.Resize(800, 600)
ui.centralwidget = qt.NewQWidget(ui.MainWindow.QWidget)
centralwidget__objectName := qt.NewQAnyStringView3("centralwidget")
ui.centralwidget.SetObjectName(*centralwidget__objectName)
centralwidget__objectName.Delete() // setter copied value
ui.verticalLayout = qt.NewQVBoxLayout(ui.centralwidget)
verticalLayout__objectName := qt.NewQAnyStringView3("verticalLayout")
ui.verticalLayout.SetObjectName(*verticalLayout__objectName)
verticalLayout__objectName.Delete() // setter copied value
ui.verticalLayout.SetContentsMargins(11, 11, 11, 11)
ui.verticalLayout.SetSpacing(6)
ui.verticalSpacer = qt.NewQSpacerItem4(20, 40, qt.QSizePolicy__Minimum, qt.QSizePolicy__Expanding)
ui.verticalLayout.AddItem(ui.verticalSpacer.QLayoutItem)
ui.MainWindow.SetCentralWidget(ui.centralwidget) // Set central widget
ui.menubar = qt.NewQMenuBar(ui.MainWindow.QWidget)
menubar__objectName := qt.NewQAnyStringView3("menubar")
ui.menubar.SetObjectName(*menubar__objectName)
menubar__objectName.Delete() // setter copied value
ui.menubar.Resize(800, 22)
ui.MainWindow.SetMenuBar(ui.menubar)
ui.statusbar = qt.NewQStatusBar(ui.MainWindow.QWidget)
statusbar__objectName := qt.NewQAnyStringView3("statusbar")
ui.statusbar.SetObjectName(*statusbar__objectName)
statusbar__objectName.Delete() // setter copied value
ui.MainWindow.SetStatusBar(ui.statusbar)
ui.Retranslate()
return ui
}
// Retranslate reapplies all text translations.
func (ui *MainWindowUi) Retranslate() {
ui.MainWindow.SetWindowTitle(qt.QCoreApplication_Tr("MainWindow"))
}

View File

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>600</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>785</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>22</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,63 @@
// Generated by miqt-uic. To update this file, edit the .ui file in
// Qt Designer, and then run 'go generate'.
//
//go:generate miqt-uic go_generate_args
package test_package_name
import (
qt "github.com/mappu/miqt/qt6"
)
type MainWindowUi struct {
MainWindow *qt.QMainWindow
centralwidget *qt.QWidget
verticalLayout *qt.QVBoxLayout
horizontalSpacer *qt.QSpacerItem
menubar *qt.QMenuBar
statusbar *qt.QStatusBar
}
// NewMainWindowUi creates all Qt widget classes for MainWindow.
func NewMainWindowUi() *MainWindowUi {
ui := &MainWindowUi{}
ui.MainWindow = qt.NewQMainWindow(nil)
MainWindow__objectName := qt.NewQAnyStringView3("MainWindow")
ui.MainWindow.SetObjectName(*MainWindow__objectName)
MainWindow__objectName.Delete() // setter copied value
ui.MainWindow.Resize(800, 600)
ui.centralwidget = qt.NewQWidget(ui.MainWindow.QWidget)
centralwidget__objectName := qt.NewQAnyStringView3("centralwidget")
ui.centralwidget.SetObjectName(*centralwidget__objectName)
centralwidget__objectName.Delete() // setter copied value
ui.verticalLayout = qt.NewQVBoxLayout(ui.centralwidget)
verticalLayout__objectName := qt.NewQAnyStringView3("verticalLayout")
ui.verticalLayout.SetObjectName(*verticalLayout__objectName)
verticalLayout__objectName.Delete() // setter copied value
ui.verticalLayout.SetContentsMargins(11, 11, 11, 11)
ui.verticalLayout.SetSpacing(6)
ui.horizontalSpacer = qt.NewQSpacerItem4(785, 20, qt.QSizePolicy__Expanding, qt.QSizePolicy__Minimum)
ui.verticalLayout.AddItem(ui.horizontalSpacer.QLayoutItem)
ui.MainWindow.SetCentralWidget(ui.centralwidget) // Set central widget
ui.menubar = qt.NewQMenuBar(ui.MainWindow.QWidget)
menubar__objectName := qt.NewQAnyStringView3("menubar")
ui.menubar.SetObjectName(*menubar__objectName)
menubar__objectName.Delete() // setter copied value
ui.menubar.Resize(800, 22)
ui.MainWindow.SetMenuBar(ui.menubar)
ui.statusbar = qt.NewQStatusBar(ui.MainWindow.QWidget)
statusbar__objectName := qt.NewQAnyStringView3("statusbar")
ui.statusbar.SetObjectName(*statusbar__objectName)
statusbar__objectName.Delete() // setter copied value
ui.MainWindow.SetStatusBar(ui.statusbar)
ui.Retranslate()
return ui
}
// Retranslate reapplies all text translations.
func (ui *MainWindowUi) Retranslate() {
ui.MainWindow.SetWindowTitle(qt.QCoreApplication_Tr("MainWindow"))
}

View File

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>600</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget"/>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>22</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
<action name="actionApplicationExit">
<property name="checkable">
<bool>true</bool>
</property>
<property name="icon">
<iconset theme="QIcon::ThemeIcon::ApplicationExit"/>
</property>
<property name="text">
<string>ApplicationExit</string>
</property>
<property name="toolTip">
<string>Custom Tooltip</string>
</property>
</action>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,60 @@
// Generated by miqt-uic. To update this file, edit the .ui file in
// Qt Designer, and then run 'go generate'.
//
//go:generate miqt-uic go_generate_args
package test_package_name
import (
qt "github.com/mappu/miqt/qt6"
)
type MainWindowUi struct {
MainWindow *qt.QMainWindow
centralwidget *qt.QWidget
menubar *qt.QMenuBar
statusbar *qt.QStatusBar
actionApplicationExit *qt.QAction
}
// NewMainWindowUi creates all Qt widget classes for MainWindow.
func NewMainWindowUi() *MainWindowUi {
ui := &MainWindowUi{}
ui.MainWindow = qt.NewQMainWindow(nil)
MainWindow__objectName := qt.NewQAnyStringView3("MainWindow")
ui.MainWindow.SetObjectName(*MainWindow__objectName)
MainWindow__objectName.Delete() // setter copied value
ui.MainWindow.Resize(800, 600)
ui.actionApplicationExit = qt.NewQAction()
actionApplicationExit__objectName := qt.NewQAnyStringView3("actionApplicationExit")
ui.actionApplicationExit.SetObjectName(*actionApplicationExit__objectName)
actionApplicationExit__objectName.Delete() // setter copied value
icon0 := qt.QIcon_FromTheme("application-exit")
ui.actionApplicationExit.SetIcon(icon0)
ui.centralwidget = qt.NewQWidget(ui.MainWindow.QWidget)
centralwidget__objectName := qt.NewQAnyStringView3("centralwidget")
ui.centralwidget.SetObjectName(*centralwidget__objectName)
centralwidget__objectName.Delete() // setter copied value
ui.MainWindow.SetCentralWidget(ui.centralwidget) // Set central widget
ui.menubar = qt.NewQMenuBar(ui.MainWindow.QWidget)
menubar__objectName := qt.NewQAnyStringView3("menubar")
ui.menubar.SetObjectName(*menubar__objectName)
menubar__objectName.Delete() // setter copied value
ui.menubar.Resize(800, 22)
ui.MainWindow.SetMenuBar(ui.menubar)
ui.statusbar = qt.NewQStatusBar(ui.MainWindow.QWidget)
statusbar__objectName := qt.NewQAnyStringView3("statusbar")
ui.statusbar.SetObjectName(*statusbar__objectName)
statusbar__objectName.Delete() // setter copied value
ui.MainWindow.SetStatusBar(ui.statusbar)
ui.Retranslate()
return ui
}
// Retranslate reapplies all text translations.
func (ui *MainWindowUi) Retranslate() {
ui.MainWindow.SetWindowTitle(qt.QCoreApplication_Tr("MainWindow"))
ui.actionApplicationExit.SetText(qt.QMainWindow_Tr("ApplicationExit"))
}

View File

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>600</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Orientation::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>22</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,63 @@
// Generated by miqt-uic. To update this file, edit the .ui file in
// Qt Designer, and then run 'go generate'.
//
//go:generate miqt-uic go_generate_args
package test_package_name
import (
qt "github.com/mappu/miqt/qt6"
)
type MainWindowUi struct {
MainWindow *qt.QMainWindow
centralwidget *qt.QWidget
verticalLayout *qt.QVBoxLayout
verticalSpacer *qt.QSpacerItem
menubar *qt.QMenuBar
statusbar *qt.QStatusBar
}
// NewMainWindowUi creates all Qt widget classes for MainWindow.
func NewMainWindowUi() *MainWindowUi {
ui := &MainWindowUi{}
ui.MainWindow = qt.NewQMainWindow(nil)
MainWindow__objectName := qt.NewQAnyStringView3("MainWindow")
ui.MainWindow.SetObjectName(*MainWindow__objectName)
MainWindow__objectName.Delete() // setter copied value
ui.MainWindow.Resize(800, 600)
ui.centralwidget = qt.NewQWidget(ui.MainWindow.QWidget)
centralwidget__objectName := qt.NewQAnyStringView3("centralwidget")
ui.centralwidget.SetObjectName(*centralwidget__objectName)
centralwidget__objectName.Delete() // setter copied value
ui.verticalLayout = qt.NewQVBoxLayout(ui.centralwidget)
verticalLayout__objectName := qt.NewQAnyStringView3("verticalLayout")
ui.verticalLayout.SetObjectName(*verticalLayout__objectName)
verticalLayout__objectName.Delete() // setter copied value
ui.verticalLayout.SetContentsMargins(11, 11, 11, 11)
ui.verticalLayout.SetSpacing(6)
ui.verticalSpacer = qt.NewQSpacerItem4(20, 40, qt.QSizePolicy__Minimum, qt.QSizePolicy__Expanding)
ui.verticalLayout.AddItem(ui.verticalSpacer.QLayoutItem)
ui.MainWindow.SetCentralWidget(ui.centralwidget) // Set central widget
ui.menubar = qt.NewQMenuBar(ui.MainWindow.QWidget)
menubar__objectName := qt.NewQAnyStringView3("menubar")
ui.menubar.SetObjectName(*menubar__objectName)
menubar__objectName.Delete() // setter copied value
ui.menubar.Resize(800, 22)
ui.MainWindow.SetMenuBar(ui.menubar)
ui.statusbar = qt.NewQStatusBar(ui.MainWindow.QWidget)
statusbar__objectName := qt.NewQAnyStringView3("statusbar")
ui.statusbar.SetObjectName(*statusbar__objectName)
statusbar__objectName.Delete() // setter copied value
ui.MainWindow.SetStatusBar(ui.statusbar)
ui.Retranslate()
return ui
}
// Retranslate reapplies all text translations.
func (ui *MainWindowUi) Retranslate() {
ui.MainWindow.SetWindowTitle(qt.QCoreApplication_Tr("MainWindow"))
}

View File

@ -61,7 +61,7 @@ type UiString struct {
}
type UiIcon struct {
ResourceFile string `xml:"resource,attr"`
ResourceFile string `xml:"resource,attr,omitempty"`
Theme string `xml:"theme,attr"`
NormalOff *string `xml:"normaloff,omitempty"`
@ -83,8 +83,15 @@ type UiSizePolicy struct {
VStretch int `xml:"verstretch"`
}
type UiSize struct {
Width int `xml:"width"`
Height int `xml:"height"`
}
type UiProperty struct {
Name string `xml:"name,attr"`
Name string `xml:"name,attr"`
StdSetVal *string `xml:"stdset,attr,omitempty"` // Used by sizeHint sometimes?
StringVal *UiString `xml:"string,omitempty"`
NumberVal *string `xml:"number,omitempty"` // Preserve as string literal
BoolVal *bool `xml:"bool,omitempty"` // "true" or "false"
@ -93,6 +100,7 @@ type UiProperty struct {
IconVal *UiIcon `xml:"iconset,omitempty"`
SetVal *string `xml:"set,omitempty"`
SizePolicyVal *UiSizePolicy `xml:"sizepolicy,omitempty"`
SizeVal *UiSize `xml:"size,omitempty"`
}
type UiActionReference struct {
@ -107,7 +115,26 @@ type UiAction struct {
type UiResources struct {
}
type UiConnectionHint struct {
Type string `xml:"type,attr"`
X int `xml:"x"`
Y int `xml:"y"`
}
type UiConnectionHints struct {
Hints []UiConnectionHint `xml:"hint"`
}
type UiConnection struct {
Sender string `xml:"sender"`
Signal string `xml:"signal"`
Receiver string `xml:"receiver"`
Slot string `xml:"slot"`
Hints *UiConnectionHints `xml:"hints",omitempty`
}
type UiConnections struct {
Connections []UiConnection `xml:"connection"`
}
type UiLayoutDefault struct {

View File

@ -3,55 +3,67 @@ package main
import (
"fmt"
"go/format"
"regexp"
"strconv"
"strings"
)
var (
RootWindowName = ""
DefaultGridMargin = 11
DefaultSpacing = 6
IconCounter = 0
type generateState struct {
UseQt6 bool
RootWindowName string
DefaultGridMargin int
DefaultSpacing int
IconCounter int
trackWidgetClasses map[string]string
)
}
func collectClassNames_Layout(l *UiLayout) []string {
func NewGenerateState(useQt6 bool) *generateState {
return &generateState{
UseQt6: useQt6,
RootWindowName: "",
DefaultGridMargin: 11,
DefaultSpacing: 6,
IconCounter: 0,
trackWidgetClasses: make(map[string]string),
}
}
func (gs *generateState) collectClassNames_Layout(l *UiLayout) []string {
var ret []string
if l.Name != "" {
ret = append(ret, l.Name+" *qt."+l.Class)
trackWidgetClasses[l.Name] = l.Class
gs.trackWidgetClasses[l.Name] = l.Class
}
for _, li := range l.Items {
if li.Widget != nil {
ret = append(ret, collectClassNames_Widget(li.Widget)...)
ret = append(ret, gs.collectClassNames_Widget(li.Widget)...)
}
if li.Spacer != nil {
ret = append(ret, li.Spacer.Name+" *qt.QSpacerItem")
}
if li.Layout != nil {
ret = append(ret, collectClassNames_Layout(li.Layout)...)
ret = append(ret, gs.collectClassNames_Layout(li.Layout)...)
}
}
return ret
}
func collectClassNames_Widget(u *UiWidget) []string {
func (gs *generateState) collectClassNames_Widget(u *UiWidget) []string {
var ret []string
if u.Name != "" {
ret = append(ret, u.Name+" *qt."+u.Class)
trackWidgetClasses[u.Name] = u.Class
gs.trackWidgetClasses[u.Name] = u.Class
}
for _, w := range u.Widgets {
ret = append(ret, collectClassNames_Widget(&w)...)
ret = append(ret, gs.collectClassNames_Widget(&w)...)
}
if u.Layout != nil {
ret = append(ret, collectClassNames_Layout(u.Layout)...)
ret = append(ret, gs.collectClassNames_Layout(u.Layout)...)
}
for _, a := range u.Actions {
ret = append(ret, a.Name+" *qt.QAction")
@ -59,11 +71,18 @@ func collectClassNames_Widget(u *UiWidget) []string {
return ret
}
func generateString(s *UiString, parentClass string) string {
if s.Notr || parentClass == "" {
return strconv.Quote(s.Value)
func (gs *generateState) generateString_noTr(s string) string {
return strconv.Quote(s)
}
func (gs *generateState) generateString(s *UiString, parentClass string) string {
if s.Notr {
return gs.generateString_noTr(s.Value)
} else if parentClass == "" {
return `qt.QCoreApplication_Tr(` + gs.generateString_noTr(s.Value) + `)`
} else {
return `qt.` + parentClass + `_Tr(` + gs.generateString_noTr(s.Value) + `)`
}
return `qt.` + parentClass + `_Tr(` + strconv.Quote(s.Value) + `)`
}
// qwidgetName creates the T.QWidget name that MIQT needs to access the base class.
@ -85,13 +104,31 @@ func normalizeEnumName(s string) string {
return `qt.` + strings.Replace(s, `::`, `__`, -1)
}
func renderIcon(iconVal *UiIcon, ret *strings.Builder) string {
func normalizeIconThemeName(themeName string) string {
// Qt 6.8++ emits the theme in enum format: `QIcon::ThemeIcon::ApplicationExit`
// Older Qt emits it as a string const: `application-exit`
// For compatibility, detect and convert to old-style names
// @ref https://github.com/mappu/miqt/issues/228
iconName := fmt.Sprintf("icon%d", IconCounter)
IconCounter++
const prefix = `QIcon::ThemeIcon::`
if !strings.HasPrefix(themeName, prefix) {
return themeName
}
ret := regexp.MustCompile(`[A-Z]`).ReplaceAllStringFunc(themeName[len(prefix):], func(s string) string {
return `-` + strings.ToLower(s)
})
return strings.TrimPrefix(ret, `-`)
}
func (gs *generateState) renderIcon(iconVal *UiIcon, ret *strings.Builder) string {
iconName := fmt.Sprintf("icon%d", gs.IconCounter)
gs.IconCounter++
if iconVal.Theme != "" {
ret.WriteString(iconName + ` := qt.QIcon_FromTheme(` + strconv.Quote(iconVal.Theme) + ")\n")
ret.WriteString(iconName + ` := qt.QIcon_FromTheme(` + strconv.Quote(normalizeIconThemeName(iconVal.Theme)) + ")\n")
} else {
ret.WriteString(iconName + " := qt.NewQIcon()\n")
}
@ -133,9 +170,9 @@ func renderIcon(iconVal *UiIcon, ret *strings.Builder) string {
return iconName
}
func renderProperties(properties []UiProperty, ret *strings.Builder, targetName, parentClass string, isLayout bool) error {
func (gs *generateState) renderProperties(properties []UiProperty, ret *strings.Builder, targetName, parentClass string, isLayout bool) error {
contentsMargins := [4]int{DefaultGridMargin, DefaultGridMargin, DefaultGridMargin, DefaultGridMargin} // left, top, right, bottom
contentsMargins := [4]int{gs.DefaultGridMargin, gs.DefaultGridMargin, gs.DefaultGridMargin, gs.DefaultGridMargin} // left, top, right, bottom
customContentsMargins := false
customSpacing := false
@ -170,8 +207,13 @@ func renderProperties(properties []UiProperty, ret *strings.Builder, targetName,
customContentsMargins = true
} else if prop.StringVal != nil {
// "windowTitle", "title", "text"
ret.WriteString(`ui.` + targetName + setterFunc + `(` + generateString(prop.StringVal, parentClass) + ")\n")
// "windowTitle", "title", "text", "shortcut"
if prop.Name == "shortcut" { // Shouldn't be translatable
prop.StringVal.Notr = true
}
ret.WriteString(`ui.` + targetName + setterFunc + `(` + gs.generateString(prop.StringVal, parentClass) + ")\n")
} else if prop.NumberVal != nil {
// "currentIndex"
@ -208,7 +250,7 @@ func renderProperties(properties []UiProperty, ret *strings.Builder, targetName,
ret.WriteString(`ui.` + targetName + setterFunc + `(` + emit + ")\n")
} else if prop.IconVal != nil {
iconName := renderIcon(prop.IconVal, ret)
iconName := gs.renderIcon(prop.IconVal, ret)
ret.WriteString(`ui.` + targetName + setterFunc + `(` + iconName + ")\n")
} else if prop.Name == "sizePolicy" {
@ -233,15 +275,15 @@ func renderProperties(properties []UiProperty, ret *strings.Builder, targetName,
if !customSpacing && isLayout {
// Layouts must specify spacing, unless, we specified it already
ret.WriteString(`ui.` + targetName + `.SetSpacing(` + fmt.Sprintf("%d", DefaultSpacing) + ")\n")
ret.WriteString(`ui.` + targetName + `.SetSpacing(` + fmt.Sprintf("%d", gs.DefaultSpacing) + ")\n")
}
return nil
}
func generateSetObjectName(target string, objectName string, useQt6 bool) string {
if useQt6 {
func (gs *generateState) generateSetObjectName(target string, objectName string) string {
if gs.UseQt6 {
// return `ui.` + target + `.SetObjectName(*qt.NewQAnyStringView3(` + strconv.Quote(objectName) + "))\n"
spn := target + "__objectName"
ret := spn + `:= qt.NewQAnyStringView3(` + strconv.Quote(objectName) + ")\n"
@ -254,7 +296,7 @@ func generateSetObjectName(target string, objectName string, useQt6 bool) string
}
}
func assignWidgetToLayout(ret *strings.Builder, l *UiLayout, child *UiLayoutItem, noun string, widgetName string) {
func (gs *generateState) assignWidgetToLayout(ret *strings.Builder, l *UiLayout, child *UiLayoutItem, noun string, widgetName string) {
switch l.Class {
case `QFormLayout`:
@ -324,7 +366,7 @@ func assignWidgetToLayout(ret *strings.Builder, l *UiLayout, child *UiLayoutItem
}
}
func generateLayout(l *UiLayout, parentName string, parentClass string, useQt6 bool, isNestedLayout bool) (string, error) {
func (gs *generateState) generateLayout(l *UiLayout, parentName string, parentClass string, isNestedLayout bool) (string, error) {
var ret strings.Builder
@ -337,11 +379,11 @@ func generateLayout(l *UiLayout, parentName string, parentClass string, useQt6 b
ret.WriteString(`ui.` + l.Name + ` = qt.` + ctor + `(` + qwidgetName(parentName, parentClass) + ")\n")
}
ret.WriteString(generateSetObjectName(l.Name, l.Name, useQt6))
ret.WriteString(gs.generateSetObjectName(l.Name, l.Name))
// Layout->Properties
err := renderProperties(l.Properties, &ret, l.Name, parentClass, true) // Always emit spacing/padding calls
err := gs.renderProperties(l.Properties, &ret, l.Name, parentClass, true) // Always emit spacing/padding calls
if err != nil {
return "", err
}
@ -353,7 +395,15 @@ func generateLayout(l *UiLayout, parentName string, parentClass string, useQt6 b
// A layout item is either a widget, or a spacer, or another layout
if child.Spacer != nil {
ret.WriteString("/* miqt-uic: no handler for spacer */\n")
nest, err := gs.generateSpacer(*child.Spacer)
if err != nil {
return "", fmt.Errorf(l.Name+"/Layout/Spacer[%d]: %w", i, err)
}
ret.WriteString(nest)
// Assign to layout
gs.assignWidgetToLayout(&ret, l, &child, "Item", `ui.`+child.Spacer.Name+`.QLayoutItem`)
}
//
@ -363,7 +413,7 @@ func generateLayout(l *UiLayout, parentName string, parentClass string, useQt6 b
// Layout items have the parent as the real QWidget parent and are
// separately assigned to the layout afterwards
nest, err := generateWidget(*child.Widget, parentName, parentClass, useQt6)
nest, err := gs.generateWidget(*child.Widget, parentName, parentClass)
if err != nil {
return "", fmt.Errorf(l.Name+"/Layout/Item[%d]: %w", i, err)
}
@ -371,14 +421,14 @@ func generateLayout(l *UiLayout, parentName string, parentClass string, useQt6 b
ret.WriteString(nest)
// Assign to layout
assignWidgetToLayout(&ret, l, &child, "Widget", qwidgetName(`ui.`+child.Widget.Name, child.Widget.Class))
gs.assignWidgetToLayout(&ret, l, &child, "Widget", qwidgetName(`ui.`+child.Widget.Name, child.Widget.Class))
}
//
if child.Layout != nil {
nest, err := generateLayout(child.Layout, parentName, parentClass, useQt6, true) // nested
nest, err := gs.generateLayout(child.Layout, parentName, parentClass, true) // nested
if err != nil {
return "", fmt.Errorf(l.Name+"/Layout/Item[%d]: %w", i, err)
}
@ -386,7 +436,7 @@ func generateLayout(l *UiLayout, parentName string, parentClass string, useQt6 b
ret.WriteString(nest)
// Assign to layout
assignWidgetToLayout(&ret, l, &child, "Layout", `ui.`+child.Layout.Name+`.QLayout`)
gs.assignWidgetToLayout(&ret, l, &child, "Layout", `ui.`+child.Layout.Name+`.QLayout`)
}
//
@ -395,22 +445,65 @@ func generateLayout(l *UiLayout, parentName string, parentClass string, useQt6 b
return ret.String(), nil
}
func generateWidget(w UiWidget, parentName string, parentClass string, useQt6 bool) (string, error) {
func (gs *generateState) generateSpacer(spc UiSpacer) (string, error) {
ret := strings.Builder{}
// qt.NewQSpacerItem4(w, h, sizepolicy, sizepolicy)
// Same in both qt5 + qt6
var (
w int = 0
h int = 0
isVertical bool = false
)
for _, prop := range spc.Properties {
if prop.Name == "sizeHint" {
w = prop.SizeVal.Width
h = prop.SizeVal.Height
} else if prop.Name == "orientation" {
// qt5.15: "Qt::Horizontal"
// qt6.4: "Qt::Horizontal"
// qt6.??: "Qt::Orientation::Horizontal"
if strings.HasSuffix(*prop.EnumVal, "Vertical") {
isVertical = true
}
} else {
ret.WriteString("/* miqt-uic: no handler for spacer " + spc.Name + " property '" + prop.Name + "' */\n")
}
}
//
sizePolicy := "qt.QSizePolicy__Expanding, qt.QSizePolicy__Minimum" // horizontal
if isVertical {
sizePolicy = "qt.QSizePolicy__Minimum, qt.QSizePolicy__Expanding" // vertical
}
ret.WriteString(`ui.` + spc.Name + ` = qt.NewQSpacerItem4(` + fmt.Sprintf("%d, %d", w, h) + ", " + sizePolicy + ")\n")
return ret.String(), nil
}
func (gs *generateState) generateWidget(w UiWidget, parentName string, parentClass string) (string, error) {
ret := strings.Builder{}
ctor := "New" + w.Class
ret.WriteString(`ui.` + w.Name + ` = qt.` + ctor + `(` + qwidgetName(parentName, parentClass) + ")\n")
ret.WriteString(generateSetObjectName(w.Name, w.Name, useQt6))
ret.WriteString(gs.generateSetObjectName(w.Name, w.Name))
if RootWindowName == "" {
RootWindowName = `ui.` + w.Name
if gs.RootWindowName == "" {
gs.RootWindowName = `ui.` + w.Name
}
// Properties
err := renderProperties(w.Properties, &ret, w.Name, parentClass, false)
err := gs.renderProperties(w.Properties, &ret, w.Name, parentClass, false)
if err != nil {
return "", err
}
@ -419,7 +512,7 @@ func generateWidget(w UiWidget, parentName string, parentClass string, useQt6 bo
for _, attr := range w.Attributes {
if parentClass == "QTabWidget" && attr.Name == "title" {
ret.WriteString(parentName + `.SetTabText(` + parentName + ".IndexOf(ui." + w.Name + "), " + generateString(attr.StringVal, parentClass) + ")\n")
ret.WriteString(parentName + `.SetTabText(` + parentName + ".IndexOf(ui." + w.Name + "), " + gs.generateString(attr.StringVal, parentClass) + ")\n")
} else if w.Class == "QDockWidget" && parentClass == "QMainWindow" && attr.Name == "dockWidgetArea" {
ret.WriteString(parentName + `.AddDockWidget(qt.DockWidgetArea(` + *attr.NumberVal + `), ui.` + w.Name + `)` + "\n")
@ -439,7 +532,7 @@ func generateWidget(w UiWidget, parentName string, parentClass string, useQt6 bo
// Layout
if w.Layout != nil {
nest, err := generateLayout(w.Layout, `ui.`+w.Name, w.Class, useQt6, false)
nest, err := gs.generateLayout(w.Layout, `ui.`+w.Name, w.Class, false)
if err != nil {
return "", err
}
@ -451,19 +544,19 @@ func generateWidget(w UiWidget, parentName string, parentClass string, useQt6 bo
for _, a := range w.Actions {
ret.WriteString(`ui.` + a.Name + ` = qt.NewQAction(` + parentName + ")\n")
ret.WriteString(generateSetObjectName(a.Name, a.Name, useQt6))
ret.WriteString(gs.generateSetObjectName(a.Name, a.Name))
// QActions are translated in the parent window's context
if prop, ok := propertyByName(a.Properties, "text"); ok {
ret.WriteString("ui." + a.Name + `.SetText(` + generateString(prop.StringVal, w.Class) + `)` + "\n")
ret.WriteString("ui." + a.Name + `.SetText(` + gs.generateString(prop.StringVal, w.Class) + `)` + "\n")
}
if prop, ok := propertyByName(a.Properties, "shortcut"); ok {
ret.WriteString("ui." + a.Name + `.SetShortcut(qt.NewQKeySequence2(` + generateString(prop.StringVal, w.Class) + `))` + "\n")
ret.WriteString("ui." + a.Name + `.SetShortcut(qt.NewQKeySequence2(` + gs.generateString_noTr(prop.StringVal.Value) + `))` + "\n")
}
if prop, ok := propertyByName(a.Properties, "icon"); ok {
iconName := renderIcon(prop.IconVal, &ret)
iconName := gs.renderIcon(prop.IconVal, &ret)
ret.WriteString(`ui.` + a.Name + `.SetIcon(` + iconName + ")\n")
}
}
@ -478,7 +571,7 @@ func generateWidget(w UiWidget, parentName string, parentClass string, useQt6 bo
// TODO Abstract for all SetItem{Foo} properties
for _, prop := range itm.Properties {
if prop.Name == "text" {
ret.WriteString("ui." + w.Name + `.SetItemText(` + fmt.Sprintf("%d", itemNo) + `, ` + generateString(prop.StringVal, w.Class) + `)` + "\n")
ret.WriteString("ui." + w.Name + `.SetItemText(` + fmt.Sprintf("%d", itemNo) + `, ` + gs.generateString(prop.StringVal, w.Class) + `)` + "\n")
} else {
ret.WriteString("/* miqt-uic: no handler for item property '" + prop.Name + "' */\n")
@ -492,7 +585,7 @@ func generateWidget(w UiWidget, parentName string, parentClass string, useQt6 bo
for _, prop := range col.Properties {
if prop.Name == "text" {
ret.WriteString("ui." + w.Name + ".HeaderItem().SetText(" + fmt.Sprintf("%d", colNo) + ", " + generateString(prop.StringVal, w.Class) + ")\n")
ret.WriteString("ui." + w.Name + ".HeaderItem().SetText(" + fmt.Sprintf("%d", colNo) + ", " + gs.generateString(prop.StringVal, w.Class) + ")\n")
} else {
ret.WriteString("/* miqt-uic: no handler for column property '" + prop.Name + "' */\n")
}
@ -508,7 +601,7 @@ func generateWidget(w UiWidget, parentName string, parentClass string, useQt6 bo
)
for i, child := range w.Widgets {
nest, err := generateWidget(child, `ui.`+w.Name, w.Class, useQt6)
nest, err := gs.generateWidget(child, `ui.`+w.Name, w.Class)
if err != nil {
return "", fmt.Errorf(w.Name+"/Widgets[%d]: %w", i, err)
}
@ -551,7 +644,7 @@ func generateWidget(w UiWidget, parentName string, parentClass string, useQt6 bo
if w.Class == `QTabWidget` {
if icon, ok := propertyByName(child.Attributes, "icon"); ok {
// AddTab() overload with icon
iconName := renderIcon(icon.IconVal, &ret)
iconName := gs.renderIcon(icon.IconVal, &ret)
ret.WriteString(`ui.` + w.Name + `.AddTab2(` + qwidgetName(`ui.`+child.Name, child.Class) + `, ` + iconName + `, "")` + "\n")
} else {
@ -579,7 +672,7 @@ func generateWidget(w UiWidget, parentName string, parentClass string, useQt6 bo
// It's possible this is a nested menu, then we need to call AddMenu insted
// Resolve the class type of a.Name
if aClass, ok := trackWidgetClasses[a.Name]; ok && aClass == "QMenu" {
if aClass, ok := gs.trackWidgetClasses[a.Name]; ok && aClass == "QMenu" {
// Nested
ret.WriteString("ui." + w.Name + ".AddMenu(ui." + a.Name + ")\n")
@ -595,28 +688,32 @@ func generateWidget(w UiWidget, parentName string, parentClass string, useQt6 bo
}
}
if w.Class == "QDialogButtonBox" {
// TODO make this using a native connection instead of a C++ -> Go -> C++ roundtrip
ret.WriteString(`ui.` + w.Name + `.OnAccepted(` + RootWindowName + ".Accept)\n")
ret.WriteString(`ui.` + w.Name + `.OnRejected(` + RootWindowName + ".Reject)\n")
return ret.String(), nil
}
func normalizeSignalName(s string) string {
if s == "" {
return ""
}
return ret.String(), nil
s = strings.TrimSuffix(s, `()`)
return strings.ToUpper(string(s[0])) + s[1:]
}
func generate(packageName string, goGenerateArgs string, u UiFile, useQt6 bool) ([]byte, error) {
trackWidgetClasses = make(map[string]string)
gs := NewGenerateState(useQt6)
ret := strings.Builder{}
// Update globals for layoutdefault, if present
if u.LayoutDefault != nil {
if u.LayoutDefault.Spacing != nil {
DefaultSpacing = *u.LayoutDefault.Spacing
gs.DefaultSpacing = *u.LayoutDefault.Spacing
}
if u.LayoutDefault.Margin != nil {
DefaultGridMargin = *u.LayoutDefault.Margin
gs.DefaultGridMargin = *u.LayoutDefault.Margin
}
}
@ -639,7 +736,7 @@ import (
)
type ` + u.Class + `Ui struct {
` + strings.Join(collectClassNames_Widget(&u.Widget), "\n") + `
` + strings.Join(gs.collectClassNames_Widget(&u.Widget), "\n") + `
}
// New` + u.Class + `Ui creates all Qt widget classes for ` + u.Class + `.
@ -647,7 +744,7 @@ func New` + u.Class + `Ui() *` + u.Class + `Ui {
ui := &` + u.Class + `Ui{}
`)
nest, err := generateWidget(u.Widget, "", "", useQt6)
nest, err := gs.generateWidget(u.Widget, "", "")
if err != nil {
return nil, err
}
@ -666,6 +763,13 @@ func New` + u.Class + `Ui() *` + u.Class + `Ui {
}
}
// Connections
for _, c := range u.Connections.Connections {
// TODO make this using a native connection instead of a C++ -> Go -> C++ roundtrip
ret.WriteString(`ui.` + c.Sender + `.On` + normalizeSignalName(c.Signal) + `(ui.` + c.Receiver + "." + normalizeSignalName(c.Slot) + ")\n")
}
ret.WriteString("\nui.Retranslate()\n\n")
for _, sci := range setCurrentIndex {

View File

@ -4,15 +4,32 @@ import (
"bytes"
"encoding/xml"
"io/ioutil"
"os"
"path/filepath"
"strings"
"testing"
)
func TestNormalizeThemeName(t *testing.T) {
check := func(input, want string) {
got := normalizeIconThemeName(input)
if got != want {
t.Errorf("normalizeIconThemeName(%q): got %q, want %q", input, got, want)
}
}
check("application-exit", "application-exit") // no-op
check("", "")
check("QIcon::unsupported", "QIcon::unsupported") // invalid input
check("QIcon::ThemeIcon::ApplicationExit", "application-exit")
}
func TestFixtureMarshalRoundtrip(t *testing.T) {
testFixture := func(fixtureFile string) {
testFixture := func(fixtureFile string, qt6 bool) {
in, err := ioutil.ReadFile(fixtureFile)
if err != nil {
t.Fatalf("ReadFile: %v", err)
t.Fatalf("ReadFile(%q): %v", fixtureFile, err)
}
in = bytes.Replace(in, []byte("\r"), []byte{}, -1) // Replace CRLF to LF
@ -37,11 +54,51 @@ func TestFixtureMarshalRoundtrip(t *testing.T) {
// Verify that the marshalled result matches the original identically,
// i.e. we did not miss any properties in our XML type definitions
if string(in) != string(ret) {
t.Errorf("Mismatch")
t.Errorf("Mismatch(%q)", fixtureFile)
t.Log(lineDiff(string(in), string(ret)))
}
if strings.HasPrefix(fixtureFile, `..`) {
return
}
// Generate Go code
goSrc, err := generate("test_package_name", "go_generate_args", parsed, qt6)
if err != nil {
t.Fatalf("Generate: %v", err)
}
fixtureExpect := fixtureFile + ".go.expected"
expectGoSrc, err := os.ReadFile(fixtureExpect)
if err != nil {
if os.IsNotExist(err) {
t.Errorf("WARNING: %q does not exist, creating for the first time", fixtureExpect)
_ = os.WriteFile(fixtureExpect, goSrc, 0644)
} else {
t.Errorf("ReadFile(%q): %v", fixtureExpect, err)
}
} else {
if string(expectGoSrc) != string(goSrc) {
t.Errorf("Mismatch(%q)", fixtureExpect)
t.Log(lineDiff(string(expectGoSrc), string(goSrc)))
}
}
}
testFixture("../../examples/uidesigner/design.ui", false)
ents, err := os.ReadDir("testdata")
if err != nil {
t.Fatal(err)
}
for _, ent := range ents {
if !strings.HasSuffix(ent.Name(), ".ui") {
continue
}
testFixture(filepath.Join("testdata", ent.Name()), strings.HasPrefix(ent.Name(), "qt6"))
}
testFixture("../../examples/uidesigner/design.ui")
}