150 if (!m->first->GetParentOfType(&
object))
continue;
153 if ((m->first->IsSolvent() || m->first->IsHeterogen()) &&
154 hetsRedrawn.
find(
object) != hetsRedrawn.
end())
continue;
157 hetsRedrawn[object] =
true;
170 ERRORMSG(
"Messenger::RemoveStructureWindow() - window mismatch");
187 (*q)->SaveDialog(prompt);
204 MoleculeHighlightMap::const_iterator h =
highlights.find(identifier);
207 if (index == -1)
return true;
209 if (index < 0 || index >= (
int)h->second.size()) {
210 ERRORMSG(
"Messenger::IsHighlighted() - index out of range");
213 return h->second[index];
238 StructureSet::ObjectList::const_iterator o, oe =
set->objects.
end();
239 ChemicalGraph::MoleculeMap::const_iterator m, me;
240 for (o=
set->objects.
begin(); o!=oe; ++o) {
241 for (m=(*o)->graph->molecules.begin(), me=(*o)->graph->molecules.end(); m!=me; ++m) {
242 if (m->second->identifier == identifier)
250 if (seqIndexFrom > seqIndexTo || seqIndexFrom >= sequence->
Length() || seqIndexTo >= sequence->
Length()) {
251 ERRORMSG(
"Messenger::AddHighlights() - seqIndex out of range");
261 for (
unsigned int i=seqIndexFrom;
i<=seqIndexTo; ++
i) h->second[
i] =
true;
274 (*q)->MakeSequenceVisible(sequence->
identifier);
283 MoleculeHighlightMap::const_iterator h, he =
highlights.end();
286 newHighlights[sequence->
identifier] = h->second;
291 ERRORMSG(
"Selected sequence has no highlights!");
302 if (seqIndexFrom > seqIndexTo || seqIndexFrom >= sequence->
Length() || seqIndexTo >= sequence->
Length()) {
303 ERRORMSG(
"Messenger::RemoveHighlights() - seqIndex out of range");
310 for (
i=seqIndexFrom;
i<=seqIndexTo; ++
i) h->second[
i] =
false;
314 if (h->second[
i] ==
true)
break;
326 if (indexFrom > indexTo || indexFrom >= identifier->
nResidues || indexTo >= identifier->
nResidues) {
327 ERRORMSG(
"Messenger::ToggleHighlights() - index out of range");
331 MoleculeHighlightMap::iterator h =
highlights.find(identifier);
338 for (
i=indexFrom;
i<=indexTo; ++
i) h->second[
i] = !h->second[
i];
341 for (
i=0;
i<h->second.size(); ++
i)
342 if (h->second[
i] ==
true)
break;
343 if (
i == h->second.size())
357 if (residueIDFrom > residueIDTo || residueIDFrom < 1 || residueIDTo < 1 ||
358 residueIDFrom > (
int)molecule->
NResidues() || residueIDTo > (
int)molecule->
NResidues()) {
359 ERRORMSG(
"Messenger::AddHighlights() - residueID out of range");
370 for (
int i=residueIDFrom-1;
i<=residueIDTo-1; ++
i) h->second[
i] =
true;
372 if (scrollViewersTo) {
376 (*t)->MakeResidueVisible(molecule, residueIDFrom - 1);
385 if (scrollViewersTo) {
389 (*t)->MakeResidueVisible(molecule, residueID - 1);
401 MoleculeHighlightMap::const_iterator h, he =
highlights.end();
436 MoleculeHighlightMap::const_iterator h, he =
highlights.end();
458 MoleculeHighlightMap::const_iterator h, he =
highlights.end();
460 if (h->first->HasStructure())
461 (*residues)[h->first] = h->second;
464 return (residues->size() > 0);
476 MoleculeHighlightMap::const_iterator h, he =
highlights.end();
478 if (h ==
highlights.begin()) mmdbID = h->first->mmdbID;
480 ERRORMSG(
"All highlights must be on a single PDB structure");
484 ERRORMSG(
"internal error - MoleculeIdentifier has no moleculeID");
494 bas->
SetId().push_back(bid);
502 bfs->SetFeatures().push_back(bf);
506 bf->SetLocation().SetSubgraph(*cgp);
513 while (first < h->second.size()) {
516 while (first < h->second.size() && !h->second[
first]) ++
first;
517 if (
first >= h->second.size())
break;
520 while (
last + 1 < h->second.size() && h->second[
last + 1]) ++
last;
524 rip->SetMolecule_id().Set(h->first->moleculeID);
525 rip->SetFrom().Set(
first + 1);
526 rip->SetTo().Set(
last + 1);
543 MoleculeHighlightMap::const_iterator h, he =
highlights.end();
549 WARNINGMSG(
"Messenger::GetHighlightsForSelectionMessage() - SeqIdToIdentifier() failed");
556 bool firstInterval =
true;
557 while (first < h->second.size()) {
560 while (first < h->second.size() && !h->second[
first]) ++
first;
561 if (
first >= h->second.size())
break;
565 while (
last + 1 < h->second.size() && h->second[
last + 1]) ++
last;
571 firstInterval =
false;
590 (*q)->SetWindowTitle();
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
CNcbiOstrstreamToString class helps convert CNcbiOstrstream to a string Sample usage:
CResidue_interval_pntr –.
void RedrawMolecule(int moleculeID) const
OpenGLRenderer * renderer
StructureSet * structureSet
RedrawSequenceViewerList redrawSequenceViewers
bool redrawAllSequenceViewers
void SetAllWindowTitles(void) const
void RedrawMoleculesWithIdentifier(const MoleculeIdentifier *identifier, const StructureSet *set)
void RestoreCachedHighlights(void)
void NewSequenceViewerFont(void)
void ToggleHighlights(const Sequence *sequence, unsigned int seqIndexFrom, unsigned int seqIndexTo)
void PostRedrawMolecule(const Molecule *molecule)
void GetHighlights(MoleculeHighlightMap *copyHighlights)
ncbi::objects::CBiostruc_annot_set * CreateBiostrucAnnotSetForHighlightsOnSingleObject(void) const
bool IsHighlighted(const Molecule *molecule, int residueID) const
bool IsHighlightedAnywhere(const MoleculeIdentifier *identifier) const
bool IsFileMessengerActive(void) const
void SequenceWindowsSave(bool prompt)
void RemoveStructureWindow(const StructureWindow *structureWindow)
MoleculeHighlightMap highlightCache
bool GetHighlightedResiduesWithStructure(MoleculeHighlightMap *residues) const
bool highlightingSuspended
void PostRedrawSequenceViewer(ViewerBase *viewer)
void KeepHighlightsOnlyOnSequence(const Sequence *sequence)
MoleculeHighlightMap highlights
void HighlightAndShowSequence(const Sequence *sequence)
void UnPostRedrawAllSequenceViewers(void)
bool RemoveAllHighlights(bool postRedraws)
void ToggleHighlight(const Molecule *molecule, int residueID, bool scrollViewersTo=false)
void FileMessengerSend(const std::string &toApp, const std::string &command, const std::string &data)
void RemoveHighlights(const Sequence *sequence, unsigned int seqIndexFrom, unsigned int seqIndexTo)
void PostRedrawAllStructures(void)
bool GetHighlightsForSelectionMessage(std::string *data) const
void UnPostRedrawSequenceViewer(ViewerBase *viewer)
SequenceViewerList sequenceViewers
void RemoveSequenceViewer(const ViewerBase *sequenceViewer)
RedrawMoleculeList redrawMolecules
void SuspendHighlighting(bool suspend)
void PostRedrawAllSequenceViewers(void)
StructureWindow * structureWindow
void AddHighlights(const Sequence *sequence, unsigned int seqIndexFrom, unsigned int seqIndexTo)
void SetHighlights(const MoleculeHighlightMap &newHighlights)
void CacheHighlights(void)
void ProcessRedraws(void)
std::map< const MoleculeIdentifier *, std::vector< bool > > MoleculeHighlightMap
void UnPostStructureRedraws(void)
bool IsAnythingHighlighted(void) const
static const int VALUE_NOT_SET
const MoleculeIdentifier * identifier
unsigned int NResidues(void) const
void NewView(double eyeTranslateToAngleDegrees=0.0) const
const MoleculeIdentifier * identifier
unsigned int Length(void) const
const ChemicalGraph * graph
void SetWindowTitle(void)
void SendCommand(const std::string &toApp, const std::string &command, const std::string &data)
bool IsFileMessengerActive(void) const
const_iterator end() const
const_iterator find(const key_type &key) const
const_iterator begin() const
const_iterator end() const
Include a standard set of the NCBI C++ Toolkit most basic headers.
bool SeqIdToIdentifier(const CRef< ncbi::objects::CSeq_id > &seqID, string &identifier)
static DLIST_TYPE *DLIST_NAME() first(DLIST_LIST_TYPE *list)
static DLIST_TYPE *DLIST_NAME() last(DLIST_LIST_TYPE *list)
TObjectType * Release(void)
Release a reference to the object and return a pointer to the object.
#define END_SCOPE(ns)
End the previously defined scope.
#define BEGIN_SCOPE(ns)
Define a new scope.
TInterval & SetInterval(void)
Select the variant.
TResidues & SetResidues(void)
Select the variant.
TId & SetId(void)
Assign a value to Id data member.
TFeatures & SetFeatures(void)
Assign a value to Features data member.
TMmdb_id & SetMmdb_id(void)
Select the variant.
for(len=0;yy_str[len];++len)
if(yy_accept[yy_current_state])
Messenger * GlobalMessenger(void)
static Messenger messenger