Re: [gnome-cyr] Почему у меня постоянно бъются темы?



Sergey V. Udaltsov пишет:

Угумс. Вот и руководь, а не задавайся вопросом "хочу ли я это делать ваааще". :)
Я надеюсь, я еще сохранил право определять направления развития:)

:)

Руководитель отличается от прочих тем, что принимает и обрабатывает мнения, а затем распределяет нагрузку в соответствии с "инициатива наказуема".
Видите ли, Вячеслав - не разработчик (ну, насколько я представляю его позицию). И в этом отношении ничем не рискует - он может генерить идеи в любом количестве - я даже не могу попросить его взять в руки компилятор. Но в этом случае позволю себе относиться чуть с большей "критичностью" к этим идеям. Вас я, конечно, попросить покодировать могу - но только попросить:)
И покодирую.
Вот дойдем до красивой и стройной модели да и начнем...

Это уже второй вопрос. Естественно такую функциональность в core запихивать не стоит. А вот посмотреть во что выливается API с учетом возможности написания такого плагина вполне можно.
Это значит, что само core должно предоставлять функцию переконфигурирования xkb. Этого-то мне делать и не хоца.

не совсем так.
требуется только возможность отключать уже сконфигуренные группы.

enable_group(index)
disable_group(index)

где index - номер группы от 1 до 4.

И тогда уже исходить не из того, писать или не писать плагин, а из того, стоит ли такая возможность самого плагина трудов в core.
Во-во. Тут даже дело не в трудах (на сегодня gswitchit чисто организационно почти готов к такой жизни) - а в концепции. Которая мне не очень нравится (как руководителю проекта).

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

2)Решить, что будет в core, а что вылетает в плагины
Прямо так жестко? Введем "Бритву Любимова" (сорри за фамильярность, но в истории так принято) и будем отсекать:)

а как же иначе? это концептуальный вопрос. иначе кодить нечего...

3)Решить, какие плагины нужно делать, а какие оставить на third-development (просто сделать их написание принципиально возможным путем внесения нужной функциональности в API)
А-а. А может - просто узнать, кто реально собирается работать над 3rd party plugins и собрать с них пожелания? Может, так эффективнее будет? Чем реализовывать и поддерживать код, который никто не будет использовать.

Опять умный тезис хотел процитировать, да подумал, что хватит. Не на кафедре. :) 3-d party образуется там, где есть твердая основа и нужно только немножко дописать/дорисовать/попатчить. Сейчас такой основы нет, так что и спрашивать бесполезно. С другой стороны плагины будут писаться и нами, но в порядке очереди. Вот эту очередь и стоит выстроить. Хотя бы по зависимостям, а еще лучше и по весу.

5)Написать TODO и ROADMAP
Второй уже есть:)

Для себя, подробней и на русском.
Нельзя рассчитывать на помощь других, не имея четкого плана.

6)Кодить
Ой, ждать-то как долго:)
:(

*список раскладок* (я понимаю, что ограничение на 4 раскладки, но закладывать это в дизайн странички как то недальновидно)
Можно заложить. Изменение протокола xkb практически вряд ли осуществимо.
Ну хотя бы подумать на эту тему. Ну плохо же разворачивать классический список в шеренгу...

   *     редактировать раскладку
Можно убрать "редактировать" - достаточно первых двух. Или вы собрались редактировать именно соотвествие клавиш и символов?(???)
Нет. горячую клавишу. Забегая вперед - усекаем.

*свойства раскладки *
   *     горячая клавиша для переключения в эту раскладку
Этого не будет. Могу обещать. Было. Прямо не реализуется. Точнее, реализуется таким геморром, что делает затею бессмысленной - быстрее и проще пробить патчи в XFree на добавление нового метода переключения. Тем более - Иван теперь может коммитить туда, если switchtcut разумен.
Усекаем.

   *     дефолтная раскладка (нужна в апплете и... вообще нужна :).
Бессмысленная установка без апплета. В параметрах апплета. xkb-properties-capplet славен тем, что все его установки доступны даже при отсутствии апплета на панеле (and I want to keep it that way). Эта установка работать не будет.
Не забывайте, что конфигуратор внедряется в гном. Дефолтная раскладка, это очень важный параметр. Он обязательно должен быть доступен для гнома и без апплета. Он 100% нужен для rule-based engine. Одно из action - установить группу по дефолту.

   *     с указанием parent виджета для встраивания в приложения.
     (экстра, вполне можно потом)
Не нужно совсем. Я об этом думал - ни апплет, ни капплет никакой бонобо-ценности не имеют. Тому, кто придумает жизненный пример использования капплета - приз в лице пинты Гиннесса:) Апплет еще можно пробовать куда-то встраивать - но я не верю в то, что abiword или gaim реально на это пойдут. А ваять кучу бонобовского кода (вообще, бонобо - тот еще подарок, как любая компонентная модель, выраженная в С) just for a sake of it - нахрен.
усекаем.

Да, еще - в xkb-properties-capplet нужно сохранить кнопку advanced - для всех тех "экзотических" настроек, которые предоставляет xkb. Я видел людей, которым, например, нравится сопоставлять русскую раскладку с горящим ScrollLock.

ну и ладненько.

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



*Логирование*
М-м. Вообще-то, оно есть. И даже конфигурится кое-как. Проблема в том, что в гноме нет log4j (как жаваписец очень ее люблю). Поэтому особой гибкости не обещаю - создавать побочным продуктом log4j не хочу. Может, посмотрю на log4c - но вводить внешнюю зависимость от достаточно экзотичной либки только для логирования - стремновато. Короче, очень богатой конфигурируемости сегодня нет - и как-то вряд ли предвидится...

ну ввести несколько флагов и сделать фильтр.

Проблем при настройке монитора без логов будет очень много, кроме того логи (веренее их обработка) отлично заменят xprop.
Логи безусловно нужны. Вопрос в минимально необходимом уровне гибкости.
минимально, это флаги 1,2,3,4
и движок 0 ->4 при 4 в лог идут все записи, при 0 - ничего. при 2 -> записи с флагами 1 и 2.

   * набор action (установить раскладку по умолчанию, установить
     конкретную раскладку и т.д.)
Давайте уж в терминах xkb, коль скоро говорим о разработке. Вы про раскладку - или про группу? Раскладку, вообще говоря, установить нельзя:)

группу.

   * роутинг событий через плагины в соответствии с очередью (может,
     регистрировать из плагина события, к которым их подключать?)
Смысл уточнять события? Какой-то уж очень fine performance tuning. Чтобы окупить такое изменение, нужно на руках иметь десяток наличных плагинов. Меня учили, что нет ничего вреднее преждевременной оптимизации:)
Да, кстати, плагины должны иметь возможность сказать CANCEL обработке события. Дескать, я обработал - а остальные пусть не трогают. Так, как это сделано в gtk для событий X.

тож правда. усекаем.

   * Список текущих раскладок с вкл/откл чекбоксом (идея Славы, только
     в терминах и понятиях гнома гнома :)
Вот это я не понял.
Зато я понял из дальнейшего контекста, что предполагается включать и выключать сконфигуреные раскладки в control-center.
Тоже годится.

Воля ваша, а я бы флажки _временно_ (до stable релиза) прибил.
До какого предела? Вообще - или выбор картинки руками?

вообще.

1) все эти локальные соответствия, картинки в апплете и прочее ломкое дело.
Жестко. Зачем?

Флажки в гноме есть? табличка соответствий между флажками и группами в гноме есть?
Флажки ко всем группам есть?
Получается весьма неполная  функция.

2) картинка - красиво, но малоинформативна. у текста есть цвет надписи, цвет фона, жирность, курсив которыми можно рулить из плагинов легко и непринужденно (через соответствующие action) , а что делать с картинкой?
Зачем это все рулить? Есть тема гнома. В ней указано, как рисовать label. И все. Не нужно выходить за рамки темы. Гномовцам не понравится - и правильно.

Например, чтобы показать, что функция автокоррекции вводимого текста включена. Фон надписи поменять можно?

3) Устаканится action лист - станет ясно, что можно сделать с их индикацией в случае флажков.
Вот тады менять и будем.

ну ладно.

4) Кодить, кодить, кодить будет проще... :)
Да и сейчас это не очень сложно:)

rule-based engine надо или дорабатывать до универсального вида и впихивать в core или делать в виде плагина.
Что значит "до универсального вида". Я надеюсь, Вы не заставляете меня изобретать емакс и использовать лисп?

это значит, что engine должен обеспечивать достаточно интересную функциональность в рамках тех дел, которые делаются в апплете. в апплете есть плагины, есть wm_class, есть приходящие события типа переключение группы, переход фокуса окна, . Все это должно проходить через rule engine и разводится в плагины, пропускаться или выполнятся.

То, что у Вячеслава, чистый плагин. Если же делать по другому - правила
Правило - простое. WM_CLASS->group number. В gconf кладется в виде
/apps/gswitchit/Windows/WM_CLASS.0
/apps/gswitchit/Windows/groupNumber.0

это вырожденное правило. Без уточнения виджета его нельзя будет использовать.
Мозилла будет скидывать каждый раз в английский? опенофис?
только gmplayer, то там может быть русский, а текст и не участвует.

и т.д.
Может, когда-то добавится
/apps/gswitchit/Windows/secondaryGroupMask.0
Это все action list.
Должен быть

/apps/gswitchit/rule/WM_CLASS.0
/apps/gswitchit/rule/action_id.0
/apps/gswitchit/Windows/action_data.0

и далее switch на action_id и если сказано отдать в плагины - прогон по плагинам.
если сказано поставить дефолтную группу - поставить ее
если сказано поставить конкретную группу - аналогично.
Маску групп поменять - действуем.

Плагины в таком случае тоже регистрируются правилами. Нажал чекбокс "активизировать плагин" и плагин через API прописал пару правил для передачи нужных ему событий на себя. Отжал - отписался. Резко упрощается конфигурирование плагинов, оптимальность некотрая.
Это возможно. Правда, плагины (такого типа) начинают становиться какими-то очень одинаковыми. Может, в этом случае, все-таки лучше один конфигуратор для правил?


Конфигуратор должен отражать задачу пользователя. А правила абстрактны. Иожно написать несколько плагинов с разными видами гуя, которые будут формировать правила по своим шаблонам.
Получается выход один - правила, а входов много - конфигураторы.

Переключение происходит по кругу. И в нем постоянно сидят "мертвые души". Так что использовать будут.
А-а. Так вы просто про смену маски вторичных раскладок per WM_CLASS. Это меня не пугает, это можно обсудить:)
ага. стало быть я предложил плохую реализацию.
а что такое маски вторичных раскладок?






[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]