QSearch plugin

Discuss and announce AkelPad plugins
  • Author
  • Message
DV
Offline
Posts: 1291
Joined: Thu Nov 16, 2006 11:53 am
Location: Kyiv, Ukraine

Post by DV »

Последние годы я стараюсь минимизировать изменения в GUI. Это связано с тем, что при использовании WinAPI разграничение отношений Model-View приходится делать руками, что в случае плагина QSearch, в котором такое разграничение не было сделано на этапе проектирования, вынуждает переписать много кода. Чего мне не хочется делать. Ведь: 1) всё и так работает; 2) добавление нового функционала/логики происходит быстрее и занимает меньше времени, чем обновление GUI. (С этой точки зрения, идеальный для разработчика подход избран в Sublime Text, где _вообще_ нет GUI для настроек. Это, однако, сказывается на конечных пользователях, которым для элементарного изменения цвета выделенного текста приходится пройти семь кругов ада.)
Выше был приведен макет нового диалога настроек для вида (формата) результатов поиска. Речь идёт об отдельном диалоге настроек, потому что там довольно много конфигурабельных элементов. Почему я не люблю возиться с подобного рода GUI, это потому, что для каждого отдельного элемента нужно руками прописывать все обработчики, плюс ещё играться с размещением элементов. Это только кажется, что там мало, что делать - для примера см. диалог настроек плагина XBrackets: "Source\XBrackets\SettingsDlg.c", 24 кБ кода.

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

Post by yozhic »

DV wrote:для примера см. диалог настроек плагина XBrackets: 24 кБ кода
Понятно почему всё так красиво получилось :)

Только переключатель Line <-> Match only, мне кажется, хорошо бы вынести (или продублировать) поближе, в контекстное меню кнопки, например. Я, к примеру, буду им часто пользоваться.
Last edited by yozhic on Wed Mar 27, 2019 6:35 pm, edited 1 time in total.

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

Post by yozhic »

DV wrote:Это только кажется, что там мало, что делать
Не знаю как выглядят мои хотелки со стороны, но понимание трудоемкости и уважение к чужим силам и времени в них всегда неизменно подразумевались. Я Вам за любое решение благодарен, но еще одно предложение-просьбу внесу (если еще не утомил) :)
Может Вам такой вариант будет небезинтересен/приемлем. Компромиссный, т.е. чтоб и Вам не накладно, и пользователям по-удобней (за всех, естественно, не говорю, но надеюсь, что народ поддержит; ну а нет, так нет). Щелчки мышью при зажатой клавише-модификаторе. Например, если бы можно было щёлкать ЛКМ при зажатом Ctrl (или Alt) по надписи Whole word и менялись бы по кругу режимы Простой->Wildcards->RegExp. Стало бы существенно удобнее (чем через контекстное меню, в котором еще много строк и не сразу выхватываешь нужную), а визуально это уже «заложено» в виде значков в верхнем регистре: Whole word -> Whole word* -> Whole word^. И, по аналогии, если бы можно было щёлкать ЛКМ при зажатом Ctrl (или Alt) по кнопке Найти все и менялись бы по кругу режимы Line <-> Match only. А визуально это можно было бы отобразить символами * и = на самой кнопке.
Last edited by yozhic on Wed Mar 27, 2019 6:36 pm, edited 1 time in total.

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

Post by Infocatcher »

yozhic wrote:Щелчки мышью при зажатой клавише-модификаторе. Например, если бы можно было щёлкать ЛКМ при зажатом Ctrl (или Alt) по надписи Whole word и менялись бы по кругу режимы Простой->Wildcards->RegExp.
Мне кажется, удобнее колесом мыши щелкать, а уже с модификаторами – в качестве дублирующего варианта.

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

Post by yozhic »

Infocatcher wrote:удобнее колесом мыши щелкать
Согласен, на настольной машине очень удобно. А на ноуте с тачпадом уже не сможешь. У меня как раз этот случай: часть времени занимаюсь за настольной машиной, часть – за ноутом.

DV
Offline
Posts: 1291
Joined: Thu Nov 16, 2006 11:53 am
Location: Kyiv, Ukraine

Post by DV »

Сделал для "Word Wrap" переключение режима поиска по Ctrl+LBM, можно на пару и Alt+LBM сделать. Только как дать знать пользователю о такой возможности?

По переключателю Line <-> Match only, продублирую его в диалоге и в меню.

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

Post by yozhic »

DV wrote:можно на пару и Alt+LBM
По мне, так Ctrl достаточно – она же наиболее удобная, т.к. крайняя.
DV wrote:Только как дать знать пользователю о такой возможности?
Может, кратко во всплывающей подсказке второй строкой: Ctrl+LBM switches search modes (Ctrl+ЛКМ переключает режимы поиска)? Хотя, наверное, это и не очень информативно, и может кому-то показаться громоздким, но зато способно напомнить о том что функционал имеется, либо подвигнуть к мысли открыть справку и прочитать что же всё это значит. А в справке (ReadMe) уже поподробней, что да как.

DV
Offline
Posts: 1291
Joined: Thu Nov 16, 2006 11:53 am
Location: Kyiv, Ukraine

Post by DV »

Новая версия на пробу:
https://github.com/d0vgan/AkelPad-Plugs ... 63c-190407
Включает в себя новый диалог настроек отображения результатов поиска, пока только с английским текстом, без перевода. Название диалога и какие-то элементы, возможно, могут иметь более удачные названия.
Не забываем, что в настройках плагина ("QSearch.ini") следует указать

Code: Select all

new_ui=2

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

Post by yozhic »

DV wrote:Новая версия на пробу
Красота :)
Но вот что замечено. Стандартный диалог Поиск/Замена этой регуляркой захватывает всю строку от начала до \n.

Code: Select all

(?-s)^(?!\t|\n|#|\x20|\{\{).+
А плагин этой же регуляркой захватывает только первую букву строки. Так и должно быть?

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

Post by Infocatcher »

DV wrote:Новая версия на пробу:
https://github.com/d0vgan/AkelPad-Plugs ... 63c-190407
Включает в себя новый диалог настроек отображения результатов поиска, пока только с английским текстом, без перевода.
Пожелания и предложения.
В контекстном меню «Search results format...», как мне кажется, нагляднее заменить на «Search options...» (и можно отделить этот пункт разделителем).
И в самом окне настроек заголовок можно тоже по аналоги: QSearch - Find All - Search options.
По расположению есть предложение сделать что-то такое, чтобы было как в итоговой выдаче:

Code: Select all

[v] Header: …
[v] Position  [v] Length (*) Whole line ( ) Match only
[v] Footer: …

[v] Apply the color scheme
Первая идея была – сделать (*) Whole line ( ) Match only в одну строку, но потом подумалось, что в логическом порядке нагляднее.

И насчет «Сл. целиком», конечно, все же хотелось бы поддержку клика колёсиком.

Как бы там ни было, удобная штука выходит, спасибо!

DV
Offline
Posts: 1291
Joined: Thu Nov 16, 2006 11:53 am
Location: Kyiv, Ukraine

Post by DV »

yozhic wrote:Стандартный диалог Поиск/Замена этой регуляркой захватывает всю строку от начала до \n.

Code: Select all

(?-s)^(?!\t|\n|#|\x20|\{\{).+
Это настройка 'adj_incompl_regexp'.
Когда она активна, обычное поведение регулярного выражения возвращается добавлением ещё одного '+' в конец. (Сейчас это полуофициальное решение, работающее только тому, что AkelPad позволяет указывать регулярки типа "x++". В новой версии QSearch плагин будет сам отсекать последний символ "+" перед передачей в AkelPad).

DV
Offline
Posts: 1291
Joined: Thu Nov 16, 2006 11:53 am
Location: Kyiv, Ukraine

Post by DV »

Infocatcher wrote:В контекстном меню «Search results format...», как мне кажется, нагляднее заменить на «Search options...»
Или "More options..."
Infocatcher wrote:

Code: Select all

[v] Header: …
[v] Position  [v] Length (*) Whole line ( ) Match only
[v] Footer: …
Пока остановился на вертикальном варианте - он дает более широкие (почти каламбур!) возможности для перевода строк.
Infocatcher wrote:И насчет «Сл. целиком», конечно, все же хотелось бы поддержку клика колёсиком.
OK. (Небольшой нюанс: как оказалось, при нажатии Ctrl+MButton уже показанное контекстное меню не исчезает, в отличие от Ctrl+LButton).

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

Post by yozhic »

DV wrote:Это настройка 'adj_incompl_regexp'.
Ого, спасибо, всё понятно. Я не менял этот ключик, значит по умолчанию там 1. А может быть лучше сделать умолчательное значение 2? Только потому, что
Справка wrote:Квантификаторы регулярных выражений (*, +, {n,}) являются по умолчанию жадными.
DV wrote:Или "More options..."
Или "Output options..." (Настройка вывода...) Тем более, что слово Output уже присутствует в наименованиях: Find all: Log output, Find all: File output. И, да, сепаратором эту строчку хорошо бы сверху отбить.
DV wrote:как оказалось, при нажатии Ctrl+MButton
Хм... Мне почему-то показалось, что Infocatcher имел в виду просто MButton, без Ctrl.

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

Post by yozhic »

DV
Ого! Только что заметил, что если включен режим регулярок, то при подхвате выделенного текста все метасимволы автоматически экранируются. Вот спасибо, так спасибо, уважили :)

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

Post by Infocatcher »

yozhic wrote:Хм... Мне почему-то показалось, что Infocatcher имел в виду просто MButton, без Ctrl.
Да, именно. Одной рукой чтобы переключать.
Post Reply