From 963e98e9ed3f7cafe4101259278c7ddffc05071b Mon Sep 17 00:00:00 2001 From: Suzanne Soy Date: Sat, 6 Mar 2021 02:06:02 +0000 Subject: [PATCH] Silly splash screen stunt --- Init.py | 9 +++++ InitGui.py | 3 ++ StealSplash.py | 86 ++++++++++++++++++++++++++++++++++++++++++++ XternalAppsDummy.py | 1 + splash.png | Bin 0 -> 29968 bytes 5 files changed, 99 insertions(+) create mode 100644 StealSplash.py create mode 100644 XternalAppsDummy.py create mode 100644 splash.png diff --git a/Init.py b/Init.py index e69de29..8bca467 100644 --- a/Init.py +++ b/Init.py @@ -0,0 +1,9 @@ +import os +import FreeCAD +import XternalAppsDummy +# The __file__ special variable isn't available in the Init.py file, so we load a dummy module located in the same directory to get its path. +FreeCAD.ConfigSet('SplashScreen', os.path.join(os.path.dirname(XternalAppsDummy.__file__),'splash.png')) + +# See https://github.com/FreeCAD/FreeCAD/blob/eb6167ff89bc2b287c83d726dfcd52b775d1757e/src/Gui/MainWindow.cpp#L1512 +# for all the ways to set a splashscreen and their precedence order. I couldn't make the ~/.FreeCAD/splash_image.png work + diff --git a/InitGui.py b/InitGui.py index 6d70a94..a6af411 100644 --- a/InitGui.py +++ b/InitGui.py @@ -2,6 +2,9 @@ import sys import ExternalAppsList +import StealSplash +StealSplash.steal() + myIcon = """ /* XPM */ static char * icon_xpm[] = { diff --git a/StealSplash.py b/StealSplash.py new file mode 100644 index 0000000..54c2b51 --- /dev/null +++ b/StealSplash.py @@ -0,0 +1,86 @@ +class Foo(): + def __del__(self): + def catchSplash(): + import PySide + from PySide import QtGui, QtCore + import pprint + print(QtGui.QApplication.topLevelWidgets()) + sps = [w for w in QtGui.QApplication.topLevelWidgets() if 'PySide2.QtWidgets.QWidget' in str(w)] + if len(sps) == 1: + sps[0].hide() + print("toplevel=") + pprint.pprint(QtGui.QApplication.topLevelWidgets()) + print("children=") + pprint.pprint([x.children() for x in sps]) + + print("del") + catchSplash() + + import PySide + from PySide import QtGui, QtCore + tm = QtCore.QTimer() + tm.timeout.connect(lambda: print(catchSplash)) + tm.start(100) + + #import FreeCAD + #setattr(FreeCAD, "stealsplash", tm) + +#foo = Foo() +print("IN stealsplash") + +Splash = None + +def isDeleted(obj): + try: + str(obj) + return False + except: + return True + +def steal(): + def checkSplashStillHere(official, splash, tm): + print("check") + if isDeleted(official): + print("delete extra splash") + tm.stop() + splash.hide() + # TODO: properly de-allocate on the FreeCAD object + Splash = None + def catchSplash(): + global Splash + import PySide + from PySide import QtGui, QtCore + import pprint + print(QtGui.QApplication.topLevelWidgets()) + sps = [w for w in QtGui.QApplication.topLevelWidgets() if 'PySide2.QtWidgets.QWidget' in str(w)] + if len(sps) == 1: + # This does not work + try: + QtGui.QSplashScreen.setPixmap(sps[0], '/tmp/splash.png') + except: + pass + # this works, it's then possible to replace with a new splash but the progress text won't be displayed on the new splash + # the official splash screen also doesn't have any children, so it's not possible to get the text from there + # I could steal the info from the log, but unless FreeCAD was started with -l, I don't know how to access that log in Python. + #sps[0].hide() + + # Solution: put a transparent background on this splash, make a new one and raise this one above. + + splash = QtGui.QSplashScreen('/tmp/splash.png') + splash.show() + sps[0].raise_() + + tm = QtCore.QTimer() + tm.timeout.connect(lambda *, official=sps[0], splash=splash, tm=tm: checkSplashStillHere(official, splash, tm)) + tm.start(100) + + import FreeCAD + setattr(FreeCAD, "Splash", (sps[0], splash, tm)) + + #print("toplevel=") + #pprint.pprint(QtGui.QApplication.topLevelWidgets()) + #print("children=") + #pprint.pprint([x.children() for x in sps]) + + print("del") + catchSplash() diff --git a/XternalAppsDummy.py b/XternalAppsDummy.py new file mode 100644 index 0000000..6da1091 --- /dev/null +++ b/XternalAppsDummy.py @@ -0,0 +1 @@ +"""Dummy module to extract a path to the current directory with os.path.dirname(XternalAppsDummy.__file__)""" diff --git a/splash.png b/splash.png new file mode 100644 index 0000000000000000000000000000000000000000..a9b64a3cd7a9c51d2f82c1f54fbbd1ddbe3b8fac GIT binary patch literal 29968 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