import gtk2, gdk2, glib2, gtksourceview, os, pango
type
TGObject
* = object of
system.
TObject handler*: pointer
TWidget* = object of TGObject
ovisual*: bool
otitle*: string
PWidget* = ptr TWidget
TBox* = object of TWidget
PBox* = ptr TBox
TWindow* = object of TWidget
PWindow* = ptr TWindow
TStatusBar* = object of TWidget
PStatusBar* = ptr TStatusBar
TMenuBar* = object of TWidget
PMenuBar* = ptr TMenuBar
TNotebook* = object of TWidget
PNotebook* = ptr TNotebook
TSourceManager* = object of TGObject
searchPath*: string
PSourceManager* = ptr TSourceManager
TSchemeManager* = object of TGObject
searchPath*: string
PSchemeManager* = ptr TSchemeManager
TSourceView* = object of TWidget
PSourceView* = ptr TSourceView
TSourceBuffer* = object of TGObject
PSourceBuffer* = ptr TSourceBuffer
TMenu* = object of TWidget
PMenu* = ptr TMenu
TMenuItem* = object of TWidget
PMenuItem* = ptr TMenuItem
TSubMenu* = object of TWidget
menu*: pointer
PSubMenu* = ptr TSubMenu
TSeparator* = object of TMenuItem
PSeparator* = ptr TSeparator
proc createObject*(T: typedesc[TSubMenu], label: string = ""): PSubMenu =
result = create(T)
result.handler = menuItemNew(label)
result.menu = menuNew()
cast[gtk2.PMenuItem](result.handler).setSubMenu(cast[gtk2.PMenu](result.menu))
proc createObject*(T: typedesc[TMenu], label: string = ""): PMenu =
result = create(T)
result.handler = menuBarNew()
proc createObject*(T: typedesc[TSeparator], label: string = ""): PSeparator =
result = create(T)
result.handler = separatorMenuItemNew()
proc createObject*(T: typedesc[TWindow]): PWindow =
result = create(T)
result.handler = windowNew(gtk2.WINDOW_TOPLEVEL)
proc createObject*(T: typedesc[TBox], vertical = false): PBox =
result = create(TBox)
if vertical:
result.handler = vboxNew(gboolean(false), gint(0))
else:
result.handler = hboxNew(gboolean(false), gint(0))
proc `visual=`*(w: PWidget, value: bool) =
cast[gtk2.PWidget](w.handler).show()
echo " show"
w.ovisual = true
proc `title=`*(w: PWindow, data: string) =
cast[gtk2.PWindow](w.handler).setTitle(data)
w.otitle = data
proc add*(m: PMenu, sm: PSubMenu) =
cast[gtk2.PMenuBar](m.handler).append(cast[gtk2.PMenuItem](sm.handler))
proc add*(sb: PSubMenu, w: PMenuItem) =
cast[gtk2.PMenu](sb.menu).add(cast[gtk2.PMenuItem](w.handler))
proc add*(w: PWindow, wg: PWidget) =
cast[gtk2.PWindow](w.handler).add(cast[gtk2.PWidget](wg.handler))
proc `showBorder=`*(w: PWidget, r: bool) =
w.showBorder = r
proc maximize*(w: PWindow) =
cast[gtk2.PWindow](w.handler).maximize()
#proc init(b: PBox, options: array[TBoxOptions]) =
# b.handler = gtk.vboxNew(false, 0)
proc init*() =
nimrod_init()
proc main*() =
gtk2.main()