summaryrefslogtreecommitdiffstats
path: root/lib/MiddleWare
diff options
context:
space:
mode:
authorZdenek Prikryl <zprikryl@redhat.com>2009-07-24 10:54:10 +0200
committerZdenek Prikryl <zprikryl@redhat.com>2009-07-24 10:54:10 +0200
commita2a1ec29e008936654a146df244e4265668bfb31 (patch)
treeb22e4948feea83fecde1bb5ed5d1b4bd368b5bd6 /lib/MiddleWare
parente105dd726b9a7313eb64e2c59d336452439d2f97 (diff)
downloadabrt-a2a1ec29e008936654a146df244e4265668bfb31.tar.gz
abrt-a2a1ec29e008936654a146df244e4265668bfb31.tar.xz
abrt-a2a1ec29e008936654a146df244e4265668bfb31.zip
Added first part of gui support in reporting
Diffstat (limited to 'lib/MiddleWare')
-rw-r--r--lib/MiddleWare/ABRTPlugin.cpp6
-rw-r--r--lib/MiddleWare/ABRTPlugin.h5
-rw-r--r--lib/MiddleWare/Makefile.am4
-rw-r--r--lib/MiddleWare/MiddleWare.cpp5
-rw-r--r--lib/MiddleWare/MiddleWare.h8
-rw-r--r--lib/MiddleWare/Plugin.h6
-rw-r--r--lib/MiddleWare/PluginManager.cpp16
-rw-r--r--lib/MiddleWare/PluginManager.h8
-rw-r--r--lib/MiddleWare/test.cpp10
9 files changed, 59 insertions, 9 deletions
diff --git a/lib/MiddleWare/ABRTPlugin.cpp b/lib/MiddleWare/ABRTPlugin.cpp
index 56e58b9..f2afa41 100644
--- a/lib/MiddleWare/ABRTPlugin.cpp
+++ b/lib/MiddleWare/ABRTPlugin.cpp
@@ -69,6 +69,12 @@ const std::string& CABRTPlugin::GetWWW()
return m_pPluginInfo->m_sWWW;
}
+const std::string& CABRTPlugin::GetGTKBuilder()
+{
+ return m_pPluginInfo->m_sGTKBuilder;
+}
+
+
const plugin_type_t CABRTPlugin::GetType()
{
return m_pPluginInfo->m_Type;
diff --git a/lib/MiddleWare/ABRTPlugin.h b/lib/MiddleWare/ABRTPlugin.h
index e585f2a..cdf72bb 100644
--- a/lib/MiddleWare/ABRTPlugin.h
+++ b/lib/MiddleWare/ABRTPlugin.h
@@ -93,6 +93,11 @@ class CABRTPlugin
*/
const std::string& GetWWW();
/**
+ * It is used for getting a path to gui description.
+ * @return home page
+ */
+ const std::string& GetGTKBuilder();
+ /**
* It is used for getting loaded plugin's type.
* @return type
*/
diff --git a/lib/MiddleWare/Makefile.am b/lib/MiddleWare/Makefile.am
index 1023aa0..016d6ea 100644
--- a/lib/MiddleWare/Makefile.am
+++ b/lib/MiddleWare/Makefile.am
@@ -12,8 +12,8 @@ libABRTMiddleWare_la_CPPFLAGS = -I$(srcdir)/../../inc -I$(srcdir)/../Utils -I$(s
check_PROGRAMS = test
test_SOURCES = test.cpp
-test_LDADD = ../Utils/libABRTUtils.la libABRTMiddleWare.la $(DL_LIBS) $(RPM_LIBS)
-test_CPPFLAGS = -I$(srcdir)/../Utils \
+test_LDADD = ../Utils/libABRTUtils.la libABRTMiddleWare.la $(DL_LIBS) $(RPM_LIBS) ../CommLayer/libABRTCommLayer.la
+test_CPPFLAGS = -I$(srcdir)/../Utils -I$(srcdir)/../../inc -I$(srcdir)/../CommLayer\
-DPLUGINS_LIB_DIR=\"$(PLUGINS_LIB_DIR)\" \
-DPLUGINS_CONF_DIR=\"$(PLUGINS_CONF_DIR)\" \
-DDEBUG_DUMPS_DIR=\"$(DEBUG_DUMPS_DIR)\" \
diff --git a/lib/MiddleWare/MiddleWare.cpp b/lib/MiddleWare/MiddleWare.cpp
index f520189..34b4391 100644
--- a/lib/MiddleWare/MiddleWare.cpp
+++ b/lib/MiddleWare/MiddleWare.cpp
@@ -566,6 +566,11 @@ vector_pair_string_string_t CMiddleWare::GetUUIDsOfCrash(const std::string& pUID
return UUIDsUIDs;
}
+map_string_string_t CMiddleWare::GetPluginInfo(const std::string& pName)
+{
+ return m_pPluginManager->GetPluginInfo(pName);
+}
+
void CMiddleWare::SetOpenGPGCheck(const bool& pCheck)
{
m_bOpenGPGCheck = pCheck;
diff --git a/lib/MiddleWare/MiddleWare.h b/lib/MiddleWare/MiddleWare.h
index d0bc9f7..625e037 100644
--- a/lib/MiddleWare/MiddleWare.h
+++ b/lib/MiddleWare/MiddleWare.h
@@ -287,7 +287,13 @@ class CMiddleWare
* @return A vector of pairs (local UUID, UID).
*/
vector_pair_string_string_t GetUUIDsOfCrash(const std::string& pUID);
-
+ /**
+ * A method, which gets all needed plugin info. It can be send via DBus
+ * to GUI and displayed to an user.
+ * @param pName A Name of plugin.
+ * @return A map <key, vaule>
+ */
+ map_string_string_t GetPluginInfo(const std::string& pName);
/**
* A method, which set a GPG finger print check.
* @param pCheck Is it enabled?
diff --git a/lib/MiddleWare/Plugin.h b/lib/MiddleWare/Plugin.h
index b6bfb3e..ef107e3 100644
--- a/lib/MiddleWare/Plugin.h
+++ b/lib/MiddleWare/Plugin.h
@@ -26,7 +26,7 @@
#include <string>
#include <map>
-#define PLUGINS_MAGIC_NUMBER 2
+#define PLUGINS_MAGIC_NUMBER 3
#define PLUGINS_CONF_EXTENSION "conf"
#define PLUGINS_LIB_EXTENSION "so"
@@ -81,12 +81,13 @@ typedef struct SPluginInfo
const std::string m_sDescription; /**< Plugin description.*/
const std::string m_sEmail; /**< Plugin author's email.*/
const std::string m_sWWW; /**< Plugin's home page.*/
+ const std::string m_sGTKBuilder; /**< Plugin's gui description.*/
const int m_nMagicNumber; /**< Plugin magical number.*/
} plugin_info_t;
#define PLUGIN_IFACE extern "C"
-#define PLUGIN_INFO(type, plugin_class, name, version, description, email, www)\
+#define PLUGIN_INFO(type, plugin_class, name, version, description, email, www, gtk_builder)\
PLUGIN_IFACE CPlugin* plugin_new()\
{\
return new plugin_class();\
@@ -99,6 +100,7 @@ typedef struct SPluginInfo
description,\
email,\
www,\
+ gtk_builder,\
PLUGINS_MAGIC_NUMBER,\
};
diff --git a/lib/MiddleWare/PluginManager.cpp b/lib/MiddleWare/PluginManager.cpp
index 8ce32f4..9f8857a 100644
--- a/lib/MiddleWare/PluginManager.cpp
+++ b/lib/MiddleWare/PluginManager.cpp
@@ -226,3 +226,19 @@ plugin_type_t CPluginManager::GetPluginType(const std::string& pName)
return m_mapABRTPlugins[pName]->GetType();
}
+map_string_string_t CPluginManager::GetPluginInfo(const std::string& pName)
+{
+ map_string_string_t ret;
+ if (m_mapABRTPlugins.find(pName) != m_mapABRTPlugins.end())
+ {
+ ret["Type"] = plugin_type_str_t[m_mapABRTPlugins[pName]->GetType()];
+ ret["Name"] = m_mapABRTPlugins[pName]->GetName();
+ ret["Version"] = m_mapABRTPlugins[pName]->GetVersion();
+ ret["Description"] = m_mapABRTPlugins[pName]->GetDescription();
+ ret["Email"] = m_mapABRTPlugins[pName]->GetEmail();
+ ret["WWW"] = m_mapABRTPlugins[pName]->GetWWW();
+ ret["GTKBuilder"] = m_mapABRTPlugins[pName]->GetGTKBuilder();
+ }
+ return ret;
+}
+
diff --git a/lib/MiddleWare/PluginManager.h b/lib/MiddleWare/PluginManager.h
index 2e2e797..574c9ff 100644
--- a/lib/MiddleWare/PluginManager.h
+++ b/lib/MiddleWare/PluginManager.h
@@ -31,6 +31,7 @@
#include "Reporter.h"
#include "Database.h"
#include "Action.h"
+#include "MiddleWareTypes.h"
/**
* A class. It takes care of loading, registering and manipulating with
@@ -130,6 +131,13 @@ class CPluginManager
* @return A plugin type.
*/
plugin_type_t GetPluginType(const std::string& pName);
+ /**
+ * A method, which gets all needed plugin info. It can be send via DBus
+ * to GUI and displayed to an user.
+ * @param pName A Name of plugin.
+ * @return A map <key, vaule>
+ */
+ map_string_string_t GetPluginInfo(const std::string& pName);
};
#endif /*PLUGINMANAGER_H_*/
diff --git a/lib/MiddleWare/test.cpp b/lib/MiddleWare/test.cpp
index 79cadd3..94ea5cc 100644
--- a/lib/MiddleWare/test.cpp
+++ b/lib/MiddleWare/test.cpp
@@ -34,6 +34,7 @@ int main(int argc, char** argv)
if (argc < 2)
{
std::cerr << "Usage: " << argv[0] << " <DebugDumpDir>" << std::endl;
+ return -1;
}
try
{
@@ -46,9 +47,11 @@ int main(int argc, char** argv)
middleWare.RegisterPlugin("SQLite3");
middleWare.SetDatabase("SQLite3");
middleWare.SetOpenGPGCheck(false);
- middleWare.AddReporter("Logger");
- middleWare.AddAnalyzerReporter("CCpp", "Mailx");
- middleWare.AddAnalyzerAction("CCpp", "RunApp", "date");
+ middleWare.AddActionOrReporter("Logger", "");
+ middleWare.AddAnalyzerActionOrReporter("CCpp", "Mailx", "");
+ middleWare.AddAnalyzerActionOrReporter("CCpp", "RunApp", "date");
+
+ std::cout << "Mailx GTKBuilder path: " << middleWare.GetPluginInfo("Mailx")["GTKBuilder"];
/* Try to save it into DB */
map_crash_info_t crashInfo;
if (middleWare.SaveDebugDump(argv[1], crashInfo))
@@ -58,7 +61,6 @@ int main(int argc, char** argv)
crashInfo[CD_EXECUTABLE][CD_CONTENT] << ", " <<
crashInfo[CD_COUNT][CD_CONTENT] << ", " << std::endl;
- middleWare.Report(argv[1]);
/* Get Report, so user can change data (remove private stuff)
* If we do not want user interaction, just send data immediately
*/