xybrid/xybrid/mainwindow.h

58 lines
1.2 KiB
C++

#pragma once
#include <QMainWindow>
#include "uisocket.h"
#include "data/project.h"
#include "ui/patterneditormodel.h"
class QUndoStack;
namespace Ui {
class MainWindow;
}
namespace Xybrid {
class MainWindow : public QMainWindow {
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow() override;
private:
Ui::MainWindow* ui;
UISocket* socket;
std::shared_ptr<Data::Project> project;
std::shared_ptr<Data::Pattern> editingPattern;
QUndoStack* undoStack;
void onNewProjectLoaded();
void updatePatternLists();
bool selectPatternForEditing(Data::Pattern*);
void openGraph(const std::shared_ptr<Data::Graph>&);
void updateTitle();
public:
const std::shared_ptr<Data::Project>& getProject() const { return project; }
int patternSelection(int = -100);
int sequenceSelection(int = -100);
void playbackPosition(int seq, int row);
protected:
bool eventFilter(QObject *obj, QEvent *event) override;
public slots:
void menuFileNew();
void menuFileOpen();
void menuFileSave();
void menuFileSaveAs();
};
}