diff --git a/modules/gui/pymod/export_file_loader.cc b/modules/gui/pymod/export_file_loader.cc index 5e006fb2cea35df25a72e46dfe6c2c3850a55216..9853d5bc77184d76f2365469bb3993c8d668f924 100644 --- a/modules/gui/pymod/export_file_loader.cc +++ b/modules/gui/pymod/export_file_loader.cc @@ -68,6 +68,8 @@ void export_FileLoader() .def("GetSiteLoaderIdents", &LoaderManager::GetSiteLoaderIdents) .def("AddRemoteSiteLoader", &add_remote_site_loader) .def("RemoveRemoteSiteLoader", &LoaderManager::RemoveRemoteSiteLoader) + .def("SetDefaultRemoteSiteIdent", &LoaderManager::SetDefaultRemoteSiteIdent) + .def("GetDefaultRemoteSiteIdent", &LoaderManager::GetDefaultRemoteSiteIdent) ; class_<FileLoader, boost::noncopyable>("FileLoader", no_init) diff --git a/modules/gui/pymod/scene/file_loader.py b/modules/gui/pymod/scene/file_loader.py index 522dd6934deeb8bfa45b17ebd1aea6646ecf3d44..25f00a2bdae6d10ed5ae5132303451717cc16270 100644 --- a/modules/gui/pymod/scene/file_loader.py +++ b/modules/gui/pymod/scene/file_loader.py @@ -52,6 +52,9 @@ class BaseRemoteLoader(gui.RemoteSiteLoader): def IsImg(self): return False + def IsDefault(self): + return False + def GetRemoteSiteName(self): pass @@ -83,13 +86,14 @@ class GenericLoader(BaseRemoteLoader): 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, img=False): + DEFAULT_ATTRIBUTE_NAME= "Default" + def __init__(self, name, url, up_case, file_type, tmp_url=None, img=False, default=False): BaseRemoteLoader.__init__(self) self.name_ = QtCore.QString(name) self.url_ = QtCore.QString(url) self.up_case_ = up_case self.img_ = img + self.default_ = default if file_type is not None: self.file_type_ = QtCore.QString(file_type) else: @@ -103,6 +107,9 @@ class GenericLoader(BaseRemoteLoader): def IsImg(self): return self.img_ + def IsDefault(self): + return self.default_ + def GetRemoteSiteName(self): return self.name_ @@ -138,7 +145,7 @@ class GenericLoader(BaseRemoteLoader): def HandleError(self, message): messageBox =QtGui.QMessageBox(QtGui.QMessageBox.Warning, - "Error while Loading PDB from "+self.name_, "Could not download file ("+message+")!") + "Error while Loading file from "+self.name_, "Could not download file ("+message+")!") messageBox.exec_() def ToInfo(self,group): @@ -152,6 +159,8 @@ class GenericLoader(BaseRemoteLoader): 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_))) + if self.default_ is not None: + group.SetAttribute(GenericLoader.DEFAULT_ATTRIBUTE_NAME, str(int(self.default_))) @staticmethod def FromInfo(group): @@ -161,6 +170,7 @@ class GenericLoader(BaseRemoteLoader): file_type = None tmp_url = None img = False + default = False if group.HasAttribute(GenericLoader.EXT_NAME_ATTRIBUTE_NAME): name = QtCore.QString(group.GetAttribute(GenericLoader.EXT_NAME_ATTRIBUTE_NAME)) @@ -179,5 +189,8 @@ class GenericLoader(BaseRemoteLoader): if group.HasAttribute(GenericLoader.IMG_ATTRIBUTE_NAME): img = bool(int(group.GetAttribute(GenericLoader.IMG_ATTRIBUTE_NAME))) + + if group.HasAttribute(GenericLoader.DEFAULT_ATTRIBUTE_NAME): + default = bool(int(group.GetAttribute(GenericLoader.DEFAULT_ATTRIBUTE_NAME))) - return GenericLoader(name, url, up_case, file_type, tmp_url, img) + return GenericLoader(name, url, up_case, file_type, tmp_url, img, default) diff --git a/modules/gui/pymod/scene/loader_list_model.py b/modules/gui/pymod/scene/loader_list_model.py index 26557a49c9135512eca070ae4fd0b7a7b81b44c5..c033df0388f7f6f36e1290c371318d4b4c91a6a4 100644 --- a/modules/gui/pymod/scene/loader_list_model.py +++ b/modules/gui/pymod/scene/loader_list_model.py @@ -36,6 +36,8 @@ class LoaderListModel(QtCore.QAbstractListModel): self.AddLoaderToInfo(name, loader) self.emit(QtCore.SIGNAL("dataChanged"),model_index, end_index) gui.FileLoader.GetLoaderManager().AddRemoteSiteLoader(name, loader) + if(loader.IsDefault()): + gui.FileLoader.GetLoaderManager().SetDefaultRemoteSiteIdent(name) return True return False diff --git a/modules/gui/pymod/scene/loaders.xml b/modules/gui/pymod/scene/loaders.xml index dd1ad36c32fe3ce0fca9b6754b99375d27f16cff..868cf359c06db28b8f18370c0680f05b42cc5e36 100644 --- a/modules/gui/pymod/scene/loaders.xml +++ b/modules/gui/pymod/scene/loaders.xml @@ -2,7 +2,7 @@ <EMDataInfo> <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="pdborg" Name="pdb.org" Url="http://www.pdb.org/pdb/files/${ID}.pdb" Default="1" /> <GenericLoader ExtName="emdb" Name="emdb" Url="ftp://emdb.rutgers.edu/structures/EMD-${ID}/map/emd_${ID}.map.gz" FileType="map.gz" Img="1"/> </GenericLoaders> </EMDataInfo> diff --git a/modules/gui/src/loader_manager.cc b/modules/gui/src/loader_manager.cc index f9e83c7599a53b825a7b13eedfeecaa57fcbeb5a..7ea2f661c8bbe3a4a9bef06bbb16de714559f43b 100644 --- a/modules/gui/src/loader_manager.cc +++ b/modules/gui/src/loader_manager.cc @@ -99,6 +99,19 @@ QMenu* LoaderManager::GetSiteMenu(){ return site_menu_; } +RemoteSiteLoader* LoaderManager::GetDefaultRemoteSiteLoader() +{ + return GetRemoteSiteLoader(GetDefaultRemoteSiteIdent()); +} + +QString LoaderManager::GetDefaultRemoteSiteIdent(){ + return default_site_; +} + +void LoaderManager::SetDefaultRemoteSiteIdent(const QString& ident){ + default_site_ = ident; +} + LoaderManager::~LoaderManager(){} } } diff --git a/modules/gui/src/loader_manager.hh b/modules/gui/src/loader_manager.hh index a952b586b31ea951073820e849eb06f405850a63..12c5c59f29e3846312fca598749850d663946cf0 100644 --- a/modules/gui/src/loader_manager.hh +++ b/modules/gui/src/loader_manager.hh @@ -34,7 +34,7 @@ class DLLEXPORT_OST_GUI LoaderManager { QMap<QString,RemoteSiteLoader*> site_loaders_; QActionGroup* site_actions_; QMenu* site_menu_; - + QString default_site_; public: LoaderManager(); @@ -44,6 +44,9 @@ public: void RemoveRemoteSiteLoader(const QString& ident); RemoteSiteLoader* GetRemoteSiteLoader(const QString& ident); RemoteSiteLoader* GetCurrentSiteLoader(); + RemoteSiteLoader* GetDefaultRemoteSiteLoader(); + QString GetDefaultRemoteSiteIdent(); + void SetDefaultRemoteSiteIdent(const QString& ident); QMenu* GetSiteMenu(); }; diff --git a/modules/gui/src/remote_loader.cc b/modules/gui/src/remote_loader.cc index 0ce6f1595596e5a32a5b6c5683bbb3554371b788..26b333e8108463b0fe062f8dc262cdf18b03cc39 100644 --- a/modules/gui/src/remote_loader.cc +++ b/modules/gui/src/remote_loader.cc @@ -102,7 +102,7 @@ void RemoteLoader::BuildMenu(String active_loader) 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() ){ + if((site_actions_->checkedAction()==NULL && loader_ident == FileLoader::GetLoaderManager()->GetDefaultRemoteSiteIdent()) ||selected_site_loader_==loader_ident.toStdString() ){ action->setChecked(true); } site_loader_menu_->addAction(action);