Skroty klawiszowe z Ctrl i Shift. Update przyciskow.
authorŁukasz Rekucki <lrekucki@gmail.com>
Tue, 8 Sep 2009 23:52:14 +0000 (01:52 +0200)
committerŁukasz Rekucki <lrekucki@gmail.com>
Tue, 8 Sep 2009 23:52:14 +0000 (01:52 +0200)
apps/explorer/forms.py
apps/explorer/views.py
apps/toolbar/admin.py
apps/toolbar/models.py
apps/toolbar/templates/toolbar/toolbar.html
apps/toolbar/templatetags/toolbar_tags.py
fixtures/przyciski.xml [changed mode: 0644->0755]
fixtures/przyciski.yaml [deleted file]
project/static/js/editor.js
project/templates/explorer/file_list.html
project/templates/explorer/panels/xmleditor.html

index da8a117..e453f1f 100644 (file)
@@ -62,6 +62,7 @@ class BookUploadForm(forms.Form):
     file = forms.FileField(label='Source OCR file')
     bookname = forms.RegexField(regex='[\w-]+',  \
         label='Publication name', help_text='Example: slowacki-beniowski')
+    autoxml = forms.BooleanField(required=False, initial=True, label=u"Generate DublinCore template")
 
 class ImageFoldersForm(forms.Form):
     folders = forms.ChoiceField(required=False)
@@ -78,13 +79,13 @@ class DublinCoreForm(forms.Form):
     kinds = ListField()
     genres = ListField()
     created_at = forms.DateField()
-    released_to_public_domain_at = forms.DateField()
+    released_to_public_domain_at = forms.DateField(required=False)
     editors = ListField(widget=forms.Textarea, required=False, converter=person_conv)
     translators = ListField(widget=forms.Textarea, required=False, converter=person_conv)
     technical_editors = ListField(widget=forms.Textarea, required=False, converter=person_conv)
     publisher = forms.CharField()
-    source_name = forms.CharField(widget=forms.Textarea)
-    source_url = forms.URLField(verify_exists=False)
+    source_name = forms.CharField(widget=forms.Textarea, required=False)
+    source_url = forms.URLField(verify_exists=False, required=False)
     url = forms.URLField(verify_exists=False)
     parts = forms.CharField(widget=forms.Textarea, required=False)
     license = forms.CharField(required=False)
index 18f79b3..b3cc09b 100644 (file)
@@ -1,7 +1,10 @@
 # -*- coding: utf-8 -*-
 import urllib2
 import hg
-from librarian import html, parser, dcparser, ParseError, ValidationError
+from datetime import date
+
+from librarian import html, parser, dcparser, wrap_text
+from librarian import ParseError, ValidationError
 
 from django.conf import settings
 from django.contrib.auth.decorators import login_required, permission_required
@@ -65,9 +68,12 @@ def file_upload(request, repo):
                 f = request.FILES['file']
                 decoded = f.read().decode('utf-8')
                 path = form.cleaned_data['bookname']
+
+                if form.cleaned_data['autoxml']:
+                    decoded = wrap_text(decoded, unicode(date.today()) )
                 
                 def upload_action():
-                    repo._add_file(path ,decoded.encode('utf-8') )
+                    repo._add_file(pathdecoded.encode('utf-8') )
                     repo._commit(message="File %s uploaded by user %s" % \
                         (path, request.user.username), user=request.user.username)
 
index 58b5f74..dca934c 100644 (file)
@@ -12,8 +12,41 @@ from toolbar import models
 #    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):
+        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'<p>' + widgets[0] + u' Alt </p>'
+        out += u'<p>' + widgets[1] + u' Ctrl </p>'
+        out += u'<p>' + widgets[2] + u' Shift </p>'
+        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)
index ae101e0..004fde9 100644 (file)
@@ -24,6 +24,7 @@ class Button(models.Model):
 
     # ui related stuff
     key = models.CharField(blank=True, max_length=1)
+    key_mod = models.PositiveIntegerField(blank=True, default=1)
     tooltip = models.CharField(blank=True, max_length=120)
 
     # Why the button is restricted to have the same position in each group ?
@@ -33,6 +34,20 @@ class Button(models.Model):
     class Meta:
         ordering = ('label',)
         verbose_name, verbose_name_plural = _('button'), _('buttons')
+
+    def hotkey_code(self):
+        return ord(self.key.upper()) | (self.key_mod << 8)
+
+    def hotkey_name(self):
+        if not self.key:
+            return ''
+
+        mods = []
+        if self.key_mod & 0x01: mods.append('Alt')
+        if self.key_mod & 0x02: mods.append('Ctrl')
+        if self.key_mod & 0x04: mods.append('Shift')
+        mods.append('"'+self.key+'"')
+        return '+'.join(mods)
     
     def __unicode__(self):
         return self.label
index 2113530..a6241d1 100644 (file)
@@ -19,7 +19,7 @@
             <button type="button" 
                 ui:action="{{ button.scriptlet.name }}"
                 ui:action-params="{{ button.params|escape }}"
-                {% if button.key %}ui:hotkey="{{ button.key|keycode }}"{% endif %} 
+                {% if button.key %}ui:hotkey="{{ button.hotkey_code }}"{% endif %}
                 {% if button.tooltip %}ui:tooltip="{{ button.tooltip }}"{% endif %} >
             {{ button.label|safe }}
             </button>
index e29c8a0..a38ed01 100644 (file)
@@ -7,8 +7,3 @@ register = template.Library()
 def toolbar():
     groups = models.ButtonGroup.objects.all()
     return {'groups': groups}
-
-@register.filter
-def keycode(value):
-    return ord(str(value).upper())
-
old mode 100644 (file)
new mode 100755 (executable)
index ea1d724..ec2acab
-<?xml version="1.0" encoding="utf-8"?>
-<django-objects version="1.0">
-  <object pk="14" model="toolbar.buttongroup">
-    <field type="CharField" name="name">Akapity i długie cytaty</field>
-    <field type="SlugField" name="slug">akapity-i-dlugie-cytaty</field>
-    <field type="IntegerField" name="position">0</field>
-  </object>
-  <object pk="2" model="toolbar.buttongroup">
-    <field type="CharField" name="name">Autokorekta</field>
-    <field type="SlugField" name="slug">autokorekta</field>
-    <field type="IntegerField" name="position">0</field>
-  </object>
-  <object pk="21" model="toolbar.buttongroup">
-    <field type="CharField" name="name">Bloki</field>
-    <field type="SlugField" name="slug">bloki</field>
-    <field type="IntegerField" name="position">0</field>
-  </object>
-  <object pk="20" model="toolbar.buttongroup">
-    <field type="CharField" name="name">Bloki początkowe</field>
-    <field type="SlugField" name="slug">bloki-poczatkowe</field>
-    <field type="IntegerField" name="position">0</field>
-  </object>
-  <object pk="19" model="toolbar.buttongroup">
-    <field type="CharField" name="name">Deklaracje</field>
-    <field type="SlugField" name="slug">deklaracje</field>
-    <field type="IntegerField" name="position">0</field>
-  </object>
-  <object pk="12" model="toolbar.buttongroup">
-    <field type="CharField" name="name">Dramat wierszowany</field>
-    <field type="SlugField" name="slug">dramat-wierszowany</field>
-    <field type="IntegerField" name="position">0</field>
-  </object>
-  <object pk="18" model="toolbar.buttongroup">
-    <field type="CharField" name="name">Dramat współczesny</field>
-    <field type="SlugField" name="slug">dramat-wspolczesny</field>
-    <field type="IntegerField" name="position">0</field>
-  </object>
-  <object pk="13" model="toolbar.buttongroup">
-    <field type="CharField" name="name">Elementy początkowe</field>
-    <field type="SlugField" name="slug">elementy-poczatkowe</field>
-    <field type="IntegerField" name="position">0</field>
-  </object>
-  <object pk="23" model="toolbar.buttongroup">
-    <field type="CharField" name="name">Mastery</field>
-    <field type="SlugField" name="slug">mastery</field>
-    <field type="IntegerField" name="position">0</field>
-  </object>
-  <object pk="1" model="toolbar.buttongroup">
-    <field type="CharField" name="name">Nagłówki</field>
-    <field type="SlugField" name="slug">naglowki</field>
-    <field type="IntegerField" name="position">0</field>
-  </object>
-  <object pk="22" model="toolbar.buttongroup">
-    <field type="CharField" name="name">Początek dramatu</field>
-    <field type="SlugField" name="slug">poczatek-dramatu</field>
-    <field type="IntegerField" name="position">0</field>
-  </object>
-  <object pk="16" model="toolbar.buttongroup">
-    <field type="CharField" name="name">Polecenia</field>
-    <field type="SlugField" name="slug">polecenia</field>
-    <field type="IntegerField" name="position">0</field>
-  </object>
-  <object pk="11" model="toolbar.buttongroup">
-    <field type="CharField" name="name">Strukturalne</field>
-    <field type="SlugField" name="slug">strukturalne</field>
-    <field type="IntegerField" name="position">0</field>
-  </object>
-  <object pk="15" model="toolbar.buttongroup">
-    <field type="CharField" name="name">Style znakowe</field>
-    <field type="SlugField" name="slug">style-znakowe</field>
-    <field type="IntegerField" name="position">0</field>
-  </object>
-  <object pk="17" model="toolbar.buttongroup">
-    <field type="CharField" name="name">Wersy</field>
-    <field type="SlugField" name="slug">wersy</field>
-    <field type="IntegerField" name="position">0</field>
-  </object>
-  <object pk="3" model="toolbar.buttongroup">
-    <field type="CharField" name="name">Widok</field>
-    <field type="SlugField" name="slug">display_options</field>
-    <field type="IntegerField" name="position">2</field>
-  </object>
-  <object pk="5" model="toolbar.button">
-    <field type="CharField" name="label">A&lt;sup&gt;+&lt;/sup&gt;</field>
-    <field type="SlugField" name="slug">increase_font_size</field>
-    <field type="TextField" name="params">{"change": 2}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">codemirror_fontsize</field>
-    <field type="CharField" name="key">+</field>
-    <field type="CharField" name="tooltip">Zwiększ rozmiar czcionki.</field>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="3"/>
-    </field>
-  </object>
-  <object pk="6" model="toolbar.button">
-    <field type="CharField" name="label">A&lt;sup&gt;-&lt;/sup&gt;</field>
-    <field type="SlugField" name="slug">descrease_font_size</field>
-    <field type="TextField" name="params">{"change": -2}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">codemirror_fontsize</field>
-    <field type="CharField" name="key">-</field>
-    <field type="CharField" name="tooltip">Zmniejsz rozmiar czcionki.</field>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="3"/>
-    </field>
-  </object>
-  <object pk="7" model="toolbar.button">
-    <field type="CharField" name="label">A&lt;sup&gt;=&lt;/sup&gt;</field>
-    <field type="SlugField" name="slug">reset_font_size</field>
-    <field type="TextField" name="params">{"fontSize": 13}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">codemirror_fontsize</field>
-    <field type="CharField" name="key">=</field>
-    <field type="CharField" name="tooltip">Przywróć orginalny rozmiar czcionki.</field>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="3"/>
-    </field>
-  </object>
-  <object pk="76" model="toolbar.button">
-    <field type="CharField" name="label">A&lt;sup&gt;↓&lt;/sup&gt;</field>
-    <field type="SlugField" name="slug">tolowercase</field>
-    <field type="TextField" name="params">[]</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">lowercase</field>
-    <field type="CharField" name="key">u</field>
-    <field type="CharField" name="tooltip">Zamień wielkie litery na małe.</field>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="15"/>
-    </field>
-  </object>
-  <object pk="4" model="toolbar.button">
-    <field type="CharField" name="label">Podstawowa</field>
-    <field type="SlugField" name="slug">basic_correction</field>
-    <field type="TextField" name="params">{"exprs": [["\n\\d+\n", "\n"], ["-\\s*\n+", ""], ["\\,\\.\\.|\\.\\,\\.|\\.\\.\\,", "..."]]}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">fulltextregexp</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip">Wykonuję operację z novel-pages i poem-pages.</field>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="2"/>
-    </field>
-  </object>
-  <object pk="3" model="toolbar.button">
-    <field type="CharField" name="label">Usuń spację</field>
-    <field type="SlugField" name="slug">strip_whitespace</field>
-    <field type="TextField" name="params">{"exprs": [["^\\s+|\\s+$", ""], ["\\s+", " "]]}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">lineregexp</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip">Usuwa zbędne spację z dokumentu.</field>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="2"/>
-    </field>
-  </object>
-  <object pk="77" model="toolbar.button">
-    <field type="CharField" name="label">Zamień Cudzysłowy</field>
-    <field type="SlugField" name="slug">zamien-cudzyslowy</field>
-    <field type="TextField" name="params">{"exprs": [["\u00bb|\u201e", ",,"], ["\u00ab", "\""], ["\"([\u0104\u0118\u00d3\u0141\u017b\u0179\u0106\u0143\u0105\u017c\u017a\u015b\u0144\u00f3\u0142\u0107\\w])", ",,$1"]]}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">lineregexp</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="2"/>
-    </field>
-  </object>
-  <object pk="2" model="toolbar.button">
-    <field type="CharField" name="label">Zamień dywiz</field>
-    <field type="SlugField" name="slug">zamien_dywiz</field>
-    <field type="TextField" name="params">{"exprs": [["(\\d)[\u2014-](\\d)", "$1--$2"], ["\u2014", "---"]]}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">lineregexp</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip">Zamienia '—' na '---', oraz '1—2' na '1--2'.</field>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="2"/>
-    </field>
-  </object>
-  <object pk="39" model="toolbar.button">
-    <field type="CharField" name="label">akapit</field>
-    <field type="SlugField" name="slug">akapit</field>
-    <field type="TextField" name="params">{"tag": "akap"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="14"/>
-    </field>
-  </object>
-  <object pk="40" model="toolbar.button">
-    <field type="CharField" name="label">akapit cd.</field>
-    <field type="SlugField" name="slug">akapit-cd</field>
-    <field type="TextField" name="params">{"tag": "akap_cd"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="14"/>
-    </field>
-  </object>
-  <object pk="41" model="toolbar.button">
-    <field type="CharField" name="label">akapit dialogowy</field>
-    <field type="SlugField" name="slug">akapit-dialogowy</field>
-    <field type="TextField" name="params">{"tag": "akap_dialog"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="14"/>
-    </field>
-  </object>
-  <object pk="14" model="toolbar.button">
-    <field type="CharField" name="label">akt</field>
-    <field type="SlugField" name="slug">akt</field>
-    <field type="TextField" name="params">{"tag": "akt"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="1"/>
-    </field>
-  </object>
-  <object pk="32" model="toolbar.button">
-    <field type="CharField" name="label">autor</field>
-    <field type="SlugField" name="slug">autor</field>
-    <field type="TextField" name="params">{"tag": "autor"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="13"/>
-    </field>
-  </object>
-  <object pk="10" model="toolbar.button">
-    <field type="CharField" name="label">część/księga</field>
-    <field type="SlugField" name="slug">czesc</field>
-    <field type="TextField" name="params">{"tag": "naglowek_czesc"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="1"/>
-    </field>
-  </object>
-  <object pk="65" model="toolbar.button">
-    <field type="CharField" name="label">dedykacja</field>
-    <field type="SlugField" name="slug">dedykacja</field>
-    <field type="TextField" name="params">{"tag": "dedykacja"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="13"/>
-    </field>
-  </object>
-  <object pk="74" model="toolbar.button">
-    <field type="CharField" name="label">dedykacja</field>
-    <field type="SlugField" name="slug">dedykacja</field>
-    <field type="TextField" name="params">{"tag": "dedykacja"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="22"/>
-    </field>
-  </object>
-  <object pk="31" model="toolbar.button">
-    <field type="CharField" name="label">didaskalia</field>
-    <field type="SlugField" name="slug">didaskalia</field>
-    <field type="TextField" name="params">{"tag": "didaskalia"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="12"/>
-    </field>
-  </object>
-  <object pk="62" model="toolbar.button">
-    <field type="CharField" name="label">didaskalia</field>
-    <field type="SlugField" name="slug">didaskalia</field>
-    <field type="TextField" name="params">{"tag": "didaskalia"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="18"/>
-    </field>
-  </object>
-  <object pk="49" model="toolbar.button">
-    <field type="CharField" name="label">didaskalia wewn.</field>
-    <field type="SlugField" name="slug">didaskalia-wewn</field>
-    <field type="TextField" name="params">{"tag": "didask_tekst"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="15"/>
-    </field>
-  </object>
-  <object pk="63" model="toolbar.button">
-    <field type="CharField" name="label">didaskalia wewn.</field>
-    <field type="SlugField" name="slug">didaskalia-wewn</field>
-    <field type="TextField" name="params">{"tag": "didask_tekst"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="18"/>
-    </field>
-  </object>
-  <object pk="20" model="toolbar.button">
-    <field type="CharField" name="label">dramat wiersz.</field>
-    <field type="SlugField" name="slug">dramat-wiersz</field>
-    <field type="TextField" name="params">{"tag": "dramat_wierszowany_l"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="11"/>
-    </field>
-  </object>
-  <object pk="22" model="toolbar.button">
-    <field type="CharField" name="label">dramat wiersz./w. łam</field>
-    <field type="SlugField" name="slug">dramat-wiersz-w-lam</field>
-    <field type="TextField" name="params">{"tag": "dramat_wierszowany_lp"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="11"/>
-    </field>
-  </object>
-  <object pk="21" model="toolbar.button">
-    <field type="CharField" name="label">dramat współczesny</field>
-    <field type="SlugField" name="slug">dramat-wspolczesny</field>
-    <field type="TextField" name="params">{"tag": "dramat_wspolczesny"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="11"/>
-    </field>
-  </object>
-  <object pk="38" model="toolbar.button">
-    <field type="CharField" name="label">dzieło nadrzędne</field>
-    <field type="SlugField" name="slug">dzielo-nadrzedne</field>
-    <field type="TextField" name="params">{"tag": "dzielo_nadrzedne"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="13"/>
-    </field>
-  </object>
-  <object pk="67" model="toolbar.button">
-    <field type="CharField" name="label">długi cyt. poet.</field>
-    <field type="SlugField" name="slug">dlugi-cyt-poet</field>
-    <field type="TextField" name="params">{"tag": "poezja_cyt"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="21"/>
-    </field>
-  </object>
-  <object pk="43" model="toolbar.button">
-    <field type="CharField" name="label">długi cyta. poet.</field>
-    <field type="SlugField" name="slug">dlugi-cyt-poet</field>
-    <field type="TextField" name="params">{"tag": "poezja_cyt"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="14"/>
-    </field>
-  </object>
-  <object pk="42" model="toolbar.button">
-    <field type="CharField" name="label">długi cytat</field>
-    <field type="SlugField" name="slug">dlugi-cytat</field>
-    <field type="TextField" name="params">{"tag": "dlugi_cyt"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="14"/>
-      <object pk="21"/>
-    </field>
-  </object>
-  <object pk="52" model="toolbar.button">
-    <field type="CharField" name="label">ekstra</field>
-    <field type="SlugField" name="slug">ekstra</field>
-    <field type="TextField" name="params">{"tag": "ekstra"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="15"/>
-    </field>
-  </object>
-  <object pk="29" model="toolbar.button">
-    <field type="CharField" name="label">kwestia</field>
-    <field type="SlugField" name="slug">kwestia</field>
-    <field type="TextField" name="params">{"tag": "kwestia"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="12"/>
-    </field>
-  </object>
-  <object pk="61" model="toolbar.button">
-    <field type="CharField" name="label">kwestia</field>
-    <field type="SlugField" name="slug">kwestia</field>
-    <field type="TextField" name="params">{"tag": "kwestia"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="18"/>
-    </field>
-  </object>
-  <object pk="23" model="toolbar.button">
-    <field type="CharField" name="label">liryka</field>
-    <field type="SlugField" name="slug">liryka</field>
-    <field type="TextField" name="params">{"tag": "liryka_l"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="11"/>
-    </field>
-  </object>
-  <object pk="24" model="toolbar.button">
-    <field type="CharField" name="label">liryka/w. łam</field>
-    <field type="SlugField" name="slug">liryka-w-lam</field>
-    <field type="TextField" name="params">{"tag": "liryka_lp"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="11"/>
-    </field>
-  </object>
-  <object pk="47" model="toolbar.button">
-    <field type="CharField" name="label">mamtemat.</field>
-    <field type="SlugField" name="slug">matemat</field>
-    <field type="TextField" name="params">{"tag": "mat"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="15"/>
-    </field>
-  </object>
-  <object pk="36" model="toolbar.button">
-    <field type="CharField" name="label">motto</field>
-    <field type="SlugField" name="slug">motto</field>
-    <field type="TextField" name="params">{"tag": "motto"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="13"/>
-    </field>
-  </object>
-  <object pk="75" model="toolbar.button">
-    <field type="CharField" name="label">motto</field>
-    <field type="SlugField" name="slug">motto</field>
-    <field type="TextField" name="params">{"tag": "motto"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="22"/>
-    </field>
-  </object>
-  <object pk="37" model="toolbar.button">
-    <field type="CharField" name="label">motto podpis</field>
-    <field type="SlugField" name="slug">motto-podpis</field>
-    <field type="TextField" name="params">{"tag": "motto_podpis"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="13"/>
-    </field>
-  </object>
-  <object pk="16" model="toolbar.button">
-    <field type="CharField" name="label">nagłówek kwestii</field>
-    <field type="SlugField" name="slug">naglowek-kwestii</field>
-    <field type="TextField" name="params">{"tag": "naglowek_osoba"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="1"/>
-    </field>
-  </object>
-  <object pk="35" model="toolbar.button">
-    <field type="CharField" name="label">nota</field>
-    <field type="SlugField" name="slug">nota</field>
-    <field type="TextField" name="params">{"tag": "nota"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="13"/>
-    </field>
-  </object>
-  <object pk="18" model="toolbar.button">
-    <field type="CharField" name="label">opowiadanie</field>
-    <field type="SlugField" name="slug">opowiadanie</field>
-    <field type="TextField" name="params">{"tag": "opowiadanie"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="11"/>
-    </field>
-  </object>
-  <object pk="50" model="toolbar.button">
-    <field type="CharField" name="label">osoba</field>
-    <field type="SlugField" name="slug">osoba</field>
-    <field type="TextField" name="params">{"tag": "osoba"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="15"/>
-    </field>
-  </object>
-  <object pk="64" model="toolbar.button">
-    <field type="CharField" name="label">osoba</field>
-    <field type="SlugField" name="slug">osoba</field>
-    <field type="TextField" name="params">{"tag": "osoba"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="18"/>
-    </field>
-  </object>
-  <object pk="12" model="toolbar.button">
-    <field type="CharField" name="label">podrozdział</field>
-    <field type="SlugField" name="slug">podrozdzial</field>
-    <field type="TextField" name="params">{"tag": "naglowek_podrozdzial"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="1"/>
-    </field>
-  </object>
-  <object pk="34" model="toolbar.button">
-    <field type="CharField" name="label">podtytuł</field>
-    <field type="SlugField" name="slug">podtytul</field>
-    <field type="TextField" name="params">{"tag": "podtytul"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="13"/>
-    </field>
-  </object>
-  <object pk="19" model="toolbar.button">
-    <field type="CharField" name="label">powieść</field>
-    <field type="SlugField" name="slug">powiesc</field>
-    <field type="TextField" name="params">{"tag": "powiesc"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="11"/>
-    </field>
-  </object>
-  <object pk="68" model="toolbar.button">
-    <field type="CharField" name="label">przypis autorski</field>
-    <field type="SlugField" name="slug">przypis-autorski</field>
-    <field type="TextField" name="params">{"tag": "pa"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="21"/>
-    </field>
-  </object>
-  <object pk="71" model="toolbar.button">
-    <field type="CharField" name="label">przypis edytorski</field>
-    <field type="SlugField" name="slug">przypis-edytorski</field>
-    <field type="TextField" name="params">{"tag": "pe"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="21"/>
-    </field>
-  </object>
-  <object pk="70" model="toolbar.button">
-    <field type="CharField" name="label">przypis redaktorski</field>
-    <field type="SlugField" name="slug">przypis-redaktorski</field>
-    <field type="TextField" name="params">{"tag": "pr"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="21"/>
-    </field>
-  </object>
-  <object pk="69" model="toolbar.button">
-    <field type="CharField" name="label">przypis tłumacza</field>
-    <field type="SlugField" name="slug">przypis-tlumacza</field>
-    <field type="TextField" name="params">{"tag": "pt"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="21"/>
-    </field>
-  </object>
-  <object pk="11" model="toolbar.button">
-    <field type="CharField" name="label">rozdział</field>
-    <field type="SlugField" name="slug">rozdzial</field>
-    <field type="TextField" name="params">{"tag": "naglowek_rozdzial"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="1"/>
-    </field>
-  </object>
-  <object pk="15" model="toolbar.button">
-    <field type="CharField" name="label">scena</field>
-    <field type="SlugField" name="slug">scena</field>
-    <field type="TextField" name="params">{"tag": "naglowek_scena"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="1"/>
-    </field>
-  </object>
-  <object pk="54" model="toolbar.button">
-    <field type="CharField" name="label">sep. asteryks</field>
-    <field type="SlugField" name="slug">sep-asteryks</field>
-    <field type="TextField" name="params">{"tag": "sekcja_asteryks"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="16"/>
-    </field>
-  </object>
-  <object pk="55" model="toolbar.button">
-    <field type="CharField" name="label">sep. linia</field>
-    <field type="SlugField" name="slug">sep-linia</field>
-    <field type="TextField" name="params">{"tag": "separator_linia"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="16"/>
-    </field>
-  </object>
-  <object pk="53" model="toolbar.button">
-    <field type="CharField" name="label">sep. światło</field>
-    <field type="SlugField" name="slug">sep-swiatlo</field>
-    <field type="TextField" name="params">{"tag": "sekcja_swiatlo"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="16"/>
-    </field>
-  </object>
-  <object pk="57" model="toolbar.button">
-    <field type="CharField" name="label">strofa</field>
-    <field type="SlugField" name="slug">strofa</field>
-    <field type="TextField" name="params">{"tag": "strofa"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="17"/>
-    </field>
-  </object>
-  <object pk="46" model="toolbar.button">
-    <field type="CharField" name="label">słowo obce</field>
-    <field type="SlugField" name="slug">slowo-obce</field>
-    <field type="TextField" name="params">{"tag": "slowo_obce"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="15"/>
-    </field>
-  </object>
-  <object pk="17" model="toolbar.button">
-    <field type="CharField" name="label">tagi główne</field>
-    <field type="SlugField" name="slug">tagi-glowne</field>
-    <field type="TextField" name="params">{"tag": "utwor"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="11"/>
-    </field>
-  </object>
-  <object pk="33" model="toolbar.button">
-    <field type="CharField" name="label">tytuł</field>
-    <field type="SlugField" name="slug">tytul</field>
-    <field type="TextField" name="params">{"tag": "nazwa_utworu"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="13"/>
-    </field>
-  </object>
-  <object pk="45" model="toolbar.button">
-    <field type="CharField" name="label">tytuł dzieła</field>
-    <field type="SlugField" name="slug">tytul-dziela</field>
-    <field type="TextField" name="params">{"tag": "tytul_dziela", "attrs": {"typ": " "}}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="15"/>
-    </field>
-  </object>
-  <object pk="51" model="toolbar.button">
-    <field type="CharField" name="label">uwaga</field>
-    <field type="SlugField" name="slug">uwaga</field>
-    <field type="TextField" name="params">{"tag": "uwaga"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="15"/>
-    </field>
-  </object>
-  <object pk="28" model="toolbar.button">
-    <field type="CharField" name="label">wers akap.</field>
-    <field type="SlugField" name="slug">wers-akap</field>
-    <field type="TextField" name="params">{"tag": "wers_akap"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="12"/>
-    </field>
-  </object>
-  <object pk="58" model="toolbar.button">
-    <field type="CharField" name="label">wers akap.</field>
-    <field type="SlugField" name="slug">wers-akap</field>
-    <field type="TextField" name="params">{"tag": "wers_akap"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="17"/>
-    </field>
-  </object>
-  <object pk="26" model="toolbar.button">
-    <field type="CharField" name="label">wers cd.</field>
-    <field type="SlugField" name="slug">wers-cd</field>
-    <field type="TextField" name="params">{"tag": "wers_cd"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="12"/>
-    </field>
-  </object>
-  <object pk="60" model="toolbar.button">
-    <field type="CharField" name="label">wers cd.</field>
-    <field type="SlugField" name="slug">wers-cd</field>
-    <field type="TextField" name="params">{"tag": "wers_cd"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="17"/>
-    </field>
-  </object>
-  <object pk="27" model="toolbar.button">
-    <field type="CharField" name="label">wers wcięty</field>
-    <field type="SlugField" name="slug">wers-wciety</field>
-    <field type="TextField" name="params">{"tag": "wers_wciety"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="12"/>
-    </field>
-  </object>
-  <object pk="59" model="toolbar.button">
-    <field type="CharField" name="label">wers wcięty</field>
-    <field type="SlugField" name="slug">wers-wciety</field>
-    <field type="TextField" name="params">{"tag": "wers_wciety"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="17"/>
-    </field>
-  </object>
-  <object pk="48" model="toolbar.button">
-    <field type="CharField" name="label">www</field>
-    <field type="SlugField" name="slug">www</field>
-    <field type="TextField" name="params">{"tag": "www"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="15"/>
-    </field>
-  </object>
-  <object pk="44" model="toolbar.button">
-    <field type="CharField" name="label">wyróżnienie</field>
-    <field type="SlugField" name="slug">wyroznienie</field>
-    <field type="TextField" name="params">{"tag": "wyroznienie"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="15"/>
-    </field>
-  </object>
-  <object pk="25" model="toolbar.button">
-    <field type="CharField" name="label">wywiad</field>
-    <field type="SlugField" name="slug">wywiad</field>
-    <field type="TextField" name="params">{"tag": "wywiad"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="11"/>
-    </field>
-  </object>
-  <object pk="73" model="toolbar.button">
-    <field type="CharField" name="label">wywiad odpowiedź</field>
-    <field type="SlugField" name="slug">wywiad-odpowiedz</field>
-    <field type="TextField" name="params">{"tag": "wywiad_odp"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="21"/>
-    </field>
-  </object>
-  <object pk="72" model="toolbar.button">
-    <field type="CharField" name="label">wywiad pytanie</field>
-    <field type="SlugField" name="slug">wywiad-pytanie</field>
-    <field type="TextField" name="params">{"tag": "wywiad_pyt"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="21"/>
-    </field>
-  </object>
-  <object pk="56" model="toolbar.button">
-    <field type="CharField" name="label">zastępnik wersu</field>
-    <field type="SlugField" name="slug">zastepnik-wersu</field>
-    <field type="TextField" name="params">{"tag": "zastepnik_wersu"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="16"/>
-    </field>
-  </object>
-  <object pk="13" model="toolbar.button">
-    <field type="CharField" name="label">śródtytuł</field>
-    <field type="SlugField" name="slug">srodtytul</field>
-    <field type="TextField" name="params">{"tag": "srodtytul"}</field>
-    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>
-    <field type="CharField" name="key"/>
-    <field type="CharField" name="tooltip"/>
-    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">
-      <object pk="1"/>
-    </field>
-  </object>
-  <object pk="insert_tag" model="toolbar.scriptlet">
-    <field type="TextField" name="code">var texteditor = panel.texteditor;
-
-var text = texteditor.selection();
-
-var out = '&lt;'+params.tag;
-
-for (var attr in params.attrs) {
-
-    out += ' '+attr+'="' + params.attrs[attr] + '"';
-
-};
-
-out += '&gt;';
-
-out += text;
-
-out += '&lt;/' + params.tag + '&gt;';
-
-
-texteditor.replaceSelection(out);
-
-
-
-if (text.length == 0) {
-
-    var pos = texteditor.cursorPosition();
-
-    texteditor.selectLines(pos.line, pos.character + params.tag.length + 2);
-
-}
-
-
-
-panel.fireEvent('contentChanged');</field>
-  </object>
-  <object pk="lineregexp" model="toolbar.scriptlet">
-    <field type="TextField" name="code">// params: {exprs: list of {expr: "", repl: "" [, opts: "g"]}}
-
-var cm = panel.texteditor;
-
-
-
-var exprs = $.map(params.exprs, function(expr) {
-
-    var opts = "g";
-
-    if(expr.length &gt; 2)
-
-        opts = expr[2];
-
-    return {rx: new RegExp(expr[0], opts), repl: expr[1]};
-
-});
-
-
-
-var partial = true;
-
-var text = cm.selection();
-
-
-
-if(!text) {
-
-    var cpos = cm.cursorPosition();
-
-    cpos.line = cm.lineNumber(cpos.line)
-
-    cm.selectLines(cm.firstLine(), 0, cm.lastLine(), 0);
-
-    text = cm.selection();
-
-    partial = false;
-
-}
-
-
-
-var changed = false;
-
-var lines = text.split('\n');
-
-var lines = $.map(lines, function(line) { 
-
-    var old_line = line;
-
-    $(exprs).each(function() { 
-
-        var expr = this;
-
-        line = line.replace(expr.rx, expr.repl);
-
-    });
-
-    if(old_line != line) changed = true;
-
-    return line;
-
-});
-
-
-
-if(changed) 
-
-{
-
-    cm.replaceSelection( lines.join('\n') );
-
-    panel.fireEvent('contentChanged');
-
-}
-
-
-
-if(!partial)
-
-    cm.selectLines( cm.nthLine(cpos.line), cpos.character )</field>
-  </object>
-  <object pk="codemirror_fontsize" model="toolbar.scriptlet">
-    <field type="TextField" name="code">var texteditor = panel.texteditor;
-
-var frameBody = $('body', $(texteditor.frame).contents());
-
-
-
-if(params.fontSize) {
-
-    frameBody.css('font-size', params.fontSize);
-
-}
-
-else {
-
-    var old_size = parseInt(frameBody.css('font-size'));
-
-    frameBody.css('font-size', old_size + (params.change || 0) );
-
-}</field>
-  </object>
-  <object pk="fulltextregexp" model="toolbar.scriptlet">
-    <field type="TextField" name="code">var cm = panel.texteditor;
-
-var exprs = $.map(params.exprs, function(expr) {
-
-    var opts = "mg";
-
-    if(expr.length &gt; 2)
-
-        opts = expr[2];
-
-    return {rx: new RegExp(expr[0], opts), repl: expr[1]};
-
-});
-
-
-
-var partial = true;
-
-var text = cm.selection();
-
-
-
-if(!text) {
-
-    var cpos = cm.cursorPosition();
-
-    cpos.line = cm.lineNumber(cpos.line)
-
-    cm.selectLines(cm.firstLine(), 0, cm.lastLine(), 0);
-
-    text = cm.selection();
-
-    partial = false;
-
-}
-
-
-
-var original = text;
-
-
-
-$(exprs).each(function() { 
-
-    text = text.replace(this.rx, this.repl);
-
-});
-
-
-
-if( original != text) {
-
-    cm.replaceSelection(text);
-
-    panel.fireEvent('contentChanged');
-
-}
-
-
-
-if(!partial) {
-
-    cm.selectLines( cm.nthLine(cpos.line), cpos.character );
-
-}</field>
-  </object>
-  <object pk="macro" model="toolbar.scriptlet">
-    <field type="TextField" name="code">params.each(function() {
-
-    editor.callScriptlet(this[0], this[1]);
-
-});</field>
-  </object>
-  <object pk="lowercase" model="toolbar.scriptlet">
-    <field type="TextField" name="code">var cm = panel.texteditor;
-
-var text = cm.selection();
-
-if(!text) return;
-
-var repl = text.toLowerCase();
-
-if(repl != text) {
-
-    cm.replaceSelection(repl);
-
-    panel.fireEvent('contentChanged');
-
-};</field>
-  </object>
-</django-objects>
+<?xml version="1.0" encoding="utf-8"?>\r
+<django-objects version="1.0">\r
+  <object pk="14" model="toolbar.buttongroup">\r
+    <field type="CharField" name="name">Akapity i długie cytaty</field>\r
+    <field type="SlugField" name="slug">akapity-i-dlugie-cytaty</field>\r
+    <field type="IntegerField" name="position">0</field>\r
+  </object>\r
+  <object pk="2" model="toolbar.buttongroup">\r
+    <field type="CharField" name="name">Autokorekta</field>\r
+    <field type="SlugField" name="slug">autokorekta</field>\r
+    <field type="IntegerField" name="position">0</field>\r
+  </object>\r
+  <object pk="21" model="toolbar.buttongroup">\r
+    <field type="CharField" name="name">Bloki</field>\r
+    <field type="SlugField" name="slug">bloki</field>\r
+    <field type="IntegerField" name="position">0</field>\r
+  </object>\r
+  <object pk="12" model="toolbar.buttongroup">\r
+    <field type="CharField" name="name">Dramat wierszowany</field>\r
+    <field type="SlugField" name="slug">dramat-wierszowany</field>\r
+    <field type="IntegerField" name="position">0</field>\r
+  </object>\r
+  <object pk="18" model="toolbar.buttongroup">\r
+    <field type="CharField" name="name">Dramat współczesny</field>\r
+    <field type="SlugField" name="slug">dramat-wspolczesny</field>\r
+    <field type="IntegerField" name="position">0</field>\r
+  </object>\r
+  <object pk="13" model="toolbar.buttongroup">\r
+    <field type="CharField" name="name">Elementy początkowe</field>\r
+    <field type="SlugField" name="slug">elementy-poczatkowe</field>\r
+    <field type="IntegerField" name="position">0</field>\r
+  </object>\r
+  <object pk="1" model="toolbar.buttongroup">\r
+    <field type="CharField" name="name">Nagłówki</field>\r
+    <field type="SlugField" name="slug">naglowki</field>\r
+    <field type="IntegerField" name="position">0</field>\r
+  </object>\r
+  <object pk="22" model="toolbar.buttongroup">\r
+    <field type="CharField" name="name">Początek dramatu</field>\r
+    <field type="SlugField" name="slug">poczatek-dramatu</field>\r
+    <field type="IntegerField" name="position">0</field>\r
+  </object>\r
+  <object pk="16" model="toolbar.buttongroup">\r
+    <field type="CharField" name="name">Polecenia</field>\r
+    <field type="SlugField" name="slug">polecenia</field>\r
+    <field type="IntegerField" name="position">0</field>\r
+  </object>\r
+  <object pk="11" model="toolbar.buttongroup">\r
+    <field type="CharField" name="name">Strukturalne</field>\r
+    <field type="SlugField" name="slug">strukturalne</field>\r
+    <field type="IntegerField" name="position">0</field>\r
+  </object>\r
+  <object pk="15" model="toolbar.buttongroup">\r
+    <field type="CharField" name="name">Style znakowe</field>\r
+    <field type="SlugField" name="slug">style-znakowe</field>\r
+    <field type="IntegerField" name="position">0</field>\r
+  </object>\r
+  <object pk="17" model="toolbar.buttongroup">\r
+    <field type="CharField" name="name">Wersy</field>\r
+    <field type="SlugField" name="slug">wersy</field>\r
+    <field type="IntegerField" name="position">0</field>\r
+  </object>\r
+  <object pk="3" model="toolbar.buttongroup">\r
+    <field type="CharField" name="name">Widok</field>\r
+    <field type="SlugField" name="slug">display_options</field>\r
+    <field type="IntegerField" name="position">2</field>\r
+  </object>\r
+  <object pk="5" model="toolbar.button">\r
+    <field type="CharField" name="label">A&lt;sup&gt;+&lt;/sup&gt;</field>\r
+    <field type="SlugField" name="slug">increase_font_size</field>\r
+    <field type="TextField" name="params">{"change": 2}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">codemirror_fontsize</field>\r
+    <field type="CharField" name="key">+</field>\r
+    <field type="CharField" name="tooltip">Zwiększ rozmiar czcionki.</field>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="3"/>\r
+    </field>\r
+  </object>\r
+  <object pk="6" model="toolbar.button">\r
+    <field type="CharField" name="label">A&lt;sup&gt;-&lt;/sup&gt;</field>\r
+    <field type="SlugField" name="slug">descrease_font_size</field>\r
+    <field type="TextField" name="params">{"change": -2}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">codemirror_fontsize</field>\r
+    <field type="CharField" name="key">-</field>\r
+    <field type="CharField" name="tooltip">Zmniejsz rozmiar czcionki.</field>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="3"/>\r
+    </field>\r
+  </object>\r
+  <object pk="7" model="toolbar.button">\r
+    <field type="CharField" name="label">A&lt;sup&gt;=&lt;/sup&gt;</field>\r
+    <field type="SlugField" name="slug">reset_font_size</field>\r
+    <field type="TextField" name="params">{"fontSize": 13}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">codemirror_fontsize</field>\r
+    <field type="CharField" name="key">=</field>\r
+    <field type="CharField" name="tooltip">Przywróć orginalny rozmiar czcionki.</field>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="3"/>\r
+    </field>\r
+  </object>\r
+  <object pk="76" model="toolbar.button">\r
+    <field type="CharField" name="label">A&lt;sup&gt;↓&lt;/sup&gt;</field>\r
+    <field type="SlugField" name="slug">tolowercase</field>\r
+    <field type="TextField" name="params">[]</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">lowercase</field>\r
+    <field type="CharField" name="key">u</field>\r
+    <field type="CharField" name="tooltip">Zamień wielkie litery na małe.</field>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="15"/>\r
+    </field>\r
+  </object>\r
+  <object pk="39" model="toolbar.button">\r
+    <field type="CharField" name="label">akapit</field>\r
+    <field type="SlugField" name="slug">akapit</field>\r
+    <field type="TextField" name="params">{"tag": "akap"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="14"/>\r
+    </field>\r
+  </object>\r
+  <object pk="40" model="toolbar.button">\r
+    <field type="CharField" name="label">akapit cd.</field>\r
+    <field type="SlugField" name="slug">akapit-cd</field>\r
+    <field type="TextField" name="params">{"tag": "akap_cd"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="14"/>\r
+    </field>\r
+  </object>\r
+  <object pk="41" model="toolbar.button">\r
+    <field type="CharField" name="label">akapit dialogowy</field>\r
+    <field type="SlugField" name="slug">akapit-dialogowy</field>\r
+    <field type="TextField" name="params">{"tag": "akap_dialog"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="14"/>\r
+    </field>\r
+  </object>\r
+  <object pk="14" model="toolbar.button">\r
+    <field type="CharField" name="label">akt</field>\r
+    <field type="SlugField" name="slug">akt</field>\r
+    <field type="TextField" name="params">{"tag": "akt"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="1"/>\r
+    </field>\r
+  </object>\r
+  <object pk="32" model="toolbar.button">\r
+    <field type="CharField" name="label">autor</field>\r
+    <field type="SlugField" name="slug">autor</field>\r
+    <field type="TextField" name="params">{"tag": "autor"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="13"/>\r
+    </field>\r
+  </object>\r
+  <object pk="10" model="toolbar.button">\r
+    <field type="CharField" name="label">część/księga</field>\r
+    <field type="SlugField" name="slug">czesc</field>\r
+    <field type="TextField" name="params">{"tag": "naglowek_czesc"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="1"/>\r
+    </field>\r
+  </object>\r
+  <object pk="74" model="toolbar.button">\r
+    <field type="CharField" name="label">dedykacja</field>\r
+    <field type="SlugField" name="slug">dedykacja</field>\r
+    <field type="TextField" name="params">{"tag": "dedykacja"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="13"/>\r
+      <object pk="22"/>\r
+    </field>\r
+  </object>\r
+  <object pk="62" model="toolbar.button">\r
+    <field type="CharField" name="label">didaskalia</field>\r
+    <field type="SlugField" name="slug">didaskalia</field>\r
+    <field type="TextField" name="params">{"tag": "didaskalia"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="12"/>\r
+      <object pk="18"/>\r
+    </field>\r
+  </object>\r
+  <object pk="79" model="toolbar.button">\r
+    <field type="CharField" name="label">didaskalia początkowe</field>\r
+    <field type="SlugField" name="slug">didaskalia-poczatkowe</field>\r
+    <field type="TextField" name="params">{"tag": "miejsce_czas"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="22"/>\r
+    </field>\r
+  </object>\r
+  <object pk="63" model="toolbar.button">\r
+    <field type="CharField" name="label">didaskalia wewn.</field>\r
+    <field type="SlugField" name="slug">didaskalia-wewn</field>\r
+    <field type="TextField" name="params">{"tag": "didask_tekst"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="18"/>\r
+      <object pk="15"/>\r
+    </field>\r
+  </object>\r
+  <object pk="20" model="toolbar.button">\r
+    <field type="CharField" name="label">dramat wiersz.</field>\r
+    <field type="SlugField" name="slug">dramat-wiersz</field>\r
+    <field type="TextField" name="params">{"tag": "dramat_wierszowany_l"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="11"/>\r
+    </field>\r
+  </object>\r
+  <object pk="22" model="toolbar.button">\r
+    <field type="CharField" name="label">dramat wiersz./w. łam</field>\r
+    <field type="SlugField" name="slug">dramat-wiersz-w-lam</field>\r
+    <field type="TextField" name="params">{"tag": "dramat_wierszowany_lp"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="11"/>\r
+    </field>\r
+  </object>\r
+  <object pk="21" model="toolbar.button">\r
+    <field type="CharField" name="label">dramat współczesny</field>\r
+    <field type="SlugField" name="slug">dramat-wspolczesny</field>\r
+    <field type="TextField" name="params">{"tag": "dramat_wspolczesny"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="11"/>\r
+    </field>\r
+  </object>\r
+  <object pk="38" model="toolbar.button">\r
+    <field type="CharField" name="label">dzieło nadrzędne</field>\r
+    <field type="SlugField" name="slug">dzielo-nadrzedne</field>\r
+    <field type="TextField" name="params">{"tag": "dzielo_nadrzedne"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="13"/>\r
+    </field>\r
+  </object>\r
+  <object pk="67" model="toolbar.button">\r
+    <field type="CharField" name="label">długi cyt. poet.</field>\r
+    <field type="SlugField" name="slug">dlugi-cyt-poet</field>\r
+    <field type="TextField" name="params">{"tag": "poezja_cyt"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="14"/>\r
+      <object pk="21"/>\r
+    </field>\r
+  </object>\r
+  <object pk="42" model="toolbar.button">\r
+    <field type="CharField" name="label">długi cytat</field>\r
+    <field type="SlugField" name="slug">dlugi-cytat</field>\r
+    <field type="TextField" name="params">{"tag": "dlugi_cyt"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="14"/>\r
+      <object pk="21"/>\r
+    </field>\r
+  </object>\r
+  <object pk="52" model="toolbar.button">\r
+    <field type="CharField" name="label">ekstra</field>\r
+    <field type="SlugField" name="slug">ekstra</field>\r
+    <field type="TextField" name="params">{"tag": "ekstra"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="15"/>\r
+    </field>\r
+  </object>\r
+  <object pk="82" model="toolbar.button">\r
+    <field type="CharField" name="label">kwestia</field>\r
+    <field type="SlugField" name="slug">kwestia</field>\r
+    <field type="TextField" name="params">{"tag": "kwestia"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="12"/>\r
+      <object pk="18"/>\r
+    </field>\r
+  </object>\r
+  <object pk="23" model="toolbar.button">\r
+    <field type="CharField" name="label">liryka</field>\r
+    <field type="SlugField" name="slug">liryka</field>\r
+    <field type="TextField" name="params">{"tag": "liryka_l"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="11"/>\r
+    </field>\r
+  </object>\r
+  <object pk="24" model="toolbar.button">\r
+    <field type="CharField" name="label">liryka/w. łam</field>\r
+    <field type="SlugField" name="slug">liryka-w-lam</field>\r
+    <field type="TextField" name="params">{"tag": "liryka_lp"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="11"/>\r
+    </field>\r
+  </object>\r
+  <object pk="78" model="toolbar.button">\r
+    <field type="CharField" name="label">lista osób: pole</field>\r
+    <field type="SlugField" name="slug">lista-osob-pole</field>\r
+    <field type="TextField" name="params">{"tag": "lista_osoba", "attrs": {"typ": ""}}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="22"/>\r
+    </field>\r
+  </object>\r
+  <object pk="47" model="toolbar.button">\r
+    <field type="CharField" name="label">mamtemat.</field>\r
+    <field type="SlugField" name="slug">matemat</field>\r
+    <field type="TextField" name="params">{"tag": "mat"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="15"/>\r
+    </field>\r
+  </object>\r
+  <object pk="75" model="toolbar.button">\r
+    <field type="CharField" name="label">motto</field>\r
+    <field type="SlugField" name="slug">motto</field>\r
+    <field type="TextField" name="params">{"tag": "motto"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="13"/>\r
+      <object pk="22"/>\r
+    </field>\r
+  </object>\r
+  <object pk="37" model="toolbar.button">\r
+    <field type="CharField" name="label">motto podpis</field>\r
+    <field type="SlugField" name="slug">motto-podpis</field>\r
+    <field type="TextField" name="params">{"tag": "motto_podpis"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="13"/>\r
+    </field>\r
+  </object>\r
+  <object pk="16" model="toolbar.button">\r
+    <field type="CharField" name="label">nagłówek kwestii</field>\r
+    <field type="SlugField" name="slug">naglowek-kwestii</field>\r
+    <field type="TextField" name="params">{"tag": "naglowek_osoba"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="1"/>\r
+    </field>\r
+  </object>\r
+  <object pk="35" model="toolbar.button">\r
+    <field type="CharField" name="label">nota</field>\r
+    <field type="SlugField" name="slug">nota</field>\r
+    <field type="TextField" name="params">{"tag": "nota"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="13"/>\r
+    </field>\r
+  </object>\r
+  <object pk="18" model="toolbar.button">\r
+    <field type="CharField" name="label">opowiadanie</field>\r
+    <field type="SlugField" name="slug">opowiadanie</field>\r
+    <field type="TextField" name="params">{"tag": "opowiadanie"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="11"/>\r
+    </field>\r
+  </object>\r
+  <object pk="64" model="toolbar.button">\r
+    <field type="CharField" name="label">osoba</field>\r
+    <field type="SlugField" name="slug">osoba</field>\r
+    <field type="TextField" name="params">{"tag": "osoba"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="18"/>\r
+      <object pk="15"/>\r
+    </field>\r
+  </object>\r
+  <object pk="12" model="toolbar.button">\r
+    <field type="CharField" name="label">podrozdział</field>\r
+    <field type="SlugField" name="slug">podrozdzial</field>\r
+    <field type="TextField" name="params">{"tag": "naglowek_podrozdzial"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="1"/>\r
+    </field>\r
+  </object>\r
+  <object pk="4" model="toolbar.button">\r
+    <field type="CharField" name="label">Podstawowa</field>\r
+    <field type="SlugField" name="slug">basic_correction</field>\r
+    <field type="TextField" name="params">{"exprs": [["\n\\d+\n", "\n"], ["-\\s*\n+", ""], ["\\,\\.\\.|\\.\\,\\.|\\.\\.\\,", "..."]]}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">fulltextregexp</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip">Wykonuję operację z novel-pages i poem-pages.</field>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="2"/>\r
+    </field>\r
+  </object>\r
+  <object pk="34" model="toolbar.button">\r
+    <field type="CharField" name="label">podtytuł</field>\r
+    <field type="SlugField" name="slug">podtytul</field>\r
+    <field type="TextField" name="params">{"tag": "podtytul"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="13"/>\r
+    </field>\r
+  </object>\r
+  <object pk="19" model="toolbar.button">\r
+    <field type="CharField" name="label">powieść</field>\r
+    <field type="SlugField" name="slug">powiesc</field>\r
+    <field type="TextField" name="params">{"tag": "powiesc"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="11"/>\r
+    </field>\r
+  </object>\r
+  <object pk="68" model="toolbar.button">\r
+    <field type="CharField" name="label">przypis autorski</field>\r
+    <field type="SlugField" name="slug">przypis-autorski</field>\r
+    <field type="TextField" name="params">{"tag": "pa"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="21"/>\r
+    </field>\r
+  </object>\r
+  <object pk="71" model="toolbar.button">\r
+    <field type="CharField" name="label">przypis edytorski</field>\r
+    <field type="SlugField" name="slug">przypis-edytorski</field>\r
+    <field type="TextField" name="params">{"tag": "pe"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="21"/>\r
+    </field>\r
+  </object>\r
+  <object pk="70" model="toolbar.button">\r
+    <field type="CharField" name="label">przypis redaktorski</field>\r
+    <field type="SlugField" name="slug">przypis-redaktorski</field>\r
+    <field type="TextField" name="params">{"tag": "pr"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="21"/>\r
+    </field>\r
+  </object>\r
+  <object pk="69" model="toolbar.button">\r
+    <field type="CharField" name="label">przypis tłumacza</field>\r
+    <field type="SlugField" name="slug">przypis-tlumacza</field>\r
+    <field type="TextField" name="params">{"tag": "pt"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="21"/>\r
+    </field>\r
+  </object>\r
+  <object pk="11" model="toolbar.button">\r
+    <field type="CharField" name="label">rozdział</field>\r
+    <field type="SlugField" name="slug">rozdzial</field>\r
+    <field type="TextField" name="params">{"tag": "naglowek_rozdzial"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="1"/>\r
+    </field>\r
+  </object>\r
+  <object pk="15" model="toolbar.button">\r
+    <field type="CharField" name="label">scena</field>\r
+    <field type="SlugField" name="slug">scena</field>\r
+    <field type="TextField" name="params">{"tag": "naglowek_scena"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="1"/>\r
+    </field>\r
+  </object>\r
+  <object pk="54" model="toolbar.button">\r
+    <field type="CharField" name="label">sep. asteryks</field>\r
+    <field type="SlugField" name="slug">sep-asteryks</field>\r
+    <field type="TextField" name="params">{"tag": "sekcja_asteryks"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="16"/>\r
+    </field>\r
+  </object>\r
+  <object pk="55" model="toolbar.button">\r
+    <field type="CharField" name="label">sep. linia</field>\r
+    <field type="SlugField" name="slug">sep-linia</field>\r
+    <field type="TextField" name="params">{"tag": "separator_linia"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="16"/>\r
+    </field>\r
+  </object>\r
+  <object pk="53" model="toolbar.button">\r
+    <field type="CharField" name="label">sep. światło</field>\r
+    <field type="SlugField" name="slug">sep-swiatlo</field>\r
+    <field type="TextField" name="params">{"tag": "sekcja_swiatlo"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="16"/>\r
+    </field>\r
+  </object>\r
+  <object pk="13" model="toolbar.button">\r
+    <field type="CharField" name="label">śródtytuł</field>\r
+    <field type="SlugField" name="slug">srodtytul</field>\r
+    <field type="TextField" name="params">{"tag": "srodtytul"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="1"/>\r
+    </field>\r
+  </object>\r
+  <object pk="81" model="toolbar.button">\r
+    <field type="CharField" name="label">strofa</field>\r
+    <field type="SlugField" name="slug">strofa</field>\r
+    <field type="TextField" name="params">{"tag": "strofa"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key">s</field>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="12"/>\r
+      <object pk="17"/>\r
+    </field>\r
+  </object>\r
+  <object pk="46" model="toolbar.button">\r
+    <field type="CharField" name="label">słowo obce</field>\r
+    <field type="SlugField" name="slug">slowo-obce</field>\r
+    <field type="TextField" name="params">{"tag": "slowo_obce"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="15"/>\r
+    </field>\r
+  </object>\r
+  <object pk="17" model="toolbar.button">\r
+    <field type="CharField" name="label">tagi główne</field>\r
+    <field type="SlugField" name="slug">tagi-glowne</field>\r
+    <field type="TextField" name="params">{"tag": "utwor"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="11"/>\r
+    </field>\r
+  </object>\r
+  <object pk="33" model="toolbar.button">\r
+    <field type="CharField" name="label">tytuł</field>\r
+    <field type="SlugField" name="slug">tytul</field>\r
+    <field type="TextField" name="params">{"tag": "nazwa_utworu"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="13"/>\r
+    </field>\r
+  </object>\r
+  <object pk="45" model="toolbar.button">\r
+    <field type="CharField" name="label">tytuł dzieła</field>\r
+    <field type="SlugField" name="slug">tytul-dziela</field>\r
+    <field type="TextField" name="params">{"tag": "tytul_dziela", "attrs": {"typ": "1"}}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="15"/>\r
+    </field>\r
+  </object>\r
+  <object pk="3" model="toolbar.button">\r
+    <field type="CharField" name="label">Usuń spację</field>\r
+    <field type="SlugField" name="slug">strip_whitespace</field>\r
+    <field type="TextField" name="params">{"exprs": [["^\\s+|\\s+$", ""], ["\\s+", " "]]}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">lineregexp</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip">Usuwa zbędne spację z dokumentu.</field>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="2"/>\r
+    </field>\r
+  </object>\r
+  <object pk="51" model="toolbar.button">\r
+    <field type="CharField" name="label">uwaga</field>\r
+    <field type="SlugField" name="slug">uwaga</field>\r
+    <field type="TextField" name="params">{"tag": "uwaga"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="15"/>\r
+    </field>\r
+  </object>\r
+  <object pk="83" model="toolbar.button">\r
+    <field type="CharField" name="label">wers akap.</field>\r
+    <field type="SlugField" name="slug">wers-akap</field>\r
+    <field type="TextField" name="params">{"tag": "wers_akap"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="12"/>\r
+      <object pk="17"/>\r
+    </field>\r
+  </object>\r
+  <object pk="85" model="toolbar.button">\r
+    <field type="CharField" name="label">wers cd.</field>\r
+    <field type="SlugField" name="slug">wers-cd</field>\r
+    <field type="TextField" name="params">{"tag": "wers_cd"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="12"/>\r
+      <object pk="17"/>\r
+    </field>\r
+  </object>\r
+  <object pk="84" model="toolbar.button">\r
+    <field type="CharField" name="label">Wers wcięty</field>\r
+    <field type="SlugField" name="slug">wers-wciety</field>\r
+    <field type="TextField" name="params">{"tag": "wers_wciety", "attrs": {"typ": ""}}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="12"/>\r
+      <object pk="17"/>\r
+    </field>\r
+  </object>\r
+  <object pk="48" model="toolbar.button">\r
+    <field type="CharField" name="label">www</field>\r
+    <field type="SlugField" name="slug">www</field>\r
+    <field type="TextField" name="params">{"tag": "www"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="15"/>\r
+    </field>\r
+  </object>\r
+  <object pk="44" model="toolbar.button">\r
+    <field type="CharField" name="label">wyróżnienie</field>\r
+    <field type="SlugField" name="slug">wyroznienie</field>\r
+    <field type="TextField" name="params">{"tag": "wyroznienie"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="15"/>\r
+    </field>\r
+  </object>\r
+  <object pk="25" model="toolbar.button">\r
+    <field type="CharField" name="label">wywiad</field>\r
+    <field type="SlugField" name="slug">wywiad</field>\r
+    <field type="TextField" name="params">{"tag": "wywiad"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="11"/>\r
+    </field>\r
+  </object>\r
+  <object pk="73" model="toolbar.button">\r
+    <field type="CharField" name="label">wywiad odpowiedź</field>\r
+    <field type="SlugField" name="slug">wywiad-odpowiedz</field>\r
+    <field type="TextField" name="params">{"tag": "wywiad_odp"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="21"/>\r
+    </field>\r
+  </object>\r
+  <object pk="72" model="toolbar.button">\r
+    <field type="CharField" name="label">wywiad pytanie</field>\r
+    <field type="SlugField" name="slug">wywiad-pytanie</field>\r
+    <field type="TextField" name="params">{"tag": "wywiad_pyt"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="21"/>\r
+    </field>\r
+  </object>\r
+  <object pk="77" model="toolbar.button">\r
+    <field type="CharField" name="label">Zamień cudzysłowy</field>\r
+    <field type="SlugField" name="slug">zamien-cudzyslowy</field>\r
+    <field type="TextField" name="params">{"exprs": [["\u00bb|\u201e", ",,"], ["\u00ab", "\""], ["\"([\u0104\u0118\u00d3\u0141\u017b\u0179\u0106\u0143\u0105\u017c\u017a\u015b\u0144\u00f3\u0142\u0107\\w])", ",,$1"]]}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">lineregexp</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="2"/>\r
+    </field>\r
+  </object>\r
+  <object pk="2" model="toolbar.button">\r
+    <field type="CharField" name="label">Zamień dywiz</field>\r
+    <field type="SlugField" name="slug">zamien_dywiz</field>\r
+    <field type="TextField" name="params">{"exprs": [["(\\d)[\u2014-](\\d)", "$1--$2"], ["\u2014", "---"]]}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">lineregexp</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip">Zamienia '—' na '---', oraz '1—2' na '1--2'.</field>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="2"/>\r
+    </field>\r
+  </object>\r
+  <object pk="56" model="toolbar.button">\r
+    <field type="CharField" name="label">zastępnik wersu</field>\r
+    <field type="SlugField" name="slug">zastepnik-wersu</field>\r
+    <field type="TextField" name="params">{"tag": "zastepnik_wersu"}</field>\r
+    <field to="toolbar.scriptlet" name="scriptlet" rel="ManyToOneRel">insert_tag</field>\r
+    <field type="CharField" name="key"/>\r
+    <field type="CharField" name="tooltip"/>\r
+    <field to="toolbar.buttongroup" name="group" rel="ManyToManyRel">\r
+      <object pk="16"/>\r
+    </field>\r
+  </object>\r
+  <object pk="insert_tag" model="toolbar.scriptlet">\r
+    <field type="TextField" name="code">var texteditor = panel.texteditor;\r
+\r
+var text = texteditor.selection();\r
+\r
+var out = '&lt;'+params.tag;\r
+\r
+for (var attr in params.attrs) {\r
+\r
+    out += ' '+attr+'="' + params.attrs[attr] + '"';\r
+\r
+};\r
+\r
+out += '&gt;';\r
+\r
+out += text;\r
+\r
+out += '&lt;/' + params.tag + '&gt;';\r
+\r
\r
+\r
+texteditor.replaceSelection(out);\r
+\r
+\r
+\r
+if (text.length == 0) {\r
+\r
+    var pos = texteditor.cursorPosition();\r
+\r
+    texteditor.selectLines(pos.line, pos.character + params.tag.length + 2);\r
+\r
+}\r
+\r
+\r
+\r
+panel.fireEvent('contentChanged');</field>\r
+  </object>\r
+  <object pk="lineregexp" model="toolbar.scriptlet">\r
+    <field type="TextField" name="code">editor.showPopup('generic-info', 'Przetwarzanie zaznaczonego tekstu...', '', -1);\r
+\r
+var cm = panel.texteditor;\r
+var exprs = $.map(params.exprs, function(expr) {\r
+\r
+    var opts = "g";\r
+\r
+    if(expr.length &gt; 2)\r
+\r
+        opts = expr[2];\r
+\r
+    return {rx: new RegExp(expr[0], opts), repl: expr[1]};\r
+\r
+});\r
+\r
+\r
+\r
+var partial = true;\r
+\r
+var text = cm.selection();\r
+\r
+\r
+\r
+if(!text) {\r
+\r
+    var cpos = cm.cursorPosition();\r
+\r
+    cpos.line = cm.lineNumber(cpos.line)\r
+\r
+    cm.selectLines(cm.firstLine(), 0, cm.lastLine(), 0);\r
+\r
+    text = cm.selection();\r
+\r
+    partial = false;\r
+\r
+}\r
+\r
+\r
+\r
+var changed = 0;\r
+var lines = text.split('\n');\r
+var lines = $.map(lines, function(line) { \r
+    var old_line = line;\r
+    $(exprs).each(function() { \r
+        var expr = this;\r
+        line = line.replace(expr.rx, expr.repl);\r
+    });\r
+\r
+    if(old_line != line) changed += 1;\r
+    return line;\r
+});\r
+\r
+if(changed &gt; 0) \r
+{\r
+    cm.replaceSelection( lines.join('\n') );\r
+    panel.fireEvent('contentChanged');\r
+    editor.showPopup('generic-yes', 'Zmieniono ' + changed + ' linii.', 1500);\r
+    editor.advancePopupQueue();\r
+}\r
+else {\r
+    editor.showPopup('generic-info',  'Brak zmian w tekście', 1500);\r
+    editor.advancePopupQueue();\r
+}\r
+\r
+if(!partial)\r
+    cm.selectLines( cm.nthLine(cpos.line), cpos.character )</field>\r
+  </object>\r
+  <object pk="codemirror_fontsize" model="toolbar.scriptlet">\r
+    <field type="TextField" name="code">var texteditor = panel.texteditor;\r
+\r
+var frameBody = $('body', $(texteditor.frame).contents());\r
+\r
+\r
+\r
+if(params.fontSize) {\r
+\r
+    frameBody.css('font-size', params.fontSize);\r
+\r
+}\r
+\r
+else {\r
+\r
+    var old_size = parseInt(frameBody.css('font-size'));\r
+\r
+    frameBody.css('font-size', old_size + (params.change || 0) );\r
+\r
+}</field>\r
+  </object>\r
+  <object pk="fulltextregexp" model="toolbar.scriptlet">\r
+    <field type="TextField" name="code">editor.showPopup('generic-info', 'Przetwarzanie zaznaczonego tekstu...', '', -1);\r
+\r
+var cm = panel.texteditor;\r
+\r
+var exprs = $.map(params.exprs, function(expr) {\r
+    var opts = "mg";\r
+    if(expr.length &gt; 2)\r
+        opts = expr[2];\r
+\r
+    return {rx: new RegExp(expr[0], opts), repl: expr[1]};\r
+});\r
+\r
+var partial = true;\r
+var text = cm.selection();\r
+\r
+if(!text) {\r
+    var cpos = cm.cursorPosition();\r
+    cpos.line = cm.lineNumber(cpos.line)\r
+    cm.selectLines(cm.firstLine(), 0, cm.lastLine(), 0);\r
+\r
+    text = cm.selection();\r
+    partial = false;\r
+}\r
+\r
+\r
+\r
+var original = text;\r
+$(exprs).each(function() { \r
+    text = text.replace(this.rx, this.repl);\r
+});\r
+\r
+if( original != text) \r
+{    \r
+    cm.replaceSelection(text);\r
+    panel.fireEvent('contentChanged');\r
+    editor.showPopup('generic-yes', 'Zmieniono tekst' );\r
+    editor.advancePopupQueue();\r
+}\r
+else {\r
+    editor.showPopup('generic-info', 'Brak zmian w tekście.');\r
+    editor.advancePopupQueue();\r
+}\r
+\r
+if(!partial) {\r
+    cm.selectLines( cm.nthLine(cpos.line), cpos.character );\r
+}</field>\r
+  </object>\r
+  <object pk="macro" model="toolbar.scriptlet">\r
+    <field type="TextField" name="code">params.each(function() {\r
+\r
+    editor.callScriptlet(this[0], this[1]);\r
+\r
+});</field>\r
+  </object>\r
+  <object pk="lowercase" model="toolbar.scriptlet">\r
+    <field type="TextField" name="code">var cm = panel.texteditor;\r
+\r
+var text = cm.selection();\r
+\r
+if(!text) return;\r
+\r
+var repl = text.toLowerCase();\r
+\r
+if(repl != text) {\r
+\r
+    cm.replaceSelection(repl);\r
+\r
+    panel.fireEvent('contentChanged');\r
+\r
+};</field>\r
+  </object>\r
+</django-objects>\r
diff --git a/fixtures/przyciski.yaml b/fixtures/przyciski.yaml
deleted file mode 100644 (file)
index a8cef76..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-- fields: {name: Autokorekta, position: 0, slug: autokorekta}\r
-  model: toolbar.buttongroup\r
-  pk: 2\r
-- fields: {name: Formatowanie, position: 0, slug: formatowanie}\r
-  model: toolbar.buttongroup\r
-  pk: 1\r
-- fields:\r
-    group: [2]\r
-    key: ''\r
-    label: Novelpages\r
-    params: "({exprs: [\r\n  [\"\\\\,\\\\.\\\\.|\\\\.\\\\,\\\\.|\\\\.\\\\.\\\\,\"\\r
-      , \"...\"],\r\n  [\"\u201E\", \",,\"] /* DOUBLE LOW-9 QUOTATION MARK */\r\n\\r
-      ]})\r\n  "\r
-    scriptlet: lineregexp\r
-    slug: novelpages\r
-    tooltip: "Wykonuj\u0119 operacj\u0119 z novel-pages."\r
-  model: toolbar.button\r
-  pk: 4\r
-- fields:\r
-    group: [2]\r
-    key: ''\r
-    label: "Usu\u0144 spacj\u0119"\r
-    params: '({exprs: [ ["^\\s+|\\s+$", ""], ["\\s+", " "] ]})'\r
-    scriptlet: lineregexp\r
-    slug: strip_whitespace\r
-    tooltip: "Usuwa zb\u0119dne spacj\u0119 z dokumentu."\r
-  model: toolbar.button\r
-  pk: 3\r
-- fields:\r
-    group: [1]\r
-    key: w\r
-    label: Wers\r
-    params: '({tag: ''wers''})'\r
-    scriptlet: insert_tag\r
-    slug: insert_verse\r
-    tooltip: Otacza zaznaczony tekst tagiem 'wers'.\r
-  model: toolbar.button\r
-  pk: 1\r
-- fields:\r
-    group: [2]\r
-    key: ''\r
-    label: "Zamie\u0144 dywiz"\r
-    params: "({exprs:[ [\"\u2014\",\"---\"] ]})"\r
-    scriptlet: lineregexp\r
-    slug: zamien_dywiz\r
-    tooltip: "Zamienia '\u2014' na '---'."\r
-  model: toolbar.button\r
-  pk: 2\r
-- fields: {code: "$.log(editor, panel, params);\r\n\r\nvar texteditor = panel.texteditor;\r\\r
-      \nvar text = texteditor.selection();\r\ntexteditor.replaceSelection('<' + params.tag\\r
-      \ + '>' + text + '</' + params.tag + '>');\r\nif (text.length == 0) \r\n{\r\n\\r
-      \    var pos = texteditor.cursorPosition();\r\n    texteditor.selectLines(pos.line,\\r
-      \ pos.character + params.tag.length + 2);\r\n}\r\n\r\npanel.fireEvent('contentChanged');"}\r
-  model: toolbar.scriptlet\r
-  pk: insert_tag\r
-- fields: {code: "// params: {exprs: list of {expr: \"\", repl: \"\" [, opts: \"g\"\\r
-      ]}}\r\nvar cm = panel.texteditor;\r\n\r\nvar exprs = $.map(params.exprs, function(expr)\\r
-      \ {\r\n    var opts = \"g\";\r\n    if(expr.length > 2)\r\n        opts = expr[2];\r\\r
-      \n    return {rx: new RegExp(expr[0], opts), repl: expr[1]};\r\n});\r\n\r\n\\r
-      var selection = cm.selection();\r\n\r\nif(selection) \r\n{\r\n    var lines\\r
-      \ = selection.split('\\n');\r\n    lines = $.map(lines, function(line) { \r\n\\r
-      \        $(exprs).each(function() { \r\n            var expr = this;\r\n   \\r
-      \         line = line.replace(expr.rx, expr.repl);\r\n        });\r\n      \\r
-      \  return line;\r\n    });\r\n    cm.replaceSelection( lines.join('\\n') );\r\\r
-      \n}\r\nelse {\r\n    var line = cm.firstLine();\r\n    do {\r\n        var content\\r
-      \ = cm.lineContent(line);\r\n        $.log(\"Swapping line: $\" + content +\\r
-      \ \"$\");\r\n    \r\n        $(exprs).each(function() { var expr = this;\r\n\\r
-      \            content = content.replace(expr.rx, expr.repl);\r\n        });\r\\r
-      \n        cm.setLineContent(line, content);\r\n        line = cm.nextLine(line);\r\\r
-      \n    } while( !(line === false) );\r\n}"}\r
-  model: toolbar.scriptlet\r
-  pk: lineregexp\r
-\r
index 3490b9a..f7f4cf3 100644 (file)
@@ -1,3 +1,21 @@
+function Hotkey(code) {
+    this.code = code
+    this.has_alt = ((code & 0x01 << 8) != 0)
+    this.has_ctrl = ((code & 0x01 << 9) != 0)
+    this.has_shift = ((code & 0x01 << 10) != 0)
+    this.character = String.fromCharCode(code & 0xff)
+}
+
+
+Hotkey.prototype.toString = function() {
+    mods = []
+    if(this.has_alt) mods.push('Alt')
+    if(this.has_ctrl) mods.push('Ctrl')
+    if(this.has_shift) mods.push('Shift')
+    mods.push('"'+this.character+'"')
+    return mods.join('+')
+}
+
 function Panel(panelWrap) {
     var self = this;
     self.hotkeys = [];
@@ -122,12 +140,12 @@ Panel.prototype.connectToolbar = function()
     // connect group-switch buttons
     var group_buttons = $('*.toolbar-tabs-container button', toolbar);
 
-    $.log('Found groups:', group_buttons);
+    // $.log('Found groups:', group_buttons);
 
     group_buttons.each(function() {
         var group = $(this);
         var group_name = group.attr('ui:group');
-        $.log('Connecting group: ' + group_name);
+        // $.log('Connecting group: ' + group_name);
 
         group.click(function() {
             // change the active group
@@ -151,6 +169,7 @@ Panel.prototype.connectToolbar = function()
     action_buttons.each(function() {
         var button = $(this);
         var hk = button.attr('ui:hotkey');
+        if(hk) hk = new Hotkey( parseInt(hk) );
 
         try {
             var params = $.evalJSON(button.attr('ui:action-params'));
@@ -166,15 +185,18 @@ Panel.prototype.connectToolbar = function()
 
         // connect button
         button.click(callback);
-        
+       
         // connect hotkey
-        if(hk) self.hotkeys[parseInt(hk)] = callback;
-
+        if(hk) {
+            self.hotkeys[hk.code] = callback;
+             $.log('hotkey', hk);
+        }
+        
         // tooltip
         if (button.attr('ui:tooltip') )
         {
             var tooltip = button.attr('ui:tooltip');
-            if(hk) tooltip += ' [Alt+'+hk+']';
+            if(hk) tooltip += ' ['+hk+']';
 
             button.wTooltip({
                 delay: 1000,
@@ -193,13 +215,24 @@ Panel.prototype.connectToolbar = function()
 
 Panel.prototype.hotkeyPressed = function(event)
 {
-    var callback = this.hotkeys[event.keyCode];
+    code = event.keyCode;
+    if(event.altKey) code = code | 0x100;
+    if(event.ctrlKey) code = code | 0x200;
+    if(event.shiftKey) code = code | 0x400;
+
+    var callback = this.hotkeys[code];
     if(callback) callback();
 }
 
 Panel.prototype.isHotkey = function(event) {
-    if( event.altKey && (this.hotkeys[event.keyCode] != null) )
+    code = event.keyCode;
+    if(event.altKey) code = code | 0x100;
+    if(event.ctrlKey) code = code | 0x200;
+    if(event.shiftKey) code = code | 0x400;
+
+    if(this.hotkeys[code] != null)
         return true;
+        
     return false;
 }
 
@@ -522,7 +555,7 @@ Editor.prototype.showPopup = function(name, text, timeout)
 
     var box = $('#message-box > #' + name);
     $('*.data', box).html(text || '');
-    box.fadeIn();
+    box.fadeIn(100);
  
     if(timeout > 0)
         setTimeout( $.fbind(self, self.advancePopupQueue), timeout);
@@ -534,14 +567,14 @@ Editor.prototype.advancePopupQueue = function() {
     if(elem) {
         var box = $('#message-box > #' + elem[0]);
 
-        box.fadeOut(200, function()
+        box.fadeOut(100, function()
         {
-            $('*.data', box).html();
+            $('*.data', box).html('');
 
             if( self.popupQueue.length > 0) {
                 var ibox = $('#message-box > #' + self.popupQueue[0][0]);
-                $('*.data', ibox).html(self.popupQueue[0][1]);
-                ibox.fadeIn();
+                $('*.data', ibox).html(self.popupQueue[0][1] || '');
+                ibox.fadeIn(100);
                 if(self.popupQueue[0][2] > 0)
                     setTimeout( $.fbind(self, self.advancePopupQueue), self.popupQueue[0][2]);
             }
index a36d353..d47a158 100644 (file)
@@ -48,7 +48,9 @@ $(function() {
 <div class="upload-file-widget">
 <h2>Dodaj nowy utwór</h2>
 <form action="{% url file_upload %}" method="POST" enctype="multipart/form-data">
-    {{ bookform.as_p }}
+    <p><label>{{bookform.file.label}}: {{ bookform.file }}</label></p>
+    <p><label>{{bookform.bookname.label}}: {{bookform.bookname}}</label></p>
+    <p><label>{{bookform.autoxml}} {{bookform.autoxml.label}}</label></p>
     <p><button type="submit">Dodaj książkę</button></p>
 </form>
 </div>
index 3a1baf1..5c622bb 100644 (file)
@@ -16,7 +16,7 @@ panel_hooks = {
         var textareaId = 'xmleditor-' + Math.ceil(Math.random() * 1000000000);
        $('textarea', panel).attr('id', textareaId);
 
-       var texteditor = CodeMirror.fromTextArea(textareaId, {
+       var texteditor = CodeMirror.fromTextArea(textareaId, {            
             parserfile: 'parsexml.js',
             path: "{{STATIC_URL}}js/codemirror/",
             stylesheet: "{{STATIC_URL}}css/xmlcolors.css",