Compare commits
6 Commits
Author | SHA1 | Date | |
---|---|---|---|
70b3f97368 | |||
ba1e7964ab | |||
bbc5730b19 | |||
0fe8a10bc3 | |||
962e7cce3b | |||
3697a2e127 |
@ -34,6 +34,6 @@
|
|||||||
🇵🇹 Portugal - Napa - Deslocado
|
🇵🇹 Portugal - Napa - Deslocado
|
||||||
🇷🇸 Serbia - Princ - Mila
|
🇷🇸 Serbia - Princ - Mila
|
||||||
🇸🇪 Sweden - KAJ - Bara bada bastu
|
🇸🇪 Sweden - KAJ - Bara bada bastu
|
||||||
🇸🇮 Slovenia - Klemen - How Much Time - Do We Have Left
|
🇸🇮 Slovenia - Klemen - How Much Time Do We Have Left
|
||||||
🇸🇲 San Marino - Gabry Ponte - Tutta l'Italia
|
🇸🇲 San Marino - Gabry Ponte - Tutta l'Italia
|
||||||
🇺🇦 Ukraine - Ziferblat - Bird of Pray
|
🇺🇦 Ukraine - Ziferblat - Bird of Pray
|
54
main.go
54
main.go
@ -11,6 +11,15 @@ import (
|
|||||||
"github.com/mappu/miqt/qt6/mainthread"
|
"github.com/mappu/miqt/qt6/mainthread"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func formatButtonText(s string) string {
|
||||||
|
// Escape & used as an alt-accelerator
|
||||||
|
s = strings.ReplaceAll(s, `&`, `&&`)
|
||||||
|
|
||||||
|
// Replace " - " with newlines
|
||||||
|
s = strings.ReplaceAll(s, ` - `, "\n")
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
|
||||||
qt.NewQApplication(os.Args)
|
qt.NewQApplication(os.Args)
|
||||||
@ -49,7 +58,10 @@ func main() {
|
|||||||
ui.MainWindow.SetWindowTitle(os.Args[1] + " - " + appName)
|
ui.MainWindow.SetWindowTitle(os.Args[1] + " - " + appName)
|
||||||
|
|
||||||
ui.infoArea.AddItem(fmt.Sprintf("Sorting %d entries", len(entries)))
|
ui.infoArea.AddItem(fmt.Sprintf("Sorting %d entries", len(entries)))
|
||||||
|
ui.infoArea.AddItem("Use [Q] and [Z] to select with the keyboard")
|
||||||
|
ui.infoArea.ScrollToBottom()
|
||||||
|
|
||||||
|
active := true
|
||||||
ret := make(chan bool, 0)
|
ret := make(chan bool, 0)
|
||||||
ui.b1.OnClicked(func() { // Set up click handlers only once
|
ui.b1.OnClicked(func() { // Set up click handlers only once
|
||||||
ret <- true
|
ret <- true
|
||||||
@ -58,30 +70,62 @@ func main() {
|
|||||||
ret <- false
|
ret <- false
|
||||||
})
|
})
|
||||||
|
|
||||||
|
ui.MainWindow.OnKeyPressEvent(func(super func(event *qt.QKeyEvent), event *qt.QKeyEvent) {
|
||||||
|
if !active {
|
||||||
|
super(event)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
keytext := strings.ToLower(event.Text())
|
||||||
|
if keytext == `q` {
|
||||||
|
ret <- true
|
||||||
|
|
||||||
|
} else if keytext == `z` {
|
||||||
|
ret <- false
|
||||||
|
|
||||||
|
} else { // not our event
|
||||||
|
super(event)
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
ui.MainWindow.Show()
|
ui.MainWindow.Show()
|
||||||
|
|
||||||
|
ui.infoArea.SetFocusPolicy(qt.NoFocus) // prevent stealing keyboard input
|
||||||
|
|
||||||
comparisons := 0
|
comparisons := 0
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
sort.SliceStable(entries, func(i, j int) bool {
|
sort.SliceStable(entries, func(i, j int) bool {
|
||||||
|
|
||||||
|
// Towards the end, sort.SliceStable has the pattern of putting one
|
||||||
|
// entry in the top button all the time
|
||||||
|
// Maybe shuffle them
|
||||||
|
shuf := (rand.Int()%2 == 0)
|
||||||
|
if shuf {
|
||||||
|
i, j = j, i
|
||||||
|
}
|
||||||
|
|
||||||
mainthread.Wait(func() {
|
mainthread.Wait(func() {
|
||||||
comparisons++
|
comparisons++
|
||||||
|
|
||||||
ui.infoArea.AddItem(fmt.Sprintf("Comparison #%d", comparisons))
|
ui.infoArea.AddItem(fmt.Sprintf("Comparison #%d", comparisons))
|
||||||
ui.infoArea.ScrollToBottom()
|
ui.infoArea.ScrollToBottom()
|
||||||
|
|
||||||
// Escape & used as an alt-accelerator
|
ui.b1.SetText(formatButtonText(entries[i]))
|
||||||
ui.b1.SetText(strings.ReplaceAll(entries[i], `&`, `&&`))
|
ui.b2.SetText(formatButtonText(entries[j]))
|
||||||
ui.b2.SetText(strings.ReplaceAll(entries[j], `&`, `&&`))
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
if shuf {
|
||||||
|
return !<-ret
|
||||||
|
}
|
||||||
return <-ret
|
return <-ret
|
||||||
})
|
})
|
||||||
|
active = false
|
||||||
|
|
||||||
mainthread.Start(func() {
|
mainthread.Start(func() {
|
||||||
ui.b1.SetEnabled(false)
|
ui.b1.SetVisible(false)
|
||||||
ui.b2.SetEnabled(false)
|
ui.b2.SetVisible(false)
|
||||||
|
|
||||||
// Sorting 39 entries took 77 comparisons
|
// Sorting 39 entries took 77 comparisons
|
||||||
// Finished sorting 37 entries in 219 comparisons
|
// Finished sorting 37 entries in 219 comparisons
|
||||||
|
51
window.go
51
window.go
@ -21,29 +21,62 @@ type MainWindowUi struct {
|
|||||||
// NewMainWindowUi creates all Qt widget classes for MainWindow.
|
// NewMainWindowUi creates all Qt widget classes for MainWindow.
|
||||||
func NewMainWindowUi() *MainWindowUi {
|
func NewMainWindowUi() *MainWindowUi {
|
||||||
ui := &MainWindowUi{}
|
ui := &MainWindowUi{}
|
||||||
|
|
||||||
ui.MainWindow = qt.NewQMainWindow(nil)
|
ui.MainWindow = qt.NewQMainWindow(nil)
|
||||||
|
MainWindow__objectName := qt.NewQAnyStringView3("MainWindow")
|
||||||
|
ui.MainWindow.SetObjectName(*MainWindow__objectName)
|
||||||
|
MainWindow__objectName.Delete() // setter copied value
|
||||||
ui.MainWindow.Resize(320, 415)
|
ui.MainWindow.Resize(320, 415)
|
||||||
ui.MainWindow.SetWindowTitle("SortVote")
|
ui.MainWindow.SetWindowTitle("SortVote")
|
||||||
|
|
||||||
ui.centralwidget = qt.NewQWidget(ui.MainWindow.QWidget)
|
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)
|
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.SetContentsMargins(11, 11, 11, 11)
|
||||||
ui.verticalLayout.SetSpacing(6)
|
ui.verticalLayout.SetSpacing(6)
|
||||||
|
|
||||||
ui.infoArea = qt.NewQListWidget(ui.centralwidget)
|
ui.infoArea = qt.NewQListWidget(ui.centralwidget)
|
||||||
/* miqt-uic: no handler for infoArea property 'sizePolicy' */
|
infoArea__objectName := qt.NewQAnyStringView3("infoArea")
|
||||||
|
ui.infoArea.SetObjectName(*infoArea__objectName)
|
||||||
|
infoArea__objectName.Delete() // setter copied value
|
||||||
|
infoArea__sizePolicy := qt.NewQSizePolicy()
|
||||||
|
infoArea__sizePolicy.SetHorizontalPolicy(qt.QSizePolicy__Minimum)
|
||||||
|
infoArea__sizePolicy.SetVerticalPolicy(qt.QSizePolicy__MinimumExpanding)
|
||||||
|
infoArea__sizePolicy.SetHorizontalStretch(0)
|
||||||
|
infoArea__sizePolicy.SetVerticalStretch(0)
|
||||||
|
infoArea__sizePolicy.SetHeightForWidth(ui.infoArea.SizePolicy().HasHeightForWidth())
|
||||||
|
ui.infoArea.SetSizePolicy(*infoArea__sizePolicy)
|
||||||
|
infoArea__sizePolicy.Delete() // setter copies values
|
||||||
|
|
||||||
ui.verticalLayout.AddWidget(ui.infoArea.QWidget)
|
ui.verticalLayout.AddWidget(ui.infoArea.QWidget)
|
||||||
|
|
||||||
ui.b1 = qt.NewQPushButton(ui.centralwidget)
|
ui.b1 = qt.NewQPushButton(ui.centralwidget)
|
||||||
/* miqt-uic: no handler for b1 property 'sizePolicy' */
|
b1__objectName := qt.NewQAnyStringView3("b1")
|
||||||
|
ui.b1.SetObjectName(*b1__objectName)
|
||||||
|
b1__objectName.Delete() // setter copied value
|
||||||
|
b1__sizePolicy := qt.NewQSizePolicy()
|
||||||
|
b1__sizePolicy.SetHorizontalPolicy(qt.QSizePolicy__Minimum)
|
||||||
|
b1__sizePolicy.SetVerticalPolicy(qt.QSizePolicy__MinimumExpanding)
|
||||||
|
b1__sizePolicy.SetHorizontalStretch(0)
|
||||||
|
b1__sizePolicy.SetVerticalStretch(0)
|
||||||
|
b1__sizePolicy.SetHeightForWidth(ui.b1.SizePolicy().HasHeightForWidth())
|
||||||
|
ui.b1.SetSizePolicy(*b1__sizePolicy)
|
||||||
|
b1__sizePolicy.Delete() // setter copies values
|
||||||
|
|
||||||
ui.verticalLayout.AddWidget(ui.b1.QWidget)
|
ui.verticalLayout.AddWidget(ui.b1.QWidget)
|
||||||
|
|
||||||
ui.b2 = qt.NewQPushButton(ui.centralwidget)
|
ui.b2 = qt.NewQPushButton(ui.centralwidget)
|
||||||
/* miqt-uic: no handler for b2 property 'sizePolicy' */
|
b2__objectName := qt.NewQAnyStringView3("b2")
|
||||||
|
ui.b2.SetObjectName(*b2__objectName)
|
||||||
|
b2__objectName.Delete() // setter copied value
|
||||||
|
b2__sizePolicy := qt.NewQSizePolicy()
|
||||||
|
b2__sizePolicy.SetHorizontalPolicy(qt.QSizePolicy__Minimum)
|
||||||
|
b2__sizePolicy.SetVerticalPolicy(qt.QSizePolicy__MinimumExpanding)
|
||||||
|
b2__sizePolicy.SetHorizontalStretch(0)
|
||||||
|
b2__sizePolicy.SetVerticalStretch(0)
|
||||||
|
b2__sizePolicy.SetHeightForWidth(ui.b2.SizePolicy().HasHeightForWidth())
|
||||||
|
ui.b2.SetSizePolicy(*b2__sizePolicy)
|
||||||
|
b2__sizePolicy.Delete() // setter copies values
|
||||||
|
|
||||||
ui.verticalLayout.AddWidget(ui.b2.QWidget)
|
ui.verticalLayout.AddWidget(ui.b2.QWidget)
|
||||||
ui.MainWindow.SetCentralWidget(ui.centralwidget) // Set central widget
|
ui.MainWindow.SetCentralWidget(ui.centralwidget) // Set central widget
|
||||||
|
Loading…
x
Reference in New Issue
Block a user