Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New interface #18

Merged
merged 274 commits into from
Sep 2, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
274 commits
Select commit Hold shift + click to select a range
012fe4f
Qt6: Back to Qt.labs.settings before Qt 6.5
AndrewSazonov Feb 2, 2023
88e7f84
Qt6: Fixed GroupBox component
AndrewSazonov Feb 3, 2023
864c086
Qt6: Use Dialogs from Qt.labs.platform instead of QtQuick.Dialogs
AndrewSazonov Feb 3, 2023
60589ea
Qt6: Add comment `Parameter "mouse" is not declared` for future fix
AndrewSazonov Feb 3, 2023
0923b36
Qt6: Remove modules version number for easyApp
AndrewSazonov Feb 3, 2023
aee6287
Capitalize first letter in easyApp -> EasyApp
AndrewSazonov Feb 3, 2023
c5e275e
Qt6: QtQuick.Dialogs seems better than Qt.labs.platform
AndrewSazonov Feb 3, 2023
6fe6b0b
Remove wrong SPDX header
AndrewSazonov Feb 7, 2023
76e538f
Add splash screen implementation
AndrewSazonov Feb 7, 2023
3404749
Modify splash screen to simplify live preview
AndrewSazonov Feb 7, 2023
bdfdaf1
Remove QtCharts, Bokeh and ChemDoodle
AndrewSazonov Feb 9, 2023
0de2d11
Add some default chart sizes
AndrewSazonov Feb 9, 2023
cbad891
Add title to the `parameter` component
AndrewSazonov Feb 9, 2023
0f11fa0
Extend basic Plotly 1d Line chart
AndrewSazonov Feb 9, 2023
68e39fb
Implement new Plotly 1D chart: Measured vs Calculated data
AndrewSazonov Feb 9, 2023
bca9ed7
Move html templates into separate dir
AndrewSazonov Feb 9, 2023
68bdfe5
Add draft of the basic report
AndrewSazonov Feb 9, 2023
3ab4d4d
Add pyproject.toml
AndrewSazonov Feb 13, 2023
946dbc2
Fix pyproject.toml
AndrewSazonov Feb 13, 2023
86b3be2
Continue improving BasicReport template
AndrewSazonov Feb 13, 2023
5cf0a75
Plotly 1.58.5 -> 2.18.0
AndrewSazonov Feb 13, 2023
e1c34ca
Remove old plotly 1.58.5
AndrewSazonov Feb 13, 2023
6f1d429
Try with 'scattergl' instead of 'scatter' as default in plotly
AndrewSazonov Feb 13, 2023
3be663c
Get rid of miscProxy
AndrewSazonov Feb 14, 2023
ead7bba
Remove default placeholder text from Parameter element
AndrewSazonov Feb 14, 2023
dd3d088
Fix project description
AndrewSazonov Feb 14, 2023
8abaefe
Add useWebGL property
AndrewSazonov Feb 15, 2023
c7a3d05
Hide splash screen right after app window is loaded
AndrewSazonov Feb 16, 2023
aa10592
Modify RemoteController
AndrewSazonov Feb 22, 2023
084b0e4
Try to capitalize package name
AndrewSazonov Feb 22, 2023
43d017d
Try poetry
AndrewSazonov Feb 22, 2023
39ca3b4
Capitalize EasyApp from easyApp
AndrewSazonov Feb 22, 2023
59cde7d
Back to hatch
AndrewSazonov Feb 22, 2023
dc8f1fe
Allow py3.11
AndrewSazonov Feb 22, 2023
b831b38
Hardcode axes ranges
AndrewSazonov Feb 22, 2023
7d50618
Fix warning: Parameter "mouse" is not declared
AndrewSazonov Feb 22, 2023
c969b5c
Fix 1d plot webgl toggler
AndrewSazonov Feb 23, 2023
bce47d1
Add read write file functions
AndrewSazonov Feb 24, 2023
c85edc8
Split x and y datasets for charts
AndrewSazonov Feb 27, 2023
bc8936f
Cleaning up / renaiming
AndrewSazonov Feb 27, 2023
8bd4e73
Show tooltip on slider hover
AndrewSazonov Feb 27, 2023
e4113b5
Refactor table view and status bar
AndrewSazonov Mar 1, 2023
aa9f740
Add missing functions to remote controller
AndrewSazonov Mar 1, 2023
50d5659
Update Plotly1d chart
AndrewSazonov Mar 17, 2023
4c3b821
Update TableView
AndrewSazonov Mar 17, 2023
5467283
Add basic QtCharts
AndrewSazonov Mar 17, 2023
a3579bf
EaGlobals.Variables -> EaGlobals.Vars
AndrewSazonov Mar 17, 2023
ad0a71f
Add background line
AndrewSazonov Mar 30, 2023
3a4a4cf
Fix status bar model key names
AndrewSazonov Apr 13, 2023
e24dbe1
TableView: disable save-restore current state
AndrewSazonov Apr 13, 2023
d2703ed
Fix `Qt.labs.settings is deprecated` for Qt6.5
AndrewSazonov Apr 13, 2023
536b26c
Fix `The current style does not support customization`
AndrewSazonov Apr 13, 2023
eaaa02b
Find `Using a Component as the root of a qmldocument is deprecated`
AndrewSazonov Apr 13, 2023
f5d8d56
Split header and delegate in TableView
AndrewSazonov Apr 17, 2023
d4dcb18
Clean up TableView
AndrewSazonov Apr 18, 2023
70f8da5
Add children count property to SideBarColumn
AndrewSazonov Apr 18, 2023
fce6e5b
Add axis ranges to plotly chart
AndrewSazonov Apr 18, 2023
3edf811
Update persistent settings
AndrewSazonov Apr 19, 2023
6735e53
Enable logging level selector in app preferences
AndrewSazonov Apr 19, 2023
030a0db
Set QtCharts to be default 1d plotting lib
AndrewSazonov Apr 19, 2023
d87bf3d
The same useOpenGL property for all chart series
AndrewSazonov Apr 24, 2023
6a7a7cc
Hide status bar model element if empty
AndrewSazonov Apr 24, 2023
ffd59bd
Extend logging options
AndrewSazonov Apr 26, 2023
7216dd7
Fix logging level model
AndrewSazonov Apr 26, 2023
90f87c6
Move logger to EasyApp
AndrewSazonov May 3, 2023
da0d0d4
Splash screen animation
AndrewSazonov May 9, 2023
ac9e747
Extend and fix `fitting in progress` label
AndrewSazonov May 9, 2023
f2db657
Fix fitting label animation type
AndrewSazonov May 9, 2023
ef811c5
Make base 1d chart
AndrewSazonov May 10, 2023
2a77f2c
Split logging message into chunks
AndrewSazonov May 10, 2023
7bebbb6
Fix logging
AndrewSazonov May 10, 2023
bbd4b3d
Split qtchart to base and main
AndrewSazonov May 10, 2023
7625107
Fix module name
AndrewSazonov May 10, 2023
1a702c5
Set color for calc series
AndrewSazonov May 11, 2023
5d1086a
Extend base chart
AndrewSazonov May 12, 2023
e7339e6
Auto width and focus for the `Parameter` element
AndrewSazonov Jun 8, 2023
aa11f17
All sidebar groups are collapsed by default
AndrewSazonov Jun 8, 2023
a0f20f5
No need to set group row width
AndrewSazonov Jun 8, 2023
04283c9
Fix sidebar group inner layout
AndrewSazonov Jun 8, 2023
15c05a4
Update sidebar group row layout
AndrewSazonov Jun 9, 2023
28ddc07
Minor fixes
AndrewSazonov Jun 14, 2023
6a27e45
Some design changes: colors, animation
AndrewSazonov Jun 15, 2023
a614a63
New status bar design
AndrewSazonov Jun 16, 2023
8bdc14a
Add orange color
AndrewSazonov Jun 17, 2023
627979b
Increase sidebar width
AndrewSazonov Jun 20, 2023
7408f51
Extend base QtCharts chart
AndrewSazonov Jun 22, 2023
e861a38
Remove focus on TableView TextEdit field change accepted
AndrewSazonov Jun 23, 2023
c439ba7
Add Font Awesome v.6 (but continue using v.5)
AndrewSazonov Jun 26, 2023
d730e49
Modify 'grey' color
AndrewSazonov Jun 26, 2023
6477460
Modify default vertical padding for check box
AndrewSazonov Jun 26, 2023
949fb51
Fix preferences layout after check box changes
AndrewSazonov Jun 26, 2023
fd59118
Add custom scroll bar
AndrewSazonov Jun 27, 2023
adf4092
Extend base chart with pan functionality
AndrewSazonov Jun 27, 2023
98ce2a9
Add ranges after reset properties
AndrewSazonov Jun 27, 2023
1cdaf3b
Add 'fit' property to some components
AndrewSazonov Jun 27, 2023
8f4d8b6
Add menu component. Extend parameter component
AndrewSazonov Jun 28, 2023
7e8367c
Minor fixes
AndrewSazonov Jun 28, 2023
41f5bd0
Improve parameter component
AndrewSazonov Jun 30, 2023
9b0ed01
TextArea and TabButton functionality ext
AndrewSazonov Jun 30, 2023
00c1654
Fix status bar spacing
AndrewSazonov Jul 4, 2023
c06e05f
Add tooltip to tableview label
AndrewSazonov Jul 6, 2023
a4aaf12
Set default number of digits for parameter value and error
AndrewSazonov Jul 6, 2023
06f9ee0
Clean up
AndrewSazonov Jul 6, 2023
aa40995
Minor style changes for buttons, labels, tables
AndrewSazonov Jul 7, 2023
333ebd9
Clean up
AndrewSazonov Jul 7, 2023
a4824a0
Add background color property
AndrewSazonov Jul 7, 2023
2ff0dfb
Reduce width of the group header clickable area
AndrewSazonov Jul 7, 2023
e655c19
Extend ComboBox and Group parameters
AndrewSazonov Jul 10, 2023
568e953
Add gradient to the sidebar
AndrewSazonov Jul 11, 2023
99d3293
Add extra field to table view parameter
AndrewSazonov Jul 11, 2023
c7da535
Add outline icon property to table button
AndrewSazonov Jul 11, 2023
63e485a
New style for continue button
AndrewSazonov Jul 11, 2023
4b3d84a
Auto-hide and auto last for group boxes
AndrewSazonov Jul 11, 2023
8b263c9
Fix group box title top margin
AndrewSazonov Jul 11, 2023
7cba5db
Minor fixes
AndrewSazonov Jul 12, 2023
7fe9955
Fix group box internal spacing
AndrewSazonov Jul 14, 2023
80ca1a3
Add color reset animation
AndrewSazonov Jul 17, 2023
8d5e264
Reduce tab button icon size
AndrewSazonov Jul 17, 2023
ad0b6f6
Add icon to the group box component
AndrewSazonov Jul 17, 2023
d128f00
Modify status bar
AndrewSazonov Jul 17, 2023
dc8cdac
Highlight title of the unfolded sidebar groups
AndrewSazonov Jul 17, 2023
fa9dc63
Minor fixes
AndrewSazonov Jul 19, 2023
e2f940f
Use HoverHandler to react on hover events. New 2-lines table label
AndrewSazonov Jul 20, 2023
e419180
Fix some cursor shape issues
AndrewSazonov Jul 20, 2023
3d9827f
Increase sidebar button hight
AndrewSazonov Jul 21, 2023
18ce7f3
Multiple changes
AndrewSazonov Aug 10, 2023
4225b15
Fix project name validator
AndrewSazonov Aug 10, 2023
b00dd0b
Disable 1d charting library selector
AndrewSazonov Aug 10, 2023
7c568ed
Modify parameter names format
AndrewSazonov Aug 10, 2023
8b05f8b
Update colors
AndrewSazonov Aug 10, 2023
3bfb190
Disable loading 1d chart lib prom preferences
AndrewSazonov Aug 14, 2023
be418a3
New property for current color palette
AndrewSazonov Aug 15, 2023
a8ce2a9
Save color scheme
AndrewSazonov Aug 15, 2023
8dfd46c
Fix menu background color
AndrewSazonov Aug 15, 2023
d3fb688
Set 'error' to be the default logging level
AndrewSazonov Aug 16, 2023
76e6974
Fix logging header. Need move to EA from ED
AndrewSazonov Aug 16, 2023
6a615a9
Add default project parent dir property
AndrewSazonov Aug 16, 2023
26313f1
Add extended logging to the Updater class
AndrewSazonov Aug 19, 2023
9a17bcb
Update translator
AndrewSazonov Aug 20, 2023
fc9365e
Use categories in CIF
AndrewSazonov Aug 24, 2023
1f618d5
Temporarily disable 'User guides' selector
AndrewSazonov Aug 25, 2023
91ab401
Minor changes
AndrewSazonov Sep 5, 2023
c90dc0e
Increase logging main message width
AndrewSazonov Sep 5, 2023
32429aa
Fixes updater's web date
AndrewSazonov Sep 12, 2023
3425628
Add opacity to the `stop tutorial` button
AndrewSazonov Sep 22, 2023
e37063c
Accept project create dialog on return pressed
AndrewSazonov Nov 3, 2023
b0fce2e
Fix color
AndrewSazonov Nov 5, 2023
75070d8
Try Python 3.12
AndrewSazonov Mar 11, 2024
bba4696
Fix pyside6 version to be 6.5.3 because of the issues on macOS
AndrewSazonov Apr 26, 2024
5e52346
Force using pyside6==6.7.0 and above
AndrewSazonov Apr 26, 2024
569cfee
Force using pyside6==6.6 and above
AndrewSazonov Apr 26, 2024
76637fa
Force using pyside6==6.6 only
AndrewSazonov Apr 26, 2024
e95787a
Keep the scrollbar thin, even if it is interactive
AndrewSazonov Jun 13, 2024
b085c9b
Implement most basic qml and py examples
AndrewSazonov Jul 2, 2024
9601d95
Update readme
AndrewSazonov Jul 2, 2024
29a829d
Fix how to run qml
AndrewSazonov Jul 2, 2024
cfd8b04
Simplify structure
AndrewSazonov Jul 2, 2024
f777af8
Clean up. Minor corrections
AndrewSazonov Jul 2, 2024
2f22ff8
Update the Qt installation instruction
AndrewSazonov Jul 4, 2024
b8fb25b
Add instruction on how to edit GUI in live mode
AndrewSazonov Jul 4, 2024
0236ca1
Update the readme file
AndrewSazonov Jul 4, 2024
33203aa
New way to access the backend and GUI components
AndrewSazonov Jul 5, 2024
b373382
New qml-py-py example
AndrewSazonov Jul 5, 2024
d6cfd3f
Update README.md
AndrewSazonov Jul 5, 2024
de7687d
Add qml-qml-cpp example
AndrewSazonov Jul 5, 2024
bab0d21
Restructure examples
AndrewSazonov Jul 17, 2024
dc952ba
Restructure the whole set of examples
AndrewSazonov Jul 18, 2024
73f6460
Add README.md
AndrewSazonov Jul 18, 2024
af27ed2
Update examples.md
AndrewSazonov Jul 18, 2024
d0f7abb
Add ref to examples
AndrewSazonov Jul 18, 2024
11bfb6c
Move EasyApp to src/EasyApp
AndrewSazonov Jul 18, 2024
698c211
Add link to web app based on BasicMinimalC++
AndrewSazonov Jul 18, 2024
22ebf8c
Clean up
AndrewSazonov Jul 18, 2024
0a58280
Fix qmlproject
AndrewSazonov Jul 18, 2024
f92c917
Add CI to build wasm
AndrewSazonov Jul 19, 2024
6f40397
Add libxkbcommon
AndrewSazonov Jul 19, 2024
28e6d72
Switch to macos
AndrewSazonov Jul 19, 2024
7dd50b8
Cache emsdk and qt
AndrewSazonov Jul 19, 2024
e2c0796
Add build wasm step
AndrewSazonov Jul 19, 2024
980aac6
Fix path to emsdk
AndrewSazonov Jul 19, 2024
b5a1783
Add upload steps to CI
AndrewSazonov Jul 19, 2024
59b00bb
Fix path
AndrewSazonov Jul 19, 2024
083ebc8
Add GITHUB_API_PERSONAL_ACESS_TOKEN
AndrewSazonov Jul 19, 2024
d18fad5
Update readme
AndrewSazonov Jul 19, 2024
86479e2
Fix GH_API_PERSONAL_ACESS_TOKEN
AndrewSazonov Jul 19, 2024
020da24
Change path to Qt installation
AndrewSazonov Jul 19, 2024
1ce471e
Update readme
AndrewSazonov Jul 19, 2024
ce0e921
Change path to Qt
AndrewSazonov Jul 19, 2024
366ece7
Simplify BackendProxy.qml
AndrewSazonov Jul 30, 2024
914c23a
Simplify pyproject.toml
AndrewSazonov Jul 30, 2024
5f19adc
Move the property 'version' back to pyproject.toml
AndrewSazonov Jul 30, 2024
6f2eb97
Add the full path to the logo image in the readme
AndrewSazonov Jul 30, 2024
83bfa45
Minor fixes in examples.md
AndrewSazonov Jul 30, 2024
0dd69fe
Update project description
AndrewSazonov Jul 30, 2024
a3d172a
adjustments BasicMinimalPy
andped10 Aug 5, 2024
9f8ca03
adjustments BasicPy
andped10 Aug 5, 2024
8261a44
adjustments BasicPy
andped10 Aug 5, 2024
d24a886
adjustments IntermediatePy
andped10 Aug 5, 2024
bd72822
vscode
andped10 Aug 5, 2024
1b31695
updates examples.md
andped10 Aug 5, 2024
887909d
adjustment to examples
andped10 Aug 5, 2024
7267bbb
Rename Status.py to status.py
andped10 Aug 5, 2024
5a6a81a
Rename Report.py to report.py
andped10 Aug 5, 2024
7b3299c
Rename Project.py to project.py
andped10 Aug 5, 2024
ef1ffc5
Rename Helpers.py to helpers.py
andped10 Aug 5, 2024
5a9743c
Rename Helpers.py to helpers.py
andped10 Aug 5, 2024
131e688
Rename Project.py to project.py
andped10 Aug 5, 2024
8ce7e6b
Rename Report.py to report.py
andped10 Aug 5, 2024
ad0bcab
Rename Status.py to status.py
andped10 Aug 5, 2024
df04a2e
handle when local EasyApp module is used
andped10 Aug 5, 2024
3af9489
updates to example.md
andped10 Aug 6, 2024
c6c7e97
Update EXAMPLES.md
AndrewSazonov Aug 19, 2024
f52cd9f
Re-order imports
AndrewSazonov Aug 19, 2024
4865b9e
Update application info
AndrewSazonov Aug 19, 2024
d3f92f7
Remove unused __version__.py
AndrewSazonov Aug 19, 2024
e7fa0f7
Update project structure diagram
AndrewSazonov Aug 19, 2024
973451b
Remove missing files from resources.qrc
AndrewSazonov Aug 19, 2024
4892e19
Remove intermediate layer between GUI and backends (old implementation)
AndrewSazonov Aug 23, 2024
9f46afd
Fix name_changed notification
AndrewSazonov Aug 26, 2024
68ae75d
Add docstring
AndrewSazonov Aug 26, 2024
a591fca
Remove proxy access from all objects except the connections handler
AndrewSazonov Aug 26, 2024
53deaed
Remove unused property
AndrewSazonov Aug 26, 2024
7099709
Replace setContextProperty with qmlRegisterSingletonType
AndrewSazonov Aug 29, 2024
02123b1
Implement onObjChanged in the intermediate backend layer
AndrewSazonov Aug 29, 2024
12c1c82
Rename Backend
AndrewSazonov Aug 30, 2024
572707a
Force PySide6>=6.6,<6.7
AndrewSazonov Aug 30, 2024
298c14f
moved entry to python backend to python dir
andped10 Aug 30, 2024
9e60fdd
flat backend
andped10 Aug 30, 2024
1d5211d
renamed to BackendProxy to BackendWrapper
andped10 Aug 30, 2024
7c5841c
Renamed Logic folder to Backends
andped10 Aug 30, 2024
70b123b
removed proxy from backend name
andped10 Aug 30, 2024
37cd4d6
Merge branch 'examples' of https://github.com/easyScience/easyApp int…
andped10 Aug 30, 2024
3dd870e
cleaning BackendWrapper.qml
andped10 Aug 30, 2024
72bfffc
Rename GUI accessible properties and slots following Qt standards
AndrewSazonov Aug 30, 2024
3902340
Move ConnectionsHandler functionality into Backend
AndrewSazonov Aug 30, 2024
11c391d
Move real_backend.py out of RealPy
AndrewSazonov Aug 30, 2024
da03db3
Fix Backend name in debug output
AndrewSazonov Aug 30, 2024
004c782
Fix pyproject structure
AndrewSazonov Aug 30, 2024
45f2ece
Rename RealPy to real_py
AndrewSazonov Aug 30, 2024
2fc57bc
Update the IntermediatePy project diagram
AndrewSazonov Aug 30, 2024
b869b5d
Fix all examples following the IntermediatePy one
AndrewSazonov Aug 30, 2024
0cab3cf
Rename examples (more simple structure)
AndrewSazonov Aug 30, 2024
2056dce
Move non-QObject backend logic into subfolder
AndrewSazonov Aug 30, 2024
e6b0fd2
Simplify examples and add more comments
AndrewSazonov Aug 30, 2024
717e15f
Update descriptions
AndrewSazonov Aug 30, 2024
408b38d
Update readme [ci skip]
AndrewSazonov Aug 30, 2024
b72daa4
Move VS Code initial settings from `vscode/` to `.vscode`
AndrewSazonov Sep 2, 2024
8b496f7
Update readme [ci skip]
AndrewSazonov Sep 2, 2024
09d08fb
Merge pull request #15 from EasyScience/examples
AndrewSazonov Sep 2, 2024
9dc93a1
Merge remote-tracking branch 'origin/develop' into new-easy-app2
AndrewSazonov Sep 2, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
106 changes: 106 additions & 0 deletions .github/workflows/wasm.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
name: wasm

on:
push:
#schedule:
# - cron: '*/120 8-18 * * *' # every 2 hours from 8:00 to 18:00 every day

jobs:
wasm-build: # the first job
# current job matrix. if modified, remember to UPDATE the strategy in the next job
strategy:
fail-fast: false
matrix:
os: [macos-14]

runs-on: ${{ matrix.os }}

timeout-minutes: 30

steps: # job steps
- name: Check-out repository
uses: actions/checkout@v4

- name: Cache emsdk
id: cache-emsdk
uses: actions/cache@v4
with:
path: ${{ github.workspace }}/emsdk
key: ${{ runner.os }}-emsdk

- name: Install emsdk
if: steps.cache-emsdk.outputs.cache-hit != 'true'
shell: bash
run: |
git clone https://github.com/emscripten-core/emsdk.git
cd emsdk
git pull
./emsdk install 3.1.50 # this version is needed for Qt 6.7
./emsdk activate 3.1.50

- name: Cache Qt
id: cache-qt
uses: actions/cache@v4
with:
path: ${{ github.workspace }}/Qt
key: ${{ runner.os }}-qt

- name: Install Qt for WebAssembly
if: steps.cache-qt.outputs.cache-hit != 'true'
shell: bash
run: |
curl -L -O https://download.qt.io/official_releases/online_installers/qt-unified-mac-x64-online.dmg
chmod u+x qt-unified-mac-x64-online.dmg
hdiutil attach qt-unified-mac-x64-online.dmg
/Volumes/qt-online-installer-macOS-x64-4.8.0/qt-online-installer-macOS-x64-4.8.0.app/Contents/MacOS/qt-online-installer-macOS-x64-4.8.0 \
--email ${{ secrets.QT_ACCOUNT_EMAIL }} \
--pw ${{ secrets.QT_ACCOUNT_PASSWORD }} \
--root ${{ github.workspace }}/Qt \
--accept-licenses \
--accept-obligations \
--default-answer \
--confirm-command \
install qt.qt6.672.wasm_singlethread qt.qt6.672.qt5compat
hdiutil detach /Volumes/qt-online-installer-macOS-x64-4.8.0

- name: Print some debug info
shell: bash
run: |
source ${{ github.workspace }}/emsdk/emsdk_env.sh
em++ --version
export PATH=$PATH:${{ github.workspace }}/Qt/6.7.2/wasm_singlethread/bin
qmake -v

- name: Build WASM from BasicC++ example
shell: bash
run: |
source ${{ github.workspace }}/emsdk/emsdk_env.sh
export PATH=$PATH:${{ github.workspace }}/Qt/6.7.2/wasm_singlethread/bin
cd examples/BasicC++/src
qmake BasicC++.pro -spec wasm-emscripten
make -j

- name: Copy the built WASM to the build/wasm folder
shell: bash
run: |
mkdir -p build/wasm
cp examples/BasicC++/src/*.wasm build/wasm
cp examples/BasicC++/src/*.html build/wasm
cp examples/BasicC++/src/*.js build/wasm
cp examples/BasicC++/src/*.svg build/wasm

- name: Upload the zipped wasm folder
uses: actions/upload-artifact@v4
with:
name: wasm # name of the zip file to be created and uploaded
path: build/wasm # directory whose content is to be zipped
compression-level: 0 # no compression
if-no-files-found: error

- name: Push the built wasm to the webapp branch
uses: s0/git-publish-subdir-action@develop
env:
GITHUB_TOKEN: ${{ secrets.GH_API_PERSONAL_ACESS_TOKEN }}
REPO: self
BRANCH: webapp
FOLDER: build/wasm # directory whose content is to be pushed
20 changes: 15 additions & 5 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,17 +1,27 @@
# QtCreator
# Qt Creator
*.autosave

# QtCreator Qml
# Qt Creator Qml
*.qmlproject.user
*.qmlproject.user.*

# QtCreator Python
# Qt Creator Python
*.pyproject.user
*.pyproject.user.*

# QtCreator CMake
# Qt Creator C++
*.pro.user
*.pro.user.*

# Qt Creator CMake
CMakeLists.txt.user*

# VS Code
.vscode/

# PyCharm
.idea/

# Fortran
fort.1

Expand Down Expand Up @@ -41,6 +51,6 @@ build
..*
*.log
*.zip
settings.ini*
temp.cif
.ci/
.idea/
39 changes: 39 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python Debugger: Current File",
"type": "debugpy",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"env": {
"PYTHONPATH": "${cwd}/src"
}
},
{
"name": "Python Debugger: BasicPy",
"type": "debugpy",
"request": "launch",
"program": "${cwd}/examples/BasicPy/src/BasicPy/main.py",
"console": "integratedTerminal",
},
{
"name": "Python Debugger: IntermediatePy",
"type": "debugpy",
"request": "launch",
"program": "${cwd}/examples/IntermediatePy/src/IntermediatePy/main.py",
"console": "integratedTerminal",
},
{
"name": "Python Debugger: AdvancedPy",
"type": "debugpy",
"request": "launch",
"program": "${cwd}/examples/AdvancedPy/src/AdvancedPy/main.py",
"console": "integratedTerminal",
}
]
}
1 change: 0 additions & 1 deletion CHANGELOG.md

This file was deleted.

1 change: 0 additions & 1 deletion CONTRIBUTING.md

This file was deleted.

139 changes: 139 additions & 0 deletions EXAMPLES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
## Types of examples

Different types of examples are given here. All examples have a graphical frontend implemented in QML, but differ in the way the backend logic is implemented and the runtime used to run them. These examples can be categorised as shown in the following table:

| Example | Type | Frontend | Backend | Runtime |
| -------------- | ---- | -------- | -------- | -------------------- |
| BasicQml | I | QML | Mock QML | `qml` tool |
| BasicPy | II | QML | Mock QML | `python` interpreter |
| IntermediatePy | III | QML | Python | `python` interpreter |
| AdvancedPy | III | QML | Python | `python` interpreter |
| BasicC++ | IV | QML | Mock QML | need to be compiled |

## Setting up Python and IDE

### Python environment

* Create and activate a python environment (_optional_)

***macOS and Linux***

```
python3.11 -m venv .venv
source .venv/bin/activate
```

***Windows***

```
python3.11 -m venv .venv
.venv\Scripts\activate
```

* Upgrade PIP, the package installer for Python (_optional_)

```
pip install --upgrade pip
```

* Install the Qt for Python `PySide6` package using PIP

```
pip install --force-reinstall "PySide6>=6.6,<6.7"
```

### Integrated development environment (IDE)

#### Qt Creator

Qt Creator is a prefered IDE for developing the GUI in QML. It allows to run QML code in debug mode with breakpoints, preview changes to QML code in live mode, has build in documentation for QML modules, has QML code auto-completion, and more unique feature related to the QML code.

* Download Qt Online Installer from [qt.io](https://www.qt.io/download-qt-installer-oss). More info at [doc.qt.io](https://doc.qt.io/qt-6/qt-online-installation.html).
* Install Qt for desktop development using a custom installation that includes the following components:
* Qt
* [ ] Qt 6.7.z
* [x] Desktop (***macOS***) or MSVC 2019 64-bit (***Windows***)
* [x] Qt 5 Compatibility Module
* [x] Qt Shader Tools
* [ ] Additional Libraries
* [x] Qt Charts
* [ ] Developer and Designer Tools
* [x] Qt Creator x.y.z

#### VS Code (_alternative to Qt Creator_)

VS Code is an alternative IDE to Qt Creator. It has a syntax highlighting plugin for QML code, but lacks some of the unique features of Qt Creator mentioned above to make QML development easier.

* Download an install VS Code
* Add the python extension
* The initial launch configuration is in the `.vscode/launch.json` file, which should be automatically read by VS Code
* Select any python file in the repo and choose the desired python environment

## How to run

### Type I Examples: BasicQml (QML runtime with QML backend)

This example is located in `examples/BasicQml` and the source code is in the subfolder `src/BasicQml`. The example consists of a graphical QML frontend (`Gui/Application.qml`) and a QML backend (`Logic/Mock/BackendProxy.qml`). It is considered a mock backend as it only returns hardcoded values rather than providing the required functionality. The entry point for Qt is `main.qml`, which can be displayed using Qt `qml` viewer.

#### Run using the QML Runtime

##### Run via the Qt Creator IDE

* Run Qt Creator
* Open the qml project file from the example folder `examples/BasicQml/src/BasicQml.qmlproject`
* Click Run (Green play button)

#### How to edit GUI elements in live mode

* In Qt Creator, select the `*.qml` file to be edited in live mode
* Click the `Design` button at the top of the left sidebar of `Qt Creator`
* _Note: If this button is disabled, find and click `About plugins...` in the `Qt Creator` menu, scroll down to the `Qt Quick` section and enable `QmlDesigner`._
* In the `Design` window, click the `Show Live Preview` button in the top panel of the application (small play button in a circle).
* _Note: Showing the entire `main.qml` application window in live mode works best when the open `main.qml` is moved to another monitor and does not overlap with the `Qt Creator` window_.
* When the desired GUI component appears, you can click the `Edit` button at the top of the left sidebar of `Qt Creator` to return to the source code of that qml component and still see it live in a separate window.

### Type II Examples: BasicPy (Python runtime with QML backend)

This example is in the `examples/BasicPy` folder, and the source code is in the `examples/BasicPy/src/BasicPy` folder. This example serves to demonstrate how an application with a QML frontend and QML backend (similar to the Type I example) can be run from Python. The entry point for the Python application is the `main.py` file. To run it, follow the steps below:

#### Run using the Python interpreter

##### Run from the terminal

* Go to the example folder, e.g.,

```sh
$ cd examples/BasicPy/src/BasicPy
```
* Run using Python (provided that the required python environment is activated as explained above)

```sh
$ python main.py
```

##### Run via the Qt Creator IDE (_alternative to run from the terminal_)

* Run Qt Creator
* Open the python project file from the example folder `examples/BasicPy/src/BasicPy.pyproject`
* Select the desired python environment with the Qt `PySide6` module installed
* Click Run (Green play button)

##### Run via the VS Code IDE (_alternative to run from the terminal or via the Qt Creator IDE_)

* Open the repo in VS Code
* Click on the debug extension and select which example to execute
![Debug dropdown window](resources/images/vscode_debug.jpg)

### Type III Examples: IntermediatePy and AdvancedPy (Python runtime with Python backend)

These examples demonstrate how to use the Python runtime to run the QML GUI binded with the Python backend located in `Backends/real_backend.py`. These examples can be run through Python in the same way as Type II described above. In these examples, the Python-based backend is registered in `main.py` and then imported into QML. The Qt QML GUI then accesses the backend by calling the properties and methods of the classes defined in the `Backends/real_py` folder.

#### Possible Issues

* If in Qt Creator some components are highlighted and marked as "Unknown component. (M300)", try resetting via "Tools > QML/JS > Reset Code Model".

### Type IV Examples: BasicC++ (QML backend)

This example can be run after compilation into an executable program. It only has a mock backend in QML (the C++ backend is not implemented). The minimum configuration requires a base `main.cpp` file and, if Qt Creator is used as the IDE, a `*.pro` file.

This example is currently used to create a WebAssembly application that can be run inside a web browser.
2 changes: 1 addition & 1 deletion LICENSE.md → LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
BSD 3-Clause License

Copyright (c) 2021-2022, European Spallation Source
Copyright (c) 2024, EasyApp contributors (https://github.com/easyscience/EasyApp).
All rights reserved.

Redistribution and use in source and binary forms, with or without
Expand Down
22 changes: 22 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1 +1,23 @@
<img src="https://github.com/EasyScience/EasyApp/blob/examples/resources/images/ea_logo.svg?raw=true" height="65">

EasyApp is a collection of Qt QML graphical components which allows one to quickly create cross-platform applications with an eye-catching and intuitive graphical interface based on the [EasyScience](http://github.com/EasyScience) framework.

* Website: https://app.easyscience.software
* Source code: https://github.com/EasyScience/EasyApp
* Bug reports: https://github.com/EasyScience/EasyApp/issues

EasyApp is currently being used as the basis for the graphical interface in the following projects:

* [EasyDiffraction](http://github.com/EasyScience/EasyDiffraction)
* [EasyReflectometry](http://github.com/EasyScience/EasyReflectometry)
* [EasyTexture](http://github.com/EasyScience/EasyTextureApp)

More simple examples of how to use EasyApp are described in [EXAMPLES.md](https://github.com/EasyScience/EasyApp/blob/master/EXAMPLES.md) and presented in the project [examples](https://github.com/EasyScience/EasyApp/tree/master/examples) directory:

* [BasicQml](https://github.com/EasyScience/EasyApp/tree/master/examples/BasicQml)
* [BasicPy](https://github.com/EasyScience/EasyApp/tree/master/examples/BasicPy)
* [BasicC++](https://github.com/EasyScience/EasyApp/tree/master/examples/BasicC++)
* [IntermediatePy](https://github.com/EasyScience/EasyApp/tree/master/examples/IntermediatePy)
* [AdvancedPy](https://github.com/EasyScience/EasyApp/tree/master/examples/AdvancedPy)

If you want to see what EasyApp looks like, you can try the web demo based on the [BasicC++](https://github.com/EasyScience/EasyApp/tree/master/examples/BasicC++) example at https://easyscience.github.io/EasyApp/BasicC++.html.
Empty file removed docs/UserManual/description.txt
Empty file.
Loading