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

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

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

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177

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

Maz



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




 
Актуальная версия 1.5.0:
Windоws Qt 4.8.6 или Qt 5.12.3, последний EXE-файл: 1.5.0-18-g59363bc9.
Плагин dsengine.dll для Qt 5.6-based версии на Windows XP: dsengine_5.6.1_for_XP.7z
как собрать актуальный рабочий комплект для windows (без словарей)
MacOSX 1.5.0-19-g718462c5 Intel; архив прежних версий: на github (09.2012–04.2019), на sourceforge (06.2016–04.2019)
 
Расширенная настройка интерфейса
 
GoldenDict — новая словарная программа, обладающая следующими особенностями:  
 
  • Графический интерфейс на основе табов, для создания которого использована библиотека Qt;
  • Интеграция с html-движком WebKit для корректного представления материалов в html-формате;
  • Поддержка подключения словарей в форматах: Babylon (.bgl/.gls), StarDict (.ifo/.dict./.idx/.syn), Dictd (.index/.dict), ABBYY Lingvo (.dsl тексты и аудиоматериалы .lsa/.dat, .lsd - только в Android), XDXF, AARD, SLOB, ZIM, 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
    Как подключить системные речевые движки TTS на Windows: вручную, скриптом

     
    Ссылки на готовые сборки
    Ссылки на словари для GoldenDict

  • Всего записей: 39131 | Зарегистр. 26-02-2002 | Отправлено: 11:50 23-02-2017 | Исправлено: yozhic, 23:33 29-06-2024
    Abs62



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

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

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

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

    Всего записей: 6092 | Зарегистр. 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, но в идеале конечно будет лучше если они будут решены на другом уровне.

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



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

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

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

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

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

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

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



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

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

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

    Всего записей: 1533 | Зарегистр. 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"
     
     

    Всего записей: 1533 | Зарегистр. 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, то выделенное израсходует только две попытки (точнее с лукапом от шести).

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



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

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

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

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

    Резонно.

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

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


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

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



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

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

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

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

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

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



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

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

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

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

    Это как?

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

    Всего записей: 6092 | Зарегистр. 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:

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



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

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

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

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

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


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

    Всего записей: 6092 | Зарегистр. 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=\"" и этим самым символом.

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

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



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

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

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

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

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



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

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

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

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



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

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

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



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

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

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

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

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

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



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

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

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

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

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

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

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

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

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



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

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

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

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



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

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



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

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

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

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177

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


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

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru