Skip to content
Extraits de code Groupes Projets
Sélectionner une révision Git
  • 67f9fc8a1d82b55d7ff35ff92e6f8aac02964e03
  • master par défaut
  • script
  • new-devel
  • devel
  • timingView-edit
  • fix-mpv
7 résultats

VivyApplication.hh

Blame
  • VivyApplication.hh 2,33 Kio
    #pragma once
    
    #ifndef __cplusplus
    #error "This is a C++ header"
    #endif
    
    #define vivyApp static_cast<VivyApplication *>(QApplication::instance())
    
    #define currentVivyDocument() dynamic_cast<VivyDocument *>(vivyApp->getCurrentDocument())
    #define currentScriptDocument dynamic_cast<ScriptDocument *>(vivyApp->getCurrentDocument())
    
    // Only support dark theme for now
    #define VIVY_ICON_APP     ":icons/vivy.png"
    #define VIVY_ICON_SCRIPT  ":icons/lua.png"
    #define VIVY_ICON_OPEN    ":icons/dark/document-open.svg"
    #define VIVY_ICON_NEW     ":icons/dark/document-new.svg"
    #define VIVY_ICON_SAVE    ":icons/dark/document-save.svg"
    #define VIVY_ICON_SAVE_AS ":icons/dark/document-save-as.svg"
    #define VIVY_ICON_RENAME  ":icons/dark/document-rename.svg"
    #define VIVY_ICON_ABOUT   ":icons/dark/help-about.svg"
    #define VIVY_ICON_FILE    ":icons/dark/text-x-generic.svg"
    #define VIVY_ICON_FOLDER  ":icons/dark/folder.svg"
    #define VIVY_ICON_PLAY    ":icons/dark/media-play.svg"
    #define VIVY_ICON_PAUSE   ":icons/dark/media-pause.svg"
    #define VIVY_ICON_STOP    ":icons/dark/media-stop.svg"
    #define VIVY_ICON_RUN     ":icons/dark/run.svg"
    
    // Detect MacOS
    #if defined(Q_OS_DARWIN) || defined(Q_OS_MACOS)
    #define VIVY_MACOS
    #endif
    
    #include "Lib/Script/ScriptStore.hh"
    #include "Lib/Document/VivyDocumentStore.hh"
    #include "UI/MainWindow.hh"
    
    namespace Vivy
    {
    class MainWindow;
    
    // Vivy application class
    class VivyApplication : public QApplication {
        Q_OBJECT
    
    public:
        VivyDocumentStore documentStore{};
        ScriptStore scriptStore{};
    
        enum class Font {
            Monospace,
            MonospaceBold,
            Default,
            DefaultItalic,
            DefaultBold,
            DefaultBoldItalic
        };
    
        enum class Theme { System, Dark, Light };
    
    private:
        int fontIdMonospace;
        int fontIdMonospaceBold;
        int fontIdRegular;
        int fontIdItalic;
        int fontIdBold;
        int fontIdBoldItalic;
    
        std::unique_ptr<MainWindow> mainWindowPtr{ nullptr };
        bool useFakeVim{ false };
    
    public:
        VivyApplication(int &argc, char **argv);
    
        int exec() noexcept;
    
        [[nodiscard]] QFont getApplicationFont(Font) const noexcept;
        [[nodiscard]] MainWindow *getMainWindow() const;
        [[nodiscard]] AbstractDocument *getCurrentDocument() const;
        [[nodiscard]] bool getUseFakeVimEditor() const noexcept;
    
        void setUseFakeVimEditor(bool) noexcept;
        void setTheme(Theme) noexcept;
    };
    
    }