pgadmin3/include/utils/align/AlignWrap.h
lsv ffeda8c9b6 Add align option Compat view for All Line mode. Some optimuzation.
Добавлена опция Compat view для All Line режима. В некоторых случаях она делает более красивое выравнивание.
Для примера:
f(iObjId,  1073,'text',null  )  ;
f(iObjId+1,130 ,'te'  ,iObjId)  ;
f(iObjId+2,1   ,'te2' ,iObjId+1);

Исправлено добавление пробелов в конце строки в режиме All Line.
2025-11-11 10:26:39 +05:00

44 lines
1.7 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#pragma once
#include "Item.h"
class AlignWrap {
public:
enum cfg
{
// Выравнивание списка строк можно использовать вместе с FIND_UP_LONG_LINE
// например insert команды с одинаковым перечнем элементов
ALL_LINES = 1,
// выравнивание по длинне первой строки
// все переводы строк начиная со второй строки игнорируются
// удобно для выравнивания списков IN под заданую первой строкой ширину
FIRST_LINE= 2,
// вспомогательный флаг применяется если встречаются случайные короткие строки
// и при помощи этого флага ищутся более длинные строки обработанные ранее
FIND_UP_LONG_LINE=4,
/// Заменить множественные пробелы на один. Выравнивание не производиться.
ONLY_SINGLE_SPACE=8,
/// Более копактный вид имеет смысл для ALL_LINES
COMPACT_VIEW=16
};
AlignWrap() {}
#define CHKCFGPARAM(val,par) ((val & par)==par)
wxString build(wxString & strsrc, int config,wxString linesep);
void Resize(int idx, int newSize);
wxString range_print(int s, int e);
private:
int range_size(int s, int e);
int range_size(int s);
Item parseItem(int &pos, bool &breakline);
int chkspace(int &pos, bool& br);
int find(int s, int e, Item& k);
//
int parserows = 0;
std::vector <Item> list;
wxString str, lnsep;
int cfg = 0;
};