22#include <tqfileinfo.h>
23#include <tqstringlist.h>
29#include <kstandarddirs.h>
30#include <tdeinstance.h>
32#include "kis_resource.h"
33#include "kis_factory.h"
34#include "kis_generic_registry.h"
35#include "kis_resourceserver.h"
37#include "kis_imagepipe_brush.h"
38#include "kis_gradient.h"
39#include "kis_pattern.h"
40#include "kis_palette.h"
41#include <kogradientmanager.h>
43KisResourceServerBase::KisResourceServerBase(TQString type)
44 : m_type(type), m_loaded(false)
48KisResourceServerBase::~KisResourceServerBase()
52void KisResourceServerBase::loadResources(TQStringList filenames)
54 TQStringList uniqueFiles;
56 while( !filenames.empty() )
59 TQString front = *filenames.begin();
60 filenames.pop_front();
62 TQString fname = TQFileInfo(front).fileName();
67 if (uniqueFiles.empty() || uniqueFiles.find(fname) == uniqueFiles.end()) {
68 uniqueFiles.append(fname);
70 resource = createResource(front);
71 if(resource->
load() && resource->valid())
73 m_resources.append(resource);
74 TQ_CHECK_PTR(resource);
75 emit resourceAdded(resource);
85TQValueList<KisResource*> KisResourceServerBase::resources()
88 return TQValueList<KisResource*>();
94void KisResourceServerBase::addResource(
KisResource* resource)
96 if (!resource->valid()) {
97 kdWarning(41001) <<
"Tried to add an invalid resource!" << endl;
101 m_resources.append(resource);
102 emit resourceAdded(resource);
106class ResourceLoaderThread :
public TQThread {
110 ResourceLoaderThread(KisResourceServerBase * server, TQStringList files)
113 , m_fileNames( files )
120 m_server->loadResources(m_fileNames);
125 KisResourceServerBase * m_server;
126 TQStringList m_fileNames;
130TQStringList getFileNames( TQString extensions, TQString type )
132 TQStringList extensionList = TQStringList::split(
":", extensions);
133 TQStringList fileNames;
135 TQStringList::Iterator it;
136 for ( it = extensionList.begin(); it != extensionList.end(); ++it ) {
138 fileNames += KisFactory::instance()->dirs()->findAllResources(type.ascii(), (*it));
144KisResourceServerRegistry *KisResourceServerRegistry::m_singleton = 0;
146KisResourceServerRegistry::KisResourceServerRegistry()
149 KisResourceServer<KisBrush>* brushServer =
new KisResourceServer<KisBrush>(
"kis_brushes");
150 ResourceLoaderThread t1 (brushServer, getFileNames(
"*.gbr",
"kis_brushes" ));
153 KisResourceServer<KisImagePipeBrush>* imagePipeBrushServer =
new KisResourceServer<KisImagePipeBrush>(
"kis_brushes");
154 ResourceLoaderThread t2 (imagePipeBrushServer, getFileNames(
"*.gih",
"kis_brushes"));
157 KisResourceServer<KisPattern>* patternServer =
new KisResourceServer<KisPattern>(
"kis_patterns");
158 ResourceLoaderThread t3 (patternServer, getFileNames(
"*.pat",
"kis_patterns"));
161 KisResourceServer<KisGradient>* gradientServer =
new KisResourceServer<KisGradient>(
"kis_gradients");
162 ResourceLoaderThread t4 (gradientServer, getFileNames(KoGradientManager::filters().join(
":" ),
"kis_gradients"));
166 KisResourceServer<KisPalette>* paletteServer =
new KisResourceServer<KisPalette>(
"kis_palettes");
167 ResourceLoaderThread t5 (paletteServer, getFileNames(
"*.gpl:*.pal:*.act",
"kis_palettes") );
176 add(
KisID(
"BrushServer",
""), brushServer );
177 add(
KisID(
"ImagePipeBrushServer",
""), imagePipeBrushServer );
178 add(
KisID(
"PatternServer",
""), patternServer );
179 add(
KisID(
"GradientServer",
""), gradientServer );
180 add(
KisID(
"PaletteServer",
""), paletteServer );
184KisResourceServerRegistry::~KisResourceServerRegistry()
188KisResourceServerRegistry* KisResourceServerRegistry::instance()
190 if(KisResourceServerRegistry::m_singleton == 0)
192 KisResourceServerRegistry::m_singleton =
new KisResourceServerRegistry();
194 return KisResourceServerRegistry::m_singleton;
198#include "kis_resourceserver.moc"
Chalk has a large number of extensible resources.
The KisResource class provides a representation of Chalk image resources.
virtual bool load()=0
Load this resource.