]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/docvwmdi/doc.cpp
2.8.0
[wxWidgets.git] / samples / docvwmdi / doc.cpp
index fe26f59bad62b0a6bd1fe831f21dff0a75d81770..cba38cb4979fb96f7432463c832b7b07ee86369b 100644 (file)
@@ -5,14 +5,10 @@
 // Modified by:
 // Created:     04/01/98
 // RCS-ID:      $Id$
-// Copyright:   (c) Julian Smart and Markus Holzem
-// Licence:    wxWindows license
+// Copyright:   (c) Julian Smart
+// Licence:     wxWindows license
 /////////////////////////////////////////////////////////////////////////////
 
-#ifdef __GNUG__
-// #pragma implementation
-#endif
-
 // For compilers that support precompilation, includes "wx/wx.h".
 #include "wx/wxprec.h"
 
 #ifndef WX_PRECOMP
 #include "wx/wx.h"
 #endif
-#include "wx/txtstrm.h"
 
 #if !wxUSE_DOC_VIEW_ARCHITECTURE
 #error You must set wxUSE_DOC_VIEW_ARCHITECTURE to 1 in setup.h!
 #endif
 
+#if wxUSE_STD_IOSTREAM
+    #include "wx/ioswrap.h"
+#else
+    #include "wx/txtstrm.h"
+#endif
+
 #include "doc.h"
 #include "view.h"
 
 IMPLEMENT_DYNAMIC_CLASS(DrawingDocument, wxDocument)
 
-DrawingDocument::DrawingDocument(void)
-{
-}
-
 DrawingDocument::~DrawingDocument(void)
 {
-  doodleSegments.DeleteContents(TRUE);
+  WX_CLEAR_LIST(wxList, doodleSegments);
 }
 
 #if wxUSE_STD_IOSTREAM
-ostream& DrawingDocument::SaveObject(ostream& stream)
+wxSTD ostream& DrawingDocument::SaveObject(wxSTD ostream& stream)
 {
   wxDocument::SaveObject(stream);
-  
-  wxInt32 n = doodleSegments.Number();
-  stream << n << '\n';
-  
-  wxNode *node = doodleSegments.First();
+
+  wxInt32 n = doodleSegments.GetCount();
+  stream << n << _T('\n');
+
+  wxList::compatibility_iterator node = doodleSegments.GetFirst();
   while (node)
   {
-    DoodleSegment *segment = (DoodleSegment *)node->Data();
+    DoodleSegment *segment = (DoodleSegment *)node->GetData();
     segment->SaveObject(stream);
-    stream << '\n';
-    
-    node = node->Next();
+    stream << _T('\n');
+
+    node = node->GetNext();
   }
-  
+
   return stream;
 }
 #else
@@ -70,28 +67,28 @@ wxOutputStream& DrawingDocument::SaveObject(wxOutputStream& stream)
 
   wxTextOutputStream text_stream( stream );
 
-  wxInt32 n = doodleSegments.Number();
-  text_stream << n << '\n';
-  
-  wxNode *node = doodleSegments.First();
+  wxInt32 n = doodleSegments.GetCount();
+  text_stream << n << _T('\n');
+
+  wxList::compatibility_iterator node = doodleSegments.GetFirst();
   while (node)
   {
-    DoodleSegment *segment = (DoodleSegment *)node->Data();
+    DoodleSegment *segment = (DoodleSegment *)node->GetData();
     segment->SaveObject(stream);
-    text_stream << '\n';
-    
-    node = node->Next();
+    text_stream << _T('\n');
+
+    node = node->GetNext();
   }
-  
+
   return stream;
 }
 #endif
 
 #if wxUSE_STD_IOSTREAM
-istream& DrawingDocument::LoadObject(istream& stream)
+wxSTD istream& DrawingDocument::LoadObject(wxSTD istream& stream)
 {
   wxDocument::LoadObject(stream);
-  
+
   wxInt32 n = 0;
   stream >> n;
 
@@ -124,16 +121,14 @@ wxInputStream& DrawingDocument::LoadObject(wxInputStream& stream)
   return stream;
 }
 #endif
-DoodleSegment::DoodleSegment(void)
-{
-}
 
-DoodleSegment::DoodleSegment(DoodleSegment& seg)
+DoodleSegment::DoodleSegment(const DoodleSegment& seg)
+              :wxObject()
 {
-  wxNode *node = seg.lines.First();
+  wxList::compatibility_iterator node = seg.lines.GetFirst();
   while (node)
   {
-    DoodleLine *line = (DoodleLine *)node->Data();
+    DoodleLine *line = (DoodleLine *)node->GetData();
     DoodleLine *newLine = new DoodleLine;
     newLine->x1 = line->x1;
     newLine->y1 = line->y1;
@@ -142,30 +137,30 @@ DoodleSegment::DoodleSegment(DoodleSegment& seg)
 
     lines.Append(newLine);
 
-    node = node->Next();
+    node = node->GetNext();
   }
 }
 
 DoodleSegment::~DoodleSegment(void)
 {
-  lines.DeleteContents(TRUE);
+  WX_CLEAR_LIST(wxList, lines);
 }
 
 #if wxUSE_STD_IOSTREAM
-ostream& DoodleSegment::SaveObject(ostream& stream)
+wxSTD ostream& DoodleSegment::SaveObject(wxSTD ostream& stream)
 {
-  wxInt32 n = lines.Number();
-  stream << n << '\n';
-  
-  wxNode *node = lines.First();
+  wxInt32 n = lines.GetCount();
+  stream << n << _T('\n');
+
+  wxList::compatibility_iterator node = lines.GetFirst();
   while (node)
   {
-    DoodleLine *line = (DoodleLine *)node->Data();
-    stream << line->x1 << " " << 
-                   line->y1 << " " << 
-                  line->x2 << " " << 
-                  line->y2 << "\n";
-    node = node->Next();
+    DoodleLine *line = (DoodleLine *)node->GetData();
+    stream << line->x1 << _T(" ") <<
+                   line->y1 << _T(" ") <<
+           line->x2 << _T(" ") <<
+           line->y2 << _T("\n");
+    node = node->GetNext();
   }
 
   return stream;
@@ -175,18 +170,18 @@ wxOutputStream &DoodleSegment::SaveObject(wxOutputStream& stream)
 {
   wxTextOutputStream text_stream( stream );
 
-  wxInt32 n = lines.Number();
-  text_stream << n << '\n';
-  
-  wxNode *node = lines.First();
+  wxInt32 n = lines.GetCount();
+  text_stream << n << _T('\n');
+
+  wxList::compatibility_iterator node = lines.GetFirst();
   while (node)
   {
-    DoodleLine *line = (DoodleLine *)node->Data();
-    text_stream << line->x1 << " " << 
-                   line->y1 << " " << 
-                  line->x2 << " " << 
-                  line->y2 << "\n";
-    node = node->Next();
+    DoodleLine *line = (DoodleLine *)node->GetData();
+    text_stream << line->x1 << _T(" ") <<
+                   line->y1 << _T(" ") <<
+           line->x2 << _T(" ") <<
+           line->y2 << _T("\n");
+    node = node->GetNext();
   }
 
   return stream;
@@ -194,7 +189,7 @@ wxOutputStream &DoodleSegment::SaveObject(wxOutputStream& stream)
 #endif
 
 #if wxUSE_STD_IOSTREAM
-istream& DoodleSegment::LoadObject(istream& stream)
+wxSTD istream& DoodleSegment::LoadObject(wxSTD istream& stream)
 {
   wxInt32 n = 0;
   stream >> n;
@@ -202,13 +197,13 @@ istream& DoodleSegment::LoadObject(istream& stream)
   for (int i = 0; i < n; i++)
   {
     DoodleLine *line = new DoodleLine;
-    stream >> line->x1 >> 
-                   line->y1 >> 
-                  line->x2 >> 
-                  line->y2;
+    stream >> line->x1 >>
+                   line->y1 >>
+           line->x2 >>
+           line->y2;
     lines.Append(line);
   }
-  
+
   return stream;
 }
 #else
@@ -222,24 +217,24 @@ wxInputStream &DoodleSegment::LoadObject(wxInputStream& stream)
   for (int i = 0; i < n; i++)
   {
     DoodleLine *line = new DoodleLine;
-    text_stream >> line->x1 >> 
-                   line->y1 >> 
-                  line->x2 >> 
-                  line->y2;
+    text_stream >> line->x1 >>
+                   line->y1 >>
+           line->x2 >>
+           line->y2;
     lines.Append(line);
   }
-  
+
   return stream;
 }
 #endif
 void DoodleSegment::Draw(wxDC *dc)
 {
-  wxNode *node = lines.First();
+  wxList::compatibility_iterator node = lines.GetFirst();
   while (node)
   {
-    DoodleLine *line = (DoodleLine *)node->Data();
+    DoodleLine *line = (DoodleLine *)node->GetData();
     dc->DrawLine(line->x1, line->y1, line->x2, line->y2);
-    node = node->Next();
+    node = node->GetNext();
   }
 }
 
@@ -248,7 +243,7 @@ void DoodleSegment::Draw(wxDC *dc)
  */
 
 DrawingCommand::DrawingCommand(const wxString& name, int command, DrawingDocument *ddoc, DoodleSegment *seg):
-  wxCommand(TRUE, name)
+  wxCommand(true, name)
 {
   doc = ddoc;
   segment = seg;
@@ -268,16 +263,16 @@ bool DrawingCommand::Do(void)
     case DOODLE_CUT:
     {
       // Cut the last segment
-      if (doc->GetDoodleSegments().Number() > 0)
+      if (doc->GetDoodleSegments().GetCount() > 0)
       {
-        wxNode *node = doc->GetDoodleSegments().Last();
+        wxList::compatibility_iterator node = doc->GetDoodleSegments().GetLast();
         if (segment)
           delete segment;
-          
-        segment = (DoodleSegment *)node->Data();
-        delete node;
 
-        doc->Modify(TRUE);
+        segment = (DoodleSegment *)node->GetData();
+        doc->GetDoodleSegments().Erase(node);
+
+        doc->Modify(true);
         doc->UpdateAllViews();
       }
       break;
@@ -285,12 +280,12 @@ bool DrawingCommand::Do(void)
     case DOODLE_ADD:
     {
       doc->GetDoodleSegments().Append(new DoodleSegment(*segment));
-      doc->Modify(TRUE);
+      doc->Modify(true);
       doc->UpdateAllViews();
       break;
     }
   }
-  return TRUE;
+  return true;
 }
 
 bool DrawingCommand::Undo(void)
@@ -303,30 +298,30 @@ bool DrawingCommand::Undo(void)
       if (segment)
       {
         doc->GetDoodleSegments().Append(segment);
-        doc->Modify(TRUE);
+        doc->Modify(true);
         doc->UpdateAllViews();
         segment = (DoodleSegment *) NULL;
       }
-      doc->Modify(TRUE);
+      doc->Modify(true);
       doc->UpdateAllViews();
       break;
     }
     case DOODLE_ADD:
     {
       // Cut the last segment
-      if (doc->GetDoodleSegments().Number() > 0)
+      if (doc->GetDoodleSegments().GetCount() > 0)
       {
-        wxNode *node = doc->GetDoodleSegments().Last();
-        DoodleSegment *seg = (DoodleSegment *)node->Data();
+        wxList::compatibility_iterator node = doc->GetDoodleSegments().GetLast();
+        DoodleSegment *seg = (DoodleSegment *)node->GetData();
         delete seg;
-        delete node;
+        doc->GetDoodleSegments().Erase(node);
 
-        doc->Modify(TRUE);
+        doc->Modify(true);
         doc->UpdateAllViews();
       }
     }
   }
-  return TRUE;
+  return true;
 }
 
 IMPLEMENT_DYNAMIC_CLASS(TextEditDocument, wxDocument)
@@ -338,21 +333,21 @@ bool TextEditDocument::OnSaveDocument(const wxString& filename)
     TextEditView *view = (TextEditView *)GetFirstView();
 
     if (!view->textsw->SaveFile(filename))
-        return FALSE;
-    Modify(FALSE);
-    return TRUE;
+        return false;
+    Modify(false);
+    return true;
 }
 
 bool TextEditDocument::OnOpenDocument(const wxString& filename)
 {
     TextEditView *view = (TextEditView *)GetFirstView();
     if (!view->textsw->LoadFile(filename))
-        return FALSE;
+        return false;
 
-    SetFilename(filename, TRUE);
-    Modify(FALSE);
+    SetFilename(filename, true);
+    Modify(false);
     UpdateAllViews();
-    return TRUE;
+    return true;
 }
 
 bool TextEditDocument::IsModified(void) const