ContextMenu plugin

Discuss and announce AkelPad plugins
  • Author
  • Message
Offline
Site Admin
Posts: 6417
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

Исправлено: повторный вызов меню EXPLORER.

Fixed: EXPLORER menu recall.


ContextMenu plugin v17.8

Offline
Posts: 351
Joined: Mon Jun 03, 2019 2:33 am

Post by AZJIO »

Можно сделать как то так?

Code: Select all

SET(64, If(`AkelPad.GetFilePath("%f", 4) == "reg"`))
    "Открыть раздел реестра" Exec('"C:\AutoIt3\AutoIt3.exe" "C:\AutoIt3\Tools\JumpRegCMD.au3" "%s"') Icon("C:\AutoIt3\AutoIt3.exe", 0) 
UNSET(64)
Пишет что метод не работает. Аналог %f но для типа файла нет.
Я понимаю что если оно создаётся на старте, то понятно работать не будет.

Offline
Site Admin
Posts: 6417
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

AZJIO
Внутри If все математические и логические операции применимы только к целым числам.

Offline
Posts: 351
Joined: Mon Jun 03, 2019 2:33 am

Post by AZJIO »

будет ли тормозить работу нагромождение меню? То есть много пунктов 300 шт, а будет 1000. Я ведь могу некоторые пункты создать скриптом. Стоит ли овчинка выделки?

Offline
Posts: 5
Joined: Sat Feb 12, 2022 4:34 pm

Post by nothing »

Подскажите, пожалуйста, что нужно прописать, чтобы в меню определялись и отмечались галочкой выбранный шрифт, начертание и размер? И можно ли вообще без помощи скриптов?

Image

Code: Select all

"Шрифт"
 {
  "Размер"
   {
    "8 pt" Font("", 0, 8)
    "9 pt" Font("", 0, 9)
    "10 pt" Font("", 0, 10)
    "11 pt" Font("", 0, 11)
    "12 pt" Font("", 0, 12)
    "13 pt" Font("", 0, 13)
    "14 pt" Font("", 0, 14)
    SEPARATOR
    "Увеличить	Ctrl+Num +" Command(4204)
    "Уменьшить	Ctrl+Num -" Command(4205)
    "Восстановить	Ctrl+Num *" Command(4206)
   }
  "Изменить шрифт..." Command(4201)
  SEPARATOR
  "Обычный" Font("", 1, 0)
  "Курсив" Font("", 3, 0)
  "Жирный" Font("", 2, 0)
  "Жирный курсив" Font("", 4, 0)
  SEPARATOR
  "Consolas" Font("Consolas", 0, 0)
  "Courier Prime" Font("Courier Prime", 0, 0)
  "Cascadia Code" Font("Cascadia Code", 0, 0)
  "Fira Code" Font("Fira Code", 0, 0)
  "IBM Plex Mono" Font("IBM Plex Mono", 0, 0)
  "JetBrains Mono" Font("JetBrains Mono", 0, 0)
  "Liberation Mono" Font("Liberation Mono", 0, 0)
  "PT Mono" Font("PT Mono", 0, 0)
 }

Offline
Posts: 3247
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

nothing wrote:Подскажите, пожалуйста, что нужно прописать, чтобы в меню определялись и отмечались галочкой выбранный шрифт, начертание и размер?
Вы сами же себе и ответили:

Code: Select all

"Шрифт"
{
  "Размер"
  {
    "8 pt" Font("", 0, 8)
;   ...
  }
}

Offline
Posts: 5
Joined: Sat Feb 12, 2022 4:34 pm

Post by nothing »

VladSh
В таком виде выбранные пункты никак не обозначаются, обратите внимание на картинку: в нынешнем виде сверху - без галочек, снизу - как хотелось бы. Предполагаю, что нужно каждую строку упаковать в SET(128) с параметрами, но какими - не понимаю, поэтому и обратился за помощью :wink:

Offline
Posts: 3247
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

nothing
Да. В ContextMenu-Rus.txt гляньте инфу по SET(128) - там скрипт передаётся для вычисления. В данном случае нужно каким-то образом определить размер шрифта, если он совпадает с тем, что в пункте меню, то передавать флаг, который отвечает за галку.
У плагина Fonts отсутствует такой метод, т.е. нужно поискать по форуму, может уже кто-то получал размер шрифта. Если скрипт небольшой, 1-2 строчки, то норм, можно делать, если больше, то возможно меню будет тупить, и я бы не делал эти галки, хоть это и удобно.

Offline
Posts: 5
Joined: Sat Feb 12, 2022 4:34 pm

Post by nothing »

VladSh
В ContextMenu-Rus.txt заглянул в первую очередь, но мало что понял начиная от SET(64), т.к. далёк от кода :( По форуму искал, подобного не нашел. Сборки разные посмотрел, но SET(128) никто не использует. Конечно, это не супер важный вопрос, но если поможете его решить, то было бы здорово.

Offline
Posts: 3247
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

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

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

Offline
Posts: 5
Joined: Sat Feb 12, 2022 4:34 pm

Post by nothing »

VladSh
Благодарю! Оставлю эту затею, и правда не нецелесообразно, хоть и удобно было бы.

Единственное, промелькнула мысль, что в скрипте CaretOptionsSwitch.js при вызове из контекстного меню с параметрами Call("Scripts::Main", 1, "CaretOptionsSwitch.js", "2 %m %i") каким-то образом меняется статус меню (отмечается галочкой), несмотря на то что строка не упакована в SET(128). Возможно, что-то подобное можно реализовать и для шрифтов.

Offline
Posts: 3247
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

nothing
Параметры %m и %i - это передача в вызываемую функцию координат позиции курсора на экране, работает только для тулбаров.

Что-то у меня не получилось заставить CaretOptionsSwitch.js отмечать пункт меню или кнопку тулбара.
Тут сложность не в том, чтобы отметить (ещё и отметку надо будет сохранять в ini скрипта, SET(128) это делает само), а в том, чтобы определить текущий шрифт.

Offline
Posts: 5
Joined: Sat Feb 12, 2022 4:34 pm

Post by nothing »

VladSh wrote:nothing Что-то у меня не получилось заставить CaretOptionsSwitch.js отмечать пункт меню или кнопку тулбара.
Интересно, наверно "минус" в начале строки забыли :) У меня все работает в таком виде:

Code: Select all

-"Отображать активную строку" Call("Scripts::Main", 1, "CaretOptionsSwitch.js", "2 %m %i")
-"Отображать активный столбец" Call("Scripts::Main", 1, "CaretOptionsSwitch.js", "1 %m %i")
-"Выход каретки за края строк" Call("Scripts::Main", 1, "CaretOptionsSwitch.js", "0 %m %i")
VladSh wrote: сложность не в том, чтобы отметить (ещё и отметку надо будет сохранять в ini скрипта, SET(128) это делает само), а в том, чтобы определить текущий шрифт.
Понял. Как ранее говорил - это не жизненно важный вопрос, думал, что оно немного проще устроено и поэтому надеялся реализовать. А нет - и ладно, не меняю же я шрифты каждую минуту :)

И еще раз благодарю за ответы!

Online
Posts: 291
Joined: Mon Jun 20, 2011 8:33 am
Location: Электросталь

Re: ContextMenu plugin

Post by yozhic »

Instructor, если это не лишнее и не слишком трудоёмко, добавьте, пожалуйста, такие возможности.

1. В SET(32) обработку ИЛИ. Чтобы пункт отображался при наличии хотя бы одного из перечисленных файлов.

Для чего это понадобилось? Для более аккуратной работы с вложенными меню (submenu, субменю).
Создано вложенное меню «Статистика», где часть пунктов вызывают плагин Stats, а часть — скрипты. Каждый пункт этого субменю обёрнут в SET(32) для Stats.dll и Scripts.dll, но если ни одного из этих плагинов нет, то и отображать вход в субменю не имеет смысла. Т.е. подразумевается нечто следующее:

Code: Select all

SET(32, Stats.dll ИЛИ Scripts.dll)
  "Statistics" Menu("STATISTICS")
UNSET(32)
Или создано субменю «Открыть с помощью...», в котором перечислено несколько программ для передачи текущего файла. Если ни одной из них нет, чтобы и само меню не отображалось.

Всё это, по идее, можно сделать с помощью скрипта, но тогда надо, чтобы был плагин Scripts. Т.е. получается неполнота, лишняя зависимость.

2. Если текущая вкладка/документ не имеет имени (не сохранена), то нет смысла отображать такие пункты, как «Меню Explorer», «Copy path», «Reveal in Explorer». Но сейчас их никак не скрыть. Точнее можно, но сработает это единожды при старте программы, а при переключении по вкладкам ничего меняться не будет.

Всё сказанное имеет также силу и для плагина Toolbar.
Но если Вы считаете, что это лишняя суета, то ладно, можно и скриптами справиться, а на холостое «Copy path» не обращать внимания. Просто хотелось полноты :)
Post Reply