Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
8
Task/Simple-windowed-application/00-META.yaml
Normal file
8
Task/Simple-windowed-application/00-META.yaml
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
---
|
||||
category:
|
||||
- Basic language learning
|
||||
- Simple
|
||||
from: http://rosettacode.org/wiki/Simple_windowed_application
|
||||
note: GUI
|
||||
requires:
|
||||
- Graphics
|
||||
8
Task/Simple-windowed-application/00-TASK.txt
Normal file
8
Task/Simple-windowed-application/00-TASK.txt
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
;Task:
|
||||
Create a window that has:
|
||||
::# a label that says "There have been no clicks yet"
|
||||
::# a button that says "click me"
|
||||
|
||||
|
||||
Upon clicking the button with the mouse, the label should change and show the number of times the button has been clicked.
|
||||
<br><br>
|
||||
|
|
@ -0,0 +1,445 @@
|
|||
/* ARM assembly AARCH64 Raspberry PI 3B */
|
||||
/* program simpleWin64.s link with X11 library */
|
||||
|
||||
/*******************************************/
|
||||
/* Constantes file */
|
||||
/*******************************************/
|
||||
/* for this file see task include a file in language AArch64 assembly*/
|
||||
.include "../includeConstantesARM64.inc"
|
||||
|
||||
/* constantes X11 */
|
||||
.equ KeyPressed, 2
|
||||
.equ ButtonPress, 4
|
||||
.equ ClientMessage, 33
|
||||
.equ KeyPressMask, 1
|
||||
.equ ButtonPressMask, 4
|
||||
.equ ButtonReleaseMask, 8
|
||||
.equ ExposureMask, 1<<15
|
||||
.equ StructureNotifyMask, 1<<17
|
||||
.equ EnterWindowMask, 1<<4
|
||||
.equ LeaveWindowMask, 1<<5
|
||||
|
||||
/*******************************************/
|
||||
/* Structures */
|
||||
/********************************************/
|
||||
/* Button structure */
|
||||
.struct 0
|
||||
BT_cbdata:
|
||||
.struct BT_cbdata + 8
|
||||
BT_adresse:
|
||||
.struct BT_adresse + 8
|
||||
BT_GC:
|
||||
.struct BT_GC + 8
|
||||
BT_Font:
|
||||
.struct BT_Font + 8
|
||||
BT_fin:
|
||||
/***************************************************/
|
||||
/* structure XButtonEvent */
|
||||
.struct 0
|
||||
XBE_type: //event type
|
||||
.struct XBE_type + 8
|
||||
XBE_serial: // No last request processed server */
|
||||
.struct XBE_serial + 8
|
||||
XBE_send_event: // true if this came from a SendEvent request */
|
||||
.struct XBE_send_event + 8
|
||||
XBE_display: // Display the event was read from
|
||||
.struct XBE_display + 8
|
||||
XBE_window: // "event" window it is reported relative to
|
||||
.struct XBE_window + 8
|
||||
XBE_root: // root window that the event occurred on
|
||||
.struct XBE_root + 8
|
||||
XBE_subwindow: // child window
|
||||
.struct XBE_subwindow + 8
|
||||
XBE_time: // milliseconds
|
||||
.struct XBE_time + 8
|
||||
XBE_x: // pointer x, y coordinates in event window
|
||||
.struct XBE_x + 8
|
||||
XBE_y:
|
||||
.struct XBE_y + 8
|
||||
XBE_x_root: // coordinates relative to root
|
||||
.struct XBE_x_root + 8
|
||||
XBE_y_root:
|
||||
.struct XBE_y_root + 8
|
||||
XBE_state: // key or button mask
|
||||
.struct XBE_state + 8
|
||||
XBE_button: // detail
|
||||
.struct XBE_button + 8
|
||||
XBE_same_screen: // same screen flag
|
||||
.struct XBE_same_screen + 8
|
||||
XBE_fin:
|
||||
/*******************************************/
|
||||
/* Initialized data */
|
||||
/*******************************************/
|
||||
.data
|
||||
szRetourligne: .asciz "\n"
|
||||
szMessErreur: .asciz "Server X11 not found.\n"
|
||||
szMessErrfen: .asciz "Error create X11 window.\n"
|
||||
szMessErrGC: .asciz "Error create Graphic Context.\n"
|
||||
szMessErrButton: .asciz "Error create button.\n"
|
||||
szMessErrButtonGC: .asciz "Error create button Graphic Context.\n"
|
||||
szMessGoodBye: .asciz "There have been no clicks yet"
|
||||
|
||||
szTextButton: .asciz "Click me"
|
||||
szMessResult: .asciz "You clicked me @ times "
|
||||
|
||||
szLibDW: .asciz "WM_DELETE_WINDOW" // message close window
|
||||
|
||||
/*******************************************/
|
||||
/* UnInitialized data */
|
||||
/*******************************************/
|
||||
.bss
|
||||
.align 4
|
||||
qDisplay: .skip 8 // Display address
|
||||
qDefScreen: .skip 8 // Default screen address
|
||||
identWin: .skip 8 // window ident
|
||||
qCounterClic: .skip 8 // counter clic button
|
||||
sZoneConv: .skip 24
|
||||
wmDeleteMessage: .skip 16 // ident close message
|
||||
stEvent: .skip 400 // provisional size
|
||||
|
||||
stButton: .skip BT_fin
|
||||
buffer: .skip 500
|
||||
|
||||
/**********************************************/
|
||||
/* -- Code section */
|
||||
/**********************************************/
|
||||
.text
|
||||
.global main // program entry
|
||||
main:
|
||||
mov x0,#0 // open server X
|
||||
bl XOpenDisplay
|
||||
cmp x0,#0
|
||||
beq erreur
|
||||
// Ok return Display address
|
||||
ldr x1,qAdrqDisplay
|
||||
str x0,[x1] // store Display address for future use
|
||||
mov x28,x0 // and in register 28
|
||||
// load default screen
|
||||
ldr x2,[x0,#264] // at location 264
|
||||
ldr x1,qAdrqDefScreen
|
||||
str x2,[x1] //store default_screen
|
||||
mov x2,x0
|
||||
ldr x0,[x2,#232] // screen list
|
||||
|
||||
//screen areas
|
||||
ldr x5,[x0,#+88] // white pixel
|
||||
ldr x3,[x0,#+96] // black pixel
|
||||
ldr x4,[x0,#+56] // bits par pixel
|
||||
ldr x1,[x0,#+16] // root windows
|
||||
// create window x11
|
||||
mov x0,x28 //display
|
||||
mov x2,#0 // position X
|
||||
mov x3,#0 // position Y
|
||||
mov x4,600 // weight
|
||||
mov x5,400 // height
|
||||
mov x6,0 // bordure ???
|
||||
ldr x7,0 // ?
|
||||
ldr x8,qBlanc // background
|
||||
str x8,[sp,-16]! // argument fot stack
|
||||
bl XCreateSimpleWindow
|
||||
add sp,sp,16 // for stack alignement
|
||||
cmp x0,#0 // error ?
|
||||
beq erreurF
|
||||
ldr x1,qAdridentWin
|
||||
str x0,[x1] // store window ident for future use
|
||||
mov x27,x0 // and in register 27
|
||||
|
||||
// Correction of window closing error
|
||||
mov x0,x28 // Display address
|
||||
ldr x1,qAdrszLibDW // atom name address
|
||||
mov x2,#1 // False create atom if not exist
|
||||
bl XInternAtom
|
||||
cmp x0,#0
|
||||
ble erreurF
|
||||
ldr x1,qAdrwmDeleteMessage // address message
|
||||
str x0,[x1]
|
||||
mov x2,x1 // address atom create
|
||||
mov x0,x28 // display address
|
||||
mov x1,x27 // window ident
|
||||
mov x3,#1 // number of protocoles
|
||||
bl XSetWMProtocols
|
||||
cmp x0,#0
|
||||
ble erreurF
|
||||
// authorization of seizures
|
||||
mov x0,x28 // display address
|
||||
mov x1,x27 // window ident
|
||||
ldr x2,qFenetreMask // mask
|
||||
bl XSelectInput
|
||||
cmp x0,#0
|
||||
ble 99f
|
||||
// create Graphic Context
|
||||
mov x0,x28 // display address
|
||||
mov x1,x27 // window ident
|
||||
bl createGC // GC address -> x26
|
||||
cbz x0,erreurF
|
||||
// create Graphic Context 1
|
||||
mov x0,x28 // display address
|
||||
mov x1,x27 // window ident
|
||||
bl createGC1 // GC address -> x25
|
||||
cbz x0,erreurF
|
||||
// Display window
|
||||
mov x1,x27 // ident window
|
||||
mov x0,x28 // Display address
|
||||
bl XMapWindow
|
||||
|
||||
ldr x0,qAdrszMessGoodBye // display text
|
||||
bl displayText
|
||||
|
||||
bl createButton // create button on screen
|
||||
1: // events loop
|
||||
mov x0,x28 // Display address
|
||||
ldr x1,qAdrstEvent // events structure address
|
||||
bl XNextEvent
|
||||
ldr x0,qAdrstEvent // events structure address
|
||||
ldr w0,[x0] // type in 4 first bytes
|
||||
cmp w0,#ClientMessage // message for close window
|
||||
beq 2f // yes -> end
|
||||
cmp w0,#ButtonPress // clic mouse button
|
||||
beq 3f
|
||||
// other events
|
||||
b 1b // and loop
|
||||
2:
|
||||
ldr x0,qAdrstEvent // events structure address
|
||||
ldr x1,[x0,56] // location message code
|
||||
ldr x2,qAdrwmDeleteMessage // equal ?
|
||||
ldr x2,[x2]
|
||||
cmp x1,x2
|
||||
bne 1b // no loop
|
||||
mov x0,0 // end Ok
|
||||
b 100f
|
||||
//TODO: close ??
|
||||
|
||||
3:
|
||||
ldr x0,qAdrstEvent // events structure address
|
||||
bl evtButtonMouse
|
||||
b 1b
|
||||
|
||||
erreurF: // error create window
|
||||
ldr x0,qAdrszMessErrfen
|
||||
bl affichageMess
|
||||
mov x0,1
|
||||
b 100f
|
||||
erreur: // error no server x11 active
|
||||
ldr x0,qAdrszMessErreur
|
||||
bl affichageMess
|
||||
mov x0,1
|
||||
100: // program standard end
|
||||
mov x8,EXIT
|
||||
svc 0
|
||||
qBlanc: .quad 0xF0F0F0F0
|
||||
qAdrqDisplay: .quad qDisplay
|
||||
qAdrqDefScreen: .quad qDefScreen
|
||||
qAdridentWin: .quad identWin
|
||||
qAdrstEvent: .quad stEvent
|
||||
qAdrszMessErrfen: .quad szMessErrfen
|
||||
qAdrszMessErreur: .quad szMessErreur
|
||||
qAdrwmDeleteMessage: .quad wmDeleteMessage
|
||||
qAdrszLibDW: .quad szLibDW
|
||||
qAdrszMessGoodBye: .quad szMessGoodBye
|
||||
qFenetreMask: .quad KeyPressMask|ButtonPressMask|StructureNotifyMask|ExposureMask|EnterWindowMask
|
||||
/******************************************************************/
|
||||
/* create Graphic Context */
|
||||
/******************************************************************/
|
||||
/* x0 contains the Display address */
|
||||
/* x1 contains the ident Window */
|
||||
createGC:
|
||||
stp x20,lr,[sp,-16]! // save registers
|
||||
mov x20,x0 // save display address
|
||||
mov x2,#0
|
||||
mov x3,#0
|
||||
bl XCreateGC
|
||||
cbz x0,99f
|
||||
mov x26,x0 // save GC
|
||||
mov x0,x20 // display address
|
||||
mov x1,x26
|
||||
ldr x2,qRed // code RGB color
|
||||
bl XSetForeground
|
||||
cbz x0,99f
|
||||
mov x0,x26 // return GC
|
||||
b 100f
|
||||
99:
|
||||
ldr x0,qAdrszMessErrGC
|
||||
bl affichageMess
|
||||
mov x0,0
|
||||
100:
|
||||
ldp x20,lr,[sp],16 // restaur 2 registers
|
||||
ret // return to address lr x30
|
||||
qAdrszMessErrGC: .quad szMessErrGC
|
||||
qRed: .quad 0xFF0000
|
||||
qGreen: .quad 0xFF00
|
||||
qBlue: .quad 0xFF
|
||||
qBlack: .quad 0x0
|
||||
/******************************************************************/
|
||||
/* create Graphic Context 1 */
|
||||
/******************************************************************/
|
||||
/* x0 contains the Display address */
|
||||
/* x1 contains the ident Window */
|
||||
createGC1:
|
||||
stp x20,lr,[sp,-16]! // save registers
|
||||
mov x20,x0 // save display address
|
||||
mov x2,#0
|
||||
mov x3,#0
|
||||
bl XCreateGC
|
||||
cbz x0,99f
|
||||
mov x25,x0 // save GC
|
||||
mov x0,x20 // display address
|
||||
mov x1,x25
|
||||
ldr x2,qBlanc // code RGB color
|
||||
bl XSetForeground
|
||||
cbz x0,99f
|
||||
mov x0,x25 // return GC1
|
||||
b 100f
|
||||
99:
|
||||
ldr x0,qAdrszMessErrGC
|
||||
bl affichageMess
|
||||
mov x0,0
|
||||
100:
|
||||
ldp x20,lr,[sp],16 // restaur 2 registers
|
||||
ret // return to address lr x30
|
||||
/******************************************************************/
|
||||
/* create button on screen */
|
||||
/******************************************************************/
|
||||
createButton:
|
||||
stp x21,lr,[sp,-16]! // save registers
|
||||
// create button window
|
||||
mov x0,x28 // display address
|
||||
mov x1,x27 // ident window
|
||||
mov x2,80 // X position
|
||||
mov x3,150 // Y position
|
||||
mov x4,60 // weight
|
||||
mov x5,30 // height
|
||||
mov x6,2 // border
|
||||
ldr x7,qBlack
|
||||
ldr x8,qBlanc // background
|
||||
str x8,[sp,-16]! // argument fot stack
|
||||
bl XCreateSimpleWindow
|
||||
add sp,sp,16 // for stack alignement
|
||||
cmp x0,#0 // error ?
|
||||
beq 99f
|
||||
ldr x21,qAdrstButton
|
||||
str x0,[x21,BT_adresse] // save ident button
|
||||
str xzr,[x21,BT_cbdata] // for next use
|
||||
|
||||
// autorisation des saisies
|
||||
mov x0,x28 // display address
|
||||
ldr x1,[x21,BT_adresse] // button address
|
||||
ldr x2,qButtonMask // mask
|
||||
bl XSelectInput
|
||||
// create Graphic Contexte of button
|
||||
mov x0,x28 // display address
|
||||
ldr x1,[x21,BT_adresse] // button ident
|
||||
mov x2,#0
|
||||
mov x3,#0
|
||||
bl XCreateGC
|
||||
cmp x0,#0
|
||||
beq 98f
|
||||
str x0,[x21,BT_GC] // store GC
|
||||
// display button
|
||||
mov x0,x28 // display address
|
||||
ldr x1,[x21,BT_adresse] // button address
|
||||
bl XMapWindow
|
||||
ldr x5,qAdrszTextButton // text address
|
||||
mov x6,0 // text size
|
||||
1: // loop compute text size
|
||||
ldrb w10,[x5,x6] // load text byte
|
||||
cbz x10,2f // zero -> end
|
||||
add x6,x6,1 // increment size
|
||||
b 1b // and loop
|
||||
2:
|
||||
mov x0,x28 // display address
|
||||
ldr x1,[x21,BT_adresse] // button address
|
||||
ldr x2,[x21,BT_GC] // GC address
|
||||
mov x3,#8 // position x
|
||||
mov x4,#15 // position y
|
||||
bl XDrawString
|
||||
|
||||
b 100f
|
||||
98:
|
||||
ldr x0,qAdrszMessErrButtonGC
|
||||
bl affichageMess
|
||||
b 100f
|
||||
99:
|
||||
ldr x0,qAdrszMessErrButton
|
||||
bl affichageMess
|
||||
100:
|
||||
ldp x1,lr,[sp],16 // restaur 2 registers
|
||||
ret // return to address lr x30
|
||||
qAdrstButton: .quad stButton
|
||||
qAdrszTextButton: .quad szTextButton
|
||||
qAdrszMessErrButtonGC: .quad szMessErrButtonGC
|
||||
qAdrszMessErrButton: .quad szMessErrButton
|
||||
qButtonMask: .quad ButtonPressMask|ButtonReleaseMask|StructureNotifyMask|ExposureMask|LeaveWindowMask|EnterWindowMask
|
||||
|
||||
/******************************************************************/
|
||||
/* display text on screen */
|
||||
/******************************************************************/
|
||||
/* x0 contains the address of text */
|
||||
displayText:
|
||||
stp x1,lr,[sp,-16]! // save registers
|
||||
mov x5,x0 // text address
|
||||
mov x6,0 // text size
|
||||
1: // loop compute text size
|
||||
ldrb w10,[x5,x6] // load text byte
|
||||
cbz x10,2f // zero -> end
|
||||
add x6,x6,1 // increment size
|
||||
b 1b // and loop
|
||||
2:
|
||||
mov x0,x28 // display address
|
||||
mov x1,x27 // ident window
|
||||
mov x2,x26 // GC address
|
||||
mov x3,#50 // position x
|
||||
mov x4,#100 // position y
|
||||
bl XDrawString
|
||||
100:
|
||||
ldp x1,lr,[sp],16 // restaur 2 registers
|
||||
ret // return to address lr x30
|
||||
/******************************************************************/
|
||||
/* events clic mouse button */
|
||||
/******************************************************************/
|
||||
/* x0 contains the address of event */
|
||||
evtButtonMouse:
|
||||
stp x1,lr,[sp,-16]! // save registers
|
||||
ldr x10,[x0,XBE_window] // windows of event
|
||||
ldr x11,qAdrstButton // load button ident
|
||||
ldr x12,[x11,BT_adresse]
|
||||
cmp x10,x12 // equal ?
|
||||
bne 100f // no
|
||||
bl eraseText // yes erase the text
|
||||
ldr x10,qAdrqCounterClic // load counter clic
|
||||
ldr x0,[x10]
|
||||
add x0,x0,1 // and increment
|
||||
str x0,[x10]
|
||||
ldr x1,qAdrsZoneConv // and decimal conversion
|
||||
bl conversion10
|
||||
ldr x0,qAdrszMessResult
|
||||
ldr x1,qAdrsZoneConv
|
||||
bl strInsertAtCharInc // and insert result at @ character
|
||||
bl displayText // and display new text
|
||||
|
||||
100:
|
||||
ldp x1,lr,[sp],16 // restaur 2 registers
|
||||
ret // return to address lr x30
|
||||
qAdrqCounterClic: .quad qCounterClic
|
||||
qAdrsZoneConv: .quad sZoneConv
|
||||
qAdrszMessResult: .quad szMessResult
|
||||
/******************************************************************/
|
||||
/* erase text */
|
||||
/******************************************************************/
|
||||
eraseText:
|
||||
stp x1,lr,[sp,-16]! // save registers
|
||||
mov x0,x28 // display address
|
||||
mov x1,x27 // ident window
|
||||
mov x2,x25 // GC1 address
|
||||
mov x3,20 // position x
|
||||
mov x4,70 // position y
|
||||
mov x5,400
|
||||
mov x6,50
|
||||
bl XFillRectangle
|
||||
100:
|
||||
ldp x1,lr,[sp],16 // restaur 2 registers
|
||||
ret // return to address lr x30
|
||||
/********************************************************/
|
||||
/* File Include fonctions */
|
||||
/********************************************************/
|
||||
/* for this file see task include a file in language AArch64 assembly */
|
||||
.include "../includeARM64.inc"
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
∇ WindowedApplication
|
||||
|
||||
⍝ define a form with a label and a button
|
||||
'Frm'⎕WC'Form' 'Clicks' (40 35) (10 15)
|
||||
'Lbl'Frm.⎕WC'Label' 'There have been no clicks yet.' (10 10)
|
||||
'Btn'Frm.⎕WC'Button' 'Click Me' (35 35) (25 25) ('Event' 'Select' 'Click')
|
||||
|
||||
⍝ callback function
|
||||
Frm.Clicks←0
|
||||
Frm.Click←{
|
||||
Clicks+←1
|
||||
p0←(1+Clicks=1)⊃'have' 'has'
|
||||
p1←(1+Clicks=1)⊃'clicks' 'click'
|
||||
Lbl.Value←'There ',p0,' been ',(⍕Clicks),' ',p1,'.'
|
||||
}
|
||||
|
||||
∇
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
#!/usr/local/bin/apl --script --OFF
|
||||
|
||||
⍝ Some GTK API consts for readability
|
||||
⍝ event poll type for X ← ⎕gtk
|
||||
Blocking ← 1
|
||||
Nonblocking ← 2
|
||||
|
||||
∇Z←get_NAME_and_POSITION;GUI_path;CSS_path;Handle
|
||||
GUI_path ← '/home/me/GNUAPL/workspaces/my-application.glade'
|
||||
CSS_path ← '/home/me/GNUAPL/workspaces/my-application.css'
|
||||
Handle ← CSS_path ⎕GTK GUI_path
|
||||
|
||||
⍝H_ID ← Handle, 'entry1' ⍝ Position field
|
||||
⍝'<enter name>' ⎕gtk[H_ID] "set_text" ⍝ pre-fill entry
|
||||
|
||||
⊣⎕gtk Blocking ⍝ Wait for click event
|
||||
|
||||
Z ← ⊂1↓⎕gtk[Handle, 'entry1'] "get_text"
|
||||
Z ← Z,⊂1↓⎕gtk[Handle, 'entry2'] "get_text"
|
||||
⊣Handle ⎕gtk 0
|
||||
∇
|
||||
|
||||
⍝ Launch GUI application
|
||||
get_NAME_and_POSITION
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
/* general button */
|
||||
.BUTTON { color: #F00; background: #4F4; }
|
||||
|
||||
/* the OK button */
|
||||
#OK-button { color: #A22; background: #FFF; }
|
||||
|
|
@ -0,0 +1,87 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Generated with glade 3.22.1 -->
|
||||
<interface>
|
||||
<requires lib="gtk+" version="3.20"/>
|
||||
<object class="GtkWindow" id="window1">
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkGrid" id="grid1">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="row_homogeneous">True</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="label1">
|
||||
<property name="name">lblEmployee</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label" translatable="yes">Employee</property>
|
||||
<property name="wrap">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="top_attach">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="label2">
|
||||
<property name="name">lblPosition</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label" translatable="yes">Position</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="top_attach">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkEntry" id="entry1">
|
||||
<property name="name">entryEmployee</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="valign">center</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">3</property>
|
||||
<property name="top_attach">1</property>
|
||||
<property name="width">6</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkEntry" id="entry2">
|
||||
<property name="name">entryPosition</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="valign">center</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">3</property>
|
||||
<property name="top_attach">2</property>
|
||||
<property name="width">6</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="btnOK">
|
||||
<property name="label" translatable="yes">button</property>
|
||||
<property name="name">OK-button</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<signal name="clicked" handler="clicked" swapped="no"/>
|
||||
<style>
|
||||
<class name="BUTTON"/>
|
||||
</style>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">4</property>
|
||||
<property name="top_attach">4</property>
|
||||
<property name="width">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</interface>
|
||||
|
|
@ -0,0 +1,67 @@
|
|||
with Gdk.Event; use Gdk.Event;
|
||||
with Gtk.Button; use Gtk.Button;
|
||||
with Gtk.Label; use Gtk.Label;
|
||||
with Gtk.Window; use Gtk.Window;
|
||||
with Gtk.Widget; use Gtk.Widget;
|
||||
with Gtk.Table; use Gtk.Table;
|
||||
|
||||
with Gtk.Handlers;
|
||||
with Gtk.Main;
|
||||
|
||||
procedure Simple_Windowed_Application is
|
||||
Window : Gtk_Window;
|
||||
Grid : Gtk_Table;
|
||||
Button : Gtk_Button;
|
||||
Label : Gtk_Label;
|
||||
Count : Natural := 0;
|
||||
|
||||
package Handlers is new Gtk.Handlers.Callback (Gtk_Widget_Record);
|
||||
package Return_Handlers is
|
||||
new Gtk.Handlers.Return_Callback (Gtk_Widget_Record, Boolean);
|
||||
|
||||
function Delete_Event (Widget : access Gtk_Widget_Record'Class)
|
||||
return Boolean is
|
||||
begin
|
||||
return False;
|
||||
end Delete_Event;
|
||||
|
||||
procedure Destroy (Widget : access Gtk_Widget_Record'Class) is
|
||||
begin
|
||||
Gtk.Main.Main_Quit;
|
||||
end Destroy;
|
||||
|
||||
procedure Clicked (Widget : access Gtk_Widget_Record'Class) is
|
||||
begin
|
||||
Count := Count + 1;
|
||||
Set_Text (Label, "The button clicks:" & Natural'Image (Count));
|
||||
end Clicked;
|
||||
|
||||
begin
|
||||
Gtk.Main.Init;
|
||||
Gtk.Window.Gtk_New (Window);
|
||||
Gtk_New (Grid, 1, 2, False);
|
||||
Add (Window, Grid);
|
||||
Gtk_New (Label, "There have been no clicks yet");
|
||||
Attach (Grid, Label, 0, 1, 0, 1);
|
||||
Gtk_New (Button, "Click me");
|
||||
Attach (Grid, Button, 0, 1, 1, 2);
|
||||
Return_Handlers.Connect
|
||||
( Window,
|
||||
"delete_event",
|
||||
Return_Handlers.To_Marshaller (Delete_Event'Access)
|
||||
);
|
||||
Handlers.Connect
|
||||
( Window,
|
||||
"destroy",
|
||||
Handlers.To_Marshaller (Destroy'Access)
|
||||
);
|
||||
Handlers.Connect
|
||||
( Button,
|
||||
"clicked",
|
||||
Handlers.To_Marshaller (Clicked'Access)
|
||||
);
|
||||
Show_All (Grid);
|
||||
Show (Window);
|
||||
|
||||
Gtk.Main.Main;
|
||||
end Simple_Windowed_Application;
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
set counter to 0
|
||||
|
||||
set dialogReply to display dialog ¬
|
||||
"There have been no clicks yet" buttons {"Click Me", "Quit"} ¬
|
||||
with title "Simple Window Application"
|
||||
set theAnswer to button returned of the result
|
||||
if theAnswer is "Quit" then quit
|
||||
|
||||
repeat
|
||||
set counter to counter + 1
|
||||
set dialogReply to display dialog counter buttons {"Click Me", "Quit"} ¬
|
||||
with title "Simple Window Application"
|
||||
set theAnswer to button returned of the result
|
||||
if theAnswer is "Quit" then exit repeat
|
||||
end repeat
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
; Create simple windowed application
|
||||
Gui, Add, Text, vTextCtl, There have been no clicks yet ; add a Text-Control
|
||||
Gui, Add, Button, gButtonClick xm, click me ; add a Button-Control
|
||||
Gui, Show, , Simple windowed application ; show the Window
|
||||
Return ; end of the auto-execute section
|
||||
|
||||
ButtonClick: ; the subroutine executed each time the Button-Control is clicked
|
||||
count++ ; increment the click-counting var
|
||||
GuiControl, , TextCtl, %count% ; update the Text-Control with the click-counting var
|
||||
Return ; end of the subroutine
|
||||
|
||||
GuiClose: ; the subroutine executed when the Window is closed
|
||||
ExitApp ; exit this process
|
||||
Return
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
#include <ButtonConstants.au3>
|
||||
#include <GUIConstantsEx.au3>
|
||||
#include <StaticConstants.au3>
|
||||
#include <WindowsConstants.au3>
|
||||
#Region ### START Koda GUI section ###
|
||||
Local $GUI = GUICreate("Clicks", 280, 50, (@DesktopWidth - 280) / 2, (@DesktopHeight - 50) / 2)
|
||||
Local $lblClicks = GUICtrlCreateLabel("There have been no clicks yet", 0, 0, 278, 20, $SS_CENTER)
|
||||
Local $btnClicks = GUICtrlCreateButton("CLICK ME", 104, 25, 75, 25)
|
||||
GUISetState(@SW_SHOW)
|
||||
#EndRegion ### END Koda GUI section ###
|
||||
|
||||
Local $counter = 0
|
||||
|
||||
While 1
|
||||
$nMsg = GUIGetMsg()
|
||||
Switch $nMsg
|
||||
Case $GUI_EVENT_CLOSE
|
||||
Exit
|
||||
|
||||
Case $btnClicks
|
||||
$counter += 1
|
||||
GUICtrlSetData($lblClicks, "Times clicked: " & $counter)
|
||||
EndSwitch
|
||||
WEnd
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
#Region Project Attributes
|
||||
#MainFormWidth: 593
|
||||
#MainFormHeight: 179
|
||||
#End Region
|
||||
|
||||
Sub Process_Globals
|
||||
Private fx As JFX
|
||||
Private MainForm As Form
|
||||
Private btnClickMe As Button
|
||||
Private lblClickCounter As Label
|
||||
Private nClicks As Int = 0
|
||||
Private aPlurals() As Object = Array As Object(Array As String("has","click"),Array As String("have","clicks"))
|
||||
End Sub
|
||||
|
||||
Sub AppStart (Form1 As Form, Args() As String)
|
||||
MainForm = Form1
|
||||
MainForm.RootPane.LoadLayout("Layout1") 'Load the layout file.
|
||||
MainForm.Show
|
||||
End Sub
|
||||
|
||||
Sub btnClickMe_Action
|
||||
nClicks = nClicks + 1
|
||||
Dim aPlural() As Object = aPlurals(IIF(nClicks=1,0,1))
|
||||
lblClickCounter.Text = "There " & aPlural(0) & " been " & (nClicks) & " " & aPlural(1) & " so far."
|
||||
End Sub
|
||||
|
||||
Sub IIF(test As Boolean, trueVal As Object, falseVal As Object) As Object
|
||||
If test Then
|
||||
Return trueVal
|
||||
Else
|
||||
Return falseVal
|
||||
End If
|
||||
End Sub
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<?import javafx.scene.text.*?>
|
||||
<?import java.lang.*?>
|
||||
<?import java.util.*?>
|
||||
<?import javafx.collections.*?>
|
||||
<?import javafx.scene.control.*?>
|
||||
<?import javafx.scene.image.*?>
|
||||
<?import javafx.scene.layout.*?>
|
||||
<?import javafx.scene.paint.*?>
|
||||
<?import javafx.scene.web.*?>
|
||||
|
||||
|
||||
<AnchorPane id="paneMain" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="179.0" prefWidth="593.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
|
||||
<children>
|
||||
<Button id="btnClickMe" layoutX="254.0" layoutY="90.0" mnemonicParsing="false" text="Click Me">
|
||||
<font>
|
||||
<Font size="20.0" />
|
||||
</font>
|
||||
</Button>
|
||||
<Label id="lblClickCounter" layoutX="162.0" layoutY="31.0" text="There have been no clicks as yet.">
|
||||
<font>
|
||||
<Font size="20.0" />
|
||||
</font>
|
||||
</Label>
|
||||
</children>
|
||||
</AnchorPane>
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
INSTALL @lib$+"WINLIB2"
|
||||
INSTALL @lib$+"WINLIB5"
|
||||
|
||||
window% = FN_newdialog("Rosetta Code", 100, 100, 120, 52, 8, 1000)
|
||||
PROC_static(window%, "There have been no clicks yet", 100, 10, 10, 100, 14, 0)
|
||||
PROC_pushbutton(window%, "Click me", FN_setproc(PROCclick), 40, 30, 40, 16, 0)
|
||||
PROC_showdialog(window%)
|
||||
|
||||
REPEAT
|
||||
WAIT 1
|
||||
UNTIL !window% = 0
|
||||
QUIT
|
||||
|
||||
DEF PROCclick
|
||||
PRIVATE clicks%
|
||||
clicks% += 1
|
||||
SYS "SetDlgItemText", !window%, 100, "Number of clicks = " + STR$(clicks%)
|
||||
ENDPROC
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
OPTION GUI TRUE
|
||||
PRAGMA GUI gtk3
|
||||
|
||||
gui = GUIDEFINE(" \
|
||||
{ type=WINDOW name=window callback=delete-event title=\"Rosetta Code\" width-request=300 } \
|
||||
{ type=BOX name=box parent=window orientation=GTK_ORIENTATION_VERTICAL } \
|
||||
{ type=LABEL name=label parent=box height-request=50 label=\"There have been no clicks yet\" } \
|
||||
{ type=BUTTON name=button parent=box callback=clicked label=\"Click Me\" }")
|
||||
|
||||
WHILE TRUE
|
||||
SELECT GUIEVENT$(gui)
|
||||
CASE "window"
|
||||
BREAK
|
||||
CASE "button"
|
||||
INCR clicked
|
||||
CALL GUISET(gui, "label", "label", "Button clicks: " & STR$(clicked))
|
||||
ENDSELECT
|
||||
WEND
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
beads 1 program simple title:'Simple windowed application' // written by CodingFiend
|
||||
|
||||
var g : record // global tracked mutable state
|
||||
label : str
|
||||
nclicks : num
|
||||
|
||||
========================
|
||||
calc main_init // our one time initialization for the program
|
||||
g.label = "There have been no clicks yet"
|
||||
g.nclicks = 0
|
||||
|
||||
========================
|
||||
// In beads you subdivide the screen by slicing it horizontally or vertically
|
||||
// so as to gradually break it down into pieces, some of which are drawn
|
||||
horz slice main_draw // our main drawing function
|
||||
under
|
||||
draw_rect(fill:DARK_SLATE_GRAY) // fill entire screen
|
||||
|
||||
// slice the screen into 3 horz pieces, leaving 200 pt for our body
|
||||
skip 10 al
|
||||
add 200 pt main_draw2
|
||||
skip 10 al
|
||||
|
||||
vert slice main_draw2 // now take the middle horz slice, and slice it vertically
|
||||
skip 10 al
|
||||
add 50 pt draw_click_count
|
||||
skip 2 al
|
||||
add 80 px draw_button
|
||||
skip 10 al
|
||||
|
||||
========================
|
||||
draw draw_click_count
|
||||
draw_str(g.label, size:0.7, color:WHITE)
|
||||
|
||||
========================
|
||||
draw draw_button
|
||||
draw_rect(fill:ORANGE, corner:20 pt, thick:2 pt, color:BROWN)
|
||||
draw_str("Click me", size:40, indent:8 pt, color:BLACK)
|
||||
-------------------
|
||||
track EV_TAP
|
||||
// update our click count
|
||||
inc g.nclicks
|
||||
g.label = to_str(g.nclicks)
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
#ifndef CLICKCOUNTER_H
|
||||
#define CLICKCOUNTER_H
|
||||
|
||||
#include <QWidget>
|
||||
class QLabel ;
|
||||
class QPushButton ;
|
||||
class QVBoxLayout ;
|
||||
|
||||
class Counter : public QWidget {
|
||||
Q_OBJECT
|
||||
public :
|
||||
Counter( QWidget * parent = 0 ) ;
|
||||
private :
|
||||
int number ;
|
||||
QLabel *countLabel ;
|
||||
QPushButton *clicker ;
|
||||
QVBoxLayout *myLayout ;
|
||||
private slots :
|
||||
void countClicks( ) ;
|
||||
} ;
|
||||
#endif
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
#include <QPushButton>
|
||||
#include <QLabel>
|
||||
#include <QVBoxLayout>
|
||||
#include "clickcounter.h"
|
||||
|
||||
Counter::Counter( QWidget * parent ) : QWidget( parent ) {
|
||||
number = 0 ;
|
||||
countLabel = new QLabel( "There have been no clicks yet!" ) ;
|
||||
clicker = new QPushButton( "click me" ) ;
|
||||
connect ( clicker , SIGNAL( clicked( ) ) , this , SLOT( countClicks( ) ) ) ;
|
||||
myLayout = new QVBoxLayout ;
|
||||
myLayout->addWidget( countLabel ) ;
|
||||
myLayout->addWidget( clicker ) ;
|
||||
setLayout( myLayout ) ;
|
||||
}
|
||||
|
||||
void Counter::countClicks( ) {
|
||||
number++ ;
|
||||
countLabel->setText( QString( "The button has been clicked %1 times!").arg( number ) ) ;
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
#include <QApplication>
|
||||
#include "clickcounter.h"
|
||||
|
||||
int main( int argc , char *argv[ ] ) {
|
||||
QApplication app( argc , argv ) ;
|
||||
Counter counter ;
|
||||
counter.show( ) ;
|
||||
return app.exec( ) ;
|
||||
}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
using System.Windows.Forms;
|
||||
|
||||
class RosettaForm : Form
|
||||
{
|
||||
RosettaForm()
|
||||
{
|
||||
var clickCount = 0;
|
||||
|
||||
var label = new Label();
|
||||
label.Text = "There have been no clicks yet.";
|
||||
label.Dock = DockStyle.Top;
|
||||
Controls.Add(label);
|
||||
|
||||
var button = new Button();
|
||||
button.Text = "Click Me";
|
||||
button.Dock = DockStyle.Bottom;
|
||||
button.Click += delegate
|
||||
{
|
||||
clickCount++;
|
||||
label.Text = "Number of clicks: " + clickCount + ".";
|
||||
};
|
||||
Controls.Add(button);
|
||||
}
|
||||
|
||||
static void Main()
|
||||
{
|
||||
Application.Run(new RosettaForm());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
#include <stdio.h>
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
const gchar *clickme = "Click Me";
|
||||
guint counter = 0;
|
||||
|
||||
#define MAXLEN 64
|
||||
void clickedme(GtkButton *o, gpointer d)
|
||||
{
|
||||
GtkLabel *l = GTK_LABEL(d);
|
||||
char nt[MAXLEN];
|
||||
|
||||
counter++;
|
||||
snprintf(nt, MAXLEN, "You clicked me %d times", counter);
|
||||
gtk_label_set_text(l, nt);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
GtkWindow *win;
|
||||
GtkButton *button;
|
||||
GtkLabel *label;
|
||||
GtkVBox *vbox;
|
||||
|
||||
gtk_init(&argc, &argv);
|
||||
win = (GtkWindow*)gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_title(win, clickme);
|
||||
button = (GtkButton*)gtk_button_new_with_label(clickme);
|
||||
label = (GtkLabel*)gtk_label_new("There have been no clicks yet");
|
||||
gtk_label_set_single_line_mode(label, TRUE);
|
||||
vbox = (GtkVBox*)gtk_vbox_new(TRUE, 1);
|
||||
gtk_container_add(GTK_CONTAINER(vbox), GTK_WIDGET(label));
|
||||
gtk_container_add(GTK_CONTAINER(vbox), GTK_WIDGET(button));
|
||||
gtk_container_add(GTK_CONTAINER(win), GTK_WIDGET(vbox));
|
||||
g_signal_connect(G_OBJECT(win), "delete-event", (GCallback)gtk_main_quit, NULL);
|
||||
g_signal_connect(G_OBJECT(button), "clicked", (GCallback)clickedme, label);
|
||||
gtk_widget_show_all(GTK_WIDGET(win));
|
||||
gtk_main();
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
(ns counter-window
|
||||
(:import (javax.swing JFrame JLabel JButton)))
|
||||
|
||||
(defmacro on-action [component event & body]
|
||||
`(. ~component addActionListener
|
||||
(proxy [java.awt.event.ActionListener] []
|
||||
(actionPerformed [~event] ~@body))))
|
||||
|
||||
(defn counter-app []
|
||||
(let [counter (atom 0)
|
||||
label (JLabel. "There have been no clicks yet")
|
||||
button (doto (JButton. "Click me!")
|
||||
(on-action evnt
|
||||
(.setText label
|
||||
(str "Counter: " (swap! counter inc)))))
|
||||
panel (doto (JPanel.)
|
||||
(.setOpaque true)
|
||||
(.add label)
|
||||
(.add button))]
|
||||
(doto (JFrame. "Counter App")
|
||||
(.setContentPane panel)
|
||||
(.setSize 300 100)
|
||||
(.setDefaultCloseOperation JFrame/EXIT_ON_CLOSE)
|
||||
(.setVisible true))))
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
(defpackage #:rcswa
|
||||
(:use #:clim #:clim-lisp))
|
||||
(in-package #:rcswa)
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
(define-application-frame simple-windowed-application ()
|
||||
((clicks :initform 0
|
||||
:accessor clicks-of))
|
||||
(:menu-bar t)
|
||||
(:pane
|
||||
(make-pane 'application-pane
|
||||
:width '(40 :character)
|
||||
:height '(3 :character)
|
||||
:display-time :command-loop
|
||||
:display-function
|
||||
(lambda (pane stream)
|
||||
(declare (ignore pane))
|
||||
(format stream "~[There have been no clicks yet.~
|
||||
~:;~:*There ~[have~;has~:;have~]~:* been ~R click~:P.~]"
|
||||
(clicks-of *application-frame*))))))
|
||||
|
||||
(define-simple-windowed-application-command (com-click-me :menu t)
|
||||
()
|
||||
(incf (clicks-of *application-frame*)))
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
(define-application-frame simple-windowed-application ()
|
||||
((clicks :initform 0
|
||||
:accessor clicks-of))
|
||||
(:panes
|
||||
(the-label :application
|
||||
:width '(40 :character)
|
||||
:height '(3 :character)
|
||||
:display-time t
|
||||
:display-function
|
||||
(lambda (pane stream)
|
||||
(declare (ignore pane))
|
||||
(format stream "~[There have been no clicks yet.~
|
||||
~:;~:*There ~[have~;has~:;have~]~:* been ~R click~:P.~]"
|
||||
(clicks-of *application-frame*))))
|
||||
(the-button :push-button
|
||||
:label "Click Me"
|
||||
:activate-callback
|
||||
(lambda (button)
|
||||
(declare (ignore button))
|
||||
(incf (clicks-of *application-frame*))
|
||||
(redisplay-frame-pane *application-frame*
|
||||
(find-pane-named *application-frame* 'the-label)
|
||||
:force-p t))))
|
||||
(:layouts (default
|
||||
(vertically (:equalize-width nil :align-x :center)
|
||||
the-label
|
||||
(spacing (:thickness 10) the-button)))))
|
||||
|
|
@ -0,0 +1 @@
|
|||
(run-frame-top-level (make-application-frame 'simple-windowed-application))
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
module winapp ;
|
||||
import dfl.all ;
|
||||
import std.string ;
|
||||
|
||||
class MainForm: Form {
|
||||
Label label ;
|
||||
Button button ;
|
||||
this() {
|
||||
width = 240 ;
|
||||
with(label = new Label) {
|
||||
text = "There have been no clicks yet" ;
|
||||
dock = DockStyle.TOP ;
|
||||
parent = this ;
|
||||
}
|
||||
with(button = new Button) {
|
||||
dock = DockStyle.BOTTOM ;
|
||||
text = "Click Me" ;
|
||||
parent = this ;
|
||||
click ~= &onClickButton ;
|
||||
}
|
||||
height = label.height + button.height + 36 ;
|
||||
}
|
||||
private void onClickButton(Object sender, EventArgs ea) {
|
||||
static int count = 0 ;
|
||||
label.text = "You had been clicked me " ~ std.string.toString(++count) ~ " times." ;
|
||||
}
|
||||
}
|
||||
|
||||
void main() {
|
||||
Application.run(new MainForm);
|
||||
}
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
module SimpleWindow;
|
||||
import tango.text.convert.Integer;
|
||||
import tango.core.Thread; // For Thread.yield
|
||||
|
||||
import xf.hybrid.Hybrid; //For widgets and general API
|
||||
import xf.hybrid.backend.GL; // For OpenGL Renderer
|
||||
|
||||
void main() {
|
||||
//load config file
|
||||
scope cfg = loadHybridConfig(`./SimpleWindow.cfg`);
|
||||
scope renderer = new Renderer;
|
||||
auto counter = 0;
|
||||
|
||||
bool programRunning = true;
|
||||
while (programRunning) {
|
||||
// Tell Hybrid what config to use
|
||||
gui.begin(cfg);
|
||||
// Exit program if user clicks the Close button
|
||||
if (gui().getProperty!(bool)("main.frame.closeClicked")) {
|
||||
programRunning = false;
|
||||
}
|
||||
// Update text on the label
|
||||
if (counter != 0)
|
||||
Label("main.label").text = toString(counter);
|
||||
// Increment counter if the button has been clicked
|
||||
if (Button("main.button").clicked) {
|
||||
counter++;
|
||||
}
|
||||
// Finalize. Prepare to render
|
||||
gui.end();
|
||||
// Render window using OpenGL Renderer
|
||||
gui.render(renderer);
|
||||
|
||||
Thread.yield();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,87 @@
|
|||
-- begin file --
|
||||
|
||||
Program SingleWinApp ;
|
||||
|
||||
// This is the equivalent of the C #include
|
||||
Uses Forms, Windows, Messages, Classes, Graphics, Controls, StdCtrls ;
|
||||
|
||||
|
||||
type
|
||||
|
||||
// The only reason for this declaration is to allow the connection of the
|
||||
// on click method to the forms button object. This class declaration adds
|
||||
// a procedure.
|
||||
|
||||
TMainForm class(tform)
|
||||
Procedure AddClicks(sender : tObject);
|
||||
end;
|
||||
|
||||
|
||||
// Use these globals.
|
||||
var
|
||||
|
||||
MainForm : tForm ;
|
||||
aLabel : tLabel ;
|
||||
aButton : tButton ;
|
||||
i : integer = 0 ;
|
||||
|
||||
|
||||
// This is the Method call that we connect to the button object
|
||||
// to start counting the clicks.
|
||||
Procedure tMainForm.AddClicks(sender :tObject)
|
||||
begin
|
||||
inc(i);
|
||||
aLabel.Caption := IntToStr(i) + ' Clicks since startup' ;
|
||||
end;
|
||||
|
||||
|
||||
Begin
|
||||
// Do all the behind the scenes stuff that sets up the Windows environment
|
||||
Application.Initialize ;
|
||||
|
||||
// Create the form
|
||||
|
||||
// Forms can either be created with an owner, like I have done here, or with
|
||||
// the owner set to Nil. In pascal (all versions of Borland) '''NIL''' is a
|
||||
// reserved, (the equivalent of '''NULL''' in Ansi C) word and un-sets any pointer
|
||||
// variable. Setting the owner to the application object will ensure that the form is
|
||||
// freed by the application object when the application shuts down. If I had set
|
||||
// the owner to NIL then i would have had to make sure I freed the form explicitly
|
||||
// or it would have been orphaned, thus creating a memory leak.
|
||||
|
||||
// I must direct your attention to the CreateNew constructor. This is
|
||||
// a non standard usage. Normally the constructor Create() will call this
|
||||
// as part of the initialization routine for the form. Normally as you drop
|
||||
// various components on a form in deign mode, a DFM file is created with
|
||||
// all the various initial states of the controls. This bypasses the
|
||||
// DFM file altogether although all components AND the form are created
|
||||
// with default values. (see the Delphi help file).
|
||||
|
||||
MainForm := tMainForm.CreateNew(Application);
|
||||
MainForm.Parent := Application ;
|
||||
MainForm.Position := poScreenCenter ;
|
||||
MainForm.Caption := 'Single Window Application' ;
|
||||
|
||||
// Create the Label, set its owner as MaiaForm
|
||||
aLabel := tLabel.Create(mainForm);
|
||||
aLabel.Parent := MainForm;
|
||||
aLabel.Caption := IntToStr(i) + ' Clicks since startup' ;
|
||||
aLabel.Left := 20 ;
|
||||
aLabel.Top := MainForm.ClientRect.Bottom div 2 ;
|
||||
|
||||
// Create the button, set its owner to MainForm
|
||||
aButton := tButton.Create(MainForm);
|
||||
aButton.Parent := MainForm ;
|
||||
aButton.Caption := 'Click Me!';
|
||||
aButton.Left := (MainForm.ClientRect.Right div 2)-(aButton.Width div 2 );
|
||||
aButton.Top := MainForm.ClientRect.Bottom - aButton.Height - 10 ;
|
||||
aButton.OnClick := AddClicks ;
|
||||
|
||||
// Show the main form, Modaly. The ONLY reason to do this is because in this
|
||||
// demonstration if you only call the SHOW method, the form will appear and
|
||||
// disappear in a split second.
|
||||
MainForm.ShowModal ;
|
||||
|
||||
Application.Run ;
|
||||
|
||||
end. // Program
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
when (currentVat.morphInto("awt")) -> {
|
||||
var clicks := 0
|
||||
def w := <swing:makeJFrame>("Rosetta Code 'Simple Windowed Application'")
|
||||
w.setContentPane(JPanel`
|
||||
${def l := <swing:makeJLabel>("There have been no clicks yet.")} $\
|
||||
${def b := <swing:makeJButton>("Click Me")}
|
||||
`)
|
||||
b.addActionListener(def _ {
|
||||
to actionPerformed(_) {
|
||||
clicks += 1
|
||||
l.setText(`Number of clicks: $clicks`)
|
||||
}
|
||||
})
|
||||
w.pack()
|
||||
w.show()
|
||||
}
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
(define (ui-add-button text) ;; helper
|
||||
(define b (ui-create-element "button" '((type "button"))))
|
||||
(ui-set-html b text)
|
||||
(ui-add b))
|
||||
|
||||
(define (panel )
|
||||
(ui-clear)
|
||||
(define *clicks* 0)
|
||||
(define text (ui-create-element "span" '((style "font-weight:bold"))))
|
||||
(ui-add text)
|
||||
(ui-set-html text "No click yet")
|
||||
|
||||
(define btn (ui-add-button "Click-me"))
|
||||
(define (count-clicks elem)
|
||||
(++ *clicks*)
|
||||
(ui-set-html text *clicks*))
|
||||
(ui-on-click btn count-clicks)
|
||||
|
||||
(stdout-hide #t)
|
||||
(stdin-hide #t)) ;; end panel definition
|
||||
|
||||
(panel)
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
import forms;
|
||||
import extensions;
|
||||
|
||||
public class MainWindow : SDIDialog
|
||||
{
|
||||
Label lblClicks;
|
||||
Button btmClickMe;
|
||||
|
||||
//Store how much clicks the user doed
|
||||
int clicksCount;
|
||||
|
||||
constructor new()
|
||||
<= new()
|
||||
{
|
||||
lblClicks := Label.new();
|
||||
btmClickMe := Button.new();
|
||||
|
||||
clicksCount := 0;
|
||||
self
|
||||
.appendControl(lblClicks)
|
||||
.appendControl(btmClickMe);
|
||||
|
||||
self.Caption := "Rosseta Code";
|
||||
self.setRegion(100, 100, 160, 80);
|
||||
|
||||
lblClicks.Caption := "Clicks: 0";
|
||||
lblClicks.setRegion(10, 2, 160, 20);
|
||||
|
||||
btmClickMe.Caption := "Click me";
|
||||
btmClickMe.setRegion(7, 20, 140, 30);
|
||||
|
||||
btmClickMe.onClick := (args){ self.onButtonClick(); };
|
||||
}
|
||||
|
||||
private onButtonClick()
|
||||
{
|
||||
clicksCount := clicksCount + 1;
|
||||
|
||||
lblClicks.Caption := "Clicks: " + clicksCount.toString();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
include EuWinGUI.ew
|
||||
|
||||
Window("EuWinGUI - Simple windowed application",100,100,360,100)
|
||||
constant Button1 = Control(Button,"Click me",250,20,80,25)
|
||||
constant Label1 = Control(Label,"There have been no clicks yet",10,25,200,18)
|
||||
|
||||
integer clicks
|
||||
clicks = 0
|
||||
|
||||
-- Event loop
|
||||
while 1 do
|
||||
WaitEvent()
|
||||
if EventOwner = Button1 and Event = Click then
|
||||
clicks += 1
|
||||
SetText(Label1,sprintf("You clicked me %d times",clicks))
|
||||
end if
|
||||
end while
|
||||
|
||||
CloseApp(0)
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
open System.Windows.Forms
|
||||
|
||||
let mutable clickCount = 0
|
||||
|
||||
let form = new Form()
|
||||
|
||||
let label = new Label(Text = "There have been no clicks yet.", Dock = DockStyle.Top)
|
||||
form.Controls.Add(label)
|
||||
|
||||
let button = new Button(Text = "Click me", Dock = DockStyle.Bottom)
|
||||
button.Click.Add(fun _ ->
|
||||
clickCount <- clickCount+1
|
||||
label.Text <- sprintf "Number of clicks: %i." clickCount)
|
||||
form.Controls.Add(button)
|
||||
|
||||
Application.Run(form)
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
USING: accessors arrays kernel math math.parser namespaces
|
||||
sequences ui ui.gadgets ui.gadgets.borders ui.gadgets.buttons
|
||||
ui.gadgets.grids ui.gadgets.labels ui.gadgets.worlds ;
|
||||
IN: rosetta-code.simple-windowed-application
|
||||
|
||||
SYMBOL: n
|
||||
|
||||
CONSTANT: on-btn-press [
|
||||
parents second n get number>string <label> { 0 1 }
|
||||
grid-add drop n inc
|
||||
]
|
||||
|
||||
: build-ui ( -- ) [
|
||||
f
|
||||
T{ world-attributes { title "Simple windowed application" } }
|
||||
clone
|
||||
"click me" on-btn-press <border-button> 1array
|
||||
"There have been no clicks yet" <label> 1array
|
||||
2array <grid>
|
||||
{ 100 100 } <border>
|
||||
>>gadgets
|
||||
open-window
|
||||
] with-ui ;
|
||||
|
||||
: main ( -- ) 1 n set build-ui ;
|
||||
|
||||
MAIN: main
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
using fwt
|
||||
using gfx
|
||||
|
||||
class SimpleApplication
|
||||
{
|
||||
public static Void main ()
|
||||
{
|
||||
Window
|
||||
{
|
||||
title = "Simple Window Application"
|
||||
size = Size(350, 50)
|
||||
clicked := 0
|
||||
label := Label
|
||||
{
|
||||
text = "There have been no clicks yet"
|
||||
}
|
||||
Button
|
||||
{
|
||||
text = "Click me"
|
||||
onAction.add |Event e|
|
||||
{
|
||||
clicked += 1
|
||||
label.text = "There have been $clicked clicks"
|
||||
}
|
||||
},
|
||||
label,
|
||||
}.open
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
also minos
|
||||
text-label ptr click-label
|
||||
Variable click# click# off
|
||||
: click-win ( -- ) screen self window new window with
|
||||
X" There have been no clicks yet" text-label new
|
||||
dup F bind click-label
|
||||
^ S[ 1 click# +!
|
||||
click# @ 0 <# #S s" Number of clicks: " holds #>
|
||||
click-label assign ]S X" Click me" button new
|
||||
&2 vabox new panel s" Clicks" assign show endwith ;
|
||||
click-win
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
#! xbigforth
|
||||
\ automatic generated code
|
||||
\ do not edit
|
||||
|
||||
also editor also minos also forth
|
||||
|
||||
component class ccount
|
||||
public:
|
||||
early widget
|
||||
early open
|
||||
early dialog
|
||||
early open-app
|
||||
text-label ptr click#
|
||||
( [varstart] ) cell var clicks ( [varend] )
|
||||
how:
|
||||
: open new DF[ 0 ]DF s" Click counter" open-component ;
|
||||
: dialog new DF[ 0 ]DF s" Click counter" open-dialog ;
|
||||
: open-app new DF[ 0 ]DF s" Click counter" open-application ;
|
||||
class;
|
||||
|
||||
ccount implements
|
||||
( [methodstart] ) ( [methodend] )
|
||||
: widget ( [dumpstart] )
|
||||
X" There have been no clicks yet" text-label new ^^bind click#
|
||||
^^ S[ 1 clicks +!
|
||||
clicks @ 0 <# #S s" Number of clicks: " holds #> click# assign ]S ( MINOS ) X" Click me" button new
|
||||
&2 vabox new panel
|
||||
( [dumpend] ) ;
|
||||
: init ^>^^ assign widget 1 :: init ;
|
||||
class;
|
||||
|
||||
: main
|
||||
ccount open-app
|
||||
$1 0 ?DO stop LOOP bye ;
|
||||
script? [IF] main [THEN]
|
||||
previous previous previous
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
0 value tk-in
|
||||
0 value tk-out
|
||||
variable #clicks
|
||||
0 #clicks !
|
||||
|
||||
: wish{ \ send command to wish
|
||||
tk-in to outfile-id ;
|
||||
: }wish \ finish command to wish
|
||||
tk-in flush-file throw
|
||||
stdout to outfile-id ;
|
||||
|
||||
|
||||
: add-one 1 #clicks +! ;
|
||||
: update-wish wish{ .\" .label configure -text \"clicks: " #clicks @ . .\" \"" cr }wish ;
|
||||
|
||||
: counting
|
||||
begin
|
||||
tk-out key-file
|
||||
dup '+' = if add-one update-wish then \ add one if '+' received
|
||||
4 = until ; \ until Ctrl-D, wish exit
|
||||
|
||||
: initiating
|
||||
s" mkfifo tk-in tk-out" system
|
||||
s" wish <tk-in >tk-out &" system
|
||||
s" tk-in" w/o open-file throw to tk-in
|
||||
s" tk-out" r/o open-file throw to tk-out
|
||||
wish{ .\" pack [ label .label -text \"There have been no clicks yet\" ] " cr }wish
|
||||
wish{ .\" pack [ button .click -text \"Click Me\" -command { puts \"+\" } ] " cr }wish ;
|
||||
|
||||
: cleaning
|
||||
tk-in close-file
|
||||
tk-out close-file
|
||||
s" rm tk-in tk-out" system ;
|
||||
|
||||
initiating counting cleaning
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
:class TextView' super{ TextView }
|
||||
:m put: ( addr len -- )
|
||||
0 #ofChars: self SetSelect: self
|
||||
insert: self ;m
|
||||
;class
|
||||
|
||||
Window+ w
|
||||
View wview
|
||||
Button b
|
||||
100 30 100 20 setFrame: b
|
||||
TextView' t
|
||||
200 30 200 15 setFrame: t
|
||||
|
||||
\ the running count is always on the stack
|
||||
\ so a variable for that is not needed
|
||||
:noname
|
||||
1+ \ increment the count
|
||||
" Number of clicks: " put: t
|
||||
dup deciNumstr insert: t ; setAction: b \ update the text representation of count
|
||||
|
||||
: go
|
||||
b addview: wview
|
||||
t addview: wview
|
||||
300 30 430 230 put: frameRect
|
||||
frameRect " Test" docWindow
|
||||
wview new: w show: w
|
||||
" click me" setTitle: b
|
||||
" There have been no clicks yet" put: t
|
||||
0 ; \ the number of clicks start at zero
|
||||
|
||||
go
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
#Include "windows.bi"
|
||||
|
||||
Dim As HWND Window_Main, Static_Text, Button_Click
|
||||
Dim As MSG msg
|
||||
Dim As Integer Num_Click
|
||||
Dim As String Text
|
||||
|
||||
'Create a window with a static text control and a button:
|
||||
Window_Main = CreateWindow("#32770", "Simple Windowed Application", WS_OVERLAPPEDWINDOW Or WS_VISIBLE, 100, 100, 350, 200, 0, 0, 0, 0)
|
||||
Static_Text = CreateWindow("STATIC", "There have been no clicks yet", WS_VISIBLE Or WS_CHILD Or WS_BORDER, 10, 30, 300, 20, Window_Main, 0, 0, 0)
|
||||
Button_Click = CreateWindow("BUTTON", "Click me", WS_VISIBLE Or WS_CHILD, 100, 70, 100, 20, Window_Main, 0, 0, 0)
|
||||
|
||||
'Windows message loop:
|
||||
Num_Click = 0
|
||||
While GetMessage(@msg, Window_Main, 0, 0)
|
||||
TranslateMessage(@msg)
|
||||
DispatchMessage(@msg)
|
||||
Select Case msg.hwnd
|
||||
Case Button_Click
|
||||
If msg.message = WM_LBUTTONDOWN Then
|
||||
Num_Click = Num_Click + 1
|
||||
If Num_Click = 1 Then
|
||||
Text = "Button has been clicked once"
|
||||
Else
|
||||
Text = "Button has been clicked " + Str(Num_Click) + " times"
|
||||
End If
|
||||
SetWindowText(Static_Text, Text)
|
||||
End If
|
||||
Case Window_Main
|
||||
If msg.message = WM_COMMAND Then End
|
||||
End Select
|
||||
Wend
|
||||
|
||||
End
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
_window = 1
|
||||
|
||||
begin enum 1
|
||||
_label
|
||||
_clickMeBtn
|
||||
end enum
|
||||
|
||||
void local fn BuildWindow
|
||||
window _window, @"Simple Windowed Application", (0,0,366,59)
|
||||
|
||||
textlabel _label, @"There have been no clicks yet", (18,23,250,16)
|
||||
|
||||
button _clickMeBtn,,, @"Click Me", (267,13,86,32)
|
||||
end fn
|
||||
|
||||
void local fn ButtonClicked
|
||||
static long clickCount = 0
|
||||
|
||||
clickCount++
|
||||
textlabel _label, fn StringWithFormat( @"The button has been clicked %ld times", clickCount )
|
||||
end fn
|
||||
|
||||
void local fn DoDialog( ev as long, tag as long )
|
||||
select ( ev )
|
||||
case _btnClick
|
||||
select ( tag )
|
||||
case _clickMeBtn : fn ButtonClicked
|
||||
end select
|
||||
end select
|
||||
end fn
|
||||
|
||||
fn BuildWindow
|
||||
|
||||
on dialog fn DoDialog
|
||||
|
||||
HandleEvents
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
iCount As Integer 'Counter of clicks!
|
||||
hLabel As Label 'We need a Label
|
||||
|
||||
Public Sub Form_Open()
|
||||
Dim hButton As Button 'We need a Button
|
||||
|
||||
With Me 'Set the Form's Properties..
|
||||
.height = 75 'Set the Height
|
||||
.Width = 300 'Set the Width
|
||||
.Arrangement = Arrange.Vertical 'Arrange items vertically
|
||||
.Padding = 5 'Border area
|
||||
.Title = "Click counter!" 'Title displayed on the Form
|
||||
End With
|
||||
|
||||
hlabel = New Label(Me) 'Add a Label to the form
|
||||
|
||||
With hlabel 'Set the Label's Properties..
|
||||
.expand = True 'Expand the Label to fit the Form
|
||||
.Text = "There have been no clicks yet" 'Add Text to the Label
|
||||
.Alignment = Align.Center 'Center the Text
|
||||
End With
|
||||
|
||||
hButton = New Button(Me) As "Button1" 'Add a Button to the form as Event "Button1"
|
||||
|
||||
With hButton 'Set the Button's Properties..
|
||||
.Height = 28 'Set the Height
|
||||
.Text = "&Click me" 'Add Text (The '&' adds a keyboard shortcut)
|
||||
End With
|
||||
|
||||
End
|
||||
|
||||
Public Sub Button1_Click() 'When the Button is clicked..
|
||||
|
||||
Inc iCount 'Increase the value of iCount
|
||||
hLabel.text = "The button has been clicked " & iCount & " times" 'Display the amount of clicks"
|
||||
|
||||
End
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
#javaj#
|
||||
|
||||
<frames> main, Simple click counter
|
||||
|
||||
<layout of main>
|
||||
PANEL, X
|
||||
bClick me, lClicks
|
||||
|
||||
#data#
|
||||
|
||||
<NN> 0
|
||||
<lClicks> //There have been no clicks yet
|
||||
|
||||
#listix#
|
||||
|
||||
<-- bClick me>
|
||||
NUM=, NN, NN+1
|
||||
-->, lClicks data!,, //@<NN> clicks so far
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/mattn/go-gtk/gtk"
|
||||
)
|
||||
|
||||
func main() {
|
||||
gtk.Init(nil)
|
||||
window := gtk.NewWindow(gtk.WINDOW_TOPLEVEL)
|
||||
window.SetTitle("Click me")
|
||||
label := gtk.NewLabel("There have been no clicks yet")
|
||||
var clicks int
|
||||
button := gtk.NewButtonWithLabel("click me")
|
||||
button.Clicked(func() {
|
||||
clicks++
|
||||
if clicks == 1 {
|
||||
label.SetLabel("Button clicked 1 time")
|
||||
} else {
|
||||
label.SetLabel(fmt.Sprintf("Button clicked %d times",
|
||||
clicks))
|
||||
}
|
||||
})
|
||||
vbox := gtk.NewVBox(false, 1)
|
||||
vbox.Add(label)
|
||||
vbox.Add(button)
|
||||
window.Add(vbox)
|
||||
window.Connect("destroy", func() {
|
||||
gtk.MainQuit()
|
||||
})
|
||||
window.ShowAll()
|
||||
gtk.Main()
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
import groovy.swing.SwingBuilder
|
||||
|
||||
count = 0
|
||||
new SwingBuilder().edt {
|
||||
frame(title:'Click frame', pack: true, show: true) {
|
||||
vbox {
|
||||
countLabel = label("There have been no clicks yet.")
|
||||
button('Click Me', actionPerformed: {count++; countLabel.text = "Clicked ${count} time(s)."})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
import groovy.swing.SwingBuilder
|
||||
import groovy.beans.Bindable
|
||||
|
||||
@Bindable class Model {
|
||||
Integer count = 0
|
||||
}
|
||||
model = new Model()
|
||||
new SwingBuilder().edt {
|
||||
frame(title:'Click frame', pack: true, show: true) {
|
||||
vbox {
|
||||
label(text: bind(source: model, sourceProperty: 'count',
|
||||
converter: { v -> !v ? "There have been no clicks yet." : "Clicked ${v} time(s)."}))
|
||||
button('Click Me', actionPerformed: {model.count++})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
c=0
|
||||
p=|p|;v
|
||||
l=|l|;<"There have been no clicks yet"o
|
||||
b=|b|;=>c{
|
||||
c = add(1, @c)
|
||||
@l<@c
|
||||
}<"click me"
|
||||
@p<<<@b<<<@l
|
||||
@l w
|
||||
@p,o+
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
import Graphics.UI.Gtk
|
||||
import Data.IORef
|
||||
|
||||
main :: IO ()
|
||||
main = do
|
||||
initGUI
|
||||
window <- windowNew
|
||||
window `onDestroy` mainQuit
|
||||
windowSetTitle window "Simple Windowed App"
|
||||
set window [ containerBorderWidth := 10 ]
|
||||
|
||||
hbox <- hBoxNew True 5
|
||||
|
||||
set window [ containerChild := hbox ]
|
||||
|
||||
lab <- labelNew (Just "There have been no clicks yet")
|
||||
button <- buttonNewWithLabel "Click me"
|
||||
set hbox [ containerChild := lab ]
|
||||
set hbox [ containerChild := button ]
|
||||
|
||||
m <- newIORef 0
|
||||
|
||||
onClicked button $ do
|
||||
v <- readIORef m
|
||||
writeIORef m (v+1)
|
||||
set lab [ labelText := "There have been " ++ show (v+1) ++ " clicks" ]
|
||||
|
||||
widgetShowAll window
|
||||
|
||||
mainGUI
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
CHARACTER label="There have been no clicks yet"
|
||||
|
||||
DO count = 1, 1E100 ! "forever"
|
||||
DLG(Button="Click me", Width=3, TItle=label) ! Width=3 to display full length label
|
||||
label = "Clicked " // count // "time(s)"
|
||||
ENDDO
|
||||
|
||||
END
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
import gui
|
||||
$include "guih.icn"
|
||||
|
||||
procedure main()
|
||||
SimpleWindow().show_modal()
|
||||
end
|
||||
|
||||
class SimpleWindow : Dialog(label, button, count)
|
||||
method component_setup()
|
||||
self.set_attribs("size=222,139")
|
||||
label := Label()
|
||||
label.set_pos("24", "24")
|
||||
label.set_internal_alignment("l")
|
||||
label.set_label("There have been no clicks yet.")
|
||||
self.add(label)
|
||||
button := TextButton()
|
||||
button.set_pos(24, 53)
|
||||
button.set_label("click me")
|
||||
button.set_internal_alignment("c")
|
||||
button.connect(self, "incr", ACTION_EVENT)
|
||||
self.add(button)
|
||||
end
|
||||
|
||||
method incr()
|
||||
/count := 0
|
||||
label.set_label("There have been "||(count+:=1)||" clicks.")
|
||||
end
|
||||
|
||||
initially
|
||||
self.Dialog.initially()
|
||||
end
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
pro counter, ev
|
||||
widget_control, ev.top, get_uvalue=tst
|
||||
tst[1] = tst[1]+1
|
||||
widget_control, tst[0], set_value="Number of clicks: "+string(tst[1],format='(i0)')
|
||||
widget_control, ev.top, set_uvalue=tst
|
||||
end
|
||||
|
||||
id = widget_base(title = 'Window Title',column=1)
|
||||
ld = widget_label(id, value = 'There have been no clicks yet.')
|
||||
widget_control, /realize, id, set_uvalue=[ld,0]
|
||||
dummy = widget_button(id,value=' Click Me ',event_pro='counter')
|
||||
xmanager, "Simple", Id
|
||||
|
||||
end
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
simple_run=: {{
|
||||
simple_clicks=: 0 NB. initialize accumulator
|
||||
wd {{)n
|
||||
pc simple closeok escclose;
|
||||
cc click button;cn "Click me";
|
||||
cc message static;cn "There have been no clicks yet.";
|
||||
pshow;
|
||||
}}}}
|
||||
simple_run''
|
||||
|
||||
simple_click_button=: {{wd 'set message text Button-use count: ',": simple_clicks=: 1+simple_clicks}}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
SIMPLEAPP=: noun define
|
||||
pc simpleApp;
|
||||
cc inc button;cn "Click me";
|
||||
cc shownText static;cn "There have been no clicks yet.";
|
||||
)
|
||||
|
||||
simpleApp_run=: verb define
|
||||
wd SIMPLEAPP
|
||||
simpleApp_accum=: 0 NB. initialize accumulator
|
||||
wd 'pshow;'
|
||||
)
|
||||
|
||||
simpleApp_inc_button=: verb define
|
||||
wd 'set shownText text ','Button-use count: ',": simpleApp_accum=: >: simpleApp_accum
|
||||
)
|
||||
|
||||
simpleApp_close=: wd bind 'pclose'
|
||||
simpleApp_cancel=: simpleApp_close
|
||||
|
||||
simpleApp_run''
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
SIMPLEAPP=: noun define
|
||||
pc simpleApp;
|
||||
xywh 131 11 44 12;cc inc button;cn "Click me";
|
||||
xywh 7 10 115 11;cc shownText static;cn "There have been no clicks yet.";
|
||||
pas 6 6;pcenter;
|
||||
rem form end;
|
||||
)
|
||||
|
||||
simpleApp_run=: verb define
|
||||
wd SIMPLEAPP
|
||||
simpleApp_accum=: 0 NB. initialize accumulator
|
||||
wd 'pshow;'
|
||||
)
|
||||
|
||||
simpleApp_inc_button=: verb define
|
||||
wd 'set shownText *','Button-use count: ',": simpleApp_accum=: >: simpleApp_accum
|
||||
)
|
||||
|
||||
simpleApp_close=: wd bind 'pclose'
|
||||
simpleApp_cancel=: simpleApp_close
|
||||
|
||||
simpleApp_run''
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
import java.awt.BorderLayout;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.SwingUtilities;
|
||||
public class Clicks extends JFrame{
|
||||
private long clicks = 0;
|
||||
|
||||
public Clicks(){
|
||||
super("Clicks");//set window title
|
||||
JLabel label = new JLabel("There have been no clicks yet");
|
||||
JButton clicker = new JButton("click me");
|
||||
clicker.addActionListener(//listen to the button
|
||||
new ActionListener(){
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
label.setText("There have been " + (++clicks) + " clicks");//change the text
|
||||
}
|
||||
}
|
||||
);
|
||||
setLayout(new BorderLayout());//handles placement of components
|
||||
add(label,BorderLayout.CENTER);//add the label to the biggest section
|
||||
add(clicker,BorderLayout.SOUTH);//put the button underneath it
|
||||
label.setPreferredSize(new Dimension(300,100));//nice big label
|
||||
label.setHorizontalAlignment(JLabel.CENTER);//text not up against the side
|
||||
pack();//fix layout
|
||||
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//stop the program on "X"
|
||||
setVisible(true);//show it
|
||||
}
|
||||
public static void main(String[] args){
|
||||
SwingUtilities.invokeLater( //Swing UI updates should not happen on the main thread
|
||||
() -> new Clicks() //call the constructor where all the magic happens
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
import javafx.stage.*;
|
||||
import javafx.scene.*;
|
||||
import javafx.scene.layout.*;
|
||||
import javafx.scene.control.*;
|
||||
|
||||
Stage {
|
||||
scene: Scene {
|
||||
width: 300 height: 200
|
||||
content: VBox {
|
||||
var clicks: Integer;
|
||||
|
||||
spacing: 10
|
||||
content: [
|
||||
Label {
|
||||
def varText = bind if (clicks == 0) then "no clicks yet" else "{clicks} clicks"
|
||||
text : bind "There have been {varText}"
|
||||
}
|
||||
Button {
|
||||
text: "click me"
|
||||
onMouseClicked: function(e) { clicks++; }
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>Simple Window Application</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<br>        
|
||||
|
||||
<script type="text/javascript">
|
||||
var box = document.createElement('input')
|
||||
box.style.position = 'absolute'; // position it
|
||||
box.style.left = '10px';
|
||||
box.style.top = '60px';
|
||||
document.body.appendChild(box).style.border="3px solid white";
|
||||
document.body.appendChild(box).value = "There have been no clicks yet";
|
||||
document.body.appendChild(box).style['width'] = '220px';
|
||||
var clicks = 0;
|
||||
function count_clicks() {
|
||||
document.body.appendChild(box).remove()
|
||||
clicks += 1;
|
||||
document.getElementById("clicks").innerHTML = clicks;
|
||||
};
|
||||
</script>
|
||||
|
||||
<button type="button" onclick="count_clicks()"> Click me</button>
|
||||
<pre><p> Clicks: <a id="clicks">0</a> </p></pre>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
using Gtk.ShortNames
|
||||
|
||||
function clickwindow()
|
||||
clicks = 0
|
||||
win = Window("Click Counter", 300, 100) |> (Frame() |> (vbox = Box(:v)))
|
||||
lab = Label("There have been no clicks yet.")
|
||||
but = Button("click me")
|
||||
push!(vbox, lab)
|
||||
push!(vbox, but)
|
||||
set_gtk_property!(vbox, :expand, lab, true)
|
||||
set_gtk_property!(vbox, :spacing, 20)
|
||||
callback(w) = (clicks += 1; set_gtk_property!(lab, :label, "There have been $clicks button clicks."))
|
||||
id = signal_connect(callback, but, :clicked)
|
||||
Gtk.showall(win)
|
||||
c = Condition()
|
||||
endit(w) = notify(c)
|
||||
signal_connect(endit, win, :destroy)
|
||||
wait(c)
|
||||
end
|
||||
|
||||
clickwindow()
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
// version 1.0.6
|
||||
|
||||
import java.awt.BorderLayout
|
||||
import java.awt.event.ActionEvent
|
||||
import java.awt.event.ActionListener
|
||||
import javax.swing.*
|
||||
|
||||
class Clicks : JFrame(), ActionListener {
|
||||
private var clicks = 0
|
||||
private val label: JLabel
|
||||
private val clicker: JButton
|
||||
private var text: String
|
||||
|
||||
init {
|
||||
text = "There have been no clicks yet"
|
||||
label = JLabel(text)
|
||||
clicker = JButton("click me")
|
||||
clicker.addActionListener(this) // listen to the button
|
||||
layout = BorderLayout() // handles placement of components
|
||||
add(label, BorderLayout.CENTER) // add the label to the biggest section
|
||||
add(clicker, BorderLayout.SOUTH) // put the button underneath it
|
||||
setSize(300, 200) // stretch out the window
|
||||
defaultCloseOperation = EXIT_ON_CLOSE // stop the program on "X"
|
||||
isVisible = true // show it
|
||||
}
|
||||
|
||||
override fun actionPerformed(arg0: ActionEvent) {
|
||||
if (arg0.source == clicker) { // if they clicked the button
|
||||
if (clicks == 0) text = "There has been " + (++clicks) + " click"
|
||||
else text = "There have been " + (++clicks) + " clicks"
|
||||
label.text = text // change the text
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
Clicks() // call the constructor where all the magic happens
|
||||
}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
import tornadofx.*
|
||||
|
||||
class ClicksView: View("Clicks example") {
|
||||
var clicks = 0
|
||||
override val root = vbox(5) {
|
||||
var label1 = label("There have been no clicks yet")
|
||||
button("Click me!") { action { label1.text = "Clicked ${++clicks} times." } }
|
||||
}
|
||||
}
|
||||
|
||||
class ClicksApp: App(ClicksView::class)
|
||||
|
||||
fun main(args: Array<String>) = launch<ClicksApp>(args)
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
1) the label: {div {@ id="label"} There have been no clicks yet }
|
||||
2) the button: {input {@ type="button" value="click me" onclick="CLICKAPP.inc()" }}
|
||||
3) the script: {script °° code °°} where code is a single function:
|
||||
|
||||
var CLICKAPP = (function() {
|
||||
var counter = 0;
|
||||
var inc = function() {
|
||||
counter++;
|
||||
getId('label').innerHTML =
|
||||
'There are ' + counter + ' clicks now';
|
||||
};
|
||||
return {inc:inc}
|
||||
})();
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
nomainwin
|
||||
button #demo.btn, "Click Me", [btnClick], UL, 20, 50
|
||||
statictext #demo.num, "There have been no clicks yet.", 20, 100, 240, 30
|
||||
open "Rosetta Task: Simple windowed application" for window as #demo
|
||||
#demo "trapclose [quit]"
|
||||
nClicks = 0
|
||||
wait
|
||||
|
||||
[quit]
|
||||
close #demo
|
||||
end
|
||||
|
||||
[btnClick]
|
||||
nClicks = nClicks + 1
|
||||
#demo.num "The button has been clicked ";nClicks;" times."
|
||||
wait
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
on startMovie
|
||||
|
||||
-- window settings
|
||||
_movie.stage.title = "Hello World!"
|
||||
_movie.stage.titlebarOptions.visible = TRUE
|
||||
_movie.stage.rect = rect(0,0,320, 240)
|
||||
_movie.centerStage = 1
|
||||
|
||||
-- create a label (called "field" in Director)
|
||||
m = new(#field)
|
||||
m.name = "label"
|
||||
m.rect = rect(0,0,320,0)
|
||||
m.text = "There have been no clicks yet"
|
||||
m.alignment = "center"
|
||||
|
||||
-- create sprite, assign field
|
||||
_movie.puppetSprite(1, TRUE)
|
||||
sprite(1).member = m
|
||||
sprite(1).loc = point(0,80)
|
||||
|
||||
-- create a button
|
||||
m = new(#button)
|
||||
m.rect = rect(0,0,220,0)
|
||||
m.text = "click me"
|
||||
m.alignment = "center"
|
||||
|
||||
-- create sprite, assign button
|
||||
_movie.puppetSprite(2, TRUE)
|
||||
sprite(2).member = m
|
||||
sprite(2).loc = point(50,105)
|
||||
|
||||
-- create new script at runtime, assign it to button sprite
|
||||
m = new(#script)
|
||||
m.scriptType = #score
|
||||
m.scriptText = "on mouseDown"&RETURN&\
|
||||
" m=member(""E&"label""E&")"&RETURN&\
|
||||
" m.text=string(integer(m.text)+1)"&RETURN&\
|
||||
"end"
|
||||
sprite(2).scriptInstanceList.add(m.script.new())
|
||||
|
||||
-- force immediate update
|
||||
_movie.updateStage()
|
||||
|
||||
-- show the window
|
||||
_movie.stage.visible = 1
|
||||
|
||||
end
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
global count
|
||||
on openCard
|
||||
put empty into count
|
||||
put "There have been no clicks yet" into field "clicks"
|
||||
end openCard
|
||||
on mouseUp
|
||||
add 1 to count
|
||||
put count into field "clicks"
|
||||
end mouseUp
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
to clickwindow
|
||||
windowCreate "root "clickWin [Click that button!!!] 0 0 100 100 []
|
||||
Make "i 0
|
||||
staticCreate "clickWin "clickSt [There have been no clicks yet] 0 0 100 20
|
||||
buttonCreate "clickWin "clickBtn [click me] 10 20 80 20 ~
|
||||
[Make "i :i+1 ~
|
||||
ifelse :i=1 [staticUpdate "clickSt (list "clicked :i "time)] ~
|
||||
[staticUpdate "clickSt (list "clicked :i "times)]]
|
||||
end
|
||||
|
|
@ -0,0 +1 @@
|
|||
clickwindow
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
require"iuplua"
|
||||
l = iup.label{title="There have been no clicks yet."}
|
||||
b = iup.button{title="Click me!"}
|
||||
clicks = 0
|
||||
function b:button_cb()
|
||||
clicks = clicks + 1
|
||||
l.title = "There have been " .. clicks/2 .. " clicks so far." --yes, this is correct.
|
||||
end
|
||||
dlg = iup.dialog{iup.vbox{l, b}, title="Simple Windowed Application"}
|
||||
dlg:show()
|
||||
|
||||
if (not iup.MainLoopLevel or iup.MainLoopLevel()==0) then
|
||||
iup.MainLoop()
|
||||
end
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
Module CheckIt {
|
||||
Declare Form1 Form
|
||||
Declare Label1 Button Form Form1
|
||||
Declare Button1 Button Form Form1
|
||||
Method Label1,"move", 2000, 2000, 4000, 600
|
||||
Method Button1,"move", 2000, 3000, 4000, 600
|
||||
With Label1, "Caption" as caption$, "Locked", true, "Caption" as cap
|
||||
With Button1, "Caption", "click me", "Default", True ' make this the default control
|
||||
caption$="There have been no clicks yet"
|
||||
m=0
|
||||
Function Button1.Click {
|
||||
m++
|
||||
cap=m
|
||||
}
|
||||
Method Form1, "Show",1
|
||||
Declare Form1 Nothing
|
||||
}
|
||||
Checkit
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
rollout buttonClick "Button Click"
|
||||
(
|
||||
label l "There have been no clicks yet"
|
||||
button clickMe "Click me"
|
||||
local clickCount = 0
|
||||
|
||||
on clickMe pressed do
|
||||
(
|
||||
clickCount += 1
|
||||
l.text = ("Number of clicks: " + clickCount as string)
|
||||
)
|
||||
)
|
||||
createDialog buttonClick
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
DynamicModule[{n = 0},
|
||||
CreateDialog[{Dynamic@
|
||||
TextCell@If[n == 0, "There have been no clicks yet", n],
|
||||
Button["click me", n++]}]]
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
MODULE Click EXPORTS Main;
|
||||
|
||||
IMPORT Fmt, TextVBT, ButtonVBT, VBT, Axis, HVSplit, TrestleComm, Trestle;
|
||||
|
||||
VAR label := TextVBT.New("There have been no clicks yet.");
|
||||
button := ButtonVBT.New(TextVBT.New("Click me!"), Clicked);
|
||||
main := HVSplit.Cons(Axis.T.Ver, label, button, adjustable := FALSE);
|
||||
count := 0;
|
||||
|
||||
PROCEDURE Clicked(<*UNUSED*>button: ButtonVBT.T; <*UNUSED*>READONLY cd: VBT.MouseRec) =
|
||||
BEGIN
|
||||
INC(count);
|
||||
TextVBT.Put(label, "Button pressed: " & Fmt.Int(count));
|
||||
END Clicked;
|
||||
|
||||
<*FATAL TrestleComm.Failure*>
|
||||
BEGIN
|
||||
Trestle.Install(main);
|
||||
Trestle.AwaitDelete(main);
|
||||
END Click.
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
import Nanoquery.Util.Windows
|
||||
|
||||
// define the necessary objects
|
||||
$w = new("Window")
|
||||
$b = new("Button")
|
||||
$l = new("Label")
|
||||
|
||||
$b.setParent($w)
|
||||
$l.setParent($w)
|
||||
|
||||
// define the amount of clicks
|
||||
$clicks = 0
|
||||
|
||||
// a function to update the label
|
||||
def updateLabel($caller, $event)
|
||||
global $clicks
|
||||
global $l
|
||||
|
||||
$clicks = $clicks+1
|
||||
$l.setText(str($clicks))
|
||||
|
||||
global $clicks = $clicks
|
||||
end
|
||||
|
||||
// prepare the components to be displayed
|
||||
$w.setSize(200,200)
|
||||
$b.setText("click me")
|
||||
$b.setPosition(0,100)
|
||||
$l.setText("There have been no clicks yet")
|
||||
|
||||
// set the button's event handler to the function updateLabel
|
||||
$b.setHandler($updateLabel)
|
||||
|
||||
// show the window
|
||||
$w.show()
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
import gtk2
|
||||
|
||||
nim_init()
|
||||
|
||||
var
|
||||
win = windowNew WINDOW_TOPLEVEL
|
||||
button = buttonNew "Click me"
|
||||
label = labelNew "There have been no clicks yet"
|
||||
vbox = vboxNew(true, 1)
|
||||
counter = 0
|
||||
|
||||
proc clickedMe(o: var PButton, l: PLabel) =
|
||||
inc counter
|
||||
l.setText "You clicked me " & $counter & " times"
|
||||
|
||||
win.setTitle "Click me"
|
||||
vbox.add label
|
||||
vbox.add button
|
||||
win.add vbox
|
||||
discard win.signal_connect("delete-event", SignalFunc mainQuit, nil)
|
||||
discard button.signal_connect("clicked", SignalFunc clickedMe, label)
|
||||
win.showAll()
|
||||
main()
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
#directory "+labltk"
|
||||
#load "labltk.cma"
|
||||
|
||||
let () =
|
||||
let top = Tk.openTk() in
|
||||
Wm.title_set top "Tk-OCaml Example";
|
||||
let label = Label.create ~text:"There have been no clicks yet" top in
|
||||
let b =
|
||||
Button.create
|
||||
~text:"click me"
|
||||
~command:(fun () -> Tk.closeTk (); exit 0)
|
||||
top
|
||||
in
|
||||
Tk.pack [Tk.coe label; Tk.coe b];
|
||||
Tk.mainLoop ();
|
||||
;;
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
open GMain
|
||||
|
||||
let window = GWindow.window ~border_width:2 ()
|
||||
let vbox = GPack.vbox ~packing:window#add ()
|
||||
let label = GMisc.label ~text:"There have been no clicks yet" ~packing:vbox#pack ()
|
||||
let button = GButton.button ~label:"click me" ~packing:vbox#pack ()
|
||||
|
||||
let () =
|
||||
window#event#connect#delete ~callback:(fun _ -> true);
|
||||
window#connect#destroy ~callback:Main.quit;
|
||||
button#connect#clicked ~callback:window#destroy;
|
||||
window#show ();
|
||||
Main.main ()
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
#include <Foundation/Foundation.h>
|
||||
#include <AppKit/AppKit.h>
|
||||
|
||||
@interface ClickMe : NSWindow
|
||||
{
|
||||
NSButton *_button;
|
||||
NSTextField *_text;
|
||||
int _counter;
|
||||
}
|
||||
- (void)applicationDidFinishLaunching: (NSNotification *)notification;
|
||||
- (BOOL)applicationShouldTerminateAfterLastWindowClosed: (NSNotification *)notification;
|
||||
- (void)advanceCounter: (id)sender;
|
||||
@end
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
@implementation ClickMe : NSWindow
|
||||
-(instancetype) init
|
||||
{
|
||||
NSButton *button = [[NSButton alloc] init];
|
||||
[button setButtonType: NSToggleButton];
|
||||
[button setTitle: @"Click Me"];
|
||||
[button sizeToFit];
|
||||
[button setTarget: self];
|
||||
[button setAction: @selector(advanceCounter:)];
|
||||
NSRect buttonRect = [button frame];
|
||||
|
||||
NSTextField *text = [[NSTextField alloc]
|
||||
initWithFrame: NSMakeRect(buttonRect.origin.x, buttonRect.size.height,
|
||||
buttonRect.size.width, buttonRect.size.height)];
|
||||
[text setAlignment: NSCenterTextAlignment];
|
||||
[text setEditable: NO];
|
||||
[text setStringValue: @"There have been no clicks yet"];
|
||||
[text sizeToFit];
|
||||
|
||||
// reset size of button according to size of (larger...?) text
|
||||
[button
|
||||
setFrameSize: NSMakeSize( [text frame].size.width, buttonRect.size.height ) ];
|
||||
|
||||
int totalWindowHeight = buttonRect.size.height + [text frame].size.height;
|
||||
|
||||
if ((self = [super initWithContentRect: NSMakeRect(100, 100,
|
||||
[text frame].size.width, totalWindowHeight)
|
||||
styleMask: (NSTitledWindowMask | NSClosableWindowMask)
|
||||
backing: NSBackingStoreBuffered
|
||||
defer: NO])) {
|
||||
_counter = 0;
|
||||
_button = button;
|
||||
_text = text;
|
||||
|
||||
[[self contentView] addSubview: _text];
|
||||
[[self contentView] addSubview: _button];
|
||||
|
||||
[self setTitle: @"Click Me!"];
|
||||
[self center];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
|
||||
- (void)applicationDidFinishLaunching: (NSNotification *)notification
|
||||
{
|
||||
[self orderFront: self];
|
||||
}
|
||||
|
||||
- (BOOL)applicationShouldTerminateAfterLastWindowClosed: (NSNotification *)notification
|
||||
{
|
||||
return YES;
|
||||
}
|
||||
|
||||
- (void)advanceCounter: (id)sender
|
||||
{
|
||||
[_text setStringValue: [NSString stringWithFormat: @"Clicked %d times", ++_counter]];
|
||||
}
|
||||
@end
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
@autoreleasepool {
|
||||
NSApplication *app = [NSApplication sharedApplication];
|
||||
ClickMe *clickme = [[ClickMe alloc] init];
|
||||
[app setDelegate: clickme];
|
||||
[app run];
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -0,0 +1,85 @@
|
|||
/* REXX ***************************************************************************************
|
||||
* 18.06.2014 Walter Pachl shortened from Rony Flatscher's bsf4oorexx (see sourceforge) samples
|
||||
* Look there for ShowCount.rxj
|
||||
* bsf4oorexx lets the ooRexx program use Java classes
|
||||
**********************************************************************************************/
|
||||
userData=.directory~new -- a directory which will be passed to Rexx with the event
|
||||
|
||||
-- create a framed Java window, set a title text
|
||||
win=.bsf~new("java.awt.Frame", "Show Count")
|
||||
-- Create a Java RexxProxy for controlling the closing of the application
|
||||
rexxCloseEH =.RexxCloseAppEventHandler~new -- Rexx event handler
|
||||
-- Create Java RexxProxy for the Rexx event handler
|
||||
rpCloseEH=BsfCreateRexxProxy(rexxCloseEH,,"java.awt.event.WindowListener" )
|
||||
win~addWindowListener(rpCloseEH) -- add RexxProxy event handler
|
||||
|
||||
-- create a Java push button
|
||||
but=.bsf~new("java.awt.Button","Press me!")
|
||||
-- Create a RexxProxy for the button Rexx event handler
|
||||
rp=BsfCreateRexxProxy(.RexxShowCountEventHandler~new,userData,"java.awt.event.ActionListener")
|
||||
but~addActionListener(rp) -- add RexxProxy event handler
|
||||
|
||||
lab=.bsf~new("java.awt.Label") -- create a Java label,set it to show the text centered
|
||||
userData~label=lab -- save label object for later use in event handler
|
||||
lab~setAlignment(lab~center) -- set alignment to center
|
||||
lab~setText("Button was not yet pressed") -- assign initial text to the label
|
||||
|
||||
win ~~add("Center",lab) ~~add("South",but) -- add the label and the button to the frame
|
||||
win ~~pack -- now calculate all widget dimensions
|
||||
call enlargeWidth win,but,120 -- enlarge the width of the frame and the button
|
||||
|
||||
win ~~setVisible(.true) ~~toFront -- make frame visible and move it to the front
|
||||
|
||||
userData~i=0 -- set counter to 0
|
||||
|
||||
rexxCloseEH~waitForExit -- wait until we are allowed to end the program
|
||||
|
||||
-- if Java was loaded by Rexx,then terminate Java's RexxEngine to inhibit callbacks from Java
|
||||
call BSF.terminateRexxEngine
|
||||
|
||||
::requires BSF.CLS -- get Java support
|
||||
|
||||
/* enlarge the width of the frame and of the button without using a layout manager */
|
||||
::routine enlargeWidth
|
||||
use arg win,but,addToWidth
|
||||
winDim=win~getSize -- get frame's dimension
|
||||
winDim~width+=addToWidth -- increase width
|
||||
win~setSize(winDim) -- set frame's dimension
|
||||
|
||||
/* ------------------------------------------------------------------------ */
|
||||
/* Rexx event handler to set "close app" indicator */
|
||||
::class RexxCloseAppEventHandler
|
||||
::method init -- constructor
|
||||
expose closeApp
|
||||
closeApp = .false -- if set to .true, then it is safe to close the app
|
||||
|
||||
::attribute closeApp -- indicates whether app should be closed
|
||||
|
||||
::method unknown -- intercept unhandled events,do nothing
|
||||
|
||||
::method windowClosing -- event method (from WindowListener)
|
||||
expose closeApp
|
||||
closeApp=.true -- indicate that the app should close
|
||||
|
||||
::method waitForExit -- method blocks until attribute is set to .true
|
||||
expose closeApp
|
||||
guard on when closeApp=.true
|
||||
|
||||
/* ------------------------------------------------------------------------ */
|
||||
/* Rexx event handler to process tab changes */
|
||||
::class RexxShowCountEventHandler
|
||||
::method actionPerformed
|
||||
use arg eventObject,slotDir
|
||||
call showCount slotDir~userData
|
||||
|
||||
/* ------------------------------------------------------------------------ */
|
||||
::routine ShowCount -- increment counter and show text
|
||||
use arg userData
|
||||
userData~i+=1 -- increment counter in directory object
|
||||
Select -- construct text part
|
||||
When userData~i=1 Then how_often='once'
|
||||
When userData~i=2 Then how_often='twice'
|
||||
When userData~i=3 Then how_often='three times'
|
||||
Otherwise how_often=userData~i 'times'
|
||||
End
|
||||
userData~label~setText("Button was pressed" how_often) -- display text
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
functor
|
||||
import
|
||||
Application
|
||||
QTk at 'x-oz://system/wp/QTk.ozf'
|
||||
define
|
||||
Count = {NewCell 0}
|
||||
Label
|
||||
GUI = td(action:proc {$} {Application.exit 0} end %% exit on close
|
||||
label(text:"There have been no clicks yet." handle:Label)
|
||||
button(text:"Click Me"
|
||||
action:proc {$}
|
||||
Count := @Count + 1
|
||||
{Label set(text:"Number of clicks: "#@Count#".")}
|
||||
end
|
||||
))
|
||||
Window = {QTk.build GUI}
|
||||
{Window show}
|
||||
end
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
Program SimpleWindowApplication;
|
||||
|
||||
uses
|
||||
SysUtils,
|
||||
glib2,
|
||||
Gtk2;
|
||||
|
||||
const
|
||||
clickme = 'Click Me';
|
||||
MAXLEN = 64;
|
||||
|
||||
var
|
||||
counter: integer = 0;
|
||||
|
||||
procedure clickedme(o: PGtkButton; d: pointer); cdecl;
|
||||
var
|
||||
nt: Pchar;
|
||||
l: PGtkLabel;
|
||||
begin
|
||||
l := Gtk_LABEL(d);
|
||||
inc(counter);
|
||||
nt := Pchar('You clicked me ' + inttostr(counter) + ' times');
|
||||
Gtk_label_set_text(l, nt);
|
||||
end;
|
||||
|
||||
var
|
||||
win: PGtkWindow;
|
||||
button: PGtkButton;
|
||||
Mylabel: PGtkLabel;
|
||||
vbox: PGtkVBox;
|
||||
|
||||
begin
|
||||
Gtk_init(@argc, @argv);
|
||||
win := PGtkWindow(Gtk_window_new(Gtk_WINDOW_TOPLEVEL));
|
||||
Gtk_window_set_title(win, clickme);
|
||||
button := PGtkButton(Gtk_button_new_with_label(clickme));
|
||||
Mylabel := PGtkLabel(Gtk_label_new('There have been no clicks yet'));
|
||||
Gtk_label_set_single_line_mode(Mylabel, TRUE);
|
||||
vbox := PGtkVBox(Gtk_vbox_new(TRUE, 1));
|
||||
Gtk_container_add(Gtk_CONTAINER(vbox), Gtk_WIDGET(Mylabel));
|
||||
Gtk_container_add(Gtk_CONTAINER(vbox), Gtk_WIDGET(button));
|
||||
Gtk_container_add(Gtk_CONTAINER(win), Gtk_WIDGET(vbox));
|
||||
g_signal_connect(G_OBJECT(win), 'delete-event', TGCallBack(@Gtk_main_quit), NULL);
|
||||
g_signal_connect(G_OBJECT(button), 'clicked', TGCallBack(@clickedme), Mylabel);
|
||||
Gtk_widget_show_all(Gtk_WIDGET(win));
|
||||
Gtk_main();
|
||||
end.
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
use Tk;
|
||||
|
||||
$main = MainWindow->new;
|
||||
$l = $main->Label('-text' => 'There have been no clicks yet.')->pack;
|
||||
$count = 0;
|
||||
$main->Button(
|
||||
-text => ' Click Me ',
|
||||
-command => sub { $l->configure(-text => 'Number of clicks: '.(++$count).'.'); },
|
||||
)->pack;
|
||||
MainLoop();
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
use Gtk '-init';
|
||||
|
||||
# Window.
|
||||
$window = Gtk::Window->new;
|
||||
$window->signal_connect('destroy' => sub { Gtk->main_quit; });
|
||||
|
||||
# VBox.
|
||||
$vbox = Gtk::VBox->new(0, 0);
|
||||
$window->add($vbox);
|
||||
|
||||
# Label.
|
||||
$label = Gtk::Label->new('There have been no clicks yet.');
|
||||
$vbox->add($label);
|
||||
|
||||
# Button.
|
||||
$count = 0;
|
||||
$button = Gtk::Button->new(' Click Me ');
|
||||
$vbox->add($button);
|
||||
$button->signal_connect('clicked', sub {
|
||||
$label->set_text(++$count);
|
||||
});
|
||||
|
||||
# Show.
|
||||
$window->show_all;
|
||||
|
||||
# Main loop.
|
||||
Gtk->main;
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
(phixonline)-->
|
||||
<span style="color: #000080;font-style:italic;">-- demo\rosetta\Simple_window.exw</span>
|
||||
<span style="color: #008080;">with</span> <span style="color: #008080;">javascript_semantics</span>
|
||||
<span style="color: #008080;">include</span> <span style="color: #000000;">pGUI</span><span style="color: #0000FF;">.</span><span style="color: #000000;">e</span>
|
||||
|
||||
<span style="color: #004080;">Ihandle</span> <span style="color: #000000;">dlg</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">lbl</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">btn</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">vbox</span>
|
||||
<span style="color: #004080;">integer</span> <span style="color: #000000;">clicks</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">0</span>
|
||||
|
||||
<span style="color: #008080;">function</span> <span style="color: #000000;">click_cb</span><span style="color: #0000FF;">(</span><span style="color: #004080;">Ihandle</span> <span style="color: #000080;font-style:italic;">/*btn*/</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #000000;">clicks</span> <span style="color: #0000FF;">+=</span> <span style="color: #000000;">1</span>
|
||||
<span style="color: #7060A8;">IupSetStrAttribute</span><span style="color: #0000FF;">(</span><span style="color: #000000;">lbl</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"TITLE"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"clicked %d times"</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">clicks</span><span style="color: #0000FF;">})</span>
|
||||
<span style="color: #008080;">return</span> <span style="color: #004600;">IUP_DEFAULT</span><span style="color: #0000FF;">;</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
|
||||
|
||||
<span style="color: #7060A8;">IupOpen</span><span style="color: #0000FF;">()</span>
|
||||
<span style="color: #000000;">lbl</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">IupLabel</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"There have been no clicks yet"</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #000000;">btn</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">IupButton</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"Click me"</span><span style="color: #0000FF;">,</span> <span style="color: #7060A8;">Icallback</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"click_cb"</span><span style="color: #0000FF;">))</span>
|
||||
<span style="color: #000000;">vbox</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">IupVbox</span><span style="color: #0000FF;">({</span><span style="color: #000000;">lbl</span><span style="color: #0000FF;">,</span> <span style="color: #7060A8;">IupHbox</span><span style="color: #0000FF;">({</span><span style="color: #7060A8;">IupFill</span><span style="color: #0000FF;">(),</span><span style="color: #000000;">btn</span><span style="color: #0000FF;">,</span><span style="color: #7060A8;">IupFill</span><span style="color: #0000FF;">()})})</span>
|
||||
<span style="color: #000000;">dlg</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">IupDialog</span><span style="color: #0000FF;">(</span><span style="color: #000000;">vbox</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"MARGIN=10x10, GAP=10, RASTERSIZE=400x0"</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #7060A8;">IupSetAttribute</span><span style="color: #0000FF;">(</span><span style="color: #000000;">dlg</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"TITLE"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Simple windowed application"</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #7060A8;">IupShow</span><span style="color: #0000FF;">(</span><span style="color: #000000;">dlg</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">if</span> <span style="color: #7060A8;">platform</span><span style="color: #0000FF;">()!=</span><span style="color: #004600;">JS</span> <span style="color: #008080;">then</span>
|
||||
<span style="color: #7060A8;">IupMainLoop</span><span style="color: #0000FF;">()</span>
|
||||
<span style="color: #7060A8;">IupClose</span><span style="color: #0000FF;">()</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
|
||||
<!--
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
#!/usr/bin/picolisp /usr/lib/picolisp/lib.l
|
||||
|
||||
(load "@ext.l" "@lib/http.l" "@lib/xhtml.l" "@lib/form.l")
|
||||
|
||||
(zero *Count)
|
||||
|
||||
(de start ()
|
||||
(app)
|
||||
(action
|
||||
(html 0 "Clicks" NIL NIL
|
||||
(form NIL
|
||||
(gui '(+Init +TextField) "There have been no clicks yet")
|
||||
(----)
|
||||
(gui '(+JS +Button) "click me"
|
||||
'(set> (field -1)
|
||||
(pack "Clicked " (inc '*Count) " times") ) ) ) ) ) )
|
||||
|
||||
(server 8080 "!start")
|
||||
(wait)
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
GTK2.Widget mainwindow,clickcnt,clicker;
|
||||
int clicks;
|
||||
|
||||
void click()
|
||||
{
|
||||
clickcnt->set_text("Clicks: "+(++clicks));
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
GTK2.setup_gtk();
|
||||
mainwindow=GTK2.Window(GTK2.WindowToplevel);
|
||||
mainwindow->set_title("Click counter");
|
||||
mainwindow->add(GTK2.Vbox(0,10)
|
||||
->add(clickcnt=GTK2.Label("There have been no clicks yet"))
|
||||
->add(clicker=GTK2.Button("Click me"))
|
||||
)->show_all();
|
||||
mainwindow->signal_connect("delete_event",lambda() {exit(0);});
|
||||
clicker->signal_connect("clicked",click);
|
||||
return -1;
|
||||
}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
$Label1 = [System.Windows.Forms.Label]@{
|
||||
Text = 'There have been no clicks yet'
|
||||
Size = '200, 20' }
|
||||
$Button1 = [System.Windows.Forms.Button]@{
|
||||
Text = 'Click me'
|
||||
Location = '0, 20' }
|
||||
|
||||
$Button1.Add_Click(
|
||||
{
|
||||
$Script:Clicks++
|
||||
If ( $Clicks -eq 1 ) { $Label1.Text = "There has been 1 click" }
|
||||
Else { $Label1.Text = "There have been $Clicks clicks" }
|
||||
} )
|
||||
|
||||
$Form1 = New-Object System.Windows.Forms.Form
|
||||
$Form1.Controls.AddRange( @( $Label1, $Button1 ) )
|
||||
|
||||
$Clicks = 0
|
||||
|
||||
$Result = $Form1.ShowDialog()
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
Add-Type -AssemblyName System.Windows.Forms
|
||||
|
||||
$Label1 = New-Object System.Windows.Forms.Label
|
||||
$Label1.Text = 'There have been no clicks yet'
|
||||
$Label1.Size = '200, 20'
|
||||
|
||||
$Button1 = New-Object System.Windows.Forms.Button
|
||||
$Button1.Text = 'Click me'
|
||||
$Button1.Location = '0, 20'
|
||||
|
||||
$Button1.Add_Click(
|
||||
{
|
||||
$Script:Clicks++
|
||||
If ( $Clicks -eq 1 ) { $Label1.Text = "There has been 1 click" }
|
||||
Else { $Label1.Text = "There have been $Clicks clicks" }
|
||||
} )
|
||||
|
||||
$Form1 = New-Object System.Windows.Forms.Form
|
||||
$Form1.Controls.AddRange( @( $Label1, $Button1 ) )
|
||||
|
||||
$Clicks = 0
|
||||
|
||||
$Result = $Form1.ShowDialog()
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
[xml]$Xaml = @"
|
||||
<Window
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
x:Name = "Window1"
|
||||
Width = "200"
|
||||
Height = "120"
|
||||
ShowInTaskbar = "True">
|
||||
<StackPanel>
|
||||
<Label
|
||||
x:Name = "Label1"
|
||||
Height = "40"
|
||||
Width = "200"
|
||||
Content = "There have been no clicks"/>
|
||||
<Button
|
||||
x:Name = "Button1"
|
||||
Height = "25"
|
||||
Width = "60"
|
||||
Content = "Click me"/>
|
||||
</StackPanel>
|
||||
</Window>
|
||||
"@
|
||||
|
||||
$Window1 = [Windows.Markup.XamlReader]::Load( [System.Xml.XmlNodeReader]$Xaml )
|
||||
|
||||
$Label1 = $Window1.FindName( "Label1" )
|
||||
$Button1 = $Window1.FindName( "Button1" )
|
||||
|
||||
$Button1.Add_Click(
|
||||
{
|
||||
$Script:Clicks++
|
||||
If ( $Clicks -eq 1 ) { $Label1.Content = "There has been 1 click" }
|
||||
Else { $Label1.Content = "There have been $Clicks clicks" }
|
||||
} )
|
||||
|
||||
$Clicks = 0
|
||||
|
||||
$Result = $Window1.ShowDialog()
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
//Aamrun, 11th July 2022
|
||||
|
||||
int labelLeft = 100, labelTop = 100, labelWidth = 440, labelHeight = 100;
|
||||
|
||||
int labelTextLeft = 150, labelTextTop = 150;
|
||||
|
||||
int buttonLeft = 170, buttonTop = 230, buttonWidth = 300, buttonHeight = 100;
|
||||
|
||||
boolean hasBeenClicked = false;
|
||||
|
||||
int clicks = 0;
|
||||
|
||||
|
||||
void setup(){
|
||||
size(640,480);
|
||||
fill(255);
|
||||
rect(labelLeft,labelTop,labelWidth,labelHeight);
|
||||
fill(0);
|
||||
textSize(30);
|
||||
text("There have been no clicks yet",labelTextLeft,labelTextTop);
|
||||
fill(#c0c0c0);
|
||||
rect(buttonLeft,buttonTop,buttonWidth,buttonHeight);
|
||||
fill(0);
|
||||
text("Click Me !", buttonLeft + 50,buttonTop + 50);
|
||||
}
|
||||
|
||||
void mousePressed(){
|
||||
if(mouseX > buttonLeft && mouseX < buttonLeft + buttonWidth
|
||||
&& mouseY > buttonTop && mouseY < buttonTop + buttonHeight){
|
||||
hasBeenClicked = true;
|
||||
clicks++;
|
||||
}
|
||||
}
|
||||
|
||||
void draw(){
|
||||
if(hasBeenClicked == true){
|
||||
fill(255);
|
||||
rect(labelLeft,labelTop,labelWidth,labelHeight);
|
||||
fill(0);
|
||||
textSize(30);
|
||||
text("Clicks : " + str(clicks),labelTextLeft,labelTextTop);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
:- dynamic click/1.
|
||||
|
||||
dialog('Simple windowed application',
|
||||
[ object :=
|
||||
Simple_windowed_application,
|
||||
parts :=
|
||||
[ Simple_windowed_application :=
|
||||
dialog('Simple windowed application'),
|
||||
Name :=
|
||||
label(name, 'There have been no clicks yet'),
|
||||
BtnClick :=
|
||||
button(button)
|
||||
],
|
||||
modifications :=
|
||||
[ BtnClick := [ label := 'Click me !'
|
||||
]
|
||||
],
|
||||
layout :=
|
||||
[ area(Name,
|
||||
area(40, 20, 200, 18)),
|
||||
area(BtnClick,
|
||||
area(90, 60, 80, 24))
|
||||
],
|
||||
behaviour :=
|
||||
[
|
||||
BtnClick := [message := message(@prolog, btnclick, Name)]
|
||||
]
|
||||
]).
|
||||
|
||||
btnclick(Label) :-
|
||||
retract(click(V)),
|
||||
V1 is V+1,
|
||||
assert(click(V1)),
|
||||
sformat(A, '~w click(s)', [V1]),
|
||||
send(Label, selection, A).
|
||||
|
||||
simple_windowed :-
|
||||
retractall(click(_)),
|
||||
assert(click(0)),
|
||||
make_dialog(D, 'Simple windowed application'),
|
||||
send(D, open).
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
Define window_0
|
||||
Define window_0_Text_0, window_0_Button_1
|
||||
Define clicks, txt$, flags
|
||||
|
||||
flags = #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_ScreenCentered
|
||||
window_0 = OpenWindow(#PB_Any, 408, 104, 280, 45, "Simple windowed application", flags)
|
||||
If window_0
|
||||
SmartWindowRefresh(window_0, #True)
|
||||
window_0_Text_0 = TextGadget(#PB_Any, 5, 5, 165, 20, "There have been no clicks yet")
|
||||
window_0_Button_1 = ButtonGadget(#PB_Any, 190, 10, 85, 30, "Click me")
|
||||
|
||||
Repeat
|
||||
Select WaitWindowEvent()
|
||||
Case #PB_Event_Gadget
|
||||
Select EventGadget()
|
||||
Case window_0_Text_0
|
||||
Case window_0_Button_1
|
||||
clicks + 1
|
||||
txt$ = "You Clicked " + Str(clicks) + " time"
|
||||
If clicks > 1: txt$ + "s": EndIf
|
||||
SetGadgetText(window_0_Text_0, txt$)
|
||||
EndSelect
|
||||
Case #PB_Event_CloseWindow
|
||||
End
|
||||
EndSelect
|
||||
ForEver
|
||||
EndIf
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
from functools import partial
|
||||
import tkinter as tk
|
||||
|
||||
def on_click(label: tk.Label,
|
||||
counter: tk.IntVar) -> None:
|
||||
counter.set(counter.get() + 1)
|
||||
label["text"] = f"Number of clicks: {counter.get()}"
|
||||
|
||||
def main():
|
||||
window = tk.Tk()
|
||||
window.geometry("200x50+100+100")
|
||||
label = tk.Label(master=window,
|
||||
text="There have been no clicks yet")
|
||||
label.pack()
|
||||
counter = tk.IntVar()
|
||||
update_counter = partial(on_click,
|
||||
label=label,
|
||||
counter=counter)
|
||||
button = tk.Button(master=window,
|
||||
text="click me",
|
||||
command=update_counter)
|
||||
button.pack()
|
||||
window.mainloop()
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
import tkinter as tk
|
||||
|
||||
class ClickCounter(tk.Frame):
|
||||
def __init__(self, master=None):
|
||||
super().__init__(master)
|
||||
tk.Pack.config(self)
|
||||
self.label = tk.Label(self, text='There have been no clicks yet')
|
||||
self.label.pack()
|
||||
self.button = tk.Button(self,
|
||||
text='click me',
|
||||
command=self.click)
|
||||
self.button.pack()
|
||||
self.count = 0
|
||||
|
||||
def click(self):
|
||||
self.count += 1
|
||||
self.label['text'] = f'Number of clicks: {self.count}'
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
ClickCounter().mainloop()
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
from functools import partial
|
||||
from itertools import count
|
||||
|
||||
from PyQt5.QtWidgets import (QApplication,
|
||||
QLabel,
|
||||
QPushButton,
|
||||
QWidget)
|
||||
from PyQt5.QtCore import QRect
|
||||
|
||||
LABEL_GEOMETRY = QRect(0, 15, 200, 25)
|
||||
BUTTON_GEOMETRY = QRect(50, 50, 100, 25)
|
||||
|
||||
|
||||
def on_click(_, label, counter=count(1)):
|
||||
label.setText(f"Number of clicks: {next(counter)}")
|
||||
|
||||
|
||||
def main():
|
||||
application = QApplication([])
|
||||
window = QWidget()
|
||||
label = QLabel(text="There have been no clicks yet",
|
||||
parent=window)
|
||||
label.setGeometry(LABEL_GEOMETRY)
|
||||
button = QPushButton(text="click me",
|
||||
parent=window)
|
||||
button.setGeometry(BUTTON_GEOMETRY)
|
||||
update_counter = partial(on_click,
|
||||
label=label)
|
||||
button.clicked.connect(update_counter)
|
||||
window.show()
|
||||
application.lastWindowClosed.connect(window.close)
|
||||
application.exec_()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
import wx
|
||||
|
||||
|
||||
class ClickCounter(wx.Frame):
|
||||
def __init__(self):
|
||||
super().__init__(parent=None)
|
||||
self.count = 0
|
||||
self.button = wx.Button(parent=self,
|
||||
label="Click me!")
|
||||
self.label = wx.StaticText(parent=self,
|
||||
label="There have been no clicks yet")
|
||||
self.Bind(event=wx.EVT_BUTTON,
|
||||
handler=self.click,
|
||||
source=self.button)
|
||||
|
||||
self.sizer = wx.BoxSizer(wx.VERTICAL)
|
||||
self.sizer.Add(window=self.button,
|
||||
proportion=1,
|
||||
flag=wx.EXPAND)
|
||||
self.sizer.Add(window=self.label,
|
||||
proportion=1,
|
||||
flag=wx.EXPAND)
|
||||
self.SetSizer(self.sizer)
|
||||
self.sizer.Fit(self)
|
||||
|
||||
def click(self, _):
|
||||
self.count += 1
|
||||
self.label.SetLabel(f"Count: {self.count}")
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
app = wx.App()
|
||||
frame = ClickCounter()
|
||||
frame.Show()
|
||||
app.MainLoop()
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
library(gWidgets)
|
||||
library(gWidgetstcltk)
|
||||
win <- gwindow()
|
||||
lab <- glabel("There have been no clicks yet", container=win)
|
||||
btn <- gbutton("click me", container=win, handle=function(h, ...)
|
||||
{
|
||||
val <- as.numeric(svalue(lab))
|
||||
svalue(lab) <- ifelse(is.na(val) ,"1", as.character(val + 1))
|
||||
}
|
||||
)
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
REBOL [
|
||||
Title: "Simple Windowed Application"
|
||||
URL: http://rosettacode.org/wiki/Simple_Windowed_Application
|
||||
]
|
||||
|
||||
clicks: 0
|
||||
|
||||
; Simple GUI's in REBOL can be defined with 'layout', a
|
||||
; special-purpose language (dialect, in REBOL-speak) for specifying
|
||||
; interfaces. In the example below, I describe a gradient background
|
||||
; with a text label and a button. The block in the button section
|
||||
; details what should happen when it's clicked on -- increment the
|
||||
; number of clicks and update the label text.
|
||||
|
||||
; The 'view' function paints the layout on the screen and listens for
|
||||
; events.
|
||||
|
||||
view layout [
|
||||
backdrop effect [gradient 0x1 black coal]
|
||||
|
||||
label: vtext "There have been no clicks yet."
|
||||
|
||||
button maroon "click me" [
|
||||
clicks: clicks + 1
|
||||
set-face label reform ["clicks:" clicks]
|
||||
]
|
||||
]
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
#lang racket/gui
|
||||
|
||||
(define frame (new frame% [label "There have been no clicks yet"]))
|
||||
|
||||
(define num-clicks 0)
|
||||
(define (cb obj me)
|
||||
(set! num-clicks (add1 num-clicks))
|
||||
(send frame set-label (format "~a" num-clicks)))
|
||||
|
||||
(new button% [parent frame] [label "Click me"] [callback cb])
|
||||
(send frame show #t)
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
use GTK::Simple;
|
||||
use GTK::Simple::App;
|
||||
|
||||
my GTK::Simple::App $app .= new(title => 'Simple Windowed Application');
|
||||
|
||||
$app.size-request(350, 100);
|
||||
|
||||
$app.set-content(
|
||||
GTK::Simple::VBox.new(
|
||||
my $label = GTK::Simple::Label.new( text => 'There have been no clicks yet'),
|
||||
my $button = GTK::Simple::Button.new(label => 'click me'),
|
||||
)
|
||||
);
|
||||
|
||||
$app.border-width = 40;
|
||||
|
||||
$button.clicked.tap: {
|
||||
state $clicks += 1;
|
||||
$label.text = "There has been $clicks click{ 's' if $clicks != 1 }";
|
||||
}
|
||||
|
||||
$app.run;
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue