Simple windowed application: Difference between revisions

m
→‎{{header|Wren}}: Changed to Wren S/H
m (→‎{{header|Phix}}: added to distro)
m (→‎{{header|Wren}}: Changed to Wren S/H)
 
(59 intermediate revisions by 24 users not shown)
Line 11:
=={{header|AArch64 Assembly}}==
{{works with|as|Raspberry Pi 3B version Buster 64 bits}}
<syntaxhighlight lang="aarch64 assembly">
<lang AArch64 Assembly>
/* ARM assembly AARCH64 Raspberry PI 3B */
/* program simpleWin64.s link with X11 library */
Line 457:
/* for this file see task include a file in language AArch64 assembly */
.include "../includeARM64.inc"
</syntaxhighlight>
</lang>
 
=={{header|Ada}}==
Line 466:
Apart from GtkAda, there exist numerous other GUI bindings and libraries:
CLAW, AdaGLUT, GWindow, JEWL, win32ada, QtAda etc.
<langsyntaxhighlight lang="ada">with Gdk.Event; use Gdk.Event;
with Gtk.Button; use Gtk.Button;
with Gtk.Label; use Gtk.Label;
Line 532:
 
Gtk.Main.Main;
end Simple_Windowed_Application;</langsyntaxhighlight>
 
=={{header|APL}}==
{{works with|Dyalog APL}}
 
<langsyntaxhighlight APLlang="apl">∇ WindowedApplication
 
⍝ define a form with a label and a button
Line 553:
}
 
∇</langsyntaxhighlight>
 
{{works with|GNU APL}}
 
[my-application.apl]
<syntaxhighlight lang="apl">#!/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
</syntaxhighlight>
 
[my-application.css]
<syntaxhighlight lang="css">/* general button */
.BUTTON { color: #F00; background: #4F4; }
 
/* the OK button */
#OK-button { color: #A22; background: #FFF; }
</syntaxhighlight>
 
[my-application.glade]
<syntaxhighlight lang="xml"><?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>
</syntaxhighlight>
 
=={{header|AppleScript}}==
<syntaxhighlight lang="applescript">
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
</syntaxhighlight>
 
===Description===
AppleScript is the MacOS system automation language which creates scripts in various forms, including double-clickable applications, scripted folder actions, inner and inter application control and services, and more.
[https://www.melellington.com/simplewindow/Applescript-SWA.jpg Applescript Output]
 
=={{header|AutoHotkey}}==
<langsyntaxhighlight Autohotkeylang="autohotkey">; 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
Line 569 ⟶ 719:
GuiClose: ; the subroutine executed when the Window is closed
ExitApp ; exit this process
Return</langsyntaxhighlight>
 
=={{header|AutoIt}}==
<syntaxhighlight lang="autoit">
<lang AutoIt>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
Line 597 ⟶ 747:
EndSwitch
WEnd
</syntaxhighlight>
</lang>
 
=={{header|B4J}}==
<langsyntaxhighlight lang="freebasic">
#Region Project Attributes
#MainFormWidth: 593
Line 633 ⟶ 783:
Return falseVal
End If
End Sub</langsyntaxhighlight>
 
Layout1.fxml (as B4J uses JavaFX's Scene Builder)
<langsyntaxhighlight lang="cfm">
<?xml version="1.0" encoding="UTF-8"?>
 
Line 664 ⟶ 814:
</children>
</AnchorPane>
</syntaxhighlight>
</lang>
 
=={{header|BaConBASIC}}==
==={{header|BaCon}}===
Requires BaCon version 4.0.1 or higher, using GTK3.
<langsyntaxhighlight lang="bacon">OPTION GUI TRUE
PRAGMA GUI gtk3
 
Line 685 ⟶ 836:
CALL GUISET(gui, "label", "label", "Button clicks: " & STR$(clicked))
ENDSELECT
WEND</langsyntaxhighlight>
 
==={{header|BBC BASIC}}===
{{works with|BBC BASIC for Windows}}
<langsyntaxhighlight lang="bbcbasic"> INSTALL @lib$+"WINLIB2"
INSTALL @lib$+"WINLIB5"
Line 706 ⟶ 857:
clicks% += 1
SYS "SetDlgItemText", !window%, 100, "Number of clicks = " + STR$(clicks%)
ENDPROC</langsyntaxhighlight>
 
=={{header|Beads}}==
<syntaxhighlight lang="beads">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)</syntaxhighlight>
 
=={{header|C}}==
{{libheader|GTK}}
<langsyntaxhighlight lang="c">#include <stdio.h>
#include <gtk/gtk.h>
 
Line 749 ⟶ 945:
gtk_main();
return 0;
}</langsyntaxhighlight>
 
=={{header|C sharp|C#}}==
 
<langsyntaxhighlight lang="csharp">using System.Windows.Forms;
 
class RosettaForm : Form
Line 782 ⟶ 978:
}
}
</syntaxhighlight>
</lang>
 
=={{header|C++}}==
Line 788 ⟶ 984:
{{libheader|Qt}} 4.4 with source files as shown , built from a Makefile generated by the Qt tool qmake
===clickcounter.h===
<langsyntaxhighlight lang="cpp">#ifndef CLICKCOUNTER_H
#define CLICKCOUNTER_H
 
Line 808 ⟶ 1,004:
void countClicks( ) ;
} ;
#endif</langsyntaxhighlight>
===clickcounter.cpp===
<langsyntaxhighlight lang="cpp">#include <QPushButton>
#include <QLabel>
#include <QVBoxLayout>
Line 829 ⟶ 1,025:
number++ ;
countLabel->setText( QString( "The button has been clicked %1 times!").arg( number ) ) ;
}</langsyntaxhighlight>
===main.cpp===
<langsyntaxhighlight Cpplang="cpp">#include <QApplication>
#include "clickcounter.h"
 
Line 839 ⟶ 1,035:
counter.show( ) ;
return app.exec( ) ;
}</langsyntaxhighlight>
 
=={{header|Clojure}}==
<langsyntaxhighlight lang="clojure">(ns counter-window
(:import (javax.swing JFrame JLabel JButton)))
 
Line 866 ⟶ 1,062:
(.setDefaultCloseOperation JFrame/EXIT_ON_CLOSE)
(.setVisible true))))
</syntaxhighlight>
</lang>
 
=={{header|Common Lisp}}==
Line 874 ⟶ 1,070:
{{works with|McCLIM}}
 
<langsyntaxhighlight lang="lisp">(defpackage #:rcswa
(:use #:clim #:clim-lisp))
(in-package #:rcswa)</langsyntaxhighlight>
 
This version uses CLIM's command system:
 
<langsyntaxhighlight lang="lisp">(define-application-frame simple-windowed-application ()
((clicks :initform 0
:accessor clicks-of))
Line 898 ⟶ 1,094:
(define-simple-windowed-application-command (com-click-me :menu t)
()
(incf (clicks-of *application-frame*)))</langsyntaxhighlight>
 
This version uses an explicit pushbutton gadget, and may be used if more direct control over the UI layout and behavior is needed:
 
<langsyntaxhighlight lang="lisp">(define-application-frame simple-windowed-application ()
((clicks :initform 0
:accessor clicks-of))
Line 928 ⟶ 1,124:
(vertically (:equalize-width nil :align-x :center)
the-label
(spacing (:thickness 10) the-button)))))</langsyntaxhighlight>
 
In either case, the window is opened with:
 
<langsyntaxhighlight lang="lisp">(run-frame-top-level (make-application-frame 'simple-windowed-application))</langsyntaxhighlight>
 
=={{header|D}}==
Line 938 ⟶ 1,134:
{{works with|D|1}}
{{libheader|DFL}}
<langsyntaxhighlight lang="d">module winapp ;
import dfl.all ;
import std.string ;
Line 968 ⟶ 1,164:
void main() {
Application.run(new MainForm);
}</langsyntaxhighlight>
 
===Hybrid===
Line 990 ⟶ 1,186:
}
SimpleWindow.d:
<langsyntaxhighlight lang="d">module SimpleWindow;
import tango.text.convert.Integer;
import tango.core.Thread; // For Thread.yield
Line 1,025 ⟶ 1,221:
Thread.yield();
}
}</langsyntaxhighlight>
 
=={{header|Delphi}}==
Line 1,035 ⟶ 1,231:
'''NOTE:''' The project name here must match the name of the file.
 
<langsyntaxhighlight lang="delphi">-- begin file --
 
Program SingleWinApp ;
Line 1,121 ⟶ 1,317:
Application.Run ;
 
end. // Program</langsyntaxhighlight>
 
=={{header|E}}==
{{libheader|Swing}}
{{works with|E-on-Java}}
<langsyntaxhighlight lang="e">when (currentVat.morphInto("awt")) -> {
var clicks := 0
def w := <swing:makeJFrame>("Rosetta Code 'Simple Windowed Application'")
Line 1,141 ⟶ 1,337:
w.pack()
w.show()
}</langsyntaxhighlight>
 
=={{header|EchoLisp}}==
UI elements are HTML DOM Nodes. '''ui-add''' adds an element to the UI. '''ui-on-event''' adds a (Lisp) event handler to an element.
<langsyntaxhighlight lang="scheme">
(define (ui-add-button text) ;; helper
(define b (ui-create-element "button" '((type "button"))))
Line 1,168 ⟶ 1,364:
 
(panel)
</syntaxhighlight>
</lang>
 
=={{header|Elena}}==
ELENA 56.0x:
<langsyntaxhighlight lang="elena">import forms;
import extensions;
 
Line 1,184 ⟶ 1,380:
constructor new()
<= super new()
{
lblClicks := Label.new();
Line 1,212 ⟶ 1,408:
lblClicks.Caption := "Clicks: " + clicksCount.toString();
}
}</langsyntaxhighlight>
 
=={{header|Euphoria}}==
===EuWinGUI===
{{libheader|EuWinGUI}}
<langsyntaxhighlight lang="euphoria">include EuWinGUI.ew
 
Window("EuWinGUI - Simple windowed application",100,100,360,100)
Line 1,235 ⟶ 1,431:
end while
 
CloseApp(0)</langsyntaxhighlight>
 
=={{header|F_Sharp|F#}}==
{{trans|C#}}
<langsyntaxhighlight lang="fsharp">open System.Windows.Forms
 
let mutable clickCount = 0
Line 1,254 ⟶ 1,450:
form.Controls.Add(button)
 
Application.Run(form)</langsyntaxhighlight>
 
=={{header|Factor}}==
<langsyntaxhighlight lang="factor">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 ;
Line 1,283 ⟶ 1,479:
: main ( -- ) 1 n set build-ui ;
 
MAIN: main</langsyntaxhighlight>
 
=={{header|Fantom}}==
 
<langsyntaxhighlight lang="fantom">
using fwt
using gfx
Line 1,317 ⟶ 1,513:
}
}
</syntaxhighlight>
</lang>
 
=={{header|Forth}}==
===with MINOS===
{{works with|bigFORTH}}
{{libheader|MINOS}}
<langsyntaxhighlight lang="forth">also minos
text-label ptr click-label
Variable click# click# off
Line 1,332 ⟶ 1,529:
click-label assign ]S X" Click me" button new
&2 vabox new panel s" Clicks" assign show endwith ;
click-win</langsyntaxhighlight>
 
===The same with Theseus===
{{works with|bigFORTH}}
{{libheader|Theseus}}
<langsyntaxhighlight lang="forth">#! xbigforth
\ automatic generated code
\ do not edit
Line 1,371 ⟶ 1,569:
$1 0 ?DO stop LOOP bye ;
script? [IF] main [THEN]
previous previous previous</langsyntaxhighlight>
 
 
===with Tk/wish===
{{works with|gforth|0.7.3}}
{{libheader|Tk}}
Creates a GUI with 'wish' from tk library. Uses pipes on standard input and output (created throw linux system calls).
 
<syntaxhighlight lang="forth">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</syntaxhighlight>
 
===with iMops===
{{works with|iMops|2.23}}
Macintosh only - Uses native MacOS GUI calls to Cocoa.
<syntaxhighlight lang="forth">
: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</syntaxhighlight>
 
=={{header|FreeBASIC}}==
<syntaxhighlight lang="freebasic">
<lang FreeBasic>
#Include "windows.bi"
 
Line 1,409 ⟶ 1,685:
 
End
</syntaxhighlight>
</lang>
 
=={{header|FutureBasic}}==
<syntaxhighlight lang="futurebasic">_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</syntaxhighlight>
 
=={{header|Gambas}}==
<langsyntaxhighlight lang="gambas">iCount As Integer 'Counter of clicks!
hLabel As Label 'We need a Label
 
Line 1,448 ⟶ 1,762:
hLabel.text = "The button has been clicked " & iCount & " times" 'Display the amount of clicks"
 
End</langsyntaxhighlight>
 
=={{header|Gastona}}==
<langsyntaxhighlight lang="gastona">#javaj#
 
<frames> main, Simple click counter
Line 1,470 ⟶ 1,784:
-->, lClicks data!,, //@<NN> clicks so far
 
</syntaxhighlight>
</lang>
 
=={{header|Go}}==
{{libheader|go-gtk}}
<langsyntaxhighlight lang="go">package main
 
import (
Line 1,506 ⟶ 1,820:
window.ShowAll()
gtk.Main()
}</langsyntaxhighlight>
 
=={{header|Groovy}}==
<langsyntaxhighlight lang="groovy">import groovy.swing.SwingBuilder
 
count = 0
Line 1,519 ⟶ 1,833:
}
}
}</langsyntaxhighlight>
 
'''with binding:'''
<langsyntaxhighlight lang="groovy">import groovy.swing.SwingBuilder
import groovy.beans.Bindable
 
Line 1,537 ⟶ 1,851:
}
}
}</langsyntaxhighlight>
 
=={{header|Guish}}==
<syntaxhighlight>
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+
</syntaxhighlight>
 
=={{header|Haskell}}==
{{libheader|Gtk}} from [http://hackage.haskell.org/packages/hackage.html HackageDB]
<langsyntaxhighlight lang="haskell">import Graphics.UI.Gtk
import Data.IORef
 
Line 1,570 ⟶ 1,898:
widgetShowAll window
 
mainGUI</langsyntaxhighlight>
 
=={{header|HicEst}}==
<langsyntaxhighlight lang="hicest"> CHARACTER label="There have been no clicks yet"
 
DO count = 1, 1E100 ! "forever"
Line 1,580 ⟶ 1,908:
ENDDO
 
END</langsyntaxhighlight>
 
==Icon and {{header|Unicon}}==
 
This version is Unicon-specific:
<langsyntaxhighlight lang="unicon">import gui
$include "guih.icn"
 
Line 1,615 ⟶ 1,943:
initially
self.Dialog.initially()
end</langsyntaxhighlight>
 
=={{header|IDL}}==
<langsyntaxhighlight lang="idl">pro counter, ev
widget_control, ev.top, get_uvalue=tst
tst[1] = tst[1]+1
Line 1,631 ⟶ 1,959:
xmanager, "Simple", Id
end</langsyntaxhighlight>
 
=={{header|J}}==
'''J 9.x''' (note: the J 8.x version works fine under J 9.x)<syntaxhighlight lang="j">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}}</syntaxhighlight>
'''J 8.x'''
<langsyntaxhighlight lang="j">SIMPLEAPP=: noun define
pc simpleApp;
cc inc button;cn "Click me";
Line 1,654 ⟶ 1,993:
simpleApp_cancel=: simpleApp_close
 
simpleApp_run''</langsyntaxhighlight>
 
'''J 6.x'''
<langsyntaxhighlight lang="j">SIMPLEAPP=: noun define
pc simpleApp;
xywh 131 11 44 12;cc inc button;cn "Click me";
Line 1,678 ⟶ 2,017:
simpleApp_cancel=: simpleApp_close
 
simpleApp_run''</langsyntaxhighlight>
 
=={{header|Java}}==
{{libheader|AWT}}
{{libheader|Swing}}
<langsyntaxhighlight lang="java">import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
Line 1,720 ⟶ 2,059:
);
}
}</langsyntaxhighlight>
 
=={{header|JavaFX Script}}==
{{libheader|JavaFX 1.2}}
<langsyntaxhighlight lang="javafx">import javafx.stage.*;
import javafx.scene.*;
import javafx.scene.layout.*;
Line 1,748 ⟶ 2,087:
}
}
}</langsyntaxhighlight>
 
=={{header|JavaScript}}==
<syntaxhighlight lang="javascript">
<html>
<head>
<title>Simple Window Application</title>
</head>
 
<body>
<br> &nbsp &nbsp &nbsp &nbsp
 
<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>
</syntaxhighlight>
 
[http://melellington.com/simplewindow/javascript-simple-window.html Javascript Output]
 
----
 
=={{header|Julia}}==
Uses the Gtk library.
<syntaxhighlight lang="julia">using Gtk.ShortNames
<lang julia>
using Gtk.ShortNames
 
 
function clickwindow()
Line 1,763 ⟶ 2,137:
push!(vbox, lab)
push!(vbox, but)
setpropertyset_gtk_property!(vbox, :expand, lab, true)
setpropertyset_gtk_property!(vbox, :spacing, 20)
callback(w) = (clicks += 1; setpropertyset_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)
showall(win)
wait(c)
end
 
 
clickwindow()
</syntaxhighlight>
</lang>
 
=={{header|Kotlin}}==
{{trans|Java}}
<langsyntaxhighlight lang="scala">// version 1.0.6
 
import java.awt.BorderLayout
Line 1,817 ⟶ 2,190:
fun main(args: Array<String>) {
Clicks() // call the constructor where all the magic happens
}</langsyntaxhighlight>
 
{{libheader|TornadoFX}}
<langsyntaxhighlight lang="scala">
import tornadofx.*
 
Line 1,834 ⟶ 2,207:
 
fun main(args: Array<String>) = launch<ClicksApp>(args)
</syntaxhighlight>
</lang>
 
=={{header|Lambdatalk}}==
Line 1,840 ⟶ 2,213:
 
The code is tested in this page: http://epsilonwiki.free.fr/lambdaway/?view=popup
<syntaxhighlight lang="scheme">
<lang Scheme>
1) the label: {div {@ id="label"} There have been no clicks yet }
2) the button: {input {@ type="button" value="click me" onclick="CLICKAPP.inc()" }}
Line 1,854 ⟶ 2,227:
return {inc:inc}
})();
</syntaxhighlight>
</lang>
 
=={{header|Liberty BASIC}}==
<langsyntaxhighlight lang="lb">nomainwin
button #demo.btn, "Click Me", [btnClick], UL, 20, 50
statictext #demo.num, "There have been no clicks yet.", 20, 100, 240, 30
Line 1,872 ⟶ 2,245:
nClicks = nClicks + 1
#demo.num "The button has been clicked ";nClicks;" times."
wait</langsyntaxhighlight>
 
=={{header|Lingo}}==
The standard approach in Lingo for creating GUIs and assigning scripts for handling user interaction is to use the graphical IDE/GUI-Builder "Director". But windows and sprites (visual elements) can also be created and scripted programmatically only:
<langsyntaxhighlight lang="lingo">on startMovie
 
-- window settings
Line 1,922 ⟶ 2,295:
_movie.stage.visible = 1
 
end</langsyntaxhighlight>
 
 
=={{header|LiveCode}}==
 
The LiveCode script here meets the specification 100%,
but is not in common LiveCode style. Typically the
mouseUp command would be attached to the button
rather than to the 'card' (window). Nevertheless, the card
is in the object's message path so the button works well.
 
<syntaxhighlight lang="livecode">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</syntaxhighlight>
 
[http://melellington.com/simplewindow/livecode-simple-window.jpg LiveCode Output]
 
 
 
----
 
=={{header|Logo}}==
Line 1,928 ⟶ 2,326:
{{works with|MSWlogo}}
 
<langsyntaxhighlight lang="logo">to clickwindow
windowCreate "root "clickWin [Click that button!!!] 0 0 100 100 []
Make "i 0
Line 1,936 ⟶ 2,334:
ifelse :i=1 [staticUpdate "clickSt (list "clicked :i "time)] ~
[staticUpdate "clickSt (list "clicked :i "times)]]
end</langsyntaxhighlight>
 
The window is opened with:
<syntaxhighlight lang ="logo">clickwindow</langsyntaxhighlight>
 
=={{header|Lua}}==
<langsyntaxhighlight lang="lua">require"iuplua"
l = iup.label{title="There have been no clicks yet."}
b = iup.button{title="Click me!"}
Line 1,955 ⟶ 2,353:
if (not iup.MainLoopLevel or iup.MainLoopLevel()==0) then
iup.MainLoop()
end</langsyntaxhighlight>
 
=={{header|M2000 Interpreter}}==
Line 1,965 ⟶ 2,363:
 
 
<syntaxhighlight lang="m2000 interpreter">
<lang M2000 Interpreter>
Module CheckIt {
Declare Form1 Form
Line 1,984 ⟶ 2,382:
}
Checkit
</syntaxhighlight>
</lang>
 
=={{header|Mathematica}}/{{header|Wolfram Language}}==
<langsyntaxhighlight Mathematicalang="mathematica">DynamicModule[{n = 0},
CreateDialog[{Dynamic@
TextCell@If[n == 0, "There have been no clicks yet", n],
Button["click me", n++]}]]</langsyntaxhighlight>
 
=={{header|MAXScript}}==
<langsyntaxhighlight lang="maxscript">rollout buttonClick "Button Click"
(
label l "There have been no clicks yet"
Line 2,005 ⟶ 2,403:
)
)
createDialog buttonClick</langsyntaxhighlight>
 
=={{header|Modula-3}}==
Line 2,011 ⟶ 2,409:
 
This code uses <tt>Trestle</tt>, a windowing toolkit developed for Modula-3.
<langsyntaxhighlight lang="modula3">MODULE Click EXPORTS Main;
 
IMPORT Fmt, TextVBT, ButtonVBT, VBT, Axis, HVSplit, TrestleComm, Trestle;
Line 2,030 ⟶ 2,428:
Trestle.Install(main);
Trestle.AwaitDelete(main);
END Click.</langsyntaxhighlight>
 
To compile the above code, you need to create a file called <tt>m3makefile</tt> which contains:
Line 2,041 ⟶ 2,439:
 
=={{header|Nanoquery}}==
<langsyntaxhighlight lang="nanoquery">import Nanoquery.Util.Windows
 
// define the necessary objects
Line 2,075 ⟶ 2,473:
 
// show the window
$w.show()</langsyntaxhighlight>
 
=={{header|Nim}}==
{{libheader|GTK2}}
<lang nim>
<syntaxhighlight lang="nim">import gtk2
 
nim_init()
 
var
Line 2,092 ⟶ 2,492:
l.setText "You clicked me " & $counter & " times"
 
nim_init()
win.setTitle "Click me"
vbox.add label
Line 2,100 ⟶ 2,499:
discard button.signal_connect("clicked", SignalFunc clickedMe, label)
win.showAll()
main()</langsyntaxhighlight>
 
=={{header|Objective-C}}==
{{works with|GNUstep}}
<langsyntaxhighlight lang="objc">#include <Foundation/Foundation.h>
#include <AppKit/AppKit.h>
 
Line 2,116 ⟶ 2,515:
- (BOOL)applicationShouldTerminateAfterLastWindowClosed: (NSNotification *)notification;
- (void)advanceCounter: (id)sender;
@end</langsyntaxhighlight>
 
<langsyntaxhighlight lang="objc">@implementation ClickMe : NSWindow
-(instancetype) init
{
Line 2,188 ⟶ 2,587:
}
return 0;
}</langsyntaxhighlight>
 
=={{header|OCaml}}==
* with '''Labltk''', the '''Tk''' OCaml binding:
<langsyntaxhighlight lang="ocaml">#directory "+labltk"
#load "labltk.cma"
 
Line 2,207 ⟶ 2,606:
Tk.pack [Tk.coe label; Tk.coe b];
Tk.mainLoop ();
;;</langsyntaxhighlight>
 
* with '''LablGTK2''', the '''GTK2''' OCaml binding:
<langsyntaxhighlight lang="ocaml">open GMain
 
let window = GWindow.window ~border_width:2 ()
Line 2,222 ⟶ 2,621:
button#connect#clicked ~callback:window#destroy;
window#show ();
Main.main ()</langsyntaxhighlight>
 
=={{header|ooRexx}}==
<langsyntaxhighlight lang="oorexx">/* REXX ***************************************************************************************
* 18.06.2014 Walter Pachl shortened from Rony Flatscher's bsf4oorexx (see sourceforge) samples
* Look there for ShowCount.rxj
Line 2,309 ⟶ 2,708:
Otherwise how_often=userData~i 'times'
End
userData~label~setText("Button was pressed" how_often) -- display text</langsyntaxhighlight>
 
=={{header|Oz}}==
<langsyntaxhighlight lang="oz">functor
import
Application
Line 2,330 ⟶ 2,729:
{Window show}
end
</syntaxhighlight>
</lang>
 
=={{header|Pascal}}==
Line 2,338 ⟶ 2,737:
{{libheader|Gtk2}}
Ported from the C example.
<langsyntaxhighlight lang="pascal">Program SimpleWindowApplication;
 
uses
Line 2,384 ⟶ 2,783:
Gtk_widget_show_all(Gtk_WIDGET(win));
Gtk_main();
end.</langsyntaxhighlight>
 
=={{header|Perl}}==
==={{libheader|Perl/Tk}}===
<langsyntaxhighlight lang="perl">use Tk;
 
$main = MainWindow->new;
Line 2,397 ⟶ 2,796:
-command => sub { $l->configure(-text => 'Number of clicks: '.(++$count).'.'); },
)->pack;
MainLoop();</langsyntaxhighlight>
 
==={{libheader|GTK}} {{works with|Perl/Gtk}}===
<langsyntaxhighlight lang="perl">use Gtk '-init';
 
# Window.
Line 2,426 ⟶ 2,825:
 
# Main loop.
Gtk->main;</langsyntaxhighlight>
 
=={{header|Phix}}==
{{libheader|Phix/basics}}
{{libheader|Phix/pGUI}}
{{libheader|Phix/online}}
<lang Phix>-- demo\rosetta\Simple_window.exw
You can run this online [http://phix.x10.mx/p2js/simplewindow.htm here].
include pGUI.e
<!--<syntaxhighlight lang="phix">(phixonline)-->
 
<span style="color: #000080;font-style:italic;">-- demo\rosetta\Simple_window.exw</span>
Ihandle dlg, lbl, btn, vbox
<span style="color: #008080;">with</span> <span style="color: #008080;">javascript_semantics</span>
integer clicks = 0
<span style="color: #008080;">include</span> <span style="color: #000000;">pGUI</span><span style="color: #0000FF;">.</span><span style="color: #000000;">e</span>
 
function click_cb(Ihandle /*btn*/)
<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>
clicks += 1
<span style="color: #004080;">integer</span> <span style="color: #000000;">clicks</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">0</span>
IupSetStrAttribute(lbl,"TITLE","clicked %d times",{clicks})
return IUP_DEFAULT;
<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>
end function
<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>
IupOpen()
<span style="color: #008080;">return</span> <span style="color: #004600;">IUP_DEFAULT</span><span style="color: #0000FF;">;</span>
lbl = IupLabel("There have been no clicks yet")
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
btn = IupButton("Click me", Icallback("click_cb"))
vbox = IupVbox({lbl, IupHbox({IupFill(),btn,IupFill()})})
<span style="color: #7060A8;">IupOpen</span><span style="color: #0000FF;">()</span>
dlg = IupDialog(vbox,"MARGIN=10x10, GAP=10, RASTERSIZE=400x0")
<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>
IupSetAttribute(dlg, "TITLE", "Simple windowed application")
<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>
IupCloseOnEscape(dlg)
<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>
IupShow(dlg)
<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>
IupMainLoop()
<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>
IupClose()</lang>
<span style="color: #7060A8;">IupShow</span><span style="color: #0000FF;">(</span><span style="color: #000000;">dlg</span><span style="color: #0000FF;">)</span>
The above is cross platform (win/lnx), 32/64 bit. On request, I have restored the following arwen version (win32-only).<br>
<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>
The included demo\edita contains a window painter that lets you reposition/resize this very easily (alas the equivalent for the above is progressing rather leisurely).
<span style="color: #7060A8;">IupMainLoop</span><span style="color: #0000FF;">()</span>
<lang Phix>include arwen.ew
<span style="color: #7060A8;">IupClose</span><span style="color: #0000FF;">()</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
constant main = create(Window,"Simple windowed application",0,0,100,100,300,200, 0)
<!--</syntaxhighlight>-->
constant label = create(Label, "There have been no clicks yet",0,main,10,10,250,30,0)
The above is cross platform, win/lnx, 32/64 bit, and runs in a browser.
constant btn = create(Button,"Click me",0,main,100,50,100,30,0)
An older win32-only version can be found [[Simple_windowed_application/Arwen|here]].
integer count = 0
function mainHandler(integer id, integer msg, atom /*wParam*/, object /*lParam*/)
if id=btn and msg=WM_COMMAND then
count += 1
setText(label,sprintf("clicked %d times",count))
end if
return 0
end function
setHandler(btn,routine_id("mainHandler"))
WinMain(main,SW_NORMAL)</lang>
 
=={{header|PicoLisp}}==
The standard PicoLisp GUI is HTTP based. Connect your browser to
http://localhost:8080 after starting the following script.
<langsyntaxhighlight PicoLisplang="picolisp">#!/usr/bin/picolisp /usr/lib/picolisp/lib.l
 
(load "@ext.l" "@lib/http.l" "@lib/xhtml.l" "@lib/form.l")
Line 2,493 ⟶ 2,882:
 
(server 8080 "!start")
(wait)</langsyntaxhighlight>
 
=={{header|Pike}}==
{{libheader|Gtk2}}
<langsyntaxhighlight Pikelang="pike">GTK2.Widget mainwindow,clickcnt,clicker;
int clicks;
 
Line 2,518 ⟶ 2,907:
return -1;
}
</syntaxhighlight>
</lang>
 
=={{header|PowerShell}}==
===Windows Forms===
{{works with|PowerShell|3}}
<syntaxhighlight lang="powershell">
<lang PowerShell>
$Label1 = [System.Windows.Forms.Label]@{
Text = 'There have been no clicks yet'
Line 2,544 ⟶ 2,933:
$Result = $Form1.ShowDialog()
</syntaxhighlight>
</lang>
{{works with|PowerShell|2}}
<syntaxhighlight lang="powershell">
<lang PowerShell>
Add-Type -AssemblyName System.Windows.Forms
Line 2,570 ⟶ 2,959:
$Result = $Form1.ShowDialog()
</syntaxhighlight>
</lang>
===WPF===
<syntaxhighlight lang="powershell">
<lang PowerShell>
[xml]$Xaml = @"
<Window
Line 2,611 ⟶ 3,000:
$Result = $Window1.ShowDialog()
</syntaxhighlight>
</lang>
 
=={{header|Processing}}==
<syntaxhighlight lang="java">
//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);
}
}
 
 
</syntaxhighlight>
 
=={{header|Prolog}}==
Works with SWI-Prolog and XPCE.
<langsyntaxhighlight Prologlang="prolog">:- dynamic click/1.
 
dialog('Simple windowed application',
Line 2,657 ⟶ 3,095:
send(D, open).
 
</syntaxhighlight>
</lang>
 
=={{header|PureBasic}}==
<langsyntaxhighlight PureBasiclang="purebasic">Define window_0
Define window_0_Text_0, window_0_Button_1
Define clicks, txt$, flags
Line 2,686 ⟶ 3,124:
EndSelect
ForEver
EndIf</langsyntaxhighlight>
 
=={{header|Python}}==
Line 2,692 ⟶ 3,130:
==={{libheader|Tkinter}}===
{{works with|Python|3.7}}
<langsyntaxhighlight lang="python">from functools import partial
import tkinter as tk
 
Line 2,718 ⟶ 3,156:
if __name__ == '__main__':
main()
</syntaxhighlight>
</lang>
 
The same in OO manner:
<langsyntaxhighlight lang="python">import tkinter as tk
 
class ClickCounter(tk.Frame):
Line 2,742 ⟶ 3,180:
if __name__ == "__main__":
ClickCounter().mainloop()
</syntaxhighlight>
</lang>
 
==={{libheader|PyQt}}===
<langsyntaxhighlight lang="python">from functools import partial
from itertools import count
 
Line 2,781 ⟶ 3,219:
if __name__ == '__main__':
main()
</syntaxhighlight>
</lang>
 
==={{libheader|wxPython}}===
<langsyntaxhighlight lang="python">import wx
 
 
Line 2,819 ⟶ 3,257:
frame.Show()
app.MainLoop()
</syntaxhighlight>
</lang>
 
=={{header|R}}==
Line 2,827 ⟶ 3,265:
 
gWidgetsRGtk2 or gWidgetsrJava can be used as an alternative to gWidgetstcltk.
<langsyntaxhighlight lang="r">library(gWidgets)
library(gWidgetstcltk)
win <- gwindow()
Line 2,836 ⟶ 3,274:
svalue(lab) <- ifelse(is.na(val) ,"1", as.character(val + 1))
}
)</langsyntaxhighlight>
 
=={{header|Racket}}==
 
<langsyntaxhighlight lang="racket">
#lang racket/gui
 
Line 2,852 ⟶ 3,290:
(new button% [parent frame] [label "Click me"] [callback cb])
(send frame show #t)
</syntaxhighlight>
</lang>
 
=={{header|Raku}}==
(formerly Perl 6)
{{libheader|GTK}}
<syntaxhighlight lang="raku" perl6line>use GTK::Simple;
use GTK::Simple::App;
 
Line 2,878 ⟶ 3,316:
}
 
$app.run;</langsyntaxhighlight>
 
=={{header|RapidQ}}==
RapidQ has form designer that produces RapidQ Basic source code. You can get the same result by writing the code yourself with a text editor. Then compile it either from within IDE or by using the command line compiler.
 
<langsyntaxhighlight lang="rapidq">DECLARE SUB buttonClick
 
CREATE form AS QForm
Line 2,908 ⟶ 3,346:
END SUB
 
form.ShowModal</langsyntaxhighlight>
 
=={{header|REBOL}}==
<langsyntaxhighlight REBOLlang="rebol">REBOL [
Title: "Simple Windowed Application"
URL: http://rosettacode.org/wiki/Simple_Windowed_Application
Line 2,937 ⟶ 3,375:
set-face label reform ["clicks:" clicks]
]
]</langsyntaxhighlight>
 
=={{header|Red}}==
<syntaxhighlight lang="red">Red []
 
clicks: 0
 
view [
t: text "There have been no clicks yet" return
button "click me" [
clicks: clicks + 1
t/data: rejoin ["clicks: " clicks]
]
]</syntaxhighlight>
 
=={{header|Ring}}==
<langsyntaxhighlight lang="ring">
Load "guilib.ring"
 
Line 2,962 ⟶ 3,413:
num += 1
lineedit1.settext( "you clicked me " + num + " times")
</syntaxhighlight>
</lang>
Output:
 
Line 2,969 ⟶ 3,420:
=={{header|Ruby}}==
{{libheader|Ruby/Tk}}
<langsyntaxhighlight lang="ruby">require 'tk'
str = TkVariable.new("no clicks yet")
count = 0
Line 2,979 ⟶ 3,430:
pack
end
Tk.mainloop</langsyntaxhighlight>
 
{{libheader|Shoes}}
<langsyntaxhighlight lang="ruby">Shoes.app do
stack do
@count = 0
Line 2,991 ⟶ 3,442:
end
end
end</langsyntaxhighlight>
 
=={{header|Run BASIC}}==
<langsyntaxhighlight lang="runbasic">msg$ = "There have been no clicks yet"
[loop] cls ' clear screen
print msg$
Line 3,003 ⟶ 3,454:
clicks = clicks + 1
msg$ = "Button has been clicked ";clicks;" times"
goto [loop]</langsyntaxhighlight>
 
=={{header|Rust}}==
{{libheader|iced}}
<syntaxhighlight lang="rust">use iced::{ // 0.2.0
button, Button, Column, Element, Length,
Text, Sandbox, Settings, Space,
};
 
#[derive(Debug, Copy, Clone)]
struct Pressed;
struct Simple {
value: i32,
button: button::State,
}
 
impl Sandbox for Simple {
type Message = Pressed;
 
fn new() -> Simple {
Simple {
value: 0,
button: button::State::new(),
}
}
 
fn title(&self) -> String {
"Simple Windowed Application".into()
}
 
fn view(&mut self) -> Element<Self::Message> {
Column::new()
.padding(20)
.push({
let text = match self.value {
0 => "there have been no clicks yet".into(),
1 => "there has been 1 click".into(),
n => format!("there have been {} clicks", n),
};
Text::new(text).size(24)
}).push(
Space::with_height(Length::Fill)
).push(
Button::new(&mut self.button, Text::new("Click Me!"))
.on_press(Pressed)
).into()
}
 
fn update(&mut self, _: Self::Message) {
self.value += 1;
}
}
 
fn main() {
let mut settings = Settings::default();
settings.window.size = (600, 400);
Simple::run(settings).unwrap();
}</syntaxhighlight>
 
=={{header|Scala}}==
{{libheader|Scala}}
<langsyntaxhighlight Scalalang="scala">import scala.swing.{ BorderPanel, Button, Label, MainFrame, SimpleSwingApplication }
import scala.swing.event.ButtonClicked
 
Line 3,028 ⟶ 3,536:
}
}
}</langsyntaxhighlight>
 
 
=={{header|Scratch}}==
<syntaxhighlight lang="scratch">
when flag clicked # when program is run
set counter to "0" # initialize counter object to zero
set message to "There have been no clicks"
show variable message # show the message object
 
when this sprite clicked # when button clicked
hide message # hide the initial message
change counter by 1 # increment the counter object
</syntaxhighlight>
 
'''Comments and Description:'''<br>
The Scratch IDE has a GUI drag and drop interface.
The program above is has both graphic and text objects.
The 'message' and 'counter' variables coded above are also graphic objects.
They are set to "large readout" rather than slider or normal.
The (implied) 'sprite' has a 'costume' set to "button".
 
[https://www.melellington.com/simplewindow/scratchoutput.jpg Scratch-Output]
 
=={{header|Sidef}}==
===Gtk2===
<lang ruby>require('Gtk2') -> init
<syntaxhighlight lang="ruby">require('Gtk2') -> init
 
# Window.
Line 3,057 ⟶ 3,588:
 
# Main loop.
%s<Gtk2>.main</langsyntaxhighlight>
 
===Gtk3===
<syntaxhighlight lang="ruby">use('Gtk3 -init')
 
# Window.
var window = %O'Gtk3::Window'.new
window.signal_connect('destroy' => { %O'Gtk3'.main_quit })
 
# VBox.
var vbox = %O'Gtk3::VBox'.new(0, 0)
window.add(vbox)
 
# Label.
var label = %O'Gtk3::Label'.new('There have been no clicks yet.')
vbox.add(label)
 
# Button.
var count = 0
var button = %O'Gtk3::Button'.new(' Click Me ');
vbox.add(button)
button.signal_connect('clicked' => {
label.set_text(++count)
})
 
# Show.
window.show_all
 
# Main loop.
%O'Gtk3'.main</syntaxhighlight>
 
=={{header|Smalltalk}}==
{{works with|Smalltalk/X}}
<langsyntaxhighlight lang="smalltalk">|top clickCount lh button|
 
clickCount := 0.
Line 3,076 ⟶ 3,636:
].
 
top open</langsyntaxhighlight>
 
=={{header|Standard ML}}==
Works with PolyML
<langsyntaxhighlight Standardlang="standard MLml">open XWindows ;
open Motif ;
Line 3,107 ⟶ 3,667:
end;
</syntaxhighlight>
</lang>
call
countWindow () ;
Line 3,114 ⟶ 3,674:
=={{header|Tcl}}==
{{libheader|Tk}}
<langsyntaxhighlight lang="tcl">package require Tk
pack [label .l -text "There have been no clicks yet"]
set count 0
Line 3,120 ⟶ 3,680:
proc upd {} {
.l configure -text "Number of clicks: [incr ::count]"
}</langsyntaxhighlight>
 
=={{header|TI-89 BASIC}}==
Line 3,126 ⟶ 3,686:
The Ti-89 does not have general onscreen buttons; this program uses the OK/Cancel choice of a dialog box to implement the UI.
 
<langsyntaxhighlight lang="ti89b">Prgm
Local clicks
0 → clicks
Line 3,137 ⟶ 3,697:
clicks + 1 → clicks
EndWhile
EndPrgm</langsyntaxhighlight>
 
=={{header|Unicon}}==
 
<langsyntaxhighlight lang="unicon">
import gui
$include "guih.icn"
Line 3,173 ⟶ 3,733:
d.show_modal()
end
</syntaxhighlight>
</lang>
 
=={{header|Vala}}==
<syntaxhighlight lang="vala">// GTK 4
public class Example : Gtk.Application {
public Example() {
Object(application_id: "my.application",
flags: ApplicationFlags.FLAGS_NONE);
activate.connect(() => {
var window = new Gtk.ApplicationWindow(this);
var box = new Gtk.Box(Gtk.Orientation.VERTICAL, 20);
var label = new Gtk.Label("There have been no clicks yet");
var button = new Gtk.Button.with_label("click me");
var clicks = 0;
button.clicked.connect(() => {
clicks++;
label.label = "Button clicked " + clicks.to_string() + " times";
});
box.append(label);
box.append(button);
window.set_child(box);
window.present();
});
}
public static int main(string[] argv) {
return new Example().run(argv);
}
}</syntaxhighlight>
 
=={{header|Vedit macro language}}==
<langsyntaxhighlight lang="vedit">Reg_Set(10, "There have been no clicks yet")
#1 = 0
repeat (ALL) {
Line 3,188 ⟶ 3,775:
Reg_Set(10, "Clicked", INSERT)
Reg_Set(10, " times", APPEND)
}</langsyntaxhighlight>
 
=={{header|Visual Basic}}==
In VB, windows are usually created in the IDE. The generated code is hidden from the user unless viewed outside of VB. For the sake of this task, I have included that code, but normally it is hidden from the programmer.
 
<langsyntaxhighlight lang="vb">VERSION 5.00
Begin VB.Form Form2
Caption = "There have been no clicks yet"
Line 3,225 ⟶ 3,812:
Me.Caption = clicked & " clicks."
End Sub
</syntaxhighlight>
</lang>
 
=={{header|V (Vlang)}}==
<syntaxhighlight lang="Zig">
import ui
import gx
 
[heap]
struct App {
mut:
window &ui.Window = unsafe {nil}
counter string = "No clicks yet" // will contain number count
}
 
fn main() {
mut app := &App{}
app.window = ui.window(
width: 200
height: 40
title: "Counter"
mode: .resizable
layout: ui.row(
spacing: 5
margin_: 10
widths: ui.stretch
heights: ui.stretch
children: [
ui.label(
id: "num"
text: &app.counter //refer to struct App
),
ui.button(
text: "Click me"
bg_color: gx.light_gray
radius: 5
border_color: gx.gray
on_click: app.btn_click //refer to function below
),
]
)
)
ui.run(app.window)
}
 
fn (mut app App) btn_click(btn &ui.Button) {
mut lbl := app.window.get_or_panic[ui.Label]("num") //"num" is id of label
app.counter = (app.counter.int() + 1).str() //change to string for label display
lbl.set_text(app.counter)
}
</syntaxhighlight>
 
=={{header|Web 68}}==
<langsyntaxhighlight lang="web68">@1Introduction.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public Licence as published by
Line 3,328 ⟶ 3,964:
The predefined form was created by the <b>fdesign</b> program for the Xforms library,
and the resulting form definition file was converted to Web 68 by the program
<b>fdtow68</b>.</langsyntaxhighlight>
 
=={{header|Wren}}==
{{libheader|DOME}}
<syntaxhighlight lang="wren">import "graphics" for Canvas, Color
import "input" for Mouse
import "dome" for Window
 
class SimpleWindowedApplication {
construct new(width, height) {
Window.title = "Simple windowed application"
_fore = Color.white
_clicks = 0
}
 
init() {
drawControls()
}
 
update() {
if (Mouse["left"].justPressed && insideButton) _clicks = _clicks + 1
}
 
draw(alpha) {
drawControls()
}
 
insideButton {
var p = Mouse.position
return p.x >= 120 && p.x <= 200 && p.y >= 90 && p.y <= 170
}
 
drawControls() {
Canvas.cls()
if (_clicks == 0) {
Canvas.print("There have been no clicks yet", 40, 40, _fore)
} else if (_clicks == 1) {
Canvas.print("The button has been clicked once", 30, 40, _fore)
} else {
Canvas.print("The button has been clicked %(_clicks) times", 10, 40, _fore)
}
Canvas.rectfill(120, 90, 80, 80, Color.red)
Canvas.rect(120, 90, 80, 80, Color.blue)
Canvas.print("click me", 130, 125, _fore)
}
}
 
var Game = SimpleWindowedApplication.new(600, 600)</syntaxhighlight>
 
=={{header|XPL0}}==
<langsyntaxhighlight XPL0lang="xpl0">include c:\cxpl\stdlib; \standard library provides mouse routines, etc.
def Ww=40, Wh=12, Wx=(80-Ww)/2, Wy=(25-Wh)/2; \window width, etc.
def Bw=11, Bh=4, Bx=Wx+(Ww-Bw)/2, By=Wy+3*(Wh-Bh)/4; \button size & position
Line 3,360 ⟶ 4,043:
until ChkKey; \keystroke terminates program
SetVid(3); \turn off mouse and turn on flashing cursor
]</langsyntaxhighlight>
 
=={{header|Yorick}}==
Yorick does not include a GUI toolkit. However, it does provide a plotting system that can emulate some basic GUI features, such as buttons and labels. The above sample uses a built-in library "button.i", which is itself written in Yorick.
 
<langsyntaxhighlight lang="yorick">#include "button.i"
 
window, 0;
Line 3,386 ⟶ 4,069:
winkill, 0;
}
} while(!finished);</langsyntaxhighlight>
 
{{omit from|ACL2}}
{{omit from|AWK}}
{{omit from|Batch File|Does not have access to GUI functions.}}
{{omit from|EasyLang}}
{{omit from|GUISS}}
{{omit from|Logtalk}}
9,488

edits