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]
|
||||
*.swp
|
||||
|
||||
_buildid.py
|
||||
|
||||
build/
|
||||
dist/
|
||||
|
||||
|
||||
@@ -27,10 +27,11 @@ To install python and cygwin dependencies and build everything use
|
||||
`deploy\windows-build.bat` batch script.
|
||||
|
||||
### 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:
|
||||
|
||||
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:
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Luftdaten.info Flashing Tool</string>
|
||||
<string>Luftdaten.info Flashing Tool (v{version})</string>
|
||||
</property>
|
||||
<property name="windowIcon">
|
||||
<iconset>
|
||||
@@ -279,6 +279,19 @@
|
||||
<property name="spacing">
|
||||
<number>12</number>
|
||||
</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">
|
||||
<widget class="QLabel" name="label_6">
|
||||
<property name="maximumSize">
|
||||
@@ -298,19 +311,6 @@
|
||||
</property>
|
||||
</widget>
|
||||
</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">
|
||||
<widget class="QLabel" name="label_8">
|
||||
<property name="text">
|
||||
|
||||
@@ -11,6 +11,7 @@ import logging
|
||||
import requests
|
||||
from esptool import ESPLoader
|
||||
|
||||
import luftdatentool
|
||||
from luftdatentool.qtvariant import QtGui, QtCore, QtWidgets
|
||||
from luftdatentool.utils import QuickThread
|
||||
from luftdatentool.workers import PortDetectThread, FirmwareListThread, \
|
||||
@@ -45,12 +46,13 @@ class MainWindow(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow):
|
||||
os.chdir(oldcwd)
|
||||
|
||||
self.app = app
|
||||
self.translator = QtCore.QTranslator()
|
||||
|
||||
self.translator = QtCore.QTranslator()
|
||||
self.i18n_init(QtCore.QLocale.system())
|
||||
|
||||
self.statusbar.showMessage(self.tr("Loading firmware list..."))
|
||||
|
||||
self.versionBox.clear()
|
||||
self.firmware_list = FirmwareListThread()
|
||||
self.firmware_list.listLoaded.connect(self.populate_versions)
|
||||
self.firmware_list.error.connect(self.on_work_error)
|
||||
@@ -68,6 +70,7 @@ class MainWindow(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow):
|
||||
# Hide WIP GUI parts...
|
||||
self.on_expertModeBox_clicked()
|
||||
self.expertModeBox.hide()
|
||||
self.tabWidget.removeTab(self.tabWidget.indexOf(self.serialTab))
|
||||
|
||||
self.uploadProgress.connect(self.on_work_update)
|
||||
self.errorSignal.connect(self.on_work_error)
|
||||
@@ -86,6 +89,21 @@ class MainWindow(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow):
|
||||
def on_work_error(self, 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):
|
||||
"""Initializes i18n to specified QLocale"""
|
||||
|
||||
@@ -96,6 +114,13 @@ class MainWindow(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow):
|
||||
self.app.installTranslator(self.translator)
|
||||
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):
|
||||
"""Loads available firmware versions into versionbox widget"""
|
||||
|
||||
@@ -128,6 +153,8 @@ class MainWindow(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow):
|
||||
sep.setEnabled(False)
|
||||
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:
|
||||
self.show_global_message(
|
||||
self.tr('No boards found'),
|
||||
@@ -174,8 +201,12 @@ class MainWindow(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow):
|
||||
self.statusbar.showMessage(self.tr("No version selected."))
|
||||
return
|
||||
|
||||
orig_version = self.versionBox.model().item(
|
||||
self.versionBox.currentIndex()).text()
|
||||
sel = self.versionBox.model().item(
|
||||
self.versionBox.currentIndex())
|
||||
if sel:
|
||||
orig_version = sel.text()
|
||||
else:
|
||||
orig_version = ''
|
||||
|
||||
if version == orig_version:
|
||||
# Editable combobox has been unchanged
|
||||
|
||||
@@ -2,6 +2,16 @@
|
||||
|
||||
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'],
|
||||
pathex=['.'],
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
__version__ = '0.2'
|
||||
|
||||
@@ -17,11 +17,11 @@ class PortDetectThread(QuickThread):
|
||||
def target(self):
|
||||
"""Checks list of available ports and emits signal when necessary"""
|
||||
|
||||
ports = []
|
||||
ports = None
|
||||
while True:
|
||||
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)
|
||||
|
||||
time.sleep(self.interval)
|
||||
|
||||
Reference in New Issue
Block a user