Я хочу позволить пользователю две вещи:
1. возможность полностью (на 100%) изменить скин и поведение GUI (отключить часть диалогов, настроить уведомления, звуки, для каждого окошка/поля ввода задать свой цвет текста, фон, текстуру и т.д.)
2. возможность заменить GUI на свой собственный (ну скорее как плагин наверное), если настроек скинования будет недостаточно
Подскажите, какие проекты используют такой подход и какую документацию лучше всего зачитать про это, а то изобретать велосипед сильно не хочу
* * *
Я так понимаю, что нужно будет задекларировать все вызовы гуя (все сообщения, все кнопки, все формы, поля текста и вообще все, с чем работает пользователь), процесс гуя запускать отдельно, которому сообщения выдавать в некотором промежуточном формате вроде «NEW_USER_MESSAGE someuser Привет!», а оно уже и мелодию для события NEW_USER_MESSAGE проиграет, и окошко/попап с текстом «новое сообщение „Привет!“ от someuser» выдать, или вообще что-то скриптовое запустить. А если настроек будет мало, то морду вообще можно переписать, например, под ncurses, здесь от NEW_USER_MESSAGE может зависеть цвет шрифта (его тоже надо разрешить настраивать). Здесь же решается проблема с локализациями, все текстовое даем юзеру. Проблема в том, что я не знаю до какого уровня абстракций идти: сделать ли многоуровневые команды, типа ALERT TYPE=NOTIFY SOURCE=REMOTEUSER ID=NEW_USER_MESSAGE, сделав минимальную обертку над тулкитом, повторяя его Alert.Info/Warning/Danger, или каждый NEW_USER_MESSAGE изобретать с нуля. А может есть что-то более лучшее?