]> git.saurik.com Git - wxWidgets.git/blobdiff - contrib/src/ogl/composit.cpp
Fixes in focus handling related to the AutoComplete window.
[wxWidgets.git] / contrib / src / ogl / composit.cpp
index fd88350efc33e162893905f825e6c1c243d3122d..724c10d6db1207b57dbbe2a11a46ca540c3f4482 100644 (file)
 #include <wx/wx.h>
 #endif
 
-#include <wx/wxexpr.h>
+#if wxUSE_PROLOGIO
+#include <wx/deprecated/wxexpr.h>
+#endif
+
+#include "wx/ogl/ogl.h"
 
-#include <wx/ogl/basic.h>
-#include <wx/ogl/basicp.h>
-#include <wx/ogl/constrnt.h>
-#include <wx/ogl/composit.h>
-#include <wx/ogl/misc.h>
-#include <wx/ogl/canvas.h>
 
+#if wxUSE_PROLOGIO
 // Sometimes, objects need to access the whole database to
 // construct themselves.
 wxExprDatabase *GlobalwxExprDatabase = NULL;
-
+#endif
 
 /*
  * Division control point
@@ -73,18 +72,18 @@ wxCompositeShape::wxCompositeShape(): wxRectangleShape(10.0, 10.0)
 
 wxCompositeShape::~wxCompositeShape()
 {
-  wxNode *node = m_constraints.First();
+  wxNode *node = m_constraints.GetFirst();
   while (node)
   {
-    wxOGLConstraint *constraint = (wxOGLConstraint *)node->Data();
+    wxOGLConstraint *constraint = (wxOGLConstraint *)node->GetData();
     delete constraint;
-    node = node->Next();
+    node = node->GetNext();
   }
-  node = m_children.First();
+  node = m_children.GetFirst();
   while (node)
   {
-    wxShape *object = (wxShape *)node->Data();
-    wxNode *next = node->Next();
+    wxShape *object = (wxShape *)node->GetData();
+    wxNode *next = node->GetNext();
     object->Unlink();
     delete object;
     node = next;
@@ -112,13 +111,13 @@ void wxCompositeShape::OnDraw(wxDC& dc)
 
 void wxCompositeShape::OnDrawContents(wxDC& dc)
 {
-  wxNode *node = m_children.First();
+  wxNode *node = m_children.GetFirst();
   while (node)
   {
-    wxShape *object = (wxShape *)node->Data();
+    wxShape *object = (wxShape *)node->GetData();
     object->Draw(dc);
     object->DrawLinks(dc);
-    node = node->Next();
+    node = node->GetNext();
   }
   wxShape::OnDrawContents(dc);
 }
@@ -127,15 +126,15 @@ bool wxCompositeShape::OnMovePre(wxDC& dc, double x, double y, double oldx, doub
 {
   double diffX = x - oldx;
   double diffY = y - oldy;
-  wxNode *node = m_children.First();
+  wxNode *node = m_children.GetFirst();
   while (node)
   {
-    wxShape *object = (wxShape *)node->Data();
+    wxShape *object = (wxShape *)node->GetData();
 
     object->Erase(dc);
     object->Move(dc, object->GetX() + diffX, object->GetY() + diffY, display);
 
-    node = node->Next();
+    node = node->GetNext();
   }
   return TRUE;
 }
@@ -143,19 +142,19 @@ bool wxCompositeShape::OnMovePre(wxDC& dc, double x, double y, double oldx, doub
 void wxCompositeShape::OnErase(wxDC& dc)
 {
   wxRectangleShape::OnErase(dc);
-  wxNode *node = m_children.First();
+  wxNode *node = m_children.GetFirst();
   while (node)
   {
-    wxShape *object = (wxShape *)node->Data();
+    wxShape *object = (wxShape *)node->GetData();
     object->Erase(dc);
-    node = node->Next();
+    node = node->GetNext();
   }
 }
 
 static double objectStartX = 0.0;
 static double objectStartY = 0.0;
 
-void wxCompositeShape::OnDragLeft(bool draw, double x, double y, int keys, int attachment)
+void wxCompositeShape::OnDragLeft(bool WXUNUSED(draw), double x, double y, int WXUNUSED(keys), int WXUNUSED(attachment))
 {
   double xx = x;
   double yy = y;
@@ -175,7 +174,7 @@ void wxCompositeShape::OnDragLeft(bool draw, double x, double y, int keys, int a
 //  wxShape::OnDragLeft(draw, x, y, keys, attachment);
 }
 
-void wxCompositeShape::OnBeginDragLeft(double x, double y, int keys, int attachment)
+void wxCompositeShape::OnBeginDragLeft(double x, double y, int WXUNUSED(keys), int WXUNUSED(attachment))
 {
   objectStartX = x;
   objectStartY = y;
@@ -203,7 +202,7 @@ void wxCompositeShape::OnBeginDragLeft(double x, double y, int keys, int attachm
 //  wxShape::OnBeginDragLeft(x, y, keys, attachment);
 }
 
-void wxCompositeShape::OnEndDragLeft(double x, double y, int keys, int attachment)
+void wxCompositeShape::OnEndDragLeft(double x, double y, int keys, int WXUNUSED(attachment))
 {
 //  wxShape::OnEndDragLeft(x, y, keys, attachment);
 
@@ -230,17 +229,17 @@ void wxCompositeShape::OnEndDragLeft(double x, double y, int keys, int attachmen
   if (m_canvas && !m_canvas->GetQuickEditMode()) m_canvas->Redraw(dc);
 }
 
-void wxCompositeShape::OnRightClick(double x, double y, int keys, int attachment)
+void wxCompositeShape::OnRightClick(double x, double y, int keys, int WXUNUSED(attachment))
 {
   // If we get a ctrl-right click, this means send the message to
   // the division, so we can invoke a user interface for dealing with regions.
   if (keys & KEY_CTRL)
   {
-    wxNode *node = m_divisions.First();
+    wxNode *node = m_divisions.GetFirst();
     while (node)
     {
-      wxDivisionShape *division = (wxDivisionShape *)node->Data();
-      wxNode *next = node->Next();
+      wxDivisionShape *division = (wxDivisionShape *)node->GetData();
+      wxNode *next = node->GetNext();
       int attach = 0;
       double dist = 0.0;
       if (division->HitTest(x, y, &attach, &dist))
@@ -266,7 +265,7 @@ void wxCompositeShape::SetSize(double w, double h, bool recursive)
 
   if (!recursive) return;
 
-  wxNode *node = m_children.First();
+  wxNode *node = m_children.GetFirst();
 
   wxClientDC dc(GetCanvas());
   GetCanvas()->PrepareDC(dc);
@@ -274,7 +273,7 @@ void wxCompositeShape::SetSize(double w, double h, bool recursive)
   double xBound, yBound;
   while (node)
   {
-    wxShape *object = (wxShape *)node->Data();
+    wxShape *object = (wxShape *)node->GetData();
 
     // Scale the position first
     double newX = (double)(((object->GetX() - GetX())*xScale) + GetX());
@@ -288,7 +287,7 @@ void wxCompositeShape::SetSize(double w, double h, bool recursive)
     object->SetSize(object->GetFixedWidth() ? xBound : xScale*xBound,
                     object->GetFixedHeight() ? yBound : yScale*yBound);
 
-    node = node->Next();
+    node = node->GetNext();
   }
   SetDefaultRegionSize();
 }
@@ -316,11 +315,11 @@ void wxCompositeShape::RemoveChild(wxShape *child)
 
 void wxCompositeShape::DeleteConstraintsInvolvingChild(wxShape *child)
 {
-  wxNode *node = m_constraints.First();
+  wxNode *node = m_constraints.GetFirst();
   while (node)
   {
-    wxOGLConstraint *constraint = (wxOGLConstraint *)node->Data();
-    wxNode *nextNode = node->Next();
+    wxOGLConstraint *constraint = (wxOGLConstraint *)node->GetData();
+    wxNode *nextNode = node->GetNext();
 
     if ((constraint->m_constrainingObject == child) ||
         constraint->m_constrainedObjects.Member(child))
@@ -334,11 +333,11 @@ void wxCompositeShape::DeleteConstraintsInvolvingChild(wxShape *child)
 
 void wxCompositeShape::RemoveChildFromConstraints(wxShape *child)
 {
-  wxNode *node = m_constraints.First();
+  wxNode *node = m_constraints.GetFirst();
   while (node)
   {
-    wxOGLConstraint *constraint = (wxOGLConstraint *)node->Data();
-    wxNode *nextNode = node->Next();
+    wxOGLConstraint *constraint = (wxOGLConstraint *)node->GetData();
+    wxNode *nextNode = node->GetNext();
 
     if (constraint->m_constrainedObjects.Member(child))
       constraint->m_constrainedObjects.DeleteObject(child);
@@ -368,10 +367,10 @@ void wxCompositeShape::Copy(wxShape& copy)
   oglObjectCopyMapping.Append((long)this, &compositeCopy);
 
   // Copy the children
-  wxNode *node = m_children.First();
+  wxNode *node = m_children.GetFirst();
   while (node)
   {
-    wxShape *object = (wxShape *)node->Data();
+    wxShape *object = (wxShape *)node->GetData();
     wxShape *newObject = object->CreateNewCopy(FALSE, FALSE);
     if (newObject->GetId() == 0)
       newObject->SetId(wxNewId());
@@ -385,25 +384,25 @@ void wxCompositeShape::Copy(wxShape& copy)
 
     oglObjectCopyMapping.Append((long)object, newObject);
 
-    node = node->Next();
+    node = node->GetNext();
   }
 
   // Copy the constraints
-  node = m_constraints.First();
+  node = m_constraints.GetFirst();
   while (node)
   {
-    wxOGLConstraint *constraint = (wxOGLConstraint *)node->Data();
+    wxOGLConstraint *constraint = (wxOGLConstraint *)node->GetData();
 
-    wxShape *newConstraining = (wxShape *)(oglObjectCopyMapping.Find((long)constraint->m_constrainingObject)->Data());
+    wxShape *newConstraining = (wxShape *)(oglObjectCopyMapping.Find((long)constraint->m_constrainingObject)->GetData());
 
     wxList newConstrainedList;
-    wxNode *node2 = constraint->m_constrainedObjects.First();
+    wxNode *node2 = constraint->m_constrainedObjects.GetFirst();
     while (node2)
     {
-      wxShape *constrainedObject = (wxShape *)node2->Data();
-      wxShape *newConstrained = (wxShape *)(oglObjectCopyMapping.Find((long)constrainedObject)->Data());
+      wxShape *constrainedObject = (wxShape *)node2->GetData();
+      wxShape *newConstrained = (wxShape *)(oglObjectCopyMapping.Find((long)constrainedObject)->GetData());
       newConstrainedList.Append(newConstrained);
-      node2 = node2->Next();
+      node2 = node2->GetNext();
     }
 
     wxOGLConstraint *newConstraint = new wxOGLConstraint(constraint->m_constraintType, newConstraining,
@@ -416,14 +415,14 @@ void wxCompositeShape::Copy(wxShape& copy)
     newConstraint->SetSpacing(constraint->m_xSpacing, constraint->m_ySpacing);
     compositeCopy.m_constraints.Append(newConstraint);
 
-    node = node->Next();
+    node = node->GetNext();
   }
 
   // Now compositeCopy the division geometry
-  node = m_divisions.First();
+  node = m_divisions.GetFirst();
   while (node)
   {
-    wxDivisionShape *division = (wxDivisionShape *)node->Data();
+    wxDivisionShape *division = (wxDivisionShape *)node->GetData();
     wxNode *node1 = oglObjectCopyMapping.Find((long)division);
     wxNode *leftNode = NULL;
     wxNode *topNode = NULL;
@@ -439,17 +438,17 @@ void wxCompositeShape::Copy(wxShape& copy)
       bottomNode = oglObjectCopyMapping.Find((long)division->GetBottomSide());
     if (node1)
     {
-      wxDivisionShape *newDivision = (wxDivisionShape *)node1->Data();
+      wxDivisionShape *newDivision = (wxDivisionShape *)node1->GetData();
       if (leftNode)
-        newDivision->SetLeftSide((wxDivisionShape *)leftNode->Data());
+        newDivision->SetLeftSide((wxDivisionShape *)leftNode->GetData());
       if (topNode)
-        newDivision->SetTopSide((wxDivisionShape *)topNode->Data());
+        newDivision->SetTopSide((wxDivisionShape *)topNode->GetData());
       if (rightNode)
-        newDivision->SetRightSide((wxDivisionShape *)rightNode->Data());
+        newDivision->SetRightSide((wxDivisionShape *)rightNode->GetData());
       if (bottomNode)
-        newDivision->SetBottomSide((wxDivisionShape *)bottomNode->Data());
+        newDivision->SetBottomSide((wxDivisionShape *)bottomNode->GetData());
     }
-    node = node->Next();
+    node = node->GetNext();
   }
 }
 
@@ -483,23 +482,23 @@ wxOGLConstraint *wxCompositeShape::AddConstraint(int type, wxShape *constraining
 
 wxOGLConstraint *wxCompositeShape::FindConstraint(long cId, wxCompositeShape **actualComposite)
 {
-  wxNode *node = m_constraints.First();
+  wxNode *node = m_constraints.GetFirst();
   while (node)
   {
-    wxOGLConstraint *constraint = (wxOGLConstraint *)node->Data();
+    wxOGLConstraint *constraint = (wxOGLConstraint *)node->GetData();
     if (constraint->m_constraintId == cId)
     {
       if (actualComposite)
         *actualComposite = this;
       return constraint;
     }
-    node = node->Next();
+    node = node->GetNext();
   }
   // If not found, try children.
-  node = m_children.First();
+  node = m_children.GetFirst();
   while (node)
   {
-    wxShape *child = (wxShape *)node->Data();
+    wxShape *child = (wxShape *)node->GetData();
     if (child->IsKindOf(CLASSINFO(wxCompositeShape)))
     {
       wxOGLConstraint *constraint = ((wxCompositeShape *)child)->FindConstraint(cId, actualComposite);
@@ -510,7 +509,7 @@ wxOGLConstraint *wxCompositeShape::FindConstraint(long cId, wxCompositeShape **a
         return constraint;
       }
     }
-    node = node->Next();
+    node = node->GetNext();
   }
   return NULL;
 }
@@ -529,10 +528,10 @@ void wxCompositeShape::CalculateSize()
   double minY = (double)  999999.9;
 
   double w, h;
-  wxNode *node = m_children.First();
+  wxNode *node = m_children.GetFirst();
   while (node)
   {
-    wxShape *object = (wxShape *)node->Data();
+    wxShape *object = (wxShape *)node->GetData();
 
     // Recalculate size of composite objects because may not conform
     // to size it was set to - depends on the children.
@@ -548,7 +547,7 @@ void wxCompositeShape::CalculateSize()
     if ((object->GetY() - (h/2.0)) < minY)
       minY = (double)(object->GetY() - (h/2.0));
 
-    node = node->Next();
+    node = node->GetNext();
   }
   m_width = maxX - minX;
   m_height = maxY - minY;
@@ -579,26 +578,26 @@ bool wxCompositeShape::Constrain()
   CalculateSize();
 
   bool changed = FALSE;
-  wxNode *node = m_children.First();
+  wxNode *node = m_children.GetFirst();
   while (node)
   {
-    wxShape *object = (wxShape *)node->Data();
+    wxShape *object = (wxShape *)node->GetData();
     if (object->Constrain())
       changed = TRUE;
-    node = node->Next();
+    node = node->GetNext();
   }
 
-  node = m_constraints.First();
+  node = m_constraints.GetFirst();
   while (node)
   {
-    wxOGLConstraint *constraint = (wxOGLConstraint *)node->Data();
+    wxOGLConstraint *constraint = (wxOGLConstraint *)node->GetData();
     if (constraint->Evaluate()) changed = TRUE;
-    node = node->Next();
+    node = node->GetNext();
   }
   return changed;
 }
 
-#ifdef PROLOGIO
+#if wxUSE_PROLOGIO
 void wxCompositeShape::WriteAttributes(wxExpr *clause)
 {
   wxRectangleShape::WriteAttributes(clause);
@@ -607,12 +606,12 @@ void wxCompositeShape::WriteAttributes(wxExpr *clause)
 
   // Output constraints as constraint1 = (...), constraint2 = (...), etc.
   int constraintNo = 1;
-  char m_constraintNameBuf[20];
-  wxNode *node = m_constraints.First();
+  wxChar m_constraintNameBuf[20];
+  wxNode *node = m_constraints.GetFirst();
   while (node)
   {
-    wxOGLConstraint *constraint = (wxOGLConstraint *)node->Data();
-    sprintf(m_constraintNameBuf, "constraint%d", constraintNo);
+    wxOGLConstraint *constraint = (wxOGLConstraint *)node->GetData();
+    wxSprintf(m_constraintNameBuf, _T("constraint%d"), constraintNo);
 
     // Each constraint is stored in the form
     // (type name id xspacing yspacing m_constrainingObjectId constrainedObjectIdList)
@@ -625,44 +624,44 @@ void wxCompositeShape::WriteAttributes(wxExpr *clause)
     constraintExpr->Append(new wxExpr(constraint->m_constrainingObject->GetId()));
 
     wxExpr *objectList = new wxExpr(wxExprList);
-    wxNode *node1 = constraint->m_constrainedObjects.First();
+    wxNode *node1 = constraint->m_constrainedObjects.GetFirst();
     while (node1)
     {
-      wxShape *obj = (wxShape *)node1->Data();
+      wxShape *obj = (wxShape *)node1->GetData();
       objectList->Append(new wxExpr(obj->GetId()));
-      node1 = node1->Next();
+      node1 = node1->GetNext();
     }
     constraintExpr->Append(objectList);
 
     clause->AddAttributeValue(m_constraintNameBuf, constraintExpr);
 
-    node = node->Next();
+    node = node->GetNext();
     constraintNo ++;
   }
 
   // Write the ids of all the child images
   wxExpr *childrenExpr = new wxExpr(wxExprList);
-  node = m_children.First();
+  node = m_children.GetFirst();
   while (node)
   {
-    wxShape *child = (wxShape *)node->Data();
+    wxShape *child = (wxShape *)node->GetData();
     childrenExpr->Append(new wxExpr(child->GetId()));
-    node = node->Next();
+    node = node->GetNext();
   }
-  clause->AddAttributeValue("children", childrenExpr);
+  clause->AddAttributeValue(_T("children"), childrenExpr);
 
   // Write the ids of all the division images
-  if (m_divisions.Number() > 0)
+  if (m_divisions.GetCount() > 0)
   {
     wxExpr *divisionsExpr = new wxExpr(wxExprList);
-    node = m_divisions.First();
+    node = m_divisions.GetFirst();
     while (node)
     {
-      wxShape *child = (wxShape *)node->Data();
+      wxShape *child = (wxShape *)node->GetData();
       divisionsExpr->Append(new wxExpr(child->GetId()));
-      node = node->Next();
+      node = node->GetNext();
     }
-    clause->AddAttributeValue("divisions", divisionsExpr);
+    clause->AddAttributeValue(_T("divisions"), divisionsExpr);
   }
 }
 
@@ -681,12 +680,12 @@ void wxCompositeShape::ReadConstraints(wxExpr *clause, wxExprDatabase *database)
 {
   // Constraints are output as constraint1 = (...), constraint2 = (...), etc.
   int constraintNo = 1;
-  char m_constraintNameBuf[20];
+  wxChar m_constraintNameBuf[20];
   bool haveConstraints = TRUE;
 
   while (haveConstraints)
   {
-    sprintf(m_constraintNameBuf, "constraint%d", constraintNo);
+    wxSprintf(m_constraintNameBuf, _T("constraint%d"), constraintNo);
     wxExpr *constraintExpr = NULL;
     clause->GetAttributeValue(m_constraintNameBuf, &constraintExpr);
     if (!constraintExpr)
@@ -697,7 +696,7 @@ void wxCompositeShape::ReadConstraints(wxExpr *clause, wxExprDatabase *database)
     int cType = 0;
     double cXSpacing = 0.0;
     double cYSpacing = 0.0;
-    wxString cName("");
+    wxString cName = wxEmptyString;
     long cId = 0;
     wxShape *m_constrainingObject = NULL;
     wxList m_constrainedObjects;
@@ -719,25 +718,25 @@ void wxCompositeShape::ReadConstraints(wxExpr *clause, wxExprDatabase *database)
     cName = nameExpr->StringValue();
     cId = idExpr->IntegerValue();
 
-    wxExpr *objExpr1 = database->HashFind("node_image", constrainingExpr->IntegerValue());
+    wxExpr *objExpr1 = database->HashFind(_T("node_image"), constrainingExpr->IntegerValue());
     if (objExpr1 && objExpr1->GetClientData())
       m_constrainingObject = (wxShape *)objExpr1->GetClientData();
     else
-      wxFatalError("Couldn't find constraining image of composite.", "Object graphics error");
+      wxLogFatalError(wxT("Object graphics error: Couldn't find constraining image of composite."));
 
     int i = 0;
     wxExpr *currentIdExpr = constrainedExpr->Nth(i);
     while (currentIdExpr)
     {
       long currentId = currentIdExpr->IntegerValue();
-      wxExpr *objExpr2 = database->HashFind("node_image", currentId);
+      wxExpr *objExpr2 = database->HashFind(_T("node_image"), currentId);
       if (objExpr2 && objExpr2->GetClientData())
       {
         m_constrainedObjects.Append((wxShape *)objExpr2->GetClientData());
       }
       else
       {
-        wxFatalError("Couldn't find constrained image of composite.", "Object graphics error");
+        wxLogFatalError(wxT("Object graphics error: Couldn't find constrained image of composite."));
       }
 
       i ++;
@@ -746,7 +745,7 @@ void wxCompositeShape::ReadConstraints(wxExpr *clause, wxExprDatabase *database)
     wxOGLConstraint *newConstraint = AddConstraint(cType, m_constrainingObject, m_constrainedObjects);
     newConstraint->SetSpacing(cXSpacing, cYSpacing);
     newConstraint->m_constraintId = cId;
-    newConstraint->m_constraintName = (const char*) cName;
+    newConstraint->m_constraintName = cName;
     constraintNo ++;
   }
 }
@@ -776,13 +775,13 @@ wxDivisionShape *wxCompositeShape::OnCreateDivision()
 
 wxShape *wxCompositeShape::FindContainerImage()
 {
-  wxNode *node = m_children.First();
+  wxNode *node = m_children.GetFirst();
   while (node)
   {
-    wxShape *child = (wxShape *)node->Data();
+    wxShape *child = (wxShape *)node->GetData();
     if (!m_divisions.Member(child))
       return child;
-    node = node->Next();
+    node = node->GetNext();
   }
   return NULL;
 }
@@ -792,17 +791,17 @@ bool wxCompositeShape::ContainsDivision(wxDivisionShape *division)
 {
   if (m_divisions.Member(division))
     return TRUE;
-  wxNode *node = m_children.First();
+  wxNode *node = m_children.GetFirst();
   while (node)
   {
-    wxShape *child = (wxShape *)node->Data();
+    wxShape *child = (wxShape *)node->GetData();
     if (child->IsKindOf(CLASSINFO(wxCompositeShape)))
     {
       bool ans = ((wxCompositeShape *)child)->ContainsDivision(division);
       if (ans)
         return TRUE;
     }
-    node = node->Next();
+    node = node->GetNext();
   }
   return FALSE;
 }
@@ -826,10 +825,10 @@ wxDivisionShape::wxDivisionShape()
   m_handleSide = DIVISION_SIDE_NONE;
   m_leftSidePen = wxBLACK_PEN;
   m_topSidePen = wxBLACK_PEN;
-  m_leftSideColour = "BLACK";
-  m_topSideColour = "BLACK";
-  m_leftSideStyle = "Solid";
-  m_topSideStyle = "Solid";
+  m_leftSideColour = wxT("BLACK");
+  m_topSideColour = wxT("BLACK");
+  m_leftSideStyle = wxT("Solid");
+  m_topSideStyle = wxT("Solid");
   ClearRegions();
 }
 
@@ -878,13 +877,13 @@ bool wxDivisionShape::OnMovePre(wxDC& dc, double x, double y, double oldx, doubl
 {
   double diffX = x - oldx;
   double diffY = y - oldy;
-  wxNode *node = m_children.First();
+  wxNode *node = m_children.GetFirst();
   while (node)
   {
-    wxShape *object = (wxShape *)node->Data();
+    wxShape *object = (wxShape *)node->GetData();
     object->Erase(dc);
     object->Move(dc, object->GetX() + diffX, object->GetY() + diffY, display);
-    node = node->Next();
+    node = node->GetNext();
   }
   return TRUE;
 }
@@ -984,36 +983,36 @@ void wxDivisionShape::Copy(wxShape& copy)
   // Division geometry copying is handled at the wxCompositeShape level.
 }
 
-#ifdef PROLOGIO
+#if wxUSE_PROLOGIO
 void wxDivisionShape::WriteAttributes(wxExpr *clause)
 {
   wxCompositeShape::WriteAttributes(clause);
 
   if (m_leftSide)
-    clause->AddAttributeValue("left_side", (long)m_leftSide->GetId());
+    clause->AddAttributeValue(_T("left_side"), (long)m_leftSide->GetId());
   if (m_topSide)
-    clause->AddAttributeValue("top_side", (long)m_topSide->GetId());
+    clause->AddAttributeValue(_T("top_side"), (long)m_topSide->GetId());
   if (m_rightSide)
-    clause->AddAttributeValue("right_side", (long)m_rightSide->GetId());
+    clause->AddAttributeValue(_T("right_side"), (long)m_rightSide->GetId());
   if (m_bottomSide)
-    clause->AddAttributeValue("bottom_side", (long)m_bottomSide->GetId());
+    clause->AddAttributeValue(_T("bottom_side"), (long)m_bottomSide->GetId());
 
-  clause->AddAttributeValue("handle_side", (long)m_handleSide);
-  clause->AddAttributeValueString("left_colour", m_leftSideColour);
-  clause->AddAttributeValueString("top_colour", m_topSideColour);
-  clause->AddAttributeValueString("left_style", m_leftSideStyle);
-  clause->AddAttributeValueString("top_style", m_topSideStyle);
+  clause->AddAttributeValue(_T("handle_side"), (long)m_handleSide);
+  clause->AddAttributeValueString(_T("left_colour"), m_leftSideColour);
+  clause->AddAttributeValueString(_T("top_colour"), m_topSideColour);
+  clause->AddAttributeValueString(_T("left_style"), m_leftSideStyle);
+  clause->AddAttributeValueString(_T("top_style"), m_topSideStyle);
 }
 
 void wxDivisionShape::ReadAttributes(wxExpr *clause)
 {
   wxCompositeShape::ReadAttributes(clause);
 
-  clause->GetAttributeValue("handle_side", m_handleSide);
-  clause->GetAttributeValue("left_colour", m_leftSideColour);
-  clause->GetAttributeValue("top_colour", m_topSideColour);
-  clause->GetAttributeValue("left_style", m_leftSideStyle);
-  clause->GetAttributeValue("top_style", m_topSideStyle);
+  clause->GetAttributeValue(_T("handle_side"), m_handleSide);
+  clause->GetAttributeValue(_T("left_colour"), m_leftSideColour);
+  clause->GetAttributeValue(_T("top_colour"), m_topSideColour);
+  clause->GetAttributeValue(_T("left_style"), m_leftSideStyle);
+  clause->GetAttributeValue(_T("top_style"), m_topSideStyle);
 }
 #endif
 
@@ -1083,13 +1082,13 @@ bool wxDivisionShape::Divide(int direction)
 
     // Anything adjoining the bottom of this division now adjoins the
     // bottom of the new division.
-    wxNode *node = compositeParent->GetDivisions().First();
+    wxNode *node = compositeParent->GetDivisions().GetFirst();
     while (node)
     {
-      wxDivisionShape *obj = (wxDivisionShape *)node->Data();
+      wxDivisionShape *obj = (wxDivisionShape *)node->GetData();
       if (obj->GetTopSide() == this)
         obj->SetTopSide(newDivision);
-      node = node->Next();
+      node = node->GetNext();
     }
     newDivision->SetTopSide(this);
     newDivision->SetBottomSide(m_bottomSide);
@@ -1134,13 +1133,13 @@ bool wxDivisionShape::Divide(int direction)
 
     // Anything adjoining the left of this division now adjoins the
     // left of the new division.
-    wxNode *node = compositeParent->GetDivisions().First();
+    wxNode *node = compositeParent->GetDivisions().GetFirst();
     while (node)
     {
-      wxDivisionShape *obj = (wxDivisionShape *)node->Data();
+      wxDivisionShape *obj = (wxDivisionShape *)node->GetData();
       if (obj->GetLeftSide() == this)
         obj->SetLeftSide(newDivision);
-      node = node->Next();
+      node = node->GetNext();
     }
     newDivision->SetTopSide(m_topSide);
     newDivision->SetBottomSide(m_bottomSide);
@@ -1252,17 +1251,17 @@ void wxDivisionShape::ResetControlPoints()
 
 void wxDivisionShape::ResetMandatoryControlPoints()
 {
-  if (m_controlPoints.Number() < 1)
+  if (m_controlPoints.GetCount() < 1)
     return;
 
   double maxX, maxY;
 
   GetBoundingBoxMax(&maxX, &maxY);
 /*
-  wxNode *node = m_controlPoints.First();
+  wxNode *node = m_controlPoints.GetFirst();
   while (node)
   {
-    wxDivisionControlPoint *control = (wxDivisionControlPoint *)node->Data();
+    wxDivisionControlPoint *control = (wxDivisionControlPoint *)node->GetData();
     if (control->type == CONTROL_POINT_HORIZONTAL)
     {
       control->xoffset = (double)(-maxX/2.0); control->m_yoffset = 0.0;
@@ -1271,31 +1270,31 @@ void wxDivisionShape::ResetMandatoryControlPoints()
     {
       control->xoffset = 0.0; control->m_yoffset = (double)(-maxY/2.0);
     }
-    node = node->Next();
+    node = node->GetNext();
   }
 */
-  wxNode *node = m_controlPoints.First();
+  wxNode *node = m_controlPoints.GetFirst();
   if ((m_handleSide == DIVISION_SIDE_LEFT) && node)
   {
-    wxDivisionControlPoint *control = (wxDivisionControlPoint *)node->Data();
+    wxDivisionControlPoint *control = (wxDivisionControlPoint *)node->GetData();
     control->m_xoffset = (double)(-maxX/2.0); control->m_yoffset = 0.0;
   }
 
   if ((m_handleSide == DIVISION_SIDE_TOP) && node)
   {
-    wxDivisionControlPoint *control = (wxDivisionControlPoint *)node->Data();
+    wxDivisionControlPoint *control = (wxDivisionControlPoint *)node->GetData();
     control->m_xoffset = 0.0; control->m_yoffset = (double)(-maxY/2.0);
   }
 
   if ((m_handleSide == DIVISION_SIDE_RIGHT) && node)
   {
-    wxDivisionControlPoint *control = (wxDivisionControlPoint *)node->Data();
+    wxDivisionControlPoint *control = (wxDivisionControlPoint *)node->GetData();
     control->m_xoffset = (double)(maxX/2.0); control->m_yoffset = 0.0;
   }
 
   if ((m_handleSide == DIVISION_SIDE_BOTTOM) && node)
   {
-    wxDivisionControlPoint *control = (wxDivisionControlPoint *)node->Data();
+    wxDivisionControlPoint *control = (wxDivisionControlPoint *)node->GetData();
     control->m_xoffset = 0.0; control->m_yoffset = (double)(maxY/2.0);
   }
 }
@@ -1511,10 +1510,10 @@ void wxDivisionControlPoint::OnEndDragLeft(double x, double y, int keys, int att
 bool wxDivisionShape::ResizeAdjoining(int side, double newPos, bool test)
 {
   wxCompositeShape *divisionParent = (wxCompositeShape *)GetParent();
-  wxNode *node = divisionParent->GetDivisions().First();
+  wxNode *node = divisionParent->GetDivisions().GetFirst();
   while (node)
   {
-    wxDivisionShape *division = (wxDivisionShape *)node->Data();
+    wxDivisionShape *division = (wxDivisionShape *)node->GetData();
     switch (side)
     {
       case DIVISION_SIDE_LEFT:
@@ -1560,7 +1559,7 @@ bool wxDivisionShape::ResizeAdjoining(int side, double newPos, bool test)
       default:
         break;
     }
-    node = node->Next();
+    node = node->GetNext();
   }
 
   return TRUE;
@@ -1573,11 +1572,11 @@ bool wxDivisionShape::ResizeAdjoining(int side, double newPos, bool test)
 class OGLPopupDivisionMenu : public wxMenu {
 public:
     OGLPopupDivisionMenu() : wxMenu() {
-        Append(DIVISION_MENU_SPLIT_HORIZONTALLY, "Split horizontally");
-        Append(DIVISION_MENU_SPLIT_VERTICALLY, "Split vertically");
+        Append(DIVISION_MENU_SPLIT_HORIZONTALLY, wxT("Split horizontally"));
+        Append(DIVISION_MENU_SPLIT_VERTICALLY, wxT("Split vertically"));
         AppendSeparator();
-        Append(DIVISION_MENU_EDIT_LEFT_EDGE, "Edit left edge");
-        Append(DIVISION_MENU_EDIT_TOP_EDGE, "Edit top edge");
+        Append(DIVISION_MENU_EDIT_LEFT_EDGE, wxT("Edit left edge"));
+        Append(DIVISION_MENU_EDIT_TOP_EDGE, wxT("Edit top edge"));
     }
 
     void OnMenu(wxCommandEvent& event);
@@ -1623,9 +1622,9 @@ void OGLPopupDivisionMenu::OnMenu(wxCommandEvent& event)
   }
 }
 
-void wxDivisionShape::EditEdge(int side)
+void wxDivisionShape::EditEdge(int WXUNUSED(side))
 {
-  wxMessageBox("EditEdge() not implemented", "OGL", wxOK);
+  wxMessageBox(wxT("EditEdge() not implemented"), wxT("OGL"), wxOK);
 
 #if 0
   wxBeginBusyCursor();