-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Dienstag, 23. Dezember 2003 11:34, Rüdiger Knörig wrote: > Hi folks! :-) Hi Rüdiger! > Currently I'm writing on a read-only KPart for viewing 3D polygon mesh > files (e.g. .plg files) using Qt's OpenGL widget. Since I will support > multiple file formats I would like to have a plugin-like approach for > the import filters including a factory class where all Import plugins > are registered: > > ImportPlugin *import = factory.importPlugin(mimetype); > > There should be an easy way to register new Import plugins in a way > that make it possible to use dynamically loadable plugins. This sounds like a good idea to me, but please note that there are two different kinds of filters: * filters covering a whole document * filters working on a single page (or even on a part of a page only) Example: -> Export to PowerPoint would cover a complete presentation. -> Export to PNG would cover a single page. Similar when importing: -> Import from PowerPoint (complete doc) -> Import some bitmap file (to add it to a single page) So your filter framework should be capable to cover these different options, perhaps the way StarOffice does it could help you understand what I mean? I am attaching part of a little StarBasic script my son is working on currently - just to give you an idea how simple yet flexible their solution is. Cheers, Karl-Heinz - - - - - - snip - - - - snip - - - - snip - - - - snip - - - - The way how StarOffice's filter framework is used: document-wide stuff: - -------------------- DIM oFilter As OBJECT DIM aFilterData( 2 ) As new com.sun.star.beans.PropertyValue DIM aDescriptor( 3 ) As new com.sun.star.beans.PropertyValue DIM sFileName As String DIM sFileNameBase As String DIM sFileNameExt As String oFilter = CreateUnoService("com.sun.star.drawing.GraphicExportFilter") aFilterData[0].Name = "Width" aFilterData[0].Value = 800 ' 640, 704, 1024, 1280 aFilterData[1].Name = "Translucent" aFilterData[1].Value = false aDescriptor[0].Name = "FilterName" aDescriptor[0].Value = "GIF" aDescriptor[1].Name = "URL" ' value is set in the loop below aDescriptor[2].Name = "FilterData" aDescriptor[2].Value = aFilterData sFileNameBase = "PAGE" sFileNameExt = ".GIF" called inside a FOR loop iterating over the pages (oPage == 1 page): - -------------------------------------------------------------------- sFileName = sFileNameBase + Str( nPage ) + sFileNameExt aDescriptor[1].Value = ConvertToURL( sFileName ) oFilter.setSourceDocument( oPage ) oFilter.filter( aDescriptor ) - - - - - - snip - - - - snip - - - - snip - - - - snip - - - - -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.2-rc1-SuSE (GNU/Linux) iD8DBQE/6VD7CcaVnbvggDcRAq2/AKDmTeO2bjaE/XpIPwtlcCrSFysszACcDP/i K7RKwU1/UnTWAKS4SgYU6Cg= =I0hN -----END PGP SIGNATURE----- >> Visit http://mail.kde.org/mailman/listinfo/kde-devel#unsub to unsubscribe <<