Page 35 of 49

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

Posted: Wed Apr 11, 2012 2:34 pm
by VladSh
private_joker
У меня обновления проги/плагов в основном никак не связано с редактированием меню. Может просто хранить настройки не в реестре, а в ini?

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

Posted: Wed Apr 11, 2012 8:25 pm
by se7h
Infocatcher wrote:Кстати, неплохо бы иметь возможность добавить к меню ссылок обычное контекстное меню без копипаста (а то править неудобно).
сорвал с языка

Posted: Thu Apr 12, 2012 9:12 am
by VladSh
private_joker
Естественно, новые пункты сами не появятся (с слава небесам!). Зато с каждым изменением версий всё остаётся в целости и сохранности (ничего каждый раз редактировать не нужно), а это важнее; пару новых пунктов (тем более, что они не так часто появляются) можно добавить и самому.

Posted: Fri Apr 27, 2012 12:24 pm
by Andrey_A_A
Есть Внешний вызов
Call("ContextMenu::Show", 1, "X", "Y", INDEX, "SUBMENU")

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

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

Posted: Sat Apr 28, 2012 8:21 am
by VladSh
Andrey_A_A wrote:Лучше если координаты были бы относительны окна редактирования, а не монитора.
Предлагал, до сих пор это достаёт...

Posted: Mon Apr 30, 2012 11:54 am
by Instructor
Andrey_A_A
С помощью Scripts плагина вычисляем координаты, где необходимо отобразить меню, и передаем во внешний вызов.

Posted: Mon Apr 30, 2012 12:31 pm
by Andrey_A_A
С помощью Scripts плагина вычисляем координаты
Instructor
Это как? Чё-то не видел или пропустил, подскажите плиз

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

Posted: Tue May 01, 2012 8:47 pm
by F. Phoenix
Предлагаю расширить дириктивы SET-UNSET, чтобы можно было отображать некоторые пункты только для определенных типов файлов (через связь с кодером, например, и его текущей синтаксической темой). Либо, как вариант, вообще добавить возможность указывать этим пунктам скрипты, определяющие их отображаемость для каждого отдельного вызова - тогда уж точно контекстное меню в полном смысле будет оправдывать свое название :)

Posted: Mon May 07, 2012 9:25 am
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;
}

Posted: Mon May 07, 2012 9:29 am
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

Posted: Thu May 17, 2012 3:31 am
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" - передаётся параметром в скрипт.

Posted: Mon May 21, 2012 11:53 am
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" ...
Было бы мегаудобно!

Posted: Tue May 29, 2012 7:25 am
by Andrey_A_A
Instructor, подскажите как быть
viewtopic.php?p=18076#p18076