diff options
| author | Teddy Wing | 2015-12-24 19:37:37 -0800 | 
|---|---|---|
| committer | Teddy Wing | 2015-12-24 19:37:37 -0800 | 
| commit | 1391f70d79144518dda9d0294a9e8a8fc79904ff (patch) | |
| tree | 4e62203625c7925033fda893ef21c803a087dfa0 | |
| parent | cbb9c1f4c0aa414385e0f3bdfeca32d7b5741515 (diff) | |
| download | RoboFont-Equalize-Sidebearings-Key-1391f70d79144518dda9d0294a9e8a8fc79904ff.tar.bz2 | |
preferences_window.py: Attempts to limit input character length
Tried to create an `NSFormatter` subclass but kept getting this stupid
error:
    TypeError: isPartialStringValid:newEditingString:errorDescription::
    Need tuple of 3 arguments as result
and:
    TypeError:
    isPartialStringValid:proposedSelectedRange:originalString:originalSelectedRange:errorDescription::
    Need tuple of 4 arguments as result
which is freaking idiotic because if you look at the Cocoa documentation
you can see that both those methods return fraking `BOOL`s.
Also needed to keep renaming the subclass because every time I
reinstalled the extension, PyObjC or RoboFont or whatever would yell:
    Traceback (most recent call last):
      File "preferences_window.py", line 10, in <module>
      error: Booya2HotKeyFormatter is overriding existing Objective-C
      class
Anyway, ended up ditching the `NSFormatter` subclass because of that
_stupid_ nonsensical error and am now just checking for string length in
the input edit callback and forcing a max length there by resetting the
value to ensure it doesn't go over 1 character.
| -rw-r--r-- | preferences_window.py | 50 | 
1 files changed, 49 insertions, 1 deletions
| diff --git a/preferences_window.py b/preferences_window.py index c7b479b..4a9afa0 100644 --- a/preferences_window.py +++ b/preferences_window.py @@ -1,7 +1,47 @@ +from Foundation import NSFormatter +  import vanilla  from preferences import Preferences +# from remote_pdb import RemotePdb + + +# class Booya4HotKeyFormatter(NSFormatter): +# +#     def __new__(cls, *arg, **kwargs): +#         self = cls.alloc().init() +#         return self +# +#     def stringForObjectValue_(self, obj): +#         return str(obj) +# +#     def getObjectValue_forString_errorDescription_(self, obj, string, error): +#         return True +# +#     def isPartialStringValid_newEditingString_errorDescription_( +#             self, +#             partial_string, +#             new_string, +#             error): +#         if len(partial_string) > 1: +#             return False +# +#         return True + +    # def isPartialStringValid_proposedSelectedRange_originalString_originalSelectedRange_errorDescription_( +    #         self, +    #         partial_string_ptr, +    #         proposed_sel_range_ptr, +    #         orig_string, +    #         orig_sel_range, +    #         error): +    #     if len(partial_string_ptr) > 1: +    #         return False +    # +    #     return True + +  class PreferencesWindow(object): @@ -12,14 +52,22 @@ class PreferencesWindow(object):          self.w.activation_key_label = vanilla.TextBox(              (10, 15, -10, 22),              'Short Key:') +        # RemotePdb('127.0.0.1', 4444).set_trace()          self.w.activation_key = vanilla.EditText(              posSize=(82, 12, -10, 25),              text=self.preferences.activation_key, +            # formatter=Booya4HotKeyFormatter(),              callback=self.edit_text_callback)          self.w.open()      def edit_text_callback(self, sender): -        self.preferences.activation_key = sender.get() +        r = sender.get() + +        if len(r) > 1: +            r = r[0] + +        self.preferences.activation_key = r +        self.w.activation_key.set(r)  PreferencesWindow() | 
