File: QTWrap.cpp

package info (click to toggle)
freemat 4.2%2Bdfsg1-6
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 142,116 kB
  • sloc: ansic: 126,788; cpp: 62,015; python: 2,080; perl: 1,255; sh: 1,146; yacc: 1,019; lex: 239; makefile: 107
file content (32 lines) | stat: -rw-r--r-- 927 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include "QTWrap.hpp"
#include <QtGui>
#include "Array.hpp"
#include "Struct.hpp"
#include "Interpreter.hpp"
#include "Class.hpp"


Array MakeQTPointer(QObject *p, Interpreter *eval)
{
  if (!p) throw Exception("Function returned an empty Qt pointer!");
  StructArray *sap = new StructArray;
  sap->insert("pointer",Array(reinterpret_cast<uint64>(p)));
  const QMetaObject* mo = p->metaObject();
  sap->insert("name",Array(QString(mo->className())));
  sap->setClassName(QString(mo->className()));
  StructArray hsap(sap,eval);
  return Array(hsap);
}

//Signature
//sgfunction qtnew QtNewFunction
//input classname
//output ptr
//DOCBLOCK qt_qtnew
ArrayVector QtNewFunction(int nargout, const ArrayVector& arg, Interpreter *eval) {
  if (arg.size() == 0) return ArrayVector();
  QString classname = arg[0].asString();
  if (classname == "QPushButton")
    return MakeQTPointer(new QPushButton,eval);
  return ArrayVector();
}