четверг, 19 ноября 2009 г.

StarDict: пропадание всплывающего окна с переводом

Всем хорош StarDict, но есть одна мелочь, которая порой раздражает. Выделяю какое-либо слово, нажимаю горячую клавишу - появляется плавающее окошко с переводом этого слова. Если теперь слегка отодвинуть мышку в сторону, то плавающее окошко пропадет и больше не появится до тех пор, пока я не выделю другое слово, несмотря на последующие нажатия горячей клавиши.

Мне это надоело, и я не поленился залезть в исходники StarDict, чтобы сделать так, как мне хочется. :)

В результате получился вот такой вот небольшой патч:
diff -rc stardict-3.0.1/src/selection.cpp stardict-3.0.1.patched/src/selection.cpp
*** stardict-3.0.1/src/selection.cpp 2007-09-04 12:47:10.000000000 +0400
--- stardict-3.0.1.patched/src/selection.cpp 2009-11-18 20:03:40.000000000 +0300
***************
*** 179,185 ****
          return;
      }
      
!  if (LastClipWord != sToken) { // not equal
    LastClipWord = sToken;
    if(bIsPureEnglish(sToken))
    {
--- 179,201 ----
          return;
      }
      
!
!
!  bool only_scan_while_modifier_key = conf->get_bool_at("dictionary/only_scan_while_modifier_key");
!  bool scan = false;
!
!  if(only_scan_while_modifier_key)
!  {
!   if(!gpAppFrame->oFloatWin.FloatWindow || !GTK_WIDGET_VISIBLE(gpAppFrame->oFloatWin.FloatWindow))
!    scan = true;
!  }
!  else
!  {
!   if(LastClipWord != sToken)
!    scan = true;
!  }
!
!  if (scan) {
    LastClipWord = sToken;
    if(bIsPureEnglish(sToken))
    {

После применения данного патча StarDict будет отображать плавающее окошко вне зависимости от того, перевод какого слова отображался в прошлый раз.

Пользователи Ubuntu 9.10 могут установить уже пропатченную версию из моего PPA:
$ sudo add-apt-repository ppa:konishchevdmitry/public
$ sudo apt-get update
$ sudo apt-get install stardict-floatwin-fix

P.S.: Данный патч исправляет ошибку только в том случае, если у вас в настройках отмечен флажок "Only scan while the modifier key is being pressed". Другим режимом работы я не пользуюсь, поэтому лезть глубже в код и исправлять его было как-то лень. :)

9 комментариев:

alexbaum комментирует...

Спаибо огромное. Поставил -- работает. А раньше и правда раздражала пропажа окна с переводом.

Анонимный комментирует...

Есть еще совместимый словарь GoldenDict.

dmig комментирует...

+1 за GoldenDict. есть в репах 9.10, удобнее чем stardict и работает шустрее

bioex комментирует...

С ума сойти. А как-же значок со стрелкой который появляется на всплывающем окне и выполняет функцию "Запереть всплывающее окно"?

idler комментирует...

Отправьте пожалуйста этот патчик разработчика самого StarDict

Конищев Дмитрий комментирует...

> Есть еще совместимый словарь GoldenDict.
Спасибо, почему-то не знал о его существовании. Да, достойный конкурент StarDict. Правда написан на Qt, что для меня является недостатком.

> С ума сойти. А как-же значок со стрелкой который появляется на всплывающем окне и выполняет функцию "Запереть всплывающее окно"?
Да нет, проблема в другом: вот читаю я какой-то текст, встретилось мне незнакомое слово - я нажимаю на горячую клавишу, смотрю перевод и продолжаю читать дальше, затем мне опять встречается это слово, но перевод я уже забыл :) - приходится сначала выделять другое слово, потом это, и нажимать на горячую клавишу. Или просто если случайно отвел мышку в сторону - опять-таки приходится совершать эти ненужные действия...

> Отправьте пожалуйста этот патчик разработчика самого StarDict
Отправил.

bioex комментирует...

>приходится сначала выделять другое слово,
>потом это, и нажимать на горячую клавишу

Теперь понял о чем речь. Просто были как-то акцентированы слова вроде "раздражающая пропажа окна с переводом", хотя проблема не в пропаже, а в "не-появлении".

Анонимный комментирует...

Прочитав статью, в очередной раз увидел ссылку на GoldenDict. И решил попробовать, весь процесс установки (включая добавление словарей) - 5 минут. И понял для себя, что больше не буду пользоваться StarDict-ом, т.к. форматов поддерживает меньше, и выглядит не лучше, и неудобства подобные описанным выше утомляют. Кстати, то, что пользуюсь KDE, ключевой роли не играет.

idler комментирует...

Спасибо за патчик.
Ради этого перешел обратно с golden на star

У голден не видал консолькой версии
да и шевелится всплывающее окно быстрее чем у золотого :)
Хотя мой DE == KDE