#include "wx/ffile.h"
+extern WXDLLEXPORT_DATA(const char) wxTextCtrlNameStr[] = "text";
+
// ----------------------------------------------------------------------------
// macros
// ----------------------------------------------------------------------------
{
Init();
- if (m_colText.Ok()) m_flags |= wxTEXT_ATTR_TEXT_COLOUR;
- if (m_colBack.Ok()) m_flags |= wxTEXT_ATTR_BACKGROUND_COLOUR;
+ if (m_colText.IsOk()) m_flags |= wxTEXT_ATTR_TEXT_COLOUR;
+ if (m_colBack.IsOk()) m_flags |= wxTEXT_ATTR_BACKGROUND_COLOUR;
if (alignment != wxTEXT_ALIGNMENT_DEFAULT)
m_flags |= wxTEXT_ATTR_ALIGNMENT;
m_fontStyle = wxFONTSTYLE_NORMAL;
m_fontWeight = wxFONTWEIGHT_NORMAL;
m_fontUnderlined = false;
+ m_fontStrikethrough = false;
m_fontEncoding = wxFONTENCODING_DEFAULT;
m_fontFamily = wxFONTFAMILY_DEFAULT;
m_fontStyle = attr.m_fontStyle;
m_fontWeight = attr.m_fontWeight;
m_fontUnderlined = attr.m_fontUnderlined;
+ m_fontStrikethrough = attr.m_fontStrikethrough;
m_fontFaceName = attr.m_fontFaceName;
m_fontEncoding = attr.m_fontEncoding;
m_fontFamily = attr.m_fontFamily;
if (HasFontUnderlined())
underlined = GetFontUnderlined();
+ bool strikethrough = false;
+ if ( HasFontStrikethrough() )
+ strikethrough = GetFontStrikethrough();
+
wxString fontFaceName;
if (HasFontFaceName())
fontFaceName = GetFontFaceName();
fontFamily = GetFontFamily();
wxFont font(fontSize, fontFamily, fontStyle, fontWeight, underlined, fontFaceName, encoding);
+ if ( strikethrough )
+ font.SetStrikethrough( true );
return font;
}
// Get attributes from font.
bool wxTextAttr::GetFontAttributes(const wxFont& font, int flags)
{
- if (!font.Ok())
+ if (!font.IsOk())
return false;
if (flags & wxTEXT_ATTR_FONT_SIZE)
if (flags & wxTEXT_ATTR_FONT_UNDERLINE)
m_fontUnderlined = font.GetUnderlined();
+ if (flags & wxTEXT_ATTR_FONT_STRIKETHROUGH)
+ m_fontStrikethrough = font.GetStrikethrough();
+
if (flags & wxTEXT_ATTR_FONT_FACE)
m_fontFaceName = font.GetFaceName();
destStyle.SetFontUnderlined(style.GetFontUnderlined());
}
+ if (style.HasFontStrikethrough())
+ {
+ if (!(compareWith && compareWith->HasFontStrikethrough() && compareWith->GetFontStrikethrough() == style.GetFontStrikethrough()))
+ destStyle.SetFontStrikethrough(style.GetFontStrikethrough());
+ }
+
if (style.HasFontFaceName())
{
if (!(compareWith && compareWith->HasFontFaceName() && compareWith->GetFontFaceName() == style.GetFontFaceName()))
destStyle.SetFontFamily(style.GetFontFamily());
}
- if (style.GetTextColour().Ok() && style.HasTextColour())
+ if (style.GetTextColour().IsOk() && style.HasTextColour())
{
if (!(compareWith && compareWith->HasTextColour() && compareWith->GetTextColour() == style.GetTextColour()))
destStyle.SetTextColour(style.GetTextColour());
}
- if (style.GetBackgroundColour().Ok() && style.HasBackgroundColour())
+ if (style.GetBackgroundColour().IsOk() && style.HasBackgroundColour())
{
if (!(compareWith && compareWith->HasBackgroundColour() && compareWith->GetBackgroundColour() == style.GetBackgroundColour()))
destStyle.SetBackgroundColour(style.GetBackgroundColour());
if (attr.HasFont())
font = attr.GetFont();
- if ( !font.Ok() )
+ if ( !font.IsOk() )
{
if (attrDef.HasFont())
font = attrDef.GetFont();
- if ( text && !font.Ok() )
+ if ( text && !font.IsOk() )
font = text->GetFont();
}
wxColour colFg = attr.GetTextColour();
- if ( !colFg.Ok() )
+ if ( !colFg.IsOk() )
{
colFg = attrDef.GetTextColour();
- if ( text && !colFg.Ok() )
+ if ( text && !colFg.IsOk() )
colFg = text->GetForegroundColour();
}
wxColour colBg = attr.GetBackgroundColour();
- if ( !colBg.Ok() )
+ if ( !colBg.IsOk() )
{
colBg = attrDef.GetBackgroundColour();
- if ( text && !colBg.Ok() )
+ if ( text && !colBg.IsOk() )
colBg = text->GetBackgroundColour();
}
{
int relevantBitsA = valueA & flags;
int relevantBitsB = valueB & flags;
- return (relevantBitsA != relevantBitsB);
+ return relevantBitsA == relevantBitsB;
}
/// Split into paragraph and character styles
{
SetValue(text);
+ DiscardEdits();
+ m_filename = filename;
+
return true;
}
}
#endif // wxUSE_FFILE
+ wxLogError(_("File couldn't be loaded."));
+
return false;
}
-bool wxTextCtrlBase::DoLoadFile(const wxString& filename, int fileType)
+bool wxTextAreaBase::DoSaveFile(const wxString& filename, int WXUNUSED(fileType))
{
- if ( wxTextAreaBase::DoLoadFile(filename, fileType) )
+#if wxUSE_FFILE
+ wxFFile file(filename, wxT("w"));
+ if ( file.IsOpened() && file.Write(GetValue(), *wxConvCurrent) )
{
- DiscardEdits();
+ // if it worked, save for future calls
m_filename = filename;
+
+ // it's not modified any longer
+ DiscardEdits();
+
return true;
}
- wxLogError(_("File couldn't be loaded."));
- return false;
-}
+#endif // wxUSE_FFILE
-bool wxTextAreaBase::DoSaveFile(const wxString& filename, int WXUNUSED(fileType))
-{
-#if wxUSE_FFILE
- wxFFile file(filename, wxT("w"));
- return file.IsOpened() && file.Write(GetValue(), *wxConvCurrent);
-#else
return false;
-#endif // wxUSE_FFILE
}
bool wxTextAreaBase::SaveFile(const wxString& filename, int fileType)
return DoSaveFile(filenameToUse, fileType);
}
-bool wxTextCtrlBase::DoSaveFile(const wxString& filename, int fileType)
-{
- if ( wxTextAreaBase::DoSaveFile(filename, fileType) )
- {
- // if it worked, save for future calls
- m_filename = filename;
-
- // it's not modified any longer
- DiscardEdits();
-
- return true;
- }
- return false;
-}
-
// ----------------------------------------------------------------------------
// stream-like insertion operator
// ----------------------------------------------------------------------------
bool wxTextCtrlBase::EmulateKeyPress(const wxKeyEvent& event)
{
+ bool handled = false;
// we have a native implementation for Win32 and so don't need this one
#ifndef __WIN32__
wxChar ch = 0;
int keycode = event.GetKeyCode();
+
+ long from, to;
+ GetSelection(&from,&to);
+ long insert = GetInsertionPoint();
+ long last = GetLastPosition();
+
+ // catch arrow left and right
+
switch ( keycode )
{
+ case WXK_LEFT:
+ if ( event.ShiftDown() )
+ SetSelection( (from > 0 ? from - 1 : 0) , to );
+ else
+ {
+ if ( from != to )
+ insert = from;
+ else if ( insert > 0 )
+ insert -= 1;
+ SetInsertionPoint( insert );
+ }
+ handled = true;
+ break;
+ case WXK_RIGHT:
+ if ( event.ShiftDown() )
+ SetSelection( from, (to < last ? to + 1 : last) );
+ else
+ {
+ if ( from != to )
+ insert = to;
+ else if ( insert < last )
+ insert += 1;
+ SetInsertionPoint( insert );
+ }
+ handled = true;
+ break;
case WXK_NUMPAD0:
case WXK_NUMPAD1:
case WXK_NUMPAD2:
const long pos = GetInsertionPoint();
if ( pos < GetLastPosition() )
Remove(pos, pos + 1);
+ handled = true;
}
break;
const long pos = GetInsertionPoint();
if ( pos > 0 )
Remove(pos - 1, pos);
+ handled = true;
}
break;
{
WriteText(ch);
- return true;
+ handled = true;
}
#else // __WIN32__
wxUnusedVar(event);
#endif // !__WIN32__/__WIN32__
- return false;
+ return handled;
}
// do the window-specific processing after processing the update event
return wxTE_HT_UNKNOWN;
}
+wxPoint wxTextAreaBase::PositionToCoords(long pos) const
+{
+ wxCHECK_MSG( IsValidPosition(pos), wxDefaultPosition,
+ wxS("Position argument out of range.") );
+
+ return DoPositionToCoords(pos);
+}
+
+wxPoint wxTextAreaBase::DoPositionToCoords(long WXUNUSED(pos)) const
+{
+ return wxDefaultPosition;
+}
+
#else // !wxUSE_TEXTCTRL
// define this one even if !wxUSE_TEXTCTRL because it is also used by other