Skip to content

Commit fa3f048

Browse files
committed
update self starter exe cutable
- fix crash after starting exe cutable from command line interface (CLI) - create packed.zip file for external download from my website kallup.net/myapp
1 parent ff58a39 commit fa3f048

File tree

2 files changed

+361
-65
lines changed

2 files changed

+361
-65
lines changed

src/client.py

Lines changed: 105 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,16 @@
77
from dataclasses import dataclass, field, replace
88
from datetime import datetime
99
from pathlib import Path
10-
11-
import os, sys
10+
# ---------------------------------------------------------------------------
11+
import sys
12+
import os
13+
# ---------------------------------------------------------------------------
14+
# early environment settings ...
15+
# ---------------------------------------------------------------------------
16+
os.environ.setdefault("QTWEBENGINE_CHROMIUM_FLAGS",""
17+
+ "--disable-gpu "
18+
+ "--disable-software-rasterizer")
19+
os.environ["QT_LOGGING_RULES"] = "qt.webengine.*=true"
1220
# ---------------------------------------------------------------------------
1321
# global used application stuff. try to catch import exceptions ...
1422
# ---------------------------------------------------------------------------
@@ -170,6 +178,12 @@
170178
# ---------------------------------------------------------------------------
171179
os.environ["PATH"] = ".\\_internal" + os.pathsep + os.environ.get("PATH","")
172180

181+
# ---------------------------------------------------------------------------
182+
# Pfad zum entpackten Bundle oder zum Projekt (beim Entwickeln)
183+
# ---------------------------------------------------------------------------
184+
def base_dir():
185+
return Path(getattr(sys, "_MEIPASS", Path(__file__).resolve().parent))
186+
173187
# ---------------------------------------------------------------------------
174188
# \brief Sorgt dafür, dass (user-)site-packages auf sys.path sind.
175189
# ---------------------------------------------------------------------------
@@ -843,17 +857,20 @@ def add_font_to_registry(font_name, font_path):
843857
# ------------------------------------------------------------------------
844858
# Qt5 gui framework
845859
# ------------------------------------------------------------------------
846-
from PyQt5.QtWidgets import *
847860
from PyQt5.QtCore import *
848861
from PyQt5.QtGui import *
862+
from PyQt5.QtWidgets import *
849863
from PyQt5.QtPrintSupport import *
850-
from PyQt5.QtWebEngineWidgets import *
851864
from PyQt5.QtNetwork import *
865+
from PyQt5.QtWebEngineWidgets import *
852866
from PyQt5.QtWebChannel import *
853867
from PyQt5.QtSerialPort import QSerialPort, QSerialPortInfo
854868

869+
from PyQt5 import QtWebEngineCore
855870
from PyQt5 import QtGui
856871

872+
QCoreApplication.setAttribute(Qt.AA_ShareOpenGLContexts, True)
873+
857874
# ------------------------------------------------------------------------
858875
import resources_rc
859876

@@ -880,6 +897,12 @@ def add_font_to_registry(font_name, font_path):
880897

881898
from tempfile import mkdtemp, TemporaryDirectory
882899
from contextlib import redirect_stdout
900+
901+
# ------------------------------------------------------------------------
902+
# global used variable constants ...
903+
# ------------------------------------------------------------------------
904+
assets_root = base_dir() / "src"
905+
base_url = QUrl.fromLocalFile(str(assets_root) + os.sep)
883906

884907
# ------------------------------------------------------------------------
885908
# global office-time goodies constant's - there because Qt5 imports ...
@@ -24548,7 +24571,7 @@ def init_ui(self):
2454824571
self.help_tabs = QTabWidget()
2454924572
self.help_tabs.setStyleSheet(_css(genv.css_tabs))
2455024573
self.help_tabs.setMinimumWidth(800)
24551-
24574+
#showInfo("helllll")
2455224575
# help
2455324576
self.help_layout = QHBoxLayout()
2455424577

@@ -24759,12 +24782,14 @@ def init_ui(self):
2475924782
self.tab2_tree_model.dataChanged.connect(self.on_data_changed)
2476024783
self.tab2_tree_view.setModel(self.tab2_tree_model)
2476124784

24762-
24785+
#showInfo("11111")
2476324786
root_node = self.tab2_tree_model.invisibleRootItem()
2476424787
self.fold_icon = genv.v__app__internal__ + "/img/floppy-disk.png"
24788+
#showInfo("ddddd")
2476524789

2476624790
self.tab2_tree_view.setContextMenuPolicy(Qt.CustomContextMenu)
2476724791
self.tab2_tree_view.customContextMenuRequested.connect(self.open_context_topics_menu)
24792+
#showInfo("ddd dd")
2476824793

2476924794
self.tab2_pushbuttonAdd = QPushButton(_str("Add"))
2477024795
self.tab2_pushbuttonAdd.setMinimumHeight(32)
@@ -24799,7 +24824,7 @@ def init_ui(self):
2479924824
self.tab2_pushbuttonRemove = QPushButton(_str("Delete"))
2480024825
self.tab2_pushbuttonRemove.setMinimumHeight(32)
2480124826
self.tab2_pushbuttonRemove.setStyleSheet(_css(genv.css_button_style))
24802-
24827+
#showInfo("1212122121212 ddddd")
2480324828
top_array = [
2480424829
self.tab2_pushbuttonAdd,
2480524830
self.tab2_pushbuttonAddSub,
@@ -24878,14 +24903,15 @@ def init_ui(self):
2487824903
self.tab0_fold_edit1 = myLineEdit()
2487924904
self.tab0_fold_edit1.setMinimumWidth(274)
2488024905
self.tab0_fold_edit1.returnPressed.connect(self.tab0_fold_edit1_return)
24881-
24906+
#showInfo("ddddd 33444343434")
2488224907
# default
2488324908
self.tab0_fold_push1 = OpenProjectButton(self, font)
2488424909
self.tab0_fold_userd = QDir.homePath()
2488524910
self.tab0_fold_userd = self.tab0_fold_userd.replace("\\",'/')
2488624911

2488724912
# directory check:
2488824913
info = check_directory(self.tab0_fold_userd, deny_symlink=True)
24914+
#showInfo("dsadsadsadsasdasd asdsadddd")
2488924915
if not info["exists"]:
2489024916
showError(""
2489124917
+ _str("Error:") + "\n"
@@ -24957,7 +24983,7 @@ def init_ui(self):
2495724983

2495824984
donate = ClickableImage()
2495924985
button = GradientButton("Online Help", self)
24960-
24986+
#showInfo("ddddd -----------------------")
2496124987
self.tab0_topB_vlayout.addWidget(donate)
2496224988
self.tab0_topB_vlayout.addWidget(button)
2496324989
#
@@ -25111,7 +25137,7 @@ def init_ui(self):
2511125137
self.list_blue_item3.setFlags(
2511225138
self.list_blue_item3.flags() & ~Qt.ItemIsSelectable)
2511325139
self.tab0_help_list2.addItem(self.list_blue_item3)
25114-
25140+
#showInfo("ddd90890880890890099dd")
2511525141
liste = [
2511625142
[_str("Empty Project") , os.path.join("emptyproject" + genv.v__app__img_ext__) ],
2511725143
[_str("Recipe") , os.path.join("recipe" + genv.v__app__img_ext__) ],
@@ -25353,40 +25379,80 @@ def init_ui(self):
2535325379
# ------------------
2535425380
# alles zusammen ...
2535525381
# ------------------
25356-
self.webView1 = QWebEngineView(self.tab_html)
25357-
self.profile1 = QWebEngineProfile("storage1", self.webView1)
25358-
self.page1 = QWebEnginePage(self.profile1, self.webView1)
25359-
25360-
self.webView1.setPage(self.page1)
25361-
self.webView1.setHtml(_str(genv.html_content), baseUrl = QUrl.fromLocalFile('.'))
25362-
25363-
self.tab5_top_layout.addWidget(self.webView1);
25382+
print(self.tab_html)
25383+
#self.webView1 = QWebEngineView(genv.v__app_object) #self.tab_html)
25384+
profile = QWebEngineProfile("storage1", genv.v__app_object) #self.webView1)
25385+
25386+
##showInfo(">>>>>>>> ------- <<<<<<< oooooooooooooooooooooooooooo ddddd")
25387+
25388+
base_store = pathlib.Path.home() / ".myapp" / "webengine" / "profile1"
25389+
base = QUrl.fromLocalFile(str(Path(BASEDIR).resolve()) + os.sep)
25390+
html = "<!doctype html><meta charset='utf-8'><h1>Hallo</h1>"
25391+
25392+
(base_store / "cache" ).mkdir(parents = True, exist_ok = True)
25393+
(base_store / "storage").mkdir(parents = True, exist_ok = True)
25394+
25395+
profile.setCachePath(str(base_store / "cache"))
25396+
profile.setPersistentStoragePath(str(base_store / "storage"))
25397+
25398+
page = QWebEnginePage(profile, genv.v__app_object)
25399+
view = QWebEngineView()
25400+
view.setPage(page)
25401+
25402+
#showInfo("ooooooooo >>>>>>>> ------- <<<<<<< oooooooooooooooooooooooooooo ddddd")
25403+
25404+
#self.webView1.setPage(self.page1)
25405+
#self.webView1.loadFinished.connect(lambda ok: print("loadFinished:", ok))
25406+
#self.webView1.loadStarted.connect(lambda: print("loadStarted"))
25407+
#self.webView1.setHtml(str(html), base)
25408+
25409+
#try:
25410+
# #self.webView1.setPage(self.page1)
25411+
# print("------------------------------------------")
25412+
# print(self.webView1)
25413+
# print(self.tab5_top_layout)
25414+
# print(self.tab0_top_layout)
25415+
# print(self.tab0_left_layout)
25416+
# print(self.tab1_top_layout)
25417+
# showInfo(str(_str(genv.html_content)))
25418+
# #self.webView1.setHtml(_str(genv.html_content), QUrl.fromLocalFile(BASEDIR))
25419+
#showInfo("oooooooooooo1111 2222 3333 oooooooooooooooo ddddd")
25420+
# self.tab5_top_layout.addWidget(self.webView1);
2536425421
self.tab0_top_layout.addLayout(self.tab0_left_layout)
25365-
25422+
#showInfo("oooo ooooooooooooo ooooooooooo ddddd")
2536625423
self.tab1_top_layout.addLayout(self.tab1_left_layout)
2536725424
self.tab1_top_layout.addLayout(self.tab1_middle_layout)
2536825425
self.tab1_top_layout.addLayout(self.tab1_right_layout)
25369-
25426+
#except Exception as e:
25427+
# showError(e)
25428+
# return
25429+
25430+
#showInfo("oooooooooooooooooooooooooooo ddddd")
2537025431
self.set_window_layout()
25371-
25432+
#showInfo("ddd mm m m m mm m m m m m m m dd")
2537225433
#return
2537325434
# Timer
2537425435
self.timer = QTimer(self)
2537525436
self.timer.timeout.connect(self.updateCountdown)
25376-
25437+
#showInfo("ddddd 444444444444447777777777777777 8888888888888")
2537725438
self.interval = 0
2537825439
self.currentTime = 0
2537925440

2538025441
def set_window_layout(self):
25381-
25382-
self.front_content_widget.setLayout(self.front_content_layout)
25383-
self.front_scroll_area .setWidget(self.front_content_widget)
25384-
25385-
splitter = QSplitter(Qt.Horizontal)
25386-
splitter.addWidget(self.front_scroll_area)
25387-
splitter.addWidget(genv.servers_scroll)
25388-
#
25389-
self.main_content_layout.addWidget(splitter)
25442+
#showInfo("ddddd -------- oooooo 11111")
25443+
try:
25444+
self.front_content_widget.setLayout(self.front_content_layout)
25445+
#showInfo("ddddd ------- uuuuuuuu 222222")
25446+
self.front_scroll_area .setWidget(self.front_content_widget)
25447+
#showInfo("ddddd000oooooo oo oo")
25448+
splitter = QSplitter(Qt.Horizontal)
25449+
splitter.addWidget(self.front_scroll_area)
25450+
splitter.addWidget(genv.servers_scroll)
25451+
#
25452+
self.main_content_layout.addWidget(splitter)
25453+
except Exception as e:
25454+
showError(e)
25455+
return
2539025456

2539125457
#self.main_content_layout.addWidget(self.front_scroll_area)
2539225458
#self.main_content_layout.addWidget(genv.servers_scroll)
@@ -25398,10 +25464,13 @@ def set_window_layout(self):
2539825464
self.main_layout.addWidget(self.title_bar)
2539925465
self.main_layout.addWidget(self.menu_bar)
2540025466
self.main_layout.addWidget(self.tool_bar)
25467+
#showInfo("aaaaaa")
2540125468
self.main_layout.addLayout(self.main_content_layout)
2540225469
self.main_layout.addWidget(self.status_bar)
25470+
#showInfo("nnnnnnnn")
2540325471

2540425472
self.setLayout(self.main_layout)
25473+
#showInfo("mmmmxxxxxx")
2540525474

2540625475
def radio_button_toggled(self):
2540725476
sender = self.sender()
@@ -28088,7 +28157,7 @@ def _build_algebra_tab(self) -> QWidget:
2808828157

2808928158
self.math_combo_list = [
2809028159
[ "Ausdruck", expr_row, self.math_calc_ausdruck],
28091-
[ "Binomialkoeffizient", cnk, self.math_calc_binc],
28160+
[ "Binomialkoeffizient", cnk, self.math_calc_binc],
2809228161

2809328162
[ "Größter gemeinsame Teiler / Kleinste gemeinsame vielfache", kgv, self.math_calc_kgv],
2809428163

@@ -28202,8 +28271,11 @@ def _build_algebra_tab(self) -> QWidget:
2820228271
layout.addWidget(steps_lbl)
2820328272
layout.addWidget(self.steps_algebra)
2820428273

28274+
#showInfo("1111")
2820528275
for item in self.math_combo_list:
2820628276
self.set_layout_visible(item[1], False)
28277+
28278+
#showInfo("22222")
2820728279
return w
2820828280

2820928281
def set_layout_visible(self, layout, visible: bool):
@@ -36067,6 +36139,7 @@ def main(argv=None) -> int:
3606736139
script_path, script_name = os.path.split(script)
3606836140
script_path = os.path.abspath(script_path)
3606936141

36142+
print("Hello from client")
3607036143
sys.exit(main())
3607136144
else:
3607236145
raise Exception(_str("no startup routine found."))

0 commit comments

Comments
 (0)