sightplace-rep/callhandler.py

160 lines
5.0 KiB
Python

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)