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"";
@@ -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