/* This file is part of the KDE libraries Copyright (C) 2001-2004 Christoph Cullmann This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License version 2 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __KATE_FACTORY_H__ #define __KATE_FACTORY_H__ #include "katejscript.h" #include #include #include #include // katepart version must be a string in double quotes, format: "x.x" #define KATEPART_VERSION "2.5" class KateCmd; class KateFileTypeManager; class KateSchemaManager; class KateDocumentConfig; class KateViewConfig; class KateRendererConfig; class KateDocument; class KateRenderer; class KateView; class KateJScript; class KateJScriptManager; class KateIndentScriptManagerAbstract; class KDirWatch; class KVMAllocator; namespace Kate { class Command; } class KateFactory { private: /** * Default constructor, private, as singleton */ KateFactory (); public: /** * Destructor */ ~KateFactory (); /** * singleton accessor * @return instance of the factory */ static KateFactory *self (); /** * reimplemented create object method * @param parentWidget parent widget * @param widgetName widget name * @param parent TQObject parent * @param name object name * @param classname class parent * @param args additional arguments * @return constructed part object */ KParts::Part *createPartObject ( TQWidget *parentWidget, const char *widgetName, TQObject *parent, const char *name, const char *classname, const TQStringList &args ); /** * public accessor to the instance * @return instance */ inline TDEInstance *instance () { return &m_instance; }; /** * register document at the factory * this allows us to loop over all docs for example on config changes * @param doc document to register */ void registerDocument ( KateDocument *doc ); /** * unregister document at the factory * @param doc document to register */ void deregisterDocument ( KateDocument *doc ); /** * register view at the factory * this allows us to loop over all views for example on config changes * @param view view to register */ void registerView ( KateView *view ); /** * unregister view at the factory * @param view view to unregister */ void deregisterView ( KateView *view ); /** * register renderer at the factory * this allows us to loop over all views for example on config changes * @param renderer renderer to register */ void registerRenderer ( KateRenderer *renderer ); /** * unregister renderer at the factory * @param renderer renderer to unregister */ void deregisterRenderer ( KateRenderer *renderer ); /** * return a list of all registered docs * @return all known documents */ inline TQPtrList *documents () { return &m_documents; }; /** * return a list of all registered views * @return all known views */ inline TQPtrList *views () { return &m_views; }; /** * return a list of all registered renderers * @return all known renderers */ inline TQPtrList *renderers () { return &m_renderers; }; /** * on start detected plugins * @return list of all at launch detected tdetexteditor::plugins */ inline const TDETrader::OfferList &plugins () { return m_plugins; }; /** * global dirwatch * @return dirwatch instance */ inline KDirWatch *dirWatch () { return m_dirWatch; }; /** * global filetype manager * used to manage the file types centrally * @return filetype manager */ inline KateFileTypeManager *fileTypeManager () { return m_fileTypeManager; }; /** * manager for the katepart schemas * @return schema manager */ inline KateSchemaManager *schemaManager () { return m_schemaManager; }; /** * fallback document config * @return default config for all documents */ inline KateDocumentConfig *documentConfig () { return m_documentConfig; } /** * fallback view config * @return default config for all views */ inline KateViewConfig *viewConfig () { return m_viewConfig; } /** * fallback renderer config * @return default config for all renderers */ inline KateRendererConfig *rendererConfig () { return m_rendererConfig; } /** * Global allocator for swapping * @return allocator */ inline KVMAllocator *vm () { return m_vm; } /** * global interpreter, for nice js stuff */ KateJScript *jscript (); /** * Global javascript collection */ KateJScriptManager *jscriptManager () { return m_jscriptManager; } /** * looks up a script given by name. If there are more than * one matching, the first found will be taken */ KateIndentScript indentScript (const TQString &scriptname); private: /** * instance of this factory */ static KateFactory *s_self; /** * about data (authors and more) */ TDEAboutData m_aboutData; /** * our kinstance */ TDEInstance m_instance; /** * registered docs */ TQPtrList m_documents; /** * registered views */ TQPtrList m_views; /** * registered renderers */ TQPtrList m_renderers; /** * global dirwatch object */ KDirWatch *m_dirWatch; /** * filetype manager */ KateFileTypeManager *m_fileTypeManager; /** * schema manager */ KateSchemaManager *m_schemaManager; /** * at start found plugins */ TDETrader::OfferList m_plugins; /** * fallback document config */ KateDocumentConfig *m_documentConfig; /** * fallback view config */ KateViewConfig *m_viewConfig; /** * fallback renderer config */ KateRendererConfig *m_rendererConfig; /** * vm allocator */ KVMAllocator *m_vm; /** * internal commands */ TQValueList m_cmds; /** * js interpreter */ KateJScript *m_jscript; /** * js script manager */ KateJScriptManager *m_jscriptManager; /** * manager for js based indenters */ TQPtrList m_indentScriptManagers; }; #endif // kate: space-indent on; indent-width 2; replace-tabs on;