00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef __CUTE_H__
00019 #define __CUTE_H__
00020
00021
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
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;
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