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 

Автоматическая смена панели инструментов, как?
Goto page Previous  1, 2, 3, 4, 5, 6, 7  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы printer-friendly view
View previous topic :: View next topic  
Author Message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Sat Aug 27, 2011 20:56    Post subject: Reply with quote

Не, не вижу, оно появилось уже после того, как я зашел в эту тему.

Quote:
Геморройный подход. Представь сколько таких команд нужно понаписать в ini для схожих задач, ужас...

Геморрой - это встраивание в TCFS2 функции убийства запущенных ранее задач. Как ты определишь, какие из них хорошие, а какие - плохие? И вообще, не хочу я убивать никакие процессы.

Проблема подобного плана может возникнуть только для команд, которые чего-то долго ждут, а потом что-то ещё делают. И возникла она в первый раз. ИМХО, куда проще для каждой такой команды, которая ведёт себя похожим образом (а их вряд ли будет много) завести отдельный INI-ключик в секции TCFS2, в котором сохранять номер сеанса.

Flasher wrote:
Сейчас проверил с ожиданием - действительно срабатывает только с повторного, хотя такого не должно быть. Это косяк программы. Нужно у MVV спросить.

Напишите мне в личку подробно, какая команда работает не так, как ожидается, я путаюсь в вашей беседе.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sat Aug 27, 2011 21:07    Post subject: Reply with quote

MVV wrote:
Не, не вижу, оно появилось уже после того, как я зашел в эту тему.
Давно же ты зашёл (и не вышел), однако. Smile
MVV wrote:
Как ты определишь, какие из них хорошие, а какие - плохие?
Это не требуется. Логика проста: все - плохие.
MVV wrote:
Проблема подобного плана может возникнуть только для команд, которые чего-то долго ждут, а потом что-то ещё делают. И возникла она в первый раз.
Всё периодически появляется первый раз, в частности недавний разговор по /p (pause).
MVV wrote:
ИМХО, куда проще для каждой такой команды, которая ведёт себя похожим образом (а их вряд ли будет много) завести отдельный INI-ключик в секции TCFS2, в котором сохранять номер сеанса.
Приведи пример с тремя подобными командами с этим ini ключиком, я пока себе не очень представляю, как это уменьшит объём написанного.
MVV wrote:
Напишите мне в личку подробно, какая команда работает не так, как ожидается, я путаюсь в вашей беседе.
Я же написал какая ("См. выше, добавил !=1 красным.").
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Sat Aug 27, 2011 21:25    Post subject: Reply with quote

Flasher wrote:
Давно же ты зашёл (и не вышел), однако. Smile

Я около часа писал ответ) как видишь, в нём есть цитаты частей постов, которые вы за это время уже успели поудалять или поисправлять. Very Happy
Flasher wrote:
MVV wrote:
Как ты определишь, какие из них хорошие, а какие - плохие?
Это не требуется. Логика проста: все - плохие.

Хреновая логика. Будут висеть на ожидании двух независимых событий два процесса, а ты оба прибьёшь.
Flasher wrote:
Приведи пример с тремя подобными командами с этим ini ключиком, я пока себе не очень представляю, как это уменьшит объём написанного.

Code:
cmd1=set_tcini(TCFS2, cmd1s, #S) команда1 команда2 ... delay(10000) if(tcini(TCFS2, cmd1s, # == #S), командаN+командаM+..., ничего)
cmd2=set_tcini(TCFS2, cmd2s, #S) команда1 команда2 ... delay(10000) if(tcini(TCFS2, cmd2s, # == #S), командаN+командаM+..., ничего)

Аналогично для остальных команд, которые чего-то ждут. Ранее мы уже писали "критическую секцию" для команд, чтобы не допустить выполнения нескольких копий команды одновременно, проверка сеанса выполняется аналогичным образом, разве что не блокирует вход в команду для новых копий, а наоборот, указывает уже запущенным, что их прервали. Символом #S обозначен номер сеанса (пока не знаю, как лучше назвать, но точно с решётки) - это будет внутренний макрос TCFS2.

Flasher wrote:
MVV wrote:
Напишите мне в личку подробно, какая команда работает не так, как ожидается, я путаюсь в вашей беседе.
Я же написал какая ("См. выше, добавил !=1 красным.").

Ну попросил же нормальным языком написать, что и как не работает, и как должно работать. Это так сложно? Любишь ты стрелки кидать вместо того чтобы дать ответ на чётко поставленный вопрос. Очевидное для тебя может быть абсолютно неочевидным для других.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sat Aug 27, 2011 21:46    Post subject: Reply with quote

MVV wrote:
Хреновая логика. Будут висеть на ожидании двух независимых событий два процесса, а ты оба прибьёшь.
Нормальная логика. Прибью два мешающих процесса. Вызывая команду я прекрасно осознаю, для чего это делается. Вариантов совпадения времени вызова разнородных команд, где используется delay, практически быть не должно.
MVV wrote:
Аналогично для остальных команд, которые чего-то ждут.
Ты привёл муляж, а для понимания требуются конкретные примеры, аналогично этому. Там у тебя явно не одна строчка.

MVV wrote:
Ну попросил же нормальным языком написать, что и как не работает, и как должно работать. Это так сложно? Любишь ты стрелки кидать вместо того чтобы дать ответ на чётко поставленный вопрос.
Какие стрелки? Каким языком? Окстись. Я дал ссылку с ответом на чётко поставленный вопрос
MVV wrote:
какая команда работает не так, как ожидается

MVV wrote:
Очевидное для тебя может быть абсолютно неочевидным для других.
В данном случае это к тебе больше относится. Я в поставленной конкретно вопросе дополнительные не увижу при всём желании.

А теперь в подробностях (то, что сперва умолчалось в запросе):

Команда должна сменять панели при первом нажатии кнопки, т.к. происходит проверка значения ключа. В одном случае ключ при несовпадении принимает значение 1, и выполняется юзеркоманда вызова дефолтного бара, в другом - ноль, и выполняется юзеркоманда вызова второго бара. Но почему-то команда срабатывает верно только со второго раза.
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Sun Aug 28, 2011 02:01    Post subject: Reply with quote

Flasher wrote:
MVV wrote:
Хреновая логика. Будут висеть на ожидании двух независимых событий два процесса, а ты оба прибьёшь.
Нормальная логика. Прибью два мешающих процесса. Вызывая команду я прекрасно осознаю, для чего это делается. Вариантов совпадения времени вызова разнородных команд, где используется delay, практически быть не должно.

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

Flasher wrote:
MVV wrote:
Аналогично для остальных команд, которые чего-то ждут.
Ты привёл муляж, а для понимания требуются конкретные примеры, аналогично этому. Там у тебя явно не одна строчка.

Там было через GetTickCount, который, как написано в дополнении, не работает. Вариант через номер сеанса куда проще (@S - псевдо-макрос, возвращающий этот самый номер, пока не знаю, как лучше его назвать):
Code:
cmd1=set_tcini(TCFS2, Cmd1, 0) run_item(set_bar, 1), test(tcini(TCFS2, Bar, # != 1)) | set_tcini(TCFS2, Cmd1, @1) run_item(set_bar, 2) delay(15000) if(tcini(TCFS2, Cmd1, # == @S), run_item(set_bar, 1))

Flasher wrote:
Какие стрелки? Каким языком? Окстись. Я дал ссылку с ответом на чётко поставленный вопрос
MVV wrote:
какая команда работает не так, как ожидается

Мог бы и подробнее написать, как именно не так она работает))

Flasher wrote:
MVV wrote:
Очевидное для тебя может быть абсолютно неочевидным для других.
В данном случае это к тебе больше относится. Я в поставленной конкретно вопросе дополнительные не увижу при всём желании.

Если меня просят прояснить что-то, я обычно проясняю, а не начинаю возмущаться, что я это писал по сто раз на двадцати предыдущих страницах, и что ответ можно собрать из тех двух десятков постов.

Flasher wrote:
Команда должна сменять панели при первом нажатии кнопки, т.к. происходит проверка значения ключа. В одном случае ключ при несовпадении принимает значение 1, и выполняется юзеркоманда вызова дефолтного бара, в другом - ноль, и выполняется юзеркоманда вызова второго бара. Но почему-то команда срабатывает верно только со второго раза.

Это уже по существу. Можешь же, когда захочешь. Smile
Обсуждение того, что конкретно и почему не работает в команде, я продолжу там.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sun Aug 28, 2011 20:48    Post subject: Reply with quote

MVV wrote:
Невозможно знать наперёд, какие процессы будут запущены в тот момент, и никак нельзя слепо убивать всё, что попадёт под руку.
Почему это нельзя знать наперёд? С чего ты взял? А убивать не всё, что попадёт под руку, а все отличные от запускаемой копии TCFS2, которые мне нафиг не сдались, п.ч. я использую уже другую фичу, которой эти процессы, (а в 99% - один процесс) будет только создавать помехи.

MVV wrote:
Там было через GetTickCount, который, как написано в дополнении, не работает. Вариант через номер сеанса куда проще (@S - псевдо-макрос, возвращающий этот самый номер
Ну, это уже поприличней смотрится.
MVV wrote:
Мог бы и подробнее написать, как именно не так она работает))
Мог бы, если бы попросили, что конкретно требуется описать. Телепатией не владею.
MVV wrote:
Если меня просят прояснить что-то, я обычно проясняю, а не начинаю возмущаться, что я это писал по сто раз на двадцати предыдущих страницах, и что ответ можно собрать из тех двух десятков постов.
Не передёргивай. Возмущаться ты начал и ничего кроме команды не запросил, т.ч. неча пинять на зеркало.
MVV wrote:
Это уже по существу. Можешь же, когда захочешь
Я всегда могу и отвечаю, когда конкретизируют, а не раздувают сопли.
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10261
Location: Россия, Саратов

Post (Separately) Posted: Sun Aug 28, 2011 22:05    Post subject: Reply with quote

Flasher
MVV
А общаться без подобных обменов "личными любезностями" — никак? Обязательно нужно, чтобы модератор вмешался? Сто раз говорилось, что подобные вещи, если уж в них есть позарезная необходимость — в ЛС. Публичную перепалку прекращаем.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
ask-rus



Joined: 10 Nov 2009
Posts: 2076
Location: Russian Federation

Post (Separately) Posted: Wed Aug 31, 2011 18:50    Post subject: Reply with quote

Задача более чем решена (MVV, с благодарностью).
_________________
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Back to top
View user's profile Send private message
MC Hummer



Joined: 20 Aug 2011
Posts: 5

Post (Separately) Posted: Sun Sep 04, 2011 14:26    Post subject: Reply with quote

Решил не создавать новою тему, т.к. мой вопрос так же относится к панели инструментов.
Есть ли в ТС команда, переключающая режим сортировки каталогов с Всегда по имени на Как файлов (также и по времени), и возможность вынесения её на панель инструментов в виде кнопки?
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10261
Location: Россия, Саратов

Post (Separately) Posted: Sun Sep 04, 2011 14:36    Post subject: Reply with quote

MC Hummer
Очень интересная аргументация. Предлагается все функции, для которых теоретически можно создать кнопку, считать относящимися к панели инструментов и загонять в тему про их автоматическую смену?
Короче, замечание за оффтоп.
А встроенная команда, как тут потом sa правильно подсказал, это cm_SwitchDirSort. (Его пост я удалил, а свою первоначальную ошибку исправил прямо здесь, чтобы число оффтопных постов не умножать.)
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
ask-rus



Joined: 10 Nov 2009
Posts: 2076
Location: Russian Federation

Post (Separately) Posted: Sun Jan 22, 2012 15:38    Post subject: Reply with quote

Вновь возращаюсь к былому - смена одной панели инструментов на другую с автоматическим возвратом (15 сек). Как быть, если требуется "закрепить" вторую панель (кнопка), т.е. не дать ей смениться на первую через ~15 сек. Убивать процесс TCFS2.exe мы ведь так и не научились?
Quote:
[em_1]
button=wcmicons.dll
cmd=OPENBAR %COMMANDER_PATH%\BAR\MAIN.BAR

[em_2]
button=wcmicons.dll
cmd=OPENBAR %COMMANDER_PATH%\BAR\EXT.BAR

[em_123]
button=%COMMANDER_PATH%\PLUGINS\Tools\TCFS2\TCFS2.exe
cmd=%COMMANDER_PATH%\PLUGINS\Tools\TCFS2\TCFS2.exe
param=/ei quick_bar
path=%COMMANDER_PATH%\PLUGINS\Tools\TCFS2\TCFS2.exe


Quote:
quick_bar=set_tcini(TCFS2, #0, 0) run_item(set_bar, 1), test(tcini(TCFS2, Bar, #)==2) | set_tcini(TCFS2, #0, @sid) run_item(set_bar, 2) delay(15000) if(tcini(TCFS2, #0, # == @sid), run_item(set_bar, 1))

Quote:
set_bar=if(#1 == 1, tem(em_1)) if(#1 == 2, tem(em_2)) if(#1 > 0, set_tcini(Layout, ButtonBar, 1), run_item(tb0)) set_tcini(TCFS2, Bar, #1), , set_bar(1)

_________________
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sun Jan 22, 2012 15:42    Post subject: Reply with quote

ask-rus
Так убивать процесс не обязательно через саму TCFS2. Создай kill-команду, повесь на клавиши и вызывай, когда требуется.
Back to top
View user's profile Send private message
ask-rus



Joined: 10 Nov 2009
Posts: 2076
Location: Russian Federation

Post (Separately) Posted: Sun Jan 22, 2012 15:55    Post subject: Reply with quote

Flasher
taskkill? Но как бы правильнее? По PID?
_________________
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sun Jan 22, 2012 16:05    Post subject: Reply with quote

ask-rus
Где ж ты PID возмешь-то?
taskkill /F /IM TCFS2.exe /T либо tskill TCFS2.exe
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Thu Jan 26, 2012 10:10    Post subject: Reply with quote

А смысл убивать? Просто выполняем команду, которая где-то прописывает флаг, который будет говорить первой копии, что возвращать панель не нужно. Или же тупо пишем 0 в ключ quick_bar секции TCFS2 - тогда работающая копия после ожидания увидит, что после неё уже похозяйничали, и ничего не сделает. Я думал, этот вопрос решен давным давно...
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
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 Previous  1, 2, 3, 4, 5, 6, 7  Next
Page 5 of 7

 
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