Main Page Namespace List Class Hierarchy Alphabetical List Compound List File List Namespace Members Compound Members File Members Related Pages

PickModeUser.C

Go to the documentation of this file.
00001 /***************************************************************************
00002 *cr 
00003 *cr (C) Copyright 1995-2019 The Board of Trustees of the 
00004 *cr University of Illinois 
00005 *cr All Rights Reserved 
00006 *cr 
00007 ***************************************************************************/
00008 
00009 /***************************************************************************
00010 * RCS INFORMATION:
00011 *
00012 * $RCSfile: PickModeUser.C,v $
00013 * $Author: johns $ $Locker: $ $State: Exp $
00014 * $Revision: 1.8 $ $Date: 2019年01月17日 21:21:01 $
00015 *
00016 ***************************************************************************
00017 * DESCRIPTION:
00018 *
00019 * The PickMode object which allows a pointer to be used to make selections
00020 * that interact with user-defined scripts and plugins. No labels are added.
00021 *
00022 ***************************************************************************/
00023 
00024 #include <math.h>
00025 #include "PickModeUser.h"
00026 #include "Pickable.h"
00027 #include "DisplayDevice.h"
00028 #include "Inform.h"
00029 #include "DrawMolecule.h"
00030 #include "CommandQueue.h"
00031 #include "TextEvent.h"
00032 #include "VMDApp.h"
00033 #include "utilities.h"
00034 
00035 PickModeUser::PickModeUser(VMDApp *vmdapp) 
00036 : app(vmdapp) {
00037 needName = FALSE;
00038 
00039 // indicate we're still at the starting trying to find something
00040 haveItems = 0;
00041 }
00042 
00043 void PickModeUser::pick_molecule_start(DrawMolecule *mol, DisplayDevice *d,
00044 int, int tag, const int * /* cell */ , int dim, const float *pos) {
00045 // ignore the cell argument; we don't create bonds between images!
00046 atom = tag;
00047 memcpy(pPos, pos, dim*sizeof(float));
00048 needName = TRUE;
00049 
00050 int shift_pressed = d->shift_state() & DisplayDevice::SHIFT;
00051 app->commandQueue->runcommand(new PickAtomEvent(mol->id(), tag, 
00052 shift_pressed, true));
00053 }
00054 
00055 void PickModeUser::pick_molecule_end(DrawMolecule *m, DisplayDevice *) {
00056 
00057 if(needName) {
00058 // the selection was successful; first save the info for the object
00059 
00060 int id = m->id();
00061 molid = id; 
00062 atmid = atom;
00063 
00064 // indicate we have one more items in the ones we need
00065 haveItems++;
00066 
00067 // now check if we have enough items for the object we're out for
00068 if(haveItems >= 1) {
00069 msgInfo << "User Pick: mol" << molid << " atom:" << atmid << sendmsg;
00070 // indicate we're done with this selection
00071 haveItems = 0;
00072 } 
00073 }
00074 needName = FALSE;
00075 }
00076 

Generated on Tue Nov 18 02:47:55 2025 for VMD (current) by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002

AltStyle によって変換されたページ (->オリジナル) /