Anonymous user
Window creation: Difference between revisions
Updated to work with Nim 1.4 and Nim-Gtk2-1.3. Corrected wrong and inconsistent case of identifiers. Added a context to avoid access to global var in callback.
m (→{{header|Phix}}: added syntax colouring the hard way, phix/basics) |
(Updated to work with Nim 1.4 and Nim-Gtk2-1.3. Corrected wrong and inconsistent case of identifiers. Added a context to avoid access to global var in callback.) |
||
Line 1,188:
=== gtk2 ===
This is example 9 from the Araq/Nim github repository (modified to include a quit button)
<lang nim>
proc thisDestroy(widget: pWidget, data: pgpointer){.cdecl.} =▼
main_quit()▼
const
Inside
OutSide
# Context transmitted to callback.
type Context = object
OverButton: bool▼
label: PLabel
proc
context.label.set_text(if context.overButton: OutSide else: Inside)
context.overButton = not context.overButton
▲ main_quit()
var context: Context
nim_init()
var window = window_new(gtk2.WINDOW_TOPLEVEL)▼
var stackbox = vbox_new(TRUE, 10)▼
var button1 = button_new("Move mouse over button")▼
var buttonstyle = copy(get_style(Button1))▼
set_style(button1, buttonstyle)▼
var button2 = button_new()▼
var button3 = button_new("Quit")▼
buttonstyle.bg[STATE_PRELIGHT] = TColor(pixel: 0, red: 255, green: 0, blue: 0)
context = Context(label: label_new(Outside), overButton: false)
button2.add(context.label)
▲proc ChangeLabel(P: PWidget, Event: gdk2.PEventCrossing,
discard button1.signal_connect(
discard button1.signal_connect(
▲pack_start(stackbox, button1, TRUE, TRUE, 0)
▲pack_start(stackbox, button2, TRUE, TRUE, 0)
▲pack_start(stackbox, button3, TRUE, TRUE, 0)
▲set_border_width(Window, 5)
▲add(window, stackbox)
▲ SIGNAL_FUNC(thisDestroy), nil)
▲discard signal_connect(button1, "enter_notify_event",
▲discard signal_connect(button1, "leave_notify_event",
▲ SIGNAL_FUNC(thisDestroy), nil)
▲show_all(window)
main()</lang>
|