Compare commits

...

191 Commits

Author SHA1 Message Date
Simon Edwards
f41edc2ea4 Bump the version 2023-03-07 22:48:15 +01:00
Simon Edwards
30ab4442cf
Merge pull request #999 from nodegui/input_methods
Add Input Method classes and support
2023-03-07 21:50:32 +01:00
Simon Edwards
90e556be6e Code formatting 2023-03-06 20:02:23 +01:00
Simon Edwards
e9ff6a93fb Improve docs for QInputMethodQueryEvent; extract nativeObjectFromVariantType() 2023-03-06 20:01:35 +01:00
Simon Edwards
5879ad7ec4 Use better types inside QInputMethodQueryEvent binding 2023-03-05 16:49:43 +01:00
Simon Edwards
731d186b01 Add QWidget.updateMicroFocus() method 2023-03-05 16:49:37 +01:00
Simon Edwards
47d98500cf Add Input Method classes and support 2023-03-04 10:29:55 +01:00
Simon Edwards
2561fd92f9 Prepare for release 2023-02-16 18:57:43 +01:00
Simon Edwards
9129cdef0d Remove useless app wide setting 2023-02-16 18:57:43 +01:00
Simon Edwards
613ee337aa
Merge pull request #996 from NathanaelA/addTableFeatures
Added clearSelection, selectAll, scrollToBottom, scrollToTop to QTableWidget
2023-02-14 22:31:53 +01:00
Nathanael Anderson
bd6595e40a Added clearSelection, selectAll, scrollToBottom, scrollToTop to QTableWidget 2023-02-14 14:13:36 -06:00
Simon Edwards
d827e51ba4 Bump the version 2023-01-24 22:39:27 +01:00
Simon Edwards
77fd5c5a3f Fix RPATH of the binary module on macos 2023-01-24 22:38:56 +01:00
Simon Edwards
a2e5b73107 Bump version 2023-01-14 11:00:08 +01:00
Simon Edwards
4e42f61faa Add applicationDisplayNameChanged & lastWindowClosed signals to QApplication 2023-01-14 10:59:27 +01:00
Simon Edwards
3a04d14872 Bump the version 2023-01-02 19:33:47 +01:00
Simon Edwards
e18e912d11
Merge pull request #984 from nodegui/qpainter_hidpi
QPainter HiDPI + QWidget methods
2023-01-02 18:41:03 +01:00
Simon Edwards
15478751db Add more QPaintDevice methods to QWidget 2022-12-31 13:54:22 +01:00
Simon Edwards
d715a4299d Add floating point versions of QPainter methods 2022-12-31 13:53:30 +01:00
Simon Edwards
09d450aef4 Attempt 2 at fixing Ubuntu GH workflow 2022-12-28 21:59:18 +01:00
Simon Edwards
e5fd79e4c1 Add OpenGL to Ubuntu GH workflow 2022-12-28 21:55:42 +01:00
Simon Edwards
86fc6689fb Bump the version to 0.58.0-rc1 2022-12-28 21:48:43 +01:00
Simon Edwards
d6ba15df55
Merge pull request #981 from nodegui/qt6
Upgrade to Qt 6.4.1
2022-12-28 21:45:24 +01:00
Simon Edwards
86e9447dd0 Fix the qt home path on the macos build 2022-12-27 11:29:25 +01:00
Simon Edwards
29e919caad Update the jest & friends dependencies 2022-12-26 13:30:48 +01:00
Simon Edwards
88e5149a9f Make eslint command invocation Windows compatible 2022-12-26 13:21:52 +01:00
Simon Edwards
33c0b24731 C++ code lint fixes 2022-12-26 13:20:35 +01:00
Simon Edwards
d4c443607e Make everything use npm and not a mix of tools 2022-12-26 13:08:46 +01:00
Simon Edwards
6422d7faca Give Linux build libEGL 2022-12-26 12:44:57 +01:00
Simon Edwards
1468612a78 Upgrade Ubuntu in CI/CD to 20.04; 18.04 is deprecated 2022-12-26 12:12:16 +01:00
Simon Edwards
bbb0951525 Upgrade to Qt 6.4.1 2022-12-26 11:54:47 +01:00
Simon Edwards
47083b4a86 Bump the version 2022-12-02 17:01:39 +01:00
Simon Edwards
5a51e2748b Also emit the event object after default processing 2022-12-02 17:01:01 +01:00
Atul R
93dbf25938 0.57.2 2022-11-17 20:02:40 +01:00
zecktos
898c7f58c9
fix for linux not finding miniQt (#979)
adding miniQt to the LD_LIBRARY_PATH environment variable fixes the problem with linux not using miniQT when bundled with webpack like in the nodegui-starter template. this fixes https://github.com/nodegui/nodegui-starter/issues/229 fixes https://github.com/nodegui/nodegui/issues/972
2022-11-17 20:02:04 +01:00
Atul R
b7d503fd39
fix breaking build on macos (#970)
* fix breaking build on macos

* 0.57.1

* fix tests
2022-09-04 00:14:10 +02:00
Simon Edwards
95da509b83 Remove unneeded cross-env 2022-08-22 21:30:15 +02:00
Simon Edwards
34c8f511d9 Bump the version 2022-08-16 10:01:32 +02:00
Simon Edwards
3f0d00c83c Add windowStateChanged signal to QWindow 2022-08-16 09:53:36 +02:00
Simon Edwards
79433a5c83 Add horizontalScrollBar() & verticalScrollBar() to QAbstractScrollArea 2022-08-07 23:20:17 +02:00
Simon Edwards
abc1d2cf64 Add many methods to QSize and QSizeF 2022-07-17 09:51:16 +02:00
Simon Edwards
f7c4d5dfae Code formatting for QIcon 2022-07-17 09:25:16 +02:00
Simon Edwards
2305b7072b Bump the version 2022-07-16 09:59:11 +02:00
Simon Edwards
643eff4a90 Update the Getting Started guide 2022-07-04 21:49:37 +02:00
Simon Edwards
e2e06ca027 Fill in most QIcon methods 2022-07-04 21:28:30 +02:00
Simon Edwards
a7df290d58 Update the @nodegui/qode version 2022-07-01 21:42:03 +02:00
Simon Edwards
123524d126 Add done() and accept() to QDialog and subclasses as much as possible
issue #708
2022-06-19 11:05:51 +02:00
Simon Edwards
28b98b055a Bump the version 2022-06-18 20:49:35 +02:00
Simon Edwards
76743cd414 Add sizeHintForIndex() and visualRect() to QAbstractItemView 2022-06-18 20:48:24 +02:00
Simon Edwards
9fcc5e99d3 Add QAbstractItemDelegate to support plugins 2022-06-06 12:25:07 +02:00
Simon Edwards
4a55d9ec45 Tweak some return types in QMainWindow 2022-05-28 10:58:40 +02:00
Simon Edwards
7d690dc75d Bump the version 2022-05-27 20:19:06 +02:00
Simon Edwards
2ece6d5375
Merge pull request #947 from nodegui/qevent_control
Expand event support to grab QEvents after default processing
2022-05-27 18:05:39 +02:00
Simon Edwards
421929c147 Add "Advanced QEvent Handling" guide to the website sidebar 2022-05-26 12:02:07 +02:00
Simon Edwards
755156c19a Add a Guide about advanced QEvent handling 2022-05-26 11:44:02 +02:00
Simon Edwards
43deec1c9e Expand event support to grab QEvents after default processing 2022-05-26 09:44:34 +02:00
Simon Edwards
e20517430e Mention QBoxLayout in the layout guide 2022-05-26 09:31:35 +02:00
Simon Edwards
16940eca53 Add "Understanding Memory" guide to the website sidebar 2022-05-26 09:27:18 +02:00
Simon Edwards
37d000ee44 Add QWidget methods setFocusProxy(), isAncestorOf(), isEnabledTo(), isVisibleTo(), & stackUnder() 2022-05-25 22:33:33 +02:00
Simon Edwards
0db724d40c Add more QWidget methods 2022-05-23 22:02:08 +02:00
Simon Edwards
1da7ae6de3 Bump the version 2022-05-23 18:43:39 +02:00
Simon Edwards
1b3478e0cb
Merge pull request #936 from nodegui/memory
Improve memory management
2022-05-23 18:38:31 +02:00
Simon Edwards
11bf45466d Export wrapperCache in index.ts too 2022-05-21 19:54:12 +02:00
Simon Edwards
b36caeddd2 Add documentation about dealing with memory 2022-05-21 12:47:46 +02:00
Simon Edwards
f606ebdd72 Add _id() to QObject for debugging purposes 2022-05-20 16:31:56 +02:00
Simon Edwards
0f9ad1e028 Add logging/debugging controls for the wrapper lifecycle 2022-05-20 15:25:18 +02:00
Simon Edwards
fcdbfb07c3 Merge branch 'master' into memory 2022-05-19 20:04:52 +02:00
Simon Edwards
06637c6c0f Bump the version 2022-05-19 19:49:57 +02:00
Simon Edwards
c28fd5d5c3 Add QLabel.buddy() 2022-05-19 19:48:23 +02:00
Jake Kerr
d450841001
Expose the QWidget::grab method to script. (#941)
Reference from qt base:
https://code.qt.io/cgit/qt/qtbase.git/tree/src/widgets/kernel/qwidget.cpp#n5247
2022-05-19 18:03:48 +02:00
Simon Edwards
5191892950 Less caching in QMainWindow 2022-05-12 20:49:17 +02:00
Simon Edwards
bfa531f1f4 Massive TS wrapper update 2022-05-11 22:30:42 +02:00
Simon Edwards
6aa3f00fa3 Massive C++ wrapper update 2022-05-09 22:12:52 +02:00
Simon Edwards
f3d7d73acc Add QObject.children() 2022-05-05 19:25:01 +02:00
Simon Edwards
880ea7c998 Add QObject.parent() and infra for correct subclass wrappers 2022-05-05 17:10:40 +02:00
Simon Edwards
bc9bf12e11 Refine the wrapper type registration 2022-05-01 20:23:21 +02:00
Simon Edwards
02f901ddf1 Add QObject.delete() and QObject.deleteLater(), and test QObject deletion 2022-05-01 20:02:02 +02:00
Simon Edwards
cbb3f99dfa Add QObject.parent() and a heap of wrapper management 2022-05-01 11:08:37 +02:00
Simon Edwards
7bf97ef618 Eliminate one template param on WrapperCache::get() 2022-04-30 20:00:03 +02:00
Simon Edwards
1d92cc8f3e Use uint keys inside the C++ wrapper cache 2022-04-30 19:21:20 +02:00
Simon Edwards
9faf63d5d3 Rename QAbstractItemModel.parent() to parentModelIndex()
The signature on `QAbstractItemModel.parent()` conflicts with
`QObject.parent()`. Maybe in C++ you can get away with that,
but in TS it is a huge PITA.
2022-04-30 09:42:18 +02:00
Simon Edwards
7dcbc32540 Remove NodeHeaderView, use QHeaderView 2022-04-29 20:35:00 +02:00
Simon Edwards
387555f3c0 Remove NodeTableView, use QTableView 2022-04-29 20:31:44 +02:00
Simon Edwards
10ebd00cde Remove NodeListView, use QListView 2022-04-29 20:29:29 +02:00
Simon Edwards
fda93e9dd5 Remove NodeTextEdit, use QTextEdit 2022-04-29 20:23:30 +02:00
Simon Edwards
23759b1aaa Remove NodeDialog, use QDialog instead 2022-04-29 20:10:27 +02:00
Simon Edwards
165bb820bc Remove NodeDateTimeEdit, use QDateTimeEdit 2022-04-29 20:05:21 +02:00
Simon Edwards
83e9c09690 Remove NodeLayout, use QLayout instead 2022-04-29 19:55:13 +02:00
Simon Edwards
b7476a4ea1 Remove NodeFrame, use QFrame instead 2022-04-29 19:43:39 +02:00
Simon Edwards
38b12759c6 Remove NodeWidget, just use QWidget 2022-04-29 19:36:46 +02:00
Simon Edwards
c6d30f8f9f Combine NodeObject+QObject; put native field in Component 2022-04-29 13:30:39 +02:00
Simon Edwards
4f40510248 Document and design the case of object creation 2022-04-28 21:18:16 +02:00
Simon Edwards
c733a41d10 Add design documentation for improved memory management 2022-04-28 11:43:27 +02:00
Simon Edwards
81c31f4de3 Fix some uninitialise memory access reported by Valgrind 2022-04-27 10:04:14 +02:00
Simon Edwards
ac1c118ae3 Add QTimerEvent and QObject.startTimer() and QObject.killTimer() 2022-04-19 19:37:26 +02:00
Simon Edwards
7d2dfc1cf2 Add QScreen.grabWindow()
issue #933
2022-04-18 17:43:11 +02:00
Simon Edwards
0c2cf50362 Force the latest bug fix release of qode 2022-04-17 21:23:30 +02:00
Simon Edwards
a485be9c1e Bump the version 2022-04-16 21:51:34 +02:00
Simon Edwards
e2ccec9ba3 Make it possible to set stylesheets and bypass postcss
Sometimes the extra CSS properties produced by postcss are applied to the
normal QWidgets which are not subclassed with the Yoga stuff included.
This produces nasty warnings, regardless of whether you are using Yoga/flex
or not.
2022-04-16 21:49:33 +02:00
Simon Edwards
7d8fb77481 Make QTabBar.setTabButton() accept null 2022-04-16 21:49:08 +02:00
Simon Edwards
4c5ccadfc7 Bump version 2022-04-08 15:52:08 +02:00
Simon Edwards
69d0e2e3cd Add visibility related methods/event to QWindow 2022-04-06 19:31:04 +02:00
Simon Edwards
733c24e6cd Add QMoveEvent 2022-04-05 20:48:21 +02:00
Simon Edwards
4155a1f586 Bump the version 2022-03-12 10:57:20 +01:00
Simon Edwards
34ce565bb8 Fill in most of the QLineEdit methods 2022-03-12 10:56:46 +01:00
Simon Edwards
d805c7c66d Bump the version 2022-03-05 09:32:24 +01:00
Simon Edwards
3291216bbb Fill in more values for QStylePixelMetric 2022-03-02 19:18:37 +01:00
Simon Edwards
eb6754fe8a Fix the default alignment in QGridLayout.addWidget() and QGridLayout.addLayout() 2022-02-13 10:16:58 +01:00
Simon Edwards
b4c9c0d51b Add QWidget.mapTo() and QWidget.mapFrom() 2022-02-12 11:43:51 +01:00
Simon Edwards
8058433031 Bump the version 2022-02-09 19:42:18 +01:00
Simon Edwards
c877a2814e Make QWindow fire QEvents as events; add "window state" methods 2022-02-08 22:19:40 +01:00
Simon Edwards
2865212937 Add QWidget.winId(), useful for forcing window creation 2022-02-06 19:09:27 +01:00
Simon Edwards
ed7da32952 Add alignment parma support to QGridLayout.addWidget() 2022-02-04 16:04:47 +01:00
Simon Edwards
a0b53f2e0c Add some windowing related methods to QWindow 2022-02-04 15:47:31 +01:00
Simon Edwards
714bdcbdbb
Upgrade to Qt 5.15.2 (#915) 2022-02-04 15:42:09 +01:00
Simon Edwards
a2fd884543 Make QLineEdit.setText() accept an empty string 2022-01-23 12:05:31 +01:00
Simon Edwards
93c6c121f6 Bump the version 2022-01-02 20:21:54 +01:00
Simon Edwards
dab7eee4ad Detect Linux correclty in CMakeLists.txt 2022-01-02 20:21:26 +01:00
Simon Edwards
f90ae67864 Bump the version 2022-01-02 11:40:34 +01:00
Simon Edwards
ddb560abbf Fix the 'unique identifier' problem in the GH Action now 2022-01-02 11:39:59 +01:00
Simon Edwards
5de4210cfb Bump the version 2022-01-02 11:33:50 +01:00
Simon Edwards
daf730efd5 Fix the GH action file 2022-01-02 11:33:21 +01:00
Simon Edwards
c61c9c085d Bump the version 2022-01-02 11:22:26 +01:00
Simon Edwards
e0dfc94363 Include the *.lib and *.exp binaries for precompiled Windows
These files are needed by binary plugins which link against the NodeGui binary.
2022-01-02 11:21:09 +01:00
Simon Edwards
9b451ecac3 Bump version 2022-01-01 20:17:38 +01:00
Simon Edwards
26736d06c8
Download prebuilt binary files at npm install time (#906)
Download prebuilt binary files at `npm install` time

issue #904
2022-01-01 19:18:45 +01:00
Simon Edwards
01d3c03fb2 Fix tarball filename problems in release GH Action
issue #904
2021-12-28 17:05:25 +01:00
Simon Edwards
b783bbe6d6 Bump version 2021-12-28 16:26:49 +01:00
Simon Edwards
640c77dd56 Fix ARCHIVE_FILENAME env var use in release.xml
issue #904
2021-12-28 16:25:50 +01:00
Simon Edwards
b6ae8ad1cc Bump version for test release 2021-12-28 16:01:50 +01:00
Simon Edwards
c5e2485e0e Move precompile action into the release GH Action
issue #904
2021-12-28 15:48:03 +01:00
Simon Edwards
de2ce99fdd Add GH Action to create and upload binaries for releases
issue #904
2021-12-28 15:48:03 +01:00
Simon Edwards
0867b96302 Bump version 2021-12-27 13:41:15 +01:00
Simon Edwards
78895a002f Fix QWidget.setEnable()/setDisable() 2021-12-27 13:34:29 +01:00
Simon Edwards
9f9e61289b More QWidget methods and properties 2021-12-26 18:53:49 +01:00
Simon Edwards
69dea9c4c8 Bump the version to 0.43.0 2021-12-11 18:25:08 +01:00
Simon Edwards
94ce790891 Apply code formatting 2021-12-11 15:31:43 +01:00
Simon Edwards
21ed97037a Add QResizeEvent class 2021-12-11 15:31:43 +01:00
Simon Edwards
1ab7d13b96 Add QWidget.setFixedHeight(), QWidget.setFixedWidth(), and QWidget.sizeHint() 2021-12-11 15:31:43 +01:00
Simon Edwards
47b3d514bb Add QWidget.setParent() 2021-12-11 15:31:43 +01:00
Simon Edwards
e653c3ad1d Bump the version to 0.42.0 2021-12-05 09:58:42 +01:00
Simon Edwards
0e33e39759
Remove most unneeded or buggy Napi:HandleScope uses (#895) 2021-12-03 19:02:06 +01:00
Simon Edwards
d11ed993ee
Add signal support to QClipboard (#894)
* Add signal support to `QClipboard`

issue ##713
2021-12-02 20:33:46 +01:00
Simon Edwards
8d4a7f2d00
Merge pull request #886 from nodegui/qscreen_qwindow
Add `QScreen` and `QWindow`, remove the deprecated `QDesktopWidget`
2021-11-26 18:35:17 +01:00
Simon Edwards
06528cdd67 Merge branch 'master' into qscreen_qwindow 2021-11-13 11:39:04 +01:00
Simon Edwards
0d71db9b24 Bump the version to 0.41.0 2021-11-13 11:07:26 +01:00
Simon Edwards
05a5fdd539 Apply code formatting 2021-11-07 21:38:26 +01:00
Andreas Kröhnke
b35f386e46 Add QSplitter 2021-11-07 21:34:38 +01:00
Andrew Wong
59a4f4abb4 Update packaging.md 2021-11-07 21:33:28 +01:00
Simon Edwards
7ae4a5cb7e Wrap some native objects during event dispatch 2021-11-06 20:41:04 +01:00
Simon Edwards
2dc8319b50 Add some tests for the wrapper cache 2021-11-05 21:10:01 +01:00
Simon Edwards
eea4f6fe30 Merge branch 'master' into qscreen_qwindow 2021-11-04 20:47:52 +01:00
Simon Edwards
c44d40b2e5 Fix import weirdness which caused the tests to fail 2021-11-04 20:24:06 +01:00
Simon Edwards
88b2fcbcd1 Treat args to QPainter.translate(), scale(), and rotate() as doubles, not ints
issue #887
2021-11-03 21:21:58 +01:00
Simon Edwards
f7f86d5cfa Pass env to WrapperCache::get() 2021-10-31 17:02:43 +01:00
Simon Edwards
2b2d2a65b2 Make the wrapper cache generic. Apply it to QWindow and QScreen 2021-10-31 09:32:37 +01:00
Simon Edwards
123123605c Make the wrapper cache callback work 2021-10-27 12:20:49 +02:00
Simon Edwards
710cfa3d31 Add wrapper caching. Try it on QScreen. 2021-10-27 10:46:12 +02:00
Simon Edwards
05c690dcd9 Fill in more screen and DPI support in QApplication 2021-10-24 11:19:05 +02:00
Simon Edwards
fa52c674ef Support addEventListener() when the wrapper handles signals 2021-10-23 18:51:17 +02:00
Simon Edwards
8ce6dde45b Add QScreen and QWindow, remove the deprecated QDesktopWidget 2021-10-22 22:15:59 +02:00
Simon Edwards
bfd45b3a54 Add QScreen and QWindow, remove the deprecated QDesktopWidget 2021-10-22 22:13:17 +02:00
Simon Edwards
8ddc4172cd Add more QWidget methods 2021-10-16 16:43:24 +02:00
Simon Edwards
81eeaa3a20 Don't delete QObjects which have a parent
Qt's memory management is built around trees of objects where deleting the root object also deletes the whole tree. Objects with a parent are owned by that parent.
2021-10-16 14:16:34 +02:00
Andreas Kröhnke
47c00fabc1 Add QBrush as an argument to QPainter.setBrush 2021-10-14 20:15:03 +02:00
Simon Edwards
3bbb7da6e7 Bump the version 2021-10-03 22:02:33 +02:00
Simon Edwards
c4d9a93e56 Add many TODO comments, methods, and signals to QComboBox 2021-09-29 21:48:56 +02:00
Simon Edwards
f92bd65407 Bump the version for a bug fix 2021-09-24 20:22:08 +02:00
Simon Edwards
c91856641c Fix QPen being completely broken 2021-09-24 20:21:36 +02:00
Simon Edwards
3479606f83 Put the build time concurrency back on 8 (where it belongs) 2021-09-23 21:50:34 +02:00
Simon Edwards
797835ad79 Bump the version 2021-09-23 21:27:11 +02:00
Simon Edwards
96b3cbe594 Add more QPainter methods 2021-09-23 20:52:23 +02:00
Simon Edwards
3ada99b201 Add TODO comments to QPainter.ts 2021-09-23 20:26:00 +02:00
Simon Edwards
bd6b127358 Add QSizeF and QFontMetricsF 2021-09-20 21:45:14 +02:00
Simon Edwards
481062423e Build code on install, not postinstall 2021-09-18 21:00:02 +02:00
Simon Edwards
328dcea8c8 Remove some dead code in qstyle_wrap.cpp 2021-09-18 10:43:25 +02:00
Nathanael Anderson
f8ed7d3a78 Update Process.md
Delete invalid documentation, as these two values are no longer valid in the later versions of Qode.    There does NOT appear to be a current way to get the currently running QT.
2021-09-18 10:11:24 +02:00
milahu
12d79a62da move to deps 2021-09-18 10:06:15 +02:00
milahu
c7b2e4c8b7 add postcss to devDependencies 2021-09-18 10:06:15 +02:00
Simon Edwards
91d652ed84 Bump our version 2021-09-18 10:02:45 +02:00
Simon Edwards
590385339c Add QStyle.polish(), QStyle.unpolish(), and QWidget.style() 2021-09-13 19:50:53 +02:00
Simon Edwards
44bb1e5f0e QWidget: Add TODO comments, setSizePolicy(), set max/min width/height methods 2021-09-11 12:14:43 +02:00
Simon Edwards
a4a961666a Fill in QFontMetrics methods 2021-09-07 22:46:27 +02:00
Simon Edwards
7af718b834 Add count() to QStackedWidget 2021-09-07 20:32:50 +02:00
Simon Edwards
8060a631b1 Add dumpObjectTree() & dumpObjectTree() to QObject 2021-09-07 20:32:09 +02:00
Simon Edwards
01096abede Fill in the QHeaderView methods 2021-09-02 21:33:09 +02:00
Simon Edwards
8110982412 Format C++ code 2021-09-02 19:15:51 +02:00
Nathanael Anderson
4429959fed Fix QWidgetTableItem Wrapper 2021-09-02 19:10:35 +02:00
Simon Edwards
920e64404d Bump the library version 2021-08-31 19:52:51 +02:00
Simon Edwards
87af1db2bc Fix up QHeaderView failing on the default nodejs MS compiler 2021-08-31 18:30:31 +02:00
Simon Edwards
391971f80b Fix QTableView.verticalHeader() and return the correct header 2021-08-30 19:24:38 +02:00
403 changed files with 22440 additions and 10061 deletions

View File

@ -7,17 +7,20 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
os: [ubuntu-18.04] os: [ubuntu-20.04]
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- uses: actions/setup-node@v2 - uses: actions/setup-node@v2
with: with:
node-version: '16.x' 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 - name: Install deps
run: yarn install --ignore-scripts run: npm install
- name: Build nodegui - name: Build nodegui
run: npx tsc run: npm run build
- 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
@ -30,11 +33,11 @@ jobs:
code: v0.0.0-latest-master code: v0.0.0-latest-master
name: Latest Master Release name: Latest Master Release
body: > body: >
Latest auto release corresponding to commit ${{github.sha}} 🔥. Latest auto release corresponding to commit ${{github.sha}} 🔥.
To install do: To install do:
`yarn 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`
or or
`yarn install http://master-release.nodegui.org` `npm install http://master-release.nodegui.org`
assets: > assets: >
nodegui-nodegui-0.0.0-latest-master.tgz:nodegui-master.tgz:application/tar+gzip nodegui-nodegui-0.0.0-latest-master.tgz:nodegui-master.tgz:application/tar+gzip
recreate: true recreate: true

View File

@ -5,7 +5,80 @@ on:
types: [published] types: [published]
jobs: 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: publish-npm-package:
needs: precompile
if: contains(github.event.release.tag_name, 'v0.0.0-latest-master') == false if: contains(github.event.release.tag_name, 'v0.0.0-latest-master') == false
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
@ -16,7 +89,7 @@ jobs:
- name: Install ubuntu deps - name: Install ubuntu deps
run: sudo apt update run: sudo apt update
- run: sudo apt install mesa-common-dev libglu1-mesa-dev - run: sudo apt install mesa-common-dev libglu1-mesa-dev
- run: yarn install - run: npm install
- run: echo '//registry.npmjs.org/:_authToken=${NPM_TOKEN}' >> .npmrc - run: echo '//registry.npmjs.org/:_authToken=${NPM_TOKEN}' >> .npmrc
- run: npm publish --access=public - run: npm publish --access=public
env: env:

View File

@ -6,7 +6,7 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
os: [ubuntu-18.04, windows-latest, macos-latest] os: [ubuntu-20.04, windows-latest, macos-latest]
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
@ -14,10 +14,10 @@ jobs:
with: with:
node-version: '16.x' node-version: '16.x'
- name: Install ubuntu deps - name: Install ubuntu deps
if: contains(matrix.os, 'ubuntu') if: contains(matrix.os, 'ubuntu-20.04')
run: sudo apt install mesa-common-dev libglu1-mesa-dev run: sudo apt install mesa-common-dev libglu1-mesa-dev libegl1 libopengl-dev
- name: Install deps - name: Install deps
run: yarn install run: npm install
- name: Build nodegui - name: Build nodegui
run: npm run build run: npm run build
env: env:

View File

@ -11,6 +11,10 @@ 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"
@ -24,6 +28,8 @@ 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"
@ -46,15 +52,21 @@ 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/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"
@ -64,7 +76,9 @@ add_library(${CORE_WIDGETS_ADDON} SHARED
"${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/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/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"
@ -73,6 +87,7 @@ add_library(${CORE_WIDGETS_ADDON} SHARED
"${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"
@ -145,8 +160,9 @@ 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/QDesktopWidget/qdesktopwidget_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtWidgets/QStyleFactory/qstylefactory_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtWidgets/QStyleFactory/qstylefactory_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/QAbstractItemModel/nabstractitemmodel.hpp"
"${PROJECT_SOURCE_DIR}/src/cpp/include/nodegui/QtCore/QItemSelectionModel/nitemselectionmodel.hpp" "${PROJECT_SOURCE_DIR}/src/cpp/include/nodegui/QtCore/QItemSelectionModel/nitemselectionmodel.hpp"
@ -211,8 +227,13 @@ 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/QDesktopWidget/nqdesktopwidget.hpp"
"${PROJECT_SOURCE_DIR}/src/cpp/include/nodegui/QtWidgets/QHeaderView/nheaderview.hpp" "${PROJECT_SOURCE_DIR}/src/cpp/include/nodegui/QtWidgets/QHeaderView/nheaderview.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})
@ -236,13 +257,27 @@ if (WIN32)
ENABLE_DLL_EXPORT=1 ENABLE_DLL_EXPORT=1
) )
target_compile_options(${CORE_WIDGETS_ADDON} PRIVATE "/MP") target_compile_options(${CORE_WIDGETS_ADDON} PRIVATE "/MP")
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}"
Qt5::Widgets Qt6::Widgets
Qt5::Core Qt6::Core
Qt5::Gui Qt6::Gui
Qt5::Svg Qt6::Svg
Qt6::SvgWidgets
) )

147
README.md
View File

@ -7,7 +7,7 @@
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 **Qt5** 💚 which makes it CPU and memory efficient as compared to other chromium based solutions like Electron. NodeGUI is powered by **Qt6** 💚 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)**.
@ -57,48 +57,16 @@ 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
NodeGui requires CMake and Compilation Tools as it is a wrapper for a native C++ widget toolkit QT. To install latest stable release:
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
@ -121,7 +89,82 @@ 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.
#### Using your own custom Qt installation (Optional)
## 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/)
- 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).
## 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)
- <audio data-theme="night" data-src="https://changelog.com/jsparty/96/embed" src="https://cdn.changelog.com/uploads/jsparty/96/js-party-96.mp3" preload="none" class="changelog-episode" controls></audio><p><a href="https://changelog.com/jsparty/96">JS Party 96: Performant Node desktop apps with NodeGUI</a> Listen on <a href="https://changelog.com/">Changelog.com</a></p>
## Docs for contributing
```
It is easier than you think, try it
```
Looking to contribute? If you wish to implement a new widget/add more features and need help understanding the codebase, you can start here: [Contributing developer docs](https://github.com/nodegui/nodegui/tree/master/website/docs/development).
Please read https://github.com/nodegui/.github/blob/master/CONTRIBUTING.md
## Building from source
This section is useful for those wanting to work on NodeGui itself.
### 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** **Compiling Qt from source**
@ -160,7 +203,7 @@ 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`. The logs should say something like `CustomQt detected at <your qt path>. Hence, skipping Mini Qt installation`.
**Running example programs** ### 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: A number of small programs to show different parts of the Qt API are in `src/examples`. They can be run directly with:
@ -168,34 +211,6 @@ A number of small programs to show different parts of the Qt API are in `src/exa
npm run qode dist/examples/modelview_1_readonly.js npm run qode dist/examples/modelview_1_readonly.js
``` ```
**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/)
- 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).
**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)
- <audio data-theme="night" data-src="https://changelog.com/jsparty/96/embed" src="https://cdn.changelog.com/uploads/jsparty/96/js-party-96.mp3" preload="none" class="changelog-episode" controls></audio><p><a href="https://changelog.com/jsparty/96">JS Party 96: Performant Node desktop apps with NodeGUI</a> Listen on <a href="https://changelog.com/">Changelog.com</a></p>
## Docs for contributing
```
It is easier than you think, try it
```
Looking to contribute? If you wish to implement a new widget/add more features and need help understanding the codebase, you can start here: [Contributing developer docs](https://github.com/nodegui/nodegui/tree/master/website/docs/development).
Please read https://github.com/nodegui/.github/blob/master/CONTRIBUTING.md
## Building
`npm run build`
Optionally set `QT_INSTALL_DIR='/path/to/qt'` environment variable to build using your own version of Qt.
## Updating docs ## Updating docs
`npm run docs` `npm run docs`

View File

@ -8,7 +8,7 @@ set(CMAKE_AUTOUIC ON)
set(QTCONFIG_FILE ${CMAKE_CURRENT_LIST_DIR}/qtConfig.js) set(QTCONFIG_FILE ${CMAKE_CURRENT_LIST_DIR}/qtConfig.js)
macro(AddQtSupport addonName) macro(AddQtSupport addonName)
execute_process(COMMAND node -p "require('${QTCONFIG_FILE}').qtCmakeDir" execute_process(COMMAND node -p "require('${QTCONFIG_FILE}').qtCmakeDir"
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE QT_CMAKE_HOME_DIR OUTPUT_VARIABLE QT_CMAKE_HOME_DIR
@ -16,10 +16,10 @@ 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}")
set(Qt5_DIR ${QT_CMAKE_HOME_DIR}) message(STATUS "Using Qt installation for ${addonName} QT_CMAKE_HOME_DIR:${QT_CMAKE_HOME_DIR}")
find_package(Qt5 COMPONENTS Widgets Gui Core Svg REQUIRED)
list(APPEND CMAKE_PREFIX_PATH "${QT_CMAKE_HOME_DIR}/../../..")
find_package(Qt6 REQUIRED COMPONENTS Widgets Gui Core Svg SvgWidgets)
endmacro(AddQtSupport addonName) endmacro(AddQtSupport addonName)

View File

@ -3,7 +3,7 @@ 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 = '5.14.1'; const QT_VERSION = '6.4.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) => {
@ -13,60 +13,46 @@ const checkIfExists = (fullPath) => {
function getMiniQtConfig() { function getMiniQtConfig() {
switch (os.platform()) { switch (os.platform()) {
case 'darwin': { case 'darwin': {
if (os.arch() === 'arm64') { const qtHome = path.resolve(SETUP_DIR, QT_VERSION, 'macos');
const qtHome = path.resolve(SETUP_DIR, 'Qt-5.15.3');
return {
qtHome,
artifacts: [
{
name: 'Mini Qt Bundle',
link: `https://github.com/nodegui/nodegui/releases/download/miniQtm1-5153/Qt-5.15.3.zip`,
skipSetup: checkIfExists(path.resolve(qtHome, 'plugins', 'platforms', 'libqcocoa.dylib')),
},
],
};
} else {
const qtHome = path.resolve(SETUP_DIR, QT_VERSION, 'clang_64');
return {
qtHome,
artifacts: [
{
name: 'Qt Base',
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')),
},
{
name: 'Qt Svg',
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')),
},
{
name: 'Qt Tools',
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')),
},
],
};
}
}
case 'win32': {
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/qt5_5141/qt.qt5.5141.win64_msvc2017_64/5.14.1-0-202001240957qtbase-Windows-Windows_10-MSVC2017-Windows-Windows_10-X86_64.7z`, 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`,
skipSetup: checkIfExists(path.resolve(qtHome, 'bin', 'Qt5Core.dll')), skipSetup: checkIfExists(path.resolve(qtHome, 'plugins', 'platforms', 'libqcocoa.dylib')),
}, },
{ {
name: 'Qt SVG', name: 'Qt Svg',
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`, 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`,
skipSetup: checkIfExists(path.resolve(qtHome, 'bin', 'Qt5Svg.dll')), skipSetup: checkIfExists(path.resolve(qtHome, 'lib', 'QtSvg.framework', 'QtSvg')),
}, },
{ {
name: 'Qt Tools', name: 'Qt Tools',
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`, 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`,
skipSetup: checkIfExists(path.resolve(qtHome, 'bin', 'macdeployqt')),
},
],
};
}
case 'win32': {
const qtHome = path.resolve(SETUP_DIR, QT_VERSION, 'msvc2019_64');
return {
qtHome,
artifacts: [
{
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`,
skipSetup: checkIfExists(path.resolve(qtHome, 'bin', 'Qt6Core.dll')),
},
{
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`,
skipSetup: checkIfExists(path.resolve(qtHome, 'bin', 'Qt6Svg.dll')),
},
{
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`,
skipSetup: checkIfExists(path.resolve(qtHome, 'bin', 'windeployqt.exe')), skipSetup: checkIfExists(path.resolve(qtHome, 'bin', 'windeployqt.exe')),
}, },
], ],
@ -79,17 +65,17 @@ function getMiniQtConfig() {
artifacts: [ artifacts: [
{ {
name: 'Qt Base', name: 'Qt Base',
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`, 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`,
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/qt5_5141/qt.qt5.5141.gcc_64/5.14.1-0-202001240953qtsvg-Linux-RHEL_7_6-GCC-Linux-RHEL_7_6-X86_64.7z`, 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`,
skipSetup: checkIfExists(path.resolve(qtHome, 'lib', 'libQt5Svg.so')), skipSetup: checkIfExists(path.resolve(qtHome, 'lib', 'libQt6Svg.so')),
}, },
{ {
name: 'Qt ICU', name: 'Qt ICU',
link: `${MIRROR}/online/qtsdkrepository/linux_x64/desktop/qt5_5141/qt.qt5.5141.gcc_64/5.14.1-0-202001240953icu-linux-Rhel7.2-x64.7z`, link: `${MIRROR}/online/qtsdkrepository/linux_x64/desktop/qt6_641/qt.qt6.641.gcc_64/6.4.1-0-202211101305icu-linux-Rhel7.2-x64.7z`,
skipSetup: checkIfExists(path.resolve(qtHome, 'lib', 'libicuuc.so')), skipSetup: checkIfExists(path.resolve(qtHome, 'lib', 'libicuuc.so')),
}, },
], ],
@ -106,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', 'Qt5'); const qtCmakeDir = path.resolve(qtHome, 'lib', 'cmake', 'Qt6');
module.exports = { module.exports = {
qtHome, qtHome,

10483
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{ {
"name": "@nodegui/nodegui", "name": "@nodegui/nodegui",
"version": "0.37.0", "version": "0.59.0",
"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",
@ -14,17 +14,19 @@
"url": "https://github.com/sponsors/a7ul" "url": "https://github.com/sponsors/a7ul"
}, },
"scripts": { "scripts": {
"dev": "cross-env npm run build && node ./scripts/qode.js dist/demo.js", "dev": "npm run build && node ./scripts/qode.js dist/demo.js",
"build": "cross-env tsc && npm run build:addon", "demo": "node ./scripts/qode.js dist/demo.js",
"postinstall": "cross-env npm run setupqt && (node ./scripts/skip.js || npm run build:addon)", "build": "tsc && npm run build:addon",
"setupqt": "cross-env node ./scripts/setupMiniQt.js", "install": "npm run setupqt && (node ./scripts/skip.js || npm run setupbinary || npm run build:addon)",
"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": "cross-env clang-format -i --glob=src/cpp/**/*.[h,c]*", "lint:cpp": "clang-format -i --glob=src/cpp/**/*.[h,c]*",
"lint:ts": "cross-env tsc --noEmit && cross-env eslint './src/**/*.{ts,tsx,js,jsx}' --fix", "lint:ts": "tsc --noEmit && eslint ./src --fix",
"docs": "cross-env typedoc && node ./website/docs/scripts/fixdocs.js", "docs": "typedoc && node ./website/docs/scripts/fixdocs.js",
"qode": "cross-env node ./scripts/qode.js", "qode": "node ./scripts/qode.js",
"prepublishOnly": "cross-env npm run build" "prepublishOnly": "npm run build"
}, },
"engines": { "engines": {
"node": ">=14.x.x" "node": ">=14.x.x"
@ -32,31 +34,33 @@
"engineStrict": false, "engineStrict": false,
"dependencies": { "dependencies": {
"@nodegui/artifact-installer": "^1.1.0", "@nodegui/artifact-installer": "^1.1.0",
"@nodegui/qode": "^16.4.0", "@nodegui/qode": "^18.12.1",
"cmake-js": "^6.2.1", "cmake-js": "^6.2.1",
"cross-env": "^7.0.3", "cross-env": "^7.0.3",
"cuid": "^2.1.8", "cuid": "^2.1.8",
"manage-path": "^2.0.0", "manage-path": "^2.0.0",
"memoize-one": "^5.2.1", "memoize-one": "^5.2.1",
"node-addon-api": "^4.0.0", "node-addon-api": "^4.0.0",
"postcss-nodegui-autoprefixer": "0.0.7" "postcss": "^7.0.17",
"postcss-nodegui-autoprefixer": "0.0.7",
"tar": "^6.0.1"
}, },
"devDependencies": { "devDependencies": {
"@types/bindings": "^1.5.1", "@types/bindings": "^1.5.1",
"@types/jest": "^26.0.24", "@types/jest": "29.2.4",
"@types/node": "^16.4.13", "@types/node": "^16.4.13",
"@typescript-eslint/eslint-plugin": "^4.29.0", "@typescript-eslint/eslint-plugin": "^4.29.0",
"@typescript-eslint/parser": "^4.29.0", "@typescript-eslint/parser": "^4.29.0",
"clang-format": "^1.5.0", "clang-format": "^1.5.0",
"typedoc": "^0.17.8",
"typedoc-plugin-markdown": "^2.4.2",
"eslint": "^7.32.0", "eslint": "^7.32.0",
"eslint-config-prettier": "^8.3.0", "eslint-config-prettier": "^8.3.0",
"eslint-plugin-prettier": "^3.4.0", "eslint-plugin-prettier": "^3.4.0",
"husky": "^7.0.1", "husky": "^7.0.1",
"jest": "^27.0.6", "jest": "29.3.1",
"prettier": "^2.3.2", "prettier": "^2.3.2",
"ts-jest": "^27.0.4", "ts-jest": "29.0.3",
"typedoc": "^0.17.8",
"typedoc-plugin-markdown": "^2.4.2",
"typescript": "^4.3.5" "typescript": "^4.3.5"
}, },
"binary": { "binary": {

View File

@ -1,5 +1,6 @@
#!/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');
@ -11,6 +12,12 @@ 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,

39
scripts/setupBinary.js Normal file
View File

@ -0,0 +1,39 @@
#!/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

@ -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, YGNodeRef node, DLL_EXPORT void* configureQWidget(QWidget* widget, bool isLeafNode = false);
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()) { if (!component.isNull() && component->QObject::parent() == nullptr) {
delete component; delete component;
} }
} }

View File

@ -35,6 +35,8 @@ class DLL_EXPORT NAbstractItemModel : public QAbstractItemModel,
return *newIndex; return *newIndex;
} }
QObject* parent() const { return nullptr; }
QModelIndex parent(const QModelIndex& child) const override { QModelIndex parent(const QModelIndex& child) const override {
Napi::Env env = this->dispatchOnNode.Env(); Napi::Env env = this->dispatchOnNode.Env();
Napi::HandleScope scope(env); Napi::HandleScope scope(env);

View File

@ -14,7 +14,6 @@ class DLL_EXPORT QItemSelectionModelWrap
private: private:
QPointer<QItemSelectionModel> instance; QPointer<QItemSelectionModel> 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);

View File

@ -5,13 +5,13 @@
#include <QMimeData> #include <QMimeData>
#include "Extras/Export/export.h" #include "Extras/Export/export.h"
#include "core/Component/component_macro.h" #include "QtCore/QObject/qobject_macro.h"
class DLL_EXPORT QMimeDataWrap : public Napi::ObjectWrap<QMimeDataWrap> { class DLL_EXPORT QMimeDataWrap : public Napi::ObjectWrap<QMimeDataWrap> {
COMPONENT_WRAPPED_METHODS_DECLARATION QOBJECT_WRAPPED_METHODS_DECLARATION
private: private:
std::unique_ptr<QMimeData> instance; QPointer<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

@ -5,28 +5,33 @@
#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 /*
The exported methods are taken into this macro to avoid writing them in each This macro adds common QObject exported methods
and every widget we export. The exported methods are taken into this macro to avoid writing them in each
and every widget we export.
*/ */
#ifndef QOBJECT_WRAPPED_METHODS_DECLARATION #ifndef QOBJECT_WRAPPED_METHODS_DECLARATION_WITH_EVENT_SOURCE
#define QOBJECT_WRAPPED_METHODS_DECLARATION \ #define QOBJECT_WRAPPED_METHODS_DECLARATION_WITH_EVENT_SOURCE(source) \
\ \
EVENTWIDGET_WRAPPED_METHODS_DECLARATION \ EVENTWIDGET_WRAPPED_METHODS_DECLARATION_WITH_EVENT_SOURCE(source) \
\ \
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 = \
@ -37,7 +42,6 @@
} \ } \
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 = \
@ -48,7 +52,6 @@
} \ } \
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())); \
@ -56,29 +59,120 @@
} \ } \
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
#define QOBJECT_WRAPPED_METHODS_EXPORT_DEFINE(ComponentWrapName) \ #define QOBJECT_WRAPPED_METHODS_EXPORT_DEFINE(ComponentWrapName) \
\ \
EVENTWIDGET_WRAPPED_METHODS_EXPORT_DEFINE(ComponentWrapName) \ EVENTWIDGET_WRAPPED_METHODS_EXPORT_DEFINE(ComponentWrapName) \
\ \
InstanceMethod("inherits", &ComponentWrapName::inherits), \ InstanceMethod("__id__", &ComponentWrapName::__id__), \
InstanceMethod("setProperty", &ComponentWrapName::setProperty), \ InstanceMethod("__external_qobject__", \
InstanceMethod("property", &ComponentWrapName::property), \ &ComponentWrapName::__external_qobject__), \
InstanceMethod("setObjectName", &ComponentWrapName::setObjectName), \ InstanceMethod("inherits", &ComponentWrapName::inherits), \
InstanceMethod("objectName", &ComponentWrapName::objectName), InstanceMethod("setProperty", &ComponentWrapName::setProperty), \
InstanceMethod("property", &ComponentWrapName::property), \
InstanceMethod("setObjectName", &ComponentWrapName::setObjectName), \
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 #ifndef QOBJECT_SIGNALS_ON_TARGET
#define QOBJECT_SIGNALS \ #define QOBJECT_SIGNALS_ON_TARGET(target) \
QObject::connect(this, &QObject::objectNameChanged, \ QObject::connect(target, &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); \
@ -86,5 +180,28 @@
{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,14 +11,15 @@
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<NObject> instance; QPointer<QObject> 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();
NObject* getInternalInstance(); QObject* 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,9 +19,18 @@ 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 height(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); Napi::Value width(const Napi::CallbackInfo& info);
}; };

View File

@ -0,0 +1,40 @@
#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

@ -5,6 +5,8 @@
#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 {
@ -16,11 +18,50 @@ class DLL_EXPORT NApplication : public QApplication, public EventWidget {
// 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( QObject::connect(
this, &QGuiApplication::focusWindowChanged, [=](QWindow* focusWindow) { this, &QGuiApplication::focusWindowChanged, [=](QWindow* focusWindow) {
Napi::Env env = this->emitOnNode.Env(); Napi::Env env = this->emitOnNode.Env();
Napi::HandleScope scope(env); Napi::HandleScope scope(env);
this->emitOnNode.Call({Napi::String::New(env, "focusWindowChanged")}); 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

@ -30,11 +30,14 @@ class DLL_EXPORT QApplicationWrap : public Napi::ObjectWrap<QApplicationWrap> {
Napi::Value quitOnLastWindowClosed(const Napi::CallbackInfo& info); Napi::Value quitOnLastWindowClosed(const Napi::CallbackInfo& info);
Napi::Value palette(const Napi::CallbackInfo& info); Napi::Value palette(const Napi::CallbackInfo& info);
Napi::Value setStyleSheet(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 instance(const Napi::CallbackInfo& info);
DLL_EXPORT Napi::Value clipboard(const Napi::CallbackInfo& info); DLL_EXPORT Napi::Value clipboard(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 screens(const Napi::CallbackInfo& info);
DLL_EXPORT Napi::Value setStyle(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,21 +3,30 @@
#include <napi.h> #include <napi.h>
#include <QClipboard> #include <QClipboard>
#include <QPointer>
#include "Extras/Export/export.h" #include "Extras/Export/export.h"
#include "core/Component/component_macro.h" #include "QtCore/QObject/qobject_macro.h"
class DLL_EXPORT QClipboardWrap : public Napi::ObjectWrap<QClipboardWrap> { class DLL_EXPORT QClipboardWrap : public Napi::ObjectWrap<QClipboardWrap>,
COMPONENT_WRAPPED_METHODS_DECLARATION public EventWidget {
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:
QClipboard* instance; QPointer<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

@ -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<NDrag> instance; QPointer<QDrag> 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();
NDrag* getInternalInstance(); QDrag* getInternalInstance();
// class constructor // class constructor
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;

View File

@ -0,0 +1,32 @@
#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

@ -0,0 +1,30 @@
#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

@ -0,0 +1,28 @@
#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

@ -0,0 +1,28 @@
#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

@ -0,0 +1,27 @@
#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

@ -38,4 +38,11 @@ class DLL_EXPORT QFontMetricsWrap : public Napi::ObjectWrap<QFontMetricsWrap> {
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 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

@ -0,0 +1,49 @@
#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,10 +20,18 @@ 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

@ -0,0 +1,34 @@
#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,4 +20,6 @@ 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

@ -0,0 +1,58 @@
#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,20 +16,16 @@
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(); \
Napi::HandleScope scope(env); \ this->instance->animateClick(); \
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

@ -0,0 +1,21 @@
#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

@ -0,0 +1,25 @@
#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

@ -3,6 +3,7 @@
#include "QtCore/QAbstractItemModel/qabstractitemmodel_wrap.h" #include "QtCore/QAbstractItemModel/qabstractitemmodel_wrap.h"
#include "QtCore/QItemSelectionModel/qitemselectionmodel_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"
@ -22,7 +23,6 @@
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,7 +31,6 @@
} \ } \
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))}); \
@ -39,7 +38,6 @@
} \ } \
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 = \
@ -52,7 +50,6 @@
} \ } \
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); \
@ -65,19 +62,16 @@
} \ } \
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))}); \
@ -85,19 +79,16 @@
} \ } \
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::Value setModel(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
Napi::Object modelObject = info[0].As<Napi::Object>(); \ Napi::Object modelObject = info[0].As<Napi::Object>(); \
QAbstractItemModelWrap* modelWrap = \ QAbstractItemModelWrap* modelWrap = \
Napi::ObjectWrap<QAbstractItemModelWrap>::Unwrap(modelObject); \ Napi::ObjectWrap<QAbstractItemModelWrap>::Unwrap(modelObject); \
@ -107,7 +98,6 @@
} \ } \
Napi::Value closePersistentEditor(const Napi::CallbackInfo& info) { \ Napi::Value closePersistentEditor(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
QModelIndexWrap* indexWrap = \ QModelIndexWrap* indexWrap = \
Napi::ObjectWrap<QModelIndexWrap>::Unwrap(info[0].As<Napi::Object>()); \ Napi::ObjectWrap<QModelIndexWrap>::Unwrap(info[0].As<Napi::Object>()); \
QModelIndex* index = indexWrap->getInternalInstance(); \ QModelIndex* index = indexWrap->getInternalInstance(); \
@ -116,13 +106,11 @@
} \ } \
Napi::Value clearSelection(const Napi::CallbackInfo& info) { \ Napi::Value clearSelection(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
this->instance->clearSelection(); \ this->instance->clearSelection(); \
return env.Null(); \ return env.Null(); \
} \ } \
Napi::Value edit(const Napi::CallbackInfo& info) { \ Napi::Value edit(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
QModelIndexWrap* indexWrap = \ QModelIndexWrap* indexWrap = \
Napi::ObjectWrap<QModelIndexWrap>::Unwrap(info[0].As<Napi::Object>()); \ Napi::ObjectWrap<QModelIndexWrap>::Unwrap(info[0].As<Napi::Object>()); \
QModelIndex* index = indexWrap->getInternalInstance(); \ QModelIndex* index = indexWrap->getInternalInstance(); \
@ -131,19 +119,16 @@
} \ } \
Napi::Value reset(const Napi::CallbackInfo& info) { \ Napi::Value reset(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
this->instance->reset(); \ this->instance->reset(); \
return env.Null(); \ return env.Null(); \
} \ } \
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 setRootIndex(const Napi::CallbackInfo& info) { \ Napi::Value setRootIndex(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
QModelIndexWrap* indexWrap = \ QModelIndexWrap* indexWrap = \
Napi::ObjectWrap<QModelIndexWrap>::Unwrap(info[0].As<Napi::Object>()); \ Napi::ObjectWrap<QModelIndexWrap>::Unwrap(info[0].As<Napi::Object>()); \
QModelIndex* index = indexWrap->getInternalInstance(); \ QModelIndex* index = indexWrap->getInternalInstance(); \
@ -152,7 +137,6 @@
} \ } \
Napi::Value update_QModelIndex(const Napi::CallbackInfo& info) { \ Napi::Value update_QModelIndex(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
QModelIndexWrap* indexWrap = \ QModelIndexWrap* indexWrap = \
Napi::ObjectWrap<QModelIndexWrap>::Unwrap(info[0].As<Napi::Object>()); \ Napi::ObjectWrap<QModelIndexWrap>::Unwrap(info[0].As<Napi::Object>()); \
QModelIndex* index = indexWrap->getInternalInstance(); \ QModelIndex* index = indexWrap->getInternalInstance(); \
@ -161,15 +145,11 @@
} \ } \
Napi::Value selectionModel(const Napi::CallbackInfo& info) { \ Napi::Value selectionModel(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
QItemSelectionModel* model = this->instance->selectionModel(); \ QItemSelectionModel* model = this->instance->selectionModel(); \
auto modelExt = Napi::External<QItemSelectionModel>::New(env, model); \ return WrapperCache::instance.getWrapper(env, model); \
auto instance = QItemSelectionModelWrap::constructor.New({modelExt}); \
return instance; \
} \ } \
Napi::Value isPersistentEditorOpen(const Napi::CallbackInfo& info) { \ Napi::Value isPersistentEditorOpen(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
QModelIndexWrap* indexWrap = \ QModelIndexWrap* indexWrap = \
Napi::ObjectWrap<QModelIndexWrap>::Unwrap(info[0].As<Napi::Object>()); \ Napi::ObjectWrap<QModelIndexWrap>::Unwrap(info[0].As<Napi::Object>()); \
QModelIndex* index = indexWrap->getInternalInstance(); \ QModelIndex* index = indexWrap->getInternalInstance(); \
@ -178,7 +158,6 @@
} \ } \
Napi::Value openPersistentEditor(const Napi::CallbackInfo& info) { \ Napi::Value openPersistentEditor(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
QModelIndexWrap* indexWrap = \ QModelIndexWrap* indexWrap = \
Napi::ObjectWrap<QModelIndexWrap>::Unwrap(info[0].As<Napi::Object>()); \ Napi::ObjectWrap<QModelIndexWrap>::Unwrap(info[0].As<Napi::Object>()); \
QModelIndex* index = indexWrap->getInternalInstance(); \ QModelIndex* index = indexWrap->getInternalInstance(); \
@ -187,18 +166,67 @@
} \ } \
Napi::Value keyboardSearch(const Napi::CallbackInfo& info) { \ Napi::Value keyboardSearch(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
std::string searchNapiText = info[0].As<Napi::String>().Utf8Value(); \ std::string searchNapiText = info[0].As<Napi::String>().Utf8Value(); \
QString search = QString::fromUtf8(searchNapiText.c_str()); \ QString search = QString::fromUtf8(searchNapiText.c_str()); \
this->instance->keyboardSearch(search); \ this->instance->keyboardSearch(search); \
return env.Null(); \ 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 \ #define QABSTRACTITEMVIEW_WRAPPED_METHODS_DECLARATION \
QABSTRACTITEMVIEW_WRAPPED_METHODS_DECLARATION_NO_QHEADERVIEW_PROTECTED \ QABSTRACTITEMVIEW_WRAPPED_METHODS_DECLARATION_NO_QHEADERVIEW_PROTECTED \
Napi::Value indexAt(const Napi::CallbackInfo& info) { \ Napi::Value indexAt(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
QPointWrap* pointWrap = \ QPointWrap* pointWrap = \
Napi::ObjectWrap<QPointWrap>::Unwrap(info[0].As<Napi::Object>()); \ Napi::ObjectWrap<QPointWrap>::Unwrap(info[0].As<Napi::Object>()); \
QPoint* point = pointWrap->getInternalInstance(); \ QPoint* point = pointWrap->getInternalInstance(); \
@ -209,7 +237,6 @@
} \ } \
Napi::Value scrollTo(const Napi::CallbackInfo& info) { \ Napi::Value scrollTo(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
QModelIndexWrap* indexWrap = \ QModelIndexWrap* indexWrap = \
Napi::ObjectWrap<QModelIndexWrap>::Unwrap(info[0].As<Napi::Object>()); \ Napi::ObjectWrap<QModelIndexWrap>::Unwrap(info[0].As<Napi::Object>()); \
QModelIndex* index = indexWrap->getInternalInstance(); \ QModelIndex* index = indexWrap->getInternalInstance(); \
@ -218,42 +245,59 @@
info[1].As<Napi::Number>().Int32Value()); \ info[1].As<Napi::Number>().Int32Value()); \
this->instance->scrollTo(*index, hint); \ this->instance->scrollTo(*index, hint); \
return env.Null(); \ 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
#ifndef QABSTRACTITEMVIEW_WRAPPED_METHODS_EXPORT_DEFINE #ifndef QABSTRACTITEMVIEW_WRAPPED_METHODS_EXPORT_DEFINE
#define QABSTRACTITEMVIEW_WRAPPED_METHODS_EXPORT_DEFINE(WidgetWrapName) \ #define QABSTRACTITEMVIEW_WRAPPED_METHODS_EXPORT_DEFINE(WidgetWrapName) \
QABSTRACTSCROLLAREA_WRAPPED_METHODS_EXPORT_DEFINE(WidgetWrapName) \ QABSTRACTSCROLLAREA_WRAPPED_METHODS_EXPORT_DEFINE(WidgetWrapName) \
InstanceMethod("setCurrentIndex", &WidgetWrapName::setCurrentIndex), \ InstanceMethod("setCurrentIndex", &WidgetWrapName::setCurrentIndex), \
InstanceMethod("currentIndex", &WidgetWrapName::currentIndex), \ InstanceMethod("currentIndex", &WidgetWrapName::currentIndex), \
InstanceMethod("setIndexWidget", &WidgetWrapName::setIndexWidget), \ InstanceMethod("setIndexWidget", &WidgetWrapName::setIndexWidget), \
InstanceMethod("indexWidget", &WidgetWrapName::indexWidget), \ InstanceMethod("indexWidget", &WidgetWrapName::indexWidget), \
InstanceMethod("resetHorizontalScrollMode", \ InstanceMethod("resetHorizontalScrollMode", \
&WidgetWrapName::resetHorizontalScrollMode), \ &WidgetWrapName::resetHorizontalScrollMode), \
InstanceMethod("resetVerticalScrollMode", \ InstanceMethod("resetVerticalScrollMode", \
&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("setModel", &WidgetWrapName::setModel), \
InstanceMethod("closePersistentEditor", \ InstanceMethod("closePersistentEditor", \
&WidgetWrapName::closePersistentEditor), \ &WidgetWrapName::closePersistentEditor), \
InstanceMethod("clearSelection", &WidgetWrapName::clearSelection), \ InstanceMethod("clearSelection", &WidgetWrapName::clearSelection), \
InstanceMethod("edit", &WidgetWrapName::edit), \ InstanceMethod("edit", &WidgetWrapName::edit), \
InstanceMethod("reset", &WidgetWrapName::reset), \ InstanceMethod("reset", &WidgetWrapName::reset), \
InstanceMethod("selectAll", &WidgetWrapName::selectAll), \ InstanceMethod("selectAll", &WidgetWrapName::selectAll), \
InstanceMethod("setRootIndex", &WidgetWrapName::setRootIndex), \ InstanceMethod("setRootIndex", &WidgetWrapName::setRootIndex), \
InstanceMethod("update_QModelIndex", \ InstanceMethod("update_QModelIndex", \
&WidgetWrapName::update_QModelIndex), \ &WidgetWrapName::update_QModelIndex), \
InstanceMethod("indexAt", &WidgetWrapName::indexAt), \ InstanceMethod("indexAt", &WidgetWrapName::indexAt), \
InstanceMethod("selectionModel", &WidgetWrapName::selectionModel), \ InstanceMethod("selectionModel", &WidgetWrapName::selectionModel), \
InstanceMethod("scrollTo", &WidgetWrapName::scrollTo), \ InstanceMethod("scrollTo", &WidgetWrapName::scrollTo), \
InstanceMethod("isPersistentEditorOpen", \ InstanceMethod("isPersistentEditorOpen", \
&WidgetWrapName::isPersistentEditorOpen), \ &WidgetWrapName::isPersistentEditorOpen), \
InstanceMethod("openPersistentEditor", \ InstanceMethod("openPersistentEditor", \
&WidgetWrapName::openPersistentEditor), \ &WidgetWrapName::openPersistentEditor), \
InstanceMethod("keyboardSearch", &WidgetWrapName::keyboardSearch), 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

View File

@ -19,7 +19,6 @@
\ \
Napi::Value maximumViewportSize(const Napi::CallbackInfo& info) { \ Napi::Value maximumViewportSize(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
QSize size = this->instance->maximumViewportSize(); \ QSize size = this->instance->maximumViewportSize(); \
auto instance = QSizeWrap::constructor.New( \ auto instance = QSizeWrap::constructor.New( \
{Napi::External<QSize>::New(env, new QSize(size))}); \ {Napi::External<QSize>::New(env, new QSize(size))}); \
@ -28,7 +27,6 @@
\ \
Napi::Value setHorizontalScrollBar(const Napi::CallbackInfo& info) { \ Napi::Value setHorizontalScrollBar(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
Napi::Object scrollBarObject = info[0].As<Napi::Object>(); \ Napi::Object scrollBarObject = info[0].As<Napi::Object>(); \
QScrollBarWrap* scrollBarWrap = \ QScrollBarWrap* scrollBarWrap = \
Napi::ObjectWrap<QScrollBarWrap>::Unwrap(scrollBarObject); \ Napi::ObjectWrap<QScrollBarWrap>::Unwrap(scrollBarObject); \
@ -39,7 +37,6 @@
\ \
Napi::Value setVerticalScrollBar(const Napi::CallbackInfo& info) { \ Napi::Value setVerticalScrollBar(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
Napi::Object scrollBarObject = info[0].As<Napi::Object>(); \ Napi::Object scrollBarObject = info[0].As<Napi::Object>(); \
QScrollBarWrap* scrollBarWrap = \ QScrollBarWrap* scrollBarWrap = \
Napi::ObjectWrap<QScrollBarWrap>::Unwrap(scrollBarObject); \ Napi::ObjectWrap<QScrollBarWrap>::Unwrap(scrollBarObject); \
@ -50,7 +47,6 @@
\ \
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); \
@ -61,11 +57,22 @@
\ \
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(); \
NWidget* nviewPort = reinterpret_cast<NWidget*>(viewPort); \ auto instance = WrapperCache::instance.getWrapper(env, viewPort); \
auto instance = QWidgetWrap::constructor.New( \ return instance; \
{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; \
} }
@ -82,7 +89,10 @@
InstanceMethod("setVerticalScrollBar", \ InstanceMethod("setVerticalScrollBar", \
&WidgetWrapName::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,7 +14,6 @@
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)); \
@ -22,7 +21,6 @@
} \ } \
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,19 +15,16 @@
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,14 +11,13 @@ class DLL_EXPORT QActionWrap : public Napi::ObjectWrap<QActionWrap> {
QOBJECT_WRAPPED_METHODS_DECLARATION QOBJECT_WRAPPED_METHODS_DECLARATION
private: private:
QPointer<NAction> instance; QPointer<QAction> 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();
NAction* getInternalInstance(); QAction* getInternalInstance();
// class constructor // class constructor
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;
// wrapped methods // wrapped methods

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<NBoxLayout> instance; QPointer<QBoxLayout> 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();
NBoxLayout* getInternalInstance(); QBoxLayout* getInternalInstance();
// class constructor // class constructor
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;
// wrapped methods // wrapped methods

View File

@ -15,12 +15,30 @@ class DLL_EXPORT NButtonGroup : public QButtonGroup, public EventWidget {
virtual void connectSignalsToEventEmitter() { virtual void connectSignalsToEventEmitter() {
QOBJECT_SIGNALS QOBJECT_SIGNALS
// Qt Connects: Implement all signal connects here // Qt Connects: Implement all signal connects here
connect(this, QOverload<int>::of(&QButtonGroup::buttonClicked), connect(this, &QButtonGroup::idClicked, [=](int id) {
[=](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<NButtonGroup> instance; QPointer<QButtonGroup> 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();
NButtonGroup* getInternalInstance(); QButtonGroup* getInternalInstance();
// class constructor // class constructor
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;
// wrapped methods // wrapped methods

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<NCalendarWidget> instance; QPointer<QCalendarWidget> 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();
NCalendarWidget *getInternalInstance(); QCalendarWidget *getInternalInstance();
// class constructor // class constructor
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;
// wrapped methods // wrapped methods

View File

@ -12,14 +12,13 @@
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<NCheckBox> instance; QPointer<QCheckBox> 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();
NCheckBox* getInternalInstance(); QCheckBox* getInternalInstance();
// class constructor // class constructor
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;
// wrapped methods // wrapped methods

View File

@ -9,21 +9,23 @@
#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 QDIALOG_WRAPPED_METHODS_DECLARATION_NO_ACCEPT_OR_DONE
private: private:
QPointer<NColorDialog> instance; QPointer<QColorDialog> 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();
NColorDialog* getInternalInstance(); QColorDialog* 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

@ -15,6 +15,13 @@ class DLL_EXPORT NComboBox : public QComboBox, public NodeWidget {
virtual void connectSignalsToEventEmitter() { virtual 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) {
@ -38,5 +45,25 @@ 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<NComboBox> instance; QPointer<QComboBox> 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();
NComboBox* getInternalInstance(); QComboBox* getInternalInstance();
// class constructor // class constructor
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;
// wrapped methods // wrapped methods
@ -40,4 +40,25 @@ 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

@ -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<NDateEdit> instance; QPointer<QDateEdit> 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();
NDateEdit *getInternalInstance(); QDateEdit *getInternalInstance();
// class constructor // class constructor
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;
// wrapped methods // wrapped methods

View File

@ -18,21 +18,30 @@
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
#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<NDateTimeEdit> instance; QPointer<QDateTimeEdit> 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();
NDateTimeEdit *getInternalInstance(); QDateTimeEdit *getInternalInstance();
// class constructor // class constructor
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;
// wrapped methods // wrapped methods

View File

@ -1,15 +0,0 @@
#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

@ -1,24 +0,0 @@
#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

@ -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<NDial> instance; QPointer<QDial> 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();
NDial* getInternalInstance(); QDial* getInternalInstance();
// class constructor // class constructor
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;
// wrapped methods // wrapped methods

View File

@ -10,44 +10,55 @@
This macro adds common QDialog exported methods This macro adds common QDialog 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 QDIALOG_WRAPPED_METHODS_DECLARATION_NO_ACCEPT_OR_DONE
#define QDIALOG_WRAPPED_METHODS_DECLARATION_NO_ACCEPT_OR_DONE \
\
QWIDGET_WRAPPED_METHODS_DECLARATION \
\
Napi::Value setResult(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
Napi::Number result = info[0].As<Napi::Number>(); \
this->instance->setResult(result.Int32Value()); \
return env.Null(); \
} \
Napi::Value result(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
int value = this->instance->result(); \
return Napi::Value::From(env, value); \
} \
Napi::Value exec(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
int value = static_cast<int>(this->instance->exec()); \
return Napi::Number::From(env, value); \
} \
Napi::Value open(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
this->instance->open(); \
return env.Null(); \
} \
Napi::Value reject(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
this->instance->reject(); \
return env.Null(); \
}
#endif
#ifndef QDIALOG_WRAPPED_METHODS_DECLARATION #ifndef QDIALOG_WRAPPED_METHODS_DECLARATION
#define QDIALOG_WRAPPED_METHODS_DECLARATION \ #define QDIALOG_WRAPPED_METHODS_DECLARATION \
\ QDIALOG_WRAPPED_METHODS_DECLARATION_NO_ACCEPT_OR_DONE \
QWIDGET_WRAPPED_METHODS_DECLARATION \ Napi::Value accept(const Napi::CallbackInfo& info) { \
\ Napi::Env env = info.Env(); \
Napi::Value setResult(const Napi::CallbackInfo& info) { \ this->instance->accept(); \
Napi::Env env = info.Env(); \ return env.Null(); \
Napi::HandleScope scope(env); \ } \
Napi::Number result = info[0].As<Napi::Number>(); \ Napi::Value done(const Napi::CallbackInfo& info) { \
this->instance->setResult(result.Int32Value()); \ Napi::Env env = info.Env(); \
return env.Null(); \ int r = info[0].As<Napi::Number>().Int32Value(); \
} \ this->instance->done(r); \
Napi::Value result(const Napi::CallbackInfo& info) { \ return env.Null(); \
Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
int value = this->instance->result(); \
return Napi::Value::From(env, value); \
} \
Napi::Value exec(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
int value = static_cast<int>(this->instance->exec()); \
return Napi::Number::From(env, value); \
} \
Napi::Value open(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
this->instance->open(); \
return env.Null(); \
} \
Napi::Value reject(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
this->instance->reject(); \
return env.Null(); \
} }
#endif #endif
@ -59,7 +70,9 @@
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<NDialog> instance; QPointer<QDialog> 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();
NDialog* getInternalInstance(); QDialog* getInternalInstance();
// class constructor // class constructor
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;
// wrapped methods // wrapped methods

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<NDoubleSpinBox> instance; QPointer<QDoubleSpinBox> 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();
NDoubleSpinBox* getInternalInstance(); QDoubleSpinBox* getInternalInstance();
// class constructor // class constructor
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;
// wrapped methods // wrapped methods

View File

@ -10,17 +10,19 @@
class DLL_EXPORT QErrorMessageWrap class DLL_EXPORT QErrorMessageWrap
: public Napi::ObjectWrap<QErrorMessageWrap> { : public Napi::ObjectWrap<QErrorMessageWrap> {
QDIALOG_WRAPPED_METHODS_DECLARATION QDIALOG_WRAPPED_METHODS_DECLARATION_NO_ACCEPT_OR_DONE
private: private:
QPointer<NErrorMessage> instance; QPointer<QErrorMessage> 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();
NErrorMessage* getInternalInstance(); QErrorMessage* 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

@ -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 QDIALOG_WRAPPED_METHODS_DECLARATION_NO_ACCEPT_OR_DONE
private: private:
QPointer<NFileDialog> instance; QPointer<QFileDialog> 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();
NFileDialog* getInternalInstance(); QFileDialog* getInternalInstance();
// class constructor // class constructor
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;
// wrapped methods // wrapped methods
@ -28,4 +28,6 @@ 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

@ -9,19 +9,21 @@
#include "QtWidgets/QFontDialog/nfontdialog.hpp" #include "QtWidgets/QFontDialog/nfontdialog.hpp"
class DLL_EXPORT QFontDialogWrap : public Napi::ObjectWrap<QFontDialogWrap> { class DLL_EXPORT QFontDialogWrap : public Napi::ObjectWrap<QFontDialogWrap> {
QDIALOG_WRAPPED_METHODS_DECLARATION QDIALOG_WRAPPED_METHODS_DECLARATION_NO_ACCEPT_OR_DONE
private: private:
QPointer<NFontDialog> instance; QPointer<QFontDialog> instance;
public: public:
static Napi::Object init(Napi::Env env, Napi::Object exports); static Napi::Object init(Napi::Env env, Napi::Object exports);
QFontDialogWrap(const Napi::CallbackInfo& info); QFontDialogWrap(const Napi::CallbackInfo& info);
~QFontDialogWrap(); ~QFontDialogWrap();
NFontDialog* getInternalInstance(); QFontDialog* getInternalInstance();
// class constructor // class constructor
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;
// wrapped methods // wrapped methods
Napi::Value selectedFont(const Napi::CallbackInfo& info); Napi::Value selectedFont(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);
}; };

View File

@ -17,12 +17,10 @@
\ \
Napi::Value frameStyle(const Napi::CallbackInfo& info) { \ Napi::Value frameStyle(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
return Napi::Number::New(env, this->instance->frameStyle()); \ return Napi::Number::New(env, this->instance->frameStyle()); \
} \ } \
Napi::Value setFrameStyle(const Napi::CallbackInfo& info) { \ Napi::Value setFrameStyle(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
int style = info[0].As<Napi::Number>().Int32Value(); \ int style = info[0].As<Napi::Number>().Int32Value(); \
this->instance->setFrameStyle(style); \ this->instance->setFrameStyle(style); \
return env.Null(); \ return env.Null(); \

View File

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

View File

@ -5,6 +5,7 @@
#include <QPointer> #include <QPointer>
#include "Extras/Export/export.h" #include "Extras/Export/export.h"
#include "Extras/Utils/nutils.h"
#include "QtWidgets/QGraphicsEffect/qgraphicseffect_macro.h" #include "QtWidgets/QGraphicsEffect/qgraphicseffect_macro.h"
#include "ngraphicsblureffect.hpp" #include "ngraphicsblureffect.hpp"
@ -12,13 +13,13 @@ class DLL_EXPORT QGraphicsBlurEffectWrap
: public Napi::ObjectWrap<QGraphicsBlurEffectWrap> { : public Napi::ObjectWrap<QGraphicsBlurEffectWrap> {
QGRAPHICSEFFECT_WRAPPED_METHODS_DECLARATION QGRAPHICSEFFECT_WRAPPED_METHODS_DECLARATION
private: private:
QPointer<NGraphicsBlurEffect> instance; QPointer<QGraphicsBlurEffect> instance;
public: public:
static Napi::Object init(Napi::Env env, Napi::Object exports); static Napi::Object init(Napi::Env env, Napi::Object exports);
QGraphicsBlurEffectWrap(const Napi::CallbackInfo& info); QGraphicsBlurEffectWrap(const Napi::CallbackInfo& info);
~QGraphicsBlurEffectWrap(); ~QGraphicsBlurEffectWrap();
NGraphicsBlurEffect* getInternalInstance(); QGraphicsBlurEffect* getInternalInstance();
// class constructor // class constructor
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;
// wrapped methods // wrapped methods

View File

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

View File

@ -16,7 +16,6 @@
\ \
Napi::Value update(const Napi::CallbackInfo& info) { \ Napi::Value update(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
this->instance->update(); \ this->instance->update(); \
return env.Null(); \ return env.Null(); \
} }

View File

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

View File

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

View File

@ -12,5 +12,16 @@ class DLL_EXPORT NHeaderView : public QHeaderView, public NodeWidget {
public: public:
using QHeaderView::QHeaderView; using QHeaderView::QHeaderView;
virtual void connectSignalsToEventEmitter() { QABSTRACTITEMVIEW_SIGNALS } virtual void connectSignalsToEventEmitter(){QABSTRACTITEMVIEW_SIGNALS}
QModelIndex _protected_indexAt(const QPoint &p) const {
return indexAt(p);
}
void _protected_scrollTo(const QModelIndex &index, ScrollHint hint) {
scrollTo(index, hint);
}
QRect _protected_visualRect(const QModelIndex &index) const {
return visualRect(index);
}
}; };

View File

@ -13,32 +13,54 @@ class DLL_EXPORT QHeaderViewWrap : public Napi::ObjectWrap<QHeaderViewWrap> {
Napi::Value indexAt(const Napi::CallbackInfo& info) { Napi::Value indexAt(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env(); Napi::Env env = info.Env();
Napi::HandleScope scope(env);
QPointWrap* pointWrap = QPointWrap* pointWrap =
Napi::ObjectWrap<QPointWrap>::Unwrap(info[0].As<Napi::Object>()); Napi::ObjectWrap<QPointWrap>::Unwrap(info[0].As<Napi::Object>());
QPoint* point = pointWrap->getInternalInstance(); QPoint* point = pointWrap->getInternalInstance();
QModelIndex result = this->instance->QAbstractItemView::indexAt(*point);
auto resultInstance = QModelIndexWrap::constructor.New( NHeaderView* wrapper = dynamic_cast<NHeaderView*>(this->instance.data());
{Napi::External<QModelIndex>::New(env, new QModelIndex(result))}); if (wrapper) {
return resultInstance; QModelIndex result = wrapper->_protected_indexAt(*point);
auto resultInstance = QModelIndexWrap::constructor.New(
{Napi::External<QModelIndex>::New(env, new QModelIndex(result))});
return resultInstance;
} else {
return env.Null();
}
} }
Napi::Value scrollTo(const Napi::CallbackInfo& info) { Napi::Value scrollTo(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env(); Napi::Env env = info.Env();
Napi::HandleScope scope(env); NHeaderView* wrapper = dynamic_cast<NHeaderView*>(this->instance.data());
QModelIndexWrap* indexWrap = if (wrapper) {
Napi::ObjectWrap<QModelIndexWrap>::Unwrap(info[0].As<Napi::Object>()); QModelIndexWrap* indexWrap =
QModelIndex* index = indexWrap->getInternalInstance(); Napi::ObjectWrap<QModelIndexWrap>::Unwrap(info[0].As<Napi::Object>());
QAbstractItemView::ScrollHint hint = QModelIndex* index = indexWrap->getInternalInstance();
static_cast<QAbstractItemView::ScrollHint>( QAbstractItemView::ScrollHint hint =
info[1].As<Napi::Number>().Int32Value()); static_cast<QAbstractItemView::ScrollHint>(
this->instance->QAbstractItemView::scrollTo(*index, hint); info[1].As<Napi::Number>().Int32Value());
wrapper->_protected_scrollTo(*index, hint);
}
return env.Null();
}
Napi::Value visualRect(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
NHeaderView* wrapper = dynamic_cast<NHeaderView*>(this->instance.data());
if (wrapper) {
QModelIndexWrap* indexWrap =
Napi::ObjectWrap<QModelIndexWrap>::Unwrap(info[0].As<Napi::Object>());
QModelIndex* index = indexWrap->getInternalInstance();
QRect ret = wrapper->_protected_visualRect(*index);
auto instance = QRectWrap::constructor.New(
{Napi::External<QRect>::New(env, new QRect(ret))});
return instance;
}
return env.Null(); return env.Null();
} }
private: private:
QPointer<QHeaderView> instance; QPointer<QHeaderView> 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);
@ -48,4 +70,63 @@ class DLL_EXPORT QHeaderViewWrap : public Napi::ObjectWrap<QHeaderViewWrap> {
// class constructor // class constructor
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;
// wrapped methods // wrapped methods
Napi::Value cascadingSectionResizes(const Napi::CallbackInfo& info);
Napi::Value count(const Napi::CallbackInfo& info);
Napi::Value defaultAlignment(const Napi::CallbackInfo& info);
Napi::Value defaultSectionSize(const Napi::CallbackInfo& info);
Napi::Value hiddenSectionCount(const Napi::CallbackInfo& info);
Napi::Value hideSection(const Napi::CallbackInfo& info);
Napi::Value highlightSections(const Napi::CallbackInfo& info);
Napi::Value isFirstSectionMovable(const Napi::CallbackInfo& info);
Napi::Value isSectionHidden(const Napi::CallbackInfo& info);
Napi::Value isSortIndicatorShown(const Napi::CallbackInfo& info);
Napi::Value length(const Napi::CallbackInfo& info);
Napi::Value logicalIndex(const Napi::CallbackInfo& info);
Napi::Value logicalIndexAt(const Napi::CallbackInfo& info);
Napi::Value logicalIndexAt_number_number(const Napi::CallbackInfo& info);
Napi::Value logicalIndexAt_qpoint(const Napi::CallbackInfo& info);
Napi::Value maximumSectionSize(const Napi::CallbackInfo& info);
Napi::Value minimumSectionSize(const Napi::CallbackInfo& info);
Napi::Value moveSection(const Napi::CallbackInfo& info);
Napi::Value offset(const Napi::CallbackInfo& info);
Napi::Value orientation(const Napi::CallbackInfo& info);
Napi::Value resetDefaultSectionSize(const Napi::CallbackInfo& info);
Napi::Value resizeContentsPrecision(const Napi::CallbackInfo& info);
Napi::Value resizeSection(const Napi::CallbackInfo& info);
Napi::Value resizeSections(const Napi::CallbackInfo& info);
Napi::Value sectionPosition(const Napi::CallbackInfo& info);
Napi::Value sectionResizeMode(const Napi::CallbackInfo& info);
Napi::Value sectionSize(const Napi::CallbackInfo& info);
Napi::Value sectionSizeHint(const Napi::CallbackInfo& info);
Napi::Value sectionViewportPosition(const Napi::CallbackInfo& info);
Napi::Value sectionsClickable(const Napi::CallbackInfo& info);
Napi::Value sectionsHidden(const Napi::CallbackInfo& info);
Napi::Value sectionsMovable(const Napi::CallbackInfo& info);
Napi::Value sectionsMoved(const Napi::CallbackInfo& info);
Napi::Value setCascadingSectionResizes(const Napi::CallbackInfo& info);
Napi::Value setDefaultAlignment(const Napi::CallbackInfo& info);
Napi::Value setDefaultSectionSize(const Napi::CallbackInfo& info);
Napi::Value setFirstSectionMovable(const Napi::CallbackInfo& info);
Napi::Value setHighlightSections(const Napi::CallbackInfo& info);
Napi::Value setMaximumSectionSize(const Napi::CallbackInfo& info);
Napi::Value setMinimumSectionSize(const Napi::CallbackInfo& info);
Napi::Value setResizeContentsPrecision(const Napi::CallbackInfo& info);
Napi::Value setSectionHidden(const Napi::CallbackInfo& info);
Napi::Value setSectionResizeMode_mode(const Napi::CallbackInfo& info);
Napi::Value setSectionResizeMode_number_mode(const Napi::CallbackInfo& info);
Napi::Value setSectionsClickable(const Napi::CallbackInfo& info);
Napi::Value setSectionsMovable(const Napi::CallbackInfo& info);
Napi::Value setSortIndicator(const Napi::CallbackInfo& info);
Napi::Value setSortIndicatorShown(const Napi::CallbackInfo& info);
Napi::Value showSection(const Napi::CallbackInfo& info);
Napi::Value sortIndicatorOrder(const Napi::CallbackInfo& info);
Napi::Value sortIndicatorSection(const Napi::CallbackInfo& info);
Napi::Value stretchSectionCount(const Napi::CallbackInfo& info);
Napi::Value swapSections(const Napi::CallbackInfo& info);
Napi::Value visualIndex(const Napi::CallbackInfo& info);
Napi::Value visualIndexAt(const Napi::CallbackInfo& info);
Napi::Value headerDataChanged(const Napi::CallbackInfo& info);
Napi::Value setOffset(const Napi::CallbackInfo& info);
Napi::Value setOffsetToLastSection(const Napi::CallbackInfo& info);
Napi::Value setOffsetToSectionPosition(const Napi::CallbackInfo& info);
}; };

View File

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

View File

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

View File

@ -12,19 +12,20 @@
class DLL_EXPORT QLabelWrap : public Napi::ObjectWrap<QLabelWrap> { class DLL_EXPORT QLabelWrap : public Napi::ObjectWrap<QLabelWrap> {
QFRAME_WRAPPED_METHODS_DECLARATION QFRAME_WRAPPED_METHODS_DECLARATION
private: private:
QPointer<NLabel> instance; QPointer<QLabel> instance;
public: public:
static Napi::Object init(Napi::Env env, Napi::Object exports); static Napi::Object init(Napi::Env env, Napi::Object exports);
QLabelWrap(const Napi::CallbackInfo& info); QLabelWrap(const Napi::CallbackInfo& info);
~QLabelWrap(); ~QLabelWrap();
NLabel* getInternalInstance(); QLabel* getInternalInstance();
// class constructor // class constructor
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;
// wrapped methods // wrapped methods
Napi::Value setSelection(const Napi::CallbackInfo& info); Napi::Value setSelection(const Napi::CallbackInfo& info);
Napi::Value selectionStart(const Napi::CallbackInfo& info); Napi::Value selectionStart(const Napi::CallbackInfo& info);
Napi::Value setBuddy(const Napi::CallbackInfo& info); Napi::Value setBuddy(const Napi::CallbackInfo& info);
Napi::Value buddy(const Napi::CallbackInfo& info);
Napi::Value clear(const Napi::CallbackInfo& info); Napi::Value clear(const Napi::CallbackInfo& info);
Napi::Value setMovie(const Napi::CallbackInfo& info); Napi::Value setMovie(const Napi::CallbackInfo& info);
Napi::Value setNumDouble(const Napi::CallbackInfo& info); Napi::Value setNumDouble(const Napi::CallbackInfo& info);

View File

@ -17,26 +17,22 @@
\ \
Napi::Value activate(const Napi::CallbackInfo& info) { \ Napi::Value activate(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
bool wasRedone = this->instance->activate(); \ bool wasRedone = this->instance->activate(); \
return Napi::Boolean::New(env, wasRedone); \ return Napi::Boolean::New(env, wasRedone); \
} \ } \
Napi::Value setEnabled(const Napi::CallbackInfo& info) { \ Napi::Value setEnabled(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
bool enable = info[0].As<Napi::Boolean>().Value(); \ bool enable = info[0].As<Napi::Boolean>().Value(); \
this->instance->setEnabled(enable); \ this->instance->setEnabled(enable); \
return env.Null(); \ return env.Null(); \
} \ } \
Napi::Value isEnabled(const Napi::CallbackInfo& info) { \ Napi::Value isEnabled(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
bool enabled = this->instance->isEnabled(); \ bool enabled = this->instance->isEnabled(); \
return Napi::Boolean::New(env, enabled); \ return Napi::Boolean::New(env, enabled); \
} \ } \
Napi::Value setContentsMargins(const Napi::CallbackInfo& info) { \ Napi::Value setContentsMargins(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
int left = info[0].As<Napi::Number>().Int32Value(); \ int left = info[0].As<Napi::Number>().Int32Value(); \
int top = info[1].As<Napi::Number>().Int32Value(); \ int top = info[1].As<Napi::Number>().Int32Value(); \
int right = info[2].As<Napi::Number>().Int32Value(); \ int right = info[2].As<Napi::Number>().Int32Value(); \
@ -46,13 +42,11 @@
} \ } \
Napi::Value invalidate(const Napi::CallbackInfo& info) { \ Napi::Value invalidate(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
this->instance->invalidate(); \ this->instance->invalidate(); \
return env.Null(); \ return env.Null(); \
} \ } \
Napi::Value update(const Napi::CallbackInfo& info) { \ Napi::Value update(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
this->instance->update(); \ this->instance->update(); \
return env.Null(); \ return env.Null(); \
} }

View File

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

View File

@ -11,20 +11,37 @@
class DLL_EXPORT QLineEditWrap : public Napi::ObjectWrap<QLineEditWrap> { class DLL_EXPORT QLineEditWrap : public Napi::ObjectWrap<QLineEditWrap> {
QWIDGET_WRAPPED_METHODS_DECLARATION QWIDGET_WRAPPED_METHODS_DECLARATION
private: private:
QPointer<NLineEdit> instance; QPointer<QLineEdit> instance;
public: public:
static Napi::Object init(Napi::Env env, Napi::Object exports); static Napi::Object init(Napi::Env env, Napi::Object exports);
QLineEditWrap(const Napi::CallbackInfo& info); QLineEditWrap(const Napi::CallbackInfo& info);
~QLineEditWrap(); ~QLineEditWrap();
NLineEdit* getInternalInstance(); QLineEdit* getInternalInstance();
// class constructor // class constructor
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;
// wrapped methods // wrapped methods
Napi::Value setText(const Napi::CallbackInfo& info); Napi::Value backspace(const Napi::CallbackInfo& info);
Napi::Value text(const Napi::CallbackInfo& info); Napi::Value cursorBackward(const Napi::CallbackInfo& info);
Napi::Value setPlaceholderText(const Napi::CallbackInfo& info); Napi::Value cursorForward(const Napi::CallbackInfo& info);
Napi::Value setReadOnly(const Napi::CallbackInfo& info); Napi::Value cursorPositionAt(const Napi::CallbackInfo& info);
Napi::Value cursorWordBackward(const Napi::CallbackInfo& info);
Napi::Value cursorWordForward(const Napi::CallbackInfo& info);
Napi::Value del(const Napi::CallbackInfo& info);
Napi::Value deselect(const Napi::CallbackInfo& info);
Napi::Value end(const Napi::CallbackInfo& info);
Napi::Value home(const Napi::CallbackInfo& info);
Napi::Value insert(const Napi::CallbackInfo& info);
Napi::Value selectionEnd(const Napi::CallbackInfo& info);
Napi::Value selectionLength(const Napi::CallbackInfo& info);
Napi::Value selectionStart(const Napi::CallbackInfo& info);
Napi::Value setSelection(const Napi::CallbackInfo& info);
Napi::Value setTextMargins(const Napi::CallbackInfo& info);
Napi::Value clear(const Napi::CallbackInfo& info); Napi::Value clear(const Napi::CallbackInfo& info);
Napi::Value setEchoMode(const Napi::CallbackInfo& info); Napi::Value copy(const Napi::CallbackInfo& info);
Napi::Value cut(const Napi::CallbackInfo& info);
Napi::Value paste(const Napi::CallbackInfo& info);
Napi::Value redo(const Napi::CallbackInfo& info);
Napi::Value selectAll(const Napi::CallbackInfo& info);
Napi::Value undo(const Napi::CallbackInfo& info);
}; };

View File

@ -17,13 +17,11 @@
QABSTRACTITEMVIEW_WRAPPED_METHODS_DECLARATION \ QABSTRACTITEMVIEW_WRAPPED_METHODS_DECLARATION \
Napi::Value clearPropertyFlags(const Napi::CallbackInfo& info) { \ Napi::Value clearPropertyFlags(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
this->instance->clearPropertyFlags(); \ this->instance->clearPropertyFlags(); \
return env.Null(); \ return env.Null(); \
} \ } \
Napi::Value setRowHidden(const Napi::CallbackInfo& info) { \ Napi::Value setRowHidden(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
int row = info[0].As<Napi::Number>().Int32Value(); \ int row = info[0].As<Napi::Number>().Int32Value(); \
int hide = info[1].As<Napi::Boolean>().Value(); \ int hide = info[1].As<Napi::Boolean>().Value(); \
this->instance->setRowHidden(row, hide); \ this->instance->setRowHidden(row, hide); \
@ -31,7 +29,6 @@
} \ } \
Napi::Value isRowHidden(const Napi::CallbackInfo& info) { \ Napi::Value isRowHidden(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \ Napi::Env env = info.Env(); \
Napi::HandleScope scope(env); \
int row = info[0].As<Napi::Number>().Int32Value(); \ int row = info[0].As<Napi::Number>().Int32Value(); \
return Napi::Boolean::New(env, this->instance->isRowHidden(row)); \ return Napi::Boolean::New(env, this->instance->isRowHidden(row)); \
} }

View File

@ -11,14 +11,13 @@
class DLL_EXPORT QListViewWrap : public Napi::ObjectWrap<QListViewWrap> { class DLL_EXPORT QListViewWrap : public Napi::ObjectWrap<QListViewWrap> {
QLISTVIEW_WRAPPED_METHODS_DECLARATION QLISTVIEW_WRAPPED_METHODS_DECLARATION
private: private:
QPointer<NListView> instance; QPointer<QListView> 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);
QListViewWrap(const Napi::CallbackInfo& info); QListViewWrap(const Napi::CallbackInfo& info);
~QListViewWrap(); ~QListViewWrap();
NListView* getInternalInstance(); QListView* getInternalInstance();
// class constructor // class constructor
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;
// wrapped methods // wrapped methods

View File

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

View File

@ -12,16 +12,17 @@ class DLL_EXPORT QMainWindowWrap : public Napi::ObjectWrap<QMainWindowWrap> {
QWIDGET_WRAPPED_METHODS_DECLARATION QWIDGET_WRAPPED_METHODS_DECLARATION
private: private:
QPointer<NMainWindow> instance; QPointer<QMainWindow> instance;
public: public:
static Napi::Object init(Napi::Env env, Napi::Object exports); static Napi::Object init(Napi::Env env, Napi::Object exports);
QMainWindowWrap(const Napi::CallbackInfo& info); QMainWindowWrap(const Napi::CallbackInfo& info);
~QMainWindowWrap(); ~QMainWindowWrap();
NMainWindow* getInternalInstance(); QMainWindow* getInternalInstance();
// class constructor // class constructor
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;
// wrapped methods // wrapped methods
Napi::Value centralWidget(const Napi::CallbackInfo& info);
Napi::Value setCentralWidget(const Napi::CallbackInfo& info); Napi::Value setCentralWidget(const Napi::CallbackInfo& info);
Napi::Value takeCentralWidget(const Napi::CallbackInfo& info); Napi::Value takeCentralWidget(const Napi::CallbackInfo& info);
Napi::Value setMenuBar(const Napi::CallbackInfo& info); Napi::Value setMenuBar(const Napi::CallbackInfo& info);

View File

@ -17,10 +17,8 @@ class DLL_EXPORT NMenu : public QMenu, public NodeWidget {
QObject::connect(this, &QMenu::triggered, [=](QAction* action) { QObject::connect(this, &QMenu::triggered, [=](QAction* action) {
Napi::Env env = this->emitOnNode.Env(); Napi::Env env = this->emitOnNode.Env();
Napi::HandleScope scope(env); Napi::HandleScope scope(env);
auto actionInstance = QActionWrap::constructor.New( auto instance = WrapperCache::instance.getWrapper(env, action);
{Napi::External<QAction>::New(env, action)}); this->emitOnNode.Call({Napi::String::New(env, "triggered"), instance});
this->emitOnNode.Call(
{Napi::String::New(env, "triggered"), actionInstance});
}); });
} }
}; };

View File

@ -10,13 +10,13 @@
class DLL_EXPORT QMenuWrap : public Napi::ObjectWrap<QMenuWrap> { class DLL_EXPORT QMenuWrap : public Napi::ObjectWrap<QMenuWrap> {
QWIDGET_WRAPPED_METHODS_DECLARATION QWIDGET_WRAPPED_METHODS_DECLARATION
private: private:
QPointer<NMenu> instance; QPointer<QMenu> instance;
public: public:
static Napi::Object init(Napi::Env env, Napi::Object exports); static Napi::Object init(Napi::Env env, Napi::Object exports);
QMenuWrap(const Napi::CallbackInfo& info); QMenuWrap(const Napi::CallbackInfo& info);
~QMenuWrap(); ~QMenuWrap();
NMenu* getInternalInstance(); QMenu* getInternalInstance();
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;
// wrapped methods // wrapped methods
Napi::Value clear(const Napi::CallbackInfo& info); Napi::Value clear(const Napi::CallbackInfo& info);

View File

@ -10,13 +10,13 @@
class DLL_EXPORT QMenuBarWrap : public Napi::ObjectWrap<QMenuBarWrap> { class DLL_EXPORT QMenuBarWrap : public Napi::ObjectWrap<QMenuBarWrap> {
QWIDGET_WRAPPED_METHODS_DECLARATION QWIDGET_WRAPPED_METHODS_DECLARATION
private: private:
QPointer<NMenuBar> instance; QPointer<QMenuBar> instance;
public: public:
static Napi::Object init(Napi::Env env, Napi::Object exports); static Napi::Object init(Napi::Env env, Napi::Object exports);
QMenuBarWrap(const Napi::CallbackInfo& info); QMenuBarWrap(const Napi::CallbackInfo& info);
~QMenuBarWrap(); ~QMenuBarWrap();
NMenuBar* getInternalInstance(); QMenuBar* getInternalInstance();
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;
// wrapped methods // wrapped methods
Napi::Value addMenu(const Napi::CallbackInfo& info); Napi::Value addMenu(const Napi::CallbackInfo& info);

View File

@ -11,20 +11,18 @@
class DLL_EXPORT QMessageBoxWrap : public Napi::ObjectWrap<QMessageBoxWrap> { class DLL_EXPORT QMessageBoxWrap : public Napi::ObjectWrap<QMessageBoxWrap> {
QDIALOG_WRAPPED_METHODS_DECLARATION QDIALOG_WRAPPED_METHODS_DECLARATION
private: private:
QPointer<NMessageBox> instance; QPointer<QMessageBox> instance;
public: public:
static Napi::Object init(Napi::Env env, Napi::Object exports); static Napi::Object init(Napi::Env env, Napi::Object exports);
QMessageBoxWrap(const Napi::CallbackInfo& info); QMessageBoxWrap(const Napi::CallbackInfo& info);
~QMessageBoxWrap(); ~QMessageBoxWrap();
NMessageBox* getInternalInstance(); QMessageBox* getInternalInstance();
// class constructor // class constructor
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;
// wrapped methods // wrapped methods
Napi::Value setDefaultButton(const Napi::CallbackInfo& info); Napi::Value setDefaultButton(const Napi::CallbackInfo& info);
Napi::Value addButton(const Napi::CallbackInfo& info); Napi::Value addButton(const Napi::CallbackInfo& info);
Napi::Value accept(const Napi::CallbackInfo& info);
Napi::Value done(const Napi::CallbackInfo& info);
}; };
namespace StaticQMessageBoxWrapMethods { namespace StaticQMessageBoxWrapMethods {
DLL_EXPORT Napi::Value about(const Napi::CallbackInfo& info); DLL_EXPORT Napi::Value about(const Napi::CallbackInfo& info);

View File

@ -20,32 +20,52 @@ class DLL_EXPORT QPainterWrap : public Napi::ObjectWrap<QPainterWrap> {
// class constructor // class constructor
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;
// wrapped methods // wrapped methods
Napi::Value drawArc(const Napi::CallbackInfo& info);
Napi::Value drawText(const Napi::CallbackInfo& info);
Napi::Value drawImage(const Napi::CallbackInfo& info);
Napi::Value drawPath(const Napi::CallbackInfo& info);
Napi::Value strokePath(const Napi::CallbackInfo& info);
Napi::Value begin(const Napi::CallbackInfo& info); Napi::Value begin(const Napi::CallbackInfo& info);
Napi::Value beginNativePainting(const Napi::CallbackInfo& info); Napi::Value beginNativePainting(const Napi::CallbackInfo& info);
Napi::Value boundingRect(const Napi::CallbackInfo& info);
Napi::Value boundingRectF(const Napi::CallbackInfo& info);
Napi::Value compositionMode(const Napi::CallbackInfo& info);
Napi::Value drawArc(const Napi::CallbackInfo& info);
Napi::Value drawArcF(const Napi::CallbackInfo& info);
Napi::Value drawChord(const Napi::CallbackInfo& info);
Napi::Value drawChordF(const Napi::CallbackInfo& info);
Napi::Value drawConvexPolygon(const Napi::CallbackInfo& info);
Napi::Value drawConvexPolygonF(const Napi::CallbackInfo& info);
Napi::Value drawEllipse(const Napi::CallbackInfo& info);
Napi::Value drawEllipseF(const Napi::CallbackInfo& info);
Napi::Value drawImage(const Napi::CallbackInfo& info);
Napi::Value drawImageF(const Napi::CallbackInfo& info);
Napi::Value drawLine(const Napi::CallbackInfo& info);
Napi::Value drawLineF(const Napi::CallbackInfo& info);
Napi::Value drawPath(const Napi::CallbackInfo& info);
Napi::Value drawPie(const Napi::CallbackInfo& info);
Napi::Value drawPieF(const Napi::CallbackInfo& info);
Napi::Value drawPoint(const Napi::CallbackInfo& info);
Napi::Value drawPointF(const Napi::CallbackInfo& info);
Napi::Value drawRect(const Napi::CallbackInfo& info);
Napi::Value drawRectF(const Napi::CallbackInfo& info);
Napi::Value drawText(const Napi::CallbackInfo& info);
Napi::Value drawTextF(const Napi::CallbackInfo& info);
Napi::Value end(const Napi::CallbackInfo& info); Napi::Value end(const Napi::CallbackInfo& info);
Napi::Value endNativePainting(const Napi::CallbackInfo& info); Napi::Value endNativePainting(const Napi::CallbackInfo& info);
Napi::Value eraseRect(const Napi::CallbackInfo& info);
Napi::Value eraseRectF(const Napi::CallbackInfo& info);
Napi::Value fillRect(const Napi::CallbackInfo& info);
Napi::Value fillRectF(const Napi::CallbackInfo& info);
Napi::Value opacity(const Napi::CallbackInfo& info);
Napi::Value restore(const Napi::CallbackInfo& info);
Napi::Value rotate(const Napi::CallbackInfo& info); Napi::Value rotate(const Napi::CallbackInfo& info);
Napi::Value save(const Napi::CallbackInfo& info);
Napi::Value scale(const Napi::CallbackInfo& info);
Napi::Value setBrush(const Napi::CallbackInfo& info);
Napi::Value setBrushOrigin(const Napi::CallbackInfo& info);
Napi::Value setBrushOriginF(const Napi::CallbackInfo& info);
Napi::Value setCompositionMode(const Napi::CallbackInfo& info);
Napi::Value setFont(const Napi::CallbackInfo& info); Napi::Value setFont(const Napi::CallbackInfo& info);
Napi::Value setOpacity(const Napi::CallbackInfo& info);
Napi::Value setPen(const Napi::CallbackInfo& info); Napi::Value setPen(const Napi::CallbackInfo& info);
Napi::Value setRenderHint(const Napi::CallbackInfo& info); Napi::Value setRenderHint(const Napi::CallbackInfo& info);
Napi::Value setTransform(const Napi::CallbackInfo& info); Napi::Value setTransform(const Napi::CallbackInfo& info);
Napi::Value setBrush(const Napi::CallbackInfo& info); Napi::Value strokePath(const Napi::CallbackInfo& info);
Napi::Value drawLine(const Napi::CallbackInfo& info);
Napi::Value drawEllipse(const Napi::CallbackInfo& info);
Napi::Value drawPie(const Napi::CallbackInfo& info);
Napi::Value scale(const Napi::CallbackInfo& info);
Napi::Value translate(const Napi::CallbackInfo& info); Napi::Value translate(const Napi::CallbackInfo& info);
Napi::Value drawConvexPolygon(const Napi::CallbackInfo& info);
Napi::Value save(const Napi::CallbackInfo& info);
Napi::Value restore(const Napi::CallbackInfo& info);
Napi::Value fillRect(const Napi::CallbackInfo& info);
Napi::Value compositionMode(const Napi::CallbackInfo& info);
Napi::Value setCompositionMode(const Napi::CallbackInfo& info);
Napi::Value opacity(const Napi::CallbackInfo& info);
Napi::Value setOpacity(const Napi::CallbackInfo& info);
}; };

View File

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

View File

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

View File

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

View File

@ -12,17 +12,17 @@
class DLL_EXPORT QPushButtonWrap : public Napi::ObjectWrap<QPushButtonWrap> { class DLL_EXPORT QPushButtonWrap : public Napi::ObjectWrap<QPushButtonWrap> {
QABSTRACTBUTTON_WRAPPED_METHODS_DECLARATION QABSTRACTBUTTON_WRAPPED_METHODS_DECLARATION
private: private:
QPointer<NPushButton> instance; QPointer<QPushButton> 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);
QPushButtonWrap(const Napi::CallbackInfo& info); QPushButtonWrap(const Napi::CallbackInfo& info);
~QPushButtonWrap(); ~QPushButtonWrap();
NPushButton* getInternalInstance(); QPushButton* getInternalInstance();
// class constructor // class constructor
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;
// wrapped methods // wrapped methods
Napi::Value setMenu(const Napi::CallbackInfo& info); Napi::Value setMenu(const Napi::CallbackInfo& info);
Napi::Value menu(const Napi::CallbackInfo& info);
Napi::Value showMenu(const Napi::CallbackInfo& info); Napi::Value showMenu(const Napi::CallbackInfo& info);
}; };

View File

@ -13,14 +13,13 @@ class DLL_EXPORT QRadioButtonWrap : public Napi::ObjectWrap<QRadioButtonWrap> {
QABSTRACTBUTTON_WRAPPED_METHODS_DECLARATION QABSTRACTBUTTON_WRAPPED_METHODS_DECLARATION
private: private:
QPointer<NRadioButton> instance; QPointer<QRadioButton> 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);
QRadioButtonWrap(const Napi::CallbackInfo& info); QRadioButtonWrap(const Napi::CallbackInfo& info);
~QRadioButtonWrap(); ~QRadioButtonWrap();
NRadioButton* getInternalInstance(); QRadioButton* getInternalInstance();
// class constructor // class constructor
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;
// wrapped methods // wrapped methods

View File

@ -11,20 +11,20 @@
class DLL_EXPORT QScrollAreaWrap : public Napi::ObjectWrap<QScrollAreaWrap> { class DLL_EXPORT QScrollAreaWrap : public Napi::ObjectWrap<QScrollAreaWrap> {
QABSTRACTSCROLLAREA_WRAPPED_METHODS_DECLARATION QABSTRACTSCROLLAREA_WRAPPED_METHODS_DECLARATION
private: private:
QPointer<NScrollArea> instance; QPointer<QScrollArea> instance;
YGNodeRef scrollNode;
public: public:
static Napi::Object init(Napi::Env env, Napi::Object exports); static Napi::Object init(Napi::Env env, Napi::Object exports);
QScrollAreaWrap(const Napi::CallbackInfo& info); QScrollAreaWrap(const Napi::CallbackInfo& info);
~QScrollAreaWrap(); ~QScrollAreaWrap();
NScrollArea* getInternalInstance(); QScrollArea* getInternalInstance();
// class constructor // class constructor
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;
// wrapped methods // wrapped methods
Napi::Value ensureVisible(const Napi::CallbackInfo& info); Napi::Value ensureVisible(const Napi::CallbackInfo& info);
Napi::Value ensureWidgetVisible(const Napi::CallbackInfo& info); Napi::Value ensureWidgetVisible(const Napi::CallbackInfo& info);
Napi::Value setWidget(const Napi::CallbackInfo& info); Napi::Value setWidget(const Napi::CallbackInfo& info);
Napi::Value widget(const Napi::CallbackInfo& info);
Napi::Value takeWidget(const Napi::CallbackInfo& info); Napi::Value takeWidget(const Napi::CallbackInfo& info);
Napi::Value setViewportMargins(const Napi::CallbackInfo& info); Napi::Value setViewportMargins(const Napi::CallbackInfo& info);
Napi::Value viewportMargins(const Napi::CallbackInfo& info); Napi::Value viewportMargins(const Napi::CallbackInfo& info);

View File

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

View File

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

View File

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

View File

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

View File

@ -0,0 +1,25 @@
#pragma once
#include <QSplitter>
#include "Extras/Export/export.h"
#include "QtWidgets/QFrame/qframe_macro.h"
#include "core/NodeWidget/nodewidget.h"
class DLL_EXPORT NSplitter : public QSplitter, public NodeWidget {
Q_OBJECT
NODEWIDGET_IMPLEMENTATIONS(QSplitter)
public:
using QSplitter::QSplitter;
virtual void connectSignalsToEventEmitter() {
QFRAME_SIGNALS
QObject::connect(this, &QSplitter::splitterMoved, [=](int pos, int index) {
Napi::Env env = this->emitOnNode.Env();
Napi::HandleScope scope(env);
this->emitOnNode.Call({Napi::String::New(env, "splitterMoved"),
Napi::Number::New(env, pos),
Napi::Number::New(env, index)});
});
}
};

View File

@ -0,0 +1,33 @@
#pragma once
#include <napi.h>
#include <QPointer>
#include "Extras/Export/export.h"
#include "QtWidgets/QFrame/qframe_macro.h"
#include "QtWidgets/QSplitter/nsplitter.hpp"
class DLL_EXPORT QSplitterWrap : public Napi::ObjectWrap<QSplitterWrap> {
QFRAME_WRAPPED_METHODS_DECLARATION
private:
QPointer<QSplitter> instance;
public:
static Napi::Object init(Napi::Env env, Napi::Object exports);
QSplitterWrap(const Napi::CallbackInfo& info);
~QSplitterWrap();
QSplitter* getInternalInstance();
// class constructor
static Napi::FunctionReference constructor;
// wrapped methods
Napi::Value addWidget(const Napi::CallbackInfo& info);
Napi::Value childrenCollapsible(const Napi::CallbackInfo& info);
Napi::Value count(const Napi::CallbackInfo& info);
Napi::Value indexOf(const Napi::CallbackInfo& info);
Napi::Value insertWidget(const Napi::CallbackInfo& info);
Napi::Value isCollapsible(const Napi::CallbackInfo& info);
Napi::Value orientation(const Napi::CallbackInfo& info);
Napi::Value setCollapsible(const Napi::CallbackInfo& info);
Napi::Value setOrientation(const Napi::CallbackInfo& info);
};

View File

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

View File

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

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