diff options
author | Michele Calgaro <michele.calgaro@yahoo.it> | 2025-02-10 15:10:13 +0900 |
---|---|---|
committer | Michele Calgaro <michele.calgaro@yahoo.it> | 2025-02-13 11:44:42 +0900 |
commit | 8f8f84410cc591c85c5e83e0b3efdcda5fdbe42e (patch) | |
tree | f273a932ce048ef22ea9d9888b77ea8a2b8f3e33 /src/sq_kipimanager.cpp | |
parent | 424635023ee423826de12514b2fec7834b8deb7b (diff) | |
download | ksquirrel-8f8f8441.tar.gz ksquirrel-8f8f8441.zip |
Rename 'ksquirrel' folder to 'src'
Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
(cherry picked from commit 203fcb8d90752b546c672c625927a136b959fcfb)
Diffstat (limited to 'src/sq_kipimanager.cpp')
-rw-r--r-- | src/sq_kipimanager.cpp | 189 |
1 files changed, 189 insertions, 0 deletions
diff --git a/src/sq_kipimanager.cpp b/src/sq_kipimanager.cpp new file mode 100644 index 0000000..23c7bb0 --- /dev/null +++ b/src/sq_kipimanager.cpp @@ -0,0 +1,189 @@ +/*************************************************************************** + sq_kipimanager.cpp - description + ------------------- + begin : Feb 5 2007 + copyright : (C) 2007 by Baryshev Dmitry + email : ksquirrel.iv@gmail.com + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#include "sq_kipimanager.h" + +#ifdef SQ_HAVE_KIPI + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <tqwidget.h> + +#include <tdeactioncollection.h> +#include <tdepopupmenu.h> +#include <tdelocale.h> +#include <kdebug.h> + +#include <libkipi/pluginloader.h> +#include <libkipi/interface.h> + +#include "sq_kipiinterface.h" + +SQ_ActionMenu::SQ_ActionMenu(const TQString &text, TQObject *parent, const char *name) + : TDEActionMenu(text, parent, name) +{} + +SQ_ActionMenu::SQ_ActionMenu(const TQString &text, const TQString &icon, TQObject *parent, const char *name) + : TDEActionMenu(text, icon, parent, name) +{} + +SQ_ActionMenu::~SQ_ActionMenu() +{ + TQValueVector<TDEAction *>::iterator itEnd = plugged.end(); + + for(TQValueVector<TDEAction *>::iterator it = plugged.begin();it != itEnd;++it) + remove(*it); +} + +void SQ_ActionMenu::insert(TDEAction *ka, int index) +{ + TDEActionMenu::insert(ka, index); + + plugged.append(ka); +} + +/***********************************************************************/ + +SQ_KIPIManager::SQ_KIPIManager(TQWidget *_parent, const char *name) : TQObject(_parent, name), parent(_parent) +{ + kdDebug() << "+SQ_KIPIManager" << endl; + + // Create a dummy "no plugin" action + noPlugin = new TDEAction(i18n("No Plugins"), 0, 0, 0, (TDEActionCollection *)0/*actionCollection()*/, "no_plugin"); + noPlugin->setShortcutConfigurable(false); + noPlugin->setEnabled(false); + + loaded = false; + p = new TDEPopupMenu; + + connect(p, TQ_SIGNAL(aboutToShow()), this, TQ_SLOT(slotAboutToShow())); + + SQ_KIPIInterface *interface = new SQ_KIPIInterface(_parent); + mPluginLoader = new KIPI::PluginLoader(TQStringList(), interface); + connect(mPluginLoader, TQ_SIGNAL(replug()), this, TQ_SLOT(slotReplug())); +} + +SQ_KIPIManager::~SQ_KIPIManager() +{ + kdDebug() << "-SQ_KIPIManager" << endl; + + delete mPluginLoader; + + //unplug all & delete popup menu + clearMap(); + delete p; + + delete noPlugin; +} + +void SQ_KIPIManager::loadPlugins() +{ + kdDebug() << "Loading KIPI plugins..." << endl; + + loaded = true; + mPluginLoader->loadPlugins(); + + kdDebug() << "Done" << endl; +} + +void SQ_KIPIManager::clearMap() +{ + // delete menus + for(CategoryMap::iterator it = cmenus.begin();it != cmenus.end();++it) + delete it.data(); // destructor will do all things for us + + cmenus.clear(); +} + +void SQ_KIPIManager::slotReplug() +{ + // Fill the mActions + KIPI::PluginLoader::PluginList pluginList = mPluginLoader->pluginList(); + KIPI::PluginLoader::PluginList::ConstIterator it(pluginList.begin()); + KIPI::PluginLoader::PluginList::ConstIterator itEnd(pluginList.end()); + KIPI::Plugin *plugin; + CategoryMap::iterator fnd; + + clearMap(); + + SQ_ActionMenu *menuImages = new SQ_ActionMenu(i18n("Image actions")); + SQ_ActionMenu *menuEffects = new SQ_ActionMenu(i18n("Effects")); + SQ_ActionMenu *menuTools = new SQ_ActionMenu(i18n("Tools")); + SQ_ActionMenu *menuImport = new SQ_ActionMenu(i18n("Import")); + SQ_ActionMenu *menuExport = new SQ_ActionMenu(i18n("Export")); + SQ_ActionMenu *menuBatch = new SQ_ActionMenu(i18n("Batch processing")); + SQ_ActionMenu *menuColl = new SQ_ActionMenu(i18n("Collections")); + + cmenus[KIPI::IMAGESPLUGIN] = menuImages; + cmenus[KIPI::EFFECTSPLUGIN] = menuEffects; + cmenus[KIPI::TOOLSPLUGIN] = menuTools; + cmenus[KIPI::IMPORTPLUGIN] = menuImport; + cmenus[KIPI::EXPORTPLUGIN] = menuExport; + cmenus[KIPI::BATCHPLUGIN] = menuBatch; + cmenus[KIPI::COLLECTIONSPLUGIN] = menuColl; + + for( ;it != itEnd;++it) + { + if(!(*it)->shouldLoad()) + continue; + + plugin = (*it)->plugin(); + + if (!plugin) continue; + + plugin->setup(parent); + + TDEActionPtrList actions = plugin->actions(); + TDEActionPtrList::ConstIterator actionIt = actions.begin(), end = actions.end(); + KIPI::Category category; + + for ( ;actionIt != end;++actionIt) + { + category = plugin->category(*actionIt); + + fnd = cmenus.find(category); + + if(fnd == cmenus.end()) + continue; + + fnd.data()->insert(*actionIt); + } + + plugin->actionCollection()->readShortcutSettings(); + } + + // plug + for(CategoryMap::iterator it = cmenus.begin();it != cmenus.end();++it) + { + if(!it.data()->count()) + it.data()->insert(noPlugin); + + it.data()->plug(p); + } +} + +void SQ_KIPIManager::slotAboutToShow() +{ + // load KIPI plugins on demand + if(!loaded) loadPlugins(); +} + +#include "sq_kipimanager.moc" + +#endif |