From 7acaa720759823a61669dc5578a921504ab84ce2 Mon Sep 17 00:00:00 2001 From: stefan <stefan@5a81b35b-ba03-0410-adc8-b2c5c5119f08> Date: Fri, 19 Mar 2010 16:48:22 +0000 Subject: [PATCH] Disable emdb loader if img not available git-svn-id: https://dng.biozentrum.unibas.ch/svn/openstructure/trunk@1849 5a81b35b-ba03-0410-adc8-b2c5c5119f08 --- modules/gui/pymod/export_remote_site_loader.cc | 5 +++++ modules/gui/pymod/scene/file_loader.py | 18 ++++++++++++++++-- modules/gui/pymod/scene/loaders.xml | 2 +- modules/gui/src/remote_loader.cc | 16 ++++++++++------ modules/gui/src/remote_site_loader.cc | 2 +- modules/gui/src/remote_site_loader.hh | 1 + 6 files changed, 34 insertions(+), 10 deletions(-) diff --git a/modules/gui/pymod/export_remote_site_loader.cc b/modules/gui/pymod/export_remote_site_loader.cc index 923b8497b..257e8d3fe 100644 --- a/modules/gui/pymod/export_remote_site_loader.cc +++ b/modules/gui/pymod/export_remote_site_loader.cc @@ -45,6 +45,10 @@ struct WrappedRemoteSiteLoader : public RemoteSiteLoader return call_method<QString>(self, "GetRemoteSiteName"); } + virtual bool IsImg() const{ + return call_method<bool>(self, "IsImg"); + } + virtual QNetworkReply* ById(const QString& id){ //This hackish code will be changed soon(er or later) unsigned long addr=call_method<unsigned long, std::string>(self, "ByIdAddr", id.toStdString()); @@ -64,6 +68,7 @@ void export_RemoteSiteLoader() class_<RemoteSiteLoader, WrappedRemoteSiteLoader, boost::noncopyable>("RemoteSiteLoader") .def("LoadById",&WrappedRemoteSiteLoader::LoadById) .def("GetRemoteSiteName", &WrappedRemoteSiteLoader::GetRemoteSiteName) + .def("IsImg", &WrappedRemoteSiteLoader::IsImg) ; } diff --git a/modules/gui/pymod/scene/file_loader.py b/modules/gui/pymod/scene/file_loader.py index abba16511..f39403c80 100644 --- a/modules/gui/pymod/scene/file_loader.py +++ b/modules/gui/pymod/scene/file_loader.py @@ -56,6 +56,9 @@ class BaseRemoteLoader(gui.RemoteSiteLoader): return sip.unwrapinstance(reply) return 0 + def IsImg(self): + return False + def GetRemoteSiteName(self): pass @@ -85,12 +88,14 @@ class GenericLoader(BaseRemoteLoader): UP_CASE_ATTRIBUTE_NAME = "UpCase" FILE_TYPE_ATTRIBUTE_NAME = "FileType" TMP_URL_ATTRIBUTE_NAME= "TmpUrl" + IMG_ATTRIBUTE_NAME= "Img" - def __init__(self, name, url, up_case, file_type, tmp_url=None): + def __init__(self, name, url, up_case, file_type, tmp_url=None, img=False): BaseRemoteLoader.__init__(self) self.name_ = QtCore.QString(name) self.url_ = QtCore.QString(url) self.up_case_ = up_case + self.img_ = img if file_type is not None: self.file_type_ = QtCore.QString(file_type) else: @@ -101,6 +106,9 @@ class GenericLoader(BaseRemoteLoader): else: self.tmp_url_ = tmp_url + def IsImg(self): + return self.img_ + def GetRemoteSiteName(self): return self.name_ @@ -148,6 +156,8 @@ class GenericLoader(BaseRemoteLoader): group.SetAttribute(GenericLoader.FILE_TYPE_ATTRIBUTE_NAME, str(self.file_type_)) if self.tmp_url_ is not None: group.SetAttribute(GenericLoader.TMP_URL_ATTRIBUTE_NAME, str(self.tmp_url_)) + if self.img_ is not None: + group.SetAttribute(GenericLoader.IMG_ATTRIBUTE_NAME, str(int(self.img_))) @staticmethod def FromInfo(group): @@ -156,6 +166,7 @@ class GenericLoader(BaseRemoteLoader): up_case = False file_type = None tmp_url = None + img = False if group.HasAttribute(GenericLoader.EXT_NAME_ATTRIBUTE_NAME): name = QtCore.QString(group.GetAttribute(GenericLoader.EXT_NAME_ATTRIBUTE_NAME)) @@ -172,4 +183,7 @@ class GenericLoader(BaseRemoteLoader): if group.HasAttribute(GenericLoader.TMP_URL_ATTRIBUTE_NAME): tmp_url = QtCore.QString(group.GetAttribute(GenericLoader.TMP_URL_ATTRIBUTE_NAME)) - return GenericLoader(name, url, up_case, file_type, tmp_url) + if group.HasAttribute(GenericLoader.IMG_ATTRIBUTE_NAME): + img = bool(int(group.GetAttribute(GenericLoader.IMG_ATTRIBUTE_NAME))) + + return GenericLoader(name, url, up_case, file_type, tmp_url, img) diff --git a/modules/gui/pymod/scene/loaders.xml b/modules/gui/pymod/scene/loaders.xml index 52e9ecfe1..00f241284 100644 --- a/modules/gui/pymod/scene/loaders.xml +++ b/modules/gui/pymod/scene/loaders.xml @@ -3,6 +3,6 @@ <GenericLoaders> <GenericLoader ExtName="pdbredo" Name="pdbredo" Url="http://www.cmbi.ru.nl/pdb_redo/ak/${ID}/${ID}_besttls.pdb" /> <GenericLoader ExtName="pdborg" Name="pdb.org" Url="http://www.pdb.org/pdb/files/${ID}.pdb" /> - <GenericLoader ExtName="emdb" Name="emdb" Url="ftp://ftp.ebi.ac.uk/pub/databases/emdb/structures/EMD-${ID}/map/emd_${ID}.map.gz" FileType=".map.gz" Img="1"/> + <GenericLoader ExtName="emdb" Name="emdb" Url="ftp://ftp.ebi.ac.uk/pub/databases/emdb/structures/EMD-${ID}/map/emd_${ID}.map.gz" FileType="map.gz" Img="1"/> </GenericLoaders> </EMDataInfo> diff --git a/modules/gui/src/remote_loader.cc b/modules/gui/src/remote_loader.cc index 5f378e00a..c79abbbcf 100644 --- a/modules/gui/src/remote_loader.cc +++ b/modules/gui/src/remote_loader.cc @@ -92,13 +92,17 @@ void RemoteLoader::BuildMenu() } std::vector<String> site_loaders = FileLoader::GetSiteLoaderIdents(); for(unsigned int i=0; i<site_loaders.size(); i++){ - QAction* action = new QAction(QString(site_loaders[i].c_str()),site_loader_menu_); - action->setCheckable(true); - site_actions_->addAction(action); - if(site_actions_->checkedAction()==NULL ||selected_site_loader==site_loaders[i] ){ - action->setChecked(true); + QString loader_ident(site_loaders[i].c_str()); + RemoteSiteLoader* loader = FileLoader::GetLoaderManager()->GetRemoteSiteLoader(loader_ident); + if(loader && ((loader->IsImg() && img_support_) || !loader->IsImg())){ + QAction* action = new QAction(loader_ident,site_loader_menu_); + action->setCheckable(true); + site_actions_->addAction(action); + if(site_actions_->checkedAction()==NULL ||selected_site_loader==loader_ident.toStdString() ){ + action->setChecked(true); + } + site_loader_menu_->addAction(action); } - site_loader_menu_->addAction(action); } } diff --git a/modules/gui/src/remote_site_loader.cc b/modules/gui/src/remote_site_loader.cc index fb9c4c1ec..8955715e0 100644 --- a/modules/gui/src/remote_site_loader.cc +++ b/modules/gui/src/remote_site_loader.cc @@ -24,5 +24,5 @@ namespace ost { namespace gui { void RemoteSiteLoader::LoadById(const QString& id){this->ById(id);} QNetworkReply* RemoteSiteLoader::ById(const QString& id){return NULL;} QString RemoteSiteLoader::GetRemoteSiteName(){return QString();} - + bool RemoteSiteLoader::IsImg() const { return false; } }} diff --git a/modules/gui/src/remote_site_loader.hh b/modules/gui/src/remote_site_loader.hh index 77d2abb7f..cc4d7dc6c 100644 --- a/modules/gui/src/remote_site_loader.hh +++ b/modules/gui/src/remote_site_loader.hh @@ -38,6 +38,7 @@ public: virtual QNetworkReply* ById(const QString& id); virtual void LoadById(const QString& id); virtual QString GetRemoteSiteName(); + virtual bool IsImg() const; virtual ~RemoteSiteLoader(){}; }; -- GitLab