Merge remote-tracking branch 'origin/main'
commit
6bb1efc432
47
base.py.bak
47
base.py.bak
|
|
@ -1,47 +0,0 @@
|
||||||
import sys
|
|
||||||
import os
|
|
||||||
import configparser
|
|
||||||
from mouseevents import MouseEvents
|
|
||||||
from pynput import mouse
|
|
||||||
from sightfactory import SightFactory
|
|
||||||
from PyQt6.QtWidgets import QApplication
|
|
||||||
from pynput.mouse import Controller
|
|
||||||
|
|
||||||
def init():
|
|
||||||
global data, sights, mousectrl, app
|
|
||||||
#init the basic values
|
|
||||||
app = QApplication(sys.argv)
|
|
||||||
mousectrl = Controller()
|
|
||||||
sights = SightFactory()
|
|
||||||
data = {}
|
|
||||||
data["move"] = False
|
|
||||||
data["active_sight"] = "main"
|
|
||||||
data["sight_processes"] = {}
|
|
||||||
data["mouse_distance_x"] = 0
|
|
||||||
data["mouse_distance_y"] = 0
|
|
||||||
data["base_dir"]=os.path.abspath(os.getcwd())+os.path.sep
|
|
||||||
data["template_dir"]=data["base_dir"]+"place"+os.path.sep+"templates"+os.path.sep
|
|
||||||
#LOAD the template config content
|
|
||||||
loadConfigTemplate()
|
|
||||||
#Events
|
|
||||||
mouseevent = MouseEvents()
|
|
||||||
start()
|
|
||||||
|
|
||||||
def loadConfigTemplate():
|
|
||||||
config = configparser.ConfigParser()
|
|
||||||
config.sections()
|
|
||||||
config.read(data["template_dir"]+"config.ini")
|
|
||||||
if "DEFAULT" in config:
|
|
||||||
data["default_template"] = config["DEFAULT"]["default_template"]
|
|
||||||
data["default_template_dir"] = data["template_dir"]+data["default_template"]+os.path.sep
|
|
||||||
print("Template config is loaded!")
|
|
||||||
else:
|
|
||||||
print("Missing 'DEFAULT' data from the templates config.ini folder. It can't start!")
|
|
||||||
|
|
||||||
def start():
|
|
||||||
# Creating the main Sight
|
|
||||||
sights.create("main","main");
|
|
||||||
sights.processes();
|
|
||||||
sights.show("main");
|
|
||||||
|
|
||||||
app.exec()
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
import base
|
|
||||||
|
|
||||||
from PyQt6.QtWebChannel import QWebChannel
|
|
||||||
from PyQt6.QtWebEngineWidgets import QWebEngineView
|
|
||||||
from PyQt6.QtCore import QUrl
|
|
||||||
|
|
||||||
class Browser(QWebEngineView):
|
|
||||||
def __init__(self):
|
|
||||||
super().__init__()
|
|
||||||
self.channel = QWebChannel()
|
|
||||||
|
|
||||||
def addObject(self, id, call_handler):
|
|
||||||
self.handler = call_handler
|
|
||||||
self.channel.registerObject(id, self.handler)
|
|
||||||
self.page().setWebChannel(self.channel)
|
|
||||||
|
|
||||||
def loadContent(self, type):
|
|
||||||
print(base.data["default_template_dir"]+type+".html"))
|
|
||||||
self.load(QUrl.fromLocalFile(base.data["default_template_dir"]+type+".html"))
|
|
||||||
|
|
@ -1,100 +0,0 @@
|
||||||
import base
|
|
||||||
import random
|
|
||||||
from PyQt6.QtCore import QObject, pyqtSlot
|
|
||||||
|
|
||||||
class CallHandler(QObject):
|
|
||||||
def __init__(self, sight):
|
|
||||||
super().__init__()
|
|
||||||
self.sight = sight
|
|
||||||
|
|
||||||
@pyqtSlot(str)
|
|
||||||
def test(self, t):
|
|
||||||
print(t)
|
|
||||||
|
|
||||||
@pyqtSlot(str, result=str)
|
|
||||||
def test2(self, t):
|
|
||||||
print(t)
|
|
||||||
return t+"_return"
|
|
||||||
|
|
||||||
@pyqtSlot(result=str)
|
|
||||||
def getDefaultTemplate(self):
|
|
||||||
return base.data["default_template"]
|
|
||||||
|
|
||||||
@pyqtSlot(int)
|
|
||||||
def setWidth(self, width):
|
|
||||||
self.sight.resize(width, self.sight.height());
|
|
||||||
|
|
||||||
@pyqtSlot(int)
|
|
||||||
def setHeight(self, height):
|
|
||||||
self.sight.resize(self.sight.width(), height);
|
|
||||||
|
|
||||||
@pyqtSlot(str, str, result = str)
|
|
||||||
def create(self, id, type):
|
|
||||||
new_id = base.sights.create(id, type)
|
|
||||||
base.sights.show(new_id)
|
|
||||||
return new_id;
|
|
||||||
|
|
||||||
@pyqtSlot(str, str, bool)
|
|
||||||
def addData(self, key, value, is_global = False):
|
|
||||||
if is_global:
|
|
||||||
base.sights.addGlobalData(key,value)
|
|
||||||
else:
|
|
||||||
self.sight.addData(key,value)
|
|
||||||
|
|
||||||
@pyqtSlot(str, bool, result=str)
|
|
||||||
def getData(self, key, is_global = False):
|
|
||||||
if is_global:
|
|
||||||
return base.sights.getGlobalData(key)
|
|
||||||
return self.sight.getData(key)
|
|
||||||
|
|
||||||
@pyqtSlot()
|
|
||||||
def activeSight(self):
|
|
||||||
print("active")
|
|
||||||
if base.data["active_sight"] != self.sight.getId():
|
|
||||||
print(self.sight.getId())
|
|
||||||
base.data["active_sight"] = self.sight.getId()
|
|
||||||
|
|
||||||
@pyqtSlot()
|
|
||||||
def close(self):
|
|
||||||
base.sights.close(self.sight.getId())
|
|
||||||
|
|
||||||
@pyqtSlot()
|
|
||||||
def setMaximized(self):
|
|
||||||
self.sight.showMaximized()
|
|
||||||
self.sight.setLayoutContentMargins(0,0,0,0) #because there will be a transparented line as a border
|
|
||||||
|
|
||||||
@pyqtSlot()
|
|
||||||
def setMinimize(self):
|
|
||||||
self.sight.showMinimized()
|
|
||||||
|
|
||||||
@pyqtSlot()
|
|
||||||
def restoreDown(self):
|
|
||||||
self.sight.showNormal()
|
|
||||||
self.sight.setLayoutContentMargins(1,1,1,1) #because if it is no border then I get setgeometry warning what can't be set
|
|
||||||
|
|
||||||
@pyqtSlot()
|
|
||||||
def setFullscreen(self):
|
|
||||||
self.sight.showFullScreen()
|
|
||||||
|
|
||||||
"""@pyqtSlot(result=str)
|
|
||||||
def getTitle(self):
|
|
||||||
return self.sight.getTitle();
|
|
||||||
"""
|
|
||||||
@pyqtSlot()
|
|
||||||
def move(self):
|
|
||||||
base.data["move"] = True
|
|
||||||
|
|
||||||
|
|
||||||
@pyqtSlot()
|
|
||||||
def endmove(self):
|
|
||||||
base.data["move"] = False
|
|
||||||
|
|
||||||
@pyqtSlot()
|
|
||||||
def resize(self):
|
|
||||||
new_height = base.mousectrl.position[1]-self.sight.pos().y()
|
|
||||||
new_width = base.mousectrl.position[0]-self.sight.pos().x()
|
|
||||||
if(new_height<250):
|
|
||||||
new_height = 250
|
|
||||||
if(new_width<250):
|
|
||||||
new_width = 250
|
|
||||||
self.sight.resize( new_width, new_height)
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
import base
|
|
||||||
base.init()
|
|
||||||
"""
|
|
||||||
base.sights.create("main");
|
|
||||||
base.sights.processes();
|
|
||||||
base.sights.show("main");
|
|
||||||
|
|
||||||
base.app.exec()
|
|
||||||
"""
|
|
||||||
|
|
@ -1,39 +0,0 @@
|
||||||
import base
|
|
||||||
from pynput import mouse
|
|
||||||
|
|
||||||
class MouseEvents():
|
|
||||||
def __init__(self):
|
|
||||||
listener = mouse.Listener(
|
|
||||||
on_move=on_move,
|
|
||||||
on_click=on_click,
|
|
||||||
on_scroll=on_scroll)
|
|
||||||
listener.start()
|
|
||||||
|
|
||||||
# MOUSE EVENTS/LISTENER
|
|
||||||
def on_move(x, y):
|
|
||||||
if base.data["move"]:
|
|
||||||
if base.data["mouse_distance_x"] == 0:
|
|
||||||
base.data["mouse_distance_x"] = base.sights.get(base.data["active_sight"]).pos().x()-x
|
|
||||||
if base.data["mouse_distance_y"] == 0:
|
|
||||||
base.data["mouse_distance_y"] = base.sights.get(base.data["active_sight"]).pos().y()-y
|
|
||||||
try:
|
|
||||||
x_point = x+base.data["mouse_distance_x"]
|
|
||||||
y_point = y+base.data["mouse_distance_y"]
|
|
||||||
#print( str(x_point) + " x " + str(y_point))
|
|
||||||
base.sights.get(base.data["active_sight"]).move(x_point, y_point)
|
|
||||||
except:
|
|
||||||
print("e")
|
|
||||||
|
|
||||||
def on_click(x, y, button, pressed):
|
|
||||||
if pressed:
|
|
||||||
print("pressed on " +base.data["active_sight"])
|
|
||||||
else:
|
|
||||||
print("released")
|
|
||||||
base.data["mouse_distance_x"] = 0
|
|
||||||
base.data["mouse_distance_y"] = 0
|
|
||||||
base.data["move"] = False
|
|
||||||
|
|
||||||
def on_scroll(x, y, dx, dy):
|
|
||||||
print('Scrolled {0} at {1}'.format(
|
|
||||||
'down' if dy < 0 else 'up',
|
|
||||||
(x, y)))
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
|
|
||||||
def init():
|
|
||||||
global data
|
|
||||||
data = []
|
|
||||||
47
sight.py.bak
47
sight.py.bak
|
|
@ -1,47 +0,0 @@
|
||||||
import base
|
|
||||||
from callhandler import CallHandler
|
|
||||||
from browser import Browser
|
|
||||||
from PyQt6.QtCore import Qt
|
|
||||||
from PyQt6.QtWidgets import QMainWindow, QWidget, QVBoxLayout
|
|
||||||
|
|
||||||
class Sight(QWidget):
|
|
||||||
def __init__(self, id, type):
|
|
||||||
super().__init__()
|
|
||||||
|
|
||||||
self.id = id
|
|
||||||
self.type = type
|
|
||||||
self.data = {} # private data of the sight
|
|
||||||
|
|
||||||
base.data["active_sight"] = self.id
|
|
||||||
self.title = id
|
|
||||||
|
|
||||||
self.setWindowFlags(Qt.WindowType(0x00000800)) # remove the os windows frame (borders, close and other buttons
|
|
||||||
self.setAttribute(Qt.WidgetAttribute(0x78)) # (int: 120)) # Make Transparent
|
|
||||||
|
|
||||||
self.browser = Browser()
|
|
||||||
self.browser.addObject('handler', CallHandler(self) )
|
|
||||||
self.browser.loadContent(type)
|
|
||||||
|
|
||||||
self.layout = QVBoxLayout()
|
|
||||||
self.layout.addWidget(self.browser)
|
|
||||||
self.layout.setSpacing(0);
|
|
||||||
self.layout.setContentsMargins(1, 1, 1, 1); #Need 1,1,1,1 if it is 0,0,0,0 I got setgeometry warnings
|
|
||||||
|
|
||||||
self.setLayout(self.layout)
|
|
||||||
|
|
||||||
def setLayoutContentMargins(self,a,b,c,d):
|
|
||||||
self.layout.setContentsMargins(a, b, c, d)
|
|
||||||
|
|
||||||
def setTitle(self, title):
|
|
||||||
self.title = title
|
|
||||||
def getTitle(self):
|
|
||||||
return self.title
|
|
||||||
def getId(self):
|
|
||||||
return self.id
|
|
||||||
def addData(self, key, value):
|
|
||||||
self.data[key] = value
|
|
||||||
def getData(self, key):
|
|
||||||
if key in self.data:
|
|
||||||
return self.data[key]
|
|
||||||
return None
|
|
||||||
|
|
||||||
|
|
@ -1,79 +0,0 @@
|
||||||
import base
|
|
||||||
import random
|
|
||||||
from sight import Sight
|
|
||||||
|
|
||||||
class SightFactory():
|
|
||||||
def __init__(self):
|
|
||||||
self.list = {}
|
|
||||||
self.data = {} #Global data(s) for the sight(s)
|
|
||||||
|
|
||||||
def create(self, id, type):
|
|
||||||
print("----- "+type+"-"+str(id)+"-------")
|
|
||||||
|
|
||||||
if str(id) == "main" and self.checkKey(id):
|
|
||||||
print("The 'main' window already exist! You can't create more than one 'main' type window!")
|
|
||||||
return None
|
|
||||||
|
|
||||||
if base.data["sight_mode"] == "single":
|
|
||||||
if len(id) == 0:
|
|
||||||
print("No ID was given! In single mode need declare an ID to the Sight in advance!")
|
|
||||||
return None
|
|
||||||
if self.checkKey(id):
|
|
||||||
print("This ['"+type+"'-'"+str(id)+"'] already exist!")
|
|
||||||
return None
|
|
||||||
if base.data["sight_mode"] == "multiple":
|
|
||||||
if len(id) == 0:
|
|
||||||
id = self.createUniqueId()
|
|
||||||
if len(id) > 0 and self.checkKey(id) and str(id) != "main":
|
|
||||||
id = self.createUniqueId()
|
|
||||||
|
|
||||||
self.list[id] = Sight(id,type)
|
|
||||||
print("The ['"+type+"'-'"+str(id)+"'] is created now!")
|
|
||||||
return id
|
|
||||||
|
|
||||||
def show(self, id):
|
|
||||||
if self.checkKey(id):
|
|
||||||
self.list[id].show()
|
|
||||||
print("The '"+str(id)+"' sight is showed!")
|
|
||||||
return True
|
|
||||||
print("This '"+str(id)+"' id isn't exist to show!")
|
|
||||||
return False
|
|
||||||
|
|
||||||
def get(self, id):
|
|
||||||
if self.checkKey(id):
|
|
||||||
return self.list[id]
|
|
||||||
print("This '"+str(id)+"' id isn't exist to get!")
|
|
||||||
|
|
||||||
def close(self, id):
|
|
||||||
if self.checkKey(id):
|
|
||||||
if id == "main":
|
|
||||||
print("Program Exit!")
|
|
||||||
base.app.exit(0)
|
|
||||||
self.list[id].close()
|
|
||||||
self.list[id].destroy()
|
|
||||||
del self.list[id]
|
|
||||||
print("The '"+str(id)+"' is closed now!")
|
|
||||||
return True
|
|
||||||
else:
|
|
||||||
print("The '"+str(id)+"' isn't exist'")
|
|
||||||
return False
|
|
||||||
|
|
||||||
def processes(self):
|
|
||||||
print(self.list)
|
|
||||||
|
|
||||||
def checkKey(self, id):
|
|
||||||
if id in self.list:
|
|
||||||
return True
|
|
||||||
return False
|
|
||||||
def addGlobalData(self, key, value):
|
|
||||||
self.data[key] = value
|
|
||||||
def getGlobalData(self, key):
|
|
||||||
if key in self.data:
|
|
||||||
return self.data[key]
|
|
||||||
return None
|
|
||||||
|
|
||||||
def createUniqueId(self):
|
|
||||||
new_id = str(random.randint(1000, 9999))
|
|
||||||
if self.checkKey(new_id):
|
|
||||||
self.createUniqueId()
|
|
||||||
return new_id
|
|
||||||
Loading…
Reference in New Issue