From 49873c01e169b76733ce548ee3b15b5ea88459b9 Mon Sep 17 00:00:00 2001 From: Atul R Date: Sat, 17 Aug 2019 19:28:11 +0200 Subject: [PATCH] Moves examples to a separate repo and removes dependency on bindings node module --- README.md | 12 +- examples/README.md | 7 + examples/calculator/README.md | 23 -- examples/calculator/calculator_linux.png | Bin 15863 -> 0 bytes examples/calculator/calculator_mac.png | Bin 70043 -> 0 bytes examples/calculator/calculator_win.jpg | Bin 29315 -> 0 bytes examples/calculator/index.ts | 311 ----------------------- package-lock.json | 13 - package.json | 6 +- demo.ts => src/demo.ts | 2 +- src/index.ts | 23 ++ src/lib/core/addon.ts | 3 +- src/lib/index.ts | 23 -- tsconfig.json | 6 +- 14 files changed, 44 insertions(+), 385 deletions(-) create mode 100644 examples/README.md delete mode 100644 examples/calculator/README.md delete mode 100644 examples/calculator/calculator_linux.png delete mode 100644 examples/calculator/calculator_mac.png delete mode 100644 examples/calculator/calculator_win.jpg delete mode 100644 examples/calculator/index.ts rename demo.ts => src/demo.ts (98%) create mode 100644 src/index.ts delete mode 100644 src/lib/index.ts diff --git a/README.md b/README.md index e2ae337f3..515e1ac3a 100644 --- a/README.md +++ b/README.md @@ -13,9 +13,9 @@ Visit: https://nodegui.github.io/nodegui for docs. ## How does it look?
-demo_linux -demo_win -demo_mac +demo_linux +demo_win +demo_mac
kitchendemo_macdemo_win @@ -23,9 +23,11 @@ Visit: https://nodegui.github.io/nodegui for docs. **More screenshots?** -[See examples](https://github.com/nodegui/nodegui/tree/master/examples/) +### More Examples: -[See React based examples](https://github.com/nodegui/react-nodegui/tree/master/examples/) +https://github.com/nodegui/examples + +--- ## Features diff --git a/examples/README.md b/examples/README.md new file mode 100644 index 000000000..92d5c68d3 --- /dev/null +++ b/examples/README.md @@ -0,0 +1,7 @@ +# Examples + +Examples have now moved to a repo of their own + +They are all available at: + +https://github.com/nodegui/examples diff --git a/examples/calculator/README.md b/examples/calculator/README.md deleted file mode 100644 index 448523708..000000000 --- a/examples/calculator/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# Calculator app - -This example showcases how to build a basic calculator clone. - -### Screenshots - -**Linux** - -demo_linux - -**Windows** - -demo_win - -**Mac:** - -demo_mac - -To run the demo: - -1. `yarn build` - -2. `yarn qode dist/examples/calculator/index.js` diff --git a/examples/calculator/calculator_linux.png b/examples/calculator/calculator_linux.png deleted file mode 100644 index cfcca2946223135116582c8bff83c7dd9ce5cf7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15863 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�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 diff --git a/examples/calculator/calculator_win.jpg b/examples/calculator/calculator_win.jpg deleted file mode 100644 index 88d123988fe96b0e9cefa6c12d044a8e12989fbd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29315 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 kzx~JzGg<-l_O+I#U||2iSaC?f?J) diff --git a/examples/calculator/index.ts b/examples/calculator/index.ts deleted file mode 100644 index ca2583466..000000000 --- a/examples/calculator/index.ts +++ /dev/null @@ -1,311 +0,0 @@ -import { QMainWindow } from "../../src/lib/QtWidgets/QMainWindow"; -import { QWidget } from "../../src/lib/QtGui/QWidget"; -import { FlexLayout } from "../../src/lib/core/FlexLayout"; -import { - QPushButton, - QPushButtonEvents -} from "../../src/lib/QtWidgets/QPushButton"; -import { QLabel } from "../../src/lib/QtWidgets/QLabel"; -import { BaseWidgetEvents } from "../../src/lib/core/EventWidget"; -import { QKeyEvent } from "../../src/lib/QtGui/QEvent/QKeyEvent"; - -const globals = global as any; - -// =============== -// UI AND DESIGN -// =============== -const getButton = ( - label: string, - value: number | string, - type: "value" | "command" -) => { - const button = new QPushButton(); - button.setText(label); - button.setObjectName(`btn${value}`); - button.addEventListener(QPushButtonEvents.clicked, () => { - onBtnClick(value, type); - }); - return { - ui: button, - value, - type - }; -}; - -// Main Window -const win = new QMainWindow(); -win.resize(230, 300); - -// Root view -const rootView = new QWidget(); -win.addEventListener(BaseWidgetEvents.KeyRelease, nativeEvent => { - const keyEvt = new QKeyEvent(nativeEvent); - const text = keyEvt.text(); - const isNotNumber = isNaN(parseInt(text)); - onBtnClick(text, isNotNumber ? "command" : "value"); -}); -rootView.setObjectName("rootView"); //This is like ids in web world -win.setCentralWidget(rootView); -const rootStyleSheet = ` -* { - font-size: 20px; - color: white; -} - -QPushButton { - min-width: '25%'; - border: 1px solid black; -} - -QPushButton:pressed { - background: grey; -} - -#rootView { - flex: 1; - flex-direction: column; -} - -#btnAC { - min-width: '25%'; - border-right: 2px solid black; -} - -#resultText { - flex: 1; - qproperty-alignment: 'AlignRight|AlignVCenter'; - padding-right: 5px; - font-size: 40px; -} - -#row0,#row1,#row2,#row3,#row4 { - flex: 1; - align-items: stretch; - justify-content: space-between; - flex-direction: row; -} - -#row0 * { - background: #1E1E1E; -} - -#row0 QPushButton:pressed { - background: grey; -} - -#row1 QPushButton { - background: #2E2E2E; -} - -#row1 QPushButton:pressed { - background: grey; -} - - -#row2 QPushButton, #row2 QPushButton, #row3 QPushButton, #row4 QPushButton { - background: #4B4B4B; -} - -#row2 QPushButton:pressed, #row2 QPushButton:pressed, #row3 QPushButton:pressed, #row4 QPushButton:pressed { - background: grey; -} -`; - -const operatorStyleSheet = ` -QPushButton { - background: #FD8D0E; -} - -QPushButton:pressed { - background: grey; -} -`; - -rootView.setStyleSheet(rootStyleSheet); -const rootViewFlexLayout = new FlexLayout(); -rootViewFlexLayout.setFlexNode(rootView.getFlexNode()); -rootView.setLayout(rootViewFlexLayout); - -// Top Row -const btnClear = getButton("AC", "AC", "command"); -const resultText = new QLabel(); -resultText.setObjectName("resultText"); -resultText.setText(0); -const row0 = new QWidget(); -row0.setObjectName("row0"); - -const row0Layout = new FlexLayout(); -row0Layout.setFlexNode(row0.getFlexNode()); -row0.setLayout(row0Layout); -row0Layout.addWidget(btnClear.ui, btnClear.ui.getFlexNode()); -row0Layout.addWidget(resultText, resultText.getFlexNode()); - -// First Row -const btn7 = getButton("7", 7, "value"); -const btn8 = getButton("8", 8, "value"); -const btn9 = getButton("9", 9, "value"); -const btnDivide = getButton("/", "/", "command"); -btnDivide.ui.setStyleSheet(operatorStyleSheet); -const row1 = new QWidget(); -row1.setObjectName("row1"); -const row1Layout = new FlexLayout(); -row1Layout.setFlexNode(row1.getFlexNode()); -row1Layout.addWidget(btn7.ui, btn7.ui.getFlexNode()); -row1Layout.addWidget(btn8.ui, btn8.ui.getFlexNode()); -row1Layout.addWidget(btn9.ui, btn9.ui.getFlexNode()); -row1Layout.addWidget(btnDivide.ui, btnDivide.ui.getFlexNode()); -row1.setLayout(row1Layout); - -// Second Row -const btn4 = getButton("4", 4, "value"); -const btn5 = getButton("5", 5, "value"); -const btn6 = getButton("6", 6, "value"); -const btnMultiply = getButton("x", "*", "command"); -btnMultiply.ui.setStyleSheet(operatorStyleSheet); -const row2 = new QWidget(); -row2.setObjectName("row2"); -const row2Layout = new FlexLayout(); -row2Layout.setFlexNode(row2.getFlexNode()); -row2Layout.addWidget(btn4.ui, btn4.ui.getFlexNode()); -row2Layout.addWidget(btn5.ui, btn5.ui.getFlexNode()); -row2Layout.addWidget(btn6.ui, btn6.ui.getFlexNode()); -row2Layout.addWidget(btnMultiply.ui, btnMultiply.ui.getFlexNode()); -row2.setLayout(row2Layout); - -// Third Row -const btn1 = getButton("1", 1, "value"); -const btn2 = getButton("2", 2, "value"); -const btn3 = getButton("3", 3, "value"); -const btnMinus = getButton("-", "-", "command"); -btnMinus.ui.setStyleSheet(operatorStyleSheet); - -const row3 = new QWidget(); -row3.setObjectName("row3"); - -const row3Layout = new FlexLayout(); -row3Layout.setFlexNode(row3.getFlexNode()); -row3Layout.addWidget(btn1.ui, btn1.ui.getFlexNode()); -row3Layout.addWidget(btn2.ui, btn2.ui.getFlexNode()); -row3Layout.addWidget(btn3.ui, btn3.ui.getFlexNode()); -row3Layout.addWidget(btnMinus.ui, btnMinus.ui.getFlexNode()); -row3.setLayout(row3Layout); - -// Fourth Row -const btn0 = getButton("0", 0, "value"); -const btnDot = getButton(".", ".", "command"); -const btnEquals = getButton("=", "=", "command"); -const btnPlus = getButton("+", "+", "command"); -btnPlus.ui.setStyleSheet(operatorStyleSheet); - -const row4 = new QWidget(); -row4.setObjectName("row4"); -const row4Layout = new FlexLayout(); -row4Layout.setFlexNode(row4.getFlexNode()); -row4Layout.addWidget(btn0.ui, btn0.ui.getFlexNode()); -row4Layout.addWidget(btnDot.ui, btnDot.ui.getFlexNode()); -row4Layout.addWidget(btnEquals.ui, btnEquals.ui.getFlexNode()); -row4Layout.addWidget(btnPlus.ui, btnPlus.ui.getFlexNode()); -row4.setLayout(row4Layout); - -// Add to root view -rootViewFlexLayout.addWidget(row0, row0.getFlexNode()); -rootViewFlexLayout.addWidget(row1, row1.getFlexNode()); -rootViewFlexLayout.addWidget(row2, row2.getFlexNode()); -rootViewFlexLayout.addWidget(row3, row3.getFlexNode()); -rootViewFlexLayout.addWidget(row4, row4.getFlexNode()); - -win.show(); - -globals.win = win; //to keep gc from collecting ui widgets - -// ======================== -// CALC APP LOGIC - LOGIC -// ======================== -// This is probably the worst calculator logic ever but the purpose of demo is to showcase the UI and not the js logic. -// Read ahead of this line at your own risk. - -let displayText = "0"; -let currentInputString = ""; -let total = 0; -let previousOperator = "+"; - -var onBtnClick = (value: number | string, type: "value" | "command") => { - if ( - ![ - "0", - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "+", - "-", - "/", - "*", - "=", - "AC" - ].includes(`${value}`) - ) { - return; - } - if (type === "value" || value === ".") { - currentInputString += value; - displayText = currentInputString; - } else { - const currentInput = parseFloat(currentInputString || "0"); - if (!previousOperator) { - if (currentInputString) { - total = currentInput; - } - } - if (!currentInputString && value === "=") { - previousOperator = "+"; - } - switch (previousOperator) { - case "+": { - total += currentInput; - break; - } - case "-": { - total -= currentInput; - break; - } - case "*": { - total *= currentInput; - break; - } - case "/": { - total /= currentInput; - break; - } - } - currentInputString = ""; - - if (value === "=") { - displayText = String(total); - previousOperator = ""; - } else { - previousOperator = String(value); - displayText = previousOperator; - } - } - - if (value === "AC") { - displayText = "0"; - currentInputString = ""; - total = 0; - previousOperator = "+"; - } - - if (Number.isNaN(total)) { - total = 0; - displayText = "Error"; - } - - // SET THE FINAL TEXT - resultText.setText(displayText); -}; diff --git a/package-lock.json b/package-lock.json index cb0b6d3b7..249e4bf21 100644 --- a/package-lock.json +++ b/package-lock.json @@ -195,14 +195,6 @@ "tweetnacl": "^0.14.3" } }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "requires": { - "file-uri-to-path": "1.0.0" - } - }, "boxen": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", @@ -637,11 +629,6 @@ "pend": "~1.2.0" } }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" - }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", diff --git a/package.json b/package.json index 7caf50c1f..09f939de9 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "@nodegui/nodegui", "version": "0.1.3", "description": "A cross platform library to build native desktop apps.", - "main": "dist/src/lib/index.js", + "main": "dist/index.js", "files": [ "dist", "config", @@ -18,8 +18,7 @@ "dev": "npm run build && qode dist/demo.js", "install": "npm -v", "postinstall": "npm run build:addon", - "build": "npm run build:lib && npm run build:addon", - "build:lib": "tsc", + "build": "tsc && npm run build:addon", "build:addon": "node-gyp -j 8 configure build", "rebuild:addon": "node-gyp -j 8 rebuild", "automoc": "node ./scripts/automoc.js", @@ -27,7 +26,6 @@ }, "dependencies": { "@nodegui/qode": "^1.0.2", - "bindings": "^1.5.0", "cuid": "^2.1.6", "node-addon-api": "^1.6.3", "node-gyp": "^4.0.0", diff --git a/demo.ts b/src/demo.ts similarity index 98% rename from demo.ts rename to src/demo.ts index cb2cab677..064fcbced 100644 --- a/demo.ts +++ b/src/demo.ts @@ -8,7 +8,7 @@ import { QRadioButton, FlexLayout, QWidget -} from "./src/lib/index"; +} from "./index"; const win = new QMainWindow(); diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 000000000..4e02edbdf --- /dev/null +++ b/src/index.ts @@ -0,0 +1,23 @@ +// enums +export { AspectRatioMode, WidgetAttribute, WindowType } from "./lib/QtEnums"; +export { QApplication } from "./lib/QtGui/QApplication"; +export { QWidget, QWidgetEvents } from "./lib/QtGui/QWidget"; +export { QPixmap } from "./lib/QtGui/QPixmap"; +// Abstract: +export { NodeWidget } from "./lib/QtGui/QWidget"; +export { NodeLayout } from "./lib/QtWidgets/QLayout"; +// Widgets: +export { QCheckBox, QCheckBoxEvents } from "./lib/QtWidgets/QCheckBox"; +export { QLabel, QLabelEvents } from "./lib/QtWidgets/QLabel"; +export { QLineEdit, QLineEditEvents } from "./lib/QtWidgets/QLineEdit"; +export { QMainWindow, QMainWindowEvents } from "./lib/QtWidgets/QMainWindow"; +export { QProgressBar, QProgressBarEvents } from "./lib/QtWidgets/QProgressBar"; +export { QPushButton, QPushButtonEvents } from "./lib/QtWidgets/QPushButton"; +export { QRadioButton, QRadioButtonEvents } from "./lib/QtWidgets/QRadioButton"; +// Layouts: +export { QGridLayout } from "./lib/QtWidgets/QGridLayout"; +export { FlexLayout } from "./lib/core/FlexLayout"; +// Events : Maybe a separate module ? +export { QKeyEvent } from "./lib/QtGui/QEvent/QKeyEvent"; +export { NativeEvent } from "./lib/core/EventWidget"; +export { StyleSheet } from "./lib/core/Style/StyleSheet"; diff --git a/src/lib/core/addon.ts b/src/lib/core/addon.ts index 59d68acbe..a38d93de5 100644 --- a/src/lib/core/addon.ts +++ b/src/lib/core/addon.ts @@ -1,4 +1,3 @@ -import bindings from "bindings"; -const addon = bindings("qtnode"); +const addon = require("../../../build/Release/qtnode.node"); export default addon; diff --git a/src/lib/index.ts b/src/lib/index.ts deleted file mode 100644 index ce14ab185..000000000 --- a/src/lib/index.ts +++ /dev/null @@ -1,23 +0,0 @@ -// enums -export { AspectRatioMode, WidgetAttribute, WindowType } from "./QtEnums"; -export { QApplication } from "./QtGui/QApplication"; -export { QWidget, QWidgetEvents } from "./QtGui/QWidget"; -export { QPixmap } from "./QtGui/QPixmap"; -// Abstract: -export { NodeWidget } from "./QtGui/QWidget"; -export { NodeLayout } from "./QtWidgets/QLayout"; -// Widgets: -export { QCheckBox, QCheckBoxEvents } from "./QtWidgets/QCheckBox"; -export { QLabel, QLabelEvents } from "./QtWidgets/QLabel"; -export { QLineEdit, QLineEditEvents } from "./QtWidgets/QLineEdit"; -export { QMainWindow, QMainWindowEvents } from "./QtWidgets/QMainWindow"; -export { QProgressBar, QProgressBarEvents } from "./QtWidgets/QProgressBar"; -export { QPushButton, QPushButtonEvents } from "./QtWidgets/QPushButton"; -export { QRadioButton, QRadioButtonEvents } from "./QtWidgets/QRadioButton"; -// Layouts: -export { QGridLayout } from "./QtWidgets/QGridLayout"; -export { FlexLayout } from "./core/FlexLayout"; -// Events : Maybe a separate module ? -export { QKeyEvent } from "./QtGui/QEvent/QKeyEvent"; -export { NativeEvent } from "./core/EventWidget"; -export { StyleSheet } from "./core/Style/StyleSheet"; diff --git a/tsconfig.json b/tsconfig.json index 8db180b56..f11ab0435 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -14,8 +14,8 @@ "outDir": "./dist" /* Redirect output structure to the directory. */, // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ // "composite": true, /* Enable project compilation */ - "incremental": true, /* Enable incremental compilation */ - "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo", /* Specify file to store incremental compilation information */ + // "incremental": true, /* Enable incremental compilation */ + // "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" /* Specify file to store incremental compilation information */, // "removeComments": true, /* Do not emit comments to output. */ // "noEmit": true, /* Do not emit outputs. */ // "importHelpers": true, /* Import emit helpers from 'tslib'. */ @@ -60,5 +60,5 @@ // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ "resolveJsonModule": true }, - "include": ["."] + "include": ["src"] }