• 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 
9 namespace 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::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::ComponentLoadingError
ComponentLoadingError
This enum type defines the possible error cases that can happen when loading a component.
Definition: componentfactory.h:37
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::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::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
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
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.1
This website is maintained by Timothy Pearson.