Primitive display of olc fields, not working yet.

This commit is contained in:
Griatch 2017-05-17 22:45:41 +02:00
parent 88a44fc0cf
commit 60fcb471ec
2 changed files with 24 additions and 16 deletions

View file

@ -23,8 +23,8 @@ Stored so as to be possible to reproduce.
""" """
from collections import OrderedDict
from time import time from time import time
from collections import OrderedDict
from evennia.utils.evmenu import EvMenu from evennia.utils.evmenu import EvMenu
from evennia.commands.command import Command from evennia.commands.command import Command
@ -46,15 +46,11 @@ def _new_session():
Returns: Returns:
olcsession (dict): An empty OLCSession. olcsession (dict): An empty OLCSession.
Notes:
This is a customized dict which the Attribute system will
understand how to pickle and depickle since it provides
iteration.
""" """
return { return {
# header info # header info
"caller": None, # the current user of this session "caller": None, # the current user of this session
"modified": time.now(), # last time this olcsession was active "modified": time(),
"db_model": None, # currently unused, ObjectDB for now "db_model": None, # currently unused, ObjectDB for now
"prompt_template": _DEFAULT_PROMPT, # prompt display "prompt_template": _DEFAULT_PROMPT, # prompt display
"olcfields": OrderedDict(), # registered OLCFields. Order matters "olcfields": OrderedDict(), # registered OLCFields. Order matters
@ -84,7 +80,7 @@ def search_entity(osession, query):
query (str): This is a string, a #dbref or an extended search query (str): This is a string, a #dbref or an extended search
""" """
osession['db_model'].__class__. pass
@ -115,6 +111,18 @@ def display_field_value(osession, fieldname):
# Access function # Access function
from evennia.utils.olc import olc_pages
def display_obj(obj):
"""
Test of displaying object using fields and pages.
"""
olcsession = _new_session()
olcsession['caller'] = obj
page = olc_pages.OLCObjectPage(olcsession)
obj.msg(str(page))
def OLC(caller, target=None, startnode=None): def OLC(caller, target=None, startnode=None):
""" """
This function is a common entry-point into the OLC menu system. It is used This function is a common entry-point into the OLC menu system. It is used

View file

@ -56,12 +56,11 @@ class OLCField(object):
actions = ['edit', 'clear', 'help'] actions = ['edit', 'clear', 'help']
def __init__(self, olcsession): def __init__(self, olcsession):
self.olcsession = olcsession self._value_history = deque([self.default], _LEN_HISTORY)
self._value_history = deque([self.initial], _LEN_HISTORY)
self._history_pos = 0 self._history_pos = 0
self._has_changed = False self._has_changed = False
def __repr__(self): def __str__(self):
return to_str(self.display()) return to_str(self.display())
def __unicode__(self): def __unicode__(self):
@ -87,7 +86,7 @@ class OLCField(object):
return return
else: else:
newval = "<Not given>" newval = "<Not given>"
raise InvalidActionError('Edit {value}->{newval}'.format(value=self.value, newval)) raise InvalidActionError('Edit {value}->{newval}'.format(value=self.value, newval=newval))
def action_clear(self, *args): def action_clear(self, *args):
""" """
@ -136,7 +135,7 @@ class OLCField(object):
try: try:
value = self.validate(value) value = self.validate(value)
except Exception as err: except Exception as err:
errtext = _OLC_VALIDATION_ERROR.format(fieldname=self.key, value=original_value, error=err) errtxt = _OLC_VALIDATION_ERROR.format(fieldname=self.key, value=original_value, error=err)
raise ValidationError(errtxt) raise ValidationError(errtxt)
if (self._value_history and isinstance(value, (basestring, bool, int, float)) and if (self._value_history and isinstance(value, (basestring, bool, int, float)) and
self._value_history[0] == value): self._value_history[0] == value):
@ -150,7 +149,7 @@ class OLCField(object):
@value.deleter @value.deleter
def value(self): def value(self):
self.history_pos = 0 self.history_pos = 0
self._value_history.appendleft(self.initial) self._value_history.appendleft(self.default)
def history(self, step): def history(self, step):
""" """
@ -187,6 +186,7 @@ class OLCField(object):
Args: Args:
entity (any): An object to use for entity (any): An object to use for
populating this field (like an Object). populating this field (like an Object).
""" """
pass pass
@ -197,6 +197,7 @@ class OLCField(object):
Args: Args:
prototype (dict): The prototype dict prototype (dict): The prototype dict
to update with the value of this field. to update with the value of this field.
""" """
pass pass
@ -216,7 +217,7 @@ class OLCField(object):
validated and/or processed to store in this field. validated and/or processed to store in this field.
Raises: Raises:
Exception: If the field was given an ValidateException: If the field was given an
invalid value to validate. invalid value to validate.
""" """
@ -232,8 +233,7 @@ class OLCField(object):
# OLCFields for all the standard model properties # OLCFields for all the standard model properties
# key, location, destination, home, aliases, # key, location, destination, home, aliases,
# permissions, tags, attributes # permissions, tags, attributes ...
# ...
class OLCKeyField(OLCField): class OLCKeyField(OLCField):