Tkabber Wiki

Чебуратор
Login

Материал из Tkabber Wiki

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

Теперь о том, как можно строить обсуждение и вносить предложения тут. Каждая фича этого конфигуратора сделана в виде отдельного раздела. Если кому-то надо чего-то добавить, в разделе пусть создаёт подраздел и туда пишет пожелания. Новый участник - новые пожелания. Не забывайте также об "Обсуждении" статьи (ссылка наверху, рядом с "Править").

Содержание

Из чего состоит

Идея работы конфигуратора

В виндовой версии конфигуратор запускается сразу после инсталляции Ткаббера, вместо Нотепада с открытым на редактирование конфигом. В линуксовой — это просто исполняемый файл, запускается вручную. При старте определяет локаль и выводит все сообщения на соответствующем языке. Дефолтный — английский.

Как выглядит

Выглядит он наподобие окна логина — с несколькими табами. Каждый таб — выбор соответствующей опции. Каждая опция представляет собой одну из самых насущных настроек Ткаббера - одно значение по умолчанию и несколько дополнительных (Радиобатоны). Также на каждом табе присутствует название редактируемой опции, например, ::ifacetk::roster::show_transport_user_icons. Называются табы, естественно, по-другому- на человеческом языке. Внизу окна две кнопки, общие для всех табов: "Сохранить в конфиг" и "Отмена". Описания табов идут ниже.

Цветовая схема

Дефолтная — что-нибудь светлое, либо дефолтная из линукса, либо ice, либо teo. Остальные — те, что имеются в наличии. Для каждой имеется небольшой скриншот (верхний левый угол, где меню, кнопки, верхний кусок ростера).

Fixer

После недавнего откровения kostix об tk, windows и tkabber я его полностью поддержал в плане тем. Дефолтная - Windows и *nix системы (для *nix возможно подойдет dark и моя почти готовая тема, требует обсуждения). Остальные темы, что имеются в наличии я бы отправил в биореактор =), ибо часть из них имеет очень отвратительную цветовую гамму ;))

Bigote

А почему для *nix тёмную? Типа пусть глаза ломают? Я ведь светлую тему не просто так выбрал, а из соображений эргономики ;)

Kostix

Никаких тем по дефолту!

Повторю ещё раз:

никаких тем по дефолту!

Tkabber в любой системе выглядит так, как в ней выглядит Tk. (Перечитайте это ещё раз.) А начиная с какой-то древней своей версии под виндами и макосью он использует "нативные" средства этих систем для отрисовки своих виджетов, то есть Ткаббер в этих системах выглядит (почти) как любая другая "нативная" программа.

Проблема с виндами заключается в том, что "нативность" этой платформы имеет свойство меняться: сначала (в XP) появился движок тем, а потом (в Vista) была сделана полная переделка концепций UI.

Тикль под виндами не умеет ни схемы WinXP, ни Aero от Висты. Поэтому под этими платформами он выглядит в некоторой степени "ненативно", причём в случае XP это касается только тем, отличных "классической", в которой тикль (почти-почти) ничем не отличается от "чисто виндовых" приложений.

Пока эта проблема не решена на уровне прикручивания Tile к Ткабберу, конфгуратор может предложить выбрать "очень светлую" тему, совместимую по уровню отвратительности со схемой Luna (дефолтная для WinXP). Но ни в коем случае не делать её схемой по умолчанию.

Портирование под Tile позволит решить проблему с внешним видом в XP + даст значительно больше простора для любителей выделывать шкуры. Однако, Aero/WinFX в тайле пока что не поддерживается, то есть проблему с вистой это *сейчас* не решит. С другой стороны, очень вероятно, что такая поддержка со временем там появится, и Ткаббер "автомагически" сможет выглядеть нативно и в висте.

Что касается иксов, то в них нет и никогда не было определённого "лука и фила" — он свой у каждого тулкита. Это важно понимать! Понимать то, что даже такого примитива, как "меню" в xlib нету, "нижний уровень" знает только про такие вещи как окна и графические примитивы.

Многие почему-то считают, что Tk должен выглядеть как Qt, или как GTK, или как-то ещё. Это неверно, Tk это самостоятельный тулкит, он не обязан мимикрировать.

Ещё одно заблуждение проистекает из того, что некоторые считают, будто файлы *.xrdb в Ткаббере -- это "темы". Полная чушь! Это просто скрипты, содержащие команды Тк (то есть даже не Ткаббера, а Тк), которые настраивают "базу данных опций" Tk ("option database"). Tk под иксами умеет брать настройки из XRDB, так что умелый пользователь, скорее всего, содержит в своём файле ресурсов настройки для своих Tk приложений. Это стандартная практика в юниксах. В винде/макоси нет подобного механизма, поэтому без файлов *.xrdb или помещения соотв. кода в конфиг Ткаббера настроить "лук и фил" невозможно.

Отсюда видно, что если под виндами ещё можно подвести логическую базу под прикручивание некой "темы" по умолчанию, то под иксами эта идея противоестественна и нелогична.

Начните уже отвыкать от мышления в стиле Winamp.

Bigote

Говоря про светлую схему, я имел в виду, что самое главное — не надо тёмной. Любое отклонение от "белый фон - чёрный текст" (плюс-минус бледные оттенки; говорят, что светло-бежевый в качестве фона приятнее) создаёт проблемы для глаз. Так что согласен с Kostix.

Kostix 01:06, 10 сентября 2006 (MSD) говорят, что светло-бежевый в качестве фона приятнее — "классическая" цветовая схема Tk (которая была дефолтной до, кажется 4.0) включается командой

tk_bisque

— можете попробовать в tkcon или консоли Ткаббера :)

Набор иконок ростера

По умолчанию — либо лампа с пером (текущий дефолт), либо нарисовать что-нибудь поинтереснее. Остальные — из того, что имеется на данный момент. Тоже представлены все иконки у каждого набора.

Fixer

По умолчанию — gush в тандеме с лампочкой в трее, либо нарисовать что-нибудь поинтереснее. На данный момент имеются лампочки для трея из Psi (Fixer). Провести акцию "Нарисуй новые иконки для лучшего Tkabbera", не забыть обьявить на ЛОР. =)

Bigote

Я согласен с teo — нельзя использовать чужие примочки в качестве "своих по умолчанию". Хотя бы из этических соображений. Нарисуй своё, и Родина тебя не забудет. Так что ни gush, ни psi. Опять же, не забывай, что на выбор будут представлены все остальные, с предпросмотром иконок. Так что выбрать тот же gush — дело одного клика. Если надо выбрать отдельную иконку для трея, можно просто оформить этот выбор отдельно — на этом же табе или на своём.

Archimed

Допустимо ли использовать иконки в дефолтной схеме, выпущенные сторонними производителями по лицензией GPL?

Bigote

Следуя букве лицензии — можно. Но у тебя повернётся рука присвоить чужое? Что — так уж сложно нарисовать свои иконки?

Kostix 01:22, 10 сентября 2006 (MSD) Если GPL, то уже не чужое, а наше :) Другое дело, что иконки выполняют не только утилитарную функцию, но и делают тот самый "distinct look and feel". Так что я против "недефолтных" иконок не потому, что "красть грешно", а потому, что с псиными и прочими иконками теряется этот самый собственный лук. Хотя фил, возможно, и улучшается.

Звуковая схема

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

Fixer

Желательно добавить регулятор громкости ;)

Сделано by Archimed

Bigote

В конфигуратор-то его зачем? Регулятор если куда и совать, то в сам Ткаббер.

Выбор шрифта

Два подраздела — один для окон разговора, другой — для виджетов. Выпадающее меню с названиями доступных в системе шрифтов, ещё одно — с размерами, ещё одно — с кодировками (если надо оно). Ну и ещё может какие. И — демонстрационный текст в реальном размере, как он будет выглядеть в окне чата. Отрисовать кусок окна чата с табами и пунктами меню, и текстом в чате, чтобы менялся при смене выбора шрифта и размера (наверно, гемор это великий...)

Подтверждение

Что делать по нажатию кнопки "Закрыть". Дефолтное состояние — "Закрыть программу".

Fixer

На данный момент весьма спорный момент. Требует обсуждения в конфе.

Bigote

Если на клетке слона видишь надпись "буйвол", не верь глазам своим (с)

Почему спорный? Разве не будет опции "Сворачивать в трей"? Кому надо — пусть сворачивают, но зачем это делать стандартным поведением?

Archimed

Дефолтное состояние — "Закрыть программу". Согласен только с условием, что от пользователя потребуют подтверждения.

Bigote

Archimed, поясни. Ты согласен закрывать программу по нажатию на кнопку "Закрыть" только в том случае, если при этом выскочит подтверждение? Но ведь пользователь может подтверждение отключить у себя в настройках, если ему не нравится наблюдать его у себя каждый раз. Как ты собираешься пользователя контролировать? ;)

Но я тебя понял — подтверждение нужно, конечно. Пользоваться им или нет — дело хозяйское :)

Параметры логина

Два радиобатона: "У меня нет аккаунта" и "У меня есть аккаунт". Если выбран один из них, дополнительные опции второго недоступны. Если отмечено "Нет аккаунта", видна надпись, что аккаунт надо будет создать при первом подключении к серверу. Во втором случае предлагается сохранить основные параметры логина: логин, сервер и т.д.

Примечание: если в окно логина приделать галочку "Сохранить параметры логина в конфиг", то тут этот таб и не нужен.

Параметры передачи файлов

Два радиобатона:

  1. "Я ламер, ничего про свой комп не знаю" — выбираются опции трансфера, которые будут работать в подавляющем большинстве случаев (ibb).
  2. Когда выбирается 2-й батон, становятся доступны чекбоксы, где можно указать, каким образом компьютер подключён к интернету. В зависимости от выбора включаются соответствующие настройки трансфера.

Показ аватар

Два чекбокса:

  1. Загрузить свою аватару
    • Кнопка для выбора файла аватары
    • Чекбоксы опций, разрешающие загрузку и расшаривание аватары
  2. Видеть чужие аватары. Для этого надо довести до ума патч Архимеда. (Ещё надо вывести сообщение о необходимости патчить такие-то и такие-то файлы, и вот потом хз — то ли предложить пользователю патчить всё самому, то ли прикручивать патчение в Чебуратор. Не забыть, что в юниксе патч накладывать может только root, то есть надо и тут продумать всё. Гемор, одним словом.)

Завершение

Когда всё выбрано, пользователь жмёт "Сохранить конфиг". Перед сохранением выводится предупреждение, что существующий конфиг, находящийся по адресу "бла-бла-бла", будет переписан.

Archimed

Думаю, стоит создавать резеврную копию.

"Умный" конфигуратор

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

Archimed

Нужно условно структурировать файл config.tcl, например, как конфиг от Badlop. Для простоты, если опция будет находится не на своём месте - нещадно её комментировать. В комментариях проставлять идентификатор опции.

Kostix

Господа! Забудьте уже про config.tcl!

У Ткаббера есть механизм Customize, который:

То есть мне не понятно, почему бы господам разрабатываюющим не использовать то, что уже есть? Почитайте custom.tcl в каталоге ткаббера, особенно custom::store и custom::restore.

Те настройки, которых нет в Customize (несколько аккаунтов, к примеру, или автологин), следует сначала туда прикрутить — и тем, кто не будет пользоваться Чебуратором, будет легче.

Bigote

А нельзя сделать так, чтобы конфигуратор работал с custom.tcl? Ведь если он будет обрабатывать его так, как обрабатывает сам Ткаббер, то проблем никаких: все эти настройки будут пихаться сразу в кастом.тцл, в результате конфиг чист как свежевыпавший снег. Параметры логина можно складывать в конфиг непосредственно при логине (добавить галочку про сохранение, описанную выше).

Kostix 18:23, 8 сентября 2006 (MSD) а я про что писал вверху? про это и писал! :)

Остальным участникам обсуждения

Ну вот, где-то так :) Добавляйте новые подпункты к имеющимся "табам", если есть идеи, что ещё можно таким образом конфигурировать. Если есть дополнения по существующим табам, добавляйте к ним под-подразделы под своим именем, например:

== Подтверждение ==
Что делать по нажатию кнопки "Закрыть". Дефолтное состояние - "Закрыть программу".
=== Fixer ===
Я не согласен. Давайте обсудим это в конференции.

По мере реализации каких-то пунктов можно их зачёркивать точно так же, как это делаем в Планах на будущее.

Конфигуратор на основе xml

Есть идея как сделать конфигуратор на основе xml. Вместо того, чтобы жестко прописывать настраеваемые опции, создаем xml файл с таким содержанием:

<option name=option1 value=::ifacetk::roster::show_transport_user_icons>
   <values type=radiobutton>
      <value name=value1 value=0/>
      <value name=value2 value=1/>
   </values>
</option>

И так для каждой опции. Интерфейс конфигуратора генерится автоматически при запуске. Соответственно, появляется гибкая система настройки конфигуратора. Например можно сделать несколько уровней (beginner, intermediate, advanced) с разным количеством опций. Конечно протокол еще требует обсуждения, но зачатки я здесь указал. Готов приступит к работе при одобрении данной идеи.

P.S.: Если где накосячил с xml, не пинайте сильно. :) Я мало с ним знаком. eXire

Kostix

Вспоминаем старика Оккама и идём читать эту статью, имея в виду, что тикль умеет всё то же самое, что и LISP, только его код не является S-expressions, а в остальном — позволяет натурально реализовать все идеи, изложенные в статье.

Однако, см. про Customize в разделе "Умный" конфигуратор.

Занятная статья — к вопросу о хранении данных для Tcl.

Archimed

IMHO не совсем стыкуется с идеей переконфигуратора

Переконфигуратор на основе плагинов****

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