]> git.saurik.com Git - wxWidgets.git/commitdiff
private dataformat almost working - minor fixes
authorKarsten Ballüder <ballueder@usa.net>
Mon, 15 Nov 1999 21:15:25 +0000 (21:15 +0000)
committerKarsten Ballüder <ballueder@usa.net>
Mon, 15 Nov 1999 21:15:25 +0000 (21:15 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@4583 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

samples/richedit/wxllist.cpp
samples/richedit/wxllist.h
samples/richedit/wxlwindow.cpp

index 94e81f7d7bc6b54dbdb6d8edaf01a3ea56930bb1..32224783f211e6ed57695b1d81d617114f593898 100644 (file)
@@ -1568,6 +1568,18 @@ wxLayoutList::InternalClear(void)
    m_CursorStyleInfo = m_DefaultStyleInfo;
 }
 
    m_CursorStyleInfo = m_DefaultStyleInfo;
 }
 
+void
+wxLayoutList::Read(wxString &istr)
+{
+   while(istr.Length())
+   {
+      wxLayoutObject *obj = wxLayoutObject::Read(istr);
+      if(obj)
+         Insert(obj);
+   }
+}
+
+
 void
 wxLayoutList::SetFont(int family, int size, int style, int weight,
                       int underline, wxColour *fg,
 void
 wxLayoutList::SetFont(int family, int size, int style, int weight,
                       int underline, wxColour *fg,
@@ -2352,15 +2364,10 @@ wxLayoutList::Draw(wxDC &dc,
    }
    InvalidateUpdateRect();
 
    }
    InvalidateUpdateRect();
 
-#ifdef DEBUG
-   if ( m_Selection.m_valid )
-   {
-       WXLO_DEBUG(("Selection is %s : %ld,%ld/%ld,%ld",
-                   m_Selection.m_valid ? "valid" : "invalid",
-                   m_Selection.m_CursorA.x, m_Selection.m_CursorA.y,
-                   m_Selection.m_CursorB.x, m_Selection.m_CursorB.y));
-   }
-#endif
+   WXLO_DEBUG(("Selection is %s : l%d,%ld/%ld,%ld",
+               m_Selection.m_valid ? "valid" : "invalid",
+               m_Selection.m_CursorA.x, m_Selection.m_CursorA.y,
+               m_Selection.m_CursorB.x, m_Selection.m_CursorB.y));
 }
 
 wxLayoutObject *
 }
 
 wxLayoutObject *
@@ -2860,7 +2867,6 @@ wxLayoutList::GetSelection(wxLayoutDataObject *wxlo, bool invalidate)
             exp->content.object->Write(string);
          delete exp;
       }
             exp->content.object->Write(string);
          delete exp;
       }
-
       wxlo->SetLayoutData(string);
    }
    return llist;
       wxlo->SetLayoutData(string);
    }
    return llist;
index 0ff31fb09f9bb73273896ad4569db73e87bee92b..1446ebf3a07683467333d5e6b1bd6898973b128c 100644 (file)
@@ -1140,6 +1140,12 @@ public:
 
    /// get the line by number
    wxLayoutLine *GetLine(CoordType index) const;
 
    /// get the line by number
    wxLayoutLine *GetLine(CoordType index) const;
+
+   /** Reads objects from a string and inserts them.
+       @param istr stream to read from, will bee changed
+   */
+   void Read(wxString &istr);
+
 private:
    /// Clear the list.
    void InternalClear(void);
 private:
    /// Clear the list.
    void InternalClear(void);
index bade22716d434afe3d74269069d7b204b70790de..1fdba74348f16d0c17ac94735aaa45c3131dc075 100644 (file)
@@ -88,7 +88,7 @@ static const int Y_SCROLL_PAGE = 20;
 
 
 
 
 
 
-#define wxUSE_PRIVATE_CLIPBOARD_FORMAT 1
+#define wxUSE_PRIVATE_CLIPBOARD_FORMAT 0
 
 // ----------------------------------------------------------------------------
 // event tables
 
 // ----------------------------------------------------------------------------
 // event tables
@@ -496,21 +496,18 @@ wxLayoutWindow::OnChar(wxKeyEvent& event)
    if ( IsDirectionKey(keyCode) )
    {
       // just continue the old selection
    if ( IsDirectionKey(keyCode) )
    {
       // just continue the old selection
-      if ( m_Selecting )
+      if ( m_Selecting && event.ShiftDown() )
+            m_llist->ContinueSelection();
+      else
       {
       {
+         m_llist->DiscardSelection();
+         m_Selecting = false;
          if( event.ShiftDown() )
          if( event.ShiftDown() )
-            m_llist->ContinueSelection();
-         else
          {
          {
-            m_llist->DiscardSelection();
-            m_Selecting = false;
+            m_Selecting = true;
+            m_llist->StartSelection();
          }
       }
          }
       }
-      else if( event.ShiftDown() )
-      {
-         m_Selecting = true;
-         m_llist->StartSelection();
-      }
    }
    
    // If needed, make cursor visible:
    }
    
    // If needed, make cursor visible:
@@ -631,8 +628,12 @@ wxLayoutWindow::OnChar(wxKeyEvent& event)
                m_llist->DeleteToEndOfLine();
                SetDirty();
                break;
                m_llist->DeleteToEndOfLine();
                SetDirty();
                break;
+            case 'c':
+               Copy();
+               break;
             case 'v':
             case 'v':
-               Paste();
+               // if SHIFT is down, use primary selection
+               Paste( event.ShiftDown() );
                break;
             case 'x':
                Cut();
                break;
             case 'x':
                Cut();
@@ -1079,11 +1080,14 @@ wxLayoutWindow::Paste(bool primary)
    {
 #if wxUSE_PRIVATE_CLIPBOARD_FORMAT
       wxLayoutDataObject wxldo;
    {
 #if wxUSE_PRIVATE_CLIPBOARD_FORMAT
       wxLayoutDataObject wxldo;
-      if ( wxTheClipboard->GetData(wxldo) )
+      if (wxTheClipboard->IsSupported( wxldo.GetFormat() ))
       {
       {
-         //FIXME: missing functionality  m_llist->Insert(wxldo.GetList());
-         wxLayoutImportText(m_llist, wxldo.GetLayoutData());
-         SetDirty();
+         if(wxTheClipboard->GetData(wxldo))
+         {
+            wxString str = wxldo.GetLayoutData();
+            m_llist->Read(str);
+            RequestUpdate();
+         }
       }
       else
 #endif
       }
       else
 #endif
@@ -1112,20 +1116,10 @@ wxLayoutWindow::Copy(bool invalidate)
       m_llist->EndSelection();
    }
 
       m_llist->EndSelection();
    }
 
-#if wxUSE_PRIVATE_CLIPBOARD_FORMAT
-   // the data object which holds all different data objects, one for each
-   // format we support
-   wxDataObjectComposite *data = new wxDataObjectComposite;
-#endif
-
    wxLayoutDataObject *wldo = new wxLayoutDataObject;
    wxLayoutList *llist = m_llist->GetSelection(wldo, invalidate);
    if(! llist)
    wxLayoutDataObject *wldo = new wxLayoutDataObject;
    wxLayoutList *llist = m_llist->GetSelection(wldo, invalidate);
    if(! llist)
-   {
-      delete wldo;
-      delete data;
       return FALSE;
       return FALSE;
-   }
    // Export selection as text:
    wxString text;
    wxLayoutExportObject *exp;
    // Export selection as text:
    wxString text;
    wxLayoutExportObject *exp;
@@ -1138,7 +1132,6 @@ wxLayoutWindow::Copy(bool invalidate)
    }
    delete llist;
 
    }
    delete llist;
 
-   bool rc;
    // The exporter always appends a newline, so we chop it off if it
    // is there:
    {
    // The exporter always appends a newline, so we chop it off if it
    // is there:
    {
@@ -1151,19 +1144,20 @@ wxLayoutWindow::Copy(bool invalidate)
 
    if (wxTheClipboard->Open())
    {
 
    if (wxTheClipboard->Open())
    {
+      wxTextDataObject *data = new wxTextDataObject( text );
+      bool rc;
+
+      rc = wxTheClipboard->SetData( data );
 #if wxUSE_PRIVATE_CLIPBOARD_FORMAT
 #if wxUSE_PRIVATE_CLIPBOARD_FORMAT
-      data->Add(wldo, TRUE /* preferred */);
-      data->Add(new wxTextDataObject(text));
+      rc |= wxTheClipboard->SetData( wldo );
 #endif
 #endif
-      rc = wxTheClipboard->SetData( data );
       wxTheClipboard->Close();
       wxTheClipboard->Close();
+      return rc;
    }
    else
    }
    else
-      rc = FALSE;
-
-   delete wldo;
-   delete data;
-   return rc;
+      delete wldo;
+   
+   return FALSE;
 }
 
 bool
 }
 
 bool