diff --git a/include/utils/align/AlignWrap.h b/include/utils/align/AlignWrap.h index b4cb171..988c527 100644 --- a/include/utils/align/AlignWrap.h +++ b/include/utils/align/AlignWrap.h @@ -16,7 +16,9 @@ public: // и при помощи этого флага ищутся более длинные строки обработанные ранее FIND_UP_LONG_LINE=4, /// Заменить множественные пробелы на один. Выравнивание не производиться. - ONLY_SINGLE_SPACE=8 + ONLY_SINGLE_SPACE=8, + /// Более копактный вид имеет смысл для ALL_LINES + COMPACT_VIEW=16 }; AlignWrap() {} diff --git a/utils/align/AlignWrap.cpp b/utils/align/AlignWrap.cpp index 5af4258..985c0bf 100644 --- a/utils/align/AlignWrap.cpp +++ b/utils/align/AlignWrap.cpp @@ -56,6 +56,9 @@ wxString AlignWrap::build(wxString& strsrc, int config,wxString linesep) } else { + // + bool iscompact=false; + if (CHKCFGPARAM(cfg, COMPACT_VIEW)) iscompact=true; for (size_t l = 1; l < nline.size() - 1; l++) { @@ -97,17 +100,21 @@ wxString AlignWrap::build(wxString& strsrc, int config,wxString linesep) else { // 4021196,'fffff',( // (4155,'aaaa' - if (size_u > size_c) { // фиксируем верхний - // будем нижний подгонять под верхний - size_u = range_size(index_u); - idxU = index_u; - } - else - if (size_u < size_c) { - size_c = range_size(index_c); - idxC = index_c; + if (iscompact) { + list[idxC].setParent(idxU); + } else { + if (size_u > size_c) { // фиксируем верхний + // будем нижний подгонять под верхний + size_u = range_size(index_u); + idxU = index_u; } - list[idxC].setParent(idxU); + else + if (size_u < size_c) { + size_c = range_size(index_c); + idxC = index_c; + } + list[idxC].setParent(idxU); + } } if (size_u < size_c) { // вырхний короче, его дополняем @@ -378,6 +385,7 @@ int AlignWrap::chkspace(int &pos, bool& br) { pos--; break; } - if (nl < parserows) l++; + // Не будем заменять переводы строк на пробел для ALL_LINES + if (nl < parserows && !CHKCFGPARAM(cfg,ALL_LINES)) l++; return l; } \ No newline at end of file diff --git a/utils/align/Item.cpp b/utils/align/Item.cpp index ca2841d..6f1229c 100644 --- a/utils/align/Item.cpp +++ b/utils/align/Item.cpp @@ -39,9 +39,13 @@ wxString Item::print() { wxString s = wxString::Format("%s", it); wxString r(' ', rs), l(' ', ls); - - s = l + s + r + wxString::Format("%s", comment); + if (br) + s = l + r + s + wxString::Format("%s", comment); // для последнего элемента строки пробелы справа не добавляем + else + s = l + s + r + wxString::Format("%s", comment); +#ifdef _DEBUG std::cout << s; +#endif return s; } const int Item::getMaxSize() {