ContextMenu plugin

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

Post by Instructor »

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

Fixed: EXPLORER menu recall.


ContextMenu plugin v17.8

Offline
Posts: 330
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: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

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

Offline
Posts: 330
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: 3217
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: 3217
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: 3217
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: 3217
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) это делает само), а в том, чтобы определить текущий шрифт.
Понял. Как ранее говорил - это не жизненно важный вопрос, думал, что оно немного проще устроено и поэтому надеялся реализовать. А нет - и ладно, не меняю же я шрифты каждую минуту :)

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