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: 1177

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: 2741

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: 1177

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: 2741

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: 1177

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: 2741

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: 1177

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: 1177

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: 2741

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: 1177

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
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