37 lines
1.5 KiB
Plaintext
37 lines
1.5 KiB
Plaintext
OPTION GUI TRUE
|
|
PRAGMA GUI gtk3
|
|
|
|
DECLARE (*show)() = gtk_widget_show_all TYPE void
|
|
DECLARE (*hide)() = gtk_widget_hide TYPE void
|
|
|
|
gui = GUIDEFINE(" \
|
|
{ type=WINDOW name=window callback=delete-event title=\"Rosetta Code\" width-request=200 } \
|
|
{ type=BOX name=box parent=window orientation=GTK_ORIENTATION_VERTICAL } \
|
|
{ type=SPIN_BUTTON name=spin parent=box numeric=TRUE } \
|
|
{ type=BUTTON_BOX name=bbox parent=box } \
|
|
{ type=BUTTON name=increment parent=bbox callback=clicked label=\"Increment\" } \
|
|
{ type=BUTTON name=random parent=bbox callback=clicked label=\"Random\" } \
|
|
{ type=MESSAGE_DIALOG name=confirm callback=delete-event callback=response,yesno message-type=GTK_MESSAGE_WARNING buttons=GTK_BUTTONS_YES_NO title=\"Warning\" text=\"Get random number?\" }")
|
|
|
|
CALL GUISET(gui, "spin", "adjustment", gtk_adjustment_new(0, 0, MAXNUM(float), 1, 1, 0))
|
|
|
|
DECLARE answer TYPE int*
|
|
DECLARE input TYPE FLOATING
|
|
|
|
WHILE TRUE
|
|
event$ = GUIEVENT$(gui, TRUE)
|
|
SELECT TOKEN$(event$, 1)
|
|
CASE "window"
|
|
BREAK
|
|
CASE "increment"
|
|
CALL GUIGET(gui, "spin", "value", &input)
|
|
CALL GUISET(gui, "spin", "value", input+1)
|
|
CASE "random"
|
|
CALL GUIFN(gui, "confirm", show)
|
|
CASE "yesno"
|
|
answer = (intptr_t)DEC(TOKEN$(event$, 2))
|
|
IF *answer = GTK_RESPONSE_YES THEN CALL GUISET(gui, "spin", "value", RANDOM(MAXNUM(float)))
|
|
CALL GUIFN(gui, "confirm", hide)
|
|
ENDSELECT
|
|
WEND
|