1 // Copyright (C) 2015 Ben Asselstine 2 // 3 // This program is free software; you can redistribute it and/or modify 4 // it under the terms of the GNU General Public License as published by 5 // the Free Software Foundation; either version 3 of the License, or 6 // (at your option) any later version. 7 // 8 // This program is distributed in the hope that it will be useful, 9 // but WITHOUT ANY WARRANTY; without even the implied warranty of 10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 // GNU Library General Public License for more details. 12 // 13 // You should have received a copy of the GNU General Public License 14 // along with this program; if not, write to the Free Software 15 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 16 // 02110-1301, USA. 17 18 #pragma once 19 #ifndef BUILDER_CACHE_H 20 #define BUILDER_CACHE_H 21 22 #include <map> 23 #include <gtkmm.h> 24 25 //! A store of Gtk::Builder objects. 26 /** 27 * Why re-instantiate builder objects when we can just open them once? 28 * 29 */ 30 class BuilderCache: public std::map<Glib::ustring, Glib::RefPtr<Gtk::Builder> > 31 { 32 public: 33 //! Returns the singleton instance. Creates a new one if required. 34 static BuilderCache* getInstance(); 35 36 //! Explicitly deletes the singleton instance. 37 static void deleteInstance(); 38 39 //! Go get a builder object by name. 40 static Glib::RefPtr<Gtk::Builder> get(Glib::ustring f); 41 42 //! Go get a builder object by name. 43 static Glib::RefPtr<Gtk::Builder> editor_get(Glib::ustring f); 44 45 protected: 46 47 // Constructor. 48 BuilderCache(); 49 50 //! Destructor. ~BuilderCache()51 ~BuilderCache() {}; 52 53 private: 54 55 void preloadAllBuilders(Glib::ustring dir); 56 57 // DATA 58 59 static BuilderCache * s_instance; 60 }; 61 62 #endif // BUILDER_CACHE_H 63 64 // End of file 65