diff --git a/.vscode/settings.json b/.vscode/settings.json
index d849728e..9a6156f3 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -23,5 +23,11 @@
},
"python.formatting.provider": "none",
"activestate.promptRuntimeCreation": false,
+ "files.associations": {
+ "cmath": "cpp",
+ "typeindex": "cpp",
+ "typeinfo": "cpp",
+ "algorithm": "cpp"
+ },
"C_Cpp.default.compilerPath": "/usr/bin/clang++"
}
diff --git a/BuildTools/CommonDistFiles/cache.sqlite b/BuildTools/CommonDistFiles/cache.sqlite
index 273d75cb..ad143fc4 100644
Binary files a/BuildTools/CommonDistFiles/cache.sqlite and b/BuildTools/CommonDistFiles/cache.sqlite differ
diff --git a/BuildTools/macosx/code_sign.py b/BuildTools/macosx/code_sign.py
index 5d47ba6b..21c26e43 100755
--- a/BuildTools/macosx/code_sign.py
+++ b/BuildTools/macosx/code_sign.py
@@ -45,15 +45,23 @@ def ProcessDependency(dylib_path, cid, current_item=None):
if dylib_path == '@loader_path/libkmldom.1.dylib':
dylib_path = '/opt/homebrew/opt/libkml/lib/libkmldom.1.dylib'
- if dylib_path == '@rpath/libIlmThread-3_1.30.dylib':
- dylib_path = '/usr/local/opt/openexr/lib/libIlmThread-3_1.30.dylib'
- if dylib_path == '@rpath/libIex-3_1.30.dylib':
- dylib_path = '/usr/local/opt/openexr/lib/libIex-3_1.30.dylib'
- if dylib_path == '@rpath/libOpenEXR-3_1.30.dylib':
- dylib_path = '/usr/local/opt/openexr/lib/libOpenEXR-3_1.30.dylib'
- if dylib_path == '@rpath/libOpenEXRCore-3_1.30.dylib':
- dylib_path = '/usr/local/opt/openexr/lib/libOpenEXRCore-3_1.30.dylib'
-
+ m = re.search('@rpath/libIlmThread-(.*).dylib', dylib_path)
+ if m:
+ dylib_path = '/usr/local/opt/openexr/lib/libIlmThread-' + \
+ m.group(1) + '.dylib'
+ m = re.search('@rpath/libIex-(.*).dylib', dylib_path)
+ if m:
+ dylib_path = '/usr/local/opt/openexr/lib/libIex-' + \
+ m.group(1) + '.dylib'
+ m = re.search('@rpath/libOpenEXR-(.*).dylib', dylib_path)
+ if m:
+ dylib_path = '/usr/local/opt/openexr/lib/libOpenEXR-' + \
+ m.group(1) + '.dylib'
+ m = re.search('@rpath/libOpenEXRCore-(.*).dylib', dylib_path)
+ if m:
+ dylib_path = '/usr/local/opt/openexr/lib/libOpenEXRCore-' + \
+ m.group(1) + '.dylib'
+
m = re.search('@rpath/(libabsl.*)', dylib_path)
if m:
dylib_path = '/usr/local/opt/abseil/lib/' + m.group(1)
@@ -65,7 +73,7 @@ def ProcessDependency(dylib_path, cid, current_item=None):
m = re.search('@rpath/(libaws.*)', dylib_path)
if m:
dylib_path = '/usr/local/opt/aws-sdk-cpp/lib/' + m.group(1)
-
+
m = re.search('@loader_path/../../../../(opt*)', dylib_path)
if m:
dylib_path = '/usr/local/' + m.group(1)
@@ -81,7 +89,7 @@ def ProcessDependency(dylib_path, cid, current_item=None):
dylib_path = f'{copy_dir}/{item_filename}'
elif upper_levels == 0:
dylib_path = f'{copy_dir}/{item_filename}'
-
+
print("Process:", dylib_path)
# cmd = "codesign -f -s - "
cmd = '/usr/bin/codesign --force --sign "{}" '.format(cid)
@@ -100,5 +108,5 @@ def ProcessDependency(dylib_path, cid, current_item=None):
# e.g.
# python3 code_sign.py /opt/homebrew/opt/gdal/lib/libgdal.29.dylib "Apple Development: xunli@uchicago.edu (AN5USPSZF6)"
# python3 code_sign.py /opt/homebrew/opt/gdal/lib/libgdal.32.dylib "Apple Development: xunli@uchicago.edu (AN5USPSZF6)"
-#ProcessDependency(sys.argv[1], sys.argv[2])
-#ProcessDependency('/opt/homebrew/Cellar/gdal/3.7.2/lib/libgdal.33.3.7.2.dylib', "Apple Development: xunli@uchicago.edu (AN5USPSZF6)")
+# ProcessDependency(sys.argv[1], sys.argv[2])
+# ProcessDependency('/opt/homebrew/Cellar/gdal/3.7.2/lib/libgdal.33.3.7.2.dylib', "Apple Development: xunli@uchicago.edu (AN5USPSZF6)")
diff --git a/BuildTools/macosx/install_name.py b/BuildTools/macosx/install_name.py
index 37bcd626..b3f672b2 100644
--- a/BuildTools/macosx/install_name.py
+++ b/BuildTools/macosx/install_name.py
@@ -71,6 +71,7 @@ def process_dependency(framework_path, dylib_name):
copyitem = '/usr/local/opt/icu4c/lib/libicudata.73.dylib'
if item == '@loader_path/libbrotlicommon.1.dylib':
copyitem = '/usr/local/opt/brotli/lib/libbrotlicommon.1.dylib'
+
if item == '@rpath/libIlmThread-3_1.30.dylib':
copyitem = '/usr/local/opt/openexr/lib/libIlmThread-3_1.30.dylib'
if item == '@rpath/libIex-3_1.30.dylib':
@@ -88,6 +89,23 @@ def process_dependency(framework_path, dylib_name):
if item == '@rpath/libabsl_base.2301.0.0.dylib':
copyitem = '/usr/local/opt/abseil/lib/libabsl_base.2301.0.0.dylib'
+ m = re.search('@rpath/libIlmThread-(.*).dylib', item)
+ if m:
+ copyitem = '/usr/local/opt/openexr/lib/libIlmThread-' + \
+ m.group(1) + '.dylib'
+ m = re.search('@rpath/libIex-(.*).dylib', item)
+ if m:
+ copyitem = '/usr/local/opt/openexr/lib/libIex-' + \
+ m.group(1) + '.dylib'
+ m = re.search('@rpath/libOpenEXR-(.*).dylib', item)
+ if m:
+ copyitem = '/usr/local/opt/openexr/lib/libOpenEXR-' + \
+ m.group(1) + '.dylib'
+ m = re.search('@rpath/libOpenEXRCore-(.*).dylib', item)
+ if m:
+ copyitem = '/usr/local/opt/openexr/lib/libOpenEXRCore-' + \
+ m.group(1) + '.dylib'
+
name_matches = re.search('@rpath/(libabsl.*)', item)
if name_matches:
copyitem = '/usr/local/opt/abseil/lib/' + name_matches.group(1)
diff --git a/BuildTools/windows/GeoDa.vs2019.vcxproj b/BuildTools/windows/GeoDa.vs2019.vcxproj
index ddd2aa7a..2d528a66 100644
--- a/BuildTools/windows/GeoDa.vs2019.vcxproj
+++ b/BuildTools/windows/GeoDa.vs2019.vcxproj
@@ -90,7 +90,7 @@
Disabled
temp\OpenCL\sdk\include;temp\boost;temp\wxWidgets\lib\vc_dll\mswud;temp\wxWidgets\include;temp\json_spirit_v4.08;temp\eigen3;temp\spectra\include;libraries\include;%(AdditionalIncludeDirectories)
- WIN32;DEBUG;_DEBUG;_WINDOWS;__WXMSW__;__WXDEBUG__;WXUSINGDLL;_UNICODE;%(PreprocessorDefinitions)
+ WIN32;DEBUG;_DEBUG;_WINDOWS;NOMINMAX;__WXMSW__;__WXDEBUG__;WXUSINGDLL;_UNICODE;%(PreprocessorDefinitions)
false
EnableFastChecks
MultiThreadedDebugDLL
@@ -103,7 +103,7 @@
true
- __WXMSW__;_UNICODE;_WINDOWS;NOPCH;WXUSINGDLL;%(PreprocessorDefinitions)
+ NOMINMAX;__WXMSW__;_UNICODE;_WINDOWS;NOPCH;WXUSINGDLL;%(PreprocessorDefinitions)
0x0409
temp\wxWidgets\include;%(AdditionalIncludeDirectories)
@@ -122,7 +122,7 @@
Disabled
temp\OpenCL\sdk\include;temp\wxWidgets\lib\vc_dll\mswud;temp\wxWidgets\include;temp\boost\include;temp\json_spirit_v4.08;temp\eigen3;temp\spectra\include;libraries\include;%(AdditionalIncludeDirectories)
- WIN32;DEBUG;_DEBUG;_WINDOWS;__WXMSW__;__WXDEBUG__;WXUSINGDLL;_UNICODE;__PROJ6__%(PreprocessorDefinitions)
+ WIN32;DEBUG;_DEBUG;_WINDOWS;NOMINMAX;__WXMSW__;__WXDEBUG__;WXUSINGDLL;_UNICODE;__PROJ6__%(PreprocessorDefinitions)
false
EnableFastChecks
MultiThreadedDebugDLL
@@ -139,7 +139,7 @@
Default
- __WXMSW__;_UNICODE;_WINDOWS;NOPCH;WXUSINGDLL;%(PreprocessorDefinitions)
+ NOMINMAX;__WXMSW__;_UNICODE;_WINDOWS;NOPCH;WXUSINGDLL;%(PreprocessorDefinitions)
0x0409
temp\wxWidgets\include;%(AdditionalIncludeDirectories)
@@ -160,7 +160,7 @@
temp\OpenCL\sdk\include;temp\wxWidgets\lib\vc_dll\mswu;temp\wxWidgets\include;temp\boost\include;temp\json_spirit_v4.08;temp\eigen3;temp\spectra\include;libraries\include;%(AdditionalIncludeDirectories)
- WIN32;_WINDOWS;__WXMSW__;__NO_VC_CRTDBG__;WXUSINGDLL;_UNICODE;__PROJ6__;BOOST_BIND_NO_PLACEHOLDERS;%(PreprocessorDefinitions)
+ WIN32;_WINDOWS;NOMINMAX;__WXMSW__;__NO_VC_CRTDBG__;WXUSINGDLL;_UNICODE;__PROJ6__;BOOST_BIND_NO_PLACEHOLDERS;%(PreprocessorDefinitions)
MultiThreadedDLL
@@ -170,7 +170,7 @@
/MP %(AdditionalOptions)
- __WXMSW__;_UNICODE;_WINDOWS;NOPCH;WXUSINGDLL;%(PreprocessorDefinitions)
+ NOMINMAX;__WXMSW__;_UNICODE;_WINDOWS;NOPCH;WXUSINGDLL;%(PreprocessorDefinitions)
0x0409
temp\wxWidgets\include;%(AdditionalIncludeDirectories)
@@ -187,7 +187,7 @@
temp\OpenCL\sdk\include;temp\wxWidgets\lib\vc_x64_dll\mswu;temp\wxWidgets\include;temp\boost\include;temp\json_spirit_v4.08;temp\eigen3;temp\spectra\include;libraries\include;%(AdditionalIncludeDirectories)
- WIN32;_WINDOWS;__WXMSW__;__NO_VC_CRTDBG__;WXUSINGDLL;_UNICODE;__PROJ6__;BOOST_BIND_NO_PLACEHOLDERS;%(PreprocessorDefinitions)
+ WIN32;_WINDOWS;NOMINMAX;__WXMSW__;__NO_VC_CRTDBG__;WXUSINGDLL;_UNICODE;__PROJ6__;BOOST_BIND_NO_PLACEHOLDERS;%(PreprocessorDefinitions)
MultiThreadedDLL
@@ -198,7 +198,7 @@
true
- __WXMSW__;_UNICODE;_WINDOWS;NOPCH;WXUSINGDLL;UNICODE;%(PreprocessorDefinitions)
+ NOMINMAX;__WXMSW__;_UNICODE;_WINDOWS;NOPCH;WXUSINGDLL;UNICODE;%(PreprocessorDefinitions)
0x0409
temp\wxWidgets\include;%(AdditionalIncludeDirectories)
diff --git a/DialogTools/BasemapConfDlg.cpp b/DialogTools/BasemapConfDlg.cpp
index 18e77535..88b3bca4 100644
--- a/DialogTools/BasemapConfDlg.cpp
+++ b/DialogTools/BasemapConfDlg.cpp
@@ -17,84 +17,81 @@
* along with this program. If not, see .
*/
+#include "BasemapConfDlg.h"
-
-#include
-#include
-#include
#include
+#include
#include
#include
+#include
#include
+#include
+
+#include "../GdaConst.h"
#include "../Project.h"
#include "../ShapeOperations/OGRDataAdapter.h"
-#include "../GdaConst.h"
-#include "BasemapConfDlg.h"
-
-BEGIN_EVENT_TABLE( BasemapConfDlg, wxDialog )
-EVT_BUTTON( wxID_OK, BasemapConfDlg::OnOkClick )
-EVT_BUTTON( XRCID("ID_NOKIA_RESET"), BasemapConfDlg::OnResetClick )
+BEGIN_EVENT_TABLE(BasemapConfDlg, wxDialog)
+EVT_BUTTON(wxID_OK, BasemapConfDlg::OnOkClick)
+EVT_BUTTON(XRCID("ID_NOKIA_RESET"), BasemapConfDlg::OnResetClick)
END_EVENT_TABLE()
-BasemapConfDlg::BasemapConfDlg(wxWindow* parent, Project* _p,
- wxWindowID id,
- const wxString& title,
- const wxPoint& pos,
- const wxSize& size )
-{
-
- wxLogMessage("Open BasemapConfDlg.");
- p = _p;
-
- basemap_resources = wxString::FromUTF8(GdaConst::gda_basemap_sources.mb_str());
- std::vector items = OGRDataAdapter::GetInstance().GetHistory("gda_basemap_sources");
- if (items.size()>0) {
- basemap_resources = items[0];
- }
-
- wxString encoded_str= wxString::FromUTF8((const char*)basemap_resources.mb_str());
- if (encoded_str.IsEmpty() == false) {
- basemap_resources = encoded_str;
- }
-
- wxXmlResource::Get()->LoadDialog(this, GetParent(), "IDD_BASEMAP_CONF_DLG");
- FindWindow(XRCID("wxID_OK"))->Enable(true);
- m_txt_nokia_uname = XRCCTRL(*this, "IDC_NOKIA_USERNAME",wxTextCtrl);
- m_txt_nokia_key = XRCCTRL(*this, "IDC_NOKIA_KEY",wxTextCtrl);
- m_txt_basemap = XRCCTRL(*this, "IDC_BASEMAP_SOURCE",wxTextCtrl);
- m_txt_basemap->SetValue(basemap_resources);
-
- SetParent(parent);
- SetPosition(pos);
- Centre();
+BasemapConfDlg::BasemapConfDlg(wxWindow* parent, Project* _p, wxWindowID id, const wxString& title, const wxPoint& pos,
+ const wxSize& size) {
+ wxLogMessage("Open BasemapConfDlg.");
+ p = _p;
+
+ basemap_resources = wxString::FromUTF8(GdaConst::gda_basemap_sources.mb_str());
+ std::vector items = OGRDataAdapter::GetInstance().GetHistory("gda_basemap_sources");
+ if (items.size() > 0) {
+ basemap_resources = items[0];
+ }
+
+ wxString encoded_str = wxString::FromUTF8((const char*)basemap_resources.mb_str());
+ if (encoded_str.IsEmpty() == false) {
+ basemap_resources = encoded_str;
+ }
+
+ wxXmlResource::Get()->LoadDialog(this, GetParent(), "IDD_BASEMAP_CONF_DLG");
+ FindWindow(XRCID("wxID_OK"))->Enable(true);
+ m_txt_stadia_key = XRCCTRL(*this, "IDC_STADIA_KEY", wxTextCtrl);
+ m_txt_nokia_uname = XRCCTRL(*this, "IDC_NOKIA_USERNAME", wxTextCtrl);
+ m_txt_nokia_key = XRCCTRL(*this, "IDC_NOKIA_KEY", wxTextCtrl);
+ m_txt_basemap = XRCCTRL(*this, "IDC_BASEMAP_SOURCE", wxTextCtrl);
+ m_txt_basemap->SetValue(basemap_resources);
+
+ SetParent(parent);
+ SetPosition(pos);
+ Centre();
}
+void BasemapConfDlg::OnOkClick(wxCommandEvent& event) {
+ wxLogMessage("BasemapConfDlg: Click OK Button.");
+
+ wxString stadie_key(m_txt_stadia_key->GetValue().Trim());
+ if (!stadie_key.empty()) {
+ OGRDataAdapter::GetInstance().AddEntry("stadia_key", stadie_key);
+ }
-void BasemapConfDlg::OnOkClick( wxCommandEvent& event )
-{
- wxLogMessage("BasemapConfDlg: Click OK Button.");
-
- wxString nokia_uname(m_txt_nokia_uname->GetValue().Trim());
- wxString nokia_key(m_txt_nokia_key->GetValue().Trim());
-
- if (!nokia_uname.empty() && !nokia_key.empty()) {
- OGRDataAdapter::GetInstance().AddEntry("nokia_user", nokia_uname);
- OGRDataAdapter::GetInstance().AddEntry("nokia_key", nokia_key);
- }
- if (m_txt_basemap->GetValue() != basemap_resources) {
- OGRDataAdapter::GetInstance().AddEntry("gda_basemap_sources", m_txt_basemap->GetValue());
- }
- EndDialog(wxID_OK);
+ wxString nokia_uname(m_txt_nokia_uname->GetValue().Trim());
+ wxString nokia_key(m_txt_nokia_key->GetValue().Trim());
+ if (!nokia_uname.empty() && !nokia_key.empty()) {
+ OGRDataAdapter::GetInstance().AddEntry("nokia_user", nokia_uname);
+ OGRDataAdapter::GetInstance().AddEntry("nokia_key", nokia_key);
+ }
+
+ if (m_txt_basemap->GetValue() != basemap_resources) {
+ OGRDataAdapter::GetInstance().AddEntry("gda_basemap_sources", m_txt_basemap->GetValue());
+ }
+ EndDialog(wxID_OK);
}
-void BasemapConfDlg::OnResetClick( wxCommandEvent& event )
-{
- wxLogMessage("BasemapConfDlg: Click Reset Button.");
+void BasemapConfDlg::OnResetClick(wxCommandEvent& event) {
+ wxLogMessage("BasemapConfDlg: Click Reset Button.");
+
+ m_txt_basemap->SetValue(GdaConst::gda_basemap_sources);
+ OGRDataAdapter::GetInstance().AddEntry("gda_basemap_sources", GdaConst::gda_basemap_sources);
- m_txt_basemap->SetValue(GdaConst::gda_basemap_sources);
- OGRDataAdapter::GetInstance().AddEntry("gda_basemap_sources", GdaConst::gda_basemap_sources);
-
- EndDialog(wxID_OK);
+ EndDialog(wxID_OK);
}
diff --git a/DialogTools/BasemapConfDlg.h b/DialogTools/BasemapConfDlg.h
index 65fbe94e..3be4e7b5 100644
--- a/DialogTools/BasemapConfDlg.h
+++ b/DialogTools/BasemapConfDlg.h
@@ -19,40 +19,38 @@
#ifndef __GEODA_CENTER_BASEMAP_CONF_DLG_H__
#define __GEODA_CENTER_BASEMAP_CONF_DLG_H__
-
-#include
-#include
#include
+#include
#include
-#include
+#include
#include
-#include
+#include
+
+#include
#include "../Project.h"
class Project;
-class BasemapConfDlg: public wxDialog
-{
-public:
- BasemapConfDlg(wxWindow* parent, Project* p,
- wxWindowID id = wxID_ANY,
- const wxString& title = _("Basemap Configuration Dialog"),
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize );
-
-private:
- Project* p;
- wxString basemap_resources;
-
- wxTextCtrl* m_txt_nokia_uname;
- wxTextCtrl* m_txt_nokia_key;
- wxTextCtrl* m_txt_basemap;
-
- void OnOkClick( wxCommandEvent& event );
- void OnResetClick( wxCommandEvent& event );
-
- DECLARE_EVENT_TABLE()
+class BasemapConfDlg : public wxDialog {
+ public:
+ BasemapConfDlg(wxWindow* parent, Project* p, wxWindowID id = wxID_ANY,
+ const wxString& title = _("Basemap Configuration Dialog"), const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize);
+
+ private:
+ Project* p;
+ wxString basemap_resources;
+
+ wxTextCtrl* m_txt_stadia_key;
+ wxTextCtrl* m_txt_nokia_uname;
+ wxTextCtrl* m_txt_nokia_key;
+ wxTextCtrl* m_txt_basemap;
+
+ void OnOkClick(wxCommandEvent& event);
+ void OnResetClick(wxCommandEvent& event);
+
+ DECLARE_EVENT_TABLE()
};
#endif
diff --git a/Explore/Basemap.cpp b/Explore/Basemap.cpp
index a40d29b0..969b5da6 100644
--- a/Explore/Basemap.cpp
+++ b/Explore/Basemap.cpp
@@ -2,7 +2,7 @@
* GeoDa TM, Copyright (C) 2011-2015 by Luc Anselin - all rights reserved
*
* This file is part of GeoDa.
- *
+ *
* GeoDa is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
@@ -17,31 +17,35 @@
* along with this program. If not, see .
*/
-#include
-#include
-#include
#include
#include
-#define BOOST_PHOENIX_STL_TUPLE_H_
-#include
-#include
-#include
-#include
+#include
+#include
+#include