#ifndef JUCI_SINGLETONS_H_ #define JUCI_SINGLETONS_H_ #include "source.h" #include "window.h" #include "directories.h" #include "terminal.h" #include "notebook.h" #include "theme.h" #include "menu.h" #include #include class Singleton { public: class Config { public: static Source::Config *source() {return source_.get();} static Directories::Config *directories() {return directories_.get();} static Theme::Config *theme() { return theme_.get(); } static Window::Config *window() { return window_.get(); } private: static std::unique_ptr source_; static std::unique_ptr theme_; static std::unique_ptr window_; static std::unique_ptr directories_; }; static std::string config_dir() { return std::string(getenv("HOME")) + "/.juci/config/"; } static std::string theme_dir() { return std::string(getenv("HOME")) + "/.juci/gtk-themes/"; } static std::string log_dir() { return std::string(getenv("HOME")) + "/.juci/log/"; } static std::string style_dir() { return std::string(getenv("HOME")) + "/.juci/styles/"; } static Terminal *terminal(); static Gtk::Label *status(); private: static std::unique_ptr terminal_; static std::unique_ptr status_; }; #endif // JUCI_SINGLETONS_H_