diff --git a/README.md b/README.md index 340fe9b..cba3ea0 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,21 @@ # PyUIBuilder - The only Python GUI builder you'll ever need +
- - +Build Python GUI's with the ease of Canva @@ -10,9 +23,82 @@ * Framework agnostic - Can outputs code in multiple frameworks. * Easy to use. * Plugins to extend 3rd party UI libraries -* Generate Code. +* Generates Code. ## Roadmap +Here are some of the upcoming features. +* Treeview on the sidebar +* Kivy Framework support +* Pyqt/PySide Support +* **Downloadable Electron app** and more. + +To learn more/ see upcoming features visit [roadmap](./roadmap.md) -### All code generated by the builder tools are under MIT license and can be used commercially \ No newline at end of file +## License + +To support open-source and development of this tool, consider buying a one-time license. + +License will give you access to upcoming features, early access and more. + +The discount's will be available for limited time only on pre-orders. + +| Type | Free | Premium - Hobbyist / Per user | Premium - Commercial / Per user | +|-------------------------------------------------------------------|-------------------|----------------------------------------------------------|------------------------------------------------------------| +| **Support open-source development** | 👍️ | 😎 | 🚀 | +| **Priority support** - (priorities your feature requests, issues) | community support | ✅ | ✅ | +| **Lifetime license** (one-time purchase) | 👍️ | ✅ | ✅ | +| **Early access** to upcoming features | ❌ | ✅ | ✅ | +| **Downloadable Electron App** (upcoming) | ❌ | ✅ | ✅ | +| **Run Preview live**(upcoming) | ❌ | ✅ | ✅ | +| **Save and Load UI files** (upcoming) | ❌ | ✅ | ✅ | +| **Load 3rd party plugins locally** | ❌ | ✅ | ✅ | +| **Dark theme** (upcoming) | ❌ | ✅ | ✅ | +| **Commercial Use** | ✅ | ❌ | ✅ | +| **Support for PyQt/PySide frameworks** (upcoming) | ❌ | ❌ | ✅ | +| **More upcoming features and support** | ❓️ | ✅ | ✅ | +| **Price** | - | ~~$129~~ $29 (save 77.52% for limited time on pre-order) | ~~180~~ $49 (Save 72.78% for a limited time on pre-orders) | +| Pre-order now! | | [Get license]() | [Get license]() | + + +## FAQ + + +1. **Why do I need a GUI builder?** + + **A.** GUI builders assist you quickly create GUI without learning too much about GUI frameworks. It can also help you quickly prototype and see things visually. + +2. **Do I need to purchase a license to use this?** + + **A.** Webbased editor will remain free to use. To support open-source development, If you want a downloadable exe for local development and additional features, you'll need to purchase license based on your needs (hobbiest / commercial) + +3. **How does this compare to other UI builders?** + + **A.** + * Most GUI builders out there are framework specific, this UI Builder tool is framework independent. + + * This outputs code in Python, not in XML or other formats which can be hard to debug. So its easier to modify even after downloading the code. + + * Support for 3rd party UI libraries. Many GUI builders don't come with support for 3rd party libraries. + +## License Information + +To support development of this project, license differ depending on the usecase. + +#### Webbased Editor +* All code generated by the builder tools are licensed under MIT and can be used commercially + +#### Electron App - Hobbyist License +This is meant for students and hobbiest's +* All code generated by the builder tools are free to use for non-commercial purposes. If you are using + this for a startup or your business you'll need to get a business license. + +#### Electron App - Commercial License +This is meant for business usecases, you can use the code even for commercial use. +* All code generated by the builder tools are free to use for commercial and non-commercial purposes. If you are using this for a startup or your business you'll need to get a commercial license. + + + +## Author +* Paul +* Github: PaulleDemon \ No newline at end of file diff --git a/assets/share/1.png b/assets/share/1.png new file mode 100644 index 0000000..124c6a3 Binary files /dev/null and b/assets/share/1.png differ diff --git a/assets/share/2.png b/assets/share/2.png new file mode 100644 index 0000000..1d13164 Binary files /dev/null and b/assets/share/2.png differ diff --git a/assets/share/3.png b/assets/share/3.png new file mode 100644 index 0000000..10adfb1 Binary files /dev/null and b/assets/share/3.png differ diff --git a/assets/share/4.png b/assets/share/4.png new file mode 100644 index 0000000..059716c Binary files /dev/null and b/assets/share/4.png differ diff --git a/notes.md b/notes.md index e0c1c09..a3e9c64 100644 --- a/notes.md +++ b/notes.md @@ -1 +1,2 @@ -### State management in react is a f*king mess \ No newline at end of file +### State management in react is a f*king mess +### Update to TypeScript \ No newline at end of file diff --git a/roadmap.md b/roadmap.md index 786ef74..538f58d 100644 --- a/roadmap.md +++ b/roadmap.md @@ -9,6 +9,7 @@ Any feature that has 👑 beside it, is meant only for [premium users](./readme. - [ ] UI fixes and enhancement - [ ] Tree view for elements on the canvas - [ ] Add text editor to support event handlers +- [ ] Support more widgets - [ ] Rewrite DND for better feedback - (swappy/react-dnd-kit/ GSAP draggable) - [ ] Duplicate widgets @@ -23,6 +24,7 @@ Any feature that has 👑 beside it, is meant only for [premium users](./readme. ### 2.0.0 - [ ] Support for more third party plugins - [ ] Support more templates +- [ ] Allow creating components - [ ] Support for Kivy - [ ] Sharable Templates - [ ] Dark theme 👑 diff --git a/src/canvas/canvas.js b/src/canvas/canvas.js index 9accaab..17c9163 100644 --- a/src/canvas/canvas.js +++ b/src/canvas/canvas.js @@ -713,6 +713,8 @@ class Canvas extends React.Component { throw new Error("widgetComponentType must be a subclass of Widget class") } + console.log("componete: ", widgetComponentType) + const widgetRef = React.createRef() const id = `${widgetComponentType.widgetType}_${UID()}` @@ -842,7 +844,7 @@ class Canvas extends React.Component { // TODO: handle drop from sidebar // if the widget is being dropped from the sidebar, use the info to create the widget first - this.createWidget(Widget, ({ id, widgetRef }) => { + this.createWidget(widgetClass, ({ id, widgetRef }) => { widgetRef.current.setPos(finalPosition.x, finalPosition.y) }) @@ -968,6 +970,7 @@ class Canvas extends React.Component { {/*