#ifndef WX_PRECOMP
#include "wx/textctrl.h"
#include "wx/settings.h"
+#include "wx/brush.h"
+#include "wx/utils.h"
+#include "wx/log.h"
#endif
#if wxUSE_CLIPBOARD
#endif
#include <sys/types.h>
+#ifndef __MWERKS__
#include <sys/stat.h>
+#else
+#include <stat.h>
+#endif
#if defined(__BORLANDC__) && !defined(__WIN32__)
#include <alloc.h>
#else
-#ifndef __GNUWIN32__
+#if !defined(__GNUWIN32__) && !defined(__SALFORDC__)
#include <malloc.h>
#endif
#define farmalloc malloc
#include <string.h>
-#if defined(__WIN95__) && !defined(__GNUWIN32__)
+#if defined(__WIN95__) && !defined(__TWIN32__)
+#define wxUSE_RICHEDIT 1
+#else
+#define wxUSE_RICHEDIT 0
+#endif
+
+#if wxUSE_RICHEDIT && !defined(__GNUWIN32__)
#include <richedit.h>
#endif
msStyle |= ES_PASSWORD;
char *windowClass = "EDIT";
-#if defined(__WIN95__)
+#if wxUSE_RICHEDIT
if ( m_windowStyle & wxTE_MULTILINE )
{
msStyle |= ES_AUTOVSCROLL;
// If we're in Win95, and we want a simple 2D border,
// then make it an EDIT control instead.
-#if defined(__WIN95__)
+#if wxUSE_RICHEDIT
if (m_windowStyle & wxSIMPLE_BORDER)
{
windowClass = "EDIT";
}
#endif
-#if defined(__WIN95__)
+#if wxUSE_RICHEDIT
if (m_isRich)
{
// Have to enable events
SubclassWin(GetHWND());
- if ( parent->GetFont() && parent->GetFont()->Ok() )
+ if ( parent->GetFont().Ok() && parent->GetFont().Ok() )
{
- SetFont(* parent->GetFont());
+ SetFont(parent->GetFont());
}
else
{
#else
#ifdef UNICODE
GetClassNameW((HWND) hWnd, buf, 256);
+#else
+#ifdef __TWIN32__
+ GetClassName((HWND) hWnd, buf, 256);
#else
GetClassNameA((HWND) hWnd, buf, 256);
#endif
+#endif
#endif
wxString str(buf);
int cx; // button font dimensions
int cy;
- wxGetCharSize(GetHWND(), &cx, &cy,GetFont());
+ wxGetCharSize(GetHWND(), &cx, &cy, & this->GetFont());
int control_width, control_height, control_x, control_y;
{
HWND hWnd = (HWND) GetHWND();
#ifdef __WIN32__
-#if defined(__WIN95__)
+#if wxUSE_RICHEDIT
if ( m_isRich)
{
CHARRANGE range;
long wxTextCtrl::GetInsertionPoint(void) const
{
-#if defined(__WIN95__)
+#if wxUSE_RICHEDIT
if (m_isRich)
{
CHARRANGE range;
bool wxTextCtrl::LoadFile(const wxString& file)
{
- if (!FileExists(WXSTRINGCAST file))
+ if (!wxFileExists(WXSTRINGCAST file))
return FALSE;
m_fileName = file;
// positions as signed shorts. Now load in one chunk...
// Note use of 'farmalloc' as in Borland 3.1 'size_t' is 16-bits...
+#ifdef __SALFORDC__
+ struct _stat stat_buf;
+ if (stat((char*) (const char*) file, &stat_buf) < 0)
+ return FALSE;
+#else
struct stat stat_buf;
if (stat(file, &stat_buf) < 0)
return FALSE;
+#endif
+
// char *tmp_buffer = (char*)farmalloc(stat_buf.st_size+1);
// This may need to be a bigger buffer than the file size suggests,
// if it's a UNIX file. Give it an extra 1000 just in case.
// or when "endl" is output (Borland 4.5)
//=========================================================================
// Class declaration using multiple inheritance doesn't work properly for
-// Borland. See note in wb_text.h.
+// Borland. See note in textctrl.h.
#ifndef NO_TEXT_WINDOW_STREAM
int wxTextCtrl::overflow(int c)
{
// Make sure there is a holding area
+ // this is not needed in <iostream> usage as it automagically allocates
+ // it, but does someone want to emulate it for safety's sake?
+#if wxUSE_IOSTREAMH
if ( allocate()==EOF )
{
- wxError("Streambuf allocation failed","Internal error");
+ wxLogError("Streambuf allocation failed");
return EOF;
}
+#endif
// Verify that there are no characters in get area
if ( gptr() && gptr() < egptr() )
{
/* This doesn't seem to be fatal so comment out error message */
// wxError("Put area not opened","Internal error");
- setp( base(), base() );
+
+#if wxUSE_IOSTREAMH
+ setp( base(), base() );
+#else
+ setp( pbase(), pbase() );
+#endif
}
// Determine how many characters have been inserted but no consumed
void wxTextCtrl::OnChar(wxKeyEvent& event)
{
+ // Fix by Marcel Rasche to allow Alt-Ctrl insertion of special characters
+ switch(event.KeyCode())
+ {
+ case '{':
+ case '}':
+ case '[':
+ case ']':
+ case '|':
+ case '~':
+ case '\\':
+ {
+ char c=(char)event.KeyCode();
+ *this << c;
+ }
+ break;
+ }
if ( (event.KeyCode() == WXK_RETURN) && (m_windowStyle & wxPROCESS_ENTER))
{
wxCommandEvent event(wxEVT_COMMAND_TEXT_ENTER, m_windowId);
long wxTextCtrl::MSWGetDlgCode()
{
long lRc = DLGC_WANTCHARS | DLGC_WANTARROWS;
- if ( m_windowStyle & wxPROCESS_ENTER )
+ if ( m_windowStyle & wxTE_PROCESS_ENTER )
lRc |= DLGC_WANTMESSAGE;
else if ( m_windowStyle & wxTE_MULTILINE )
lRc |= DLGC_WANTMESSAGE;
+ // ??
+ if ( m_windowStyle & wxTE_PROCESS_TAB )
+ lRc |= DLGC_WANTTAB;
return lRc;
}
: wxEVT_SET_FOCUS,
m_windowId);
event.SetEventObject( this );
- ProcessEvent(event);
+ GetEventHandler()->ProcessEvent(event);
}
break;
// For Rich Edit controls. Do we need it?
#if 0
-#if defined(__WIN95__)
+#if wxUSE_RICHEDIT
bool wxTextCtrl::MSWNotify(WXWPARAM wParam, WXLPARAM lParam)
{
wxCommandEvent event(0, m_windowId);
event.SetEventObject( this );
event.SetEventType(eventType);
- if ( !ProcessEvent(event) )
+ if ( !GetEventHandler()->ProcessEvent(event) )
return FALSE;
return TRUE;