void PickingMode::pickParent_(const QPoint& p) { ignore_pick_ = true; list<GeometricObject*> objects; scene_->pickObjects(p, objects); if (objects.empty()) return; Composite* composite = (Composite*)(**objects.begin()).getComposite(); if (composite == 0) return; Composite* to_select = 0; Atom* atom = dynamic_cast<Atom*>(composite); if (atom != 0) { to_select = atom->getParent(); } else { Bond* bond = dynamic_cast<Bond*>(composite); if (bond!= 0) { to_select = (Composite*)bond->getFirstAtom()->getParent(); } else { to_select = composite; } } if (to_select != 0) { if (to_select->isSelected()) { getMainControl()->deselectCompositeRecursive(to_select, true); } else { getMainControl()->selectCompositeRecursive(to_select, true); } getMainControl()->update(*to_select, true); } }
CHECK(Bond() throw()) b = new Bond; TEST_NOT_EQUAL(b, 0) RESULT CHECK(~Bond() throw()) delete b; RESULT CHECK(Bond(const Bond& bond, bool deep = true) throw()) Atom a1; Atom a2; Bond b1, b2; b1.setFirstAtom(&a1); TEST_EQUAL(b1.getFirstAtom(), &a1); b1.setFirstAtom(&a2); TEST_EQUAL(b1.getFirstAtom(), &a2); RESULT CHECK(Bond(const String& name, Atom& first, Atom& second, Order order = BALL_BOND_DEFAULT_ORDER, Type type = BALL_BOND_DEFAULT_TYPE) throw(TooManyBonds)) Atom a1; Atom a2; Bond b1("name", a1, a2, 1, 2); TEST_EQUAL(b1.getName(), "name") TEST_EQUAL(b1.getFirstAtom(), &a1) TEST_EQUAL(b1.getSecondAtom(), &a2) TEST_EQUAL(b1.getOrder(), 1) TEST_EQUAL(b1.getType(), 2) RESULT
void MolecularInformation::getName_(Composite& composite) { String temp = "UNKNOWN"; switch(type_) { case TYPE__BOND: { temp.clear(); Bond* bond = RTTI::castTo<Bond>(composite); Atom* a1 = (Atom*) bond->getFirstAtom(); Atom* a2 = (Atom*) bond->getSecondAtom(); temp = getBondAtomName_(a1) + " -> " + getBondAtomName_(a2); } break; case TYPE__SYSTEM: { System* system = RTTI::castTo<System>(composite); temp = system->getName(); } break; case TYPE__RESIDUE: { Residue* residue = RTTI::castTo<Residue>(composite); temp = residue->getName(); temp += " "; temp += residue->getID(); } break; case TYPE__MOLECULE: case TYPE__PROTEIN: case TYPE__CHAIN: case TYPE__FRAGMENT: case TYPE__SECONDARY_STRUCTURE: { AtomContainer* atom_container = RTTI::castTo<AtomContainer>(composite); temp = atom_container->getName(); } break; case TYPE__ATOM: { Atom* atom = RTTI::castTo<Atom>(composite); temp = atom->getName(); } break; default: break; } if (type_ == TYPE__SECONDARY_STRUCTURE) { const SecondaryStructure* ss = dynamic_cast<SecondaryStructure*>(&composite); if (ss != 0) { switch (ss->getType()) { case SecondaryStructure::HELIX: temp += " Helix"; break; case SecondaryStructure::TURN: temp += " Turn"; break; case SecondaryStructure::STRAND: temp += " Strand"; break; case SecondaryStructure::COIL: temp += " Coil"; break; default: temp += " Unknown"; } } else { temp += " Unknown"; } } else { if (temp == "") { temp = "<"; temp += type_name_; temp += ">"; } } name_ = temp; }