Кстати... м.б. оффтоп, но всё же - видели, как реализована консоль во Фрегате? Она там своя - не встроенная в гуй консоль, а именно свой контрол, имитирующий работу консоли. Как оно работает с псевдографическими прогами - другой вопрос, но всё-таки, может имеет смысл сделать в TC нечто подобное? По крайней мере не будет проблем с тем, что консоль как-то что-то не так как надо обрабатывает.TotalConsole не имитирует cmd она его и запускает на своей форме.
Обсуждение возможных улучшений работы с консолью для TC7.5
Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik
- CaptainFlint
- Сообщения: 6239
- Зарегистрирован: Вт дек 14, 2004 22:34
- Контактная информация:
Нет уж, не надо такую. 
У меня есть другая идея на этот счёт - воспользоваться средствами винды для обычного аттача консоли к самому Тоталу и пускать приложения в ней, а по Ctrl+O эту самую приаттаченную консоль показывать/скрывать. Я уже и тестовую демо-прожку набросал, хочу предложить такой подход для 7.5.
У меня есть другая идея на этот счёт - воспользоваться средствами винды для обычного аттача консоли к самому Тоталу и пускать приложения в ней, а по Ctrl+O эту самую приаттаченную консоль показывать/скрывать. Я уже и тестовую демо-прожку набросал, хочу предложить такой подход для 7.5.
Почему же, ё-моё, ты нигде не пишешь "ё"?
Такую же - может и не надо. Тем более во Фрегате она глючная и медленная.Нет уж, не надо такую.
В принципе, тоже вариант. Хотя у меня всё-таки есть вопросы по тому, как это организовать.У меня есть другая идея на этот счёт - воспользоваться средствами винды для обычного аттача консоли к самому Тоталу и пускать приложения в ней, а по Ctrl+O эту самую приаттаченную консоль показывать/скрывать
Допустим, при наборе команды в командной строке TC она передаётся в связанную консоль. Консоль - отдельное приложение, и потому полноценное взаимодействие с тоталом так просто не организовать. Как она будет перехватывать хоткеи? Что делать если запущено две консоли (запустили в одной бесконечный пинг, тут же в TC задали новую команду)? В общем, разные не очень существенные вопросы остаются в любом случае.
- CaptainFlint
- Сообщения: 6239
- Зарегистрирован: Вт дек 14, 2004 22:34
- Контактная информация:
Нет. В моём случае консоль - это часть самого Тотала. Отдельная консоль запускается только в том случае, если основная консоль занята, но отдельными консолями управление не предусматривается.D1P писал(а):Консоль - отдельное приложение, и потому полноценное взаимодействие с тоталом так просто не организовать.
Пока не знаю. Не уверен, что вообще хоткеи получится перехватывать. Но в любом случае, даже без хоткеев это будет на порядок лучше, чем то безобразие, что сейчас в Тотале.D1P писал(а):Как она будет перехватывать хоткеи?
Смотря в какой что запустили. В ридми-файле у меня всё чётко описано: управляемая консоль одна. Если запустить в ней приложение, которое долго выполняется, то всё, все остальные команды будут запускаться в точности так же, как сейчас - запускается новая отдельная консолька, мигает и исчезает, и никак её не вернуть.D1P писал(а):Что делать если запущено две консоли (запустили в одной бесконечный пинг, тут же в TC задали новую команду)?
Я их все постарался продумать и описать в прилагаемом документе. Естественно, абсолютно все мыслимые ситуации разобрать я не имел возможности, тогда бы документик вышел длинным и нечитабельным, но общая концепция там описана. Разумеется, есть недостатки (типа того же блокирования основной консоли), но всё же это достаточно редкая ситуация. Кроме того, никто не мешает запускать блокирующее приложение в отдельной консоли, не связанной с Тоталом, тогда связанная останется свободной для запуска других приложений и команд.D1P писал(а):В общем, разные не очень существенные вопросы остаются в любом случае.
Почему же, ё-моё, ты нигде не пишешь "ё"?
- CaptainFlint
- Сообщения: 6239
- Зарегистрирован: Вт дек 14, 2004 22:34
- Контактная информация:
Название темы:
Собственно, консоль, юникод, и, возможно, фоновый поиск - имхо всё, что нужно TC для получения статуса Абсолютного и Универсального Повелителя Файлов
Улучшение, собственно, должно быть одно: сама консоль должна присутствовать в TC. Хоть как, хоть плагином, хоть встроенная. И работать с ней должно быть удобно. Так же удобно, как с обычной консолью... нет, даже ещё удобнее.Обсуждение возможных улучшений работы с консолью для TC7.5
Собственно, консоль, юникод, и, возможно, фоновый поиск - имхо всё, что нужно TC для получения статуса Абсолютного и Универсального Повелителя Файлов
- CaptainFlint
- Сообщения: 6239
- Зарегистрирован: Вт дек 14, 2004 22:34
- Контактная информация:
Вот моё имхо насчёт консоли:
Выглядеть это должно примерно так же, как сейчас это сделано в TotalConsole, само собой без несуразных кнопок. Т.е. окно с консолью, размер которой регулируется сплиттером с изменением размера файловых панелей. Опционально возможно разворачивание консоли на всё окно TC (аналог Ctrl+O в FAR/MC), разве что имеет смысл оставлять видимыми тогда меню и панель инструментов.
Должен обрабатываться d'n'd в консоль (тащим файл, подставляется его имя), передача имён подкурсорных файлов по хоткею, ну и вообще, опциональная возможность копипастить в консоль что угодно в текстовом виде. Хотелось бы также возможность копипастить ИЗ консоли привычным образом - через выделение мышью/курсорными клавишами с шифтом, копированием через ctrl+c (а не Enter, как в стандартной консоли).
Само собой, что консоль забирает фокус, нужно будет предусмотреть переключение из/в консоль хоткеем. Но что делать со стандартными тоталовскими хоткеями, если консоль в фокусе? Ведь приложение, работающее в консоли, может использовать такие же клавиатурные сочетания? Самый очевидный вариант - блокировать.
Вспомним и про псевдографику. Пусть я запущу в тоталовской консоли псевдографический нортон? что с ним делать, как с ним быть? Куча проблем... Или ФАР - который, вроде бы, поддерживает драг'н'дроп из/в себя... Или нет - я хочу запустить в консоли полноэкранную графическую игрушку (для отладки можно придумать что-то и поизвращённее). Что тогда?
Хотя меня устроит и просто консолька "как в фаре"
Выглядеть это должно примерно так же, как сейчас это сделано в TotalConsole, само собой без несуразных кнопок. Т.е. окно с консолью, размер которой регулируется сплиттером с изменением размера файловых панелей. Опционально возможно разворачивание консоли на всё окно TC (аналог Ctrl+O в FAR/MC), разве что имеет смысл оставлять видимыми тогда меню и панель инструментов.
Должен обрабатываться d'n'd в консоль (тащим файл, подставляется его имя), передача имён подкурсорных файлов по хоткею, ну и вообще, опциональная возможность копипастить в консоль что угодно в текстовом виде. Хотелось бы также возможность копипастить ИЗ консоли привычным образом - через выделение мышью/курсорными клавишами с шифтом, копированием через ctrl+c (а не Enter, как в стандартной консоли).
Само собой, что консоль забирает фокус, нужно будет предусмотреть переключение из/в консоль хоткеем. Но что делать со стандартными тоталовскими хоткеями, если консоль в фокусе? Ведь приложение, работающее в консоли, может использовать такие же клавиатурные сочетания? Самый очевидный вариант - блокировать.
Вспомним и про псевдографику. Пусть я запущу в тоталовской консоли псевдографический нортон? что с ним делать, как с ним быть? Куча проблем... Или ФАР - который, вроде бы, поддерживает драг'н'дроп из/в себя... Или нет - я хочу запустить в консоли полноэкранную графическую игрушку (для отладки можно придумать что-то и поизвращённее). Что тогда?
Хотя меня устроит и просто консолька "как в фаре"
- CaptainFlint
- Сообщения: 6239
- Зарегистрирован: Вт дек 14, 2004 22:34
- Контактная информация:
То, что сейчас творит автор TotalConsole со всеми этими хуками, перехватами, внедрениями в чужой процесс, для Гислера вряд ли будет приемлемо. Как-то всё это очень некрасиво выглядит, плюс сколько времени автор эту самую консольку отлаживает, а захочет ли Гислер столько с ней возиться, получая глюк за глюком?D1P писал(а):Выглядеть это должно примерно так же, как сейчас это сделано в TotalConsole, само собой без несуразных кнопок.
Как ты представляешь себе такую интеграцию, чисто на техническом уровне? В моём идеале должна быть тесная интеграция консоли с командной строкой Тотала, но я пока что себе даже вообразить, как оно должно работать, не могу, что уж говорить о конкретном алгоритме и API-вызовах... Именно поэтому мой вариант никакой интеграции не позволяет, и ввод в основной консоли вообще отключён (если, разумеется, там не запущена какая-нибудь интерактивная прога).D1P писал(а):Должен обрабатываться d'n'd в консоль (тащим файл, подставляется его имя), передача имён подкурсорных файлов по хоткею, ну и вообще, опциональная возможность копипастить в консоль что угодно в текстовом виде.
Да неужели? Ты готов мириться с тем, что работа с Тоталом полностью блокируется, пока не закончит выполняться какой-нибудь несчастный пинг? А вот я - не готов.D1P писал(а):Хотя меня устроит и просто консолька "как в фаре"
Кроме того, консоль - это одно, а GUI - это совершенно другое. Нельзя вот так запросто переносить функции консольного Фара на графический Тотал, для этого попросту нет соответствующих системных средств.
И вообще, просьба ко всем участникам этого обсуждения: не забывайте, что мы живём в реальном мире. Гислеру консоль нафиг не нужна, это очевидно, иначе бы он давно её реализовал. Отсюда следует, что необходимыми (но отнюдь не достаточными) условиями реализации консоли являются следующие:
1. Простота реализации.
2. Чётко поставленная задача, полное описание интерфейса и поведения с точки зрения пользователя.
3. Крайне желательно наличие готового алгоритма, а то и работающего куска кода.
Я завёл это обсуждение не для того, чтобы можно было представлять себе, какой могла бы быть идеальная реализация консоли (причмокивая и мечтательно закатывая глаза), а для того, чтобы выявить пример реализации, а) достаточно удобный для того, чтобы хотя бы частично удовлетворить нужды консольщиков, б) имеющий потенциал для развития в дальнейшем, в) достаточно простой в реализации, чтобы можно было уговорить Гислера всё-таки его добавить.
Своё предложение я привёл выше. Чистый код работы с консолью в моём варианте занимает меньше двухсот строк, полный исходный код я, естественно, отдам Гислеру (если кому надо, могу и здесь выложить). Реализация не идеальная, но она покрывает 80% всех моих нужд. Осталось найти пример реализации, покрывающий примерно такую же часть нужд остальных пользователей, но только чтобы эта реализация не была намного сложнее (иначе Гислер её просто не будет добавлять).
Почему же, ё-моё, ты нигде не пишешь "ё"?
-
DrShark
- Сообщения: 911
- Зарегистрирован: Сб окт 21, 2006 20:27
- Откуда: Kyiv, Ukraine
- Контактная информация:
Посмотрел я на демо-прожку.
Тут у меня такие вопросы, на случай, если Гислер решится встраивать нечто подобное в TC.
1) будет ли в TC 7.5 поддержка Unicode? Если да, то и сконсолью он тоже должен будет работать в этом режиме.
2) если будет Юникод, откажется ли Гислер от поддержки Win9x?
Вроде бы он ANSI-версию для этих осей делать собирается. Тогда ему придётся поддержку Command.com делать.
Т.к. консоль в TC нужна далеко не всем, и, наверное, даже не большинству, то он может просто забить на эту идею. Или, во всяком случае, отложить до версии 8.0 или выше.
Тут у меня такие вопросы, на случай, если Гислер решится встраивать нечто подобное в TC.
1) будет ли в TC 7.5 поддержка Unicode? Если да, то и сконсолью он тоже должен будет работать в этом режиме.
2) если будет Юникод, откажется ли Гислер от поддержки Win9x?
Вроде бы он ANSI-версию для этих осей делать собирается. Тогда ему придётся поддержку Command.com делать.
Т.к. консоль в TC нужна далеко не всем, и, наверное, даже не большинству, то он может просто забить на эту идею. Или, во всяком случае, отложить до версии 8.0 или выше.
- CaptainFlint
- Сообщения: 6239
- Зарегистрирован: Вт дек 14, 2004 22:34
- Контактная информация:
Он собирается её добавлять. Получится в 7.5 или нет - пока неизвестно, в своих сообщениях о юникоде он всегда говорил с осторожностью о "версии 7.5 или 8.0".DrShark писал(а):1) будет ли в TC 7.5 поддержка Unicode?
Само собой. В Тотале после этого все вызовы будут юникодными, лишь для поддержки Win9x будут добавлены заглушки-конверторы.DrShark писал(а):Если да, то и сконсолью он тоже должен будет работать в этом режиме.
Отказываться он очень не хочет, но сказал, что теоретически такая возможность не исключена, поскольку не знает, какие проблемы могут вылезти при переписывании всего на юникод.DrShark писал(а):2) если будет Юникод, откажется ли Гислер от поддержки Win9x?
ANSI-версию - нет, не собирался. Он сказал, что уже достаточно намучился с одновременной поддержкой 16- и 32-битной версий.DrShark писал(а):Вроде бы он ANSI-версию для этих осей делать собирается.
Вот на command.com я в своей прожке не рассчитывал, хотя намеревался...DrShark писал(а):Тогда ему придётся поддержку Command.com делать.
Но моё личное мнение (никому его не навязываю), что 9x - уже мёртвые системы, и я не вижу особого криминала, если Тотал будет поддерживать интегрированную консоль только в более-менее современных виндах.
Это запросто, и в первую очередь именно по этой причине я ищу решение, которое при минимально возможных трудозатратах Гислера дало бы максимальную отдачу.DrShark писал(а):Т.к. консоль в TC нужна далеко не всем, и, наверное, даже не большинству, то он может просто забить на эту идею. Или, во всяком случае, отложить до версии 8.0 или выше.
Почему же, ё-моё, ты нигде не пишешь "ё"?