OSDN Git Service

Parameter editing is under overhaul.
authortoshinagata1964 <toshinagata1964@a2be9bc6-48de-4e38-9406-05402d4bc13c>
Tue, 8 May 2012 02:05:36 +0000 (02:05 +0000)
committertoshinagata1964 <toshinagata1964@a2be9bc6-48de-4e38-9406-05402d4bc13c>
Tue, 8 May 2012 02:05:36 +0000 (02:05 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/molby/trunk@198 a2be9bc6-48de-4e38-9406-05402d4bc13c

MolLib/MainView.c
MolLib/MolAction.c
MolLib/Molecule.c
MolLib/Ruby_bind/ruby_bind.c
Scripts/md.rb
wxSources/MoleculeView.cpp
xcode-build/Molby.xcodeproj/project.pbxproj

index dd4942c..e282247 100755 (executable)
@@ -3081,16 +3081,16 @@ static ColumnInfoRecord sAtomColumns[] = {
 {"x", 6, 1}, {"y", 6, 1}, {"z", 6, 1}, {"charge", 6, 1}, {NULL}
 };
 static ColumnInfoRecord sBondColumns[] = {
-{"atoms", 9, 0}, {"names", 9, 0}, {"type", 9, 0}, {"length", 8, 0}, {"r0", 8, 0}, {"force", 8, 0}, {NULL}
+       {"atoms", 9, 0}, {"names", 9, 0}, {"type", 9, 0}, {"length", 8, 0}, {"par type", 8, 0}, {"r0", 8, 0}, {"force", 8, 0}, {NULL}
 };
 static ColumnInfoRecord sAngleColumns[] = {
-{"atoms", 12, 0}, {"names", 12, 0}, {"type", 12, 0}, {"angle", 8, 0}, {"a0", 8, 0}, {"force", 8, 0}, {NULL}
+{"atoms", 12, 0}, {"names", 12, 0}, {"type", 12, 0}, {"angle", 8, 0}, {"par type", 8, 0}, {"a0", 8, 0}, {"force", 8, 0}, {NULL}
 };
 static ColumnInfoRecord sDihedralColumns[] = {
-{"atoms", 15, 0}, {"names", 15, 0}, {"type", 15, 0}, {"dihedral", 8, 0}, {"force", 8, 0}, {"period", 4, 0}, {"phi0", 8, 0}, {NULL}
+{"atoms", 15, 0}, {"names", 15, 0}, {"type", 15, 0}, {"dihedral", 8, 0}, {"par type", 8, 0}, {"force", 8, 0}, {"period", 4, 0}, {"phi0", 8, 0}, {NULL}
 };
 static ColumnInfoRecord sImproperColumns[] = {
-{"atoms", 15, 0}, {"names", 15, 0}, {"type", 15, 0}, {"improper", 8, 0}, {"force", 8, 0}, {"period", 4, 0}, {"phi0", 8, 0}, {NULL}
+{"atoms", 15, 0}, {"names", 15, 0}, {"type", 15, 0}, {"improper", 8, 0}, {"par type", 8, 0}, {"force", 8, 0}, {"period", 4, 0}, {"phi0", 8, 0}, {NULL}
 };
 static ColumnInfoRecord sParameterColumns[] = {
 {"class", 5, 0}, {"type", 9, 0}, {"", 6, 0}, {"", 6, 0}, {"", 6, 0}, {"", 6, 0}, {"", 6, 0}, {"", 6, 0}, {"src", 8, 0}, {"comment", 25, 0}, {NULL}
@@ -3289,11 +3289,17 @@ MainView_valueForTable(MainView *mview, int column, int row, char *buf, int bufs
                                snprintf(buf, bufsize, "%.3f", MoleculeMeasureBond(mview->mol, &(ap[0]->r), &(ap[1]->r)));
                                break;
                        case 4:
-                       case 5: {
+                       case 5:
+                       case 6: {
                                BondPar *bp = (BondPar *)sParameterOfTypeAtIndex(mol, kBondParType, idx);
                                if (bp == NULL)
                                        buf[0] = 0;
-                               else snprintf(buf, bufsize, "%.3f", (column == 4 ? bp->r0 : bp->k * INTERNAL2KCAL));
+                               else {
+                                       if (column == 4)
+                                               snprintf(buf, bufsize, "%.6s-%.6s", AtomTypeDecodeToString(bp->type1, typebuf[0]), AtomTypeDecodeToString(bp->type2, typebuf[1]));
+                                       else
+                                               snprintf(buf, bufsize, "%.3f", (column == 5 ? bp->r0 : bp->k * INTERNAL2KCAL));
+                               }
                                break;
                        }
                        default: buf[0] = 0; break;
@@ -3312,11 +3318,17 @@ MainView_valueForTable(MainView *mview, int column, int row, char *buf, int bufs
                                snprintf(buf, bufsize, "%.3f", MoleculeMeasureAngle(mview->mol, &(ap[0]->r), &(ap[1]->r), &(ap[2]->r)));
                                break;
                        case 4:
-                       case 5: {
+                       case 5:
+                       case 6: {
                                AnglePar *anp = (AnglePar *)sParameterOfTypeAtIndex(mol, kAngleParType, idx);
                                if (anp == NULL)
                                        buf[0] = 0;
-                               else snprintf(buf, bufsize, "%.3f", (column == 4 ? anp->a0 * kRad2Deg : anp->k * INTERNAL2KCAL));
+                               else {
+                                       if (column == 4)
+                                               snprintf(buf, bufsize, "%.6s-%.6s-%.6s", AtomTypeDecodeToString(anp->type1, typebuf[0]), AtomTypeDecodeToString(anp->type2, typebuf[1]), AtomTypeDecodeToString(anp->type3, typebuf[2]));
+                                       else
+                                               snprintf(buf, bufsize, "%.3f", (column == 5 ? anp->a0 * kRad2Deg : anp->k * INTERNAL2KCAL));
+                               }
                                break;
                        }
                        default: buf[0] = 0; break;
@@ -3338,13 +3350,16 @@ MainView_valueForTable(MainView *mview, int column, int row, char *buf, int bufs
                                break;
                        case 4:
                        case 5:
-                       case 6: {
+                       case 6:
+                       case 7: {
                                TorsionPar *tp = (TorsionPar *)sParameterOfTypeAtIndex(mol, (f ? kDihedralParType : kImproperParType), idx);
                                if (tp == NULL)
                                        buf[0] = 0;
-                               else if (column == 5)
+                               else if (column == 4)
+                                       snprintf(buf, bufsize, "%.6s-%.6s-%.6s-%.6s", AtomTypeDecodeToString(tp->type1, typebuf[0]), AtomTypeDecodeToString(tp->type2, typebuf[1]), AtomTypeDecodeToString(tp->type3, typebuf[2]), AtomTypeDecodeToString(tp->type4, typebuf[3]));
+                               else if (column == 6)
                                        snprintf(buf, bufsize, "%d", tp->period[0]);
-                               else snprintf(buf, bufsize, "%.3f", (column == 4 ? tp->k[0] * INTERNAL2KCAL : tp->phi0[0] * kRad2Deg));
+                               else snprintf(buf, bufsize, "%.3f", (column == 5 ? tp->k[0] * INTERNAL2KCAL : tp->phi0[0] * kRad2Deg));
                                break;
                        }
                        default: buf[0] = 0; break;
index beb397d..5d06d0f 100644 (file)
@@ -502,11 +502,10 @@ s_MolActionPerformRubyScript(Molecule *mol, MolAction *action)
 }
 
 static void
-sMolActionUpdateSelectionAndParameterNumbering(Molecule *mol, const IntGroup *ig, int is_insert)
+s_UpdateSelection(Molecule *mol, const IntGroup *ig, int is_insert)
 {
-       int i, j, n, old_natoms;
+       int n, old_natoms;
        IntGroup *sel, *orig_atoms, *ig3;
-       UnionPar *up;
        MolAction *act;
 
        if (ig == NULL || (n = IntGroupGetCount(ig)) == 0)
@@ -544,47 +543,6 @@ sMolActionUpdateSelectionAndParameterNumbering(Molecule *mol, const IntGroup *ig
                IntGroupRelease(sel);
        }
        
-       /*  Update parameters  */
-       /*
-       if (mol->par != NULL) {
-               Int *ip = (Int *)malloc(sizeof(Int) * old_natoms);
-               if (is_insert) {
-                       for (i = 0; i < old_natoms; i++)
-                               ip[i] = IntGroupGetNthPoint(orig_atoms, i);
-               } else {
-                       for (i = 0; i < old_natoms; i++)
-                               ip[i] = IntGroupLookupPoint(orig_atoms, i);
-               }
-               for (i = kFirstParType; i <= kLastParType; i++) {
-                       UnionPar usave;
-                       UnionPar *upary = NULL;
-                       Int count_upary = 0;
-                       if (!is_insert)
-                               ig3 = IntGroupNew();
-                       for (j = 0; (up = ParameterGetUnionParFromTypeAndIndex(mol->par, i, j)) != NULL; j++) {
-                               ParameterCopyOneWithType(&usave, up, i);  //  Don't say usave = *up
-                               if (ParameterRenumberAtoms(i, up, old_natoms, ip) && !is_insert) {
-                                       IntGroupAdd(ig3, j, 1);  //  This parameter is to be restored on undo
-                                       AssignArray(&upary, &count_upary, sizeof(UnionPar), count_upary, &usave);
-                               }
-                       }
-                       if (count_upary > 0) {
-                               //  Register undo for modifying parameters
-                               act = MolActionNew(gMolActionAddParameters, i, ig3, count_upary, upary);
-                               MolActionCallback_registerUndo(mol, act);
-                               MolActionRelease(act);
-                               act = MolActionNew(gMolActionDeleteParameters, i, ig3);
-                               MolActionCallback_registerUndo(mol, act);
-                               MolActionRelease(act);
-                               free(upary);
-                       }
-                       if (!is_insert)
-                               IntGroupRelease(ig3);
-               }
-               free(ip);
-       }
-        */
-       
        IntGroupRelease(orig_atoms);
 }
 
@@ -599,7 +557,7 @@ s_MolActionAddAnAtom(Molecule *mol, MolAction *action, MolAction **actp)
        if (n1 < 0)
                return -1;
        ig = IntGroupNewWithPoints(n1, 1, -1);
-       sMolActionUpdateSelectionAndParameterNumbering(mol, ig, 1);
+       s_UpdateSelection(mol, ig, 1);
        IntGroupRelease(ig);
        *actp = MolActionNew(gMolActionDeleteAnAtom, n1);
        return 0;
@@ -644,7 +602,7 @@ s_MolActionMergeMolecule(Molecule *mol, MolAction *action, MolAction **actp)
        if ((result = MoleculeMerge(mol, mol2, ig, n1)) != 0)
                return result;
        
-       sMolActionUpdateSelectionAndParameterNumbering(mol, ig, 1);
+       s_UpdateSelection(mol, ig, 1);
        
        *actp = MolActionNew(gMolActionUnmergeMolecule, ig2);
        IntGroupRelease(ig2);
@@ -655,7 +613,8 @@ static int
 s_MolActionDeleteAtoms(Molecule *mol, MolAction *action, MolAction **actp)
 {
        Int n1, result, *ip;
-       IntGroup *bg, *ig;
+       IntGroup *bg, *ig, *pg;
+       UnionPar *up;
        Molecule *mol2;
        if (strcmp(action->name, gMolActionDeleteAnAtom) == 0) {
                ig = IntGroupNew();
@@ -690,6 +649,32 @@ s_MolActionDeleteAtoms(Molecule *mol, MolAction *action, MolAction **actp)
                }
                IntGroupRelease(bg);
        }
+       /*  Search parameters that may disappear after unmerging  */
+       pg = NULL;
+       up = NULL;
+       if (mol->par != NULL) {
+               Int i, j, n;
+               IntGroup *rg = IntGroupNewWithPoints(0, mol->natoms, -1);
+               IntGroupRemoveIntGroup(rg, ig);  /*  Remaining atoms  */
+               pg = IntGroupNew();
+               for (j = kFirstParType; j <= kLastParType; j++) {
+                       n = ParameterGetCountForType(mol->par, j);
+                       for (i = 0; i < n; i++) {
+                               UnionPar *up1 = ParameterGetUnionParFromTypeAndIndex(mol->par, j, i);
+                               if (!ParameterIsRelevantToAtomGroup(j, up1, mol->atoms, ig) && !ParameterIsRelevantToAtomGroup(j, up1, mol->atoms, rg)) {
+                                       IntGroupAdd(pg, i + (j - kFirstParType) * kParameterIndexOffset, 1);
+                               }
+                       }
+               }
+               n = IntGroupGetCount(pg);
+               if (n > 0) {
+                       up = (UnionPar *)calloc(sizeof(UnionPar), n);
+                       ParameterCopy(mol->par, kFirstParType, up, pg);
+               } else {
+                       IntGroupRelease(pg);
+                       pg = NULL;
+               }
+       }
        /*  Unmerge molecule  */
        if ((result = MoleculeUnmerge(mol, &mol2, ig, 0)) != 0) {
                if (ip != NULL)
@@ -697,19 +682,28 @@ s_MolActionDeleteAtoms(Molecule *mol, MolAction *action, MolAction **actp)
                return result;
        }
        
-       sMolActionUpdateSelectionAndParameterNumbering(mol, ig, 0);
+       s_UpdateSelection(mol, ig, 0);
        
        if (mol2 == NULL)
                *actp = NULL;
        else {
+               MolAction *act2;
                /*  If there exist bonds crossing the molecule border, then register
-                an action to restore them  */
+                an undo action to restore them  */
                if (ip != NULL) {
-                       MolAction *act2 = MolActionNew(gMolActionAddBonds, n1 * 2, ip);
+                       act2 = MolActionNew(gMolActionAddBonds, n1 * 2, ip);
                        MolActionCallback_registerUndo(mol, act2);
                        MolActionRelease(act2);
                        free(ip);
                }
+               /*  Register an undo action to restore the disappearing parameters  */
+               if (up != NULL) {
+                       act2 = MolActionNew(gMolActionAddParameters, kFirstParType, pg, IntGroupGetCount(pg), up);
+                       MolActionCallback_registerUndo(mol, act2);
+                       MolActionRelease(act2);
+                       IntGroupRelease(pg);
+                       free(up);
+               }
                *actp = MolActionNew(gMolActionMergeMolecule, mol2, ig);
                MoleculeRelease(mol2);
        }
index 55c7996..8087ce2 100755 (executable)
@@ -6737,11 +6737,13 @@ sMoleculeUnmergeSub(Molecule *src, Molecule **dstp, IntGroup *where, int resSeqO
        }
        
        /*  Renumber the parameter records remaining in the src  */
-       for (n1 = kFirstParType; n1 <= kLastParType; n1++) {
-               n2 = ParameterGetCountForType(src->par, n1);
-               for (i = 0; i < n2; i++) {
-                       up = ParameterGetUnionParFromTypeAndIndex(src->par, n1, i);
-                       ParameterRenumberAtoms(n1, up, nsrc, old2new);
+       if (moveFlag) {
+               for (n1 = kFirstParType; n1 <= kLastParType; n1++) {
+                       n2 = ParameterGetCountForType(src->par, n1);
+                       for (i = 0; i < n2; i++) {
+                               up = ParameterGetUnionParFromTypeAndIndex(src->par, n1, i);
+                               ParameterRenumberAtoms(n1, up, nsrc, old2new);
+                       }
                }
        }
        
@@ -8034,6 +8036,18 @@ MoleculeRenumberAtoms(Molecule *mp, const Int *new2old, Int *old2new_out, Int is
                for (j = 0, ip = ap->connects; j < ap->nconnects; j++, ip++)
                        *ip = old2new[*ip];
        }
+       if (mp->par != NULL) {
+               /*  Renumber the parameters  */
+               int n;
+               for (j = kFirstParType; j <= kLastParType; j++) {
+                       n = ParameterGetCountForType(mp->par, j);
+                       for (i = 0; i < n; i++) {
+                               UnionPar *up = ParameterGetUnionParFromTypeAndIndex(mp->par, j, i);
+                               if (up != NULL)
+                                       ParameterRenumberAtoms(j, up, mp->natoms, old2new);
+                       }
+               }
+       }
        
        /*  Renumber the atoms  */
        for (i = 0; i < mp->natoms; i++)
index f1dee12..553481e 100644 (file)
@@ -770,7 +770,8 @@ s_RegisterUndoForParameterAttrChange(VALUE self, VALUE key, VALUE val, VALUE old
        if (pref->mol == NULL)
                return;
        up = ParameterRefGetPar(pref);
-       up->bond.src = 0;  /*  Becomes automatically molecule-local  */
+       if (key != s_SourceSym)
+               up->bond.src = 0;  /*  Becomes automatically molecule-local  */
        if (MolActionCallback_isUndoRegistrationEnabled(pref->mol)) {
                /*  Register undo  */
                MolAction *act;
@@ -1902,6 +1903,23 @@ static VALUE s_ParameterRef_SetComment(VALUE self, VALUE val) {
        return val;     
 }
 
+/*  Only false (undefined) and nil (local) can be set  */
+static VALUE s_ParameterRef_SetSource(VALUE self, VALUE val) {
+       UnionPar *up;
+       Int tp, oldsrc;
+       VALUE oldval;
+       up = s_UnionParFromValue(self, &tp, 1);
+       if (val != Qfalse && val != Qnil)
+               rb_raise(rb_eMolbyError, "set source: only false (undefined parameter) or nil (local parameter) is allowed");
+       oldval = s_ParameterRef_GetSource(self);
+       oldsrc = up->bond.src;
+       if (oldsrc != 0 && oldsrc != -1)
+               rb_raise(rb_eMolbyError, "source information of global parameter cannot be modified");
+       up->bond.src = (val == Qfalse ? -1 : 0);
+       s_RegisterUndoForParameterAttrChange(self, s_SourceSym, val, oldval, oldsrc);   
+       return val;     
+}
+
 static struct s_ParameterAttrDef {
        char *name;
        VALUE *symref;  /*  Address of s_IndexSymbol etc. */
@@ -1933,9 +1951,9 @@ static struct s_ParameterAttrDef {
        {"atomic_number",&s_AtomicNumberSym, 0, s_ParameterRef_GetAtomicNumber, s_ParameterRef_SetAtomicNumber},
        {"name",         &s_NameSym,         0, s_ParameterRef_GetName,         s_ParameterRef_SetName},
        {"weight",       &s_WeightSym,       0, s_ParameterRef_GetWeight,       s_ParameterRef_SetWeight},
-       {"fullname",         &s_FullNameSym,         0, s_ParameterRef_GetFullName,         s_ParameterRef_SetFullName},
+       {"fullname",     &s_FullNameSym,     0, s_ParameterRef_GetFullName,     s_ParameterRef_SetFullName},
        {"comment",      &s_CommentSym,      0, s_ParameterRef_GetComment,      s_ParameterRef_SetComment},
-       {"source",       &s_SourceSym,       0, s_ParameterRef_GetSource,       NULL},
+       {"source",       &s_SourceSym,       0, s_ParameterRef_GetSource,       s_ParameterRef_SetSource},
        {NULL} /* Sentinel */
 };
 
@@ -6264,7 +6282,6 @@ s_Molecule_RenumberAtoms(VALUE self, VALUE array)
                new2old[i] = s_Molecule_AtomIndexFromValue(mol, valp[i]);
        new2old[i] = kInvalidIndex;
        i = MolActionCreateAndPerform(mol, gMolActionRenumberAtoms, i, new2old);
-/*     i = MoleculeRenumberAtoms(mol, new2old, n); */
        if (i == 1)
                rb_raise(rb_eMolbyError, "Atom index out of range");
        else if (i == 2)
index ac3316a..f82213d 100755 (executable)
@@ -1379,7 +1379,7 @@ class Molecule
        }
   end
   
-  def cmd_edit_local_parameter_in_mainview(ptype, names, types, value, params)
+  def cmd_edit_local_parameter_in_mainview(ptype, indices, names, types, value, partypes, params)
     #  The parameters are given as space separated strings
        #  e.g. "1.862 200.000"
        case ptype
@@ -1401,7 +1401,7 @@ class Molecule
        p = params.split
        hash = Dialog.run("Edit local parameter") {
       layout(1,
-           item(:text, :title=>"Edit #{ptype} parameter for #{names} (#{types})"),
+           item(:text, :title=>"Edit #{ptype} parameter for #{indices} (#{names}, #{types})"),
                item(:text, :title=>"(Current value = #{value})"),
            layout(4,
              [item(:text, :title=>"types"), {:align=>:center}],
@@ -1409,7 +1409,7 @@ class Molecule
              [item(:text, :title=>k[1]), {:align=>:center}],
              (k[2] ? [item(:text, :title=>k[2]), {:align=>:center}] : -1),
                
-                 item(:textfield, :width=>100, :value=>types, :tag=>"types"),
+                 item(:textfield, :width=>100, :value=>partypes, :tag=>"types"),
                  item(:textfield, :width=>100, :value=>p[0], :tag=>k[0]),
                  item(:textfield, :width=>100, :value=>p[1], :tag=>k[1]),
                  (k[2] ? item(:textfield, :width=>100, :value=>p[2], :tag=>k[2]) : -1)
index 164e276..95d363e 100755 (executable)
@@ -654,17 +654,19 @@ MoleculeView::OnLeftDClickInListCtrl(wxMouseEvent &event)
        listctrl->OnLeftDClick(event);
        if (mview->tableIndex >= kMainViewBondTableIndex && mview->tableIndex <= kMainViewImproperTableIndex && mview->mol->par != NULL) {
                int row, col, i;
-               char names[64], types[64], value[20], params[3][20];
+               char indices[64], names[64], types[64], value[20], partypes[64], params[3][20];
                char *ptype, *parstr;
                wxPoint pos = event.GetPosition();
                if (!listctrl->FindItemAtPosition(pos, &row, &col) || col < 4)
                        return;
                /*  Start editing the local parameter; open a separate dialog  */
+               MainView_valueForTable(mview, 0, row, indices, sizeof indices);
                MainView_valueForTable(mview, 1, row, names, sizeof names);
                MainView_valueForTable(mview, 2, row, types, sizeof types);
                MainView_valueForTable(mview, 3, row, value, sizeof value);
+               MainView_valueForTable(mview, 4, row, partypes, sizeof partypes);
                for (i = 0; i < 3; i++) {
-                       MainView_valueForTable(mview, 4 + i, row, params[i], sizeof(params[0]));                        
+                       MainView_valueForTable(mview, 5 + i, row, params[i], sizeof(params[0]));                        
                }
                switch (mview->tableIndex) {
                        case kMainViewBondTableIndex: ptype = "bond"; break;
@@ -674,7 +676,7 @@ MoleculeView::OnLeftDClickInListCtrl(wxMouseEvent &event)
                        default: return;
                }
                asprintf(&parstr, "%s %s %s", params[0], params[1], params[2]);
-               MolActionCreateAndPerform(mview->mol, SCRIPT_ACTION("sssss"), "cmd_edit_local_parameter_in_mainview", ptype, names, types, value, parstr);
+               MolActionCreateAndPerform(mview->mol, SCRIPT_ACTION("sssssss"), "cmd_edit_local_parameter_in_mainview", ptype, indices, names, types, value, partypes, parstr);
        }
 }
 
index 0483ab7..c7c1dd0 100755 (executable)
@@ -92,7 +92,7 @@
                E4299DA60F2A191600780B44 /* ruby_types.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ruby_types.c; sourceTree = "<group>"; };
                E42D8AEF1030193F00C20247 /* MDGraphite.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = MDGraphite.c; sourceTree = "<group>"; };
                E42D8AF01030193F00C20247 /* MDGraphite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MDGraphite.h; sourceTree = "<group>"; };
-               E42D8AF11030193F00C20247 /* MDCore.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = MDCore.c; sourceTree = "<group>"; };
+               E42D8AF11030193F00C20247 /* MDCore.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = MDCore.c; sourceTree = "<group>"; wrapsLines = 1; };
                E42D8AF21030193F00C20247 /* MDCore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MDCore.h; sourceTree = "<group>"; };
                E42D8AF31030193F00C20247 /* MDForce.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = MDForce.c; sourceTree = "<group>"; wrapsLines = 1; };
                E42D8AF41030193F00C20247 /* MDForce.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MDForce.h; sourceTree = "<group>"; };
                E433CE780EC7099B00675985 /* ruby_dialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ruby_dialog.h; path = ../MolLib/Ruby_bind/ruby_dialog.h; sourceTree = SOURCE_ROOT; };
                E433CE7C0EC709BD00675985 /* IntGroup.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = IntGroup.c; path = ../MolLib/IntGroup.c; sourceTree = SOURCE_ROOT; };
                E433CE7D0EC709BD00675985 /* IntGroup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IntGroup.h; path = ../MolLib/IntGroup.h; sourceTree = SOURCE_ROOT; };
-               E433CE7E0EC709BD00675985 /* MainView.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = MainView.c; path = ../MolLib/MainView.c; sourceTree = SOURCE_ROOT; };
+               E433CE7E0EC709BD00675985 /* MainView.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = MainView.c; path = ../MolLib/MainView.c; sourceTree = SOURCE_ROOT; wrapsLines = 1; };
                E433CE7F0EC709BD00675985 /* MainView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MainView.h; path = ../MolLib/MainView.h; sourceTree = SOURCE_ROOT; };
                E433CE800EC709BD00675985 /* Missing.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Missing.c; path = ../MolLib/Missing.c; sourceTree = SOURCE_ROOT; };
                E433CE810EC709BD00675985 /* Missing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Missing.h; path = ../MolLib/Missing.h; sourceTree = SOURCE_ROOT; };
                E433CE8E0EC709BD00675985 /* Types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Types.h; path = ../MolLib/Types.h; sourceTree = SOURCE_ROOT; };
                E433CE990EC709D300675985 /* ConsoleFrame.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ConsoleFrame.cpp; path = ../wxSources/ConsoleFrame.cpp; sourceTree = SOURCE_ROOT; };
                E433CE9A0EC709D300675985 /* ConsoleFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ConsoleFrame.h; path = ../wxSources/ConsoleFrame.h; sourceTree = SOURCE_ROOT; };
-               E433CE9B0EC709D300675985 /* MoleculeView.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MoleculeView.cpp; path = ../wxSources/MoleculeView.cpp; sourceTree = SOURCE_ROOT; };
+               E433CE9B0EC709D300675985 /* MoleculeView.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MoleculeView.cpp; path = ../wxSources/MoleculeView.cpp; sourceTree = SOURCE_ROOT; wrapsLines = 1; };
                E433CE9C0EC709D300675985 /* MoleculeView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MoleculeView.h; path = ../wxSources/MoleculeView.h; sourceTree = SOURCE_ROOT; };
                E433CE9D0EC709D300675985 /* MyApp.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MyApp.cpp; path = ../wxSources/MyApp.cpp; sourceTree = SOURCE_ROOT; };
                E433CE9E0EC709D300675985 /* MyApp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MyApp.h; path = ../wxSources/MyApp.h; sourceTree = SOURCE_ROOT; };