79 lines
2.6 KiB
Nim
79 lines
2.6 KiB
Nim
import
|
|
gdk2, glib2, gtk2,
|
|
os
|
|
|
|
proc thisDestroy(widget: pWidget, data: pgpointer){.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))
|
|
|
|
var isshifted: bool = false
|
|
|
|
proc thisMove(widget: pWidget, data: pgpointer){.cdecl.} =
|
|
var w, h: gint
|
|
get_size(get_parent_window(widget), Addr(w), Addr(h))
|
|
if isshifted:
|
|
move(get_parent_window(widget), w-10, h-10)
|
|
else:
|
|
move(get_parent_window(widget), w+10, h+10)
|
|
isshifted = not isshifted
|
|
|
|
|
|
nim_init()
|
|
var window = window_new(gtk2.WINDOW_TOPLEVEL)
|
|
discard allow_grow(window)
|
|
set_title(window,"Window management")
|
|
var stackbox = vbox_new(TRUE, 10)
|
|
var bmax = button_new("maximize")
|
|
var bunmax = button_new("unmaximize")
|
|
var bicon = button_new("iconize")
|
|
var bdeicon = button_new("deiconize")
|
|
var bhide = button_new("hide")
|
|
var bshow = button_new("show")
|
|
var bmove = button_new("move")
|
|
var bquit = button_new("Quit")
|
|
|
|
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)
|
|
|
|
discard signal_connect(bicon, "clicked",
|
|
SIGNAL_FUNC(thisIcon), nil)
|
|
discard signal_connect(bdeicon, "clicked",
|
|
SIGNAL_FUNC(thisDeicon), nil)
|
|
discard signal_connect(bmax, "clicked",
|
|
SIGNAL_FUNC(thisMax), nil)
|
|
discard signal_connect(bunmax, "clicked",
|
|
SIGNAL_FUNC(thisUnmax), nil)
|
|
discard signal_connect(bhide, "clicked",
|
|
SIGNAL_FUNC(thisHide), nil)
|
|
discard signal_connect(bshow, "clicked",
|
|
SIGNAL_FUNC(thisShow), nil)
|
|
discard signal_connect(bmove, "clicked",
|
|
SIGNAL_FUNC(thismove), nil)
|
|
discard signal_connect(bquit, "clicked",
|
|
SIGNAL_FUNC(thisDestroy), nil)
|
|
show_all(window)
|
|
main()
|