Compare commits
5 Commits
9a21be6f07
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| ff3497f722 | |||
| 6ebaf86c19 | |||
| ecac90373c | |||
| 1e46161c6a | |||
| a26852bf14 |
2
.gitignore
vendored
2
.gitignore
vendored
@@ -2,6 +2,8 @@
|
|||||||
*.py[oc]
|
*.py[oc]
|
||||||
*.swp
|
*.swp
|
||||||
|
|
||||||
|
_buildid.py
|
||||||
|
|
||||||
build/
|
build/
|
||||||
dist/
|
dist/
|
||||||
|
|
||||||
|
|||||||
@@ -27,10 +27,11 @@ To install python and cygwin dependencies and build everything use
|
|||||||
`deploy\windows-build.bat` batch script.
|
`deploy\windows-build.bat` batch script.
|
||||||
|
|
||||||
### MacOS
|
### MacOS
|
||||||
Currently MacOS builds require *Python 3.6* and Qt SDK installed (just the "Qt >
|
Currently MacOS builds require *Python 3.6*, `dmgbuild` tool (`pip3 install
|
||||||
|
dmgbuild`) and Qt SDK installed (just the "Qt >
|
||||||
5... > macOS" part in installer) with following added to $PATH:
|
5... > macOS" part in installer) with following added to $PATH:
|
||||||
|
|
||||||
export PATH="$HOME/Qt/5.11.1/clang_64/bin:$PATH"
|
export PATH="$HOME/Qt/5.11.1/clang_64/bin:/Library/Frameworks/Python.framework/Versions/3.6/bin:$PATH"
|
||||||
|
|
||||||
Then just install dependencies and build everything using:
|
Then just install dependencies and build everything using:
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
</sizepolicy>
|
</sizepolicy>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
<string>Luftdaten.info Flashing Tool</string>
|
<string>Luftdaten.info Flashing Tool (v{version})</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowIcon">
|
<property name="windowIcon">
|
||||||
<iconset>
|
<iconset>
|
||||||
@@ -279,6 +279,19 @@
|
|||||||
<property name="spacing">
|
<property name="spacing">
|
||||||
<number>12</number>
|
<number>12</number>
|
||||||
</property>
|
</property>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QLabel" name="buildLabel">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<weight>50</weight>
|
||||||
|
<bold>false</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string><b>Luftdaten.info Flashing Tool</b><br/>Build {build_id}</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item row="1" column="0">
|
<item row="1" column="0">
|
||||||
<widget class="QLabel" name="label_6">
|
<widget class="QLabel" name="label_6">
|
||||||
<property name="maximumSize">
|
<property name="maximumSize">
|
||||||
@@ -298,19 +311,6 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="1">
|
|
||||||
<widget class="QLabel" name="label_7">
|
|
||||||
<property name="font">
|
|
||||||
<font>
|
|
||||||
<weight>75</weight>
|
|
||||||
<bold>true</bold>
|
|
||||||
</font>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Luftdaten.info Flashing Tool</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="0" colspan="2">
|
<item row="2" column="0" colspan="2">
|
||||||
<widget class="QLabel" name="label_8">
|
<widget class="QLabel" name="label_8">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import logging
|
|||||||
import requests
|
import requests
|
||||||
from esptool import ESPLoader
|
from esptool import ESPLoader
|
||||||
|
|
||||||
|
import luftdatentool
|
||||||
from luftdatentool.qtvariant import QtGui, QtCore, QtWidgets
|
from luftdatentool.qtvariant import QtGui, QtCore, QtWidgets
|
||||||
from luftdatentool.utils import QuickThread
|
from luftdatentool.utils import QuickThread
|
||||||
from luftdatentool.workers import PortDetectThread, FirmwareListThread, \
|
from luftdatentool.workers import PortDetectThread, FirmwareListThread, \
|
||||||
@@ -45,12 +46,13 @@ class MainWindow(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow):
|
|||||||
os.chdir(oldcwd)
|
os.chdir(oldcwd)
|
||||||
|
|
||||||
self.app = app
|
self.app = app
|
||||||
self.translator = QtCore.QTranslator()
|
|
||||||
|
|
||||||
|
self.translator = QtCore.QTranslator()
|
||||||
self.i18n_init(QtCore.QLocale.system())
|
self.i18n_init(QtCore.QLocale.system())
|
||||||
|
|
||||||
self.statusbar.showMessage(self.tr("Loading firmware list..."))
|
self.statusbar.showMessage(self.tr("Loading firmware list..."))
|
||||||
|
|
||||||
|
self.versionBox.clear()
|
||||||
self.firmware_list = FirmwareListThread()
|
self.firmware_list = FirmwareListThread()
|
||||||
self.firmware_list.listLoaded.connect(self.populate_versions)
|
self.firmware_list.listLoaded.connect(self.populate_versions)
|
||||||
self.firmware_list.error.connect(self.on_work_error)
|
self.firmware_list.error.connect(self.on_work_error)
|
||||||
@@ -68,6 +70,7 @@ class MainWindow(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow):
|
|||||||
# Hide WIP GUI parts...
|
# Hide WIP GUI parts...
|
||||||
self.on_expertModeBox_clicked()
|
self.on_expertModeBox_clicked()
|
||||||
self.expertModeBox.hide()
|
self.expertModeBox.hide()
|
||||||
|
self.tabWidget.removeTab(self.tabWidget.indexOf(self.serialTab))
|
||||||
|
|
||||||
self.uploadProgress.connect(self.on_work_update)
|
self.uploadProgress.connect(self.on_work_update)
|
||||||
self.errorSignal.connect(self.on_work_error)
|
self.errorSignal.connect(self.on_work_error)
|
||||||
@@ -86,6 +89,21 @@ class MainWindow(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow):
|
|||||||
def on_work_error(self, message):
|
def on_work_error(self, message):
|
||||||
self.statusbar.showMessage(message)
|
self.statusbar.showMessage(message)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def version(self):
|
||||||
|
return luftdatentool.__version__
|
||||||
|
|
||||||
|
@property
|
||||||
|
def build_id(self):
|
||||||
|
try:
|
||||||
|
from luftdatentool._buildid import commit, builddate
|
||||||
|
except ImportError:
|
||||||
|
import datetime
|
||||||
|
commit = 'devel'
|
||||||
|
builddate = datetime.datetime.now().strftime('%Y%m%d')
|
||||||
|
|
||||||
|
return '{}-{}/{}'.format(self.version, commit, builddate)
|
||||||
|
|
||||||
def i18n_init(self, locale):
|
def i18n_init(self, locale):
|
||||||
"""Initializes i18n to specified QLocale"""
|
"""Initializes i18n to specified QLocale"""
|
||||||
|
|
||||||
@@ -96,6 +114,13 @@ class MainWindow(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow):
|
|||||||
self.app.installTranslator(self.translator)
|
self.app.installTranslator(self.translator)
|
||||||
self.retranslateUi(self)
|
self.retranslateUi(self)
|
||||||
|
|
||||||
|
def retranslateUi(self, win):
|
||||||
|
super(MainWindow, self).retranslateUi(win)
|
||||||
|
|
||||||
|
win.setWindowTitle(win.windowTitle().format(
|
||||||
|
version=self.version))
|
||||||
|
win.buildLabel.setText(win.buildLabel.text().format(
|
||||||
|
build_id=self.build_id))
|
||||||
def populate_versions(self, files):
|
def populate_versions(self, files):
|
||||||
"""Loads available firmware versions into versionbox widget"""
|
"""Loads available firmware versions into versionbox widget"""
|
||||||
|
|
||||||
@@ -128,6 +153,8 @@ class MainWindow(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow):
|
|||||||
sep.setEnabled(False)
|
sep.setEnabled(False)
|
||||||
self.boardBox.model().appendRow(sep)
|
self.boardBox.model().appendRow(sep)
|
||||||
|
|
||||||
|
# No prefered boards has been found so far and there is a
|
||||||
|
# suggested driver download URL available
|
||||||
if not self.boards_detected and DRIVERS_URL:
|
if not self.boards_detected and DRIVERS_URL:
|
||||||
self.show_global_message(
|
self.show_global_message(
|
||||||
self.tr('No boards found'),
|
self.tr('No boards found'),
|
||||||
@@ -174,8 +201,12 @@ class MainWindow(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow):
|
|||||||
self.statusbar.showMessage(self.tr("No version selected."))
|
self.statusbar.showMessage(self.tr("No version selected."))
|
||||||
return
|
return
|
||||||
|
|
||||||
orig_version = self.versionBox.model().item(
|
sel = self.versionBox.model().item(
|
||||||
self.versionBox.currentIndex()).text()
|
self.versionBox.currentIndex())
|
||||||
|
if sel:
|
||||||
|
orig_version = sel.text()
|
||||||
|
else:
|
||||||
|
orig_version = ''
|
||||||
|
|
||||||
if version == orig_version:
|
if version == orig_version:
|
||||||
# Editable combobox has been unchanged
|
# Editable combobox has been unchanged
|
||||||
|
|||||||
@@ -2,6 +2,16 @@
|
|||||||
|
|
||||||
block_cipher = None
|
block_cipher = None
|
||||||
|
|
||||||
|
import subprocess
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
commit = subprocess.check_output(['git', 'rev-parse', '--short', 'HEAD']).strip().decode('utf-8')
|
||||||
|
builddate = datetime.datetime.now().strftime('%Y%m%d')
|
||||||
|
|
||||||
|
with open('luftdatentool/_buildid.py', 'w') as fd:
|
||||||
|
fd.write('''# This file is autogenerated in luftdaten-tool.spec file
|
||||||
|
commit = "{commit}"
|
||||||
|
builddate = "{builddate}"'''.format(commit=commit, builddate=builddate))
|
||||||
|
|
||||||
a = Analysis(['luftdaten-tool.py'],
|
a = Analysis(['luftdaten-tool.py'],
|
||||||
pathex=['.'],
|
pathex=['.'],
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
__version__ = '0.2'
|
||||||
|
|||||||
@@ -17,11 +17,11 @@ class PortDetectThread(QuickThread):
|
|||||||
def target(self):
|
def target(self):
|
||||||
"""Checks list of available ports and emits signal when necessary"""
|
"""Checks list of available ports and emits signal when necessary"""
|
||||||
|
|
||||||
ports = []
|
ports = None
|
||||||
while True:
|
while True:
|
||||||
new_ports = serial.tools.list_ports.comports()
|
new_ports = serial.tools.list_ports.comports()
|
||||||
|
|
||||||
if [p.name for p in ports] != [p.name for p in new_ports]:
|
if ports is None or [p.name for p in ports] != [p.name for p in new_ports]:
|
||||||
self.portsUpdate.emit(new_ports)
|
self.portsUpdate.emit(new_ports)
|
||||||
|
|
||||||
time.sleep(self.interval)
|
time.sleep(self.interval)
|
||||||
|
|||||||
Reference in New Issue
Block a user