Unicode Wizard: Плагин для FAR
                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                    (Файл, который обычно читают первым ;-))

                Проголосуйте, пожалуйста, за UWizard на плагринге:
             http://plugring.farmanager.com/cgi-bin/voter.cgi?ID=337
                       Для вас пустяк, а мне приятно :-)


   Для поддержки разработки программы можно пожертвовать некоторую сумму. Вот
     мои кошельки в системе WebMoney.ru (www.wmtransfer.com): Z787475721790
        (для USD), E876273527569 (для Euro), R538290555814 (для рублей).


1. Что это за программа
2. Зачем она вообще появилась
3. Как она работает
4. Системные требования
5. Регистрация
6. Установка и удаление
7. Настройки в ini-файле
8. Где брать новые версии
9. Благодарности

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Что это за программа

   Это плагин для FAR'а, предназначен для "редактирования" и "просмотра" файлов
в кодировке Unicode,  UTF-7,  UTF-8,  quoted-printable  и  base64  (для  base64
реализовано только декодирование  и  только  в  редакторе).  UWizard  позволяет
считать подобные файлы архивами. Войдя в такой "архив" вы увидите  там  файл  с
содержимым оригинального файла, но уже  в  кодировке  OEM,  который  вы  можете
помимо всего прочего редактировать(!),  причем  его  изменения  скажутся  и  на
оригинальном файле. UWizard также запускается в  редакторе  и  обрабатывает  по
запросу весь файл или только выделенную его часть.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2. Зачем она вообще появилась

   Давно хотел написать плагин, создающий свою панель, да попробовать не на чем
было :) А тут недавно поставил новый winrar, а  он,  оказывается,  экспортирует
свои настройки в unicode. "И ты, Брут?" - подумал я... Женя,  конечно,  отмазку
сразу выдал на гора - это, мол, regedit шалит, но мне от этого легче не  стало.
В результате где-то через полчаса после этих событий на свет появился  UWizard,
причем он даже заработал с первой попытки. Надеюсь, вам  он  будет  служить  не
хуже, чем мне, несмотря на то, что его первую версию в  сеть  я  выложил  13-го
числа. В Пятницу.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3. Как она работает

   Нажмите enter на каком-нибудь файле. Если  этот  файл  начинается  с  0xFFFE
(Unicode), 0xFEFF  (Unicode  Big  Endian),  0xEFBBBF  (UTF-8)  или  его  данные
удовлетворяют UTF-8_MASK (см. настройки в ini-файле), то UWizard  откроет  свою
панель. Панель можно открыть и из командной строки  (см.  синтаксис  команды  в
справке). При таком запуске в случае попытки открытия юникодного файла  UWizard
откроет свою панель  даже  при  отсутствии  0xFEFF/0xFFFE,  но  в  этом  случае
считается, что плагину подсунут файл, который мог бы начинаться 0xFFFE.

   Файл в появившейся панели можно просматривать, редактировать,  копировать  с
панели. Его редактирование приведет к соответствующему изменению  оригинального
файла в unicode, UTF-7, UTF-8, quoted-printable.

   Не обращайте большого внимания на размер "файла" в панели плагина, ибо он не
всегда соответствует действительности (точнее - для  unicode  соответствует,  а
для всего остального - нет).

   А еще плагин предоставляет свои услуги в редакторе. UWizard умеет кодировать
содержимое редактируемого файла из текущей кодировки редактора в  UTF-7,  UTF-8
или quoted-printable и преобразовывать в кодировку редактора данные в  Unicode,
UTF-7, UTF-8 или quoted-printable.

   Также можно перекодировать файлы и открывать их в  редакторе  или  программе
просмотра   без   создания   панели   плагина,   для    этого    воспользуйтесь
соответствующими префиксами командной строки или  откройте  плагин  из  "команд
внешних модулей" (см. справку).

   На самом деле, конечно, прямого редактирования файла в указанных  кодировках
вы не добьетесь (это по определенным причинам сейчас сделать в Фаре  невозможно
вообще),  просто   Фар   при   помощи   UWizard   делает   все   преобразования
unicode/utf-7/utf-8/quoted-printable<->oem  незаметно  для  пользователя.   Для
редактирования файлов на русском и английском языке  этого  вполне  достаточно,
как это будет работать с другими языками - не знаю, не тестировал.

   Для перекодирования  из  OEM  в  Unicode  используется  стандартная  функция
Windows (MultiByteToWideChar из kernel32.dll), если по каким-либо причинам  вам
не нравится результат ее работы, то можно дополнительно вручную указать,  какие
символы OEM в какие соответствующие символы Unicode нужно  перекодировать.  Для
этого в специальный файл с именем uwizard.uni (если вы переименовали  плагин  в
myuw.dll, то этот специальный файл должен  иметь  имя  myuw.uni)  прописываются
пары "код_oem=код_unicode", где:
   код_oem    : двухзначный hex-код символа в кодировке OEM
   код_unicode: соответствующий ему четырехзначный hex-код символа
                в кодировке Unicode
   Пример     : 01=263A
   Этот файл должен лежать рядом с uwizard.dll, если он отсутствует или пустой,
то перекодировка идет как обычно - только с использованием MultiByteToWideChar.
Пример такого файла находится в дистрибутиве. Если вы  создали  на  его  основе
свой, который считаете более правильным, то присылайте его мне, чтобы вместе  с
плагином распространялся именно он.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4. Системные требования

   Чтобы плагин просто заработал, требуется FAR  Manager  1.70  beta  4  (build
1282) и выше.
   Чтобы включилась поддержка UTF-7/UTF-8, требуется NT/2000/ME/98, а под 95 вы
эту поддержку не заметите. По крайней мере, так говорится  в  msdn,  приходится
этому верить :-)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5. Регистрация

   Прочтите, пожалуйста, лицензию (License.txt) - там все написано.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
6. Установка и удаление

   Установить можно так же, как  и  большинство  прочих  плагинов  для  Фара:
   - Создайте подкаталог с произвольным именем в Far\Plugins и скопируйте  туда
файлы uwizard.dll, *.ini, *.uni, *.hlf и *.lng.
   - Перезапустите FAR
   - Теперь, если вы нажмете enter на файле  в  кодировке  unicode  или  utf-8,
плагин покажет себя во всей красе :) (плагин можно  запускать  и  из  командной
строки и открывать из меню плагинов - подробности в справке).

   Удаление плагина:
   - Сотрите каталог с плагином, который вы  создали  при  установке  (возможно
потребуется перезапустить Фар, чтобы тот "освободил" uwizard.dll)
   - Удалите записи плагина в реестр (например, при помощи uninstall.reg)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
7. Настройки в ini-файле

   Дополнительные настройки плагина  хранятся  в  файле  uwizard.ini  (если  вы
переименовали плагин в myuw.dll, то этот  специальный  файл  должен  иметь  имя
myuw.ini), который должен лежать рядом с uwizard.dll. Вот пример такого файла:
------ начало  ------
[settings]
Prefix="UW:UTF7:UTF8:QP:UBE:UWA"
AddToPanelMenu=1
PrcOFP=1
SIA=0
UTF-8_MASK="<[?]xml*encoding=["']utf-8["']*[?]>*"
------ кончало ------

   Переменная Prefix содержит, как это ни странно, префиксы для запуска плагина
из командной  строки,  перечисленные  через  двоеточие.  Первый  префикс  нужно
использовать для открытия файлов в  кодировке  Unicode,  второй  -  для  UTF-7,
третий - для UTF-8, четвертый - для quoted-printable, пятый - для  Unicode  Big
Endian, а последний - для  автоопределения  (см.  описание  меню  в  панелях  в
справке).

   AddToPanelMenu - указывает, добавлять ли пункт плагина  в  меню  плагинов  в
панелях: 1 - добавлять, 0 - нет. По умолчанию - 1.

   PrcOFP - указывает, включаться ли плагину в дело по  потрошению  файла,  при
нажатии на каком-нибудь файле в панели этой  невзрачной  на  вид,  но  пугающей
своими возможностями кнопки "Enter".  Если  вы  сбросите  ее  в  0,  то  плагин
соответственно будет игнорировать ваши потуги с enter'ом на файлах в  кодировке
unicode или UTF-8, а запустить его будет можно только из командной  строки  или
из меню плагинов. По умолчанию - 1.

   SIA - указывает, участвовать плагину в поиске архивов (Alt-F7, "[x] Искать в
архивах") или нет. Если переменная равна 1, то плагин участвует в таком поиске,
если 0 - не участвует. По умолчанию - 0.

   UTF-8_MASK - описывает начало файла в кодировке UTF-8 при  в  формате  маски
файлов (я не захотел вставлять в такой  простой  плагин  работу  с  регулярными
выражениями ;-) FAR. Эта переменная используется для автоопределения  файлов  в
кодировке UTF-8 наряду с маской 0xEFBBBF. В подобный  файл  при  его  изменении
символы 0xEFBBBF уже не добавляются. По умолчанию значение равно пустой строке.

   Если эти  переменные  не  найдены,  то  их  можно  создать.  Изменения  этих
переменных скажутся на работе UWizard только после перезапуска Фара.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8. Где брать новые версии

   В первую очередь мои творения появляются здесь: http://www.moris.ru/~spinoza

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
9. Благодарности

   Спасибо Вадиму Егорову (zg@bmg.lv, zg.times.lv) за код декодирования Base64,
Alex  Yaroslavsky  (trexinc@yandex.ru,  http://trexinc.narod.ru)   за   перевод
справки   (hlf)   на   английский   язык,    Pavel    Rezny    (rezny@email.cz,
http://groups.yahoo.com/group/easyctl) за перевод  справки  (hlf)  и  сообщений
(lng) на чешский  язык,  majvan  (om3tn@psg.sk,  http://www.majvan.host.sk)  за
перевод справки (hlf) и сообщений на словацкий язык.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Благодарю за использование Unicode Wizard.

                                                                  Иван Синтюрин
                                                       Thu 26 Jan 18:28:38 2006