00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
#include "katefactory.h"
00020
00021
#include "katedocument.h"
00022
#include "kateview.h"
00023
#include "katerenderer.h"
00024
#include "katecmds.h"
00025
#include "katefiletype.h"
00026
#include "kateschema.h"
00027
#include "kateconfig.h"
00028
00029
#include "../interfaces/katecmd.h"
00030
00031
#include <klocale.h>
00032
#include <kdirwatch.h>
00033
#include <kstaticdeleter.h>
00034
00038
class KateFactoryPublic :
public KParts::Factory
00039 {
00040
public:
00041 KateFactoryPublic ()
00042 {
00043 }
00044
00045 ~KateFactoryPublic ()
00046 {
00047 }
00048
00049
KParts::Part *createPartObject (
QWidget *parentWidget,
const char *widgetName,
QObject *parent,
const char *name,
const char *classname,
const QStringList &args )
00050 {
00051
return KateFactory::self()->createPartObject (parentWidget, widgetName, parent, name, classname, args);
00052 }
00053 };
00054
00055
extern "C"
00056 {
00057
void *init_libkatepart()
00058 {
00059
return new KateFactoryPublic ();
00060 }
00061 }
00062
00063 KateFactory *KateFactory::s_self = 0;
00064
00065 KateFactory::KateFactory ()
00066 : m_aboutData ("katepart",
I18N_NOOP("Kate Part"), "2.2",
00067
I18N_NOOP( "Embeddable editor component" ),
KAboutData::License_LGPL_V2,
00068
I18N_NOOP( "(c) 2000-2003 The Kate Authors" ), 0, "http:
00069 , m_instance (&m_aboutData)
00070 , m_plugins (KTrader::self()->query("KTextEditor/Plugin"))
00071 {
00072
00073 s_self =
this;
00074
00075
00076
00077
00078 m_aboutData.addAuthor (
"Christoph Cullmann",
I18N_NOOP(
"Maintainer"),
"cullmann@kde.org",
"http://www.babylon2k.de");
00079 m_aboutData.addAuthor (
"Anders Lund",
I18N_NOOP(
"Core Developer"),
"anders@alweb.dk",
"http://www.alweb.dk");
00080 m_aboutData.addAuthor (
"Joseph Wenninger",
I18N_NOOP(
"Core Developer"),
"jowenn@kde.org",
"http://stud3.tuwien.ac.at/~e9925371");
00081 m_aboutData.addAuthor (
"Hamish Rodda",
I18N_NOOP(
"Core Developer"),
"rodda@kde.org");
00082 m_aboutData.addAuthor (
"Waldo Bastian",
I18N_NOOP(
"The cool buffersystem" ),
"bastian@kde.org" );
00083 m_aboutData.addAuthor (
"Charles Samuels",
I18N_NOOP(
"The Editing Commands"),
"charles@kde.org");
00084 m_aboutData.addAuthor (
"Matt Newell",
I18N_NOOP(
"Testing, ..."),
"newellm@proaxis.com");
00085 m_aboutData.addAuthor (
"Michael Bartl",
I18N_NOOP(
"Former Core Developer"),
"michael.bartl1@chello.at");
00086 m_aboutData.addAuthor (
"Michael McCallum",
I18N_NOOP(
"Core Developer"),
"gholam@xtra.co.nz");
00087 m_aboutData.addAuthor (
"Jochen Wilhemly",
I18N_NOOP(
"KWrite Author" ),
"digisnap@cs.tu-berlin.de" );
00088 m_aboutData.addAuthor (
"Michael Koch",
I18N_NOOP(
"KWrite port to KParts"),
"koch@kde.org");
00089 m_aboutData.addAuthor (
"Christian Gebauer", 0,
"gebauer@kde.org" );
00090 m_aboutData.addAuthor (
"Simon Hausmann", 0,
"hausmann@kde.org" );
00091 m_aboutData.addAuthor (
"Glen Parker",
I18N_NOOP(
"KWrite Undo History, Kspell integration"),
"glenebob@nwlink.com");
00092 m_aboutData.addAuthor (
"Scott Manson",
I18N_NOOP(
"KWrite XML Syntax highlighting support"),
"sdmanson@alltel.net");
00093 m_aboutData.addAuthor (
"John Firebaugh",
I18N_NOOP(
"Patches and more"),
"jfirebaugh@kde.org");
00094
00095 m_aboutData.addCredit (
"Matteo Merli",
I18N_NOOP(
"Highlighting for RPM Spec-Files, Perl, Diff and more"),
"merlim@libero.it");
00096 m_aboutData.addCredit (
"Rocky Scaletta",
I18N_NOOP(
"Highlighting for VHDL"),
"rocky@purdue.edu");
00097 m_aboutData.addCredit (
"Yury Lebedev",
I18N_NOOP(
"Highlighting for SQL"),
"");
00098 m_aboutData.addCredit (
"Chris Ross",
I18N_NOOP(
"Highlighting for Ferite"),
"");
00099 m_aboutData.addCredit (
"Nick Roux",
I18N_NOOP(
"Highlighting for ILERPG"),
"");
00100 m_aboutData.addCredit (
"Carsten Niehaus",
I18N_NOOP(
"Highlighting for LaTeX"),
"");
00101 m_aboutData.addCredit (
"Per Wigren",
I18N_NOOP(
"Highlighting for Makefiles, Python"),
"");
00102 m_aboutData.addCredit (
"Jan Fritz",
I18N_NOOP(
"Highlighting for Python"),
"");
00103 m_aboutData.addCredit (
"Daniel Naber",
"",
"");
00104 m_aboutData.addCredit (
"Roland Pabel",
I18N_NOOP(
"Highlighting for Scheme"),
"");
00105 m_aboutData.addCredit (
"Cristi Dumitrescu",
I18N_NOOP(
"PHP Keyword/Datatype list"),
"");
00106 m_aboutData.addCredit (
"Carsten Presser",
I18N_NOOP(
"Betatest"),
"mord-slime@gmx.de");
00107 m_aboutData.addCredit (
"Jens Haupert",
I18N_NOOP(
"Betatest"),
"haupert@babylon2k.de");
00108 m_aboutData.addCredit (
"Carsten Pfeiffer",
I18N_NOOP(
"Very nice help"),
"");
00109 m_aboutData.addCredit (
I18N_NOOP(
"All people who have contributed and I have forgotten to mention"),
"",
"");
00110
00111 m_aboutData.setTranslator(
I18N_NOOP(
"_: NAME OF TRANSLATORS\nYour names"),
I18N_NOOP(
"_: EMAIL OF TRANSLATORS\nYour emails"));
00112
00113
00114
00115
00116 m_dirWatch =
new KDirWatch ();
00117
00118
00119
00120
00121 m_fileTypeManager =
new KateFileTypeManager ();
00122
00123
00124
00125
00126 m_schemaManager =
new KateSchemaManager ();
00127
00128
00129 m_documentConfig =
new KateDocumentConfig ();
00130 m_viewConfig =
new KateViewConfig ();
00131 m_rendererConfig =
new KateRendererConfig ();
00132
00133
00134
00135
00136 KateCmd::self()->registerCommand (
new KateCommands::CoreCommands());
00137 KateCmd::self()->registerCommand (
new KateCommands::SedReplace ());
00138 KateCmd::self()->registerCommand (
new KateCommands::Character ());
00139 KateCmd::self()->registerCommand (
new KateCommands::Goto ());
00140 KateCmd::self()->registerCommand (
new KateCommands::Date ());
00141 }
00142
00143 KateFactory::~KateFactory()
00144 {
00145
delete m_documentConfig;
00146
delete m_viewConfig;
00147
delete m_rendererConfig;
00148
00149
delete m_fileTypeManager;
00150
delete m_schemaManager;
00151
00152
delete m_dirWatch;
00153 }
00154
00155
static KStaticDeleter<KateFactory> sdFactory;
00156
00157 KateFactory *KateFactory::self ()
00158 {
00159
if (!s_self)
00160 sdFactory.setObject(s_self,
new KateFactory ());
00161
00162
return s_self;
00163 }
00164
00165
KParts::Part *KateFactory::createPartObject (
QWidget *parentWidget,
const char *widgetName,
QObject *parent,
const char *name,
const char *classname,
const QStringList & )
00166 {
00167
bool bWantSingleView = !( classname ==
QString(
"KTextEditor::Document") );
00168
bool bWantBrowserView = ( classname == QString(
"Browser/View") );
00169
bool bWantReadOnly = (bWantBrowserView || ( classname == QString(
"KParts::ReadOnlyPart") ));
00170
00171
KParts::ReadWritePart *part =
new KateDocument (bWantSingleView, bWantBrowserView, bWantReadOnly, parentWidget, widgetName, parent, name);
00172 part->
setReadWrite( !bWantReadOnly );
00173
00174
return part;
00175 }
00176
00177
void KateFactory::registerDocument ( KateDocument *doc )
00178 {
00179 m_documents.append( doc );
00180 }
00181
00182
void KateFactory::deregisterDocument ( KateDocument *doc )
00183 {
00184 m_documents.removeRef( doc );
00185 }
00186
00187
void KateFactory::registerView ( KateView *view )
00188 {
00189 m_views.append( view );
00190 }
00191
00192
void KateFactory::deregisterView ( KateView *view )
00193 {
00194 m_views.removeRef( view );
00195 }
00196
00197
void KateFactory::registerRenderer (
KateRenderer *renderer )
00198 {
00199 m_renderers.append( renderer );
00200 }
00201
00202
void KateFactory::deregisterRenderer (
KateRenderer *renderer )
00203 {
00204 m_renderers.removeRef( renderer );
00205 }
00206
00207