[gnote] Add ability to get AddinInfo from addin
- From: Aurimas Černius <aurimasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnote] Add ability to get AddinInfo from addin
- Date: Sat, 1 Mar 2014 17:07:26 +0000 (UTC)
commit e96b43a40196d343e504d270952586aec0ce9bb1
Author: Aurimas Černius <aurisc4 gmail com>
Date: Sat Mar 1 19:03:35 2014 +0200
Add ability to get AddinInfo from addin
src/addinmanager.cpp | 41 +++++++++++++++++++++++++++++++++++++++++
src/addinmanager.hpp | 3 ++-
2 files changed, 43 insertions(+), 1 deletions(-)
---
diff --git a/src/addinmanager.cpp b/src/addinmanager.cpp
index 0e7f988..8216654 100644
--- a/src/addinmanager.cpp
+++ b/src/addinmanager.cpp
@@ -38,6 +38,7 @@
#include "debug.hpp"
#include "ignote.hpp"
#include "preferences.hpp"
+#include "preferencetabaddin.hpp"
#include "watchers.hpp"
#include "notebooks/notebookapplicationaddin.hpp"
#include "notebooks/notebooknoteaddin.hpp"
@@ -71,8 +72,25 @@ namespace gnote {
erase_note_addin_info(typeid(klass).name()); \
} \
} \
+ }
+
+namespace {
+ template <typename AddinType>
+ std::string get_id_for_addin(const AbstractAddin & addin, const std::map<std::string, AddinType*> & addins)
+ {
+ const AddinType *plugin = dynamic_cast<const AddinType*>(&addin);
+ if(plugin != NULL) {
+ for(typename std::map<std::string, AddinType*>::const_iterator iter = addins.begin(); iter !=
addins.end(); ++iter) {
+ if(iter->second == plugin) {
+ return iter->first;
+ }
+ }
+ }
+ return "";
+ }
}
+
AddinManager::AddinManager(NoteManager & note_manager, const std::string & conf_dir)
: m_note_manager(note_manager)
, m_gnote_conf_dir(conf_dir)
@@ -485,6 +503,29 @@ namespace gnote {
return AddinInfo();
}
+ AddinInfo AddinManager::get_addin_info(const AbstractAddin & addin) const
+ {
+ std::string id;
+ id = get_id_for_addin(addin, m_app_addins);
+ if(id.empty()) {
+ id = get_id_for_addin(addin, m_pref_tab_addins);
+ }
+ if(id.empty()) {
+ id = get_id_for_addin(addin, m_sync_service_addins);
+ }
+ if(id.empty()) {
+ id = get_id_for_addin(addin, m_import_addins);
+ }
+ for(NoteAddinMap::const_iterator iter = m_note_addins.begin();
+ id.empty() && iter != m_note_addins.end(); ++iter) {
+ id = get_id_for_addin(addin, iter->second);
+ }
+ if(id.empty()) {
+ return AddinInfo();
+ }
+ return get_addin_info(id);
+ }
+
bool AddinManager::is_module_loaded(const std::string & id) const
{
AddinInfo info = get_addin_info(id);
diff --git a/src/addinmanager.hpp b/src/addinmanager.hpp
index f15f49b..a794cb9 100644
--- a/src/addinmanager.hpp
+++ b/src/addinmanager.hpp
@@ -1,7 +1,7 @@
/*
* gnote
*
- * Copyright (C) 2010,2012-2013 Aurimas Cernius
+ * Copyright (C) 2010,2012-2014 Aurimas Cernius
* Copyright (C) 2009 Debarshi Ray
* Copyright (C) 2009 Hubert Figuiere
*
@@ -79,6 +79,7 @@ public:
return m_addin_infos;
}
AddinInfo get_addin_info(const std::string & id) const;
+ AddinInfo get_addin_info(const AbstractAddin & addin) const;
bool is_module_loaded(const std::string & id) const;
sharp::DynamicModule *get_module(const std::string & id);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]