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



Joined: 01 Jan 2024
Posts: 1182

Post (Separately) Posted: Tue Jun 23, 2026 13:16    Post subject: Reply with quote

sa wrote:
С самого начала поменял у себя на SHIFT

Да, если кому-то нужно, можно и CapsLock на ScrollLock поменять, но лучше этого не делать: не на всех клавиатурах может оказаться эта кнопка. Самому приходится часто работать с тачпадом, поэтому стараюсь не вешать ничего лишнего на колеса мыши и прочие нестандартные кнопки.
sa wrote:
Глядишь, со временем CTRL для операции копирования пригодится

Вы имеете в виду drag&drop без переноса с копипованием? Сделать такое получится, но это будет отклонением от стандартов Smile

По поводу текущего drag&drop, если кто-то будет пользоваться (выше уже писалось, но думаю, можно еще раз акцентировать). Сейчас перетаскивание работает так: перенос кнопки назад ставит эту кнопку перед другой кнопкой (кнопкой, на которую осуществляется сброс); перенос кнопки вперед ставит эту кнопку за другой кнопкой. Это изначальные, вынужденные ограничения. Без этих ораничений не было бы возможности при переносе назад поставить кнопку перед самой первой кнопкой, а при переносе вперед — после самой последней.

В принципе, это никак не мешает. Всегда можно сделать повторный drag&drop в нужном направлении для нужного результата
 Hidden text

Да, можно будет в перспективе попробовать сделать как у Гислера, т.е. учитывать к какому краю ближе сбросывается кнопка, но и сейчас все (по-своему) работает.
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2742

Post (Separately) Posted: Tue Jun 23, 2026 15:01    Post subject: Reply with quote

Orion9 wrote:
но это будет отклонением от стандартов

На то и Autorun, чтобы ниспровергать стандарты! Smile
Тем более, что Drag&Drop с кнопками будет достаточно похож на Drag&Drop с файлами: c Shift (или Alt)- переносить, с Ctrl – копировать.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 1182

Post (Separately) Posted: Wed Jun 24, 2026 00:33    Post subject: Reply with quote

sa
Это еще не совсем доработанный модуль, но попробуйте. Shift - копирование, Ctrl - перенос.

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



Joined: 29 Apr 2009
Posts: 2742

Post (Separately) Posted: Wed Jun 24, 2026 11:43    Post subject: Reply with quote

Orion9
Быстро!
Что пока заметил:
1) Копирование кнопки вперед ставит её не за указанной кнопкой (как при переносе), а перед указанной.
2) При копировании кнопки с содержимым в кавычках (в bar-файле кавычки, соответственно, задвоены), кавычки пропадают.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 1182

Post (Separately) Posted: Wed Jun 24, 2026 13:54    Post subject: Reply with quote

sa wrote:
Быстро!

Расчитывал, что будет еще быстрее! Думал, что получится по минимуму подкрутить в готовых функциях, как в прошлый раз, но только время на это потратил. В итоге пришлось делать отдельную функцию для копирования.
sa wrote:
1) Копирование кнопки вперед ставит её не за указанной кнопкой (как при переносе), а перед указанной.

Это обусловлено простотой алгоритма. Сейчас копируемая кнопка встает на место (индекс) старой кнопки, сдвигая старую кнопку вперед. Это не сильно мешает, хотя и создает некоторую путаницу по сравнению с тем, как работает перенос кнопок. Главное сейчас добиться, чтобы ничего не глючило, а алгоритм с учетом границ кнопок расставит все по местам.
sa wrote:
кавычки пропадают.

А разве при простом копировании через меню они не пропадают? Хотя кто его знает, сейчас кнопка просто считывается через IniRead, может это приводит к потере, я пока не успел посмотреть. Отвлекся на подготовку к переходу на дробный индекс. Это позволит определить на какой половине кнопки находится указатель. Сейчас эта информация уже доступна в отладочной информации как "index_float". В принципе, это только первый шаг, но понятно куда дальше двигаться.
 Hidden text

Еще сделал возможность более простой смены модификатопров в HBarWndProc
Code:
MoveButton      = MK_SHIFT, _
CopyButton      = MK_CONTROL

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

А вообще, копирование вещь прикольная. Я, признаюсь, немного недооценил эту операцию. Особенно удобно разделители множить Smile
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2742

Post (Separately) Posted: Wed Jun 24, 2026 17:16    Post subject: Reply with quote

Orion9 wrote:
А разве при простом копировании через меню они не пропадают?
Нет.

Orion9 wrote:
Иконка при копировании другая
Если при переносе отпустить клавишу Shift, то, по-моему, точно такая же (с плюсиком), что и при копировании.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 1182

Post (Separately) Posted: Wed Jun 24, 2026 20:17    Post subject: Reply with quote

Твою ж Швейцарию. Кажись, работает Very Happy

 Hidden text

Я не уверен, правда, что лучше стало: имхо, первый вариант даже интереснее чем-то, поэтому оставил его в качестве альтернативы. Переключиться можно в меню.

sa
Исправил клавишу Shift, спасибо, что помогаете, я бы один не смог столько тестов провести. А вот с кавычками пока не понял. Если не трудно, хотелось бы пример кнопки, но мне кажется, что это функция IniRead их удаляет. Не хотелось бы переделывать через поиск в массиве или через регэксресы. А если навести на эту кнопку перед копированием, в подсказке тоже без кавычек отображается? Если да, то все, кирдык. Тогда точно сама IniRead их удаляет.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 1182

Post (Separately) Posted: Thu Jun 25, 2026 00:15    Post subject: Reply with quote

sa
Нашел я у себя такие кнопки. Похоже, такая запись используется для экранирования кавычек. В общем, чтобы ничего по-крупному не ломать, можно заменить фрагмент с сохранением кнопки в HBarDragnCopy. Да, тянет на костыль, но тут, если подумать, все на костылях построено Smile
Code:
# сохранение кнопки
For j = 0 To aItems.Count - 1
   key = aItems[j] & DragIdx
   val = IniRead(gHBarFile, "Buttonbar", key)
   If val <> '' Then
      If StrLeft(val, 1) ='"' And StrRight(val, 1) ='"' Then val = '"' & val & '"'
      ini &= key & '=' & val & auCRLF
   EndIf   
Next
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2742

Post (Separately) Posted: Thu Jun 25, 2026 11:38    Post subject: Reply with quote

Orion9 wrote:
Твою ж Швейцарию. Кажись, работает Very Happy

Вроде всё хорошо!
Из замеченного:
Quote:
MENUITEM "Smart Drag&&Drop"

Ну и для себя, как обычно, поменял назначение Shift и Ctrl:
Code:
           MoveButton      = MK_SHIFT, _
           CopyButton      = MK_CONTROL
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 1182

Post (Separately) Posted: Thu Jun 25, 2026 13:41    Post subject: Reply with quote

sa wrote:
Вроде всё хорошо!

Вроде бы да!

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

 Hidden text

В остальном же, чик-чик-чик, как в пятнашки сыграл Mr. Green
sa wrote:
Из замеченного:

Да, спасибо, подправил. Думал, что придется справку открывать, чтобы найти как это сделать Smile

P.S. Прикрепил последний модуль к первому сообщению в топике, чтобы зафиксировать все изменения. Надеюсь, крупных ошибок больше нет, тех, которые могут привести к порче панели, но будьте осторожнее!
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 1182

Post (Separately) Posted: Thu Jul 09, 2026 13:53    Post subject: Reply with quote

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

 Hidden text

фрагмент можно добавить в конец модуля

 Hidden text

Поскольку используются функции для работы с регулярными выражениями, в autorun.cfg должен быть подключен субплагин
Code:
LoadLibrary Plugins\Autorun_RegExp.dll

Если коротко о функционале, можно открыть несколько доролнительных панелей и перетаскивать значки на главной панели. Пока только для теста, могут быть ошибки. По этой причине не стал обновлять модуль на первой странице. Есть планы сделать удаление кнопок с панели и копирование только значка при переносе, ради чего, собственно, это все и задумывалось.
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2742

Post (Separately) Posted: Thu Jul 09, 2026 15:36    Post subject: Reply with quote

Orion9 wrote:
Сделал два новых, пока эксперементальных пункта меню,

На первый взгляд пункты работают!
Спасибо, удобно!
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 1182

Post (Separately) Posted: Fri Jul 10, 2026 00:16    Post subject: Reply with quote

sa wrote:
На первый взгляд пункты работают!

Вроде бы! Хотелось бы в это верить Very Happy

Еще не успел хорошо протестировать, но заметил, что есть проблемы с обновлением окна панели. Видимо, cm_ReloadBarIcons не расчитана на то, что при обновлении значков может меняться количество строк, поэтому пришлось заменить на cm_VisButtonBar. Но я это сделал для только для новых пунктов, а при откатах все еще может проявиться. Изменение размеров окна тотала временно помогает, но надо избавиться от этой проблемы.

Юникодные бары тоже еще не проверял, не успел просто. Вообще, могут быть какие-то ошибки.

Я еще не решил, как сделать удаление и копирование значков кнопок. Вроде напрашивается использование Alt, но не хочется целиком занимать эту кнопку. Наверное, лучше следить за ее состоянием при сбросе.

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

P.S. Надо сделать еще сохранение панели. Думал, сейчас по-быстренькому спрошу у ИИ готовый код для Autohotkey и переведу его на Autorun, а он мне, зараза, нерабочий код подсунул, пришлось пересчитывать за ним структуру Smile
 ИИ

 Коррекция

В обшем, сделаем. Правда придется еще и для х32 отдельно считать, поскольку этот код только для х64.
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
Page 2 of 2

 
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