8 #ifndef Guit_Trigger_hpp
9 #define Guit_Trigger_hpp
10 #include <forward_list>
113 using Filter = int32_t;
136 static GTrigger* getTrigger(GString
const& trigger_name);
140 virtual bool isEventTrigger()
const {
return true;}
141 virtual class GExprTrigger* toExprTrigger() {
return nullptr;}
142 virtual const class GExprTrigger* toExprTrigger()
const {
return nullptr;}
144 virtual void receiverAdded(Gadget&, GCond&);
145 virtual void receiverRemoved();
146 virtual void receiverDeleted() {}
148 static GEvent* curevent_;
162 class GExprTrigger :
public GTrigger {
167 GExprTrigger(
class GBoolExpr&);
169 bool operator==(GTrigger
const& other)
const override;
171 bool isEventTrigger()
const override {
return false;}
172 GExprTrigger* toExprTrigger()
override {
return this;}
173 const GExprTrigger* toExprTrigger()
const override {
return this;}
175 void fire(GObject& sender,
bool active);
176 GNotifier* notifier()
const {
return notifier_;}
177 void setNotifier(GNotifier*);
178 void addSender(GObject& sender);
179 void senderRemoved(GObject&);
180 void receiverAdded(Gadget&, GCond&)
override;
181 void receiverRemoved()
override;
182 void receiverDeleted()
override;
183 Gadget* receiver() {
return recv_;}
187 std::forward_list<GObject*> senders_;
189 GNotifier* notifier_{};
191 gptr<GBoolExpr> boolexpr_;
192 bool deleting_{}, invalid_{};