neels has uploaded this change for review. (
https://gerrit.osmocom.org/c/pysim/+/40202?usp=email )
Change subject: personalization: add get_typical_input_len() to ConfigurableParameter
......................................................................
personalization: add get_typical_input_len() to ConfigurableParameter
The aim is to tell a user interface how wide an input text field should
be chosen to be convenient -- ideally showing the entire value in all
cases, but not too huge for fields that have no sane size limit.
Change-Id: I2568a032167a10517d4d75d8076a747be6e21890
---
M pySim/esim/saip/personalization.py
1 file changed, 18 insertions(+), 1 deletion(-)
git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/02/40202/1
diff --git a/pySim/esim/saip/personalization.py b/pySim/esim/saip/personalization.py
index 1ce420a..e3ded68 100644
--- a/pySim/esim/saip/personalization.py
+++ b/pySim/esim/saip/personalization.py
@@ -259,6 +259,14 @@
return (min(vals), max(vals))
@classmethod
+ def get_typical_input_len(cls):
+ '''return a good length to use as the visible width of a user
interface input field.
+ May be overridden by subclasses.
+ This default implementation returns the maximum allowed value length -- a good
fit for most subclasses.
+ '''
+ return cls.get_len_range()[1] or 16
+
+ @classmethod
def get_all_implementations(cls, blacklist=None, allow_abstract=False):
# return a set() so that multiple inheritance does not return dups
return set(c
@@ -267,7 +275,6 @@
and ((not blacklist) or (c not in blacklist)))
)
-
class DecimalParam(ConfigurableParameter):
"""Decimal digits. The input value may be a string of decimal digits
like '012345', or an int. The output of
validate_val() is a string with only decimal digits 0-9, in the required length with
leading zeros if necessary.
@@ -338,6 +345,16 @@
val = super().validate_val(val)
return bytes(val)
+ @classmethod
+ def get_typical_input_len(cls):
+ # override to return twice the length, because of hex digits.
+ min_len, max_len = cls.get_len_range()
+ if max_len is None:
+ return None
+ # two hex characters per value octet.
+ # (maybe *3 to also allow for spaces?)
+ return max_len * 2
+
class EnumParam(ConfigurableParameter):
value_map = {
--
To view, visit
https://gerrit.osmocom.org/c/pysim/+/40202?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: newchange
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: I2568a032167a10517d4d75d8076a747be6e21890
Gerrit-Change-Number: 40202
Gerrit-PatchSet: 1
Gerrit-Owner: neels <nhofmeyr(a)sysmocom.de>