--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// Name: lseditorpl.cpp
+// Purpose: Language-sensative editor plugin for wxStudio
+// Copyright: (c) Aleksandars Gluchovas
+// Modified by:
+// Created: 11/04/1999
+// RCS-ID: $Id$
+// Copyright: (c) Aleskandars Gluchovas
+// Licence: GNU General Public License
+/////////////////////////////////////////////////////////////////////////////
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+/////////////////////////////////////////////////////////////////////////////
+
+
+// For compilers that support precompilation, includes "wx/wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+#pragma hdrstop
+#endif
+
+#ifndef WX_PRECOMP
+#include "wx/wx.h"
+#endif
+
+
+#include "lseditorpl.h"
+#include "tdefs.h"
+
+/***** Impelmentation for class wxsLSEditorPlugin *****/
+
+wxsLSEditorPlugin::wxsLSEditorPlugin()
+
+ : mpModel( NULL ),
+ mpView( NULL )
+{}
+
+wxsLSEditorPlugin::~wxsLSEditorPlugin()
+{
+ // view is destroyed by wxWindows along
+ // with it's owned model
+}
+
+void wxsLSEditorPlugin::Create( wxWindow* parent, wxWindowID id )
+{
+ mpModel = new wxTextEditorModel();
+
+ mpView = new wxTextEditorView( parent, id, mpModel );
+
+ mpModel->AddView( mpView );
+ mpView->Activate();
+
+ mpView->AddPinPainter( new TBreakpointPainter() );
+
+ mpView->SyncScrollbars();
+}
+
+void wxsLSEditorPlugin::OnOpen( const string& fname )
+{
+ mpModel->LoadTextFromFile( fname );
+
+ SetFileName( fname );
+}
+
+void wxsLSEditorPlugin::OnSave( const string& fname )
+{
+ mpModel->SaveTextToFile( fname );
+}
+
+void wxsLSEditorPlugin::OnCopy()
+{
+ mpModel->OnCopy();
+}
+
+void wxsLSEditorPlugin::OnCut()
+{
+ mpModel->OnCut();
+}
+
+void wxsLSEditorPlugin::OnPaste()
+{
+ mpModel->OnPaste();
+}
+
+void wxsLSEditorPlugin::OnDelete()
+{
+ mpModel->OnDelete();
+}
+
+void wxsLSEditorPlugin::OnUndo()
+{
+ mpModel->OnUndo();
+}
+
+void wxsLSEditorPlugin::OnRedo()
+{
+ mpModel->OnRedo();
+}
+
+void wxsLSEditorPlugin::SelectAll()
+{
+ mpModel->OnSelectAll();
+}
+
+void wxsLSEditorPlugin::OnGotoLine()
+{
+ mpModel->OnGotoLine();
+}
+
+void wxsLSEditorPlugin::OnGotoLine( int lineNo, int column )
+{
+ mpModel->ResetSelection();
+ mpModel->OnGotoLine( lineNo, column );
+}
+
+void wxsLSEditorPlugin::OnProperties()
+{
+ // not impl.
+}
+
+void wxsLSEditorPlugin::OnFind()
+{
+ mpModel->OnFind();
+}
+
+void wxsLSEditorPlugin::OnFindNext()
+{
+ mpModel->OnFindNext();
+}
+
+void wxsLSEditorPlugin::OnFindPrevious()
+{
+ mpModel->OnFindPrevious();
+}
+
+void wxsLSEditorPlugin::OnReplace()
+{
+ // not impl.
+}
+
+void wxsLSEditorPlugin::OnToggleBookmark()
+{
+ mpModel->OnToggleBookmark();
+}
+
+void wxsLSEditorPlugin::OnNextBookmark()
+{
+ mpModel->OnNextBookmark();
+}
+
+void wxsLSEditorPlugin::OnPreviousBookmark()
+{
+ mpModel->OnPreviousBookmark();
+}
+
+void wxsLSEditorPlugin::OnShowBookmarks()
+{
+ // not impl.
+}
+
+void wxsLSEditorPlugin::SetCheckpoint()
+{
+ mpModel->SetCheckpoint();
+}
+
+bool wxsLSEditorPlugin::CheckpointModified()
+{
+ return mpModel->CheckpointModified();
+}
+
+// UI-updates
+
+bool wxsLSEditorPlugin::CanCopy()
+{
+ return mpModel->CanCopy();
+}
+
+bool wxsLSEditorPlugin::CanCut()
+{
+ return mpModel->CanCopy();
+}
+
+bool wxsLSEditorPlugin::CanPaste()
+{
+ return mpModel->CanPaste();
+}
+
+bool wxsLSEditorPlugin::CanUndo()
+{
+ return mpModel->CanUndo();
+}
+
+bool wxsLSEditorPlugin::CanRedo()
+{
+ return mpModel->CanRedo();
+}
+
+// accesed by framework
+
+bool wxsLSEditorPlugin::IsModified()
+{
+ return mpModel->IsModified();
+}
+
+wxWindow* wxsLSEditorPlugin::GetWindow()
+{
+ return mpView;
+}
+
+void wxsLSEditorPlugin::GetAllText( char** ppBuf, size_t* length )
+{
+ mpModel->GetAllText( ppBuf, *length );
+}
+
+void wxsLSEditorPlugin::SetFileName( const string& fname )
+{
+ mFileName = fname;
+
+ if ( mpView )
+
+ mpView->SetName( fname );
+}
+
+void wxsLSEditorPlugin::HoldCursor( bool hold )
+{
+ mpView->HoldCursor( hold );
+}
+
+string wxsLSEditorPlugin::FindWordAtCursor()
+{
+ mpModel->OnSelectWord();
+
+ char* buf = NULL; size_t len = 0;
+
+ mpModel->GetSelection( &buf, len );
+
+ if ( buf )
+ {
+ string word = string( buf, 0, len );
+ delete [] buf;
+ return word;
+ }
+ else
+ return "";
+}
+
+void wxsLSEditorPlugin::GetCursorPos( int* line, int* column )
+{
+ TPosition pos = mpModel->GetCursor();
+
+ *line = (int)pos.mRow;
+ *column = (int)pos.mCol;
+}
+
+void wxsLSEditorPlugin::SetCursorPos( int line, int column )
+{
+ mpModel->OnGotoLine( line, column );
+}
+
+void wxsLSEditorPlugin::GetPagePos( int* line, int* column )
+{
+ TPosition pos = mpView->GetPagePos();
+
+ *line = pos.mRow;
+ *column = pos.mCol;
+}
+
+void wxsLSEditorPlugin::GetText( int fromLine, int fromColumn,
+ int tillLine, int tillColumn,
+ char** ppBuf, size_t* length )
+{
+ mpModel->GetTextFromRange( TPosition( fromLine, fromColumn ),
+ TPosition( tillLine, tillColumn ),
+ ppBuf, *length );
+}
+
+void wxsLSEditorPlugin::InsertText( int line, int column,
+ char* text, size_t lenght )
+{
+ mpModel->InsertText( TPosition( line, column ),
+ text, lenght );
+}
+
+void wxsLSEditorPlugin::DeleteText( int fromLine, int fromColumn,
+ int tillLine, int tillColumn )
+{
+ mpModel->DeleteRange( TPosition( fromLine, fromColumn ),
+ TPosition( tillLine, tillColumn ) );
+}
+
+void wxsLSEditorPlugin::PositionToXY( int line, int column, int* x, int* y )
+{
+ TPosition scrPos;
+
+ mpView->TextPosToScreenPos( TPosition( line, column ), scrPos );
+ mpView->ScreenPosToPixels( scrPos, *x, *y );
+
+ *y += mpView->mCharDim.y; // lower-right corner
+}
+
+void wxsLSEditorPlugin::GetSelectionRange( int* fromLine, int* fromColumn,
+ int* tillLine, int* tillColumn )
+{
+ TPosition start = mpModel->GetStartOfSelection();
+ TPosition end = mpModel->GetEndOfSelection();
+
+ *fromLine = (int)start.mRow;
+ *fromColumn = (int)start.mCol;
+ *tillLine = (int)end.mRow;
+ *tillColumn = (int)end.mCol;
+}
+
+wxSize wxsLSEditorPlugin::GetCharacterSize()
+{
+ return mpView->GetCharacterSize();
+}
+
+bool wxsLSEditorPlugin::IsUnixText()
+{
+ return mpModel->IsUnixText();
+}
+
+wxTextEditorModel& wxsLSEditorPlugin::GetModel()
+{
+ return *mpModel;
+}
+
+wxTextEditorView& wxsLSEditorPlugin::GetView()
+{
+ return *mpView;
+}