// construct themselves.
wxExprDatabase *GlobalwxExprDatabase = NULL;
-// Popup menu for editing divisions
-wxMenu *oglPopupDivisionMenu = NULL;
/*
* Division control point
wxShape *object = (wxShape *)node->Data();
wxShape *newObject = object->CreateNewCopy(FALSE, FALSE);
if (newObject->GetId() == 0)
- newObject->SetId(NewId());
+ newObject->SetId(wxNewId());
newObject->SetParent(&compositeCopy);
compositeCopy.m_children.Append(newObject);
{
m_constraints.Append(constraint);
if (constraint->m_constraintId == 0)
- constraint->m_constraintId = NewId();
+ constraint->m_constraintId = wxNewId();
return constraint;
}
{
wxOGLConstraint *constraint = new wxOGLConstraint(type, constraining, constrained);
if (constraint->m_constraintId == 0)
- constraint->m_constraintId = NewId();
+ constraint->m_constraintId = wxNewId();
m_constraints.Append(constraint);
return constraint;
}
l.Append(constrained);
wxOGLConstraint *constraint = new wxOGLConstraint(type, constraining, l);
if (constraint->m_constraintId == 0)
- constraint->m_constraintId = NewId();
+ constraint->m_constraintId = wxNewId();
m_constraints.Append(constraint);
return constraint;
}
* Popup menu for editing divisions
*
*/
+class OGLPopupDivisionMenu : public wxMenu {
+public:
+ OGLPopupDivisionMenu() : wxMenu() {
+ Append(DIVISION_MENU_SPLIT_HORIZONTALLY, "Split horizontally");
+ Append(DIVISION_MENU_SPLIT_VERTICALLY, "Split vertically");
+ AppendSeparator();
+ Append(DIVISION_MENU_EDIT_LEFT_EDGE, "Edit left edge");
+ Append(DIVISION_MENU_EDIT_TOP_EDGE, "Edit top edge");
+ }
+
+ void OnMenu(wxCommandEvent& event);
+
+ DECLARE_EVENT_TABLE()
+};
-void oglGraphicsDivisionMenuProc(wxMenu& menu, wxCommandEvent& event)
+BEGIN_EVENT_TABLE(OGLPopupDivisionMenu, wxMenu)
+ EVT_CUSTOM_RANGE(wxEVT_COMMAND_MENU_SELECTED,
+ DIVISION_MENU_SPLIT_HORIZONTALLY,
+ DIVISION_MENU_EDIT_BOTTOM_EDGE,
+ OGLPopupDivisionMenu::OnMenu)
+END_EVENT_TABLE()
+
+
+void OGLPopupDivisionMenu::OnMenu(wxCommandEvent& event)
{
- wxDivisionShape *division = (wxDivisionShape *)menu.GetClientData();
+ wxDivisionShape *division = (wxDivisionShape *)GetClientData();
switch (event.GetInt())
{
case DIVISION_MENU_SPLIT_HORIZONTALLY:
// Popup menu
void wxDivisionShape::PopupMenu(double x, double y)
{
+ wxMenu* oglPopupDivisionMenu = new OGLPopupDivisionMenu;
+
oglPopupDivisionMenu->SetClientData((void *)this);
if (m_leftSide)
oglPopupDivisionMenu->Enable(DIVISION_MENU_EDIT_LEFT_EDGE, TRUE);
int mouse_y = (int)(dc.LogicalToDeviceY((long)(y - y1*unit_y)));
m_canvas->PopupMenu(oglPopupDivisionMenu, mouse_x, mouse_y);
+ delete oglPopupDivisionMenu;
}
void wxDivisionShape::SetLeftSideColour(const wxString& colour)