Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members  

cute.h

00001 /***************************************************************************
00002                           cute.h  -  description
00003                              -------------------
00004     begin                : Sam Sep 28 23:53:49 CEST 2002
00005     copyright            : (C) 2002 by Heiko Köhler
00006     email                : heicom@users.sourceforge.net
00007  ***************************************************************************/
00008 
00009 /***************************************************************************
00010  *                                                                         *
00011  *   This program is free software; you can redistribute it and/or modify  *
00012  *   it under the terms of the GNU General Public License as published by  *
00013  *   the Free Software Foundation; either version 2 of the License, or     *
00014  *   (at your option) any later version.                                   *
00015  *                                                                         *
00016  ***************************************************************************/
00017 
00018 #ifndef __CUTE_H__
00019 #define __CUTE_H__
00020 
00021 // include files for QT
00022 #include <qstring.h>
00023 #include <qpopupmenu.h>
00024 #include <qmainwindow.h>
00025 #include <qaccel.h>
00026 #include <qmenubar.h>
00027 #include <qtoolbar.h>
00028 #include <qpixmap.h>
00029 #include <qtoolbutton.h>
00030 #include <qapp.h>
00031 #include <qstatusbar.h>
00032 #include <qwhatsthis.h>
00033 #include <qmsgbox.h>
00034 #include <qfiledialog.h>
00035 #include <qprinter.h>
00036 #include <qpainter.h>
00037 #include <qaction.h>
00038 #include <qregexp.h>
00039 #include <qcombobox.h>
00040 #include <qmap.h>
00041 #include <qtextbrowser.h>
00042 
00043 #include <qextmdimainfrm.h>
00044 #include <kdockwidget.h>
00045 
00046 #include <map>
00047 #include <list>
00048 #include <string>
00049 
00050 // application specific includes
00051 #include "resource.h"
00052 #include "readtags.h"
00053 #include "icons/pixmaps.h"
00054 #include "cuteview.h"
00055 #include "python_api.h"
00056 #include "shortcuts.h"
00057 
00058 class OutputView;
00059 class DirectoryView;
00060 class QCommandBox;
00061 class CmdInterpreter;
00062 class SettingsDlg;
00063 class FindDlg;
00064 class ReplaceDlg;
00065 class FindInFilesDlg;
00066 class ShortcutsDlg;
00067 class CUTEScintilla;
00068 class CUTEShell;
00069 class HelpViewer;
00070 
00072 class Bookmark
00073 {
00074 public:
00076     Bookmark(CUTEView *view, int handle){
00077         m_view = view;
00078         this->handle = handle;
00079         m_name = m_view->line(line());
00080     }
00082     int line() { return m_view->scintilla()->markerLine(handle); }
00084     QString name() { return m_name.replace(QRegExp("\\s"), " ").stripWhiteSpace(); }
00086     CUTEView *view() { return m_view; }
00087 private:
00088     CUTEView *m_view;
00089     int handle;
00090     QString m_name;
00091 };
00092 
00093 
00094 extern std::list<std::string> recentFilesList;
00095 
00102 class CUTE : public QextMdiMainFrm
00103 {
00104     Q_OBJECT
00105     struct TagPosition;
00106     friend class CUTEScintilla;
00107     friend class CmdInterpreter;
00108     friend class Shortcuts;
00109     friend void API::initcute();
00110     friend PyObject *API::activateView(PyObject*, PyObject*);
00111     friend PyObject *API::viewList(PyObject*, PyObject*);
00112 public:
00114     CUTE();
00116     ~CUTE();
00118     void initLangMenu();
00120     void initActions();
00122     void initEditActions();
00124     void initMenuBar();
00127     void initToolBar();
00129     void initStatusBar();
00131     void initDoc();
00133     void initView();
00135     bool loadFile(const QString&, bool recentFile=false);
00137     bool queryExit();
00139     void addBookmark(Bookmark *bm);
00141     void addBookmark(std::string file, int line);
00143     void deleteBookmark();
00145     void printOutput(std::string str);
00147     void clearOutput();
00149     void setSession(const char *str) { 
00150         session = new char[strlen(str)+1]; strcpy(session, str); }
00152     void saveSession();
00154     void loadSession(QString file);
00156     void filter(QString cmd);
00158     void insertCommand(QString cmd);
00159 public slots:
00161     void statusCallback(int id_);
00163     void slotFileNew();
00165     void slotFileOpen();
00167     void slotFileReopen();
00169     void slotFileChangeWorkingDir();
00171     void slotFileSave();
00173     void slotFileSaveAs();
00175     void slotFileSaveAll();
00177     void slotFileClose();
00179     void slotFileLoadTagsFile();
00181     void slotFileUnloadTagsFile();
00183     void slotFilePrint();
00185     void slotFileQuit();
00187     void slotEditGotoMatchingBrace();
00189     void slotEditSelectToMatchingBrace();
00191     void slotEditUndo();
00193     void slotEditRedo();
00196     void slotEditCut();
00198     void slotEditCopy();
00200     void slotEditPaste();
00202     void slotEditDelete();
00204     void slotEditIndent();
00206     void slotEditUnindent();
00208     void slotEditSelectAll();
00210     void slotEditInsertCommand();
00212     void slotEditFilter();
00214     void slotEditBlockComment();
00216     void slotEditStreamComment();
00218     void slotSearchFind();
00220     void slotSearchFindNext();
00222     void slotSearchFindPrevious();
00224     void slotSearchFindInFiles();
00226     void slotSearchReplace();
00228     void slotSearchGoto();
00230     void slotSearchFindTag();
00232     void slotSearchFindNextTag();
00234     void slotSearchFindPreviousTag();
00236     void slotSearchToggleBookmark();
00238     void slotSearchNextBookmark();
00240     void slotSearchPrevBookmark();
00242     void slotSearchRenameBookmark();
00244     void slotViewToggleCurrentFold();
00246     void slotViewToggleAllFolds();
00248     void slotViewWrapLines();
00250     void slotViewBraceMatch();
00252     void slotViewToolBar();
00254     void slotViewCmdToolBar();
00256     void slotViewStatusBar();
00258     void slotViewTaskBar();
00260     void slotViewShowDirView();
00262     void slotViewShowMessages();
00264     void slotViewShowStdout();
00266     void slotViewShowStderr();
00268     void slotViewShowShell();
00270     void slotViewShowSearch();
00272     void slotViewFullScreen();
00274     void slotViewLineNumbers();
00276     void slotViewWhiteSpaces();
00278     void slotViewMargin();
00280     void slotViewFoldMargin();
00282     void slotViewZoomIn();
00284     void slotViewZoomOut();
00286     void slotToolsCompile();
00288     void slotToolsBuild();
00290     void slotToolsGo();
00292     void slotToolsKill();
00294     void slotToolsNextMessage();
00296     void slotToolsPrevMessage();
00298     void slotOptSettings();
00300     void slotOptShortcuts();
00302     void slotOptAutoIndent();
00304     void slotOptEditConfigFile();
00306     void slotOptShowCutercFile();
00308     void slotOptQtConfig();
00310     void slotExtraRunScript();
00312     void slotExtraRunCurrentFile();
00314     void slotExtraRunPythonString();
00316     void slotExtraEvalSelection();
00318     void slotExtraSaveSession();
00320     void slotExtraLoadSession();
00322     void slotExtraCloseSession();
00324     void slotExtraStartMacroRecording();
00326     void slotExtraStopMacroRecording();
00328     void slotExtraRunMacro();
00330     void slotExtraLoadMacro();
00332     void slotExtraSaveMacro();
00334     void slotExtraBuildTagsFile();
00336     void slotWindowsDialog();
00338     void slotHelpHandbook();
00340     void slotHelpAbout();
00342     void slotHelpLicense();
00344     void slotHelpAboutQt();
00346     void slotStatusHelpMsg(const QString &text);
00348     virtual void switchToToplevelMode();
00350     virtual void switchToChildframeMode();
00352     void switchStyle(int item);
00354     void switchLineFeed(int item);
00356     void switchTab(int item);
00358     void switchLang(int item);
00360     void updateViews();
00362     void execCmd(QString cmd = QString::null);
00364     void evalCmdParameter();
00366     void slotCursorPositionChanged(int line, int pos);
00368     void slotEscapePressed();
00370     void slotUpdateBookmarksMenu();
00372     void slotGotoBookmark(int id);
00374     void addRecentFile(QString file);
00376     void configure();
00378     void slotClearAllOutputViews();
00380     void addTool(char *name, char *cute_command);
00382     void updateEditActions();
00383 protected slots:
00384     void activateView(QextMdiChildView *pWnd);
00385     void readyReadGrepStdout();
00387     void readStdout();
00389     void readStderr();
00391     void slotProcessExited();
00392     void slotJump(QString fileName, unsigned int lineno, bool mark=true);
00393     void updateRecentFilesMenu();
00394     void openRecentFile( int item );
00395     void slotLoadFile(const QString&);
00396     void slotLastChildViewClosed() { setCaption("CUTE"); }
00397     void slotExecTool(int);
00398     void autoComplete();
00399     void findSelection();
00400     void findTag(TagPosition tag);
00401     void slotProcessKilled();
00402     void slotLangConfigFileMenu(int item);
00403 signals:
00404     void killProcess();
00405 protected:
00407     void addQExtMDIFrame(QWidget* pNewView, int flags);
00409     void resizeEvent ( QResizeEvent * );
00411     void showEvent( QShowEvent *e );
00413     void closeEvent( QCloseEvent *e );
00415     QPopupMenu *createLangConfigFileMenu();
00416 private:
00418     struct TagPosition
00419     {
00420         TagPosition(QString f, int l) : file(f), line(l) {}
00421         TagPosition(QString f, QString p) : file(f), pattern(p) {}
00422         QString file;
00423         QString pattern;
00424         int line;
00425     };
00431     CUTEView *view;
00433     QPopupMenu *fileMenu;
00435     QPopupMenu *editMenu;
00437     QPopupMenu *viewMenu;
00439     QPopupMenu *langMenu;
00441     QPopupMenu *helpMenu;
00443     QPopupMenu *themes;
00445     QPopupMenu *tabMenu;
00447     QPopupMenu *lineFeed;
00449     QPopupMenu *toolsMenu;
00450     QPopupMenu *bookmarksMenu;
00451     QPopupMenu *recentFilesMenu;
00452     QPopupMenu *langConfigFileMenu;
00453     
00454     QToolBar *toolbar;
00455     QToolBar *cmdToolbar;
00456     QCommandBox *cmdLine;
00457     int m_currentNumber;    // view number
00458     
00459     QAction *fileNew, *fileOpen, *fileReopen, *fileChangeWorkingDir, *fileClose, *fileSave, *fileSaveAll, 
00460         *fileSaveAs, *filePrint, *fileLoadTagsFile, *fileUnloadTagsFile, *fileExit;
00461     QAction *editGotoMatchingBrace, *editSelectToMatchingBrace, *editUndo, *editRedo, *editCut, *editCopy, 
00462         *editPaste, *editDelete, *editSelectAll, *editIndent, *editUnindent, *editInsertCommand, *editFilter, 
00463         *editAutoComplete, *editStreamComment, *editBlockComment;
00464     QAction *searchFind, *searchFindNext, *searchFindPrevious, *searchFindInFiles, *searchReplace,
00465         *searchGoTo, *searchToggleBookmark, *searchClearAllBookarks, *searchRenameBookmark,
00466         *searchFindNextBookmark, *searchFindPrevBookmark, *searchFindSelection, *searchFindTag, 
00467         *searchFindNextTag, *searchFindPreviousTag;
00468     QAction *viewFullscreen, *viewToolbar, *viewStatusbar, *viewWhitespaces, *viewEndOfLines,
00469         *viewLineNumbers, *viewMargin, *viewFoldMargin, *viewZoomIn, *viewZoomOut, *viewToggleCurrentFold,
00470         *viewToggleAllFolds, *viewWrapLines, *viewBraceMatch, *viewCmdToolbar, *viewShowDirView, 
00471         *viewShowMessages, *viewShowStdout, *viewShowStderr, *viewShowShell, *viewShowSearch;
00472     QAction *toolsCompile, *toolsBuild, *toolsGo, *toolsStop, *toolsNextMessage, *toolsPrevMessage;
00473     QAction *optionsPreferences, *optionsShortcuts, *optionsEditConfigFile, *optionsQtConfig, 
00474         *optionsAutoIndent, *optionsShowCutercFile;
00475     QAction *extraRunScript, *extraRunCurrentFile, *extraSaveSession, *extraLoadSession, *extraAddTool, 
00476         *extraRunCmd, *extraRunPyCmd, *extraEvalSelection, *extraCloseSession, *extraStartMacroRecording, 
00477         *extraStopMacroRecording, *extraRunMacro, *extraLoadMacro, *extraSaveMacro, *extraBuildTagsFile;
00478     QAction *windowsNext, *windowsPrevious, *windowsTile, *windowsCascade, *windowsShowWindows;
00479     QAction *helpHandbook, *helpAbout, *helpLicense, *helpAboutQt;
00480 
00482     QAction     *charLeft, *charRight, *lineUp, *lineDown, *wordPartLeft, *wordPartRight, *wordLeft, 
00483             *wordRight, *VCHome, *homeDisplay, *lineEnd, *lineScrollDown, *lineScrollUp, *paraUp, 
00484             *paraDown, *pageUp, *pageDown, *documentStart, *documentEnd, *tab, *backTab, *selectAll,
00485             *charLeftExtend, *charRightExtend, *lineUpExtend, *lineDownExtend, *wordPartLeftExtend,
00486             *wordPartRightExtend, *wordLeftExtend, *wordRightExtend, *VCHomeExtend, *homeDisplayExtend,
00487             *lineEndExtend, *paraUpExtend, *paraDownExtend, *pageUpExtend, *pageDownExtend,
00488             *documentStartExtend, *documentEndExtend, *deleteBack, *deleteBackNotLine, *clear,
00489             *delWordLeft, *delWordRight, *delLineLeft, *delLineRight, *newLine, *lineDelete,
00490             *lineDuplicate, *lineTranspose, *lineCut, *cut, *lineCopy, *copy, *paste, *redo, *undo,
00491             *cancel, *editToggleOvertype, *lowerCase, *upperCase, *zoomIn, *zoomOut;
00492 
00493     int motif_style, cde_style, interlace_style, motifplus_style, sgi_style, windows_style, platinum_style;
00494     int metal_style, step_style, default_style;
00495     int unix_line_feed, win_line_feed, mac_line_feed;
00497     ReplaceDlg *replaceDlg;
00499     FindDlg *findDlg;
00501     FindInFilesDlg *findInFilesDlg;
00503     SettingsDlg *settingsDlg;
00505     ShortcutsDlg *shortcutsDlg;
00507     KDockWidget *dockStdout, *dockStderr, *dockOutput, *dockGrepout, *dockDirview, *dockShell;
00509     OutputView *stdout, *stderr, *output, *grepout;
00511     CUTEShell *cuteShell;
00513     DirectoryView *dirView;
00515     HelpViewer *helpViewer;
00517     std::list<Bookmark*> bookmarks;
00519     std::map<int, std::string> cmd_map;
00521     char *session;
00523     CmdInterpreter *cmdInterpreter;
00525     tagFile *tags;
00527     std::list<TagPosition> tagStack;
00529     std::list<TagPosition>::const_iterator currentTag;
00531     QString lastDir;
00533     QMap<int, QAction*> editActions;
00534 };
00535 
00536 #endif
00537 

Generated on Wed Sep 10 03:46:24 2003 by doxygen1.2.18