> И покодирую. > Вот дойдем до красивой и стройной модели да и начнем... Ой, баюс, баюс... > не совсем так. > требуется только возможность отключать уже сконфигуренные группы. > enable_group(index) > disable_group(index) Легко. Это то же самое, что secondaryGroupMask |= ( 1 << index ) или secondaryGroupMask &= ~( 1 << index ). Группа становится дополнительной, ее можно активизировать только через меню. Приделать к этому вызов - нет проблем. > надо придумать такую концепцию, чтоб была красива и не мешала воплощать > необходимый функционал. > я не стою горой за данные функции, но давайте смотреть, что мы можем > сделать. Приведенные выше функции реализуемы легко. Я боялся худшего - переинициализации всей конфигурации, типа setConfig( model, layouts, options ... ) В принципе, даже это есть. Но давать это плагинам в виде публичного API не хоца. А то начнут пользовать, а люди будут ругаться на "тормоза". > >Прямо так жестко? Введем "Бритву Любимова" (сорри за фамильярность, но в истории так принято) и будем отсекать:) > а как же иначе? это концептуальный вопрос. иначе кодить нечего... Концептуально - да, конечно. Я боялся, что Вы захотите составить два _окончательных_ списка функций. Если дело только в концепции (в правилах при отборе фич для core и плагинов) - тогда да, обязательно. > Опять умный тезис хотел процитировать, да подумал, что хватит. Не на > кафедре. :) Да ладно, все свои:) > стороны плагины будут писаться и нами, но в порядке очереди. Вот эту > очередь и стоит выстроить. Хотя бы по зависимостям, а еще лучше и по весу. Ну вот это уже конкретнее. Т.е. берем конечный маленький список первых плагинов и смотрим, что им нужно. > Для себя, подробней и на русском. Не. Только на аглицком, с вашего соизволения. И лежать оно все, понятно, будет в CVS. Сколь угодно подробно. > Нельзя рассчитывать на помощь других, не имея четкого плана. "Есть ли у вас план, мистер Фикс?":) > >>*список раскладок* (я понимаю, что ограничение на 4 раскладки, но > >>закладывать это в дизайн странички как то недальновидно) > >Можно заложить. Изменение протокола xkb практически вряд ли осуществимо. > Ну хотя бы подумать на эту тему. Ну плохо же разворачивать классический > список в шеренгу... Это обсуждаемо. Вопрос лишь в том, как пользователь, добавивший 4 раскладки, будет воспринимать внезапное посерение кнопки "Добавить". Жаловаться ведь побежит, гаденыш. > Не забывайте, что конфигуратор внедряется в гном. Дефолтная раскладка, > это очень важный параметр. Он обязательно должен быть доступен для гнома > и без апплета. Зачем??? Кто ее, кроме апплета будет использовать? И главное - человек что-то там себе сконфигурил - и будет ждать, что это повлияет на его жисть (на поведение системы). А оно не влияет. Никак. Или нужно человека молотком по башке - "ЗАГРУЗИ АППЛЕТ, ДЯДЯ!" > Он 100% нужен для rule-based engine. Одно из action - установить группу > по дефолту. Глобальную? Для класса окна? Не понял, сорри. В любом случае - это будет использовать только апплет и его плагины. > минимально, это флаги 1,2,3,4 > и движок 0 ->4 при 4 в лог идут все записи, при 0 - ничего. при 2 -> > записи с флагами 1 и 2. Уже есть. Правда, в libxklavier - но испоользуется везде (и плагины могут). Посмотрите на XkbDebug. Достаточно? > >> * набор action (установить раскладку по умолчанию, установить > >> конкретную раскладку и т.д.) > >Давайте уж в терминах xkb, коль скоро говорим о разработке. Вы про раскладку - или про группу? Раскладку, вообще говоря, установить нельзя:) > группу. Хорошо, группу по умолчанию - глобально или per window устанавливаем? > Зато я понял из дальнейшего контекста, что предполагается включать и > выключать сконфигуреные раскладки в control-center. > Тоже годится. А я опять не понял:) > >>Воля ваша, а я бы флажки _временно_ (до stable релиза) прибил. > >До какого предела? Вообще - или выбор картинки руками? > вообще. Не, пусть будут. С ними веселее:) > Флажки в гноме есть? табличка соответствий между флажками и группами в > гноме есть? > Флажки ко всем группам есть? > Получается весьма неполная функция. Флажки есть у меня. Таблички нет и не надо. Флаги - не по группе, а по раскладке (вариант игнорируем). То, что в gswitchit есть раскладки без флагов - беда. Пользователи будут жаловаться - будем добавлять (или кто-то пришлет однажды все недостающие - благо это несложно). > Например, чтобы показать, что функция автокоррекции вводимого текста > включена. Фон надписи поменять можно? Короче, надо сделать так. Еще две функции (точки входа) у плагина - во-первых, плагин может заменить GtkWidget внутри апплета на свой. Во-вторых, он может "скорректировать" существующий GtkWidget. В ядре будут две реализации - label и картинка. Остальное - как хотите. > >Правило - простое. WM_CLASS->group number. В gconf кладется в виде > >/apps/gswitchit/Windows/WM_CLASS.0 > >/apps/gswitchit/Windows/groupNumber.0 > это вырожденное правило. Без уточнения виджета его нельзя будет Сорри, это был defaultGroupNumber - на создание окна. > >Может, когда-то добавится > >/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 Сорри, не очень понял, почему в разных ветках GConf? > и далее switch на action_id > и если сказано отдать в плагины - прогон по плагинам. Не надо. Усложнение чрезмерное. Плагины будут работать всегда. > Конфигуратор должен отражать задачу пользователя. А правила абстрактны. > Иожно написать несколько плагинов с разными видами гуя, которые будут > формировать правила по своим шаблонам. > Получается выход один - правила, а входов много - конфигураторы. А зачем вообще плагину задавать правила? Он же и так знает, какие окна и зачем ему нужны. И загружен он будет в любом слчае. Вот пусть и обрабатывает события. Всяко быстрее будет, чем rule engine. > ага. стало быть я предложил плохую реализацию. > а что такое маски вторичных раскладок? Вторичные раскладки (точнее группы) - группы, которые система разрешает только через меню апплета (иначе она просто проматывает на следующую). С помошью клавиатуры их выбрать низзя. Маска указывает, какие группы вторичны. Например, маска 0x0C говорит нам, что группы 3 и 4 - вторичны. Сергей
Attachment:
signature.asc
Description: =?koi8-r?Q?=FC=D4=C1?= =?koi8-r?Q?_=DE=C1=D3=D4=D8?= =?koi8-r?Q?_=D3=CF=CF=C2=DD=C5=CE=C9=D1?= =?koi8-r?Q?_=D0=CF=C4=D0=C9=D3=C1=CE=C1?= =?koi8-r?Q?_=C3=C9=C6=D2=CF=D7=CF=CA?= =?koi8-r?Q?_=D0=CF=C4=D0=C9=D3=D8=C0?=