sightplace-rep/callhandler.py

160 lines
5.0 KiB
Python
Raw Normal View History

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)