From e67a56ff3239745598adce59f79ccc3a70d9b66c Mon Sep 17 00:00:00 2001 From: toshinagata1964 Date: Tue, 8 May 2012 02:05:36 +0000 Subject: [PATCH] Parameter editing is under overhaul. git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/molby/trunk@198 a2be9bc6-48de-4e38-9406-05402d4bc13c --- MolLib/MainView.c | 37 ++++++++---- MolLib/MolAction.c | 94 ++++++++++++++--------------- MolLib/Molecule.c | 24 ++++++-- MolLib/Ruby_bind/ruby_bind.c | 25 ++++++-- Scripts/md.rb | 6 +- wxSources/MoleculeView.cpp | 8 ++- xcode-build/Molby.xcodeproj/project.pbxproj | 6 +- 7 files changed, 121 insertions(+), 79 deletions(-) diff --git a/MolLib/MainView.c b/MolLib/MainView.c index dd4942c..e282247 100755 --- a/MolLib/MainView.c +++ b/MolLib/MainView.c @@ -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; diff --git a/MolLib/MolAction.c b/MolLib/MolAction.c index beb397d..5d06d0f 100644 --- a/MolLib/MolAction.c +++ b/MolLib/MolAction.c @@ -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); } diff --git a/MolLib/Molecule.c b/MolLib/Molecule.c index 55c7996..8087ce2 100755 --- a/MolLib/Molecule.c +++ b/MolLib/Molecule.c @@ -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++) diff --git a/MolLib/Ruby_bind/ruby_bind.c b/MolLib/Ruby_bind/ruby_bind.c index f1dee12..553481e 100644 --- a/MolLib/Ruby_bind/ruby_bind.c +++ b/MolLib/Ruby_bind/ruby_bind.c @@ -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) diff --git a/Scripts/md.rb b/Scripts/md.rb index ac3316a..f82213d 100755 --- a/Scripts/md.rb +++ b/Scripts/md.rb @@ -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) diff --git a/wxSources/MoleculeView.cpp b/wxSources/MoleculeView.cpp index 164e276..95d363e 100755 --- a/wxSources/MoleculeView.cpp +++ b/wxSources/MoleculeView.cpp @@ -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); } } diff --git a/xcode-build/Molby.xcodeproj/project.pbxproj b/xcode-build/Molby.xcodeproj/project.pbxproj index 0483ab7..c7c1dd0 100755 --- a/xcode-build/Molby.xcodeproj/project.pbxproj +++ b/xcode-build/Molby.xcodeproj/project.pbxproj @@ -92,7 +92,7 @@ E4299DA60F2A191600780B44 /* ruby_types.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ruby_types.c; sourceTree = ""; }; E42D8AEF1030193F00C20247 /* MDGraphite.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = MDGraphite.c; sourceTree = ""; }; E42D8AF01030193F00C20247 /* MDGraphite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MDGraphite.h; sourceTree = ""; }; - E42D8AF11030193F00C20247 /* MDCore.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = MDCore.c; sourceTree = ""; }; + E42D8AF11030193F00C20247 /* MDCore.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = MDCore.c; sourceTree = ""; wrapsLines = 1; }; E42D8AF21030193F00C20247 /* MDCore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MDCore.h; sourceTree = ""; }; E42D8AF31030193F00C20247 /* MDForce.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = MDForce.c; sourceTree = ""; wrapsLines = 1; }; E42D8AF41030193F00C20247 /* MDForce.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MDForce.h; sourceTree = ""; }; @@ -109,7 +109,7 @@ 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; }; @@ -128,7 +128,7 @@ 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; }; -- 2.11.0