KiCad PCB EDA Suite
Loading...
Searching...
No Matches
io_base.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 KiCad Developers, see AUTHORS.txt for contributors.
5 *
6 * This program is free software: you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License as published by the
8 * Free Software Foundation, either version 3 of the License, or (at your
9 * option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful, but
12 * WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License along
17 * with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19
20
21#ifndef IO_BASE_H_
22#define IO_BASE_H_
23
24#include <vector>
25#include <string>
26#include <wx/string.h>
27
28class REPORTER;
30class STRING_UTF8_MAP;
31
33{
34public:
39 {
40 wxString m_Description;
41 std::vector<std::string> m_FileExtensions;
42 std::vector<std::string> m_ExtensionsInDir;
43 bool m_IsFile;
44
45 IO_FILE_DESC( const wxString& aDescription, const std::vector<std::string>& aFileExtensions,
46 const std::vector<std::string>& aExtsInFolder = {}, bool aIsFile = true ) :
47 m_Description( aDescription ),
48 m_FileExtensions( aFileExtensions ), m_ExtensionsInDir( aExtsInFolder ),
49 m_IsFile( aIsFile )
50 {
51 }
52
53 IO_FILE_DESC() : IO_FILE_DESC( wxEmptyString, {} ) {}
54
58 wxString FileFilter() const;
59
60 operator bool() const { return !m_Description.empty(); }
61 };
62
63 virtual ~IO_BASE() = default;
64
68 const wxString& GetName() const { return m_name; }
69
73 virtual void SetReporter( REPORTER* aReporter ) { m_reporter = aReporter; }
74
78 virtual void SetProgressReporter( PROGRESS_REPORTER* aReporter ) { m_progressReporter = aReporter; }
79
80
82 // Library-related functions
84
90 virtual const IO_FILE_DESC GetLibraryDesc() const = 0;
91
99 virtual const IO_FILE_DESC GetLibraryFileDesc() const { return GetLibraryDesc(); }
100
108 virtual bool CanReadLibrary( const wxString& aFileName ) const;
109
126 virtual void CreateLibrary( const wxString& aLibraryPath,
127 const STRING_UTF8_MAP* aProperties = nullptr );
128
146 virtual bool DeleteLibrary( const wxString& aLibraryPath,
147 const STRING_UTF8_MAP* aProperties = nullptr );
148
159 virtual bool IsLibraryWritable( const wxString& aLibraryPath );
160
185 virtual void GetLibraryOptions( STRING_UTF8_MAP* aListToAppendTo ) const;
186
187protected:
188 // Delete the zero-argument base constructor to force proper construction
189 IO_BASE() = delete;
190
195 IO_BASE( const wxString& aName ) :
196 m_name( aName ),
197 m_reporter( nullptr ),
198 m_progressReporter( nullptr )
199 {
200 }
201
202
204 wxString m_name;
205
208
211};
212
213#endif // IO_BASE_H_
IO_BASE()=delete
const wxString & GetName() const
Return a brief hard coded name for this IO interface.
Definition: io_base.h:68
REPORTER * m_reporter
Reporter to log errors/warnings to, may be nullptr.
Definition: io_base.h:207
wxString m_name
Name of the IO loader.
Definition: io_base.h:204
virtual bool DeleteLibrary(const wxString &aLibraryPath, const STRING_UTF8_MAP *aProperties=nullptr)
Delete an existing library and returns true, or if library does not exist returns false,...
Definition: io_base.cpp:50
virtual void GetLibraryOptions(STRING_UTF8_MAP *aListToAppendTo) const
Append supported IO options to aListToAppenTo along with internationalized descriptions.
Definition: io_base.cpp:61
virtual const IO_FILE_DESC GetLibraryFileDesc() const
Get the descriptor for the individual library elements that this IO plugin operates on.
Definition: io_base.h:99
IO_BASE(const wxString &aName)
Definition: io_base.h:195
virtual ~IO_BASE()=default
virtual const IO_FILE_DESC GetLibraryDesc() const =0
Get the descriptor for the library container that this IO plugin operates on.
virtual void SetReporter(REPORTER *aReporter)
Set an optional reporter for warnings/errors.
Definition: io_base.h:73
virtual void SetProgressReporter(PROGRESS_REPORTER *aReporter)
Set an optional progress reporter.
Definition: io_base.h:78
virtual void CreateLibrary(const wxString &aLibraryPath, const STRING_UTF8_MAP *aProperties=nullptr)
Create a new empty library at aLibraryPath empty.
Definition: io_base.cpp:44
PROGRESS_REPORTER * m_progressReporter
Progress reporter to track the progress of the operation, may be nullptr.
Definition: io_base.h:210
virtual bool CanReadLibrary(const wxString &aFileName) const
Checks if this IO object can read the specified library file/directory.
Definition: io_base.cpp:67
virtual bool IsLibraryWritable(const wxString &aLibraryPath)
Return true if the library at aLibraryPath is writable.
Definition: io_base.cpp:56
A progress reporter interface for use in multi-threaded environments.
A pure virtual class used to derive REPORTER objects from.
Definition: reporter.h:71
A name/value tuple with unique names and optional values.
Container that describes file type info.
Definition: io_base.h:39
std::vector< std::string > m_ExtensionsInDir
In case of folders: extensions of files inside.
Definition: io_base.h:42
IO_FILE_DESC(const wxString &aDescription, const std::vector< std::string > &aFileExtensions, const std::vector< std::string > &aExtsInFolder={}, bool aIsFile=true)
Definition: io_base.h:45
bool m_IsFile
Whether the library is a folder or a file.
Definition: io_base.h:43
wxString m_Description
Description shown in the file picker dialog.
Definition: io_base.h:40
std::vector< std::string > m_FileExtensions
Filter used for file pickers if m_IsFile is true.
Definition: io_base.h:41
wxString FileFilter() const
Definition: io_base.cpp:38