#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 list; wxString str, lnsep; int cfg = 0; };