mirror of
https://github.com/mappu/miqt.git
synced 2024-12-22 08:58:37 +00:00
scintillaedit: add support
This commit is contained in:
parent
1ef63a1673
commit
82413f8967
@ -24,6 +24,7 @@ func InsertTypedefs() {
|
|||||||
// QFile doesn't see QFileDevice parent class enum
|
// QFile doesn't see QFileDevice parent class enum
|
||||||
KnownTypedefs["QFile::Permissions"] = lookupResultTypedef{"qt", CppTypedef{"QFile::Permissions", parseSingleTypeString("QFileDevice::Permissions")}}
|
KnownTypedefs["QFile::Permissions"] = lookupResultTypedef{"qt", CppTypedef{"QFile::Permissions", parseSingleTypeString("QFileDevice::Permissions")}}
|
||||||
KnownTypedefs["QFileDevice::Permissions"] = lookupResultTypedef{"qt", CppTypedef{"QFile::Permissions", parseSingleTypeString("QFlags<QFileDevice::Permission>")}}
|
KnownTypedefs["QFileDevice::Permissions"] = lookupResultTypedef{"qt", CppTypedef{"QFile::Permissions", parseSingleTypeString("QFlags<QFileDevice::Permission>")}}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func AllowHeader(fullpath string) bool {
|
func AllowHeader(fullpath string) bool {
|
||||||
@ -95,6 +96,10 @@ func AllowClass(className string) bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if strings.HasPrefix(className, `std::`) {
|
||||||
|
return false // Scintilla bindings find some of these
|
||||||
|
}
|
||||||
|
|
||||||
switch className {
|
switch className {
|
||||||
case
|
case
|
||||||
"QTextStreamManipulator", // Only seems to contain garbage methods
|
"QTextStreamManipulator", // Only seems to contain garbage methods
|
||||||
@ -135,7 +140,6 @@ func AllowMethod(mm CppMethod) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return nil // OK, allow
|
return nil // OK, allow
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func CheckComplexity(p CppParameter, isReturnType bool) error {
|
func CheckComplexity(p CppParameter, isReturnType bool) error {
|
||||||
@ -187,12 +191,16 @@ func CheckComplexity(p CppParameter, isReturnType bool) error {
|
|||||||
if strings.HasPrefix(p.ParameterType, "QUrlTwoFlags<") {
|
if strings.HasPrefix(p.ParameterType, "QUrlTwoFlags<") {
|
||||||
return ErrTooComplex // e.g. qurl.h
|
return ErrTooComplex // e.g. qurl.h
|
||||||
}
|
}
|
||||||
|
if strings.HasPrefix(p.ParameterType, "FillResult<") {
|
||||||
|
return ErrTooComplex // Scintilla
|
||||||
|
}
|
||||||
if strings.HasPrefix(p.ParameterType, "std::") {
|
if strings.HasPrefix(p.ParameterType, "std::") {
|
||||||
// std::initializer e.g. qcborarray.h
|
// std::initializer e.g. qcborarray.h
|
||||||
// std::string QByteArray->toStdString(). There are QString overloads already
|
// std::string QByteArray->toStdString(). There are QString overloads already
|
||||||
// std::nullptr_t Qcborstreamwriter
|
// std::nullptr_t Qcborstreamwriter
|
||||||
// std::chrono::nanoseconds QDeadlineTimer_RemainingTimeAsDuration
|
// std::chrono::nanoseconds QDeadlineTimer_RemainingTimeAsDuration
|
||||||
// std::seed_seq QRandom
|
// std::seed_seq QRandom
|
||||||
|
// std::exception Scintilla
|
||||||
return ErrTooComplex
|
return ErrTooComplex
|
||||||
}
|
}
|
||||||
if strings.Contains(p.ParameterType, `Iterator::value_type`) {
|
if strings.Contains(p.ParameterType, `Iterator::value_type`) {
|
||||||
@ -264,6 +272,7 @@ func CheckComplexity(p CppParameter, isReturnType bool) error {
|
|||||||
"QXmlStreamNamespaceDeclarations", // e.g. qxmlstream.h. As above
|
"QXmlStreamNamespaceDeclarations", // e.g. qxmlstream.h. As above
|
||||||
"QXmlStreamNotationDeclarations", // e.g. qxmlstream.h. As above
|
"QXmlStreamNotationDeclarations", // e.g. qxmlstream.h. As above
|
||||||
"QXmlStreamAttributes", // e.g. qxmlstream.h
|
"QXmlStreamAttributes", // e.g. qxmlstream.h
|
||||||
|
"LineLayout::ValidLevel", // ..
|
||||||
"QtMsgType", // e.g. qdebug.h TODO Defined in qlogging.h, but omitted because it's predefined in qglobal.h, and our clangexec is too agressive
|
"QtMsgType", // e.g. qdebug.h TODO Defined in qlogging.h, but omitted because it's predefined in qglobal.h, and our clangexec is too agressive
|
||||||
"QTextStreamFunction", // e.g. qdebug.h
|
"QTextStreamFunction", // e.g. qdebug.h
|
||||||
"QFactoryInterface", // qfactoryinterface.h
|
"QFactoryInterface", // qfactoryinterface.h
|
||||||
|
@ -110,6 +110,10 @@ func (p CppParameter) QtClassType() bool {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if p.ParameterType == "Scintilla::Internal::Point" {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
if p.ParameterType == "QString" || p.ParameterType == "QByteArray" {
|
if p.ParameterType == "QString" || p.ParameterType == "QByteArray" {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
@ -25,6 +25,8 @@ func importPathForQtPackage(packageName string) string {
|
|||||||
return BaseModule + "/qt"
|
return BaseModule + "/qt"
|
||||||
case "qscintilla":
|
case "qscintilla":
|
||||||
return BaseModule + "/qt-restricted-extras/" + packageName
|
return BaseModule + "/qt-restricted-extras/" + packageName
|
||||||
|
case "scintillaedit":
|
||||||
|
return BaseModule + "/qt-extras/" + packageName
|
||||||
default:
|
default:
|
||||||
return BaseModule + "/qt/" + packageName
|
return BaseModule + "/qt/" + packageName
|
||||||
}
|
}
|
||||||
@ -102,6 +104,7 @@ func pkgConfigCflags(packageName string) string {
|
|||||||
func main() {
|
func main() {
|
||||||
clang := flag.String("clang", "clang", "Custom path to clang")
|
clang := flag.String("clang", "clang", "Custom path to clang")
|
||||||
outDir := flag.String("outdir", "../../", "Output directory for generated gen_** files")
|
outDir := flag.String("outdir", "../../", "Output directory for generated gen_** files")
|
||||||
|
extraLibsDir := flag.String("extralibs", "/usr/local/src/", "Base directory to find extra library checkouts")
|
||||||
|
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
|
|
||||||
@ -140,6 +143,18 @@ func main() {
|
|||||||
filepath.Join(*outDir, "qt-restricted-extras/qscintilla"),
|
filepath.Join(*outDir, "qt-restricted-extras/qscintilla"),
|
||||||
ClangMatchSameHeaderDefinitionOnly,
|
ClangMatchSameHeaderDefinitionOnly,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Depends on QtCore/Gui/Widgets
|
||||||
|
generate(
|
||||||
|
"scintillaedit",
|
||||||
|
[]string{
|
||||||
|
filepath.Join(*extraLibsDir, "scintilla/qt/ScintillaEdit/ScintillaEdit.h"),
|
||||||
|
},
|
||||||
|
*clang,
|
||||||
|
strings.Fields("--std=c++1z "+pkgConfigCflags("ScintillaEdit")),
|
||||||
|
filepath.Join(*outDir, "qt-extras/scintillaedit"),
|
||||||
|
(&clangMatchUnderPath{filepath.Join(*extraLibsDir, "scintilla")}).Match,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
func generate(packageName string, srcDirs []string, clangBin string, cflags []string, outDir string, matcher ClangMatcher) {
|
func generate(packageName string, srcDirs []string, clangBin string, cflags []string, outDir string, matcher ClangMatcher) {
|
||||||
|
@ -11,6 +11,23 @@ RUN DEBIAN_FRONTEND=noninteractive apt-get update && \
|
|||||||
pkg-config \
|
pkg-config \
|
||||||
build-essential && \
|
build-essential && \
|
||||||
apt-get clean
|
apt-get clean
|
||||||
|
|
||||||
|
RUN mkdir -p /usr/local/src/scintilla && \
|
||||||
|
git clone 'https://github.com/mirror/scintilla.git' /usr/local/src/scintilla && \
|
||||||
|
git -C /usr/local/src/scintilla checkout rel-5-5-2
|
||||||
|
|
||||||
|
RUN \
|
||||||
|
cd /usr/local/src/scintilla/qt/ScintillaEditBase && \
|
||||||
|
qmake && \
|
||||||
|
make && \
|
||||||
|
cd /usr/local/src/scintilla/qt/ScintillaEdit && \
|
||||||
|
python3 WidgetGen.py && \
|
||||||
|
qmake && \
|
||||||
|
make
|
||||||
|
|
||||||
RUN mkdir -p /usr/local/lib/pkgconfig
|
RUN mkdir -p /usr/local/lib/pkgconfig
|
||||||
|
|
||||||
COPY pkg-config/QScintilla.pc.example /usr/local/lib/pkgconfig/QScintilla.pc
|
COPY pkg-config/QScintilla.pc.example /usr/local/lib/pkgconfig/QScintilla.pc
|
||||||
|
COPY pkg-config/ScintillaEdit.pc.example /usr/local/lib/pkgconfig/ScintillaEdit.pc
|
||||||
|
|
||||||
ENV GOFLAGS=-buildvcs=false
|
ENV GOFLAGS=-buildvcs=false
|
||||||
|
9
pkg-config/ScintillaEdit.pc.example
Normal file
9
pkg-config/ScintillaEdit.pc.example
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
srcdir=/usr/local/src/scintilla/
|
||||||
|
|
||||||
|
Name: ScintillaEdit
|
||||||
|
Description: Scintilla's own upstream Qt port
|
||||||
|
URL: https://www.scintilla.org/
|
||||||
|
Version: 5.5.2
|
||||||
|
Requires: Qt5Widgets
|
||||||
|
Libs: -L${srcdir}/bin -lScintillaEdit
|
||||||
|
Cflags: -include stdint.h -I${srcdir}/qt/ScintillaEdit -I${srcdir}/qt/ScintillaEditBase -I${srcdir}/include -I${srcdir}/src
|
8
qt-extras/scintillaedit/cflags.go
Normal file
8
qt-extras/scintillaedit/cflags.go
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
package scintillaedit
|
||||||
|
|
||||||
|
/*
|
||||||
|
#cgo CFLAGS:
|
||||||
|
#cgo CXXFLAGS: --std=c++1z
|
||||||
|
#cgo pkg-config: ScintillaEdit
|
||||||
|
*/
|
||||||
|
import "C"
|
Loading…
Reference in New Issue
Block a user