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 

Drag&Drop на главной панели инструментов
Goto page Previous  1, 2, 3
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
sa



Joined: 29 Apr 2009
Posts: 2745

Post (Separately) Posted: Fri Jul 10, 2026 15:03    Post subject: Reply with quote

Orion9 wrote:
сделал сохранение

По-моему, файл не перезаписывается (не меняет дату и время модификации), если имя остаётся прежним. Это немного настораживает…
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 1193

Post (Separately) Posted: Sat Jul 11, 2026 00:39    Post subject: Reply with quote

sa wrote:
Это немного настораживает…

Согласен. Сделал сообщение, что нельзя в тот же файл сохранить.

С удалением, конечно, надо подумать, но это дело второе. Меня больше интересовал перенос значка, и вроде получилось. Кода совсем немного, но приложу весь модуль, поскольку было много мелких правок, включая WinRedraw(0), который помогает лучше перерисовывать, чем скрытие панели.

Перенос значка - копирование + сброс с удержанием перемещения Smile

 beta

 Hidden text
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 1193

Post (Separately) Posted: Sat Jul 11, 2026 14:04    Post subject: Reply with quote

sa
Да, я немного ступил, когда вы говорили об удалении. Думал, речь идет о выделении дипазона, но увы, в Autorun нет возможности делать поля ввода, за исключением самой простой формы, да и то через VBScript.

Что касается удаления одной кнопки, сделать его было несложно (самая последняя функция в модуле). Пока сделал так: вынос кнопки на 200 пикселей за панель (от начала панели) + удержание кнопки переноса удаляет ее. При этом появляется соответствующий значок. DPI не учитывается, что может быть проблемой при большом масштабировании, но это пока только для теста. Все можно изменить. Может быть, у вас появятся какие-то идеи, если не понравится. Я сам пока не понял: вроде бы нормально, но...

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

 Hidden text

P.S. Я добавил горячую клавишу в заголовок для отмены последнего действия Win+Backspace, можно изменить.
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2745

Post (Separately) Posted: Sun Jul 12, 2026 10:28    Post subject: Reply with quote

Orion9 wrote:
Перенос значка
Работает. Лучше, наверное, запретить перенос значка на разделители, по крайней мере на разрывы – это, к тому же чревато ошибками в работе скрипта. См. ранее:
Quote:
в результате разрыв строки проверяется не по значению "-2", а по размеру 2. Но поскольку вероятность команды с двумя символами очень мала, пока оставил так, но нужно будет переделать.

Orion9 wrote:
Что касается удаления одной кнопки, сделать его было несложно
Работает. С учётом возможности отмены действия, в отличие от удаления средствами TC, наверное, это полезная функция.

Orion9 wrote:
дополнительные пункты для удаления кнопок между разрывов
Возможно, удобнее один из двух разрывов оставлять, но не факт...
А так всё наглядно получилось, тем более, что копировать разрывы для выделения диапазона несложно.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 1193

Post (Separately) Posted: Sun Jul 12, 2026 12:23    Post subject: Reply with quote

sa wrote:
Лучше, наверное, запретить перенос значка на разделители, по крайней мере на разрывы – это, к тому же чревато ошибками в работе скрипта

Да, я посмотрю, что там. Пока не успел основательно все протестировать, но постараюсь сделать это в ближайшее время.
sa wrote:
С учётом возможности отмены действия, в отличие от удаления средствами TC, наверное, это полезная функция.

Вроде бы. Но само движение вниз для вас оказалось удобным? Я сначала делал, чтобы при касании верхней границы экрана кнопку можно было удалять, но доделав до смены значка, понял, что при расрытом на весь экран ТС это неудобно - расстояние слишком мальнькое. Вообще, вариантов как-то мало, наверное, пусть пока так останется, а там посмотрим.
sa wrote:
Возможно, удобнее один из двух разрывов оставлять, но не факт...

Да нет, тут я промахнулся. Конечно же лучше оставлять! Исправлю. А также сделаю в меню пункты для добавления разрыва и разделителя, чтобы при их отсутствии не нужно было залезать в диалог изменения панели. А копировать разрывы и разделители действительно удобно, не говоря уж о кнопках, спасибо за идею Very Happy
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 1193

Post (Separately) Posted: Sun Jul 12, 2026 19:21    Post subject: Reply with quote

sa wrote:
Лучше, наверное, запретить перенос значка на разделители, по крайней мере на разрывы – это, к тому же чревато ошибками в работе скрипта.

Да, это приводит к серьезным ошибкам! Там вообще на ниточке все держится. Если в файле панели будет мальшее отклонение от нормы, то проблемы будут обязательно. Видимо, придется пересматривать считывание панели с учетом разных нюансов, ведь сейчас кнопки просто определяются по наличию ключа button=, а разделители по cmd= с учетом, что ключ button= пустой.
Fix:
Code:
Func HBarDragIcon(DragIdx, DropIdx)
    # проверка индекса получателя
    If gHBarMap[DropIdx-1] <> 1 Then Return ShowDragHint("Получатель не может быть разделителем")
    # сохранение значка
    Local val = IniRead(gHBarFile, "Buttonbar", "button" & DragIdx)

sa wrote:
Возможно, удобнее один из двух разрывов оставлять

Обновленная функция
 Hidden text

Добавил к регулярному выражению \Z, иначе последний ключ терялся, если панель заканчивается eof, а не \r\n. В функции HBarMergeOne это тоже нужно подправить.

+Новые два пункта
Code:
    txt &= 'MENUITEM SEPARATOR' & auCRLF
    txt &= 'MENUITEM "Добавить разрыв", em_aucmd -1 HBarAddButton -2' & auCRLF
    txt &= 'MENUITEM "Добавить разделитель", em_aucmd -1 HBarAddButton 1' & auCRLF   
    txt &= 'POPUP "Удалить кнопки за разрывом"' & auCRLF

 Hidden text

Здесь все было просто. И последний фикс
Code:
SetHotkeyAction /K:W /H:BS "HBarUndo"

Иначе клавиша Win чудила с ключами /DM /S, скорее всего из-за последнего.

Ну вот, пока так. Остальные испытания чуть позже. Кстати, WinRedraw(0) все-равно не всегда помогает, увы.
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 Previous  1, 2, 3
Page 3 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