20 #include "katefactory.h"
22 #include "katedocument.h"
24 #include "katerenderer.h"
26 #include "katefiletype.h"
27 #include "kateschema.h"
28 #include "katesearch.h"
29 #include "kateconfig.h"
30 #ifndef Q_WS_WIN //todo
31 #include "katejscript.h"
33 #include "kateluaindentscript.h"
34 #include "../interfaces/katecmd.h"
36 #include <kvmallocator.h>
38 #include <kdirwatch.h>
39 #include <kstaticdeleter.h>
41 #include <tqapplication.h>
59 KParts::Part *
createPartObject ( TQWidget *parentWidget,
const char *widgetName, TQObject *parent,
const char *name,
const char *classname,
const TQStringList &args )
61 return KateFactory::self()->createPartObject (parentWidget, widgetName, parent, name, classname, args);
65 K_EXPORT_COMPONENT_FACTORY( libkatepart, KateFactoryPublic )
67 KateFactory *KateFactory::s_self = 0;
69 KateFactory::KateFactory ()
70 : m_aboutData ("katepart", I18N_NOOP("Kate Part"), KATEPART_VERSION,
71 I18N_NOOP( "Embeddable editor component" ),
TDEAboutData::License_LGPL_V2,
72 I18N_NOOP( "(c) 2000-2004 The Kate Authors" ), 0, "http:
73 , m_instance (&m_aboutData)
74 , m_plugins (TDETrader::self()->query("KTextEditor/Plugin"))
83 m_aboutData.
addAuthor (
"Christoph Cullmann",
I18N_NOOP(
"Maintainer"),
"cullmann@kde.org",
"http://www.babylon2k.de");
84 m_aboutData.addAuthor (
"Anders Lund",
I18N_NOOP(
"Core Developer"),
"anders@alweb.dk",
"http://www.alweb.dk");
85 m_aboutData.addAuthor (
"Joseph Wenninger",
I18N_NOOP(
"Core Developer"),
"jowenn@kde.org",
"http://stud3.tuwien.ac.at/~e9925371");
86 m_aboutData.addAuthor (
"Hamish Rodda",
I18N_NOOP(
"Core Developer"),
"rodda@kde.org");
87 m_aboutData.addAuthor (
"Waldo Bastian",
I18N_NOOP(
"The cool buffersystem" ),
"bastian@kde.org" );
88 m_aboutData.addAuthor (
"Charles Samuels",
I18N_NOOP(
"The Editing Commands"),
"charles@kde.org");
89 m_aboutData.addAuthor (
"Matt Newell",
I18N_NOOP(
"Testing, ..."),
"newellm@proaxis.com");
90 m_aboutData.addAuthor (
"Michael Bartl",
I18N_NOOP(
"Former Core Developer"),
"michael.bartl1@chello.at");
91 m_aboutData.addAuthor (
"Michael McCallum",
I18N_NOOP(
"Core Developer"),
"gholam@xtra.co.nz");
92 m_aboutData.addAuthor (
"Jochen Wilhemly",
I18N_NOOP(
"KWrite Author" ),
"digisnap@cs.tu-berlin.de" );
93 m_aboutData.addAuthor (
"Michael Koch",
I18N_NOOP(
"KWrite port to KParts"),
"koch@kde.org");
94 m_aboutData.addAuthor (
"Christian Gebauer", 0,
"gebauer@kde.org" );
95 m_aboutData.addAuthor (
"Simon Hausmann", 0,
"hausmann@kde.org" );
96 m_aboutData.addAuthor (
"Glen Parker",
I18N_NOOP(
"KWrite Undo History, Kspell integration"),
"glenebob@nwlink.com");
97 m_aboutData.addAuthor (
"Scott Manson",
I18N_NOOP(
"KWrite XML Syntax highlighting support"),
"sdmanson@alltel.net");
98 m_aboutData.addAuthor (
"John Firebaugh",
I18N_NOOP(
"Patches and more"),
"jfirebaugh@kde.org");
99 m_aboutData.addAuthor (
"Dominik Haumann",
I18N_NOOP(
"Developer & Highlight wizard"),
"dhdev@gmx.de");
101 m_aboutData.addCredit (
"Matteo Merli",
I18N_NOOP(
"Highlighting for RPM Spec-Files, Perl, Diff and more"),
"merlim@libero.it");
102 m_aboutData.addCredit (
"Rocky Scaletta",
I18N_NOOP(
"Highlighting for VHDL"),
"rocky@purdue.edu");
103 m_aboutData.addCredit (
"Yury Lebedev",
I18N_NOOP(
"Highlighting for SQL"),
"");
104 m_aboutData.addCredit (
"Chris Ross",
I18N_NOOP(
"Highlighting for Ferite"),
"");
105 m_aboutData.addCredit (
"Nick Roux",
I18N_NOOP(
"Highlighting for ILERPG"),
"");
106 m_aboutData.addCredit (
"Carsten Niehaus",
I18N_NOOP(
"Highlighting for LaTeX"),
"");
107 m_aboutData.addCredit (
"Per Wigren",
I18N_NOOP(
"Highlighting for Makefiles, Python"),
"");
108 m_aboutData.addCredit (
"Jan Fritz",
I18N_NOOP(
"Highlighting for Python"),
"");
109 m_aboutData.addCredit (
"Daniel Naber",
"",
"");
110 m_aboutData.addCredit (
"Roland Pabel",
I18N_NOOP(
"Highlighting for Scheme"),
"");
111 m_aboutData.addCredit (
"Cristi Dumitrescu",
I18N_NOOP(
"PHP Keyword/Datatype list"),
"");
112 m_aboutData.addCredit (
"Carsten Pfeiffer",
I18N_NOOP(
"Very nice help"),
"");
113 m_aboutData.addCredit (
I18N_NOOP(
"All people who have contributed and I have forgotten to mention"),
"",
"");
115 m_aboutData.setTranslator(
I18N_NOOP(
"_: NAME OF TRANSLATORS\nYour names"),
I18N_NOOP(
"_: EMAIL OF TRANSLATORS\nYour emails"));
120 m_dirWatch =
new KDirWatch ();
125 m_fileTypeManager =
new KateFileTypeManager ();
130 m_schemaManager =
new KateSchemaManager ();
133 m_documentConfig =
new KateDocumentConfig ();
134 m_viewConfig =
new KateViewConfig ();
135 m_rendererConfig =
new KateRendererConfig ();
140 #ifndef Q_WS_WIN //todo
142 m_jscriptManager =
new KateJScriptManager ();
143 KateCmd::self()->registerCommand (m_jscriptManager);
144 m_indentScriptManagers.append(
new KateIndentJScriptManager());
146 m_jscriptManager = 0;
149 m_indentScriptManagers.append(
new KateLUAIndentScriptManager());
158 m_cmds.push_back (
new SearchCommand());
160 for ( TQValueList<Kate::Command *>::iterator it = m_cmds.begin(); it != m_cmds.end(); ++it )
161 KateCmd::self()->registerCommand (*it);
164 KateFactory::~KateFactory()
169 while (KateDocument *doc=m_documents.first()) {
178 delete m_documentConfig;
180 delete m_rendererConfig;
182 delete m_fileTypeManager;
183 delete m_schemaManager;
189 for ( TQValueList<Kate::Command *>::iterator it = m_cmds.begin(); it != m_cmds.end(); ++it )
193 delete m_jscriptManager;
194 m_indentScriptManagers.setAutoDelete(
true);
201 KateFactory *KateFactory::self ()
204 sdFactory.
setObject(s_self,
new KateFactory ());
209 KParts::Part *KateFactory::createPartObject ( TQWidget *parentWidget,
const char *widgetName, TQObject *parent,
const char *name,
const char *_classname,
const TQStringList & )
211 TQCString classname( _classname );
212 bool bWantSingleView = ( classname !=
"KTextEditor::Document" && classname !=
"Kate::Document" );
213 bool bWantBrowserView = ( classname ==
"Browser/View" );
214 bool bWantReadOnly = (bWantBrowserView || ( classname ==
"KParts::ReadOnlyPart" ));
216 KParts::ReadWritePart *part =
new KateDocument (bWantSingleView, bWantBrowserView, bWantReadOnly, parentWidget, widgetName, parent, name);
222 void KateFactory::registerDocument ( KateDocument *doc )
224 m_documents.append( doc );
227 void KateFactory::deregisterDocument ( KateDocument *doc )
229 m_documents.removeRef( doc );
232 void KateFactory::registerView ( KateView *view )
234 m_views.append( view );
237 void KateFactory::deregisterView ( KateView *view )
239 m_views.removeRef( view );
242 void KateFactory::registerRenderer (
KateRenderer *renderer )
244 m_renderers.append( renderer );
247 void KateFactory::deregisterRenderer (
KateRenderer *renderer )
249 m_renderers.removeRef( renderer );
254 #ifndef Q_WS_WIN //todo
265 KateIndentScript KateFactory::indentScript (
const TQString &scriptname)
267 KateIndentScript result;
268 for(uint i=0;i<m_indentScriptManagers.count();i++)
270 result=m_indentScriptManagers.at(i)->script(scriptname);
271 if (!result.isNull())
return result;