Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Обсуждение возможных улучшений работы с консолью для TC7.5
Goto page 1, 2, 3, 4, 5, 6, 7, 8  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы printer-friendly view
View previous topic :: View next topic  
Author Message
D1P



Joined: 20 Dec 2004
Posts: 2973
Location: Тбилиси

Post (Separately) Posted: Thu Jun 07, 2007 21:21    Post subject: Reply with quote

Quote:
TotalConsole не имитирует cmd она его и запускает на своей форме.

Кстати... м.б. оффтоп, но всё же - видели, как реализована консоль во Фрегате? Она там своя - не встроенная в гуй консоль, а именно свой контрол, имитирующий работу консоли. Как оно работает с псевдографическими прогами - другой вопрос, но всё-таки, может имеет смысл сделать в TC нечто подобное? По крайней мере не будет проблем с тем, что консоль как-то что-то не так как надо обрабатывает.
_________________
База знаний о Total Commander
Блог
Back to top
View user's profile Send private message
Alextp



Joined: 06 Feb 2005
Posts: 4957

Post (Separately) Posted: Thu Jun 07, 2007 22:24    Post subject: Reply with quote

D1P,
знаю компонент (Дельфи, open source), который реализует такое.
Можно закинуть Гислеру.
Back to top
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 6193
Location: Москва

Post (Separately) Posted: Fri Jun 08, 2007 00:25    Post subject: Reply with quote

Нет уж, не надо такую. Smile
У меня есть другая идея на этот счёт - воспользоваться средствами винды для обычного аттача консоли к самому Тоталу и пускать приложения в ней, а по Ctrl+O эту самую приаттаченную консоль показывать/скрывать. Я уже и тестовую демо-прожку набросал, хочу предложить такой подход для 7.5.
_________________
Почему же, ё-моё, ты нигде не пишешь "ё"?
Back to top
View user's profile Send private message
D1P



Joined: 20 Dec 2004
Posts: 2973
Location: Тбилиси

Post (Separately) Posted: Fri Jun 08, 2007 01:03    Post subject: Reply with quote

Quote:
Нет уж, не надо такую.

Такую же - может и не надо. Тем более во Фрегате она глючная и медленная.

Quote:
У меня есть другая идея на этот счёт - воспользоваться средствами винды для обычного аттача консоли к самому Тоталу и пускать приложения в ней, а по Ctrl+O эту самую приаттаченную консоль показывать/скрывать

В принципе, тоже вариант. Хотя у меня всё-таки есть вопросы по тому, как это организовать.
Допустим, при наборе команды в командной строке TC она передаётся в связанную консоль. Консоль - отдельное приложение, и потому полноценное взаимодействие с тоталом так просто не организовать. Как она будет перехватывать хоткеи? Что делать если запущено две консоли (запустили в одной бесконечный пинг, тут же в TC задали новую команду)? В общем, разные не очень существенные вопросы остаются в любом случае.
_________________
База знаний о Total Commander
Блог
Back to top
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 6193
Location: Москва

Post (Separately) Posted: Fri Jun 08, 2007 01:51    Post subject: Reply with quote

D1P wrote:
Консоль - отдельное приложение, и потому полноценное взаимодействие с тоталом так просто не организовать.

Нет. В моём случае консоль - это часть самого Тотала. Отдельная консоль запускается только в том случае, если основная консоль занята, но отдельными консолями управление не предусматривается.

D1P wrote:
Как она будет перехватывать хоткеи?

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

D1P wrote:
Что делать если запущено две консоли (запустили в одной бесконечный пинг, тут же в TC задали новую команду)?

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

D1P wrote:
В общем, разные не очень существенные вопросы остаются в любом случае.

Я их все постарался продумать и описать в прилагаемом документе. Естественно, абсолютно все мыслимые ситуации разобрать я не имел возможности, тогда бы документик вышел длинным и нечитабельным, но общая концепция там описана. Разумеется, есть недостатки (типа того же блокирования основной консоли), но всё же это достаточно редкая ситуация. Кроме того, никто не мешает запускать блокирующее приложение в отдельной консоли, не связанной с Тоталом, тогда связанная останется свободной для запуска других приложений и команд.
_________________
Почему же, ё-моё, ты нигде не пишешь "ё"?
Back to top
View user's profile Send private message
Alextp



Joined: 06 Feb 2005
Posts: 4957

Post (Separately) Posted: Fri Jun 08, 2007 02:01    Post subject: Reply with quote

Может, сплитнуть эту тему (консоль в ТС 7.5)?
Back to top
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 6193
Location: Москва

Post (Separately) Posted: Fri Jun 08, 2007 02:09    Post subject: Reply with quote

Alextp wrote:
Может, сплитнуть эту тему (консоль в ТС 7.5)?

Угу.
_________________
Почему же, ё-моё, ты нигде не пишешь "ё"?
Back to top
View user's profile Send private message
D1P



Joined: 20 Dec 2004
Posts: 2973
Location: Тбилиси

Post (Separately) Posted: Fri Jun 08, 2007 03:04    Post subject: Reply with quote

Название темы:
Quote:
Обсуждение возможных улучшений работы с консолью для TC7.5

Улучшение, собственно, должно быть одно: сама консоль должна присутствовать в TC. Хоть как, хоть плагином, хоть встроенная. И работать с ней должно быть удобно. Так же удобно, как с обычной консолью... нет, даже ещё удобнее.
Собственно, консоль, юникод, и, возможно, фоновый поиск - имхо всё, что нужно TC для получения статуса Абсолютного и Универсального Повелителя Файлов Smile
_________________
База знаний о Total Commander
Блог
Back to top
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 6193
Location: Москва

Post (Separately) Posted: Fri Jun 08, 2007 03:26    Post subject: Reply with quote

D1P wrote:
сама консоль должна присутствовать в TC.

Это само собой. Вопрос лишь в том, как это должно выглядеть технически и с точки зрения пользователя, чтобы этим можно было пользоваться с удобством. Этому и посвящена (я надеюсь) данная тема.
_________________
Почему же, ё-моё, ты нигде не пишешь "ё"?
Back to top
View user's profile Send private message
D1P



Joined: 20 Dec 2004
Posts: 2973
Location: Тбилиси

Post (Separately) Posted: Fri Jun 08, 2007 04:48    Post subject: Reply with quote

Вот моё имхо насчёт консоли:
Выглядеть это должно примерно так же, как сейчас это сделано в TotalConsole, само собой без несуразных кнопок. Т.е. окно с консолью, размер которой регулируется сплиттером с изменением размера файловых панелей. Опционально возможно разворачивание консоли на всё окно TC (аналог Ctrl+O в FAR/MC), разве что имеет смысл оставлять видимыми тогда меню и панель инструментов.
Должен обрабатываться d'n'd в консоль (тащим файл, подставляется его имя), передача имён подкурсорных файлов по хоткею, ну и вообще, опциональная возможность копипастить в консоль что угодно в текстовом виде. Хотелось бы также возможность копипастить ИЗ консоли привычным образом - через выделение мышью/курсорными клавишами с шифтом, копированием через ctrl+c (а не Enter, как в стандартной консоли).
Само собой, что консоль забирает фокус, нужно будет предусмотреть переключение из/в консоль хоткеем. Но что делать со стандартными тоталовскими хоткеями, если консоль в фокусе? Ведь приложение, работающее в консоли, может использовать такие же клавиатурные сочетания? Самый очевидный вариант - блокировать.
Вспомним и про псевдографику. Пусть я запущу в тоталовской консоли псевдографический нортон? что с ним делать, как с ним быть? Куча проблем... Или ФАР - который, вроде бы, поддерживает драг'н'дроп из/в себя... Или нет - я хочу запустить в консоли полноэкранную графическую игрушку (для отладки можно придумать что-то и поизвращённее). Что тогда?
Хотя меня устроит и просто консолька "как в фаре" Smile
_________________
База знаний о Total Commander
Блог
Back to top
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 6193
Location: Москва

Post (Separately) Posted: Fri Jun 08, 2007 10:51    Post subject: Reply with quote

D1P wrote:
Выглядеть это должно примерно так же, как сейчас это сделано в TotalConsole, само собой без несуразных кнопок.

То, что сейчас творит автор TotalConsole со всеми этими хуками, перехватами, внедрениями в чужой процесс, для Гислера вряд ли будет приемлемо. Как-то всё это очень некрасиво выглядит, плюс сколько времени автор эту самую консольку отлаживает, а захочет ли Гислер столько с ней возиться, получая глюк за глюком?

D1P wrote:
Должен обрабатываться d'n'd в консоль (тащим файл, подставляется его имя), передача имён подкурсорных файлов по хоткею, ну и вообще, опциональная возможность копипастить в консоль что угодно в текстовом виде.

Как ты представляешь себе такую интеграцию, чисто на техническом уровне? В моём идеале должна быть тесная интеграция консоли с командной строкой Тотала, но я пока что себе даже вообразить, как оно должно работать, не могу, что уж говорить о конкретном алгоритме и API-вызовах... Именно поэтому мой вариант никакой интеграции не позволяет, и ввод в основной консоли вообще отключён (если, разумеется, там не запущена какая-нибудь интерактивная прога).

D1P wrote:
Хотя меня устроит и просто консолька "как в фаре"

Да неужели? Ты готов мириться с тем, что работа с Тоталом полностью блокируется, пока не закончит выполняться какой-нибудь несчастный пинг? А вот я - не готов.
Кроме того, консоль - это одно, а GUI - это совершенно другое. Нельзя вот так запросто переносить функции консольного Фара на графический Тотал, для этого попросту нет соответствующих системных средств.

И вообще, просьба ко всем участникам этого обсуждения: не забывайте, что мы живём в реальном мире. Гислеру консоль нафиг не нужна, это очевидно, иначе бы он давно её реализовал. Отсюда следует, что необходимыми (но отнюдь не достаточными) условиями реализации консоли являются следующие:
1. Простота реализации.
2. Чётко поставленная задача, полное описание интерфейса и поведения с точки зрения пользователя.
3. Крайне желательно наличие готового алгоритма, а то и работающего куска кода.

Я завёл это обсуждение не для того, чтобы можно было представлять себе, какой могла бы быть идеальная реализация консоли (причмокивая и мечтательно закатывая глаза), а для того, чтобы выявить пример реализации, а) достаточно удобный для того, чтобы хотя бы частично удовлетворить нужды консольщиков, б) имеющий потенциал для развития в дальнейшем, в) достаточно простой в реализации, чтобы можно было уговорить Гислера всё-таки его добавить.
Своё предложение я привёл выше. Чистый код работы с консолью в моём варианте занимает меньше двухсот строк, полный исходный код я, естественно, отдам Гислеру (если кому надо, могу и здесь выложить). Реализация не идеальная, но она покрывает 80% всех моих нужд. Осталось найти пример реализации, покрывающий примерно такую же часть нужд остальных пользователей, но только чтобы эта реализация не была намного сложнее (иначе Гислер её просто не будет добавлять).
_________________
Почему же, ё-моё, ты нигде не пишешь "ё"?
Back to top
View user's profile Send private message
DrShark



Joined: 21 Oct 2006
Posts: 911
Location: Kyiv, Ukraine

Post (Separately) Posted: Fri Jun 08, 2007 11:16    Post subject: Reply with quote

Посмотрел я на демо-прожку.
Тут у меня такие вопросы, на случай, если Гислер решится встраивать нечто подобное в TC.
1) будет ли в TC 7.5 поддержка Unicode? Если да, то и сконсолью он тоже должен будет работать в этом режиме.
2) если будет Юникод, откажется ли Гислер от поддержки Win9x?
Вроде бы он ANSI-версию для этих осей делать собирается. Тогда ему придётся поддержку Command.com делать.
Т.к. консоль в TC нужна далеко не всем, и, наверное, даже не большинству, то он может просто забить на эту идею. Или, во всяком случае, отложить до версии 8.0 или выше.
Back to top
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 6193
Location: Москва

Post (Separately) Posted: Fri Jun 08, 2007 12:10    Post subject: Reply with quote

DrShark wrote:
1) будет ли в TC 7.5 поддержка Unicode?

Он собирается её добавлять. Получится в 7.5 или нет - пока неизвестно, в своих сообщениях о юникоде он всегда говорил с осторожностью о "версии 7.5 или 8.0".

DrShark wrote:
Если да, то и сконсолью он тоже должен будет работать в этом режиме.

Само собой. В Тотале после этого все вызовы будут юникодными, лишь для поддержки Win9x будут добавлены заглушки-конверторы.

DrShark wrote:
2) если будет Юникод, откажется ли Гислер от поддержки Win9x?

Отказываться он очень не хочет, но сказал, что теоретически такая возможность не исключена, поскольку не знает, какие проблемы могут вылезти при переписывании всего на юникод.

DrShark wrote:
Вроде бы он ANSI-версию для этих осей делать собирается.

ANSI-версию - нет, не собирался. Он сказал, что уже достаточно намучился с одновременной поддержкой 16- и 32-битной версий.

DrShark wrote:
Тогда ему придётся поддержку Command.com делать.

Вот на command.com я в своей прожке не рассчитывал, хотя намеревался... Sad Забыл.
Но моё личное мнение (никому его не навязываю), что 9x - уже мёртвые системы, и я не вижу особого криминала, если Тотал будет поддерживать интегрированную консоль только в более-менее современных виндах.

DrShark wrote:
Т.к. консоль в TC нужна далеко не всем, и, наверное, даже не большинству, то он может просто забить на эту идею. Или, во всяком случае, отложить до версии 8.0 или выше.

Это запросто, и в первую очередь именно по этой причине я ищу решение, которое при минимально возможных трудозатратах Гислера дало бы максимальную отдачу.
_________________
Почему же, ё-моё, ты нигде не пишешь "ё"?
Back to top
View user's profile Send private message
Alextp



Joined: 06 Feb 2005
Posts: 4957

Post (Separately) Posted: Fri Jun 08, 2007 13:11    Post subject: Reply with quote

Quote:
условиями реализации консоли являются следующие:
1. Простота реализации.
2. Чётко поставленная задача, полное описание интерфейса и поведения с точки зрения пользователя.
3. Крайне желательно наличие готового алгоритма,


тогда только твой вариант прокатит.
У D1P вижу, нет четкого плана
Back to top
View user's profile Send private message
D1P



Joined: 20 Dec 2004
Posts: 2973
Location: Тбилиси

Post (Separately) Posted: Fri Jun 08, 2007 18:45    Post subject: Reply with quote

Quote:
У D1P вижу, нет четкого плана

Само собой. Я написал только то, что хотелось бы. Как это будет реализовано - я не знаю и не представляю.
_________________
База знаний о Total Commander
Блог
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы All times are GMT + 4 Hours
Goto page 1, 2, 3, 4, 5, 6, 7, 8  Next
Page 1 of 8

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group