import json import random import base from base import log from PyQt6.QtCore import QObject, pyqtSlot from core.messenger.broadcast import Broadcast from core.registration.record import * class CallHandler(QObject): def __init__(self, sight): super().__init__() self.sight = sight @pyqtSlot(str) def console(self, msg): log.console(msg) """@pyqtSlot(str, result=str) def test2(self, t): print(t+"s") return t + "_return" """ @pyqtSlot(result=str) def getDefaultTemplate(self): return base.data["default_template"] @pyqtSlot(result=int) def frameSupported(self): return base.frameSupported() @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(int, int) def setSize(self, width, height): self.sight.resize(width, height); @pyqtSlot(int, int) def setPosition(self, x, y): self.sight.move(x, y) @pyqtSlot(result=str) def system(self): return base.data["platform"]["system"] @pyqtSlot(str, str, result=str) def create(self, id, page): new_id = base.sights.create(id, page) if new_id is not None: base.sights.show(new_id) """ The id will be added to its parent. When parent close will be its children closed as well """ self.sight.addChild(new_id) """ The child remember its parent. When the child is closed the parent will be know about that. """ base.sights.get(new_id).setParent(self.sight.getId()) 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): if base.data["active_sight"] != self.sight.getId(): log.byCode("CLA1000E", "Active Sight is " + 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) """@pyqtSlot(str, str, str) def message(self, label, sight_id_json, data): sight_list = json.loads(sight_id_json) if len(sight_list) == 0: for sight in base.sights.getSights().values(): sight.browser.page().runJavaScript("message('" + label + "', '"+data+"')", self.ready) else: for sight_id in sight_list: if base.sights.checkKey(sight_id): base.sights.get(sight_id).browser.page().runJavaScript("message('" + label + "', '"+data+"')", self.ready)""" @pyqtSlot(str, str) def register(self, type, referral_name): base.registrar.registry().register(type, referral_name) @pyqtSlot(str, str, str, str) def dataReceiver(self, h_type, h_referral_data, d_json_data, receiver_array=None): if receiver_array is None: receiver_array = [] if h_type == "message": r = Record(RecordHeader(h_type, h_referral_data, receiver_array), RecordData(d_json_data)) msg = Broadcast() msg.sendMessage(r) # base.sights.get("main").browser.page().runJavaScript("receiveData('" + type + "', '" + referral_data + "', '"+json_data+"')", self.ready) # print("RECEIVEEEE " + base.registrar.receiveData(type, referral_data, json_data)) def ready(self, returnValue): if returnValue is not None: print(returnValue)