just starting
This commit is contained in:
17
.gitignore
vendored
Normal file
17
.gitignore
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
*.*~
|
||||
*.*-*
|
||||
*.*+*
|
||||
pyrcc5/*.*-*
|
||||
pyrcc5/__pycache__
|
||||
pyrcc5/__pycache__/*
|
||||
src/*.*~
|
||||
src/*.*-*
|
||||
src/*.*+*
|
||||
src/__pycache__
|
||||
src/__pycache__/*
|
||||
help/*.*~
|
||||
help/*.*-*
|
||||
help/*.*+*
|
||||
|
||||
|
||||
|
||||
5
help/.gitignore
vendored
Normal file
5
help/.gitignore
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
*.*~
|
||||
*.*-*
|
||||
*.*+*
|
||||
__pycache__
|
||||
__pycache__/*.*
|
||||
6
help/README.md
Normal file
6
help/README.md
Normal file
@@ -0,0 +1,6 @@
|
||||
# to compile hush.qrc:
|
||||
make
|
||||
# to install compiled hush_respources.py
|
||||
make install
|
||||
|
||||
The latter installs hush_respources.py to the ../pyqrcc5 directory
|
||||
54
help/index.html
Executable file
54
help/index.html
Executable file
@@ -0,0 +1,54 @@
|
||||
<html><head><title>Time of Flight Measuement for Injector and Ring Cyclotron Turn Number Ascertainment, TINA</title></head>
|
||||
<body>
|
||||
|
||||
<h5 style="color:gray;">June 2024, Jan Chrin, Pierre-André Duperrex, Waldamar Koprek</h5>
|
||||
<h4> <span style="color: red;">T</span>ime of Flight Measurement for <span style="color: red;">I</span>njector and Ring Cyclotron Turn <span style="color: red;">N</span>umber <span style="color: red;">A</span>scertainment, <span style="color: red;">TINA</span></h4>
|
||||
<h2 style="color:blue;">About</h2>
|
||||
|
||||
|
||||
<p>The TINA application determines the number of turns in a cyclotron
|
||||
from a Time of Flight (TOF) measurement technique and a cross-correlation
|
||||
of fast sampled data from capacitive sensors located at the entrance and exit
|
||||
of the cycolotron. This is based on a python implementation of a LabVIEW application developed by
|
||||
Pierre-André Duperrex: <br>
|
||||
P.-A. Duperrex and A. Facchetti,
|
||||
Number of Turn Measurements on the HIPA Cyclotrons at PSI.<br>
|
||||
doi:10.18429/JACoW-IPAC2018-WEPAL067
|
||||
|
||||
|
||||
</p>
|
||||
<!--a href="page1.html">here</a></p-->
|
||||
|
||||
<h2 style="color:blue;">The Repository</h2>
|
||||
|
||||
<p>The application comprises two components:
|
||||
<ul>
|
||||
<li>
|
||||
The low-level ADC data acquisition system.<br>
|
||||
<span style="color: green;">https://git.psi.ch/epics_iocboot_hipa/.. to be completed</span><br>
|
||||
|
||||
</li>
|
||||
<li>
|
||||
A High Level Application (HLA) that is able to interact with the IOC, start a low-level data acquistion run,
|
||||
acquire the raw data, and perform the number of terms analysis.<br>
|
||||
<span style="color: green;"> https://gitlab.psi.ch/hipa_apps4ops/tina</span><br>
|
||||
<span style="color: gray;"> /hipa/bd/applications/tina/latest/tina.sh</span>
|
||||
</li>
|
||||
</ul>
|
||||
<h2 style="color:blue;">GUI, Control Tab</h2>
|
||||
Main panel for use by operators.
|
||||
<h3 style="color:#7b68ee;">Operator Panel</h3>
|
||||
|
||||
<h3 style="color:#7b68ee;">Expert Panel</h3>
|
||||
Selecting the Dry Run option disables setting values to epics process variables.
|
||||
|
||||
<h3 style="color:#7b68ee;">TINA Image</h3>
|
||||
<table>
|
||||
<tr><td>
|
||||
<img src=":Tina.jpg" width=90 height=90/> </td><td>
|
||||
Tina Turner</td>
|
||||
</table>
|
||||
<p>
|
||||
</p>
|
||||
|
||||
</body></html>
|
||||
2
help/make_and_install.sh
Executable file
2
help/make_and_install.sh
Executable file
@@ -0,0 +1,2 @@
|
||||
make compile
|
||||
make install
|
||||
9
help/makefile
Normal file
9
help/makefile
Normal file
@@ -0,0 +1,9 @@
|
||||
compile:
|
||||
pyrcc5 tina.qrc > tina_resources.py
|
||||
|
||||
install:
|
||||
if [ ! -f tina_resources.py ]; then echo "pyrcc5 compilation of resources.qrc failed"; fi
|
||||
if [ -f tina_resources.py -a -f ../pyrcc5/tina_resources.py-- ]; then cp ../pyrcc5/tina_resources.py-- ../pyrcc5/tina_resources.py---; fi
|
||||
if [ -f tina_resources.py -a -f ../pyrcc5/tina_resources.py- ]; then cp ../pyrcc5/tina_resources.py- ../pyrcc5/tina_resources.py--; fi
|
||||
if [ -f tina_resources.py -a -f ../pyrcc5/tina_resources.py ]; then cp ../pyrcc5/tina_resources.py ../pyrcc5/tina_resources.py-; fi
|
||||
if [ -f tina_resources.py ]; then cp tina_resources.py ../pyrcc5/tina_resources.py; fi
|
||||
9
help/makefile~
Normal file
9
help/makefile~
Normal file
@@ -0,0 +1,9 @@
|
||||
compile:
|
||||
pyrcc5 hush.qrc > hush_resources.py
|
||||
|
||||
install:
|
||||
if [ ! -f hush_resources.py ]; then echo "pyrcc5 compilation of resources.qrc failed"; fi
|
||||
if [ -f hush_resources.py -a -f ../pyrcc5/hush_resources.py-- ]; then cp ../pyrcc5/hush_resources.py-- ../pyrcc5/hush_resources.py---; fi
|
||||
if [ -f hush_resources.py -a -f ../pyrcc5/hush_resources.py- ]; then cp ../pyrcc5/hush_resources.py- ../pyrcc5/hush_resources.py--; fi
|
||||
if [ -f hush_resources.py -a -f ../pyrcc5/hush_resources.py ]; then cp ../pyrcc5/hush_resources.py ../pyrcc5/hush_resources.py-; fi
|
||||
if [ -f hush_resources.py ]; then cp hush_resources.py ../pyrcc5/hush_resources.py; fi
|
||||
7
help/page1.html
Executable file
7
help/page1.html
Executable file
@@ -0,0 +1,7 @@
|
||||
<html><head><title>Web Help</title></head>
|
||||
<body>
|
||||
|
||||
<p><b>Page 1 of web help</b></p>
|
||||
<p> <a href="page2.html"> Next</a></p>
|
||||
<p><b>etc...</b> etc...</p>
|
||||
</body></html>
|
||||
7
help/page2.html
Executable file
7
help/page2.html
Executable file
@@ -0,0 +1,7 @@
|
||||
<html><head><title>Web Help</title></head>
|
||||
<body>
|
||||
|
||||
<p><b>Page 2 of web help</b></p>
|
||||
<p> <a href="page3.html"> Next</a></p>
|
||||
<p><b>etc...</b> etc...</p>
|
||||
</body></html>
|
||||
7
help/page3.html
Executable file
7
help/page3.html
Executable file
@@ -0,0 +1,7 @@
|
||||
<html><head><title>Web Help</title></head>
|
||||
<body>
|
||||
|
||||
<p><b>Page 3 of web help</b></p>
|
||||
<p> <a href="page4.html"> Next</a></p>
|
||||
<p><b>etc...</b> etc...</p>
|
||||
</body></html>
|
||||
7
help/page4.html
Executable file
7
help/page4.html
Executable file
@@ -0,0 +1,7 @@
|
||||
<html><head><title>Web Help</title></head>
|
||||
<body>
|
||||
|
||||
<p><b>Page 4 of web help</b></p>
|
||||
<p> <a href="page5.html"> Next</a></p>
|
||||
<p><b>etc...</b> etc...</p>
|
||||
</body></html>
|
||||
7
help/page5.html
Executable file
7
help/page5.html
Executable file
@@ -0,0 +1,7 @@
|
||||
<html><head><title>Web Help</title></head>
|
||||
<body>
|
||||
|
||||
<p><b>Page 5 of web help</b></p>
|
||||
|
||||
<p><b>etc...</b> etc...</p>
|
||||
</body></html>
|
||||
10
help/tina.qrc
Normal file
10
help/tina.qrc
Normal file
@@ -0,0 +1,10 @@
|
||||
<!DOCTYPE RCC><RCC version="1.0">
|
||||
<qresource>
|
||||
<file>page5.html</file>
|
||||
<file>page4.html</file>
|
||||
<file>page3.html</file>
|
||||
<file>page2.html</file>
|
||||
<file>page1.html</file>
|
||||
<file>index.html</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
282
help/tina_resources.py
Normal file
282
help/tina_resources.py
Normal file
@@ -0,0 +1,282 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Resource object code
|
||||
#
|
||||
# Created by: The Resource Compiler for PyQt5 (Qt v5.15.3)
|
||||
#
|
||||
# WARNING! All changes made in this file will be lost!
|
||||
|
||||
from PyQt5 import QtCore
|
||||
|
||||
qt_resource_data = b"\
|
||||
\x00\x00\x00\xa7\
|
||||
\x3c\
|
||||
\x68\x74\x6d\x6c\x3e\x3c\x68\x65\x61\x64\x3e\x3c\x74\x69\x74\x6c\
|
||||
\x65\x3e\x57\x65\x62\x20\x48\x65\x6c\x70\x3c\x2f\x74\x69\x74\x6c\
|
||||
\x65\x3e\x3c\x2f\x68\x65\x61\x64\x3e\x0a\x3c\x62\x6f\x64\x79\x3e\
|
||||
\x0a\x0a\x3c\x70\x3e\x3c\x62\x3e\x50\x61\x67\x65\x20\x33\x20\x6f\
|
||||
\x66\x20\x77\x65\x62\x20\x68\x65\x6c\x70\x3c\x2f\x62\x3e\x3c\x2f\
|
||||
\x70\x3e\x0a\x3c\x70\x3e\x20\x20\x3c\x61\x20\x68\x72\x65\x66\x3d\
|
||||
\x22\x70\x61\x67\x65\x34\x2e\x68\x74\x6d\x6c\x22\x3e\x20\x4e\x65\
|
||||
\x78\x74\x3c\x2f\x61\x3e\x3c\x2f\x70\x3e\x0a\x3c\x70\x3e\x3c\x62\
|
||||
\x3e\x65\x74\x63\x2e\x2e\x2e\x3c\x2f\x62\x3e\x20\x65\x74\x63\x2e\
|
||||
\x2e\x2e\x3c\x2f\x70\x3e\x0a\x3c\x2f\x62\x6f\x64\x79\x3e\x3c\x2f\
|
||||
\x68\x74\x6d\x6c\x3e\x0a\
|
||||
\x00\x00\x00\xa7\
|
||||
\x3c\
|
||||
\x68\x74\x6d\x6c\x3e\x3c\x68\x65\x61\x64\x3e\x3c\x74\x69\x74\x6c\
|
||||
\x65\x3e\x57\x65\x62\x20\x48\x65\x6c\x70\x3c\x2f\x74\x69\x74\x6c\
|
||||
\x65\x3e\x3c\x2f\x68\x65\x61\x64\x3e\x0a\x3c\x62\x6f\x64\x79\x3e\
|
||||
\x0a\x0a\x3c\x70\x3e\x3c\x62\x3e\x50\x61\x67\x65\x20\x31\x20\x6f\
|
||||
\x66\x20\x77\x65\x62\x20\x68\x65\x6c\x70\x3c\x2f\x62\x3e\x3c\x2f\
|
||||
\x70\x3e\x0a\x3c\x70\x3e\x20\x20\x3c\x61\x20\x68\x72\x65\x66\x3d\
|
||||
\x22\x70\x61\x67\x65\x32\x2e\x68\x74\x6d\x6c\x22\x3e\x20\x4e\x65\
|
||||
\x78\x74\x3c\x2f\x61\x3e\x3c\x2f\x70\x3e\x0a\x3c\x70\x3e\x3c\x62\
|
||||
\x3e\x65\x74\x63\x2e\x2e\x2e\x3c\x2f\x62\x3e\x20\x65\x74\x63\x2e\
|
||||
\x2e\x2e\x3c\x2f\x70\x3e\x0a\x3c\x2f\x62\x6f\x64\x79\x3e\x3c\x2f\
|
||||
\x68\x74\x6d\x6c\x3e\x0a\
|
||||
\x00\x00\x08\x77\
|
||||
\x3c\
|
||||
\x68\x74\x6d\x6c\x3e\x3c\x68\x65\x61\x64\x3e\x3c\x74\x69\x74\x6c\
|
||||
\x65\x3e\x54\x69\x6d\x65\x20\x6f\x66\x20\x46\x6c\x69\x67\x68\x74\
|
||||
\x20\x4d\x65\x61\x73\x75\x65\x6d\x65\x6e\x74\x20\x66\x6f\x72\x20\
|
||||
\x49\x6e\x6a\x65\x63\x74\x6f\x72\x20\x61\x6e\x64\x20\x52\x69\x6e\
|
||||
\x67\x20\x43\x79\x63\x6c\x6f\x74\x72\x6f\x6e\x20\x54\x75\x72\x6e\
|
||||
\x20\x4e\x75\x6d\x62\x65\x72\x20\x41\x73\x63\x65\x72\x74\x61\x69\
|
||||
\x6e\x6d\x65\x6e\x74\x2c\x20\x54\x49\x4e\x41\x3c\x2f\x74\x69\x74\
|
||||
\x6c\x65\x3e\x3c\x2f\x68\x65\x61\x64\x3e\x0a\x3c\x62\x6f\x64\x79\
|
||||
\x3e\x0a\x0a\x3c\x68\x35\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\
|
||||
\x6f\x6c\x6f\x72\x3a\x67\x72\x61\x79\x3b\x22\x3e\x4a\x75\x6e\x65\
|
||||
\x20\x32\x30\x32\x34\x2c\x20\x4a\x61\x6e\x20\x43\x68\x72\x69\x6e\
|
||||
\x2c\x20\x50\x69\x65\x72\x72\x65\x2d\x41\x6e\x64\x72\x26\x65\x61\
|
||||
\x63\x75\x74\x65\x3b\x20\x44\x75\x70\x65\x72\x72\x65\x78\x2c\x20\
|
||||
\x57\x61\x6c\x64\x61\x6d\x61\x72\x20\x4b\x6f\x70\x72\x65\x6b\x3c\
|
||||
\x2f\x68\x35\x3e\x0a\x3c\x68\x34\x3e\x20\x3c\x73\x70\x61\x6e\x20\
|
||||
\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x72\x65\
|
||||
\x64\x3b\x22\x3e\x54\x3c\x2f\x73\x70\x61\x6e\x3e\x69\x6d\x65\x20\
|
||||
\x6f\x66\x20\x46\x6c\x69\x67\x68\x74\x20\x4d\x65\x61\x73\x75\x72\
|
||||
\x65\x6d\x65\x6e\x74\x20\x66\x6f\x72\x20\x3c\x73\x70\x61\x6e\x20\
|
||||
\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x72\x65\
|
||||
\x64\x3b\x22\x3e\x49\x3c\x2f\x73\x70\x61\x6e\x3e\x6e\x6a\x65\x63\
|
||||
\x74\x6f\x72\x20\x61\x6e\x64\x20\x52\x69\x6e\x67\x20\x43\x79\x63\
|
||||
\x6c\x6f\x74\x72\x6f\x6e\x20\x54\x75\x72\x6e\x20\x3c\x73\x70\x61\
|
||||
\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\
|
||||
\x72\x65\x64\x3b\x22\x3e\x4e\x3c\x2f\x73\x70\x61\x6e\x3e\x75\x6d\
|
||||
\x62\x65\x72\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\
|
||||
\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x72\x65\x64\x3b\x22\x3e\x41\x3c\
|
||||
\x2f\x73\x70\x61\x6e\x3e\x73\x63\x65\x72\x74\x61\x69\x6e\x6d\x65\
|
||||
\x6e\x74\x2c\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\
|
||||
\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x72\x65\x64\x3b\x22\x3e\x54\x49\
|
||||
\x4e\x41\x3c\x2f\x73\x70\x61\x6e\x3e\x3c\x2f\x68\x34\x3e\x0a\x3c\
|
||||
\x68\x32\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\
|
||||
\x62\x6c\x75\x65\x3b\x22\x3e\x41\x62\x6f\x75\x74\x3c\x2f\x68\x32\
|
||||
\x3e\x0a\x0a\x0a\x3c\x70\x3e\x54\x68\x65\x20\x54\x49\x4e\x41\x20\
|
||||
\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x20\x64\x65\x74\x65\
|
||||
\x72\x6d\x69\x6e\x65\x73\x20\x74\x68\x65\x20\x6e\x75\x6d\x62\x65\
|
||||
\x72\x20\x6f\x66\x20\x74\x75\x72\x6e\x73\x20\x69\x6e\x20\x61\x20\
|
||||
\x63\x79\x63\x6c\x6f\x74\x72\x6f\x6e\x0a\x66\x72\x6f\x6d\x20\x61\
|
||||
\x20\x54\x69\x6d\x65\x20\x6f\x66\x20\x46\x6c\x69\x67\x68\x74\x20\
|
||||
\x28\x54\x4f\x46\x29\x20\x6d\x65\x61\x73\x75\x72\x65\x6d\x65\x6e\
|
||||
\x74\x20\x74\x65\x63\x68\x6e\x69\x71\x75\x65\x20\x61\x6e\x64\x20\
|
||||
\x61\x20\x63\x72\x6f\x73\x73\x2d\x63\x6f\x72\x72\x65\x6c\x61\x74\
|
||||
\x69\x6f\x6e\x0a\x6f\x66\x20\x66\x61\x73\x74\x20\x73\x61\x6d\x70\
|
||||
\x6c\x65\x64\x20\x64\x61\x74\x61\x20\x66\x72\x6f\x6d\x20\x63\x61\
|
||||
\x70\x61\x63\x69\x74\x69\x76\x65\x20\x73\x65\x6e\x73\x6f\x72\x73\
|
||||
\x20\x6c\x6f\x63\x61\x74\x65\x64\x20\x61\x74\x20\x74\x68\x65\x20\
|
||||
\x65\x6e\x74\x72\x61\x6e\x63\x65\x20\x61\x6e\x64\x20\x65\x78\x69\
|
||||
\x74\x0a\x6f\x66\x20\x74\x68\x65\x20\x63\x79\x63\x6f\x6c\x6f\x74\
|
||||
\x72\x6f\x6e\x2e\x20\x54\x68\x69\x73\x20\x69\x73\x20\x62\x61\x73\
|
||||
\x65\x64\x20\x6f\x6e\x20\x61\x20\x70\x79\x74\x68\x6f\x6e\x20\x69\
|
||||
\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x6f\x66\
|
||||
\x20\x61\x20\x4c\x61\x62\x56\x49\x45\x57\x20\x61\x70\x70\x6c\x69\
|
||||
\x63\x61\x74\x69\x6f\x6e\x20\x64\x65\x76\x65\x6c\x6f\x70\x65\x64\
|
||||
\x20\x62\x79\x0a\x50\x69\x65\x72\x72\x65\x2d\x41\x6e\x64\x72\x26\
|
||||
\x65\x61\x63\x75\x74\x65\x3b\x20\x44\x75\x70\x65\x72\x72\x65\x78\
|
||||
\x3a\x20\x20\x3c\x62\x72\x3e\x0a\x50\x2e\x2d\x41\x2e\x20\x44\x75\
|
||||
\x70\x65\x72\x72\x65\x78\x20\x61\x6e\x64\x20\x41\x2e\x20\x46\x61\
|
||||
\x63\x63\x68\x65\x74\x74\x69\x2c\x20\x0a\x4e\x75\x6d\x62\x65\x72\
|
||||
\x20\x6f\x66\x20\x54\x75\x72\x6e\x20\x4d\x65\x61\x73\x75\x72\x65\
|
||||
\x6d\x65\x6e\x74\x73\x20\x6f\x6e\x20\x74\x68\x65\x20\x48\x49\x50\
|
||||
\x41\x20\x43\x79\x63\x6c\x6f\x74\x72\x6f\x6e\x73\x20\x61\x74\x20\
|
||||
\x50\x53\x49\x2e\x3c\x62\x72\x3e\x0a\x64\x6f\x69\x3a\x31\x30\x2e\
|
||||
\x31\x38\x34\x32\x39\x2f\x4a\x41\x43\x6f\x57\x2d\x49\x50\x41\x43\
|
||||
\x32\x30\x31\x38\x2d\x57\x45\x50\x41\x4c\x30\x36\x37\x20\x0a\x0a\
|
||||
\x20\x20\x0a\x20\x20\x3c\x2f\x70\x3e\x0a\x3c\x21\x2d\x2d\x61\x20\
|
||||
\x68\x72\x65\x66\x3d\x22\x70\x61\x67\x65\x31\x2e\x68\x74\x6d\x6c\
|
||||
\x22\x3e\x68\x65\x72\x65\x3c\x2f\x61\x3e\x3c\x2f\x70\x2d\x2d\x3e\
|
||||
\x0a\x0a\x3c\x68\x32\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\
|
||||
\x6f\x72\x3a\x62\x6c\x75\x65\x3b\x22\x3e\x54\x68\x65\x20\x52\x65\
|
||||
\x70\x6f\x73\x69\x74\x6f\x72\x79\x3c\x2f\x68\x32\x3e\x0a\x0a\x3c\
|
||||
\x70\x3e\x54\x68\x65\x20\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\
|
||||
\x6e\x20\x63\x6f\x6d\x70\x72\x69\x73\x65\x73\x20\x74\x77\x6f\x20\
|
||||
\x63\x6f\x6d\x70\x6f\x6e\x65\x6e\x74\x73\x3a\x0a\x20\x20\x3c\x75\
|
||||
\x6c\x3e\x0a\x3c\x6c\x69\x3e\x0a\x20\x20\x54\x68\x65\x20\x6c\x6f\
|
||||
\x77\x2d\x6c\x65\x76\x65\x6c\x20\x41\x44\x43\x20\x64\x61\x74\x61\
|
||||
\x20\x61\x63\x71\x75\x69\x73\x69\x74\x69\x6f\x6e\x20\x73\x79\x73\
|
||||
\x74\x65\x6d\x2e\x3c\x62\x72\x3e\x0a\x20\x20\x3c\x73\x70\x61\x6e\
|
||||
\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x67\
|
||||
\x72\x65\x65\x6e\x3b\x22\x3e\x68\x74\x74\x70\x73\x3a\x2f\x2f\x67\
|
||||
\x69\x74\x2e\x70\x73\x69\x2e\x63\x68\x2f\x65\x70\x69\x63\x73\x5f\
|
||||
\x69\x6f\x63\x62\x6f\x6f\x74\x5f\x68\x69\x70\x61\x2f\x2e\x2e\x20\
|
||||
\x74\x6f\x20\x62\x65\x20\x63\x6f\x6d\x70\x6c\x65\x74\x65\x64\x3c\
|
||||
\x2f\x73\x70\x61\x6e\x3e\x3c\x62\x72\x3e\x0a\x20\x0a\x20\x3c\x2f\
|
||||
\x6c\x69\x3e\x0a\x20\x20\x3c\x6c\x69\x3e\x0a\x20\x20\x20\x20\x41\
|
||||
\x20\x48\x69\x67\x68\x20\x4c\x65\x76\x65\x6c\x20\x41\x70\x70\x6c\
|
||||
\x69\x63\x61\x74\x69\x6f\x6e\x20\x28\x48\x4c\x41\x29\x20\x74\x68\
|
||||
\x61\x74\x20\x69\x73\x20\x61\x62\x6c\x65\x20\x74\x6f\x20\x69\x6e\
|
||||
\x74\x65\x72\x61\x63\x74\x20\x77\x69\x74\x68\x20\x74\x68\x65\x20\
|
||||
\x49\x4f\x43\x2c\x20\x73\x74\x61\x72\x74\x20\x61\x20\x6c\x6f\x77\
|
||||
\x2d\x6c\x65\x76\x65\x6c\x20\x64\x61\x74\x61\x20\x61\x63\x71\x75\
|
||||
\x69\x73\x74\x69\x6f\x6e\x20\x72\x75\x6e\x2c\x0a\x20\x20\x20\x20\
|
||||
\x61\x63\x71\x75\x69\x72\x65\x20\x74\x68\x65\x20\x72\x61\x77\x20\
|
||||
\x64\x61\x74\x61\x2c\x20\x61\x6e\x64\x20\x70\x65\x72\x66\x6f\x72\
|
||||
\x6d\x20\x74\x68\x65\x20\x6e\x75\x6d\x62\x65\x72\x20\x6f\x66\x20\
|
||||
\x74\x65\x72\x6d\x73\x20\x61\x6e\x61\x6c\x79\x73\x69\x73\x2e\x3c\
|
||||
\x62\x72\x3e\x0a\x20\x20\x20\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\
|
||||
\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x67\x72\x65\x65\
|
||||
\x6e\x3b\x22\x3e\x20\x68\x74\x74\x70\x73\x3a\x2f\x2f\x67\x69\x74\
|
||||
\x6c\x61\x62\x2e\x70\x73\x69\x2e\x63\x68\x2f\x68\x69\x70\x61\x5f\
|
||||
\x61\x70\x70\x73\x34\x6f\x70\x73\x2f\x74\x69\x6e\x61\x3c\x2f\x73\
|
||||
\x70\x61\x6e\x3e\x3c\x62\x72\x3e\x0a\x20\x20\x20\x20\x3c\x73\x70\
|
||||
\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\
|
||||
\x20\x67\x72\x61\x79\x3b\x22\x3e\x20\x2f\x68\x69\x70\x61\x2f\x62\
|
||||
\x64\x2f\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x73\x2f\x74\
|
||||
\x69\x6e\x61\x2f\x6c\x61\x74\x65\x73\x74\x2f\x74\x69\x6e\x61\x2e\
|
||||
\x73\x68\x3c\x2f\x73\x70\x61\x6e\x3e\x0a\x20\x20\x20\x20\x3c\x2f\
|
||||
\x6c\x69\x3e\x0a\x3c\x2f\x75\x6c\x3e\x0a\x20\x20\x3c\x68\x32\x20\
|
||||
\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x62\x6c\x75\
|
||||
\x65\x3b\x22\x3e\x47\x55\x49\x2c\x20\x43\x6f\x6e\x74\x72\x6f\x6c\
|
||||
\x20\x54\x61\x62\x3c\x2f\x68\x32\x3e\x0a\x20\x20\x4d\x61\x69\x6e\
|
||||
\x20\x70\x61\x6e\x65\x6c\x20\x66\x6f\x72\x20\x75\x73\x65\x20\x62\
|
||||
\x79\x20\x6f\x70\x65\x72\x61\x74\x6f\x72\x73\x2e\x20\x0a\x20\x20\
|
||||
\x3c\x68\x33\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\
|
||||
\x3a\x23\x37\x62\x36\x38\x65\x65\x3b\x22\x3e\x4f\x70\x65\x72\x61\
|
||||
\x74\x6f\x72\x20\x50\x61\x6e\x65\x6c\x3c\x2f\x68\x33\x3e\x0a\x20\
|
||||
\x0a\x20\x20\x3c\x68\x33\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\
|
||||
\x6c\x6f\x72\x3a\x23\x37\x62\x36\x38\x65\x65\x3b\x22\x3e\x45\x78\
|
||||
\x70\x65\x72\x74\x20\x50\x61\x6e\x65\x6c\x3c\x2f\x68\x33\x3e\x0a\
|
||||
\x20\x20\x53\x65\x6c\x65\x63\x74\x69\x6e\x67\x20\x74\x68\x65\x20\
|
||||
\x44\x72\x79\x20\x52\x75\x6e\x20\x6f\x70\x74\x69\x6f\x6e\x20\x64\
|
||||
\x69\x73\x61\x62\x6c\x65\x73\x20\x73\x65\x74\x74\x69\x6e\x67\x20\
|
||||
\x76\x61\x6c\x75\x65\x73\x20\x74\x6f\x20\x65\x70\x69\x63\x73\x20\
|
||||
\x70\x72\x6f\x63\x65\x73\x73\x20\x76\x61\x72\x69\x61\x62\x6c\x65\
|
||||
\x73\x2e\x0a\x20\x20\x0a\x20\x20\x20\x3c\x68\x33\x20\x73\x74\x79\
|
||||
\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x23\x37\x62\x36\x38\x65\
|
||||
\x65\x3b\x22\x3e\x54\x49\x4e\x41\x20\x49\x6d\x61\x67\x65\x3c\x2f\
|
||||
\x68\x33\x3e\x0a\x20\x20\x20\x3c\x74\x61\x62\x6c\x65\x3e\x0a\x20\
|
||||
\x20\x20\x20\x20\x3c\x74\x72\x3e\x3c\x74\x64\x3e\x0a\x20\x20\x20\
|
||||
\x3c\x69\x6d\x67\x20\x73\x72\x63\x3d\x22\x3a\x54\x69\x6e\x61\x2e\
|
||||
\x6a\x70\x67\x22\x20\x77\x69\x64\x74\x68\x3d\x39\x30\x20\x68\x65\
|
||||
\x69\x67\x68\x74\x3d\x39\x30\x2f\x3e\x20\x26\x6e\x62\x73\x70\x3b\
|
||||
\x20\x3c\x2f\x74\x64\x3e\x3c\x74\x64\x3e\x0a\x20\x20\x20\x54\x69\
|
||||
\x6e\x61\x20\x54\x75\x72\x6e\x65\x72\x3c\x2f\x74\x64\x3e\x0a\x20\
|
||||
\x20\x20\x3c\x2f\x74\x61\x62\x6c\x65\x3e\x0a\x3c\x70\x3e\x0a\x3c\
|
||||
\x2f\x70\x3e\x0a\x20\x20\x0a\x3c\x2f\x62\x6f\x64\x79\x3e\x3c\x2f\
|
||||
\x68\x74\x6d\x6c\x3e\x0a\
|
||||
\x00\x00\x00\xa7\
|
||||
\x3c\
|
||||
\x68\x74\x6d\x6c\x3e\x3c\x68\x65\x61\x64\x3e\x3c\x74\x69\x74\x6c\
|
||||
\x65\x3e\x57\x65\x62\x20\x48\x65\x6c\x70\x3c\x2f\x74\x69\x74\x6c\
|
||||
\x65\x3e\x3c\x2f\x68\x65\x61\x64\x3e\x0a\x3c\x62\x6f\x64\x79\x3e\
|
||||
\x0a\x0a\x3c\x70\x3e\x3c\x62\x3e\x50\x61\x67\x65\x20\x34\x20\x6f\
|
||||
\x66\x20\x77\x65\x62\x20\x68\x65\x6c\x70\x3c\x2f\x62\x3e\x3c\x2f\
|
||||
\x70\x3e\x0a\x3c\x70\x3e\x20\x20\x3c\x61\x20\x68\x72\x65\x66\x3d\
|
||||
\x22\x70\x61\x67\x65\x35\x2e\x68\x74\x6d\x6c\x22\x3e\x20\x4e\x65\
|
||||
\x78\x74\x3c\x2f\x61\x3e\x3c\x2f\x70\x3e\x0a\x3c\x70\x3e\x3c\x62\
|
||||
\x3e\x65\x74\x63\x2e\x2e\x2e\x3c\x2f\x62\x3e\x20\x65\x74\x63\x2e\
|
||||
\x2e\x2e\x3c\x2f\x70\x3e\x0a\x3c\x2f\x62\x6f\x64\x79\x3e\x3c\x2f\
|
||||
\x68\x74\x6d\x6c\x3e\x0a\
|
||||
\x00\x00\x00\xa7\
|
||||
\x3c\
|
||||
\x68\x74\x6d\x6c\x3e\x3c\x68\x65\x61\x64\x3e\x3c\x74\x69\x74\x6c\
|
||||
\x65\x3e\x57\x65\x62\x20\x48\x65\x6c\x70\x3c\x2f\x74\x69\x74\x6c\
|
||||
\x65\x3e\x3c\x2f\x68\x65\x61\x64\x3e\x0a\x3c\x62\x6f\x64\x79\x3e\
|
||||
\x0a\x0a\x3c\x70\x3e\x3c\x62\x3e\x50\x61\x67\x65\x20\x32\x20\x6f\
|
||||
\x66\x20\x77\x65\x62\x20\x68\x65\x6c\x70\x3c\x2f\x62\x3e\x3c\x2f\
|
||||
\x70\x3e\x0a\x3c\x70\x3e\x20\x20\x3c\x61\x20\x68\x72\x65\x66\x3d\
|
||||
\x22\x70\x61\x67\x65\x33\x2e\x68\x74\x6d\x6c\x22\x3e\x20\x4e\x65\
|
||||
\x78\x74\x3c\x2f\x61\x3e\x3c\x2f\x70\x3e\x0a\x3c\x70\x3e\x3c\x62\
|
||||
\x3e\x65\x74\x63\x2e\x2e\x2e\x3c\x2f\x62\x3e\x20\x65\x74\x63\x2e\
|
||||
\x2e\x2e\x3c\x2f\x70\x3e\x0a\x3c\x2f\x62\x6f\x64\x79\x3e\x3c\x2f\
|
||||
\x68\x74\x6d\x6c\x3e\x0a\
|
||||
\x00\x00\x00\x80\
|
||||
\x3c\
|
||||
\x68\x74\x6d\x6c\x3e\x3c\x68\x65\x61\x64\x3e\x3c\x74\x69\x74\x6c\
|
||||
\x65\x3e\x57\x65\x62\x20\x48\x65\x6c\x70\x3c\x2f\x74\x69\x74\x6c\
|
||||
\x65\x3e\x3c\x2f\x68\x65\x61\x64\x3e\x0a\x3c\x62\x6f\x64\x79\x3e\
|
||||
\x0a\x0a\x3c\x70\x3e\x3c\x62\x3e\x50\x61\x67\x65\x20\x35\x20\x6f\
|
||||
\x66\x20\x77\x65\x62\x20\x68\x65\x6c\x70\x3c\x2f\x62\x3e\x3c\x2f\
|
||||
\x70\x3e\x0a\x0a\x3c\x70\x3e\x3c\x62\x3e\x65\x74\x63\x2e\x2e\x2e\
|
||||
\x3c\x2f\x62\x3e\x20\x65\x74\x63\x2e\x2e\x2e\x3c\x2f\x70\x3e\x0a\
|
||||
\x3c\x2f\x62\x6f\x64\x79\x3e\x3c\x2f\x68\x74\x6d\x6c\x3e\x0a\
|
||||
"
|
||||
|
||||
qt_resource_name = b"\
|
||||
\x00\x0a\
|
||||
\x08\x6a\x34\x9c\
|
||||
\x00\x70\
|
||||
\x00\x61\x00\x67\x00\x65\x00\x33\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\
|
||||
\x00\x0a\
|
||||
\x08\x4a\x34\x9c\
|
||||
\x00\x70\
|
||||
\x00\x61\x00\x67\x00\x65\x00\x31\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\
|
||||
\x00\x0a\
|
||||
\x0c\xba\xf2\x7c\
|
||||
\x00\x69\
|
||||
\x00\x6e\x00\x64\x00\x65\x00\x78\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\
|
||||
\x00\x0a\
|
||||
\x08\x7a\x34\x9c\
|
||||
\x00\x70\
|
||||
\x00\x61\x00\x67\x00\x65\x00\x34\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\
|
||||
\x00\x0a\
|
||||
\x08\x5a\x34\x9c\
|
||||
\x00\x70\
|
||||
\x00\x61\x00\x67\x00\x65\x00\x32\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\
|
||||
\x00\x0a\
|
||||
\x08\x8a\x34\x9c\
|
||||
\x00\x70\
|
||||
\x00\x61\x00\x67\x00\x65\x00\x35\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\
|
||||
"
|
||||
|
||||
qt_resource_struct_v1 = b"\
|
||||
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\x01\
|
||||
\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x01\x00\x00\x00\xab\
|
||||
\x00\x00\x00\x68\x00\x00\x00\x00\x00\x01\x00\x00\x0a\x7c\
|
||||
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
|
||||
\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x01\x00\x00\x09\xd1\
|
||||
\x00\x00\x00\x82\x00\x00\x00\x00\x00\x01\x00\x00\x0b\x27\
|
||||
\x00\x00\x00\x34\x00\x00\x00\x00\x00\x01\x00\x00\x01\x56\
|
||||
"
|
||||
|
||||
qt_resource_struct_v2 = b"\
|
||||
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\x01\
|
||||
\x00\x00\x00\x00\x00\x00\x00\x00\
|
||||
\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x01\x00\x00\x00\xab\
|
||||
\x00\x00\x01\x90\x02\x81\x83\xdc\
|
||||
\x00\x00\x00\x68\x00\x00\x00\x00\x00\x01\x00\x00\x0a\x7c\
|
||||
\x00\x00\x01\x90\x02\x81\x83\xe0\
|
||||
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
|
||||
\x00\x00\x01\x90\x02\x81\x83\xed\
|
||||
\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x01\x00\x00\x09\xd1\
|
||||
\x00\x00\x01\x90\x02\x81\x83\xff\
|
||||
\x00\x00\x00\x82\x00\x00\x00\x00\x00\x01\x00\x00\x0b\x27\
|
||||
\x00\x00\x01\x90\x02\x81\x84\x13\
|
||||
\x00\x00\x00\x34\x00\x00\x00\x00\x00\x01\x00\x00\x01\x56\
|
||||
\x00\x00\x01\x90\x07\x0e\x46\x39\
|
||||
"
|
||||
|
||||
qt_version = [int(v) for v in QtCore.qVersion().split('.')]
|
||||
if qt_version < [5, 8, 0]:
|
||||
rcc_version = 1
|
||||
qt_resource_struct = qt_resource_struct_v1
|
||||
else:
|
||||
rcc_version = 2
|
||||
qt_resource_struct = qt_resource_struct_v2
|
||||
|
||||
def qInitResources():
|
||||
QtCore.qRegisterResourceData(rcc_version, qt_resource_struct, qt_resource_name, qt_resource_data)
|
||||
|
||||
def qCleanupResources():
|
||||
QtCore.qUnregisterResourceData(rcc_version, qt_resource_struct, qt_resource_name, qt_resource_data)
|
||||
|
||||
qInitResources()
|
||||
5
pyrcc5/.gitignore
vendored
Normal file
5
pyrcc5/.gitignore
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
*.*~
|
||||
*.*-*
|
||||
*.*+*
|
||||
__pycache__
|
||||
__pycache__/*.*
|
||||
282
pyrcc5/tina_resources.py
Normal file
282
pyrcc5/tina_resources.py
Normal file
@@ -0,0 +1,282 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Resource object code
|
||||
#
|
||||
# Created by: The Resource Compiler for PyQt5 (Qt v5.15.3)
|
||||
#
|
||||
# WARNING! All changes made in this file will be lost!
|
||||
|
||||
from PyQt5 import QtCore
|
||||
|
||||
qt_resource_data = b"\
|
||||
\x00\x00\x00\xa7\
|
||||
\x3c\
|
||||
\x68\x74\x6d\x6c\x3e\x3c\x68\x65\x61\x64\x3e\x3c\x74\x69\x74\x6c\
|
||||
\x65\x3e\x57\x65\x62\x20\x48\x65\x6c\x70\x3c\x2f\x74\x69\x74\x6c\
|
||||
\x65\x3e\x3c\x2f\x68\x65\x61\x64\x3e\x0a\x3c\x62\x6f\x64\x79\x3e\
|
||||
\x0a\x0a\x3c\x70\x3e\x3c\x62\x3e\x50\x61\x67\x65\x20\x33\x20\x6f\
|
||||
\x66\x20\x77\x65\x62\x20\x68\x65\x6c\x70\x3c\x2f\x62\x3e\x3c\x2f\
|
||||
\x70\x3e\x0a\x3c\x70\x3e\x20\x20\x3c\x61\x20\x68\x72\x65\x66\x3d\
|
||||
\x22\x70\x61\x67\x65\x34\x2e\x68\x74\x6d\x6c\x22\x3e\x20\x4e\x65\
|
||||
\x78\x74\x3c\x2f\x61\x3e\x3c\x2f\x70\x3e\x0a\x3c\x70\x3e\x3c\x62\
|
||||
\x3e\x65\x74\x63\x2e\x2e\x2e\x3c\x2f\x62\x3e\x20\x65\x74\x63\x2e\
|
||||
\x2e\x2e\x3c\x2f\x70\x3e\x0a\x3c\x2f\x62\x6f\x64\x79\x3e\x3c\x2f\
|
||||
\x68\x74\x6d\x6c\x3e\x0a\
|
||||
\x00\x00\x00\xa7\
|
||||
\x3c\
|
||||
\x68\x74\x6d\x6c\x3e\x3c\x68\x65\x61\x64\x3e\x3c\x74\x69\x74\x6c\
|
||||
\x65\x3e\x57\x65\x62\x20\x48\x65\x6c\x70\x3c\x2f\x74\x69\x74\x6c\
|
||||
\x65\x3e\x3c\x2f\x68\x65\x61\x64\x3e\x0a\x3c\x62\x6f\x64\x79\x3e\
|
||||
\x0a\x0a\x3c\x70\x3e\x3c\x62\x3e\x50\x61\x67\x65\x20\x31\x20\x6f\
|
||||
\x66\x20\x77\x65\x62\x20\x68\x65\x6c\x70\x3c\x2f\x62\x3e\x3c\x2f\
|
||||
\x70\x3e\x0a\x3c\x70\x3e\x20\x20\x3c\x61\x20\x68\x72\x65\x66\x3d\
|
||||
\x22\x70\x61\x67\x65\x32\x2e\x68\x74\x6d\x6c\x22\x3e\x20\x4e\x65\
|
||||
\x78\x74\x3c\x2f\x61\x3e\x3c\x2f\x70\x3e\x0a\x3c\x70\x3e\x3c\x62\
|
||||
\x3e\x65\x74\x63\x2e\x2e\x2e\x3c\x2f\x62\x3e\x20\x65\x74\x63\x2e\
|
||||
\x2e\x2e\x3c\x2f\x70\x3e\x0a\x3c\x2f\x62\x6f\x64\x79\x3e\x3c\x2f\
|
||||
\x68\x74\x6d\x6c\x3e\x0a\
|
||||
\x00\x00\x08\x77\
|
||||
\x3c\
|
||||
\x68\x74\x6d\x6c\x3e\x3c\x68\x65\x61\x64\x3e\x3c\x74\x69\x74\x6c\
|
||||
\x65\x3e\x54\x69\x6d\x65\x20\x6f\x66\x20\x46\x6c\x69\x67\x68\x74\
|
||||
\x20\x4d\x65\x61\x73\x75\x65\x6d\x65\x6e\x74\x20\x66\x6f\x72\x20\
|
||||
\x49\x6e\x6a\x65\x63\x74\x6f\x72\x20\x61\x6e\x64\x20\x52\x69\x6e\
|
||||
\x67\x20\x43\x79\x63\x6c\x6f\x74\x72\x6f\x6e\x20\x54\x75\x72\x6e\
|
||||
\x20\x4e\x75\x6d\x62\x65\x72\x20\x41\x73\x63\x65\x72\x74\x61\x69\
|
||||
\x6e\x6d\x65\x6e\x74\x2c\x20\x54\x49\x4e\x41\x3c\x2f\x74\x69\x74\
|
||||
\x6c\x65\x3e\x3c\x2f\x68\x65\x61\x64\x3e\x0a\x3c\x62\x6f\x64\x79\
|
||||
\x3e\x0a\x0a\x3c\x68\x35\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\
|
||||
\x6f\x6c\x6f\x72\x3a\x67\x72\x61\x79\x3b\x22\x3e\x4a\x75\x6e\x65\
|
||||
\x20\x32\x30\x32\x34\x2c\x20\x4a\x61\x6e\x20\x43\x68\x72\x69\x6e\
|
||||
\x2c\x20\x50\x69\x65\x72\x72\x65\x2d\x41\x6e\x64\x72\x26\x65\x61\
|
||||
\x63\x75\x74\x65\x3b\x20\x44\x75\x70\x65\x72\x72\x65\x78\x2c\x20\
|
||||
\x57\x61\x6c\x64\x61\x6d\x61\x72\x20\x4b\x6f\x70\x72\x65\x6b\x3c\
|
||||
\x2f\x68\x35\x3e\x0a\x3c\x68\x34\x3e\x20\x3c\x73\x70\x61\x6e\x20\
|
||||
\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x72\x65\
|
||||
\x64\x3b\x22\x3e\x54\x3c\x2f\x73\x70\x61\x6e\x3e\x69\x6d\x65\x20\
|
||||
\x6f\x66\x20\x46\x6c\x69\x67\x68\x74\x20\x4d\x65\x61\x73\x75\x72\
|
||||
\x65\x6d\x65\x6e\x74\x20\x66\x6f\x72\x20\x3c\x73\x70\x61\x6e\x20\
|
||||
\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x72\x65\
|
||||
\x64\x3b\x22\x3e\x49\x3c\x2f\x73\x70\x61\x6e\x3e\x6e\x6a\x65\x63\
|
||||
\x74\x6f\x72\x20\x61\x6e\x64\x20\x52\x69\x6e\x67\x20\x43\x79\x63\
|
||||
\x6c\x6f\x74\x72\x6f\x6e\x20\x54\x75\x72\x6e\x20\x3c\x73\x70\x61\
|
||||
\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\
|
||||
\x72\x65\x64\x3b\x22\x3e\x4e\x3c\x2f\x73\x70\x61\x6e\x3e\x75\x6d\
|
||||
\x62\x65\x72\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\
|
||||
\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x72\x65\x64\x3b\x22\x3e\x41\x3c\
|
||||
\x2f\x73\x70\x61\x6e\x3e\x73\x63\x65\x72\x74\x61\x69\x6e\x6d\x65\
|
||||
\x6e\x74\x2c\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\
|
||||
\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x72\x65\x64\x3b\x22\x3e\x54\x49\
|
||||
\x4e\x41\x3c\x2f\x73\x70\x61\x6e\x3e\x3c\x2f\x68\x34\x3e\x0a\x3c\
|
||||
\x68\x32\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\
|
||||
\x62\x6c\x75\x65\x3b\x22\x3e\x41\x62\x6f\x75\x74\x3c\x2f\x68\x32\
|
||||
\x3e\x0a\x0a\x0a\x3c\x70\x3e\x54\x68\x65\x20\x54\x49\x4e\x41\x20\
|
||||
\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x20\x64\x65\x74\x65\
|
||||
\x72\x6d\x69\x6e\x65\x73\x20\x74\x68\x65\x20\x6e\x75\x6d\x62\x65\
|
||||
\x72\x20\x6f\x66\x20\x74\x75\x72\x6e\x73\x20\x69\x6e\x20\x61\x20\
|
||||
\x63\x79\x63\x6c\x6f\x74\x72\x6f\x6e\x0a\x66\x72\x6f\x6d\x20\x61\
|
||||
\x20\x54\x69\x6d\x65\x20\x6f\x66\x20\x46\x6c\x69\x67\x68\x74\x20\
|
||||
\x28\x54\x4f\x46\x29\x20\x6d\x65\x61\x73\x75\x72\x65\x6d\x65\x6e\
|
||||
\x74\x20\x74\x65\x63\x68\x6e\x69\x71\x75\x65\x20\x61\x6e\x64\x20\
|
||||
\x61\x20\x63\x72\x6f\x73\x73\x2d\x63\x6f\x72\x72\x65\x6c\x61\x74\
|
||||
\x69\x6f\x6e\x0a\x6f\x66\x20\x66\x61\x73\x74\x20\x73\x61\x6d\x70\
|
||||
\x6c\x65\x64\x20\x64\x61\x74\x61\x20\x66\x72\x6f\x6d\x20\x63\x61\
|
||||
\x70\x61\x63\x69\x74\x69\x76\x65\x20\x73\x65\x6e\x73\x6f\x72\x73\
|
||||
\x20\x6c\x6f\x63\x61\x74\x65\x64\x20\x61\x74\x20\x74\x68\x65\x20\
|
||||
\x65\x6e\x74\x72\x61\x6e\x63\x65\x20\x61\x6e\x64\x20\x65\x78\x69\
|
||||
\x74\x0a\x6f\x66\x20\x74\x68\x65\x20\x63\x79\x63\x6f\x6c\x6f\x74\
|
||||
\x72\x6f\x6e\x2e\x20\x54\x68\x69\x73\x20\x69\x73\x20\x62\x61\x73\
|
||||
\x65\x64\x20\x6f\x6e\x20\x61\x20\x70\x79\x74\x68\x6f\x6e\x20\x69\
|
||||
\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x6f\x66\
|
||||
\x20\x61\x20\x4c\x61\x62\x56\x49\x45\x57\x20\x61\x70\x70\x6c\x69\
|
||||
\x63\x61\x74\x69\x6f\x6e\x20\x64\x65\x76\x65\x6c\x6f\x70\x65\x64\
|
||||
\x20\x62\x79\x0a\x50\x69\x65\x72\x72\x65\x2d\x41\x6e\x64\x72\x26\
|
||||
\x65\x61\x63\x75\x74\x65\x3b\x20\x44\x75\x70\x65\x72\x72\x65\x78\
|
||||
\x3a\x20\x20\x3c\x62\x72\x3e\x0a\x50\x2e\x2d\x41\x2e\x20\x44\x75\
|
||||
\x70\x65\x72\x72\x65\x78\x20\x61\x6e\x64\x20\x41\x2e\x20\x46\x61\
|
||||
\x63\x63\x68\x65\x74\x74\x69\x2c\x20\x0a\x4e\x75\x6d\x62\x65\x72\
|
||||
\x20\x6f\x66\x20\x54\x75\x72\x6e\x20\x4d\x65\x61\x73\x75\x72\x65\
|
||||
\x6d\x65\x6e\x74\x73\x20\x6f\x6e\x20\x74\x68\x65\x20\x48\x49\x50\
|
||||
\x41\x20\x43\x79\x63\x6c\x6f\x74\x72\x6f\x6e\x73\x20\x61\x74\x20\
|
||||
\x50\x53\x49\x2e\x3c\x62\x72\x3e\x0a\x64\x6f\x69\x3a\x31\x30\x2e\
|
||||
\x31\x38\x34\x32\x39\x2f\x4a\x41\x43\x6f\x57\x2d\x49\x50\x41\x43\
|
||||
\x32\x30\x31\x38\x2d\x57\x45\x50\x41\x4c\x30\x36\x37\x20\x0a\x0a\
|
||||
\x20\x20\x0a\x20\x20\x3c\x2f\x70\x3e\x0a\x3c\x21\x2d\x2d\x61\x20\
|
||||
\x68\x72\x65\x66\x3d\x22\x70\x61\x67\x65\x31\x2e\x68\x74\x6d\x6c\
|
||||
\x22\x3e\x68\x65\x72\x65\x3c\x2f\x61\x3e\x3c\x2f\x70\x2d\x2d\x3e\
|
||||
\x0a\x0a\x3c\x68\x32\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\
|
||||
\x6f\x72\x3a\x62\x6c\x75\x65\x3b\x22\x3e\x54\x68\x65\x20\x52\x65\
|
||||
\x70\x6f\x73\x69\x74\x6f\x72\x79\x3c\x2f\x68\x32\x3e\x0a\x0a\x3c\
|
||||
\x70\x3e\x54\x68\x65\x20\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\
|
||||
\x6e\x20\x63\x6f\x6d\x70\x72\x69\x73\x65\x73\x20\x74\x77\x6f\x20\
|
||||
\x63\x6f\x6d\x70\x6f\x6e\x65\x6e\x74\x73\x3a\x0a\x20\x20\x3c\x75\
|
||||
\x6c\x3e\x0a\x3c\x6c\x69\x3e\x0a\x20\x20\x54\x68\x65\x20\x6c\x6f\
|
||||
\x77\x2d\x6c\x65\x76\x65\x6c\x20\x41\x44\x43\x20\x64\x61\x74\x61\
|
||||
\x20\x61\x63\x71\x75\x69\x73\x69\x74\x69\x6f\x6e\x20\x73\x79\x73\
|
||||
\x74\x65\x6d\x2e\x3c\x62\x72\x3e\x0a\x20\x20\x3c\x73\x70\x61\x6e\
|
||||
\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x67\
|
||||
\x72\x65\x65\x6e\x3b\x22\x3e\x68\x74\x74\x70\x73\x3a\x2f\x2f\x67\
|
||||
\x69\x74\x2e\x70\x73\x69\x2e\x63\x68\x2f\x65\x70\x69\x63\x73\x5f\
|
||||
\x69\x6f\x63\x62\x6f\x6f\x74\x5f\x68\x69\x70\x61\x2f\x2e\x2e\x20\
|
||||
\x74\x6f\x20\x62\x65\x20\x63\x6f\x6d\x70\x6c\x65\x74\x65\x64\x3c\
|
||||
\x2f\x73\x70\x61\x6e\x3e\x3c\x62\x72\x3e\x0a\x20\x0a\x20\x3c\x2f\
|
||||
\x6c\x69\x3e\x0a\x20\x20\x3c\x6c\x69\x3e\x0a\x20\x20\x20\x20\x41\
|
||||
\x20\x48\x69\x67\x68\x20\x4c\x65\x76\x65\x6c\x20\x41\x70\x70\x6c\
|
||||
\x69\x63\x61\x74\x69\x6f\x6e\x20\x28\x48\x4c\x41\x29\x20\x74\x68\
|
||||
\x61\x74\x20\x69\x73\x20\x61\x62\x6c\x65\x20\x74\x6f\x20\x69\x6e\
|
||||
\x74\x65\x72\x61\x63\x74\x20\x77\x69\x74\x68\x20\x74\x68\x65\x20\
|
||||
\x49\x4f\x43\x2c\x20\x73\x74\x61\x72\x74\x20\x61\x20\x6c\x6f\x77\
|
||||
\x2d\x6c\x65\x76\x65\x6c\x20\x64\x61\x74\x61\x20\x61\x63\x71\x75\
|
||||
\x69\x73\x74\x69\x6f\x6e\x20\x72\x75\x6e\x2c\x0a\x20\x20\x20\x20\
|
||||
\x61\x63\x71\x75\x69\x72\x65\x20\x74\x68\x65\x20\x72\x61\x77\x20\
|
||||
\x64\x61\x74\x61\x2c\x20\x61\x6e\x64\x20\x70\x65\x72\x66\x6f\x72\
|
||||
\x6d\x20\x74\x68\x65\x20\x6e\x75\x6d\x62\x65\x72\x20\x6f\x66\x20\
|
||||
\x74\x65\x72\x6d\x73\x20\x61\x6e\x61\x6c\x79\x73\x69\x73\x2e\x3c\
|
||||
\x62\x72\x3e\x0a\x20\x20\x20\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\
|
||||
\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x67\x72\x65\x65\
|
||||
\x6e\x3b\x22\x3e\x20\x68\x74\x74\x70\x73\x3a\x2f\x2f\x67\x69\x74\
|
||||
\x6c\x61\x62\x2e\x70\x73\x69\x2e\x63\x68\x2f\x68\x69\x70\x61\x5f\
|
||||
\x61\x70\x70\x73\x34\x6f\x70\x73\x2f\x74\x69\x6e\x61\x3c\x2f\x73\
|
||||
\x70\x61\x6e\x3e\x3c\x62\x72\x3e\x0a\x20\x20\x20\x20\x3c\x73\x70\
|
||||
\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\
|
||||
\x20\x67\x72\x61\x79\x3b\x22\x3e\x20\x2f\x68\x69\x70\x61\x2f\x62\
|
||||
\x64\x2f\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x73\x2f\x74\
|
||||
\x69\x6e\x61\x2f\x6c\x61\x74\x65\x73\x74\x2f\x74\x69\x6e\x61\x2e\
|
||||
\x73\x68\x3c\x2f\x73\x70\x61\x6e\x3e\x0a\x20\x20\x20\x20\x3c\x2f\
|
||||
\x6c\x69\x3e\x0a\x3c\x2f\x75\x6c\x3e\x0a\x20\x20\x3c\x68\x32\x20\
|
||||
\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x62\x6c\x75\
|
||||
\x65\x3b\x22\x3e\x47\x55\x49\x2c\x20\x43\x6f\x6e\x74\x72\x6f\x6c\
|
||||
\x20\x54\x61\x62\x3c\x2f\x68\x32\x3e\x0a\x20\x20\x4d\x61\x69\x6e\
|
||||
\x20\x70\x61\x6e\x65\x6c\x20\x66\x6f\x72\x20\x75\x73\x65\x20\x62\
|
||||
\x79\x20\x6f\x70\x65\x72\x61\x74\x6f\x72\x73\x2e\x20\x0a\x20\x20\
|
||||
\x3c\x68\x33\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\
|
||||
\x3a\x23\x37\x62\x36\x38\x65\x65\x3b\x22\x3e\x4f\x70\x65\x72\x61\
|
||||
\x74\x6f\x72\x20\x50\x61\x6e\x65\x6c\x3c\x2f\x68\x33\x3e\x0a\x20\
|
||||
\x0a\x20\x20\x3c\x68\x33\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\
|
||||
\x6c\x6f\x72\x3a\x23\x37\x62\x36\x38\x65\x65\x3b\x22\x3e\x45\x78\
|
||||
\x70\x65\x72\x74\x20\x50\x61\x6e\x65\x6c\x3c\x2f\x68\x33\x3e\x0a\
|
||||
\x20\x20\x53\x65\x6c\x65\x63\x74\x69\x6e\x67\x20\x74\x68\x65\x20\
|
||||
\x44\x72\x79\x20\x52\x75\x6e\x20\x6f\x70\x74\x69\x6f\x6e\x20\x64\
|
||||
\x69\x73\x61\x62\x6c\x65\x73\x20\x73\x65\x74\x74\x69\x6e\x67\x20\
|
||||
\x76\x61\x6c\x75\x65\x73\x20\x74\x6f\x20\x65\x70\x69\x63\x73\x20\
|
||||
\x70\x72\x6f\x63\x65\x73\x73\x20\x76\x61\x72\x69\x61\x62\x6c\x65\
|
||||
\x73\x2e\x0a\x20\x20\x0a\x20\x20\x20\x3c\x68\x33\x20\x73\x74\x79\
|
||||
\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x23\x37\x62\x36\x38\x65\
|
||||
\x65\x3b\x22\x3e\x54\x49\x4e\x41\x20\x49\x6d\x61\x67\x65\x3c\x2f\
|
||||
\x68\x33\x3e\x0a\x20\x20\x20\x3c\x74\x61\x62\x6c\x65\x3e\x0a\x20\
|
||||
\x20\x20\x20\x20\x3c\x74\x72\x3e\x3c\x74\x64\x3e\x0a\x20\x20\x20\
|
||||
\x3c\x69\x6d\x67\x20\x73\x72\x63\x3d\x22\x3a\x54\x69\x6e\x61\x2e\
|
||||
\x6a\x70\x67\x22\x20\x77\x69\x64\x74\x68\x3d\x39\x30\x20\x68\x65\
|
||||
\x69\x67\x68\x74\x3d\x39\x30\x2f\x3e\x20\x26\x6e\x62\x73\x70\x3b\
|
||||
\x20\x3c\x2f\x74\x64\x3e\x3c\x74\x64\x3e\x0a\x20\x20\x20\x54\x69\
|
||||
\x6e\x61\x20\x54\x75\x72\x6e\x65\x72\x3c\x2f\x74\x64\x3e\x0a\x20\
|
||||
\x20\x20\x3c\x2f\x74\x61\x62\x6c\x65\x3e\x0a\x3c\x70\x3e\x0a\x3c\
|
||||
\x2f\x70\x3e\x0a\x20\x20\x0a\x3c\x2f\x62\x6f\x64\x79\x3e\x3c\x2f\
|
||||
\x68\x74\x6d\x6c\x3e\x0a\
|
||||
\x00\x00\x00\xa7\
|
||||
\x3c\
|
||||
\x68\x74\x6d\x6c\x3e\x3c\x68\x65\x61\x64\x3e\x3c\x74\x69\x74\x6c\
|
||||
\x65\x3e\x57\x65\x62\x20\x48\x65\x6c\x70\x3c\x2f\x74\x69\x74\x6c\
|
||||
\x65\x3e\x3c\x2f\x68\x65\x61\x64\x3e\x0a\x3c\x62\x6f\x64\x79\x3e\
|
||||
\x0a\x0a\x3c\x70\x3e\x3c\x62\x3e\x50\x61\x67\x65\x20\x34\x20\x6f\
|
||||
\x66\x20\x77\x65\x62\x20\x68\x65\x6c\x70\x3c\x2f\x62\x3e\x3c\x2f\
|
||||
\x70\x3e\x0a\x3c\x70\x3e\x20\x20\x3c\x61\x20\x68\x72\x65\x66\x3d\
|
||||
\x22\x70\x61\x67\x65\x35\x2e\x68\x74\x6d\x6c\x22\x3e\x20\x4e\x65\
|
||||
\x78\x74\x3c\x2f\x61\x3e\x3c\x2f\x70\x3e\x0a\x3c\x70\x3e\x3c\x62\
|
||||
\x3e\x65\x74\x63\x2e\x2e\x2e\x3c\x2f\x62\x3e\x20\x65\x74\x63\x2e\
|
||||
\x2e\x2e\x3c\x2f\x70\x3e\x0a\x3c\x2f\x62\x6f\x64\x79\x3e\x3c\x2f\
|
||||
\x68\x74\x6d\x6c\x3e\x0a\
|
||||
\x00\x00\x00\xa7\
|
||||
\x3c\
|
||||
\x68\x74\x6d\x6c\x3e\x3c\x68\x65\x61\x64\x3e\x3c\x74\x69\x74\x6c\
|
||||
\x65\x3e\x57\x65\x62\x20\x48\x65\x6c\x70\x3c\x2f\x74\x69\x74\x6c\
|
||||
\x65\x3e\x3c\x2f\x68\x65\x61\x64\x3e\x0a\x3c\x62\x6f\x64\x79\x3e\
|
||||
\x0a\x0a\x3c\x70\x3e\x3c\x62\x3e\x50\x61\x67\x65\x20\x32\x20\x6f\
|
||||
\x66\x20\x77\x65\x62\x20\x68\x65\x6c\x70\x3c\x2f\x62\x3e\x3c\x2f\
|
||||
\x70\x3e\x0a\x3c\x70\x3e\x20\x20\x3c\x61\x20\x68\x72\x65\x66\x3d\
|
||||
\x22\x70\x61\x67\x65\x33\x2e\x68\x74\x6d\x6c\x22\x3e\x20\x4e\x65\
|
||||
\x78\x74\x3c\x2f\x61\x3e\x3c\x2f\x70\x3e\x0a\x3c\x70\x3e\x3c\x62\
|
||||
\x3e\x65\x74\x63\x2e\x2e\x2e\x3c\x2f\x62\x3e\x20\x65\x74\x63\x2e\
|
||||
\x2e\x2e\x3c\x2f\x70\x3e\x0a\x3c\x2f\x62\x6f\x64\x79\x3e\x3c\x2f\
|
||||
\x68\x74\x6d\x6c\x3e\x0a\
|
||||
\x00\x00\x00\x80\
|
||||
\x3c\
|
||||
\x68\x74\x6d\x6c\x3e\x3c\x68\x65\x61\x64\x3e\x3c\x74\x69\x74\x6c\
|
||||
\x65\x3e\x57\x65\x62\x20\x48\x65\x6c\x70\x3c\x2f\x74\x69\x74\x6c\
|
||||
\x65\x3e\x3c\x2f\x68\x65\x61\x64\x3e\x0a\x3c\x62\x6f\x64\x79\x3e\
|
||||
\x0a\x0a\x3c\x70\x3e\x3c\x62\x3e\x50\x61\x67\x65\x20\x35\x20\x6f\
|
||||
\x66\x20\x77\x65\x62\x20\x68\x65\x6c\x70\x3c\x2f\x62\x3e\x3c\x2f\
|
||||
\x70\x3e\x0a\x0a\x3c\x70\x3e\x3c\x62\x3e\x65\x74\x63\x2e\x2e\x2e\
|
||||
\x3c\x2f\x62\x3e\x20\x65\x74\x63\x2e\x2e\x2e\x3c\x2f\x70\x3e\x0a\
|
||||
\x3c\x2f\x62\x6f\x64\x79\x3e\x3c\x2f\x68\x74\x6d\x6c\x3e\x0a\
|
||||
"
|
||||
|
||||
qt_resource_name = b"\
|
||||
\x00\x0a\
|
||||
\x08\x6a\x34\x9c\
|
||||
\x00\x70\
|
||||
\x00\x61\x00\x67\x00\x65\x00\x33\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\
|
||||
\x00\x0a\
|
||||
\x08\x4a\x34\x9c\
|
||||
\x00\x70\
|
||||
\x00\x61\x00\x67\x00\x65\x00\x31\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\
|
||||
\x00\x0a\
|
||||
\x0c\xba\xf2\x7c\
|
||||
\x00\x69\
|
||||
\x00\x6e\x00\x64\x00\x65\x00\x78\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\
|
||||
\x00\x0a\
|
||||
\x08\x7a\x34\x9c\
|
||||
\x00\x70\
|
||||
\x00\x61\x00\x67\x00\x65\x00\x34\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\
|
||||
\x00\x0a\
|
||||
\x08\x5a\x34\x9c\
|
||||
\x00\x70\
|
||||
\x00\x61\x00\x67\x00\x65\x00\x32\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\
|
||||
\x00\x0a\
|
||||
\x08\x8a\x34\x9c\
|
||||
\x00\x70\
|
||||
\x00\x61\x00\x67\x00\x65\x00\x35\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\
|
||||
"
|
||||
|
||||
qt_resource_struct_v1 = b"\
|
||||
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\x01\
|
||||
\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x01\x00\x00\x00\xab\
|
||||
\x00\x00\x00\x68\x00\x00\x00\x00\x00\x01\x00\x00\x0a\x7c\
|
||||
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
|
||||
\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x01\x00\x00\x09\xd1\
|
||||
\x00\x00\x00\x82\x00\x00\x00\x00\x00\x01\x00\x00\x0b\x27\
|
||||
\x00\x00\x00\x34\x00\x00\x00\x00\x00\x01\x00\x00\x01\x56\
|
||||
"
|
||||
|
||||
qt_resource_struct_v2 = b"\
|
||||
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\x01\
|
||||
\x00\x00\x00\x00\x00\x00\x00\x00\
|
||||
\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x01\x00\x00\x00\xab\
|
||||
\x00\x00\x01\x90\x02\x81\x83\xdc\
|
||||
\x00\x00\x00\x68\x00\x00\x00\x00\x00\x01\x00\x00\x0a\x7c\
|
||||
\x00\x00\x01\x90\x02\x81\x83\xe0\
|
||||
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
|
||||
\x00\x00\x01\x90\x02\x81\x83\xed\
|
||||
\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x01\x00\x00\x09\xd1\
|
||||
\x00\x00\x01\x90\x02\x81\x83\xff\
|
||||
\x00\x00\x00\x82\x00\x00\x00\x00\x00\x01\x00\x00\x0b\x27\
|
||||
\x00\x00\x01\x90\x02\x81\x84\x13\
|
||||
\x00\x00\x00\x34\x00\x00\x00\x00\x00\x01\x00\x00\x01\x56\
|
||||
\x00\x00\x01\x90\x07\x0e\x46\x39\
|
||||
"
|
||||
|
||||
qt_version = [int(v) for v in QtCore.qVersion().split('.')]
|
||||
if qt_version < [5, 8, 0]:
|
||||
rcc_version = 1
|
||||
qt_resource_struct = qt_resource_struct_v1
|
||||
else:
|
||||
rcc_version = 2
|
||||
qt_resource_struct = qt_resource_struct_v2
|
||||
|
||||
def qInitResources():
|
||||
QtCore.qRegisterResourceData(rcc_version, qt_resource_struct, qt_resource_name, qt_resource_data)
|
||||
|
||||
def qCleanupResources():
|
||||
QtCore.qUnregisterResourceData(rcc_version, qt_resource_struct, qt_resource_name, qt_resource_data)
|
||||
|
||||
qInitResources()
|
||||
5
src/.gitignore
vendored
Normal file
5
src/.gitignore
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
*.*~
|
||||
*.*-*
|
||||
*.*+*
|
||||
__pycache__
|
||||
__pycache__/*.*
|
||||
297
src/analysis.py
Normal file
297
src/analysis.py
Normal file
@@ -0,0 +1,297 @@
|
||||
"""
|
||||
Analysis class
|
||||
"""
|
||||
from datetime import datetime
|
||||
import inspect
|
||||
import os
|
||||
from statistics import mean
|
||||
import time
|
||||
|
||||
import matplotlib
|
||||
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
|
||||
from qtpy.QtCore import QObject, Signal, Slot
|
||||
|
||||
from pyqtacc.bdbase.enumkind import MsgSeverity
|
||||
|
||||
matplotlib.use('Agg')
|
||||
|
||||
_pymodule = os.path.basename(__file__)
|
||||
|
||||
PROGRESS_BAR_THREAD_INIT = 0
|
||||
PROGRESS_BAR_THREAD_START = 1
|
||||
PROGRESS_BAR_THREAD_ABORTING = 2
|
||||
PROGRESS_BAR_THREAD_ABORTED = 3
|
||||
PROGRESS_BAR_THREAD_ERROR = 4
|
||||
PROGRESS_BAR_THREAD_END = 100
|
||||
|
||||
def _line():
|
||||
"""Macro to return the current line number.
|
||||
|
||||
The current line number within the file is used when
|
||||
reporting messages to the message logging window.
|
||||
|
||||
Returns:
|
||||
int: Current line number.
|
||||
"""
|
||||
return inspect.currentframe().f_back.f_lineno
|
||||
|
||||
|
||||
|
||||
class AnalysisProcedure(QObject):
|
||||
"""
|
||||
Analysis procedure
|
||||
"""
|
||||
trigger_abort = Signal()
|
||||
def __init__(self, parent=None):
|
||||
super(AnalysisProcedure, self).__init__(parent)
|
||||
self.parent = parent
|
||||
self.settings = self.parent.settings
|
||||
self.cafe = self.parent.cafe
|
||||
self.cyca = self.parent.cyca
|
||||
|
||||
self.logging = self.parent.logging
|
||||
self.logger = self.logging.getLogger(__name__)
|
||||
self.logger.debug("Logging activated in analysis procedure")
|
||||
|
||||
self.abort = False
|
||||
self.raw_data = {}
|
||||
self.trigger_abort.connect(self.receive_abort)
|
||||
#Declare input parameters
|
||||
|
||||
self.input_data = None
|
||||
self.debug = False
|
||||
self.simulation = True
|
||||
self.facility = None
|
||||
self.maxmin = None
|
||||
self.maximize = None
|
||||
self.N_events = None
|
||||
self.N_points = None
|
||||
|
||||
self.checkbox = None
|
||||
|
||||
@Slot()
|
||||
def receive_abort(self):
|
||||
"""
|
||||
Set abort variable to interrupt measurement
|
||||
"""
|
||||
|
||||
self.abort = True
|
||||
self.parent.trigger_progressbar.emit(PROGRESS_BAR_THREAD_ABORTING)
|
||||
|
||||
def aborting(self, line_no):
|
||||
self.abort = False
|
||||
mess = "Measurement aborted"
|
||||
self.parent.trigger_progressbar.emit(PROGRESS_BAR_THREAD_ABORTED)
|
||||
|
||||
|
||||
#########INITIALIZE THE INPUTS FOM THE GUI#######################
|
||||
|
||||
def initialize_input_parameters(self, input_data: dict):
|
||||
|
||||
self.input_data = input_data
|
||||
|
||||
if 'debug' in self.input_data.keys():
|
||||
self.debug = self.input_data['debug']
|
||||
|
||||
if self.debug:
|
||||
self.logger.debug("INPUT DATA to LOG:{0}".format(self.input_data))
|
||||
|
||||
self.simulation = bool(self.input_data['simulation'])
|
||||
|
||||
print(self.input_data)
|
||||
|
||||
#self.facility = self.input_data['facility']
|
||||
try:
|
||||
self.maxmin = self.input_data['maxmin']
|
||||
self.N_events = int(self.input_data['N_events'])
|
||||
self.N_points = int(self.input_data['N_points'])
|
||||
self.checkbox = bool(self.input_data['checkbox'])
|
||||
|
||||
self.tab_selected = self.input_data['qtabdata']
|
||||
self.npts = int(self.input_data['Vikings']['npts'])
|
||||
self.nspins = int(self.input_data['Vikings']['nspins'])
|
||||
self.nevents = int(self.input_data['Saxons']['nevents'])
|
||||
self.niter = int(self.input_data['Saxons']['niter'])
|
||||
|
||||
print("logging info level==>", self.logger.getEffectiveLevel(), flush=True)
|
||||
self.loglevel = self.input_data['loggingLevel']
|
||||
self.logger.setLevel(self.logging.getLevelName(self.loglevel))
|
||||
print("logging info level==>", self.logger.getEffectiveLevel(), flush=True)
|
||||
#self.logger.setLevel(self.logging.WARNING)
|
||||
#print("logging info level==>", self.logger.getEffectiveLevel(), flush=True)
|
||||
self.logger.debug("INPUT PARAMETERS")
|
||||
|
||||
self.logger.debug("Measurement: {0}".format(self.tab_selected))
|
||||
|
||||
|
||||
self.logger.debug("Simulation {0}".format(self.simulation))
|
||||
#self.logger.debug("Facility {0}".format(self.facility))
|
||||
self.logger.debug("No. Events {0}".format(self.N_events))
|
||||
self.logger.debug("No. Points {0}".format(self.N_points))
|
||||
self.logger.debug("Checkbox? {0}".format(self.checkbox))
|
||||
|
||||
self.logger.debug("No. Viking Pts {0}".format(self.npts))
|
||||
self.logger.debug("No. Viking Spins {0}".format(self.nspins))
|
||||
self.logger.warning("No. Saxon Evnts {0}".format(self.nevents))
|
||||
self.logger.critical("No. Saxon Iter {0}".format(self.niter))
|
||||
|
||||
|
||||
except KeyError as ex:
|
||||
self.logger.debug("KeyError {0}".format(ex))
|
||||
except ValueError as ex:
|
||||
self.logger.debug("ValueError {0}".format(ex))
|
||||
except Exception as ex:
|
||||
self.logger.debug("Exception {0}".format(ex))
|
||||
|
||||
|
||||
def measure_and_analyze(self, input_data=None):
|
||||
'''
|
||||
This method is initiated by the START button in Procedure panel
|
||||
'''
|
||||
if input_data is None:
|
||||
mess = "No input parameters given; no measurement performed"
|
||||
self.parent.trigger_log_message.emit(
|
||||
MsgSeverity.INFO.name, _pymodule, _line(), mess, {})
|
||||
return None
|
||||
|
||||
|
||||
#Read the input parameters from the GUI
|
||||
self.initialize_input_parameters(input_data)
|
||||
|
||||
|
||||
#Step 1 - Collect ambient data relate to the machine
|
||||
ambient_data = self.collect_ambient_data()
|
||||
self.parent.trigger_progressbar.emit(PROGRESS_BAR_THREAD_START)
|
||||
|
||||
#Step 2 - Perform measurement and return data for processing
|
||||
self.raw_data = self.measure()
|
||||
|
||||
if self.raw_data is None:
|
||||
self.parent.trigger_progressbar.emit(PROGRESS_BAR_THREAD_ERROR)
|
||||
return None
|
||||
|
||||
#Step 3 - Process the raw data
|
||||
proc_data = self.process(ambient_data)
|
||||
|
||||
#Step 4 - Provide plots
|
||||
fig_data = self.make_figs(ambient_data, proc_data)
|
||||
|
||||
#Step 5 - Package to all_data dictionary
|
||||
all_data = self.combine_data(ambient_data, proc_data, fig_data)
|
||||
|
||||
self.parent.trigger_progressbar.emit(PROGRESS_BAR_THREAD_END)
|
||||
return all_data
|
||||
|
||||
|
||||
def reanalyze(self, all_data):
|
||||
|
||||
input_data = all_data['Input data']
|
||||
ambient_data = all_data['Ambient data']
|
||||
self.raw_data = all_data['Raw data']
|
||||
|
||||
proc_data = self.process(ambient_data, from_hdf5=True)
|
||||
fig_data = self.make_figs(ambient_data, proc_data)
|
||||
all_data_new = self.combine_data(ambient_data, proc_data,
|
||||
fig_data)
|
||||
return(all_data_new)
|
||||
|
||||
|
||||
def collect_ambient_data(self):
|
||||
"""Collect ambient data and return it as a dictionary
|
||||
"""
|
||||
# Time in seconds in an integer and can be stored in hdf5
|
||||
time_in_seconds = time.time()
|
||||
time_stamp = datetime.fromtimestamp(
|
||||
time_in_seconds).strftime('%a %d-%m-%Y %H:%M:%S')
|
||||
|
||||
#EPICS...
|
||||
handles = self.cafe.getHandles()[0]
|
||||
status = self.cafe.attachContext(handles[0])
|
||||
|
||||
if status == self.cyca.ECAFE_NULLCONTEXT:
|
||||
options = {}
|
||||
options['statusCode'] = (str(status) + " " +
|
||||
self.cafe.getStatusCodeAsString(status))
|
||||
options['statusInfo'] = self.cafe.getStatusInfo(status)
|
||||
self.parent.trigger_log_message.emit(
|
||||
MsgSeverity.ERROR.name, _pymodule, _line(),
|
||||
("Cannot attach CA context in thread " +
|
||||
"Scan will not be initiated!"), _options)
|
||||
|
||||
if self.abort:
|
||||
self.aborting(_line())
|
||||
return {}
|
||||
|
||||
self.parent.trigger_progressbar.emit(PROGRESS_BAR_THREAD_ERROR)
|
||||
return {}
|
||||
|
||||
ambient_data = {
|
||||
'Time in seconds': time_in_seconds,
|
||||
'Time stamp': time_stamp,
|
||||
}
|
||||
|
||||
|
||||
self.logger.debug("{0}".format(ambient_data))
|
||||
|
||||
return ambient_data
|
||||
|
||||
def measure(self):
|
||||
|
||||
self.parent.trigger_progressbar.emit(PROGRESS_BAR_THREAD_START)
|
||||
for i in range (1, 100):
|
||||
if i%10 == 0:
|
||||
self.parent.trigger_progressbar.emit(i)
|
||||
time.sleep(0.2)
|
||||
if self.abort:
|
||||
self.aborting(_line())
|
||||
return None
|
||||
|
||||
#Fill Raw data here
|
||||
raw_data = {}
|
||||
raw_data['test']='testing'
|
||||
return raw_data
|
||||
|
||||
def process(self, ambient_data, from_hdf5=False):
|
||||
proc_data = {}
|
||||
return proc_data
|
||||
|
||||
def make_figs(self, ambient_data, proc_data):
|
||||
|
||||
# Data for plotting
|
||||
t = np.arange(0.0, 2.0, 0.01)
|
||||
s = 1 + np.sin(2 * np.pi * t)
|
||||
fig, ax = plt.subplots() #figsize=(0.3, 0.2))
|
||||
ax.plot(t, s)
|
||||
ax.set(xlabel='Time (s)', ylabel='Voltage (mV)',
|
||||
title='Sinusoidal Wave-1')
|
||||
ax.grid()
|
||||
t = np.arange(0.0, 3.0, 0.01)
|
||||
s = 1 + np.sin(3 * np.pi * t)
|
||||
|
||||
fig2, ax = plt.subplots()
|
||||
ax.plot(t, s)
|
||||
ax.set(xlabel='Time (s)', ylabel='Voltage (mV)',
|
||||
title='Sinusoidal Wave-2')
|
||||
ax.grid()
|
||||
fig3, ax = plt.subplots()
|
||||
ax.plot(t, s)
|
||||
ax.set(xlabel='Time (s)', ylabel='Voltage (mV)',
|
||||
title='Sinusoidal Wave-3')
|
||||
ax.grid()
|
||||
fig_data = {'Canvas 1': [fig, fig2]}
|
||||
fig_data['Canvas 2'] = fig3
|
||||
|
||||
return fig_data
|
||||
|
||||
def combine_data(self, ambient_data, proc_data, fig_data):
|
||||
|
||||
all_data = {'Input data': self.input_data}
|
||||
all_data['Ambient data'] = ambient_data
|
||||
all_data['Raw data'] = self.raw_data
|
||||
all_data['Processed data'] = proc_data
|
||||
all_data['Figure data'] = fig_data
|
||||
|
||||
return(all_data)
|
||||
54
src/gui.py
Normal file
54
src/gui.py
Normal file
@@ -0,0 +1,54 @@
|
||||
import os
|
||||
|
||||
#from qtpy import QtCore, QtGui
|
||||
from qtpy.QtGui import QColor, QPixmap
|
||||
from qtpy.QtCore import __version__ as QT_VERSION_STR
|
||||
from qtpy.QtCore import QEventLoop, Qt, QTimer, Slot
|
||||
from qtpy.QtWidgets import (
|
||||
QApplication, QGridLayout, QGroupBox, QHBoxLayout, QLabel, QMessageBox,
|
||||
QPushButton, QTabBar, QTabWidget, QTableWidgetItem, QTextEdit, QVBoxLayout,
|
||||
QWidget)
|
||||
|
||||
from common.packages import elog
|
||||
|
||||
from apps4ops.bdbase.utils import _line
|
||||
|
||||
from apps4ops.bdbase.enumkind import MsgSeverity
|
||||
from caqtwidgets.pvwidgets import (
|
||||
CAQLabel, CAQLineEdit, CAQMessageButton, CAQTableWidget, CAQTextEntry,
|
||||
QHLine)
|
||||
|
||||
_pymodule = os.path.basename(__file__)
|
||||
|
||||
|
||||
class AppGui(QWidget):
|
||||
''' Main GUI class
|
||||
'''
|
||||
|
||||
def __init__(self, parent):
|
||||
super().__init__()
|
||||
self.parent = parent
|
||||
self.cafe = self.parent.cafe
|
||||
self.cyca = self.parent.cyca
|
||||
self.check_status = self.parent.check_status
|
||||
self.check_status_list = self.parent.check_status_list
|
||||
self.elog_enum = self.parent.elog_enum
|
||||
|
||||
self.send_to_log_window = self.parent.send_to_log_window
|
||||
self.show_log_message = self.parent.show_log_message
|
||||
self.statusbar = self.parent.statusbar
|
||||
|
||||
self.gui_frame = self.parent.gui_frame
|
||||
self.gui_header = self.parent.gui_header
|
||||
self.font_gui = self.parent.gui_frame.font_gui
|
||||
self.input_parameters = self.parent.input_parameters
|
||||
self.input_labels = self.parent.input_labels
|
||||
self.expert_parameters = self.parent.expert_parameters
|
||||
self.gui_frame.expert_parameters_group.setFixedWidth(260)
|
||||
self.gui_frame.expert_parameters_group.setFixedHeight(130)
|
||||
self.gui_frame.operator_parameters_group.setFixedWidth(260)
|
||||
self.gui_frame.operator_parameters_group.setFixedHeight(330)
|
||||
self.gui_frame.measurement_tab_wgt.setFixedWidth(496)
|
||||
self.gui_frame.measurement_tab_wgt.setFixedHeight(410)
|
||||
self.gui_frame.operator_wgt.setFixedHeight(640)
|
||||
self.gui_frame.expert_wgt.setFixedHeight(240)
|
||||
52
test.json
Executable file
52
test.json
Executable file
@@ -0,0 +1,52 @@
|
||||
{
|
||||
"menuFlags":{
|
||||
"hasFile": 0,
|
||||
"loadInitFile": 0,
|
||||
"hasDaq": 0,
|
||||
"hasH5": 1,
|
||||
"hasEpics": 1
|
||||
},
|
||||
"hdf": {
|
||||
"destination" : "./"
|
||||
},
|
||||
"SLS" : ["Injector", "Booster", "Ring"],
|
||||
"SLS2" : {"test": ["Injector", "Booster", "Ring"]},
|
||||
"QTabViking":{
|
||||
"Vikings": {
|
||||
"radiobutton" : {"data":{ "widget": "QRadioButton", "text" : "Radio Gaga", "value": ["This", "That", "The Other"], "startIdx": 1}},
|
||||
"readonly" : {"data":{ "widget": "QLineRead", "text" :"ReadOnly:", "value" : "input"}},
|
||||
"npts" : {"data":{ "widget": "QLineEdit", "text" :"No Events:", "value" : 22, "min": 0.01, "max": 0.99}},
|
||||
"nspins" : {"data":{ "widget": "QSpinBox", "text" : "No. Points:", "min": 1, "max": 10, "step": 1,"value": 1 }},
|
||||
"ndspins" : {"data":{ "widget": "QDoubleSpinBox", "text" : "No. Points:", "min": 1, "max": 10.0, "step": 0.1,"value": 1.5 }},
|
||||
"facility": {"data" : {"widget": "QComboBox", "text" : "Facility:", "link": ["SLS2", "test"],"layout" : "Horizontal"}},
|
||||
"checkbox" : {"data":{ "widget": "QCheckBox", "orientation" : "Qt.LeftToRight", "text" : "Checkbox", "value" : 1}}
|
||||
},
|
||||
"Saxons": {
|
||||
"nevents" : {"data":{ "widget": "QLineEdit", "text" :"No. Iterations:", "value" : 33}},
|
||||
"niter" : {"data":{ "widget": "QSpinBox", "text" : "Step size:", "min": 1, "max": 10, "step": 1,"value": 1 }}
|
||||
}
|
||||
},
|
||||
|
||||
"Parameters":{
|
||||
"maxmin" : {"flag" : 1, "data":{ "widget": "QRadioButton", "text" : "", "value": ["Maximize", "Minimize" ]}},
|
||||
"facility": {"flag": 0, "data" : {"widget": "QComboBox", "text" : "Facility:",
|
||||
"link": ["SLS"],"layout" : "Horizontal"}},
|
||||
"N_events" : {"flag" : 1, "data":{ "widget": "QLineEdit", "text" : "No. events: ", "value": 2 }},
|
||||
"N_points" : {"flag" : 1, "data":{ "widget": "QSpinBox", "text" : "No. points:", "min": 1, "max": 10, "step": 1,"value": 1 }},
|
||||
"drawLine" : {"flag" : 0, "data":{ "widget": "QHLine", "text" : "None", "value" : "None"}},
|
||||
"checkbox" : {"flag" : 1, "data":{ "widget": "QCheckBox", "orientation" : "Qt.LeftToRight",
|
||||
"text" : " Checkbox", "value" : 1}},
|
||||
"drawLine2" : {"flag" : 0, "data":{ "widget": "QHLine", "text" : "None", "value" : "None"}},
|
||||
"qtabdata" : {"flag" : 1, "data":{ "widget": "QTabWidget", "text" : "Measurement: ", "value" : 0, "link" : "QTabViking", "color" : ["#0080aa", "#0000ff"]}}
|
||||
|
||||
},
|
||||
"Expert":{
|
||||
"debug": {"flag" : 1, "data":{ "widget": "None", "text" : "Debug", "value" : 0}},
|
||||
"simulation": {"flag" : 1, "data":{ "widget": "None", "text" : "Simulation", "value" : 0}}
|
||||
},
|
||||
"GUI": {
|
||||
"resultsTabTitle" : "Results",
|
||||
"subResultsTabTitle" : ["Plots", "Plot-2"],
|
||||
"resultsSeq" : [10, 1]
|
||||
}
|
||||
}
|
||||
45
tina.json
Executable file
45
tina.json
Executable file
@@ -0,0 +1,45 @@
|
||||
{
|
||||
"menuFlags":{
|
||||
"hasFile": 0,
|
||||
"loadInitFile": 0,
|
||||
"hasDaq": 0,
|
||||
"hasH5": 1,
|
||||
"hasEpics": 1
|
||||
},
|
||||
"hdf": {
|
||||
"destination" : "./"
|
||||
},
|
||||
"header" : ["SHIFT", "INJ2", "IP2", "IW2", "PK1", "PK2", "SINQ", "UCN"],
|
||||
|
||||
"HIPA": ["Injector", "Ring"],
|
||||
"HIPA2": {"test": ["Injector", "Ring"]},
|
||||
"QTabAccelerator":{
|
||||
"Injector": {
|
||||
"harmonic" : {"data":{ "widget": "QLineRead", "text" :"Harmonic No.:", "value": 10}},
|
||||
"freqrf" : {"data":{ "widget": "QLineEdit", "text" :"RF Freq. (Ms):", "value" : 50.6328 }},
|
||||
"deltaTcable" : {"data":{ "widget": "QLineRead", "text" : "dT Cable (ns):", "value": 6.9 }},
|
||||
"deltaNpickup" : {"data":{ "widget": "QLineEdit", "text" : "dN pickup:", "value": 4 }}
|
||||
},
|
||||
"Cyclotron": {
|
||||
"harmonic" : {"data":{ "widget": "QLineRead", "text" :"Harmonic No.:", "value" : 6}},
|
||||
"freqrf" : {"data":{ "widget": "QLineEdit", "text" :"RF Freq. (Ms):", "value" : 50.6328 }},
|
||||
"deltaTcable" : {"data":{ "widget": "QLineRead", "text" : "dT Cable (ns)", "value": 44 }},
|
||||
"deltaNpickup" : {"data":{ "widget": "QLineEdit", "text" : "dN Pickup:", "value": 1 }}
|
||||
}
|
||||
},
|
||||
"Parameters":{
|
||||
"facility": {"flag": 0, "data" : {"widget": "QComboBox", "text" : "Facility:",
|
||||
"link": ["HIPA"],"layout" : "Horizontal"}},
|
||||
"qtabdata" : {"flag" : 1, "data":{ "widget": "QTabWidget", "text" : "Accelerator: ", "link" : "QTabAccelerator", "value" : 1, "color" : ["#0080aa", "#0000ff"]}}
|
||||
|
||||
},
|
||||
"Expert":{
|
||||
"debug": {"flag" : 1, "data":{ "widget": "None", "text" : "Debug", "value" : 0}},
|
||||
"simulation": {"flag" : 1, "data":{ "widget": "None", "text" : "Simulation", "value" : 0}}
|
||||
},
|
||||
"GUI": {
|
||||
"resultsTabTitle" : "Results",
|
||||
"subResultsTabTitle" : ["Plots", "Plot-2"],
|
||||
"resultsSeq" : [10, 1]
|
||||
}
|
||||
}
|
||||
209
tina.py
Normal file
209
tina.py
Normal file
@@ -0,0 +1,209 @@
|
||||
"""Tina.py module for measuring the number of turns
|
||||
"""
|
||||
|
||||
import inspect
|
||||
import os
|
||||
import platform
|
||||
import sys
|
||||
import time
|
||||
|
||||
from qtpy.QtCore import __version__ as QT_VERSION_STR
|
||||
from qtpy.QtCore import PYQT_VERSION_STR, Signal, Slot
|
||||
from qtpy.QtWidgets import QApplication, QMessageBox
|
||||
|
||||
from apps4ops.bdbase.base import BaseWindow
|
||||
from apps4ops.bdbase.utils import _line
|
||||
from apps4ops.bdbase.enumkind import UserMode, Facility
|
||||
from apps4ops.bdbase.helpbrowser import HelpBrowser
|
||||
from apps4ops.hipa.sendeloghipa import QSendToELOG
|
||||
from apps4ops.hipa.enumkind import ElogHIPA
|
||||
|
||||
from src.gui import AppGui
|
||||
from pyrcc5 import tina_resources
|
||||
|
||||
|
||||
_pymodule = os.path.basename(__file__)
|
||||
_appname, _appext = _pymodule.split(".")
|
||||
_appversion = "0.0.0"
|
||||
_title = "No of Turns Measurement"
|
||||
|
||||
_appname = "Tina"
|
||||
|
||||
|
||||
|
||||
class StartMain(BaseWindow):
|
||||
trigger_log_message = Signal(str, str, int, str, dict)
|
||||
|
||||
def __init__(self, parent=None):
|
||||
super().__init__(
|
||||
parent=parent, pymodule=_pymodule, appversion=_appversion,
|
||||
title=_title, user_mode=UserMode.OPERATION, facility=Facility.HIPA,
|
||||
has_optics=False, has_procedure=True)
|
||||
|
||||
self.appname = _appname
|
||||
self.elog_enum = ElogHIPA()
|
||||
self.gui = AppGui(self)
|
||||
|
||||
def prepare_elog_message(self):
|
||||
"""Define elog parameters and define message
|
||||
"""
|
||||
|
||||
self.projekt_idx = self.elog_enum.projekt.NONE
|
||||
self.system_idx = self.elog_enum.system.BEAMDYNAMICS
|
||||
self.eintrag_idx = self.elog_enum.eintrag.INFO
|
||||
|
||||
self.ort_idx = self.elog_enum.ort.RING_CYCLOTRON #else INJECTOR2
|
||||
self.status_idx = self.elog_enum.status.NONE
|
||||
self.effekt_idx = self.elog_enum.effekt.NO
|
||||
|
||||
self.attach_files = []
|
||||
|
||||
simulation = self.input_parameters["simulation"]
|
||||
|
||||
if self.all_data:
|
||||
if self.all_data["Input data"] is not None:
|
||||
try:
|
||||
simulation = self.all_data["Input data"]["simulation"]
|
||||
except KeyError:
|
||||
simulation = self.input_parameters["simulation"]
|
||||
pass
|
||||
|
||||
self.logbook = "Sandkasten" if simulation else "HIPA"
|
||||
self.title = _title
|
||||
|
||||
self.no_turns = 180
|
||||
self.message = "The number of turns measured in the ring = {0}".format(
|
||||
self.no_turns)
|
||||
|
||||
@Slot()
|
||||
def send_to_elog(self):
|
||||
"""Override abstract method
|
||||
"""
|
||||
|
||||
@Slot()
|
||||
def save_fig_thread_finished():
|
||||
"""Can take a few seconds to send to elog,
|
||||
hence choose do this in a thread.
|
||||
"""
|
||||
time.sleep(0.2)
|
||||
|
||||
if self.all_data:
|
||||
QSendToELOG(self, logbook=self.logbook,
|
||||
projektIdx=self.projekt_idx,
|
||||
eintragIdx=self.eintrag_idx,
|
||||
systemIdx=self.system_idx,
|
||||
statusIdx=self.status_idx,
|
||||
ordIdx=self.ort_idx,
|
||||
effektIdx=self.effekt_idx,
|
||||
title=self.title,
|
||||
message=self.message,
|
||||
attachFile=self.attach_files)
|
||||
|
||||
time.sleep(1.0)
|
||||
|
||||
# if not self.verify_send_to_elog():
|
||||
# return
|
||||
|
||||
self.prepare_elog_message()
|
||||
|
||||
print(self.message, flush=True)
|
||||
|
||||
if not self.all_data:
|
||||
QSendToELOG(self, logbook=self.logbook,
|
||||
projektIdx=self.projekt_idx,
|
||||
eintragIdx=self.eintrag_idx,
|
||||
systemIdx=self.system_idx,
|
||||
statusIdx=self.status_idx,
|
||||
ortIdx=self.ort_idx,
|
||||
effektIdx=self.effekt_idx,
|
||||
title=self.title,
|
||||
message=self.message,
|
||||
attachFile=self.attach_files)
|
||||
return
|
||||
|
||||
folder_name = self.elog_dest
|
||||
if not os.path.exists(folder_name):
|
||||
os.makedirs(folder_name)
|
||||
|
||||
time_in_seconds = self.all_data["Ambient data"]["Time in seconds"]
|
||||
if self.all_data["Processed data"]["Reanalysis time"]:
|
||||
reanalysis_time = self.all_data["Processed data"][
|
||||
"Reanalysis time in seconds"]
|
||||
else:
|
||||
reanalysis_time = None
|
||||
|
||||
self.folder_name = folder_name
|
||||
|
||||
save_fig_thread = self.SaveFigureThread(
|
||||
self, self.folder_name, time_in_seconds, reanalysis_time)
|
||||
save_fig_thread.finished.connect(save_fig_thread_finished)
|
||||
|
||||
save_fig_thread.start()
|
||||
time.sleep(0.05)
|
||||
|
||||
|
||||
@Slot()
|
||||
def closeEvent(self, event):
|
||||
""" Close application only if conditions allow
|
||||
"""
|
||||
if not self.verify_close_event():
|
||||
event.ignore()
|
||||
return
|
||||
|
||||
BaseWindow.closeEvent(self, event)
|
||||
|
||||
@Slot()
|
||||
def show_about(self):
|
||||
""" Behind the scences information
|
||||
"""
|
||||
QApplication.processEvents()
|
||||
QMessageBox.about(
|
||||
self, "About",
|
||||
"""<b>{0}</b> v {1}
|
||||
<p>Copyright © Paul Scherrer Institut (PSI).
|
||||
All rights reserved.</p>
|
||||
<p>Authors: P.-A. Duperrex, W. Koprek, J. Chrin </p>
|
||||
<p>A python implementation of the LabVIEW measurement developed by P.-A. Duperrex <br>
|
||||
Ref: P.-A. Duperrex and A. Facchetti <br>
|
||||
Number of Turn Measurements on the HIPA Cyclotrons at PSI <br>
|
||||
doi:10.18429/JACoW-IPAC2018-WEPAL067 </p>
|
||||
<p>Responsible: W. Koprek, WBBA/315, Tel. x3765,
|
||||
waldemar.koprek@psi.ch </p>
|
||||
<p>A main-window style application for the measurement of
|
||||
the number of turns in the HIPA cyclotron and injector </p>
|
||||
<p>Python {2} - Qt {3} - PyQt {4} <br>
|
||||
cafe {5} - epics {6} on {7}""".format(
|
||||
_pymodule, _appversion, platform.python_version(),
|
||||
QT_VERSION_STR, PYQT_VERSION_STR,
|
||||
self.cafe.CAFE_version(), self.cafe.EPICS_version(),
|
||||
platform.system()))
|
||||
QApplication.processEvents()
|
||||
|
||||
|
||||
@Slot()
|
||||
def show_help(self):
|
||||
""" Invoke help pages from tina_resources
|
||||
"""
|
||||
index_html = "index.html"
|
||||
help_base = ":"
|
||||
help_page = HelpBrowser(help_base, index_html, self)
|
||||
help_page.show()
|
||||
|
||||
|
||||
|
||||
#########################################################################
|
||||
if __name__ == "__main__":
|
||||
|
||||
app = QApplication(sys.argv)
|
||||
splash = BaseWindow.initialize_application(
|
||||
app, appname=_appname, delay=20, facility=Facility.HIPA)
|
||||
|
||||
myapp = StartMain()
|
||||
|
||||
myapp.show()
|
||||
|
||||
if splash is not None:
|
||||
splash.finish(myapp)
|
||||
|
||||
app.exec_()
|
||||
|
||||
107
tina.sh
Executable file
107
tina.sh
Executable file
@@ -0,0 +1,107 @@
|
||||
#!/bin/bash
|
||||
cd /hipa/bd/applications/tina/devl
|
||||
|
||||
# For use if script is sourced rather than executed
|
||||
appNameDefault="tina.sh"
|
||||
|
||||
module unload gcc
|
||||
module load gcc/7.3.0
|
||||
|
||||
if [ -z "$PS1" ] # no prompt?
|
||||
### if [ -v PS1 ] # On Bash 4.2+ ...
|
||||
then
|
||||
# non-interactive
|
||||
echo "Non-interactive script"
|
||||
else
|
||||
# interactive
|
||||
echo "Interactive/sourced script"
|
||||
fi
|
||||
|
||||
# Select Python Version here. Currently one of 3.5, 3.7, 3.8 and 3.10
|
||||
PYTHON_VERSION=3.10
|
||||
|
||||
|
||||
if [ "$1" ]; then
|
||||
|
||||
if [ "$1" == "3.5" -o "$1" == "35" ]; then
|
||||
echo "Using default version $PYTHON_VERSION"
|
||||
elif [ "$1" == "3.7" -o "$1" == "37" ]; then
|
||||
PYTHON_VERSION=3.7
|
||||
|
||||
elif [ "$1" == "3.8" -o "$1" == "38" ]; then
|
||||
PYTHON_VERSION=3.8
|
||||
|
||||
elif [ "$1" == "3.10" -o "$1" == "310" ]; then
|
||||
PYTHON_VERSION=3.10
|
||||
|
||||
else
|
||||
echo "Requested Python version is not supported"
|
||||
echo "Using default version $PYTHON_VERSION"
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
|
||||
echo "PYTHON_VERSION $PYTHON_VERSION"
|
||||
|
||||
_EPICS_HOST_ARCH=${RHREL}-x86_64
|
||||
|
||||
. /opt/gfa/python $PYTHON_VERSION
|
||||
|
||||
#C_EXT version for Py 3.5, 3.7. 3.8, 3.10:
|
||||
|
||||
export PYTHONPATH=.:/opt/gfa/cafe/python/pycafe/cafe-1.19.3/lib/${_EPICS_HOST_ARCH}:/hipa/bd/applications/deps/apps4ops/v1.10.0
|
||||
|
||||
echo $PYTHONPATH
|
||||
|
||||
STDOUT_DIR="/tmp"
|
||||
#Set to 0 if you do not wish std::out to write to logger
|
||||
STDOUT_FLAG=1
|
||||
|
||||
if [ "$#" -gt "0" ]; then
|
||||
appName=$0
|
||||
if [ "$appName" == "-bash" ]; then
|
||||
appName=$appNameDefault
|
||||
fi
|
||||
else
|
||||
appName=$appNameDefault
|
||||
fi
|
||||
|
||||
#echo "$appName $@ $#"
|
||||
baseName="${appName##*/}"
|
||||
name=$(echo "$baseName" | cut -f 1 -d '.')
|
||||
nameLog=${name}-$USER
|
||||
echo "Application: $name"
|
||||
echo "nameLog: $nameLog"
|
||||
|
||||
#Configuration files can be overwritten
|
||||
#python ${name}.py -s="/sf/bd/deps/pyqtacc/common/config/style.json" -f="/hipa/bd/applications/deps/apps4ops/v1.10.0/apps4ops/qrc_resources/facility/hipa/config/base.json" -q="/sf/bd/deps/pyqtacc/common/config/acc.qss" &
|
||||
|
||||
#python wakeup.py 00:00 &
|
||||
|
||||
if [ "${STDOUT_FLAG}" -gt "0" ] ; then
|
||||
#if changing the std::out destination, remember to also change it in your json config file (for reading)
|
||||
if test -f "$STDOUT_DIR/${nameLog}.log---"; then
|
||||
rm -f $STDOUT_DIR/${nameLog}.log---
|
||||
fi
|
||||
if test -f "$STDOUT_DIR/${nameLog}.log--"; then
|
||||
cp $STDOUT_DIR/${nameLog}.log-- $STDOUT_DIR/${nameLog}.log---
|
||||
rm -f $STDOUT_DIR/${nameLog}.log--
|
||||
fi
|
||||
if test -f "$STDOUT_DIR/${nameLog}.log-"; then
|
||||
cp $STDOUT_DIR/${nameLog}.log- $STDOUT_DIR/${nameLog}.log--
|
||||
rm -f $STDOUT_DIR/${nameLog}.log-
|
||||
fi
|
||||
if test -f "$STDOUT_DIR/${nameLog}.log"; then
|
||||
cp $STDOUT_DIR/${nameLog}.log $STDOUT_DIR/${nameLog}.log-
|
||||
rm -f $STDOUT_DIR/${nameLog}.log
|
||||
fi
|
||||
|
||||
python ${name}.py -u ${name}.json >> $STDOUT_DIR/${nameLog}.log 2>&1 &
|
||||
chmod 777 $STDOUT_DIR/${nameLog}.log
|
||||
else
|
||||
#Run instead without std::out
|
||||
python ${name}.py -u ${name}.json &
|
||||
fi
|
||||
|
||||
|
||||
57
wakeup.py
Normal file
57
wakeup.py
Normal file
@@ -0,0 +1,57 @@
|
||||
'''Precedes splashscreen of main application
|
||||
'''
|
||||
import sys
|
||||
import time
|
||||
|
||||
from qtpy.QtCore import Qt, QTime, QTimer
|
||||
from qtpy.QtGui import QColor, QImage, QPainter, QPixmap
|
||||
from qtpy.QtWidgets import QApplication, QLabel
|
||||
|
||||
from pyqtacc.qrc_resources.facility.proscan.pyrcc5 import qrc_resources
|
||||
|
||||
|
||||
app = QApplication(sys.argv)
|
||||
|
||||
try:
|
||||
due = QTime.currentTime()
|
||||
message = "Tina will begin to load shortly"
|
||||
if len(sys.argv) < 2:
|
||||
raise ValueError
|
||||
hours, mins = sys.argv[1].split(":")
|
||||
due = QTime(int(hours), int(mins))
|
||||
if not due.isValid():
|
||||
raise ValueError
|
||||
if len(sys.argv) > 2:
|
||||
message = " ".join(sys.argv[2:])
|
||||
except ValueError:
|
||||
message = "Usage: wakeup.py HH:MM [optional message]"
|
||||
|
||||
|
||||
while QTime.currentTime() < due:
|
||||
time.sleep(1)
|
||||
|
||||
image = QImage(":/Hush.jpg")
|
||||
p = QPainter(image)
|
||||
font = p.font()
|
||||
font.setPixelSize(54)
|
||||
p.setFont(font)
|
||||
p.setPen(QColor(Qt.red))
|
||||
#p.setStyleSheet("color:red;")
|
||||
#p.save()
|
||||
p.drawText(40, 350, message)
|
||||
#p.restore()
|
||||
|
||||
pixmap = QPixmap.fromImage(image)
|
||||
|
||||
label = QLabel()
|
||||
label.setPixmap(pixmap)
|
||||
label.setScaledContents(True)
|
||||
|
||||
label.setWindowFlags(Qt.SplashScreen)
|
||||
label.setAlignment(Qt.AlignCenter)
|
||||
label.setFixedHeight(600)
|
||||
label.setFixedWidth(600)
|
||||
label.show()
|
||||
QTimer.singleShot(5000, app.quit) #5 seconds
|
||||
|
||||
app.exec_()
|
||||
Reference in New Issue
Block a user