[Pkg-kde-commits] rev 1058 - in kde-extras/digikam/trunk/debian: . patches
Achim Bohnet
ach-guest@costa.debian.org
Wed, 11 May 2005 12:23:42 +0000
Author: ach-guest
Date: 2005-05-11 12:23:41 +0000 (Wed, 11 May 2005)
New Revision: 1058
Added:
kde-extras/digikam/trunk/debian/patches/
kde-extras/digikam/trunk/debian/patches/01_fix-two-or-fourfold_menu_entries.diff
Modified:
kde-extras/digikam/trunk/debian/changelog
kde-extras/digikam/trunk/debian/rules
Log:
Backport fix for duplicate menu entries.
http://bugs.kde.org/show_bug.cgi?id=103147
Thx to Querub and {toma} for 'complaining' and testing.
Modified: kde-extras/digikam/trunk/debian/changelog
===================================================================
--- kde-extras/digikam/trunk/debian/changelog 2005-05-08 14:56:05 UTC (rev 1057)
+++ kde-extras/digikam/trunk/debian/changelog 2005-05-11 12:23:41 UTC (rev 1058)
@@ -1,3 +1,11 @@
+digikam (0.7.2-4) unstable; urgency=medium
+
+ * patches/01_fix-two-or-fourfold_menu_entries.diff:
+ fix double and even quadruple appearances of menu entries.
+ Backport of http://bugs.kde.org/show_bug.cgi?id=103147
+
+ -- Achim Bohnet <ach@mpe.mpg.de> Wed, 11 May 2005 13:55:04 +0200
+
digikam (0.7.2-3) unstable; urgency=low
* move digikam.desktop file to /usr/share/applications/kde/
Added: kde-extras/digikam/trunk/debian/patches/01_fix-two-or-fourfold_menu_entries.diff
===================================================================
--- kde-extras/digikam/trunk/debian/patches/01_fix-two-or-fourfold_menu_entries.diff 2005-05-08 14:56:05 UTC (rev 1057)
+++ kde-extras/digikam/trunk/debian/patches/01_fix-two-or-fourfold_menu_entries.diff 2005-05-11 12:23:41 UTC (rev 1058)
@@ -0,0 +1,229 @@
+--- digikam/utilities/imageeditor/imagepluginloader.cpp.orig 2005-05-10 23:16:17.000000000 +0200
++++ digikam/utilities/imageeditor/imagepluginloader.cpp 2005-05-10 21:47:17.000000000 +0200
+@@ -64,7 +64,7 @@
+ loadPluginsFromList(imagePluginsList2Load);
+ }
+
+-void ImagePluginLoader::loadPluginsFromList(QStringList list)
++void ImagePluginLoader::loadPluginsFromList(const QStringList& list)
+ {
+ KTrader::OfferList offers = KTrader::self()->query("Digikam/ImagePlugin");
+ KTrader::OfferList::ConstIterator iter;
+@@ -80,29 +80,41 @@
+
+ if(service->library() == "digikamimageplugin_core")
+ {
+- if( pluginIsLoaded(service->name()) )
+- break;
+- else
++ if (!pluginIsLoaded(service->name()) )
+ {
++ int error;
+ plugin = KParts::ComponentFactory
+- ::createInstanceFromService<Digikam::ImagePlugin>(service, this, 0, 0);
++ ::createInstanceFromService<Digikam::ImagePlugin>(service, this,
++ service->name().local8Bit(),
++ 0, &error);
+
+ if (plugin && (dynamic_cast<KXMLGUIClient*>(plugin) != 0))
+ {
+- m_pluginList.append(plugin);
++ m_pluginList.append(PluginType(service->name(), plugin));
+
+- kdDebug() << "ImagePluginLoader: Loaded plugin " << plugin->name() << endl;
++ kdDebug() << "ImagePluginLoader: Loaded plugin " << service->name() << endl;
+
+ if (m_splash)
+- m_splash->message(i18n("Loading: %1").arg(plugin->name()));
++ m_splash->message(i18n("Loading: %1").arg(service->name()));
+
+ ++cpt;
+ }
+-
+- break;
++ else
++ {
++ kdWarning( ) << "KIPI::PluginLoader:: createInstanceFromLibrary returned 0 for "
++ << service->name()
++ << " (" << service->library() << ")"
++ << " with error number "
++ << error << endl;
++ if (error == KParts::ComponentFactory::ErrNoLibrary)
++ kdWarning( ) << "KLibLoader says: "
++ << KLibLoader::self()->lastErrorMessage() << endl;
+ }
+ }
++ break;
+ }
++ }
++
+
+ // Load all other image plugins after (make a coherant menu construction in Image Editor).
+
+@@ -114,7 +126,7 @@
+ if(!list.contains(service->library()) && service->library() != "digikamimageplugin_core")
+ {
+ if((plugin = pluginIsLoaded(service->name())) != NULL)
+- m_pluginList.remove(plugin);
++ m_pluginList.remove(PluginType(service->name(),plugin));
+ }
+ else
+ {
+@@ -123,16 +135,18 @@
+ else
+ {
+ plugin = KParts::ComponentFactory
+- ::createInstanceFromService<Digikam::ImagePlugin>(service, this, 0, 0);
++ ::createInstanceFromService<Digikam::ImagePlugin>(service, this,
++ service->name().local8Bit(),
++ 0);
+
+ if (plugin)
+ {
+- m_pluginList.append(plugin);
++ m_pluginList.append(PluginType(service->name(), plugin));
+
+- kdDebug() << "ImagePluginLoader: Loaded plugin " << plugin->name() << endl;
++ kdDebug() << "ImagePluginLoader: Loaded plugin " << service->name() << endl;
+
+ if (m_splash)
+- m_splash->message(i18n("Loading: %1").arg(plugin->name()));
++ m_splash->message(i18n("Loading: %1").arg(service->name()));
+
+ ++cpt;
+ }
+@@ -148,19 +162,37 @@
+ // use the old splashscreen instance.
+ }
+
+-Digikam::ImagePlugin* ImagePluginLoader::pluginIsLoaded(QString pluginName)
++Digikam::ImagePlugin* ImagePluginLoader::pluginIsLoaded(const QString& name)
+ {
+- if( m_pluginList.isEmpty() ) return NULL;
++ if ( m_pluginList.isEmpty() )
++ return 0;
+
+- Digikam::ImagePlugin *plugin;
++ for (PluginList::iterator it = m_pluginList.begin(); it != m_pluginList.end(); ++it)
++ {
++ if ((*it).first == name )
++ return (*it).second;
++ }
++
++ return 0;
++}
+
+- for ( plugin = m_pluginList.first() ; plugin ; plugin = m_pluginList.next() )
++bool ImagePluginLoader::pluginLibraryIsLoaded(const QString& libraryName)
+ {
+- if( plugin->name() == pluginName )
+- return plugin;
++ KTrader::OfferList offers = KTrader::self()->query("Digikam/ImagePlugin");
++ KTrader::OfferList::ConstIterator iter;
++
++ for(iter = offers.begin(); iter != offers.end(); ++iter)
++ {
++ KService::Ptr service = *iter;
++
++ if(service->library() == libraryName)
++ {
++ if( pluginIsLoaded(service->name()) )
++ return true;
++ }
+ }
+
+- return NULL;
++ return false;
+ }
+
+ ImagePluginLoader::~ImagePluginLoader()
+@@ -173,7 +205,14 @@
+ return m_instance;
+ }
+
+-QPtrList<Digikam::ImagePlugin>& ImagePluginLoader::pluginList()
++QPtrList<Digikam::ImagePlugin> ImagePluginLoader::pluginList()
+ {
+- return m_pluginList;
++ QPtrList<Digikam::ImagePlugin> list;
++
++ for (PluginList::iterator it = m_pluginList.begin(); it != m_pluginList.end(); ++it)
++ {
++ list.append((*it).second);
++ }
++
++ return list;
+ }
+--- digikam/utilities/imageeditor/imagepluginloader.h.orig 2005-05-10 23:16:27.000000000 +0200
++++ digikam/utilities/imageeditor/imagepluginloader.h 2005-05-10 21:47:17.000000000 +0200
+@@ -27,6 +27,8 @@
+ #include <qobject.h>
+ #include <qptrlist.h>
+ #include <qstring.h>
++#include <qvaluelist.h>
++#include <qpair.h>
+
+ // Local includes.
+
+@@ -44,16 +46,23 @@
+
+ static ImagePluginLoader* instance();
+
+- QPtrList<Digikam::ImagePlugin>& pluginList();
+- void loadPluginsFromList(QStringList list);
++ QPtrList<Digikam::ImagePlugin> pluginList();
++ void loadPluginsFromList(const QStringList& list);
++
++ // Return true if plugin library is loaded in memory.
++ // 'libraryName' is internal plugin library name not i18n.
++ bool pluginLibraryIsLoaded(const QString& libraryName);
+
+ private:
+
++ typedef QPair<QString,Digikam::ImagePlugin*> PluginType;
++ typedef QValueList< PluginType > PluginList;
++
+ SplashScreen *m_splash;
+ static ImagePluginLoader *m_instance;
+- QPtrList<Digikam::ImagePlugin> m_pluginList;
++ PluginList m_pluginList;
+
+- Digikam::ImagePlugin* pluginIsLoaded(QString pluginName);
++ Digikam::ImagePlugin* pluginIsLoaded(const QString& name);
+ };
+
+ #endif /* IMAGEPLUGINLOADER_H */
+Index: digikam/utilities/imageeditor/imagewindow.cpp
+===================================================================
+--- digikam/utilities/imageeditor/imagewindow.cpp (revision 411796)
++++ digikam/utilities/imageeditor/imagewindow.cpp (revision 411797)
+@@ -116,9 +116,11 @@
+
+ buildGUI();
+
+- ImagePluginLoader* loader = ImagePluginLoader::instance();
+- for (Digikam::ImagePlugin* plugin = loader->pluginList().first();
+- plugin; plugin = loader->pluginList().next()) {
++ QPtrList<Digikam::ImagePlugin> pluginList
++ = ImagePluginLoader::instance()->pluginList();
++ for (Digikam::ImagePlugin* plugin = pluginList.first();
++ plugin; plugin = pluginList.next())
++ {
+ if (plugin) {
+ guiFactory()->addClient(plugin);
+ plugin->setParentWidget(this);
+@@ -166,9 +168,11 @@
+
+ saveSettings();
+
+- ImagePluginLoader* loader = ImagePluginLoader::instance();
+- for (Digikam::ImagePlugin* plugin = loader->pluginList().first();
+- plugin; plugin = loader->pluginList().next()) {
++ QPtrList<Digikam::ImagePlugin> pluginList
++ = ImagePluginLoader::instance()->pluginList();
++ for (Digikam::ImagePlugin* plugin = pluginList.first();
++ plugin; plugin = pluginList.next())
++ {
+ if (plugin) {
+ guiFactory()->removeClient(plugin);
+ plugin->setParentWidget(0);
Modified: kde-extras/digikam/trunk/debian/rules
===================================================================
--- kde-extras/digikam/trunk/debian/rules 2005-05-08 14:56:05 UTC (rev 1057)
+++ kde-extras/digikam/trunk/debian/rules 2005-05-11 12:23:41 UTC (rev 1058)
@@ -3,7 +3,7 @@
cdbs_kde_enable_debug = --disable-debug
include /usr/share/cdbs/1/rules/debhelper.mk
-#include /usr/share/cdbs/1/rules/simple-patchsys.mk
+include /usr/share/cdbs/1/rules/simple-patchsys.mk
include /usr/share/cdbs/1/class/kde.mk
DEB_INSTALL_MANPAGES_digikam = debian/digikam.manpage debian/showfoto.manpage