Panel.Select() — пометка файлов на панелях

Здесь обсуждается всё, что касается макросов.
User avatar
Tim Sobolev
Posts: 714
Joined: Fri 01 Apr, 2005 14:46
Location: Украина
Has thanked: 1 time
Been thanked: 2 times

Panel.Select() — пометка файлов на панелях

Post by Tim Sobolev »

Целью ставилось пометить на активной и пассивной панелях файлы с такими же именами. Столкнулся с проблемой отсутствия функции для пометки файлов.
Решил обойтись без неё, следующий макрос:

Code: Select all

$If (APanel.Empty || PPanel.Empty) $Exit $End 
%i=1; $While (%i<=APanel.ItemCount) %j=1; $While (%j<=PPanel.ItemCount) 
%si=ucase(panelitem(0,%i,0)); %sj=ucase(panelitem(1,%j,0)); 
$If (%si==%sj) 
$If (!panelitem(0,%i,8)) panel.SetPosIdx(0,%i); Ins $End Tab 
$If (!panelitem(1,%j,8)) panel.SetPosIdx(1,%j); Ins $End Tab 
$End
%j=%j+1; $End %i=%i+1; $End
Обнаружились глюки с пометкой файлов на пассивной панели.

Собственно хотелка -- возможность пометки файлов на активной/пассивной панелях по указанному индексу или/и имени



Update
Дальнейшее развитие макроса: "Выделить одинаковые файлы на обеих панелях", ver.2
Last edited by Tim Sobolev on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: Update
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 4 times

Re: Пометка файлов на панелях

Post by Skirda »

У меня, кстати, давно мысль ходит.
Но идея у меня вот такая:

Code: Select all

V=Panel.Select(panelType,FileNames)
Здесь FileNames - 0 или больше имен (даже с путем), разделенных CRLF
Т.е. в этом случае можно повторить плагин SelectFromClipboard

Code: Select all

Panel.Select(0,clip(0))
:twisted:
We are the Borg. You will be assimilated.
So Say We All!
User avatar
Tim Sobolev
Posts: 714
Joined: Fri 01 Apr, 2005 14:46
Location: Украина
Has thanked: 1 time
Been thanked: 2 times

Re: Пометка файлов на панелях

Post by Tim Sobolev »

Мысль хорошая, но хотелось бы и выделение по индексу
Допустим нужно мне в Process list выделить один svchost.exe...
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 4 times

Re: Пометка файлов на панелях

Post by Skirda »

Тогда так-то так:

V=Panel.Select(panelType[,Action[,Items[,Mode]]])

Action:
0 - снять выделение
1 - добавить выделение
2 - ...

Mode:
0 - Items является числом - индексом
1 - Items является строкой - 0 или больше имен (даже с путем), разделенных CRLF

Items: - если 0 или "" (в зависимости от Mode) - снять...
We are the Borg. You will be assimilated.
So Say We All!
User avatar
Tim Sobolev
Posts: 714
Joined: Fri 01 Apr, 2005 14:46
Location: Украина
Has thanked: 1 time
Been thanked: 2 times

Re: Пометка файлов на панелях

Post by Tim Sobolev »

Ну где-то так :)
Теперь осталось попробовать в деле
User avatar
DAtaMan
Posts: 262
Joined: Wed 24 Jun, 2009 10:01
Location: не отсюда

Re: Пометка файлов на панелях

Post by DAtaMan »

Ещё бы добавить вид пометки - по именам файлов или по их расширениям.
Тогда будет вообще супер. :)
2B OR NOT 2B = FF (Иногда code - это просто код. Почти Дйерф Омолш Днумзигис)
To ban or not to ban, that is the question. ©
User avatar
[e]Bu$ter
Posts: 792
Joined: Mon 30 May, 2005 23:05
Location: Беларусь, Минск
Contact:

Re: Пометка файлов на панелях

Post by [e]Bu$ter »

DAtaMan wrote:Ещё бы добавить вид пометки - по именам файлов или по их расширениям.
Тогда будет вообще супер. :)
Так сразу и по маске тогда.
Функционал для этого уже есть (на клавишах Add/Subtract), осталось просто вызвать его через макросы.
User avatar
SUSim
Posts: 1545
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 5 times
Been thanked: 11 times

Re: Пометка файлов на панелях

Post by SUSim »

Это не критично все - это же макросы... думайте! Кто мешает переключиться временно на пассивную панель и там макросом Ins все отметить?
конечно удобно было бы командой, и на много! И еще не помешало бы кроме panelitem сделать setpanelitem с теми же параметрами!
С такими командами было бы намного проще, но и без них можно обойтись :) только макросы длиннющие... У меня макрос запоминающий/восстанавливающий пометки получился почти 1кб :(
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 4 times

Re: Пометка файлов на панелях

Post by Skirda »

Tim Sobolev wrote:Ну где-то так :)
Теперь осталось попробовать в деле
со спецификацией сначала надо определиться :)
We are the Borg. You will be assimilated.
So Say We All!
User avatar
Tim Sobolev
Posts: 714
Joined: Fri 01 Apr, 2005 14:46
Location: Украина
Has thanked: 1 time
Been thanked: 2 times

Re: Пометка файлов на панелях

Post by Tim Sobolev »

Tim Sobolev wrote:Обнаружились глюки с пометкой файлов на пассивной панели.
По поводу вышесказанного -- забыл про Tab :oops:
Должно быть так:

Code: Select all

$If (APanel.Empty || PPanel.Empty) $Exit $End 
%i=1; $While (%i<=APanel.ItemCount) %j=1; $While (%j<=PPanel.ItemCount) 
%si=ucase(panelitem(0,%i,0)); %sj=ucase(panelitem(1,%j,0)); 
$If (%si==%sj) 
$If (!panelitem(0,%i,8)) panel.SetPosIdx(0,%i); Ins $End Tab 
$If (!panelitem(0,%j,8)) panel.SetPosIdx(0,%j); Ins $End Tab 
$End
%j=%j+1; $End %i=%i+1; $End
User avatar
SUSim
Posts: 1545
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 5 times
Been thanked: 11 times

Re: Пометка файлов на панелях

Post by SUSim »

Tim Sobolev wrote:

Code: Select all

...
%i=1; $While (%i<=APanel.ItemCount) ...
%si=ucase(panelitem(0,%i,0)) ...  %i=%i+1; $End
ItemCount это количество файлов/папок без учета "..", а panelitem(0,0,0) возвращает имя первого элемента или я что то недопонял? в связи с этим мне кажется что макрос не будет правильно работать в корневых папках.
User avatar
Tim Sobolev
Posts: 714
Joined: Fri 01 Apr, 2005 14:46
Location: Украина
Has thanked: 1 time
Been thanked: 2 times

Re: Пометка файлов на панелях

Post by Tim Sobolev »

SUSim wrote: ItemCount это количество файлов/папок без учета "..", а panelitem(0,0,0) возвращает имя первого элемента или я что то недопонял? в связи с этим мне кажется что макрос не будет правильно работать в корневых папках.
Прежде чем что-то утверждать -- читаем мануал :rtfm: и/или хотя бы проверяем как работает
User avatar
DAtaMan
Posts: 262
Joined: Wed 24 Jun, 2009 10:01
Location: не отсюда

Re: Пометка файлов на панелях

Post by DAtaMan »

Макрос отлично работает, но медленно, конечно.
Небольшая вариация:

Code: Select all

$If (APanel.Empty || PPanel.Empty) $Exit $End 
%i=1; 
$While (%i<=APanel.ItemCount) 
   $If (panel.SetPos(1,panelitem(0,%i,0))) panel.SetPosIdx(0,%i); Ins Tab Ins Tab $End 
   %i=%i+1; 
$End
2B OR NOT 2B = FF (Иногда code - это просто код. Почти Дйерф Омолш Днумзигис)
To ban or not to ban, that is the question. ©
User avatar
Tim Sobolev
Posts: 714
Joined: Fri 01 Apr, 2005 14:46
Location: Украина
Has thanked: 1 time
Been thanked: 2 times

Re: Пометка файлов на панелях

Post by Tim Sobolev »

DAtaMan wrote: Небольшая вариация
...
Отличная вариация, раза в два быстрее :)
Но тоже тормозит из-за ввода, ждём апи :cry:
Ann
Posts: 182
Joined: Tue 26 Jun, 2007 11:05

Re: Пометка файлов на панелях

Post by Ann »

Tim Sobolev wrote:
DAtaMan wrote: Небольшая вариация
...
Отличная вариация, раза в два быстрее :)
Но тоже тормозит из-за ввода, ждём апи :cry:
Но если воспользоваться плагином Compare, то ведь будет побыстрее?
Post Reply

Return to “Обсуждение макросов”