#ifndef CUSTOMSCRIPTSEDITOR_H
#define CUSTOMSCRIPTSEDITOR_H

#include <QMainWindow>
#include <QListWidget>
#include <QAbstractButton>
#include <QMessageBox>

#include "customscriptslistitem.h"

namespace Ui {
class CustomScriptsEditor;
}


class CustomScriptsEditor : public QMainWindow
{
    Q_OBJECT

public:
    explicit CustomScriptsEditor(QWidget *parent = nullptr);
    ~CustomScriptsEditor();

signals:
    void reloadScriptEngine();

private:
    Ui::CustomScriptsEditor *ui;

    bool hasUnsavedChanges = false;
    QString importDir;
    const QString baseDir;

    void displayScript(const QString &filepath);
    QString chooseScript(QString dir);

    void removeScript(QListWidgetItem * item);
    void replaceScript(QListWidgetItem * item);
    void openScript(QListWidgetItem * item);

    QString getListItemFilepath(QListWidgetItem * item) const;
    void setListItemFilepath(QListWidgetItem * item, QString filepath) const;

    int prompt(const QString &text, QMessageBox::StandardButton defaultButton);
    void save();
    void closeEvent(QCloseEvent*);

    void initShortcuts();
    QObjectList shortcutableObjects() const;
    void applyUserShortcuts();

private slots:
    void dialogButtonClicked(QAbstractButton *button);
    void addNewScript();
    void reloadScripts();
    void removeSelectedScripts();
    void openSelectedScripts();
};

#endif // CUSTOMSCRIPTSEDITOR_H