From 6adf3653bbd129cc15f7602719c5c6882ea016a4 Mon Sep 17 00:00:00 2001 From: Fierelier Date: Mon, 10 Jan 2022 03:55:28 +0100 Subject: [PATCH] Applet implementation + oxiver --- config/applet.py | 10 ++++++ config/appletCollection.py | 11 +++++++ config/autorun.txt | 6 +++- config/oxiver.py | 14 +++++++++ config/oxiver.qt.py | 45 ++++++++++++++++++++++++++ config/qt.py | 63 +++++++++++++++++++++++++++++++++++++ config/splash.bmp | Bin 0 -> 129306 bytes main.py | 55 ++++++++++++++++++++------------ oxiDE.py | 2 +- 9 files changed, 184 insertions(+), 22 deletions(-) create mode 100644 config/applet.py create mode 100644 config/appletCollection.py create mode 100644 config/oxiver.py create mode 100644 config/oxiver.qt.py create mode 100644 config/qt.py create mode 100644 config/splash.bmp diff --git a/config/applet.py b/config/applet.py new file mode 100644 index 0000000..f302b55 --- /dev/null +++ b/config/applet.py @@ -0,0 +1,10 @@ +global oxiAppletLock +oxiAppletLock = threading.Lock() + +global oxiApplets +oxiApplets = [] + +global oxiApplet +class oxiApplet(object): + def __init__(self): + pass \ No newline at end of file diff --git a/config/appletCollection.py b/config/appletCollection.py new file mode 100644 index 0000000..8087336 --- /dev/null +++ b/config/appletCollection.py @@ -0,0 +1,11 @@ +global oxiAppletCollectionLock +oxiAppletCollectionLock = threading.Lock() + +global oxiAppletCollection +oxiAppletCollection = {} + +global oxiAppletCollectionRun +def oxiAppletCollectionRun(appletName): + with oxiAppletCollectionLock: + appletDefinition = oxiAppletCollection[appletName].copy() + appletDefinition[0](*appletDefinition[1],**appletDefinition[2]) \ No newline at end of file diff --git a/config/autorun.txt b/config/autorun.txt index 3c82b8a..d31e8d0 100644 --- a/config/autorun.txt +++ b/config/autorun.txt @@ -1 +1,5 @@ -helloworld.py # show a hello world message in terminal, as the simplest check \ No newline at end of file +helloworld.py # show a hello world message in terminal, as the simplest check +applet.py +appletCollection.py +qt.py +oxiver.py \ No newline at end of file diff --git a/config/oxiver.py b/config/oxiver.py new file mode 100644 index 0000000..c332977 --- /dev/null +++ b/config/oxiver.py @@ -0,0 +1,14 @@ +global platform +import platform +global QMainWindow +from qtpy.QtWidgets import QMainWindow +global QPixmap +from qtpy.QtGui import QPixmap +global QLabel +from qtpy.QtWidgets import QLabel +global QPushButton +from qtpy.QtWidgets import QPushButton +with oxiAppletCollectionLock: + oxiAppletCollection["oxiver"] = [oxiQtQueue.put,[[oxiRunScript,[oxiGetConfig("oxiver.qt.py")],{}]],{}] + +#oxiAppletCollectionRun("oxiver") \ No newline at end of file diff --git a/config/oxiver.qt.py b/config/oxiver.qt.py new file mode 100644 index 0000000..2bc053e --- /dev/null +++ b/config/oxiver.qt.py @@ -0,0 +1,45 @@ +class splashWindow(QMainWindow): + def __init__(self,applet,*args,**kwargs): + super().__init__(*args,**kwargs) + + with oxiAppletLock: + self.applet = applet + oxiApplets.append(self.applet) + self.applet.windows = [self] + + self.cTitle = "About " +oxiDistro + self.setWindowTitle(self.cTitle) + + self.cWidth = 414 + self.cHeight = 304 + self.resize(self.cWidth,self.cHeight) + + self.cCreateElements() + + def cCreateElements(self): + self.cImageLabel = QLabel(self) + self.cImageLabel.setPixmap(QPixmap(oxiGetConfig("splash.bmp"))) + self.cImageLabel.move(0,0) + self.cImageLabel.resize(414,78) + self.cText = QLabel(self) + + applets = 0 + with oxiAppletLock: applets = len(oxiApplets) + + self.cText.setText(oxiDistro + "\n" + "Version 0.0 (Build 0000)" + "\nLicensed under MIT, Copyright (C) 2022\n\n\noxi-applets running: " +str(applets)+ "\nOS: " +platform.system()+ " " +platform.release()+ "\nQt: " +str(QtCore.qVersion())) + self.cText.move(105,78 + 15) + self.cText.resize(414 - 105,304 - (78 + 15) - 31 - 15) + self.cText.setAlignment(QtCore.Qt.AlignLeft) + + self.cQuitButton = QPushButton("OK",self) + self.cQuitButton.clicked.connect(self.close) + self.cQuitButton.move(414 - 83,304 - 31) + self.cQuitButton.resize(75,23) + self.show() + + def closeEvent(self,event): + with oxiAppletLock: + oxiApplets.remove(self.applet) + +applet = oxiApplet() +splashWindow(applet) \ No newline at end of file diff --git a/config/qt.py b/config/qt.py new file mode 100644 index 0000000..22cd90f --- /dev/null +++ b/config/qt.py @@ -0,0 +1,63 @@ +def main(): + global threading + import threading + global queue + import queue + global qtpy + import qtpy + + global QApplication + from qtpy.QtWidgets import QApplication + global QtCore + import qtpy.QtCore as QtCore + global QThread + from qtpy.QtCore import QThread + global QObject + from qtpy.QtCore import QObject + + global oxiQtQueue + oxiQtQueue = queue.Queue() + + class qtThread(QThread): + #qt5: + cmd = QtCore.Signal(list) + + def __init__(self,*args,**kwargs): + super().__init__(*args,**kwargs) + + def run(self): + while True: + cmd = oxiQtQueue.get() + #qt4: + #self.emit(QtCore.SIGNAL("cmd"),cmd) + + #qt5: + self.cmd.emit(cmd) + + class qtApp(QApplication): + def __init__(self,readyQueue,*args,**kwargs): + super().__init__(*args,**kwargs) + self.queueThread = qtThread() + #qt4: + #self.queueThread.connect(self.queueThread,QtCore.SIGNAL("cmd"),self.queueCallback) + + #qt5: + self.queueThread.cmd.connect(self.queueCallback) + + self.queueThread.start() + readyQueue.put(True) + + def queueCallback(self,cmd): + cmd[0](*cmd[1],**cmd[2]) + + def close(self): + self.quit() + + readyQueue = queue.Queue() + global oxiQtApp + oxiQtApp = qtApp(readyQueue,sys.argv) + global oxiMainThreadQueue + oxiMainThreadQueue.put([oxiQtApp.exec_,[],{}]) + readyQueue.get() + print("Qt app running") +main() \ No newline at end of file diff --git a/config/splash.bmp b/config/splash.bmp new file mode 100644 index 0000000000000000000000000000000000000000..56991f5c1ac31fe4e1617ef34329a843ca04247e GIT binary patch literal 129306 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