View previous topic :: View next topic |
Author |
Message |
VadiMGP
Joined: 21 Mar 2007 Posts: 1625
|
(Separately) Posted: Sun Sep 02, 2007 03:17 Post subject: |
|
|
D1P wrote: | Догадываюсь, что причины были как раз те, которые я описал. | Конечно. А главное, что мне нужно было, это чтобы консоль продолжала работать, даже когда она полностью невидима. Там я не нашел способа это сделать. |
|
Back to top |
|
 |
CaptainFlint

Joined: 14 Dec 2004 Posts: 6193 Location: Москва
|
(Separately) Posted: Sun Sep 02, 2007 16:52 Post subject: |
|
|
VadiMGP wrote: | Но тут, на мой взгляд написано как раз наоборот - такая "избранность" обеспечивается не в рамках API, а настройками TC! |
А я и не говорил, что эта настройка должна быть именно в API. Я просто написал, что каким-то способом такая функция должна поддерживаться - исключительно ради поддержки одного-единственного консольного плагина.
VadiMGP wrote: | Мне не нужна "консоль-диктатор", я хочу с ней работать, только когда она активна. |
Не будет консоли-диктатора! Мне она тоже нафиг не нужна. См. ниже мой ответ D1P.
VadiMGP wrote: | А что насчет моего второго вопроса? |
Какого? Я никакого второго вопроса не заметил. Если ты под вопросом понимаешь предложение временно исключить пункт 3 из рассмотрения, то я не вижу смысла на него отвечать, т.к. исключать пункт 3 не собираюсь - это же главнейшая идея, без которой такая консоль мне будет нафиг не нужна!
D1P wrote: | Потребуется активировать плагин, перехватывающий ввод. |
Всё, это для меня уже за границей применимости. Такая консоль для меня абсолютно бесполезна, что бы в ней ни накрутили.
D1P wrote: | Намереваешься работать с консолью - ну будь добр, активируй консоль и работай.на здоровье. |
В этом-то и различие наших подходов. Я НЕ НАМЕРЕВАЮСЬ работать с консолью! Я выполнил одно из привычных, рутинных действий, и вдруг оно не сработало. Будь то запуск из командной строки; будь то запуск двойным кликом приложения, которое должно было быть графическим, а оказалось консольным; будь то выполнение программы при помощи кнопки с панели инструментов или из меню "Запуск" или пользовательской командой - неважно. Я не намеревался работать с консолью: либо не знал, что оно мне будет нужно, либо забыл, что запускаемая программа консольная, либо вообще забыл подумать об этом - просто-напросто я выполнил команду, а консольное окошко мелькнуло и исчезло. Всё, повторять запуск команды или программы я не могу (причины могут быть самые разные, писать лень, но если хотите, могу привести несколько). И теперь у меня одна задача: как узнать, что же было написано в этом окошке, которого уже нет. Всё! Больше мне от встроенной консоли ничего не требуется. Скажите, как это сделать вашим супер-пупер API, и я проголосую руками и ногами за него и против моего первого варианта. Пока что я такой возможности не увидел.
D1P wrote: | Так с лёту мне на ум приходит только аналог putty но и этого уже более чем достаточно - у нас будут telnet и SSH терминалы, чего ещё надо для счастья. А вот ещё: различные чаты: от аськи до ирки. Броузер - вввод адреса. Всё, я хочу irc в TC, мля, очень хочу |
Ты не совсем понял мой вопрос. Основную проблему я вижу не в перенаправлении команд в плагин, а в "избранности" одного супер-плагина, куда всё будет перенаправляться всегда. Впрочем, по твоей идее такого супер-избранного плагина быть не должно вовсе (раз ты написал, что обязательно нужно активировать плагин)... Как я написал чуть выше, мне это не подходит.
D1P wrote: | 1) Имеется в виду такая же функциональность, как в FAR или MC (Ctrl+O). Там нажатие горячей клавиши для скрытия панелей и вывода консоли никого не смущает. То есть я отвечал по первому пункту. |
Отнюдь. Вызов плагина по Ctrl+O ничего не решит. Я запустил программу, она выбросила вывод и исчезла. Откуда плагин, активируемый по Ctrl+O, вытащит этот самый уже исчезнувший вывод консоли? Ниоткуда.
D1P wrote: | 2) Мне - нужен, полюбому. |
Я не возражаю против хоткеев. Показывать/скрывать окно консоли однозначно надо по хоткею, разумеется! Я против того, чтобы сам плагин консоли предварительно требовалось активировать хоткеем или чем-то ещё, чтобы он мог включиться и начать перехват консольного вывода. Ну забуду я это сделать, просто забуду!
D1P wrote: | Смотри как это сделано в тех же FAR/MC/NC/VC и т.п. Я предполагаю такое же поведение. |
Не получится. Перечисленные тобой проги сами консольные, им не надо извращаться. А кроме того, в них эта функциональность реализована не плагинами, у них нет проблем с множественностью плагинов, нет проблем с тем, куда отправлять команду. Они просто выполняют команду в своей собственной консоли, которую и показывают по Ctrl+O. Без всяких плагинов, без всяких навороченных API-интерфейсов. Что я и предложил с самого начала, но уже для Тотала.
VadiMGP wrote: | Калькулятору, например. |
Абсолютно все команды, ныне и присно и во веки веков? Я конечно, допускаю, что есть люди, которые командной строкой принципиально не пользуются, а это будет для них вроде как дополнительная функция, но всё же не стал бы рассчитвать, что таких много...
VadiMGP wrote: | Кроме того, я в упор не понимаю, почему речь идет о каком-то "перехвате". Кто у кого должен перехватывать? |
Плагин должен перехватывать команду, чтобы запомнить (тем или иным способом), что вывела на экран консольная программа. Центральная задача: как восстановить содержимое исчезнувшей консоли? Единственное возможное решение: предварительно его запомнить. Как? Варианты: а) вывести не во внешнюю консоль, а в собственную консоль Тотала (моё первое предложение); б) перенаправить команду плагину, чтобы он сам открыл консоль, запустил там команду/программу, и не уничтожал консоль, а только скрывал её, показывая по первому требованию содержимое (ваш вариант, который я считаю неприемлемым из-за чрезмерной заточенности под единичный плагин); в) перенаправить вывод в файл и показывать текст оттуда (никуда не годится из-за невозможности интерактивной работы с запущенной программой). _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
Back to top |
|
 |
VadiMGP
Joined: 21 Mar 2007 Posts: 1625
|
(Separately) Posted: Sun Sep 02, 2007 18:52 Post subject: |
|
|
CaptainFlint wrote: | А я и не говорил, что эта настройка должна быть именно в API. Я просто написал, что каким-то способом такая функция должна поддерживаться - исключительно ради поддержки одного-единственного консольного плагина. | Но тогда, извини, третий пункт просто не существует. Тогда, все предложения "любителей API" сводятся только к двум пунктам:
1. Новый API позволяющий создавать свои окошки (консоли, irc, индикаторы, тулбары...).
2. В результате появления множества новых окошек в ТС должно появиться то, что я называю "достаточно гибкий маршрутизатор команд". Он, все равно, необходим из-за плагинов, имеющих свой ввод.
И все. Никаких третьих пунктов. А точнее, этот третий пункт является, всего-навсего, частным случаем конфигурации второго. Ты хочешь, чтобы все введенные команды шли в консоль? Сконфигурируй маршрутизатор так. Хочешь, только каждую четную команду? Сконфигурируй эдак.
Среди кучи галок, сорок и ворон этого маршрутизатора найдется псиса и для тебя.
Quote: | исключать пункт 3 не собираюсь - это же главнейшая идея, без которой такая консоль мне будет нафиг не нужна! | Ты не понял мой вопрос. Я апеллировал к твоей фразе о том, что API содержит некую часть, которая нужна только для реализации консоли. Третий пункт я тогда оставил в стороне, потому что не знал относишь ты его к API или нет. Сейчас, когда мы знаем, что он не является частью API, я хочу знать - какую часть API ты счел нужной исключительно для консоли.
Quote: | Абсолютно все команды, ныне и присно и во веки веков? | Нет, конечно. Только те, которые нужны. Все-то зачем?
Quote: | Плагин должен перехватывать команду, | Честное слово, меня выражение "перехватывать" сильно сбивает с толку. Ты не против, если мы будем говорить "Плагин будет получать команду от ТС"?
Quote: | ваш вариант, который я считаю неприемлемым из-за чрезмерной заточенности под единичный плагин | Господи, не дай помереть от разрыва мозга! Вот я и бьюсь и пытаюсь понять - где заточенность? API - универсальный, маршрутизатор команд - универсальный. Так что же именно заточено-то? |
|
Back to top |
|
 |
CaptainFlint

Joined: 14 Dec 2004 Posts: 6193 Location: Москва
|
(Separately) Posted: Sun Sep 02, 2007 19:18 Post subject: |
|
|
VadiMGP wrote: | И все. Никаких третьих пунктов. А точнее, этот третий пункт является, всего-навсего, частным случаем конфигурации второго. Ты хочешь, чтобы все введенные команды шли в консоль? Сконфигурируй маршрутизатор так. Хочешь, только каждую четную команду? Сконфигурируй эдак. |
Гислер не будет реализовывать настолько мощный конфигуратор. Я уже сказал, повторюсь ещё раз: я вообще не вижу полезных применений такого невероятно накрученного конфигуратора, кроме одного-единственного: консоли.
VadiMGP wrote: | Сейчас, когда мы знаем, что он не является частью API, я хочу знать - какую часть API ты счел нужной исключительно для консоли. |
Если брать голый API как набор экспортируемых функций, то, может быть, и никакую - не я придумал эту идею с API, так что я плохо представляю, что там будет. Но я не хочу рассматривать проблему, разбивая её на такие мелкие кусочки. Я хочу, чтобы мне было удобно работать. Одного API для реализации моей идеи недостаточно, необходимы ещё дополнительные настройки. Без этих настроек API существовать не может - иначе плагины, написанные на нём, будут очень неудобны в использовании. И наоборот - эти настройки без нового API не имеют смысла, т.к. нечего настраивать. Поэтому я рассматриваю проблему в целом: API + настройки для управления плагинами, реализующими этот API. Моё утверждение: этот комплекс плохо подходит для реализации того, что мне нужно. Второе моё утверждение: если этот комплекс достроить так, чтобы он подходил для реализации того, что мне нужно, то эта надстройка не будет нужна ничему другому.
VadiMGP wrote: | Quote: | Абсолютно все команды, ныне и присно и во веки веков? |
Нет, конечно. Только те, которые нужны. Все-то зачем? |
Затем, что мне нужны все. Ради одного меня Гислер не будет добавлять такую галочку. Настройка должна быть полезной большему числу людей.
VadiMGP wrote: | Честное слово, меня выражение "перехватывать" сильно сбивает с толку. Ты не против, если мы будем говорить "Плагин будет получать команду от ТС"? |
Да мне пофиг, как называть. Суть от этого не меняется. Только "получать" он должен абсолютно всё, что запускает Тотал: текст из командной строки, дабл-клики по файлам, перетаскивание файлов на панель инструментов... Как-то странно в такой ситуации выглядит термин "получать команду". Кому это будет нужно, кроме как для консоли?
VadiMGP wrote: | Вот я и бьюсь и пытаюсь понять - где заточенность? API - универсальный, маршрутизатор команд - универсальный. Так что же именно заточено-то? |
Маршрутизатор. Ничего универсального нет и быть не может. Гислер реализует определённый набор опций. Если какая-то из запрошенных нами опций будет нужна для одного-единственного плагина, он эту опцию делать не будет, я так считаю. Много ли ты сможешь придумать плагинов, которым, действительно, нужно посылать каждую чётную команду, или каждые три из пяти? Это всё излишества, и Гислер их делать не станет. Точно таким же излишеством выглядит опция "выделить этот плагин среди остальных, чтобы абсолютно все команды, запущенные пользователем, пересылались именно этому плагину вместо обычного выполнения". Не нужна она для интерфейсных плагинов. Попросту не нужна. А без неё моя идея с консолью теряет всякий смысл.
Короче говоря, у меня есть предложение. Почему-то то ли я не могу понять мысль API-шников, то ли они не могут понять мою мысль, то ли ещё что... Моё самое первоначальное предложение о реализации консоли без всяких плагинов выглядит (для меня) отдельным куском функциональности, никак не пересекающимся с API: консоль висит отдельно, панель не занимает, перехвата (хорошо, получения) команд из Тотала не требует (просто всё будет выполняться в самой консоли). Поэтому я предлагаю оформить это как два отдельных, несвязанных запроса Гислеру. Этим мы убьём сразу нескольких зайцев:
1. будет консоль, отсутствие которой меня уже давно раздражает;
2. упростится ваш API, т.к. не будет необходимости в сверх-навороченном конфигураторе для пересылки команд разным плагинам по чётным дням недели и последним числам месяца;
3. закончится этот спор глухого с немым. _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
Back to top |
|
 |
D1P

Joined: 20 Dec 2004 Posts: 2973 Location: Тбилиси
|
(Separately) Posted: Mon Sep 03, 2007 04:15 Post subject: |
|
|
Спокойствие, только спокойствие!
Quote: | Всё, это для меня уже за границей применимости. Такая консоль для меня абсолютно бесполезна, что бы в ней ни накрутили. |
Вот алгоритм, каким я себе его представляю (к сожалению, под рукой нет никаких средств построения диаграмм, иначе изобразил бы графически):
1) Есть несколько WIX-плагинов, которые могут получать ввод от командной строки (эта возможность регистрируется примерно так же, как и возможности архиваторных плагинов, через числовые константы, записываемые плагином в wincmd.ini). Допустим, это следующие плагины: cmd, putty, irc, icq, ru/en translator, spellchecker, calc, browser (назовём их консольными). Плюс у нас будут несколько WIX-плагинов, которые ввод из командной строки получать не смогут (он им не нужен) - буфер обмена, часы, трей, и т.д.
2) В глобальных настройках плагинов мы указываем, какой из плагинов должен получать введённую строку. Никакого "маршрутизатора" не требуется, это действительно сложно и не нужно. Мы просто выбираем из нескольких предложенных вариантов, так же, как это сделано в настройках просмотра по F3. Указываем ОДИН плагин, считающийся основным (по сути это тот, который мы будем использовать чаще всего) - аналогично тому, как мы выбираем альтернативное средство просмотра в настройках просмотра. Далее указываем как вести себя Тоталу при вводе в командную строку:
* "Поведение по умолчанию". TC ведёт себя как и прежде, плагин получает содержимое командной строки только при выполнений внутренней команды cm_SendToConsolePlugin. На команду может быть повешен хоткей, кнопка, пункт меню, плюс рядом с командной строкой может быть показана кнопка специально для этой команды.
* "Shift+Enter - перенаправление в консольный плагин". По Enter ввод идёт как обычно, по Shift+Enter - содержимое командной строки получит плагин. Обычное поведение по Shift+Enter (запуск через Noclose.pif) будет недоступно, однако можно предусмотреть внутреннюю команду cm_RunCMDWithNoClose со всеми вытекающими последствиями.
* "Enter - перенаправление в консольный плагин". Выбранный нами плагин безоговорочно получит ввод при нажатии Enter в командной строке. Shift+Enter будет работать как обычный ввод или через NoClose (мне всё равно, это не существенно). Можно также, чтобы все были счастливы, предусмотреть команду cm_RunCMD.
3) Итак, один плагин у нас "избранный" и тем или иным способом получает ввод. Это удобно, когда работа с этим плагином ведётся постоянно, но что делать, если требуется постоянно переключаться между ними? Я предлагаю следующие возможности:
3.1) Переключение через контекстное меню. В меню список всех консольных-WIX плагинов. Выбираем плагин, который будет активным. Так сделано с переключением наборов колонок WDX-плагинов, и никого не смущает, что это неудобно или медленно. Хотя это действительно неудобно и медленно.
3.2) Переключение по горячей клавише. Хоткей настраивается на команду cm_SetActivePluginX, где X - номер консольного плагина. Аналог - команды cm_SrcCustomViewX, переключающие наборы колонок. Само собой будут и cm_NextActivePlugin/cm_PrevActivePlugin (аналоги cm_SrcNextCustomView/cm_SrcPrevCustomView).
3.3) Переключение между табами на панели плагинов (об этом ниже).
4) Как смотреть ввод/вывод в плагине? Есть следующие режимы работы (и отображения) консольного плагина:
4.1) Панель. У TC будет дополнительная панель, похожая на то, что реализовал B4rr4cuda в своей консольке. Каждый консольный плагин будет иметь своё окошко в этой панели, переключение между окнами - через табы, как сейчас это сделано в файловых панелях. Я вижу это примерно так же, как сделано в Opera, т.е. это будет полноценный MDI-интерфейс. Хотя можно сделать и проще, для меня это не принципиально. Расположение панели иожно менять (drag'n'drop, или заранее предопределённые положения). Панель можно скрыть (свернуть в TC-трей, см. ниже), либо просто убрать как элемент интерфейса. Для этих функций должны быть предусмотрены внутренние команды
Активный плагин получает ввод, тут же можно посмотреть результат работы. Всё, по-моему, просто. Плагин может быть переведён в один из трёх других режимов.
4.2) Фон. Плагин никак себя не показывает, работая в фоне. Если он установлен, как активный, он получает ввод, но результаты очевидным образом не показывает. Либо, идёт в обход WIX API, самостоятельно создавая окошко для отбражения вывода (всплывающее оповещение в углу экрана, как в Opera). Такой режим работы удобен для задач, где вывод не важен, или отсутствует (например для IRC, висящей в фоне, можно командной запустить какой-нить скрипт). Для отображения списка плагинов, работающих в фоне, реализация WIX API должна предусматривать некое подобие трея, имеющегося у TC. Засунуть TC-трей можно куда угодно, либо показывать/скрывать его по настраиваемому хоткею. Также этот TC-трей сам мог бы быть реализован в виде плагина. Он был бы крайне удобен, скажем, для отбражения информации о фоновых процессах TC. Ближайший аналог такого TC-трея - трей виндовый.
Плагин может быть переведён из фонового в один из трёх других режимов.
4.3) Полный экран. Панель с плагинами разворачивается на всё окно (можно оставить панель интсрументов/командную строку, остальные элементы интерфейса в таком режиме будут явно ненужны). Разворачивание/сворачивание происходит по предусмотренным для этого внутренним командам. Выглядеть это будет как Ctrl+O в консольных файлменеджерах. Работа в развёрнутой панели аналогична работе в режиме панели обычной, т.е. это простое изменениеразмера панели. Аналог - изменение размера файловой панели TC.
4.4) Плавающее окно. Таб (окно) плагина может быть "отцеплено" из общей панели, и далее вести себя аналогично тому, как ведут себя окна листера, т.е. эту будет стандартное окно, принадлежащее TC. Удобство и отличие от обычного листер-плагина в таком режиме будет в том, что это окно может быть опять прицеплено к панели, и/или переведено в один из трёх других режимов. Для плавающего окна также должна быть предусмотрена возможность перехода в полноэкранный режим (аналог F11 в окне листера).
5) Что происходит при выключении плагина? Просиходит его выключение (логично). Плагин cmd, само собой, теряет всю историю вывода (если, конечно, он реализован как встройка стандартной консоли; если он сделан поверх консоли, как во Фригате, то вывод может и сохраняться), историю ввода терять вовсе необязательно. Другие плагины тоже могут хранить историю ввода/вывода где-нибудь у себя.
Вроде всё. Для всех "непонятных" пунктов я привёл примеры того, как это УЖЕ реализовано в аналогичных случаях в TC или других программах. Если описанное кажется сложным и неудобным - тогда почему в других случаях оно таким не кажется? В любом случае, я думаю, что проще реализовать не получится, и потому это не повод, чтобы браковать всю идею.
Если CG не захочет реализовать это сам - можно предусмотреть следующий вариант: API разрабатывается кем-то другим (B4rr4cuda - это, при должном подходе, вполне тянет на дипломную работу), готовое решение отдаётся CG, он приспосабливает его для TC. В конце концов, он использовал чужие наработки в TC (код работы с ZIP и регулярными выражениями).
Quote: | Короче говоря, у меня есть предложение. |
Возможно, ты его теперь пересмотришь. Я думаю, я привёл достаточно аргументов, идей и примеров. _________________ База знаний о Total Commander
Блог |
|
Back to top |
|
 |
VadiMGP
Joined: 21 Mar 2007 Posts: 1625
|
(Separately) Posted: Mon Sep 03, 2007 09:47 Post subject: |
|
|
D1P wrote: | Никакого "маршрутизатора" не требуется, это действительно сложно и не нужно. | Блин! Воистину "лицом к лицу лица не увидать". Ну, посмотри же:
D1P wrote: | Далее указываем как вести себя Тоталу при вводе в командную строку: | Вот эти указания и есть "маршрутизатор"! Ты только что его описал. И ничего сложного, а уж тем более "невероятно накрученного" тут нет.
2CaptainFlint
CaptainFlint wrote: | Но я не хочу рассматривать проблему, разбивая её на такие мелкие кусочки. | Может быть, ты и не хочешь, но иного способа понять собеседника не существует. Ты не оставляешь мне выбора. Если я вижу фразу про то, что API содержит нечто, заточенное под консоль, меня это удивляет и я хочу понять о чем идет речь. Вот я пристал и мы выяснили, что ты на самом деле имел в виду вовсе не API, а "все вместе". Ну и откуда мне было знать, что в данном предложении ты решил использовать слово "API" в неизвестном никому смысле?
А после того, как мы разъяснили этот пункт, спор глухого с немым сам собой прекратился. Осталось только некоторое недоумение. Ты писал Quote: | Иначе говоря, мы получаем API, в котором часть функций универсальна и может использоваться многими полезными плагинами, а остальная часть будет использоваться для поддержки одного-единственного плагина: консольного. Если возникает такая ситуация, то гораздо логичнее эти "одноплагиновые" функции реализовать в коде самого Тотала | Если мы в этой фразе воспримем "API" как "все решение в целом", то становится видно, что предложение "любителей API" полностью соответствует твоей же логике: всё, что только может оказаться "одноплагиновым" реализовано в коде самого ТС. Что и требовалось доказать.
А что касается "невероятно накрученного" маршрутизатора, то посмотри на схему, предложенную D1P. На мой вкус, там можно сделать незначительные улучшения, но она никак не тянет на супер-пупер-ультра-мега механизм, требующий перестройки галактики. |
|
Back to top |
|
 |
D1P

Joined: 20 Dec 2004 Posts: 2973 Location: Тбилиси
|
(Separately) Posted: Mon Sep 03, 2007 10:10 Post subject: |
|
|
Quote: | Вот эти указания и есть "маршрутизатор"! Ты только что его описал. И ничего сложного, а уж тем более "невероятно накрученного" тут нет. |
Для меня "маршрутизатор" прежде всего - сетевое устройство . Когда нечто простое обозвали таким термином, у меня создалось впечатление, что его видят каким-то сложным... Ну да ладно, разобрались. Всё получается просто. _________________ База знаний о Total Commander
Блог |
|
Back to top |
|
 |
B4rr4cuda

Joined: 03 Jun 2007 Posts: 376 Location: Россия, Москва
|
(Separately) Posted: Mon Sep 03, 2007 18:33 Post subject: |
|
|
Quote: | Никакого "маршрутизатора" не требуется... |
Как раз маршрутизатор - самое необходимое, он-то и должен определять кому посылать команду либо посылает её "избранному" либо избранным становиться плаг на который мы переключились табом или через меню в зависимости от настроек.
А вообще лучше определять кому посылать команду, этакий эвристический парсер-фильтратор-маршрутизатор...
Мне чувствуеться (избегаю слова кажеться, слишком оно часто повторяеться по этому вопросу ) что Г ну никак не будет делать это в том виде, как мы предполагаем, а сделает (дай то Бог хоть так) что-то простенькое, которое придёться через Ж наворачивать... Если вообще сделает...
Так что пишу нижеследующее исходя от того что это будем делать самостоятельно.
Я с перехватом сталкивался - поделюсь опытом.
Для написания маршрутизатора:
Shift+Enter:
Перехватываеться апи-функция ShellExecuteEx и сравниваем (lpExecInfo:PShellExecuteInfo) lpExecInfo.lpFile с 'Noclose.pif' если =, то
в lpExecInfo.lpParameters собственно запускаемая прога с параметрами (или без).
Enter:
Тоже хватаем фунцу ShellExecuteEx+ перехват WinExec (для ентер из комстроки).
Она же для запускаемых из панелей прог.
Проблема в том что не всё ТС отдаёт не всё, кое-что пытаеться сделать самостоятельно,но это решаеться субклассированием комстроки и обработкой сообщения WM_KEYDOWN.
Quote: | 4) Как смотреть ввод/вывод в плагине? Есть следующие режимы работы (и отображения) консольного плагина: 4.1) Панель.4.2) Фон.4.3) Полный экран 4.4) Плавающее окно. |
Вот это я обеспечу. У меня в универе будет запарка, но постепенно переделаю сорцы консольки для взаимодействия с плагами.
Только сам я это не потяну, я плагинные проги не писал, так что опыта для такого проектирования маловато...
Оффтоп:
Quote: | B4rr4cuda - это, при должном подходе, вполне тянет на дипломную работу | У меня уже и курсовая и дипломная "забита". Напару с одногрупником пишем систему отчётов, клон access-овских отчётов. Пришла в чью-то "умную" голову (чтоб его перевернуло :-Е``` ) идея написать свои отчёты для секретариата, и убедили верхушку. А мы, как самые знающие (и лысые заодно), попали под раздачу... И не откажешь ведь декану, когда он этак умильно тебя просит.... Сцуко. Попытались обьяснить обьём работы, найти альтернативу - ноль на массу... Ему пох. Эх... Я плачу и матерюсь... Два года будем это г клепать.... |
|
Back to top |
|
 |
D1P

Joined: 20 Dec 2004 Posts: 2973 Location: Тбилиси
|
(Separately) Posted: Mon Sep 03, 2007 19:57 Post subject: |
|
|
Quote: | Только сам я это не потяну, я плагинные проги не писал, так что опыта для такого проектирования маловато... |
Я уже сказал, помогу. Мне не впервой писать программы в коллективе, плагины в том числе.
Твоя задача склепать окно (просто окно, без всяких там), которое встраивалось бы в TC, перехватывало ввод командной строки и Drag'n'Drop. Дальше даш код мне, я скажу, что у тебя неправильно и где переписать
Quote: | Два года будем это г клепать.... |
Я про свой диплом тоже так думал. В результате за трое суток перед защитой склепал нечто, имитирующее работу, а на проверку отдал код, собранный из выбранных рандомайзером файлов старых проектов (собрать этот код во что-то исполняемое, само собой, было невозможно впринципе). На защите профессура мой проект очень хвалила.
Но это были трое АЦЦКИХ суток. _________________ База знаний о Total Commander
Блог |
|
Back to top |
|
 |
B4rr4cuda

Joined: 03 Jun 2007 Posts: 376 Location: Россия, Москва
|
(Separately) Posted: Mon Sep 03, 2007 20:13 Post subject: |
|
|
Ок,задачу понял, работу над плагом начинаю.
Quote: | склепал нечто, имитирующее работу |
В том то и беда что ЭТО должно работать, и начать работать должно к концу этого учебного года. Но пох - справлюсь  |
|
Back to top |
|
 |
CaptainFlint

Joined: 14 Dec 2004 Posts: 6193 Location: Москва
|
(Separately) Posted: Mon Sep 03, 2007 23:56 Post subject: |
|
|
D1P wrote: | Вот алгоритм, каким я себе его представляю |
Вот это уже, наконец-то, кое-что. Спасибо, теперь идея значительно прояснилась.
D1P wrote: | Quote: | Короче говоря, у меня есть предложение. |
Возможно, ты его теперь пересмотришь. Я думаю, я привёл достаточно аргументов, идей и примеров. |
Увы, не пересмотрю. Ты забыл одну маленькую, но оч-чень горд... в смысле, важную деталь, которую я (сам, конечно, виноват, признаю́) не додумался как-то выделить или подчеркнуть. Командная строка - это далеко не всё, что требуется обрабатывать. Я перечислял уже: это запуск приложений из файловой панели дубль-кликом, это вызов их через меню Запуск или панель инструментов, да и через обычное меню плюс хоткеи, если вспомнить о EM-командах. Перенаправление всего этого безобразия в WIX-плагины (зря ты назвал их консольными, будет путаница с виндовой консолью...) - совершенное излишество, если только речь не идёт о моей идее (сохранение консольного вывода приложений с показом их в дальнейшем). Поэтому я по-прежнему придерживаюсь своего предложения о том, чтобы просить Гислера реализовывать эти две вещи независимо.
VadiMGP wrote: | Ты писал
Quote: | Иначе говоря, мы получаем API, в котором <...> остальная часть будет использоваться для поддержки одного-единственного плагина |
|
Извини, действительно, неудачно выразился. Просто для меня API в виде одного-единственного H-файла со списком интерфейсов не имеет ни малейшего смысла - Тотал должен обеспечивать какие-то настройки вдобавок к этому API (ну хотя бы банальную секцию в INI, аналогичную [ListerPlugins] для плагинов нового типа). Мне это казалось настолько очевидным, что я даже не задумывался об этом...
VadiMGP wrote: | то становится видно, что предложение "любителей API" полностью соответствует твоей же логике: всё, что только может оказаться "одноплагиновым" реализовано в коде самого ТС |
Реализация реализации рознь. Смотри сам: есть галочка, которую можно поставить напротив плагина, выбрав его в качестве "избранного". Эта галочка будет означать, что абсолютно все команды перенаправляются в этот плагин (включая, как я написал выше, запуск приложений из файловых панелей, из панели инструментов и пользовательскими командами). Такая галочка, хоть формально и может быть выставлена у любого из WIX-плагинов, реально будет требоваться только одному плагину: плагину консоли. И, несмотря на то, что весь код обработки этой галочки находится в Тотале, смысла в её реализации ни капли не больше, чем если бы что-то аналогичное было реализовано в API, а не в настройках Тотала. Это же всё теснейшим образом взаимосвязано, я же не просто так всё это время подразумевал не "чистый" API, а весь комплект в целом... _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
Back to top |
|
 |
D1P

Joined: 20 Dec 2004 Posts: 2973 Location: Тбилиси
|
(Separately) Posted: Tue Sep 04, 2007 07:16 Post subject: |
|
|
Quote: | Ты забыл одну маленькую, но оч-чень горд... в смысле, важную деталь... |
Да, я думаю над этим. Нужно придумать, как организовать взаимодействие TC и нового интерфейса, так, чтобы это было удобно и полезно. Поскольку я люблю проверять свои идеи на практике, поэтому будем писать новый интерфейс сами, в виде хака. Посмотрим, что из этого получится. Возможны два варианта: это будет работать, но не будет достаточно аргументов за то, чтобы реализовать это внутри TC или это будет работать, и аргументов, в итоге будет достаточно.
Есть ещё третий вариант, что меня завалят работой, и я буду вынужден бросить разработку.
Quote: | Такая галочка, хоть формально и может быть выставлена у любого из WIX-плагинов, реально будет требоваться только одному плагину: плагину консоли. |
Уже неоднократно писал здесь и в других темах - консоль консоли рознь. Ввод-вывод может пригодиться для многих целей. Главное - определить, стоит ли игра свеч. _________________ База знаний о Total Commander
Блог |
|
Back to top |
|
 |
CaptainFlint

Joined: 14 Dec 2004 Posts: 6193 Location: Москва
|
(Separately) Posted: Tue Sep 04, 2007 16:09 Post subject: |
|
|
D1P wrote: | Нужно придумать, как организовать взаимодействие TC и нового интерфейса, так, чтобы это было удобно и полезно. |
Вопрос: а нужно ли? Ещё раз повторю свой вопрос: можешь ли ты придумать хоть один плагин, кроме "запоминающего-вывод-консольной-программы-и-выводящего-этот-вывод-по-Ctrl-O", для которого всё это было бы даже не необходимо - просто для которого это могло бы пригодиться? Я - нет.
D1P wrote: | Уже неоднократно писал здесь и в других темах - консоль консоли рознь. |
Везде, где я говорю слово "консоль" я подразумеваю виндовое чёрное (по умолчанию чёрное) окошечко, в котором выполняются все приложения, слинкованные с ключом /subsystem:console. Я понимаю, что консолей дофига (включая ту же mmc.exe), но я просто не могу придумать нормального термина для конкретно той консоли, о которой говорю. Называть этот предполагаемый WIX-плагин вместо просто "консольного" так, как я написал выше, у меня не хватит терпения, даже с копи-пастом.
D1P wrote: | Ввод-вывод может пригодиться для многих целей. |
Ввод-вывод вообще? Не спорю и абсолютно согласен. Ввод-вывод абсолютно всего, что запускается в Тотале? Сильно сомневаюсь. _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
Back to top |
|
 |
D1P

Joined: 20 Dec 2004 Posts: 2973 Location: Тбилиси
|
(Separately) Posted: Tue Sep 04, 2007 16:56 Post subject: |
|
|
Quote: | Ещё раз повторю свой вопрос: можешь ли ты придумать хоть один плагин, кроме "запоминающего-вывод-консольной-программы-и-выводящего-этот-вывод-по-Ctrl-O" |
Да. Могу.
Теперь, когда ты дал понять, что представляешь множественную сущность консоли, я тоже могу понять твои претензии насчёт того, что некоторые функции предлагаемого API будут нужны только для консоли.
Да, это так. Консоль будет являться частным случаем интерфейсного плагина. И будет требовать поддержки тех функций, которые другим интерфейсным плагинам не нужны.
Сейчас у нас такая же ситуация с WFX-плагинами в области поддержки пользовательских колонок. Большей части плагинов они не нужны, но возможность есть, и для ряда плагинов она очень полезна.
Почему я предлагаю при создании интерфейсных плагинов предусмотреть возможность создания на их основе плагинов консольных:
Реализуя поддержку консолей (ещё раз - именно консолей, которые реализуют задачи интерактивного ввода-вывода) отдельно мы получим... консоли. Реализуя интерфейсные плагины мо получим, само собой, интерфейсные плагины. Два API.
Получив интерфейсные плагины с возможностью создания консолей, мы будем иметь одно API, пусть и с большим количеством функций, а, значит, чуть сложнее.
Но один никогда не будет сложнее, чем два. А вот проще - вполне может быть. _________________ База знаний о Total Commander
Блог |
|
Back to top |
|
 |
CaptainFlint

Joined: 14 Dec 2004 Posts: 6193 Location: Москва
|
(Separately) Posted: Tue Sep 04, 2007 17:16 Post subject: |
|
|
Например?
D1P wrote: | Теперь, когда ты дал понять, что представляешь множественную сущность консоли, я тоже могу понять твои претензии насчёт того, что некоторые функции предлагаемого API будут нужны только для консоли. |
Офигеть... Я же специально сказал, что под консолью везде до этого понимал (и понимаю) не консоли вообще, а одну конкретную виндовую прибамбасину - чёрное окошко. Один конкретный тип консоли среди всего множества оных.
В числе WIX-плагинов могут быть консольные (в широком смысле). Среди консольных плагинов может быть один или несколько плагинов, реализующих мою мечту о запоминании вывода консольных программ и показе его по Ctrl+O. Несмотря на то, что их может быть несколько, это по сути не отличается от одного, поскольку они будут реализовывать одно и то же, поэтому дальше я считаю, что такой плагин только один, и называю я его (раз ты не хочешь принимать временное сужение смысла слова "консоль") "черноокошечным плагином". Так вот, моё утверждение звучит так:
Функция перенаправления всех запускаемых в Тотале приложений (через командную строку, через запуск из файловой панели, с панели инструментов, из меню Запуск или при помощи пользовательских команд - абсолютно всех) - такая функция не может пригодиться ни одному WIX-плагину, кроме одного-единственного "черноокошечного плагина".
Есть возражения? Если есть, просьба привести конкретный пример плагина (неважно, консольного в широком смысле или просто WIX), для которого могла бы пригодиться такая функция. Пока что я такого примера в данной теме так и не смог ни от кого добиться.
D1P wrote: | Сейчас у нас такая же ситуация с WFX-плагинами в области поддержки пользовательских колонок. Большей части плагинов они не нужны, но возможность есть, и для ряда плагинов она очень полезна. |
Согласись, "для ряда плагинов" и "для одного плагина" - разница принципиальная. _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
Back to top |
|
 |
|
|
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
|