10 #include <QJsonDocument>
16 #include <QCoreApplication>
20 u32 NetlistSimulatorControllerPlugin::sMaxControllerId = 0;
32 QString simFilename(
"simulator.json");
42 simEntry[
"id"] = (int) ctrl->get_id();
43 simEntry[
"name"] = ctrl->name();
44 std::string absoluteWorkingDir = ctrl->get_working_directory();
49 simObj[
"simulator"] = simArr;
67 std::vector<std::unique_ptr<NetlistSimulatorController>> retval;
70 if (relname.empty())
return retval;
73 if (!ctrlPlug)
return retval;
84 if (simObj.
contains(
"simulator") && simObj[
"simulator"].isArray())
86 QJsonArray simArr = simObj[
"simulator"].toArray();
87 int n = simArr.
size();
88 for (
int i = 0; i < n; i++)
91 QString workdir = simEntry[
"workdir"].toString();
92 if (workdir.
isEmpty())
continue;
93 if (
QFileInfo(workdir).isRelative()) workdir =
105 return std::make_unique<NetlistSimulatorControllerPlugin>();
110 return std::string(
"netlist_simulator_controller");
115 return std::string(
"0.7");
120 return std::string(
"Non-GUI base plugin to control simulation");
132 qApp->processEvents();
133 return std::unique_ptr<NetlistSimulatorController>(nsc);
144 qApp->processEvents();
145 return std::unique_ptr<NetlistSimulatorController>(nsc);
153 log_warning(
"simulation_plugin",
"Simulation controller with ID={} not found in memory, will return nullptr",
id);
156 qApp->processEvents();
157 return std::shared_ptr<NetlistSimulatorController>(ctrl,[](
void*){;});
168 delete mGuiExtensions;
169 mGuiExtensions =
nullptr;
188 const char* colorLabel[] = {
"Regular waveform",
"Selected waveform",
"Undefined value",
"Background X",
"Background 0",
"Background 1"};
189 std::vector<PluginParameter> retval;
202 QString(
"tab3/col%1").arg(i).toStdString(),
203 std::string(colorLabel[i]),
std::vector< PluginParameter > get_parameter() const override
void set_parameter(const std::vector< PluginParameter > ¶ms) override
std::shared_ptr< spdlog::logger > add_channel(const std::string &channel_name, const std::vector< std::shared_ptr< log_sink >> &sinks, const std::string &level="info")
static std::shared_ptr< log_sink > create_gui_sink()
static std::shared_ptr< log_sink > create_file_sink(const std::filesystem::path &file_name="", const bool truncate=false)
static std::shared_ptr< log_sink > create_stdout_sink(const bool colored=true)
static LogManager * get_instance(const std::filesystem::path &file_name="")
bool is_legal_directory_name() const
std::string get_working_directory() const
NetlistSimulatorController * controller(u32 id) const
static NetlistSimulatorControllerMap * instance()
std::string get_name() const override
void on_unload() override
static SimulationSettings * sSimulationSettings
std::unique_ptr< NetlistSimulatorController > create_simulator_controller(const std::string &nam=std::string(), const std::string &workdir=std::string()) const
std::string get_description() const override
std::shared_ptr< NetlistSimulatorController > simulator_controller_by_id(u32 id) const
static SimulatorSerializer * sSimulatorSerializer
std::string get_version() const override
std::unique_ptr< NetlistSimulatorController > restore_simulator_controller(Netlist *nl, const std::string &filename) const
std::filesystem::path get_relative_file_path(const std::string &filename) const
static ProjectManager * instance()
std::string get_filename(const std::string &serializer_name)
const ProjectDirectory & get_project_directory() const
std::vector< std::unique_ptr< NetlistSimulatorController > > restore()
std::string serialize(Netlist *netlist, const std::filesystem::path &savedir, bool isAutosave) override
void deserialize(Netlist *netlist, const std::filesystem::path &loaddir) override
#define log_warning(channel,...)
BasePluginInterface * get_plugin_instance(const std::string &plugin_name, bool initialize=true, bool silent=false)
std::filesystem::path get_user_config_directory()
std::unique_ptr< BasePluginInterface > create_plugin_instance()
QString absoluteFilePath(const QString &fileName) const const
bool isEmpty(QDir::Filters filters) const const
virtual bool open(QIODevice::OpenMode mode) override
qint64 write(const char *data, qint64 maxSize)
void append(const QJsonValue &value)
QJsonValue at(int i) const const
QJsonDocument fromJson(const QByteArray &json, QJsonParseError *error)
QJsonObject object() const const
bool contains(const QString &key) const const
QJsonObject toObject() const const
bool registerResource(const QString &rccFileName, const QString &mapRoot)
bool unregisterResource(const QString &rccFileName, const QString &mapRoot)
QString fromStdString(const std::string &str)
bool isEmpty() const const
QString number(int n, int base)
std::string toStdString() const const