Scripts discussion (1)

Discuss and announce AkelPad plugins
Locked
  • Author
  • Message
KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

I have a question.
How in ComboBox or ListBox place text aligned in columns.

Image

If you insert a space between the columns, is resulting like this:

Image

And if a tab like this:

Image

Offline
Posts: 2248
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

KDJ
1. ListBox have special style LBS_USETABSTOPS, which enables LB to handle tab characters as Tab stop markers(and LB_SETTABSTOPS message to set tabstop positions). ComboBox does not have such feature.

2. ComboBox and ListBox are very simple controls, they have not any built-in text formatting and decoration features. But they can delegate painting task outer environment, i.e. to parent window. It is called OwnerDrawn. Both of them have special styles LBS_OWNERDRAWVARIABLE,LBS_OWNERDRAWFIXED for ListBox and CBS_OWNERDRAWVARIABLE,CBS_OWNERDRAWFIXED for ComboBox.
Such CBs and LBs when want to draw its item will ask parent(Dialog or window) for it(for each item), sending special messages WM_MEASUREITEM and WM_DRAWITEM message. WM_MEASUREITEM send by control to determine size of item, and WM_DRAWITEM is request to draw specified item.
Difference between *FIXED style and *VARIABLE style:
In *FIXED-styled control all items are of the same height(width is common, equal to control width), and so WM_MEASUREITEM will be sent once after Control creation.
In *VARIABLE-styled control each item can have its own height, so WM_MEASUREITEM will be sent for each item.
In both cases WM_DRAWITEM will be sent for each item, and handler should (surprise)draw item on its own manner.
For more help see http://bit.ly/jrbNmN
You can see how it works in my SpellCheck plugin(underline style selector is CBS_OWNERDRAWFIXED standard ComboBox and color chooser is BS_OWNERDRAW standart Button).

KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

FeyFre
Many thanks for your extensive explanation.

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

Post by [Yustas.NeO] »

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

Offline
Posts: 2248
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

[Yustas.NeO]
Полно скриптов с "формами" с комбиками в коллекции, берите откуда хотите.

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

Post by [Yustas.NeO] »

Спасибо за помощь

Offline
Posts: 120
Joined: Sat Jan 12, 2008 10:16 am
Location: Shantou, China

numberCount.js by cnnnc v0.6

Post by cnnnc »

NumberCount.js is updated to v0.6.
improved: Speed up.
changed: Multiple controls into one.
added: two custom Esc sequences, \N for number sequence and $1 for original line.
added: a messagebox about how much time is spent by script.
fixed: some bugs.

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

Post by [Yustas.NeO] »

ShiftTabSize.js Version v1.4

Если попытаться выставить размер локальной табуляции в число, меньшее единицы, то выставится в "8".



заменить

Code: Select all

     AkelPad.SendMessage(hWndEdit, 3240 /*AEM_SETTABSTOP*/, nTabSize, 0); 
на

Code: Select all

     if (nTabSize < 1)
       nTabSize = 1;
     AkelPad.SendMessage(hWndEdit, 3240 /*AEM_SETTABSTOP*/, nTabSize, 0); 
Ну или внести изменения в функцию "AEM_SETTABSTOP" :oops:



P.S.
А так же хотелка.

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

Post by Instructor »

[Yustas.NeO] wrote:Если попытаться выставить размер локальной табуляции в число, меньшее единицы, то выставится в "8".
Изменено.

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

Post by Instructor »

VladSh
Favourites.js wrote:reload AkelPad...
С версии ContextMenu 9.9 можно так написать:

Code: Select all

var bRunning=false;
...

if (AkelPad.IsPluginRunning("ContextMenu::Main"))
{
  //Отключаем плагин.
  AkelPad.Call("ContextMenu::Main", 10);
  bRunning=true;
}

oINI.write(pFavTextParam, pFavFileText);

if (bRunning)
{
  //Включаем плагин.
  AkelPad.Call("ContextMenu::Main", 10);
}

...

Offline
Posts: 1873
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

measuresConverter.js
Added «Information» section (bytes and bits).
Improved redraws when measure type is changed. I'm not sure, but some bugs may happens...
Fixed bugs with next update after update cancellation.
Added -updateOnStartupReport argument.

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

Post by Instructor »

Обновлены TabSwitch.js, ShiftTabSize.js, ShiftMarker.js, OpenSaveMask.js, LinesWrap.js, CodePoster.js, ChmKeyword.js на использование AkelPad.GetArgValue.

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

Post by VladSh »

Instructor wrote:
Favourites.js wrote:reload AkelPad...
...
Спасибо! Так гораздо лучше! :D


Ура! Теперь GetArgValue на борту! 8)


Возвернусь )) к давней просьбе:
GetEditFile(hHandle) - определить имя файла.
hHandle - дескриптор окна редактирования. Если ноль, то используется дескриптор активного окна редактирования.
можно ли сделать так, чтобы при отсутствии параметра, т.е.

Code: Select all

var arrFileNames = GetEditFile();
возвращался бы массив наименований открытых файлов с полными путями?

Частный случай применения: хотелось немного переделать скрипт WinMerge.js, чтобы он, когда открыто 2 файла, не открывал бы диалог, а подхватывал имена и пути их обоих.
Вообще это было бы полезно для скриптов, перебирающих все (или не все) открытые файлы.

Если вообще нагло, то желателен метод, возвращающий массив объектов-структур информации о файле - хотелось бы ещё чего-нибудь знать о файле кроме его имени.. :)

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

Post by Instructor »

VladSh wrote:возвращался бы массив наименований открытых файлов с полными путями?
См. функцию GetFrameList в скрипте TabSwitch.js.

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

Post by VladSh »

Instructor
Спасибо, буду знать.


Коллеги, подскажите, есть ли какая-нибудь команда, которая позволяет быстро возвращать индекс первого вхождения в окне редактирования от текущей позиции курсора, вверх или вниз?
TextFind хорош, но он не подходит тем, что это UI-шная фишка, т.е. производится переброска выделения.
GetTextRange - хороший метод, но с параметрами (-1, -2) он может быть затратен по памяти (на больших файлах).
Т.е. нужен метод, который бы работал в бэкграунде, и брал на анализ текст порциями.. есть такой?
Вот если бы TextFind не перебрасывал выделение, а просто возвращал индекс (дополнительный параметр? :)), хотя и он непонятно, как ищет, весь текст берёт или порциями?..
Locked