Window management: Difference between revisions

Updated to work with Nim version 1.4 and GTK2 bindings version 1.3. Other corrections and improvements.
m (→‎{{header|Phix}}: added syntax colouring the hard way, phix/basics)
(Updated to work with Nim version 1.4 and GTK2 bindings version 1.3. Other corrections and improvements.)
Line 770:
=={{header|Nim}}==
==={{libheader|Gtk2}}===
<lang nim>import os
import gdk2, glib2, gtk2,
os
 
proc thisDestroy(widget: pWidget,PWidget; data: pgpointerPgpointer) {.cdecl.} =
main_quit()
proc thisMax(widget: pWidget, data: pgpointer){.cdecl.} =
maximize(get_parent_window(widget))
proc thisUnmax(widget: pWidget, data: pgpointer){.cdecl.} =
unmaximize(get_parent_window(widget))
proc thisIcon(widget: pWidget, data: pgpointer){.cdecl.} =
iconify(get_parent_window(widget))
proc thisDeicon(widget: pWidget, data: pgpointer){.cdecl.} =
deiconify(get_parent_window(widget))
proc thisHide(widget: pWidget, data: pgpointer){.cdecl.} =
hide(get_parent_window(widget))
sleep(5)
show(get_parent_window(widget))
proc thisShow(widget: pWidget, data: pgpointer){.cdecl.} =
show(get_parent_window(widget))
 
proc thisMax(widget: pWidget,PWidget; data: pgpointerPgpointer) {.cdecl.} =
var isshifted: bool = false
hide(widget.get_parent_window(widget).maximize()
 
proc thisMove(widget: pWidget, data: pgpointer){.cdecl.} =
proc thisUnmax(widget: pWidget,PWidget; data: pgpointerPgpointer) {.cdecl.} =
show(widget.get_parent_window(widget).unmaximize()
 
proc thisIcon(widget: pWidget,PWidget; data: pgpointerPgpointer) {.cdecl.} =
deiconify(widget.get_parent_window(widget).iconify()
 
proc thisDeicon(widget: pWidget,PWidget; data: pgpointerPgpointer) {.cdecl.} =
show(widget.get_parent_window(widget).deiconify()
 
proc thisHide(widget: pWidget,PWidget; data: pgpointerPgpointer) {.cdecl.} =
maximize(widget.get_parent_window(widget).hide()
sleep(52000)
unmaximize(widget.get_parent_window(widget).show()
 
proc thisShow(widget: pWidget,PWidget; data: pgpointerPgpointer) {.cdecl.} =
iconify(widget.get_parent_window(widget).show()
 
var isshifted: boolisShifted = false
 
proc thisMove(widget: pWidget,PWidget; data: pgpointerPgpointer) {.cdecl.} =
var w, h: gint
get_size(widget.get_parent_window(widget), Addr.get_size(addr(w), Addraddr(h))
if isshifted:
move(widget.get_parent_window(widget), .move(w - 10, h - 10)
else:
move(widget.get_parent_window(widget), .move(w + 10, h + 10)
isshiftedisShifted = not isshiftedisShifted
 
 
nim_init()
varlet window = window_new(gtk2.WINDOW_TOPLEVEL)
discard window.allow_grow(window)
window.set_title(window,"Window management")
let
var stackbox = vbox_new(TRUEtrue, 10)
var bmax = button_new("maximize")
var bunmax bMax = button_new("unmaximizemaximize")
var bicon bUnmax = button_new("iconizeunmaximize")
var bdeicon bIcon = button_new("deiconizeiconize")
var bhide bDeicon = button_new("hidedeiconize")
var bshow bHide = button_new("showhide")
var bmove bShow = button_new("moveshow")
var bquit bMove = button_new("Quitmove")
var bmax bQuit = button_new("maximizeQuit")
pack_start(stackbox, bmax, TRUE, TRUE, 0)
pack_start(stackbox, bunmax, TRUE, TRUE, 0)
pack_start(stackbox, bicon, TRUE, TRUE, 0)
pack_start(stackbox, bdeicon, TRUE, TRUE, 0)
pack_start(stackbox, bhide, TRUE, TRUE, 0)
pack_start(stackbox, bshow, TRUE, TRUE, 0)
pack_start(stackbox, bmove, TRUE, TRUE, 0)
pack_start(stackbox, bquit, TRUE, TRUE, 0)
set_border_width(Window, 5)
add(window, stackbox)
discard signal_connect(window, "destroy",
SIGNAL_FUNC(thisDestroy), nil)
 
stackbox.pack_start(bMax, true, true, 0)
discard signal_connect(bicon, "clicked",
stackbox.pack_start(bUnmax, true, true, 0)
SIGNAL_FUNC(thisIcon), nil)
stackbox.pack_start(bIcon, true, true, 0)
discard signal_connect(bdeicon, "clicked",
stackbox.pack_start(bDeicon, true, true, 0)
SIGNAL_FUNC(thisDeicon), nil)
stackbox.pack_start(bHide, true, true, 0)
discard signal_connect(bmax, "clicked",
stackbox.pack_start(bShow, true, true, 0)
SIGNAL_FUNC(thisMax), nil)
stackbox.pack_start(bMove, true, true, 0)
discard signal_connect(bunmax, "clicked",
stackbox.pack_start(bQuit, true, true, 0)
SIGNAL_FUNC(thisUnmax), nil)
window.set_border_width(Window, 5)
discard signal_connect(bhide, "clicked",
window.add(window, stackbox)
SIGNAL_FUNC(thisHide), nil)
 
discard signal_connect(bshow, "clicked",
discard window.signal_connect("destroy", SIGNAL_FUNC(thisShowthisDestroy), nil)
discard bIcon.signal_connect(bmove, "clicked", SIGNAL_FUNC(thisIcon), nil)
discard bDeicon.signal_connect("clicked", SIGNAL_FUNC(thismovethisDeicon), nil)
discard bMax.signal_connect(bquit, "clicked", SIGNAL_FUNC(thisMax), nil)
discard bUnmax.signal_connect("clicked", SIGNAL_FUNC(thisDestroythisUnmax), nil)
discard bHide.signal_connect(bicon, "clicked", SIGNAL_FUNC(thisHide), nil)
show_all(window)
discard bShow.signal_connect(bdeicon, "clicked", SIGNAL_FUNC(thisShow), nil)
discard bMove.signal_connect(bmax, "clicked", SIGNAL_FUNC(thismove), nil)
discard bQuit.signal_connect("clicked", SIGNAL_FUNC(thisDestroy), nil)
window.show_all(window)
main()</lang>
 
==={{libheader|IUP}}===
<lang nim>import iup
Anonymous user