X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/7efaf492711897d4bfc87afce9290f5d9e55ce90..ee01d50d05b7d72dd372e8f3a0c78b9da6c23b38:/apps/toolbar/admin.py?ds=sidebyside diff --git a/apps/toolbar/admin.py b/apps/toolbar/admin.py index a03f3936..93fedbba 100644 --- a/apps/toolbar/admin.py +++ b/apps/toolbar/admin.py @@ -1,8 +1,75 @@ from django.contrib import admin from django.utils.translation import ugettext_lazy as _ +from django import forms +from django.utils import simplejson as json -from explorer import models +from toolbar import models -admin.site.register(models.Book) -admin.site.register(models.PullRequest) +#class ButtonGroupAdmin(admin.ModelAdmin): +# list_display = ('name', 'slug', 'position',) +# search_fields = ('name', 'slug',) +# 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): + key_mod = KeyModField() + + class Meta: + model = models.Button + + def clean_params(self): + value = self.cleaned_data['params'] + try: + return json.dumps(json.loads(value)) + except Exception, e: + raise forms.ValidationError(e) + +class ButtonAdmin(admin.ModelAdmin): + form = ButtonAdminForm + list_display = ('slug', 'label', 'tooltip', 'hotkey_name') + list_display_links = ('slug',) + list_editable = ('label', 'tooltip',) + prepopulated_fields = {'slug': ('label',)} + +admin.site.register(models.Button, ButtonAdmin) +admin.site.register(models.ButtonGroup) +admin.site.register(models.Scriptlet) + +#class ButtonAdmin(admin.ModelAdmin): +# list_display = ('label', 'action', 'key', 'position',) +# list_filter = ('group',) +# search_fields = ('label', 'action', 'key',) +# filter_horizontal = ('group',) +# list_editable = ('position',)