mirror of git://git.psyced.org/git/pypsyc
200 lines
6.9 KiB
Python
200 lines
6.9 KiB
Python
from pypsyc.PSYC import parsetext
|
|
|
|
from pypsyc.MMP.MMPState import MMPState
|
|
from pypsyc.PSYC.PSYCState import PSYCState
|
|
|
|
class PSYCPackage:
|
|
"""see bitkoenig's java interface specification"""
|
|
def __init__(self):
|
|
self.packagename = "Abstract psycPackage interface"
|
|
self.methods = []
|
|
|
|
self.center = None
|
|
self.psyc = PSYCState()
|
|
self.mmp = MMPState()
|
|
|
|
def registerCenter(self, center):
|
|
self.center = center
|
|
|
|
def getMethods(self):
|
|
return self.methods
|
|
|
|
def received(self, source, mc, mmp, psyc):
|
|
print "<<<", source, "[", self.packagename, "]"
|
|
print "mmp:", mmp.packetstate
|
|
print "psyc:", psyc.packetstate
|
|
print "mc:", mc
|
|
print "text:", parsetext(mmp, psyc)
|
|
print "----"
|
|
|
|
def set_mc(self, mc): self.psyc.set_mc(mc)
|
|
def set_target(self, target): self.mmp._assign("_target", target)
|
|
|
|
def set_text(self, text):
|
|
self.psyc.reset_text()
|
|
self.psyc.append_text(text)
|
|
|
|
def set_psycvar(self, var, value):
|
|
self.psyc._assign(var, value)
|
|
|
|
def send(self):
|
|
self.center.send(self.mmp, self.psyc)
|
|
self.mmp.reset_state()
|
|
self.psyc.reset_state()
|
|
|
|
def castmsg(self):
|
|
self.center.castmsg(self.mmp, self.psyc)
|
|
self.mmp.reset_state()
|
|
self.psyc.reset_state()
|
|
|
|
|
|
class Devel(PSYCPackage):
|
|
def __init__(self, view):
|
|
PSYCPackage.__init__(self)
|
|
self.packagename = "Debug package... dump out stuff"
|
|
self.methods = ["devel"] # all unhandled methods
|
|
self.view = view
|
|
|
|
def received(self, source, mc, mmp, psyc):
|
|
print >> self.view, "devel handler:"
|
|
print >> self.view, "source=>", source
|
|
print >> self.view, "target=>", mmp.get_target()
|
|
print >> self.view, "mmp =>", mmp.get_state()
|
|
print >> self.view, "psyc =>", psyc.get_state()
|
|
print >> self.view, "mc =>", mc
|
|
print >> self.view, "text =>", parsetext(mmp, psyc)
|
|
print >> self.view, "----\n"
|
|
|
|
|
|
class Conferencing(PSYCPackage):
|
|
# model for rooms. has to know its controller and view
|
|
# the view is an instance of RoomGui (singleton in case of Qt GUI)
|
|
def __init__(self, view):
|
|
PSYCPackage.__init__(self)
|
|
self.packagename = "package for rooms"
|
|
self.view = view
|
|
self.model = self
|
|
self.view.set_model(self.model)
|
|
self.controller = self
|
|
|
|
self.context = ''
|
|
|
|
# ideal hier waere es wenn man auf _notice_place_enter* registern
|
|
# koennte, oder?
|
|
self.methods = ["_notice_place*",
|
|
"_notice_person_present_netburp",
|
|
"_notice_person_absent_netburp",
|
|
"_message*",
|
|
"_status_place*",
|
|
"_status_person_present_netburp",
|
|
"_print_status_place*"]
|
|
|
|
def get_context(self): return self.context
|
|
def set_context(self, context): self.context = context
|
|
|
|
def received(self, source, mc, mmp, psyc):
|
|
#if mc.startswith("_message_public"):
|
|
# self.view.received(source, mc, mmp, psyc)
|
|
#elif mc == "_status_place_topic":
|
|
# self.view.received(source, mc, mmp, psyc)
|
|
#elif mc.startswith("_notice_place_enter"):
|
|
# self.view.received(source, mc, mmp, psyc)
|
|
#elif mc.startswith("_notice_place_leave"):
|
|
# self.view.received(source, mc, mmp, psyc)
|
|
#elif mc == "_print_status_place_members":
|
|
# print parsetext(mmp, psyc)
|
|
#else:
|
|
# PSYCPackage.received(self, source, mc, mmp, psyc)
|
|
self.view.received(source, mc, mmp, psyc)
|
|
PSYCPackage.received(self, source, mc, mmp, psyc)
|
|
|
|
class Friends(PSYCPackage):
|
|
def __init__(self, view):
|
|
PSYCPackage.__init__(self)
|
|
self.packagename = "package for friends"
|
|
self.view = view
|
|
self.model = self
|
|
self.view.set_model(self.model)
|
|
self.controller = self
|
|
self.methods = ["_notice_friend_present",
|
|
"_notice_friend_absent",
|
|
"_list_friends_present", # create this!
|
|
# "_print_notice_friend_present", # _print family should be obsolete now
|
|
# "_print_notice_friend_absent", # _print family should be obsolete now
|
|
"_print_list_friends_present", # obsolete this!
|
|
"_notice_link",
|
|
"_notice_unlink",
|
|
"_status_linked"] # added by tim]
|
|
|
|
def received(self, source, mc, mmp, psyc):
|
|
self.view.received(source, mc, mmp, psyc)
|
|
PSYCPackage.received(self, source, mc, mmp, psyc)
|
|
|
|
|
|
class User(PSYCPackage):
|
|
def __init__(self, view):
|
|
PSYCPackage.__init__(self)
|
|
self.packagename = "package for user dialogues"
|
|
self.view = view
|
|
self.model = self
|
|
|
|
self.view.set_model(self.model)
|
|
|
|
self.controller = self
|
|
|
|
self.methods = ["_internal_message_private_window_popup",
|
|
"_message*",
|
|
"_notice_query*"]
|
|
|
|
|
|
def received(self, source, mc, mmp, psyc):
|
|
self.view.received(source, mc, mmp, psyc)
|
|
PSYCPackage.received(self, source, mc, mmp, psyc)
|
|
|
|
class Peer(User):
|
|
# is das ueberhaupt sinnvoll _hier_?
|
|
def __init__(self, view):
|
|
User.__init__(self, view)
|
|
self.packagename = "package for p2p dialogues"
|
|
|
|
|
|
from pypsyc.MMP.MMPState import MMPState
|
|
from pypsyc.PSYC.PSYCState import PSYCState
|
|
class Authentication(PSYCPackage):
|
|
# das hier sollte noch das setzen von _identification regeln oder?
|
|
def __init__(self, config):
|
|
PSYCPackage.__init__(self)
|
|
self.config = config
|
|
self.methods = ["_query_password",
|
|
"_notice_circuit_established",
|
|
"_error_illegal_name",
|
|
"_error_illegal_password",
|
|
"_error_invalid_password"]
|
|
|
|
def auth(self):
|
|
psyc = PSYCState()
|
|
mmp = MMPState()
|
|
if self.center:
|
|
# das hier ist sicher weils nur an die eigene uni geht
|
|
mmp.set_state(":_target\t" + self.config.get("main", "uni"))
|
|
psyc.set_state(":_password\t" + self.config.get("main",
|
|
"password"))
|
|
psyc.set_mc("_set_password")
|
|
|
|
self.center.send(mmp, psyc)
|
|
|
|
def register(self):
|
|
psyc = PSYCState()
|
|
mmp = MMPState()
|
|
if self.center:
|
|
mmp.set_state(":_target\t" + self.config.get("main", "uni"))
|
|
psyc.set_mc("_request_link")
|
|
self.center.send(mmp, psyc)
|
|
|
|
def received(self, source, mc, mmp, psyc):
|
|
if mc == "_query_password":
|
|
self.auth()
|
|
elif mc == "_notice_circuit_established":
|
|
self.register()
|
|
else: PSYCPackage.received(self, source, mc, mmp, psyc)
|