mirror of
https://github.com/levinsv/pgadmin3.git
synced 2026-05-15 14:15:49 -06:00
New features TransformText.
В строке замены дабавлены следующие возможности:
1. Добавлена подсветка групп.
Только цвета заданные в настройке "colorGroup" . 13 цветов по умолчанию.
Если использовано больше групп, добавьте цвета в pgadmin3opt.json
2. Добавлены пользовательские группы вида [ ].
Группы (вида \g{n} и []) указанные в квадратных скобках проверяются на пустые значения и
Если они ВСЕ пустые то всё выражение в [] считается пустой строкой.
Скобки могут быть вложенными.
Применяются для того что бы не выводить разделитель для пустой группы.
Например: [\t \g{2}[\t \g{3}]]
3. Добавлена возможность не выводить содержимое группы.
Для этого группу указывают так: \G{n}
Применяется для замены текста на пользовательский.
Например: [and not null\G{2}]
Этот фрагмент выведет "and not null" если группа 2 не пустая иначе ""
4. Разносить текст замены можно на несколько строк.
Переводы строк при замене игнорируются.
Если нужно добавить перевод строк в текст замены нужно явно указать \n\r.
This commit is contained in:
parent
fbc741af9c
commit
feaaf49bc6
2 changed files with 147 additions and 29 deletions
|
|
@ -2,6 +2,17 @@
|
|||
#include "pgAdmin3.h"
|
||||
#include <wx/clipbrd.h>
|
||||
#include "ctl/ctlStyledText.h"
|
||||
enum class eTypeGroup {
|
||||
SIMPLE_TEXT = -1,
|
||||
USER_GROUP_START = -2,
|
||||
USER_GROUP_END = -3
|
||||
};
|
||||
struct interval {
|
||||
size_t start = -1;
|
||||
size_t len = 0;
|
||||
int style = 0;
|
||||
};
|
||||
|
||||
class dlgTransformText :
|
||||
public pgDialog
|
||||
{
|
||||
|
|
@ -29,6 +40,9 @@ private:
|
|||
bool isGroup = false;
|
||||
int nGroup = -1;
|
||||
wxString text;
|
||||
int flags = 0;
|
||||
int start = -1;
|
||||
int len = 0;
|
||||
};
|
||||
wxJSONValue LoadConfig(const wxString confname);
|
||||
void CheckLimits();
|
||||
|
|
@ -38,7 +52,27 @@ private:
|
|||
void SetStyled(ctlStyledText* s);
|
||||
void showNumber(ctlStyledText* text, bool visible);
|
||||
void AppendTextControl(ctlStyledText* ctrl, const wxString appendtext, bool isnewline = false);
|
||||
/// <summary>
|
||||
/// Обработка строки замены и подготовка специальной струкутуры.
|
||||
/// Допустимые спец. комбинации \t \r\ \n
|
||||
/// \g{n} Ссылка на группы wxRegExp n=0..N
|
||||
/// \G{n} Не выводить содержимое группы. Имеет смысл использовать для замены текста группы на свой
|
||||
/// [ ] Пользовальская группа обладающая следующим свойством:
|
||||
/// Если в этой группе присутствуют \g{n} и они все пустые то вся группа [ ] считается пустой
|
||||
/// Пользовательские группы могут быть вложенными.
|
||||
/// </summary>
|
||||
/// <param name="repstr"></param>
|
||||
/// <returns></returns>
|
||||
std::vector<replace_opt> BuildString(const wxString repstr);
|
||||
wxString ReplaceFormatting(
|
||||
const wxString& src,
|
||||
const wxRegEx& r,
|
||||
const std::vector<dlgTransformText::replace_opt> st,
|
||||
int &position,
|
||||
interval m2[],
|
||||
int maxsizeintervalarray,
|
||||
int &currindex,
|
||||
size_t &start_frame);
|
||||
|
||||
wxString src;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue