krita

kis_factory.cc

00001 /*
00002  *  kis_factory.cc - part of Krayon
00003  *
00004  *  Copyright (c) 1999 Matthias Elter <elter@kde.org>
00005  *
00006  *  This program is free software; you can redistribute it and/or modify
00007  *  it under the terms of the GNU General Public License as published by
00008  *  the Free Software Foundation; either version 2 of the License, or
00009  *  (at your option) any later version.
00010  *
00011  *  This program is distributed in the hope that it will be useful,
00012  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00013  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014  *  GNU General Public License for more details.
00015  *
00016  *  You should have received a copy of the GNU General Public License
00017  *  along with this program; if not, write to the Free Software
00018  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
00019  */
00020 #include <config.h>
00021 #include LCMS_HEADER
00022 
00023 #include <qstringlist.h>
00024 #include <qdir.h>
00025 
00026 #include <kdebug.h>
00027 #include <kinstance.h>
00028 #include <kglobal.h>
00029 #include <klocale.h>
00030 #include <kstandarddirs.h>
00031 #include <kiconloader.h>
00032 
00033 #include "kis_aboutdata.h"
00034 #include "kis_resourceserver.h"
00035 #include "kis_paintop_registry.h"
00036 #include "kis_filter_registry.h"
00037 #include "kis_tool_registry.h"
00038 #include "kis_doc.h"
00039 #include "kis_brush.h"
00040 #include "kis_imagepipe_brush.h"
00041 #include "kis_gradient.h"
00042 #include "kis_pattern.h"
00043 #include "kis_palette.h"
00044 #include <kogradientmanager.h>
00045 
00046 #include "kis_factory.h"
00047 
00048 KAboutData* KisFactory::s_aboutData = 0;
00049 KInstance* KisFactory::s_instance = 0;
00050 
00051 
00052 
00053 KisFactory::KisFactory( QObject* parent, const char* name )
00054     : KoFactory( parent, name )
00055 {
00056     s_aboutData = newKritaAboutData();
00057 
00058     (void)instance();
00059 
00060     // Load extension modules and plugins
00061     KisToolRegistry::instance();
00062     KisPaintOpRegistry::instance();
00063     KisFilterRegistry::instance();
00064     KisResourceServerRegistry::instance();
00065 
00066 
00067 
00068 }
00069 
00070 KisFactory::~KisFactory()
00071 {
00072     delete s_aboutData;
00073     s_aboutData = 0L;
00074     delete s_instance;
00075     s_instance = 0L;
00076 }
00077 
00081 KParts::Part* KisFactory::createPartObject( QWidget *parentWidget,
00082                         const char *widgetName, QObject* parent,
00083                         const char* name, const char* classname, const QStringList & )
00084 {
00085     bool bWantKoDocument = ( strcmp( classname, "KoDocument" ) == 0 );
00086 
00087     KisDoc *doc = new KisDoc( parentWidget,
00088                   widgetName, parent, name, !bWantKoDocument );
00089     Q_CHECK_PTR(doc);
00090 
00091     if ( !bWantKoDocument )
00092         doc->setReadWrite( false );
00093 
00094     return doc;
00095 }
00096 
00097 
00098 KAboutData* KisFactory::aboutData()
00099 {
00100     return s_aboutData;
00101 }
00102 
00103 KInstance* KisFactory::instance()
00104 {
00105     QString homedir = getenv("HOME");
00106     
00107     if ( !s_instance )
00108     {
00109         s_instance = new KInstance(s_aboutData);
00110         Q_CHECK_PTR(s_instance);
00111 
00112         s_instance->dirs()->addResourceType("krita_template", KStandardDirs::kde_default("data") + "krita/templates");
00113 
00114         // XXX: Are these obsolete?
00115         s_instance->dirs()->addResourceType("kis", KStandardDirs::kde_default("data") + "krita/");
00116 
00117         s_instance->dirs()->addResourceType("kis_pics", KStandardDirs::kde_default("data") + "krita/pics/");
00118 
00119         s_instance->dirs()->addResourceType("kis_images", KStandardDirs::kde_default("data") + "krita/images/");
00120 
00121         s_instance->dirs()->addResourceType("toolbars", KStandardDirs::kde_default("data") + "koffice/toolbar/");
00122 
00123         // Create spec
00124 
00125         s_instance->dirs()->addResourceType("kis_brushes", KStandardDirs::kde_default("data") + "krita/brushes/");
00126         s_instance->dirs()->addResourceDir("kis_brushes", "/usr/share/create/brushes/gimp");
00127         s_instance->dirs()->addResourceDir("kis_brushes", QDir::homeDirPath() + QString("/.create/brushes/gimp"));
00128     
00129         s_instance->dirs()->addResourceType("kis_patterns", KStandardDirs::kde_default("data") + "krita/patterns/");
00130         s_instance->dirs()->addResourceDir("kis_patterns", "/usr/share/create/patterns/gimp");
00131         s_instance->dirs()->addResourceDir("kis_patterns", QDir::homeDirPath() + QString("/.create/patterns/gimp"));
00132 
00133         s_instance->dirs()->addResourceType("kis_gradients", KStandardDirs::kde_default("data") + "krita/gradients/");
00134         s_instance->dirs()->addResourceDir("kis_gradients", "/usr/share/create/gradients/gimp");
00135         s_instance->dirs()->addResourceDir("kis_gradients", QDir::homeDirPath() + QString("/.create/gradients/gimp"));
00136  
00137         s_instance->dirs()->addResourceType("kis_profiles", KStandardDirs::kde_default("data") + "krita/profiles/");
00138         s_instance->dirs()->addResourceDir("kis_profiles", "/usr/share/color/icc");
00139         s_instance->dirs()->addResourceDir("kis_profiles", QDir::homeDirPath() + QString("/.icc"));
00140 
00141         s_instance->dirs()->addResourceType("kis_palettes", KStandardDirs::kde_default("data") + "krita/palettes/");
00142         s_instance->dirs()->addResourceDir("kis_palettes", "/usr/share/create/swatches");
00143         s_instance->dirs()->addResourceDir("kis_palettes", QDir::homeDirPath() + QString("/.create/swatches"));
00144 
00145         // Tell the iconloader about share/apps/koffice/icons
00146         s_instance->iconLoader()->addAppDir("koffice");
00147     }
00148 
00149     return s_instance;
00150 }
00151 
00152 #include "kis_factory.moc"
KDE Home | KDE Accessibility Home | Description of Access Keys