Autorun

Обсуждение только плагинов и утилит для Total Commander.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Flasher писал(а):
MVV писал(а):А чтобы записать пустое значение, а не удалять ключ, можно указывать "" как значение этого параметра.
А разве под первым предложением "без текста .. использовать" не это подразумевалось?
Под чьим и каким первым предложением? Моя мысль была о том, что для очистки значения параметра вполне можно передавать пустую строку как новое значение. А для удаления - вообще не указывать новое значение.

Кстати, виндовая функция для записи значений в INI так и работает - передаешь ей пустой указатель - удаляет параметр из файла. А передаешь указатель на пустую строку - просто очищает значение без удаления параметра.

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

Код: Выделить всё

IniWrite [/EV] <имя ini> <секция> [<ключ> [<текст>]]
При этом, если какой-то из последних параметров не задан, в функцию WritePrivateProfileString передается пустой указатель (0, он же NULL, он же nil). И упомянуть в Readme, что при отсутствии двух последних параметров вся указанная секция будет уничтожена.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

MVV
MVV писал(а):Моя мысль была о том, что для очистки значения параметра вполне можно передавать пустую строку как новое значение. А для удаления - вообще не указывать новое значение.
Сходу так не получится. Дело в том, что сейчас команда, получающая от парсера параметры, не различает - был это пустой параметр или отсутствовал вообще. Конечно, это можно изменить, но не вижу смысла всё усложнять.

В любом случае, считаю более резонным иметь отдельную функцию для удаления - просто во избежание ошибок, в результате которых могут потеряться целые секции. А так мнемонически будет понятно.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

MVV писал(а):Кстати, теперь каждый может написать плагин для Autorun и добавить нужные команды. :)
[off]Можно ведь воспользоваться при вызове Autorun и уже написанной утилитой TCFS2 :), если уже её автор добавит туда возможность удалять ключ к уже имеющейся возможности задавать/модифицировать ключи. Тем более что в TCFS2 это можно будет делать в зависимости от значений других ключей. [/off]
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

[off]
sa писал(а):Тем более что в TCFS2 это можно будет делать в зависимости от значений других ключей.
С важной поправкой - только от числовых. Пока, надеюсь.
[/off]
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Дело в том, что сейчас команда, получающая от парсера параметры, не различает - был это пустой параметр или отсутствовал вообще.
Параметры просто как String передаются, да? Тогда да, разницу не почувствуешь. С другой стороны, можно ввести некую константную строку, которая будет обозначать отсутствие параметра - например, строку из единственного символа chr(26) (т.е. символа конца текстового файла). А ещё мысль - добавить флаги для команды (которые указываются перед параметрами). Например, /D для удаления параметра и /DS для удаления секции - а уже функция будет разбираться, передавать nil или указатели на строки.

[off]Я, конечно, всё понимаю, но если вы мне поясните, какое отношение имеет функция удаления ключей INI к переключению тотала в полноэкранный режим (не здесь, разумеется, а в теме про TCFS2), тогда можно будет вести разговор об уместности функции в TCFS2.[/off]

Кстати, тут есть миниатюрная утилита для работы с INI из командной строки - удалять секции целиком умеет.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

[off]
MVV писал(а): но если вы мне поясните, какое отношение имеет функция удаления ключей INI к переключению тотала в полноэкранный режим
К переключению ТС в полноэкранный режим эта функция никакого отношения не имеет, как и ряд других
функций/команд ТСFS2. Так что и объяснять нечего. :)
В любом случае без обработки текстовых полей от этой функции для меня не будет ровным счётом никакого толку.
[off]

За сайт спасибо. Несколько полезных вещей обнаружил. :)
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

MVV
Всё, конечно, можно сделать и так. Вопрос - зачем? Ну ладно, майкрософт использовала для записи и удаления единую функцию WritePrivateProfileString, зачем эту нелогичность дальше-то тянуть? :) Все же в моем понимании запись и удаление - это довольно разные вещи.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

В принципе, согласен. Тогда добавить команду IniDelete с двумя параметрами - обязательным именем секции и необязательным именем параметра. :)
Аватара пользователя
Andrey_A
Сообщения: 394
Зарегистрирован: Пт апр 10, 2009 06:28
Откуда: Сочи
Контактная информация:

Сообщение Andrey_A »

Спасибо автору за плагин. Недавно подключил функционал Autorun_HideMenu.dll. Очень понравился. Появилось несколько вопросов и просьб, если конечно утилита развивается...
1. Хотелось бы иметь возможность подключать параллельно главному меню ещё одно меню. Как известно меню имеет ограничение в отображении 2000 пользовательских команд. Но даже не достигая этого ограничения, есть достаточно много тем (направлений),которые просто не вмещаются в одну строчку главного меню... даже в две не вмещаются. (файл, вид, навигация, инструменты, архивы, плагины, утилиты, сеть, система, папки, справка... и.т.д)
Если была бы возможность часть главного меню перенести во вспомогательное, которое бы вызывалось в авторане, через HideMenu:
MainMenuTwoPath="%COMMANDER_PATH%\Language\Wcmd_Rus_2.mnu"
ShowMainMenuTwo=65600

2. По поводу отображения меню. Я так полагаю, что это всё делается для увеличения пространства ТС, Можно отображать меню в виде полосы в самом вверху между значком ТС и кнопками (свернуть...)
Изображение
Можно ли это реализовать - не знаю (где-то я видел утилиту, которая прилеплялась к верху)
Или отображать строку доп. меню внизу - чуть выше (F3,F4,А5...)

Есть ещё ряд хотелок, но это в процессе, если конечно это будет кому-то интересно
Serge Yolkin
Сообщения: 664
Зарегистрирован: Сб июл 25, 2009 11:12

Сообщение Serge Yolkin »

У AvantBrowser меню в заголовке окна. Пользуюсь. Удобно. Только, для TC такую фичу лучше бы отдельным плагином/утилитой реализовать. Немного раздражают швейцарские ножички (совпадение родины автора TC и страны-производителя ножичков - случайно).
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Andrey_A писал(а):Можно ли это реализовать - не знаю (где-то я видел утилиту, которая прилеплялась к верху)
Можно, и эта тема явно для TCFS2. Именно по этой причине она и начинала создаваться по моему запросу. :wink: И плагин HideMenu к этому отношения не имеет. Он создавался для режима FullScreen, т.е. полного убора каких-либо элементов окна ТС кроме файловых панелей.
По поводу дополнительных меню пусть MVV сам откомментирует, боюсь попастся под его горячую.. :D И опять же это должно обсуждаться в этой ветке.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Два главных меню - никак. Контекстных может быть сколько угодно, но кто будет парсить их? В случае с "родным" меню тотала он читает файл меню и создает само меню, а я лишь "скрываю" его. Второе меню же придется обрабатывать целиком и полностью мне, а это чересчур много работы.
Я так полагаю, что это всё делается для увеличения пространства ТС, Можно отображать меню в виде полосы в самом вверху между значком ТС и кнопками (свернуть...)
Куда проще в плане реализации скрыть меню и показывать при необходимости, по хоткею или по кнопке панели инструментов. Потому что главное меню там, где оно у тотала, поддерживается на уровне системы еще с Windows 95, а в любом другом месте - это уже не меню, а лишь его имитация, полностью реализованная программистом.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

MVV писал(а):главное меню там, где оно у тотала, поддерживается на уровне системы еще с Windows 95, а в любом другом месте - это уже не меню, а лишь его имитация, полностью реализованная программистом.
Вот именно этого комментария я и ожидал. :wink:
Аватара пользователя
Andrey_A
Сообщения: 394
Зарегистрирован: Пт апр 10, 2009 06:28
Откуда: Сочи
Контактная информация:

Сообщение Andrey_A »

Serge Yolkin писал(а):Только, для TC такую фичу лучше бы отдельным плагином/утилитой реализовать
Не подскажите у кого попросить, кто бы взялся?
MVV писал(а):Два главных меню - никак. Контекстных может быть сколько угодно
MVV Подскажи, пожалуйста, как ты реализуешь контекстные меню?

По поводу плагина Autorun. Поделитесь опытом, кто что запускает вместе с Totalом? Я понимаю, что ответ может быть один - кто что хочет, то и вносит, но всё же...
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Andrey_A писал(а):Не подскажите у кого попросить, кто бы взялся?
У нас только один тут такой "швейцарский ножичек", имя ему TwinKey, только я заранее знаю, что автор за это браться не будет.
Andrey_A писал(а):Подскажи, пожалуйста, как ты реализуешь контекстные меню?
Так он не реализует их. Он пишет, что можно реализовать. А пока только одно. Из ReadMe > TrackMainMenu=65540.
Ответить