OpenOffice.org/DOCX/FB2 Viewer

Обсуждение только плагинов и утилит для Total Commander.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

Starina
Сообщения: 13
Зарегистрирован: Вт ноя 06, 2007 14:29

Сообщение Starina »

По поводу перехвата клавиш для Lister'а.

Необходимо использовать интерфейс IDocHostUIHandler, там есть специальный метод.

Немного информации по этому интерфейсу есть в DRKB3.0
Аватара пользователя
Alextp
Сообщения: 4957
Зарегистрирован: Вс фев 06, 2005 17:21

Сообщение Alextp »

Спасибо. Посмотрю
Starina
Сообщения: 13
Зарегистрирован: Вт ноя 06, 2007 14:29

Сообщение Starina »

Выкачал новую версию.
1) Из-за реорганизации временных папок вот какая проблема:
файлы fb2 в кодировке windows-1251 с русскими буквами в названии не открываются.
Потому что когда создается временный xml-файл и в него записывается путь, то всегда используется функция UTF8Encode,
что естественно для русских букв с кодировкой windows-1251 выдает абракадабру.

2) Если нужна помощь в освоении IDocHostUIHandler-интерфейса, то могу попытаться помочь.
Аватара пользователя
Alextp
Сообщения: 4957
Зарегистрирован: Вс фев 06, 2005 17:21

Сообщение Alextp »

1) Подтверждаю
Надо что-то делать. При кодировке xml "windows-1251" надо записывать все в ANSI.
Какие бывают еще кодировки в FB?

2) Да, нужна.
Ник
Сообщения: 1256
Зарегистрирован: Ср дек 15, 2004 09:33
Откуда: Москва

Сообщение Ник »

FB2 - это стандарт, там всё прописано на сайте:
http://www.fictionbook.org/index.php/%D ... 1%82_Sclex
Общая структура документа. Кодировки
FB2-документ состоит из объявления XML и корневого элемента <FictionBook>. То есть выглядит это так:

<?xml version="1.0" encoding="windows-1251"?>
<FictionBook xmlns="http://www.gribuser.ru/xml/fictionbook/2.0"
xmlns:l="http://www.w3.org/1999/xlink">
...
</FictionBook>
Как видно, в первой строке в значении атрибута encoding надо правильно указать кодировку документа. В приведенном примере это windows-1251, а в другом случае могла бы быть и utf-8. utf-8 также является кодировкой по умолчанию, использующейся в случае отсутствия атрибута encoding или всего XML-объявления.

Ниже указано, какая кодировка каким языкам соответствует:

windows-1251 - английский и кириллица (русский, болгарский и т.д.)
windows-1252 - западно-европейские языки (английский, французский, испанский и т.д.)
windows-1250 - английский и восточно-европейские (польский, чешский и т.д.)
Xubuntu
Starina
Сообщения: 13
Зарегистрирован: Вт ноя 06, 2007 14:29

Сообщение Starina »

1) может придумать другое построение временных папок?

2) Английская статья с небольшим примером:
http://www.delphidabbler.com/articles?article=18

Также нашел компонент, которых этот интерфейс реализует EmbeddedWB:
http://www.bsalsa.com/

И вот как можно использовать метод:

Код: Выделить всё

  type
  TCustomizedWebBrowser = class(TWebBrowser, IDocHostUIHandler)
   ...

function TCustomizedWebBrowser.TranslateAccelerator(const lpMsg: PMSG;
  const pguidCmdGroup: PGUID; const nCmdID: DWORD): HRESULT;
begin
  Result := S_FALSE;
  
  with lpMsg^ do
    if (message = WM_KEYDOWN) and (GetKeyState(VK_CONTROL) >= 0) then
      begin
        MessageDlg(Char(wParam), mtWarning, [mbOK], 0);

        Result := S_OK;
      end
end;
Пока все, что смог.
Аватара пользователя
Alextp
Сообщения: 4957
Зарегистрирован: Вс фев 06, 2005 17:21

Сообщение Alextp »

Ник писал(а):FB2 - это стандарт, там всё прописано на сайте:
OK, спасибо. Значит, если encoding <> "UTF-8", можно просто считать, что файл в ANSI. Если пренебрегать кодировками windows-1252 и т.д. Они наверное, нечасто в русских книгах встречаются :)
Аватара пользователя
Alextp
Сообщения: 4957
Зарегистрирован: Вс фев 06, 2005 17:21

Сообщение Alextp »

Версия 1.6.9.
Starina писал(а):1) может придумать другое построение временных папок?
Какое?
Starina
Сообщения: 13
Зарегистрирован: Вт ноя 06, 2007 14:29

Сообщение Starina »

Первое, что приходит в голуву это приводить все имена файлов к английским буквам (незнаю будет это проще или нет?)
Аватара пользователя
Alextp
Сообщения: 4957
Зарегистрирован: Вс фев 06, 2005 17:21

Сообщение Alextp »

Starina писал(а):Первое, что приходит в голуву это приводить все имена файлов к английским буквам (незнаю будет это проще или нет?)
1 А если имя %TEMP% папки русское?
2 А если есть два файла "Dobycha.fb2" и "Добыча.fb2"?
Ник
Сообщения: 1256
Зарегистрирован: Ср дек 15, 2004 09:33
Откуда: Москва

Сообщение Ник »

А генерировать на базе имени файла случайный неповторяющийся набор цифр и латинских букв в качестве имени временной директории и временного файла?
Типа MD5 от имени?
Xubuntu
Аватара пользователя
Alextp
Сообщения: 4957
Зарегистрирован: Вс фев 06, 2005 17:21

Сообщение Alextp »

Ник писал(а):А генерировать на базе имени файла случайный неповторяющийся набор цифр и латинских букв в качестве имени временной директории
А если п-лю разрешена запись только в %TEMP% (но не в C:\)?
Ник
Сообщения: 1256
Зарегистрирован: Ср дек 15, 2004 09:33
Откуда: Москва

Сообщение Ник »

То есть проблема в кодировке имени папки %TEMP% ?
Или можно внутри неё делать дополнительные папки с "правильной" кодировкой имени?
Xubuntu
Аватара пользователя
Alextp
Сообщения: 4957
Зарегистрирован: Вс фев 06, 2005 17:21

Сообщение Alextp »

Ник писал(а):То есть проблема в кодировке имени папки %TEMP% ?
Да. Потому что в xml пишется полное имя xsl файла. А он, xsl, в %TEMP%.
Ник
Сообщения: 1256
Зарегистрирован: Ср дек 15, 2004 09:33
Откуда: Москва

Сообщение Ник »

Не понял - он же для всех файлов одинаковый - на фига он там, а не в директории плагина?
Xubuntu
Ответить