1. wxTextCtrl compilation fixes for wxGTK and more ugfixes (untested yet)
for wxMSW. Small doc update, too. 2. wxFFile compilation fixes for wxGTK 3. new files added to gtk/Makefile.am git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@3006 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -390,7 +390,7 @@ Pastes text from the clipboard to the text item.
|
|||||||
|
|
||||||
\membersection{wxTextCtrl::PositionToXY}\label{wxtextctrlpositiontoxy}
|
\membersection{wxTextCtrl::PositionToXY}\label{wxtextctrlpositiontoxy}
|
||||||
|
|
||||||
\constfunc{long}{PositionToXY}{\param{long }{pos}, \param{long *}{x}, \param{long *}{y}}
|
\constfunc{bool}{PositionToXY}{\param{long }{pos}, \param{long *}{x}, \param{long *}{y}}
|
||||||
|
|
||||||
Converts given position to a zero-based column, line number pair.
|
Converts given position to a zero-based column, line number pair.
|
||||||
|
|
||||||
@@ -404,7 +404,7 @@ Converts given position to a zero-based column, line number pair.
|
|||||||
|
|
||||||
\wxheading{Return value}
|
\wxheading{Return value}
|
||||||
|
|
||||||
Non-zero on success, zero on failure (most likely due to a too large position
|
TRUE on success, FALSE on failure (most likely due to a too large position
|
||||||
parameter).
|
parameter).
|
||||||
|
|
||||||
\wxheading{See also}
|
\wxheading{See also}
|
||||||
|
@@ -62,10 +62,6 @@ public:
|
|||||||
virtual void Replace(long from, long to, const wxString& value);
|
virtual void Replace(long from, long to, const wxString& value);
|
||||||
virtual void Remove(long from, long to);
|
virtual void Remove(long from, long to);
|
||||||
|
|
||||||
// load/save the controls contents from/to the file
|
|
||||||
virtual bool LoadFile(const wxString& file);
|
|
||||||
virtual bool SaveFile(const wxString& file);
|
|
||||||
|
|
||||||
// clears the dirty flag
|
// clears the dirty flag
|
||||||
virtual void DiscardEdits();
|
virtual void DiscardEdits();
|
||||||
|
|
||||||
@@ -78,7 +74,7 @@ public:
|
|||||||
// considering all its contents as a single strings) and (x, y) coordinates
|
// considering all its contents as a single strings) and (x, y) coordinates
|
||||||
// which represent column and line.
|
// which represent column and line.
|
||||||
virtual long XYToPosition(long x, long y) const;
|
virtual long XYToPosition(long x, long y) const;
|
||||||
virtual void PositionToXY(long pos, long *x, long *y) const;
|
virtual bool PositionToXY(long pos, long *x, long *y) const;
|
||||||
|
|
||||||
virtual void ShowPosition(long pos);
|
virtual void ShowPosition(long pos);
|
||||||
|
|
||||||
@@ -132,6 +128,8 @@ public:
|
|||||||
void ApplyWidgetStyle();
|
void ApplyWidgetStyle();
|
||||||
void CalculateScrollbar();
|
void CalculateScrollbar();
|
||||||
|
|
||||||
|
void SetModified() { m_modified = TRUE; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool m_modified;
|
bool m_modified;
|
||||||
GtkWidget *m_text;
|
GtkWidget *m_text;
|
||||||
|
@@ -62,10 +62,6 @@ public:
|
|||||||
virtual void Replace(long from, long to, const wxString& value);
|
virtual void Replace(long from, long to, const wxString& value);
|
||||||
virtual void Remove(long from, long to);
|
virtual void Remove(long from, long to);
|
||||||
|
|
||||||
// load/save the controls contents from/to the file
|
|
||||||
virtual bool LoadFile(const wxString& file);
|
|
||||||
virtual bool SaveFile(const wxString& file);
|
|
||||||
|
|
||||||
// clears the dirty flag
|
// clears the dirty flag
|
||||||
virtual void DiscardEdits();
|
virtual void DiscardEdits();
|
||||||
|
|
||||||
@@ -78,7 +74,7 @@ public:
|
|||||||
// considering all its contents as a single strings) and (x, y) coordinates
|
// considering all its contents as a single strings) and (x, y) coordinates
|
||||||
// which represent column and line.
|
// which represent column and line.
|
||||||
virtual long XYToPosition(long x, long y) const;
|
virtual long XYToPosition(long x, long y) const;
|
||||||
virtual void PositionToXY(long pos, long *x, long *y) const;
|
virtual bool PositionToXY(long pos, long *x, long *y) const;
|
||||||
|
|
||||||
virtual void ShowPosition(long pos);
|
virtual void ShowPosition(long pos);
|
||||||
|
|
||||||
@@ -132,6 +128,8 @@ public:
|
|||||||
void ApplyWidgetStyle();
|
void ApplyWidgetStyle();
|
||||||
void CalculateScrollbar();
|
void CalculateScrollbar();
|
||||||
|
|
||||||
|
void SetModified() { m_modified = TRUE; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool m_modified;
|
bool m_modified;
|
||||||
GtkWidget *m_text;
|
GtkWidget *m_text;
|
||||||
|
@@ -88,7 +88,7 @@ public:
|
|||||||
// considering all its contents as a single strings) and (x, y) coordinates
|
// considering all its contents as a single strings) and (x, y) coordinates
|
||||||
// which represent column and line.
|
// which represent column and line.
|
||||||
virtual long XYToPosition(long x, long y) const;
|
virtual long XYToPosition(long x, long y) const;
|
||||||
virtual void PositionToXY(long pos, long *x, long *y) const;
|
virtual bool PositionToXY(long pos, long *x, long *y) const;
|
||||||
|
|
||||||
virtual void ShowPosition(long pos);
|
virtual void ShowPosition(long pos);
|
||||||
|
|
||||||
|
@@ -36,6 +36,8 @@
|
|||||||
#endif // wxUSE_STD_IOSTREAM/!wxUSE_STD_IOSTREAM
|
#endif // wxUSE_STD_IOSTREAM/!wxUSE_STD_IOSTREAM
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
class WXDLLEXPORT wxTextCtrl;
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// constants
|
// constants
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@@ -100,7 +102,7 @@ public:
|
|||||||
// considering all its contents as a single strings) and (x, y) coordinates
|
// considering all its contents as a single strings) and (x, y) coordinates
|
||||||
// which represent column and line.
|
// which represent column and line.
|
||||||
virtual long XYToPosition(long x, long y) const = 0;
|
virtual long XYToPosition(long x, long y) const = 0;
|
||||||
virtual void PositionToXY(long pos, long *x, long *y) const = 0;
|
virtual bool PositionToXY(long pos, long *x, long *y) const = 0;
|
||||||
|
|
||||||
virtual void ShowPosition(long pos) = 0;
|
virtual void ShowPosition(long pos) = 0;
|
||||||
|
|
||||||
|
@@ -31,6 +31,8 @@
|
|||||||
#if wxUSE_FILE
|
#if wxUSE_FILE
|
||||||
|
|
||||||
#ifndef WX_PRECOMP
|
#ifndef WX_PRECOMP
|
||||||
|
#include "wx/intl.h"
|
||||||
|
#include "wx/log.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "wx/ffile.h"
|
#include "wx/ffile.h"
|
||||||
|
@@ -21,6 +21,8 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef WX_PRECOMP
|
#ifndef WX_PRECOMP
|
||||||
|
#include "wx/intl.h"
|
||||||
|
#include "wx/log.h"
|
||||||
#include "wx/textctrl.h"
|
#include "wx/textctrl.h"
|
||||||
#endif // WX_PRECOMP
|
#endif // WX_PRECOMP
|
||||||
|
|
||||||
@@ -44,6 +46,10 @@
|
|||||||
|
|
||||||
wxTextCtrlBase::wxTextCtrlBase()
|
wxTextCtrlBase::wxTextCtrlBase()
|
||||||
{
|
{
|
||||||
|
#ifndef NO_TEXT_WINDOW_STREAM
|
||||||
|
if (allocate())
|
||||||
|
setp(base(),ebuf());
|
||||||
|
#endif // NO_TEXT_WINDOW_STREAM
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
@@ -41,6 +41,7 @@ libwx_gtk_la_SOURCES = \
|
|||||||
dynarray.cpp \
|
dynarray.cpp \
|
||||||
dynlib.cpp \
|
dynlib.cpp \
|
||||||
event.cpp \
|
event.cpp \
|
||||||
|
ffile.cpp \
|
||||||
file.cpp \
|
file.cpp \
|
||||||
fileconf.cpp \
|
fileconf.cpp \
|
||||||
filefn.cpp \
|
filefn.cpp \
|
||||||
@@ -88,6 +89,7 @@ libwx_gtk_la_SOURCES = \
|
|||||||
string.cpp \
|
string.cpp \
|
||||||
tbarbase.cpp \
|
tbarbase.cpp \
|
||||||
tbarsmpl.cpp \
|
tbarsmpl.cpp \
|
||||||
|
textcmn.cpp \
|
||||||
textfile.cpp \
|
textfile.cpp \
|
||||||
txtstrm.cpp \
|
txtstrm.cpp \
|
||||||
time.cpp \
|
time.cpp \
|
||||||
|
@@ -94,31 +94,11 @@ BEGIN_EVENT_TABLE(wxTextCtrl, wxControl)
|
|||||||
EVT_UPDATE_UI(wxID_REDO, wxTextCtrl::OnUpdateRedo)
|
EVT_UPDATE_UI(wxID_REDO, wxTextCtrl::OnUpdateRedo)
|
||||||
END_EVENT_TABLE()
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
#if wxUSE_STD_IOSTREAM
|
|
||||||
wxTextCtrl::wxTextCtrl() : streambuf()
|
|
||||||
{
|
|
||||||
if (allocate()) setp(base(),ebuf());
|
|
||||||
|
|
||||||
m_modified = FALSE;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
wxTextCtrl::wxTextCtrl()
|
wxTextCtrl::wxTextCtrl()
|
||||||
{
|
{
|
||||||
m_modified = FALSE;
|
m_modified = FALSE;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
#if wxUSE_STD_IOSTREAM
|
|
||||||
wxTextCtrl::wxTextCtrl( wxWindow *parent, wxWindowID id, const wxString &value,
|
|
||||||
const wxPoint &pos, const wxSize &size,
|
|
||||||
int style, const wxValidator& validator, const wxString &name ) : streambuf()
|
|
||||||
{
|
|
||||||
if (allocate()) setp(base(),ebuf());
|
|
||||||
|
|
||||||
m_modified = FALSE;
|
|
||||||
Create( parent, id, value, pos, size, style, validator, name );
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
wxTextCtrl::wxTextCtrl( wxWindow *parent, wxWindowID id, const wxString &value,
|
wxTextCtrl::wxTextCtrl( wxWindow *parent, wxWindowID id, const wxString &value,
|
||||||
const wxPoint &pos, const wxSize &size,
|
const wxPoint &pos, const wxSize &size,
|
||||||
int style, const wxValidator& validator, const wxString &name )
|
int style, const wxValidator& validator, const wxString &name )
|
||||||
@@ -126,7 +106,6 @@ wxTextCtrl::wxTextCtrl( wxWindow *parent, wxWindowID id, const wxString &value,
|
|||||||
m_modified = FALSE;
|
m_modified = FALSE;
|
||||||
Create( parent, id, value, pos, size, style, validator, name );
|
Create( parent, id, value, pos, size, style, validator, name );
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
bool wxTextCtrl::Create( wxWindow *parent, wxWindowID id, const wxString &value,
|
bool wxTextCtrl::Create( wxWindow *parent, wxWindowID id, const wxString &value,
|
||||||
const wxPoint &pos, const wxSize &size,
|
const wxPoint &pos, const wxSize &size,
|
||||||
@@ -438,108 +417,6 @@ void wxTextCtrl::AppendText( const wxString &text )
|
|||||||
GTK_SIGNAL_FUNC(gtk_text_changed_callback), (gpointer)this);
|
GTK_SIGNAL_FUNC(gtk_text_changed_callback), (gpointer)this);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxTextCtrl::LoadFile( const wxString &file )
|
|
||||||
{
|
|
||||||
wxCHECK_MSG( m_text != NULL, FALSE, _T("invalid text ctrl") );
|
|
||||||
|
|
||||||
if (!wxFileExists(file)) return FALSE;
|
|
||||||
|
|
||||||
Clear();
|
|
||||||
|
|
||||||
FILE *fp = (FILE*) NULL;
|
|
||||||
struct stat statb;
|
|
||||||
|
|
||||||
if ((stat (FNSTRINGCAST file.fn_str(), &statb) == -1) || (statb.st_mode & S_IFMT) != S_IFREG ||
|
|
||||||
!(fp = fopen (FNSTRINGCAST file.fn_str(), "r")))
|
|
||||||
{
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
gint len = statb.st_size;
|
|
||||||
char *text;
|
|
||||||
if (!(text = (char*)malloc ((unsigned) (len + 1))))
|
|
||||||
{
|
|
||||||
fclose (fp);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
if (fread (text, sizeof (char), len, fp) != (size_t) len)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
fclose (fp);
|
|
||||||
|
|
||||||
text[len] = 0;
|
|
||||||
|
|
||||||
gtk_signal_disconnect_by_func( GTK_OBJECT(m_text),
|
|
||||||
GTK_SIGNAL_FUNC(gtk_text_changed_callback), (gpointer)this);
|
|
||||||
|
|
||||||
if (m_windowStyle & wxTE_MULTILINE)
|
|
||||||
{
|
|
||||||
gint pos = 0;
|
|
||||||
gtk_editable_insert_text( GTK_EDITABLE(m_text), text, len, &pos );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
gtk_entry_set_text( GTK_ENTRY(m_text), text );
|
|
||||||
}
|
|
||||||
|
|
||||||
gtk_signal_connect( GTK_OBJECT(m_text), "changed",
|
|
||||||
GTK_SIGNAL_FUNC(gtk_text_changed_callback), (gpointer)this);
|
|
||||||
|
|
||||||
free (text);
|
|
||||||
m_modified = FALSE;
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool wxTextCtrl::SaveFile( const wxString &file )
|
|
||||||
{
|
|
||||||
wxCHECK_MSG( m_text != NULL, FALSE, _T("invalid text ctrl") );
|
|
||||||
|
|
||||||
if (file == _T("")) return FALSE;
|
|
||||||
|
|
||||||
FILE *fp;
|
|
||||||
|
|
||||||
if (!(fp = fopen (FNSTRINGCAST file.fn_str(), "w")))
|
|
||||||
{
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
char *text = (char*) NULL;
|
|
||||||
gint len = 0;
|
|
||||||
|
|
||||||
if (m_windowStyle & wxTE_MULTILINE)
|
|
||||||
{
|
|
||||||
len = gtk_text_get_length( GTK_TEXT(m_text) );
|
|
||||||
text = gtk_editable_get_chars( GTK_EDITABLE(m_text), 0, len );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
text = gtk_entry_get_text( GTK_ENTRY(m_text) );
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fwrite (text, sizeof (char), len, fp) != (size_t) len)
|
|
||||||
{
|
|
||||||
// Did not write whole file
|
|
||||||
}
|
|
||||||
|
|
||||||
// Make sure newline terminates the file
|
|
||||||
if (text[len - 1] != '\n')
|
|
||||||
fputc ('\n', fp);
|
|
||||||
|
|
||||||
fclose (fp);
|
|
||||||
|
|
||||||
if (m_windowStyle & wxTE_MULTILINE) g_free( text );
|
|
||||||
|
|
||||||
m_modified = FALSE;
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
wxString wxTextCtrl::GetLineText( long lineNo ) const
|
wxString wxTextCtrl::GetLineText( long lineNo ) const
|
||||||
{
|
{
|
||||||
if (m_windowStyle & wxTE_MULTILINE)
|
if (m_windowStyle & wxTE_MULTILINE)
|
||||||
@@ -580,7 +457,7 @@ void wxTextCtrl::OnDropFiles( wxDropFilesEvent &WXUNUSED(event) )
|
|||||||
wxFAIL_MSG( _T("wxTextCtrl::OnDropFiles not implemented") );
|
wxFAIL_MSG( _T("wxTextCtrl::OnDropFiles not implemented") );
|
||||||
}
|
}
|
||||||
|
|
||||||
long wxTextCtrl::PositionToXY(long pos, long *x, long *y ) const
|
bool wxTextCtrl::PositionToXY(long pos, long *x, long *y ) const
|
||||||
{
|
{
|
||||||
if ( m_windowStyle & wxTE_MULTILINE )
|
if ( m_windowStyle & wxTE_MULTILINE )
|
||||||
{
|
{
|
||||||
@@ -727,6 +604,11 @@ void wxTextCtrl::SetEditable( bool editable )
|
|||||||
gtk_entry_set_editable( GTK_ENTRY(m_text), editable );
|
gtk_entry_set_editable( GTK_ENTRY(m_text), editable );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void wxTextCtrl::DiscardEdits()
|
||||||
|
{
|
||||||
|
m_modified = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
void wxTextCtrl::SetSelection( long from, long to )
|
void wxTextCtrl::SetSelection( long from, long to )
|
||||||
{
|
{
|
||||||
wxCHECK_RET( m_text != NULL, _T("invalid text ctrl") );
|
wxCHECK_RET( m_text != NULL, _T("invalid text ctrl") );
|
||||||
@@ -913,6 +795,11 @@ bool wxTextCtrl::IsEditable() const
|
|||||||
return GTK_EDITABLE(m_text)->editable;
|
return GTK_EDITABLE(m_text)->editable;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool wxTextCtrl::IsModified() const
|
||||||
|
{
|
||||||
|
return m_modified;
|
||||||
|
}
|
||||||
|
|
||||||
void wxTextCtrl::Clear()
|
void wxTextCtrl::Clear()
|
||||||
{
|
{
|
||||||
SetValue( _T("") );
|
SetValue( _T("") );
|
||||||
|
@@ -41,6 +41,7 @@ libwx_gtk_la_SOURCES = \
|
|||||||
dynarray.cpp \
|
dynarray.cpp \
|
||||||
dynlib.cpp \
|
dynlib.cpp \
|
||||||
event.cpp \
|
event.cpp \
|
||||||
|
ffile.cpp \
|
||||||
file.cpp \
|
file.cpp \
|
||||||
fileconf.cpp \
|
fileconf.cpp \
|
||||||
filefn.cpp \
|
filefn.cpp \
|
||||||
@@ -88,6 +89,7 @@ libwx_gtk_la_SOURCES = \
|
|||||||
string.cpp \
|
string.cpp \
|
||||||
tbarbase.cpp \
|
tbarbase.cpp \
|
||||||
tbarsmpl.cpp \
|
tbarsmpl.cpp \
|
||||||
|
textcmn.cpp \
|
||||||
textfile.cpp \
|
textfile.cpp \
|
||||||
txtstrm.cpp \
|
txtstrm.cpp \
|
||||||
time.cpp \
|
time.cpp \
|
||||||
|
@@ -94,31 +94,11 @@ BEGIN_EVENT_TABLE(wxTextCtrl, wxControl)
|
|||||||
EVT_UPDATE_UI(wxID_REDO, wxTextCtrl::OnUpdateRedo)
|
EVT_UPDATE_UI(wxID_REDO, wxTextCtrl::OnUpdateRedo)
|
||||||
END_EVENT_TABLE()
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
#if wxUSE_STD_IOSTREAM
|
|
||||||
wxTextCtrl::wxTextCtrl() : streambuf()
|
|
||||||
{
|
|
||||||
if (allocate()) setp(base(),ebuf());
|
|
||||||
|
|
||||||
m_modified = FALSE;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
wxTextCtrl::wxTextCtrl()
|
wxTextCtrl::wxTextCtrl()
|
||||||
{
|
{
|
||||||
m_modified = FALSE;
|
m_modified = FALSE;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
#if wxUSE_STD_IOSTREAM
|
|
||||||
wxTextCtrl::wxTextCtrl( wxWindow *parent, wxWindowID id, const wxString &value,
|
|
||||||
const wxPoint &pos, const wxSize &size,
|
|
||||||
int style, const wxValidator& validator, const wxString &name ) : streambuf()
|
|
||||||
{
|
|
||||||
if (allocate()) setp(base(),ebuf());
|
|
||||||
|
|
||||||
m_modified = FALSE;
|
|
||||||
Create( parent, id, value, pos, size, style, validator, name );
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
wxTextCtrl::wxTextCtrl( wxWindow *parent, wxWindowID id, const wxString &value,
|
wxTextCtrl::wxTextCtrl( wxWindow *parent, wxWindowID id, const wxString &value,
|
||||||
const wxPoint &pos, const wxSize &size,
|
const wxPoint &pos, const wxSize &size,
|
||||||
int style, const wxValidator& validator, const wxString &name )
|
int style, const wxValidator& validator, const wxString &name )
|
||||||
@@ -126,7 +106,6 @@ wxTextCtrl::wxTextCtrl( wxWindow *parent, wxWindowID id, const wxString &value,
|
|||||||
m_modified = FALSE;
|
m_modified = FALSE;
|
||||||
Create( parent, id, value, pos, size, style, validator, name );
|
Create( parent, id, value, pos, size, style, validator, name );
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
bool wxTextCtrl::Create( wxWindow *parent, wxWindowID id, const wxString &value,
|
bool wxTextCtrl::Create( wxWindow *parent, wxWindowID id, const wxString &value,
|
||||||
const wxPoint &pos, const wxSize &size,
|
const wxPoint &pos, const wxSize &size,
|
||||||
@@ -438,108 +417,6 @@ void wxTextCtrl::AppendText( const wxString &text )
|
|||||||
GTK_SIGNAL_FUNC(gtk_text_changed_callback), (gpointer)this);
|
GTK_SIGNAL_FUNC(gtk_text_changed_callback), (gpointer)this);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxTextCtrl::LoadFile( const wxString &file )
|
|
||||||
{
|
|
||||||
wxCHECK_MSG( m_text != NULL, FALSE, _T("invalid text ctrl") );
|
|
||||||
|
|
||||||
if (!wxFileExists(file)) return FALSE;
|
|
||||||
|
|
||||||
Clear();
|
|
||||||
|
|
||||||
FILE *fp = (FILE*) NULL;
|
|
||||||
struct stat statb;
|
|
||||||
|
|
||||||
if ((stat (FNSTRINGCAST file.fn_str(), &statb) == -1) || (statb.st_mode & S_IFMT) != S_IFREG ||
|
|
||||||
!(fp = fopen (FNSTRINGCAST file.fn_str(), "r")))
|
|
||||||
{
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
gint len = statb.st_size;
|
|
||||||
char *text;
|
|
||||||
if (!(text = (char*)malloc ((unsigned) (len + 1))))
|
|
||||||
{
|
|
||||||
fclose (fp);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
if (fread (text, sizeof (char), len, fp) != (size_t) len)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
fclose (fp);
|
|
||||||
|
|
||||||
text[len] = 0;
|
|
||||||
|
|
||||||
gtk_signal_disconnect_by_func( GTK_OBJECT(m_text),
|
|
||||||
GTK_SIGNAL_FUNC(gtk_text_changed_callback), (gpointer)this);
|
|
||||||
|
|
||||||
if (m_windowStyle & wxTE_MULTILINE)
|
|
||||||
{
|
|
||||||
gint pos = 0;
|
|
||||||
gtk_editable_insert_text( GTK_EDITABLE(m_text), text, len, &pos );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
gtk_entry_set_text( GTK_ENTRY(m_text), text );
|
|
||||||
}
|
|
||||||
|
|
||||||
gtk_signal_connect( GTK_OBJECT(m_text), "changed",
|
|
||||||
GTK_SIGNAL_FUNC(gtk_text_changed_callback), (gpointer)this);
|
|
||||||
|
|
||||||
free (text);
|
|
||||||
m_modified = FALSE;
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool wxTextCtrl::SaveFile( const wxString &file )
|
|
||||||
{
|
|
||||||
wxCHECK_MSG( m_text != NULL, FALSE, _T("invalid text ctrl") );
|
|
||||||
|
|
||||||
if (file == _T("")) return FALSE;
|
|
||||||
|
|
||||||
FILE *fp;
|
|
||||||
|
|
||||||
if (!(fp = fopen (FNSTRINGCAST file.fn_str(), "w")))
|
|
||||||
{
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
char *text = (char*) NULL;
|
|
||||||
gint len = 0;
|
|
||||||
|
|
||||||
if (m_windowStyle & wxTE_MULTILINE)
|
|
||||||
{
|
|
||||||
len = gtk_text_get_length( GTK_TEXT(m_text) );
|
|
||||||
text = gtk_editable_get_chars( GTK_EDITABLE(m_text), 0, len );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
text = gtk_entry_get_text( GTK_ENTRY(m_text) );
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fwrite (text, sizeof (char), len, fp) != (size_t) len)
|
|
||||||
{
|
|
||||||
// Did not write whole file
|
|
||||||
}
|
|
||||||
|
|
||||||
// Make sure newline terminates the file
|
|
||||||
if (text[len - 1] != '\n')
|
|
||||||
fputc ('\n', fp);
|
|
||||||
|
|
||||||
fclose (fp);
|
|
||||||
|
|
||||||
if (m_windowStyle & wxTE_MULTILINE) g_free( text );
|
|
||||||
|
|
||||||
m_modified = FALSE;
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
wxString wxTextCtrl::GetLineText( long lineNo ) const
|
wxString wxTextCtrl::GetLineText( long lineNo ) const
|
||||||
{
|
{
|
||||||
if (m_windowStyle & wxTE_MULTILINE)
|
if (m_windowStyle & wxTE_MULTILINE)
|
||||||
@@ -580,7 +457,7 @@ void wxTextCtrl::OnDropFiles( wxDropFilesEvent &WXUNUSED(event) )
|
|||||||
wxFAIL_MSG( _T("wxTextCtrl::OnDropFiles not implemented") );
|
wxFAIL_MSG( _T("wxTextCtrl::OnDropFiles not implemented") );
|
||||||
}
|
}
|
||||||
|
|
||||||
long wxTextCtrl::PositionToXY(long pos, long *x, long *y ) const
|
bool wxTextCtrl::PositionToXY(long pos, long *x, long *y ) const
|
||||||
{
|
{
|
||||||
if ( m_windowStyle & wxTE_MULTILINE )
|
if ( m_windowStyle & wxTE_MULTILINE )
|
||||||
{
|
{
|
||||||
@@ -727,6 +604,11 @@ void wxTextCtrl::SetEditable( bool editable )
|
|||||||
gtk_entry_set_editable( GTK_ENTRY(m_text), editable );
|
gtk_entry_set_editable( GTK_ENTRY(m_text), editable );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void wxTextCtrl::DiscardEdits()
|
||||||
|
{
|
||||||
|
m_modified = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
void wxTextCtrl::SetSelection( long from, long to )
|
void wxTextCtrl::SetSelection( long from, long to )
|
||||||
{
|
{
|
||||||
wxCHECK_RET( m_text != NULL, _T("invalid text ctrl") );
|
wxCHECK_RET( m_text != NULL, _T("invalid text ctrl") );
|
||||||
@@ -913,6 +795,11 @@ bool wxTextCtrl::IsEditable() const
|
|||||||
return GTK_EDITABLE(m_text)->editable;
|
return GTK_EDITABLE(m_text)->editable;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool wxTextCtrl::IsModified() const
|
||||||
|
{
|
||||||
|
return m_modified;
|
||||||
|
}
|
||||||
|
|
||||||
void wxTextCtrl::Clear()
|
void wxTextCtrl::Clear()
|
||||||
{
|
{
|
||||||
SetValue( _T("") );
|
SetValue( _T("") );
|
||||||
|
@@ -603,17 +603,41 @@ long wxTextCtrl::XYToPosition(long x, long y) const
|
|||||||
return (long)(x + charIndex);
|
return (long)(x + charIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxTextCtrl::PositionToXY(long pos, long *x, long *y) const
|
bool wxTextCtrl::PositionToXY(long pos, long *x, long *y) const
|
||||||
{
|
{
|
||||||
HWND hWnd = GetHwnd();
|
HWND hWnd = GetHwnd();
|
||||||
|
|
||||||
// This gets the line number containing the character
|
// This gets the line number containing the character
|
||||||
int lineNo = (int)SendMessage(hWnd, EM_LINEFROMCHAR, (WPARAM)pos, (LPARAM)0);
|
int lineNo;
|
||||||
|
#if wxUSE_RICHEDIT
|
||||||
|
if ( m_isRich )
|
||||||
|
{
|
||||||
|
lineNo = (int)SendMessage(hWnd, EM_EXLINEFROMCHAR, 0, (LPARAM)pos);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
#endif // wxUSE_RICHEDIT
|
||||||
|
lineNo = (int)SendMessage(hWnd, EM_LINEFROMCHAR, (WPARAM)pos, 0);
|
||||||
|
|
||||||
|
if ( lineNo == -1 )
|
||||||
|
{
|
||||||
|
// no such line
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
// This gets the char index for the _beginning_ of this line
|
// This gets the char index for the _beginning_ of this line
|
||||||
int charIndex = (int)SendMessage(hWnd, EM_LINEINDEX, (WPARAM)lineNo, (LPARAM)0);
|
int charIndex = (int)SendMessage(hWnd, EM_LINEINDEX, (WPARAM)lineNo, (LPARAM)0);
|
||||||
|
if ( charIndex == -1 )
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
// The X position must therefore be the different between pos and charIndex
|
// The X position must therefore be the different between pos and charIndex
|
||||||
*x = (long)(pos - charIndex);
|
if ( x )
|
||||||
*y = (long)lineNo;
|
*x = (long)(pos - charIndex);
|
||||||
|
if ( y )
|
||||||
|
*y = (long)lineNo;
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxTextCtrl::ShowPosition(long pos)
|
void wxTextCtrl::ShowPosition(long pos)
|
||||||
|
Reference in New Issue
Block a user