[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdevplatform
From: Roberto Raggi <roberto () kdevelop ! org>
Date: 2008-04-16 10:19:33
Message-ID: 1208341173.469863.24871.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 797538 by raggi:
added the xmlgui state `has_project' + nicer KDevelop::IPlugin
M +38 -8 interfaces/iplugin.cpp
M +10 -9 interfaces/iplugin.h
M +12 -0 plugins/quickopen/kdevquickopen.rc
M +2 -0 plugins/quickopen/quickopenplugin.cpp
M +3 -1 plugins/quickopen/quickopenplugin.h
--- trunk/KDE/kdevplatform/interfaces/iplugin.cpp #797537:797538
@@ -37,6 +37,7 @@
#include <kdebug.h>
#include "icore.h"
#include "iplugincontroller.h"
+#include "iprojectcontroller.h"
#include "contextmenuextension.h"
#include <QtDesigner/QExtensionFactory>
#include <QtDesigner/QExtensionManager>
@@ -68,8 +69,8 @@
class IPluginPrivate
{
public:
- IPluginPrivate()
- : iconLoader(0), m_factory(0)
+ IPluginPrivate(IPlugin *q)
+ : q(q), iconLoader(0), m_factory(0)
{}
~IPluginPrivate()
@@ -77,6 +78,28 @@
delete iconLoader;
}
+ void _k_guiClientAdded(KXMLGUIClient *client)
+ {
+ if (client != q)
+ return;
+
+ q->initializeGuiState();
+ _k_updateState();
+ }
+
+ void _k_updateState()
+ {
+ const int projectCount =
+ ICore::self()->projectController()->projectCount();
+
+ IPlugin::ReverseStateChange reverse = IPlugin::StateNoReverse;
+ if (! projectCount)
+ reverse = IPlugin::StateReverse;
+
+ q->stateChanged(QLatin1String("has_project"), reverse);
+ }
+
+ IPlugin *q;
ICore *core;
KIconLoader* iconLoader;
PluginExtensionFactory* m_factory;
@@ -85,7 +108,7 @@
IPlugin::IPlugin( const KComponentData &instance, QObject *parent )
: QObject( parent ),
- KXMLGUIClient(), d( new IPluginPrivate )
+ KXMLGUIClient(), d( new IPluginPrivate(this) )
{
// The following cast is safe, there's no component in KDevPlatform that
// creates plugins except the plugincontroller. The controller passes
@@ -102,8 +125,16 @@
continue;
connect(guiWindow->guiFactory(), SIGNAL(clientAdded(KXMLGUIClient *)),
- this, SLOT(guiClientAdded(KXMLGUIClient *)));
+ this, SLOT(_k_guiClientAdded(KXMLGUIClient *)));
}
+
+ connect(ICore::self()->projectController(),
+ SIGNAL(projectOpened(KDevelop::IProject *)),
+ this, SLOT(_k_updateState()));
+
+ connect(ICore::self()->projectController(),
+ SIGNAL(projectClosed(KDevelop::IProject *)),
+ this, SLOT(_k_updateState()));
}
IPlugin::~IPlugin()
@@ -111,10 +142,6 @@
delete d;
}
-void IPlugin::guiClientAdded(KXMLGUIClient *)
-{
-}
-
Qt::DockWidgetArea IPlugin::dockWidgetAreaHint() const
{
return Qt::NoDockWidgetArea;
@@ -202,6 +229,9 @@
return KDevelop::ContextMenuExtension();
}
+void KDevelop::IPlugin::initializeGuiState()
+{ }
+
#include "iplugin.moc"
--- trunk/KDE/kdevplatform/interfaces/iplugin.h #797537:797538
@@ -195,20 +195,21 @@
*/
void newIconLoader() const;
-protected Q_SLOTS:
+protected:
+ void addExtension( const QString& );
+
/**
- * A new GUI client has been loaded.
+ * Initialize the XML Gui State.
*/
- virtual void guiClientAdded(KXMLGUIClient *client);
+ virtual void initializeGuiState();
-protected:
- void addExtension( const QString& );
+private:
+ Q_PRIVATE_SLOT(d, void _k_guiClientAdded(KXMLGUIClient *))
+ Q_PRIVATE_SLOT(d, void _k_updateState())
-private:
- class IPluginPrivate* const d;
+ friend class IPluginPrivate;
+ class IPluginPrivate* const d;
QExtensionManager* extensionManager();
-
-
};
}
--- trunk/KDE/kdevplatform/plugins/quickopen/kdevquickopen.rc #797537:797538
@@ -30,4 +30,16 @@
</Menu>
</MenuBar>
+
+<State name="has_project">
+ <enable>
+ <Action name="quick_open_class" />
+ <Action name="quick_open_function" />
+ <Action name="quick_open_navigate" />
+ <Action name="quick_open_navigate_function_definitions" />
+ <Action name="quick_open_jump_declaration" />
+ <Action name="quick_open_jump_definition" />
+ </enable>
+</State>
+
</kpartgui>
--- trunk/KDE/kdevplatform/plugins/quickopen/quickopenplugin.cpp #797537:797538
@@ -21,6 +21,7 @@
#include "quickopenplugin.h"
+#include <cassert>
#include <typeinfo>
#include <QtGui/QTreeView>
#include <QtGui/QHeaderView>
@@ -47,6 +48,7 @@
#include <iuicontroller.h>
#include <idocumentcontroller.h>
#include <ilanguagecontroller.h>
+#include <iprojectcontroller.h>
#include <ilanguagesupport.h>
#include <hashedstring.h>
#include <duchain/duchainutils.h>
--- trunk/KDE/kdevplatform/plugins/quickopen/quickopenplugin.h #797537:797538
@@ -75,9 +75,11 @@
void quickOpenDefinition();
void quickOpenNavigate();
void quickOpenNavigateFunctions();
+
private slots:
void storeScopes( const QStringList& );
- private:
+
+private:
//Whether the model is free for use. Else we cannot create a quickopen-widget.
bool modelIsFree() const;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic