Compare commits

..

No commits in common. "master" and "v1.0.0" have entirely different histories.

3 changed files with 15 additions and 92 deletions

View File

@ -34,6 +34,6 @@
🇵🇹 Portugal - Napa - Deslocado
🇷🇸 Serbia - Princ - Mila
🇸🇪 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
🇺🇦 Ukraine - Ziferblat - Bird of Pray

54
main.go
View File

@ -11,15 +11,6 @@ import (
"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() {
qt.NewQApplication(os.Args)
@ -58,10 +49,7 @@ func main() {
ui.MainWindow.SetWindowTitle(os.Args[1] + " - " + appName)
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)
ui.b1.OnClicked(func() { // Set up click handlers only once
ret <- true
@ -70,62 +58,30 @@ func main() {
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.infoArea.SetFocusPolicy(qt.NoFocus) // prevent stealing keyboard input
comparisons := 0
go func() {
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() {
comparisons++
ui.infoArea.AddItem(fmt.Sprintf("Comparison #%d", comparisons))
ui.infoArea.ScrollToBottom()
ui.b1.SetText(formatButtonText(entries[i]))
ui.b2.SetText(formatButtonText(entries[j]))
// Escape & used as an alt-accelerator
ui.b1.SetText(strings.ReplaceAll(entries[i], `&`, `&&`))
ui.b2.SetText(strings.ReplaceAll(entries[j], `&`, `&&`))
})
if shuf {
return !<-ret
}
return <-ret
})
active = false
mainthread.Start(func() {
ui.b1.SetVisible(false)
ui.b2.SetVisible(false)
ui.b1.SetEnabled(false)
ui.b2.SetEnabled(false)
// Sorting 39 entries took 77 comparisons
// Finished sorting 37 entries in 219 comparisons

View File

@ -21,62 +21,29 @@ type MainWindowUi struct {
// 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(320, 415)
ui.MainWindow.SetWindowTitle("SortVote")
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.infoArea = qt.NewQListWidget(ui.centralwidget)
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
/* miqt-uic: no handler for infoArea property 'sizePolicy' */
ui.verticalLayout.AddWidget(ui.infoArea.QWidget)
ui.b1 = qt.NewQPushButton(ui.centralwidget)
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
/* miqt-uic: no handler for b1 property 'sizePolicy' */
ui.verticalLayout.AddWidget(ui.b1.QWidget)
ui.b2 = qt.NewQPushButton(ui.centralwidget)
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
/* miqt-uic: no handler for b2 property 'sizePolicy' */
ui.verticalLayout.AddWidget(ui.b2.QWidget)
ui.MainWindow.SetCentralWidget(ui.centralwidget) // Set central widget