mirror of
https://github.com/status-im/nimqml.git
synced 2025-02-20 18:38:14 +00:00
Formatted source through nimpretty
This commit is contained in:
parent
013d54c87e
commit
3c11dbd0ac
@ -79,18 +79,18 @@ type
|
||||
|
||||
DosQObjectCallBack = proc(nimobject: NimQObject, slotName: DosQVariant, numArguments: cint, arguments: ptr DosQVariantArray) {.cdecl.}
|
||||
|
||||
DosRowCountCallback = proc(nimmodel: NimQAbstractItemModel, rawIndex: DosQModelIndex, result: var cint) {.cdecl.}
|
||||
DosColumnCountCallback = proc(nimmodel: NimQAbstractItemModel, rawIndex: DosQModelIndex, result: var cint) {.cdecl.}
|
||||
DosDataCallback = proc(nimmodel: NimQAbstractItemModel, rawIndex: DosQModelIndex, role: cint, result: DosQVariant) {.cdecl.}
|
||||
DosSetDataCallback = proc(nimmodel: NimQAbstractItemModel, rawIndex: DosQModelIndex, value: DosQVariant, role: cint, result: var bool) {.cdecl.}
|
||||
DosRoleNamesCallback = proc(nimmodel: NimQAbstractItemModel, result: DosQHashIntByteArray) {.cdecl.}
|
||||
DosFlagsCallback = proc(nimmodel: NimQAbstractItemModel, index: DosQModelIndex, result: var cint) {.cdecl.}
|
||||
DosHeaderDataCallback = proc(nimmodel: NimQAbstractItemModel, section: cint, orientation: cint, role: cint, result: DosQVariant) {.cdecl.}
|
||||
DosIndexCallback = proc(nimmodel: NimQAbstractItemModel, row: cint, column: cint, parent: DosQModelIndex, result: DosQModelIndex) {.cdecl.}
|
||||
DosParentCallback = proc(nimmodel: NimQAbstractItemModel, child: DosQModelIndex, result: DosQModelIndex) {.cdecl.}
|
||||
DosHasChildrenCallback = proc(nimmodel: NimQAbstractItemModel, parent: DosQModelIndex, result: var bool) {.cdecl.}
|
||||
DosRowCountCallback = proc(nimmodel: NimQAbstractItemModel, rawIndex: DosQModelIndex, result: var cint) {.cdecl.}
|
||||
DosColumnCountCallback = proc(nimmodel: NimQAbstractItemModel, rawIndex: DosQModelIndex, result: var cint) {.cdecl.}
|
||||
DosDataCallback = proc(nimmodel: NimQAbstractItemModel, rawIndex: DosQModelIndex, role: cint, result: DosQVariant) {.cdecl.}
|
||||
DosSetDataCallback = proc(nimmodel: NimQAbstractItemModel, rawIndex: DosQModelIndex, value: DosQVariant, role: cint, result: var bool) {.cdecl.}
|
||||
DosRoleNamesCallback = proc(nimmodel: NimQAbstractItemModel, result: DosQHashIntByteArray) {.cdecl.}
|
||||
DosFlagsCallback = proc(nimmodel: NimQAbstractItemModel, index: DosQModelIndex, result: var cint) {.cdecl.}
|
||||
DosHeaderDataCallback = proc(nimmodel: NimQAbstractItemModel, section: cint, orientation: cint, role: cint, result: DosQVariant) {.cdecl.}
|
||||
DosIndexCallback = proc(nimmodel: NimQAbstractItemModel, row: cint, column: cint, parent: DosQModelIndex, result: DosQModelIndex) {.cdecl.}
|
||||
DosParentCallback = proc(nimmodel: NimQAbstractItemModel, child: DosQModelIndex, result: DosQModelIndex) {.cdecl.}
|
||||
DosHasChildrenCallback = proc(nimmodel: NimQAbstractItemModel, parent: DosQModelIndex, result: var bool) {.cdecl.}
|
||||
DosCanFetchMoreCallback = proc(nimmodel: NimQAbstractItemModel, parent: DosQModelIndex, result: var bool) {.cdecl.}
|
||||
DosFetchMoreCallback = proc(nimmodel: NimQAbstractItemModel, parent: DosQModelIndex) {.cdecl.}
|
||||
DosFetchMoreCallback = proc(nimmodel: NimQAbstractItemModel, parent: DosQModelIndex) {.cdecl.}
|
||||
|
||||
DosQAbstractItemModelCallbacks = object
|
||||
rowCount: DosRowCountCallback
|
||||
@ -168,7 +168,7 @@ proc dos_qvariant_setInt(variant: DosQVariant, value: cint) {.cdecl, dynlib: dyn
|
||||
proc dos_qvariant_setBool(variant: DosQVariant, value: bool) {.cdecl, dynlib: dynLibName, importc.}
|
||||
proc dos_qvariant_setString(variant: DosQVariant, value: cstring) {.cdecl, dynlib: dynLibName, importc.}
|
||||
proc dos_qvariant_assign(leftValue: DosQVariant, rightValue: DosQVariant) {.cdecl, dynlib: dynLibName, importc.}
|
||||
proc dos_qvariant_setFloat(variant: DosQVariant, value: float) {.cdecl, dynlib: dynLibName, importc.}
|
||||
proc dos_qvariant_setFloat(variant: DosQVariant, value: float) {.cdecl, dynlib: dynLibName, importc.}
|
||||
proc dos_qvariant_setDouble(variant: DosQVariant, value: cdouble) {.cdecl, dynlib: dynLibName, importc.}
|
||||
proc dos_qvariant_setQObject(variant: DosQVariant, value: DosQObject) {.cdecl, dynlib: dynLibName, importc.}
|
||||
|
||||
|
@ -8,8 +8,8 @@ import typetraits
|
||||
|
||||
type
|
||||
FindQObjectTypeResult = tuple
|
||||
typeIdent: NimNode
|
||||
superTypeIdent: NimNode
|
||||
typeIdent: NimNode
|
||||
superTypeIdent: NimNode
|
||||
|
||||
ProcInfo = object
|
||||
name: string
|
||||
@ -74,8 +74,8 @@ proc display(info: PropertyInfo) {.compiletime.} =
|
||||
proc toString(info: QObjectInfo): string {.compiletime.} =
|
||||
## Convert a QObjectInfo to string
|
||||
let slots = info.slots.map(proc (x: auto): auto = x.toString)
|
||||
let signals = info.signals.map(proc(x:auto): auto = x.toString)
|
||||
let properties = info.properties.map(proc(x:auto): auto = x.toString)
|
||||
let signals = info.signals.map(proc(x: auto): auto = x.toString)
|
||||
let properties = info.properties.map(proc(x: auto): auto = x.toString)
|
||||
"QObjectInfo {\"$1\", \"$2\", [\"$3\"], [\"$4\"], [\"$5\"]}" % [info.name, info.superType, slots.join(", "), signals.join(", "), properties.join(", ")]
|
||||
|
||||
|
||||
@ -169,7 +169,7 @@ proc extractQObjectTypeDef(head: NimNode): FindQObjectTypeResult {.compiletime.}
|
||||
|
||||
var name = def[0] # type Object = ... <---
|
||||
let pragma = def[1] # type Object {.something.} = ... <---
|
||||
let typeKind = def[2] # .. = ref/distinct/object ..
|
||||
let typeKind = def[2] # .. = ref/distinct/object ..
|
||||
|
||||
if name.kind == nnkPostFix:
|
||||
if name.len != 2: error("Expected two children in nnkPostFix node")
|
||||
@ -243,22 +243,22 @@ proc extractPropertyInfo(node: NimNode): tuple[ok: bool, info: PropertyInfo] {.c
|
||||
bracketExpr[0].kind != nnkIdent or
|
||||
bracketExpr[1].kind != nnkIdent or
|
||||
$(bracketExpr[0]) != "QtProperty":
|
||||
return
|
||||
return
|
||||
let stmtList = node[2]
|
||||
if stmtList.len >= 1:
|
||||
if stmtList[0].kind != nnkAsgn or stmtList[0].len != 2 or
|
||||
stmtList[0][0].kind != nnkIdent or
|
||||
(stmtList[0][1].kind != nnkIdent and stmtList[0][1].kind != nnkAccQuoted):
|
||||
(stmtList[0][1].kind != nnkIdent and stmtList[0][1].kind != nnkAccQuoted):
|
||||
error("QtProperty parsing error")
|
||||
if stmtList.len >= 2:
|
||||
if stmtList[1].kind != nnkAsgn or stmtList[1].len != 2 or
|
||||
stmtList[1][0].kind != nnkIdent or
|
||||
(stmtList[1][1].kind != nnkIdent and stmtList[1][1].kind != nnkAccQuoted):
|
||||
(stmtList[1][1].kind != nnkIdent and stmtList[1][1].kind != nnkAccQuoted):
|
||||
error("QtProperty parsing error")
|
||||
if stmtList.len >= 3:
|
||||
if stmtList[2].kind != nnkAsgn or stmtList[2].len != 2 or
|
||||
stmtList[2][0].kind != nnkIdent or
|
||||
(stmtList[2][1].kind != nnkIdent and stmtList[2][1].kind != nnkAccQuoted):
|
||||
(stmtList[2][1].kind != nnkIdent and stmtList[2][1].kind != nnkAccQuoted):
|
||||
error("QtProperty parsing error")
|
||||
|
||||
result.info.name = $(node[1])
|
||||
@ -315,7 +315,7 @@ proc isProperty(node: NimNode): bool {.compiletime.} =
|
||||
bracketExpr[0].kind != nnkIdent or
|
||||
bracketExpr[1].kind != nnkIdent or
|
||||
$(bracketExpr[0]) != "QtProperty":
|
||||
return false
|
||||
return false
|
||||
return true
|
||||
|
||||
proc extractQObjectInfo(node: NimNode): QObjectInfo {.compiletime.} =
|
||||
@ -336,8 +336,8 @@ proc extractQObjectInfo(node: NimNode): QObjectInfo {.compiletime.} =
|
||||
error("Slot $1 must have at least an argument" % info.name)
|
||||
if info.parametersTypes[0] != $typeNode:
|
||||
error("Slot $1 first arguments must be $2" % [info.name, $typeNode])
|
||||
info.parametersTypes.delete(0,0)
|
||||
info.parametersNames.delete(0,0)
|
||||
info.parametersTypes.delete(0, 0)
|
||||
info.parametersNames.delete(0, 0)
|
||||
result.slots.add(info)
|
||||
# Extract signal
|
||||
if c.isSignal:
|
||||
@ -346,12 +346,12 @@ proc extractQObjectInfo(node: NimNode): QObjectInfo {.compiletime.} =
|
||||
error("Signal $1 must have at least an argument" % info.name)
|
||||
if info.parametersTypes[0] != $typeNode:
|
||||
error("Signal $1 first arguments must be $2" % [info.name, $typeNode])
|
||||
info.parametersTypes.delete(0,0)
|
||||
info.parametersNames.delete(0,0)
|
||||
info.parametersTypes.delete(0, 0)
|
||||
info.parametersNames.delete(0, 0)
|
||||
result.signals.add(info)
|
||||
|
||||
# Extract properties infos and remove them
|
||||
var toRemove: seq[NimNode]= @[]
|
||||
var toRemove: seq[NimNode] = @[]
|
||||
for c in node:
|
||||
let (ok, info) = extractPropertyInfo(c)
|
||||
if not ok: continue
|
||||
@ -400,10 +400,10 @@ proc generateMetaObjectInitializer(info: QObjectInfo): NimNode {.compiletime.} =
|
||||
let slots = generateMetaObjectSlotsDefinitions(info.slots)
|
||||
let properties = generateMetaObjectPropertiesDefinitions(info.properties)
|
||||
|
||||
var lines = @[ "proc initializeMetaObjectInstance(): QMetaObject ="
|
||||
, " var signals: seq[SignalDefinition] = @[]"
|
||||
, " var slots: seq[SlotDefinition] = @[]"
|
||||
, " var properties: seq[PropertyDefinition] = @[]"]
|
||||
var lines = @["proc initializeMetaObjectInstance(): QMetaObject ="
|
||||
, " var signals: seq[SignalDefinition] = @[]"
|
||||
, " var slots: seq[SlotDefinition] = @[]"
|
||||
, " var properties: seq[PropertyDefinition] = @[]"]
|
||||
lines = lines.concat(signals.concat(slots.concat(properties)))
|
||||
let newStmt = " newQMetaObject($2.staticMetaObject, \"$1\", signals, slots, properties)".format([info.name, info.superType])
|
||||
lines = lines.concat(@[newStmt])
|
||||
@ -413,10 +413,10 @@ proc generateMetaObjectInitializer(info: QObjectInfo): NimNode {.compiletime.} =
|
||||
|
||||
proc generateMetaObjectAccessors(info: QObjectInfo): NimNode {.compiletime.} =
|
||||
## Generate the metaObject instance and accessors
|
||||
let str = [ "let staticMetaObjectInstance: QMetaObject = initializeMetaObjectInstance()"
|
||||
, "proc staticMetaObject*(c: type $1): QMetaObject = staticMetaObjectInstance"
|
||||
, "proc staticMetaObject*(self: $1): QMetaObject = staticMetaObjectInstance"
|
||||
, "method metaObject*(self: $1): QMetaObject = staticMetaObjectInstance"].join("\n")
|
||||
let str = ["let staticMetaObjectInstance: QMetaObject = initializeMetaObjectInstance()"
|
||||
, "proc staticMetaObject*(c: type $1): QMetaObject = staticMetaObjectInstance"
|
||||
, "proc staticMetaObject*(self: $1): QMetaObject = staticMetaObjectInstance"
|
||||
, "method metaObject*(self: $1): QMetaObject = staticMetaObjectInstance"].join("\n")
|
||||
result = parseStmt(str % info.name)
|
||||
|
||||
|
||||
@ -486,7 +486,7 @@ macro signal*(s: untyped): untyped =
|
||||
|
||||
let format = "$1.emit(\"$2\", [$3])"
|
||||
let str = format % [info.parametersNames[0], info.name, parametersNames.join(", ")]
|
||||
s[s.len - 1 ] = parseStmt(str)
|
||||
s[s.len - 1] = parseStmt(str)
|
||||
s
|
||||
|
||||
|
||||
|
@ -44,7 +44,7 @@ type
|
||||
QResource* = ref object of RootObj ## \
|
||||
# A QResource
|
||||
|
||||
QtItemFlag* {.pure, size: sizeof(cint).} = enum ## \
|
||||
QtItemFlag*{.pure, size: sizeof(cint).} = enum ## \
|
||||
## Item flags
|
||||
##
|
||||
## This enum mimic the Qt::itemFlag C++ enum
|
||||
@ -58,14 +58,14 @@ type
|
||||
IsTristate = 64.cint,
|
||||
NeverHasChildren = 128.cint
|
||||
|
||||
QtOrientation* {.pure, size: sizeof(cint).} = enum ## \
|
||||
QtOrientation*{.pure, size: sizeof(cint).} = enum ## \
|
||||
## Define orientation
|
||||
##
|
||||
## This enum mimic the Qt::Orientation C++ enum
|
||||
Horizontal = 1.cint,
|
||||
Vertical = 2.cint
|
||||
|
||||
QMetaType* {.pure, size: sizeof(cint).} = enum ## \
|
||||
QMetaType*{.pure, size: sizeof(cint).} = enum ## \
|
||||
## Qt metatypes values used for specifing the
|
||||
## signals and slots argument and return types.
|
||||
##
|
||||
@ -78,7 +78,7 @@ type
|
||||
Float = 38.cint,
|
||||
QObjectStar = 39.cint,
|
||||
QVariant = 41.cint,
|
||||
Void = 43.cint,
|
||||
Void = 43.cint
|
||||
|
||||
ParameterDefinition* = object
|
||||
name*: string
|
||||
@ -109,14 +109,14 @@ type
|
||||
QUrl* = ref object of RootObj
|
||||
vptr: DosQUrl
|
||||
|
||||
QUrlParsingMode* {.pure, size: sizeof(cint).} = enum
|
||||
QUrlParsingMode*{.pure, size: sizeof(cint).} = enum
|
||||
Tolerant = 0.cint
|
||||
Strict = 1.cint
|
||||
|
||||
Ownership {.pure.} = enum ## \
|
||||
## Specify the ownership of a pointer
|
||||
Take, # The ownership is passed to the wrapper
|
||||
Clone # The node should be cloned
|
||||
Take, # The ownership is passed to the wrapper
|
||||
Clone # The node should be cloned
|
||||
|
||||
const
|
||||
UserRole* = 0x100
|
||||
UserRole* = 0x100
|
||||
|
@ -51,14 +51,14 @@ method setData*(self: QAbstractItemModel, index: QModelIndex, value: QVariant, r
|
||||
## Sets the data at the given index and role. Return true on success, false otherwise
|
||||
false
|
||||
|
||||
proc setDataCallback(modelPtr: pointer, rawIndex: DosQModelIndex, rawQVariant: DosQVariant, role: cint, result: var bool) {.cdecl, exportc.} =
|
||||
proc setDataCallback(modelPtr: pointer, rawIndex: DosQModelIndex, rawQVariant: DosQVariant, role: cint, result: var bool) {.cdecl, exportc.} =
|
||||
debugMsg("QAbstractItemModel", "setDataCallback")
|
||||
let model = cast[QAbstractItemModel](modelPtr)
|
||||
let index = newQModelIndex(rawIndex, Ownership.Clone)
|
||||
let variant = newQVariant(rawQVariant, Ownership.Clone)
|
||||
result = model.setData(index, variant, role.int)
|
||||
|
||||
method roleNames*(self: QAbstractItemModel): Table[int,string] {.base.} =
|
||||
method roleNames*(self: QAbstractItemModel): Table[int, string] {.base.} =
|
||||
## Return the model role names
|
||||
nil
|
||||
|
||||
@ -138,6 +138,7 @@ proc fetchMoreCallback(modelPtr: pointer, parent: DosQModelIndex) {.cdecl, expor
|
||||
|
||||
method onSlotCalled*(self: QAbstractItemModel, slotName: string, arguments: openarray[QVariant]) =
|
||||
## Called from the dotherside library when a slot is called from Qml.
|
||||
discard
|
||||
|
||||
proc setup*(self: QAbstractItemModel) =
|
||||
## Setup a new QAbstractItemModel
|
||||
|
@ -1,6 +1,6 @@
|
||||
import tables
|
||||
|
||||
var ctorTable = initTable[cint, proc():QObject]()
|
||||
var ctorTable = initTable[cint, proc(): QObject]()
|
||||
|
||||
proc creator(id: cint, wrapper: DosQObjectWrapper, nimQObject: var NimQObject, dosQObject: var DosQObject) {.cdecl.} =
|
||||
let qobject: QObject = ctorTable[id]()
|
||||
|
@ -2,7 +2,7 @@ proc setup*(self: QQmlApplicationEngine) =
|
||||
## Setup a QQmlApplicationEngine
|
||||
self.vptr = dos_qqmlapplicationengine_create()
|
||||
|
||||
proc loadData*(self:QQmlApplicationEngine, data: string) =
|
||||
proc loadData*(self: QQmlApplicationEngine, data: string) =
|
||||
## Load the given data
|
||||
dos_qqmlapplicationengine_load_data(self.vptr, data.cstring)
|
||||
|
||||
|
@ -54,17 +54,17 @@ proc newQVariant*(value: int): QVariant =
|
||||
new(result, delete)
|
||||
result.setup(value)
|
||||
|
||||
proc newQVariant*(value: bool): QVariant =
|
||||
proc newQVariant*(value: bool): QVariant =
|
||||
## Return a new QVariant given a bool
|
||||
new(result, delete)
|
||||
result.setup(value)
|
||||
|
||||
proc newQVariant*(value: string): QVariant =
|
||||
proc newQVariant*(value: string): QVariant =
|
||||
## Return a new QVariant given a string
|
||||
new(result, delete)
|
||||
result.setup(value)
|
||||
|
||||
proc newQVariant*(value: QObject): QVariant =
|
||||
proc newQVariant*(value: QObject): QVariant =
|
||||
## Return a new QVariant given a QObject
|
||||
new(result, delete)
|
||||
result.setup(value)
|
||||
|
Loading…
x
Reference in New Issue
Block a user