ContextMenu plugin

Discuss and announce AkelPad plugins
  • Author
  • Message
Offline
Posts: 84
Joined: Fri May 28, 2010 1:28 pm

Post by private_joker »

VladSh wrote: Вы всё ещё пользуете меню "по умолчанию"?
Нет, скорее мне уже давно надоело редактировать меню каждый раз после обновлений, поэтому я использую то, что есть и http://akelpad.sourceforge.net/files/plugs/ContextMenu/
Кстати, последнее неплохо бы смотрелось в AkelUpdater, т.к. не завсегдатаю форума об этом не узнать (а среди пользователей AkelPad'a думаю всяко таких меньше).
Ну и то, что очевидно дюжине человек (т.е. нам) не обязательно очевидно основной массе.

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

Post by VladSh »

private_joker
У меня обновления проги/плагов в основном никак не связано с редактированием меню. Может просто хранить настройки не в реестре, а в ini?

Offline
Posts: 84
Joined: Fri May 28, 2010 1:28 pm

Post by private_joker »

VladSh wrote: У меня обновления проги/плагов в основном никак не связано с редактированием меню.
Если изменяли меню, либо тулбары (получаются кастомные ContextMenu.ini и ToolBar.ini) новые пункты после обновления могут не появится, пока вручную не добавите, либо удалите старые *.ini. По крайней мере я сам наблюдал такое.
Может просто хранить настройки не в реестре, а в ini?
А разве я где-то писал что храню настройки AkelPada в реестре?

Offline
Posts: 767
Joined: Mon Sep 28, 2009 10:03 am
Location: Minsk, Belarus

Post by se7h »

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

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

Post by VladSh »

private_joker
Естественно, новые пункты сами не появятся (с слава небесам!). Зато с каждым изменением версий всё остаётся в целости и сохранности (ничего каждый раз редактировать не нужно), а это важнее; пару новых пунктов (тем более, что они не так часто появляются) можно добавить и самому.

Offline
Posts: 670
Joined: Thu Jun 03, 2010 8:47 am
Location: Сочи, Хоста
Contact:

Post by Andrey_A_A »

Есть Внешний вызов
Call("ContextMenu::Show", 1, "X", "Y", INDEX, "SUBMENU")

где при X=-1 и Y=-1 - это позиция верхнего левого угла окна редактирования
хотелось бы иметь координаты и для других позиций
- позицию нижнего левого угла окна редактирования
- позицию нижнего правого угла окна редактирования
- позицию верхнего правого угла окна редактирования

потому что угадывать позицию где вылетит окно при разных размерах экрана компьютеров невозможно
Лучше если координаты были бы относительны окна редактирования, а не монитора.
0 и 0 - были были позициями верхнего левого угла окна редактирования
-1 и -1 - были бы позициями нижнего правого угла окна редактирования

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

Post by VladSh »

Andrey_A_A wrote:Лучше если координаты были бы относительны окна редактирования, а не монитора.
Предлагал, до сих пор это достаёт...

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

Post by Instructor »

Andrey_A_A
С помощью Scripts плагина вычисляем координаты, где необходимо отобразить меню, и передаем во внешний вызов.

Offline
Posts: 670
Joined: Thu Jun 03, 2010 8:47 am
Location: Сочи, Хоста
Contact:

Post by Andrey_A_A »

С помощью Scripts плагина вычисляем координаты
Instructor
Это как? Чё-то не видел или пропустил, подскажите плиз

С праздником Мира! Внсны! И Труда ... на AkelPad'oм!

Offline
Posts: 176
Joined: Sat Dec 24, 2011 4:05 pm

Post by F. Phoenix »

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

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

Post by Instructor »

Andrey_A_A

Code: Select all

var hWndEdit=AkelPad.GetEditWnd();
var rcEditRect=[];
var oSys=AkelPad.SystemFunction();

GetWindowPos(hWndEdit, 0, rcEditRect);
AkelPad.Call("ContextMenu::Show", 1, "" + rcEditRect.left, "" + (rcEditRect.top + rcEditRect.bottom));

function GetWindowPos(hWnd, hWndOwner, rcRect)
{
  var lpRect;
  var bResult=false;

  //Get rect
  if (lpRect=AkelPad.MemAlloc(16 /*sizeof(RECT)*/))
  {
    if (oSys.Call("user32::GetWindowRect", hWnd, lpRect))
    {
      RectToArray(lpRect, rcRect);
      rcRect.right-=rcRect.left;
      rcRect.bottom-=rcRect.top;

      if (hWndOwner)
        bResult=oSys.Call("user32::ScreenToClient", hWndOwner, lpRect);
      else
        bResult=true;
      rcRect.left=AkelPad.MemRead(lpRect, 3 /*DT_DWORD*/);
      rcRect.top=AkelPad.MemRead(lpRect + 4, 3 /*DT_DWORD*/);
    }
    AkelPad.MemFree(lpRect);
  }
  return bResult;
}

function RectToArray(lpRect, rcRect)
{
  rcRect.left=AkelPad.MemRead(lpRect, 3 /*DT_DWORD*/);
  rcRect.top=AkelPad.MemRead(lpRect + 4, 3 /*DT_DWORD*/);
  rcRect.right=AkelPad.MemRead(lpRect + 8, 3 /*DT_DWORD*/);
  rcRect.bottom=AkelPad.MemRead(lpRect + 12, 3 /*DT_DWORD*/);
  return rcRect;
}

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

Post by Instructor »

Добавлено: поддержка отображения пометок с идентификатором -1. Требуется Coder плагин v9.4 или выше.

Added: support for displaying marks with -1 identifier. Coder plugin v9.4 or higher required.


ContextMenu plugin v12.3

Offline
Posts: 670
Joined: Thu Jun 03, 2010 8:47 am
Location: Сочи, Хоста
Contact:

Post by Andrey_A_A »

Отобразить меню снизу слева
Instructor, спасибо, разобрался!

---------------------------------------
Скрипт я модифицировал в vbs - мне так удобнее - считает нормально все позиции, но в vbs я не могу передать параметры плагину - это пример:

Code: Select all

X = 200
Y = 300
Name = "MENUFOLDERS"

Call AkelPad.Call("ContextMenu::Show", "1", X, Y, "-1", Name)
Это не срабатывает - меню появляется всё, а нужно лишь нужное, и не по координатам, а рядом с курсором.
Обрамлял и в кавычки , к примеру X = Chr(34) & X & Chr(34)
но не срабатывает....
Y и Х - то, что высчитывается в скрипте, "MENUFOLDERS" - передаётся параметром в скрипт.

Offline
Posts: 267
Joined: Mon Mar 12, 2007 3:45 pm

Post by [Yustas.NeO] »

VladSh wrote:Instructor
В ContextMenu (Show) настроен "MARK" {...}, он вызывается с тулбара, но в самом контекстном меню он вызывается по старому, т.е. фактически там дублирующийся с "MARK" код. Скопировал его из тулбара в ContextMenu, но он говорит, что неизвестный метод..
Огромная просьба! Реализуйте пожалуйста метод Menu в этом плаге, по аналогии с ToolBar-плагином.


Добавлено:
В Opera кроме SUBMENU (у нас это метод Menu в тулбаре) есть ещё метод INCLUDE, который вставляет кусок меню не в виде подменюшки, а просто включает пункты, как "простыню".

Пример (как можно было бы сделать с Menu):

Code: Select all

- "Старый пункт меню 1" ...
#<Вставляемое меню как подменю>
{
   - "Вставляемый пункт меню 1" ...
   - "Вставляемый пункт меню 2" ...
}
#</Вставляемое меню как подменю>
- "Старый пункт меню 2" ...
Пример (как можно было бы сделать с Include):

Code: Select all

- "Старый пункт меню 1" ...
#<Вставляемое меню как "простыня">
- "Вставляемый пункт меню 1" ...
- "Вставляемый пункт меню 2" ...
#</Вставляемое меню как "простыня">
- "Старый пункт меню 2" ...
Было бы мегаудобно!

Offline
Posts: 670
Joined: Thu Jun 03, 2010 8:47 am
Location: Сочи, Хоста
Contact:

Post by Andrey_A_A »

Instructor, подскажите как быть
viewtopic.php?p=18076#p18076
Post Reply