Logo Search packages:      
Sourcecode: qdevelop version File versions  Download package

editor.h

/*
* This file is part of QDevelop, an open-source cross-platform IDE
* Copyright (C) 2006  Jean-Luc Biord
*
* 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
*
* Contact e-mail: Jean-Luc Biord <jl.biord@free.fr>
* Program URL   : http://qdevelop.org
*
*/
#ifndef EDITOR_H
#define EDITOR_H

#include "textEdit.h"
#include "mainimpl.h"
#include "ui_findwidget.h"
#include <QTextDocument>
#include <QTextEdit>
#include <QPointer>
#include <QTextCursor>
#include <QScrollBar>
#include <QTimer>
#include <QTextBlockUserData>
//
Q_DECLARE_METATYPE(Tag)
//
typedef struct
{
      QStringList textFind;
      QStringList textReplace;
      bool caseSensitive;
      bool backwards;
      bool wholeWords;
      bool prompt;
} ReplaceOptions;
//
typedef QMap<QString, QStringList> classesMethodsList; 
//
class QToolButton;
class TabWidget;
class QComboBox;
class QTimer;
class TextEditInterface;
class QHBoxLayout;
//
class BlockUserData : public QTextBlockUserData
{
public:
      bool bookmark;
      bool breakpoint;
      QString breakpointCondition;
      bool isTrue;
      QString errorString;
      QString warningString;
      QTextBlock block;
};
//
class Editor : public QWidget
{
Q_OBJECT
protected slots:
      //void closeEvent(QCloseEvent * event);
public:
      void previousWarningError();
      void nextWarningError();
      void clearErrorsAndWarnings();
      void setTextColor(QColor textColor);
      Editor(TabWidget *parent, MainImpl *mainimpl, InitCompletion *completion, QString name="");
      ~Editor();
      bool open(bool silentMode);
      bool save();
      bool close();
      void setFilename(QString name) { m_filename = name; m_textEdit->document()->setModified(true);};
      QString filename() { return m_filename; };
      QString shortFilename();
      QString directory();
      static QString shortFilename(QString nomLong);
      static QString suffixe(QString filename);
      void findContinue();
      void findPrevious();
      QStringList classes();
      QStringList methodes(QString classe);
      QList<int> breakpoints();
      void toggleBookmark(int line);
      void clearAllBookmarks();
      void deleteBreakpoint(int line);
      void setBackgroundColor( QColor c ){ m_textEdit->setBackgroundColor(c); };
      void setCurrentLineColor( QColor c ){ m_textEdit->setCurrentLineColor(c); };
      void setMatchingColor( QColor c ){ m_textEdit->setMatchingColor(c); };
      void setShowWhiteSpaces( bool b ){ m_textEdit->setShowWhiteSpaces( b ); }
      void gotoMatchingBracket(){ m_textEdit->gotoMatchingBracket(); };
      QString tempFilename(){ return m_textEdit->tempFilename(); };
      void displayEditorToolbar( bool b );
      int currentLineNumber(){ return m_textEdit->currentLineNumber(); };
      int currentLineNumber(QTextBlock block){ return m_textEdit->currentLineNumber(block); };
      void print(){ m_textEdit->print(); };
      void toggleBreakpoint(int line, QString breakpointCondition, bool isTrue);
      void setExecutedLine(int line);
      void emitListBreakpoints();
      void copy() { m_textEdit->copy(); };
      void cut() { m_textEdit->cut(); };
      void paste() { m_textEdit->paste(); };
      void undo() { m_textEdit->document()->undo(); };
      void redo() { m_textEdit->document()->redo(); };
      void comment(TextEdit::ActionComment action) { m_textEdit->comment(action); };
      void selectAll() { m_textEdit->selectAll(); };
      void slotIndent() { m_textEdit->slotIndent(); };
      void slotUnindent() { m_textEdit->slotUnindent(); };
      void dialogGotoLine() { m_textEdit->dialogGotoLine(); };
      void completeCode() { m_textEdit->completeCode(); };
      void gotoImplementation() { m_textEdit->slotGotoImplementation(); };
      void gotoDeclaration() { m_textEdit->slotGotoDeclaration(); };
      QString wordUnderCursor() { return m_textEdit->wordUnderCursor(); };
      void textPlugin(TextEditInterface *iTextEdit) { m_textEdit->textPlugin(iTextEdit); };
      QString classNameUnderCursor() { return m_textEdit->classNameUnderCursor(); };
      int verticalScrollBar() { return m_textEdit->verticalScrollBar()->value(); };
      void setVerticalScrollBar(int s) { m_textEdit->verticalScrollBar()->setValue(s); };
      void setAutobrackets(bool b) { m_textEdit->setAutobrackets(b); };
      void setMatch(bool b) { m_textEdit->setMatch(b); };
      void saveAsTemp() { m_textEdit->saveAsTemp(); };
      void setHighlightCurrentLine(bool b) { m_textEdit->setHighlightCurrentLine(b); };
      bool isModified() { return m_textEdit->document()->isModified(); };
      void setFocus();
      void replace();
      void setActiveEditor(bool b);
      void setIntervalUpdatingTreeClasses(int i) { m_intervalUpdatingClasses = i*1000;};
      void setShowTreeClasses(bool s);
      void toggleBreakpoint() { toggleBreakpoint( m_textEdit->currentLineNumber(), QString(), false ); };
      void toggleBookmark() { toggleBookmark( m_textEdit->currentLineNumber() ); };
      QList<int> bookmarksList();
      QList<QTextBlock> breakpointsList();
      bool inQuotations(int position, QString text);
      QString toPlainText() { return m_textEdit->toPlainText(); };
      void insertText(QString text, int insertAfterLine) { m_textEdit->insertText(text, insertAfterLine); };
      void setNameOtherFile(QString oldName, QString newName);
      void methodsList();
      //void keyPress(QKeyEvent * event);
      //
      
      inline QString getOtherFileToolTip() { return m_otherFileButton->toolTip(); }
      inline QString getOtherFileIcon() { return m_otherFileIcon; }
      inline bool hasOtherFile() { return !m_nameOtherFile.isEmpty(); }
public slots:
      void slotEndBuild();
      void gotoLine( int line, bool moveTop);
      void slotComboClasses(QString text=QString());
      void slotModifiedEditor(bool modified);
      void setLineNumbers(bool activate) { m_textEdit->activateLineNumbers(activate); };
      void setSelectionBorder(bool activate) { m_textEdit->setSelectionBorder(activate); };
      void setFont(QFont fonte) { m_textEdit->setFont(fonte); };
      void setEndLine(MainImpl::EndLine end) { m_textEdit->setEndLine(end); };
      void setAutoIndent(bool activate) { m_textEdit->setAutoIndent(activate); };
      void setSyntaxHighlight(bool activate);
      void setTabStopWidth(int size) { m_textEdit->setTabStopWidth(size) ; };
      void setAutoCompletion(bool activate) { m_textEdit->setAutoCompletion(activate) ; };
      void setTabSpaces(bool t) { m_textEdit->setTabSpaces(t) ; };
      void setSyntaxColors(QTextCharFormat a, QTextCharFormat b, QTextCharFormat c, QTextCharFormat d, QTextCharFormat e, QTextCharFormat f, QTextCharFormat g);
      void slotClassesMethodsList();      
      void slotOtherFile();
      void find();
      QString selection();
      void slotMessagesBuild(QString list, QString directory);
      //void showMaximized();
private slots:    
      //void slotMaximizeButtonClicked();
      void slotComboMethods(int index);
      void slotFindWidget_textChanged(QString text="", bool fromButton=false);
      void slotFindPrevious();
      void slotFindNext();
      void slotTimerUpdateClasses();
      void slotTimerCheckIfModifiedOutside();
private:
      TabWidget *m_parent;
      QPointer<LineNumbers> m_lineNumbers;
      QTextCursor m_previousCursor;
      classesMethodsList m_classesMethodsList;
      QString m_findExp;
      QTextDocument::FindFlags m_findOptions;
      QComboBox *m_comboClasses, *m_comboMethods;
      QToolButton *m_otherFileButton;
      QString m_otherFileIcon;
      //QToolButton *m_maximizedButton;
      QToolButton *m_refreshButton;
      QString m_nameOtherFile;
      MainImpl *m_mainimpl;
      QWidget *m_findWidget;
      TextEdit *m_textEdit;
      QString m_filename;
      Ui::FindWidget uiFind;
      QTimer *autoHideTimer;
      bool m_backward;
      ReplaceOptions m_replaceOptions;
      bool m_activeEditor;
      QTimer m_timerUpdateClasses;
      QTimer m_timerCheckLastModified;
      bool m_showTreeClasses;
      int m_intervalUpdatingClasses;
      quint16 m_checksum;
      InitCompletion *m_completion;
      QDateTime m_lastModified;
      QWidget *m_editorToolbar;
      void checkBookmarks();
      void updateOtherFile(QString currentFile);
protected:
signals:
      void editorModified(Editor *, bool);
      void refreshClasses(QString);
      void breakpoint(QString, unsigned int, BlockUserData *); 
      void updateClasses(QString, QString);
      void otherFileChanged(void);
};

#endif

Generated by  Doxygen 1.6.0   Back to index