47 lines
890 B
C++
47 lines
890 B
C++
#ifndef EXECUTOR_H
|
|
#define EXECUTOR_H
|
|
|
|
#include <QObject>
|
|
|
|
class Machine;
|
|
class QTimer;
|
|
|
|
class Executor : public QObject
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
explicit Executor(Machine* m = nullptr);
|
|
~Executor() override;
|
|
|
|
bool hasEnded() const;
|
|
void resetProgram();
|
|
|
|
public slots:
|
|
// Zažene oz. nadaljuje samodejno izvajanje.
|
|
void start();
|
|
|
|
// Zaustavi samodejno izvajanje.
|
|
void stop();
|
|
|
|
// Izvede en ukaz.
|
|
void step();
|
|
|
|
signals:
|
|
void updateRequested();
|
|
void signalEnded();
|
|
void signalStarted();
|
|
void signalStopped();
|
|
|
|
private slots:
|
|
void runStep(); // povezan s QTimer::timeout
|
|
|
|
private:
|
|
Machine* machine = nullptr;
|
|
QTimer* timer = nullptr;
|
|
bool running = false;
|
|
bool ended = false;
|
|
bool stepping = false; // prepreči reentrant step
|
|
int intervalMs = 500; // privzeta frekvenca izvajanja v ms
|
|
};
|
|
|
|
#endif // EXECUTOR_H
|