Index: /packages/defconAppKit/trunk/Lib/defconAppKit/controls/fontInfoView.py =================================================================== --- /packages/defconAppKit/trunk/Lib/defconAppKit/controls/fontInfoView.py (revision 686) +++ /packages/defconAppKit/trunk/Lib/defconAppKit/controls/fontInfoView.py (revision 699) @@ -75,45 +75,4 @@ if self._finalCallback is not None: self._finalCallback(sender) - - -class PostscriptStemSnapFormatter(NSFormatter): - - def stringForObjectValue_(self, obj): - if obj is None or isinstance(obj, NSNull): - return "" - return " ".join([str(i) for i in obj]) - - def getObjectValue_forString_errorDescription_(self, value, string, error): - if not string.strip(): - return True, [], "" - try: - values = [int(i) for i in string.strip().split(" ")] - except ValueError: - return False, string, "Could not convert entries to integers." - if len(values) >= 12: - return False, string, "Too many values." - return True, values, "" - - -class PostscriptBluesFormatter(NSFormatter): - - def stringForObjectValue_(self, obj): - if obj is None or isinstance(obj, NSNull): - return "" - return " ".join([str(i) for i in obj]) - - def getObjectValue_forString_errorDescription_(self, value, string, error): - if not string.strip(): - return True, [], "" - try: - values = [int(i) for i in string.strip().split(" ")] - values = sorted(values) - except ValueError: - return False, string, "Could not convert entries to integers." - if len(values) % 2: - return False, string, "An even number of values is required." - if len(values) >= 14: - return False, string, "Too many values." - return True, values, "" @@ -797,5 +756,4 @@ def noneToZero(value): - print value if value is None: return 0 @@ -1115,6 +1073,5 @@ title="", hasDefault=False, - controlClass=PanoseControl, - controlOptions=dict(formatter=PostscriptBluesFormatter.alloc().init()) + controlClass=PanoseControl ) @@ -1382,33 +1339,70 @@ ## Postscript Hinting +def postscriptBluesToUFO(string): + if not string: + return [] + try: + values = [int(i) for i in string.split(" ") if i] + except ValueError: + values = [] + values = sorted(values) + if len(values) % 2: + values.pop() + if len(values) >= 14: + value = value[:14] + return values + +def postscriptStemSnapToUFO(string): + if not string: + return [] + try: + values = [int(i) for i in string.split(" ") if i] + except ValueError: + values = [] + if len(values) >= 12: + value = value[:12] + return values + +def infoListFromUFO(value): + if value is None: + return "" + value = [str(i) for i in value] + return " ".join(value) + postscriptBlueValuesItem = inputItemDict( title="BlueValues", hasDefault=False, - controlOptions=dict(formatter=PostscriptBluesFormatter.alloc().init()) + conversionFromUFO=infoListFromUFO, + conversionToUFO=postscriptBluesToUFO, ) postscriptOtherBluesItem = inputItemDict( title="OtherBlues", hasDefault=False, - controlOptions=dict(formatter=PostscriptBluesFormatter.alloc().init()) + conversionFromUFO=infoListFromUFO, + conversionToUFO=postscriptBluesToUFO, ) postscriptFamilyBluesItem = inputItemDict( title="FamilyBlues", hasDefault=False, - controlOptions=dict(formatter=PostscriptBluesFormatter.alloc().init()) + conversionFromUFO=infoListFromUFO, + conversionToUFO=postscriptBluesToUFO, ) postscriptFamilyOtherBluesItem = inputItemDict( title="FamilyOtherBlues", hasDefault=False, - controlOptions=dict(formatter=PostscriptBluesFormatter.alloc().init()) + conversionFromUFO=infoListFromUFO, + conversionToUFO=postscriptBluesToUFO, ) postscriptStemSnapHItem = inputItemDict( title="StemSnapH", hasDefault=False, - controlOptions=dict(formatter=PostscriptStemSnapFormatter.alloc().init()) + conversionFromUFO=infoListFromUFO, + conversionToUFO=postscriptStemSnapToUFO, ) postscriptStemSnapVItem = inputItemDict( title="StemSnapV", hasDefault=False, - controlOptions=dict(formatter=PostscriptStemSnapFormatter.alloc().init()) + conversionFromUFO=infoListFromUFO, + conversionToUFO=postscriptStemSnapToUFO, ) postscriptBlueFuzzItem = inputItemDict(