minimal.lua 1007 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #! /usr/bin/env lua
  2. local lgi = require 'lgi'
  3. local GObject = lgi.require('GObject')
  4. local Gtk = lgi.require('Gtk')
  5. local GFlow = lgi.require('GFlow')
  6. local GtkFlow = lgi.require('GtkFlow')
  7. local window = Gtk.Window {
  8. title = 'window',
  9. default_width = 400,
  10. default_height = 300,
  11. on_destroy = Gtk.main_quit
  12. }
  13. local sw = Gtk.ScrolledWindow {}
  14. local nv = GtkFlow.NodeView.new()
  15. local button = Gtk.Button { label = 'Add Node' }
  16. function button:on_clicked()
  17. local n = GFlow.SimpleNode {}
  18. local sink_v = GObject.Value(GObject.Type.INT,0)
  19. local source_v = GObject.Value(GObject.Type.INT,0)
  20. local sink = GFlow.SimpleSink.new(sink_v)
  21. local source = GFlow.SimpleSource.new(source_v)
  22. sink:set_name("sink")
  23. source:set_name("source")
  24. n:add_source(source)
  25. n:add_sink(sink)
  26. n:set_name("node")
  27. nv:add_node(n)
  28. end
  29. local vbox = Gtk.VBox()
  30. sw:add(nv)
  31. vbox:pack_start(button, false, false, 0)
  32. vbox:pack_start(sw, true, true, 1)
  33. window:add(vbox)
  34. window:show_all()
  35. Gtk.main()