Compare commits
No commits in common. "master" and "v1.0.0" have entirely different histories.
@ -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
54
main.go
@ -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
|
||||
|
51
window.go
51
window.go
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user