• Skip to content
  • Skip to link menu
Trinity API Reference
  • Trinity API Reference
  • tdeparts
 

tdeparts

  • tdeparts
componentfactory.h
1#ifndef __tdeparts_componentfactory_h__
2#define __tdeparts_componentfactory_h__
3
4#include <tdeparts/factory.h>
5#include <tdeparts/part.h>
6#include <ktrader.h>
7#include <tqmetaobject.h>
8
9namespace KParts
10{
11
12 // this is a namespace and not a class because stupid egcs 1.1.2 doesn't grok
13 // static template methods in classes. !@%@#$!
17 namespace ComponentFactory
18 {
37 enum ComponentLoadingError { ErrNoServiceFound = 1,
38 ErrServiceProvidesNoLibrary,
39 ErrNoLibrary,
40 ErrNoFactory,
41 ErrNoComponent };
42
60 template <class T>
61 static T *createInstanceFromFactory( KLibFactory *factory, TQObject *parent = 0,
62 const char *name = 0,
63 const TQStringList &args = TQStringList() )
64 {
65 TQObject *object = factory->create( parent, name,
66 T::staticMetaObject()->className(),
67 args );
68
69 T *result = dynamic_cast<T *>( object );
70 if ( !result )
71 delete object;
72 return result;
73 }
74
94 template <class T>
95 static T *createPartInstanceFromFactory( KParts::Factory *factory,
96 TQWidget *parentWidget = 0,
97 const char *widgetName = 0,
98 TQObject *parent = 0,
99 const char *name = 0,
100 const TQStringList &args = TQStringList() )
101 {
102 KParts::Part *object = factory->createPart( parentWidget, widgetName,
103 parent, name,
104 T::staticMetaObject()->className(),
105 args );
106
107 T *result = dynamic_cast<T *>( object );
108 if ( !result )
109 delete object;
110 return result;
111 }
112
126 template <class T>
127 static T *createInstanceFromLibrary( const char *libraryName, TQObject *parent = 0,
128 const char *name = 0,
129 const TQStringList &args = TQStringList(),
130 int *error = 0 )
131 {
132 KLibrary *library = KLibLoader::self()->library( libraryName );
133 if ( !library )
134 {
135 if ( error )
136 *error = ErrNoLibrary;
137 return 0;
138 }
139 KLibFactory *factory = library->factory();
140 if ( !factory )
141 {
142 library->unload();
143 if ( error )
144 *error = ErrNoFactory;
145 return 0;
146 }
147 T *res = createInstanceFromFactory<T>( factory, parent, name, args );
148 if ( !res )
149 {
150 library->unload();
151 if ( error )
152 *error = ErrNoComponent;
153 }
154 return res;
155 }
156
157 template <class T>
158 static T *createPartInstanceFromLibrary( const char *libraryName,
159 TQWidget *parentWidget = 0,
160 const char *widgetName = 0,
161 TQObject *parent = 0,
162 const char *name = 0,
163 const TQStringList &args = TQStringList(),
164 int *error = 0 )
165 {
166 KLibrary *library = KLibLoader::self()->library( libraryName );
167 if ( !library )
168 {
169 if ( error )
170 *error = ErrNoLibrary;
171 return 0;
172 }
173 KLibFactory *factory = library->factory();
174 if ( !factory )
175 {
176 library->unload();
177 if ( error )
178 *error = ErrNoFactory;
179 return 0;
180 }
181 KParts::Factory *partFactory = dynamic_cast<KParts::Factory *>( factory );
182 if ( !partFactory )
183 {
184 library->unload();
185 if ( error )
186 *error = ErrNoFactory;
187 return 0;
188 }
189 T *res = createPartInstanceFromFactory<T>( partFactory, parentWidget,
190 widgetName, parent, name, args );
191 if ( !res )
192 {
193 library->unload();
194 if ( error )
195 *error = ErrNoComponent;
196 }
197 return res;
198 }
199
200 template <class T>
201 static T *createInstanceFromService( const KService::Ptr &service,
202 TQObject *parent = 0,
203 const char *name = 0,
204 const TQStringList &args = TQStringList(),
205 int *error = 0 )
206 {
207 TQString library = service->library();
208 if ( library.isEmpty() )
209 {
210 if ( error )
211 *error = ErrServiceProvidesNoLibrary;
212 return 0;
213 }
214
215 return createInstanceFromLibrary<T>( library.local8Bit().data(), parent,
216 name, args, error );
217 }
218
219 template <class T>
220 static T *createPartInstanceFromService( const KService::Ptr &service,
221 TQWidget *parentWidget = 0,
222 const char *widgetName = 0,
223 TQObject *parent = 0,
224 const char *name = 0,
225 const TQStringList &args = TQStringList(),
226 int *error = 0 )
227 {
228 TQString library = service->library();
229 if ( library.isEmpty() )
230 {
231 if ( error )
232 *error = ErrServiceProvidesNoLibrary;
233 return 0;
234 }
235
236 return createPartInstanceFromLibrary<T>( library.local8Bit().data(), parentWidget,
237 widgetName, parent, name, args, error );
238 }
239
240 template <class T, class ServiceIterator>
241 static T *createInstanceFromServices( ServiceIterator begin, ServiceIterator end,
242 TQObject *parent = 0,
243 const char *name = 0,
244 const TQStringList &args = TQStringList(),
245 int *error = 0 )
246 {
247 for (; begin != end; ++begin )
248 {
249 KService::Ptr service = *begin;
250
251 if ( error )
252 *error = 0;
253
254 T *component = createInstanceFromService<T>( service, parent, name,
255 args, error );
256 if ( component )
257 return component;
258 }
259
260 if ( error )
261 *error = ErrNoServiceFound;
262
263 return 0;
264
265 }
266
267 template <class T, class ServiceIterator>
268 static T *createPartInstanceFromServices( ServiceIterator begin,
269 ServiceIterator end,
270 TQWidget *parentWidget = 0,
271 const char *widgetName = 0,
272 TQObject *parent = 0,
273 const char *name = 0,
274 const TQStringList &args = TQStringList(),
275 int *error = 0 )
276 {
277 for (; begin != end; ++begin )
278 {
279 KService::Ptr service = *begin;
280
281 if ( error )
282 *error = 0;
283
284 T *component = createPartInstanceFromService<T>( service, parentWidget,
285 widgetName, parent,
286 name, args, error );
287 if ( component )
288 return component;
289 }
290
291 if ( error )
292 *error = ErrNoServiceFound;
293
294 return 0;
295
296 }
297
320 template <class T>
321 static T *createInstanceFromQuery( const TQString &serviceType,
322 const TQString &constraint = TQString::null,
323 TQObject *parent = 0,
324 const char *name = 0,
325 const TQStringList &args = TQStringList(),
326 int *error = 0 )
327 {
328 TDETrader::OfferList offers = TDETrader::self()->query( serviceType, constraint );
329 if ( offers.isEmpty() )
330 {
331 if ( error )
332 *error = ErrNoServiceFound;
333 return 0;
334 }
335
336 return createInstanceFromServices<T>( offers.begin(),
337 offers.end(),
338 parent, name, args, error );
339 }
340
369 template <class T>
370 static T *createPartInstanceFromQuery( const TQString &serviceType,
371 const TQString &constraint,
372 TQWidget *parentWidget = 0,
373 const char *widgetName = 0,
374 TQObject *parent = 0,
375 const char *name = 0,
376 const TQStringList &args = TQStringList(),
377 int *error = 0 )
378 {
379 TDETrader::OfferList offers = TDETrader::self()->query( serviceType, TQString::fromLatin1("KParts/ReadOnlyPart"), constraint, TQString::null );
380 if ( offers.isEmpty() )
381 {
382 if ( error )
383 *error = ErrNoServiceFound;
384 return 0;
385 }
386
387 return createPartInstanceFromServices<T>( offers.begin(), offers.end(),
388 parentWidget, widgetName,
389 parent, name, args, error );
390 }
391
392 }
393
394}
395
396#endif
KLibFactory
KLibFactory::create
TQObject * create(TQObject *parent=0, const char *name=0, const char *classname="TQObject", const TQStringList &args=TQStringList())
KLibLoader::self
static KLibLoader * self()
KLibLoader::library
virtual KLibrary * library(const char *libname)
KLibrary
KLibrary::unload
void unload() const
KLibrary::factory
KLibFactory * factory()
KParts::Factory
A generic factory object to create a Part.
Definition: factory.h:41
KParts::Factory::createPart
Part * createPart(TQWidget *parentWidget=0, const char *widgetName=0, TQObject *parent=0, const char *name=0, const char *classname="KParts::Part", const TQStringList &args=TQStringList())
Creates a part.
Definition: factory.cpp:42
KParts::Part
Base class for parts.
Definition: part.h:182
KParts::ComponentFactory::createInstanceFromFactory
static T * createInstanceFromFactory(KLibFactory *factory, TQObject *parent=0, const char *name=0, const TQStringList &args=TQStringList())
This template function allows to ask the given factory to create an instance of the given template ty...
Definition: componentfactory.h:61
KParts::ComponentFactory::createPartInstanceFromQuery
static T * createPartInstanceFromQuery(const TQString &serviceType, const TQString &constraint, TQWidget *parentWidget=0, const char *widgetName=0, TQObject *parent=0, const char *name=0, const TQStringList &args=TQStringList(), int *error=0)
This method creates and returns a KParts part from a serviceType (e.g.
Definition: componentfactory.h:370
KParts::ComponentFactory::ComponentLoadingError
ComponentLoadingError
This enum type defines the possible error cases that can happen when loading a component.
Definition: componentfactory.h:37
KParts::ComponentFactory::createInstanceFromQuery
static T * createInstanceFromQuery(const TQString &serviceType, const TQString &constraint=TQString::null, TQObject *parent=0, const char *name=0, const TQStringList &args=TQStringList(), int *error=0)
This method creates and returns a plugin, from the trader query for a given serviceType.
Definition: componentfactory.h:321
KParts::ComponentFactory::createInstanceFromLibrary
static T * createInstanceFromLibrary(const char *libraryName, TQObject *parent=0, const char *name=0, const TQStringList &args=TQStringList(), int *error=0)
This template allows to load the specified library and ask the factory to create an instance of the g...
Definition: componentfactory.h:127
KParts::ComponentFactory::createPartInstanceFromFactory
static T * createPartInstanceFromFactory(KParts::Factory *factory, TQWidget *parentWidget=0, const char *widgetName=0, TQObject *parent=0, const char *name=0, const TQStringList &args=TQStringList())
This template function allows to ask the given tdeparts factory to create an instance of the given te...
Definition: componentfactory.h:95
TDEStdAccel::end
const TDEShortcut & end()

tdeparts

Skip menu "tdeparts"
  • Main Page
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members
  • Related Pages

tdeparts

Skip menu "tdeparts"
  • arts
  • dcop
  • dnssd
  • interfaces
  •   kspeech
  •     interface
  •     library
  •   tdetexteditor
  • kate
  • kded
  • kdoctools
  • kimgio
  • kjs
  • libtdemid
  • libtdescreensaver
  • tdeabc
  • tdecmshell
  • tdecore
  • tdefx
  • tdehtml
  • tdeinit
  • tdeio
  •   bookmarks
  •   httpfilter
  •   kpasswdserver
  •   kssl
  •   tdefile
  •   tdeio
  •   tdeioexec
  • tdeioslave
  •   http
  • tdemdi
  •   tdemdi
  • tdenewstuff
  • tdeparts
  • tdeprint
  • tderandr
  • tderesources
  • tdespell2
  • tdesu
  • tdeui
  • tdeunittest
  • tdeutils
  • tdewallet
Generated for tdeparts by doxygen 1.9.4
This website is maintained by Timothy Pearson.