crispy 0.8.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- crispy/__init__.py +22 -0
- crispy/__main__.py +282 -0
- crispy/broaden.py +112 -0
- crispy/config.py +109 -0
- crispy/icons/clipboard.svg +9 -0
- crispy/icons/cog.svg +4 -0
- crispy/icons/crispy.png +0 -0
- crispy/icons/crispy.svg +36 -0
- crispy/icons/folder-open.svg +4 -0
- crispy/icons/play.svg +4 -0
- crispy/icons/save.svg +4 -0
- crispy/icons/stop.svg +4 -0
- crispy/icons/trash.svg +4 -0
- crispy/items.py +423 -0
- crispy/loggers.py +70 -0
- crispy/models.py +115 -0
- crispy/notebook.py +313 -0
- crispy/plot.py +268 -0
- crispy/profiling.py +28 -0
- crispy/quanty/.DS_Store +0 -0
- crispy/quanty/__init__.py +23 -0
- crispy/quanty/__pycache__/__init__.cpython-310.pyc +0 -0
- crispy/quanty/__pycache__/__init__.cpython-311.pyc +0 -0
- crispy/quanty/__pycache__/axes.cpython-310.pyc +0 -0
- crispy/quanty/__pycache__/axes.cpython-311.pyc +0 -0
- crispy/quanty/__pycache__/calculation.cpython-310.pyc +0 -0
- crispy/quanty/__pycache__/calculation.cpython-311.pyc +0 -0
- crispy/quanty/__pycache__/cowan.cpython-310.pyc +0 -0
- crispy/quanty/__pycache__/cowan.cpython-311.pyc +0 -0
- crispy/quanty/__pycache__/details.cpython-310.pyc +0 -0
- crispy/quanty/__pycache__/details.cpython-311.pyc +0 -0
- crispy/quanty/__pycache__/experiment.cpython-311.pyc +0 -0
- crispy/quanty/__pycache__/external.cpython-311.pyc +0 -0
- crispy/quanty/__pycache__/hamiltonian.cpython-310.pyc +0 -0
- crispy/quanty/__pycache__/hamiltonian.cpython-311.pyc +0 -0
- crispy/quanty/__pycache__/main.cpython-310.pyc +0 -0
- crispy/quanty/__pycache__/main.cpython-311.pyc +0 -0
- crispy/quanty/__pycache__/preferences.cpython-310.pyc +0 -0
- crispy/quanty/__pycache__/preferences.cpython-311.pyc +0 -0
- crispy/quanty/__pycache__/progress.cpython-310.pyc +0 -0
- crispy/quanty/__pycache__/progress.cpython-311.pyc +0 -0
- crispy/quanty/__pycache__/spectra.cpython-310.pyc +0 -0
- crispy/quanty/__pycache__/spectra.cpython-311.pyc +0 -0
- crispy/quanty/axes.py +515 -0
- crispy/quanty/bin/.DS_Store +0 -0
- crispy/quanty/bin/darwin/.DS_Store +0 -0
- crispy/quanty/bin/darwin/Quanty +0 -0
- crispy/quanty/bin/linux/Quanty +0 -0
- crispy/quanty/bin/win32/Quanty.exe +0 -0
- crispy/quanty/calculation.py +792 -0
- crispy/quanty/calculations.yaml +156 -0
- crispy/quanty/cowan.py +282 -0
- crispy/quanty/details.py +162 -0
- crispy/quanty/external.py +17 -0
- crispy/quanty/generate.py +325 -0
- crispy/quanty/hamiltonian.py +612 -0
- crispy/quanty/main.py +634 -0
- crispy/quanty/parameters/.DS_Store +0 -0
- crispy/quanty/parameters/Ac.h5 +0 -0
- crispy/quanty/parameters/Ag.h5 +0 -0
- crispy/quanty/parameters/Am.h5 +0 -0
- crispy/quanty/parameters/Au.h5 +0 -0
- crispy/quanty/parameters/Ce.h5 +0 -0
- crispy/quanty/parameters/Cm.h5 +0 -0
- crispy/quanty/parameters/Co.h5 +0 -0
- crispy/quanty/parameters/Cr.h5 +0 -0
- crispy/quanty/parameters/Cu.h5 +0 -0
- crispy/quanty/parameters/Dy.h5 +0 -0
- crispy/quanty/parameters/Er.h5 +0 -0
- crispy/quanty/parameters/Eu.h5 +0 -0
- crispy/quanty/parameters/Fe.h5 +0 -0
- crispy/quanty/parameters/Gd.h5 +0 -0
- crispy/quanty/parameters/Hf.h5 +0 -0
- crispy/quanty/parameters/Ho.h5 +0 -0
- crispy/quanty/parameters/Ir.h5 +0 -0
- crispy/quanty/parameters/La.h5 +0 -0
- crispy/quanty/parameters/Mn.h5 +0 -0
- crispy/quanty/parameters/Mo.h5 +0 -0
- crispy/quanty/parameters/Nb.h5 +0 -0
- crispy/quanty/parameters/Nd.h5 +0 -0
- crispy/quanty/parameters/Ni.h5 +0 -0
- crispy/quanty/parameters/Np.h5 +0 -0
- crispy/quanty/parameters/Os.h5 +0 -0
- crispy/quanty/parameters/Pa.h5 +0 -0
- crispy/quanty/parameters/Pd.h5 +0 -0
- crispy/quanty/parameters/Pm.h5 +0 -0
- crispy/quanty/parameters/Pr.h5 +0 -0
- crispy/quanty/parameters/Pt.h5 +0 -0
- crispy/quanty/parameters/Pu.h5 +0 -0
- crispy/quanty/parameters/Re.h5 +0 -0
- crispy/quanty/parameters/Rh.h5 +0 -0
- crispy/quanty/parameters/Ru.h5 +0 -0
- crispy/quanty/parameters/Sc.h5 +0 -0
- crispy/quanty/parameters/Sm.h5 +0 -0
- crispy/quanty/parameters/Ta.h5 +0 -0
- crispy/quanty/parameters/Tb.h5 +0 -0
- crispy/quanty/parameters/Tc.h5 +0 -0
- crispy/quanty/parameters/Th.h5 +0 -0
- crispy/quanty/parameters/Ti.h5 +0 -0
- crispy/quanty/parameters/Tm.h5 +0 -0
- crispy/quanty/parameters/U.h5 +0 -0
- crispy/quanty/parameters/V.h5 +0 -0
- crispy/quanty/parameters/W.h5 +0 -0
- crispy/quanty/parameters/Y.h5 +0 -0
- crispy/quanty/parameters/Yb.h5 +0 -0
- crispy/quanty/parameters/Zr.h5 +0 -0
- crispy/quanty/parameters/cowan/README.rst +11 -0
- crispy/quanty/parameters/cowan/bin/darwin/libgfortran.5.dylib +0 -0
- crispy/quanty/parameters/cowan/bin/darwin/libquadmath.0.dylib +0 -0
- crispy/quanty/parameters/cowan/bin/darwin/rcg_cfp72 +0 -0
- crispy/quanty/parameters/cowan/bin/darwin/rcg_cfp73 +0 -0
- crispy/quanty/parameters/cowan/bin/darwin/rcg_cfp74 +0 -0
- crispy/quanty/parameters/cowan/bin/darwin/rcn +0 -0
- crispy/quanty/parameters/cowan/bin/darwin/rcn2 +0 -0
- crispy/quanty/parameters/cowan/bin/darwin/rcn31 +0 -0
- crispy/quanty/parameters/cowan/bin/darwin/ttrcg +0 -0
- crispy/quanty/parameters/cowan/bin/linux/rcg_cfp72 +0 -0
- crispy/quanty/parameters/cowan/bin/linux/rcg_cfp73 +0 -0
- crispy/quanty/parameters/cowan/bin/linux/rcg_cfp74 +0 -0
- crispy/quanty/parameters/cowan/bin/linux/rcn +0 -0
- crispy/quanty/parameters/cowan/bin/linux/rcn2 +0 -0
- crispy/quanty/parameters/cowan/bin/linux/rcn31 +0 -0
- crispy/quanty/parameters/cowan/bin/linux/ttrcg +0 -0
- crispy/quanty/parameters/cowan/scripts/runrcg.sh +41 -0
- crispy/quanty/parameters/cowan/scripts/runrcn.sh +37 -0
- crispy/quanty/parameters/cowan/scripts/runrcn2.sh +33 -0
- crispy/quanty/parameters/p-d_hybridization/parameters.dat +42 -0
- crispy/quanty/preferences.py +112 -0
- crispy/quanty/progress.py +59 -0
- crispy/quanty/spectra.py +410 -0
- crispy/quanty/templates/3d_C3v_RIXS_1s2p.lua +682 -0
- crispy/quanty/templates/3d_C3v_RIXS_1s3p.lua +682 -0
- crispy/quanty/templates/3d_C3v_RIXS_2p3d.lua +662 -0
- crispy/quanty/templates/3d_C3v_XAS_1s.lua +1033 -0
- crispy/quanty/templates/3d_C3v_XAS_2p.lua +675 -0
- crispy/quanty/templates/3d_C3v_XAS_2s.lua +665 -0
- crispy/quanty/templates/3d_C3v_XAS_3p.lua +675 -0
- crispy/quanty/templates/3d_C3v_XAS_3s.lua +665 -0
- crispy/quanty/templates/3d_C3v_XPS_1s.lua +593 -0
- crispy/quanty/templates/3d_C3v_XPS_2p.lua +603 -0
- crispy/quanty/templates/3d_C3v_XPS_2s.lua +593 -0
- crispy/quanty/templates/3d_C3v_XPS_3p.lua +603 -0
- crispy/quanty/templates/3d_C3v_XPS_3s.lua +593 -0
- crispy/quanty/templates/3d_D3h_RIXS_1s2p.lua +669 -0
- crispy/quanty/templates/3d_D3h_RIXS_1s3p.lua +669 -0
- crispy/quanty/templates/3d_D3h_RIXS_2p3d.lua +649 -0
- crispy/quanty/templates/3d_D3h_XAS_1s.lua +654 -0
- crispy/quanty/templates/3d_D3h_XAS_2p.lua +664 -0
- crispy/quanty/templates/3d_D3h_XAS_2s.lua +654 -0
- crispy/quanty/templates/3d_D3h_XAS_3p.lua +664 -0
- crispy/quanty/templates/3d_D3h_XAS_3s.lua +654 -0
- crispy/quanty/templates/3d_D3h_XPS_1s.lua +582 -0
- crispy/quanty/templates/3d_D3h_XPS_2p.lua +592 -0
- crispy/quanty/templates/3d_D3h_XPS_2s.lua +582 -0
- crispy/quanty/templates/3d_D3h_XPS_3p.lua +592 -0
- crispy/quanty/templates/3d_D3h_XPS_3s.lua +582 -0
- crispy/quanty/templates/3d_D4h_RIXS_1s2p.lua +970 -0
- crispy/quanty/templates/3d_D4h_RIXS_1s3p.lua +970 -0
- crispy/quanty/templates/3d_D4h_RIXS_2p3d.lua +936 -0
- crispy/quanty/templates/3d_D4h_XAS_1s.lua +886 -0
- crispy/quanty/templates/3d_D4h_XAS_2p.lua +896 -0
- crispy/quanty/templates/3d_D4h_XAS_2s.lua +886 -0
- crispy/quanty/templates/3d_D4h_XAS_3p.lua +896 -0
- crispy/quanty/templates/3d_D4h_XAS_3s.lua +886 -0
- crispy/quanty/templates/3d_D4h_XPS_1s.lua +814 -0
- crispy/quanty/templates/3d_D4h_XPS_2p.lua +824 -0
- crispy/quanty/templates/3d_D4h_XPS_2s.lua +814 -0
- crispy/quanty/templates/3d_D4h_XPS_3p.lua +824 -0
- crispy/quanty/templates/3d_D4h_XPS_3s.lua +814 -0
- crispy/quanty/templates/3d_Oh_RIXS_1s2p.lua +884 -0
- crispy/quanty/templates/3d_Oh_RIXS_1s3p.lua +884 -0
- crispy/quanty/templates/3d_Oh_RIXS_2p3d.lua +850 -0
- crispy/quanty/templates/3d_Oh_XAS_1s.lua +820 -0
- crispy/quanty/templates/3d_Oh_XAS_2p.lua +830 -0
- crispy/quanty/templates/3d_Oh_XAS_2s.lua +820 -0
- crispy/quanty/templates/3d_Oh_XAS_3p.lua +830 -0
- crispy/quanty/templates/3d_Oh_XAS_3s.lua +820 -0
- crispy/quanty/templates/3d_Oh_XPS_1s.lua +748 -0
- crispy/quanty/templates/3d_Oh_XPS_2p.lua +758 -0
- crispy/quanty/templates/3d_Oh_XPS_2s.lua +748 -0
- crispy/quanty/templates/3d_Oh_XPS_3p.lua +758 -0
- crispy/quanty/templates/3d_Oh_XPS_3s.lua +748 -0
- crispy/quanty/templates/3d_Td_RIXS_1s2p.lua +662 -0
- crispy/quanty/templates/3d_Td_RIXS_1s3p.lua +662 -0
- crispy/quanty/templates/3d_Td_RIXS_2p3d.lua +642 -0
- crispy/quanty/templates/3d_Td_XAS_1s.lua +1007 -0
- crispy/quanty/templates/3d_Td_XAS_2p.lua +659 -0
- crispy/quanty/templates/3d_Td_XAS_2s.lua +649 -0
- crispy/quanty/templates/3d_Td_XAS_3p.lua +659 -0
- crispy/quanty/templates/3d_Td_XAS_3s.lua +649 -0
- crispy/quanty/templates/3d_Td_XPS_1s.lua +577 -0
- crispy/quanty/templates/3d_Td_XPS_2p.lua +587 -0
- crispy/quanty/templates/3d_Td_XPS_2s.lua +577 -0
- crispy/quanty/templates/3d_Td_XPS_3p.lua +587 -0
- crispy/quanty/templates/3d_Td_XPS_3s.lua +577 -0
- crispy/quanty/templates/4d_C3v_RIXS_2p4d.lua +662 -0
- crispy/quanty/templates/4d_C3v_XAS_2p.lua +675 -0
- crispy/quanty/templates/4d_C3v_XAS_2s.lua +665 -0
- crispy/quanty/templates/4d_C3v_XAS_3p.lua +675 -0
- crispy/quanty/templates/4d_C3v_XAS_3s.lua +665 -0
- crispy/quanty/templates/4d_C3v_XAS_4p.lua +675 -0
- crispy/quanty/templates/4d_C3v_XAS_4s.lua +665 -0
- crispy/quanty/templates/4d_C3v_XPS_2p.lua +603 -0
- crispy/quanty/templates/4d_C3v_XPS_2s.lua +593 -0
- crispy/quanty/templates/4d_C3v_XPS_3p.lua +603 -0
- crispy/quanty/templates/4d_C3v_XPS_3s.lua +593 -0
- crispy/quanty/templates/4d_C3v_XPS_4p.lua +603 -0
- crispy/quanty/templates/4d_C3v_XPS_4s.lua +593 -0
- crispy/quanty/templates/4d_D3h_RIXS_2p4d.lua +649 -0
- crispy/quanty/templates/4d_D3h_XAS_2p.lua +664 -0
- crispy/quanty/templates/4d_D3h_XAS_2s.lua +654 -0
- crispy/quanty/templates/4d_D3h_XAS_3p.lua +664 -0
- crispy/quanty/templates/4d_D3h_XAS_3s.lua +654 -0
- crispy/quanty/templates/4d_D3h_XAS_4p.lua +664 -0
- crispy/quanty/templates/4d_D3h_XAS_4s.lua +654 -0
- crispy/quanty/templates/4d_D3h_XPS_2p.lua +592 -0
- crispy/quanty/templates/4d_D3h_XPS_2s.lua +582 -0
- crispy/quanty/templates/4d_D3h_XPS_3p.lua +592 -0
- crispy/quanty/templates/4d_D3h_XPS_3s.lua +582 -0
- crispy/quanty/templates/4d_D3h_XPS_4p.lua +592 -0
- crispy/quanty/templates/4d_D3h_XPS_4s.lua +582 -0
- crispy/quanty/templates/4d_D4h_RIXS_2p4d.lua +936 -0
- crispy/quanty/templates/4d_D4h_XAS_2p.lua +896 -0
- crispy/quanty/templates/4d_D4h_XAS_2s.lua +886 -0
- crispy/quanty/templates/4d_D4h_XAS_3p.lua +896 -0
- crispy/quanty/templates/4d_D4h_XAS_3s.lua +886 -0
- crispy/quanty/templates/4d_D4h_XAS_4p.lua +896 -0
- crispy/quanty/templates/4d_D4h_XAS_4s.lua +886 -0
- crispy/quanty/templates/4d_D4h_XPS_2p.lua +824 -0
- crispy/quanty/templates/4d_D4h_XPS_2s.lua +814 -0
- crispy/quanty/templates/4d_D4h_XPS_3p.lua +824 -0
- crispy/quanty/templates/4d_D4h_XPS_3s.lua +814 -0
- crispy/quanty/templates/4d_D4h_XPS_4p.lua +824 -0
- crispy/quanty/templates/4d_D4h_XPS_4s.lua +814 -0
- crispy/quanty/templates/4d_Oh_RIXS_2p4d.lua +850 -0
- crispy/quanty/templates/4d_Oh_XAS_2p.lua +830 -0
- crispy/quanty/templates/4d_Oh_XAS_2s.lua +820 -0
- crispy/quanty/templates/4d_Oh_XAS_3p.lua +830 -0
- crispy/quanty/templates/4d_Oh_XAS_3s.lua +820 -0
- crispy/quanty/templates/4d_Oh_XAS_4p.lua +830 -0
- crispy/quanty/templates/4d_Oh_XAS_4s.lua +820 -0
- crispy/quanty/templates/4d_Oh_XPS_2p.lua +758 -0
- crispy/quanty/templates/4d_Oh_XPS_2s.lua +748 -0
- crispy/quanty/templates/4d_Oh_XPS_3p.lua +758 -0
- crispy/quanty/templates/4d_Oh_XPS_3s.lua +748 -0
- crispy/quanty/templates/4d_Oh_XPS_4p.lua +758 -0
- crispy/quanty/templates/4d_Oh_XPS_4s.lua +748 -0
- crispy/quanty/templates/4d_Td_RIXS_2p4d.lua +642 -0
- crispy/quanty/templates/4d_Td_XAS_2p.lua +659 -0
- crispy/quanty/templates/4d_Td_XAS_2s.lua +649 -0
- crispy/quanty/templates/4d_Td_XAS_3p.lua +659 -0
- crispy/quanty/templates/4d_Td_XAS_3s.lua +649 -0
- crispy/quanty/templates/4d_Td_XAS_4p.lua +659 -0
- crispy/quanty/templates/4d_Td_XAS_4s.lua +649 -0
- crispy/quanty/templates/4d_Td_XPS_2p.lua +587 -0
- crispy/quanty/templates/4d_Td_XPS_2s.lua +577 -0
- crispy/quanty/templates/4d_Td_XPS_3p.lua +587 -0
- crispy/quanty/templates/4d_Td_XPS_3s.lua +577 -0
- crispy/quanty/templates/4d_Td_XPS_4p.lua +587 -0
- crispy/quanty/templates/4d_Td_XPS_4s.lua +577 -0
- crispy/quanty/templates/4f_Oh_RIXS_2p3d.lua +869 -0
- crispy/quanty/templates/4f_Oh_RIXS_2p4d.lua +869 -0
- crispy/quanty/templates/4f_Oh_XAS_2p.lua +801 -0
- crispy/quanty/templates/4f_Oh_XAS_3d.lua +807 -0
- crispy/quanty/templates/4f_Oh_XAS_3p.lua +801 -0
- crispy/quanty/templates/4f_Oh_XAS_4d.lua +807 -0
- crispy/quanty/templates/4f_Oh_XAS_4p.lua +801 -0
- crispy/quanty/templates/4f_Oh_XPS_2p.lua +729 -0
- crispy/quanty/templates/4f_Oh_XPS_3d.lua +735 -0
- crispy/quanty/templates/4f_Oh_XPS_3p.lua +729 -0
- crispy/quanty/templates/4f_Oh_XPS_4d.lua +735 -0
- crispy/quanty/templates/4f_Oh_XPS_4p.lua +729 -0
- crispy/quanty/templates/5d_C3v_RIXS_2p5d.lua +662 -0
- crispy/quanty/templates/5d_C3v_XAS_2p.lua +675 -0
- crispy/quanty/templates/5d_C3v_XAS_2s.lua +665 -0
- crispy/quanty/templates/5d_C3v_XAS_3p.lua +675 -0
- crispy/quanty/templates/5d_C3v_XAS_3s.lua +665 -0
- crispy/quanty/templates/5d_C3v_XAS_4p.lua +675 -0
- crispy/quanty/templates/5d_C3v_XAS_4s.lua +665 -0
- crispy/quanty/templates/5d_C3v_XAS_5p.lua +675 -0
- crispy/quanty/templates/5d_C3v_XAS_5s.lua +665 -0
- crispy/quanty/templates/5d_C3v_XPS_2p.lua +603 -0
- crispy/quanty/templates/5d_C3v_XPS_2s.lua +593 -0
- crispy/quanty/templates/5d_C3v_XPS_3p.lua +603 -0
- crispy/quanty/templates/5d_C3v_XPS_3s.lua +593 -0
- crispy/quanty/templates/5d_C3v_XPS_4p.lua +603 -0
- crispy/quanty/templates/5d_C3v_XPS_4s.lua +593 -0
- crispy/quanty/templates/5d_C3v_XPS_5p.lua +603 -0
- crispy/quanty/templates/5d_C3v_XPS_5s.lua +593 -0
- crispy/quanty/templates/5d_D3h_RIXS_2p5d.lua +649 -0
- crispy/quanty/templates/5d_D3h_XAS_2p.lua +664 -0
- crispy/quanty/templates/5d_D3h_XAS_2s.lua +654 -0
- crispy/quanty/templates/5d_D3h_XAS_3p.lua +664 -0
- crispy/quanty/templates/5d_D3h_XAS_3s.lua +654 -0
- crispy/quanty/templates/5d_D3h_XAS_4p.lua +664 -0
- crispy/quanty/templates/5d_D3h_XAS_4s.lua +654 -0
- crispy/quanty/templates/5d_D3h_XAS_5p.lua +664 -0
- crispy/quanty/templates/5d_D3h_XAS_5s.lua +654 -0
- crispy/quanty/templates/5d_D3h_XPS_2p.lua +592 -0
- crispy/quanty/templates/5d_D3h_XPS_2s.lua +582 -0
- crispy/quanty/templates/5d_D3h_XPS_3p.lua +592 -0
- crispy/quanty/templates/5d_D3h_XPS_3s.lua +582 -0
- crispy/quanty/templates/5d_D3h_XPS_4p.lua +592 -0
- crispy/quanty/templates/5d_D3h_XPS_4s.lua +582 -0
- crispy/quanty/templates/5d_D3h_XPS_5p.lua +592 -0
- crispy/quanty/templates/5d_D3h_XPS_5s.lua +582 -0
- crispy/quanty/templates/5d_D4h_RIXS_2p5d.lua +936 -0
- crispy/quanty/templates/5d_D4h_XAS_2p.lua +896 -0
- crispy/quanty/templates/5d_D4h_XAS_2s.lua +886 -0
- crispy/quanty/templates/5d_D4h_XAS_3p.lua +896 -0
- crispy/quanty/templates/5d_D4h_XAS_3s.lua +886 -0
- crispy/quanty/templates/5d_D4h_XAS_4p.lua +896 -0
- crispy/quanty/templates/5d_D4h_XAS_4s.lua +886 -0
- crispy/quanty/templates/5d_D4h_XAS_5p.lua +896 -0
- crispy/quanty/templates/5d_D4h_XAS_5s.lua +886 -0
- crispy/quanty/templates/5d_D4h_XPS_2p.lua +824 -0
- crispy/quanty/templates/5d_D4h_XPS_2s.lua +814 -0
- crispy/quanty/templates/5d_D4h_XPS_3p.lua +824 -0
- crispy/quanty/templates/5d_D4h_XPS_3s.lua +814 -0
- crispy/quanty/templates/5d_D4h_XPS_4p.lua +824 -0
- crispy/quanty/templates/5d_D4h_XPS_4s.lua +814 -0
- crispy/quanty/templates/5d_D4h_XPS_5p.lua +824 -0
- crispy/quanty/templates/5d_D4h_XPS_5s.lua +814 -0
- crispy/quanty/templates/5d_Oh_RIXS_2p5d.lua +850 -0
- crispy/quanty/templates/5d_Oh_XAS_2p.lua +830 -0
- crispy/quanty/templates/5d_Oh_XAS_2s.lua +820 -0
- crispy/quanty/templates/5d_Oh_XAS_3p.lua +830 -0
- crispy/quanty/templates/5d_Oh_XAS_3s.lua +820 -0
- crispy/quanty/templates/5d_Oh_XAS_4p.lua +830 -0
- crispy/quanty/templates/5d_Oh_XAS_4s.lua +820 -0
- crispy/quanty/templates/5d_Oh_XAS_5p.lua +830 -0
- crispy/quanty/templates/5d_Oh_XAS_5s.lua +820 -0
- crispy/quanty/templates/5d_Oh_XPS_2p.lua +758 -0
- crispy/quanty/templates/5d_Oh_XPS_2s.lua +748 -0
- crispy/quanty/templates/5d_Oh_XPS_3p.lua +758 -0
- crispy/quanty/templates/5d_Oh_XPS_3s.lua +748 -0
- crispy/quanty/templates/5d_Oh_XPS_4p.lua +758 -0
- crispy/quanty/templates/5d_Oh_XPS_4s.lua +748 -0
- crispy/quanty/templates/5d_Oh_XPS_5p.lua +758 -0
- crispy/quanty/templates/5d_Oh_XPS_5s.lua +748 -0
- crispy/quanty/templates/5d_Td_RIXS_2p5d.lua +642 -0
- crispy/quanty/templates/5d_Td_XAS_2p.lua +659 -0
- crispy/quanty/templates/5d_Td_XAS_2s.lua +649 -0
- crispy/quanty/templates/5d_Td_XAS_3p.lua +659 -0
- crispy/quanty/templates/5d_Td_XAS_3s.lua +649 -0
- crispy/quanty/templates/5d_Td_XAS_4p.lua +659 -0
- crispy/quanty/templates/5d_Td_XAS_4s.lua +649 -0
- crispy/quanty/templates/5d_Td_XAS_5p.lua +659 -0
- crispy/quanty/templates/5d_Td_XAS_5s.lua +649 -0
- crispy/quanty/templates/5d_Td_XPS_2p.lua +587 -0
- crispy/quanty/templates/5d_Td_XPS_2s.lua +577 -0
- crispy/quanty/templates/5d_Td_XPS_3p.lua +587 -0
- crispy/quanty/templates/5d_Td_XPS_3s.lua +577 -0
- crispy/quanty/templates/5d_Td_XPS_4p.lua +587 -0
- crispy/quanty/templates/5d_Td_XPS_4s.lua +577 -0
- crispy/quanty/templates/5d_Td_XPS_5p.lua +587 -0
- crispy/quanty/templates/5d_Td_XPS_5s.lua +577 -0
- crispy/quanty/templates/5f_Oh_RIXS_2p3d.lua +869 -0
- crispy/quanty/templates/5f_Oh_RIXS_2p4d.lua +869 -0
- crispy/quanty/templates/5f_Oh_XAS_2p.lua +801 -0
- crispy/quanty/templates/5f_Oh_XAS_3d.lua +807 -0
- crispy/quanty/templates/5f_Oh_XAS_3p.lua +801 -0
- crispy/quanty/templates/5f_Oh_XAS_4d.lua +807 -0
- crispy/quanty/templates/5f_Oh_XAS_4p.lua +801 -0
- crispy/quanty/templates/5f_Oh_XPS_2p.lua +729 -0
- crispy/quanty/templates/5f_Oh_XPS_3d.lua +735 -0
- crispy/quanty/templates/5f_Oh_XPS_3p.lua +729 -0
- crispy/quanty/templates/5f_Oh_XPS_4d.lua +735 -0
- crispy/quanty/templates/5f_Oh_XPS_4p.lua +729 -0
- crispy/quanty/templates/__init__.py +0 -0
- crispy/quanty/templates/__pycache__/__init__.cpython-310.pyc +0 -0
- crispy/quanty/templates/__pycache__/__init__.cpython-311.pyc +0 -0
- crispy/quanty/templates/meta/helper_functions.lua +244 -0
- crispy/quanty/templates/meta/rixs/fields.lua +107 -0
- crispy/quanty/templates/meta/rixs/pdd/base.lua +86 -0
- crispy/quanty/templates/meta/rixs/pdd/c3v_cf.lua +54 -0
- crispy/quanty/templates/meta/rixs/pdd/d3h_cf.lua +41 -0
- crispy/quanty/templates/meta/rixs/pdd/d4h_lf.lua +258 -0
- crispy/quanty/templates/meta/rixs/pdd/fields.lua +107 -0
- crispy/quanty/templates/meta/rixs/pdd/footer_cf.lua +75 -0
- crispy/quanty/templates/meta/rixs/pdd/footer_lf.lua +93 -0
- crispy/quanty/templates/meta/rixs/pdd/header_cf.lua +85 -0
- crispy/quanty/templates/meta/rixs/pdd/header_lf.lua +109 -0
- crispy/quanty/templates/meta/rixs/pdd/helper_functions.lua +244 -0
- crispy/quanty/templates/meta/rixs/pdd/oh_lf.lua +172 -0
- crispy/quanty/templates/meta/rixs/pdd/restrictions_cf.lua +12 -0
- crispy/quanty/templates/meta/rixs/pdd/restrictions_lf.lua +40 -0
- crispy/quanty/templates/meta/rixs/pdd/td_cf.lua +34 -0
- crispy/quanty/templates/meta/rixs/pfd/base.lua +120 -0
- crispy/quanty/templates/meta/rixs/pfd/fields.lua +107 -0
- crispy/quanty/templates/meta/rixs/pfd/footer_lf.lua +86 -0
- crispy/quanty/templates/meta/rixs/pfd/header_lf.lua +98 -0
- crispy/quanty/templates/meta/rixs/pfd/helper_functions.lua +244 -0
- crispy/quanty/templates/meta/rixs/pfd/oh_lf.lua +180 -0
- crispy/quanty/templates/meta/rixs/pfd/restrictions_lf.lua +35 -0
- crispy/quanty/templates/meta/rixs/sdp/base.lua +97 -0
- crispy/quanty/templates/meta/rixs/sdp/c3v_cf.lua +54 -0
- crispy/quanty/templates/meta/rixs/sdp/d3h_cf.lua +41 -0
- crispy/quanty/templates/meta/rixs/sdp/d4h_lf.lua +262 -0
- crispy/quanty/templates/meta/rixs/sdp/fields.lua +107 -0
- crispy/quanty/templates/meta/rixs/sdp/footer_cf.lua +77 -0
- crispy/quanty/templates/meta/rixs/sdp/footer_lf.lua +95 -0
- crispy/quanty/templates/meta/rixs/sdp/header_cf.lua +88 -0
- crispy/quanty/templates/meta/rixs/sdp/header_lf.lua +112 -0
- crispy/quanty/templates/meta/rixs/sdp/helper_functions.lua +244 -0
- crispy/quanty/templates/meta/rixs/sdp/oh_lf.lua +176 -0
- crispy/quanty/templates/meta/rixs/sdp/restrictions_cf.lua +16 -0
- crispy/quanty/templates/meta/rixs/sdp/restrictions_lf.lua +54 -0
- crispy/quanty/templates/meta/rixs/sdp/td_cf.lua +34 -0
- crispy/quanty/templates/meta/xas/df/base.lua +82 -0
- crispy/quanty/templates/meta/xas/df/fields.lua +89 -0
- crispy/quanty/templates/meta/xas/df/footer_lf.lua +156 -0
- crispy/quanty/templates/meta/xas/df/header_lf.lua +81 -0
- crispy/quanty/templates/meta/xas/df/helper_functions.lua +244 -0
- crispy/quanty/templates/meta/xas/df/oh_lf.lua +136 -0
- crispy/quanty/templates/meta/xas/df/restrictions_lf.lua +20 -0
- crispy/quanty/templates/meta/xas/fields.lua +89 -0
- crispy/quanty/templates/meta/xas/pd/base.lua +71 -0
- crispy/quanty/templates/meta/xas/pd/c3v_cf.lua +45 -0
- crispy/quanty/templates/meta/xas/pd/d3h_cf.lua +34 -0
- crispy/quanty/templates/meta/xas/pd/d4h_lf.lua +199 -0
- crispy/quanty/templates/meta/xas/pd/fields.lua +89 -0
- crispy/quanty/templates/meta/xas/pd/footer_cf.lua +147 -0
- crispy/quanty/templates/meta/xas/pd/footer_lf.lua +165 -0
- crispy/quanty/templates/meta/xas/pd/header_cf.lua +71 -0
- crispy/quanty/templates/meta/xas/pd/header_lf.lua +95 -0
- crispy/quanty/templates/meta/xas/pd/helper_functions.lua +244 -0
- crispy/quanty/templates/meta/xas/pd/oh_lf.lua +133 -0
- crispy/quanty/templates/meta/xas/pd/restrictions_cf.lua +10 -0
- crispy/quanty/templates/meta/xas/pd/restrictions_lf.lua +34 -0
- crispy/quanty/templates/meta/xas/pd/td_cf.lua +29 -0
- crispy/quanty/templates/meta/xas/pf/base.lua +76 -0
- crispy/quanty/templates/meta/xas/pf/fields.lua +89 -0
- crispy/quanty/templates/meta/xas/pf/footer_lf.lua +156 -0
- crispy/quanty/templates/meta/xas/pf/header_lf.lua +81 -0
- crispy/quanty/templates/meta/xas/pf/helper_functions.lua +244 -0
- crispy/quanty/templates/meta/xas/pf/oh_lf.lua +136 -0
- crispy/quanty/templates/meta/xas/pf/restrictions_lf.lua +20 -0
- crispy/quanty/templates/meta/xas/sd/base.lua +61 -0
- crispy/quanty/templates/meta/xas/sd/c3v_cf.lua +45 -0
- crispy/quanty/templates/meta/xas/sd/c3v_pd.lua +131 -0
- crispy/quanty/templates/meta/xas/sd/d3h_cf.lua +34 -0
- crispy/quanty/templates/meta/xas/sd/d4h_lf.lua +199 -0
- crispy/quanty/templates/meta/xas/sd/fields.lua +89 -0
- crispy/quanty/templates/meta/xas/sd/footer_cf.lua +147 -0
- crispy/quanty/templates/meta/xas/sd/footer_lf.lua +165 -0
- crispy/quanty/templates/meta/xas/sd/footer_pd.lua +406 -0
- crispy/quanty/templates/meta/xas/sd/header_cf.lua +71 -0
- crispy/quanty/templates/meta/xas/sd/header_lf.lua +95 -0
- crispy/quanty/templates/meta/xas/sd/header_pd.lua +81 -0
- crispy/quanty/templates/meta/xas/sd/helper_functions.lua +244 -0
- crispy/quanty/templates/meta/xas/sd/oh_lf.lua +133 -0
- crispy/quanty/templates/meta/xas/sd/restrictions_cf.lua +10 -0
- crispy/quanty/templates/meta/xas/sd/restrictions_lf.lua +34 -0
- crispy/quanty/templates/meta/xas/sd/restrictions_pd.lua +22 -0
- crispy/quanty/templates/meta/xas/sd/td_cf.lua +29 -0
- crispy/quanty/templates/meta/xas/sd/td_pd.lua +105 -0
- crispy/quanty/templates/meta/xps/df/base.lua +82 -0
- crispy/quanty/templates/meta/xps/df/fields.lua +89 -0
- crispy/quanty/templates/meta/xps/df/footer_lf.lua +84 -0
- crispy/quanty/templates/meta/xps/df/header_lf.lua +81 -0
- crispy/quanty/templates/meta/xps/df/helper_functions.lua +244 -0
- crispy/quanty/templates/meta/xps/df/oh_lf.lua +136 -0
- crispy/quanty/templates/meta/xps/df/restrictions_lf.lua +20 -0
- crispy/quanty/templates/meta/xps/pd/base.lua +71 -0
- crispy/quanty/templates/meta/xps/pd/c3v_cf.lua +45 -0
- crispy/quanty/templates/meta/xps/pd/d3h_cf.lua +34 -0
- crispy/quanty/templates/meta/xps/pd/d4h_lf.lua +199 -0
- crispy/quanty/templates/meta/xps/pd/fields.lua +89 -0
- crispy/quanty/templates/meta/xps/pd/footer_cf.lua +75 -0
- crispy/quanty/templates/meta/xps/pd/footer_lf.lua +93 -0
- crispy/quanty/templates/meta/xps/pd/header_cf.lua +71 -0
- crispy/quanty/templates/meta/xps/pd/header_lf.lua +95 -0
- crispy/quanty/templates/meta/xps/pd/helper_functions.lua +244 -0
- crispy/quanty/templates/meta/xps/pd/oh_lf.lua +133 -0
- crispy/quanty/templates/meta/xps/pd/restrictions_cf.lua +10 -0
- crispy/quanty/templates/meta/xps/pd/restrictions_lf.lua +34 -0
- crispy/quanty/templates/meta/xps/pd/td_cf.lua +29 -0
- crispy/quanty/templates/meta/xps/pf/base.lua +76 -0
- crispy/quanty/templates/meta/xps/pf/fields.lua +89 -0
- crispy/quanty/templates/meta/xps/pf/footer_lf.lua +84 -0
- crispy/quanty/templates/meta/xps/pf/header_lf.lua +81 -0
- crispy/quanty/templates/meta/xps/pf/helper_functions.lua +244 -0
- crispy/quanty/templates/meta/xps/pf/oh_lf.lua +136 -0
- crispy/quanty/templates/meta/xps/pf/restrictions_lf.lua +20 -0
- crispy/quanty/templates/meta/xps/sd/base.lua +61 -0
- crispy/quanty/templates/meta/xps/sd/c3v_cf.lua +45 -0
- crispy/quanty/templates/meta/xps/sd/d3h_cf.lua +34 -0
- crispy/quanty/templates/meta/xps/sd/d4h_lf.lua +199 -0
- crispy/quanty/templates/meta/xps/sd/fields.lua +89 -0
- crispy/quanty/templates/meta/xps/sd/footer_cf.lua +75 -0
- crispy/quanty/templates/meta/xps/sd/footer_lf.lua +93 -0
- crispy/quanty/templates/meta/xps/sd/header_cf.lua +71 -0
- crispy/quanty/templates/meta/xps/sd/header_lf.lua +95 -0
- crispy/quanty/templates/meta/xps/sd/header_pd.lua +81 -0
- crispy/quanty/templates/meta/xps/sd/helper_functions.lua +244 -0
- crispy/quanty/templates/meta/xps/sd/oh_lf.lua +133 -0
- crispy/quanty/templates/meta/xps/sd/restrictions_cf.lua +10 -0
- crispy/quanty/templates/meta/xps/sd/restrictions_lf.lua +34 -0
- crispy/quanty/templates/meta/xps/sd/td_cf.lua +29 -0
- crispy/quanty/templates/tests/__init__.py +0 -0
- crispy/quanty/templates/tests/__pycache__/__init__.cpython-310.pyc +0 -0
- crispy/quanty/templates/tests/__pycache__/__init__.cpython-311.pyc +0 -0
- crispy/quanty/templates/tests/__pycache__/test_templates.cpython-310-pytest-7.4.3.pyc +0 -0
- crispy/quanty/templates/tests/__pycache__/test_templates.cpython-311-pytest-7.4.3.pyc +0 -0
- crispy/quanty/templates/tests/__pycache__/test_templates.cpython-311-pytest-8.3.3.pyc +0 -0
- crispy/quanty/templates/tests/references/0/test.lua +830 -0
- crispy/quanty/templates/tests/references/0/test_iso.spec +2006 -0
- crispy/quanty/templates/tests/references/1/test.lua +830 -0
- crispy/quanty/templates/tests/references/1/test_iso.spec +2006 -0
- crispy/quanty/templates/tests/references/2/test.lua +830 -0
- crispy/quanty/templates/tests/references/2/test_iso.spec +2006 -0
- crispy/quanty/templates/tests/references/3/test.lua +830 -0
- crispy/quanty/templates/tests/references/3/test_iso.spec +2006 -0
- crispy/quanty/templates/tests/references/4/test.lua +830 -0
- crispy/quanty/templates/tests/references/4/test_iso.spec +2006 -0
- crispy/quanty/templates/tests/references/5/test.lua +896 -0
- crispy/quanty/templates/tests/references/5/test_iso.spec +2006 -0
- crispy/quanty/templates/tests/references/6/test.lua +664 -0
- crispy/quanty/templates/tests/references/6/test_iso.spec +2006 -0
- crispy/quanty/templates/tests/references/7/test.lua +675 -0
- crispy/quanty/templates/tests/references/7/test_iso.spec +2006 -0
- crispy/quanty/templates/tests/test_data.yaml +163 -0
- crispy/quanty/templates/tests/test_templates.py +77 -0
- crispy/quanty/uis/axis.ui +364 -0
- crispy/quanty/uis/details/axis.ui +181 -0
- crispy/quanty/uis/details/main.ui +271 -0
- crispy/quanty/uis/general.ui +272 -0
- crispy/quanty/uis/hamiltonian.ui +385 -0
- crispy/quanty/uis/main.ui +181 -0
- crispy/quanty/uis/preferences.ui +212 -0
- crispy/quanty/uis/progress.ui +55 -0
- crispy/quanty/uis/results.ui +65 -0
- crispy/uic.py +225 -0
- crispy/uis/about.ui +265 -0
- crispy/uis/main.ui +132 -0
- crispy/uis/update.ui +130 -0
- crispy/utils.py +82 -0
- crispy/views.py +83 -0
- crispy/widgets.py +147 -0
- crispy-0.8.0.dist-info/LICENSE.rst +21 -0
- crispy-0.8.0.dist-info/METADATA +166 -0
- crispy-0.8.0.dist-info/RECORD +546 -0
- crispy-0.8.0.dist-info/WHEEL +5 -0
- crispy-0.8.0.dist-info/entry_points.txt +2 -0
- crispy-0.8.0.dist-info/top_level.txt +1 -0
crispy/__init__.py
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
###################################################################
|
|
2
|
+
# Copyright (c) 2016-2024 European Synchrotron Radiation Facility #
|
|
3
|
+
# #
|
|
4
|
+
# Author: Marius Retegan #
|
|
5
|
+
# #
|
|
6
|
+
# This work is licensed under the terms of the MIT license. #
|
|
7
|
+
# For further information, see https://github.com/mretegan/crispy #
|
|
8
|
+
###################################################################
|
|
9
|
+
"""This is the Crispy package."""
|
|
10
|
+
|
|
11
|
+
__version__ = "0.8.0"
|
|
12
|
+
import os
|
|
13
|
+
import sys
|
|
14
|
+
|
|
15
|
+
version = __version__
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
# https://stackoverflow.com/questions/7674790/bundling-data-files-with-pyinstaller-onefile
|
|
19
|
+
def resourceAbsolutePath(relativePath):
|
|
20
|
+
"""Get the absolute path to a resource. Works for development and for PyInstaller."""
|
|
21
|
+
basePath = getattr(sys, "_MEIPASS", os.path.dirname(os.path.abspath(__file__)))
|
|
22
|
+
return os.path.join(basePath, relativePath)
|
crispy/__main__.py
ADDED
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
###################################################################
|
|
2
|
+
# Copyright (c) 2016-2024 European Synchrotron Radiation Facility #
|
|
3
|
+
# #
|
|
4
|
+
# Author: Marius Retegan #
|
|
5
|
+
# #
|
|
6
|
+
# This work is licensed under the terms of the MIT license. #
|
|
7
|
+
# For further information, see https://github.com/mretegan/crispy #
|
|
8
|
+
###################################################################
|
|
9
|
+
"""This module is the entry point to the application."""
|
|
10
|
+
|
|
11
|
+
import json
|
|
12
|
+
import logging
|
|
13
|
+
import numpy as np
|
|
14
|
+
import os
|
|
15
|
+
import socket
|
|
16
|
+
import sys
|
|
17
|
+
import warnings
|
|
18
|
+
from urllib.error import URLError
|
|
19
|
+
from urllib.request import Request, urlopen
|
|
20
|
+
|
|
21
|
+
from silx.gui.qt import (
|
|
22
|
+
QAction,
|
|
23
|
+
QApplication,
|
|
24
|
+
QByteArray,
|
|
25
|
+
QDialog,
|
|
26
|
+
QIcon,
|
|
27
|
+
QLocale,
|
|
28
|
+
QMainWindow,
|
|
29
|
+
QPixmap,
|
|
30
|
+
QPlainTextEdit,
|
|
31
|
+
QPoint,
|
|
32
|
+
QSize,
|
|
33
|
+
Qt,
|
|
34
|
+
QThread,
|
|
35
|
+
QProcess,
|
|
36
|
+
QFileDialog,
|
|
37
|
+
pyqtSignal,
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
from crispy import resourceAbsolutePath, version
|
|
41
|
+
from crispy.config import Config
|
|
42
|
+
from crispy.loggers import StatusBarHandler, setUpLoggers
|
|
43
|
+
from crispy.plot import MainPlotWidget # noqa: F401
|
|
44
|
+
from crispy.quanty.main import DockWidget
|
|
45
|
+
from crispy.uic import loadUi
|
|
46
|
+
from crispy.utils import fixedFont
|
|
47
|
+
|
|
48
|
+
logger = logging.getLogger("crispy.main")
|
|
49
|
+
warnings.filterwarnings("ignore", category=UserWarning)
|
|
50
|
+
|
|
51
|
+
settings = Config().read()
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
class MainWindow(QMainWindow):
|
|
55
|
+
def __init__(self, parent=None):
|
|
56
|
+
super().__init__(parent=parent)
|
|
57
|
+
|
|
58
|
+
uiPath = os.path.join("uis", "main.ui")
|
|
59
|
+
loadUi(resourceAbsolutePath(uiPath), baseinstance=self)
|
|
60
|
+
|
|
61
|
+
self.setWindowTitle("Crispy")
|
|
62
|
+
|
|
63
|
+
# Set the icon.
|
|
64
|
+
iconPath = os.path.join("crispy.png")
|
|
65
|
+
self.setWindowIcon(QIcon(resourceAbsolutePath(iconPath)))
|
|
66
|
+
|
|
67
|
+
# Setup the logger widget.
|
|
68
|
+
self.loggerWidget.setFont(fixedFont())
|
|
69
|
+
self.loggerWidget.setLineWrapMode(QPlainTextEdit.NoWrap)
|
|
70
|
+
|
|
71
|
+
# Setup the about dialog.
|
|
72
|
+
self.aboutDialog = AboutDialog(parent=self)
|
|
73
|
+
|
|
74
|
+
# Instantiate the Quanty dock widget.
|
|
75
|
+
self.quantyDockWidget = DockWidget(parent=self)
|
|
76
|
+
self.quantyDockWidget.setVisible(True)
|
|
77
|
+
self.addDockWidget(Qt.RightDockWidgetArea, self.quantyDockWidget)
|
|
78
|
+
|
|
79
|
+
# Compose the menu.
|
|
80
|
+
menu = self.menuBar().addMenu("Quanty")
|
|
81
|
+
menu.addAction(self.quantyDockWidget.preferencesAction)
|
|
82
|
+
menu.addSeparator()
|
|
83
|
+
menu.addAction(self.quantyDockWidget.saveInputAction)
|
|
84
|
+
menu.addAction(self.quantyDockWidget.saveInputAsAction)
|
|
85
|
+
menu.addSeparator()
|
|
86
|
+
menu.addAction(self.quantyDockWidget.showHideAction)
|
|
87
|
+
|
|
88
|
+
menu = self.menuBar().addMenu("Tools")
|
|
89
|
+
self.loadExternalDataAction = QAction(
|
|
90
|
+
"Load External Data", self, triggered=self.loadExternalData
|
|
91
|
+
)
|
|
92
|
+
menu.addAction(self.loadExternalDataAction)
|
|
93
|
+
|
|
94
|
+
self.runJupyterLabAction = QAction(
|
|
95
|
+
"Start Jupyter Lab", self, triggered=self.runJupyterLab
|
|
96
|
+
)
|
|
97
|
+
menu.addAction(self.runJupyterLabAction)
|
|
98
|
+
|
|
99
|
+
menu = self.menuBar().addMenu("Help")
|
|
100
|
+
self.openAboutDialogAction = QAction(
|
|
101
|
+
"About Crispy", self, triggered=self.openAboutDialog
|
|
102
|
+
)
|
|
103
|
+
menu.addAction(self.openAboutDialogAction)
|
|
104
|
+
|
|
105
|
+
# Register a handler to display messages in the status bar.
|
|
106
|
+
logger = logging.getLogger("crispy")
|
|
107
|
+
handler = StatusBarHandler()
|
|
108
|
+
logger.addHandler(handler)
|
|
109
|
+
# If I don't set the level here, the handler will also display debug
|
|
110
|
+
# messages, even though the level is set to INFO in the __init__ method.
|
|
111
|
+
handler.setLevel(logging.INFO)
|
|
112
|
+
handler.bridge.logUpdated.connect(self.updateStatusBar)
|
|
113
|
+
|
|
114
|
+
def updateStatusBar(self, message):
|
|
115
|
+
self.statusBar().showMessage(message, 3000)
|
|
116
|
+
|
|
117
|
+
def showEvent(self, event):
|
|
118
|
+
self.loadSettings()
|
|
119
|
+
super().showEvent(event)
|
|
120
|
+
|
|
121
|
+
def closeEvent(self, event):
|
|
122
|
+
self.saveSettings()
|
|
123
|
+
super().closeEvent(event)
|
|
124
|
+
|
|
125
|
+
def loadSettings(self):
|
|
126
|
+
settings.beginGroup("MainWindow")
|
|
127
|
+
|
|
128
|
+
state = settings.value("State")
|
|
129
|
+
if state is not None:
|
|
130
|
+
self.restoreState(QByteArray(state))
|
|
131
|
+
|
|
132
|
+
size = settings.value("Size")
|
|
133
|
+
if size is not None:
|
|
134
|
+
self.resize(QSize(size))
|
|
135
|
+
|
|
136
|
+
pos = settings.value("Position")
|
|
137
|
+
if pos is not None:
|
|
138
|
+
self.move(QPoint(pos))
|
|
139
|
+
|
|
140
|
+
splitter = settings.value("Splitter")
|
|
141
|
+
if splitter is not None:
|
|
142
|
+
sizes = [int(size) for size in splitter]
|
|
143
|
+
else:
|
|
144
|
+
sizes = [6, 1]
|
|
145
|
+
self.splitter.setSizes(sizes)
|
|
146
|
+
settings.endGroup()
|
|
147
|
+
|
|
148
|
+
def saveSettings(self):
|
|
149
|
+
settings.beginGroup("MainWindow")
|
|
150
|
+
settings.setValue("State", self.saveState())
|
|
151
|
+
settings.setValue("Size", self.size())
|
|
152
|
+
settings.setValue("Position", self.pos())
|
|
153
|
+
settings.setValue("Splitter", self.splitter.sizes())
|
|
154
|
+
settings.endGroup()
|
|
155
|
+
|
|
156
|
+
settings.sync()
|
|
157
|
+
|
|
158
|
+
def openAboutDialog(self):
|
|
159
|
+
self.aboutDialog.exec()
|
|
160
|
+
|
|
161
|
+
def loadExternalData(self):
|
|
162
|
+
dialog = QFileDialog()
|
|
163
|
+
path, _ = dialog.getOpenFileName(self, "Select File")
|
|
164
|
+
|
|
165
|
+
if path:
|
|
166
|
+
try:
|
|
167
|
+
x, y = np.loadtxt(path, unpack=True)
|
|
168
|
+
except ValueError:
|
|
169
|
+
logger.error(f"Failed to load data from {path}")
|
|
170
|
+
return
|
|
171
|
+
|
|
172
|
+
name = os.path.splitext(os.path.basename(path))[0]
|
|
173
|
+
self.quantyDockWidget.addExternalData(name, x, y)
|
|
174
|
+
|
|
175
|
+
def runJupyterLab(self):
|
|
176
|
+
process = QProcess()
|
|
177
|
+
process.setProgram("jupyter-lab")
|
|
178
|
+
process.setArguments([f"--notebook-dir={os.path.expanduser('~')}"])
|
|
179
|
+
process.startDetached()
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
class CheckUpdateThread(QThread):
|
|
183
|
+
updateAvailable = pyqtSignal()
|
|
184
|
+
|
|
185
|
+
@staticmethod
|
|
186
|
+
def _getSiteVersion():
|
|
187
|
+
URL = "http://www.esrf.eu/computing/scientific/crispy/version.json"
|
|
188
|
+
|
|
189
|
+
request = Request(URL)
|
|
190
|
+
request.add_header("Cache-Control", "max-age=0")
|
|
191
|
+
|
|
192
|
+
try:
|
|
193
|
+
response = urlopen(request, timeout=5)
|
|
194
|
+
except (URLError, socket.timeout):
|
|
195
|
+
return None
|
|
196
|
+
|
|
197
|
+
try:
|
|
198
|
+
data = json.loads(response.read().decode("utf-8"))
|
|
199
|
+
except Exception:
|
|
200
|
+
return None
|
|
201
|
+
|
|
202
|
+
return data["version"]
|
|
203
|
+
|
|
204
|
+
def run(self):
|
|
205
|
+
# TODO: The implementation is not ideal. The run() method of the parent
|
|
206
|
+
# class is not called.
|
|
207
|
+
# Wait a few seconds to avoid too much work at startup.
|
|
208
|
+
seconds = 1
|
|
209
|
+
self.sleep(seconds)
|
|
210
|
+
siteVersion = self._getSiteVersion()
|
|
211
|
+
|
|
212
|
+
if siteVersion is not None and version < siteVersion:
|
|
213
|
+
self.updateAvailable.emit()
|
|
214
|
+
else:
|
|
215
|
+
logger.info("There are no updates.")
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
class UpdateAvailableDialog(QDialog):
|
|
219
|
+
def __init__(self, parent):
|
|
220
|
+
super().__init__(parent)
|
|
221
|
+
|
|
222
|
+
uiPath = os.path.join("uis", "update.ui")
|
|
223
|
+
loadUi(resourceAbsolutePath(uiPath), baseinstance=self)
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
class AboutDialog(QDialog):
|
|
227
|
+
def __init__(self, parent):
|
|
228
|
+
super().__init__(parent)
|
|
229
|
+
|
|
230
|
+
uiPath = os.path.join("uis", "about.ui")
|
|
231
|
+
loadUi(resourceAbsolutePath(uiPath), baseinstance=self)
|
|
232
|
+
|
|
233
|
+
self.nameLabel.setText(f"Crispy {version}")
|
|
234
|
+
|
|
235
|
+
self.updateCheckBox.stateChanged.connect(self.updateCheckBoxStateChanged)
|
|
236
|
+
self.updateCheckBox.setChecked(settings.value("CheckForUpdates", type=bool))
|
|
237
|
+
|
|
238
|
+
iconPath = resourceAbsolutePath(os.path.join("icons", "crispy.svg"))
|
|
239
|
+
self.iconLabel.setPixmap(QPixmap(iconPath))
|
|
240
|
+
|
|
241
|
+
if settings.value("CheckForUpdates", type=bool):
|
|
242
|
+
self.runUpdateCheck()
|
|
243
|
+
|
|
244
|
+
def updateCheckBoxStateChanged(self):
|
|
245
|
+
updateCheck = self.updateCheckBox.isChecked()
|
|
246
|
+
settings.setValue("CheckForUpdates", updateCheck)
|
|
247
|
+
if updateCheck:
|
|
248
|
+
self.runUpdateCheck()
|
|
249
|
+
|
|
250
|
+
def runUpdateCheck(self):
|
|
251
|
+
thread = CheckUpdateThread(self)
|
|
252
|
+
thread.start()
|
|
253
|
+
thread.updateAvailable.connect(self.informAboutAvailableUpdate)
|
|
254
|
+
|
|
255
|
+
def informAboutAvailableUpdate(self):
|
|
256
|
+
updateAvailableDialog = UpdateAvailableDialog(self.parent())
|
|
257
|
+
updateAvailableDialog.show()
|
|
258
|
+
|
|
259
|
+
|
|
260
|
+
def main():
|
|
261
|
+
app = QApplication([])
|
|
262
|
+
|
|
263
|
+
# This must be done after the application is instantiated.
|
|
264
|
+
locale = QLocale(QLocale.C)
|
|
265
|
+
locale.setNumberOptions(QLocale.OmitGroupSeparator)
|
|
266
|
+
QLocale.setDefault(locale)
|
|
267
|
+
|
|
268
|
+
config = Config()
|
|
269
|
+
config.prune()
|
|
270
|
+
|
|
271
|
+
setUpLoggers()
|
|
272
|
+
|
|
273
|
+
logger.info("Starting the application.")
|
|
274
|
+
window = MainWindow()
|
|
275
|
+
window.show()
|
|
276
|
+
logger.info("Ready.")
|
|
277
|
+
|
|
278
|
+
sys.exit(app.exec())
|
|
279
|
+
|
|
280
|
+
|
|
281
|
+
if __name__ == "__main__":
|
|
282
|
+
main()
|
crispy/broaden.py
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
###################################################################
|
|
2
|
+
# Copyright (c) 2016-2024 European Synchrotron Radiation Facility #
|
|
3
|
+
# #
|
|
4
|
+
# Author: Marius Retegan #
|
|
5
|
+
# #
|
|
6
|
+
# This work is licensed under the terms of the MIT license. #
|
|
7
|
+
# For further information, see https://github.com/mretegan/crispy #
|
|
8
|
+
###################################################################
|
|
9
|
+
"""The module implements fast FFT broadening."""
|
|
10
|
+
|
|
11
|
+
from math import ceil
|
|
12
|
+
|
|
13
|
+
import numpy as np
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def gaussian_kernel1d(sigma=None, truncate=4):
|
|
17
|
+
size = ceil(2 * truncate * sigma + 1)
|
|
18
|
+
if size % 2 == 0:
|
|
19
|
+
size = size + 1
|
|
20
|
+
x = np.arange(size)
|
|
21
|
+
mu = np.median(x)
|
|
22
|
+
# The prefactor 1 / (sigma * np.sqrt(2 * np.pi)) drops in the normalization.
|
|
23
|
+
kernel = np.exp(-0.5 * ((x - mu) ** 2 / sigma**2))
|
|
24
|
+
if kernel.sum() < np.finfo(float).eps:
|
|
25
|
+
raise Exception(
|
|
26
|
+
f"The kernel can't be normalized, because its sum is {kernel.sum():.1e}."
|
|
27
|
+
)
|
|
28
|
+
kernel /= kernel.sum()
|
|
29
|
+
return kernel
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def gaussian_kernel2d(sigma=None, truncate=(4, 4)):
|
|
33
|
+
if len(sigma) != 2 or len(truncate) != 2:
|
|
34
|
+
raise ValueError(
|
|
35
|
+
"Sigma and the truncation parameter don't have the required dimensions."
|
|
36
|
+
)
|
|
37
|
+
kernel_x = gaussian_kernel1d(sigma[0], truncate[0])
|
|
38
|
+
kernel_y = gaussian_kernel1d(sigma[1], truncate[1])
|
|
39
|
+
kernel = np.outer(kernel_y, kernel_x)
|
|
40
|
+
return kernel
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def convolve_fft(array, kernel):
|
|
44
|
+
"""Convolve an array with a kernel using FFT.
|
|
45
|
+
|
|
46
|
+
Implementation based on the convolve_fft function from astropy:
|
|
47
|
+
https://github.com/astropy/astropy/blob/main/astropy/convolution/convolve.py
|
|
48
|
+
"""
|
|
49
|
+
array = np.asarray(array, dtype=complex)
|
|
50
|
+
kernel = np.asarray(kernel, dtype=complex)
|
|
51
|
+
|
|
52
|
+
if array.ndim != kernel.ndim:
|
|
53
|
+
raise ValueError("Image and kernel must have same number of dimensions")
|
|
54
|
+
|
|
55
|
+
new_shape = np.array(array.shape) + np.array(kernel.shape)
|
|
56
|
+
|
|
57
|
+
array_slices = []
|
|
58
|
+
kernel_slices = []
|
|
59
|
+
for new_dimsize, array_dimsize, kernel_dimsize in zip(
|
|
60
|
+
new_shape, array.shape, kernel.shape
|
|
61
|
+
):
|
|
62
|
+
center = new_dimsize - (new_dimsize + 1) // 2
|
|
63
|
+
array_slices += [
|
|
64
|
+
slice(center - array_dimsize // 2, center + (array_dimsize + 1) // 2)
|
|
65
|
+
]
|
|
66
|
+
kernel_slices += [
|
|
67
|
+
slice(center - kernel_dimsize // 2, center + (kernel_dimsize + 1) // 2)
|
|
68
|
+
]
|
|
69
|
+
|
|
70
|
+
array_slices = tuple(array_slices)
|
|
71
|
+
kernel_slices = tuple(kernel_slices)
|
|
72
|
+
|
|
73
|
+
if not np.all(new_shape == array.shape):
|
|
74
|
+
big_array = np.zeros(new_shape, dtype=complex)
|
|
75
|
+
big_array[array_slices] = array
|
|
76
|
+
else:
|
|
77
|
+
big_array = array
|
|
78
|
+
|
|
79
|
+
if not np.all(new_shape == kernel.shape):
|
|
80
|
+
big_kernel = np.zeros(new_shape, dtype=complex)
|
|
81
|
+
big_kernel[kernel_slices] = kernel
|
|
82
|
+
else:
|
|
83
|
+
big_kernel = kernel
|
|
84
|
+
|
|
85
|
+
array_fft = np.fft.fftn(big_array)
|
|
86
|
+
kernel_fft = np.fft.fftn(np.fft.ifftshift(big_kernel))
|
|
87
|
+
|
|
88
|
+
rifft = np.fft.ifftn(array_fft * kernel_fft)
|
|
89
|
+
|
|
90
|
+
return rifft[array_slices].real
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
def broaden(array, fwhm=None, kind="gaussian"):
|
|
94
|
+
if fwhm is None:
|
|
95
|
+
return array
|
|
96
|
+
|
|
97
|
+
fwhm = np.array(fwhm)
|
|
98
|
+
if (fwhm <= 0).any():
|
|
99
|
+
return array
|
|
100
|
+
|
|
101
|
+
kernel = None
|
|
102
|
+
if kind == "gaussian":
|
|
103
|
+
sigma = fwhm / (2 * np.sqrt(2 * np.log(2)))
|
|
104
|
+
if fwhm.size == 1:
|
|
105
|
+
kernel = gaussian_kernel1d(sigma)
|
|
106
|
+
elif fwhm.size == 2:
|
|
107
|
+
kernel = gaussian_kernel2d(sigma)
|
|
108
|
+
|
|
109
|
+
if kernel is None:
|
|
110
|
+
return array
|
|
111
|
+
|
|
112
|
+
return convolve_fft(array, kernel)
|
crispy/config.py
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
###################################################################
|
|
2
|
+
# Copyright (c) 2016-2024 European Synchrotron Radiation Facility #
|
|
3
|
+
# #
|
|
4
|
+
# Author: Marius Retegan #
|
|
5
|
+
# #
|
|
6
|
+
# This work is licensed under the terms of the MIT license. #
|
|
7
|
+
# For further information, see https://github.com/mretegan/crispy #
|
|
8
|
+
###################################################################
|
|
9
|
+
"""The modules provides a class to deal with the configuration."""
|
|
10
|
+
|
|
11
|
+
import logging
|
|
12
|
+
import os
|
|
13
|
+
import shutil
|
|
14
|
+
import sys
|
|
15
|
+
|
|
16
|
+
from packaging.version import parse
|
|
17
|
+
from silx.gui.qt import QSettings, QStandardPaths
|
|
18
|
+
|
|
19
|
+
from crispy import resourceAbsolutePath, version
|
|
20
|
+
|
|
21
|
+
logger = logging.getLogger(__name__)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class Config:
|
|
25
|
+
@property
|
|
26
|
+
def name(self):
|
|
27
|
+
return "Crispy" if sys.platform == "win32" else "crispy"
|
|
28
|
+
|
|
29
|
+
@property
|
|
30
|
+
def path(self):
|
|
31
|
+
return os.path.split(self.read().fileName())[0]
|
|
32
|
+
|
|
33
|
+
def read(self):
|
|
34
|
+
return QSettings(
|
|
35
|
+
QSettings.IniFormat, QSettings.UserScope, self.name, "settings"
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
def default(self):
|
|
39
|
+
"""Set default settings."""
|
|
40
|
+
settings = self.read()
|
|
41
|
+
settings.clear()
|
|
42
|
+
|
|
43
|
+
logger.debug("Setting the default values.")
|
|
44
|
+
|
|
45
|
+
settings.beginGroup("Quanty")
|
|
46
|
+
settings.setValue("Path", self.findQuanty())
|
|
47
|
+
settings.setValue("Verbosity", "0x0000")
|
|
48
|
+
settings.setValue("DenseBorder", "2000")
|
|
49
|
+
settings.setValue("ShiftSpectra", True)
|
|
50
|
+
settings.setValue("RemoveFiles", True)
|
|
51
|
+
settings.endGroup()
|
|
52
|
+
|
|
53
|
+
settings.setValue("CheckForUpdates", True)
|
|
54
|
+
settings.setValue("CurrentPath", os.path.expanduser("~"))
|
|
55
|
+
settings.setValue("Version", version)
|
|
56
|
+
|
|
57
|
+
settings.sync()
|
|
58
|
+
|
|
59
|
+
def prune(self):
|
|
60
|
+
"""Remove previous config files."""
|
|
61
|
+
|
|
62
|
+
root = QStandardPaths.standardLocations(QStandardPaths.GenericConfigLocation)[0]
|
|
63
|
+
path = os.path.join(root, self.name)
|
|
64
|
+
if os.path.exists(path):
|
|
65
|
+
shutil.rmtree(path, ignore_errors=True)
|
|
66
|
+
|
|
67
|
+
versionFromSettings = self.read().value("Version")
|
|
68
|
+
if versionFromSettings is None or parse(versionFromSettings) != parse(version):
|
|
69
|
+
path, _ = os.path.split(self.read().fileName())
|
|
70
|
+
shutil.rmtree(path, ignore_errors=True)
|
|
71
|
+
self.default()
|
|
72
|
+
|
|
73
|
+
@staticmethod
|
|
74
|
+
def findQuanty():
|
|
75
|
+
executable = "Quanty"
|
|
76
|
+
if sys.platform == "win32":
|
|
77
|
+
executable = f"{executable}.exe"
|
|
78
|
+
localPath = resourceAbsolutePath(os.path.join("quanty", "bin", "win32"))
|
|
79
|
+
elif sys.platform == "darwin":
|
|
80
|
+
localPath = resourceAbsolutePath(os.path.join("quanty", "bin", "darwin"))
|
|
81
|
+
elif sys.platform == "linux":
|
|
82
|
+
localPath = resourceAbsolutePath(os.path.join("quanty", "bin", "linux"))
|
|
83
|
+
else:
|
|
84
|
+
localPath = None
|
|
85
|
+
|
|
86
|
+
if localPath is not None:
|
|
87
|
+
localPath = QStandardPaths.findExecutable(executable, [localPath])
|
|
88
|
+
|
|
89
|
+
envPath = QStandardPaths.findExecutable(executable)
|
|
90
|
+
# Check if Quanty is in the paths defined in the $PATH.
|
|
91
|
+
if envPath:
|
|
92
|
+
path = envPath
|
|
93
|
+
# Check if Quanty is bundled with Crispy.
|
|
94
|
+
elif localPath is not None:
|
|
95
|
+
path = localPath
|
|
96
|
+
else:
|
|
97
|
+
path = None
|
|
98
|
+
|
|
99
|
+
if path is None:
|
|
100
|
+
logger.debug(
|
|
101
|
+
"Could not find the Quanty executable."
|
|
102
|
+
'Please set it up using the "Preferences" dialog.'
|
|
103
|
+
)
|
|
104
|
+
|
|
105
|
+
return path
|
|
106
|
+
|
|
107
|
+
def setQuantyPath(self, path):
|
|
108
|
+
self.read().setValue("Quanty/Path", path)
|
|
109
|
+
self.read().sync()
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>
|
|
3
|
+
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5" version="1.1" viewBox="0 0 2048 2048" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
|
4
|
+
<g transform="matrix(.25009 0 0 .25009 -43.054 -43.069)">
|
|
5
|
+
<path d="m6465.7 1334.6h-1221.7c0-538.92-438.44-977.36-977.36-977.36s-977.36 438.44-977.36 977.36h-1221.7c-404.84 0-733.02 328.18-733.02 733.02v5375.5c0 404.84 328.18 733.02 733.02 733.02h4398.1c404.84 0 733.02-328.18 733.02-733.02v-5375.5c0-404.84-328.18-733.02-733.02-733.02h0.02zm-91.63 6108.5h-4214.8c-50.26 0-91.62-41.36-91.62-91.63v-5192.2c0-50.26 41.36-91.62 91.62-91.62h641.39v549.76c0 101.2 82.06 183.26 183.25 183.26h2565.6c101.2 0 183.25-82.06 183.25-183.26v-549.76h641.39c50.27 0 91.63 41.36 91.63 91.62v5192.2c0 50.27-41.36 91.63-91.63 91.63h-0.08zm-2107.4-6475c202.42 0 366.51 164.09 366.51 366.51s-164.09 366.51-366.51 366.51-366.51-164.09-366.51-366.51 164.09-366.51 366.51-366.51" fill-rule="nonzero"/>
|
|
6
|
+
<path d="m2831.1 4196.1h2871.2" fill="none" stroke="#000" stroke-width="625px"/>
|
|
7
|
+
<path d="m2831.1 5761.8h2871.2" fill="none" stroke="#000" stroke-width="625px"/>
|
|
8
|
+
</g>
|
|
9
|
+
</svg>
|
crispy/icons/cog.svg
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg version="1.1" viewBox="0 0 2048 2048" xmlns="http://www.w3.org/2000/svg">
|
|
3
|
+
<path d="m1741.4 1157.4 161.94 93.476c18.495 10.674 27.079 32.748 20.744 53.143-42.066 135.44-113.89 257.8-207.82 359.43a45.661 45.661 0 0 1-56.362 8.5652l-161.82-93.461a727.99 727.99 0 0 1-230.88 133.49v186.89a45.638 45.638 0 0 1-35.633 44.528c-132.83 29.83-275.5 31.373-415.03 0.038-20.862-4.6854-35.731-23.165-35.731-44.547v-186.9a727.91 727.91 0 0 1-230.88-133.49l-161.82 93.461a45.661 45.661 0 0 1-56.362-8.5652c-93.928-101.63-165.75-223.99-207.82-359.43-6.3346-20.391 2.2496-42.465 20.744-53.143l161.94-93.488a735.22 735.22 0 0 1 0-266.76l-161.94-93.476c-18.495-10.674-27.079-32.748-20.744-53.143 42.066-135.44 113.89-257.8 207.82-359.43a45.661 45.661 0 0 1 56.362-8.5652l161.82 93.461a727.99 727.99 0 0 1 230.88-133.49v-186.9a45.638 45.638 0 0 1 35.633-44.528c132.83-29.83 275.5-31.373 415.03-0.038 20.862 4.6854 35.731 23.165 35.731 44.547v186.9a727.91 727.91 0 0 1 230.88 133.49l161.82-93.461a45.661 45.661 0 0 1 56.362 8.5652c93.928 101.63 165.75 223.99 207.82 359.43 6.3346 20.391-2.2496 42.465-20.744 53.143l-161.94 93.476a735.24 735.24 0 0 1 0 266.76zm-413.39-133.38c0-167.63-136.37-304-304-304s-304 136.37-304 304 136.37 304 304 304 304-136.37 304-304z" stroke-width="3.8"/>
|
|
4
|
+
</svg>
|
crispy/icons/crispy.png
ADDED
|
Binary file
|
crispy/icons/crispy.svg
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>
|
|
3
|
+
<svg clip-rule="evenodd" fill-rule="evenodd" version="1.1" viewBox="0 0 1007 1007" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
|
4
|
+
<g transform="translate(-1367.2 -1940.2)">
|
|
5
|
+
<g transform="scale(4.1667)">
|
|
6
|
+
<g transform="translate(-.69718 165.43)">
|
|
7
|
+
<path d="m548.6 421c0 54.672-44.32 98.991-98.992 98.991-54.671 0-98.991-44.319-98.991-98.991 0-54.671 44.32-98.991 98.991-98.991 54.672 0 98.992 44.32 98.992 98.991" fill="#1f78b4" fill-rule="nonzero"/>
|
|
8
|
+
</g>
|
|
9
|
+
</g>
|
|
10
|
+
<g transform="scale(4.1667)">
|
|
11
|
+
<g transform="matrix(0 -1.2379 -1.2379 -0 970.07 1143)">
|
|
12
|
+
<ellipse cx="449.61" cy="421" rx="77.588" ry="77.589" fill="none" stroke="#a6cee3" stroke-width="9.69px"/>
|
|
13
|
+
</g>
|
|
14
|
+
</g>
|
|
15
|
+
<g transform="scale(4.1667)">
|
|
16
|
+
<g transform="matrix(.42909 .42909 -.42909 .42909 450.8 -507.87)">
|
|
17
|
+
<path d="m1273.1 1171.7c-58.34 0-105.63 47.29-105.63 105.63 0 58.29 47.33 105.62 105.63 105.62 58.33 0 105.63-47.29 105.63-105.62" fill="none" stroke="#2fa037" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5" stroke-width="16.48px"/>
|
|
18
|
+
</g>
|
|
19
|
+
</g>
|
|
20
|
+
<g transform="scale(4.1667)">
|
|
21
|
+
<g transform="matrix(.30605 .30605 -.30605 .30605 450.58 -194.15)">
|
|
22
|
+
<path d="m1273.1 1171.7c-58.34 0-105.63 47.29-105.63 105.63 0 58.29 47.33 105.62 105.63 105.62 58.33 0 105.63-47.29 105.63-105.62" fill="none" stroke="#b3d388" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5" stroke-width="23.1px"/>
|
|
23
|
+
</g>
|
|
24
|
+
</g>
|
|
25
|
+
<g transform="scale(4.1667)">
|
|
26
|
+
<g transform="matrix(.42567 0 0 .42567 -253.21 87.72)">
|
|
27
|
+
<circle cx="1662.6" cy="1278.6" r="24.667" fill="#b3d388"/>
|
|
28
|
+
</g>
|
|
29
|
+
</g>
|
|
30
|
+
<g transform="scale(4.1667)">
|
|
31
|
+
<g transform="matrix(.42567 0 0 .42567 -290.06 -13.085)">
|
|
32
|
+
<circle cx="1662.6" cy="1278.6" r="24.667" fill="#2fa037"/>
|
|
33
|
+
</g>
|
|
34
|
+
</g>
|
|
35
|
+
</g>
|
|
36
|
+
</svg>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg version="1.1" viewBox="0 0 2048 2048" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
|
3
|
+
<path d="m1844.6 914.56h-163.97v-164.16c0-90.664-73.496-164.16-164.16-164.16h-547.2l-218.88-218.88h-547.2c-90.664 0-164.16 73.496-164.16 164.16v984.96c0 90.664 73.496 164.16 164.16 164.16h1368a164.16 164.16 0 0 0 139.21-77.155l273.4-437.76c68.222-109.16-10.39-251.16-139.2-251.16zm-1620.9-383.04h458.68l218.88 218.88h594.68a20.52 20.52 0 0 1 20.52 20.52v143.64h-957.6a164.16 164.16 0 0 0-140.56 79.351l-215.12 356.52v-798.42a20.496 20.496 0 0 1 20.52-20.496zm1347.5 984.96h-1285.9l264.14-437.76h1295.4z" stroke-width="3.42"/>
|
|
4
|
+
</svg>
|
crispy/icons/play.svg
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg version="1.1" viewBox="0 0 2048 2048" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
|
3
|
+
<path d="m1785.5 866.9-1337.6-790.78c-108.68-64.22-275.12-1.9-275.12 156.94v1581.2c0 142.5 154.66 228.38 275.12 156.94l1337.6-790.4c119.32-70.3 119.7-243.58 0-313.88z" fill="#27ae60" stroke-width="3.8"/>
|
|
4
|
+
</svg>
|
crispy/icons/save.svg
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg version="1.1" viewBox="0 0 2048 2048" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
|
3
|
+
<path d="m1821.8 544.98-318.75-318.75a182.4 182.4 0 0 0-128.98-53.424h-1018.8c-100.74 0-182.4 81.662-182.4 182.4v1337.6c0 100.74 81.662 182.4 182.4 182.4h1337.6c100.74 0 182.4-81.662 182.4-182.4v-1018.8a182.4 182.4 0 0 0-53.424-128.98zm-615.38-189.78v304h-486.4v-304zm463.6 1337.6h-1292a22.8 22.8 0 0 1-22.8-22.8v-1292a22.8 22.8 0 0 1 22.8-22.8h159.6v395.2c0 50.369 40.831 91.2 91.2 91.2h668.8c50.369 0 91.2-40.831 91.2-91.2v-380.45l297.32 297.32a22.8 22.8 0 0 1 6.6766 16.123v986.6a22.8 22.8 0 0 1-22.8 22.8zm-646-760c-184.39 0-334.4 150.01-334.4 334.4s150.01 334.4 334.4 334.4 334.4-150.01 334.4-334.4-150.01-334.4-334.4-334.4zm0 486.4c-83.813 0-152-68.187-152-152s68.187-152 152-152 152 68.187 152 152-68.187 152-152 152z" stroke-width="3.8"/>
|
|
4
|
+
</svg>
|
crispy/icons/stop.svg
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg version="1.1" viewBox="0 0 2048 2048" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
|
3
|
+
<path d="m1692.8 172.8h-1337.6c-100.7 0-182.4 81.7-182.4 182.4v1337.6c0 100.7 81.7 182.4 182.4 182.4h1337.6c100.7 0 182.4-81.7 182.4-182.4v-1337.6c0-100.7-81.7-182.4-182.4-182.4z" fill="#c0392b" stroke-width="3.8"/>
|
|
4
|
+
</svg>
|
crispy/icons/trash.svg
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg version="1.1" viewBox="0 0 2048 2048" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
|
3
|
+
<path d="m902.4 765.6v820.8c0 25.183-20.417 45.6-45.6 45.6h-91.2c-25.183 0-45.6-20.417-45.6-45.6v-820.8c0-25.183 20.417-45.6 45.6-45.6h91.2c25.183 0 45.6 20.417 45.6 45.6zm380-45.6h-91.2c-25.183 0-45.6 20.417-45.6 45.6v820.8c0 25.183 20.417 45.6 45.6 45.6h91.2c25.183 0 45.6-20.417 45.6-45.6v-820.8c0-25.183-20.417-45.6-45.6-45.6zm501.6-364.8c50.369 0 91.2 40.831 91.2 91.2v45.6c0 25.183-20.417 45.6-45.6 45.6h-76v1276.8c0 100.74-81.662 182.4-182.4 182.4h-1094.4c-100.74 0-182.4-81.662-182.4-182.4v-1276.8h-76c-25.183 0-45.6-20.417-45.6-45.6v-45.6c0-50.369 40.831-91.2 91.2-91.2h282.76l129.27-215.44a182.4 182.4 0 0 1 156.41-88.555h383.13a182.4 182.4 0 0 1 156.41 88.555l129.26 215.44zm-1024.5 0h529.05l-66.318-110.53a22.8 22.8 0 0 0-19.551-11.069h-357.31a22.8 22.8 0 0 0-19.551 11.069zm811.72 182.4h-1094.4v1254a22.8 22.8 0 0 0 22.8 22.8h1048.8a22.8 22.8 0 0 0 22.8-22.8z" stroke-width="3.8"/>
|
|
4
|
+
</svg>
|