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