четверг, 21 мая 2009 г.

Словарик для Openmoko

Уже несколько месяцев между делом пишу словарик для Openmoko/Neo Freerunner. За основу выбран формат словарей StarDict, оттуда же позаимствована часть кода для разбора словарей.

Так как Openmoko - это полноценный линукс, можно было бы просто перекомпилировать StarDict под него, и получить всю функциональность. Однако, я решил написать свою реализацию, потому что:

  1. GUI приложения для телефона или коммуникатора должен быть другим, чем для десктопа. Например, pdf-ридером под Openmoko не очень удобно пользоваться, т.к. это десктопное приложение, просто перекомпилированное под ARM, GUI не рассчитан на маленький экран.

  2. Словарь для мобильного устройства должно быть быстрым и легковесным - быстро включаться и выключаться, например, если вы пользуетесь им в заграничной поездке. Интерфейсы на основе GTK+ (оригинальный StarDict), на мой взгляд, получаются тяжеловатыми, хочется сделать пошустрее. Для GUI я решил использовать свой любимый FLTK2.

  3. Хочу добавить в словарик специальные функции для обучения языкам: как минимум - списки слов для запоминания, как максимум - база текстов, записей произношения, картинок, ассоциированных со словами и фразами, напоминалки, возможность выстроить программу обучения. Фунции обучения будет удобно использовать между делом, например в транспорте, просто достав телефон из кармана.

  4. Есть цель повысить собственный девелоперский уровень, освоить новые инструменты. =)



Я уже реализовал следующие вещи:

  • Архитектурный скелет приложения

  • Прикрутил парсер словарей, взятый из StarDict

  • GUI - основные панельки, элементы управления, мелкий тюнинг специально под мобильные девайсы.


  • Рабочую сборка под Openmoko (включая FLTK, Boost)


То есть уже можно запустить словарик на телефоне, скормить ему словари StarDict, попробовать перевести слово (вывод перевода - пока в виде простого текста).

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



Первый экран - список слов (поиск по первым буквам или fuzzy query).
Второй, он же главный - перевод слова. Окошко скроллируется пальцем.
Третий - букмарки (списки слов).
Четвертый - читалка текста (пока существование под вопросом).
Пятый - настройки. На скриншоте - список загруженных словарей, можно менять порядок, включать/отключать словари.

Кнопки сделаны под размер пальцев, все списки скроллируются. Боковую панель в списках (в букмарках и настройках) можно скрыть. Кнопка 'T' по середине - перевод слова, т.е. того, которое выделенно в букмарках и списках слов, или введено в поле на второй панели.

Cписок фич, которые планируется сделать:

  • Словарики формата StarDict, авто-сканирование директории со словарями

  • Поиск по началу слова, fuzzy query

  • Захват слова из буфера обмена (выделил - переключился в словарик - получил перевод)

  • Произношение из звуковых файлов (вероятно, в первую версию не войдёт)

  • Списки слов для запоминания

  • Читалка простых текстов, с поиском слов по ним, тегами/заметками

  • Подробная конфигурация через GUI: размер шрифтов, порядок использования словариков, etc


Реализация: C++, Boost, FLTK2 (с патчами), немного кода из StarDict (требует glib и zlib).

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

Интересно мнение будущих пользователей:

  • Нужен ли вам словарик под Openmoko?

  • Интересуют ли функции обучения, или ещё какие-то дополнительные функции словарика?

  • Есть ли предложения по интерфейсу?


Пишите!

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

0xbes комментирует...

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

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

Добавил скрин, + краткий коммент по GUI

0xbes комментирует...

Неплохо. мне понравилось. А почему текст черный на сером фоне?

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

Пока об окончательной цветовой гамме не думал, сейчас главное - закончить функционал.

А вообще, ИМХО, чёрный на сером(или тёмно-зелёном) лучше для глаз, для себя всегда ставлю такие цвета.

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

А мона попросить тестовую версию сборки? Я пока тоже сижу выбираю гуи какой применитью

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

Попросить можно.
Тебе бинарник под ARM? Исходники я ещё никуда не выкладывал.

Вообще для Openmoko больше на EFL/ETK пишут, возможно на нём лучше будет.
А FLTK2 всё ещё в разработке (и будет неопределённое время), однако я уже привык его тюнить под свои нужды.