# nim c button.nim import gintro/[gtk, glib, gobject] import gintro/gio except Application, newApplication proc buttonClicked (button: Button) = button.label = utf8Strreverse(button.label, -1) proc activate (app: Application) = let window = newApplicationWindow(app) window.title = "GNOME Button" window.defaultSize = (250, 50) let button = newButton("Click Me") window.add(button) button.connect("clicked", buttonClicked) window.showAll proc main = let app = newApplication("org.gtk.example") connect(app, "activate", activate) # with connect(app, "activate", MODULENAME.activate) it compiles fine discard app.run main() $ nim c button.nim button.nim(19, 10) Error: type mismatch: got (Application, string, proc (app: Application){.gcsafe, locks: .} | proc (self: CellAccessibleParent, cell: CellAccessible){.noSideEffect, gcsafe, locks: 0.} | proc (self: AccelGroup, accelQuark: int, acceleratable: Object, accelKey: int, accelMods: ModifierType): bool{.noSideEffect, gcsafe, locks: 0.} | proc (self: MenuItem){.noSideEffect, gcsafe, locks: 0.} | proc (self: CellArea, context: CellAreaContext, widget: Widget, cellArea: Rectangle, flags: CellRendererState, editOnly: bool): bool{.noSideEffect, gcsafe, locks: 0.} | proc (self: Action){.noSideEffect, gcsafe, locks: 0.} | proc (self: Widget): bool{.noSideEffect, gcsafe, locks: 0.} | proc (self: CellRenderer, event: Event, widget: Widget, path: string, backgroundArea: Rectangle, cellArea: Rectangle, flags: CellRendererState): bool{.noSideEffect, gcsafe, locks: 0.} | proc (self: GApplication){.noSideEffect, gcsafe, locks: 0.} | proc (self: Action, parameter: Variant){.noSideEffect, gcsafe, locks: 0.}) but expected one of: template connect(widget: gobject.Object; signal: string; p: typed): untyped template connect(widget: gobject.Object; signal: string; p: typed; arg: typed): untyped proc connect(self: AccelGroup; accelKey: int; accelMods: gdk.ModifierType; accelFlags: AccelFlags; closure: gobject.Closure) proc connect(self: SocketClient; connectable: SocketConnectable | InetSocketAddress | NetworkAddress | NetworkService | ProxyAddress | UnixSocketAddress | SocketAddress; cancellable: Cancellable = nil): SocketConnection proc connect(self: SocketConnection; address: SocketAddress; cancellable: Cancellable = nil): bool proc connect(self: Socket; address: SocketAddress; cancellable: Cancellable = nil): bool proc connect(self: Cancellable; callback: Callback; data: pointer; dataDestroyFunc: DestroyNotify): uint64 proc connect(self: Proxy; connection: IOStream; proxyAddress: ProxyAddress; cancellable: Cancellable = nil): IOStream