Compare commits

..

No commits in common. "master" and "v0.30.2" have entirely different histories.

620 changed files with 13582 additions and 28497 deletions

View File

@ -384,24 +384,6 @@
"contributions": [ "contributions": [
"code" "code"
] ]
},
{
"login": "stvkoch",
"name": "Steven Koch",
"avatar_url": "https://avatars.githubusercontent.com/u/14454?v=4",
"profile": "https://stvkoch.github.io.",
"contributions": [
"code"
]
},
{
"login": "sedwards2009",
"name": "Simon Edwards",
"avatar_url": "https://avatars.githubusercontent.com/u/6926644?v=4",
"profile": "https://github.com/sedwards2009",
"contributions": [
"code"
]
} }
], ],
"contributorsPerLine": 7, "contributorsPerLine": 7,

View File

@ -22,7 +22,6 @@ module.exports = {
'@typescript-eslint/camelcase': 0, '@typescript-eslint/camelcase': 0,
'@typescript-eslint/no-var-requires': 0, '@typescript-eslint/no-var-requires': 0,
'@typescript-eslint/no-explicit-any': 0, '@typescript-eslint/no-explicit-any': 0,
'@typescript-eslint/no-unused-vars': ['warn', { args: 'none' }],
}, },
}, },
], ],

View File

@ -9,10 +9,10 @@ jobs:
gh-release: gh-release:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v1
- uses: actions/setup-node@v2 - uses: actions/setup-node@v1
with: with:
node-version: '16.x' node-version: '14.x'
- name: Add key to allow access to repository - name: Add key to allow access to repository
env: env:
SSH_AUTH_SOCK: /tmp/ssh_agent.sock SSH_AUTH_SOCK: /tmp/ssh_agent.sock
@ -33,7 +33,7 @@ jobs:
run: | run: |
git config --global user.email "actions@gihub.com" git config --global user.email "actions@gihub.com"
git config --global user.name "gh-actions" git config --global user.name "gh-actions"
yarn install --ignore-scripts npm install --ignore-scripts
npm run docs npm run docs
cd website cd website
if [ -e yarn.lock ]; then if [ -e yarn.lock ]; then

View File

@ -7,20 +7,17 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
os: [ubuntu-20.04] os: [ubuntu-18.04]
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@master
- uses: actions/setup-node@v2 - uses: actions/setup-node@master
with: with:
node-version: '16.x' node-version: '13.x'
- name: Install ubuntu deps
if: contains(matrix.os, 'ubuntu-20.04')
run: sudo apt install mesa-common-dev libglu1-mesa-dev libegl1 libopengl-dev
- name: Install deps - name: Install deps
run: npm install run: npm install --ignore-scripts
- name: Build nodegui - name: Build nodegui
run: npm run build run: npx tsc
- name: Archive using npm pack - name: Archive using npm pack
run: npm --no-git-tag-version version 0.0.0-latest-master && npm pack run: npm --no-git-tag-version version 0.0.0-latest-master && npm pack
- uses: actions/upload-artifact@v1 - uses: actions/upload-artifact@v1

38
.github/workflows/prebuild.yml vendored Normal file
View File

@ -0,0 +1,38 @@
on:
repository_dispatch:
types: [on-demand-build]
release:
types: [created]
jobs:
build:
strategy:
fail-fast: false
matrix:
os: [ubuntu-18.04, windows-latest, macos-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v2
with:
ref: ${{ github.ref }}
# - uses: actions/setup-node@master
# with:
# node-version: '13.x'
# - name: Install ubuntu deps
# if: contains(matrix.os, 'ubuntu')
# run: sudo apt install mesa-common-dev libglu1-mesa-dev
# - name: Install deps
# run: npm install
# env:
# SKIP_BUILD: 1
# - name: Change version if master
# if: contains(github.event.client_payload.tag, '0.0.0-latest-master')
# run: npm --no-git-tag-version version 0.0.0-latest-master
# - name: Prebuild binary
# run: npx prebuild --all --backend=cmake-js --strip --runtime=napi --include-regex="\.[n,e,l][a-z]*$"
# - name: Release
# uses: softprops/action-gh-release@master
# with:
# files: prebuilds/@nodegui/*.tar.gz
# tag_name: ${{ github.event.release.tag_name || github.event.client_payload.tag }}
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@ -1,97 +0,0 @@
name: Build and Deploy to npm
on:
release:
types: [published]
jobs:
precompile:
if: contains(github.event.release.tag_name, 'v0.0.0-latest-master') == false
strategy:
matrix:
include:
- os: ubuntu-20.04
platform: linux
arch: x64
- os: windows-latest
platform: win32
arch: x64
- os: macos-latest
platform: darwin
arch: x64
runs-on: ${{ matrix.os }}
env:
ARCHIVE_FILENAME: nodegui-binary-${{github.event.release.tag_name}}-${{ matrix.platform }}-${{ matrix.arch }}.tar.gz
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: '16.x'
- name: Install ubuntu deps
if: contains(matrix.os, 'ubuntu-20.04')
run: sudo apt install mesa-common-dev libglu1-mesa-dev libegl1 libopengl-dev
- name: Install deps
run: npm install
- name: Build nodegui
run: npm run build
env:
CMAKE_BUILD_PARALLEL_LEVEL: 8
- name: Compress files
if: ${{!contains(matrix.os, 'windows-latest')}}
uses: a7ul/tar-action@v1.0.2
id: compress
with:
command: c
cwd: ./build/Release
files: |
./nodegui_core.node
outPath: ${{ env.ARCHIVE_FILENAME }}
- name: Compress files (Windows)
if: contains(matrix.os, 'windows-latest')
uses: a7ul/tar-action@v1.0.2
id: compress-windows
with:
command: c
cwd: ./build/Release
files: |
./nodegui_core.node
./nodegui_core.lib
./nodegui_core.exp
outPath: ${{ env.ARCHIVE_FILENAME }}
- uses: actions/upload-artifact@v1
with:
name: ${{ env.ARCHIVE_FILENAME }}
path: ${{ env.ARCHIVE_FILENAME }}
- name: Upload release binaries
uses: alexellis/upload-assets@0.2.2
env:
GITHUB_TOKEN: ${{ github.token }}
with:
asset_paths: '["${{ env.ARCHIVE_FILENAME }}"]'
publish-npm-package:
needs: precompile
if: contains(github.event.release.tag_name, 'v0.0.0-latest-master') == false
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: '16.x'
- name: Install ubuntu deps
run: sudo apt update
- run: sudo apt install mesa-common-dev libglu1-mesa-dev
- run: npm install
- run: echo '//registry.npmjs.org/:_authToken=${NPM_TOKEN}' >> .npmrc
- run: npm publish --access=public
env:
NPM_TOKEN: ${{ secrets.NPM_PUBLISH_TOKEN }}
CMAKE_BUILD_PARALLEL_LEVEL: 8

View File

@ -6,22 +6,20 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
os: [ubuntu-20.04, windows-latest, macos-latest] os: [ubuntu-18.04, windows-latest, macos-latest]
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@master
- uses: actions/setup-node@v2 - uses: actions/setup-node@master
with: with:
node-version: '16.x' node-version: '13.x'
- name: Install ubuntu deps - name: Install ubuntu deps
if: contains(matrix.os, 'ubuntu-20.04') if: contains(matrix.os, 'ubuntu')
run: sudo apt install mesa-common-dev libglu1-mesa-dev libegl1 libopengl-dev run: sudo apt install mesa-common-dev libglu1-mesa-dev
- name: Install deps - name: Install deps
run: npm install run: npm install
- name: Build nodegui - name: Build nodegui
run: npm run build run: npm run build
env:
CMAKE_BUILD_PARALLEL_LEVEL: 8
- name: Run tests - name: Run tests
run: npm run test run: npm run test
- name: Run linters for cpp - name: Run linters for cpp

View File

@ -11,10 +11,6 @@ set(CORE_WIDGETS_ADDON "nodegui_core")
project(${CORE_WIDGETS_ADDON}) project(${CORE_WIDGETS_ADDON})
set(CMAKE_BUILD_WITH_INSTALL_RPATH ON)
# Note: CMake+moc also use this list when finding files which `moc` applied.
add_library(${CORE_WIDGETS_ADDON} SHARED add_library(${CORE_WIDGETS_ADDON} SHARED
"${CMAKE_JS_SRC}" "${CMAKE_JS_SRC}"
"${PROJECT_SOURCE_DIR}/src/cpp/main.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/main.cpp"
@ -28,8 +24,6 @@ add_library(${CORE_WIDGETS_ADDON} SHARED
"${PROJECT_SOURCE_DIR}/src/cpp/lib/core/Events/eventsmap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/core/Events/eventsmap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/core/Events/eventwidget.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/core/Events/eventwidget.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/core/YogaWidget/yogawidget.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/core/YogaWidget/yogawidget.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/include/nodegui/core/WrapperCache/wrappercache.h"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/core/WrapperCache/wrappercache.cpp"
# core deps # core deps
"${PROJECT_SOURCE_DIR}/src/cpp/include/deps/yoga/log.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/include/deps/yoga/log.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/include/deps/yoga/Utils.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/include/deps/yoga/Utils.cpp"
@ -52,21 +46,14 @@ add_library(${CORE_WIDGETS_ADDON} SHARED
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QDrag/qdrag_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QDrag/qdrag_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QEvent/QKeyEvent/qkeyevent_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QEvent/QKeyEvent/qkeyevent_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QEvent/QMouseEvent/qmouseevent_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QEvent/QMouseEvent/qmouseevent_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QEvent/QMoveEvent/qmoveevent_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QEvent/QWheelEvent/qwheelevent_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QEvent/QWheelEvent/qwheelevent_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QEvent/QNativeGestureEvent/qnativegestureevent_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QEvent/QNativeGestureEvent/qnativegestureevent_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QEvent/QPaintEvent/qpaintevent_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QEvent/QTabletEvent/qtabletevent_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QEvent/QTabletEvent/qtabletevent_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QEvent/QTimerEvent/qtimerevent_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QEvent/QDropEvent/qdropevent_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QEvent/QDropEvent/qdropevent_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QEvent/QDragMoveEvent/qdragmoveevent_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QEvent/QDragMoveEvent/qdragmoveevent_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QEvent/QDragLeaveEvent/qdragleaveevent_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QEvent/QDragLeaveEvent/qdragleaveevent_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QEvent/QResizeEvent/qresizeevent_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QEvent/QInputMethodEvent/qinputmethodevent_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QEvent/QInputMethodQueryEvent/qinputmethodqueryevent_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QFontDatabase/qfontdatabase_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QFontDatabase/qfontdatabase_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QFontMetrics/qfontmetrics_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QFontMetrics/qfontmetrics_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QFontMetricsF/qfontmetricsf_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QPicture/qpicture_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QPicture/qpicture_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QPixmap/qpixmap_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QPixmap/qpixmap_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QIcon/qicon_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QIcon/qicon_wrap.cpp"
@ -75,19 +62,13 @@ add_library(${CORE_WIDGETS_ADDON} SHARED
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QCursor/qcursor_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QCursor/qcursor_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QKeySequence/qkeysequence_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QKeySequence/qkeysequence_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QMovie/qmovie_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QMovie/qmovie_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QPalette/qpalette_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QScreen/qscreen_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QStyle/qstyle_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QStyle/qstyle_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QWindow/qwindow_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtCore/QAbstractItemModel/qabstractitemmodel_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtCore/QDate/qdate_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtCore/QDate/qdate_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtCore/QDateTime/qdatetime_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtCore/QDateTime/qdatetime_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtCore/QItemSelectionModel/qitemselectionmodel_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtCore/QModelIndex/qmodelindex_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtCore/QModelIndex/qmodelindex_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtCore/QObject/qobject_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtCore/QObject/qobject_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtCore/QVariant/qvariant_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtCore/QVariant/qvariant_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtCore/QSize/qsize_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtCore/QSize/qsize_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtCore/QSizeF/qsizef_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtCore/QSettings/qsettings_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtCore/QSettings/qsettings_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtCore/QRect/qrect_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtCore/QRect/qrect_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtCore/QRectF/qrectf_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtCore/QRectF/qrectf_wrap.cpp"
@ -111,7 +92,6 @@ add_library(${CORE_WIDGETS_ADDON} SHARED
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtWidgets/QFrame/qframe_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtWidgets/QFrame/qframe_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtWidgets/QGraphicsBlurEffect/qgraphicsblureffect_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtWidgets/QGraphicsBlurEffect/qgraphicsblureffect_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtWidgets/QGraphicsDropShadowEffect/qgraphicsdropshadoweffect_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtWidgets/QGraphicsDropShadowEffect/qgraphicsdropshadoweffect_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtWidgets/QHeaderView/qheaderview_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtWidgets/QListView/qlistview_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtWidgets/QListView/qlistview_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtWidgets/QListWidget/qlistwidget_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtWidgets/QListWidget/qlistwidget_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtWidgets/QListWidgetItem/qlistwidgetitem_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtWidgets/QListWidgetItem/qlistwidgetitem_wrap.cpp"
@ -160,12 +140,8 @@ add_library(${CORE_WIDGETS_ADDON} SHARED
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtWidgets/QStandardItemModel/qstandarditemmodel_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtWidgets/QStandardItemModel/qstandarditemmodel_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtWidgets/QStandardItem/qstandarditem_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtWidgets/QStandardItem/qstandarditem_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtWidgets/QSvgWidget/qsvgwidget_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtWidgets/QSvgWidget/qsvgwidget_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtWidgets/QStyleFactory/qstylefactory_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtWidgets/QDesktopWidget/qdesktopwidget_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtWidgets/QSplitter/qsplitter_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtWidgets/QAbstractItemDelegate/qabstractitemdelegate_wrap.cpp"
# Custom widgets (include them for automoc since they contain Q_OBJECT) # Custom widgets (include them for automoc since they contain Q_OBJECT)
"${PROJECT_SOURCE_DIR}/src/cpp/include/nodegui/QtCore/QAbstractItemModel/nabstractitemmodel.hpp"
"${PROJECT_SOURCE_DIR}/src/cpp/include/nodegui/QtCore/QItemSelectionModel/nitemselectionmodel.hpp"
"${PROJECT_SOURCE_DIR}/src/cpp/include/nodegui/QtCore/QObject/nobject.hpp" "${PROJECT_SOURCE_DIR}/src/cpp/include/nodegui/QtCore/QObject/nobject.hpp"
"${PROJECT_SOURCE_DIR}/src/cpp/include/nodegui/core/FlexLayout/flexlayout.hpp" "${PROJECT_SOURCE_DIR}/src/cpp/include/nodegui/core/FlexLayout/flexlayout.hpp"
"${PROJECT_SOURCE_DIR}/src/cpp/include/nodegui/QtGui/QMovie/nmovie.hpp" "${PROJECT_SOURCE_DIR}/src/cpp/include/nodegui/QtGui/QMovie/nmovie.hpp"
@ -227,13 +203,7 @@ add_library(${CORE_WIDGETS_ADDON} SHARED
"${PROJECT_SOURCE_DIR}/src/cpp/include/nodegui/QtWidgets/QTextBrowser/ntextbrowser.hpp" "${PROJECT_SOURCE_DIR}/src/cpp/include/nodegui/QtWidgets/QTextBrowser/ntextbrowser.hpp"
"${PROJECT_SOURCE_DIR}/src/cpp/include/nodegui/QtWidgets/QTextEdit/ntextedit.hpp" "${PROJECT_SOURCE_DIR}/src/cpp/include/nodegui/QtWidgets/QTextEdit/ntextedit.hpp"
"${PROJECT_SOURCE_DIR}/src/cpp/include/nodegui/QtWidgets/QSvgWidget/nsvgwidget.hpp" "${PROJECT_SOURCE_DIR}/src/cpp/include/nodegui/QtWidgets/QSvgWidget/nsvgwidget.hpp"
"${PROJECT_SOURCE_DIR}/src/cpp/include/nodegui/QtWidgets/QHeaderView/nheaderview.hpp" "${PROJECT_SOURCE_DIR}/src/cpp/include/nodegui/QtWidgets/QDesktopWidget/nqdesktopwidget.hpp"
"${PROJECT_SOURCE_DIR}/src/cpp/include/nodegui/QtWidgets/QSplitter/nsplitter.hpp"
# Test
"${PROJECT_SOURCE_DIR}/src/cpp/include/nodegui/test/CacheTestQObject.h"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/test/CacheTestQObject.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/test/cachetestqobject_wrap.cpp"
) )
AddCommonConfig(${CORE_WIDGETS_ADDON}) AddCommonConfig(${CORE_WIDGETS_ADDON})
@ -256,28 +226,14 @@ if (WIN32)
target_compile_definitions(${CORE_WIDGETS_ADDON} PRIVATE target_compile_definitions(${CORE_WIDGETS_ADDON} PRIVATE
ENABLE_DLL_EXPORT=1 ENABLE_DLL_EXPORT=1
) )
target_compile_options(${CORE_WIDGETS_ADDON} PRIVATE "/MP") target_compile_options(${CORE_WIDGETS_ADDON} PRIVATE "/MP4")
endif()
if (UNIX AND NOT APPLE)
# Set the RPATH in the binary to a relative one to allow it to find our Qt
# libraries regardless of where the base installation directory is.
file(RELATIVE_PATH QT_LIBRARY_REL_PATH "${CMAKE_BINARY_DIR}/Release" "${QT_CMAKE_HOME_DIR}/../..")
set_target_properties(${CORE_WIDGETS_ADDON} PROPERTIES INSTALL_RPATH "\$ORIGIN/${QT_LIBRARY_REL_PATH}")
set_target_properties(${CORE_WIDGETS_ADDON} PROPERTIES BUILD_WITH_INSTALL_RPATH TRUE)
endif()
if (APPLE)
set(CMAKE_MACOSX_RPATH ON)
file(RELATIVE_PATH QT_LIBRARY_REL_PATH "${CMAKE_BINARY_DIR}/Release" "${QT_CMAKE_HOME_DIR}/../..")
set_target_properties(${CORE_WIDGETS_ADDON} PROPERTIES INSTALL_RPATH "@loader_path/${QT_LIBRARY_REL_PATH}")
endif() endif()
target_link_libraries(${CORE_WIDGETS_ADDON} PRIVATE target_link_libraries(${CORE_WIDGETS_ADDON} PRIVATE
"${CMAKE_JS_LIB}" "${CMAKE_JS_LIB}"
Qt6::Widgets Qt5::Widgets
Qt6::Core Qt5::Core
Qt6::Gui Qt5::Gui
Qt6::Svg Qt5::Svg
Qt6::SvgWidgets
) )

182
README.md
View File

@ -1,13 +1,14 @@
# NodeGui # NodeGui
[![All Contributors](https://img.shields.io/badge/All_contributors-66-orange.svg)](#contributors) [![Join the NodeGUI community on Spectrum](https://withspectrum.github.io/badge/badge.svg)](https://spectrum.chat/nodegui)
[![All Contributors](https://img.shields.io/badge/all_contributors-16-orange.svg?style=flat-square)](#contributors)
[![JS Party #96](https://img.shields.io/badge/JS%20Party-%2396-FFCD00.svg)](https://changelog.com/jsparty/96) [![JS Party #96](https://img.shields.io/badge/JS%20Party-%2396-FFCD00.svg)](https://changelog.com/jsparty/96)
[![Build and Test status](https://github.com/nodegui/nodegui/workflows/.github/workflows/test.yml/badge.svg)](https://github.com/nodegui/nodegui/actions) [![Build and Test status](https://github.com/nodegui/nodegui/workflows/.github/workflows/test.yml/badge.svg)](https://github.com/nodegui/nodegui/actions)
[![Discuss on GitHub](https://img.shields.io/badge/Discuss%20on-GitHub-blue)](https://github.com/nodegui/nodegui/discussions)
Build **performant**, **native** and **cross-platform** desktop applications with **Node.js** and **CSS like styling**.🚀 Build **performant**, **native** and **cross-platform** desktop applications with **Node.js** and **CSS like styling**.🚀
NodeGUI is powered by **Qt6** 💚 which makes it CPU and memory efficient as compared to other chromium based solutions like Electron. NodeGUI is powered by **Qt5** 💚 which makes it CPU and memory efficient as compared to other chromium based solutions like electron.
<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/a/a7/React-icon.svg/1024px-React-icon.svg.png" alt="" width="25"> If you are looking for **React** based version, check out: **[React NodeGUI](https://github.com/nodegui/react-nodegui)**. <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/a/a7/React-icon.svg/1024px-React-icon.svg.png" alt="" width="25"> If you are looking for **React** based version, check out: **[React NodeGUI](https://github.com/nodegui/react-nodegui)**.
@ -15,7 +16,7 @@ NodeGUI is powered by **Qt6** 💚 which makes it CPU and memory efficient as co
<img src="https://github.com/sveltejs/branding/raw/master/svelte-logo.png" alt="" width="25" /> If you are looking for **Svelte** based version, check out: **[Svelte NodeGUI](https://github.com/nodegui/svelte-nodegui)** <img src="https://github.com/sveltejs/branding/raw/master/svelte-logo.png" alt="" width="25" /> If you are looking for **Svelte** based version, check out: **[Svelte NodeGUI](https://github.com/nodegui/svelte-nodegui)**
Visit https://nodegui.github.io/nodegui for docs. Visit: https://nodegui.github.io/nodegui for docs.
<img alt="logo" src="https://github.com/nodegui/nodegui/raw/master/extras/logo/nodegui.png" height="200" /> <img alt="logo" src="https://github.com/nodegui/nodegui/raw/master/extras/logo/nodegui.png" height="200" />
@ -30,7 +31,9 @@ Visit https://nodegui.github.io/nodegui for docs.
<div style="display:inline; margin: 0 auto;"><img alt="kitchen" src="https://github.com/nodegui/nodegui/raw/master/extras/assets/kitchen.png" height="280" /><img alt="demo_mac" src="https://github.com/nodegui/examples/raw/master/react-nodegui/weather-app-widget/weather_widget_mac.png" height="280" /><img alt="demo_win" src="https://github.com/nodegui/examples/raw/master/react-nodegui/image-view/image_view_win.jpg" height="280" /> <div style="display:inline; margin: 0 auto;"><img alt="kitchen" src="https://github.com/nodegui/nodegui/raw/master/extras/assets/kitchen.png" height="280" /><img alt="demo_mac" src="https://github.com/nodegui/examples/raw/master/react-nodegui/weather-app-widget/weather_widget_mac.png" height="280" /><img alt="demo_win" src="https://github.com/nodegui/examples/raw/master/react-nodegui/image-view/image_view_win.jpg" height="280" />
</div> </div>
### Code Examples **More screenshots?**
### More Examples:
https://github.com/nodegui/examples https://github.com/nodegui/examples
@ -38,17 +41,17 @@ https://github.com/nodegui/examples
## Features ## Features
- 🧬 **Cross platform.** Works on major Linux flavours, Windows, and MacOS. - 🧬 Cross platform. Should work on major Linux flavours, Windows and MacOS.
- 📉 **Low CPU and memory** footprint. Current CPU stays at 0% on idle and memory usage is under 20MB for a Hello World program. - 📉 Low CPU and memory footprint. Current CPU stays at 0% on idle and memory usage is under 20mb for a hello world program.
- 💅 **Styling with CSS** (includes actual cascading). Also has full support for Flexbox layout (thanks to Yoga). - 💅 Styling with CSS (includes actual cascading). Also has full support for Flexbox layout (thanks to Yoga).
- ✅ **Complete Nodejs API support** (Currently runs on Node v16.x - and is easily upgradable). Hence has access to all Nodejs compatible NPM modules. - ✅ Complete Nodejs api support (Currently runs on Node v12.x - and is easily upgradable). Hence has access to all nodejs compatible npm modules.
- 🎪 **Native widget event listener support.** Supports all events available from Qt / NodeJs. - 🎪 Native widget event listener support. Supports all events available from Qt / NodeJs.
- 💸 **Can be used for Commercial applications.** - 💸 Can be used for Commercial applications.
- 🕵️‍♂️ **Good Devtools support.** - 🕵️‍♂️ Good Devtools support.
- 📚 **Good documentation and website.** - 📚 Good documentation and website.
- 🧙‍♂️ **Good documentation for contributors.** - 🧙‍♂️ Good documentation for contributors.
- 🦹🏻‍♀️ **Good support for dark mode (Thanks to Qt).** - 🦹🏻‍♀️ Good support for dark mode (Thanks to Qt).
- 🏅**First class Typescript support.** (Works on regular JS projects too 😉). - 🏅First class Typescript support. (Works on regular JS projects too 😉).
## Getting Started ## Getting Started
@ -57,16 +60,47 @@ https://github.com/nodegui/examples
- Checkout the examples: https://github.com/nodegui/examples . - Checkout the examples: https://github.com/nodegui/examples .
- [Tutorial: Build a native Meme Search Desktop app with Javascript (NodeGui) and Giphy API](https://www.sitepoint.com/build-native-desktop-gif-searcher-app-using-nodegui/) - [Tutorial: Build a native Meme Search Desktop app with Javascript (NodeGui) and Giphy API](https://www.sitepoint.com/build-native-desktop-gif-searcher-app-using-nodegui/)
## Installation ## Installation
To install latest stable release: NodeGui requires CMake and Compilation Tools as it is a wrapper for a native C++ widget toolkit QT.
Detailed instructions here: https://www.sitepoint.com/build-native-desktop-gif-searcher-app-using-nodegui/
TL;DR:
MacOS
```
brew install cmake
brew install make
```
Windows
https://cmake.org/download/
Linux (Debian/Ubuntu)
```
sudo apt-get install pkg-config build-essential
sudo apt-get install cmake make
sudo apt-get install mesa-common-dev libglu1-mesa-dev
```
Linux (Fedora/RHEL/CentOS)
```
sudo dnf groupinstall "Development Tools" "Development Libraries"
sudo dnf groupinstall "C Development Tools and Libraries"
sudo dnf install mesa-libGL mesa-libGL-devel
```
Then install NodeGui from your command line:
#### To install latest stable release:
``` ```
npm install @nodegui/nodegui npm install @nodegui/nodegui
``` ```
To install the latest version available on master branch: #### To install the latest version available on master branch:
``` ```
npm install https://github.com/nodegui/nodegui/releases/download/v0.0.0-latest-master/nodegui-master.tgz npm install https://github.com/nodegui/nodegui/releases/download/v0.0.0-latest-master/nodegui-master.tgz
@ -88,15 +122,13 @@ npm install @nodegui/nodegui
See [FAQs](https://github.com/nodegui/nodegui/tree/master/website/docs/faq.md#why-does-installation-fail-at-minimal-qt-setup) for more details. See [FAQs](https://github.com/nodegui/nodegui/tree/master/website/docs/faq.md#why-does-installation-fail-at-minimal-qt-setup) for more details.
**Community guides**
## Community guides
- [Tutorial: Build a native Meme Search Desktop app with Javascript (NodeGui) and Giphy API](https://www.sitepoint.com/build-native-desktop-gif-searcher-app-using-nodegui/) - [Tutorial: Build a native Meme Search Desktop app with Javascript (NodeGui) and Giphy API](https://www.sitepoint.com/build-native-desktop-gif-searcher-app-using-nodegui/)
- https://blog.logrocket.com/electron-alternatives-exploring-nodegui-and-react-nodegui/ - Electron alternatives: Exploring NodeGUI and React NodeGUI by [Siegfried Grimbeek](https://blog.logrocket.com/author/siegfriedgrimbeek/). - https://blog.logrocket.com/electron-alternatives-exploring-nodegui-and-react-nodegui/ - Electron alternatives: Exploring NodeGUI and React NodeGUI by [Siegfried Grimbeek](https://blog.logrocket.com/author/siegfriedgrimbeek/).
- https://hibbard.eu/node-gui/ - Excellent guide from [James Hibbard](https://github.com/jameshibbard). - https://hibbard.eu/node-gui/ - Excellent guide from [James Hibbard](https://github.com/jameshibbard).
## Talks/Podcasts **Talks/Podcasts**
- [NodeGui and React NodeGui at KarmaJS Nov 2019 meetup: https://www.youtube.com/watch?v=8jH5gaEEDv4](https://www.youtube.com/watch?v=8jH5gaEEDv4) - [NodeGui and React NodeGui at KarmaJS Nov 2019 meetup: https://www.youtube.com/watch?v=8jH5gaEEDv4](https://www.youtube.com/watch?v=8jH5gaEEDv4)
@ -112,104 +144,11 @@ Looking to contribute? If you wish to implement a new widget/add more features a
Please read https://github.com/nodegui/.github/blob/master/CONTRIBUTING.md Please read https://github.com/nodegui/.github/blob/master/CONTRIBUTING.md
## Building
## Building from source `npm run build`
This section is useful for those wanting to work on NodeGui itself. Optionally set `QT_INSTALL_DIR='/path/to/qt'` environment variable to build using your own version of Qt.
### Required tooling
NodeGui requires CMake and Compilation Tools as it is a wrapper for a native C++ widget toolkit QT.
Detailed instructions here: https://www.sitepoint.com/build-native-desktop-gif-searcher-app-using-nodegui/
TL;DR:
**MacOS**
```
brew install cmake
brew install make
```
**Windows**
https://cmake.org/download/
**Linux (Debian/Ubuntu)**
```
sudo apt-get install pkg-config build-essential
sudo apt-get install cmake make
sudo apt-get install mesa-common-dev libglu1-mesa-dev
```
**Linux (Fedora/RHEL/CentOS)**
```
sudo dnf groupinstall "Development Tools" "Development Libraries"
sudo dnf groupinstall "C Development Tools and Libraries"
sudo dnf install mesa-libGL mesa-libGL-devel
```
### Building
Once you have cloned this git repository, run this to build:
```
npm install
npm run build
```
The last step will takes some time to run as it builds the C++ binaries at the core of NodeGui.
### Using your own custom Qt installation (Optional)
**Compiling Qt from source**
You will need to download and install Qt from source since there are no binaries from Qt for M1 yet.
(https://www.reddit.com/r/QtFramework/comments/ll58wg/how_to_build_qt_creator_for_macos_arm64_a_guide/)
```
git clone git://code.qt.io/qt/qt5.git
cd qt5
git checkout 5.15
./init-repository --module-subset=essential -f
git submodule init qtsvg
git submodule update qtsvg
cd ..
mkdir qt5-5.15-macOS-release
cd qt5-5.15-macOS-release
../qt5/configure -release QMAKE_APPLE_DEVICE_ARCHS=arm64 -opensource -confirm-license -nomake examples -nomake tests -skip qt3d -skip webengine -skip qtactiveqt -skip qtcanvas3d -skip qtdeclarative -skip qtdatavis3d -skip qtdoc -skip qtgamepad -skip qtcharts -skip qtgraphicaleffects -skip qtlocation -skip qtpurchasing -skip qtquickcontrols -skip qtquickcontrols2 -skip qtremoteobjects -skip qtscxml -skip qtsensors -skip qtserialbus -skip qtserialport -skip qtspeech -skip qtvirtualkeyboard -skip qtscript
make -j15
make install
```
This should install Qt into something like this `/usr/local/Qt-5.15.3` (your directory can change. This will be displayed when running make)
**Pointing nodegui to use your custom Qt installation**
Now just set `export QT_INSTALL_DIR=<your qt path>` . In the above example it would look something like this `export QT_INSTALL_DIR=/usr/local/Qt-5.15.3`. Add this in your .zshrc or .bashrc so that you dont need to repeat this process again.
Now just `rm -rf node_modules` and do `npm install` again.
The logs should say something like `CustomQt detected at <your qt path>. Hence, skipping Mini Qt installation`.
### Running example programs
A number of small programs to show different parts of the Qt API are in `src/examples`. They can be run directly with:
```
npm run qode dist/examples/modelview_1_readonly.js
```
## Updating docs ## Updating docs
@ -263,7 +202,6 @@ People maintaining this project.
<table> <table>
<tr> <tr>
<td align="center"><a href="https://blog.atulr.com"><img src="https://avatars2.githubusercontent.com/u/4029423?v=4" width="100px;" alt="Atul R"/><br /><sub><b>Atul R</b></sub></a></td> <td align="center"><a href="https://blog.atulr.com"><img src="https://avatars2.githubusercontent.com/u/4029423?v=4" width="100px;" alt="Atul R"/><br /><sub><b>Atul R</b></sub></a></td>
<td align="center"><a href="https://github.com/sedwards2009"><img src="https://avatars.githubusercontent.com/u/6926644?v=4" width="100px;" alt="Simon Edwards"/><br /><sub><b>Simon Edwards</b></sub></a></td>
</tr> </tr>
</table> </table>
@ -329,10 +267,6 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
<td align="center"><a href="https://github.com/zhb124404"><img src="https://avatars.githubusercontent.com/u/16805041?v=4?s=100" width="100px;" alt=""/><br /><sub><b>zhb124404</b></sub></a><br /><a href="https://github.com/nodegui/nodegui/commits?author=zhb124404" title="Documentation">📖</a></td> <td align="center"><a href="https://github.com/zhb124404"><img src="https://avatars.githubusercontent.com/u/16805041?v=4?s=100" width="100px;" alt=""/><br /><sub><b>zhb124404</b></sub></a><br /><a href="https://github.com/nodegui/nodegui/commits?author=zhb124404" title="Documentation">📖</a></td>
<td align="center"><a href="http://www.apsis.io"><img src="https://avatars.githubusercontent.com/u/579688?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Wyatt Kirby</b></sub></a><br /><a href="https://github.com/nodegui/nodegui/commits?author=wkirby" title="Code">💻</a></td> <td align="center"><a href="http://www.apsis.io"><img src="https://avatars.githubusercontent.com/u/579688?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Wyatt Kirby</b></sub></a><br /><a href="https://github.com/nodegui/nodegui/commits?author=wkirby" title="Code">💻</a></td>
</tr> </tr>
<tr>
<td align="center"><a href="https://stvkoch.github.io."><img src="https://avatars.githubusercontent.com/u/14454?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Steven Koch</b></sub></a><br /><a href="https://github.com/nodegui/nodegui/commits?author=stvkoch" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/sedwards2009"><img src="https://avatars.githubusercontent.com/u/6926644?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Simon Edwards</b></sub></a><br /><a href="https://github.com/nodegui/nodegui/commits?author=sedwards2009" title="Code">💻</a></td>
</tr>
</table> </table>
<!-- markdownlint-restore --> <!-- markdownlint-restore -->

View File

@ -9,13 +9,11 @@ set(CMAKE_OSX_DEPLOYMENT_TARGET "10.13" CACHE STRING "Minimum OS X deployment ve
function(AddCommonConfig addonName) function(AddCommonConfig addonName)
target_compile_features(${addonName} PRIVATE target_compile_features(${addonName} PRIVATE
cxx_constexpr
cxx_inheriting_constructors cxx_inheriting_constructors
cxx_lambdas cxx_lambdas
cxx_auto_type cxx_auto_type
cxx_variadic_templates cxx_variadic_templates
cxx_variable_templates cxx_variable_templates
cxx_std_17
) )
if(napi_build_version) if(napi_build_version)

View File

@ -16,7 +16,7 @@ macro(AddQodeSupport addonName)
message(STATUS "Using Qode installation for ${addonName} QODE_BINARY_DIR:${QODE_BINARY_DIR}") message(STATUS "Using Qode installation for ${addonName} QODE_BINARY_DIR:${QODE_BINARY_DIR}")
target_link_libraries(${CORE_WIDGETS_ADDON} PRIVATE target_link_libraries(${CORE_WIDGETS_ADDON} PRIVATE
"${QODE_BINARY_DIR}\\node.lib" "${QODE_BINARY_DIR}\\qode.lib"
) )
endif() endif()

View File

@ -17,9 +17,9 @@ macro(AddQtSupport addonName)
string(REPLACE "\n" "" QT_CMAKE_HOME_DIR "${QT_CMAKE_HOME_DIR}") string(REPLACE "\n" "" QT_CMAKE_HOME_DIR "${QT_CMAKE_HOME_DIR}")
string(REPLACE "\"" "" QT_CMAKE_HOME_DIR "${QT_CMAKE_HOME_DIR}") string(REPLACE "\"" "" QT_CMAKE_HOME_DIR "${QT_CMAKE_HOME_DIR}")
message(STATUS "Using Qt installation for ${addonName} QT_CMAKE_HOME_DIR:${QT_CMAKE_HOME_DIR}") message(STATUS "Using QT installation for ${addonName} QT_CMAKE_HOME_DIR:${QT_CMAKE_HOME_DIR}")
list(APPEND CMAKE_PREFIX_PATH "${QT_CMAKE_HOME_DIR}/../../..") set(Qt5_DIR ${QT_CMAKE_HOME_DIR})
find_package(Qt6 REQUIRED COMPONENTS Widgets Gui Core Svg SvgWidgets) find_package(Qt5 COMPONENTS Widgets Gui Core Svg REQUIRED)
endmacro(AddQtSupport addonName) endmacro(AddQtSupport addonName)

View File

@ -3,56 +3,56 @@ const path = require('path');
const fs = require('fs'); const fs = require('fs');
const SETUP_DIR = path.resolve(__dirname, '..', 'miniqt'); const SETUP_DIR = path.resolve(__dirname, '..', 'miniqt');
const QT_VERSION = '6.4.1'; const QT_VERSION = '5.14.1';
const MIRROR = Boolean(process.env.QT_LINK_MIRROR) ? process.env.QT_LINK_MIRROR : 'https://download.qt.io'; const MIRROR = Boolean(process.env.QT_LINK_MIRROR) ? process.env.QT_LINK_MIRROR : "https://download.qt.io";
const checkIfExists = (fullPath) => { const checkIfExists = fullPath => {
return () => fs.existsSync(fullPath); return () => fs.existsSync(fullPath);
}; };
function getMiniQtConfig() { function getMiniQtConfig() {
switch (os.platform()) { switch (os.platform()) {
case 'darwin': { case 'darwin': {
const qtHome = path.resolve(SETUP_DIR, QT_VERSION, 'macos'); const qtHome = path.resolve(SETUP_DIR, QT_VERSION, 'clang_64');
return { return {
qtHome, qtHome,
artifacts: [ artifacts: [
{ {
name: 'Qt Base', name: 'Qt Base',
link: `${MIRROR}/online/qtsdkrepository/mac_x64/desktop/qt6_641/qt.qt6.641.clang_64/6.4.1-0-202211101256qtbase-MacOS-MacOS_12-Clang-MacOS-MacOS_12-X86_64-ARM64.7z`, link: `${MIRROR}/online/qtsdkrepository/mac_x64/desktop/qt5_5141/qt.qt5.5141.clang_64/5.14.1-0-202001241000qtbase-MacOS-MacOS_10_13-Clang-MacOS-MacOS_10_13-X86_64.7z`,
skipSetup: checkIfExists(path.resolve(qtHome, 'plugins', 'platforms', 'libqcocoa.dylib')), skipSetup: checkIfExists(path.resolve(qtHome, 'plugins', 'platforms', 'libqcocoa.dylib')),
}, },
{ {
name: 'Qt Svg', name: 'Qt Svg',
link: `${MIRROR}/online/qtsdkrepository/mac_x64/desktop/qt6_641/qt.qt6.641.clang_64/6.4.1-0-202211101256qtsvg-MacOS-MacOS_12-Clang-MacOS-MacOS_12-X86_64-ARM64.7z`, link: `${MIRROR}/online/qtsdkrepository/mac_x64/desktop/qt5_5141/qt.qt5.5141.clang_64/5.14.1-0-202001241000qtsvg-MacOS-MacOS_10_13-Clang-MacOS-MacOS_10_13-X86_64.7z`,
skipSetup: checkIfExists(path.resolve(qtHome, 'lib', 'QtSvg.framework', 'QtSvg')), skipSetup: checkIfExists(path.resolve(qtHome, 'lib', 'QtSvg.framework', 'QtSvg')),
}, },
{ {
name: 'Qt Tools', name: 'Qt Tools',
link: `${MIRROR}/online/qtsdkrepository/mac_x64/desktop/qt6_641/qt.qt6.641.clang_64/6.4.1-0-202211101256qttools-MacOS-MacOS_12-Clang-MacOS-MacOS_12-X86_64-ARM64.7z`, link: `${MIRROR}/online/qtsdkrepository/mac_x64/desktop/qt5_5141/qt.qt5.5141.clang_64/5.14.1-0-202001241000qttools-MacOS-MacOS_10_13-Clang-MacOS-MacOS_10_13-X86_64.7z`,
skipSetup: checkIfExists(path.resolve(qtHome, 'bin', 'macdeployqt')), skipSetup: checkIfExists(path.resolve(qtHome, 'bin', 'macdeployqt')),
}, },
], ],
}; };
} }
case 'win32': { case 'win32': {
const qtHome = path.resolve(SETUP_DIR, QT_VERSION, 'msvc2019_64'); const qtHome = path.resolve(SETUP_DIR, QT_VERSION, 'msvc2017_64');
return { return {
qtHome, qtHome,
artifacts: [ artifacts: [
{ {
name: 'Qt Base', name: 'Qt Base',
link: `${MIRROR}/online/qtsdkrepository/windows_x86/desktop/qt6_641/qt.qt6.641.win64_msvc2019_64/6.4.1-0-202211101254qtbase-Windows-Windows_10_21H2-MSVC2019-Windows-Windows_10_21H2-X86_64.7z`, link: `${MIRROR}/online/qtsdkrepository/windows_x86/desktop/qt5_5141/qt.qt5.5141.win64_msvc2017_64/5.14.1-0-202001240957qtbase-Windows-Windows_10-MSVC2017-Windows-Windows_10-X86_64.7z`,
skipSetup: checkIfExists(path.resolve(qtHome, 'bin', 'Qt6Core.dll')), skipSetup: checkIfExists(path.resolve(qtHome, 'bin', 'Qt5Core.dll')),
}, },
{ {
name: 'Qt SVG', name: 'Qt SVG',
link: `${MIRROR}/online/qtsdkrepository/windows_x86/desktop/qt6_641/qt.qt6.641.win64_msvc2019_64/6.4.1-0-202211101254qtsvg-Windows-Windows_10_21H2-MSVC2019-Windows-Windows_10_21H2-X86_64.7z`, link: `${MIRROR}/online/qtsdkrepository/windows_x86/desktop/qt5_5141/qt.qt5.5141.win64_msvc2017_64/5.14.1-0-202001240957qtsvg-Windows-Windows_10-MSVC2017-Windows-Windows_10-X86_64.7z`,
skipSetup: checkIfExists(path.resolve(qtHome, 'bin', 'Qt6Svg.dll')), skipSetup: checkIfExists(path.resolve(qtHome, 'bin', 'Qt5Svg.dll')),
}, },
{ {
name: 'Qt Tools', name: 'Qt Tools',
link: `${MIRROR}/online/qtsdkrepository/windows_x86/desktop/qt6_641/qt.qt6.641.win64_msvc2019_64/6.4.1-0-202211101254qttools-Windows-Windows_10_21H2-MSVC2019-Windows-Windows_10_21H2-X86_64.7z`, link: `${MIRROR}/online/qtsdkrepository/windows_x86/desktop/qt5_5141/qt.qt5.5141.win64_msvc2017_64/5.14.1-0-202001240957qttools-Windows-Windows_10-MSVC2017-Windows-Windows_10-X86_64.7z`,
skipSetup: checkIfExists(path.resolve(qtHome, 'bin', 'windeployqt.exe')), skipSetup: checkIfExists(path.resolve(qtHome, 'bin', 'windeployqt.exe')),
}, },
], ],
@ -65,17 +65,17 @@ function getMiniQtConfig() {
artifacts: [ artifacts: [
{ {
name: 'Qt Base', name: 'Qt Base',
link: `${MIRROR}/online/qtsdkrepository/linux_x64/desktop/qt6_641/qt.qt6.641.gcc_64/6.4.1-0-202211101305qtbase-Linux-RHEL_8_4-GCC-Linux-RHEL_8_4-X86_64.7z`, link: `${MIRROR}/online/qtsdkrepository/linux_x64/desktop/qt5_5141/qt.qt5.5141.gcc_64/5.14.1-0-202001240953qtbase-Linux-RHEL_7_6-GCC-Linux-RHEL_7_6-X86_64.7z`,
skipSetup: checkIfExists(path.resolve(qtHome, 'bin', 'moc')), skipSetup: checkIfExists(path.resolve(qtHome, 'bin', 'moc')),
}, },
{ {
name: 'Qt SVG', name: 'Qt SVG',
link: `${MIRROR}/online/qtsdkrepository/linux_x64/desktop/qt6_641/qt.qt6.641.gcc_64/6.4.1-0-202211101305qtsvg-Linux-RHEL_8_4-GCC-Linux-RHEL_8_4-X86_64.7z`, link: `${MIRROR}/online/qtsdkrepository/linux_x64/desktop/qt5_5141/qt.qt5.5141.gcc_64/5.14.1-0-202001240953qtsvg-Linux-RHEL_7_6-GCC-Linux-RHEL_7_6-X86_64.7z`,
skipSetup: checkIfExists(path.resolve(qtHome, 'lib', 'libQt6Svg.so')), skipSetup: checkIfExists(path.resolve(qtHome, 'lib', 'libQt5Svg.so')),
}, },
{ {
name: 'Qt ICU', name: 'Qt ICU',
link: `${MIRROR}/online/qtsdkrepository/linux_x64/desktop/qt6_641/qt.qt6.641.gcc_64/6.4.1-0-202211101305icu-linux-Rhel7.2-x64.7z`, link: `${MIRROR}/online/qtsdkrepository/linux_x64/desktop/qt5_5141/qt.qt5.5141.gcc_64/5.14.1-0-202001240953icu-linux-Rhel7.2-x64.7z`,
skipSetup: checkIfExists(path.resolve(qtHome, 'lib', 'libicuuc.so')), skipSetup: checkIfExists(path.resolve(qtHome, 'lib', 'libicuuc.so')),
}, },
], ],
@ -92,7 +92,7 @@ const miniQt = {
const useCustomQt = Boolean(process.env.QT_INSTALL_DIR); const useCustomQt = Boolean(process.env.QT_INSTALL_DIR);
const qtHome = useCustomQt ? process.env.QT_INSTALL_DIR : miniQt.qtHome; const qtHome = useCustomQt ? process.env.QT_INSTALL_DIR : miniQt.qtHome;
const qtCmakeDir = path.resolve(qtHome, 'lib', 'cmake', 'Qt6'); const qtCmakeDir = path.resolve(qtHome, 'lib', 'cmake', 'Qt5');
module.exports = { module.exports = {
qtHome, qtHome,

14985
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
{ {
"name": "@nodegui/nodegui", "name": "@nodegui/nodegui",
"version": "0.59.0", "version": "0.30.2",
"description": "A cross-platform library to build native desktop apps.", "description": "A cross platform library to build native desktop apps.",
"main": "dist/index.js", "main": "dist/index.js",
"typings": "dist/index.d.ts", "typings": "dist/index.d.ts",
"author": "Atul R <atulanand94@gmail.com>", "author": "Atul R <atulanand94@gmail.com>",
@ -11,61 +11,52 @@
"qode": "scripts/qode.js" "qode": "scripts/qode.js"
}, },
"funding": { "funding": {
"url": "https://github.com/sponsors/a7ul" "url": "https://github.com/sponsors/master-atul"
}, },
"scripts": { "scripts": {
"dev": "npm run build && node ./scripts/qode.js dist/demo.js", "dev": "cross-env npm run build && node ./scripts/qode.js dist/demo.js",
"demo": "node ./scripts/qode.js dist/demo.js", "build": "cross-env tsc && npm run build:addon",
"build": "tsc && npm run build:addon", "postinstall": "cross-env npm run setupqt && (node ./scripts/skip.js || npm run build:addon)",
"install": "npm run setupqt && (node ./scripts/skip.js || npm run setupbinary || npm run build:addon)", "setupqt": "cross-env node ./scripts/setupMiniQt.js",
"setupqt": "node ./scripts/setupMiniQt.js",
"setupbinary": "node ./scripts/setupBinary.js",
"build:addon": "cross-env CMAKE_BUILD_PARALLEL_LEVEL=8 cmake-js compile", "build:addon": "cross-env CMAKE_BUILD_PARALLEL_LEVEL=8 cmake-js compile",
"test": "node ./scripts/qode.js ./node_modules/jest/bin/jest -i", "test": "node ./scripts/qode.js ./node_modules/jest/bin/jest -i",
"lint:cpp": "clang-format -i --glob=src/cpp/**/*.[h,c]*", "lint:cpp": "cross-env clang-format -i --glob=src/cpp/**/*.[h,c]*",
"lint:ts": "tsc --noEmit && eslint ./src --fix", "lint:ts": "cross-env tsc --noEmit && cross-env eslint './src/**/*.{ts,tsx,js,jsx}' --fix",
"docs": "typedoc && node ./website/docs/scripts/fixdocs.js", "docs": "cross-env typedoc && node ./website/docs/scripts/fixdocs.js",
"qode": "node ./scripts/qode.js", "qode": "cross-env node ./scripts/qode.js"
"prepublishOnly": "npm run build"
}, },
"engines": {
"node": ">=14.x.x"
},
"engineStrict": false,
"dependencies": { "dependencies": {
"@nodegui/artifact-installer": "^1.1.0", "@nodegui/artifact-installer": "^1.1.0",
"@nodegui/qode": "^18.12.1", "@nodegui/qode": "^2.1.0",
"cmake-js": "^6.2.1", "cmake-js": "^6.1.0",
"cross-env": "^7.0.3", "cross-env": "^7.0.3",
"cuid": "^2.1.8", "cuid": "^2.1.6",
"manage-path": "^2.0.0", "manage-path": "^2.0.0",
"memoize-one": "^5.2.1", "memoize-one": "^5.1.1",
"node-addon-api": "^4.0.0", "node-addon-api": "^3.1.0",
"postcss": "^7.0.17", "postcss-nodegui-autoprefixer": "0.0.7"
"postcss-nodegui-autoprefixer": "0.0.7",
"tar": "^6.0.1"
}, },
"devDependencies": { "devDependencies": {
"@types/bindings": "^1.5.1", "@types/bindings": "^1.5.0",
"@types/jest": "29.2.4", "@types/jest": "^26.0.20",
"@types/node": "^16.4.13", "@types/node": "^14.14.22",
"@typescript-eslint/eslint-plugin": "^4.29.0", "@typescript-eslint/eslint-plugin": "^4.13.0",
"@typescript-eslint/parser": "^4.29.0", "@typescript-eslint/parser": "^4.13.0",
"clang-format": "^1.5.0", "clang-format": "^1.5.0",
"eslint": "^7.32.0", "eslint": "^6.6.0",
"eslint-config-prettier": "^8.3.0", "eslint-config-prettier": "^6.15.0",
"eslint-plugin-prettier": "^3.4.0", "eslint-plugin-prettier": "^3.3.1",
"husky": "^7.0.1", "husky": "^4.3.8",
"jest": "29.3.1", "jest": "^25.5.4",
"prettier": "^2.3.2", "prettier": "^2.2.1",
"ts-jest": "29.0.3", "ts-jest": "^25.5.1",
"typedoc": "^0.17.8", "typedoc": "^0.17.8",
"typedoc-plugin-markdown": "^2.4.2", "typedoc-plugin-markdown": "^2.4.2",
"typescript": "^4.3.5" "typescript": "^4.1.3"
}, },
"binary": { "binary": {
"napi_versions": [ "napi_versions": [
4 3
] ]
}, },
"husky": { "husky": {

View File

@ -1,6 +1,5 @@
#!/usr/bin/env node #!/usr/bin/env node
var os = require('os');
var path = require('path'); var path = require('path');
var qodeConfig = require('@nodegui/qode'); var qodeConfig = require('@nodegui/qode');
var managePath = require('manage-path'); var managePath = require('manage-path');
@ -12,12 +11,6 @@ var proc = require('child_process');
var alterPath = managePath(process.env); var alterPath = managePath(process.env);
alterPath.unshift(path.join(qtConfig.qtHome, 'bin')); alterPath.unshift(path.join(qtConfig.qtHome, 'bin'));
// Add Qt's lib to LD_LIBRARY_PATH so linux can find the libs when bundled with webpack
if(os.platform == 'linux') {
var oldLD_PATH = process.env.LD_LIBRARY_PATH ?? "";
process.env.LD_LIBRARY_PATH = oldLD_PATH + ":" + path.join(qtConfig.qtHome, 'lib');
}
var child = proc.spawn(qodeConfig.qodePath, process.argv.slice(2), { var child = proc.spawn(qodeConfig.qodePath, process.argv.slice(2), {
stdio: 'inherit', stdio: 'inherit',
windowsHide: false, windowsHide: false,

View File

@ -1,39 +0,0 @@
#!/usr/bin/env node
const os = require('os');
const fs = require('fs');
const path = require('path');
const { setupArtifact } = require('@nodegui/artifact-installer');
const tar = require('tar');
const SETUP_DIR = path.resolve(__dirname, '..', 'build', 'Release');
const packageJson = require('../package');
async function setupBinary() {
const packageVersion = packageJson.version;
const tarballName = `nodegui-binary-v${packageVersion}-${os.platform()}-${os.arch()}.tar.gz`;
const url = `https://github.com/nodegui/nodegui/releases/download/v${packageVersion}/${tarballName}`;
await setupArtifact({
outDir: SETUP_DIR,
id: 'nodegui-core',
displayName: `Precompiled NodeGui binary`,
downloadLink: url,
skipSetup: () => false,
});
const tarPath = path.join(SETUP_DIR, tarballName.slice(0, -3));
tar.extract({
cwd: SETUP_DIR,
file: tarPath,
sync: true,
});
fs.unlinkSync(tarPath);
}
setupBinary()
.catch((err) => {
console.error(err);
process.exit(1);
})
.then(() => {
process.exit(0);
});

View File

@ -5,7 +5,7 @@ const { miniQt, useCustomQt, qtHome } = require('../config/qtConfig');
async function setupQt() { async function setupQt() {
return Promise.all( return Promise.all(
miniQt.artifacts.map(async (artifact) => miniQt.artifacts.map(async artifact =>
setupArtifact({ setupArtifact({
outDir: miniQt.setupDir, outDir: miniQt.setupDir,
id: 'nodegui-mini-qt', id: 'nodegui-mini-qt',
@ -20,7 +20,7 @@ async function setupQt() {
if (!useCustomQt) { if (!useCustomQt) {
console.log(`Minimal Qt ${miniQt.version} setup:`); console.log(`Minimal Qt ${miniQt.version} setup:`);
setupQt().catch((err) => { setupQt().catch(err => {
console.error(err); console.error(err);
process.exit(1); process.exit(1);
}); });

View File

@ -13,14 +13,14 @@ namespace extrautils {
DLL_EXPORT QVariant* convertToQVariant(Napi::Env& env, Napi::Value& value); DLL_EXPORT QVariant* convertToQVariant(Napi::Env& env, Napi::Value& value);
DLL_EXPORT bool isNapiValueInt(Napi::Env& env, Napi::Value& num); DLL_EXPORT bool isNapiValueInt(Napi::Env& env, Napi::Value& num);
DLL_EXPORT std::string getNapiObjectClassName(Napi::Object& object); DLL_EXPORT std::string getNapiObjectClassName(Napi::Object& object);
DLL_EXPORT void* configureQWidget(QWidget* widget, bool isLeafNode = false); DLL_EXPORT void* configureQWidget(QWidget* widget, YGNodeRef node,
bool isLeafNode = false);
DLL_EXPORT void* configureQObject(QObject* object); DLL_EXPORT void* configureQObject(QObject* object);
DLL_EXPORT void* configureComponent(void* component); DLL_EXPORT void* configureComponent(void* component);
DLL_EXPORT uint64_t hashPointerTo53bit(const void* input);
template <typename T> template <typename T>
void safeDelete(QPointer<T>& component) { void safeDelete(QPointer<T>& component) {
if (!component.isNull() && component->QObject::parent() == nullptr) { if (!component.isNull()) {
delete component; delete component;
} }
} }

View File

@ -1,217 +0,0 @@
#pragma once
#include <QAbstractItemModel>
#include "Extras/Export/export.h"
#include "QtCore/QModelIndex/qmodelindex_wrap.h"
#include "QtCore/QObject/qobject_macro.h"
#include "core/NodeWidget/nodewidget.h"
#include "napi.h"
class DLL_EXPORT NAbstractItemModel : public QAbstractItemModel,
public EventWidget {
Q_OBJECT
EVENTWIDGET_IMPLEMENTATIONS(QAbstractItemModel)
public:
Napi::FunctionReference dispatchOnNode;
virtual void connectSignalsToEventEmitter(){
// Qt Connects: Implement all signal connects here
QOBJECT_SIGNALS}
QModelIndex index(int row, int column,
const QModelIndex& parent = QModelIndex()) const override {
Napi::Env env = this->dispatchOnNode.Env();
Napi::HandleScope scope(env);
auto parentModelIndexWrap = QModelIndexWrap::constructor.New(
{Napi::External<QModelIndex>::New(env, new QModelIndex(parent))});
Napi::Value modelIndexNapiWrap = this->dispatchOnNode.Call(
{Napi::String::New(env, "index"), Napi::Value::From(env, row),
Napi::Value::From(env, column), parentModelIndexWrap});
QModelIndexWrap* modelIndexWrap = Napi::ObjectWrap<QModelIndexWrap>::Unwrap(
modelIndexNapiWrap.As<Napi::Object>());
QModelIndex* newIndex = modelIndexWrap->getInternalInstance();
return *newIndex;
}
QObject* parent() const { return nullptr; }
QModelIndex parent(const QModelIndex& child) const override {
Napi::Env env = this->dispatchOnNode.Env();
Napi::HandleScope scope(env);
auto childModelIndexWrap = QModelIndexWrap::constructor.New(
{Napi::External<QModelIndex>::New(env, new QModelIndex(child))});
Napi::Value modelIndexNapiWrap = this->dispatchOnNode.Call(
{Napi::String::New(env, "parent"), childModelIndexWrap});
QModelIndexWrap* modelIndexWrap = Napi::ObjectWrap<QModelIndexWrap>::Unwrap(
modelIndexNapiWrap.As<Napi::Object>());
QModelIndex* parentIndex = modelIndexWrap->getInternalInstance();
return *parentIndex;
}
int rowCount(const QModelIndex& parent = QModelIndex()) const override {
Napi::Env env = this->dispatchOnNode.Env();
Napi::HandleScope scope(env);
auto modelIndexWrap = QModelIndexWrap::constructor.New(
{Napi::External<QModelIndex>::New(env, new QModelIndex(parent))});
Napi::Value result = this->dispatchOnNode.Call(
{Napi::String::New(env, "rowCount"), modelIndexWrap});
return result.As<Napi::Number>().Int32Value();
}
int columnCount(const QModelIndex& parent = QModelIndex()) const override {
Napi::Env env = this->dispatchOnNode.Env();
Napi::HandleScope scope(env);
auto modelIndexWrap = QModelIndexWrap::constructor.New(
{Napi::External<QModelIndex>::New(env, new QModelIndex(parent))});
Napi::Value result = this->dispatchOnNode.Call(
{Napi::String::New(env, "columnCount"), modelIndexWrap});
return result.As<Napi::Number>().Int32Value();
}
QVariant data(const QModelIndex& index,
int role = Qt::DisplayRole) const override {
Napi::Env env = this->dispatchOnNode.Env();
Napi::HandleScope scope(env);
auto modelIndexWrap = QModelIndexWrap::constructor.New(
{Napi::External<QModelIndex>::New(env, new QModelIndex(index))});
auto roleValue = Napi::Value::From(env, role);
Napi::Value variantJsObject = this->dispatchOnNode.Call(
{Napi::String::New(env, "data"), modelIndexWrap, roleValue});
QVariantWrap* variantWrap = Napi::ObjectWrap<QVariantWrap>::Unwrap(
variantJsObject.As<Napi::Object>());
QVariant* variant = variantWrap->getInternalInstance();
return *variant;
}
Qt::ItemFlags flags(const QModelIndex& index) const override {
Napi::Env env = this->dispatchOnNode.Env();
Napi::HandleScope scope(env);
auto modelIndexWrap = QModelIndexWrap::constructor.New(
{Napi::External<QModelIndex>::New(env, new QModelIndex(index))});
Napi::Value numberJs = this->dispatchOnNode.Call(
{Napi::String::New(env, "flags"), modelIndexWrap});
auto result =
static_cast<Qt::ItemFlags>(numberJs.As<Napi::Number>().Uint32Value());
return result;
}
QVariant headerData(int section, Qt::Orientation orientation,
int role = Qt::DisplayRole) const override {
Napi::Env env = this->dispatchOnNode.Env();
Napi::HandleScope scope(env);
auto sectionValue = Napi::Value::From(env, static_cast<int>(section));
auto orientationValue =
Napi::Value::From(env, static_cast<int>(orientation));
auto roleValue = Napi::Value::From(env, static_cast<int>(role));
Napi::Value variantJsObject =
this->dispatchOnNode.Call({Napi::String::New(env, "headerData"),
sectionValue, orientationValue, roleValue});
QVariantWrap* variantWrap = Napi::ObjectWrap<QVariantWrap>::Unwrap(
variantJsObject.As<Napi::Object>());
QVariant* variant = variantWrap->getInternalInstance();
return *variant;
}
bool setData(const QModelIndex& index, const QVariant& value,
int role = Qt::EditRole) override {
Napi::Env env = this->dispatchOnNode.Env();
Napi::HandleScope scope(env);
auto modelIndexWrap = QModelIndexWrap::constructor.New(
{Napi::External<QModelIndex>::New(env, new QModelIndex(index))});
auto valueWrap = QVariantWrap::constructor.New(
{Napi::External<QVariant>::New(env, new QVariant(value))});
auto roleValue = Napi::Value::From(env, role);
Napi::Value booleanJs =
this->dispatchOnNode.Call({Napi::String::New(env, "setData"),
modelIndexWrap, valueWrap, roleValue});
return booleanJs.As<Napi::Boolean>().Value();
}
QModelIndex _protected_createIndex(int row, int column) const {
return createIndex(row, column);
}
QModelIndex buddy(const QModelIndex& index) const override {
Napi::Env env = this->dispatchOnNode.Env();
Napi::HandleScope scope(env);
auto indexWrap = QModelIndexWrap::constructor.New(
{Napi::External<QModelIndex>::New(env, new QModelIndex(index))});
Napi::Value buddyIndexNapiWrap =
this->dispatchOnNode.Call({Napi::String::New(env, "buddy"), indexWrap});
QModelIndexWrap* buddyIndexWrap = Napi::ObjectWrap<QModelIndexWrap>::Unwrap(
buddyIndexNapiWrap.As<Napi::Object>());
QModelIndex* buddyIndex = buddyIndexWrap->getInternalInstance();
return *buddyIndex;
}
void _protected_beginResetModel() { beginResetModel(); }
void _protected_endResetModel() { endResetModel(); }
void _protected_beginInsertColumns(const QModelIndex& parent, int first,
int last) {
beginInsertColumns(parent, first, last);
}
void _protected_beginInsertRows(const QModelIndex& parent, int first,
int last) {
beginInsertRows(parent, first, last);
}
bool _protected_beginMoveColumns(const QModelIndex& sourceParent,
int sourceFirst, int sourceLast,
const QModelIndex& destinationParent,
int destinationChild) {
return beginMoveColumns(sourceParent, sourceFirst, sourceLast,
destinationParent, destinationChild);
}
bool _protected_beginMoveRows(const QModelIndex& sourceParent,
int sourceFirst, int sourceLast,
const QModelIndex& destinationParent,
int destinationChild) {
return beginMoveRows(sourceParent, sourceFirst, sourceLast,
destinationParent, destinationChild);
}
void _protected_beginRemoveColumns(const QModelIndex& parent, int first,
int last) {
beginRemoveColumns(parent, first, last);
}
void _protected_beginRemoveRows(const QModelIndex& parent, int first,
int last) {
beginRemoveRows(parent, first, last);
}
void _protected_endInsertColumns() { endInsertColumns(); }
void _protected_endInsertRows() { endInsertRows(); }
void _protected_endMoveColumns() { endMoveColumns(); }
void _protected_endMoveRows() { endMoveRows(); }
void _protected_endRemoveColumns() { endRemoveColumns(); }
void _protected_endRemoveRows() { endRemoveRows(); }
};

View File

@ -1,48 +0,0 @@
#pragma once
#include <napi.h>
#include <QPointer>
#include "Extras/Export/export.h"
#include "QtCore/QObject/qobject_macro.h"
#include "nabstractitemmodel.hpp"
class DLL_EXPORT QAbstractItemModelWrap
: public Napi::ObjectWrap<QAbstractItemModelWrap> {
QOBJECT_WRAPPED_METHODS_DECLARATION
private:
QPointer<NAbstractItemModel> instance;
public:
static Napi::Object init(Napi::Env env, Napi::Object exports);
QAbstractItemModelWrap(const Napi::CallbackInfo& info);
~QAbstractItemModelWrap();
NAbstractItemModel* getInternalInstance();
// class constructor
static Napi::FunctionReference constructor;
// wrapped methods
Napi::Value initNodeDispatcher(const Napi::CallbackInfo& info);
Napi::Value hasIndex(const Napi::CallbackInfo& info);
Napi::Value createIndex(const Napi::CallbackInfo& info);
Napi::Value _super_flags(const Napi::CallbackInfo& info);
Napi::Value emitDataChanged(const Napi::CallbackInfo& info);
Napi::Value checkIndex(const Napi::CallbackInfo& info);
Napi::Value _super_buddy(const Napi::CallbackInfo& info);
Napi::Value beginInsertColumns(const Napi::CallbackInfo& info);
Napi::Value beginInsertRows(const Napi::CallbackInfo& info);
Napi::Value beginMoveColumns(const Napi::CallbackInfo& info);
Napi::Value beginMoveRows(const Napi::CallbackInfo& info);
Napi::Value beginRemoveColumns(const Napi::CallbackInfo& info);
Napi::Value beginRemoveRows(const Napi::CallbackInfo& info);
Napi::Value beginResetModel(const Napi::CallbackInfo& info);
Napi::Value endResetModel(const Napi::CallbackInfo& info);
Napi::Value endInsertColumns(const Napi::CallbackInfo& info);
Napi::Value endInsertRows(const Napi::CallbackInfo& info);
Napi::Value endMoveColumns(const Napi::CallbackInfo& info);
Napi::Value endMoveRows(const Napi::CallbackInfo& info);
Napi::Value endRemoveColumns(const Napi::CallbackInfo& info);
Napi::Value endRemoveRows(const Napi::CallbackInfo& info);
};

View File

@ -1,20 +0,0 @@
#pragma once
#include <QItemSelectionModel>
#include "Extras/Export/export.h"
#include "QtCore/QObject/qobject_macro.h"
#include "core/NodeWidget/nodewidget.h"
#include "napi.h"
class DLL_EXPORT NItemSelectionModel : public QItemSelectionModel,
public EventWidget {
Q_OBJECT
EVENTWIDGET_IMPLEMENTATIONS(QItemSelectionModel)
public:
Napi::FunctionReference dispatchOnNode;
virtual void connectSignalsToEventEmitter() {
// Qt Connects: Implement all signal connects here
QOBJECT_SIGNALS
}
};

View File

@ -1,43 +0,0 @@
#pragma once
#include <napi.h>
#include <QPointer>
#include "Extras/Export/export.h"
#include "QtCore/QObject/qobject_macro.h"
#include "nitemselectionmodel.hpp"
class DLL_EXPORT QItemSelectionModelWrap
: public Napi::ObjectWrap<QItemSelectionModelWrap> {
QOBJECT_WRAPPED_METHODS_DECLARATION
private:
QPointer<QItemSelectionModel> instance;
public:
static Napi::Object init(Napi::Env env, Napi::Object exports);
QItemSelectionModelWrap(const Napi::CallbackInfo& info);
~QItemSelectionModelWrap();
QItemSelectionModel* getInternalInstance();
// class constructor
static Napi::FunctionReference constructor;
// wrapped methods
Napi::Value columnIntersectsSelection(const Napi::CallbackInfo& info);
Napi::Value currentIndex(const Napi::CallbackInfo& info);
Napi::Value hasSelection(const Napi::CallbackInfo& info);
Napi::Value isColumnSelected(const Napi::CallbackInfo& info);
Napi::Value isRowSelected(const Napi::CallbackInfo& info);
Napi::Value isSelected(const Napi::CallbackInfo& info);
Napi::Value rowIntersectsSelection(const Napi::CallbackInfo& info);
Napi::Value clear(const Napi::CallbackInfo& info);
Napi::Value clearCurrentIndex(const Napi::CallbackInfo& info);
Napi::Value clearSelection(const Napi::CallbackInfo& info);
Napi::Value reset(const Napi::CallbackInfo& info);
Napi::Value select(const Napi::CallbackInfo& info);
Napi::Value setCurrentIndex(const Napi::CallbackInfo& info);
Napi::Value selectedColumns(const Napi::CallbackInfo& info);
Napi::Value selectedIndexes(const Napi::CallbackInfo& info);
Napi::Value selectedRows(const Napi::CallbackInfo& info);
};

View File

@ -5,13 +5,13 @@
#include <QMimeData> #include <QMimeData>
#include "Extras/Export/export.h" #include "Extras/Export/export.h"
#include "QtCore/QObject/qobject_macro.h" #include "core/Component/component_macro.h"
class DLL_EXPORT QMimeDataWrap : public Napi::ObjectWrap<QMimeDataWrap> { class DLL_EXPORT QMimeDataWrap : public Napi::ObjectWrap<QMimeDataWrap> {
QOBJECT_WRAPPED_METHODS_DECLARATION COMPONENT_WRAPPED_METHODS_DECLARATION
private: private:
QPointer<QMimeData> instance; std::unique_ptr<QMimeData> instance;
public: public:
static Napi::Object init(Napi::Env env, Napi::Object exports); static Napi::Object init(Napi::Env env, Napi::Object exports);

View File

@ -12,5 +12,5 @@ class DLL_EXPORT NObject : public QObject, public EventWidget {
public: public:
using QObject::QObject; using QObject::QObject;
virtual void connectSignalsToEventEmitter() { QOBJECT_SIGNALS } void connectSignalsToEventEmitter() { QOBJECT_SIGNALS }
}; };

View File

@ -5,33 +5,28 @@
#include "Extras/Utils/nutils.h" #include "Extras/Utils/nutils.h"
#include "QtCore/QVariant/qvariant_wrap.h" #include "QtCore/QVariant/qvariant_wrap.h"
#include "core/Events/eventwidget_macro.h" #include "core/Events/eventwidget_macro.h"
#include "core/WrapperCache/wrappercache.h"
/* /*
This macro adds common QObject exported methods This macro adds common QObject exported methods
The exported methods are taken into this macro to avoid writing them in each The exported methods are taken into this macro to avoid writing them in each
and every widget we export. and every widget we export.
*/ */
#ifndef QOBJECT_WRAPPED_METHODS_DECLARATION_WITH_EVENT_SOURCE #ifndef QOBJECT_WRAPPED_METHODS_DECLARATION
#define QOBJECT_WRAPPED_METHODS_DECLARATION_WITH_EVENT_SOURCE(source) \ #define QOBJECT_WRAPPED_METHODS_DECLARATION \
\ \
EVENTWIDGET_WRAPPED_METHODS_DECLARATION_WITH_EVENT_SOURCE(source) \ EVENTWIDGET_WRAPPED_METHODS_DECLARATION \
\ \
Napi::Value __id__(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
return Napi::Value::From( \
env, extrautils::hashPointerTo53bit( \
static_cast<QObject*>(this->instance.data()))); \
} \
Napi::Value inherits(const Napi::CallbackInfo& info) { \ Napi::Value inherits(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
Napi::String className = info[0].As<Napi::String>(); \ Napi::String className = info[0].As<Napi::String>(); \
bool doesIt = this->instance->inherits(className.Utf8Value().c_str()); \ bool doesIt = this->instance->inherits(className.Utf8Value().c_str()); \
return Napi::Value::From(env, doesIt); \ return Napi::Value::From(env, doesIt); \
} \ } \
Napi::Value setProperty(const Napi::CallbackInfo& info) { \ Napi::Value setProperty(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
Napi::String name = info[0].As<Napi::String>(); \ Napi::String name = info[0].As<Napi::String>(); \
Napi::Value value = info[1]; \ Napi::Value value = info[1]; \
auto variant = \ auto variant = \
@ -42,6 +37,7 @@
} \ } \
Napi::Value property(const Napi::CallbackInfo& info) { \ Napi::Value property(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
Napi::String name = info[0].As<Napi::String>(); \ Napi::String name = info[0].As<Napi::String>(); \
Napi::Value value = info[1]; \ Napi::Value value = info[1]; \
QVariant* variant = \ QVariant* variant = \
@ -52,6 +48,7 @@
} \ } \
Napi::Value setObjectName(const Napi::CallbackInfo& info) { \ Napi::Value setObjectName(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
Napi::String objectName = info[0].As<Napi::String>(); \ Napi::String objectName = info[0].As<Napi::String>(); \
this->instance->setObjectName( \ this->instance->setObjectName( \
QString::fromStdString(objectName.Utf8Value())); \ QString::fromStdString(objectName.Utf8Value())); \
@ -59,90 +56,11 @@
} \ } \
Napi::Value objectName(const Napi::CallbackInfo& info) { \ Napi::Value objectName(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
QString objectName = this->instance->objectName(); \ QString objectName = this->instance->objectName(); \
return Napi::String::New(env, objectName.toStdString()); \ return Napi::String::New(env, objectName.toStdString()); \
} \
Napi::Value dumpObjectTree(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
this->instance->dumpObjectTree(); \
return env.Null(); \
} \
Napi::Value dumpObjectInfo(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
this->instance->dumpObjectInfo(); \
return env.Null(); \
} \
Napi::Value __external_qobject__(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
return Napi::External<QObject>::New( \
env, static_cast<QObject*>(this->instance)); \
} \
Napi::Value startTimer(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
int interval = info[0].As<Napi::Number>().Int32Value(); \
Qt::TimerType timerType = \
static_cast<Qt::TimerType>(info[1].As<Napi::Number>().Int32Value()); \
int result = this->instance->startTimer(interval, timerType); \
return Napi::Value::From(env, result); \
} \
Napi::Value killTimer(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
int id = info[0].As<Napi::Number>().Int32Value(); \
this->instance->killTimer(id); \
return env.Null(); \
} \
Napi::Value parent(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
QObject* parent = this->instance->parent(); \
if (parent) { \
return WrapperCache::instance.getWrapper(env, parent); \
} else { \
return env.Null(); \
} \
} \
Napi::Value deleteLater(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
this->instance->deleteLater(); \
return env.Null(); \
} \
Napi::Value deleteObject(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
delete static_cast<QObject*>(this->instance); \
return env.Null(); \
} \
Napi::Value children(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
QObjectList children = this->instance->children(); \
Napi::Array resultArrayNapi = Napi::Array::New(env, children.size()); \
for (int i = 0; i < children.size(); i++) { \
resultArrayNapi[i] = \
WrapperCache::instance.getWrapper(env, children[i]); \
} \
return resultArrayNapi; \
} }
// Ideally this macro below should go in
// QOBJECT_WRAPPED_METHODS_DECLARATION_WITH_EVENT_SOURCE but some wrappers
// need their own setParent()` implementation which handles different
// arguments.
#define QOBJECT_SET_PARENT_IMPL \
Napi::Value setParent(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
if (info[0].IsNull()) { \
this->instance->setParent(nullptr); \
} else { \
QObject* parentObject = info[0].As<Napi::External<QObject>>().Data(); \
this->instance->setParent(parentObject); \
} \
return env.Null(); \
}
#endif // QOBJECT_WRAPPED_METHODS_DECLARATION_WITH_EVENT_SOURCE
#ifndef QOBJECT_WRAPPED_METHODS_DECLARATION
#define QOBJECT_WRAPPED_METHODS_DECLARATION \
QOBJECT_WRAPPED_METHODS_DECLARATION_WITH_EVENT_SOURCE(this->instance.data()) \
QOBJECT_SET_PARENT_IMPL
#endif // QOBJECT_WRAPPED_METHODS_DECLARATION #endif // QOBJECT_WRAPPED_METHODS_DECLARATION
#ifndef QOBJECT_WRAPPED_METHODS_EXPORT_DEFINE #ifndef QOBJECT_WRAPPED_METHODS_EXPORT_DEFINE
@ -150,29 +68,17 @@
\ \
EVENTWIDGET_WRAPPED_METHODS_EXPORT_DEFINE(ComponentWrapName) \ EVENTWIDGET_WRAPPED_METHODS_EXPORT_DEFINE(ComponentWrapName) \
\ \
InstanceMethod("__id__", &ComponentWrapName::__id__), \
InstanceMethod("__external_qobject__", \
&ComponentWrapName::__external_qobject__), \
InstanceMethod("inherits", &ComponentWrapName::inherits), \ InstanceMethod("inherits", &ComponentWrapName::inherits), \
InstanceMethod("setProperty", &ComponentWrapName::setProperty), \ InstanceMethod("setProperty", &ComponentWrapName::setProperty), \
InstanceMethod("property", &ComponentWrapName::property), \ InstanceMethod("property", &ComponentWrapName::property), \
InstanceMethod("setObjectName", &ComponentWrapName::setObjectName), \ InstanceMethod("setObjectName", &ComponentWrapName::setObjectName), \
InstanceMethod("objectName", &ComponentWrapName::objectName), \ InstanceMethod("objectName", &ComponentWrapName::objectName),
InstanceMethod("dumpObjectTree", &ComponentWrapName::dumpObjectTree), \
InstanceMethod("dumpObjectInfo", &ComponentWrapName::dumpObjectInfo), \
InstanceMethod("setParent", &ComponentWrapName::setParent), \
InstanceMethod("startTimer", &ComponentWrapName::startTimer), \
InstanceMethod("killTimer", &ComponentWrapName::killTimer), \
InstanceMethod("parent", &ComponentWrapName::parent), \
InstanceMethod("deleteLater", &ComponentWrapName::deleteLater), \
InstanceMethod("delete", &ComponentWrapName::deleteObject), \
InstanceMethod("children", &ComponentWrapName::children),
#endif // QOBJECT_WRAPPED_METHODS_EXPORT_DEFINE #endif // QOBJECT_WRAPPED_METHODS_EXPORT_DEFINE
#ifndef QOBJECT_SIGNALS_ON_TARGET #ifndef QOBJECT_SIGNALS
#define QOBJECT_SIGNALS_ON_TARGET(target) \ #define QOBJECT_SIGNALS \
QObject::connect(target, &QObject::objectNameChanged, \ QObject::connect(this, &QObject::objectNameChanged, \
[=](const QString& objectName) { \ [=](const QString& objectName) { \
Napi::Env env = this->emitOnNode.Env(); \ Napi::Env env = this->emitOnNode.Env(); \
Napi::HandleScope scope(env); \ Napi::HandleScope scope(env); \
@ -180,28 +86,5 @@
{Napi::String::New(env, "objectNameChanged"), \ {Napi::String::New(env, "objectNameChanged"), \
Napi::Value::From(env, objectName.toStdString())}); \ Napi::Value::From(env, objectName.toStdString())}); \
}); });
#endif // QOBJECT_SIGNALS_ON_TARGET
#ifndef QOBJECT_SIGNALS
#define QOBJECT_SIGNALS QOBJECT_SIGNALS_ON_TARGET(this)
#endif // QOBJECT_SIGNALS #endif // QOBJECT_SIGNALS
/*
Macro to register a function to wrap QObject pointers of a
given subclass to wrapper instances. First parameter is the
plain name of the QObject subclass (no quotes), seconds is the
name of the wrapper class.
*/
#ifndef QOBJECT_REGISTER_WRAPPER
#define QOBJECT_REGISTER_WRAPPER(qobjectType, ComponentWrapName) \
WrapperCache::instance.registerWrapper( \
QString(#qobjectType), \
[](Napi::Env env, QObject* qobject) -> Napi::Object { \
qobjectType* exactQObject = dynamic_cast<qobjectType*>(qobject); \
Napi::Object wrapper = ComponentWrapName::constructor.New( \
{Napi::External<QObject>::New(env, exactQObject)}); \
return wrapper; \
});
#endif // QOBJECT_REGISTER_WRAPPER
#include "QtCore/QObject/qobject_wrap.h"

View File

@ -11,15 +11,14 @@
class DLL_EXPORT QObjectWrap : public Napi::ObjectWrap<QObjectWrap> { class DLL_EXPORT QObjectWrap : public Napi::ObjectWrap<QObjectWrap> {
QOBJECT_WRAPPED_METHODS_DECLARATION QOBJECT_WRAPPED_METHODS_DECLARATION
private: private:
QPointer<QObject> instance; QPointer<NObject> instance;
public: public:
static Napi::Object init(Napi::Env env, Napi::Object exports); static Napi::Object init(Napi::Env env, Napi::Object exports);
QObjectWrap(const Napi::CallbackInfo& info); QObjectWrap(const Napi::CallbackInfo& info);
~QObjectWrap(); ~QObjectWrap();
QObject* getInternalInstance(); NObject* getInternalInstance();
// class constructor // class constructor
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;
static Napi::Object wrapFunc(Napi::Env env, QObject* qobject);
// wrapped methods // wrapped methods
}; };

View File

@ -19,18 +19,9 @@ class DLL_EXPORT QSizeWrap : public Napi::ObjectWrap<QSizeWrap> {
~QSizeWrap(); ~QSizeWrap();
QSize* getInternalInstance(); QSize* getInternalInstance();
// Wrapped methods // Wrapped methods
Napi::Value boundedTo(const Napi::CallbackInfo& info);
Napi::Value expandedTo(const Napi::CallbackInfo& info);
Napi::Value height(const Napi::CallbackInfo& info);
Napi::Value isEmpty(const Napi::CallbackInfo& info);
Napi::Value isNull(const Napi::CallbackInfo& info);
Napi::Value isValid(const Napi::CallbackInfo& info);
Napi::Value scale(const Napi::CallbackInfo& info);
Napi::Value scaled(const Napi::CallbackInfo& info);
Napi::Value setHeight(const Napi::CallbackInfo& info); Napi::Value setHeight(const Napi::CallbackInfo& info);
Napi::Value setWidth(const Napi::CallbackInfo& info); Napi::Value setWidth(const Napi::CallbackInfo& info);
Napi::Value transpose(const Napi::CallbackInfo& info); Napi::Value height(const Napi::CallbackInfo& info);
Napi::Value transposed(const Napi::CallbackInfo& info);
Napi::Value width(const Napi::CallbackInfo& info); Napi::Value width(const Napi::CallbackInfo& info);
}; };

View File

@ -1,40 +0,0 @@
#pragma once
#include <napi.h>
#include <QSizeF>
#include "Extras/Export/export.h"
#include "core/Component/component_macro.h"
class DLL_EXPORT QSizeFWrap : public Napi::ObjectWrap<QSizeFWrap> {
COMPONENT_WRAPPED_METHODS_DECLARATION
private:
std::unique_ptr<QSizeF> instance;
public:
static Napi::FunctionReference constructor;
static Napi::Object init(Napi::Env env, Napi::Object exports);
QSizeFWrap(const Napi::CallbackInfo& info);
~QSizeFWrap();
QSizeF* getInternalInstance();
// Wrapped methods
Napi::Value boundedTo(const Napi::CallbackInfo& info);
Napi::Value expandedTo(const Napi::CallbackInfo& info);
Napi::Value height(const Napi::CallbackInfo& info);
Napi::Value isEmpty(const Napi::CallbackInfo& info);
Napi::Value isNull(const Napi::CallbackInfo& info);
Napi::Value isValid(const Napi::CallbackInfo& info);
Napi::Value scale(const Napi::CallbackInfo& info);
Napi::Value scaled(const Napi::CallbackInfo& info);
Napi::Value setHeight(const Napi::CallbackInfo& info);
Napi::Value setWidth(const Napi::CallbackInfo& info);
Napi::Value toSize(const Napi::CallbackInfo& info);
Napi::Value transpose(const Napi::CallbackInfo& info);
Napi::Value transposed(const Napi::CallbackInfo& info);
Napi::Value width(const Napi::CallbackInfo& info);
};
namespace StaticQSizeFWrapMethods {
DLL_EXPORT Napi::Value fromQVariant(const Napi::CallbackInfo& info);
} // namespace StaticQSizeFWrapMethods

View File

@ -22,10 +22,9 @@ class DLL_EXPORT QVariantWrap : public Napi::ObjectWrap<QVariantWrap> {
Napi::Value toInt(const Napi::CallbackInfo& info); Napi::Value toInt(const Napi::CallbackInfo& info);
Napi::Value toDouble(const Napi::CallbackInfo& info); Napi::Value toDouble(const Napi::CallbackInfo& info);
Napi::Value toBool(const Napi::CallbackInfo& info); Napi::Value toBool(const Napi::CallbackInfo& info);
Napi::Value toStringList(const Napi::CallbackInfo& info);
// wrapped methods // wrapped methods
}; };
namespace StaticQVariantWrapMethods { namespace StaticQVariantWrapMethods {
DLL_EXPORT Napi::Value convertToQVariant(const Napi::CallbackInfo& info); DLL_EXPORT Napi::Value converToQVariant(const Napi::CallbackInfo& info);
} // namespace StaticQVariantWrapMethods } // namespace StaticQVariantWrapMethods

View File

@ -1,12 +1,8 @@
#pragma once #pragma once
#include <QApplication> #include <QApplication>
#include <QGuiApplication>
#include <QWindow>
#include "Extras/Export/export.h" #include "Extras/Export/export.h"
#include "QtCore/QObject/qobject_macro.h" #include "QtCore/QObject/qobject_macro.h"
#include "QtGui/QScreen/qscreen_wrap.h"
#include "core/WrapperCache/wrappercache.h"
#include "napi.h" #include "napi.h"
class DLL_EXPORT NApplication : public QApplication, public EventWidget { class DLL_EXPORT NApplication : public QApplication, public EventWidget {
@ -14,54 +10,8 @@ class DLL_EXPORT NApplication : public QApplication, public EventWidget {
EVENTWIDGET_IMPLEMENTATIONS(QApplication) EVENTWIDGET_IMPLEMENTATIONS(QApplication)
public: public:
using QApplication::QApplication; // inherit all constructors of QApplication using QApplication::QApplication; // inherit all constructors of QApplication
virtual void connectSignalsToEventEmitter() { void connectSignalsToEventEmitter() {
// Qt Connects: Implement all signal connects here // Qt Connects: Implement all signal connects here
QOBJECT_SIGNALS QOBJECT_SIGNALS
QObject::connect(
this, &QGuiApplication::applicationDisplayNameChanged, [=]() {
Napi::Env env = this->emitOnNode.Env();
Napi::HandleScope scope(env);
this->emitOnNode.Call(
{Napi::String::New(env, "applicationDisplayNameChanged")});
});
QObject::connect(
this, &QGuiApplication::focusWindowChanged, [=](QWindow* focusWindow) {
Napi::Env env = this->emitOnNode.Env();
Napi::HandleScope scope(env);
this->emitOnNode.Call({Napi::String::New(env, "focusWindowChanged")});
});
QObject::connect(this, &QGuiApplication::lastWindowClosed, [=]() {
Napi::Env env = this->emitOnNode.Env();
Napi::HandleScope scope(env);
this->emitOnNode.Call({Napi::String::New(env, "lastWindowClosed")});
});
QObject::connect(
this, &QGuiApplication::primaryScreenChanged, [=](QScreen* screen) {
Napi::Env env = this->emitOnNode.Env();
Napi::HandleScope scope(env);
auto instance = WrapperCache::instance.getWrapper(env, screen, true);
this->emitOnNode.Call(
{Napi::String::New(env, "primaryScreenChanged"), instance});
});
QObject::connect(this, &QGuiApplication::screenAdded, [=](QScreen* screen) {
Napi::Env env = this->emitOnNode.Env();
Napi::HandleScope scope(env);
auto instance = WrapperCache::instance.getWrapper(env, screen, true);
this->emitOnNode.Call({Napi::String::New(env, "screenAdded"), instance});
});
QObject::connect(
this, &QGuiApplication::screenRemoved, [=](QScreen* screen) {
Napi::Env env = this->emitOnNode.Env();
Napi::HandleScope scope(env);
auto instance = WrapperCache::instance.getWrapper(env, screen, true);
this->emitOnNode.Call(
{Napi::String::New(env, "screenRemoved"), instance});
});
} }
}; };

View File

@ -28,16 +28,10 @@ class DLL_EXPORT QApplicationWrap : public Napi::ObjectWrap<QApplicationWrap> {
Napi::Value exit(const Napi::CallbackInfo& info); Napi::Value exit(const Napi::CallbackInfo& info);
Napi::Value setQuitOnLastWindowClosed(const Napi::CallbackInfo& info); Napi::Value setQuitOnLastWindowClosed(const Napi::CallbackInfo& info);
Napi::Value quitOnLastWindowClosed(const Napi::CallbackInfo& info); Napi::Value quitOnLastWindowClosed(const Napi::CallbackInfo& info);
Napi::Value palette(const Napi::CallbackInfo& info);
Napi::Value setStyleSheet(const Napi::CallbackInfo& info);
Napi::Value devicePixelRatio(const Napi::CallbackInfo& info);
}; };
namespace StaticQApplicationWrapMethods { namespace StaticQApplicationWrapMethods {
DLL_EXPORT Napi::Value clipboard(const Napi::CallbackInfo& info);
DLL_EXPORT Napi::Value instance(const Napi::CallbackInfo& info); DLL_EXPORT Napi::Value instance(const Napi::CallbackInfo& info);
DLL_EXPORT Napi::Value primaryScreen(const Napi::CallbackInfo& info); DLL_EXPORT Napi::Value clipboard(const Napi::CallbackInfo& info);
DLL_EXPORT Napi::Value screens(const Napi::CallbackInfo& info);
DLL_EXPORT Napi::Value setStyle(const Napi::CallbackInfo& info);
DLL_EXPORT Napi::Value style(const Napi::CallbackInfo& info); DLL_EXPORT Napi::Value style(const Napi::CallbackInfo& info);
} // namespace StaticQApplicationWrapMethods } // namespace StaticQApplicationWrapMethods

View File

@ -3,30 +3,21 @@
#include <napi.h> #include <napi.h>
#include <QClipboard> #include <QClipboard>
#include <QPointer>
#include "Extras/Export/export.h" #include "Extras/Export/export.h"
#include "QtCore/QObject/qobject_macro.h" #include "core/Component/component_macro.h"
class DLL_EXPORT QClipboardWrap : public Napi::ObjectWrap<QClipboardWrap>, class DLL_EXPORT QClipboardWrap : public Napi::ObjectWrap<QClipboardWrap> {
public EventWidget { COMPONENT_WRAPPED_METHODS_DECLARATION
QOBJECT_WRAPPED_METHODS_DECLARATION_WITH_EVENT_SOURCE(this)
// Note: We don't use EVENTWIDGET_IMPLEMENTATIONS() here because this class
// doesn't handle any QEvents.
QOBJECT_SET_PARENT_IMPL
private: private:
QPointer<QClipboard> instance; QClipboard* instance;
public: public:
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;
static Napi::Object init(Napi::Env env, Napi::Object exports); static Napi::Object init(Napi::Env env, Napi::Object exports);
QClipboardWrap(const Napi::CallbackInfo& info); QClipboardWrap(const Napi::CallbackInfo& info);
QClipboard* getInternalInstance(); QClipboard* getInternalInstance();
virtual void connectSignalsToEventEmitter();
// Wrapped methods // Wrapped methods
Napi::Value clear(const Napi::CallbackInfo& info); Napi::Value clear(const Napi::CallbackInfo& info);
Napi::Value setText(const Napi::CallbackInfo& info); Napi::Value setText(const Napi::CallbackInfo& info);

View File

@ -27,8 +27,6 @@ class DLL_EXPORT QColorWrap : public Napi::ObjectWrap<QColorWrap> {
Napi::Value blue(const Napi::CallbackInfo& info); Napi::Value blue(const Napi::CallbackInfo& info);
Napi::Value setAlpha(const Napi::CallbackInfo& info); Napi::Value setAlpha(const Napi::CallbackInfo& info);
Napi::Value alpha(const Napi::CallbackInfo& info); Napi::Value alpha(const Napi::CallbackInfo& info);
Napi::Value rgb(const Napi::CallbackInfo& info);
Napi::Value rgba(const Napi::CallbackInfo& info);
}; };
namespace StaticQColorWrapMethods { namespace StaticQColorWrapMethods {

View File

@ -12,7 +12,7 @@ class DLL_EXPORT NDrag : public QDrag, public EventWidget {
public: public:
using QDrag::QDrag; using QDrag::QDrag;
virtual void connectSignalsToEventEmitter() { void connectSignalsToEventEmitter() {
QOBJECT_SIGNALS QOBJECT_SIGNALS
QObject::connect(this, &QDrag::actionChanged, [=](Qt::DropAction action) { QObject::connect(this, &QDrag::actionChanged, [=](Qt::DropAction action) {
Napi::Env env = this->emitOnNode.Env(); Napi::Env env = this->emitOnNode.Env();

View File

@ -22,13 +22,13 @@ class DLL_EXPORT QDragWrap : public Napi::ObjectWrap<QDragWrap> {
// except that it is automatically cleared when the referenced object is // except that it is automatically cleared when the referenced object is
// destroyed (unlike normal C++ pointers, which become "dangling pointers" in // destroyed (unlike normal C++ pointers, which become "dangling pointers" in
// such cases). T must be a subclass of QObject. // such cases). T must be a subclass of QObject.
QPointer<QDrag> instance; QPointer<NDrag> instance;
public: public:
static Napi::Object init(Napi::Env env, Napi::Object exports); static Napi::Object init(Napi::Env env, Napi::Object exports);
QDragWrap(const Napi::CallbackInfo& info); QDragWrap(const Napi::CallbackInfo& info);
~QDragWrap(); ~QDragWrap();
QDrag* getInternalInstance(); NDrag* getInternalInstance();
// class constructor // class constructor
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;

View File

@ -11,7 +11,6 @@
class DLL_EXPORT QDragLeaveEventWrap class DLL_EXPORT QDragLeaveEventWrap
: public Napi::ObjectWrap<QDragLeaveEventWrap> { : public Napi::ObjectWrap<QDragLeaveEventWrap> {
COMPONENT_WRAPPED_METHODS_DECLARATION COMPONENT_WRAPPED_METHODS_DECLARATION
QEVENT_WRAPPED_METHODS_DECLARATION
private: private:
QDragLeaveEvent* instance; QDragLeaveEvent* instance;
@ -24,4 +23,6 @@ class DLL_EXPORT QDragLeaveEventWrap
// class constructor // class constructor
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;
// wrapped methods (none) // wrapped methods (none)
// Methods from QEvent
QEVENT_WRAPPED_METHODS_DECLARATION
}; };

View File

@ -7,6 +7,11 @@
#include "Extras/Export/export.h" #include "Extras/Export/export.h"
#include "core/Component/component_macro.h" #include "core/Component/component_macro.h"
/*
NOTE : QDragMoveEvent inherits from QDropEvent
- Is it possible to inherit from QDropEventWrap directly?
*/
class DLL_EXPORT QDragMoveEventWrap class DLL_EXPORT QDragMoveEventWrap
: public Napi::ObjectWrap<QDragMoveEventWrap> { : public Napi::ObjectWrap<QDragMoveEventWrap> {
COMPONENT_WRAPPED_METHODS_DECLARATION COMPONENT_WRAPPED_METHODS_DECLARATION

View File

@ -1,19 +0,0 @@
#ifndef QINPUTEVENT_WRAPPED_METHODS_DECLARATION
#define QINPUTEVENT_WRAPPED_METHODS_DECLARATION \
Napi::Value modifiers(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
uint v = static_cast<uint>(this->instance->modifiers()); \
return Napi::Number::From(env, v); \
} \
Napi::Value timestamp(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
ulong timestamp = this->instance->timestamp(); \
return Napi::Number::From(env, timestamp); \
}
#endif
#ifndef QINPUTEVENT_WRAPPED_METHODS_EXPORT_DEFINE
#define QINPUTEVENT_WRAPPED_METHODS_EXPORT_DEFINE(WidgetWrapName) \
InstanceMethod("modifiers", &WidgetWrapName::modifiers), \
InstanceMethod("timestamp", &WidgetWrapName::timestamp),
#endif

View File

@ -1,32 +0,0 @@
#pragma once
#include <napi.h>
#include <QInputMethodEvent>
#include "Extras/Export/export.h"
#include "QtGui/QEvent/QEvent/qevent_macro.h"
#include "core/Component/component_macro.h"
class DLL_EXPORT QInputMethodEventWrap
: public Napi::ObjectWrap<QInputMethodEventWrap> {
COMPONENT_WRAPPED_METHODS_DECLARATION
QEVENT_WRAPPED_METHODS_DECLARATION
private:
QInputMethodEvent* instance;
public:
static Napi::Object init(Napi::Env env, Napi::Object exports);
QInputMethodEventWrap(const Napi::CallbackInfo& info);
~QInputMethodEventWrap();
QInputMethodEvent* getInternalInstance();
// class constructor
static Napi::FunctionReference constructor;
// wrapped methods
Napi::Value commitString(const Napi::CallbackInfo& info);
Napi::Value preeditString(const Napi::CallbackInfo& info);
Napi::Value replacementLength(const Napi::CallbackInfo& info);
Napi::Value replacementStart(const Napi::CallbackInfo& info);
Napi::Value setCommitString(const Napi::CallbackInfo& info);
};

View File

@ -1,30 +0,0 @@
#pragma once
#include <napi.h>
#include <QInputMethodQueryEvent>
#include "Extras/Export/export.h"
#include "QtGui/QEvent/QEvent/qevent_macro.h"
#include "core/Component/component_macro.h"
class DLL_EXPORT QInputMethodQueryEventWrap
: public Napi::ObjectWrap<QInputMethodQueryEventWrap> {
COMPONENT_WRAPPED_METHODS_DECLARATION
QEVENT_WRAPPED_METHODS_DECLARATION
private:
QInputMethodQueryEvent* instance;
public:
static Napi::Object init(Napi::Env env, Napi::Object exports);
QInputMethodQueryEventWrap(const Napi::CallbackInfo& info);
~QInputMethodQueryEventWrap();
QInputMethodQueryEvent* getInternalInstance();
// class constructor
static Napi::FunctionReference constructor;
// wrapped methods
Napi::Value queries(const Napi::CallbackInfo& info);
Napi::Value setValue(const Napi::CallbackInfo& info);
Napi::Value value(const Napi::CallbackInfo& info);
};

View File

@ -5,14 +5,10 @@
#include <QKeyEvent> #include <QKeyEvent>
#include "Extras/Export/export.h" #include "Extras/Export/export.h"
#include "QtGui/QEvent/QEvent/qevent_macro.h"
#include "QtGui/QEvent/QInputEvent/qinputevent_macro.h"
#include "core/Component/component_macro.h" #include "core/Component/component_macro.h"
class DLL_EXPORT QKeyEventWrap : public Napi::ObjectWrap<QKeyEventWrap> { class DLL_EXPORT QKeyEventWrap : public Napi::ObjectWrap<QKeyEventWrap> {
COMPONENT_WRAPPED_METHODS_DECLARATION COMPONENT_WRAPPED_METHODS_DECLARATION
QEVENT_WRAPPED_METHODS_DECLARATION
QINPUTEVENT_WRAPPED_METHODS_DECLARATION
private: private:
QKeyEvent* instance; QKeyEvent* instance;
@ -27,6 +23,7 @@ class DLL_EXPORT QKeyEventWrap : public Napi::ObjectWrap<QKeyEventWrap> {
// wrapped methods // wrapped methods
Napi::Value text(const Napi::CallbackInfo& info); Napi::Value text(const Napi::CallbackInfo& info);
Napi::Value key(const Napi::CallbackInfo& info); Napi::Value key(const Napi::CallbackInfo& info);
Napi::Value modifiers(const Napi::CallbackInfo& info);
Napi::Value count(const Napi::CallbackInfo& info); Napi::Value count(const Napi::CallbackInfo& info);
Napi::Value isAutoRepeat(const Napi::CallbackInfo& info); Napi::Value isAutoRepeat(const Napi::CallbackInfo& info);
}; };

View File

@ -5,14 +5,10 @@
#include <QMouseEvent> #include <QMouseEvent>
#include "Extras/Export/export.h" #include "Extras/Export/export.h"
#include "QtGui/QEvent/QEvent/qevent_macro.h"
#include "QtGui/QEvent/QInputEvent/qinputevent_macro.h"
#include "core/Component/component_macro.h" #include "core/Component/component_macro.h"
class DLL_EXPORT QMouseEventWrap : public Napi::ObjectWrap<QMouseEventWrap> { class DLL_EXPORT QMouseEventWrap : public Napi::ObjectWrap<QMouseEventWrap> {
COMPONENT_WRAPPED_METHODS_DECLARATION COMPONENT_WRAPPED_METHODS_DECLARATION
QEVENT_WRAPPED_METHODS_DECLARATION
QINPUTEVENT_WRAPPED_METHODS_DECLARATION
private: private:
QMouseEvent* instance; QMouseEvent* instance;
@ -26,7 +22,6 @@ class DLL_EXPORT QMouseEventWrap : public Napi::ObjectWrap<QMouseEventWrap> {
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;
// wrapped methods // wrapped methods
Napi::Value button(const Napi::CallbackInfo& info); Napi::Value button(const Napi::CallbackInfo& info);
Napi::Value buttons(const Napi::CallbackInfo& info);
Napi::Value x(const Napi::CallbackInfo& info); Napi::Value x(const Napi::CallbackInfo& info);
Napi::Value y(const Napi::CallbackInfo& info); Napi::Value y(const Napi::CallbackInfo& info);
Napi::Value globalX(const Napi::CallbackInfo& info); Napi::Value globalX(const Napi::CallbackInfo& info);

View File

@ -1,28 +0,0 @@
#pragma once
#include <napi.h>
#include <QMoveEvent>
#include "Extras/Export/export.h"
#include "QtGui/QEvent/QEvent/qevent_macro.h"
#include "core/Component/component_macro.h"
class DLL_EXPORT QMoveEventWrap : public Napi::ObjectWrap<QMoveEventWrap> {
COMPONENT_WRAPPED_METHODS_DECLARATION
QEVENT_WRAPPED_METHODS_DECLARATION
private:
QMoveEvent* instance;
public:
static Napi::Object init(Napi::Env env, Napi::Object exports);
QMoveEventWrap(const Napi::CallbackInfo& info);
~QMoveEventWrap();
QMoveEvent* getInternalInstance();
// class constructor
static Napi::FunctionReference constructor;
// wrapped methods
Napi::Value oldPos(const Napi::CallbackInfo& info);
Napi::Value pos(const Napi::CallbackInfo& info);
};

View File

@ -5,15 +5,11 @@
#include <QNativeGestureEvent> #include <QNativeGestureEvent>
#include "Extras/Export/export.h" #include "Extras/Export/export.h"
#include "QtGui/QEvent/QEvent/qevent_macro.h"
#include "QtGui/QEvent/QInputEvent/qinputevent_macro.h"
#include "core/Component/component_macro.h" #include "core/Component/component_macro.h"
class DLL_EXPORT QNativeGestureEventWrap class DLL_EXPORT QNativeGestureEventWrap
: public Napi::ObjectWrap<QNativeGestureEventWrap> { : public Napi::ObjectWrap<QNativeGestureEventWrap> {
COMPONENT_WRAPPED_METHODS_DECLARATION COMPONENT_WRAPPED_METHODS_DECLARATION
QEVENT_WRAPPED_METHODS_DECLARATION
QINPUTEVENT_WRAPPED_METHODS_DECLARATION
private: private:
QNativeGestureEvent* instance; QNativeGestureEvent* instance;

View File

@ -1,25 +0,0 @@
#pragma once
#include <napi.h>
#include <QPaintEvent>
#include "Extras/Export/export.h"
#include "core/Component/component_macro.h"
class DLL_EXPORT QPaintEventWrap : public Napi::ObjectWrap<QPaintEventWrap> {
COMPONENT_WRAPPED_METHODS_DECLARATION
private:
QPaintEvent* instance;
public:
static Napi::Object init(Napi::Env env, Napi::Object exports);
QPaintEventWrap(const Napi::CallbackInfo& info);
~QPaintEventWrap();
QPaintEvent* getInternalInstance();
// class constructor
static Napi::FunctionReference constructor;
// wrapped methods
Napi::Value rect(const Napi::CallbackInfo& info);
};

View File

@ -1,28 +0,0 @@
#pragma once
#include <napi.h>
#include <QResizeEvent>
#include "Extras/Export/export.h"
#include "QtGui/QEvent/QEvent/qevent_macro.h"
#include "core/Component/component_macro.h"
class DLL_EXPORT QResizeEventWrap : public Napi::ObjectWrap<QResizeEventWrap> {
COMPONENT_WRAPPED_METHODS_DECLARATION
QEVENT_WRAPPED_METHODS_DECLARATION
private:
QResizeEvent* instance;
public:
static Napi::Object init(Napi::Env env, Napi::Object exports);
QResizeEventWrap(const Napi::CallbackInfo& info);
~QResizeEventWrap();
QResizeEvent* getInternalInstance();
// class constructor
static Napi::FunctionReference constructor;
// wrapped methods
Napi::Value oldSize(const Napi::CallbackInfo& info);
Napi::Value size(const Napi::CallbackInfo& info);
};

View File

@ -5,14 +5,10 @@
#include <QTabletEvent> #include <QTabletEvent>
#include "Extras/Export/export.h" #include "Extras/Export/export.h"
#include "QtGui/QEvent/QEvent/qevent_macro.h"
#include "QtGui/QEvent/QInputEvent/qinputevent_macro.h"
#include "core/Component/component_macro.h" #include "core/Component/component_macro.h"
class DLL_EXPORT QTabletEventWrap : public Napi::ObjectWrap<QTabletEventWrap> { class DLL_EXPORT QTabletEventWrap : public Napi::ObjectWrap<QTabletEventWrap> {
COMPONENT_WRAPPED_METHODS_DECLARATION COMPONENT_WRAPPED_METHODS_DECLARATION
QEVENT_WRAPPED_METHODS_DECLARATION
QINPUTEVENT_WRAPPED_METHODS_DECLARATION
private: private:
QTabletEvent* instance; QTabletEvent* instance;

View File

@ -1,27 +0,0 @@
#pragma once
#include <napi.h>
#include <QTimerEvent>
#include "Extras/Export/export.h"
#include "QtGui/QEvent/QEvent/qevent_macro.h"
#include "core/Component/component_macro.h"
class DLL_EXPORT QTimerEventWrap : public Napi::ObjectWrap<QTimerEventWrap> {
COMPONENT_WRAPPED_METHODS_DECLARATION
QEVENT_WRAPPED_METHODS_DECLARATION
private:
QTimerEvent* instance;
public:
static Napi::Object init(Napi::Env env, Napi::Object exports);
QTimerEventWrap(const Napi::CallbackInfo& info);
~QTimerEventWrap();
QTimerEvent* getInternalInstance();
// class constructor
static Napi::FunctionReference constructor;
// wrapped methods
Napi::Value timerId(const Napi::CallbackInfo& info);
};

View File

@ -5,14 +5,10 @@
#include <QWheelEvent> #include <QWheelEvent>
#include "Extras/Export/export.h" #include "Extras/Export/export.h"
#include "QtGui/QEvent/QEvent/qevent_macro.h"
#include "QtGui/QEvent/QInputEvent/qinputevent_macro.h"
#include "core/Component/component_macro.h" #include "core/Component/component_macro.h"
class DLL_EXPORT QWheelEventWrap : public Napi::ObjectWrap<QWheelEventWrap> { class DLL_EXPORT QWheelEventWrap : public Napi::ObjectWrap<QWheelEventWrap> {
COMPONENT_WRAPPED_METHODS_DECLARATION COMPONENT_WRAPPED_METHODS_DECLARATION
QEVENT_WRAPPED_METHODS_DECLARATION
QINPUTEVENT_WRAPPED_METHODS_DECLARATION
private: private:
QWheelEvent* instance; QWheelEvent* instance;

View File

@ -18,15 +18,11 @@ class DLL_EXPORT QFontWrap : public Napi::ObjectWrap<QFontWrap> {
~QFontWrap(); ~QFontWrap();
QFont* getInternalInstance(); QFont* getInternalInstance();
// Wrapped methods // Wrapped methods
Napi::Value bold(const Napi::CallbackInfo& info);
Napi::Value setBold(const Napi::CallbackInfo& info);
Napi::Value setCapitalization(const Napi::CallbackInfo& info); Napi::Value setCapitalization(const Napi::CallbackInfo& info);
Napi::Value capitalization(const Napi::CallbackInfo& info); Napi::Value capitalization(const Napi::CallbackInfo& info);
Napi::Value setFamily(const Napi::CallbackInfo& info); Napi::Value setFamily(const Napi::CallbackInfo& info);
Napi::Value family(const Napi::CallbackInfo& info); Napi::Value family(const Napi::CallbackInfo& info);
Napi::Value setPixelSize(const Napi::CallbackInfo& info);
Napi::Value setPointSize(const Napi::CallbackInfo& info); Napi::Value setPointSize(const Napi::CallbackInfo& info);
Napi::Value pixelSize(const Napi::CallbackInfo& info);
Napi::Value pointSize(const Napi::CallbackInfo& info); Napi::Value pointSize(const Napi::CallbackInfo& info);
Napi::Value setStretch(const Napi::CallbackInfo& info); Napi::Value setStretch(const Napi::CallbackInfo& info);
Napi::Value stretch(const Napi::CallbackInfo& info); Napi::Value stretch(const Napi::CallbackInfo& info);
@ -34,7 +30,6 @@ class DLL_EXPORT QFontWrap : public Napi::ObjectWrap<QFontWrap> {
Napi::Value weight(const Napi::CallbackInfo& info); Napi::Value weight(const Napi::CallbackInfo& info);
Napi::Value setItalic(const Napi::CallbackInfo& info); Napi::Value setItalic(const Napi::CallbackInfo& info);
Napi::Value italic(const Napi::CallbackInfo& info); Napi::Value italic(const Napi::CallbackInfo& info);
Napi::Value setStyleName(const Napi::CallbackInfo& info);
Napi::Value toString(const Napi::CallbackInfo& info); Napi::Value toString(const Napi::CallbackInfo& info);
COMPONENT_WRAPPED_METHODS_DECLARATION COMPONENT_WRAPPED_METHODS_DECLARATION
}; };

View File

@ -22,14 +22,11 @@ class DLL_EXPORT QFontDatabaseWrap
// Wrapped methods // Wrapped methods
Napi::Value bold(const Napi::CallbackInfo& info); Napi::Value bold(const Napi::CallbackInfo& info);
Napi::Value families(const Napi::CallbackInfo& info); Napi::Value families(const Napi::CallbackInfo& info);
Napi::Value isFixedPitch(const Napi::CallbackInfo& info);
Napi::Value italic(const Napi::CallbackInfo& info); Napi::Value italic(const Napi::CallbackInfo& info);
Napi::Value styles(const Napi::CallbackInfo& info);
Napi::Value weight(const Napi::CallbackInfo& info); Napi::Value weight(const Napi::CallbackInfo& info);
}; };
namespace StaticQFontDatabaseWrapMethods { namespace StaticQFontDatabaseWrapMethods {
DLL_EXPORT Napi::Value addApplicationFont(const Napi::CallbackInfo& info); DLL_EXPORT Napi::Value addApplicationFont(const Napi::CallbackInfo& info);
DLL_EXPORT Napi::Value applicationFontFamilies(const Napi::CallbackInfo& info);
DLL_EXPORT Napi::Value removeApplicationFont(const Napi::CallbackInfo& info); DLL_EXPORT Napi::Value removeApplicationFont(const Napi::CallbackInfo& info);
} // namespace StaticQFontDatabaseWrapMethods } // namespace StaticQFontDatabaseWrapMethods

View File

@ -37,12 +37,4 @@ class DLL_EXPORT QFontMetricsWrap : public Napi::ObjectWrap<QFontMetricsWrap> {
Napi::Value strikeOutPos(const Napi::CallbackInfo& info); Napi::Value strikeOutPos(const Napi::CallbackInfo& info);
Napi::Value swap(const Napi::CallbackInfo& info); Napi::Value swap(const Napi::CallbackInfo& info);
Napi::Value underlinePos(const Napi::CallbackInfo& info); Napi::Value underlinePos(const Napi::CallbackInfo& info);
Napi::Value xHeight(const Napi::CallbackInfo& info);
Napi::Value maxWidth(const Napi::CallbackInfo& info);
Napi::Value minLeftBearing(const Napi::CallbackInfo& info);
Napi::Value minRightBearing(const Napi::CallbackInfo& info);
Napi::Value inFontUcs4(const Napi::CallbackInfo& info);
Napi::Value boundingRect(const Napi::CallbackInfo& info);
Napi::Value tightBoundingRect(const Napi::CallbackInfo& info);
Napi::Value elidedText(const Napi::CallbackInfo& info);
}; };

View File

@ -1,49 +0,0 @@
#pragma once
#include <napi.h>
#include <QFontMetricsF>
#include "Extras/Export/export.h"
#include "core/Component/component_macro.h"
class DLL_EXPORT QFontMetricsFWrap
: public Napi::ObjectWrap<QFontMetricsFWrap> {
COMPONENT_WRAPPED_METHODS_DECLARATION
private:
std::unique_ptr<QFontMetricsF> instance;
public:
static Napi::FunctionReference constructor;
static Napi::Object init(Napi::Env env, Napi::Object exports);
QFontMetricsFWrap(const Napi::CallbackInfo& info);
QFontMetricsF* getInternalInstance();
// Wrapped methods
Napi::Value ascent(const Napi::CallbackInfo& info);
Napi::Value averageCharWidth(const Napi::CallbackInfo& info);
Napi::Value capHeight(const Napi::CallbackInfo& info);
Napi::Value descent(const Napi::CallbackInfo& info);
Napi::Value fontDpi(const Napi::CallbackInfo& info);
Napi::Value height(const Napi::CallbackInfo& info);
Napi::Value horizontalAdvance(const Napi::CallbackInfo& info);
Napi::Value inFont(const Napi::CallbackInfo& info);
Napi::Value leading(const Napi::CallbackInfo& info);
Napi::Value leftBearing(const Napi::CallbackInfo& info);
Napi::Value lineSpacing(const Napi::CallbackInfo& info);
Napi::Value lineWidth(const Napi::CallbackInfo& info);
Napi::Value overlinePos(const Napi::CallbackInfo& info);
Napi::Value rightBearing(const Napi::CallbackInfo& info);
Napi::Value size(const Napi::CallbackInfo& info);
Napi::Value strikeOutPos(const Napi::CallbackInfo& info);
Napi::Value swap(const Napi::CallbackInfo& info);
Napi::Value underlinePos(const Napi::CallbackInfo& info);
Napi::Value xHeight(const Napi::CallbackInfo& info);
Napi::Value maxWidth(const Napi::CallbackInfo& info);
Napi::Value minLeftBearing(const Napi::CallbackInfo& info);
Napi::Value minRightBearing(const Napi::CallbackInfo& info);
Napi::Value inFontUcs4(const Napi::CallbackInfo& info);
Napi::Value boundingRect(const Napi::CallbackInfo& info);
Napi::Value tightBoundingRect(const Napi::CallbackInfo& info);
Napi::Value elidedText(const Napi::CallbackInfo& info);
};

View File

@ -20,18 +20,10 @@ class DLL_EXPORT QIconWrap : public Napi::ObjectWrap<QIconWrap> {
~QIconWrap(); ~QIconWrap();
QIcon* getInternalInstance(); QIcon* getInternalInstance();
// Wrapped methods // Wrapped methods
Napi::Value actualSize(const Napi::CallbackInfo& info);
Napi::Value addFile(const Napi::CallbackInfo& info);
Napi::Value addPixmap(const Napi::CallbackInfo& info);
Napi::Value availableSizes(const Napi::CallbackInfo& info);
Napi::Value pixmap(const Napi::CallbackInfo& info); Napi::Value pixmap(const Napi::CallbackInfo& info);
Napi::Value isMask(const Napi::CallbackInfo& info); Napi::Value isMask(const Napi::CallbackInfo& info);
Napi::Value isNull(const Napi::CallbackInfo& info);
Napi::Value name(const Napi::CallbackInfo& info);
Napi::Value paint(const Napi::CallbackInfo& info);
Napi::Value setIsMask(const Napi::CallbackInfo& info); Napi::Value setIsMask(const Napi::CallbackInfo& info);
Napi::Value cacheKey(const Napi::CallbackInfo& info); Napi::Value cacheKey(const Napi::CallbackInfo& info);
Napi::Value swap(const Napi::CallbackInfo& info);
}; };
namespace StaticQIconWrapMethods { namespace StaticQIconWrapMethods {

View File

@ -14,7 +14,7 @@ class DLL_EXPORT NMovie : public QMovie, public EventWidget {
public: public:
using QMovie::QMovie; using QMovie::QMovie;
virtual void connectSignalsToEventEmitter() { void connectSignalsToEventEmitter() {
QOBJECT_SIGNALS QOBJECT_SIGNALS
// Qt Connects: Implement all signal connects here // Qt Connects: Implement all signal connects here
QObject::connect(this, &QMovie::error, QObject::connect(this, &QMovie::error,

View File

@ -1,24 +0,0 @@
#pragma once
#include <napi.h>
#include <QPalette>
#include "Extras/Export/export.h"
#include "core/Component/component_macro.h"
class DLL_EXPORT QPaletteWrap : public Napi::ObjectWrap<QPaletteWrap> {
COMPONENT_WRAPPED_METHODS_DECLARATION
private:
std::unique_ptr<QPalette> instance;
public:
static Napi::FunctionReference constructor;
static Napi::Object init(Napi::Env env, Napi::Object exports);
QPaletteWrap(const Napi::CallbackInfo& info);
~QPaletteWrap();
QPalette* getInternalInstance();
// Wrapped methods
Napi::Value color(const Napi::CallbackInfo& info);
};

View File

@ -1,34 +0,0 @@
#pragma once
#include <napi.h>
#include <QPointer>
#include <QScreen>
#include "Extras/Export/export.h"
#include "QtCore/QObject/qobject_macro.h"
class DLL_EXPORT QScreenWrap : public Napi::ObjectWrap<QScreenWrap>,
public EventWidget {
QOBJECT_WRAPPED_METHODS_DECLARATION_WITH_EVENT_SOURCE(this)
QOBJECT_SET_PARENT_IMPL
// Note: We don't use EVENTWIDGET_IMPLEMENTATIONS() here because this class
// doesn't handle any QEvents.
private:
QPointer<QScreen> instance;
public:
// class constructor
static Napi::FunctionReference constructor;
static Napi::Object init(Napi::Env env, Napi::Object exports);
QScreenWrap(const Napi::CallbackInfo& info);
QScreen* getInternalInstance();
virtual void connectSignalsToEventEmitter();
// Wrapped methods
Napi::Value grabWindow(const Napi::CallbackInfo& info);
};

View File

@ -20,6 +20,4 @@ class DLL_EXPORT QStyleWrap : public Napi::ObjectWrap<QStyleWrap> {
QStyle* getInternalInstance(); QStyle* getInternalInstance();
// Wrapped methods // Wrapped methods
Napi::Value pixelMetric(const Napi::CallbackInfo& info); Napi::Value pixelMetric(const Napi::CallbackInfo& info);
Napi::Value polish(const Napi::CallbackInfo& info);
Napi::Value unpolish(const Napi::CallbackInfo& info);
}; };

View File

@ -1,58 +0,0 @@
#pragma once
#include <napi.h>
#include <QPointer>
#include <QWindow>
#include "Extras/Export/export.h"
#include "QtCore/QObject/qobject_macro.h"
class DLL_EXPORT QWindowWrap : public Napi::ObjectWrap<QWindowWrap>,
public EventWidget,
public QObject {
QOBJECT_WRAPPED_METHODS_DECLARATION_WITH_EVENT_SOURCE(this)
// Note: We don't use EVENTWIDGET_IMPLEMENTATIONS() here because this class
// doesn't handle any QEvents.
// `QWindow` has a special setParent() which only accepts `QWindow`s
Napi::Value setParent(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
QObject* parentObject = info[0].As<Napi::External<QObject>>().Data();
QWindow* parentWindow = qobject_cast<QWindow*>(parentObject);
if (parentWindow) {
this->instance->setParent(parentWindow);
}
return env.Null();
}
private:
QPointer<QWindow> instance;
public:
// class constructor
static Napi::FunctionReference constructor;
static Napi::Object init(Napi::Env env, Napi::Object exports);
QWindowWrap(const Napi::CallbackInfo& info);
~QWindowWrap();
QWindow* getInternalInstance();
virtual void connectSignalsToEventEmitter();
// wrapped methods
Napi::Value screen(const Napi::CallbackInfo& info);
Napi::Value showFullScreen(const Napi::CallbackInfo& info);
Napi::Value showMaximized(const Napi::CallbackInfo& info);
Napi::Value showMinimized(const Napi::CallbackInfo& info);
Napi::Value showNormal(const Napi::CallbackInfo& info);
Napi::Value startSystemMove(const Napi::CallbackInfo& info);
Napi::Value startSystemResize(const Napi::CallbackInfo& info);
Napi::Value setWindowState(const Napi::CallbackInfo& info);
Napi::Value windowState(const Napi::CallbackInfo& info);
Napi::Value visibility(const Napi::CallbackInfo& info);
Napi::Value setVisibility(const Napi::CallbackInfo& info);
protected:
bool eventFilter(QObject* watched, QEvent* event) override;
};

View File

@ -16,16 +16,20 @@
QWIDGET_WRAPPED_METHODS_DECLARATION \ QWIDGET_WRAPPED_METHODS_DECLARATION \
Napi::Value animateClick(const Napi::CallbackInfo& info) { \ Napi::Value animateClick(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
this->instance->animateClick(); \ Napi::HandleScope scope(env); \
int msec = info[0].As<Napi::Number>().Int32Value(); \
this->instance->animateClick(msec); \
return env.Null(); \ return env.Null(); \
} \ } \
Napi::Value click(const Napi::CallbackInfo& info) { \ Napi::Value click(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
this->instance->click(); \ this->instance->click(); \
return env.Null(); \ return env.Null(); \
} \ } \
Napi::Value toggle(const Napi::CallbackInfo& info) { \ Napi::Value toggle(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
this->instance->toggle(); \ this->instance->toggle(); \
return env.Null(); \ return env.Null(); \
} }

View File

@ -1,21 +0,0 @@
#pragma once
#include "QtCore/QObject/qobject_macro.h"
/*
This macro adds common QAbstractItemDelete exported methods
*/
#ifndef QABSTRACTITEMDELEGATE_WRAPPED_METHODS_DECLARATION
#define QABSTRACTITEMDELEGATE_WRAPPED_METHODS_DECLARATION \
QOBJECT_WRAPPED_METHODS_DECLARATION
#endif
#ifndef QABSTRACTITEMDELEGATE_WRAPPED_METHODS_EXPORT_DEFINE
#define QABSTRACTITEMDELEGATE_WRAPPED_METHODS_EXPORT_DEFINE(WrapName) \
QOBJECT_WRAPPED_METHODS_EXPORT_DEFINE(WrapName)
#endif // QABSTRACTITEMDELEGATE_WRAPPED_METHODS_EXPORT_DEFINE
#ifndef QABSTRACTITEMDELEGATE_SIGNALS
#define QABSTRACTITEMDELEGATE_SIGNALS QOBJECT_SIGNALS
#endif // QABSTRACTITEMDELEGATE_SIGNALS

View File

@ -1,25 +0,0 @@
#pragma once
#include <napi.h>
#include <QAbstractItemDelegate>
#include <QPointer>
#include "Extras/Utils/nutils.h"
#include "QtWidgets/QAbstractItemDelegate/qabstractitemdelegate_macro.h"
class DLL_EXPORT QAbstractItemDelegateWrap
: public Napi::ObjectWrap<QAbstractItemDelegateWrap> {
QABSTRACTITEMDELEGATE_WRAPPED_METHODS_DECLARATION
private:
QPointer<QAbstractItemDelegate> instance;
public:
static Napi::Object init(Napi::Env env, Napi::Object exports);
QAbstractItemDelegateWrap(const Napi::CallbackInfo& info);
~QAbstractItemDelegateWrap();
QAbstractItemDelegate* getInternalInstance();
// class constructor
static Napi::FunctionReference constructor;
// wrapped methods
};

View File

@ -1,9 +1,6 @@
#pragma once #pragma once
#include "QtCore/QAbstractItemModel/qabstractitemmodel_wrap.h"
#include "QtCore/QItemSelectionModel/qitemselectionmodel_wrap.h"
#include "QtCore/QModelIndex/qmodelindex_wrap.h" #include "QtCore/QModelIndex/qmodelindex_wrap.h"
#include "QtWidgets/QAbstractItemDelegate/qabstractitemdelegate_wrap.h"
#include "QtWidgets/QAbstractScrollArea/qabstractscrollarea_macro.h" #include "QtWidgets/QAbstractScrollArea/qabstractscrollarea_macro.h"
#include "QtWidgets/QWidget/qwidget_wrap.h" #include "QtWidgets/QWidget/qwidget_wrap.h"
@ -15,14 +12,11 @@
*/ */
#ifndef QABSTRACTITEMVIEW_WRAPPED_METHODS_DECLARATION #ifndef QABSTRACTITEMVIEW_WRAPPED_METHODS_DECLARATION
#define QABSTRACTITEMVIEW_WRAPPED_METHODS_DECLARATION \
// This silly *WITHOUT_INDEXAT nonsense is for the benefit of QHeaderView and
// its redefinition of `indexAt()` as protected(!) instead of plain public.
// *sigh*
#define QABSTRACTITEMVIEW_WRAPPED_METHODS_DECLARATION_NO_QHEADERVIEW_PROTECTED \
QABSTRACTSCROLLAREA_WRAPPED_METHODS_DECLARATION \ QABSTRACTSCROLLAREA_WRAPPED_METHODS_DECLARATION \
Napi::Value setCurrentIndex(const Napi::CallbackInfo& info) { \ Napi::Value setCurrentIndex(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
Napi::Object indexObject = info[0].As<Napi::Object>(); \ Napi::Object indexObject = info[0].As<Napi::Object>(); \
QModelIndexWrap* indexWrap = \ QModelIndexWrap* indexWrap = \
Napi::ObjectWrap<QModelIndexWrap>::Unwrap(indexObject); \ Napi::ObjectWrap<QModelIndexWrap>::Unwrap(indexObject); \
@ -31,6 +25,7 @@
} \ } \
Napi::Value currentIndex(const Napi::CallbackInfo& info) { \ Napi::Value currentIndex(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
QModelIndex current = this->instance->currentIndex(); \ QModelIndex current = this->instance->currentIndex(); \
auto instance = QModelIndexWrap::constructor.New( \ auto instance = QModelIndexWrap::constructor.New( \
{Napi::External<QModelIndex>::New(env, new QModelIndex(current))}); \ {Napi::External<QModelIndex>::New(env, new QModelIndex(current))}); \
@ -38,6 +33,7 @@
} \ } \
Napi::Value setIndexWidget(const Napi::CallbackInfo& info) { \ Napi::Value setIndexWidget(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
Napi::Object indexObject = info[0].As<Napi::Object>(); \ Napi::Object indexObject = info[0].As<Napi::Object>(); \
Napi::Object widgetObject = info[1].As<Napi::Object>(); \ Napi::Object widgetObject = info[1].As<Napi::Object>(); \
QModelIndexWrap* indexWrap = \ QModelIndexWrap* indexWrap = \
@ -50,6 +46,7 @@
} \ } \
Napi::Value indexWidget(const Napi::CallbackInfo& info) { \ Napi::Value indexWidget(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
Napi::Object indexObject = info[0].As<Napi::Object>(); \ Napi::Object indexObject = info[0].As<Napi::Object>(); \
QModelIndexWrap* indexWrap = \ QModelIndexWrap* indexWrap = \
Napi::ObjectWrap<QModelIndexWrap>::Unwrap(indexObject); \ Napi::ObjectWrap<QModelIndexWrap>::Unwrap(indexObject); \
@ -62,16 +59,19 @@
} \ } \
Napi::Value resetHorizontalScrollMode(const Napi::CallbackInfo& info) { \ Napi::Value resetHorizontalScrollMode(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
this->instance->resetHorizontalScrollMode(); \ this->instance->resetHorizontalScrollMode(); \
return env.Null(); \ return env.Null(); \
} \ } \
Napi::Value resetVerticalScrollMode(const Napi::CallbackInfo& info) { \ Napi::Value resetVerticalScrollMode(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
this->instance->resetVerticalScrollMode(); \ this->instance->resetVerticalScrollMode(); \
return env.Null(); \ return env.Null(); \
} \ } \
Napi::Value rootIndex(const Napi::CallbackInfo& info) { \ Napi::Value rootIndex(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
QModelIndex root = this->instance->rootIndex(); \ QModelIndex root = this->instance->rootIndex(); \
auto instance = QModelIndexWrap::constructor.New( \ auto instance = QModelIndexWrap::constructor.New( \
{Napi::External<QModelIndex>::New(env, new QModelIndex(root))}); \ {Napi::External<QModelIndex>::New(env, new QModelIndex(root))}); \
@ -79,182 +79,15 @@
} \ } \
Napi::Value scrollToBottom(const Napi::CallbackInfo& info) { \ Napi::Value scrollToBottom(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
this->instance->scrollToBottom(); \ this->instance->scrollToBottom(); \
return env.Null(); \ return env.Null(); \
} \ } \
Napi::Value scrollToTop(const Napi::CallbackInfo& info) { \ Napi::Value scrollToTop(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
this->instance->scrollToTop(); \ this->instance->scrollToTop(); \
return env.Null(); \ return env.Null(); \
} \
Napi::Value setModel(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
Napi::Object modelObject = info[0].As<Napi::Object>(); \
QAbstractItemModelWrap* modelWrap = \
Napi::ObjectWrap<QAbstractItemModelWrap>::Unwrap(modelObject); \
QAbstractItemView* instance = this->instance; \
instance->setModel(modelWrap->getInternalInstance()); \
return env.Null(); \
} \
Napi::Value closePersistentEditor(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
QModelIndexWrap* indexWrap = \
Napi::ObjectWrap<QModelIndexWrap>::Unwrap(info[0].As<Napi::Object>()); \
QModelIndex* index = indexWrap->getInternalInstance(); \
this->instance->QAbstractItemView::closePersistentEditor(*index); \
return env.Null(); \
} \
Napi::Value clearSelection(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
this->instance->clearSelection(); \
return env.Null(); \
} \
Napi::Value edit(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
QModelIndexWrap* indexWrap = \
Napi::ObjectWrap<QModelIndexWrap>::Unwrap(info[0].As<Napi::Object>()); \
QModelIndex* index = indexWrap->getInternalInstance(); \
this->instance->edit(*index); \
return env.Null(); \
} \
Napi::Value reset(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
this->instance->reset(); \
return env.Null(); \
} \
Napi::Value selectAll(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
this->instance->selectAll(); \
return env.Null(); \
} \
Napi::Value setRootIndex(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
QModelIndexWrap* indexWrap = \
Napi::ObjectWrap<QModelIndexWrap>::Unwrap(info[0].As<Napi::Object>()); \
QModelIndex* index = indexWrap->getInternalInstance(); \
this->instance->setRootIndex(*index); \
return env.Null(); \
} \
Napi::Value update_QModelIndex(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
QModelIndexWrap* indexWrap = \
Napi::ObjectWrap<QModelIndexWrap>::Unwrap(info[0].As<Napi::Object>()); \
QModelIndex* index = indexWrap->getInternalInstance(); \
this->instance->update(*index); \
return env.Null(); \
} \
Napi::Value selectionModel(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
QItemSelectionModel* model = this->instance->selectionModel(); \
return WrapperCache::instance.getWrapper(env, model); \
} \
Napi::Value isPersistentEditorOpen(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
QModelIndexWrap* indexWrap = \
Napi::ObjectWrap<QModelIndexWrap>::Unwrap(info[0].As<Napi::Object>()); \
QModelIndex* index = indexWrap->getInternalInstance(); \
bool result = this->instance->isPersistentEditorOpen(*index); \
return Napi::Boolean::New(env, result); \
} \
Napi::Value openPersistentEditor(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
QModelIndexWrap* indexWrap = \
Napi::ObjectWrap<QModelIndexWrap>::Unwrap(info[0].As<Napi::Object>()); \
QModelIndex* index = indexWrap->getInternalInstance(); \
this->instance->QAbstractItemView::openPersistentEditor(*index); \
return env.Null(); \
} \
Napi::Value keyboardSearch(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
std::string searchNapiText = info[0].As<Napi::String>().Utf8Value(); \
QString search = QString::fromUtf8(searchNapiText.c_str()); \
this->instance->keyboardSearch(search); \
return env.Null(); \
} \
Napi::Value setItemDelegate(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
if (info[0].IsNull()) { \
this->instance->setItemDelegate(nullptr); \
} else { \
QAbstractItemDelegateWrap* delegateWrap = \
Napi::ObjectWrap<QAbstractItemDelegateWrap>::Unwrap( \
info[0].As<Napi::Object>()); \
QAbstractItemDelegate* delegate = delegateWrap->getInternalInstance(); \
this->instance->setItemDelegate(delegate); \
} \
return env.Null(); \
} \
Napi::Value setItemDelegateForColumn(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
int column = info[0].As<Napi::Number>().Int32Value(); \
if (info[1].IsNull()) { \
this->instance->setItemDelegateForColumn(column, nullptr); \
} else { \
QAbstractItemDelegateWrap* delegateWrap = \
Napi::ObjectWrap<QAbstractItemDelegateWrap>::Unwrap( \
info[1].As<Napi::Object>()); \
QAbstractItemDelegate* delegate = delegateWrap->getInternalInstance(); \
this->instance->setItemDelegateForColumn(column, delegate); \
} \
return env.Null(); \
} \
Napi::Value setItemDelegateForRow(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
int row = info[0].As<Napi::Number>().Int32Value(); \
if (info[1].IsNull()) { \
this->instance->setItemDelegateForRow(row, nullptr); \
} else { \
QAbstractItemDelegateWrap* delegateWrap = \
Napi::ObjectWrap<QAbstractItemDelegateWrap>::Unwrap( \
info[1].As<Napi::Object>()); \
QAbstractItemDelegate* delegate = delegateWrap->getInternalInstance(); \
this->instance->setItemDelegateForRow(row, delegate); \
} \
return env.Null(); \
} \
Napi::Value sizeHintForIndex(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
QModelIndexWrap* indexWrap = \
Napi::ObjectWrap<QModelIndexWrap>::Unwrap(info[0].As<Napi::Object>()); \
QModelIndex* index = indexWrap->getInternalInstance(); \
QSize result = this->instance->sizeHintForIndex(*index); \
auto resultInstance = QSizeWrap::constructor.New( \
{Napi::External<QSize>::New(env, new QSize(result))}); \
return resultInstance; \
}
#define QABSTRACTITEMVIEW_WRAPPED_METHODS_DECLARATION \
QABSTRACTITEMVIEW_WRAPPED_METHODS_DECLARATION_NO_QHEADERVIEW_PROTECTED \
Napi::Value indexAt(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
QPointWrap* pointWrap = \
Napi::ObjectWrap<QPointWrap>::Unwrap(info[0].As<Napi::Object>()); \
QPoint* point = pointWrap->getInternalInstance(); \
QModelIndex result = this->instance->indexAt(*point); \
auto resultInstance = QModelIndexWrap::constructor.New( \
{Napi::External<QModelIndex>::New(env, new QModelIndex(result))}); \
return resultInstance; \
} \
Napi::Value scrollTo(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
QModelIndexWrap* indexWrap = \
Napi::ObjectWrap<QModelIndexWrap>::Unwrap(info[0].As<Napi::Object>()); \
QModelIndex* index = indexWrap->getInternalInstance(); \
QAbstractItemView::ScrollHint hint = \
static_cast<QAbstractItemView::ScrollHint>( \
info[1].As<Napi::Number>().Int32Value()); \
this->instance->scrollTo(*index, hint); \
return env.Null(); \
} \
Napi::Value visualRect(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
QModelIndexWrap* indexWrap = \
Napi::ObjectWrap<QModelIndexWrap>::Unwrap(info[0].As<Napi::Object>()); \
QModelIndex* index = indexWrap->getInternalInstance(); \
QRect ret = this->instance->visualRect(*index); \
auto instance = QRectWrap::constructor.New( \
{Napi::External<QRect>::New(env, new QRect(ret))}); \
return instance; \
} }
#endif // QABSTRACTITEMVIEW_WRAPPED_METHODS_DECLARATION #endif // QABSTRACTITEMVIEW_WRAPPED_METHODS_DECLARATION
@ -272,92 +105,13 @@
&WidgetWrapName::resetVerticalScrollMode), \ &WidgetWrapName::resetVerticalScrollMode), \
InstanceMethod("rootIndex", &WidgetWrapName::rootIndex), \ InstanceMethod("rootIndex", &WidgetWrapName::rootIndex), \
InstanceMethod("scrollToBottom", &WidgetWrapName::scrollToBottom), \ InstanceMethod("scrollToBottom", &WidgetWrapName::scrollToBottom), \
InstanceMethod("scrollToTop", &WidgetWrapName::scrollToTop), \ InstanceMethod("scrollToTop", &WidgetWrapName::scrollToTop),
InstanceMethod("setModel", &WidgetWrapName::setModel), \
InstanceMethod("closePersistentEditor", \
&WidgetWrapName::closePersistentEditor), \
InstanceMethod("clearSelection", &WidgetWrapName::clearSelection), \
InstanceMethod("edit", &WidgetWrapName::edit), \
InstanceMethod("reset", &WidgetWrapName::reset), \
InstanceMethod("selectAll", &WidgetWrapName::selectAll), \
InstanceMethod("setRootIndex", &WidgetWrapName::setRootIndex), \
InstanceMethod("update_QModelIndex", \
&WidgetWrapName::update_QModelIndex), \
InstanceMethod("indexAt", &WidgetWrapName::indexAt), \
InstanceMethod("selectionModel", &WidgetWrapName::selectionModel), \
InstanceMethod("scrollTo", &WidgetWrapName::scrollTo), \
InstanceMethod("isPersistentEditorOpen", \
&WidgetWrapName::isPersistentEditorOpen), \
InstanceMethod("openPersistentEditor", \
&WidgetWrapName::openPersistentEditor), \
InstanceMethod("keyboardSearch", &WidgetWrapName::keyboardSearch), \
InstanceMethod("setItemDelegate", &WidgetWrapName::setItemDelegate), \
InstanceMethod("setItemDelegateForColumn", \
&WidgetWrapName::setItemDelegateForColumn), \
InstanceMethod("setItemDelegateForRow", \
&WidgetWrapName::setItemDelegateForRow), \
InstanceMethod("visualRect", &WidgetWrapName::visualRect), \
InstanceMethod("sizeHintForIndex", &WidgetWrapName::sizeHintForIndex),
#endif // QABSTRACTITEMVIEW_WRAPPED_METHODS_EXPORT_DEFINE #endif // QABSTRACTITEMVIEW_WRAPPED_METHODS_EXPORT_DEFINE
#ifndef QABSTRACTITEMVIEW_SIGNALS #ifndef QABSTRACTITEMVIEW_SIGNALS
#define QABSTRACTITEMVIEW_SIGNALS \ #define QABSTRACTITEMVIEW_SIGNALS \
QABSTRACTSCROLLAREA_SIGNALS \ QABSTRACTSCROLLAREA_SIGNALS \
QObject::connect( \
this, &QAbstractItemView::activated, [=](const QModelIndex& index) { \
Napi::Env env = this->emitOnNode.Env(); \
Napi::HandleScope scope(env); \
auto indexInstance = QModelIndexWrap::constructor.New( \
{Napi::External<QModelIndex>::New(env, new QModelIndex(index))}); \
this->emitOnNode.Call( \
{Napi::String::New(env, "activated"), indexInstance}); \
}); \
QObject::connect( \
this, &QAbstractItemView::clicked, [=](const QModelIndex& index) { \
Napi::Env env = this->emitOnNode.Env(); \
Napi::HandleScope scope(env); \
auto indexInstance = QModelIndexWrap::constructor.New( \
{Napi::External<QModelIndex>::New(env, new QModelIndex(index))}); \
this->emitOnNode.Call( \
{Napi::String::New(env, "clicked"), indexInstance}); \
}); \
QObject::connect( \
this, &QAbstractItemView::doubleClicked, [=](const QModelIndex& index) { \
Napi::Env env = this->emitOnNode.Env(); \
Napi::HandleScope scope(env); \
auto indexInstance = QModelIndexWrap::constructor.New( \
{Napi::External<QModelIndex>::New(env, new QModelIndex(index))}); \
this->emitOnNode.Call( \
{Napi::String::New(env, "doubleClicked"), indexInstance}); \
}); \
QObject::connect( \
this, &QAbstractItemView::entered, [=](const QModelIndex& index) { \
Napi::Env env = this->emitOnNode.Env(); \
Napi::HandleScope scope(env); \
auto indexInstance = QModelIndexWrap::constructor.New( \
{Napi::External<QModelIndex>::New(env, new QModelIndex(index))}); \
this->emitOnNode.Call( \
{Napi::String::New(env, "entered"), indexInstance}); \
}); \
QObject::connect( \
this, &QAbstractItemView::iconSizeChanged, [=](const QSize& size) { \
Napi::Env env = this->emitOnNode.Env(); \
Napi::HandleScope scope(env); \
auto sizeInstance = QSizeWrap::constructor.New( \
{Napi::External<QSize>::New(env, new QSize(size))}); \
this->emitOnNode.Call( \
{Napi::String::New(env, "iconSizeChanged"), sizeInstance}); \
}); \
QObject::connect( \
this, &QAbstractItemView::pressed, [=](const QModelIndex& index) { \
Napi::Env env = this->emitOnNode.Env(); \
Napi::HandleScope scope(env); \
auto indexInstance = QModelIndexWrap::constructor.New( \
{Napi::External<QModelIndex>::New(env, new QModelIndex(index))}); \
this->emitOnNode.Call( \
{Napi::String::New(env, "pressed"), indexInstance}); \
}); \
QObject::connect(this, &QAbstractItemView::viewportEntered, [=]() { \ QObject::connect(this, &QAbstractItemView::viewportEntered, [=]() { \
Napi::Env env = this->emitOnNode.Env(); \ Napi::Env env = this->emitOnNode.Env(); \
Napi::HandleScope scope(env); \ Napi::HandleScope scope(env); \

View File

@ -1,8 +1,6 @@
#pragma once #pragma once
#include "QtCore/QSize/qsize_wrap.h"
#include "QtWidgets/QFrame/qframe_macro.h" #include "QtWidgets/QFrame/qframe_macro.h"
#include "QtWidgets/QScrollBar/qscrollbar_wrap.h"
#include "QtWidgets/QWidget/qwidget_wrap.h" #include "QtWidgets/QWidget/qwidget_wrap.h"
/* /*
@ -17,36 +15,9 @@
\ \
QFRAME_WRAPPED_METHODS_DECLARATION \ QFRAME_WRAPPED_METHODS_DECLARATION \
\ \
Napi::Value maximumViewportSize(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
QSize size = this->instance->maximumViewportSize(); \
auto instance = QSizeWrap::constructor.New( \
{Napi::External<QSize>::New(env, new QSize(size))}); \
return instance; \
} \
\
Napi::Value setHorizontalScrollBar(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
Napi::Object scrollBarObject = info[0].As<Napi::Object>(); \
QScrollBarWrap* scrollBarWrap = \
Napi::ObjectWrap<QScrollBarWrap>::Unwrap(scrollBarObject); \
QScrollBar* scrollBar = scrollBarWrap->getInternalInstance(); \
this->instance->setHorizontalScrollBar(scrollBar); \
return env.Null(); \
} \
\
Napi::Value setVerticalScrollBar(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
Napi::Object scrollBarObject = info[0].As<Napi::Object>(); \
QScrollBarWrap* scrollBarWrap = \
Napi::ObjectWrap<QScrollBarWrap>::Unwrap(scrollBarObject); \
QScrollBar* scrollBar = scrollBarWrap->getInternalInstance(); \
this->instance->setVerticalScrollBar(scrollBar); \
return env.Null(); \
} \
\
Napi::Value setViewport(const Napi::CallbackInfo& info) { \ Napi::Value setViewport(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
Napi::Object viewPortObject = info[0].As<Napi::Object>(); \ Napi::Object viewPortObject = info[0].As<Napi::Object>(); \
NodeWidgetWrap* viewPortWidgetWrap = \ NodeWidgetWrap* viewPortWidgetWrap = \
Napi::ObjectWrap<NodeWidgetWrap>::Unwrap(viewPortObject); \ Napi::ObjectWrap<NodeWidgetWrap>::Unwrap(viewPortObject); \
@ -57,22 +28,11 @@
\ \
Napi::Value viewport(const Napi::CallbackInfo& info) { \ Napi::Value viewport(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
QWidget* viewPort = this->instance->viewport(); \ QWidget* viewPort = this->instance->viewport(); \
auto instance = WrapperCache::instance.getWrapper(env, viewPort); \ NWidget* nviewPort = reinterpret_cast<NWidget*>(viewPort); \
return instance; \ auto instance = QWidgetWrap::constructor.New( \
} \ {Napi::External<NWidget>::New(env, nviewPort)}); \
\
Napi::Value horizontalScrollBar(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
QScrollBar* scrollBar = this->instance->horizontalScrollBar(); \
auto instance = WrapperCache::instance.getWrapper(env, scrollBar); \
return instance; \
} \
\
Napi::Value verticalScrollBar(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
QScrollBar* scrollBar = this->instance->verticalScrollBar(); \
auto instance = WrapperCache::instance.getWrapper(env, scrollBar); \
return instance; \ return instance; \
} }
@ -83,16 +43,8 @@
\ \
QFRAME_WRAPPED_METHODS_EXPORT_DEFINE(WidgetWrapName) \ QFRAME_WRAPPED_METHODS_EXPORT_DEFINE(WidgetWrapName) \
\ \
InstanceMethod("maximumViewportSize", &WidgetWrapName::maximumViewportSize), \
InstanceMethod("setHorizontalScrollBar", \
&WidgetWrapName::setVerticalScrollBar), \
InstanceMethod("setVerticalScrollBar", \
&WidgetWrapName::setVerticalScrollBar), \
InstanceMethod("setViewport", &WidgetWrapName::setViewport), \ InstanceMethod("setViewport", &WidgetWrapName::setViewport), \
InstanceMethod("viewport", &WidgetWrapName::viewport), \ InstanceMethod("viewport", &WidgetWrapName::viewport),
InstanceMethod("horizontalScrollBar", \
&WidgetWrapName::horizontalScrollBar), \
InstanceMethod("verticalScrollBar", &WidgetWrapName::verticalScrollBar),
#endif // QABSTRACTSCROLLAREA_WRAPPED_METHODS_EXPORT_DEFINE #endif // QABSTRACTSCROLLAREA_WRAPPED_METHODS_EXPORT_DEFINE

View File

@ -14,6 +14,7 @@
QWIDGET_WRAPPED_METHODS_DECLARATION \ QWIDGET_WRAPPED_METHODS_DECLARATION \
Napi::Value triggerAction(const Napi::CallbackInfo& info) { \ Napi::Value triggerAction(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
int action = info[0].As<Napi::Number>().Int32Value(); \ int action = info[0].As<Napi::Number>().Int32Value(); \
this->instance->triggerAction( \ this->instance->triggerAction( \
static_cast<QAbstractSlider::SliderAction>(action)); \ static_cast<QAbstractSlider::SliderAction>(action)); \
@ -21,6 +22,7 @@
} \ } \
Napi::Value setRange(const Napi::CallbackInfo& info) { \ Napi::Value setRange(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
int min = info[0].As<Napi::Number>().Int32Value(); \ int min = info[0].As<Napi::Number>().Int32Value(); \
int max = info[1].As<Napi::Number>().Int32Value(); \ int max = info[1].As<Napi::Number>().Int32Value(); \
this->instance->setRange(min, max); \ this->instance->setRange(min, max); \

View File

@ -15,16 +15,19 @@
QWIDGET_WRAPPED_METHODS_DECLARATION \ QWIDGET_WRAPPED_METHODS_DECLARATION \
Napi::Value selectAll(const Napi::CallbackInfo& info) { \ Napi::Value selectAll(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
this->instance->selectAll(); \ this->instance->selectAll(); \
return env.Null(); \ return env.Null(); \
} \ } \
Napi::Value stepDown(const Napi::CallbackInfo& info) { \ Napi::Value stepDown(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
this->instance->stepDown(); \ this->instance->stepDown(); \
return env.Null(); \ return env.Null(); \
} \ } \
Napi::Value stepUp(const Napi::CallbackInfo& info) { \ Napi::Value stepUp(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
this->instance->stepUp(); \ this->instance->stepUp(); \
return env.Null(); \ return env.Null(); \
} }

View File

@ -11,7 +11,7 @@ class DLL_EXPORT NAction : public QAction, public EventWidget {
EVENTWIDGET_IMPLEMENTATIONS(QAction) EVENTWIDGET_IMPLEMENTATIONS(QAction)
public: public:
using QAction::QAction; // inherit all constructors of QAction using QAction::QAction; // inherit all constructors of QAction
virtual void connectSignalsToEventEmitter() { void connectSignalsToEventEmitter() {
// Qt Connects: Implement all signal connects here // Qt Connects: Implement all signal connects here
QOBJECT_SIGNALS QOBJECT_SIGNALS
QObject::connect(this, &QAction::triggered, [=](bool checked) { QObject::connect(this, &QAction::triggered, [=](bool checked) {

View File

@ -11,13 +11,14 @@ class DLL_EXPORT QActionWrap : public Napi::ObjectWrap<QActionWrap> {
QOBJECT_WRAPPED_METHODS_DECLARATION QOBJECT_WRAPPED_METHODS_DECLARATION
private: private:
QPointer<QAction> instance; QPointer<NAction> instance;
bool disableDeletion;
public: public:
static Napi::Object init(Napi::Env env, Napi::Object exports); static Napi::Object init(Napi::Env env, Napi::Object exports);
QActionWrap(const Napi::CallbackInfo& info); QActionWrap(const Napi::CallbackInfo& info);
~QActionWrap(); ~QActionWrap();
QAction* getInternalInstance(); NAction* getInternalInstance();
// class constructor // class constructor
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;
// wrapped methods // wrapped methods
@ -34,6 +35,4 @@ class DLL_EXPORT QActionWrap : public Napi::ObjectWrap<QActionWrap> {
Napi::Value isSeparator(const Napi::CallbackInfo& info); Napi::Value isSeparator(const Napi::CallbackInfo& info);
Napi::Value setSeparator(const Napi::CallbackInfo& info); Napi::Value setSeparator(const Napi::CallbackInfo& info);
Napi::Value setFont(const Napi::CallbackInfo& info); Napi::Value setFont(const Napi::CallbackInfo& info);
Napi::Value data(const Napi::CallbackInfo& info);
Napi::Value setData(const Napi::CallbackInfo& info);
}; };

View File

@ -10,5 +10,5 @@ class DLL_EXPORT NBoxLayout : public QBoxLayout, public EventWidget {
public: public:
EVENTWIDGET_IMPLEMENTATIONS(QBoxLayout) EVENTWIDGET_IMPLEMENTATIONS(QBoxLayout)
using QBoxLayout::QBoxLayout; using QBoxLayout::QBoxLayout;
virtual void connectSignalsToEventEmitter() { QLAYOUT_SIGNALS } void connectSignalsToEventEmitter() { QLAYOUT_SIGNALS }
}; };

View File

@ -12,13 +12,13 @@
class DLL_EXPORT QBoxLayoutWrap : public Napi::ObjectWrap<QBoxLayoutWrap> { class DLL_EXPORT QBoxLayoutWrap : public Napi::ObjectWrap<QBoxLayoutWrap> {
QLAYOUT_WRAPPED_METHODS_DECLARATION QLAYOUT_WRAPPED_METHODS_DECLARATION
private: private:
QPointer<QBoxLayout> instance; QPointer<NBoxLayout> instance;
public: public:
static Napi::Object init(Napi::Env env, Napi::Object exports); static Napi::Object init(Napi::Env env, Napi::Object exports);
QBoxLayoutWrap(const Napi::CallbackInfo& info); QBoxLayoutWrap(const Napi::CallbackInfo& info);
~QBoxLayoutWrap(); ~QBoxLayoutWrap();
QBoxLayout* getInternalInstance(); NBoxLayout* getInternalInstance();
// class constructor // class constructor
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;
// wrapped methods // wrapped methods

View File

@ -12,33 +12,15 @@ class DLL_EXPORT NButtonGroup : public QButtonGroup, public EventWidget {
EVENTWIDGET_IMPLEMENTATIONS(QButtonGroup) EVENTWIDGET_IMPLEMENTATIONS(QButtonGroup)
public: public:
using QButtonGroup::QButtonGroup; // inherit all constructors of QButtonGroup using QButtonGroup::QButtonGroup; // inherit all constructors of QButtonGroup
virtual void connectSignalsToEventEmitter() { void connectSignalsToEventEmitter() {
QOBJECT_SIGNALS QOBJECT_SIGNALS
// Qt Connects: Implement all signal connects here // Qt Connects: Implement all signal connects here
connect(this, &QButtonGroup::idClicked, [=](int id) { connect(this, QOverload<int>::of(&QButtonGroup::buttonClicked),
[=](int id) {
Napi::Env env = this->emitOnNode.Env(); Napi::Env env = this->emitOnNode.Env();
Napi::HandleScope scope(env); Napi::HandleScope scope(env);
this->emitOnNode.Call( this->emitOnNode.Call({Napi::String::New(env, "buttonClicked"),
{Napi::String::New(env, "idClicked"), Napi::Number::New(env, id)}); Napi::Number::New(env, id)});
});
connect(this, &QButtonGroup::idPressed, [=](int id) {
Napi::Env env = this->emitOnNode.Env();
Napi::HandleScope scope(env);
this->emitOnNode.Call(
{Napi::String::New(env, "idPressed"), Napi::Number::New(env, id)});
});
connect(this, &QButtonGroup::idReleased, [=](int id) {
Napi::Env env = this->emitOnNode.Env();
Napi::HandleScope scope(env);
this->emitOnNode.Call(
{Napi::String::New(env, "idReleased"), Napi::Number::New(env, id)});
});
connect(this, &QButtonGroup::idToggled, [=](int id, bool checked) {
Napi::Env env = this->emitOnNode.Env();
Napi::HandleScope scope(env);
this->emitOnNode.Call({Napi::String::New(env, "idToggled"),
Napi::Number::New(env, id),
Napi::Boolean::New(env, checked)});
}); });
} }
}; };

View File

@ -9,13 +9,13 @@
#include "nbuttongroup.hpp" #include "nbuttongroup.hpp"
class DLL_EXPORT QButtonGroupWrap : public Napi::ObjectWrap<QButtonGroupWrap> { class DLL_EXPORT QButtonGroupWrap : public Napi::ObjectWrap<QButtonGroupWrap> {
private: private:
QPointer<QButtonGroup> instance; QPointer<NButtonGroup> instance;
public: public:
static Napi::Object init(Napi::Env env, Napi::Object exports); static Napi::Object init(Napi::Env env, Napi::Object exports);
QButtonGroupWrap(const Napi::CallbackInfo& info); QButtonGroupWrap(const Napi::CallbackInfo& info);
~QButtonGroupWrap(); ~QButtonGroupWrap();
QButtonGroup* getInternalInstance(); NButtonGroup* getInternalInstance();
// class constructor // class constructor
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;
// wrapped methods // wrapped methods

View File

@ -14,7 +14,7 @@ class DLL_EXPORT NCalendarWidget : public QCalendarWidget, public NodeWidget {
// inherit all constructors of QCalendarWidget // inherit all constructors of QCalendarWidget
using QCalendarWidget::QCalendarWidget; using QCalendarWidget::QCalendarWidget;
virtual void connectSignalsToEventEmitter() { void connectSignalsToEventEmitter() {
// Qt Connects: Implement all signal connects here // Qt Connects: Implement all signal connects here
QWIDGET_SIGNALS QWIDGET_SIGNALS
QObject::connect(this, &QCalendarWidget::activated, [=](const QDate &date) { QObject::connect(this, &QCalendarWidget::activated, [=](const QDate &date) {

View File

@ -11,13 +11,13 @@
class DLL_EXPORT QCalendarWidgetWrap class DLL_EXPORT QCalendarWidgetWrap
: public Napi::ObjectWrap<QCalendarWidgetWrap> { : public Napi::ObjectWrap<QCalendarWidgetWrap> {
private: private:
QPointer<QCalendarWidget> instance; QPointer<NCalendarWidget> instance;
public: public:
static Napi::Object init(Napi::Env env, Napi::Object exports); static Napi::Object init(Napi::Env env, Napi::Object exports);
QCalendarWidgetWrap(const Napi::CallbackInfo &info); QCalendarWidgetWrap(const Napi::CallbackInfo &info);
~QCalendarWidgetWrap(); ~QCalendarWidgetWrap();
QCalendarWidget *getInternalInstance(); NCalendarWidget *getInternalInstance();
// class constructor // class constructor
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;
// wrapped methods // wrapped methods

View File

@ -13,7 +13,7 @@ class DLL_EXPORT NCheckBox : public QCheckBox, public NodeWidget {
public: public:
using QCheckBox::QCheckBox; // inherit all constructors of QCheckBox using QCheckBox::QCheckBox; // inherit all constructors of QCheckBox
virtual void connectSignalsToEventEmitter() { void connectSignalsToEventEmitter() {
QABSTRACT_BUTTON_SIGNALS QABSTRACT_BUTTON_SIGNALS
QObject::connect(this, &QCheckBox::stateChanged, [=](int state) { QObject::connect(this, &QCheckBox::stateChanged, [=](int state) {
Napi::Env env = this->emitOnNode.Env(); Napi::Env env = this->emitOnNode.Env();

View File

@ -12,13 +12,14 @@
class DLL_EXPORT QCheckBoxWrap : public Napi::ObjectWrap<QCheckBoxWrap> { class DLL_EXPORT QCheckBoxWrap : public Napi::ObjectWrap<QCheckBoxWrap> {
QABSTRACTBUTTON_WRAPPED_METHODS_DECLARATION QABSTRACTBUTTON_WRAPPED_METHODS_DECLARATION
private: private:
QPointer<QCheckBox> instance; QPointer<NCheckBox> instance;
bool disableDeletion;
public: public:
static Napi::Object init(Napi::Env env, Napi::Object exports); static Napi::Object init(Napi::Env env, Napi::Object exports);
QCheckBoxWrap(const Napi::CallbackInfo& info); QCheckBoxWrap(const Napi::CallbackInfo& info);
~QCheckBoxWrap(); ~QCheckBoxWrap();
QCheckBox* getInternalInstance(); NCheckBox* getInternalInstance();
// class constructor // class constructor
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;
// wrapped methods // wrapped methods

View File

@ -14,7 +14,7 @@ class DLL_EXPORT NColorDialog : public QColorDialog, public NodeWidget {
public: public:
using QColorDialog::QColorDialog; using QColorDialog::QColorDialog;
virtual void connectSignalsToEventEmitter() { void connectSignalsToEventEmitter() {
QDIALOG_SIGNALS QDIALOG_SIGNALS
// Qt Connects: Implement all signal connects here // Qt Connects: Implement all signal connects here
QObject::connect( QObject::connect(

View File

@ -9,23 +9,21 @@
#include "QtWidgets/QDialog/qdialog_macro.h" #include "QtWidgets/QDialog/qdialog_macro.h"
class DLL_EXPORT QColorDialogWrap : public Napi::ObjectWrap<QColorDialogWrap> { class DLL_EXPORT QColorDialogWrap : public Napi::ObjectWrap<QColorDialogWrap> {
QDIALOG_WRAPPED_METHODS_DECLARATION_NO_ACCEPT_OR_DONE QDIALOG_WRAPPED_METHODS_DECLARATION
private: private:
QPointer<QColorDialog> instance; QPointer<NColorDialog> instance;
public: public:
static Napi::Object init(Napi::Env env, Napi::Object exports); static Napi::Object init(Napi::Env env, Napi::Object exports);
QColorDialogWrap(const Napi::CallbackInfo& info); QColorDialogWrap(const Napi::CallbackInfo& info);
~QColorDialogWrap(); ~QColorDialogWrap();
QColorDialog* getInternalInstance(); NColorDialog* getInternalInstance();
// class constructor // class constructor
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;
// wrapped methods // wrapped methods
Napi::Value selectedColor(const Napi::CallbackInfo& info); Napi::Value selectedColor(const Napi::CallbackInfo& info);
Napi::Value setOption(const Napi::CallbackInfo& info); Napi::Value setOption(const Napi::CallbackInfo& info);
Napi::Value testOption(const Napi::CallbackInfo& info); Napi::Value testOption(const Napi::CallbackInfo& info);
Napi::Value accept(const Napi::CallbackInfo& info);
Napi::Value done(const Napi::CallbackInfo& info);
}; };
namespace StaticQColorDialogWrapMethods { namespace StaticQColorDialogWrapMethods {

View File

@ -12,16 +12,9 @@ class DLL_EXPORT NComboBox : public QComboBox, public NodeWidget {
NODEWIDGET_IMPLEMENTATIONS(QComboBox) NODEWIDGET_IMPLEMENTATIONS(QComboBox)
using QComboBox::QComboBox; using QComboBox::QComboBox;
virtual void connectSignalsToEventEmitter() { void connectSignalsToEventEmitter() {
QWIDGET_SIGNALS QWIDGET_SIGNALS
// Qt Connects: Implement all signal connects here // Qt Connects: Implement all signal connects here
QObject::connect(
this, QOverload<int>::of(&QComboBox::activated), [=](int index) {
Napi::Env env = this->emitOnNode.Env();
Napi::HandleScope scope(env);
this->emitOnNode.Call({Napi::String::New(env, "activated"),
Napi::Number::From(env, index)});
});
QObject::connect( QObject::connect(
this, QOverload<int>::of(&QComboBox::currentIndexChanged), this, QOverload<int>::of(&QComboBox::currentIndexChanged),
[=](int index) { [=](int index) {
@ -45,25 +38,5 @@ class DLL_EXPORT NComboBox : public QComboBox, public NodeWidget {
this->emitOnNode.Call({Napi::String::New(env, "editTextChanged"), this->emitOnNode.Call({Napi::String::New(env, "editTextChanged"),
Napi::String::New(env, text.toStdString())}); Napi::String::New(env, text.toStdString())});
}); });
QObject::connect(
this, QOverload<int>::of(&QComboBox::highlighted), [=](int index) {
Napi::Env env = this->emitOnNode.Env();
Napi::HandleScope scope(env);
this->emitOnNode.Call({Napi::String::New(env, "highlighted"),
Napi::Number::From(env, index)});
});
QObject::connect(this, &QComboBox::textActivated, [=](const QString &text) {
Napi::Env env = this->emitOnNode.Env();
Napi::HandleScope scope(env);
this->emitOnNode.Call({Napi::String::New(env, "textActivated"),
Napi::String::New(env, text.toStdString())});
});
QObject::connect(
this, &QComboBox::textHighlighted, [=](const QString &text) {
Napi::Env env = this->emitOnNode.Env();
Napi::HandleScope scope(env);
this->emitOnNode.Call({Napi::String::New(env, "textHighlighted"),
Napi::String::New(env, text.toStdString())});
});
} }
}; };

View File

@ -11,13 +11,13 @@
class DLL_EXPORT QComboBoxWrap : public Napi::ObjectWrap<QComboBoxWrap> { class DLL_EXPORT QComboBoxWrap : public Napi::ObjectWrap<QComboBoxWrap> {
QWIDGET_WRAPPED_METHODS_DECLARATION QWIDGET_WRAPPED_METHODS_DECLARATION
private: private:
QPointer<QComboBox> instance; QPointer<NComboBox> instance;
public: public:
static Napi::Object init(Napi::Env env, Napi::Object exports); static Napi::Object init(Napi::Env env, Napi::Object exports);
QComboBoxWrap(const Napi::CallbackInfo& info); QComboBoxWrap(const Napi::CallbackInfo& info);
~QComboBoxWrap(); ~QComboBoxWrap();
QComboBox* getInternalInstance(); NComboBox* getInternalInstance();
// class constructor // class constructor
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;
// wrapped methods // wrapped methods
@ -40,25 +40,4 @@ class DLL_EXPORT QComboBoxWrap : public Napi::ObjectWrap<QComboBoxWrap> {
Napi::Value clear(const Napi::CallbackInfo& info); Napi::Value clear(const Napi::CallbackInfo& info);
Napi::Value setModel(const Napi::CallbackInfo& info); Napi::Value setModel(const Napi::CallbackInfo& info);
Napi::Value setEditText(const Napi::CallbackInfo& info); Napi::Value setEditText(const Napi::CallbackInfo& info);
Napi::Value count(const Napi::CallbackInfo& info);
Napi::Value duplicatesEnabled(const Napi::CallbackInfo& info);
Napi::Value hasFrame(const Napi::CallbackInfo& info);
Napi::Value hidePopup(const Napi::CallbackInfo& info);
Napi::Value iconSize(const Napi::CallbackInfo& info);
Napi::Value maxCount(const Napi::CallbackInfo& info);
Napi::Value minimumContentsLength(const Napi::CallbackInfo& info);
Napi::Value modelColumn(const Napi::CallbackInfo& info);
Napi::Value rootModelIndex(const Napi::CallbackInfo& info);
Napi::Value setDuplicatesEnabled(const Napi::CallbackInfo& info);
Napi::Value setMinimumContentsLength(const Napi::CallbackInfo& info);
Napi::Value setModelColumn(const Napi::CallbackInfo& info);
Napi::Value setRootModelIndex(const Napi::CallbackInfo& info);
Napi::Value clearEditText(const Napi::CallbackInfo& info);
Napi::Value setFrame(const Napi::CallbackInfo& info);
Napi::Value setItemText(const Napi::CallbackInfo& info);
Napi::Value setMaxCount(const Napi::CallbackInfo& info);
Napi::Value showPopup(const Napi::CallbackInfo& info);
Napi::Value insertPolicy(const Napi::CallbackInfo& info);
Napi::Value setInsertPolicy(const Napi::CallbackInfo& info);
Napi::Value setIconSize(const Napi::CallbackInfo& info);
}; };

View File

@ -13,7 +13,7 @@ class DLL_EXPORT NDateEdit : public QDateEdit, public NodeWidget {
// inherit all constructors of QDateEdit // inherit all constructors of QDateEdit
using QDateEdit::QDateEdit; using QDateEdit::QDateEdit;
virtual void connectSignalsToEventEmitter() { void connectSignalsToEventEmitter() {
// Qt Connects: Implement all signal connects here // Qt Connects: Implement all signal connects here
QDATETIMEEDIT_SIGNALS QDATETIMEEDIT_SIGNALS
} }

View File

@ -11,13 +11,13 @@
class DLL_EXPORT QDateEditWrap : public Napi::ObjectWrap<QDateEditWrap> { class DLL_EXPORT QDateEditWrap : public Napi::ObjectWrap<QDateEditWrap> {
QDATETIMEEDIT_WRAPPED_METHODS_DECLARATION QDATETIMEEDIT_WRAPPED_METHODS_DECLARATION
private: private:
QPointer<QDateEdit> instance; QPointer<NDateEdit> instance;
public: public:
static Napi::Object init(Napi::Env env, Napi::Object exports); static Napi::Object init(Napi::Env env, Napi::Object exports);
QDateEditWrap(const Napi::CallbackInfo &info); QDateEditWrap(const Napi::CallbackInfo &info);
~QDateEditWrap(); ~QDateEditWrap();
QDateEdit *getInternalInstance(); NDateEdit *getInternalInstance();
// class constructor // class constructor
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;
// wrapped methods // wrapped methods

View File

@ -14,7 +14,7 @@ class DLL_EXPORT NDateTimeEdit : public QDateTimeEdit, public NodeWidget {
// inherit all constructors of QDateTimeEdit // inherit all constructors of QDateTimeEdit
using QDateTimeEdit::QDateTimeEdit; using QDateTimeEdit::QDateTimeEdit;
virtual void connectSignalsToEventEmitter() { void connectSignalsToEventEmitter() {
// Qt Connects: Implement all signal connects here // Qt Connects: Implement all signal connects here
QDATETIMEEDIT_SIGNALS QDATETIMEEDIT_SIGNALS
} }

View File

@ -18,21 +18,13 @@
QABSTRACTSPINBOX_WRAPPED_METHODS_DECLARATION \ QABSTRACTSPINBOX_WRAPPED_METHODS_DECLARATION \
Napi::Value setCalendarWidget(const Napi::CallbackInfo &info) { \ Napi::Value setCalendarWidget(const Napi::CallbackInfo &info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
Napi::Object calendarWidgetObject = info[0].As<Napi::Object>(); \ Napi::Object calendarWidgetObject = info[0].As<Napi::Object>(); \
QCalendarWidgetWrap *calendarWidgetWrap = \ QCalendarWidgetWrap *calendarWidgetWrap = \
Napi::ObjectWrap<QCalendarWidgetWrap>::Unwrap(calendarWidgetObject); \ Napi::ObjectWrap<QCalendarWidgetWrap>::Unwrap(calendarWidgetObject); \
this->instance->setCalendarWidget( \ this->instance->setCalendarWidget( \
calendarWidgetWrap->getInternalInstance()); \ calendarWidgetWrap->getInternalInstance()); \
return env.Null(); \ return env.Null(); \
} \
Napi::Value calendarWidget(const Napi::CallbackInfo &info) { \
Napi::Env env = info.Env(); \
QObject *calendarWidget = this->instance->calendarWidget(); \
if (calendarWidget) { \
return WrapperCache::instance.getWrapper(env, calendarWidget); \
} else { \
return env.Null(); \
} \
} }
#endif // QDATETIMEEDIT_WRAPPED_METHODS_DECLARATION #endif // QDATETIMEEDIT_WRAPPED_METHODS_DECLARATION
@ -40,8 +32,7 @@
#ifndef QDATETIMEEDIT_WRAPPED_METHODS_EXPORT_DEFINE #ifndef QDATETIMEEDIT_WRAPPED_METHODS_EXPORT_DEFINE
#define QDATETIMEEDIT_WRAPPED_METHODS_EXPORT_DEFINE(WidgetWrapName) \ #define QDATETIMEEDIT_WRAPPED_METHODS_EXPORT_DEFINE(WidgetWrapName) \
QABSTRACTSPINBOX_WRAPPED_METHODS_EXPORT_DEFINE(WidgetWrapName) \ QABSTRACTSPINBOX_WRAPPED_METHODS_EXPORT_DEFINE(WidgetWrapName) \
InstanceMethod("setCalendarWidget", &WidgetWrapName::setCalendarWidget), \ InstanceMethod("setCalendarWidget", &WidgetWrapName::setCalendarWidget),
InstanceMethod("calendarWidget", &WidgetWrapName::calendarWidget),
#endif // QDATETIMEEDIT_WRAPPED_METHODS_EXPORT_DEFINE #endif // QDATETIMEEDIT_WRAPPED_METHODS_EXPORT_DEFINE

View File

@ -12,13 +12,13 @@ class DLL_EXPORT QDateTimeEditWrap
: public Napi::ObjectWrap<QDateTimeEditWrap> { : public Napi::ObjectWrap<QDateTimeEditWrap> {
QDATETIMEEDIT_WRAPPED_METHODS_DECLARATION QDATETIMEEDIT_WRAPPED_METHODS_DECLARATION
private: private:
QPointer<QDateTimeEdit> instance; QPointer<NDateTimeEdit> instance;
public: public:
static Napi::Object init(Napi::Env env, Napi::Object exports); static Napi::Object init(Napi::Env env, Napi::Object exports);
QDateTimeEditWrap(const Napi::CallbackInfo &info); QDateTimeEditWrap(const Napi::CallbackInfo &info);
~QDateTimeEditWrap(); ~QDateTimeEditWrap();
QDateTimeEdit *getInternalInstance(); NDateTimeEdit *getInternalInstance();
// class constructor // class constructor
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;
// wrapped methods // wrapped methods

View File

@ -0,0 +1,15 @@
#pragma once
#include <QApplication>
#include <QDesktopWidget>
#include "core/NodeWidget/nodewidget.h"
class NQDesktopWidget : public QDesktopWidget, public NodeWidget {
public:
Q_OBJECT
NODEWIDGET_IMPLEMENTATIONS(QDesktopWidget)
public:
using QDesktopWidget::QDesktopWidget; // inherit all constructors of
// QStatusBar
};

View File

@ -0,0 +1,24 @@
#pragma once
#include <QPointer>
#include "QtWidgets/QWidget/qwidget_macro.h"
#include "napi.h"
#include "nqdesktopwidget.hpp"
class QDesktopWidgetWrap : public Napi::ObjectWrap<QDesktopWidgetWrap> {
private:
QPointer<NQDesktopWidget> instance;
public:
static Napi::Object init(Napi::Env env, Napi::Object exports);
QDesktopWidgetWrap(const Napi::CallbackInfo &info);
~QDesktopWidgetWrap();
NQDesktopWidget *getInternalInstance();
static Napi::FunctionReference constructor;
// wrapped methods
Napi::Value availableGeometry(const Napi::CallbackInfo &info);
Napi::Value screenGeometry(const Napi::CallbackInfo &info);
Napi::Value screenNumber(const Napi::CallbackInfo &info);
QWIDGET_WRAPPED_METHODS_DECLARATION
};

View File

@ -11,7 +11,7 @@ class DLL_EXPORT NDial : public QDial, public NodeWidget {
public: public:
using QDial::QDial; // inherit all constructors of QDial using QDial::QDial; // inherit all constructors of QDial
virtual void connectSignalsToEventEmitter() { void connectSignalsToEventEmitter() {
// Qt Connects: Implement all signal connects here // Qt Connects: Implement all signal connects here
QABSTRACT_SLIDER_SIGNALS QABSTRACT_SLIDER_SIGNALS
} }

View File

@ -12,13 +12,13 @@
class DLL_EXPORT QDialWrap : public Napi::ObjectWrap<QDialWrap> { class DLL_EXPORT QDialWrap : public Napi::ObjectWrap<QDialWrap> {
QABSTRACTSLIDER_WRAPPED_METHODS_DECLARATION QABSTRACTSLIDER_WRAPPED_METHODS_DECLARATION
private: private:
QPointer<QDial> instance; QPointer<NDial> instance;
public: public:
static Napi::Object init(Napi::Env env, Napi::Object exports); static Napi::Object init(Napi::Env env, Napi::Object exports);
QDialWrap(const Napi::CallbackInfo& info); QDialWrap(const Napi::CallbackInfo& info);
~QDialWrap(); ~QDialWrap();
QDial* getInternalInstance(); NDial* getInternalInstance();
// class constructor // class constructor
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;
// wrapped methods // wrapped methods

View File

@ -11,5 +11,5 @@ class DLL_EXPORT NDialog : public QDialog, public NodeWidget {
public: public:
using QDialog::QDialog; using QDialog::QDialog;
virtual void connectSignalsToEventEmitter() { QDIALOG_SIGNALS } void connectSignalsToEventEmitter() { QDIALOG_SIGNALS }
}; };

View File

@ -13,55 +13,44 @@
and every widget we export. and every widget we export.
*/ */
#ifndef QDIALOG_WRAPPED_METHODS_DECLARATION_NO_ACCEPT_OR_DONE #ifndef QDIALOG_WRAPPED_METHODS_DECLARATION
#define QDIALOG_WRAPPED_METHODS_DECLARATION_NO_ACCEPT_OR_DONE \ #define QDIALOG_WRAPPED_METHODS_DECLARATION \
\ \
QWIDGET_WRAPPED_METHODS_DECLARATION \ QWIDGET_WRAPPED_METHODS_DECLARATION \
\ \
Napi::Value setResult(const Napi::CallbackInfo& info) { \ Napi::Value setResult(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
Napi::Number result = info[0].As<Napi::Number>(); \ Napi::Number result = info[0].As<Napi::Number>(); \
this->instance->setResult(result.Int32Value()); \ this->instance->setResult(result.Int32Value()); \
return env.Null(); \ return env.Null(); \
} \ } \
Napi::Value result(const Napi::CallbackInfo& info) { \ Napi::Value result(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
int value = this->instance->result(); \ int value = this->instance->result(); \
return Napi::Value::From(env, value); \ return Napi::Value::From(env, value); \
} \ } \
Napi::Value exec(const Napi::CallbackInfo& info) { \ Napi::Value exec(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
int value = static_cast<int>(this->instance->exec()); \ int value = static_cast<int>(this->instance->exec()); \
return Napi::Number::From(env, value); \ return Napi::Number::From(env, value); \
} \ } \
Napi::Value open(const Napi::CallbackInfo& info) { \ Napi::Value open(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
this->instance->open(); \ this->instance->open(); \
return env.Null(); \ return env.Null(); \
} \ } \
Napi::Value reject(const Napi::CallbackInfo& info) { \ Napi::Value reject(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
this->instance->reject(); \ this->instance->reject(); \
return env.Null(); \ return env.Null(); \
} }
#endif #endif
#ifndef QDIALOG_WRAPPED_METHODS_DECLARATION
#define QDIALOG_WRAPPED_METHODS_DECLARATION \
QDIALOG_WRAPPED_METHODS_DECLARATION_NO_ACCEPT_OR_DONE \
Napi::Value accept(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
this->instance->accept(); \
return env.Null(); \
} \
Napi::Value done(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
int r = info[0].As<Napi::Number>().Int32Value(); \
this->instance->done(r); \
return env.Null(); \
}
#endif
#ifndef QDIALOG_WRAPPED_METHODS_EXPORT_DEFINE #ifndef QDIALOG_WRAPPED_METHODS_EXPORT_DEFINE
#define QDIALOG_WRAPPED_METHODS_EXPORT_DEFINE(DialogWrapName) \ #define QDIALOG_WRAPPED_METHODS_EXPORT_DEFINE(DialogWrapName) \
\ \
@ -70,9 +59,7 @@
InstanceMethod("setResult", &DialogWrapName::setResult), \ InstanceMethod("setResult", &DialogWrapName::setResult), \
InstanceMethod("exec", &DialogWrapName::exec), \ InstanceMethod("exec", &DialogWrapName::exec), \
InstanceMethod("open", &DialogWrapName::open), \ InstanceMethod("open", &DialogWrapName::open), \
InstanceMethod("reject", &DialogWrapName::reject), \ InstanceMethod("reject", &DialogWrapName::reject),
InstanceMethod("accept", &DialogWrapName::accept), \
InstanceMethod("done", &DialogWrapName::done),
#endif // QDIALOG_WRAPPED_METHODS_EXPORT_DEFINE #endif // QDIALOG_WRAPPED_METHODS_EXPORT_DEFINE

View File

@ -11,13 +11,13 @@
class DLL_EXPORT QDialogWrap : public Napi::ObjectWrap<QDialogWrap> { class DLL_EXPORT QDialogWrap : public Napi::ObjectWrap<QDialogWrap> {
QDIALOG_WRAPPED_METHODS_DECLARATION QDIALOG_WRAPPED_METHODS_DECLARATION
private: private:
QPointer<QDialog> instance; QPointer<NDialog> instance;
public: public:
static Napi::Object init(Napi::Env env, Napi::Object exports); static Napi::Object init(Napi::Env env, Napi::Object exports);
QDialogWrap(const Napi::CallbackInfo& info); QDialogWrap(const Napi::CallbackInfo& info);
~QDialogWrap(); ~QDialogWrap();
QDialog* getInternalInstance(); NDialog* getInternalInstance();
// class constructor // class constructor
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;
// wrapped methods // wrapped methods

View File

@ -14,7 +14,7 @@ class DLL_EXPORT NDoubleSpinBox : public QDoubleSpinBox, public NodeWidget {
using QDoubleSpinBox::QDoubleSpinBox; // inherit all constructors of using QDoubleSpinBox::QDoubleSpinBox; // inherit all constructors of
// QDoubleSpinBox // QDoubleSpinBox
virtual void connectSignalsToEventEmitter() { void connectSignalsToEventEmitter() {
QABSTRACTSPINBOX_SIGNALS QABSTRACTSPINBOX_SIGNALS
// Qt Connects: Implement all signal connects here // Qt Connects: Implement all signal connects here
QObject::connect( QObject::connect(

View File

@ -12,13 +12,13 @@ class DLL_EXPORT QDoubleSpinBoxWrap
: public Napi::ObjectWrap<QDoubleSpinBoxWrap> { : public Napi::ObjectWrap<QDoubleSpinBoxWrap> {
QABSTRACTSPINBOX_WRAPPED_METHODS_DECLARATION QABSTRACTSPINBOX_WRAPPED_METHODS_DECLARATION
private: private:
QPointer<QDoubleSpinBox> instance; QPointer<NDoubleSpinBox> instance;
public: public:
static Napi::Object init(Napi::Env env, Napi::Object exports); static Napi::Object init(Napi::Env env, Napi::Object exports);
QDoubleSpinBoxWrap(const Napi::CallbackInfo& info); QDoubleSpinBoxWrap(const Napi::CallbackInfo& info);
~QDoubleSpinBoxWrap(); ~QDoubleSpinBoxWrap();
QDoubleSpinBox* getInternalInstance(); NDoubleSpinBox* getInternalInstance();
// class constructor // class constructor
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;
// wrapped methods // wrapped methods

View File

@ -13,7 +13,7 @@ class DLL_EXPORT NErrorMessage : public QErrorMessage, public NodeWidget {
public: public:
using QErrorMessage::QErrorMessage; using QErrorMessage::QErrorMessage;
virtual void connectSignalsToEventEmitter() { void connectSignalsToEventEmitter() {
QDIALOG_SIGNALS QDIALOG_SIGNALS
// Qt Connects: Implement all signal connects here // Qt Connects: Implement all signal connects here
} }

View File

@ -10,19 +10,17 @@
class DLL_EXPORT QErrorMessageWrap class DLL_EXPORT QErrorMessageWrap
: public Napi::ObjectWrap<QErrorMessageWrap> { : public Napi::ObjectWrap<QErrorMessageWrap> {
QDIALOG_WRAPPED_METHODS_DECLARATION_NO_ACCEPT_OR_DONE QDIALOG_WRAPPED_METHODS_DECLARATION
private: private:
QPointer<QErrorMessage> instance; QPointer<NErrorMessage> instance;
public: public:
static Napi::Object init(Napi::Env env, Napi::Object exports); static Napi::Object init(Napi::Env env, Napi::Object exports);
QErrorMessageWrap(const Napi::CallbackInfo& info); QErrorMessageWrap(const Napi::CallbackInfo& info);
~QErrorMessageWrap(); ~QErrorMessageWrap();
QErrorMessage* getInternalInstance(); NErrorMessage* getInternalInstance();
// class constructor // class constructor
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;
// wrapped methods // wrapped methods
Napi::Value showMessage(const Napi::CallbackInfo& info); Napi::Value showMessage(const Napi::CallbackInfo& info);
Napi::Value accept(const Napi::CallbackInfo& info);
Napi::Value done(const Napi::CallbackInfo& info);
}; };

View File

@ -12,7 +12,7 @@ class DLL_EXPORT NFileDialog : public QFileDialog, public NodeWidget {
NODEWIDGET_IMPLEMENTATIONS(QFileDialog) NODEWIDGET_IMPLEMENTATIONS(QFileDialog)
using QFileDialog::QFileDialog; using QFileDialog::QFileDialog;
virtual void connectSignalsToEventEmitter() { void connectSignalsToEventEmitter() {
QDIALOG_SIGNALS QDIALOG_SIGNALS
// Qt Connects: Implement all signal connects here // Qt Connects: Implement all signal connects here
QObject::connect( QObject::connect(

View File

@ -9,15 +9,15 @@
#include "QtWidgets/QFileDialog/nfiledialog.hpp" #include "QtWidgets/QFileDialog/nfiledialog.hpp"
class DLL_EXPORT QFileDialogWrap : public Napi::ObjectWrap<QFileDialogWrap> { class DLL_EXPORT QFileDialogWrap : public Napi::ObjectWrap<QFileDialogWrap> {
QDIALOG_WRAPPED_METHODS_DECLARATION_NO_ACCEPT_OR_DONE QDIALOG_WRAPPED_METHODS_DECLARATION
private: private:
QPointer<QFileDialog> instance; QPointer<NFileDialog> instance;
public: public:
static Napi::Object init(Napi::Env env, Napi::Object exports); static Napi::Object init(Napi::Env env, Napi::Object exports);
QFileDialogWrap(const Napi::CallbackInfo& info); QFileDialogWrap(const Napi::CallbackInfo& info);
~QFileDialogWrap(); ~QFileDialogWrap();
QFileDialog* getInternalInstance(); NFileDialog* getInternalInstance();
// class constructor // class constructor
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;
// wrapped methods // wrapped methods
@ -28,6 +28,4 @@ class DLL_EXPORT QFileDialogWrap : public Napi::ObjectWrap<QFileDialogWrap> {
Napi::Value setOption(const Napi::CallbackInfo& info); Napi::Value setOption(const Napi::CallbackInfo& info);
Napi::Value setNameFilter(const Napi::CallbackInfo& info); Napi::Value setNameFilter(const Napi::CallbackInfo& info);
Napi::Value selectedFiles(const Napi::CallbackInfo& info); Napi::Value selectedFiles(const Napi::CallbackInfo& info);
Napi::Value accept(const Napi::CallbackInfo& info);
Napi::Value done(const Napi::CallbackInfo& info);
}; };

View File

@ -14,7 +14,7 @@ class DLL_EXPORT NFontDialog : public QFontDialog, public NodeWidget {
public: public:
using QFontDialog::QFontDialog; using QFontDialog::QFontDialog;
virtual void connectSignalsToEventEmitter() { void connectSignalsToEventEmitter() {
QDIALOG_SIGNALS QDIALOG_SIGNALS
// Qt Connects: Implement all signal connects here // Qt Connects: Implement all signal connects here
QObject::connect( QObject::connect(

Some files were not shown because too many files have changed in this diff Show More