Add PCM settings

This commit is contained in:
qu1ck 2021-04-02 20:18:56 -07:00 committed by Seth Hillbrand
parent 78ab69027d
commit 4937cd537b
2 changed files with 52 additions and 5 deletions

View File

@ -18,8 +18,9 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <settings/parameters.h>
#include "kicad_settings.h"
#include "nlohmann/json.hpp"
#include <settings/parameters.h>
///! Update the schema version whenever a migration is required
@ -27,13 +28,54 @@ const int kicadSchemaVersion = 0;
KICAD_SETTINGS::KICAD_SETTINGS() :
APP_SETTINGS_BASE( "kicad", kicadSchemaVersion ),
m_LeftWinWidth( 200 )
APP_SETTINGS_BASE( "kicad", kicadSchemaVersion ), m_LeftWinWidth( 200 )
{
m_params.emplace_back( new PARAM<int>( "appearance.left_frame_width", &m_LeftWinWidth, 200 ) );
m_params.emplace_back( new PARAM_LIST<wxString>( "system.open_projects",
&m_OpenProjects, {} ) );
m_params.emplace_back(
new PARAM_LIST<wxString>( "system.open_projects", &m_OpenProjects, {} ) );
#ifdef PCM
m_params.emplace_back( new PARAM_LAMBDA<nlohmann::json>(
"pcm.repositories",
[&]() -> nlohmann::json
{
nlohmann::json js = nlohmann::json::array();
for( const auto& pair : m_PcmRepositories )
{
js.push_back( nlohmann::json( { { "name", pair.first.ToUTF8() },
{ "url", pair.second.ToUTF8() } } ) );
return js;
},
[&]( const nlohmann::json aObj )
{
m_PcmRepositories.clear();
if( !aObj.is_array() )
return;
for( const auto& entry : aObj )
{
if( entry.empty() || !entry.is_object() )
continue;
m_PcmRepositories.emplace_back(
std::make_pair( wxString( entry["name"].get<std::string>() ),
wxString( entry["url"].get<std::string>() ) ) );
}
},
R"([
{
"name": "KiCad official repository",
"url": "https://repository.kicad.org/repository.json"
}
])"_json ) );
m_params.emplace_back(
new PARAM<wxString>( "pcm.last_download_dir", &m_PcmLastDownloadDir, "" ) );
#endif
}

View File

@ -38,6 +38,11 @@ public:
std::vector<wxString> m_OpenProjects;
#ifdef PCM
std::vector<std::pair<wxString, wxString>> m_PcmRepositories;
wxString m_PcmLastDownloadDir;
#endif
protected:
virtual std::string getLegacyFrameName() const override { return "KicadFrame"; }