Перейти из форума на сайт.


Система IP-видеонаблюдения "Линия". Скачать бесплатную демо-версию для 16 камер. НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаФотогалереяГазетаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » GoldenDict (часть 2)

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Открыть новую тему     Написать ответ в эту тему

Maz



Дед Мазай
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Предыдущее обсуждение: Часть 1




 
Актуальная версия 1.5.0:
Windоws RC2-85 Qt 4.8.6 или Qt 5.6.2.
Плагин dsengine.dll для Qt 5.6-based версии на Windows XP: dsengine_5.6.1_for_XP.7z
MacOSX RC2-85 (Qt 562) (рекомендуется для Mavericks & Yosemite); RC2-85 (Qt 580) (рекомендуется для Sierra); RC 483 (Qt 532) (рекомендуется для Mountain Lion); RC 425 (Qt 486)
 
GoldenDict — новая словарная программа, обладающая следующими особенностями:  
 
  • Графический интерфейс на основе табов, для создания которого использована библиотека Qt;
  • Интеграция с html-движком WebKit для корректного представления материалов в html-формате;
  • Поддержка подключения словарей в форматах: Babylon (.BGL), StarDict (.ifo/.dict./.idx/.syn), Dictd (.index/.dict(.dz)), ABBYY Lingvo (.dsl тексты и аудиоматериалы .lsa/.dat, .lsd - только в Android), XDXF, AARD, MDX/MDD, EPWING;
  • Система морфологии, которая находит основы слов при поиске, улучшая его результаты, а также дает рекомендации по правильному написанию слов. Используются обычные словари Hunspell/Myspell;
  • Поддержка индексации звуковых файлов в директориях, формируя из них словари аудио-произношений;
  • Поддержка отправки запросов в Wikipedia, Wiktionary и другие MediaWiki сайты;
  • Режим работы в роли глобальной для всего десктопа всплывающей подсказки, позволяющий выводить информацию для выделенного или помещенного в буфер обмена слова из любого текста внешней программы;
  • Для загрузки доступна версия, имеющая в комплекте набор англо-русско-английских словарей, словарей морфологии и примеры произношения слов на английском языке.  
     
    Программа позиционируется как функциональная замена StarDict, поддерживающая большее количество форматов файлов и более качественное их отображение. Программа умышленно не вводит собственного формата файлов, ставя вместо этого задачу наиболее полно поддержать все популярные существующие.
     
    Официальные Early Access билды для Windоws :: для MacOSX :: для Linux.
    Официальные Development билды для Windоws.
    Официальный форум поддержки GoldenDict.
    Официальный баг-трэкер.
     
    Параллельные топики:
    GoldenDict - New Level - Разработка новых форматов словарей для GD: DSLGD, HTMLGD; подключение речевых движков; режим закладок; варианты полнотекстового поиска.
     
    Как сжимать словари в формат .dz для использования в GoldenDict :: DictZip 1.12.1 (latest) :: Оболочка DictUI
     
    Ссылки на готовые сборки
     
    Ссылки на словари для GoldenDict

  • Всего записей: 34139 | Зарегистр. 26-02-2002 | Отправлено: 11:50 23-02-2017 | Исправлено: Abs62, 14:00 16-04-2017
    Abs62



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    andreyefgs

    Цитата:
    Вот рабочий код для использования внешних картинок с программным фиксингом ссылок.

    Вы лучше скажите, какого формата словарь делаете, что там не так и как должно быть. Потому что "bres://40950d17310235a8b7dc9d353ee050b/http://site.ru/files/test.jpg" - это явный косяк преобразования ссылок, который не даст отобразиться картинке. GD, встречая в ссылках "http://", должен оставлять их как есть, не пытаясь добавлять "bres://". А насчёт вывода картинок во внешний просмотрщик я ещё подумаю.

    ----------
    0 программистов ругал сердитый шеф
    Потом уволил одного, и стало их FF

    Всего записей: 4790 | Зарегистр. 22-10-2005 | Отправлено: 12:46 12-03-2017
    andreyefgs



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Abs62
     
    Формат GLS
    Проблема №1:
     
    Имеется статья:
    заголовок1
    кот: <img src="https://pbs.twimg.com/profile_images/664169149002874880/z1fmxo00.jpg">
     
    Получается:

    Цитата:
       
     

     
    В инспекторе:

    Код:
    <div class="glsdict"><div class="glsdict_headwords">заголовок1</div>кот: <img src="bres://fafde81262e119bd7017f36064f219d1/https://pbs.twimg.com/profile_images/664169149002874880/z1fmxo00.jpg">
    </div>
     

     
    Нужно, чтобы ссылка на внешнюю картинку (/^http/) не модифицировалась.
     
    Проблема №2:
    Показ картинок по клику во внешней смотрелке.
     
    ЗЫ
    Пока есть рабочие фиксы обоих проблем с использованием js, но в идеале конечно будет лучше если они будут решены на другом уровне.

    Всего записей: 1254 | Зарегистр. 16-10-2005 | Отправлено: 13:16 12-03-2017 | Исправлено: andreyefgs, 13:26 12-03-2017
    Abs62



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    andreyefgs

    Цитата:
    Проблема №1:

    Поправил - goldendict-1.5.0-RC2-59-g5b80f75(EXE only).7z.

    Цитата:
    Проблема №2:
    Показ картинок по клику во внешней смотрелке.

    Будем думать. Намётки есть, но надо ещё посмотреть, как оно выйдет.

    ----------
    0 программистов ругал сердитый шеф
    Потом уволил одного, и стало их FF

    Всего записей: 4790 | Зарегистр. 22-10-2005 | Отправлено: 15:09 12-03-2017
    andreyefgs



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    Поправил - goldendict-1.5.0-RC2-59-g5b80f75(EXE only).7z

    Спасибо, проверил - теперь норм.

    Всего записей: 1254 | Зарегистр. 16-10-2005 | Отправлено: 15:46 12-03-2017 | Исправлено: andreyefgs, 15:46 12-03-2017
    andreyefgs



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Написал новую версию расширения для Firefox для вызова GD через контекстное меню
     
    Скачать
     
    Изменения:
     
    1)Теперь можно использовать и на Windows
     
    2)Отказался от python в пользу node.js, следовательно для работы расширения требуется наличие node.js
     
    3)Опционально используются новые ключи: --popup-group-name и --group-name
    Расширение будет нормально работать только с версией GD, которая поддерживает эти ключи.
     
    4)Расширение использует детектор языка страницы и на основе выявленного языка и данных в настройках выбирает имя группы для ключей.
     
    И другое.
    ___________________________
     
    Инструкция в файле README.txt, скриншоты в папке "screenshots"
     
     

    Всего записей: 1254 | Зарегистр. 16-10-2005 | Отправлено: 21:03 12-03-2017
    Romul81



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Abs62
    По поводу крайних правок в gls.cc, а также в сопутствующем stardict.cc.  
    Часть регулярки:

    Код:
    ((?!(data|https?|ftp):)[^\"']*)

    Я так понимаю, что протокол не надо захватывать в группу. Поэтому, целесообразнее было бы сделать так:
     

    Код:
    ((?!(?:data|https?|ftp):)[^\"']*)

     
    То же самое здесь:

    Код:
    <a(\\s*[^>]*)href=['\"](bword://)?([^'\"]+)['\"]

    Лучше заменить на  

    Код:
    <a(\\s*[^>]*)href=['\"](?:bword://)?([^'\"]+)['\"]

     
    Тогда в  

    Код:
    QString link = linksReg.cap( 3 );

    Можно опять откатиться на 2-ю группу.
     
    И ещё общий для всех регулярок момент. Напр.:

    Код:
    (<\\s*link\\s+[^>]*href\\s*=\\s*[\"']+)((?!(data|https?|ftp):)[^\"']*)

    Здесь из-за выделенного болдом получается многократный откат. Столько раз, сколько символов от href до конца тега. Кроме того, даже если протокол присутствует, откат всё равно будет происходить пока не дойдёт до href, и только потом, дойдя до протокола, регулярка даст ненахождение. Может, стоит применить более гибкую логику, типа как в MDX? Тем более здесь всё проще...
     
    Другой вариант, можно сделать так:

    Код:
    (<\\s*link(?=\\s)(?:(?![\\s\"']href\\s*=)[^>])+href\\s*=\\s*[\"']+)((?!(?:data|https?|ftp):)[^\"']*)

    Если href идёт сразу за link, то выделенное израсходует только две попытки (точнее с лукапом от шести).

    Всего записей: 789 | Зарегистр. 03-03-2008 | Отправлено: 04:40 13-03-2017 | Исправлено: Romul81, 04:55 13-03-2017
    Abs62



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Romul81

    Цитата:
    Я так понимаю, что протокол не надо захватывать в группу. Поэтому, целесообразнее было бы сделать так:

    Я чего-то не понимаю. Как он может захватиться, если там негативный предпросмотр, то бишь прописанное обязано отсутствовать при срабатывании регулярки?

    Цитата:
    Можно опять откатиться на 2-ю группу.

    Резонно.

    Цитата:
    Здесь из-за выделенного болдом получается многократный откат. Столько раз, сколько символов от href до конца тега. Кроме того, даже если протокол присутствует, откат всё равно будет происходить пока не дойдёт до href, и только потом, дойдя до протокола, регулярка даст ненахождение. Может, стоит применить более гибкую логику, типа как в MDX?

    А не проще урезать регулярке жадность через setMinimal(true)?


    ----------
    0 программистов ругал сердитый шеф
    Потом уволил одного, и стало их FF

    Всего записей: 4790 | Зарегистр. 22-10-2005 | Отправлено: 10:53 13-03-2017
    Romul81



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Abs62

    Цитата:
    Как он может захватиться, если там негативный предпросмотр, то бишь прописанное обязано отсутствовать при срабатывании регулярки?

    Совершенно верно - он и не захватится. Но с точки зрения регулярки (точнее поискового движка) под него (протокол) выделяется отдельная, третья группа захвата, что вовсе не обязательно.
     

    Цитата:
    А не проще урезать регулярке жадность через setMinimal(true)?

    Тоже можно. Но тогда нужно искать закрывающую кавычку (одну из).
     
    З.Ы. Кстати, в старом HTML очень часто значения атрибутов были без кавычек (если в них не было пробелов). Может, на будущее, этот момент тоже как-то учесть?.. Ладно в GLS, а вот в Stardict точно не помешало бы...

    Всего записей: 789 | Зарегистр. 03-03-2008 | Отправлено: 11:04 13-03-2017 | Исправлено: Romul81, 11:15 13-03-2017
    Abs62



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Romul81

    Цитата:
    Но с точки зрения регулярки (точнее поискового движка) под него (протокол) выделяется отдельная, третья группа захвата, что вовсе не обязательно.

    А это не проблемы движка, если он выделяет группу захвата под то, что обязано отсутствовать?
    И кстати, в вашем варианте двоеточие всё равно остаётся вне пределов "(?:)".

    Цитата:
    Но тогда нужно искать закрывающую кавычку (одну из).

    Это как?

    ----------
    0 программистов ругал сердитый шеф
    Потом уволил одного, и стало их FF

    Всего записей: 4790 | Зарегистр. 22-10-2005 | Отправлено: 11:14 13-03-2017 | Исправлено: Abs62, 11:16 13-03-2017
    Romul81



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Abs62

    Цитата:
    А это не проблемы движка, если он выделяет группу захвата под то, что обязано отсутствовать?

    Так работают регулярные выражения. Тем более, не думаю, что движок QRegExp относится к наиболее оптимизированным. К тому же, судя по той информации, которую я о нём читал, у него имеются куда более серьёзные проблемы - в первую очередь общее быстродействие. Поэтому, о микрооптимизациях речи не идёт.
     

    Цитата:
    И кстати, в вашем варианте двоеточие всё равно остаётся вне пределов

    Оно и должно там быть. Вся конструкция, вместе с двоеточием попадает в Negative Lookahead.
    Вот, гляньте как оно работает: https://regex101.com/r/KKj37M/1
    И попробуйте удалить двоеточие из искомого текста в TEST STRING.
     
    Добавлено:

    Цитата:
    Это как?

     

    Код:
    ((?!(data|https?|ftp):)[^\"']*)

    В нежадном режиме найдёт только ноль или один символ. Поэтому справа надо будет ставить Lookahead (?=[\"']). Тогда выражение захватит всё до закрывающей кавычки (двойной или одинарной).
     
    Добавлено:

    Цитата:
    А это не проблемы движка, если он выделяет группу захвата под то, что обязано отсутствовать?

    Кстати, не хотел бы лезть в дебри, но вполне могут быть ситуации, когда нужно захватить несуществующую группу, чтоб сослаться на неё далее в выражении. Конкретные реализации могут отличаться у разных диалектов, но в общем - "не всё так однозначно".
     
    В данном случае выигрыш, кончено, микроскопический, но если группа не нужна и её можно не захватывать, то зачем её захватывать?.. :smile:

    Всего записей: 789 | Зарегистр. 03-03-2008 | Отправлено: 11:27 13-03-2017 | Исправлено: Romul81, 11:40 13-03-2017
    Abs62



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Romul81

    Цитата:
    Оно и должно там быть. Вся конструкция, вместе с двоеточием попадает в Negative Lookahead.

    Зато двоеточие не попадает в "Non-capturing group".

    Цитата:
    В нежадном режиме найдёт только ноль или один символ.

    Пофиг. Потому как задача замены - впендюрить "bres://article_id/" между "href=\"" и этим самым символом.


    ----------
    0 программистов ругал сердитый шеф
    Потом уволил одного, и стало их FF

    Всего записей: 4790 | Зарегистр. 22-10-2005 | Отправлено: 12:15 13-03-2017
    Romul81



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Abs62

    Цитата:
    Зато двоеточие не попадает в "Non-capturing group".

    Ну и пусть не попадает, всё равно оно внутри Negative Lookahead и не захватывается ни в какую группу. Вообще, "Non-capturing group" там нужен только для того, чтоб перечислить все варианты протоколов. Если б он был один, то было бы так: ((?!https?:)[^\"']*)
     

    Цитата:
    Пофиг. Потому как задача замены - впендюрить "bres://article_id/" между "href=\"" и этим самым символом.

    Тогда да. Но открывающую кавычку надо захватывать обязательно так: [^\"']+

    Всего записей: 789 | Зарегистр. 03-03-2008 | Отправлено: 12:28 13-03-2017
    Abs62



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Romul81

    Цитата:
    Тогда да. Но открывающую кавычку надо захватывать обязательно так: [^\"']+

    Это же не захват кавычки. Кавычка захватывается в первую группу.

    ----------
    0 программистов ругал сердитый шеф
    Потом уволил одного, и стало их FF

    Всего записей: 4790 | Зарегистр. 22-10-2005 | Отправлено: 12:52 13-03-2017
    Romul81



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Abs62
     
    ОК. Да, тогда будет что-то типа этого:
     

    Код:
    (<\\s*link\\s+[^>]*href\\s*=\\s*[\"']+)(?!(?:data|https?|ftp):)

    остальное просто не нужно.

    Всего записей: 789 | Зарегистр. 03-03-2008 | Отправлено: 13:04 13-03-2017 | Исправлено: Romul81, 13:04 13-03-2017
    Abs62



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Пробуем - goldendict-1.5.0-RC2-63-gafd3dc2(EXE only).7z.
    Отсылает картинки системе по двойному клику.

    ----------
    0 программистов ругал сердитый шеф
    Потом уволил одного, и стало их FF

    Всего записей: 4790 | Зарегистр. 22-10-2005 | Отправлено: 18:04 13-03-2017
    ramanuki



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Abs62

    Цитата:
    Отсылает картинки системе по двойному клику.

    Спасибо!
    Довольно удобно: один щелчок - в своем окне, два - во внешнем. А можно еще сделать, чтобы по двойному щелчку не дергалось (открывалось в своем и тут же обратно возвращалось)?
     
    Добавлено:
    Abs62
     
    Хочу еще спросить по поводу FTS (ПТП):
     
    1)
     
    При отсутствии нужного слова появляются ссылки в основном окне:

    В группе Все не найдено перевода для
    [искомое].
     
    Близкие слова: ...
    Отдельные слова: ...

     
    Сюда бы еще добавить опцию-ссылку:  
    Найти [искомое] в ПТП.
    по щелчку на которой откроется окно ПТП и в него подставится [искомое].
     
    2)
     
    Можно ли сделать так, чтобы при открытом окне ПТП можно было бы нажать на Ctrl+Shift+F и искомый текст в окне ПТП заменился на тот, что находится в данный момент в основной поисковой строке. Или, попросту говоря, чтобы можно было не закрывать окно ПТП каждый раз и снова открывать его (с автоматической подстановкой из основной поисковой строки).
     

    Всего записей: 240 | Зарегистр. 07-08-2013 | Отправлено: 18:50 13-03-2017
    Abs62



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ramanuki

    Цитата:
    А можно еще сделать, чтобы по двойному щелчку не дергалось (открывалось в своем и тут же обратно возвращалось)?

    Сложно. Клик есть клик, и на него надо реагировать. Можно, конечно, прикрутить костыль, чтобы программа сначала выжидала интервал, установленный для двойного клика, но сдаётся мне, паузы между кликом и реакцией на него - это ещё хуже.

    Цитата:
    Сюда бы еще добавить опцию-ссылку:  
    Найти [искомое] в ПТП.
    по щелчку на которой откроется окно ПТП и в него подставится [искомое].

    Прикручивать ещё один механизм взаимодействия разных объектов ради реализуемого в несколько движений действия как-то геморройно.

    Цитата:
    Можно ли сделать так, чтобы при открытом окне ПТП можно было бы нажать на Ctrl+Shift+F и искомый текст в окне ПТП заменился на тот, что находится в данный момент в основной поисковой строке.

    Хм. Тут обмозговать надо, всегда ли это подмогой будет, или в какой-то момент помехой стать может. А то, скажем, набрал какую-то строку, поискал - не то. Жмякнул Ctrl+Shift+F, переключаясь обратно в окно поиска, чтобы её чуток подкорректировать, а она-то и ёк уже, туда что-то из основной строки влезло.

    ----------
    0 программистов ругал сердитый шеф
    Потом уволил одного, и стало их FF

    Всего записей: 4790 | Зарегистр. 22-10-2005 | Отправлено: 19:32 13-03-2017
    andreyefgs



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    Пробуем - goldendict-1.5.0-RC2-63-gafd3dc2(EXE only).7z.  

    Отлично.
    По одинарному клику было бы хуже. Спасибо.

    Всего записей: 1254 | Зарегистр. 16-10-2005 | Отправлено: 20:52 13-03-2017 | Исправлено: andreyefgs, 20:53 13-03-2017
    ramanuki



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Abs62
    Временный файл уничтожается при закрытии GD?

    Всего записей: 240 | Зарегистр. 07-08-2013 | Отправлено: 20:55 13-03-2017
    Abs62



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ramanuki
    Да, удаляются все созданные временные файлы, кроме тех, которые на тот момент не даст удалить система. И не только при закрытии, но и при каждой отправке системе новой картинки.

    ----------
    0 программистов ругал сердитый шеф
    Потом уволил одного, и стало их FF

    Всего записей: 4790 | Зарегистр. 22-10-2005 | Отправлено: 21:15 13-03-2017
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

    Компьютерный форум Ru.Board » Компьютеры » Программы » GoldenDict (часть 2)

    Имя:
    Пароль:
    Сообщение

    Для вставки имени, кликните на нем.

    Опции сообщенияДобавить свою подпись
    Подписаться на получение ответов по e-mail
    Добавить тему в личные закладки
    Разрешить смайлики?
    Запретить коды


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.Board
    © Ru.Board 2000-2017

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru