26 return std::make_unique<GuiExtensionDemoPlugin>();
36 return std::string(
"gui_extension_demo");
41 return std::string(
"0.1");
46 return std::string(
"Demo: extension of GUI menu by pluggable python scripts");
69 m_python_plugins.clear();
70 m_module_context_contribution.clear();
71 m_gate_context_contribution.clear();
72 m_net_context_contribution.clear();
77 const std::vector<u32>& mods,
78 const std::vector<u32>& gats,
79 const std::vector<u32>& nets)
82 return std::vector<ContextMenuContribution>();
84 if (mods.size() == 1 && gats.empty() && nets.empty() )
85 return m_module_context_contribution;
87 if (mods.empty() && gats.size() == 1 && nets.empty() )
88 return m_gate_context_contribution;
90 if (mods.empty() && gats.empty() && nets.size() == 1 )
91 return m_net_context_contribution;
93 return std::vector<ContextMenuContribution>();
98 const std::vector<u32>& mods,
99 const std::vector<u32>& gats,
100 const std::vector<u32>& nets)
104 if (tag.empty())
return;
106 auto it = m_python_plugins.find(tag);
107 if (it == m_python_plugins.end())
return;
109 it->second->set_function_call(tag);
110 it->second->set_selection(mods, gats, nets);
120 m_parameter = params;
125 m_module_context_contribution.push_back({
this,tagname,label});
126 m_python_plugins.insert(std::make_pair(tagname,plug));
131 m_gate_context_contribution.push_back({
this,tagname,label});
132 m_python_plugins.insert(std::make_pair(tagname,plug));
137 m_net_context_contribution.push_back({
this,tagname,label});
138 m_python_plugins.insert(std::make_pair(tagname,plug));
145 m_parameter.push_back(par);
147 m_python_plugins.insert(std::make_pair(par.get_tagname(),plug));
std::vector< AbstractExtensionInterface * > m_extensions
void add_net_context(GuiExtensionPythonBase *plug, const std::string tagname, const std::string label)
void add_gate_context(GuiExtensionPythonBase *plug, const std::string tagname, const std::string label)
std::vector< PluginParameter > get_parameter() const override
static GuiExtensionContext * sInstance
void add_module_context(GuiExtensionPythonBase *plug, const std::string tagname, const std::string label)
void execute_function(std::string tag, Netlist *nl, const std::vector< u32 > &mods, const std::vector< u32 > &gats, const std::vector< u32 > &nets) override
void set_parameter(const std::vector< PluginParameter > ¶ms) override
void add_main_menu(GuiExtensionPythonBase *plug, const std::vector< PluginParameter > ¶ms)
std::vector< ContextMenuContribution > get_context_contribution(const Netlist *nl, const std::vector< u32 > &mods, const std::vector< u32 > &gats, const std::vector< u32 > &nets) override
void initialize() override
std::string get_description() const override
std::string get_name() const override
std::string get_version() const override
std::unique_ptr< BasePluginInterface > create_plugin_instance()
This file contains various functions to create and load netlists.