X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/949750de631b2c2ee59c6e9080e7d38fa66c0167..c514752837dd97ce0992f46772dd66dbac9f05a8:/src/stc/stc.cpp diff --git a/src/stc/stc.cpp b/src/stc/stc.cpp index bfa51d3001..aedb28e311 100644 --- a/src/stc/stc.cpp +++ b/src/stc/stc.cpp @@ -47,13 +47,13 @@ #include "wx/tokenzr.h" #include "wx/mstream.h" #include "wx/image.h" -#include "wx/file.h" +#include "wx/ffile.h" #include "ScintillaWX.h" //---------------------------------------------------------------------- -const wxChar* wxSTCNameStr = wxT("stcwindow"); +const char wxSTCNameStr[] = "stcwindow"; #ifdef MAKELONG #undef MAKELONG @@ -96,34 +96,34 @@ static wxColour wxColourFromSpec(const wxString& spec) { //---------------------------------------------------------------------- -DEFINE_EVENT_TYPE( wxEVT_STC_CHANGE ) -DEFINE_EVENT_TYPE( wxEVT_STC_STYLENEEDED ) -DEFINE_EVENT_TYPE( wxEVT_STC_CHARADDED ) -DEFINE_EVENT_TYPE( wxEVT_STC_SAVEPOINTREACHED ) -DEFINE_EVENT_TYPE( wxEVT_STC_SAVEPOINTLEFT ) -DEFINE_EVENT_TYPE( wxEVT_STC_ROMODIFYATTEMPT ) -DEFINE_EVENT_TYPE( wxEVT_STC_KEY ) -DEFINE_EVENT_TYPE( wxEVT_STC_DOUBLECLICK ) -DEFINE_EVENT_TYPE( wxEVT_STC_UPDATEUI ) -DEFINE_EVENT_TYPE( wxEVT_STC_MODIFIED ) -DEFINE_EVENT_TYPE( wxEVT_STC_MACRORECORD ) -DEFINE_EVENT_TYPE( wxEVT_STC_MARGINCLICK ) -DEFINE_EVENT_TYPE( wxEVT_STC_NEEDSHOWN ) -DEFINE_EVENT_TYPE( wxEVT_STC_PAINTED ) -DEFINE_EVENT_TYPE( wxEVT_STC_USERLISTSELECTION ) -DEFINE_EVENT_TYPE( wxEVT_STC_URIDROPPED ) -DEFINE_EVENT_TYPE( wxEVT_STC_DWELLSTART ) -DEFINE_EVENT_TYPE( wxEVT_STC_DWELLEND ) -DEFINE_EVENT_TYPE( wxEVT_STC_START_DRAG ) -DEFINE_EVENT_TYPE( wxEVT_STC_DRAG_OVER ) -DEFINE_EVENT_TYPE( wxEVT_STC_DO_DROP ) -DEFINE_EVENT_TYPE( wxEVT_STC_ZOOM ) -DEFINE_EVENT_TYPE( wxEVT_STC_HOTSPOT_CLICK ) -DEFINE_EVENT_TYPE( wxEVT_STC_HOTSPOT_DCLICK ) -DEFINE_EVENT_TYPE( wxEVT_STC_CALLTIP_CLICK ) -DEFINE_EVENT_TYPE( wxEVT_STC_AUTOCOMP_SELECTION ) -DEFINE_EVENT_TYPE( wxEVT_STC_INDICATOR_CLICK ) -DEFINE_EVENT_TYPE( wxEVT_STC_INDICATOR_RELEASE ) +wxDEFINE_EVENT( wxEVT_STC_CHANGE, wxStyledTextEvent ); +wxDEFINE_EVENT( wxEVT_STC_STYLENEEDED, wxStyledTextEvent ); +wxDEFINE_EVENT( wxEVT_STC_CHARADDED, wxStyledTextEvent ); +wxDEFINE_EVENT( wxEVT_STC_SAVEPOINTREACHED, wxStyledTextEvent ); +wxDEFINE_EVENT( wxEVT_STC_SAVEPOINTLEFT, wxStyledTextEvent ); +wxDEFINE_EVENT( wxEVT_STC_ROMODIFYATTEMPT, wxStyledTextEvent ); +wxDEFINE_EVENT( wxEVT_STC_KEY, wxStyledTextEvent ); +wxDEFINE_EVENT( wxEVT_STC_DOUBLECLICK, wxStyledTextEvent ); +wxDEFINE_EVENT( wxEVT_STC_UPDATEUI, wxStyledTextEvent ); +wxDEFINE_EVENT( wxEVT_STC_MODIFIED, wxStyledTextEvent ); +wxDEFINE_EVENT( wxEVT_STC_MACRORECORD, wxStyledTextEvent ); +wxDEFINE_EVENT( wxEVT_STC_MARGINCLICK, wxStyledTextEvent ); +wxDEFINE_EVENT( wxEVT_STC_NEEDSHOWN, wxStyledTextEvent ); +wxDEFINE_EVENT( wxEVT_STC_PAINTED, wxStyledTextEvent ); +wxDEFINE_EVENT( wxEVT_STC_USERLISTSELECTION, wxStyledTextEvent ); +wxDEFINE_EVENT( wxEVT_STC_URIDROPPED, wxStyledTextEvent ); +wxDEFINE_EVENT( wxEVT_STC_DWELLSTART, wxStyledTextEvent ); +wxDEFINE_EVENT( wxEVT_STC_DWELLEND, wxStyledTextEvent ); +wxDEFINE_EVENT( wxEVT_STC_START_DRAG, wxStyledTextEvent ); +wxDEFINE_EVENT( wxEVT_STC_DRAG_OVER, wxStyledTextEvent ); +wxDEFINE_EVENT( wxEVT_STC_DO_DROP, wxStyledTextEvent ); +wxDEFINE_EVENT( wxEVT_STC_ZOOM, wxStyledTextEvent ); +wxDEFINE_EVENT( wxEVT_STC_HOTSPOT_CLICK, wxStyledTextEvent ); +wxDEFINE_EVENT( wxEVT_STC_HOTSPOT_DCLICK, wxStyledTextEvent ); +wxDEFINE_EVENT( wxEVT_STC_CALLTIP_CLICK, wxStyledTextEvent ); +wxDEFINE_EVENT( wxEVT_STC_AUTOCOMP_SELECTION, wxStyledTextEvent ); +wxDEFINE_EVENT( wxEVT_STC_INDICATOR_CLICK, wxStyledTextEvent ); +wxDEFINE_EVENT( wxEVT_STC_INDICATOR_RELEASE, wxStyledTextEvent ); @@ -224,7 +224,7 @@ wxStyledTextCtrl::~wxStyledTextCtrl() { //---------------------------------------------------------------------- -long wxStyledTextCtrl::SendMsg(int msg, long wp, long lp) const +wxIntPtr wxStyledTextCtrl::SendMsg(int msg, wxUIntPtr wp, wxIntPtr lp) const { return m_swx->WndProc(msg, wp, lp); } @@ -257,18 +257,18 @@ void wxStyledTextCtrl::SetHScrollBar(wxScrollBar* bar) { // Add text to the document at current position. void wxStyledTextCtrl::AddText(const wxString& text) { wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text); - SendMsg(2001, strlen(buf), (long)(const char*)buf); + SendMsg(2001, strlen(buf), (sptr_t)(const char*)buf); } // Add array of cells to document. void wxStyledTextCtrl::AddStyledText(const wxMemoryBuffer& data) { - SendMsg(2002, data.GetDataLen(), (long)data.GetData()); + SendMsg(2002, data.GetDataLen(), (sptr_t)data.GetData()); } // Insert string at a position. void wxStyledTextCtrl::InsertText(int pos, const wxString& text) { - SendMsg(2003, pos, (long)(const char*)wx2stc(text)); + SendMsg(2003, pos, (sptr_t)(const char*)wx2stc(text)); } // Delete all text in the document. @@ -351,7 +351,7 @@ wxMemoryBuffer wxStyledTextCtrl::GetStyledText(int startPos, int endPos) { tr.lpstrText = (char*)buf.GetWriteBuf(len*2+1); tr.chrg.cpMin = startPos; tr.chrg.cpMax = endPos; - len = SendMsg(2015, 0, (long)&tr); + len = SendMsg(2015, 0, (sptr_t)&tr); buf.UngetWriteBuf(len); return buf; } @@ -436,7 +436,7 @@ wxString wxStyledTextCtrl::GetCurLine(int* linePos) { wxMemoryBuffer mbuf(len+1); char* buf = (char*)mbuf.GetWriteBuf(len+1); - int pos = SendMsg(2027, len+1, (long)buf); + int pos = SendMsg(2027, len+1, (sptr_t)buf); mbuf.UngetWriteBuf(len); mbuf.AppendByte(0); if (linePos) *linePos = pos; @@ -591,7 +591,7 @@ void wxStyledTextCtrl::MarkerDefineBitmap(int markerNumber, const wxBitmap& bmp) char* buff = new char[len+1]; strm.CopyTo(buff, len); buff[len] = 0; - SendMsg(2049, markerNumber, (long)buff); + SendMsg(2049, markerNumber, (sptr_t)buff); delete [] buff; } @@ -695,7 +695,7 @@ void wxStyledTextCtrl::StyleSetSize(int style, int sizePoints) // Set the font of a style. void wxStyledTextCtrl::StyleSetFaceName(int style, const wxString& fontName) { - SendMsg(2056, style, (long)(const char*)wx2stc(fontName)); + SendMsg(2056, style, (sptr_t)(const char*)wx2stc(fontName)); } // Set a style to have its end of line filled or not. @@ -754,7 +754,7 @@ wxString wxStyledTextCtrl::StyleGetFaceName(int style) { long len = SendMsg(msg, style, 0); wxMemoryBuffer mbuf(len+1); char* buf = (char*)mbuf.GetWriteBuf(len+1); - SendMsg(msg, style, (long)buf); + SendMsg(msg, style, (sptr_t)buf); mbuf.UngetWriteBuf(len); mbuf.AppendByte(0); return stc2wx(buf); @@ -875,7 +875,7 @@ void wxStyledTextCtrl::CmdKeyClearAll() // Set the styles for a segment of the document. void wxStyledTextCtrl::SetStyleBytes(int length, char* styleBytes) { - SendMsg(2073, length, (long)styleBytes); + SendMsg(2073, length, (sptr_t)styleBytes); } // Set a style to be visible or not. @@ -900,7 +900,7 @@ void wxStyledTextCtrl::SetCaretPeriod(int periodMilliseconds) // First sets deaults like SetCharsDefault. void wxStyledTextCtrl::SetWordChars(const wxString& characters) { - SendMsg(2077, 0, (long)(const char*)wx2stc(characters)); + SendMsg(2077, 0, (sptr_t)(const char*)wx2stc(characters)); } // Start a sequence of actions that is undone and redone as a unit. @@ -1034,7 +1034,7 @@ void wxStyledTextCtrl::StyleSetChangeable(int style, bool changeable) // the caret should be used to provide context. void wxStyledTextCtrl::AutoCompShow(int lenEntered, const wxString& itemList) { - SendMsg(2100, lenEntered, (long)(const char*)wx2stc(itemList)); + SendMsg(2100, lenEntered, (sptr_t)(const char*)wx2stc(itemList)); } // Remove the auto-completion list from the screen. @@ -1064,7 +1064,7 @@ void wxStyledTextCtrl::AutoCompComplete() // Define a set of character that when typed cancel the auto-completion list. void wxStyledTextCtrl::AutoCompStops(const wxString& characterSet) { - SendMsg(2105, 0, (long)(const char*)wx2stc(characterSet)); + SendMsg(2105, 0, (sptr_t)(const char*)wx2stc(characterSet)); } // Change the separator character in the string setting up an auto-completion list. @@ -1083,7 +1083,7 @@ int wxStyledTextCtrl::AutoCompGetSeparator() const // Select the item in the auto-completion list that starts with a string. void wxStyledTextCtrl::AutoCompSelect(const wxString& text) { - SendMsg(2108, 0, (long)(const char*)wx2stc(text)); + SendMsg(2108, 0, (sptr_t)(const char*)wx2stc(text)); } // Should the auto-completion list be cancelled if the user backspaces to a @@ -1103,7 +1103,7 @@ bool wxStyledTextCtrl::AutoCompGetCancelAtStart() const // choose the selected item. void wxStyledTextCtrl::AutoCompSetFillUps(const wxString& characterSet) { - SendMsg(2112, 0, (long)(const char*)wx2stc(characterSet)); + SendMsg(2112, 0, (sptr_t)(const char*)wx2stc(characterSet)); } // Should a single item auto-completion list automatically choose the item. @@ -1133,7 +1133,7 @@ bool wxStyledTextCtrl::AutoCompGetIgnoreCase() const // Display a list of strings and send notification when user chooses one. void wxStyledTextCtrl::UserListShow(int listType, const wxString& itemList) { - SendMsg(2117, listType, (long)(const char*)wx2stc(itemList)); + SendMsg(2117, listType, (sptr_t)(const char*)wx2stc(itemList)); } // Set whether or not autocompletion is hidden automatically when nothing matches. @@ -1174,7 +1174,7 @@ void wxStyledTextCtrl::RegisterImage(int type, const wxBitmap& bmp) { char* buff = new char[len+1]; strm.CopyTo(buff, len); buff[len] = 0; - SendMsg(2405, type, (long)buff); + SendMsg(2405, type, (sptr_t)buff); delete [] buff; } @@ -1399,7 +1399,7 @@ int wxStyledTextCtrl::FindText(int minPos, int maxPos, wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text); ft.lpstrText = (char*)(const char*)buf; - return SendMsg(2150, flags, (long)&ft); + return SendMsg(2150, flags, (sptr_t)&ft); } // On Windows, will draw the document into a display context such as a printer. @@ -1430,7 +1430,7 @@ int wxStyledTextCtrl::FindText(int minPos, int maxPos, fr.chrg.cpMin = startPos; fr.chrg.cpMax = endPos; - return SendMsg(2151, doDraw, (long)&fr); + return SendMsg(2151, doDraw, (sptr_t)&fr); } // Retrieve the display line at the top of the display. @@ -1446,7 +1446,7 @@ wxString wxStyledTextCtrl::GetLine(int line) const { wxMemoryBuffer mbuf(len+1); char* buf = (char*)mbuf.GetWriteBuf(len+1); - SendMsg(2153, line, (long)buf); + SendMsg(2153, line, (sptr_t)buf); mbuf.UngetWriteBuf(len); mbuf.AppendByte(0); return stc2wx(buf); @@ -1488,16 +1488,10 @@ bool wxStyledTextCtrl::GetModify() const return SendMsg(2159, 0, 0) != 0; } -// Select a range of text. -void wxStyledTextCtrl::SetSelection(int start, int end) -{ - SendMsg(2160, start, end); -} - // Retrieve the selected text. wxString wxStyledTextCtrl::GetSelectedText() { - int start; - int end; + long start; + long end; GetSelection(&start, &end); int len = end - start; @@ -1505,7 +1499,7 @@ wxString wxStyledTextCtrl::GetSelectedText() { wxMemoryBuffer mbuf(len+2); char* buf = (char*)mbuf.GetWriteBuf(len+1); - SendMsg(2161, 0, (long)buf); + SendMsg(2161, 0, (sptr_t)buf); mbuf.UngetWriteBuf(len); mbuf.AppendByte(0); return stc2wx(buf); @@ -1526,7 +1520,7 @@ wxString wxStyledTextCtrl::GetTextRange(int startPos, int endPos) { tr.lpstrText = buf; tr.chrg.cpMin = startPos; tr.chrg.cpMax = endPos; - SendMsg(2162, 0, (long)&tr); + SendMsg(2162, 0, (sptr_t)&tr); mbuf.UngetWriteBuf(len); mbuf.AppendByte(0); return stc2wx(buf); @@ -1565,7 +1559,7 @@ void wxStyledTextCtrl::EnsureCaretVisible() // Replace the selected text with the argument text. void wxStyledTextCtrl::ReplaceSelection(const wxString& text) { - SendMsg(2170, 0, (long)(const char*)wx2stc(text)); + SendMsg(2170, 0, (sptr_t)(const char*)wx2stc(text)); } // Set to read only or read write. @@ -1575,7 +1569,7 @@ void wxStyledTextCtrl::SetReadOnly(bool readOnly) } // Will a paste succeed? -bool wxStyledTextCtrl::CanPaste() +bool wxStyledTextCtrl::CanPaste() const { return SendMsg(2173, 0, 0) != 0; } @@ -1625,7 +1619,7 @@ void wxStyledTextCtrl::Clear() // Replace the contents of the document with the argument text. void wxStyledTextCtrl::SetText(const wxString& text) { - SendMsg(2181, 0, (long)(const char*)wx2stc(text)); + SendMsg(2181, 0, (sptr_t)(const char*)wx2stc(text)); } // Retrieve all the text in the document. @@ -1633,7 +1627,7 @@ wxString wxStyledTextCtrl::GetText() const { int len = GetTextLength(); wxMemoryBuffer mbuf(len+1); // leave room for the null... char* buf = (char*)mbuf.GetWriteBuf(len+1); - SendMsg(2182, len+1, (long)buf); + SendMsg(2182, len+1, (sptr_t)buf); mbuf.UngetWriteBuf(len); mbuf.AppendByte(0); return stc2wx(buf); @@ -1701,7 +1695,7 @@ int wxStyledTextCtrl::GetTargetEnd() const int wxStyledTextCtrl::ReplaceTarget(const wxString& text) { wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text); - return SendMsg(2194, strlen(buf), (long)(const char*)buf); + return SendMsg(2194, strlen(buf), (sptr_t)(const char*)buf); } // Replace the target text with the argument text after \d processing. @@ -1713,7 +1707,7 @@ int wxStyledTextCtrl::GetTargetEnd() const int wxStyledTextCtrl::ReplaceTargetRE(const wxString& text) { wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text); - return SendMsg(2195, strlen(buf), (long)(const char*)buf); + return SendMsg(2195, strlen(buf), (sptr_t)(const char*)buf); } // Search for a counted string in the target and set the target to the found @@ -1722,7 +1716,7 @@ int wxStyledTextCtrl::GetTargetEnd() const int wxStyledTextCtrl::SearchInTarget(const wxString& text) { wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text); - return SendMsg(2197, strlen(buf), (long)(const char*)buf); + return SendMsg(2197, strlen(buf), (sptr_t)(const char*)buf); } // Set the search flags used by SearchInTarget. @@ -1740,7 +1734,7 @@ int wxStyledTextCtrl::GetSearchFlags() const // Show a call tip containing a definition near position pos. void wxStyledTextCtrl::CallTipShow(int pos, const wxString& definition) { - SendMsg(2200, pos, (long)(const char*)wx2stc(definition)); + SendMsg(2200, pos, (sptr_t)(const char*)wx2stc(definition)); } // Remove the call tip from the screen. @@ -2027,7 +2021,7 @@ bool wxStyledTextCtrl::GetScrollWidthTracking() const // Does not handle tab or control characters. int wxStyledTextCtrl::TextWidth(int style, const wxString& text) { - return SendMsg(2276, style, (long)(const char*)wx2stc(text)); + return SendMsg(2276, style, (sptr_t)(const char*)wx2stc(text)); } // Sets the scroll range so that maximum scroll position has @@ -2066,7 +2060,7 @@ bool wxStyledTextCtrl::GetUseVerticalScrollBar() const // Append a string to the end of the document without changing the selection. void wxStyledTextCtrl::AppendText(const wxString& text) { wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text); - SendMsg(2282, strlen(buf), (long)(const char*)buf); + SendMsg(2282, strlen(buf), (sptr_t)(const char*)buf); } // Is drawing done in two phases with backgrounds drawn before foregrounds? @@ -2507,7 +2501,7 @@ void* wxStyledTextCtrl::GetDocPointer() { // Change the document object used. void wxStyledTextCtrl::SetDocPointer(void* docPointer) { - SendMsg(2358, 0, (long)docPointer); + SendMsg(2358, 0, (sptr_t)docPointer); } // Set which document modification events are sent to the container. @@ -2565,14 +2559,14 @@ void wxStyledTextCtrl::SearchAnchor() // Does not ensure the selection is visible. int wxStyledTextCtrl::SearchNext(int flags, const wxString& text) { - return SendMsg(2367, flags, (long)(const char*)wx2stc(text)); + return SendMsg(2367, flags, (sptr_t)(const char*)wx2stc(text)); } // Find some text starting at the search anchor and moving backwards. // Does not ensure the selection is visible. int wxStyledTextCtrl::SearchPrev(int flags, const wxString& text) { - return SendMsg(2368, flags, (long)(const char*)wx2stc(text)); + return SendMsg(2368, flags, (sptr_t)(const char*)wx2stc(text)); } // Retrieves the number of lines completely visible. @@ -2615,12 +2609,12 @@ void* wxStyledTextCtrl::CreateDocument() { // Extend life of document. void wxStyledTextCtrl::AddRefDocument(void* docPointer) { - SendMsg(2376, 0, (long)docPointer); + SendMsg(2376, 0, (sptr_t)docPointer); } // Release a reference to the document, deleting document if it fades to black. void wxStyledTextCtrl::ReleaseDocument(void* docPointer) { - SendMsg(2377, 0, (long)docPointer); + SendMsg(2377, 0, (sptr_t)docPointer); } // Get which document modification events are sent to the container. @@ -2868,7 +2862,7 @@ void wxStyledTextCtrl::CopyRange(int start, int end) // Copy argument text to the clipboard. void wxStyledTextCtrl::CopyText(int length, const wxString& text) { - SendMsg(2420, length, (long)(const char*)wx2stc(text)); + SendMsg(2420, length, (sptr_t)(const char*)wx2stc(text)); } // Set the selection mode to stream (SC_SEL_STREAM) or rectangular (SC_SEL_RECTANGLE) or @@ -3004,7 +2998,7 @@ void wxStyledTextCtrl::WordRightEndExtend() // Should be called after SetWordChars. void wxStyledTextCtrl::SetWhitespaceChars(const wxString& characters) { - SendMsg(2443, 0, (long)(const char*)wx2stc(characters)); + SendMsg(2443, 0, (sptr_t)(const char*)wx2stc(characters)); } // Reset the set of characters for whitespace and word characters to the defaults. @@ -3197,29 +3191,29 @@ void wxStyledTextCtrl::Colourise(int start, int end) // Set up a value that may be used by a lexer for some optional feature. void wxStyledTextCtrl::SetProperty(const wxString& key, const wxString& value) { - SendMsg(4004, (long)(const char*)wx2stc(key), (long)(const char*)wx2stc(value)); + SendMsg(4004, (sptr_t)(const char*)wx2stc(key), (sptr_t)(const char*)wx2stc(value)); } // Set up the key words used by the lexer. void wxStyledTextCtrl::SetKeyWords(int keywordSet, const wxString& keyWords) { - SendMsg(4005, keywordSet, (long)(const char*)wx2stc(keyWords)); + SendMsg(4005, keywordSet, (sptr_t)(const char*)wx2stc(keyWords)); } // Set the lexing language of the document based on string name. void wxStyledTextCtrl::SetLexerLanguage(const wxString& language) { - SendMsg(4006, 0, (long)(const char*)wx2stc(language)); + SendMsg(4006, 0, (sptr_t)(const char*)wx2stc(language)); } // Retrieve a 'property' value previously set with SetProperty. wxString wxStyledTextCtrl::GetProperty(const wxString& key) { - int len = SendMsg(SCI_GETPROPERTY, (long)(const char*)wx2stc(key), 0); + int len = SendMsg(SCI_GETPROPERTY, (sptr_t)(const char*)wx2stc(key), 0); if (!len) return wxEmptyString; wxMemoryBuffer mbuf(len+1); char* buf = (char*)mbuf.GetWriteBuf(len+1); - SendMsg(4008, (long)(const char*)wx2stc(key), (long)buf); + SendMsg(4008, (uptr_t)(const char*)wx2stc(key), (sptr_t)buf); mbuf.UngetWriteBuf(len); mbuf.AppendByte(0); return stc2wx(buf); @@ -3228,12 +3222,12 @@ wxString wxStyledTextCtrl::GetProperty(const wxString& key) { // Retrieve a 'property' value previously set with SetProperty, // with '$()' variable replacement on returned buffer. wxString wxStyledTextCtrl::GetPropertyExpanded(const wxString& key) { - int len = SendMsg(SCI_GETPROPERTYEXPANDED, (long)(const char*)wx2stc(key), 0); + int len = SendMsg(SCI_GETPROPERTYEXPANDED, (uptr_t)(const char*)wx2stc(key), 0); if (!len) return wxEmptyString; wxMemoryBuffer mbuf(len+1); char* buf = (char*)mbuf.GetWriteBuf(len+1); - SendMsg(4009, (long)(const char*)wx2stc(key), (long)buf); + SendMsg(4009, (uptr_t)(const char*)wx2stc(key), (sptr_t)buf); mbuf.UngetWriteBuf(len); mbuf.AppendByte(0); return stc2wx(buf); @@ -3243,7 +3237,7 @@ wxString wxStyledTextCtrl::GetPropertyExpanded(const wxString& key) { // interpreted as an int AFTER any '$()' variable replacement. int wxStyledTextCtrl::GetPropertyInt(const wxString& key) const { - return SendMsg(4010, (long)(const char*)wx2stc(key), 0); + return SendMsg(4010, (sptr_t)(const char*)wx2stc(key), 0); } // Retrieve the number of bits the current lexer needs for styling. @@ -3486,15 +3480,6 @@ void wxStyledTextCtrl::SetMargins(int left, int right) { } -// Retrieve the start and end positions of the current selection. -void wxStyledTextCtrl::GetSelection(int* startPos, int* endPos) { - if (startPos != NULL) - *startPos = SendMsg(SCI_GETSELECTIONSTART); - if (endPos != NULL) - *endPos = SendMsg(SCI_GETSELECTIONEND); -} - - // Retrieve the point in the window where a position is displayed. wxPoint wxStyledTextCtrl::PointFromPosition(int pos) { int x = SendMsg(SCI_POINTXFROMPOSITION, 0, pos); @@ -3515,74 +3500,57 @@ void wxStyledTextCtrl::ScrollToColumn(int column) { #if wxUSE_TEXTCTRL -bool wxStyledTextCtrl::DoSaveFile(const wxString& filename, int WXUNUSED(fileType)) +bool wxStyledTextCtrl::DoSaveFile(const wxString& filename, int fileType) +{ + bool ok = wxTextAreaBase::DoSaveFile(filename, fileType); #else bool wxStyledTextCtrl::SaveFile(const wxString& filename) -#endif { - wxFile file(filename, wxFile::write); - - if (!file.IsOpened()) - return false; - - bool success = file.Write(GetText(), *wxConvCurrent); - - if (success) +#if wxUSE_FFILE + wxFFile file(filename, wxT("w")); + bool ok = file.IsOpened() && file.Write(GetValue(), *wxConvCurrent); +#else + bool ok = false; +#endif // wxUSE_FFILE +#endif + if (ok) + { SetSavePoint(); - - return success; + } + return ok; } #if wxUSE_TEXTCTRL -bool wxStyledTextCtrl::DoLoadFile(const wxString& filename, int WXUNUSED(fileType)) +bool wxStyledTextCtrl::DoLoadFile(const wxString& filename, int fileType) +{ + bool ok = wxTextAreaBase::DoLoadFile(filename, fileType); #else bool wxStyledTextCtrl::LoadFile(const wxString& filename) -#endif { - bool success = false; - wxFile file(filename, wxFile::read); - - if (file.IsOpened()) +#if wxUSE_FFILE + wxFFile file(filename); + bool ok = file.IsOpened(); + if (ok) { - wxString contents; - // get the file size (assume it is not huge file...) - ssize_t len = (ssize_t)file.Length(); - - if (len > 0) + wxString text; + ok = file.ReadAll(&text, *wxConvCurrent); + if (ok) { -#if wxUSE_UNICODE - wxMemoryBuffer buffer(len+1); - success = (file.Read(buffer.GetData(), len) == len); - if (success) { - ((char*)buffer.GetData())[len] = 0; - contents = wxString(buffer, *wxConvCurrent, len); - } -#else - wxString buffer; - success = (file.Read(wxStringBuffer(buffer, len), len) == len); - contents = buffer; -#endif - } - else - { - if (len == 0) - success = true; // empty file is ok - else - success = false; // len == wxInvalidOffset - } - - if (success) - { - SetText(contents); - EmptyUndoBuffer(); - SetSavePoint(); + SetValue(text); } } - - return success; +#else + bool ok = false; +#endif // wxUSE_FFILE +#endif + if (ok) + { + EmptyUndoBuffer(); + SetSavePoint(); + } + return ok; } - #if wxUSE_DRAG_AND_DROP wxDragResult wxStyledTextCtrl::DoDragOver(wxCoord x, wxCoord y, wxDragResult def) { return m_swx->DoDragOver(x, y, def); @@ -3609,12 +3577,12 @@ bool wxStyledTextCtrl::GetUseAntiAliasing() { void wxStyledTextCtrl::AddTextRaw(const char* text) { - SendMsg(SCI_ADDTEXT, strlen(text), (long)text); + SendMsg(SCI_ADDTEXT, strlen(text), (sptr_t)text); } void wxStyledTextCtrl::InsertTextRaw(int pos, const char* text) { - SendMsg(SCI_INSERTTEXT, pos, (long)text); + SendMsg(SCI_INSERTTEXT, pos, (sptr_t)text); } wxCharBuffer wxStyledTextCtrl::GetCurLineRaw(int* linePos) @@ -3627,7 +3595,7 @@ wxCharBuffer wxStyledTextCtrl::GetCurLineRaw(int* linePos) } wxCharBuffer buf(len); - int pos = SendMsg(SCI_GETCURLINE, len, (long)buf.data()); + int pos = SendMsg(SCI_GETCURLINE, len, (sptr_t)buf.data()); if (linePos) *linePos = pos; return buf; } @@ -3641,14 +3609,14 @@ wxCharBuffer wxStyledTextCtrl::GetLineRaw(int line) } wxCharBuffer buf(len); - SendMsg(SCI_GETLINE, line, (long)buf.data()); + SendMsg(SCI_GETLINE, line, (sptr_t)buf.data()); return buf; } wxCharBuffer wxStyledTextCtrl::GetSelectedTextRaw() { - int start; - int end; + long start; + long end; GetSelection(&start, &end); int len = end - start; @@ -3658,7 +3626,7 @@ wxCharBuffer wxStyledTextCtrl::GetSelectedTextRaw() } wxCharBuffer buf(len); - SendMsg(SCI_GETSELTEXT, 0, (long)buf.data()); + SendMsg(SCI_GETSELTEXT, 0, (sptr_t)buf.data()); return buf; } @@ -3680,26 +3648,26 @@ wxCharBuffer wxStyledTextCtrl::GetTextRangeRaw(int startPos, int endPos) tr.lpstrText = buf.data(); tr.chrg.cpMin = startPos; tr.chrg.cpMax = endPos; - SendMsg(SCI_GETTEXTRANGE, 0, (long)&tr); + SendMsg(SCI_GETTEXTRANGE, 0, (sptr_t)&tr); return buf; } void wxStyledTextCtrl::SetTextRaw(const char* text) { - SendMsg(SCI_SETTEXT, 0, (long)text); + SendMsg(SCI_SETTEXT, 0, (sptr_t)text); } wxCharBuffer wxStyledTextCtrl::GetTextRaw() { int len = GetTextLength(); wxCharBuffer buf(len); // adds 1 for NUL automatically - SendMsg(SCI_GETTEXT, len + 1, (long)buf.data()); + SendMsg(SCI_GETTEXT, len + 1, (sptr_t)buf.data()); return buf; } void wxStyledTextCtrl::AppendTextRaw(const char* text) { - SendMsg(SCI_APPENDTEXT, strlen(text), (long)text); + SendMsg(SCI_APPENDTEXT, strlen(text), (sptr_t)text); }