Compare commits
37 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
07844a1dd3 | ||
|
|
890b8a9ea0 | ||
|
|
2e9c246b40 | ||
|
|
59ffe8e2a0 | ||
|
|
1d2227e06b | ||
|
|
9bd4efca5f | ||
|
|
53f92991ce | ||
|
|
f983266bb8 | ||
|
|
cbed8274b6 | ||
|
|
4598b04e6f | ||
|
|
afa96cc9c6 | ||
|
|
e4ed02519c | ||
|
|
d3e0c540ab | ||
|
|
966bc9e868 | ||
|
|
3dccbad5e6 | ||
|
|
f3b75c05fa | ||
|
|
a0221fa9d8 | ||
|
|
9826635a80 | ||
|
|
f67e647581 | ||
|
|
51d801a1d1 | ||
|
|
836320899d | ||
|
|
796c5a072f | ||
|
|
d53f59f44f | ||
|
|
515bc06071 | ||
|
|
4327549833 | ||
|
|
a88a3316ce | ||
|
|
e8daed091a | ||
|
|
b3a7e07b0c | ||
|
|
be3d5eb83c | ||
|
|
824d3818fa | ||
|
|
989062e5c3 | ||
|
|
14ac2dc17c | ||
|
|
2de7c32731 | ||
|
|
328948eb7c | ||
|
|
2cca6b3107 | ||
|
|
e47bedb902 | ||
|
|
b5243ce205 |
30
.gitea/workflows/build.yml
Normal file
30
.gitea/workflows/build.yml
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
name: Build Detektor binarie
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ dev ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build_macos:
|
||||||
|
runs-on: macos
|
||||||
|
# alpine doesn't have prebuilt wheels
|
||||||
|
container: python:3.13-slim
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
run: |
|
||||||
|
apt update -y
|
||||||
|
apt install -y --no-install-recommends git
|
||||||
|
git clone ${{ gitea.server_url }}/${{ gitea.repository }} .
|
||||||
|
git checkout ${{ gitea.ref_name }}
|
||||||
|
|
||||||
|
- name: Install deps
|
||||||
|
run: |
|
||||||
|
python -m venv venv
|
||||||
|
. venv/bin/activate
|
||||||
|
python -m pip install --upgrade pip setuptools wheel
|
||||||
|
pip install -r requirements.txt
|
||||||
|
pip list
|
||||||
|
|
||||||
|
- name: Build binary
|
||||||
|
run: python -m PyInstaller build-config/macos_build.spec
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
PyQt6==6.8.0
|
PyQt6==6.8.*
|
||||||
pyinstaller==6.11.1
|
pyinstaller==6.11.1
|
||||||
wheel==0.45.1
|
wheel==0.45.1
|
||||||
pyqtgraph==0.13.7
|
pyqtgraph==0.13.7
|
||||||
@@ -7,4 +7,4 @@ dbfread==2.0.7
|
|||||||
openpyxl==3.1.5
|
openpyxl==3.1.5
|
||||||
xlsxwriter==3.2.2
|
xlsxwriter==3.2.2
|
||||||
PyOpenGL==3.1.9
|
PyOpenGL==3.1.9
|
||||||
PyOpenGL_accelerate==3.1.9
|
#PyOpenGL_accelerate==3.1.9
|
||||||
|
|||||||
@@ -71,8 +71,9 @@ class ChannelCalibrationDialog(QDialog):
|
|||||||
|
|
||||||
channel_layout.addWidget(RoundedColorRectangleWidget(ch.color))
|
channel_layout.addWidget(RoundedColorRectangleWidget(ch.color))
|
||||||
|
|
||||||
|
from PyQt6.QtCore import QLocale
|
||||||
float_validator = CustomDoubleValidator()
|
float_validator = CustomDoubleValidator()
|
||||||
# float_validator.setLocale("C")
|
float_validator.setLocale(QLocale(QLocale.Language.C))
|
||||||
|
|
||||||
# Přičíst input
|
# Přičíst input
|
||||||
add_layout = QVBoxLayout()
|
add_layout = QVBoxLayout()
|
||||||
@@ -138,8 +139,15 @@ class ChannelCalibrationDialog(QDialog):
|
|||||||
# get the current channel object of the current (duplicated dataset)
|
# get the current channel object of the current (duplicated dataset)
|
||||||
channel = DetektorContainer().get().get_channel_by_uuid(channel_id)
|
channel = DetektorContainer().get().get_channel_by_uuid(channel_id)
|
||||||
|
|
||||||
offset = float(self.add_input.text())
|
try:
|
||||||
multiple = float(self.multiply_input.text())
|
# validate inputs
|
||||||
|
offset = float(self.add_input.text().replace(',', '.'))
|
||||||
|
multiple = float(self.multiply_input.text().replace(',', '.'))
|
||||||
|
except ValueError:
|
||||||
|
WrongDataDialog()
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
logging.debug(f'Calibrating channel {channel.name} +{offset} x{multiple}')
|
logging.debug(f'Calibrating channel {channel.name} +{offset} x{multiple}')
|
||||||
|
|
||||||
if self._only_region:
|
if self._only_region:
|
||||||
@@ -178,12 +186,37 @@ class MissingChannelDialog(QDialog):
|
|||||||
|
|
||||||
self.setWindowTitle("Vyberte kanál")
|
self.setWindowTitle("Vyberte kanál")
|
||||||
self.setModal(True) # Set the dialog as modal (blocks main window)
|
self.setModal(True) # Set the dialog as modal (blocks main window)
|
||||||
self.resize(300, 150)
|
self.resize(400, 75)
|
||||||
|
|
||||||
# Main layout
|
# Main layout
|
||||||
main_layout = QVBoxLayout()
|
main_layout = QVBoxLayout()
|
||||||
self.setLayout(main_layout)
|
self.setLayout(main_layout)
|
||||||
main_layout.addWidget(QLabel("Vyberte kanál, na kterém chcete provést kalibraci"))
|
label = QLabel("Vyberte kanál, na kterém chcete provést kalibraci")
|
||||||
|
label.setAlignment(Qt.AlignmentFlag.AlignCenter)
|
||||||
|
main_layout.addWidget(label)
|
||||||
|
|
||||||
|
cancel_button = QPushButton("OK")
|
||||||
|
cancel_button.clicked.connect(self.close)
|
||||||
|
main_layout.addWidget(cancel_button)
|
||||||
|
|
||||||
|
# Show the dialog
|
||||||
|
self.exec()
|
||||||
|
|
||||||
|
|
||||||
|
class WrongDataDialog(QDialog):
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
|
||||||
|
self.setWindowTitle("Špatná data")
|
||||||
|
self.setModal(True) # Set the dialog as modal (blocks main window)
|
||||||
|
self.resize(400, 75)
|
||||||
|
|
||||||
|
# Main layout
|
||||||
|
main_layout = QVBoxLayout()
|
||||||
|
self.setLayout(main_layout)
|
||||||
|
label = QLabel("Zadaná data nejsou platná čísla.")
|
||||||
|
label.setAlignment(Qt.AlignmentFlag.AlignCenter)
|
||||||
|
main_layout.addWidget(label)
|
||||||
|
|
||||||
cancel_button = QPushButton("OK")
|
cancel_button = QPushButton("OK")
|
||||||
cancel_button.clicked.connect(self.close)
|
cancel_button.clicked.connect(self.close)
|
||||||
@@ -193,6 +226,18 @@ class MissingChannelDialog(QDialog):
|
|||||||
self.exec()
|
self.exec()
|
||||||
|
|
||||||
class CustomDoubleValidator(QDoubleValidator):
|
class CustomDoubleValidator(QDoubleValidator):
|
||||||
|
|
||||||
def validate(self, input_str, pos):
|
def validate(self, input_str, pos):
|
||||||
input_str = input_str.replace(',', '.') # Replace ',' with '.'
|
# Accept both comma and dot as decimal separator for validation
|
||||||
return super().validate(input_str, pos)
|
if ',' in input_str:
|
||||||
|
# Allow comma as intermediate state so user can type it
|
||||||
|
test_str = input_str.replace(',', '.')
|
||||||
|
state, _, _ = super().validate(test_str, pos)
|
||||||
|
if state == QDoubleValidator.State.Acceptable:
|
||||||
|
return (QDoubleValidator.State.Intermediate, input_str, pos)
|
||||||
|
return (QDoubleValidator.State.Intermediate, input_str, pos)
|
||||||
|
return super().validate(input_str, pos)
|
||||||
|
|
||||||
|
def fixup(self, input_str):
|
||||||
|
# Actually replace comma with dot in the QLineEdit
|
||||||
|
return input_str.replace(',', '.')
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
APP_NAME='Detektor'
|
APP_NAME='Detektor'
|
||||||
APP_VERSION='1.1'
|
APP_VERSION='1.2'
|
||||||
|
|
||||||
# Names used by generate_data()
|
# Names used by generate_data()
|
||||||
# no importance when opening file
|
# no importance when opening file
|
||||||
|
|||||||
Reference in New Issue
Block a user