Gun_Smoker » Вт авг 23, 2005 12:14 am
Так, а теперь по поводу программы.
Если я повторю чьи-то слова - сильно не пинать, я не осилил все посты выше.
1. В дереве уродские иконки.
Первое, что бросается в глаза при старте программы - ну просто страшенные иконки. Более того, они не интуитивно понятны. Необходимо найти получше и заменить умалчиваемый набор.
2. Файлы ассоциирует, но не открывает: запускается просто программа.
В опциях есть такая настройка: ассоциировать файлы с программой. Во-первых, состояние этой опции может не отражать реальное положение дел: т.е. эта опция может быть включена, а файлы не связаны - этот момент надо бы проверять при старте программы.
Более того, после успешного связывания, при дабл клике по файлу открывается программа и ничего не происходит <- это так и должно быть? Как написано в опциях: должно при этом открыться оглавление диска, нет? А если программа уже запущена, то она даже не соблаговоляет переместиться на передний фон.
3. Зачем в справке сделаны разные иконки у топиков?
Да, в справке у каждого топика уникальная иконка. Ну где ты такое видел? Я 10 минут ломал говову, что может значить иконка с видеокамерой у топика "Первый запуск". Это особый метод запутывания пользователей?
4. Изменить в контекстном меню диска -> Свойства?
Правый клик по диску - пункт "Изменить". Ну не всем кристально ясно, что такой пункт вызывает свойства диска. Может быть так и стоит назвать его - "Свойства"? Когда я щёлкаю по диску и вижу "Изменить" - первая ассоциация, что мне дадут править содержимое диска. А тут облом.
5. SDK/заголовочники в хелпаре.
Почему бы в справке не сделать раздел "Разработчику", куда вынести заголовочные файлы сервера и API плагинов для Delphi/C++? И краткое описание что, да как. Посмотри, как написаны хэлпари по API плагинов в Total Commander - вот что-то вроде этого интегрировать в справку.
Это вообще надо сделать крайне резка. Народ поломится писать плагинчики => они будут писать твою прогу за тебя => она возростёт по популярности.
6. Добавить - редирект хз куда.
В меню Файл/Сменить базу данных/Добавить. Несколько запутанно, тебе не кажется? Может имеет смысл сделать Файл/Новая база данных и Файл/Сменить базу данных? Такая раскладка больше напоминает стандартизированный File/New и File/Open recent. Кроме того, если я хочу создать новую БД и жмахаю на "Добавить", меня редиректает на страницу настроек. Это, по-твоему, нормальное поведение? <!--emo&:huh:-->[img]style_emoticons/<#EMO_DIR#>/huh.gif[/img]<!--endemo--> Почему бы не спросить у пользователя имя и размещение новой хрюшки, как делают это все нормальные программы?
7. Автосайз колонок в настройках.
В настройках, где плагины, поставь авторесайз колонок, а то там имён не видно, многоточие вставляются. Ручками ресайзишь - ширину колонок не сохраняет программа. Ну и по ходу дела, где ещё есть стринггриды - либо автосейв ширин колонок, либо автосайз, либо одно из двух © Колобки.
8. Объяснения к опциям/минискриншоты.
Опции по категориям - гуд. Но для некоторых их названия невнятны, что ли. К примеру, "Пути для загрузки иконок", "Не обновлять дерево каталогов при изменении диска". Я вот первый раз запустил программу и что я должен думать? Хинты помогают, но не очень. Они почти дублируют названия. Почему бы не сделать поле в окне настроек, где бы подробно пояснялось, как ведёт себя программа с включенной и выключенной опциями. А если бы при этом был мини-скриншот: до применения опции и после, который бы наглядно показывал эффект от настройки, то это бы ло бы просто супер. Необязательно на каждую опцию заводить по полю. OnMoseEnter/Leave ловить - и в одном поле показывать 'всплывающий' текст/скрин.
З.Ы. и почему бы не пробудлировать Настройки в меню Файл? Уже на рефлексе туда лезу.
9. Дабл клик - вернуть/отдать (радиобокс: игнор, свойства, мув), отдельно галка - игнор дабл клика по папке. И навешать хоткеев: F2 - свойства и т.п.
Вот для меня одной из частых задач будет учёт, кому какие диски я отдал. И наиболее частые действия было бы логично вынести на даблклик, а не на контекстку. Посему, нельзя ли в опции включить панельку с радиобоксами, типа
Действия по даблклику:
(o) Игнорировать
( ) Свойства диска
( ) Отдать/Вернуть диск
.... <- если кто ещё что придумает
И при выборе 'Отдать диск' выводить подменю со списком овнеров.
И ещё вставить независимый чекбокс - "игнор даблклика по нелистовому узлу", а то даблклик по папке одновременно с открытием приводит и к отображению свойств - это гуд или нет в зависимости от ситуёвины, но чаще - нет.
Навешай горячих кнопок на действия в контектном меню (в настройках бинды сделай).
10. В контекстном меню подсветка жирным, но игнорируется даблклик.
Вот-вот. Открываю контекстку, там Изменить - жирным подсвечено. Во, думаю, местный хоткей. Даблклик по другому диску - облом! В настройках-то даблклик отключен. Так что отслеживай такой момент. Если дефолтного действия не повешено - гаси подсветку.
11. Новая папка - применить/ладно - две папки. Проверки на одинаковые имена - нет.
Создаю new folder. Ввожу имя, жму по-привычке применить, потом - Ок => в результате создаётся две папки. Это ненормально, имхо. <!--emo&:lol:-->[img]style_emoticons/<#EMO_DIR#>/laugh.gif[/img]<!--endemo--> Кроме того, прога позволяет создавать папки с одинаковыми именами! Насчёт дисков не проверял, но наверно такая же бадяга. Проверяй уникальноть имён-то! А то как же я сам потом буду их идентифицировать?
12. На диске правый клик - нет новой папки.
По папке в контексте есть создать новую категорию, а для диска - нет. А почему? Сделай. А то неудобно тянуться наверх к папкам. Папка будет создаваться как подпапка уровня на котором сидит текущий диск.
13. Контрольные суммы.
Хотел было расписать (а я давно тебе о них ору), но решил заимплементить сам, если ты введёшь поддержку в API плагинов (см. ниже). <!--emo&:angry:-->[img]style_emoticons/<#EMO_DIR#>/mad.gif[/img]<!--endemo-->
14. Плагины: где создать новая тема?
Во всех плагинах есть тема отключен (которая почему-то допускает добавление фильтров) и стандартная. А как создать новый профиль? Не нашёл. <!--emo&<_<-->[img]style_emoticons/<#EMO_DIR#>/dry.gif[/img]<!--endemo-->
15. Новые плагины: архиваторные, кастом....
// Типа, ниже инфа для автора и техноманьяков, юзерам ниже не читать. <!--emo&:D-->[img]style_emoticons/<#EMO_DIR#>/biggrin.gif[/img]<!--endemo-->
Короче, насчёт плагинов: не видел сырцов и не знаю архитектуры, но предлагаю сделать примерно так для плагинов сохранения превьюх (у тебя есть для них название?) :
Плагину передаётся THandle на открытый файл на диске и его имя с путём. Плагин проверяет заголовок/тип файла и возвращает True, если он могёт обработать файл. Далее сервер вызывает функу снятия превьюхи и плагин создаёт по файлу превьюху и вызывает предоставленную сервером функцию записи в поток базы данных. Сервер предварительно вписывает в БД данные какого плагина там храняться вместе с файлом и вписывает данные превьюхи от плагина. При отображении превьюх в оглавлении диска сервер читает GUID плагинчика (где-то я видел, что плагины у тебя на GUID повешены) и вызывает функцию отображения из плагина. Функа плагина читает свой блок данных и отображает превьюху. С этой целью сервер предоставляет плагину дескрипторы Memo-хи, Canvas-са и RichEdit-а. Соотвественно плагин пихает превьюху в наиболее подходящий контейнер и возвращает серверу тип контейнера. Ну а серв просто делает этот контейнер видимым.
Теперь насчёт прочих плагинов.
Предлагаю ввести ещё три типа плагинов: импорт/экспорт/"прозрачные превьюхи".
Ну импорт/экспорт - эт понятно <!--emo&:lol:-->[img]style_emoticons/<#EMO_DIR#>/laugh.gif[/img]<!--endemo-->
Поясню зчто есть и зачем надо последнее. При скарировании этот тип плагинов работает по той же схеме, что и превьюшные выше, но при этом плагин не предотвращает выполнения другого плагина и сам не может быть блокирован другим плагином (ну превьюха если была создана плагином, то обычные плагины ниже по списку управление не должны получить). При отображении же дерева каталогов данные таких плагинов пропускаются. Зачем нужен такой плагин, что сейвит инфу, но не отображает? А у сервера сделать API, который бы перечислял оглавление и такие вот дополнительные потоки. Эти потоки через такой API могли бы использовать другие плагины или внешние проги. К примеру, плагин экспорта, мог бы использовать парный 'прозрачный' плагин, который бы сейвил инфу, которую твоя прога не юзает, а для экспорта она нужна. И для таких 'прозрачных' плагинов сделать возможность вынесения своей менюхи в контекстное меню плагина. А с этой фишкой можно будет реализовать мои любимые контрольные суммы как плагин. Типа, прозрачный плагин собрал хэш, а в контекстку добавил пункт - найти дубликаты.
Ну вот, пока всё!
З.Ы. Это я пока сказал по тому, что уже есть, новых возможностей не предлагал ещё <!--emo&;)-->[img]style_emoticons/<#EMO_DIR#>/wink.gif[/img]<!--endemo-->
Got any smokes?