Index: src/.cvsignore =================================================================== RCS file: /cvsroot/ghemical/src/.cvsignore,v retrieving revision 1.3.2.3 diff -c -5 -p -b -d -w -r1.3.2.3 .cvsignore *** src/.cvsignore 3 Mar 2006 12:33:33 -0000 1.3.2.3 --- src/.cvsignore 27 Mar 2006 18:25:32 -0000 *************** stamp-h *** 4,8 **** --- 4,10 ---- Makefile Makefile.in ghemicalconfig.h ghemicalconfig2.h stamp-h1 + ghemical + stamp-h.in Index: src/gtk_graphics_view.cpp =================================================================== RCS file: /cvsroot/ghemical/src/Attic/gtk_graphics_view.cpp,v retrieving revision 1.11.2.2 diff -c -5 -p -b -d -w -r1.11.2.2 gtk_graphics_view.cpp *** src/gtk_graphics_view.cpp 22 Mar 2006 12:26:00 -0000 1.11.2.2 --- src/gtk_graphics_view.cpp 27 Mar 2006 18:25:32 -0000 *************** GtkActionEntry gtk_graphics_view::entrie *** 173,182 **** --- 173,185 ---- { "BuildHydrogensMenu", NULL, "_Hydrogens" }, // ^^^^^^^^^^^^^^^^^^ { "BuildHydrogensAdd", NULL, "Add", NULL, "...todo...", (GCallback) gtk_project::popup_HAdd }, { "BuildHydrogensRemove", NULL, "Remove", NULL, "...todo...", (GCallback) gtk_project::popup_HRemove }, + #ifdef ENABLE_OPENBABEL + { "BuildHydrogensHtoMethyl", NULL, "H->Methyl", NULL, "...todo...", (GCallback) gtk_project::popup_HtoMethyl }, + #endif { "ConstrainMenu", NULL, "_Constrain" }, { "ConstrainBondLength", NULL, "Atom Distances...", NULL, "Constrain Bond Length...", (GCallback) gtk_project::popup_ConstrainBondLength }, { "EnterCommand", NULL, "Enter a Command...", NULL, "...todo...", (GCallback) gtk_project::popup_EnterCommand }, }; *************** const char * gtk_graphics_view::ui_descr *** 331,340 **** --- 334,346 ---- " " " " " " " " " " + #ifdef ENABLE_OPENBABEL + " " + #endif " " " " " " " " " " Index: src/gtk_project.cpp =================================================================== RCS file: /cvsroot/ghemical/src/gtk_project.cpp,v retrieving revision 1.8.2.5 diff -c -5 -p -b -d -w -r1.8.2.5 gtk_project.cpp *** src/gtk_project.cpp 22 Mar 2006 12:26:00 -0000 1.8.2.5 --- src/gtk_project.cpp 27 Mar 2006 18:25:32 -0000 *************** void gtk_project::popup_HRemove(GtkWidge *** 1098,1107 **** --- 1098,1121 ---- prj->RemoveH(); prj->UpdateAllGraphicsViews(); } } + void gtk_project::popup_HtoMethyl(GtkWidget *, gpointer data) + { + #ifdef ENABLE_OPENBABEL + gtk_graphics_view * gv = gtk_graphics_view::GetGV((GtkWidget *) data); + gtk_project * prj = dynamic_cast(gv->prj); + if (prj) + { + prj->HtoMethyl(); + prj->UpdateAllGraphicsViews(); + } + #endif + } + + void gtk_project::popup_GamessInp(GtkWidget *, gpointer data) { gtk_graphics_view * gv = gtk_graphics_view::GetGV((GtkWidget *) data); gtk_project * prj = dynamic_cast(gv->prj); if (prj) Index: src/gtk_project.h =================================================================== RCS file: /cvsroot/ghemical/src/gtk_project.h,v retrieving revision 1.10.2.3 diff -c -5 -p -b -d -w -r1.10.2.3 gtk_project.h *** src/gtk_project.h 22 Mar 2006 12:26:01 -0000 1.10.2.3 --- src/gtk_project.h 27 Mar 2006 18:25:32 -0000 *************** friend class gtk_ssc_view; *** 211,220 **** --- 211,221 ---- static void popup_TrajView(GtkWidget *, gpointer); static void popup_SetOrbital(GtkWidget *, gpointer); static void popup_HAdd(GtkWidget *, gpointer); static void popup_HRemove(GtkWidget *, gpointer); + static void popup_HtoMethyl(GtkWidget *, gpointer); static void popup_GamessInp(GtkWidget *, gpointer); static void popup_ConstrainBondLength(GtkWidget *, gpointer); static void popup_SolvateBox(GtkWidget *, gpointer); static void popup_SolvateSphere(GtkWidget *, gpointer); static void popup_Clear(GtkWidget *, gpointer); Index: src/project.cpp =================================================================== RCS file: /cvsroot/ghemical/src/project.cpp,v retrieving revision 1.53.2.10 diff -c -5 -p -b -d -w -r1.53.2.10 project.cpp *** src/project.cpp 22 Mar 2006 12:26:02 -0000 1.53.2.10 --- src/project.cpp 27 Mar 2006 18:25:33 -0000 *************** void project::RemoveH(void) *** 410,419 **** --- 410,456 ---- RemoveHydrogens(); PrintToLog("Hydrogens removed.\n"); } + void project::HtoMethyl(void) + { + #ifdef ENABLE_OPENBABEL + file_trans ft; + OBMol *obm = ft.CopyAll(this); + OBAtom *oba; + + // first check to see if some atoms are selected + // if so, only run this on the selected atoms + + iter_al it1 = atom_list.begin(); + bool atoms_selected = false; // is anything selected by the user? + for (iter_al it1 = atom_list.begin();it1 != atom_list.end();it1++) + if ((* it1).flags & ATOMFLAG_USER_SELECTED) + { + atoms_selected = true; + oba = obm->GetAtom((*it1).index + 1); + oba->HtoMethyl(); + } + + // if the user didn't select atoms, then we should do this over all atoms + if (!atoms_selected) + { + PrintToLog("None selected.\n"); + for (iter_al it1 = atom_list.begin();it1 != atom_list.end();it1++) + { + oba = obm->GetAtom((*it1).index + 1); + oba->HtoMethyl(); + } + PrintToLog("Done.\n"); + } + ft.Synchronize(); + + PrintToLog("Hydrogen -> Methyl.\n"); + #endif + } + iGLu project::GetDisplayListIDs(iGLu p1) { iGLu first = list_counter; list_counter += p1; Index: src/project.h =================================================================== RCS file: /cvsroot/ghemical/src/project.h,v retrieving revision 1.33.2.3 diff -c -5 -p -b -d -w -r1.33.2.3 project.h *** src/project.h 22 Mar 2006 12:26:02 -0000 1.33.2.3 --- src/project.h 27 Mar 2006 18:25:33 -0000 *************** class project : public model *** 218,227 **** --- 218,228 ---- // add or remove hydrogen atoms... // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ void AddH(void); void RemoveH(void); + void HtoMethyl(void); // some utility functions. // ^^^^^^^^^^^^^^^^^^^^^^^ const char * GetType(void);