September Morn Update
This commit is contained in:
parent
4e2d22a71d
commit
aac6731f2c
6856 changed files with 141342 additions and 21127 deletions
|
|
@ -1,70 +1,57 @@
|
|||
import forms.
|
||||
import extensions.
|
||||
import forms;
|
||||
import extensions;
|
||||
|
||||
class Window
|
||||
public class MainWindow : SDIDialog
|
||||
{
|
||||
object form.
|
||||
object btmIncrement.
|
||||
object btmRandom.
|
||||
object txtNumber.
|
||||
Button btmIncrement;
|
||||
Button btmRandom;
|
||||
Edit txtNumber;
|
||||
|
||||
constructor new
|
||||
[
|
||||
form := SDIDialog new.
|
||||
btmIncrement := Button new.
|
||||
btmRandom := Button new.
|
||||
txtNumber := Edit new.
|
||||
constructor new()
|
||||
<= new()
|
||||
{
|
||||
btmIncrement := new Button();
|
||||
btmRandom := new Button();
|
||||
txtNumber := new Edit();
|
||||
|
||||
form controls;
|
||||
append:btmIncrement;
|
||||
append:btmRandom;
|
||||
append:txtNumber.
|
||||
self
|
||||
.appendControl:btmIncrement
|
||||
.appendControl:btmRandom
|
||||
.appendControl:txtNumber;
|
||||
|
||||
form
|
||||
set caption:"Rosseta Code";
|
||||
set x:100 y:100;
|
||||
set width:160 height:120.
|
||||
self.Caption := "Rosseta Code";
|
||||
self.setRegion(100, 100, 160, 120);
|
||||
|
||||
txtNumber
|
||||
set x:7 y:7;
|
||||
set width:140 height:25;
|
||||
set caption:"0".
|
||||
txtNumber.setRegion(7, 7, 140, 25);
|
||||
txtNumber.Caption := "0";
|
||||
|
||||
btmIncrement
|
||||
set x:7 y:35;
|
||||
set width:140 height:25;
|
||||
set caption:"Increment";
|
||||
set onClick: (:args)
|
||||
[ $self $onButtonIncrementClick ].
|
||||
btmIncrement.setRegion(7, 35, 140, 25);
|
||||
btmIncrement.Caption := "Increment";
|
||||
btmIncrement.onClick := (args){ self.onButtonIncrementClick() };
|
||||
|
||||
btmRandom
|
||||
set x:7 y:65;
|
||||
set width:140 height:25;
|
||||
set caption:"Random";
|
||||
set onClick(:args)
|
||||
[ $self $onButtonRandomClick ]
|
||||
]
|
||||
btmRandom.setRegion(7, 65, 140, 25);
|
||||
btmRandom.Caption := "Random";
|
||||
btmRandom.onClick := (args){ self.onButtonRandomClick() };
|
||||
}
|
||||
|
||||
$onButtonIncrementClick
|
||||
[
|
||||
var number := txtNumber value; toInt.
|
||||
private onButtonIncrementClick()
|
||||
{
|
||||
var number := txtNumber.Value.toInt();
|
||||
|
||||
number := number + 1.
|
||||
$self $changeTextBoxValue:number.
|
||||
]
|
||||
number := number + 1;
|
||||
self.changeTextBoxValue(number)
|
||||
}
|
||||
|
||||
$onButtonRandomClick
|
||||
[
|
||||
if(messageDialog open caption:"Inf" question:"Really reset to random value?")
|
||||
[
|
||||
$self $changeTextBoxValue(randomGenerator eval:99999999)
|
||||
]
|
||||
]
|
||||
private onButtonRandomClick()
|
||||
{
|
||||
if(messageDialog.showQuestion("Inf", "Really reset to random value?"))
|
||||
{
|
||||
self.changeTextBoxValue(randomGenerator.eval(99999999))
|
||||
}
|
||||
}
|
||||
|
||||
$changeTextBoxValue : number
|
||||
[
|
||||
txtNumber set caption(number literal).
|
||||
]
|
||||
|
||||
dispatch => form.
|
||||
private changeTextBoxValue(number)
|
||||
{
|
||||
txtNumber.Caption := number.toString()
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,99 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"github.com/gotk3/gotk3/gtk"
|
||||
"log"
|
||||
"math/rand"
|
||||
"strconv"
|
||||
"time"
|
||||
)
|
||||
|
||||
func validateInput(window *gtk.Window, str string) (int64, bool) {
|
||||
i, err := strconv.ParseInt(str, 10, 64)
|
||||
if err != nil {
|
||||
dialog := gtk.MessageDialogNew(
|
||||
window,
|
||||
gtk.DIALOG_MODAL,
|
||||
gtk.MESSAGE_ERROR,
|
||||
gtk.BUTTONS_OK,
|
||||
"Invalid value",
|
||||
)
|
||||
dialog.Run()
|
||||
dialog.Destroy()
|
||||
return 0, false
|
||||
}
|
||||
return i, true
|
||||
}
|
||||
|
||||
func check(err error, msg string) {
|
||||
if err != nil {
|
||||
log.Fatal(msg, err)
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
rand.Seed(time.Now().UnixNano())
|
||||
gtk.Init(nil)
|
||||
|
||||
window, err := gtk.WindowNew(gtk.WINDOW_TOPLEVEL)
|
||||
check(err, "Unable to create window:")
|
||||
window.SetTitle("Rosetta Code")
|
||||
window.SetPosition(gtk.WIN_POS_CENTER)
|
||||
window.Connect("destroy", func() {
|
||||
gtk.MainQuit()
|
||||
})
|
||||
|
||||
box, err := gtk.BoxNew(gtk.ORIENTATION_HORIZONTAL, 1)
|
||||
check(err, "Unable to create box:")
|
||||
box.SetBorderWidth(1)
|
||||
|
||||
label, err := gtk.LabelNew("Value:")
|
||||
check(err, "Unable to create label:")
|
||||
|
||||
entry, err := gtk.EntryNew()
|
||||
check(err, "Unable to create entry:")
|
||||
entry.SetText("0") // initialize to zero
|
||||
entry.Connect("activate", func() {
|
||||
// read and validate the entered value
|
||||
str, _ := entry.GetText()
|
||||
validateInput(window, str)
|
||||
})
|
||||
|
||||
// button to increment
|
||||
ib, err := gtk.ButtonNewWithLabel("Increment")
|
||||
check(err, "Unable to create increment button:")
|
||||
ib.Connect("clicked", func() {
|
||||
// read and validate the entered value
|
||||
str, _ := entry.GetText()
|
||||
if i, ok := validateInput(window, str); ok {
|
||||
entry.SetText(strconv.FormatInt(i+1, 10))
|
||||
}
|
||||
})
|
||||
|
||||
// button to put in a random value if confirmed
|
||||
rb, err := gtk.ButtonNewWithLabel("Random")
|
||||
check(err, "Unable to create random button:")
|
||||
rb.Connect("clicked", func() {
|
||||
dialog := gtk.MessageDialogNew(
|
||||
window,
|
||||
gtk.DIALOG_MODAL,
|
||||
gtk.MESSAGE_QUESTION,
|
||||
gtk.BUTTONS_YES_NO,
|
||||
"Set random value",
|
||||
)
|
||||
answer := dialog.Run()
|
||||
dialog.Destroy()
|
||||
if answer == gtk.RESPONSE_YES {
|
||||
entry.SetText(strconv.Itoa(rand.Intn(10000)))
|
||||
}
|
||||
})
|
||||
|
||||
box.PackStart(label, false, false, 2)
|
||||
box.PackStart(entry, false, false, 2)
|
||||
box.PackStart(ib, false, false, 2)
|
||||
box.PackStart(rb, false, false, 2)
|
||||
window.Add(box)
|
||||
|
||||
window.ShowAll()
|
||||
gtk.Main()
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue