本文整理汇总了C++中VMDApp::VMDinit方法的典型用法代码示例。如果您正苦于以下问题:C++ VMDApp::VMDinit方法的具体用法?C++ VMDApp::VMDinit怎么用?C++ VMDApp::VMDinit使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类VMDApp
的用法示例。
在下文中一共展示了VMDApp::VMDinit方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: initvmd
void initvmd() {
// Assume that VMD should not initialize or use MPI
// It is conceivable we would want to be able to load the VMD
// Python module into a MPI-based Python run, and enable the
// MPI features of VMD, but we'll have to determine the best way
// to detect this and it will need to be tested since we may have
// to handle this case differently than the normal MPI case where
// VMD explicitly does MPI initialization and shutdown itself.
int mpienabled = 0;
// If there's already a VMDapp in get_vmdapp, then we must be running
// inside a standalone VMD instead of being loaded as a python extension.
// Don't throw an error - just load the methods for interoperability
// in case vmd.so is in the PYTHONPATH of the standalone application.
if (get_vmdapp() != NULL) {
(void)Py_InitModule((char *)"vmd", VMDAppMethods);
return;
}
int argc=1;
char *argv[1];
argv[0] = Py_GetProgramFullPath();
if (!VMDinitialize(&argc, (char ***) &argv, mpienabled)) {
return;
}
// XXX this is a hack, and it would be better to tie this into
// VMDApp more directly at some later point, but the regular
// VMD startup code is similarly lame, so we'll use it for now.
const char *disp = getenv("VMDDISPLAYDEVICE");
if (!disp) disp="text";
int loc[2] = { 50, 50 };
int size[2] = { 400, 400 };
VMDgetDisplayFrame(loc, size);
VMDApp *app = new VMDApp(1, argv, mpienabled);
app->VMDinit(1, argv, disp, loc, size);
// read application defaults
VMDreadInit(app);
// read user-defined startup files
VMDreadStartup(app);
set_vmdapp(app);
// set my local static
the_app = app;
PyObject *vmdmodule = Py_InitModule((char *)"vmd", VMDAppMethods);
initanimate();
initatomsel();
initaxes();
initcolor();
initdisplay();
initgraphics();
initimd();
initlabel();
initmaterial();
initmolecule();
initmolrep();
initmouse();
initrender();
inittrans();
initvmdmenu();
#ifdef VMDNUMPY
initvmdnumpy();
#endif
if (PyErr_Occurred()) return;
static const char *modules[] = {
"animate", "atomsel", "axes", "color", "display", "graphics",
"imd", "label", "material", "molecule", "molrep", "mouse",
"render", "trans", "vmdmenu", "vmdnumpy"
};
for (unsigned i=0; i<sizeof(modules)/sizeof(const char *); i++) {
const char *m = modules[i];
#if (PY_MAJOR_VERSION == 2) && (PY_MINOR_VERSION < 5)
#define CAST_HACK (char *)
#else
#define CAST_HACK
#endif
PyModule_AddObject(vmdmodule, CAST_HACK m, PyImport_ImportModule( CAST_HACK m));
}
event_tstate = PyThreadState_Get();
#if defined(VMD_SHARED)
PyOS_InputHook = vmd_input_hook;
#endif
}
示例2: VMDmain
int VMDmain(int argc, char **argv) {
#else
int main(int argc, char **argv) {
#endif
int mpienabled = 0;
PROFILE_MAIN_THREAD(); // mark main VMD thread within profiler timelines
PROFILE_PUSH_RANGE("VMD main() initialization", 4);
#if defined(VMDMPI)
// so long as the caller has not disabled MPI, we initialize MPI when VMD
// has been compiled to support it.
if (getenv("VMDNOMPI") == NULL) {
mpienabled = 1;
}
#endif
if (!VMDinitialize(&argc, &argv, mpienabled)) {
return 0;
}
const char *displayTypeName = VMDgetDisplayTypeName();
int displayLoc[2], displaySize[2];
VMDgetDisplayFrame(displayLoc, displaySize);
VMDApp *app = new VMDApp(argc, argv, mpienabled);
if (!app->VMDinit(argc, argv, displayTypeName, displayLoc, displaySize)) {
delete app;
return 1;
}
PROFILE_POP_RANGE();
PROFILE_PUSH_RANGE("VMD startup scripts", 1);
// read various application defaults
VMDreadInit(app);
PROFILE_POP_RANGE();
PROFILE_PUSH_RANGE("VMD process user script(s)", 1);
// read user-defined startup files
VMDreadStartup(app);
PROFILE_POP_RANGE();
PROFILE_PUSH_RANGE("VMD interactive event loop", 1);
// main event loop
do {
// If we knew that there were no embedded python interpreter, we could
// process Tcl events here, rather than within the VMD instance.
#ifdef VMDTCL
// Loop on the Tcl event notifier
// while (Tcl_DoOneEvent(TCL_DONT_WAIT));
#endif
// handle Fltk events
VMDupdateFltk();
#if 0
// take over the console
if (vmd_check_stdin()) {
app->process_console();
}
#endif
} while(app->VMDupdate(VMD_CHECK_EVENTS));
PROFILE_POP_RANGE();
// end of program
delete app;
VMDshutdown(mpienabled);
return 0;
}