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



Joined: 15 Dec 2004
Posts: 585
Location: Местный

Post (Separately) Posted: Tue Jun 20, 2006 11:25    Post subject: Reply with quote

Batya wrote:
В буфере может быть не вся информация о кнопке. Для панели работает, даже если всего две строки - заголовок и команда.

Полнота заполнения данными никак не влияет на структуру данных, конечно, если данные помещены в буфер именно при копировании с панели (поставлена была именно эта задача). Ну, а если копировать из бог весть каких источников (например, из мессаг форума), то может быть и другая структура. Равно, как и вообще - мусор Wink
Никакой скрипт не поможет отличить реальные данные кнопки от откровенной галимы. Так что, можешь эту проверку просто выбросить или сделать ее более толерантной, например, вот так:
Code:
If UBound(Data) < 2 or UBound(Data) > 8 Then
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Tue Jun 20, 2006 12:12    Post subject: Reply with quote

Volniy wrote:
конечно, если данные помещены в буфер именно при копировании с панели (поставлена была именно эта задача).

А зачем же тогда проверка на защиту от дурака, если в буфере не текст?
И в постановке задачи не было слов о команде "Копировать" с панели. Речь шла о каком-либо копировании+преобразовании кнопки в команду меню.

Volniy wrote:
Ну, а если копировать из бог весть каких источников (например, из мессаг форума), то может быть и другая структура.

Скрипт должен нормально работать, если копировать из темы "Обмен кнопками".

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

Уже выбросил - см. последний подредактированный пост со скриптом.
Back to top
View user's profile Send private message
Volniy



Joined: 15 Dec 2004
Posts: 585
Location: Местный

Post (Separately) Posted: Tue Jun 20, 2006 12:42    Post subject: Reply with quote

Batya wrote:
И в постановке задачи не было слов о команде "Копировать" с панели. Речь шла о каком-либо копировании+преобразовании кнопки в команду меню.

Andry wrote:
...написать скрипт который копирует кнопку и вставляет её в меню запуск.

Копировать кнопку это и означает именно копировать кнопку, то есть нажать правую кнопку мыши на кнопке из панели TC и выбрать пункт меню "Копировать". Я конечно могу очень жестоко ошибаться, но imho "кнопка" это жестко заданный набор данных (не нами придуманный, кстати) и не нужно подстраивать скрипт под ошибки этих данных. Или данные верны или - до свидания.
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Tue Jun 20, 2006 13:15    Post subject: Reply with quote

Volniy
Судя по фразе
Andry wrote:
Что-бы не усложнять процесс можно копировать последнюю кнопку из бара в конец меню запуск ...

... здесь не было мыслей о команде "Копировать", а были мысли о прямом чтении *.bar.

Ладно, забей. Лучше оцени, все ли теперь нормально со скриптом.
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
Volniy



Joined: 15 Dec 2004
Posts: 585
Location: Местный

Post (Separately) Posted: Tue Jun 20, 2006 16:12    Post subject: Reply with quote

Batya wrote:
Лучше оцени, все ли теперь нормально со скриптом.

Технические замечания:

1) Проверка
Code:
If UCase(Left(ClipB, 17)) = "TOTALCMD#BAR#DATA" Then
сложнее моего варианта и при этом недостаточна. Я ведь специально добавил проверку на наличие там еще и VBCRLF, чтобы Split возвратил массив хотя бы с одним элементом, а иначе UBound(Data) потом выдаст ошибку.

2) FindMenu - лишняя переменная. Просто вместо
Code:
If FindMenu = 1
напиши
Code:
If i <= MenuLimit
и все.
3) Если уж ты говоришь, что скрипт универсальный, то напиши об этом в его шапке. Сейчас там только про копирование кнопки с панели.
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Tue Jun 20, 2006 16:30    Post subject: Reply with quote

1) Если после "TOTALCMD#BAR#DATA" есть пробелы, то средствами TC можно вставить кнопку, значит и скрипт это должен позволять. А при твоей проверке это не получится. И даже если в буфере всего одна строка "TOTALCMD#BAR#DATA", UBound(Data) нормально отработает.
2) Переменная не лишняя. Рассмотри варианты, если последняя команда с номером 199 и если номер 200. Т.е. надо для последнего номера (200) разделить варианты номального прохода (команда уже есть) и вариант отсутствия команды с таким номером.
3) Хотя он и, якобы, универсальный, не хочу еще добалять всяческие защиты от дурака. Пусть опытные пользуются скриптом со знанием дела, а для неопытных все, что им нужно, написано в шапке.
Back to top
View user's profile Send private message
Volniy



Joined: 15 Dec 2004
Posts: 585
Location: Местный

Post (Separately) Posted: Tue Jun 20, 2006 17:58    Post subject: Reply with quote

Batya wrote:
Переменная не лишняя. Рассмотри варианты, если последняя команда с номером 199 и если номер 200. Т.е. надо для последнего номера (200) разделить варианты номального прохода (команда уже есть) и вариант отсутствия команды с таким номером.

Ладно, давай вместе проверим. Что мы ищем в этом цикле? Мы ищем первый номер user-меню, которого пока еще нет в ини-файле.
Итак, если у нас нету 199-го тогда i имеет значение 199, если 200-го тогда i имеет значение 200. Но если все-таки вдруг (!!!) 200-ый пункт меню уже имеется в наличии, тогда переменная i после For ... Next примет значение 201 (не нужно объяснять почему?). Теперь-то ты уже должен согласиться, что дополнительные переменные тут не нужны.

А в остальном, даже при наличии противоречий (то буду перепроверять, то не буду Smile ) , хозяин - барин. Для одного скрипта п*****жа уже более чем достаточно. Я - пас.
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Tue Jun 20, 2006 18:15    Post subject: Reply with quote

Very Happy
Согласен.
Тем более, что я уже по-другому сделал - см. исправленный пост.
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
aLexx



Joined: 14 Mar 2005
Posts: 442
Location: Новокузнецк

Post (Separately) Posted: Fri Jul 06, 2007 14:42    Post subject: Reply with quote

Срочно понадобилось перекатить несколько кнопок в меню "Старт", для того,
что бы можно было их повесить на горячие клавиши (отключение флешек, работа с CD).
Опробовал скрипт. Типа, всё пашет, как надо, НО!...
У меня секция [USER] файла "wincmd.ini" имеет такой вид -
"RedirectSection=%COMMANDER_PATH%\[User].ini". SmileSmile
Надеюсь, ясно в чём дело? Новые пункты меню добавляются в "wincmd.ini", а не в "[User].ini".
Как победить? В принципе, пока я вручную перенёс - уж очень срочно надо было.
Back to top
View user's profile Send private message
funduk



Joined: 16 Aug 2005
Posts: 1513
Location: Санкт-Петербург

Post (Separately) Posted: Fri Jul 06, 2007 16:13    Post subject: Reply with quote

aLexx wrote:
Срочно понадобилось перекатить несколько кнопок в меню "Старт", для того,
что бы можно было их повесить на горячие клавиши (отключение флешек, работа с CD)
Ставь семёрку и используй user-defined commands.
Back to top
View user's profile Send private message
aLexx



Joined: 14 Mar 2005
Posts: 442
Location: Новокузнецк

Post (Separately) Posted: Fri Jul 06, 2007 16:30    Post subject: Reply with quote

Семёрки юзаю по мере их выпуска, начиная с 7.0pb1, а об "user-defined commands" не слышал... Sad
Счас буду смотреть. Спасибо!
Back to top
View user's profile Send private message
aLexx



Joined: 14 Mar 2005
Posts: 442
Location: Новокузнецк

Post (Separately) Posted: Fri Jul 06, 2007 16:34    Post subject: Reply with quote

Заглянул в справку (для 7.01 - СНМ) ничего не нашёл...
Где искать-то?
Back to top
View user's profile Send private message
DrShark



Joined: 21 Oct 2006
Posts: 911
Location: Kyiv, Ukraine

Post (Separately) Posted: Fri Jul 06, 2007 17:19    Post subject: Reply with quote

Из справки:
Quote:
Диалоговое окно: Выбор команды
Этот диалог позволяет выбрать внутреннюю команду из файла totalcmd.inc, а также определить новые команды, которые будут храниться либо в файле usercmd.ini, либо в специфическом для данного языка файле wcmd_lng.ini (например, wcmd_rus.ini для русского языка).
...
Новая... Создаёт новую пользовательскую команду em_xyz. Пользовательские команды могут использоваться для вызова программы с нужными параметрами, в том числе из главного меню или по горячей клавише.

Пример использования - в истории Тотала:
Quote:
23.07.06 Added: Support for user-defined commands em_xyz: usercmd.ini in same directory as wincmd.ini, with entries like this: [em_notepad] cmd=notepad.exe param=%P%N path=c:\windows iconic=0 (same as in .bar file, but not numbered)
Back to top
View user's profile Send private message
aLexx



Joined: 14 Mar 2005
Posts: 442
Location: Новокузнецк

Post (Separately) Posted: Fri Jul 06, 2007 17:48    Post subject: Reply with quote

Сказать честно, это всё нам известно и понятно без проблем.
Вопрос в другом - ручками всё это дело набирать неохота (хотя я и печатаю ок.
200 знаков в минуту). А в этой ситуёвине пришлось комманды из секции [USER]
вручную переносить в другой файл. Хотя, честно сказать, заняло это дело полминуты.
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