X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/3a100c86bdaa0dbdd25796286ef3b6d4888911d8..60f59d5903e5f4289d7a4b224c3f05e161395815:/apps/toolbar/admin.py diff --git a/apps/toolbar/admin.py b/apps/toolbar/admin.py index 58b5f746..4f03702c 100644 --- a/apps/toolbar/admin.py +++ b/apps/toolbar/admin.py @@ -11,9 +11,42 @@ from toolbar import models # prepopulated_fields = {'slug': ('name',)} # list_editable = ('position',) +class KeyModSelector(forms.MultiWidget): + def __init__(self): + super(KeyModSelector, self).__init__( + [forms.CheckboxInput() for x in xrange(0,3)]) + + def decompress(self, v): + if not v: v = 0 + r = [(v&0x01) != 0, (v&0x02) != 0, (v&0x04) != 0] + print "DECOMPRESS: " , v, repr(r) + return r + + def format_output(self, widgets): + out = u'' + out += u'

' + widgets[0] + u' Alt

' + out += u'

' + widgets[1] + u' Ctrl

' + out += u'

' + widgets[2] + u' Shift

' + return out + +class KeyModField(forms.MultiValueField): + + def __init__(self): + super(KeyModField, self).__init__(\ + fields=tuple(forms.BooleanField() for x in xrange(0,3)), \ + widget=KeyModSelector() ) + + def compress(self, dl): + v = int(dl[0]) | (int(dl[1]) << 1) | (int(dl[2]) << 2) + print "COMPRESS", v + return v + class ButtonAdminForm(forms.ModelForm): - model = models.Button + key_mod = KeyModField() + + class Meta: + model = models.Button def clean_params(self): value = self.cleaned_data['params'] @@ -22,9 +55,11 @@ class ButtonAdminForm(forms.ModelForm): except Exception, e: raise forms.ValidationError(e) + + class ButtonAdmin(admin.ModelAdmin): form = ButtonAdminForm - list_display = ('label', 'scriptlet', 'key', 'params') + list_display = ('label', 'scriptlet', 'hotkey_name', 'params') prepopulated_fields = {'slug': ('label',)} admin.site.register(models.Button, ButtonAdmin)