13     bool SelectionRelay::sNavigationSkipsEnabled = 
false;
 
   16         mAction(nullptr), mDisableExecution(false),
 
   25         mAction->mModules.
clear();
 
   26         mAction->mGates.
clear();
 
   27         mAction->mNets.
clear();
 
   30         mAction->mSubfocusIndex = 0;
 
   31         mModulesSuppressedByFilter.
clear();
 
   32         mGatesSuppressedByFilter.
clear();
 
   33         mNetsSuppressedByFilter.
clear();
 
   36     void SelectionRelay::initializeAction()
 
   41             mAction->mModules = mSelectedModules;
 
   42             mAction->mGates   = mSelectedGates;
 
   43             mAction->mNets    = mSelectedNets;
 
   47             mAction->mSubfocus      = mSubfocus;
 
   48             mAction->mSubfocusIndex = mSubfocusIndex;
 
   52     void SelectionRelay::executeAction()
 
   54         if (!mAction || mDisableExecution) 
return;
 
   56         mDisableExecution = 
true;
 
   62         mDisableExecution = 
false;
 
   68         mAction->mGates.
insert(
id);
 
   80         mAction->mModules.
insert(
id);
 
   86         for (
u32 id : mSelectedModules)
 
   88         for (
u32 id : mSelectedGates)
 
   90         for (
u32 id : mSelectedNets)
 
   98         mAction->mGates = ids;
 
  104         mAction->mNets = ids;
 
  110         mAction->mModules = ids;
 
  115         mSelectedModules = mods;
 
  116         mSelectedGates   = gats;
 
  117         mSelectedNets    = nets;
 
  124         mAction->mGates.
remove(
id);
 
  130         mAction->mNets.
remove(
id);
 
  136         mAction->mModules.
remove(
id);
 
  143         mAction->mSubfocus = sfoc;
 
  144         mAction->mSubfocusIndex = sfinx;
 
  152         mSubfocusIndex = sfinx;
 
  171                 mSenderRegister.removeOne(pair);
 
  178         evaluateSelectionChanged(
sender);
 
  209                     size = 
g->get_type()->get_input_pins().size();
 
  219                     size = 
g->get_type()->get_output_pins().size();
 
  237                     size = 
n->get_destinations().size();
 
  278         if (mSubfocusIndex == 0)
 
  279             mAction->mSubfocusIndex = size - 1;
 
  281             --mAction->mSubfocusIndex;
 
  302                     size = 
g->get_type()->get_input_pins().size();
 
  312                     size = 
g->get_type()->get_output_pins().size();
 
  330                     size = 
n->get_destinations().size();
 
  371         if (mSubfocusIndex == size - 1)
 
  372             mAction->mSubfocusIndex = 0;
 
  374             ++mAction->mSubfocusIndex;
 
  389         return mSelectedModules.
contains(
id) && !mModulesSuppressedByFilter.
contains(
id);
 
  394         return mSelectedGates.
contains(
id) && !mGatesSuppressedByFilter.
contains(
id);
 
  404         auto it = mSelectedModules.
find(
id);
 
  405         if (it != mSelectedModules.
end())
 
  408             mAction->mModules.
remove(
id);
 
  415         auto it = mSelectedGates.
find(
id);
 
  416         if (it != mSelectedGates.
end())
 
  419             mAction->mGates.
remove(
id);
 
  426         auto it = mSelectedNets.
find(
id);
 
  427         if (it != mSelectedNets.
end())
 
  430             mAction->mGates.
remove(
id);
 
  435     void SelectionRelay::followModuleInputPin(
Module* m, 
u32 input_pin_index)
 
  438         Q_UNUSED(input_pin_index)
 
  442     void SelectionRelay::followModuleOutputPin(Module* m, 
u32 output_pin_index)
 
  445         Q_UNUSED(output_pin_index)
 
  449     void SelectionRelay::subfocusNone()
 
  453         mAction->mSubfocusIndex = 0;
 
  457     void SelectionRelay::subfocusLeft()
 
  461         mAction->mSubfocusIndex = 0;
 
  465     void SelectionRelay::subfocusRight()
 
  484     void SelectionRelay::evaluateSelectionChanged(
void *sender)
 
  487         for(
const auto pair : mSenderRegister)
 
  491                 method = pair.second;
 
  496         auto createSubstring = [](std::string first_part, 
QSet<u32> ids){
 
  498             std::string final_string = first_part;
 
  499             for(
const auto &i : ids)
 
  500                 final_string += std::to_string(i) + 
", ";
 
  503                 final_string.
resize(final_string.size()-2);
 
  505             return final_string + 
"}";
 
  508         std::string gateIdsSubstring = createSubstring(
"Gate-Ids: {", mSelectedGates);
 
  509         std::string netIdsSubstring = createSubstring(
"Net-Ids: {", mSelectedNets);
 
  510         std::string moduleIdsSubstring = createSubstring(
"Module-Ids: {", mSelectedModules);
 
  511         log_info(
"UserStudy", 
"Selection changed, Method: {}, New Sel.: {}, {}, {}", method.
toStdString(), gateIdsSubstring, netIdsSubstring, moduleIdsSubstring);
 
Set the selection and focus.
bool hasModifications() const
void setObject(const UserActionObject &obj) override
const std::unordered_set< Net * > & get_input_nets() const
const std::unordered_set< Net * > & get_output_nets() const
Gate * get_gate_by_id(const u32 gate_id) const
Module * get_module_by_id(u32 module_id) const
Net * get_net_by_id(u32 net_id) const
The Node class object represents a module or a gate.
QList< UserActionObject > toUserActionObject() const
void setFocus(ItemType ftype, u32 fid, Subfocus sfoc=Subfocus::None, u32 sfinx=0)
void selectionChanged(void *sender)
bool isNetSelected(u32 id) const
void relaySelectionChanged(void *sender)
void removeSender(void *sender)
void relaySubfocusChanged(void *sender)
QList< Node > selectedNodesList() const
QList< u32 > selectedModulesList() const
void setFocusDirect(ItemType ftype, u32 fid, Subfocus sfoc=Subfocus::None, u32 sfinx=0)
void removeModule(u32 id)
void handleNetRemoved(const u32 id)
void actionSetSelected(const QSet< u32 > &mods, const QSet< u32 > &gats, const QSet< u32 > &nets)
QList< u32 > selectedGatesList() const
void handleGateRemoved(const u32 id)
void handleModuleRemoved(const u32 id)
void setSelectedGates(const QSet< u32 > &ids)
SelectionRelay(QObject *parent=nullptr)
bool isModuleSelected(u32 id) const
void setSelectedNets(const QSet< u32 > &ids)
void subfocusChanged(void *sender)
void registerSender(void *sender, QString name)
bool isGateSelected(u32 id) const
void setSelectedModules(const QSet< u32 > &ids)
The UserActionObject class represents a single object used in UserAction.
static ObjectType fromSelectionType(SelectionRelay::ItemType itp)
#define log_info(channel,...)
void append(const T &value)
QObject * sender() const const
bool contains(const T &value) const const
QSet::iterator find(const T &value)
QSet::iterator insert(const T &value)
bool remove(const T &value)
std::string toStdString() const const
void append(const T &value)