119 lines
2.6 KiB
C++
119 lines
2.6 KiB
C++
|
|
#ifndef EDITOR_H
|
|
#define EDITOR_H
|
|
|
|
#include "tabber.h"
|
|
#include "funclist.h"
|
|
|
|
class Editor;
|
|
|
|
class EditorListener{
|
|
public:
|
|
virtual void cursorMoved( Editor *e ){}
|
|
};
|
|
|
|
class Editor : public CWnd,FuncListListener,TabberListener{
|
|
public:
|
|
Editor( EditorListener *l );
|
|
~Editor();
|
|
|
|
void setName( const string &f );
|
|
void setModified( bool n );
|
|
bool setText( istream &in );
|
|
void setCursor( int pos );
|
|
|
|
void cut();
|
|
void copy();
|
|
void paste();
|
|
void find();
|
|
void replace();
|
|
bool canFind();
|
|
bool findNext( bool wrap );
|
|
void print();
|
|
void hilight( int pos );
|
|
void selectAll();
|
|
|
|
static void lock();
|
|
static void unlock();
|
|
|
|
int getCursor();
|
|
string getName()const;
|
|
string getKeyword();
|
|
bool getModified();
|
|
bool getText( ostream &out );
|
|
void getCursor( int *row,int *col );
|
|
bool canCutCopy();
|
|
bool canPaste();
|
|
|
|
static void addKeyword( const string &s );
|
|
|
|
DECLARE_DYNAMIC( Editor )
|
|
DECLARE_MESSAGE_MAP()
|
|
|
|
afx_msg int OnCreate( LPCREATESTRUCT lpCreateStruct );
|
|
afx_msg void OnSize( UINT type,int w,int h );
|
|
afx_msg void OnSetFocus( CWnd *wnd );
|
|
afx_msg void OnKillFocus( CWnd *wnd );
|
|
afx_msg void OnPaint();
|
|
afx_msg void OnMouseMove( UINT flags,CPoint p );
|
|
afx_msg void OnLButtonDown( UINT flags,CPoint p );
|
|
afx_msg void OnLButtonUp( UINT flags,CPoint p );
|
|
afx_msg void en_change();
|
|
afx_msg void en_update();
|
|
afx_msg void en_selchange( NMHDR *nmhdr,LRESULT *result );
|
|
afx_msg void en_protected( NMHDR *nmhdr,LRESULT *result );
|
|
afx_msg void en_msgfilter( NMHDR *nmhdr,LRESULT *result );
|
|
afx_msg LRESULT onFind( WPARAM w,LPARAM l );
|
|
|
|
private:
|
|
EditorListener *listener;
|
|
|
|
string name;
|
|
bool findOnly,found;
|
|
CFindReplaceDialog *finder;
|
|
char findBuff[256],replaceBuff[256];
|
|
long selStart,selEnd;
|
|
int findFlags,d_c;
|
|
|
|
//formatting
|
|
bool fmtBusy;
|
|
int lineToFmt,fmtLineCount;
|
|
|
|
//streaming
|
|
string is_line;
|
|
istream *is_stream;
|
|
int is_curs,is_linenum;
|
|
|
|
//sizing
|
|
bool sizing;
|
|
CPoint point;
|
|
int tabber_width;
|
|
|
|
//tabber
|
|
Tabber tabber;
|
|
FuncList funcList,typeList,labsList;
|
|
CRichEditCtrl editCtrl;
|
|
|
|
void funcSelected( int line );
|
|
void currentSet( Tabber *tabber,int index );
|
|
|
|
void resized();
|
|
void fixFmt( bool fmt );
|
|
void getSel(){ editCtrl.GetSel( selStart,selEnd ); }
|
|
void setSel(){ editCtrl.SetSel( selStart,selEnd ); }
|
|
void endFind();
|
|
void setFormat( int from,int to,int color,const string &s="" );
|
|
void formatLine( int line );
|
|
void caret();
|
|
void cursorMoved();
|
|
string getLine( int line );
|
|
|
|
void formatStreamLine();
|
|
|
|
DWORD streamIn( LPBYTE buff,LONG cnt,LONG *done );
|
|
|
|
static DWORD CALLBACK streamIn( DWORD cookie,LPBYTE buff,LONG cnt,LONG *done );
|
|
static DWORD CALLBACK streamOut( DWORD cookie,LPBYTE buff,LONG cnt,LONG *done );
|
|
};
|
|
|
|
#endif |