diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json index 143ed49..97a8dd1 100644 --- a/.vscode/c_cpp_properties.json +++ b/.vscode/c_cpp_properties.json @@ -7,11 +7,11 @@ "${workspaceFolder}", "/usr/include/libxml2", "/usr/include/pgsql/server", - "/usr/include/wx-3.1" + "/usr/local/include/wx-3.1" ], - "defines": [], - "compilerPath": "/usr/bin/gcc", - "cStandard": "gnu17", + "defines": ["__cplusplus"], + "compilerPath": "/usr/bin/g++", + "cStandard": "c99", "cppStandard": "c++17", "intelliSenseMode": "linux-gcc-x64", "configurationProvider": "ms-vscode.cmake-tools" diff --git a/CMakeLists.txt b/CMakeLists.txt index cdea6e5..ce63f22 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,62 +1,74 @@ cmake_minimum_required(VERSION 3.0.0) -project(pgAdmin3 VERSION 1.24.0) -include_directories(. include) +#set(CMAKE_CXX_SYSROOT_FLAG_CODE "list(APPEND CMAKE_CXX_SOURCE_FILE_EXTENSIONS cc)") +project(pgAdmin3 VERSION 1.26.0) +include_directories(. include include/libssh2 +) add_compile_definitions(WX_PRECOMP) add_compile_definitions(WX_PRECOMP) add_compile_definitions(wxUSE_UNICODE) add_compile_definitions(EMBED_XRC) #add_compile_definitions(EMBED_XRC) +add_compile_options(-Wno-narrowing +) -SET(GCC_COVERAGE_COMPILE_FLAGS "-Wdeprecated-declarations") +#set(CMAKE_CXX_EXTENSIONS OFF) +list(APPEND CMAKE_CXX_SOURCE_FILE_EXTENSIONS c) +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-declarations") +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated") set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) -set(CMAKE_CXX_EXTENSIONS OFF) file(GLOB_RECURSE SOURCES - src/*.c* agent/*.c* ctl/*.c* db/*.c* dd/*.c* debugger/*.c* dlg/*.c* frm/*.c* gqb/*.c* hotdraw/*.c* ogl/*.c* pgscript/*.c* - pro_scheduler/*.c* schema/*.c* slony/*.c* ui/*.c* utils/*.c* + pro_scheduler/*.c* schema/*.c* slony/*.c* ui/xrcDialogs.cpp utils/*.c* ) ########################################################## +find_package(LibXslt REQUIRED) +if(NOT LIBXSLT_FOUND) + message(SEND_ERROR "Failed to find LibXslt") + return() +else() + include_directories(${LIBXSLT_INCLUDE_DIR}) + link_libraries(${LIBXSLT_LIBRARIES}) +endif() find_package(LibXml2 REQUIRED) if(NOT LIBXML2_FOUND) message(SEND_ERROR "Failed to find LibXml2") return() else() include_directories(${LIBXML2_INCLUDE_DIR}) + link_libraries(${LIBXML2_LIBRARIES}) endif() -find_package(wxWidgets REQUIRED) -if(NOT wxWidgets_FOUND) - message(SEND_ERROR "Failed to find wxWidgets") - return() -else() - message(STATUS "wxWidgets_INCLUDE_DIRS=${wxWidgets_INCLUDE_DIRS}" ) - include(${wxWidgets_USE_FILE}) - include_directories(${wxWidgets_INCLUDE_DIRS}) - link_libraries(${wxWidgets_LIBRARIES}) -endif() +find_package(wxWidgets REQUIRED stc aui base net core xrc html xml) + if(NOT wxWidgets_FOUND) + message(SEND_ERROR "Failed to find wxWidgets ") + return() + else() + include(${wxWidgets_USE_FILE}) + include_directories(${wxWidgets_INCLUDE_DIRS}) + link_libraries(${wxWidgets_LIBRARIES}) + endif() + find_package(PostgreSQL REQUIRED) -if(NOT wxWidgets_FOUND) +if(NOT PostgreSQL_FOUND) message(SEND_ERROR "Failed to find PostgreSql") return() else() - include(${wxWidgets_USE_FILE}) include_directories(${PostgreSQL_INCLUDE_DIRS}) include_directories(${PostgreSQL_INCLUDE_DIRS}/server) link_libraries(${PostgreSQL_LIBRARIES}) endif() -#include(CTest) -#enable_testing() add_executable(pgAdmin3 pgAdmin3.cpp ${SOURCES}) +target_precompile_headers(pgAdmin3 PUBLIC include/precomp.h) set(CPACK_PROJECT_NAME ${PROJECT_NAME}) set(CPACK_PROJECT_VERSION ${PROJECT_VERSION}) -#include(CPack) + diff --git a/ctl/ctlMenuToolbar.cpp b/ctl/ctlMenuToolbar.cpp index ed35259..554b3d1 100644 --- a/ctl/ctlMenuToolbar.cpp +++ b/ctl/ctlMenuToolbar.cpp @@ -108,8 +108,15 @@ void ctlMenuButton::DoProcessLeftClick(wxMouseEvent &event) menu_pos.x = 0; menu_pos.y = button_size.GetHeight(); } - + #ifdef WIN32 DoPopupMenu(m_menu, menu_pos.x, menu_pos.y); + #else + wxMenuBar* pMenuBar = winMain->GetMenuBar(); + if(m_menu->IsAttached()) m_menu->Detach(); + PopupMenu(m_menu,wxPoint(menu_pos.x, menu_pos.y)); + m_menu->Attach(pMenuBar); + #endif + } diff --git a/ctl/ctlSQLBox.cpp b/ctl/ctlSQLBox.cpp index 4c98be1..f5ac994 100644 --- a/ctl/ctlSQLBox.cpp +++ b/ctl/ctlSQLBox.cpp @@ -1019,7 +1019,12 @@ long ctlSQLBox::SelectQuery(int startposition) pend=pos; break; } + #ifdef WIN32 int i=IsDBCSLeadByte(ch)? 2 : 1; + #else + int i=1; + if (ch>255) i=2; + #endif pos=pos+i; } @@ -1036,7 +1041,12 @@ long ctlSQLBox::SelectQuery(int startposition) break; } if (ch>' ') pstart=pos; + #ifdef WIN32 int i=IsDBCSLeadByte(ch)? 2 : 1; + #else + int i=1; + if (ch>255) i=2; + #endif pos=pos-i; } @@ -1135,7 +1145,7 @@ void ctlSQLBox::OnPositionStc(wxStyledTextEvent &event) } } } - // получение позици select + // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ select pos=tmp; wxString keyword; wxString ident; @@ -1542,7 +1552,7 @@ CharacterRange ctlSQLBox::RegexFindText(int minPos, int maxPos, const wxString & wxWX2MBbuf buf = text.mb_str(wxConvUTF8); ft.lpstrText = (char *)(const char *)buf; -//не компилировалась с wx 2.8.12 +//пїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅ wx 2.8.12 if (SendMsg(2150, wxSTC_FIND_REGEXP, (long)&ft) == -1) { ft.chrgText.cpMin = -1; diff --git a/ctl/ctlSQLGrid.cpp b/ctl/ctlSQLGrid.cpp index f1feb43..aa7fbed 100644 --- a/ctl/ctlSQLGrid.cpp +++ b/ctl/ctlSQLGrid.cpp @@ -30,7 +30,7 @@ BEGIN_EVENT_TABLE(ctlSQLGrid, wxGrid) EVT_GRID_COL_SIZE(ctlSQLGrid::OnGridColSize) EVT_GRID_LABEL_LEFT_CLICK(ctlSQLGrid::OnLabelClick) EVT_GRID_CELL_RIGHT_CLICK( ctlSQLGrid::OnCellRightClick) - EVT_PAINT( ctlSQLGrid::OnPaint ) + //EVT_PAINT( ctlSQLGrid::OnPaint ) END_EVENT_TABLE() IMPLEMENT_DYNAMIC_CLASS(ctlSQLGrid, wxGrid) diff --git a/dlg/dlgProJob.cpp b/dlg/dlgProJob.cpp index bbb7661..9205cdc 100644 --- a/dlg/dlgProJob.cpp +++ b/dlg/dlgProJob.cpp @@ -135,7 +135,7 @@ int dlgProJob::Go(bool modal) return dlgProperty::Go(modal); } -void fillarray(wxArrayString &arr,wxString &src) +void fillarray(wxArrayString &arr,const wxString &src) { int l = src.Length(); wxUniChar ln = '\n'; @@ -226,7 +226,7 @@ void dlgProJob::CheckChange() } } -wxString dlgProJob::StrAttribute(const wxString &name,wxString &value) +wxString dlgProJob::StrAttribute(const wxString &name,const wxString &value) { wxString tmp = value; //tmp.Replace("\'", "\'\'"); diff --git a/frm/frmExport.cpp b/frm/frmExport.cpp index 16097ee..e13a1d9 100644 --- a/frm/frmExport.cpp +++ b/frm/frmExport.cpp @@ -20,7 +20,9 @@ #include "ctl/ctlSQLResult.h" #include #include +#ifdef WIN32 #include +#endif #define txtFilename CTRL_TEXT("txtFilename") #define btnOK CTRL_BUTTON("wxID_OK") @@ -287,7 +289,6 @@ bool frmExport::ExportXls(ctlSQLResult *grid) colCount = grid->GetNumberCols(); rowCount = grid->NumRows(); line=InitXml(colCount,rowCount+1); - wxAutomationObject excelObject; line += wxT("\n"); for (col = 0 ; col < colCount ; col++) { @@ -346,7 +347,7 @@ bool frmExport::ExportXls(ctlSQLResult *grid) xmltext=wxT("")+xmltext+wxT(""); break; case PGTYPCLASS_DATE: - //type=wxT("ГГГГ-ММ-ДД чч:мм:сс"); + //type=wxT("пїЅпїЅпїЅпїЅ-пїЅпїЅ-пїЅпїЅ пїЅпїЅ:пїЅпїЅ:пїЅпїЅ"); xmltext=xmltext.BeforeFirst('+'); if (xmltext.Replace(wxT(" "),wxT("T"))==0) { xmltext=wxT("")+xmltext+wxT(""); @@ -385,12 +386,15 @@ bool frmExport::ExportXls(ctlSQLResult *grid) ; file.Write(line, wxConvUTF8); file.Close(); +#ifdef WIN32 + wxAutomationObject excelObject; if (excelObject.CreateInstance(wxT("Excel.Application"))) { //excelObject.GetObject(xlbook,wxT("Workbooks.Add")); excelObject.CallMethod(wxT("Workbooks.Open"), fn); excelObject.PutProperty(_T("VISIBLE"), true); return true; } +#endif return false; } diff --git a/frm/frmLog.cpp b/frm/frmLog.cpp index b3155d1..069fdf8 100644 --- a/frm/frmLog.cpp +++ b/frm/frmLog.cpp @@ -26,8 +26,9 @@ #include "utils/utffile.h" #include +#ifdef WIN32 #include - +#endif WX_DEFINE_OBJARRAY(RemoteConnArray2); @@ -171,6 +172,7 @@ void frmLog::OnSendMail(wxCommandEvent& event) { } html.Append(l); } + #ifdef WIN32 wxAutomationObject oObject; if (oObject.GetInstance("Outlook.Application")) { wxAutomationObject msg; @@ -182,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", "пїЅпїЅпїЅпїЅпїЅпїЅ "); msg.PutProperty("BodyFormat", 2); msg.PutProperty("To", to); - //msg.PutProperty("BCC", "Балашов Игорь Николаевич ; Иванов Артем Геннадьевич "); + //msg.PutProperty("BCC", "пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ ; пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ "); msg.PutProperty("Cc", cc); msg.PutProperty("HTMLBody", html); msg.CallMethod("Display"); @@ -193,7 +195,7 @@ void frmLog::OnSendMail(wxCommandEvent& event) { //oObject.PutProperty("ActiveCell.Font.Bold", @true); } - + #endif } } void frmLog::OnFind(wxCommandEvent& event) { diff --git a/frm/frmMain.cpp b/frm/frmMain.cpp index 7466155..43c863e 100644 --- a/frm/frmMain.cpp +++ b/frm/frmMain.cpp @@ -90,7 +90,9 @@ #include "schema/pgCheck.h" #include "schema/pgDomain.h" #include "schema/pgEventTrigger.h" +#ifdef WIN32 #include +#endif #include "utils/utffile.h" #if defined(HAVE_OPENSSL_CRYPTO) || defined(HAVE_GCRYPT) @@ -239,7 +241,9 @@ frmMain::frmMain(const wxString &title) // Load servers RetrieveServers(); - +#ifndef WIN32 + if (!currentObject) currentObject=serversObj; +#endif browser->Expand(root); browser->SortChildren(root); browser->SetFocus(); diff --git a/frm/frmQuery.cpp b/frm/frmQuery.cpp index 3659a3c..642ef80 100644 --- a/frm/frmQuery.cpp +++ b/frm/frmQuery.cpp @@ -98,7 +98,6 @@ // a simple flag will suffice. // Required because the pgScript parser isn't currently thread-safe :-( bool frmQuery::ms_pgScriptRunning = false; - BEGIN_EVENT_TABLE(frmQuery, pgFrame) EVT_ERASE_BACKGROUND( frmQuery::OnEraseBackground) EVT_SIZE( frmQuery::OnSize) @@ -248,7 +247,7 @@ void frmQuery::seticon() wxString str; wxString filename; - wxString tempDir = wxStandardPaths::Get().GetUserConfigDir() + wxT("\\postgresql\\icons\\"); + wxString tempDir = wxStandardPaths::Get().GetUserConfigDir() + wxFileName::GetPathSeparator()+"postgresql"+wxFileName::GetPathSeparator()+"icons"+wxFileName::GetPathSeparator(); wxString db = conn->GetDbname(); wxString host = conn->GetHostName(); @@ -495,7 +494,7 @@ frmQuery::frmQuery(frmMain *form, const wxString &_title, pgConn *_conn, const w mapping["MNU_UNCOMMENT_TEXT"] = MNU_UNCOMMENT_TEXT; mapping["MNU_DOROLLBACK"] = MNU_DOROLLBACK; mapping["MNU_DOCOMMIT"] = MNU_DOCOMMIT; - wxString tempDir = wxStandardPaths::Get().GetUserConfigDir() + wxT("\\postgresql\\keymap.txt"); + wxString tempDir = wxStandardPaths::Get().GetUserConfigDir() +wxFileName::GetPathSeparator()+"postgresql"+wxFileName::GetPathSeparator()+"keymap.txt"; int idx = 0; if (wxFileName::FileExists(tempDir) ) @@ -505,7 +504,11 @@ frmQuery::frmQuery(frmMain *form, const wxString &_title, pgConn *_conn, const w wxString str = ""; filer.Read(str); filer.Close(); + #ifdef WIN32 wxStringTokenizer tk(str, "\n\r", wxTOKEN_DEFAULT); + #else + wxStringTokenizer tk(str, "\n", wxTOKEN_DEFAULT); + #endif int d = 0; while (tk.HasMoreTokens()) { @@ -567,7 +570,7 @@ frmQuery::frmQuery(frmMain *form, const wxString &_title, pgConn *_conn, const w toolBar = new ctlMenuToolbar(this, -1, wxDefaultPosition, wxDefaultSize, wxTB_FLAT | wxTB_NODIVIDER); - toolBar->SetToolBitmapSize(wxSize(16, 16)); + toolBar->SetToolBitmapSize(wxSize(20, 20)); toolBar->AddTool(MNU_NEWSQLTAB, wxEmptyString, *file_new_png_bmp, _("New SQL tab"), wxITEM_NORMAL); toolBar->AddTool(MNU_OPEN, wxEmptyString, *file_open_png_bmp, _("Open file"), wxITEM_NORMAL); @@ -827,11 +830,15 @@ frmQuery::frmQuery(frmMain *form, const wxString &_title, pgConn *_conn, const w // load temp file wxString str; wxString filename; - tempDir = wxStandardPaths::Get().GetUserConfigDir() + wxT("\\postgresql\\recovery\\"); + tempDir = wxStandardPaths::Get().GetUserConfigDir() +wxFileName::GetPathSeparator()+"postgresql"; if (!wxDirExists(tempDir)) { - wxFileName dn = tempDir; - dn.Mkdir(); + wxMkdir(tempDir); } + tempDir=tempDir+wxFileName::GetPathSeparator()+"recovery"+wxFileName::GetPathSeparator(); + if (!wxDirExists(tempDir)) { + wxMkdir(tempDir); + } + wxString pref=_conn->GetDbname(); bool modeUnicode = settings->GetUnicodeFile(); @@ -839,7 +846,7 @@ frmQuery::frmQuery(frmMain *form, const wxString &_title, pgConn *_conn, const w wxString f = wxFindFirstFile(tempDir + wxT("*.a")); while (!f.empty()) { - filename = f.AfterLast('\\').BeforeLast('.'); + filename = f.AfterLast(sepPath).BeforeLast('.'); if (filename.BeforeFirst('.') == "_active") { activePage.Add(filename.AfterFirst('.')); //wxLogInfo(wxT("frmQuery::_active file marker: name=[%s] pref=[%s]"), filename.AfterFirst('.'), pref); @@ -849,8 +856,8 @@ frmQuery::frmQuery(frmMain *form, const wxString &_title, pgConn *_conn, const w f = wxFindFirstFile(tempDir+wxT("*.a")); while ( !f.empty() ) { - filename=f.AfterLast('\\').BeforeLast('.'); - if ((f.AfterLast('\\').StartsWith(pref+wxT("."))||(filename.BeforeLast('.').IsEmpty()))) { + filename=f.AfterLast(sepPath).BeforeLast('.'); + if ((f.AfterLast(sepPath).StartsWith(pref+wxT("."))||(filename.BeforeLast('.').IsEmpty()))) { wxUtfFile file(f, wxFile::read, modeUnicode ? wxFONTENCODING_UTF8 : wxFONTENCODING_DEFAULT); if (file.IsOpened()) { file.Read(str); @@ -874,13 +881,12 @@ frmQuery::frmQuery(frmMain *form, const wxString &_title, pgConn *_conn, const w sqlQuery->EmptyUndoBuffer(); sqlQuery->GotoPos(nl); - wxSafeYield(); // needed to process sqlQuery modify event - //sqlQuery->SetFilename(lastPath); - sqlQuery->SetChanged(true); - //sqlQuery->SetTitle(filename); + //wxSafeYield(); // needed to process sqlQuery modify event + sqlQuery->SetOrigin(ORIGIN_INITIAL); + sqlQuery->SetChanged(false); + setExtendedTitle(); SqlBookUpdatePageTitle(); - //SetLineEndingStyle(); SaveTempFile(); } @@ -2150,7 +2156,8 @@ void frmQuery::OnChangeStc(wxStyledTextEvent &event) { sqlQuery->SetChanged(true); setExtendedTitle(); - SqlBookUpdatePageTitle(); + //SqlBookUpdatePageTitle(); + CallAfter(&frmQuery::SqlBookUpdatePageTitle); } } // do not allow update of model size of GQB on input (key press) of each @@ -2258,8 +2265,7 @@ void frmQuery::OnSummary_Column(wxCommandEvent &ev) SetStatusText(s, STATUSPOS_POS); } } - -void frmQuery::OnPositionStc(wxStyledTextEvent &event) +void frmQuery::DoUpdatePositionStc(const wxStyledTextEvent &event) { int selFrom, selTo, selCount; sqlQuery->GetSelection(&selFrom, &selTo); @@ -2275,6 +2281,11 @@ void frmQuery::OnPositionStc(wxStyledTextEvent &event) else pos.Printf(wxPLURAL("%d char", "%d chars", selCount), selCount); SetStatusText(pos, STATUSPOS_SEL); + +} +void frmQuery::OnPositionStc(wxStyledTextEvent &event) +{ + CallAfter(&frmQuery::DoUpdatePositionStc,event); } @@ -2359,8 +2370,8 @@ void frmQuery::SaveTempFile() wxString pref=conn->GetDbname(); //if (filename.StartsWith(pref)) filename+=wxT(".a"); - wxString tempDir=wxStandardPaths::Get().GetUserConfigDir()+wxT("\\postgresql\\recovery"); - wxUtfFile file(tempDir+wxT("\\")+filename, wxFile::write, modeUnicode ? wxFONTENCODING_UTF8 : wxFONTENCODING_DEFAULT); + wxString tempDir = wxStandardPaths::Get().GetUserConfigDir() +wxFileName::GetPathSeparator()+"postgresql"+wxFileName::GetPathSeparator()+"recovery"+wxFileName::GetPathSeparator(); + wxUtfFile file(tempDir+filename, wxFile::write, modeUnicode ? wxFONTENCODING_UTF8 : wxFONTENCODING_DEFAULT); if (file.IsOpened()) { int nl=sqlQuery->GetCurrentPos(); @@ -2872,7 +2883,7 @@ void frmQuery::SelectQuery() { e=p & 65535; querys=new wxString[1]; querys[0]=sqlQuery->GetTextRange(s, e); - // выделим запрос который будем выполнять + // пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ sqlQuery->SetSelection(s,e); } delete [] q; @@ -4241,8 +4252,8 @@ void frmQuery::SetOutputPaneCaption(bool update) } // Methods related to SQL tabs // -void frmQuery::fileMarkerActive(bool addOrRemove, wxString &sqlTabName) { - wxString tempDir = wxStandardPaths::Get().GetUserConfigDir() + wxT("\\postgresql\\recovery\\"); +void frmQuery::fileMarkerActive(bool addOrRemove, const wxString &sqlTabName) { + wxString tempDir = wxStandardPaths::Get().GetUserConfigDir() +wxFileName::GetPathSeparator()+"postgresql"+wxFileName::GetPathSeparator()+"recovery"+wxFileName::GetPathSeparator(); wxString tabname = sqlTabName; if (sqlTabName.Find("*")>=0) tabname = sqlTabName.BeforeLast('*'); @@ -4413,10 +4424,12 @@ void frmQuery::OnSqlBookTabRDown (wxAuiNotebookEvent &event) { pref, wxOK | wxCANCEL); //setName( dlg.GetValue().wc_str() ); if (dialog.ShowModal() == wxID_OK) { - wxString tempDir=wxStandardPaths::Get().GetUserConfigDir()+wxT("\\postgresql\\recovery\\"); + wxString tempDir = wxStandardPaths::Get().GetUserConfigDir() +wxFileName::GetPathSeparator()+"postgresql"+wxFileName::GetPathSeparator()+"recovery"+wxFileName::GetPathSeparator(); wxString filename=sqlQuery->GetTitle(false); - wxRemoveFile(tempDir+filename+wxT(".a")); - wxRemoveFile(tempDir + "_active."+filename + wxT(".a")); + wxString tf=tempDir+filename+".a"; + if (wxFileName::FileExists(tf)) wxRemoveFile(tf); + tf=tempDir + "_active."+filename + ".a"; + if (wxFileName::FileExists(tf)) wxRemoveFile(tf); wxString nt=dialog.GetValue(); sqlQuery->SetTitle(nt); SqlBookUpdatePageTitle(); @@ -4460,7 +4473,7 @@ void frmQuery::OnSqlBookPageClose(wxAuiNotebookEvent &event) SqlBookDisconnectPage(); //drop temp file - wxString tempDir=wxStandardPaths::Get().GetUserConfigDir()+wxT("\\postgresql\\recovery\\"); + wxString tempDir = wxStandardPaths::Get().GetUserConfigDir() +wxFileName::GetPathSeparator()+"postgresql"+wxFileName::GetPathSeparator()+"recovery"+wxFileName::GetPathSeparator(); wxString filename=sqlQuery->GetTitle(false)+wxT(".a"); if (wxFileName::FileExists(tempDir+filename)) wxRemoveFile(tempDir+filename); fileMarkerActive(false, sqlQuery->GetTitle(false)); @@ -4547,7 +4560,7 @@ bool frmQuery::SqlBookRemovePage() SqlBookDisconnectPage(); pageidx = sqlQueryBook->GetSelection(); - wxString tempDir=wxStandardPaths::Get().GetUserConfigDir()+wxT("\\postgresql\\recovery\\"); + wxString tempDir = wxStandardPaths::Get().GetUserConfigDir() +wxFileName::GetPathSeparator()+"postgresql"+wxFileName::GetPathSeparator()+"recovery"+wxFileName::GetPathSeparator(); ctlSQLBox *box; box = wxDynamicCast(sqlQueryBook->GetPage(pageidx), ctlSQLBox); wxString filename=box->GetTitle(false); diff --git a/frm/frmReport.cpp b/frm/frmReport.cpp index fe0c827..96c5634 100644 --- a/frm/frmReport.cpp +++ b/frm/frmReport.cpp @@ -35,7 +35,7 @@ #include "schema/pgCheck.h" #include "utils/utffile.h" #include - +#include "../utils/diff_match_patch.h" // XML2/XSLT headers #include #include @@ -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); @@ -1442,7 +1442,7 @@ wxWindow *reportCompareFactory::StartDialog(frmMain *form, pgObject *obj) wxTreeItemIdValue foldercookie; wxTreeItemId folderitem = browser->GetFirstChild(browser->GetRootItem(), foldercookie); wxString path(form->GetNodePath(obj->GetId())); - // группы серверов/Серверы/serverN/Datebases/dbname + // пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ/пїЅпїЅпїЅпїЅпїЅпїЅпїЅ/serverN/Datebases/dbname // p1 p2 p3 wxString p_db; int p1=path.Find('/'); @@ -1460,20 +1460,20 @@ wxWindow *reportCompareFactory::StartDialog(frmMain *form, pgObject *obj) p_db=obj->GetServer()->GetDatabaseName(); if (p3<0) { - // выбран сервер + // пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ //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 { -// Группы серверов/Серверы/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 +1497,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 +1535,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("пїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ %s пїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ.",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="пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ , пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ."; +// msg.Printf("пїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ %s, пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ.",browser->GetItemText(lastdb->GetServer()->GetId()).BeforeFirst('(').Trim()); wxMessageBox(msg, _("Error"), wxOK | wxICON_INFORMATION); return 0; } @@ -1556,7 +1556,7 @@ time_t timer=wxDateTime::GetTimeNow(); wxWindowDisabler disableAll; { #ifndef DEBUG - wxBusyInfo waiting(wxString::Format(" Обход исходной БД Path = %s ,Стартовый объект = %s", + wxBusyInfo waiting(wxString::Format(" пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ Path = %s ,пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ = %s", browser->GetItemText(obj->GetServer()->GetId()).c_str(), obj->GetName().c_str(),parent)); // Give the UI a chance to redraw wxSafeYield(); @@ -1576,7 +1576,7 @@ wxSafeYield(); // return 0; { - wxBusyInfo waiting(wxString::Format(" Обход другой БД Path = %s\nСтартовый объект = %s", + wxBusyInfo waiting(wxString::Format(" пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ Path = %s\nпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ = %s", browser->GetItemText(trgobj->GetId()).c_str(), trgobj->GetName().c_str(),parent)); // Give the UI a chance to redraw wxSafeYield(); @@ -1640,7 +1640,7 @@ MyListSql::iterator iter2; tableheader2=wxEmptyString; tableshtml=wxEmptyString; -// Загрузка шаблона +// пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ #ifndef _DEBUG wxString fDir=wxStandardPaths::Get().GetExecutablePath().BeforeLast('\\')+wxT("\\"); #else @@ -1695,7 +1695,7 @@ MyListSql::iterator iter2; } // { - wxBusyInfo waiting(wxString::Format(" Поиск различий ...",0)); + wxBusyInfo waiting(wxString::Format(" пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ ...",0)); // Give the UI a chance to redraw wxSafeYield(); wxMilliSleep(50); @@ -1781,13 +1781,13 @@ 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()) // пока итератор не достигнет конца + while (it != diffs.end()) // пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ { aDiff=*it; tex=aDiff.text; @@ -1796,18 +1796,18 @@ 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 { - // дошли до перевода \n + // пїЅпїЅпїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ \n nstart=pos+1; ncur_l=std::to_wstring(lline); ncur_l=L""; ncur_r=L""; @@ -1835,7 +1835,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; - // формируем колонки + // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ //left tableline+=L""; tableline+= modify ? L""+ncur_l+"" : L""+ncur_l+""; @@ -1863,7 +1863,7 @@ std::wstring reportCompareFactory::printdiff(std::wstring str1, std::wstring str modify=false; oneline=false; } - } // цикл по строкам внутри одного Diff + } // пїЅпїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ Diff ++it; } #ifdef _DEBUG @@ -1877,7 +1877,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(" пїЅпїЅпїЅпїЅпїЅпїЅпїЅ\n%s\n",tableline)); file.Write(report, wxConvUTF8); file.Close(); @@ -1903,10 +1903,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) { - // для одинаковых небудкм таблицу формировать + // пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ 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 +1929,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/frm/frmStatus.cpp b/frm/frmStatus.cpp index 2e35d58..c69e876 100644 --- a/frm/frmStatus.cpp +++ b/frm/frmStatus.cpp @@ -313,7 +313,7 @@ frmStatus::frmStatus(frmMain *form, const wxString &_title, pgConn *conn) : pgFr // Set up toolbar toolBar = new ctlMenuToolbar(this, -1, wxDefaultPosition, wxDefaultSize, wxTB_FLAT | wxTB_NODIVIDER); - toolBar->SetToolBitmapSize(wxSize(16, 16)); + toolBar->SetToolBitmapSize(FromDIP(wxSize(32, 32))); toolBar->AddTool(MNU_REFRESH, wxEmptyString, *readdata_png_bmp, _("Refresh"), wxITEM_NORMAL); toolBar->AddSeparator(); toolBar->AddTool(MNU_COPY, wxEmptyString, *clip_copy_png_bmp, _("Copy selected text to clipboard"), wxITEM_NORMAL); @@ -391,8 +391,7 @@ frmStatus::frmStatus(frmMain *form, const wxString &_title, pgConn *conn) : pgFr // Now load the layout wxString perspective; settings->Read(wxT("frmStatus/Perspective-") + wxString(FRMSTATUS_PERSPECTIVE_VER), &perspective, FRMSTATUS_DEFAULT_PERSPECTIVE); - manager.LoadPerspective(perspective, true); - +// manager.LoadPerspective(perspective, true); // Reset the captions for the current language manager.GetPane(wxT("toolBar")).Caption(_("Tool bar")); manager.GetPane(wxT("Activity")).Caption(_("Activity")); @@ -690,7 +689,7 @@ void frmStatus::AddStatusPane() statusList->GetColumn(col, item); // Reinitialize column's width - settings->Read(wxT("frmStatus/StatusPane_") + item.GetText() + wxT("_Width"), &savedwidth, item.GetWidth()); + settings->Read(wxT("frmStatus/StatusPane_") + item.GetText() + wxT("_Width"), &savedwidth, statusList->GetColumnWidth(col)); if (savedwidth > 0) statusList->SetColumnWidth(col, savedwidth); else @@ -713,7 +712,6 @@ void frmStatus::AddStatusPane() // Initialize sort order statusSortColumn = 1; statusSortOrder = wxT("ASC"); - // Create the timer statusTimer = new wxTimer(this, TIMER_STATUS_ID); } @@ -1915,7 +1913,7 @@ void frmStatus::OnRefreshStatusTimer(wxTimerEvent &event) long item = -1; item = statusList->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_FOCUSED); if (item>=row) statusList->Focus(row-1); - statusList->DeleteItem(row); + if (statusList->GetItemCount()>row) statusList->DeleteItem(row); } statusList->Thaw(); wxListEvent ev; @@ -3716,7 +3714,7 @@ void frmStatus::OnRightClickStatusItem(wxListEvent& event) { int row = event.GetIndex(); //wxString txt = event.GetText(); - + if ((row<0) || (row>=statusList->GetItemCount())) return; wxRect r; //statusList->GetItemRect(row, r); wxString ss = wxEmptyString; @@ -3724,7 +3722,7 @@ void frmStatus::OnRightClickStatusItem(wxListEvent& event) for (int cc = 0; cc < statusList->GetColumnCount();cc++) { statusList->GetSubItemRect(row, cc, r, wxLIST_RECT_BOUNDS); if (r.Contains(event.GetPoint())) { - ss = wxString::Format("\rBounding rect of item %ld column %d is (%d, %d)-(%d, %d)", row,cc, r.x, r.y, r.x + r.width, r.y + r.height); + ss = wxString::Format("\rBounding rect of item %d column %d is (%d, %d)-(%d, %d)", row,cc, r.x, r.y, r.x + r.width, r.y + r.height); col = cc; break; } @@ -3761,6 +3759,7 @@ void frmStatus::OnClearFilter(wxCommandEvent& event) { void frmStatus::OnSortStatusGrid(wxListEvent &event) { // Get the information for the SQL ORDER BY + if (event.GetColumn()<0) return; if (statusSortColumn == event.GetColumn() + 1) { if (statusSortOrder == wxT("ASC")) diff --git a/include/dlg/dlgProJob.h b/include/dlg/dlgProJob.h index d7fe230..d47f36f 100644 --- a/include/dlg/dlgProJob.h +++ b/include/dlg/dlgProJob.h @@ -32,7 +32,7 @@ private: pgproJob *job; wxString oldsrc; ctlComboBox* cbRunas; - wxString StrAttribute(const wxString& name, wxString& value); + wxString StrAttribute(const wxString& name, const wxString& value); void append(wxString& str, const wxString& delimiter, const wxString& what); void OnChangeName(wxCommandEvent &ev); void OnSelChangeCmds(wxListEvent& ev); diff --git a/include/frm/frmQuery.h b/include/frm/frmQuery.h index 1feb48e..c101910 100644 --- a/include/frm/frmQuery.h +++ b/include/frm/frmQuery.h @@ -185,6 +185,7 @@ private: void OnChangeStc(wxStyledTextEvent &event); void OnPositionStc(wxStyledTextEvent &event); + void DoUpdatePositionStc(const wxStyledTextEvent &event); void OnLabelRightClick(wxGridEvent &event); void OnCellLeftDClick(wxGridEvent &event); void OnClose(wxCloseEvent &event); @@ -288,7 +289,7 @@ private: wxColour GetServerColour(pgConn *connection); bool relatesToWindow(wxWindow *which, wxWindow *related); - void fileMarkerActive(bool addOrRemove, wxString& sqlTabName); + void fileMarkerActive(bool addOrRemove, const wxString& sqlTabName); // Methods related to SQL tabs void SqlBookAddPage(wxString& title); bool SqlBookRemovePage(); diff --git a/include/frm/frmStatus.h b/include/frm/frmStatus.h index ed851d2..383ae88 100644 --- a/include/frm/frmStatus.h +++ b/include/frm/frmStatus.h @@ -85,7 +85,7 @@ enum #define FRMSTATUS_DEFAULT_PERSPECTIVE wxT("layout2|name=Activity;caption=Activity;state=6293500;dir=4;layer=0;row=0;pos=0;prop=100000;bestw=321;besth=244;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=462;floaty=165;floatw=595;floath=282|name=Locks;caption=Locks;state=6293500;dir=4;layer=0;row=0;pos=1;prop=100000;bestw=321;besth=244;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-231;floaty=235;floatw=595;floath=282|name=Transactions;caption=Transactions;state=6293500;dir=4;layer=0;row=0;pos=2;prop=100000;bestw=0;besth=0;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=461;floaty=527;floatw=595;floath=282|name=Logfile;caption=Logfile;state=6293500;dir=5;layer=0;row=0;pos=0;prop=100000;bestw=0;besth=0;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-103;floaty=351;floatw=595;floath=282|name=toolBar;caption=Tool bar;state=2124528;dir=1;layer=10;row=0;pos=0;prop=100000;bestw=808;besth=33;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=888;floaty=829;floatw=558;floath=49|dock_size(4,0,0)=583|dock_size(5,0,0)=10|dock_size(1,10,0)=35|") #else #ifdef __WXGTK__ -#define FRMSTATUS_DEFAULT_PERSPECTIVE wxT("layout2|name=Activity;caption=Activity;state=6293500;dir=4;layer=0;row=1;pos=0;prop=100000;bestw=20;besth=20;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=174;floaty=216;floatw=578;floath=282|name=Locks;caption=Locks;state=6293500;dir=4;layer=0;row=1;pos=2;prop=100000;bestw=20;besth=20;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=136;floaty=339;floatw=576;floath=283|name=Transactions;caption=Transactions;state=6293500;dir=4;layer=0;row=1;pos=3;prop=100000;bestw=20;besth=20;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=133;floaty=645;floatw=577;floath=283|name=Querystate;caption=Query State;state=6309884;dir=4;layer=0;row=1;pos=1;prop=100000;bestw=20;besth=20;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=154;floaty=255;floatw=1360;floath=751|name=Logfile;caption=Logfile;state=6293500;dir=5;layer=0;row=0;pos=0;prop=100000;bestw=20;besth=20;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=toolBar;caption=toolBar;state=2108144;dir=1;layer=10;row=0;pos=0;prop=100000;bestw=716;besth=23;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=586;floaty=525;floatw=483;floath=49|dock_size(1,10,0)=25|dock_size(4,0,1)=1115|dock_size(5,0,0)=22|") +#define FRMSTATUS_DEFAULT_PERSPECTIVE wxT("layout2|name=Activity;caption=Activity;state=6309884;dir=4;layer=0;row=0;pos=0;prop=100000;bestw=20;besth=20;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=Locks;caption=Locks;state=6293500;dir=4;layer=0;row=0;pos=1;prop=100000;bestw=20;besth=20;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=Transactions;caption=Prepared Transactions;state=6293500;dir=4;layer=0;row=0;pos=2;prop=100000;bestw=20;besth=20;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=Querystate;caption=QueryState;state=6293502;dir=5;layer=0;row=0;pos=0;prop=100000;bestw=20;besth=20;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=Logfile;caption=Logfile;state=6293500;dir=5;layer=0;row=0;pos=0;prop=100000;bestw=20;besth=20;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=toolBar;caption=Tool bar;state=2108144;dir=1;layer=10;row=0;pos=0;prop=100000;bestw=690;besth=39;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|dock_size(4,0,0)=800|dock_size(5,0,0)=22|dock_size(1,10,0)=41|") #else #define FRMSTATUS_DEFAULT_PERSPECTIVE wxT("layout2|name=Activity;caption=Activity;state=6293500;dir=4;layer=0;row=1;pos=0;prop=100000;bestw=20;besth=20;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=174;floaty=216;floatw=578;floath=282|name=Locks;caption=Locks;state=6293500;dir=4;layer=0;row=1;pos=2;prop=100000;bestw=20;besth=20;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=136;floaty=339;floatw=576;floath=283|name=Transactions;caption=Transactions;state=6293500;dir=4;layer=0;row=1;pos=3;prop=100000;bestw=20;besth=20;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=133;floaty=645;floatw=577;floath=283|name=Querystate;caption=Query State;state=6309884;dir=4;layer=0;row=1;pos=1;prop=100000;bestw=20;besth=20;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=154;floaty=255;floatw=1360;floath=751|name=Logfile;caption=Logfile;state=6293500;dir=5;layer=0;row=0;pos=0;prop=100000;bestw=20;besth=20;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=toolBar;caption=toolBar;state=2108144;dir=1;layer=10;row=0;pos=0;prop=100000;bestw=716;besth=23;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=586;floaty=525;floatw=483;floath=49|dock_size(1,10,0)=25|dock_size(4,0,1)=1115|dock_size(5,0,0)=22|") #endif diff --git a/include/log/Storage.h b/include/log/Storage.h index 4f797a2..37f7420 100644 --- a/include/log/Storage.h +++ b/include/log/Storage.h @@ -86,7 +86,7 @@ public: wxString GetFieldStorage(int row, MyConst::colField col, bool filter); Storage(); int GetSeverityIndex(int row); - void SetHost(wxString& host) { currhost = host; }; + void SetHost(const wxString& host) { currhost = host; }; wxString GetHost() { return currhost; }; void SetErrMsgFlag(bool flag) { err_msg = flag; }; bool GetErrMsgFlag() { return err_msg; }; @@ -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/log/StorageModel.h b/include/log/StorageModel.h index 7e1ecaf..cc3a0d4 100644 --- a/include/log/StorageModel.h +++ b/include/log/StorageModel.h @@ -51,7 +51,7 @@ public: ApplyFilter(); } void BuildColumns(MyDataViewCtrl* ctrl); - void IncCountFreq(int col, wxString &val) { + void IncCountFreq(int col, const wxString &val) { MyHashCount::const_iterator it = freqValues[col].find(val); int cnt=0; if (it != freqValues[col].end()) diff --git a/include/pgAdmin3.h b/include/pgAdmin3.h index 6e04195..1455d4f 100644 --- a/include/pgAdmin3.h +++ b/include/pgAdmin3.h @@ -11,7 +11,6 @@ #ifndef PGADMIN3_H #define PGADMIN3_H -#include "../utils/diff_match_patch.h" // wxWindows headers @@ -70,7 +69,10 @@ const wxString GP_MAX_VERSION_T = wxT("8.3"); // The registry file #ifndef __WXMSW__ +#define sepPath '/' #define REGISTRY_FILE wxT("/etc/postgres-reg.ini") +#else +#define sepPath '\\' #endif // Some redefines for modern Microsoft compilers diff --git a/include/precomp.h b/include/precomp.h index f8d305a..8ab4234 100644 --- a/include/precomp.h +++ b/include/precomp.h @@ -10,6 +10,7 @@ ////////////////////////////////////////////////////////////////////////// #ifdef WX_PRECOMP +#ifdef __cplusplus #include "copyright.h" #include "pgAdmin3.h" @@ -246,5 +247,5 @@ #include "utils/sysProcess.h" #include "utils/sysSettings.h" #include "utils/utffile.h" - +#endif #endif diff --git a/include/pro_scheduler/pgproJob.h b/include/pro_scheduler/pgproJob.h index 731212e..c835799 100644 --- a/include/pro_scheduler/pgproJob.h +++ b/include/pro_scheduler/pgproJob.h @@ -50,7 +50,7 @@ public: wxString GetSql(ctlTree *browser); bool NeedRefresh(); - void iSetSched(int cron, wxString &mi, wxString& h, wxString& d, wxString& wd, wxString& mon) + void iSetSched(int cron, const wxString &mi, const wxString& h, const wxString& d, const wxString& wd,const wxString& mon) { for (int i = 0; i < 60; i++) _mi[i] = false; for (int i = 0; i < 24; i++) _h[i] = false; @@ -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.cpp b/pgAdmin3.cpp index 1dfd462..fa723b8 100644 --- a/pgAdmin3.cpp +++ b/pgAdmin3.cpp @@ -276,13 +276,13 @@ bool pgAdmin3::OnInit() static const wxCmdLineEntryDesc cmdLineDesc[] = { -#if wxCHECK_VERSION(2, 9, 0) +#if wxCHECK_VERSION(3, 0, 0) // wxCmdLineEntryDesc is one of the few places in 2.9 where wxT()s have any effect...they break the build {wxCMD_LINE_SWITCH, "v", "version", _("show the version, and quit"), wxCMD_LINE_VAL_NONE}, {wxCMD_LINE_SWITCH, "h", "help", _("show this help message, and quit"), wxCMD_LINE_VAL_NONE, wxCMD_LINE_OPTION_HELP }, {wxCMD_LINE_OPTION, "s", "server", _("auto-connect to specified server"), wxCMD_LINE_VAL_STRING}, {wxCMD_LINE_SWITCH, "S", "serverstatus", _("open server status window"), wxCMD_LINE_VAL_NONE}, - {wxCMD_LINE_SWITCH, "L", "log window", _("open server log window"), wxCMD_LINE_VAL_NONE}, + {wxCMD_LINE_SWITCH, "L", "logwindow", _("open server log window"), wxCMD_LINE_VAL_NONE}, {wxCMD_LINE_OPTION, "Sc", "serverstatusconnect", _("connect server status window to database"), wxCMD_LINE_VAL_STRING}, {wxCMD_LINE_SWITCH, "q", "query", _("open query tool"), wxCMD_LINE_VAL_NONE}, {wxCMD_LINE_OPTION, "qc", "queryconnect", _("connect query tool to database"), wxCMD_LINE_VAL_STRING}, diff --git a/schema/pgObject.cpp b/schema/pgObject.cpp index c91ea0e..f023d02 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") @@ -2175,7 +2175,7 @@ if (1==0) { } } wxString findobj=wxT(","); - wxString dropblock=wxT("-- Удаление зависимых объектов\n"); + wxString dropblock=wxT("-- \n"); wxString createblock=wxEmptyString; while (set.RowsLeft()) { @@ -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("-- )\n")+createblock; return sql; } diff --git a/utils/diff_match_patch.cc b/utils/diff_match_patch.cc index 54a092e..133f53b 100644 --- a/utils/diff_match_patch.cc +++ b/utils/diff_match_patch.cc @@ -20,7 +20,7 @@ * http://code.google.com/p/google-diff-match-patch/ */ -#include "pgAdmin3.h" +#include "utils/diff_match_patch.h" typedef std::wstring_convert, wchar_t> UnicodeEncoder; diff --git a/utils/diff_match_patch.h b/utils/diff_match_patch.h index d4b9c28..c8867d4 100644 --- a/utils/diff_match_patch.h +++ b/utils/diff_match_patch.h @@ -22,7 +22,7 @@ #if WIN32 #include "pgadmin3.h" #else -#include "pgAdmin3.h" +//#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 605d459..4b74912 100644 --- a/utils/log/MyDataViewCtrl.cpp +++ b/utils/log/MyDataViewCtrl.cpp @@ -325,8 +325,12 @@ void MyDataViewCtrl::OnEVT_DATAVIEW_CONTEXT_MENU(wxCommandEvent& event) { wxMenu* mi = static_cast(event.GetEventObject()); wxString label = mi->GetLabelText(id); StorageModel* m = dynamic_cast(GetModel()); - + #ifdef WIN32 int col = (int)mi->GetClientData(); + #else + long nc=(long)mi->GetClientData(); + int col= nc & 0xFFFF; + #endif if (id > 100) { int colt = 0; bool clear = false; @@ -373,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); @@ -580,15 +584,19 @@ void MyDataViewCtrl::OnMouseMove(wxMouseEvent& event) { wxString position; //position = wxString::Format("x=%d y=%d", logPos.x, logPos.y); //wxLogMessage("Mouse pos %s", position); - wxHeaderCtrl* const header = GenericGetHeader(); int dy = 0; wxSize sz; + #ifdef WIN32 + wxHeaderCtrl* const header = GenericGetHeader(); if (header) { sz = header->GetSize(); //header->Refresh(); dy = sz.GetHeight(); } mc.y += dy; + #else + mc.y+=18; // only linux compile + #endif wxDataViewItem item; wxDataViewColumn* column; diff --git a/utils/log/Storage.cpp b/utils/log/Storage.cpp index ad8f5e8..0534754 100644 --- a/utils/log/Storage.cpp +++ b/utils/log/Storage.cpp @@ -84,7 +84,7 @@ Storage::Storage() { // load filter - wxString tempDir = wxStandardPaths::Get().GetUserConfigDir() + wxT("\\postgresql\\"); + wxString tempDir = wxStandardPaths::Get().GetUserConfigDir() + wxFileName::GetPathSeparator()+"postgresql"+wxFileName::GetPathSeparator(); wxString f = tempDir + "filter_load.txt"; if (wxFileExists(f)) { @@ -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/utils/sshTunnel.cpp b/utils/sshTunnel.cpp index ed75f34..2475eb8 100644 --- a/utils/sshTunnel.cpp +++ b/utils/sshTunnel.cpp @@ -20,6 +20,7 @@ #include "frm/frmMain.h" #pragma comment (lib, "Ws2_32.lib") +#if defined(HAVE_OPENSSL_CRYPTO) || defined(HAVE_GCRYPT) typedef const char *(*inet_ntop_t) (int af, const void *src, char *dst, socklen_t size); @@ -628,3 +629,4 @@ void LogSSHTunnelErrors(const wxString &msg, const int &id, struct _LIBSSH2_SESS g_SSHThreadMutex.Unlock(); } +#endif \ No newline at end of file diff --git a/utils/sysSettings.cpp b/utils/sysSettings.cpp index 9fe6671..f7cdf9b 100644 --- a/utils/sysSettings.cpp +++ b/utils/sysSettings.cpp @@ -63,11 +63,13 @@ sysSettings::sysSettings(const wxString &name) : wxConfig(name) sysSettings::~sysSettings() { + #ifdef WIN32 wxRegKey key(wxRegKey::HKCU, "Software\\"+appName); wxString fn= wxStandardPaths::Get().GetUserConfigDir() + wxT("\\postgresql\\autoSaveConfig.reg"); if (wxFileName::FileExists(fn)) wxRemoveFile(fn); key.Export(fn); + #endif if(defaultSettings) { delete defaultSettings; diff --git a/utils/utffile.cpp b/utils/utffile.cpp index 55a0822..e4f37cb 100644 --- a/utils/utffile.cpp +++ b/utils/utffile.cpp @@ -15,8 +15,8 @@ wxMBConvUTF16BE wxConvUTF16BE; wxMBConvUTF16LE wxConvUTF16LE; -wxMBConvUTF32BE wxConvUTF32BE; -wxMBConvUTF32LE wxConvUTF32LE; +wxMBConvUTF32BE wxConvUTF32BE_unik; +wxMBConvUTF32LE wxConvUTF32LE_unik; // these are the magic characters identifying an Unicode file #define BOM_UTF8 "\357\273\277" @@ -275,10 +275,10 @@ void wxUtfFile::DetermineConversion(wxFontEncoding encoding) m_conversion = &wxConvUTF16LE; break; case wxFONTENCODING_UTF32BE: - m_conversion = &wxConvUTF32BE; + m_conversion = &wxConvUTF32BE_unik; break; case wxFONTENCODING_UTF32LE: - m_conversion = &wxConvUTF32LE; + m_conversion = &wxConvUTF32LE_unik; break; default: break;