Applied patch #845402 ("RichEdit sample fixing and cleaning"); In addition made compilation with MSVC (nearly) warning free+some more cleaning up.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@24613 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Dimitri Schoolwerth 2003-11-20 17:43:57 +00:00
parent 6c3b4aae47
commit 62a1177692
8 changed files with 3286 additions and 2953 deletions

View File

@ -136,7 +136,7 @@ public:
deleted by list. See the constructor for more details.
@param ownsflag if true, list will own entries
*/
void ownsObjects(bool ownsflag = true)
void ownsObjects(bool ownsflag)
{ ownsEntries = ownsflag; }
/** Query whether list owns entries.
@ -236,7 +236,10 @@ protected:
param iterator i
*/
inline void deleteContent(iterator i)
{ if(ownsEntries) delete *i; }
{
iterator *i_ptr = &i;
if(ownsEntries) delete i_ptr;
}
private:

View File

@ -17,8 +17,8 @@
#endif
#include "wxLayout.h"
#include <wx/textfile.h>
#include <wx/image.h>
#include "wx/textfile.h"
#include "wx/image.h"
#if wxUSE_IOSTREAMH
#include <iostream.h>
@ -26,7 +26,10 @@
#include <iostream>
#endif
#include "Micon.xpm"
#include "wx/wfstream.h"
#include "wx/txtstrm.h"
#include "Micon.xpm"
//-----------------------------------------------------------------------------
@ -69,9 +72,9 @@ BEGIN_EVENT_TABLE(MyFrame,wxFrame)
END_EVENT_TABLE()
MyFrame::MyFrame(void) :
wxFrame( (wxFrame *) NULL, -1, _T("wxLayout"),
wxPoint(880,100), wxSize(256,256) )
MyFrame::MyFrame() :
wxFrame( (wxFrame *) NULL, wxID_ANY, _T("wxLayout"),
wxDefaultPosition, wxDefaultSize )
{
CreateStatusBar( 2 );
@ -119,7 +122,7 @@ MyFrame::MyFrame(void) :
menu_bar->Append(edit_menu, _T("&Edit") );
#ifndef __WXMSW__
menu_bar->Show( TRUE );
menu_bar->Show(true);
#endif // MSW
SetMenuBar( menu_bar );
@ -157,12 +160,13 @@ MyFrame::MyFrame(void) :
#endif // 0
};
void
MyFrame::AddSampleText(wxLayoutList *llist)
void MyFrame::AddSampleText(wxLayoutList *llist)
{
llist->Clear(wxSWISS,16,wxNORMAL,wxNORMAL, false);
llist->SetFont(-1,-1,-1,-1,-1,_T("blue"));
llist->Insert(_T("blue"));
llist->LineBreak();
llist->SetFont(-1,-1,-1,-1,-1,_T("black"));
llist->Insert(_T("The quick brown fox jumps over the lazy dog."));
llist->LineBreak();
@ -174,89 +178,96 @@ MyFrame::AddSampleText(wxLayoutList *llist)
llist->SetFont(wxROMAN);
llist->Insert(_T("The quick brown fox jumps over the lazy dog."));
llist->LineBreak();
llist->Insert(_T("Hello "));
llist->Insert(_T("Hello "));
wxBitmap *icon =
#if wxICON_IS_BITMAP
llist->Insert(new wxLayoutObjectIcon(new wxICON(Micon)));
new wxIcon(Micon_xpm)
#else
llist->Insert(new wxLayoutObjectIcon(new wxBitmap (wxICON(Micon))));
new wxBitmap (wxIcon(Micon_xpm))
#endif
llist->SetFontWeight(wxBOLD);
llist->Insert(_T("World! "));
llist->SetFontWeight(wxNORMAL);
llist->Insert(_T("The quick brown fox jumps..."));
llist->LineBreak();
llist->Insert(_T("over the lazy dog."));
llist->SetFont(-1,-1,-1,-1,true);
llist->Insert(_T("underlined"));
llist->SetFont(-1,-1,-1,-1,false);
llist->SetFont(wxROMAN);
llist->Insert(_T("This is "));
llist->SetFont(-1,-1,-1,wxBOLD); llist->Insert(_T("BOLD ")); llist->SetFont(-1,-1,-1,wxNORMAL);
llist->Insert(_T("and "));
llist->SetFont(-1,-1,wxITALIC);
llist->Insert(_T("italics "));
llist->SetFont(-1,-1,wxNORMAL);
llist->LineBreak();
llist->Insert(_T("and "));
llist->SetFont(-1,-1,wxSLANT);
llist->Insert(_T("slanted"));
llist->SetFont(-1,-1,wxNORMAL);
llist->Insert(_T(" text."));
llist->LineBreak();
llist->Insert(_T("and "));
llist->SetFont(-1,-1,-1,-1,-1,_T("blue"));
llist->Insert(_T("blue"));
llist->SetFont(-1,-1,-1,-1,-1,_T("black"));
llist->Insert(_T(" and "));
llist->SetFont(-1,-1,-1,-1,-1,_T("green"),_T("black"));
llist->Insert(_T("green on black"));
llist->SetFont(-1,-1,-1,-1,-1,_T("black"),_T("white"));
llist->Insert(_T(" text."));
llist->LineBreak();
llist->SetFont(-1,-1,wxSLANT);
llist->Insert(_T("Slanted"));
llist->SetFont(-1,-1,wxNORMAL);
llist->Insert(_T(" and normal text and "));
llist->SetFont(-1,-1,wxSLANT);
llist->Insert(_T("slanted"));
llist->SetFont(-1,-1,wxNORMAL);
llist->Insert(_T(" again."));
llist->LineBreak();
;
// add some more text for testing:
llist->Insert(_T("And here the source for the test program:"));
llist->LineBreak();
llist->SetFont(wxTELETYPE,16);
llist->Insert(_T("And here the source for the test program:"));
llist->LineBreak();
llist->Insert(_T("And here the source for the test program:"));
llist->LineBreak();
llist->Insert(_T("And here the source for the test program:"));
llist->Insert(new wxLayoutObjectIcon(icon));
llist->SetFontWeight(wxBOLD);
llist->Insert(_T("World! "));
llist->SetFontWeight(wxNORMAL);
llist->Insert(_T("The quick brown fox jumps..."));
llist->LineBreak();
wxFile file( _T("wxLayout.cpp") );
if ( file.IsOpened() )
{
off_t len = file.Length();
wxChar *data = (wxChar *)malloc(2*len);
if ( file.Read(data, len) == len )
{
wxLayoutImportText(llist, data);
}
free(data);
}
llist->Insert(_T("over the lazy dog."));
llist->SetFont(-1,-1,-1,-1,true);
llist->Insert(_T("underlined"));
llist->SetFont(-1,-1,-1,-1,false);
llist->SetFont(wxROMAN);
llist->Insert(_T("This is "));
llist->SetFont(-1,-1,-1,wxBOLD);
llist->Insert(_T("BOLD "));
llist->SetFont(-1,-1,-1,wxNORMAL);
llist->Insert(_T("and "));
llist->SetFont(-1,-1,wxITALIC);
llist->Insert(_T("italics "));
llist->SetFont(-1,-1,wxNORMAL);
llist->LineBreak();
llist->MoveCursorTo(wxPoint(0,0));
m_lwin->SetDirty();
m_lwin->Refresh();
llist->Insert(_T("and "));
llist->SetFont(-1,-1,wxSLANT);
llist->Insert(_T("slanted"));
llist->SetFont(-1,-1,wxNORMAL);
llist->Insert(_T(" text."));
llist->LineBreak();
llist->Insert(_T("and "));
llist->SetFont(-1,-1,-1,-1,-1,_T("blue"));
llist->Insert(_T("blue"));
llist->SetFont(-1,-1,-1,-1,-1,_T("black"));
llist->Insert(_T(" and "));
llist->SetFont(-1,-1,-1,-1,-1,_T("green"),_T("black"));
llist->Insert(_T("green on black"));
llist->SetFont(-1,-1,-1,-1,-1,_T("black"),_T("white"));
llist->Insert(_T(" text."));
llist->LineBreak();
llist->SetFont(-1,-1,wxSLANT);
llist->Insert(_T("Slanted"));
llist->SetFont(-1,-1,wxNORMAL);
llist->Insert(_T(" and normal text and "));
llist->SetFont(-1,-1,wxSLANT);
llist->Insert(_T("slanted"));
llist->SetFont(-1,-1,wxNORMAL);
llist->Insert(_T(" again."));
llist->LineBreak();
// add some more text for testing:
llist->Insert(_T("And here the source for the test program:"));
llist->LineBreak();
llist->SetFont(wxTELETYPE,16);
llist->Insert(_T("And here the source for the test program:"));
llist->LineBreak();
wxTextFile file(_T("wxLayout.cpp"));
if ( file.Open() )
{
for ( wxString s = file.GetFirstLine(); !file.Eof(); s = file.GetNextLine() )
{
wxString line;
llist->Insert(line.Format(_T("%6u: %s"),file.GetCurrentLine()+1,s.c_str()));
llist->LineBreak();
}
}
llist->MoveCursorTo(wxPoint(0,0));
m_lwin->SetDirty();
m_lwin->Refresh();
}
void
MyFrame::Clear(void)
void MyFrame::Clear()
{
wxColour colBg(0, 0, 0);
wxColour colBg(0, 0, 0);
m_lwin->Clear(wxROMAN,16,wxNORMAL,wxNORMAL, false, wxRED, &colBg);
m_lwin->Clear(wxROMAN,16,wxNORMAL,wxNORMAL, false, wxRED, &colBg);
}
@ -265,13 +276,13 @@ void MyFrame::OnCommand( wxCommandEvent &event )
switch (event.GetId())
{
case ID_QUIT:
Close( TRUE );
Close(true);
break;
case ID_PRINT:
{
wxPrinter printer;
wxLayoutPrintout printout(m_lwin->GetLayoutList(),_("M: Printout"));
if (! printer.Print(this, &printout, TRUE))
if (! printer.Print(this, &printout, true))
{
// Had to remove the split up strings that used to be below, and
// put them into one long strong. Otherwise MSVC would give an
@ -297,76 +308,100 @@ void MyFrame::OnCommand( wxCommandEvent &event )
Clear();
break;
case ID_CLICK:
cerr << "Received click event." << endl;
wxLogError( _T("Received click event.") );
break;
case ID_PASTE:
m_lwin->Paste(TRUE);
m_lwin->Refresh(FALSE);
m_lwin->Paste(true);
m_lwin->Refresh(false);
break;
#ifdef __WXGTK__
case ID_PASTE_PRIMARY:
// text only from primary:
m_lwin->Paste(FALSE, TRUE);
m_lwin->Refresh(FALSE);
m_lwin->Paste(false, true);
m_lwin->Refresh(false);
break;
case ID_COPY_PRIMARY:
// copy text-only to primary selection:
m_lwin->Copy(FALSE,FALSE,TRUE);
m_lwin->Refresh(FALSE);
m_lwin->Copy(false, false, true);
m_lwin->Refresh(false);
break;
#endif
case ID_COPY:
m_lwin->Copy(TRUE,TRUE,FALSE);
m_lwin->Refresh(FALSE);
m_lwin->Copy(true, true, false);
m_lwin->Refresh(false);
break;
case ID_CUT:
m_lwin->Cut();
m_lwin->Refresh(FALSE);
m_lwin->Refresh(false);
break;
#ifdef M_BASEDIR
case ID_FIND:
m_lwin->Find("void");
m_lwin->Refresh(FALSE);
m_lwin->Refresh(false);
break;
#endif
case ID_HTML:
{
wxLayoutExportObject *export0;
wxLayoutExportStatus status(m_lwin->GetLayoutList());
wxFileDialog
HTML_dialog( this,
_T("Save As HTML..."),
wxEmptyString,
wxEmptyString,
_T("HTML file (*.html)|*.html|Text file (*.txt)|*.txt|Any file (*)|*"),
wxSAVE|wxOVERWRITE_PROMPT
);
if (HTML_dialog.ShowModal() == wxID_OK)
{
wxFFileOutputStream output( HTML_dialog.GetPath() );
wxTextOutputStream textout( output );
cout << "<HTML>" << endl;
while((export0 = wxLayoutExport( &status,
WXLO_EXPORT_AS_HTML)) != NULL)
wxLayoutExportObject *export0;
wxString object;
wxLayoutExportStatus status(m_lwin->GetLayoutList());
while((export0 = wxLayoutExport( &status, WXLO_EXPORT_AS_HTML)) != NULL)
{
if(export0->type == WXLO_EXPORT_HTML)
cout << *(export0->content.text);
object = *(export0->content.text);
else
; // ignore itcout << "<!--UNKNOWN OBJECT>";
; // ignore "<!--UNKNOWN OBJECT>";
delete export0;
textout << object;
}
}
break;
}
case ID_TEXT:
{
wxLayoutExportObject *export0;
wxLayoutExportStatus status(m_lwin->GetLayoutList());
wxFileDialog
TEXT_dialog( this,
_T("Save As TXT..."),
wxEmptyString,
wxEmptyString,
_T("Text file (*.txt)|*.txt|Any file (*)|*"),
wxSAVE|wxOVERWRITE_PROMPT
);
if (TEXT_dialog.ShowModal() == wxID_OK)
{
wxFFileOutputStream output( TEXT_dialog.GetPath() );
wxTextOutputStream textout( output );
wxLayoutExportObject *export0;
wxString object;
wxLayoutExportStatus status(m_lwin->GetLayoutList());
while((export0 = wxLayoutExport( &status, WXLO_EXPORT_AS_TEXT)) != NULL)
{
if(export0->type == WXLO_EXPORT_TEXT)
cout << *(export0->content.text);
object = *(export0->content.text);
else
cout << "<!--UNKNOWN OBJECT>";
object = _T("<!--UNKNOWN OBJECT>");
delete export0;
textout << object;
}
}
break;
}
case ID_LONG_TEST:
{
wxString line;
@ -400,6 +435,7 @@ void MyFrame::OnCommand( wxCommandEvent &event )
// wxLayoutWindow should have a flag m_highlightUrls and do it itself
// (instead of doing it manually like M does now)
m_lwin->GetLayoutList()->Insert(_T("http://www.wxwindows.org/"));
m_lwin->Refresh();
}
};
@ -412,7 +448,7 @@ void MyFrame::OnPrint(wxCommandEvent& WXUNUSED(event))
#endif
wxPrinter printer;
wxLayoutPrintout printout( m_lwin->GetLayoutList(), _T("Printout from wxLayout"));
if (! printer.Print(this, &printout, TRUE))
if (! printer.Print(this, &printout, true))
wxMessageBox(
_T("There was a problem printing.\nPerhaps your current printer is not set correctly?"),
_T("Printing"), wxOK);
@ -425,7 +461,7 @@ void MyFrame::OnPrintPS(wxCommandEvent& WXUNUSED(event))
#ifdef OS_UNIX
wxPostScriptPrinter printer;
wxLayoutPrintout printout( m_lwin->GetLayoutList(),"My printout");
printer.Print(this, &printout, TRUE);
printer.Print(this, &printout, true);
#endif
}
@ -452,7 +488,7 @@ void MyFrame::OnPrintPreview(wxCommandEvent& WXUNUSED(event))
wxPreviewFrame *frame = new wxPreviewFrame(preview, this, _T("Demo Print Preview"), wxPoint(100, 100), wxSize(600, 650));
frame->Centre(wxBOTH);
frame->Initialize();
frame->Show(TRUE);
frame->Show(true);
}
void MyFrame::OnPrintPreviewPS(wxCommandEvent& WXUNUSED(event))
@ -466,7 +502,7 @@ void MyFrame::OnPrintPreviewPS(wxCommandEvent& WXUNUSED(event))
wxPreviewFrame *frame = new wxPreviewFrame(preview, this, _T("Demo Print Preview"), wxPoint(100, 100), wxSize(600, 650));
frame->Centre(wxBOTH);
frame->Initialize();
frame->Show(TRUE);
frame->Show(true);
}
void MyFrame::OnPrintSetup(wxCommandEvent& WXUNUSED(event))
@ -531,18 +567,18 @@ void MyFrame::OnPageSetupPS(wxCommandEvent& WXUNUSED(event))
// MyApp
//-----------------------------------------------------------------------------
MyApp::MyApp(void) :
MyApp::MyApp() :
wxApp( )
{
};
bool MyApp::OnInit(void)
bool MyApp::OnInit()
{
wxFrame *frame = new MyFrame();
wxInitAllImageHandlers();
frame->Show( TRUE );
frame->Show( true );
// wxSetAFMPath("/usr/local/src/wxWindows/misc/afm/");
return TRUE;
return true;
};

View File

@ -7,7 +7,7 @@
#pragma interface
#endif
#include <wx/wx.h>
#include "wx/wx.h"
#include "wxllist.h"
#include "wxlwindow.h"
@ -26,14 +26,13 @@ class MyApp;
class MyFrame: public wxFrame
{
DECLARE_DYNAMIC_CLASS(MyFrame)
public:
MyFrame(void);
void AddSampleText(wxLayoutList *llist);
void Clear(void);
void OnCommand( wxCommandEvent &event );
public:
MyFrame();
void AddSampleText(wxLayoutList *llist);
void Clear();
void OnCommand( wxCommandEvent &event );
void OnPrint(wxCommandEvent& event);
void OnPrintPreview(wxCommandEvent& event);
@ -44,11 +43,14 @@ class MyFrame: public wxFrame
void OnPrintSetupPS(wxCommandEvent& event);
void OnPageSetupPS(wxCommandEvent& event);
DECLARE_EVENT_TABLE()
private:
wxLayoutWindow *m_lwin;
wxPrintData m_PrintData;
wxLayoutWindow *m_lwin;
wxPrintData m_PrintData;
DECLARE_DYNAMIC_CLASS(MyFrame)
DECLARE_EVENT_TABLE()
};
//-----------------------------------------------------------------------------
@ -57,10 +59,13 @@ private:
class MyApp: public wxApp
{
public:
MyApp(void);
virtual bool OnInit(void);
public:
MyApp();
virtual bool OnInit();
};
#endif // __WXCONVERTH__

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -45,6 +45,7 @@ void wxLayoutImportText(wxLayoutList *list, wxString const &str)
// VZ: I still don't like it... the string data may be shared...
wxChar * cptr = (wxChar *)str.c_str(); // const_cast
const wxChar * begin = cptr;
wxUnusedVar(begin);
wxChar backup;
for(;;)
@ -165,7 +166,7 @@ wxLayoutExportStatus::wxLayoutExportStatus(wxLayoutList *list)
m_si = list->GetDefaultStyleInfo();
m_line = list->GetFirstLine();
m_iterator = m_line->GetFirstObject();
m_FirstTime = TRUE;
m_FirstTime = true;
}
@ -215,6 +216,7 @@ wxLayoutExportObject *wxLayoutExport(wxLayoutExportStatus *status,
else
type = WXLO_TYPE_TEXT;
}
wxUnusedVar(type);
wxString *str = new wxString();
// text must be concatenated
@ -250,7 +252,7 @@ wxLayoutExportObject *wxLayoutExport(wxLayoutExportStatus *status,
*str += wxLayoutExportCmdAsHTML(
*(wxLayoutObjectCmd const *)*status->m_iterator,
& status->m_si, status->m_FirstTime);
status->m_FirstTime = FALSE;
status->m_FirstTime = false;
break;
default: // ignore icons
;

File diff suppressed because it is too large Load Diff

View File

@ -13,7 +13,7 @@
#endif
#ifndef USE_PCH
# include <wx/wx.h>
# include "wx/wx.h"
#endif
#include "wxllist.h"
@ -25,270 +25,314 @@
enum
{
WXLOWIN_MENU_LARGER = WXLOWIN_MENU_FIRST,
WXLOWIN_MENU_SMALLER,
WXLOWIN_MENU_UNDERLINE,
WXLOWIN_MENU_BOLD,
WXLOWIN_MENU_ITALICS,
WXLOWIN_MENU_ROMAN,
WXLOWIN_MENU_TYPEWRITER,
WXLOWIN_MENU_SANSSERIF,
WXLOWIN_MENU_RCLICK,
WXLOWIN_MENU_DBLCLICK,
WXLOWIN_MENU_MDOWN,
WXLOWIN_MENU_LDOWN,
WXLOWIN_MENU_LCLICK = WXLOWIN_MENU_LDOWN,
WXLOWIN_MENU_LUP,
WXLOWIN_MENU_MOUSEMOVE,
WXLOWIN_MENU_LAST = WXLOWIN_MENU_MOUSEMOVE
WXLOWIN_MENU_LARGER = WXLOWIN_MENU_FIRST,
WXLOWIN_MENU_SMALLER,
WXLOWIN_MENU_UNDERLINE,
WXLOWIN_MENU_BOLD,
WXLOWIN_MENU_ITALICS,
WXLOWIN_MENU_ROMAN,
WXLOWIN_MENU_TYPEWRITER,
WXLOWIN_MENU_SANSSERIF,
WXLOWIN_MENU_RCLICK,
WXLOWIN_MENU_DBLCLICK,
WXLOWIN_MENU_MDOWN,
WXLOWIN_MENU_LDOWN,
WXLOWIN_MENU_LCLICK = WXLOWIN_MENU_LDOWN,
WXLOWIN_MENU_LUP,
WXLOWIN_MENU_MOUSEMOVE,
WXLOWIN_MENU_LAST = WXLOWIN_MENU_MOUSEMOVE
};
/**
This class is a rich text editing widget.
This class is a rich text editing widget.
*/
class wxLayoutWindow : public wxScrolledWindow
{
public:
/** Constructor.
@param parent parent window to display this panel in
*/
wxLayoutWindow(wxWindow *parent);
/** Constructor.
@param parent parent window to display this panel in
*/
wxLayoutWindow(wxWindow *parent);
/// Destructor.
virtual ~wxLayoutWindow();
/// Destructor.
virtual ~wxLayoutWindow();
/**@name Editing functionality */
//@{
/// Clears the window and sets default parameters.
void Clear(int family = wxROMAN,
int size=12,
int style=wxNORMAL,
int weight=wxNORMAL,
int underline=0,
wxColour *fg=NULL,
wxColour *bg=NULL);
/**@name Editing functionality */
//@{
/// Clears the window and sets default parameters.
void Clear(int family = wxROMAN,
int size = 12,
int style = wxNORMAL,
int weight = wxNORMAL,
int underline = 0,
wxColour *fg = NULL,
wxColour *bg = NULL);
/// override base class virtual to also refresh the scrollbar position
virtual void Refresh(bool eraseBackground = TRUE,
const wxRect *rect = (const wxRect *)NULL);
/// override base class virtual to also refresh the scrollbar position
virtual void Refresh(bool eraseBackground = true,
const wxRect *rect = (const wxRect *)NULL);
/** Sets a background image, only used on screen, not on printouts.
@param bitmap a pointer to a wxBitmap or NULL to remove it
*/
void SetBackgroundBitmap(wxBitmap *bitmap = NULL)
{
if(m_BGbitmap) delete m_BGbitmap;
m_BGbitmap = bitmap;
}
/// Enable or disable editing, i.e. processing of keystrokes.
void SetEditable(bool toggle)
{ m_Editable = toggle; SetCursorVisibility(toggle); }
/// Query whether list can be edited by user.
bool IsEditable(void) const { return m_Editable; }
/** Sets cursor visibility, visible=1, invisible=0,
visible-on-demand=-1, to hide it until moved.
@param visibility -1,0 or 1
@return the old visibility
*/
inline int SetCursorVisibility(int visibility = -1)
{ int v =m_CursorVisibility;
m_CursorVisibility = visibility; return v;}
/** Sets a background image, only used on screen, not on printouts.
@param bitmap a pointer to a wxBitmap or NULL to remove it
*/
void SetBackgroundBitmap(wxBitmap *bitmap = NULL)
{
if(m_BGbitmap) delete m_BGbitmap;
m_BGbitmap = bitmap;
}
/// Pastes text from clipboard.
void Paste(bool privateFormat = FALSE, bool usePrimarySelection = FALSE);
/** Copies selection to clipboard.
@param invalidate used internally, see wxllist.h for details
*/
bool Copy(bool invalidate = true, bool privateFormat = FALSE, bool primary = FALSE);
/// Copies selection to clipboard and deletes it.
bool Cut(bool privateFormat = FALSE, bool usePrimary = FALSE);
//@}
/// Enable or disable editing, i.e. processing of keystrokes.
void SetEditable(bool toggle)
{
m_Editable = toggle;
SetCursorVisibility(toggle);
}
/// find string in buffer
bool Find(const wxString &needle,
wxPoint * fromWhere = NULL,
const wxString &configPath = _T("MsgViewFindString"));
/// find the same string again
bool FindAgain(void);
/// Query whether list can be edited by user.
bool IsEditable() const { return m_Editable; }
void EnablePopup(bool enable = true) { m_DoPopupMenu = enable; }
/** Sets cursor visibility, visible=1, invisible=0,
visible-on-demand=-1, to hide it until moved.
@param visibility -1,0 or 1
@return the old visibility
*/
inline int SetCursorVisibility(int visibility = -1)
{
int v =m_CursorVisibility;
m_CursorVisibility = visibility; return v;
}
/** Sets the wrap margin.
@param margin set this to 0 to disable it
*/
void SetWrapMargin(CoordType margin) { m_WrapMargin = margin; }
/// Pastes text from clipboard.
void Paste(bool privateFormat = false, bool usePrimarySelection = false);
/** Toggle wordwrap as we type.
@param on true to activate word wrap
*/
void SetWordWrap(bool on = true) { m_DoWordWrap = on; }
/** Redraws the window.
Internally, this stores the parameter and calls a refresh on
wxMSW, draws directly on wxGTK.
*/
void RequestUpdate(const wxRect *updateRect = NULL);
/** Copies selection to clipboard.
@param invalidate used internally, see wxllist.h for details
*/
bool Copy(bool invalidate = true, bool privateFormat = false, bool primary = false);
/// if exact == false, assume 50% extra size for the future
void ResizeScrollbars(bool exact = false); // don't change this to true!
/// Copies selection to clipboard and deletes it.
bool Cut(bool privateFormat = false, bool usePrimary = false);
//@}
/// if the flag is true, we send events when user clicks on embedded objects
inline void SetMouseTracking(bool doIt = true) { m_doSendEvents = doIt; }
/// find string in buffer
bool Find(const wxString &needle,
wxPoint * fromWhere = NULL,
const wxString &configPath = _T("MsgViewFindString"));
/* Returns a pointer to the wxLayoutList object.
@return the list
*/
wxLayoutList * GetLayoutList(void) { return m_llist; }
/// find the same string again
bool FindAgain();
/**@name Callbacks */
//@{
void OnSize(wxSizeEvent &event);
void OnPaint(wxPaintEvent &event);
void OnChar(wxKeyEvent& event);
void OnKeyUp(wxKeyEvent& event);
void OnUpdateMenuUnderline(wxUpdateUIEvent& event);
void OnUpdateMenuBold(wxUpdateUIEvent& event);
void OnUpdateMenuItalic(wxUpdateUIEvent& event);
void OnMenu(wxCommandEvent& event);
void OnLeftMouseDown(wxMouseEvent& event) { OnMouse(WXLOWIN_MENU_LDOWN, event); }
void OnLeftMouseUp(wxMouseEvent& event) { OnMouse(WXLOWIN_MENU_LUP, event); }
void OnRightMouseClick(wxMouseEvent& event) { OnMouse(WXLOWIN_MENU_RCLICK, event); }
void OnMiddleMouseDown(wxMouseEvent& event) { OnMouse(WXLOWIN_MENU_MDOWN, event); }
void OnMouseDblClick(wxMouseEvent& event) { OnMouse(WXLOWIN_MENU_DBLCLICK, event); }
void OnMouseMove(wxMouseEvent &event) { OnMouse(WXLOWIN_MENU_MOUSEMOVE, event) ; }
void OnSetFocus(wxFocusEvent &ev);
void OnKillFocus(wxFocusEvent &ev);
//@}
void EnablePopup(bool enable = true) { m_DoPopupMenu = enable; }
/// Creates a wxMenu for use as a format popup.
static wxMenu * MakeFormatMenu(void);
/// Redraws the window, used by RequestUpdate() or OnPaint().
void InternalPaint(const wxRect *updateRect);
/** Sets the wrap margin.
@param margin set this to 0 to disable it
*/
void SetWrapMargin(CoordType margin) { m_WrapMargin = margin; }
/** Toggle wordwrap as we type.
@param on true to activate word wrap
*/
void SetWordWrap(bool on = true) { m_DoWordWrap = on; }
/** Redraws the window.
Internally, this stores the parameter and calls a refresh on
wxMSW, draws directly on wxGTK.
*/
void RequestUpdate(const wxRect *updateRect = NULL);
/// if exact == false, assume 50% extra size for the future
void ResizeScrollbars(bool exact = false); // don't change this to true!
/// if the flag is true, we send events when user clicks on embedded objects
inline void SetMouseTracking(bool doIt = true) { m_doSendEvents = doIt; }
/** Returns a pointer to the wxLayoutList object.
@return the list
*/
wxLayoutList * GetLayoutList() { return m_llist; }
/**@name Callbacks */
//@{
void OnSize(wxSizeEvent &event);
void OnPaint(wxPaintEvent &event);
void OnChar(wxKeyEvent& event);
void OnKeyUp(wxKeyEvent& event);
void OnUpdateMenuUnderline(wxUpdateUIEvent& event);
void OnUpdateMenuBold(wxUpdateUIEvent& event);
void OnUpdateMenuItalic(wxUpdateUIEvent& event);
void OnMenu(wxCommandEvent& event);
void OnLeftMouseDown(wxMouseEvent& event) { OnMouse(WXLOWIN_MENU_LDOWN, event); }
void OnLeftMouseUp(wxMouseEvent& event) { OnMouse(WXLOWIN_MENU_LUP, event); }
void OnRightMouseClick(wxMouseEvent& event) { OnMouse(WXLOWIN_MENU_RCLICK, event); }
void OnMiddleMouseDown(wxMouseEvent& event) { OnMouse(WXLOWIN_MENU_MDOWN, event); }
void OnMouseDblClick(wxMouseEvent& event) { OnMouse(WXLOWIN_MENU_DBLCLICK, event); }
void OnMouseMove(wxMouseEvent &event) { OnMouse(WXLOWIN_MENU_MOUSEMOVE, event) ; }
void OnSetFocus(wxFocusEvent &ev);
void OnKillFocus(wxFocusEvent &ev);
//@}
/// Creates a wxMenu for use as a format popup.
static wxMenu * MakeFormatMenu();
/// Redraws the window, used by RequestUpdate() or OnPaint().
void InternalPaint(const wxRect *updateRect);
/** Tell window to update a wxStatusBar with UserData labels and
cursor positions.
@param bar wxStatusBar pointer
@param labelfield field to use in statusbar for URLs/userdata labels, or -1 to disable
@param cursorfield field to use for cursor position, or -1 to disable
*/
void SetStatusBar(class wxStatusBar *bar,
int labelfield = -1,
int cursorfield = -1)
{
m_StatusBar = bar; m_StatusFieldLabel = labelfield;
m_StatusFieldCursor = cursorfield;
}
/** Tell window to update a wxStatusBar with UserData labels and
cursor positions.
@param bar wxStatusBar pointer
@param labelfield field to use in statusbar for URLs/userdata labels, or -1 to disable
@param cursorfield field to use for cursor position, or -1 to disable
*/
void SetStatusBar(class wxStatusBar *bar,
int labelfield = -1,
int cursorfield = -1)
{
m_StatusBar = bar; m_StatusFieldLabel = labelfield;
m_StatusFieldCursor = cursorfield;
}
#ifndef __WXMSW__
/// Enable or disable focus follow mode under non-MSW
void SetFocusFollowMode(bool enable = TRUE)
{ m_FocusFollowMode = enable; }
/// Enable or disable focus follow mode under non-MSW
void SetFocusFollowMode(bool enable = true)
{
m_FocusFollowMode = enable;
}
#endif
/**@name Modified flag handling, will not get reset by list unless
in Clear() */
//@{
/// Set dirty flag.
void SetModified(bool modified = TRUE) { m_Modified = modified; }
/// Query whether window needs redrawing.
bool IsModified(void) const { return m_Modified; }
//@}
/** @name Modified flag handling, will not get reset by list unless
in Clear() */
//@{
/// Set dirty flag.
void SetModified(bool modified = true) { m_Modified = modified; }
/// Query whether window needs redrawing.
bool IsModified() const { return m_Modified; }
//@}
/**
@name Dirty flag handling for optimisations.
Normally one should only need to call SetDirty(), e.g. when
manipulating the wxLayoutList directly, so the window will update
itself. ResetDirty() and IsDirty() should only be used
internally. */
//@{
/// Set dirty flag.
void SetDirty() { m_Dirty = true; m_Modified = true; }
/// Query whether window needs redrawing.
bool IsDirty() const { return m_Dirty; }
/// Reset dirty flag.
void ResetDirty() { m_Dirty = false; }
//@}
/**@name Dirty flag handling for optimisations.
Normally one should only need to call SetDirty(), e.g. when
manipulating the wxLayoutList directly, so the window will update
itself. ResetDirty() and IsDirty() should only be used
internally. */
//@{
/// Set dirty flag.
void SetDirty(void) { m_Dirty = true; m_Modified = true; }
/// Query whether window needs redrawing.
bool IsDirty(void) const { return m_Dirty; }
/// Reset dirty flag.
void ResetDirty(void) { m_Dirty = false; }
//@}
protected:
/// generic function for mouse events processing
void OnMouse(int eventId, wxMouseEvent& event);
/// as the name says
void ScrollToCursor(void);
/// for sending events
wxWindow *m_Parent;
/// Shall we send events?
bool m_doSendEvents;
/// Where does the current view start?
int m_ViewStartX; int m_ViewStartY;
/// Do we currently have the focus?
bool m_HaveFocus;
/// do we handle clicks of the right mouse button?
bool m_DoPopupMenu;
/// Should InternalPaint() scroll to cursor (VZ: seems unused any more)
bool m_ScrollToCursor;
/// Do we currently have a non-standard cursor?
bool m_HandCursor;
/// the menu
wxMenu * m_PopupMenu;
/// for derived classes, set when mouse is clicked
wxPoint m_ClickPosition;
/// for scrollbar calculations:
int m_maxx;
int m_maxy;
int m_lineHeight;
/// do we want automatic word wrap?
bool m_DoWordWrap;
/// wrap margin
CoordType m_WrapMargin;
/// generic function for mouse events processing
void OnMouse(int eventId, wxMouseEvent& event);
/// do we have the corresponding scrollbar?
bool m_hasHScrollbar,
/// as the name says
void ScrollToCursor();
/// for sending events
wxWindow *m_Parent;
/// Shall we send events?
bool m_doSendEvents;
/// Where does the current view start?
int m_ViewStartX; int m_ViewStartY;
/// Do we currently have the focus?
bool m_HaveFocus;
/// do we handle clicks of the right mouse button?
bool m_DoPopupMenu;
/// Should InternalPaint() scroll to cursor (VZ: seems unused any more)
bool m_ScrollToCursor;
/// Do we currently have a non-standard cursor?
bool m_HandCursor;
/// the menu
wxMenu * m_PopupMenu;
/// for derived classes, set when mouse is clicked
wxPoint m_ClickPosition;
/// for scrollbar calculations:
int m_maxx;
int m_maxy;
int m_lineHeight;
/// do we want automatic word wrap?
bool m_DoWordWrap;
/// wrap margin
CoordType m_WrapMargin;
/// do we have the corresponding scrollbar?
bool m_hasHScrollbar,
m_hasVScrollbar;
/** Visibility parameter for cursor. 0/1 as expected, -1: visible
on demand.
*/
int m_CursorVisibility;
/** Visibility parameter for cursor. 0/1 as expected, -1: visible
on demand.
*/
int m_CursorVisibility;
bool SetAutoDeleteSelection(bool enable = TRUE)
{
bool old = m_AutoDeleteSelection;
m_AutoDeleteSelection = enable;
return old;
}
bool SetAutoDeleteSelection(bool enable = true)
{
bool old = m_AutoDeleteSelection;
m_AutoDeleteSelection = enable;
return old;
}
private:
/// The layout list to be displayed.
wxLayoutList *m_llist;
/// Can user edit the window?
bool m_Editable;
/// Are we currently building a selection with the keyboard?
bool m_Selecting;
/// Has list changed since last redraw, e.g. in size?
bool m_Dirty;
/// Has the list ever been modified?
bool m_Modified;
wxMemoryDC *m_memDC;
wxBitmap *m_bitmap;
wxPoint m_bitmapSize;
/// A frame's statusbar to update
class wxStatusBar *m_StatusBar;
/// statusbar field for labels
int m_StatusFieldLabel;
/// statusbar field for cursor positions
int m_StatusFieldCursor;
/// a pointer to a bitmap for the background
wxBitmap *m_BGbitmap;
/**@name Some configuration options */
//@{
/// Do we want to auto-replace the selection with new text?
bool m_AutoDeleteSelection;
/// The layout list to be displayed.
wxLayoutList *m_llist;
/// Can user edit the window?
bool m_Editable;
/// Are we currently building a selection with the keyboard?
bool m_Selecting;
/// Has list changed since last redraw, e.g. in size?
bool m_Dirty;
/// Has the list ever been modified?
bool m_Modified;
wxMemoryDC *m_memDC;
wxBitmap *m_bitmap;
wxPoint m_bitmapSize;
/// A frame's statusbar to update
class wxStatusBar *m_StatusBar;
/// statusbar field for labels
int m_StatusFieldLabel;
/// statusbar field for cursor positions
int m_StatusFieldCursor;
/// a pointer to a bitmap for the background
wxBitmap *m_BGbitmap;
/**@name Some configuration options */
//@{
/// Do we want to auto-replace the selection with new text?
bool m_AutoDeleteSelection;
#ifndef __WXMSW__
/// Do we want the focus to follow the mouse?
bool m_FocusFollowMode;
/// Do we want the focus to follow the mouse?
bool m_FocusFollowMode;
#endif
/// For finding text and finding it again:
wxString m_FindString;
/// For finding text and finding it again:
wxString m_FindString;
//@}
DECLARE_EVENT_TABLE()
DECLARE_EVENT_TABLE()
};
#endif