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 1, 2, 3  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
LonerD



Joined: 04 Jan 2011
Posts: 1168
Location: Донецк

Post (Separately) Posted: Sun Aug 19, 2012 18:15    Post subject: Копирование имён только выделенных файлов и каталогов Reply with quote

Какие есть способы скопировать имена только выделенных файлов и каталогов? Возможно, хитрости через комбинацию cm-команд. Возможно, простым скриптом.
Стандартная команда 2017 если ничего не выделено - то копирует имя файла под курсором.
А нужно: Если что-то выделено (файлы или каталоги) - то копируем их имена (стандартная работа команды 2017). Если выделен один файл/каталог и курсор находится на нём - копируем имя этого одного файла/каталога. Если ничего не выделено - то содержимое буфера очищается. При этом положение курсора и состояние выделения не должно изменяться.
Back to top
View user's profile Send private message
Avada



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

Post (Separately) Posted: Sun Aug 19, 2012 19:12    Post subject: Reply with quote

Просто в порядке реплики с места. Вспомнил тему, где обсуждалась специфика поведения выделенных объектов и объектов под курсором.
MVV wrote:
везде в тотале при отсутствии выделения файл под курсором считается выделенным (копирование/перемещение и т.п.).

_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Sun Aug 19, 2012 19:16    Post subject: Reply with quote

LonerD wrote:
Если ничего не выделено - то содержимое буфера очищается.
А это для чего Question

Avada
И я вспомнил, заодно посмотрев тамашний скрипт, который можно модифицировать под указанную задачу, но даже в таком случае для LonerD, ессно (пока не портабл), не подойдёт..
Back to top
View user's profile Send private message
LonerD



Joined: 04 Jan 2011
Posts: 1168
Location: Донецк

Post (Separately) Posted: Mon Aug 20, 2012 01:35    Post subject: Reply with quote

Да не то, чтобы не подойдёт, но очень громоздко.
Вообще дело началось с небольшой команды - перейти к следующему расширению файла с сохранением выделения.
Задача решилась вот таким способом:
TCFS2.exe /ef msg($0B,0) tcm(2017) tcm(524) tcm(527) tcm(525) tcm(3305) tcm(2053) tcm(524) tcm(2033) msg($0B,1) redraw()
Если на панели есть выделение, то всё работает. А если ничего не выделено, то получается некрасиво - после перехода к следующему расширению тот файл, который изначально был под курсором, становится выделенным.
Back to top
View user's profile Send private message
MVV



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

Post (Separately) Posted: Mon Aug 20, 2012 09:41    Post subject: Reply with quote

А может сначала снять выделение и послать нажатие Insert?
_________________
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: Mon Aug 20, 2012 16:20    Post subject: Reply with quote

LonerD
Ты в команде забыл tcm(2918) перед redraw() поставить в конце. И вообще можно было бы вполне обсудить по месту назначения, а не пытаться искать в отдельном топике ответ на вопрос, который исходной задачи касается только косвенно.


Last edited by Flasher on Wed Aug 22, 2012 22:37; edited 1 time in total
Back to top
View user's profile Send private message
LonerD



Joined: 04 Jan 2011
Posts: 1168
Location: Донецк

Post (Separately) Posted: Wed Aug 22, 2012 03:23    Post subject: Reply with quote

Quote:
А может сначала снять выделение и послать нажатие Insert?

Вся суть в том, чтобы сохранить выделение если что-то выделено.

Quote:
который исходной задачи касается только косвенно.

Данной задачи касается косвенно, потому я и не стал изначально описывать её.
Потому как могут возникать и другие задачи, требующие работы только с выделенными объектами.

PS. Да, кстати, частная задача решена.
Но глобальная так и осталась открытой.

Приходит в голову только алгоритм скрипта (не слишком сложный, но и не очевидный):
1. Копировать имена файлов в буфер.
2. Если в буфере несколько строк, то на этом алгоритм закончен (выделение есть).
3. Если в буфере одна строка - сохранить эту строку в переменную.
3.1. Инвертировать выделение.
3.2. Копировать имена файлов в буфер.
3.3. Инвертировать выделение.
3.4. Сравнить сохранённую переменную со строками полученного списка; если есть совпадения - то очистить буфер, иначе поместить в буфер значение сохранённой переменной.
Back to top
View user's profile Send private message
MVV



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

Post (Separately) Posted: Wed Aug 22, 2012 09:39    Post subject: Reply with quote

LonerD wrote:
Вся суть в том, чтобы сохранить выделение если что-то выделено.

Посылаешь tcm(530) вместо tcm(2017), потом делаешь своё черное дело, потом посылаешь tcm(524) и tcm(529) вместо tcm(2033). А блин, тотал его сбрасывает при вызове cm_ClearAll... О, а при вызове cm_ClearAllFiles не сбрасывает! Very Happy

Итого,
Code:
TCFS2.exe /u- /ef msg($0B,0) tcm(530) tcm(524) tcm(527) tcm(525) tcm(3305) tcm(2053) tcm(3304) tcm(529) redraw() msg($0B,1) tcm(2918)

Последняя команда - для перерисовки курсора (поставьте что получше, если есть).
_________________
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 26, 2012 14:14    Post subject: Reply with quote

LonerD wrote:
Но глобальная так и осталась открытой.
Для чего эта глобальная? Зачем нужен буфер в ней? Чтобы его содержимое куда-то скопировать? Ты и так видишь, выделено у тебя что-то в панели или нет. Зачем тут костыли?
Back to top
View user's profile Send private message
LonerD



Joined: 04 Jan 2011
Posts: 1168
Location: Донецк

Post (Separately) Posted: Sun Aug 26, 2012 21:45    Post subject: Reply with quote

MVV
Спасибо, у меня было несколько другое решение, не такое элегантное.
Значит, при копировании в буфер файл под курсором в любом случае считается выделенным если отсутствуют другие выделения.
А команда 530 (Сохранить выделение временно) не считает одиночный файл выделенным. Интересное поведение, надо будет запомнить.
Back to top
View user's profile Send private message
LonerD



Joined: 04 Jan 2011
Posts: 1168
Location: Донецк

Post (Separately) Posted: Thu Jun 13, 2013 15:49    Post subject: Reply with quote

Можно ли каким-то образом получить тот текст (те выделенные строки), которые сохранются командой 530?
Куда они сохраняются? Куда-то в память? Можно ли считать эту информацию из памяти (каким образом) ?
_________________
Win11 x64 Eng | TC DreamLair eternal pre-α
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Thu Jun 13, 2013 15:56    Post subject: Reply with quote

LonerD wrote:
Можно ли считать эту информацию из памяти (каким образом) ?
Думаю, тебе на этот вопрос только Гислер ответит..
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
MVV



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

Post (Separately) Posted: Thu Jun 13, 2013 17:06    Post subject: Reply with quote

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



Joined: 04 Jan 2011
Posts: 1168
Location: Донецк

Post (Separately) Posted: Thu Jun 13, 2013 17:50    Post subject: Reply with quote

Жаль, а я думал программисты смогут прояснить вопрос.

В частности пока не могу понять и воспроизвести алгоритм работы восстановления выделения по нажатию Esc в плагине TwinKey; создаётся впечатление что плагин считывает и запоминает результат работы команды 530 (cm_SaveSelection).

Вот тут упоминалось о возможности реализации проверки "нет ли в панели выделенных файлов". Интересен механизм этой проверки в случае одного файла - выделен он или просто курсор располагается на нём...
_________________
Win11 x64 Eng | TC DreamLair eternal pre-α
Back to top
View user's profile Send private message
MVV



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

Post (Separately) Posted: Thu Jun 13, 2013 20:12    Post subject: Reply with quote

Думаю, гораздо проще послать команду сохранения выделения в файл и перехватить диалог выбора файла, чем ковыряться в памяти и искать непонятно что (сперва придется неслабо поковырять программу, чтобы найти, где что, но в другой версии всё будет в других местах).
_________________
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 -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page 1, 2, 3  Next
Page 1 of 3

 
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