1 from django.contrib import admin
 
   2 from django.utils.translation import ugettext_lazy as _
 
   3 from django import forms
 
   4 from django.utils import simplejson as json
 
   6 from toolbar import models
 
   8 #class ButtonGroupAdmin(admin.ModelAdmin):
 
   9 #    list_display = ('name', 'slug', 'position',)
 
  10 #    search_fields = ('name', 'slug',)
 
  11 #    prepopulated_fields = {'slug': ('name',)}
 
  12 #    list_editable = ('position',)
 
  14 class KeyModSelector(forms.MultiWidget):
 
  16         super(KeyModSelector, self).__init__(
 
  17             [forms.CheckboxInput() for x in xrange(0,3)])
 
  19     def decompress(self, v):
 
  21         r = [(v&0x01) != 0, (v&0x02) != 0, (v&0x04) != 0]
 
  22         print "DECOMPRESS: " , v, repr(r)
 
  25     def format_output(self, widgets):
 
  27         out += u'<p>' + widgets[0] + u' Alt </p>'
 
  28         out += u'<p>' + widgets[1] + u' Ctrl </p>'
 
  29         out += u'<p>' + widgets[2] + u' Shift </p>'
 
  32 class KeyModField(forms.MultiValueField):
 
  35         super(KeyModField, self).__init__(\
 
  36             fields=tuple(forms.BooleanField() for x in xrange(0,3)), \
 
  37             widget=KeyModSelector() )
 
  39     def compress(self, dl):
 
  40         v = int(dl[0]) | (int(dl[1]) << 1) | (int(dl[2]) << 2)
 
  45 class ButtonAdminForm(forms.ModelForm):
 
  46     key_mod = KeyModField()
 
  51     def clean_params(self):
 
  52         value = self.cleaned_data['params']
 
  54             return json.dumps(json.loads(value))
 
  56             raise forms.ValidationError(e)
 
  60 class ButtonAdmin(admin.ModelAdmin):
 
  61     form = ButtonAdminForm
 
  62     list_display = ('label', 'scriptlet', 'hotkey_name', 'params')
 
  63     prepopulated_fields = {'slug': ('label',)}
 
  65 admin.site.register(models.Button, ButtonAdmin)
 
  66 admin.site.register(models.ButtonGroup)
 
  67 admin.site.register(models.Scriptlet)
 
  69 #class ButtonAdmin(admin.ModelAdmin):
 
  70 #    list_display = ('label', 'action', 'key', 'position',)
 
  71 #    list_filter = ('group',)
 
  72 #    search_fields = ('label', 'action', 'key',)
 
  73 #    filter_horizontal = ('group',)
 
  74 #    list_editable = ('position',)