Animation: Difference between revisions

m (→‎{{header|Processing Python mode}}: dir is a built-in, renamed variable)
Line 1,778:
text.inverse = false
key.clear</lang>
 
=={{header|Nim}}==
<lang Nim>import gintro/[glib, gobject, gdk, gtk, gio]
 
type
 
# Scrolling direction.
ScrollDirection = enum toLeft, toRight
 
# Data transmitted to update callback.
UpdateData = ref object
label: Label
scrollDir: ScrollDirection
 
#---------------------------------------------------------------------------------------------------
 
proc update(data: UpdateData): gboolean =
## Update the text, scrolling to the right or to the left according to "data.scrollDir".
 
data.label.setText(if data.scrollDir == toRight: data.label.text[^1] & data.label.text[0..^2]
else: data.label.text[1..^1] & data.label.text[0])
result = gboolean(1)
 
#---------------------------------------------------------------------------------------------------
 
proc changeScrollingDir(evtBox: EventBox; event: EventButton; data: UpdateData): bool =
## Change scrolling direction.
 
data.scrollDir = ScrollDirection(1 - ord(data.scrollDir))
 
#---------------------------------------------------------------------------------------------------
 
proc activate(app: Application) =
## Activate the application.
 
let window = app.newApplicationWindow()
window.setSizeRequest(150, 50)
window.setTitle("Animation")
 
# Create an event box to catch the button press event.
let evtBox = newEventBox()
window.add(evtBox)
 
# Create the label and add it to the event box.
let label = newLabel("Hello World! ")
evtBox.add(label)
 
# Create the update data.
let data = UpdateData(label: label, scrollDir: toRight)
 
# Connect the "button-press-event" to the callback to change scrolling direction.
discard evtBox.connect("button-press-event", changeScrollingDir, data)
 
# Create a timer to update the label and simulate scrolling.
timeoutAdd(100, update, data)
 
window.showAll()
 
#———————————————————————————————————————————————————————————————————————————————————————————————————
 
let app = newApplication(Application, "Rosetta.animation")
discard app.connect("activate", activate)
discard app.run()</lang>
 
=={{header|Oz}}==
Anonymous user