Method _patchLog() moved from AMultiTweakItem to MultiTweakItem:

Not a final change but it is cleaner now.
C/P MultiTweakItem got methods from C/P Patcher classes

Still same questions as in patchers/base - would it make any sense to make
 getRead/WriteClasses() into classmethods ?

 # This is the 2nd commit message:

apply(self,modFile,record,bashTags) -> (self,modFile,record)

 # This is the 3rd commit message:

Revert "apply(self,modFile,record,bashTags) -> (self,modFile,record)"

This reverts commit e0504690814051ed4d2175d0b6a20c8010b2f424.
Can't readily find where apply() is called - I want apply to have 3 arguments
(since the fourth is never used) but it'll have to wait

Traceback (most recent call last):
  File "bash\basher.py", line 6958, in Execute
  File "bash\bosh.py", line 11024, in buildPatch
TypeError: apply() takes exactly 3 arguments (4 given)
[multitweak_clothes]getTypes() method moved to super class
New _AMultiTweakItem_Names class defining common logging patterns:

self.logMsg NOT USED - this is a bit unelegant (see comments in
_AMultiTweakItem_Names)
ClothesTweaker: Factoring out common strings in C/P patches:

Initially I tried something in the lines of:

_unblock = ...
_max_weight = ...
class _AClothesTweaker(AMultiTweaker):

    @staticmethod
    def _unblockCls(): raise AbstractError
    @staticmethod
    def _weightCls(): raise AbstractError
    # ...
    tweaks = sorted(
        [_unblockCls.__func__()(*x) for x in _unblock] +
		[_weightCls.__func__()(*x) for x in _max_weight],
        key=lambda a: a.label.lower())

class ClothesTweaker(_AClothesTweaker,MultiTweaker):

    @staticmethod
    def _unblockCls(): return ClothesTweak_Unblock
    @staticmethod
    def _weightCls(): return ClothesTweak_MaxWeight

Failed screaming:

fail bash\patcher\oblivion\patchers\multitweak_clothes.py
fail bash\basher.py
fail bash\patcher\oblivion\patchers\multitweak_clothes.py
fail bash\basher.py

Had to change the launcher to see even this cryptic "fail" message:

------------------------- Mopy/Wrye Bash Launcher.pyw -------------------------
index 9c17bd3..569a7fa 100644
@@ -86,2 +86,5 @@ if __name__ == '__main__':
     from bash import bash
-    bash.main()
+    try:
+        bash.main()
+    except:
+        raw_input('Well well')

Was an overkill anyway
NamesTweaker - Factoring out common strings in C/P patches
[Format Strings]Taking format strings out of translatable strings:

See #55.

I basically took the numbers right out - but used dictionaries in:

- Mopy/bash/patcher/oblivion/patchers/multitweak_settings.py
```
-        log(u'* '+_(u'%s set to: %4.2f') % (self.label,value))
+        log(u'* ' + _(u'%(label) set to') % {
+            'label': (u'%s ' % self.label)} + (u': %4.2f' % value))

 class CBash_GlobalsTweak(CBash_MultiTweakItem):

     def buildPatchLog(self,log):
         """Will write to log."""
         #--Log
-        if self.count:
-            log(u'  * '+_(u'%s set to: %4.2f') % (self.label,self.value))
+        if self.count: log(u'* ' + _(u'%(label) set to') % {
+            'label': (u'%s ' % self.label)} + (u': %4.2f' % self.value))
```
- Mopy/bash/patcher/oblivion/patchers/multitweak_names.py
```
@@ -135,3 +135,4 @@ def __init__(self, label, tip, key, *choices, **kwargs):
                                                     **kwargs)
-        self.logMsg = u'* '+ (u'%s ' % self.key) + _(u'Renamed') + u': %d'
+        self.logMsg = u'* ' + _(u'%(record_type)s Renamed') % {
+            'record_type': (u'%s ' % self.key)} + u': %d'

@@ -190,3 +191,4 @@ def __init__(self):
             )
-        self.logMsg = u'* '+ (u'%s ' % self.key) + _(u'Renamed') + u': %d'
+        self.logMsg = u'* ' + _(u'%(record_type)s Renamed') % {
+            'record_type': (u'%s ' % self.key)} + u': %d'
```

Initial regex:
_\(u'([^%)]*)([%].)'\)
Replace:
_(u'$1') + u'$2'
and some manual...

Then I decided it was a good idea to take also colons and spaces out

Notice self.logMsg added in multitweak_actors.NoBloodCreaturesPatcher

Fix: had missed s's in the format string - very difficult to debug (was looking
for `et to`)

-        log(u'* ' + _(u'%(label) set to') % {
+        log(u'* ' + _(u'%(label)s set to') % {
             'label': (u'%s ' % self.label)} + (u': %4.2f' % value))

-        if self.count: log(u'* ' + _(u'%(label) set to') % {
+        if self.count: log(u'* ' + _(u'%(label)s set to') % {
Merge branch 'utumno-refactoring-tweakers' into dev:

Features

- taking format strings out of translatable strings (see #55)
- MI for some C/P patchers to factor out common strings
- common code moved to (CBash_)MultiTweakItem - see comments there