diff --git a/modules/gui/pymod/export_remote_site_loader.cc b/modules/gui/pymod/export_remote_site_loader.cc index 923b8497b5267f92b183773225e2ec1871cff66b..257e8d3feeae4f42ef39be2238117c508eae0f68 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 abba16511bfe80fc7dd03b72368575b6536f9613..f39403c802a56d4228484d848b9d6899127d94df 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 52e9ecfe1d0b6f3d3f4f9f49d0ecfc83e97af855..00f2412841b709866224d2bfeab08d559da9a6a0 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 5f378e00a15f00bf74079be617f96b9198c2de78..c79abbbcf4d470a0a545eb6af96d84667ece4c30 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 fb9c4c1ec4f201e3c71cf2efcc0bde78e7e3ce18..8955715e0082d756433f2bf104226c4487d8d23e 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 77d2abb7f370025d5f2444906f4bdd0427607ad2..cc4d7dc6cacfec548bbdbc5a704101f0cc34ffc4 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(){}; };