KiCad PCB EDA Suite
Loading...
Searching...
No Matches
api_handler_common.h
Go to the documentation of this file.
1/*
2 * This program source code file is part of KiCad, a free EDA CAD application.
3 *
4 * Copyright (C) 2023 Jon Evans <[email protected]>
5 * Copyright The KiCad Developers, see AUTHORS.txt for contributors.
6 *
7 * This program is free software: you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the
9 * Free Software Foundation, either version 3 of the License, or (at your
10 * option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <https://www.gnu.org/licenses/>.
19 */
20
21#ifndef KICAD_API_HANDLER_COMMON_H
22#define KICAD_API_HANDLER_COMMON_H
23
24#include <functional>
25
26#include <google/protobuf/empty.pb.h>
27
28#include <api/api_handler.h>
29#include <api/common/commands/base_commands.pb.h>
30#include <api/common/commands/project_commands.pb.h>
31
32using namespace kiapi::common;
33using kiapi::common::types::ProjectSpecifier;
34using google::protobuf::Empty;
35
37{
38public:
39 using OPEN_DOCUMENT_HANDLER = std::function<HANDLER_RESULT<commands::OpenDocumentResponse>(
40 const commands::OpenDocument& )>;
41 using CREATE_DOCUMENT_HANDLER = std::function<HANDLER_RESULT<commands::OpenDocumentResponse>(
42 const commands::CreateDocument& )>;
43 using CLOSE_DOCUMENT_HANDLER = std::function<HANDLER_RESULT<Empty>(
44 const commands::CloseDocument& )>;
45 using CLOSE_ALL_DOCUMENTS_HANDLER = std::function<HANDLER_RESULT<Empty>(
46 const commands::CloseAllDocuments& )>;
47
48
50
51 ~API_HANDLER_COMMON() override {}
52
54 {
55 m_openDocumentHandler = std::move( aHandler );
56 }
57
59 {
60 m_closeDocumentHandler = std::move( aHandler );
61 }
62
64 {
65 m_closeAllDocumentsHandler = std::move( aHandler );
66 }
67
69 {
70 m_createDocumentHandler = std::move( aHandler );
71 }
72
73private:
76
79
82
85
88
91
94
96
99
102
105
108
111
114
117
120
123
126
127private:
128 static tl::expected<bool, ApiResponseStatus> validateProject( const ProjectSpecifier& aProject,
129 bool aAllowEmpty = false );
130
135};
136
137#endif //KICAD_API_HANDLER_COMMON_H
tl::expected< T, ApiResponseStatus > HANDLER_RESULT
Definition api_handler.h:47
HANDLER_RESULT< Empty > handlePing(const HANDLER_CONTEXT< commands::Ping > &aCtx)
HANDLER_RESULT< types::Box2 > handleGetTextExtents(const HANDLER_CONTEXT< commands::GetTextExtents > &aCtx)
CLOSE_ALL_DOCUMENTS_HANDLER m_closeAllDocumentsHandler
HANDLER_RESULT< commands::GetTextAsShapesResponse > handleGetTextAsShapes(const HANDLER_CONTEXT< commands::GetTextAsShapes > &aCtx)
HANDLER_RESULT< commands::GetVersionResponse > handleGetVersion(const HANDLER_CONTEXT< commands::GetVersion > &aCtx)
void SetOpenDocumentHandler(OPEN_DOCUMENT_HANDLER aHandler)
CREATE_DOCUMENT_HANDLER m_createDocumentHandler
HANDLER_RESULT< Empty > handleCloseAllDocuments(const HANDLER_CONTEXT< commands::CloseAllDocuments > &aCtx)
std::function< HANDLER_RESULT< Empty >( const commands::CloseAllDocuments &)> CLOSE_ALL_DOCUMENTS_HANDLER
HANDLER_RESULT< Empty > handleSetNetClassAssignments(const HANDLER_CONTEXT< commands::SetNetClassAssignments > &aCtx)
std::function< HANDLER_RESULT< commands::OpenDocumentResponse >( const commands::OpenDocument &)> OPEN_DOCUMENT_HANDLER
HANDLER_RESULT< commands::OpenDocumentResponse > handleCreateDocument(const HANDLER_CONTEXT< commands::CreateDocument > &aCtx)
HANDLER_RESULT< commands::NetClassAssignmentsResponse > handleGetNetClassAssignments(const HANDLER_CONTEXT< commands::GetNetClassAssignments > &aCtx)
HANDLER_RESULT< commands::PathResponse > handleGetKiCadBinaryPath(const HANDLER_CONTEXT< commands::GetKiCadBinaryPath > &aCtx)
HANDLER_RESULT< commands::NetClassesResponse > handleGetNetClasses(const HANDLER_CONTEXT< commands::GetNetClasses > &aCtx)
void SetCloseAllDocumentsHandler(CLOSE_ALL_DOCUMENTS_HANDLER aHandler)
CLOSE_DOCUMENT_HANDLER m_closeDocumentHandler
std::function< HANDLER_RESULT< commands::OpenDocumentResponse >( const commands::CreateDocument &)> CREATE_DOCUMENT_HANDLER
OPEN_DOCUMENT_HANDLER m_openDocumentHandler
void SetCreateDocumentHandler(CREATE_DOCUMENT_HANDLER aHandler)
void SetCloseDocumentHandler(CLOSE_DOCUMENT_HANDLER aHandler)
HANDLER_RESULT< Empty > handleCloseDocument(const HANDLER_CONTEXT< commands::CloseDocument > &aCtx)
HANDLER_RESULT< Empty > handleSetNetClasses(const HANDLER_CONTEXT< commands::SetNetClasses > &aCtx)
std::function< HANDLER_RESULT< Empty >( const commands::CloseDocument &)> CLOSE_DOCUMENT_HANDLER
static tl::expected< bool, ApiResponseStatus > validateProject(const ProjectSpecifier &aProject, bool aAllowEmpty=false)
HANDLER_RESULT< commands::StringResponse > handleGetPluginSettingsPath(const HANDLER_CONTEXT< commands::GetPluginSettingsPath > &aCtx)
HANDLER_RESULT< commands::OpenDocumentResponse > handleOpenDocument(const HANDLER_CONTEXT< commands::OpenDocument > &aCtx)
HANDLER_RESULT< commands::ExpandTextVariablesResponse > handleExpandTextVariables(const HANDLER_CONTEXT< commands::ExpandTextVariables > &aCtx)
HANDLER_RESULT< Empty > handleSetTextVariables(const HANDLER_CONTEXT< commands::SetTextVariables > &aCtx)
HANDLER_RESULT< commands::GetPathsResponse > handleGetPaths(const HANDLER_CONTEXT< commands::GetPaths > &aCtx)
HANDLER_RESULT< project::TextVariables > handleGetTextVariables(const HANDLER_CONTEXT< commands::GetTextVariables > &aCtx)