You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdelibs/kate/interfaces/view.h

304 lines
8.7 KiB

/* This file is part of the KDE libraries
Copyright (C) 2001 Christoph Cullmann <cullmann@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License version 2 as published by the Free Software Foundation.
This library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef _KATE_VIEW_INCLUDE_
#define _KATE_VIEW_INCLUDE_
#include <ktexteditor/document.h>
#include <ktexteditor/view.h>
#include <ktexteditor/clipboardinterface.h>
#include <ktexteditor/popupmenuinterface.h>
#include <ktexteditor/markinterface.h>
#include <ktexteditor/viewcursorinterface.h>
#include <ktexteditor/codecompletioninterface.h>
#include <ktexteditor/dynwordwrapinterface.h>
class KConfig;
namespace Kate
{
class Document;
/**
The Kate::View text editor interface.
@author Cullmann Christoph, modified by rokrau (6/21/01)
*/
class KATEPARTINTERFACES_EXPORT View : public KTextEditor::View, public KTextEditor::ClipboardInterface,
public KTextEditor::PopupMenuInterface, public KTextEditor::ViewCursorInterface,
public KTextEditor::CodeCompletionInterface, public KTextEditor::DynWordWrapInterface
{
Q_OBJECT
public:
/**
Return values for "save" related commands.
*/
enum saveResult { SAVE_OK, SAVE_CANCEL, SAVE_RETRY, SAVE_ERROR };
/**
Constructor (should much rather take a reference to the document).
*/
View ( KTextEditor::Document *, QWidget *, const char *name = 0 );
/**
Destructor, you need a destructor if Scott Meyers says so.
*/
virtual ~View ();
/**
Set editor mode
*/
virtual bool isOverwriteMode() const { return false; }
/**
Get editor mode
*/
virtual void setOverwriteMode( bool ) { }
/**
Gets the text line where the cursor is on
*/
virtual QString currentTextLine() { return 0L; }
/**
Gets the word where the cursor is on
*/
virtual QString currentWord() { return 0L; }
/**
Gets the word at position x, y. Can be used to find
the word under the mouse cursor
*/
virtual QString word(int , int ) { return 0L; }
/**
Insert text at the current cursor position.
@param mark is unused.
*/
virtual void insertText(const QString &mark ) { Q_UNUSED(mark); }
/**
Works exactly like closeURL() of KParts::ReadWritePart
*/
virtual bool canDiscard() { return false; }
public:
virtual int tabWidth() = 0;
virtual void setTabWidth(int) = 0;
virtual void setEncoding (QString e) = 0;
/**
Returns true if this editor is the only owner of its document
*/
virtual bool isLastView() = 0;
public slots:
/**
Flushes the document of the text widget. The user is given
a chance to save the current document if the current document has
been modified.
*/
virtual void flush () { ; };
/**
Saves the file under the current file name. If the current file
name is Untitled, as it is after a call to newFile(), this routine will
call saveAs().
*/
virtual saveResult save() { return SAVE_CANCEL; };
/**
Allows the user to save the file under a new name.
*/
virtual saveResult saveAs() { return SAVE_CANCEL; };
/**
Moves the current line or the selection one position to the right.
*/
virtual void indent() { ; };
/**
Moves the current line or the selection one position to the left.
*/
virtual void unIndent() { ; };
/**
Optimizes the selected indentation, replacing tabs and spaces as needed.
*/
virtual void cleanIndent() { ; };
/**
Comments out current line.
*/
virtual void comment() { ; };
/**
Removes comment signs in the current line.
*/
virtual void uncomment() { ; };
/**
Some simply key commands.
*/
virtual void keyReturn () { ; };
virtual void keyDelete () { ; };
virtual void backspace () { ; };
virtual void killLine () { ; };
/**
Move cursor in the view
*/
virtual void cursorLeft () { ; };
virtual void shiftCursorLeft () { ; };
virtual void cursorRight () { ; };
virtual void shiftCursorRight () { ; };
virtual void wordLeft () { ; };
virtual void shiftWordLeft () { ; };
virtual void wordRight () { ; };
virtual void shiftWordRight () { ; };
virtual void home () { ; };
virtual void shiftHome () { ; };
virtual void end () { ; };
virtual void shiftEnd () { ; };
virtual void up () { ; };
virtual void shiftUp () { ; };
virtual void down () { ; };
virtual void shiftDown () { ; };
virtual void scrollUp () { ; };
virtual void scrollDown () { ; };
virtual void topOfView () { ; };
virtual void bottomOfView () { ; };
virtual void pageUp () { ; };
virtual void shiftPageUp () { ; };
virtual void pageDown () { ; };
virtual void shiftPageDown () { ; };
virtual void top () { ; };
virtual void shiftTop () { ; };
virtual void bottom () { ; };
virtual void shiftBottom () { ; };
/**
Presents a search dialog to the user.
*/
virtual void find() { ; };
/**
Presents a replace dialog to the user.
*/
virtual void replace() { ; };
/**
Presents a "Goto Line" dialog to the user.
*/
virtual void gotoLine() { ; };
public:
/**
Reads session config out of the KConfig object. This also includes
the actual cursor position and the bookmarks.
*/
virtual void readSessionConfig(KConfig *) { ; };
/**
Writes session config into the KConfig object.
*/
virtual void writeSessionConfig(KConfig *) { ; };
public slots:
/**
Get the end of line mode (Unix, Macintosh or Dos).
*/
virtual int getEol() { return 0L; }
/**
Set the end of line mode (Unix, Macintosh or Dos).
*/
virtual void setEol(int) { }
/**
Set focus to the current window.
*/
// Should remove this, it's redundant.
virtual void setFocus () { QWidget::setFocus(); }
/**
Searches for the last searched text forward from cursor position.
@param forward determines the search direction.
*/
virtual void findAgain(bool forward ) { Q_UNUSED(forward); }
/**
Searches for the last searched text forward from cursor position.
Searches forward from current cursor position.
*/
virtual void findAgain () { };
/**
Searches for the last searched text forward from cursor position.
Searches backward from current cursor position.
*/
virtual void findPrev () { }
/**
Presents an edit command popup window, where the user can
apply a shell command to the contents of the current window.
*/
virtual void slotEditCommand () { }
/**
Sets icon border on or off depending on
@param enable the flag
*/
virtual void setIconBorder (bool enable ) { Q_UNUSED(enable); }
/**
Toggles icon border.
*/
virtual void toggleIconBorder () { }
/**
Sets display of line numbers on/off depending on @p enable
@param enable the flag
*/
virtual void setLineNumbersOn (bool enable) { Q_UNUSED(enable); }
/**
Toggles display of lineNumbers
*/
virtual void toggleLineNumbersOn () {}
public:
/**
Returns whether iconborder is visible.
*/
virtual bool iconBorder() { return false; }
/**
@return Wheather line numbers display is on
*/
virtual bool lineNumbersOn() { return false; }
/**
Returns a pointer to the document of the view.
*/
virtual Document *getDoc () { return 0L; }
public slots:
/**
Increase font size.
*/
virtual void slotIncFontSizes () { }
/**
Decrease font size.
*/
virtual void slotDecFontSizes () { }
virtual void gotoMark (KTextEditor::Mark *mark) = 0;
/**
* @deprecated No longer does anything. Use KTextEditor
* equivalents
*/
// TODO: Remove when BIC is allowed
virtual void toggleBookmark () {}
virtual void gotoLineNumber( int ) = 0;
signals:
void gotFocus (View *);
// void newStatus(); // Kate app connects to this signal, should be in the interface
public:
virtual void setActive (bool b) = 0;
virtual bool isActive () = 0;
};
KATEPARTINTERFACES_EXPORT View *view (KTextEditor::View *view);
}
#endif