~ubuntu-branches/ubuntu/trusty/avogadro/trusty-proposed

« back to all changes in this revision

Viewing changes to libavogadro/src/tools/drawcommand.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Rohan Garg
  • Date: 2011-05-20 18:55:49 UTC
  • mfrom: (3.2.13 sid)
  • Revision ID: james.westby@ubuntu.com-20110520185549-berzu8h9f9330xji
Tags: 1.0.3-1ubuntu1
* Merge from debian, remaining changes (LP: #787458, #784267)
  - Disable builds for ARM as build dependency on libOpenGL and 
    libQtOpenGL

Show diffs side-by-side

added added

removed removed

Lines of Context:
254
254
      foreach (unsigned long id, d->atomIds) {
255
255
        Atom *atom = d->molecule->atomById(id);
256
256
        Q_CHECK_PTR( atom );
257
 
        
 
257
 
258
258
        if (atom) {
259
259
          if (atom->isHydrogen()) {
260
260
            qDebug() << "AdjustHydrogensPostCommand::redo(): Error, request to add hydrogens on hydrogen atom";
336
336
    Q_CHECK_PTR( atom );
337
337
    if (atom) {
338
338
      // Remove the previously add hydrogens if needed
339
 
      if (d->adjustHydrogens & AdjustHydrogens::RemoveOnUndo)
 
339
      if (d->adjustHydrogens & AdjustHydrogens::RemoveOnUndo && !atom->isHydrogen())
340
340
        d->postCommand->undo();
341
341
 
342
342
      d->molecule->removeAtom(atom);
348
348
  void AddAtomDrawCommand::redo()
349
349
  {
350
350
    if (d->atom) { // initial creation
351
 
      if (d->adjustHydrogens != AdjustHydrogens::Never) {
 
351
      if (d->adjustHydrogens != AdjustHydrogens::Never && !d->atom->isHydrogen()) {
352
352
        d->postCommand = new AdjustHydrogensPostCommand(d->molecule, d->id);
353
353
        if (d->adjustHydrogens & AdjustHydrogens::AddOnRedo)
354
354
          d->postCommand->redo();
373
373
    atom->setPos(d->pos);
374
374
    atom->setAtomicNumber(d->element);
375
375
 
376
 
    if (d->adjustHydrogens != AdjustHydrogens::Never) {
 
376
    if (d->adjustHydrogens != AdjustHydrogens::Never && !atom->isHydrogen()) {
377
377
      if (!d->postCommand)
378
378
        d->postCommand = new AdjustHydrogensPostCommand(d->molecule, d->id);
379
379
      if (d->adjustHydrogens & AdjustHydrogens::AddOnRedo)
488
488
    if (atom) {
489
489
      QList<unsigned long> neighbors;
490
490
 
491
 
      if (d->adjustHydrogens) {
 
491
      if (d->adjustHydrogens && !atom->isHydrogen()) {
492
492
        if (!d->preCommand) {
493
493
          QList<unsigned long> ids;
494
494
          foreach (unsigned long id, atom->neighbors()) {
495
 
            if (!d->molecule->atomById(id)->isHydrogen())
 
495
            if (!d->molecule->atomById(id)->isHydrogen()) {
496
496
              neighbors.append(id);
497
497
              ids.append(id);
 
498
            }
498
499
          }
499
500
 
500
501
          ids.append(atom->id());
508
509
      // Delete the atom, also deletes the bonds
509
510
      d->molecule->removeAtom(atom);
510
511
 
511
 
      if (d->adjustHydrogens) {
 
512
      if (d->adjustHydrogens && !atom->isHydrogen()) {
512
513
        if (!d->postCommand)
513
514
          // Add hydrogens to the heavy atom neighbors of the delted atom
514
515
          // Uses new ids the first time, reuses these on successive calls
826
827
      int adjustHydrogens) : d(new ChangeElementDrawCommandPrivate)
827
828
  {
828
829
#ifdef DEBUG_COMMANDS
829
 
    qDebug() << "ChangeElementDrawCommand(id = " << atom->id() << ", old = " << oldElement 
 
830
    qDebug() << "ChangeElementDrawCommand(id = " << atom->id() << ", old = " << oldElement
830
831
             << ", new = " << atom->atomicNumber() << ", adj=" << adjustHydrogens << ")";
831
832
#endif
832
833
 
837
838
    d->id = atom->id();
838
839
    d->adjustHydrogens = adjustHydrogens;
839
840
  }
840
 
    
 
841
 
841
842
  void ChangeElementDrawCommand::setAdjustHydrogens(int adjustHydrogens)
842
843
  {
843
844
    d->adjustHydrogens = adjustHydrogens;
891
892
    if (atom) {
892
893
      // Remove Hydrogens if needed
893
894
      if (d->adjustHydrogens) {
894
 
        if (!d->preCommand) {
 
895
        if (!atom->isHydrogen() && !d->preCommand) {
895
896
          QList<unsigned long> ids;
896
897
          ids.append(d->id);
897
898
          d->preCommand = new AdjustHydrogensPreCommand(d->molecule, ids);
898
899
        }
899
 
        d->preCommand->redo();
 
900
        if (d->preCommand)
 
901
          d->preCommand->redo();
900
902
      }
901
903
 
902
904
      // Make sure we call BeginModify / EndModify (e.g., PR#1720879)
903
905
      atom->setAtomicNumber(d->newElement);
904
906
 
905
907
      // Add hydrogens again if needed
906
 
      if (d->adjustHydrogens) {
 
908
      if (!atom->isHydrogen() && d->adjustHydrogens) {
907
909
        if (!d->postCommand) {
908
910
          QList<unsigned long> ids;
909
911
          ids.append(d->id);
910
912
          d->postCommand = new AdjustHydrogensPostCommand(d->molecule, ids);
911
913
        }
912
 
        d->postCommand->redo();
 
914
        if (d->postCommand)
 
915
          d->postCommand->redo();
913
916
      }
914
917
 
915
918
      d->molecule->update();