diff --git a/ctl/ctlSQLBox.cpp b/ctl/ctlSQLBox.cpp index f5ac994..9a75edb 100644 --- a/ctl/ctlSQLBox.cpp +++ b/ctl/ctlSQLBox.cpp @@ -1145,7 +1145,7 @@ void ctlSQLBox::OnPositionStc(wxStyledTextEvent &event) } } } - // ��������� ������ select + // position select pos=tmp; wxString keyword; wxString ident; diff --git a/frm/frmExport.cpp b/frm/frmExport.cpp index e13a1d9..2da0a47 100644 --- a/frm/frmExport.cpp +++ b/frm/frmExport.cpp @@ -347,7 +347,7 @@ bool frmExport::ExportXls(ctlSQLResult *grid) xmltext=wxT("")+xmltext+wxT(""); break; case PGTYPCLASS_DATE: - //type=wxT("����-��-�� ��:��:��"); + // xmltext=xmltext.BeforeFirst('+'); if (xmltext.Replace(wxT(" "),wxT("T"))==0) { xmltext=wxT("")+xmltext+wxT(""); diff --git a/frm/frmLog.cpp b/frm/frmLog.cpp index 069fdf8..8770d56 100644 --- a/frm/frmLog.cpp +++ b/frm/frmLog.cpp @@ -184,10 +184,10 @@ void frmLog::OnSendMail(wxCommandEvent& event) { bool rez = oObject.GetObject(msg, "CreateItem", 1, n); if (rez) { //oObject.PutProperty("Visible", true); - msg.PutProperty("Subject", "������ "); + msg.PutProperty("Subject", "Error "); msg.PutProperty("BodyFormat", 2); msg.PutProperty("To", to); - //msg.PutProperty("BCC", "������� ����� ���������� ; ������ ����� ����������� "); + // msg.PutProperty("Cc", cc); msg.PutProperty("HTMLBody", html); msg.CallMethod("Display"); diff --git a/frm/frmQuery.cpp b/frm/frmQuery.cpp index 642ef80..041c37b 100644 --- a/frm/frmQuery.cpp +++ b/frm/frmQuery.cpp @@ -2883,7 +2883,7 @@ void frmQuery::SelectQuery() { e=p & 65535; querys=new wxString[1]; querys[0]=sqlQuery->GetTextRange(s, e); - // ������� ������ ������� ����� ��������� + // группы серверов/Серверы/serverN/Datebases/dbname sqlQuery->SetSelection(s,e); } delete [] q; diff --git a/frm/frmReport.cpp b/frm/frmReport.cpp index 96c5634..147be42 100644 --- a/frm/frmReport.cpp +++ b/frm/frmReport.cpp @@ -1322,7 +1322,7 @@ void reportCompareFactory::GetExpandedChildNodes(wxTreeItemId node, wxArrayStrin } //obj->ShowTreeDetail(browser); //obj->ShowTree(parent,browser); - // ���� ���� ������� ������� � ��� ������� �� ��������� + // если надо объекто сложный и сас состоит из коллекций if ((obj->GetMetaType()==PGM_SCHEMA ||obj->GetMetaType()==PGM_DATABASE ||obj->GetMetaType()==PGM_TABLE @@ -1332,8 +1332,8 @@ void reportCompareFactory::GetExpandedChildNodes(wxTreeItemId node, wxArrayStrin //obj->ShowTree(parent,browser); } else { - if (obj->GetMetaType()==PGM_VIEW) obj->ShowTreeDetail(browser); // ������ ��� ���� ����� �������� ���� � ��������� - if (obj->GetMetaType()==PGM_EVENTTRIGGER) // �������� ���� � ��������� �� �������� + if (obj->GetMetaType() == PGM_VIEW) obj->ShowTreeDetail(browser); // только для того чтобы получить инфу о триггерах + if (obj->GetMetaType() == PGM_EVENTTRIGGER) // получаем инфу о тригеррах по событиям obj->ShowTreeDetail(browser); } } @@ -1350,7 +1350,7 @@ void reportCompareFactory::GetExpandedChildNodes(wxTreeItemId node, wxArrayStrin wxTreeItemId Item2 = browser->GetItemParent(obj->GetId()); obj=browser->GetObject(Item2); // Schemes if (obj && obj->GetMetaType()==PGM_SCHEMA&& !obj->IsCollection()) { - rec=false; // �� �������� ���� �� ���. �������� � �������, � �� ������ �� ������� + rec=false; // не собираем инфу по сек. таблицам и секциям, и во внутрь не заходим obj=browser->GetObject(child); obj->ShowTreeDetail(browser); } else obj=browser->GetObject(child); @@ -1375,7 +1375,7 @@ void reportCompareFactory::GetExpandedChildNodes(wxTreeItemId node, wxArrayStrin srcpath.Replace(expandedNodes[1],expandedNodes[3],false); MyHashSQL::iterator it=h_path.find(srcpath); if (h_path.end()==it) { - // �� ������� � ������ �� + // не найдено в первой БД if (s!=wxEmptyString) { sq =new SQL(wxEmptyString,srcpath); @@ -1460,20 +1460,21 @@ wxWindow *reportCompareFactory::StartDialog(frmMain *form, pgObject *obj) p_db=obj->GetServer()->GetDatabaseName(); if (p3<0) { - // ������ ������ + // select server //if (wxMessageBox(wxString::Format("Path = %s ,GetName() = %s, isCollection = %d", // path.c_str(), obj->GetTypeName().c_str(), obj->IsCollection()), _("Close"), wxYES_NO | wxICON_QUESTION) != wxYES) //{ // return 0; //} -//������ ��������/�������/PostgreSQL 9.6 -// ���������� ������ ���������� �������� �� - p_server_obj=path.substr(p2); // � /������N/ +//Группы серверов/Серверы/PostgreSQL 9.6 +// используем первую попавшуюся открытую БД + p_server_obj = path.substr(p2); // с /серверN/ - } else + } + else { -// ������ ��������/�������/PostgreSQL 9.6/���� ������/postgres - p_server_obj=path.substr(p2,p3-p2); // � /������N/ + // Группы серверов/Серверы/PostgreSQL 9.6/Базы данных/postgres + p_server_obj=path.substr(p2,p3-p2); // � /������N/ } wxString p_db_replace=_("Databases")+"/"+p_db+"/"; wxString p_server_replace=_("Servers")+p_server_obj; @@ -1497,14 +1498,14 @@ wxString trg_server_replace; { trg_server_replace=browser->GetItemText(server->GetId()).BeforeFirst('(').Trim(); if (srvitem!=server->GetId() && server->GetConnected()) { - // ���� ���������� �� ����� ����� ������ � �������� + // наше соединение не нужно нужно другое и активное pgCollection *coll = browser->FindCollection(databaseFactory, server->GetId()); if (coll) { treeObjectIterator dbs(browser, coll); while ((db = (pgDatabase *)dbs.GetNextObject()) != 0) { - // ���� �������� �� + // есть открытая БД lastdb=db; if (db->GetConnected()) { @@ -1535,15 +1536,15 @@ if (lastdb!=NULL) { newpath.Replace(p_server_replace,trg_server_replace,false); newpath.Replace(p_db_replace,trg_db_replace,false); if (!parent->SetCurrentNode(parent->GetBrowser()->GetRootItem(),newpath)) { - msg.Printf("�� ������� ����� ������ %s � ������ ��.",newpath); + msg.Printf("Not found object %s in other DB.",newpath); wxMessageBox(msg, _("Error"), wxOK | wxICON_INFORMATION); return 0; } trgobj=browser->GetObject(browser->GetSelection()); } else { - msg="��� ������ ������������� ���������� , ��������� �� ��������."; -// msg.Printf("� ������������� ���������� %s, ��� ���������� ��.",browser->GetItemText(lastdb->GetServer()->GetId()).BeforeFirst('(').Trim()); + msg="Not open connecting, compare stop."; + // msg.Printf("В установленном соединении %s, нет подходящих БД.",browser->GetItemText(lastdb->GetServer()->GetId()).BeforeFirst('(').Trim()); wxMessageBox(msg, _("Error"), wxOK | wxICON_INFORMATION); return 0; } @@ -1556,7 +1557,7 @@ time_t timer=wxDateTime::GetTimeNow(); wxWindowDisabler disableAll; { #ifndef DEBUG - wxBusyInfo waiting(wxString::Format(" ����� �������� �� Path = %s ,��������� ������ = %s", + wxBusyInfo waiting(wxString::Format(" Reading source DB Path = %s ,Start object = %s", browser->GetItemText(obj->GetServer()->GetId()).c_str(), obj->GetName().c_str(),parent)); // Give the UI a chance to redraw wxSafeYield(); @@ -1576,7 +1577,7 @@ wxSafeYield(); // return 0; { - wxBusyInfo waiting(wxString::Format(" ����� ������ �� Path = %s\n��������� ������ = %s", + wxBusyInfo waiting(wxString::Format(" Reading target DB Path = %s\n, Start object = %s", browser->GetItemText(trgobj->GetId()).c_str(), trgobj->GetName().c_str(),parent)); // Give the UI a chance to redraw wxSafeYield(); @@ -1695,7 +1696,7 @@ MyListSql::iterator iter2; } // { - wxBusyInfo waiting(wxString::Format(" ����� �������� ...",0)); + wxBusyInfo waiting(wxString::Format(" Search for differences ...",0)); // Give the UI a chance to redraw wxSafeYield(); wxMilliSleep(50); @@ -1781,14 +1782,14 @@ std::wstring reportCompareFactory::printdiff(std::wstring str1, std::wstring str std::wstring t; std::wstring tableline; int rline=1,lline=1; - std::list::const_iterator it; // ��������� �������� - it = diffs.begin(); // ����������� ��� ������ ������ + std::list::const_iterator it; // объявляем итератор + it = diffs.begin(); // присваиваем ему начало списка Diff aDiff; - bool modify=false; - bool oneline=false; - nstart=0; - while (it != diffs.end()) // ���� �������� �� ��������� ����� - { + bool modify = false; + bool oneline = false; + nstart = 0; + while (it != diffs.end()) // пока итератор не достигнет конца + { aDiff=*it; tex=aDiff.text; nstart=0; @@ -1796,18 +1797,20 @@ std::wstring reportCompareFactory::printdiff(std::wstring str1, std::wstring str pos=tex.find('\n',nstart); if (pos==-1) {t.assign(tex,nstart,tex.length());nstart=tex.length();} else {t.assign(tex,nstart,pos-nstart);nstart=pos;} if (t.length()>0) { - // ��� �� ��� ���� ������ - if (aDiff.operation==Operation::INSERT) cur_r+=L""+t+L""; - if (aDiff.operation==Operation::DELETE) cur_l+=L""+t+L""; - if (aDiff.operation==Operation::EQUAL) { - cur_r+=t; - cur_l+=t; - } else modify=true; - // ���� �� �������� ������� ������ ������� ��� ��� �� ���� ������ - oneline=true; - } else + // это всё ещё одна строка + if (aDiff.operation == Operation::INSERT) cur_r += L"" + t + L""; + if (aDiff.operation == Operation::DELETE) cur_l += L"" + t + L""; + if (aDiff.operation == Operation::EQUAL) { + cur_r += t; + cur_l += t; + } + else modify = true; + // пока не встретим перевод строки считаем что это всё одна строка + oneline = true; + } + else { - // ����� �� �������� \n + // дошли до перевода \n nstart=pos+1; ncur_l=std::to_wstring(lline); ncur_l=L""; ncur_r=L""; @@ -1835,7 +1838,7 @@ std::wstring reportCompareFactory::printdiff(std::wstring str1, std::wstring str // if (( (ncur_r.empty()&&(!ncur_l.empty())) // ||(ncur_l.empty()&&(!ncur_r.empty())) // )&&(!modify)) modify=true; - // ��������� ������� + // create columns //left tableline+=L""; tableline+= modify ? L""+ncur_l+"" : L""+ncur_l+""; @@ -1863,7 +1866,7 @@ std::wstring reportCompareFactory::printdiff(std::wstring str1, std::wstring str modify=false; oneline=false; } - } // ���� �� ������� ������ ������ Diff + } // цикл по строкам внутри одного Diff ++it; } #ifdef _DEBUG @@ -1877,7 +1880,7 @@ std::wstring reportCompareFactory::printdiff(std::wstring str1, std::wstring str } wxString report; - report.Append(wxString::Format(" �������\n%s\n",tableline)); + report.Append(wxString::Format(" Table\n%s\n",tableline)); file.Write(report, wxConvUTF8); file.Close(); @@ -1903,10 +1906,10 @@ wxString reportCompareFactory::printlvl(int element,int lvl,ArraySQL &list, wxHa wxString tid=wxString::Format("id%d",e); wxString rlist=HtmlEntities(name); wxString cdiff=wxEmptyString; - // ������� �������� - countdiffline=0; - if (sq.sql.length()+sq.sql2.length()>0) { - // ��� ���������� ������� ������� ����������� + // таблица различий + countdiffline = 0; + if (sq.sql.length() + sq.sql2.length() > 0) { + // для одинаковых не будем таблицу формировать std::wstring t1=sq.sql.wc_str(); std::wstring t2(sq.sql2.wc_str()); t1.erase(std::remove(t1.begin(), t1.end(), '\r'), t1.end()); @@ -1929,7 +1932,7 @@ wxString reportCompareFactory::printlvl(int element,int lvl,ArraySQL &list, wxHa } } - // ������ �������� + // список объектов child=(wxArrayInt *)htab.Get(key); r=rowlist; r.Replace("$rowlist$",rlist+cdiff); diff --git a/include/log/Storage.h b/include/log/Storage.h index 37f7420..27d1eca 100644 --- a/include/log/Storage.h +++ b/include/log/Storage.h @@ -99,10 +99,10 @@ public: rowsignore = 0; }; wxColor& GetBgColorLine(int row); - // ��������� ������� �� ������� + // установка фильтра на колонку int SetFilter(int colfld, wxString& val, int flags); - // ��������� ������ ��� ������ ��� ��� ��� ����� ��������� - // true ���� ������ �� ��������������� (�����) + // приминить фильтр для строки или для все строк хранилища + // true если строка не отфильтровалась (видна) bool ApplyFilter(int row = -1); int SetFilterArray(std::deque arr); wxString getStrGroup(wxString source); @@ -148,7 +148,7 @@ public: void removeFilter(wxString FilterName); int getLastRowIndex() { return m_cacheIndex; } - // ����� ����� � ��������� + // всего строк в хранилище int getCountStore(); int getCountFilter(); int getCountGroup(int row); @@ -173,9 +173,9 @@ private: wxArrayInt fCol; wxArrayInt fFlags; wxArrayString fVal; - // ������� ������. + // признак ошибок. bool err_msg; - // ����� ����������� + // режим группировки bool groupFilterUse = false; bool faddgroup = false; int prevRow = -1; diff --git a/include/pgAdmin3.h b/include/pgAdmin3.h index 1455d4f..463ab21 100644 --- a/include/pgAdmin3.h +++ b/include/pgAdmin3.h @@ -11,7 +11,9 @@ #ifndef PGADMIN3_H #define PGADMIN3_H - +#ifdef WIN32 +#include "../utils/diff_match_patch.h" +#endif // wxWindows headers #include diff --git a/include/pro_scheduler/pgproJob.h b/include/pro_scheduler/pgproJob.h index c835799..05e0316 100644 --- a/include/pro_scheduler/pgproJob.h +++ b/include/pro_scheduler/pgproJob.h @@ -94,7 +94,7 @@ public: _mon[j] = true; } } - // �������� ������ ���������� �������� ��� -1 ���� ��� ��� ���. + // получить индекс следующего элемента или -1 если его уже нет. int getnext(bool array[],int len,int pos, int direct) { //int len = sizeof(array) / sizeof(array[0]); int mi = pos; @@ -111,10 +111,10 @@ public: } } while (!array[mi]); - // ���������� -1 ���� ��� ���������� ��������. + // возвращает -1 если нет слудующего элемента. return mi; } - // �������� ������ ������/��������� �������� + // получить индекс первый/последний элемента int getfirst(bool array[], int len, int direct) { int mi = -1; if (direct == -1) mi = len ; @@ -166,7 +166,7 @@ public: } else d = nextp; // day next - // �������� ������������ wdays + // проверим соответствие wdays wxDateTime tmp((wxDateTime::wxDateTime_t) d + 1, (wxDateTime::Month) mon, y, (wxDateTime::wxDateTime_t)h, (wxDateTime::wxDateTime_t)mi); novalid = !tmp.IsValid(); wd = tmp.GetWeekDay(); diff --git a/pgAdmin3.vcxproj b/pgAdmin3.vcxproj index f53b7fe..b4d007c 100644 --- a/pgAdmin3.vcxproj +++ b/pgAdmin3.vcxproj @@ -232,7 +232,7 @@ MaxSpeed AnySuitable - $(OPENSSL)/include;$(WXWIN)/lib/vc_dll/mswu/;$(WXWIN)/include;$(WXWIN)/contrib/include;$(PGDIR)/include;$(PGBUILD)/include/;$(PGBUILD)/libxml2/include/;$(PGBUILD)/libxslt/include/;$(PGBUILD)/iconv/include/;$(PROJECTDIR)/include;$(PGDIR)/include/server;$(PROJECTDIR)/include/libssh2;$(PROJECTDIR)/include/libssh2/Win32;%(AdditionalIncludeDirectories) + $(OPENSSL)/include;$(WXWIN)/lib/vc_dll/mswu/;$(WXWIN)/include;$(WXWIN)/contrib/include;$(PGDIR)/include;$(PGBUILD)/include/;$(PGBUILD)/libxml2/include/;$(PGBUILD)/libxslt/include/;$(PGBUILD)/iconv/include/;$(PROJECTDIR)/include;$(PGDIR)/include/server;$(PROJECTDIR);$(PROJECTDIR)/include/libssh2;$(PROJECTDIR)/include/libssh2/Win32;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE=1;HAVE_OPENSSL_CRYPTO;LIBSSH2_OPENSSL;NDEBUG;WIN32;_WINDOWS;__WINDOWS__;__WIN95__;__WIN32__;WINVER=0x0400;STRICT;__WXMSW__;WXUSINGDLL;wxUSE_UNICODE=1;UNICODE;EMBED_XRC;PG_SSL;HAVE_CONNINFO_PARSE;%(PreprocessorDefinitions) true MultiThreadedDLL @@ -1010,7 +1010,13 @@ - + + NotUsing + + + + + diff --git a/schema/pgObject.cpp b/schema/pgObject.cpp index f023d02..86af4e7 100644 --- a/schema/pgObject.cpp +++ b/schema/pgObject.cpp @@ -2101,7 +2101,7 @@ wxString pgObject::GetSqlReCreate(frmMain *form, pgObject *obj) wxString line; ctlTree *browser=form->GetBrowser(); wxString databasePath = form->GetNodePath(obj->GetDatabase()->GetId()); -// ��������� ������� � �� ���� ��� ����������� ����� ������������ + // получение правила и от него уже зависимости будем раскручивать int colcount = 0; pgSetIterator set(GetConnection(), wxT("WITH RECURSIVE t(lvl,classid,objid,type_child) AS (\n") @@ -2266,7 +2266,7 @@ if (1==0) { } } if ( id.IsOk() ) { - // ������ ������ ������ + // найден нужный элемнт pgObject *db=(pgTable *) browser->GetItemData(id); if (kind=='r') { // "table constraint" @@ -2291,7 +2291,7 @@ if (1==0) { } } else { - // �� ������ � ������ ������� � ��������� ������ + // не найдет в дереве элемент с указанным именем } findobj=findobj+table+wxT(".")+refname+wxT(","); @@ -2330,6 +2330,6 @@ if (1==0) { } - sql+=dropblock+wxT("\n\n\n")+wxT("-- )\n")+createblock; + sql+=dropblock+wxT("\n\n\n")+wxT("-- Create depends objects (reverse order))\n")+createblock; return sql; } diff --git a/utils/diff_match_patch.cc b/utils/diff_match_patch.cc index 133f53b..d9b7f09 100644 --- a/utils/diff_match_patch.cc +++ b/utils/diff_match_patch.cc @@ -20,7 +20,13 @@ * http://code.google.com/p/google-diff-match-patch/ */ +// this line need comment for Linux +#include "pgadmin3.h" +#ifndef __WXMSW__ #include "utils/diff_match_patch.h" +#endif + + typedef std::wstring_convert, wchar_t> UnicodeEncoder; diff --git a/utils/diff_match_patch.h b/utils/diff_match_patch.h index c8867d4..45e0ae9 100644 --- a/utils/diff_match_patch.h +++ b/utils/diff_match_patch.h @@ -19,11 +19,6 @@ * Diff Match and Patch * http://code.google.com/p/google-diff-match-patch/ */ -#if WIN32 -#include "pgadmin3.h" -#else -//#include "pgAdmin3.h" -#endif #ifndef DIFF_MATCH_PATCH_H_ #define DIFF_MATCH_PATCH_H_ diff --git a/utils/log/MyDataViewCtrl.cpp b/utils/log/MyDataViewCtrl.cpp index 4b74912..faf0ef5 100644 --- a/utils/log/MyDataViewCtrl.cpp +++ b/utils/log/MyDataViewCtrl.cpp @@ -377,7 +377,7 @@ void MyDataViewCtrl::OnEVT_DATAVIEW_CONTEXT_MENU(wxCommandEvent& event) { } } -// ������ ������ �� ������ +// правая кнопка на ячейке void MyDataViewCtrl::OnContextMenu(wxDataViewEvent& event) { //wxString title = m_music_model->GetTitle(event.GetItem()); //wxLogMessage("wxEVT_DATAVIEW_ITEM_CONTEXT_MENU, Item: %s", title); diff --git a/utils/log/Storage.cpp b/utils/log/Storage.cpp index 0534754..67ae744 100644 --- a/utils/log/Storage.cpp +++ b/utils/log/Storage.cpp @@ -223,7 +223,7 @@ void Storage::DropColFilter(int index) { fVal.RemoveAt(index); fFlags.RemoveAt(index); } - // ���������� ������� ����� ��������� �� ����� storage + // оставшиеся фильтры будут применены по всему storage frows.clear(); } wxString Storage::GetStringFilterExpr(int positionArrayFilter,bool addNumCol) { @@ -267,18 +267,18 @@ bool Storage::CompareFilterLine(int row, bool filter) { return false; } } - // ���������� ������ ������ ���� ��� ����� ����� ������� + // Показываем строку только если она стала новой группой if (IsGroupFilter()) { - // ���� ��������� �� ����������� ������ �� ������ �������� + // если проверяем не добавленную строку то никаих проверок if (filter) return true; - // � ��������� ������ ����� ������ �� ���������� + // в детальном режиме новые группы не показываем if (faddgroup && detailGroup != -1) return false; - // ���� ��� �� ��������� ���������� �� ���� �� ���������� + // Если это не детальная информация то тоже не показываем if (detailGroup != -1 && detailGroup == prevRow && !filter) { - // ����� ������ �������� � ��������� ������ - // ������� ������� �� ����� ������ + // новая строка попадает в детальную группу + // сдвинем вершину на новую строку detailGroup = row; return true; } @@ -288,7 +288,7 @@ if (!faddgroup) return false; } return true; } -//����� ������ �� �� ��������������� +//номер строка из из отфильтрованных void Storage::setDetailGroupRow(int rowGroup) { if (IsGroupFilter()) { // @@ -296,7 +296,7 @@ void Storage::setDetailGroupRow(int rowGroup) { } else detailGroup = -1; } -// ��� ��������� ������ ��������� �� strage (��� �������) +// для указанной строки проверяем из strage (без фильтра) bool Storage::ApplyFilter(int row) { //if (!IsFilter()) return true; if (row != -1) { @@ -310,9 +310,9 @@ bool Storage::ApplyFilter(int row) { } if (detailGroup != -1) return false; if (IsGroupFilter()) { - // ��������� � ������� ����� �� ����� + // подменить в фильтре строк на новую for (int i = 0; i < frows.size(); i++) { - // ��� ������������� �������� ������������������ + // тут потенциальная проблема производительности if (frows[i] != prevRow) continue; frows[i] = row; return false; @@ -327,7 +327,7 @@ bool Storage::ApplyFilter(int row) { bool f = false; faddgroup = true; if (IsGroupFilter()) { - // ��� ���������� GroupFilter ������� ������ ������ hashKeyToRow + // при включенном GroupFilter смотрим только строки hashKeyToRow frows.clear(); MyHashToRow::iterator it; for (it = hashKeyToRow.begin(); it != hashKeyToRow.end(); ++it) @@ -354,7 +354,7 @@ bool Storage::ApplyFilter(int row) { } if (frows.size() > 0) { - // ����� ������� ��������� ������������ ��������������� ������ ��� ��� + // набор фильтра изменился перепроверим отфильтрованные строки ещё раз std::deque tmp; for (int i = 0; i < frows.size(); i++) { if (CompareFilterLine(i, true)) { @@ -369,7 +369,7 @@ bool Storage::ApplyFilter(int row) { } else { - // ����� ������������� ����� ������ �������� ��� ������ �� ������������ ������� + // набор фильтроывнных строк пустой проверим все строки на соответствие фильтру for (int i = 0; i < storage.size(); i++) { if (CompareFilterLine(i, false)) { frows.push_back(i); @@ -582,7 +582,7 @@ Line Storage::getLineParse(const wxString& str, bool csv) { } return st; } -// ��������� ���������� �������� ������ +// получение обобщенной ключевой строки wxString Storage::getStrGroup(wxString source) { int i = 0; int l = source.Length(); diff --git a/x64/Release_(3.0)/pgAdmin3.exe b/x64/Release_(3.0)/pgAdmin3.exe index b84c29d..aa9826b 100644 Binary files a/x64/Release_(3.0)/pgAdmin3.exe and b/x64/Release_(3.0)/pgAdmin3.exe differ