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

ObjCryst::WXCrystal Class Reference

wxCryst class for Crystals More...

Inheritance diagram for ObjCryst::WXCrystal:

Inheritance graph
[legend]
Collaboration diagram for ObjCryst::WXCrystal:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 WXCrystal (wxWindow *parent, Crystal *)
 ~WXCrystal ()
virtual void CrystUpdate (const bool updateUI=false, const bool mutexlock=false)
 Get new values to be displayed from the underlying object, and raise flag if an UI update is necessary.

void OnMenuSaveCIF (wxCommandEvent &WXUNUSED(event))
void OnMenuSaveText (wxCommandEvent &WXUNUSED(event))
void OnMenuAddScattPowAtom (wxCommandEvent &WXUNUSED(event))
void OnMenuAddScattPowSphere (wxCommandEvent &WXUNUSED(event))
void OnMenuRemoveScattPow (wxCommandEvent &WXUNUSED(event))
void OnMenuAddScatterer (wxCommandEvent &event)
void OnMenuRemoveScatterer (wxCommandEvent &WXUNUSED(event))
void OnMenuDuplicateScatterer (wxCommandEvent &WXUNUSED(event))
void OnMenuImportMoleculeFromFenskeHallZMatrix (wxCommandEvent &event)
void OnMenuSetRelativeXYZLimits (wxCommandEvent &WXUNUSED(event))
bool OnChangeName (const int id)
 When a WXFieldName has been changed by the user, it is handled here.

void UpdateUI (const bool mutexlock=false)
 Update the User Interface, if necessary.

CrystalGetCrystal ()
const CrystalGetCrystal () const
void OnMenuShowScattPowWindow (wxCommandEvent &event)
void OnEditGridScattPow (wxGridEvent &e)
void OnEditGridScattPowAntiBump (wxGridEvent &e)
void OnEditGridScattPowBondValence (wxGridEvent &e)
void NotifyDeleteListWin (WXCrystalScrolledGridWindow *win)
virtual bool Enable (bool enable=true)

Private Attributes

CrystalmpCrystal
WXFieldNamempFieldSpacegroup
 SpaceGroup.

WXRegistry< Scatterer > * mpWXScattererRegistry
 Scatterers.

WXRegistry< ScatteringPower > * mpWXScatteringPowerRegistry
 Scattering Powers.

std::map< ScatteringPowerAtom *,
int > 
mvScattPowIndex
 Index of all ScatteringPowerAtom in the Crystal's registry (excluding any other type of ScatteringPower), as they are displayed in the grid windows.

std::vector< ScatteringPowerAtom * > mvScattPowRowIndex
 Index of Scattering power in each row (and sometimes column).

RefinableObjClock mvScattPowIndexClock
WXCrystalScrolledGridWindowmpScattPowWin
WXCrystalScrolledGridWindowmpAntiBumpWin
WXCrystalScrolledGridWindowmpBondValenceWin
std::list< RowScattPowmvpRowScattPow
std::list< RowAntiBumpmvpRowAntiBump
std::list< RowBondValencemvpRowBondValence
bool mIsSelfUpdating
 Flag to indicate that we are updating values in the wxGrid data, and that it is not the user inputing data.

wxMutex mMutexGLUpdate
 Mutex used when updating the OpenGL display List, between background and main thread.

wxCondition * mpConditionGLUpdate
 wxCondition used when updating the OpenGL display List, between background and main thread


Detailed Description

wxCryst class for Crystals


Constructor & Destructor Documentation

ObjCryst::WXCrystal::WXCrystal wxWindow *  parent,
Crystal
 

ObjCryst::WXCrystal::~WXCrystal  ) 
 


Member Function Documentation

virtual void ObjCryst::WXCrystal::CrystUpdate const bool  updateUI = false,
const bool  mutexlock = false
[virtual]
 

Get new values to be displayed from the underlying object, and raise flag if an UI update is necessary.

The actual GUI update is not made here. UpdateUI() should be called separately, from the main thread.

Parameters:
updateUI: if true, this will call UpdateUI, either directly (if in the main thread), or by sending a message.
mutexlock: if true, a Mutex will be used to lock the data shared between main and background thread. The idea is to only use a few Mutexes to lock data from the top objects (wxRefinableObj,...), when calling CrystUpdate() and UpdateUI(). As sub-objects (WXField,...) are only updated from within a top object, the mutex lock in the top object will also lock the data in the sub-objects.

Reimplemented from ObjCryst::WXRefinableObj.

virtual bool ObjCryst::WXCrystal::Enable bool  enable = true  )  [virtual]
 

Reimplemented from ObjCryst::WXCrystObj.

const Crystal& ObjCryst::WXCrystal::GetCrystal  )  const
 

Crystal& ObjCryst::WXCrystal::GetCrystal  ) 
 

void ObjCryst::WXCrystal::NotifyDeleteListWin WXCrystalScrolledGridWindow win  ) 
 

bool ObjCryst::WXCrystal::OnChangeName const int  id  )  [virtual]
 

When a WXFieldName has been changed by the user, it is handled here.

This returns true if the value has been handled (for inheritance purposes).

Reimplemented from ObjCryst::WXRefinableObj.

void ObjCryst::WXCrystal::OnEditGridScattPow wxGridEvent &  e  ) 
 

void ObjCryst::WXCrystal::OnEditGridScattPowAntiBump wxGridEvent &  e  ) 
 

void ObjCryst::WXCrystal::OnEditGridScattPowBondValence wxGridEvent &  e  ) 
 

void ObjCryst::WXCrystal::OnMenuAddScatterer wxCommandEvent &  event  ) 
 

void ObjCryst::WXCrystal::OnMenuAddScattPowAtom wxCommandEvent &  WXUNUSED(event)  ) 
 

void ObjCryst::WXCrystal::OnMenuAddScattPowSphere wxCommandEvent &  WXUNUSED(event)  ) 
 

void ObjCryst::WXCrystal::OnMenuDuplicateScatterer wxCommandEvent &  WXUNUSED(event)  ) 
 

void ObjCryst::WXCrystal::OnMenuImportMoleculeFromFenskeHallZMatrix wxCommandEvent &  event  ) 
 

void ObjCryst::WXCrystal::OnMenuRemoveScatterer wxCommandEvent &  WXUNUSED(event)  ) 
 

void ObjCryst::WXCrystal::OnMenuRemoveScattPow wxCommandEvent &  WXUNUSED(event)  ) 
 

void ObjCryst::WXCrystal::OnMenuSaveCIF wxCommandEvent &  WXUNUSED(event)  ) 
 

void ObjCryst::WXCrystal::OnMenuSaveText wxCommandEvent &  WXUNUSED(event)  ) 
 

void ObjCryst::WXCrystal::OnMenuSetRelativeXYZLimits wxCommandEvent &  WXUNUSED(event)  ) 
 

void ObjCryst::WXCrystal::OnMenuShowScattPowWindow wxCommandEvent &  event  ) 
 

void ObjCryst::WXCrystal::UpdateUI const bool  mutexlock = false  )  [virtual]
 

Update the User Interface, if necessary.

Parameters:
mutexlock: if true, a Mutex will be used to lock the data shared between main and background thread.
The idea is to only use a few Mutexes to lock data from the top objects (wxRefinableObj,...), when calling CrystUpdate() and UpdateUI(). As sub-objects (WXField,...) are only updated from within a top object, the mutex lock in the top object will also lock the data in the sub-objects.

Reimplemented from ObjCryst::WXRefinableObj.


Member Data Documentation

bool ObjCryst::WXCrystal::mIsSelfUpdating [private]
 

Flag to indicate that we are updating values in the wxGrid data, and that it is not the user inputing data.

wxMutex ObjCryst::WXCrystal::mMutexGLUpdate [private]
 

Mutex used when updating the OpenGL display List, between background and main thread.

WXCrystalScrolledGridWindow* ObjCryst::WXCrystal::mpAntiBumpWin [private]
 

WXCrystalScrolledGridWindow* ObjCryst::WXCrystal::mpBondValenceWin [private]
 

wxCondition* ObjCryst::WXCrystal::mpConditionGLUpdate [private]
 

wxCondition used when updating the OpenGL display List, between background and main thread

Crystal* ObjCryst::WXCrystal::mpCrystal [private]
 

WXFieldName* ObjCryst::WXCrystal::mpFieldSpacegroup [private]
 

SpaceGroup.

WXCrystalScrolledGridWindow* ObjCryst::WXCrystal::mpScattPowWin [private]
 

WXRegistry<Scatterer>* ObjCryst::WXCrystal::mpWXScattererRegistry [private]
 

Scatterers.

WXRegistry<ScatteringPower>* ObjCryst::WXCrystal::mpWXScatteringPowerRegistry [private]
 

Scattering Powers.

std::list<RowAntiBump> ObjCryst::WXCrystal::mvpRowAntiBump [private]
 

std::list<RowBondValence> ObjCryst::WXCrystal::mvpRowBondValence [private]
 

std::list<RowScattPow> ObjCryst::WXCrystal::mvpRowScattPow [private]
 

std::map<ScatteringPowerAtom*,int> ObjCryst::WXCrystal::mvScattPowIndex [mutable, private]
 

Index of all ScatteringPowerAtom in the Crystal's registry (excluding any other type of ScatteringPower), as they are displayed in the grid windows.

RefinableObjClock ObjCryst::WXCrystal::mvScattPowIndexClock [mutable, private]
 

std::vector<ScatteringPowerAtom*> ObjCryst::WXCrystal::mvScattPowRowIndex [mutable, private]
 

Index of Scattering power in each row (and sometimes column).


The documentation for this class was generated from the following file:
Generated on Tue Nov 14 15:06:42 2006 for ObjCryst++ by doxygen 1.3.6