mirror of
https://github.com/marcelstoer/nodemcu-pyflasher.git
synced 2025-04-19 21:07:18 +00:00
Compare commits
No commits in common. "master" and "v5.0.0" have entirely different histories.
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,5 +1,4 @@
|
||||
.idea/
|
||||
.DS_Store
|
||||
|
||||
# Byte-compiled / optimized / DLL files
|
||||
__pycache__/
|
||||
@ -84,7 +83,6 @@ celerybeat-schedule
|
||||
# virtualenv
|
||||
venv/
|
||||
ENV/
|
||||
.venv
|
||||
|
||||
# Spyder project settings
|
||||
.spyderproject
|
||||
|
37
Main.py
37
Main.py
@ -13,12 +13,8 @@ import json
|
||||
import images as images
|
||||
from serial import SerialException
|
||||
from serial.tools import list_ports
|
||||
import locale
|
||||
|
||||
# see https://discuss.wxpython.org/t/wxpython4-1-1-python3-8-locale-wxassertionerror/35168
|
||||
locale.setlocale(locale.LC_ALL, 'C')
|
||||
|
||||
__version__ = "5.1.0"
|
||||
__version__ = "5.0.0"
|
||||
__flash_help__ = '''
|
||||
<p>This setting is highly dependent on your device!<p>
|
||||
<p>
|
||||
@ -207,15 +203,6 @@ class NodeMcuFlasher(wx.Frame):
|
||||
|
||||
panel = wx.Panel(self)
|
||||
|
||||
# Fix popup that never goes away.
|
||||
def onHover(event):
|
||||
global hovered
|
||||
if(len(hovered) != 0 ):
|
||||
hovered[0].Dismiss()
|
||||
hovered = []
|
||||
|
||||
panel.Bind(wx.EVT_MOTION,onHover)
|
||||
|
||||
hbox = wx.BoxSizer(wx.HORIZONTAL)
|
||||
|
||||
fgs = wx.FlexGridSizer(7, 2, 10, 10)
|
||||
@ -296,19 +283,15 @@ class NodeMcuFlasher(wx.Frame):
|
||||
flashmode_label = wx.StaticText(panel, label="Flash mode")
|
||||
|
||||
def on_info_hover(event):
|
||||
global hovered
|
||||
if(len(hovered) == 0):
|
||||
from HtmlPopupTransientWindow import HtmlPopupTransientWindow
|
||||
win = HtmlPopupTransientWindow(self, wx.SIMPLE_BORDER, __flash_help__, "#FFB6C1", (410, 140))
|
||||
|
||||
image = event.GetEventObject()
|
||||
image_position = image.ClientToScreen((0, 0))
|
||||
image_size = image.GetSize()
|
||||
win.Position(image_position, (0, image_size[1]))
|
||||
from HtmlPopupTransientWindow import HtmlPopupTransientWindow
|
||||
win = HtmlPopupTransientWindow(self, wx.SIMPLE_BORDER, __flash_help__, "#FFB6C1", (410, 140))
|
||||
|
||||
win.Popup()
|
||||
hovered = [win]
|
||||
image = event.GetEventObject()
|
||||
image_position = image.ClientToScreen((0, 0))
|
||||
image_size = image.GetSize()
|
||||
win.Position(image_position, (0, image_size[1]))
|
||||
|
||||
win.Popup()
|
||||
|
||||
icon = wx.StaticBitmap(panel, wx.ID_ANY, images.Info.GetBitmap())
|
||||
icon.Bind(wx.EVT_MOTION, on_info_hover)
|
||||
@ -404,8 +387,6 @@ class NodeMcuFlasher(wx.Frame):
|
||||
# ---------------------------------------------------------------------------
|
||||
class MySplashScreen(wx.adv.SplashScreen):
|
||||
def __init__(self):
|
||||
global hovered
|
||||
hovered = []
|
||||
wx.adv.SplashScreen.__init__(self, images.Splash.GetBitmap(),
|
||||
wx.adv.SPLASH_CENTRE_ON_SCREEN | wx.adv.SPLASH_TIMEOUT, 2500, None, -1)
|
||||
self.Bind(wx.EVT_CLOSE, self._on_close)
|
||||
@ -435,8 +416,6 @@ class MySplashScreen(wx.adv.SplashScreen):
|
||||
# ----------------------------------------------------------------------------
|
||||
class App(wx.App, wx.lib.mixins.inspection.InspectionMixin):
|
||||
def OnInit(self):
|
||||
# see https://discuss.wxpython.org/t/wxpython4-1-1-python3-8-locale-wxassertionerror/35168
|
||||
self.ResetLocale()
|
||||
wx.SystemOptions.SetOption("mac.window-plain-transition", 1)
|
||||
self.SetAppName("NodeMCU PyFlasher")
|
||||
|
||||
|
@ -1,8 +1,9 @@
|
||||
# NodeMCU PyFlasher
|
||||
[](https://github.com/marcelstoer/nodemcu-pyflasher/blob/master/LICENSE)
|
||||
[](https://github.com/marcelstoer/nodemcu-pyflasher/releases)
|
||||
[](https://github.com/marcelstoer/nodemcu-pyflasher/releases)
|
||||
[](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=HFN4ZMET5XS2Q)
|
||||
[](https://github.com/marcelstoer/nodemcu-pyflasher/releases)
|
||||
[](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=HFN4ZMET5XS2Q)
|
||||
[](https://twitter.com/intent/tweet?text=Wow:&url=https%3A%2F%2Fgithub.com%2Fmarcelstoer%2Fnodemcu-pyflasher)
|
||||
[](https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fgithub.com%2Fmarcelstoer%2Fnodemcu-pyflasher)
|
||||
|
||||
Self-contained [NodeMCU](https://github.com/nodemcu/nodemcu-firmware) flasher with GUI based on [esptool.py](https://github.com/espressif/esptool) and [wxPython](https://www.wxpython.org/).
|
||||
|
||||
|
@ -1,60 +1,30 @@
|
||||
# -*- mode: python ; coding: utf-8 -*-
|
||||
# -*- mode: python -*-
|
||||
|
||||
import os
|
||||
block_cipher = None
|
||||
|
||||
# We need to add the flasher stub JSON files explicitly: https://github.com/espressif/esptool/issues/1059
|
||||
venv_python_folder_name = next(d for d in os.listdir('./.venv/lib') if d.startswith('python') and os.path.isdir(os.path.join('./.venv/lib', d)))
|
||||
local_stub_flasher_path = "./.venv/lib/{}/site-packages/esptool/targets/stub_flasher".format(venv_python_folder_name)
|
||||
|
||||
a = Analysis(
|
||||
['nodemcu-pyflasher.py'],
|
||||
pathex=[],
|
||||
binaries=[],
|
||||
datas=[
|
||||
("images", "images"),
|
||||
("{}/1".format(local_stub_flasher_path), "./esptool/targets/stub_flasher/1"),
|
||||
("{}/2".format(local_stub_flasher_path), "./esptool/targets/stub_flasher/2")
|
||||
],
|
||||
hiddenimports=[],
|
||||
hookspath=[],
|
||||
hooksconfig={},
|
||||
runtime_hooks=[],
|
||||
excludes=[],
|
||||
noarchive=False,
|
||||
optimize=0,
|
||||
)
|
||||
pyz = PYZ(a.pure)
|
||||
|
||||
exe = EXE(
|
||||
pyz,
|
||||
a.scripts,
|
||||
[],
|
||||
exclude_binaries=True,
|
||||
name='NodeMCU PyFlasher',
|
||||
debug=False,
|
||||
bootloader_ignore_signals=False,
|
||||
strip=False,
|
||||
upx=True,
|
||||
console=False,
|
||||
disable_windowed_traceback=False,
|
||||
argv_emulation=False,
|
||||
target_arch=None,
|
||||
codesign_identity=None,
|
||||
entitlements_file=None,
|
||||
)
|
||||
coll = COLLECT(
|
||||
exe,
|
||||
a.binaries,
|
||||
a.datas,
|
||||
strip=False,
|
||||
upx=True,
|
||||
upx_exclude=[],
|
||||
name='NodeMCU PyFlasher',
|
||||
icon='images/icon-256.icns'
|
||||
)
|
||||
app = BUNDLE(
|
||||
coll,
|
||||
name='NodeMCU PyFlasher.app',
|
||||
version='5.1.0',
|
||||
icon='images/icon-256.icns',
|
||||
bundle_identifier='com.frightanic.nodemcu-pyflasher')
|
||||
a = Analysis(['nodemcu-pyflasher.py'],
|
||||
binaries=None,
|
||||
datas=[("images", "images")],
|
||||
hiddenimports=[],
|
||||
hookspath=[],
|
||||
runtime_hooks=[],
|
||||
excludes=[],
|
||||
win_no_prefer_redirects=False,
|
||||
win_private_assemblies=False,
|
||||
cipher=block_cipher)
|
||||
pyz = PYZ(a.pure, a.zipped_data,
|
||||
cipher=block_cipher)
|
||||
exe = EXE(pyz,
|
||||
a.scripts,
|
||||
a.binaries,
|
||||
a.zipfiles,
|
||||
a.datas,
|
||||
name='NodeMCU-PyFlasher',
|
||||
debug=False,
|
||||
strip=False,
|
||||
upx=True,
|
||||
console=False , icon='images/icon-256.icns')
|
||||
app = BUNDLE(exe,
|
||||
name='NodeMCU-PyFlasher-5.0.0.app',
|
||||
icon='./images/icon-256.icns',
|
||||
bundle_identifier='com.frightanic.nodemcu-pyflasher')
|
||||
|
@ -1,46 +1,26 @@
|
||||
# -*- mode: python ; coding: utf-8 -*-
|
||||
# -*- mode: python -*-
|
||||
|
||||
# We need to add the flasher stub JSON files explicitly: https://github.com/espressif/esptool/issues/1059
|
||||
local_stub_flasher_path = "./.venv/Lib/site-packages/esptool/targets/stub_flasher"
|
||||
block_cipher = None
|
||||
|
||||
a = Analysis(
|
||||
['nodemcu-pyflasher.py'],
|
||||
pathex=[],
|
||||
binaries=[],
|
||||
datas=[
|
||||
("images", "images"),
|
||||
("{}/1".format(local_stub_flasher_path), "./esptool/targets/stub_flasher/1"),
|
||||
("{}/2".format(local_stub_flasher_path), "./esptool/targets/stub_flasher/2")
|
||||
],
|
||||
hiddenimports=[],
|
||||
hookspath=[],
|
||||
hooksconfig={},
|
||||
runtime_hooks=[],
|
||||
excludes=[],
|
||||
noarchive=False,
|
||||
optimize=0,
|
||||
)
|
||||
pyz = PYZ(a.pure)
|
||||
|
||||
exe = EXE(
|
||||
pyz,
|
||||
a.scripts,
|
||||
a.binaries,
|
||||
a.datas,
|
||||
[],
|
||||
name='NodeMCU-PyFlasher',
|
||||
version='windows-version-info.txt',
|
||||
debug=False,
|
||||
bootloader_ignore_signals=False,
|
||||
strip=False,
|
||||
upx=True,
|
||||
upx_exclude=[],
|
||||
runtime_tmpdir=None,
|
||||
console=False,
|
||||
icon='images\\icon-256.ico',
|
||||
disable_windowed_traceback=False,
|
||||
argv_emulation=False,
|
||||
target_arch=None,
|
||||
codesign_identity=None,
|
||||
entitlements_file=None,
|
||||
)
|
||||
a = Analysis(['nodemcu-pyflasher.py'],
|
||||
binaries=[],
|
||||
datas=[("images", "images")],
|
||||
hiddenimports=[],
|
||||
hookspath=[],
|
||||
runtime_hooks=[],
|
||||
excludes=[],
|
||||
win_no_prefer_redirects=False,
|
||||
win_private_assemblies=False,
|
||||
cipher=block_cipher)
|
||||
pyz = PYZ(a.pure, a.zipped_data,
|
||||
cipher=block_cipher)
|
||||
exe = EXE(pyz,
|
||||
a.scripts,
|
||||
a.binaries,
|
||||
a.zipfiles,
|
||||
a.datas,
|
||||
name='NodeMCU-PyFlasher-5.0.0',
|
||||
debug=False,
|
||||
strip=False,
|
||||
upx=True,
|
||||
console=False , icon='images\\icon-256.ico')
|
||||
|
@ -1,3 +1,4 @@
|
||||
pyinstaller --log-level=DEBUG ^
|
||||
--noconfirm ^
|
||||
--windowed ^
|
||||
build-on-win.spec
|
||||
|
10
build.sh
10
build.sh
@ -1,13 +1,13 @@
|
||||
#!/usr/bin/env bash
|
||||
# rm -fr build dist
|
||||
VERSION=5.1.0
|
||||
NAME="NodeMCU PyFlasher"
|
||||
DIST_NAME="NodeMCU-PyFlasher"
|
||||
VERSION=5.0.0
|
||||
NAME=NodeMCU-PyFlasher
|
||||
|
||||
pyinstaller --log-level=DEBUG \
|
||||
--noconfirm \
|
||||
--windowed \
|
||||
build-on-mac.spec
|
||||
|
||||
# https://github.com/sindresorhus/create-dmg
|
||||
create-dmg "dist/$NAME.app"
|
||||
mv "$NAME $VERSION.dmg" "dist/$DIST_NAME.dmg"
|
||||
create-dmg dist/$NAME-$VERSION.app
|
||||
mv "$NAME-$VERSION 0.0.0.dmg" dist/$NAME-$VERSION.dmg
|
||||
|
@ -1,6 +1,5 @@
|
||||
esptool==4.8.1
|
||||
esptool>=3.0
|
||||
pyserial~=3.5
|
||||
wxPython==4.2.2
|
||||
PyInstaller==6.11.1
|
||||
wxPython~=4.1.1
|
||||
PyInstaller~=4.2
|
||||
httplib2>=0.18.1
|
||||
pyinstaller-versionfile>=2.0.0
|
||||
|
@ -1,9 +0,0 @@
|
||||
# https://github.com/DudeNr33/pyinstaller-versionfile
|
||||
# create-version-file windows-metadata.yaml --outfile windows-version-info.txt
|
||||
Version: 5.1.0
|
||||
CompanyName: Marcel Stör
|
||||
FileDescription: NodeMCU PyFlasher
|
||||
InternalName: NodeMCU PyFlasher
|
||||
LegalCopyright: © Marcel Stör. All rights reserved.
|
||||
OriginalFilename: NodeMCU-PyFlasher.exe
|
||||
ProductName: NodeMCU PyFlasher
|
@ -1,46 +0,0 @@
|
||||
# GENERATED FILE. DO NOT EDIT. Created by running create-version-file windows-metadata.yaml --outfile windows-version-info.txt
|
||||
#
|
||||
# UTF-8
|
||||
#
|
||||
# For more details about fixed file info 'ffi' see:
|
||||
# http://msdn.microsoft.com/en-us/library/ms646997.aspx
|
||||
|
||||
VSVersionInfo(
|
||||
ffi=FixedFileInfo(
|
||||
# filevers and prodvers should be always a tuple with four items: (1, 2, 3, 4)
|
||||
# Set not needed items to zero 0. Must always contain 4 elements.
|
||||
filevers=(5,1,0,0),
|
||||
prodvers=(5,1,0,0),
|
||||
# Contains a bitmask that specifies the valid bits 'flags'r
|
||||
mask=0x3f,
|
||||
# Contains a bitmask that specifies the Boolean attributes of the file.
|
||||
flags=0x0,
|
||||
# The operating system for which this file was designed.
|
||||
# 0x4 - NT and there is no need to change it.
|
||||
OS=0x40004,
|
||||
# The general type of file.
|
||||
# 0x1 - the file is an application.
|
||||
fileType=0x1,
|
||||
# The function of the file.
|
||||
# 0x0 - the function is not defined for this fileType
|
||||
subtype=0x0,
|
||||
# Creation date and time stamp.
|
||||
date=(0, 0)
|
||||
),
|
||||
kids=[
|
||||
StringFileInfo(
|
||||
[
|
||||
StringTable(
|
||||
u'040904B0',
|
||||
[StringStruct(u'CompanyName', u'Marcel Stör'),
|
||||
StringStruct(u'FileDescription', u'NodeMCU PyFlasher'),
|
||||
StringStruct(u'FileVersion', u'5.1.0.0'),
|
||||
StringStruct(u'InternalName', u'NodeMCU PyFlasher'),
|
||||
StringStruct(u'LegalCopyright', u'© Marcel Stör. All rights reserved.'),
|
||||
StringStruct(u'OriginalFilename', u'NodeMCU-PyFlasher.exe'),
|
||||
StringStruct(u'ProductName', u'NodeMCU PyFlasher'),
|
||||
StringStruct(u'ProductVersion', u'5.1.0.0')])
|
||||
]),
|
||||
VarFileInfo([VarStruct(u'Translation', [1033, 1200])])
|
||||
]
|
||||
)
|
Loading…
x
Reference in New Issue
Block a user