/******************************************************************************** * * * T h e A d i e T e x t E d i t o r * * * ********************************************************************************* * Copyright (C) 1998,2024 by Jeroen van der Zijp. All Rights Reserved. * ********************************************************************************* * 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 3 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, see . * ********************************************************************************/ #ifndef TEXTWINDOW_H #define TEXTWINDOW_H class Adie; class Syntax; class HelpWindow; class Preferences; class ShellCommand; // Array of styles typedef FXArray FXHiliteArray; // Editor main window class TextWindow : public FXMainWindow { FXDECLARE(TextWindow) friend class Preferences; protected: FXToolBarShell *dragshell1; // Shell for floating menubar FXToolBarShell *dragshell2; // Shell for floating toolbar FXToolBarShell *dragshell3; // Shell for floating search bar FXDockSite *topdock; // Topmost dock area FXDockSite *bottomdock; // Bottom dock area FXDockSite *leftdock; // Left dock area FXDockSite *rightdock; // Bottom dock area FXMenuPane *filemenu; // File menu FXMenuPane *editmenu; // Edit menu FXMenuPane *gotomenu; // Goto menu FXMenuPane *searchmenu; // Search menu FXMenuPane *shellmenu; // Shell menu FXMenuPane *optionmenu; // Option menu FXMenuPane *viewmenu; // View menu FXMenuPane *windowmenu; // Window menu FXMenuPane *helpmenu; // Help menu FXMenuPane *syntaxmenu; // Syntax menu FXMenuPane *tabsmenu; // Tab selection menu FXVerticalFrame *treebox; // Tree box containing directories/files FXHorizontalFrame *undoredoblock; // Undo/redo block on status line FXHorizontalFrame *editorframe; // Editor frame FXHorizontalFrame *loggerframe; // Logger frame FXText *editor; // Editor text widget FXText *logger; // Logger text widget FXDirList *dirlist; // Directory view FXComboBox *filter; // Combobox for pattern list FXLabel *clock; // Time FXLabel *language; // Language FXMenuBar *menubar; // Menu bar FXToolBar *toolbar; // Tool bar FXToolBar *searchbar; // Incremental search bar FXTextField *searchtext; // Incremental search text field FXStatusBar *statusbar; // Status bar FXFont *font; // Text window font Syntax *syntax; // Syntax highlighter FXUndoList undolist; // Undo list FXRecentFiles mrufiles; // Recent files list FXHiliteArray styles; // Highlight styles FXint bookmark[10]; // Book marks FXint insertpoint; // Insert point FXString filename; // File being edited FXTime filetime; // Original modtime of file FXbool filenameset; // Filename is set FXString delimiters; // Text delimiters FXString searchpaths; // Search paths for files ShellCommand *shellCommand; // Running shell command, if any FXint initialwidth; // Initial width FXint initialheight; // Initial height FXbool initialsize; // New window is initialwidth x initialheight FXString isearchString[20]; // Incremental search strings FXuint isearchOption[20]; // Incremental search options FXbool isearchReplace; // Replace new entry FXint isearchIndex; // Incremental search index FXint isearchpos; // Incremental search position FXString searchstring; // String of last search FXuint searchflags; // Incremental search flags FXbool searching; // Incremental search in effect FXbool showsearchbar; // Showing incremental search bar FXbool modeline; // Set modes from modeline FXbool autoindent; // Autoindent mode FXint wrapcols; // Wrap lines at this column if fixed wrap FXbool wrapping; // Wrapping lines FXbool fixedwrap; // Wrap lines at fixed column FXint tabcols; // Tab indents this many columns FXbool hardtabs; // Insert hard tabs FXint barcols; // Number of columns for line numbers FXint cursormoved; // Cursor moved counter FXuint undoMaxSize; // Maximum undo buffer size FXuint undoKeepSize; // Keep up to this size when trimming FXbool mergeundos; // Merge undos FXbool showlogger; // Showing error logger FXbool colorize; // Syntax coloring on if possible FXbool stripcr; // Strip carriage returns FXbool stripsp; // Strip trailing spaces FXbool appendcr; // Append carriage returns FXbool appendnl; // Append missing newline at end of text FXbool saveviews; // Save views of files FXbool savemarks; // Save bookmarks of files FXbool warnchanged; // Warn if changed by other program protected: // Buffer I/O conversions enum{ CRLF=1, // CRLF versus LF LINE=2, // Append end of line TRIM=4 // Trim trailing space }; private: TextWindow(){} TextWindow(const TextWindow&); TextWindow& operator=(const TextWindow&); void createMenubar(); void createToolbar(); void createSearchbar(); void createStatusbar(); void readRegistry(); void writeRegistry(); FXint forwardByContext(FXint pos) const; FXint backwardByContext(FXint pos) const; FXint findRestylePoint(FXint pos,FXint& style) const; void restyleText(); void restyleText(FXint pos,FXint del,FXint ins); FXint restyleRange(FXint beg,FXint end,FXint& changed,FXint rule); FXHiliteStyle readStyleForRule(const FXString& group,const FXString& name,const FXString& style); void writeStyleForRule(const FXString& group,const FXString& name,const FXHiliteStyle& style); void loadSearchHistory(); void saveSearchHistory(); void addSearchHistory(const FXString& pat,FXuint opt,FXbool rep); void updateBookmarks(FXint pos,FXint nd,FXint ni); FXbool insertSel(); FXbool extractSel(); FXbool insertFromFile(const FXString& file,FXint sp,FXint ep,FXint sc,FXint ec); FXbool extractToFile(const FXString& file,FXint sp,FXint ep,FXint sc,FXint ec); FXbool matchesSelection(const FXString& string,FXint* beg,FXint* end,FXuint flgs,FXint npar) const; FXbool newDoc(); FXbool createDoc(); FXbool createDoc(const FXString& file); FXbool saveDoc(); FXbool saveDocAs(); FXbool saveDocTo(); FXbool reloadDoc(); FXbool openDoc(); FXbool openDoc(const FXString& file); FXbool switchDoc(); FXbool switchDoc(const FXString& file); FXbool openSelDoc(); private: static FXbool loadBuffer(const FXString& file,FXString& buffer,FXuint bits=0); static FXbool saveBuffer(const FXString& file,FXString& buffer,FXuint bits=0); public: long onUpdate(FXObject*,FXSelector,void*); long onUpdIsEditable(FXObject*,FXSelector,void*); long onUpdHasSelection(FXObject*,FXSelector,void*); // File management long onCmdNew(FXObject*,FXSelector,void*); long onCmdNewFile(FXObject*,FXSelector,void*); long onCmdOpen(FXObject*,FXSelector,void*); long onCmdOpenRecent(FXObject*,FXSelector,void*); long onCmdOpenTree(FXObject*,FXSelector,void*); long onCmdOpenSelected(FXObject*,FXSelector,void*); long onCmdSwitch(FXObject*,FXSelector,void*); long onCmdReload(FXObject*,FXSelector,void*); long onUpdReload(FXObject*,FXSelector,void*); long onCmdSave(FXObject*,FXSelector,void*); long onUpdSave(FXObject*,FXSelector,void*); long onCmdSaveAs(FXObject*,FXSelector,void*); long onCmdSaveTo(FXObject*,FXSelector,void*); long onCmdInsertFile(FXObject*,FXSelector,void*); long onCmdExtractFile(FXObject*,FXSelector,void*); // Text display long onCmdTextBackColor(FXObject*,FXSelector,void*); long onUpdTextBackColor(FXObject*,FXSelector,void*); long onCmdTextForeColor(FXObject*,FXSelector,void*); long onUpdTextForeColor(FXObject*,FXSelector,void*); long onCmdTextSelBackColor(FXObject*,FXSelector,void*); long onUpdTextSelBackColor(FXObject*,FXSelector,void*); long onCmdTextSelForeColor(FXObject*,FXSelector,void*); long onUpdTextSelForeColor(FXObject*,FXSelector,void*); long onCmdTextHiliteBackColor(FXObject*,FXSelector,void*); long onUpdTextHiliteBackColor(FXObject*,FXSelector,void*); long onCmdTextHiliteForeColor(FXObject*,FXSelector,void*); long onUpdTextHiliteForeColor(FXObject*,FXSelector,void*); long onCmdTextCursorColor(FXObject*,FXSelector,void*); long onUpdTextCursorColor(FXObject*,FXSelector,void*); long onCmdTextActBackColor(FXObject*,FXSelector,void*); long onUpdTextActBackColor(FXObject*,FXSelector,void*); long onCmdTextBarColor(FXObject*,FXSelector,void*); long onUpdTextBarColor(FXObject*,FXSelector,void*); long onCmdTextNumberColor(FXObject*,FXSelector,void*); long onUpdTextNumberColor(FXObject*,FXSelector,void*); long onCmdDirBackColor(FXObject*,FXSelector,void*); long onUpdDirBackColor(FXObject*,FXSelector,void*); long onCmdDirForeColor(FXObject*,FXSelector,void*); long onUpdDirForeColor(FXObject*,FXSelector,void*); long onCmdDirSelBackColor(FXObject*,FXSelector,void*); long onUpdDirSelBackColor(FXObject*,FXSelector,void*); long onCmdDirSelForeColor(FXObject*,FXSelector,void*); long onUpdDirSelForeColor(FXObject*,FXSelector,void*); long onCmdDirLineColor(FXObject*,FXSelector,void*); long onUpdDirLineColor(FXObject*,FXSelector,void*); long onCmdShowActive(FXObject*,FXSelector,void*); long onUpdShowActive(FXObject*,FXSelector,void*); long onCmdLineNumbers(FXObject*,FXSelector,void*); long onUpdLineNumbers(FXObject*,FXSelector,void*); long onCmdTabColumns(FXObject*,FXSelector,void*); long onUpdTabColumns(FXObject*,FXSelector,void*); long onCmdTabSelect(FXObject*,FXSelector,void*); long onUpdTabSelect(FXObject*,FXSelector,void*); long onCmdBraceMatch(FXObject*,FXSelector,void*); long onUpdBraceMatch(FXObject*,FXSelector,void*); long onCmdBraceMatchTime(FXObject*,FXSelector,void*); long onUpdBraceMatchTime(FXObject*,FXSelector,void*); long onCmdBraceMatchStay(FXObject*,FXSelector,void*); long onUpdBraceMatchStay(FXObject*,FXSelector,void*); long onCmdModeline(FXObject*,FXSelector,void*); long onUpdModeline(FXObject*,FXSelector,void*); long onCmdAutoIndent(FXObject*,FXSelector,void*); long onUpdAutoIndent(FXObject*,FXSelector,void*); long onCmdInsertTabs(FXObject*,FXSelector,void*); long onUpdInsertTabs(FXObject*,FXSelector,void*); long onCmdWrapColumns(FXObject*,FXSelector,void*); long onUpdWrapColumns(FXObject*,FXSelector,void*); long onCmdWrapFixed(FXObject*,FXSelector,void*); long onUpdWrapFixed(FXObject*,FXSelector,void*); long onCmdWrap(FXObject*,FXSelector,void*); long onUpdWrap(FXObject*,FXSelector,void*); // Text changes long onTextFocus(FXObject*,FXSelector,void*); long onTextInserted(FXObject*,FXSelector,void*); long onTextReplaced(FXObject*,FXSelector,void*); long onTextDeleted(FXObject*,FXSelector,void*); long onTextChanged(FXObject*,FXSelector,void*); long onTextDNDDrop(FXObject*,FXSelector,void*); long onTextDNDMotion(FXObject*,FXSelector,void*); long onTextRightMouse(FXObject*,FXSelector,void*); // Miscellaneous long onCmdAbout(FXObject*,FXSelector,void*); long onCmdHelp(FXObject*,FXSelector,void*); long onCmdFont(FXObject*,FXSelector,void*); long onCmdPrint(FXObject*,FXSelector,void*); long onCmdSaveSettings(FXObject*,FXSelector,void*); long onCmdStripReturns(FXObject*,FXSelector,void*); long onUpdStripReturns(FXObject*,FXSelector,void*); long onCmdStripSpaces(FXObject*,FXSelector,void*); long onUpdStripSpaces(FXObject*,FXSelector,void*); long onCmdAppendNewline(FXObject*,FXSelector,void*); long onUpdAppendNewline(FXObject*,FXSelector,void*); long onCmdAppendCarriageReturn(FXObject*,FXSelector,void*); long onUpdAppendCarriageReturn(FXObject*,FXSelector,void*); long onCmdFilter(FXObject*,FXSelector,void*); long onUpdOverstrike(FXObject*,FXSelector,void*); long onUpdReadOnly(FXObject*,FXSelector,void*); long onUpdTabMode(FXObject*,FXSelector,void*); long onClock(FXObject*,FXSelector,void*); long onCheckChange(FXObject*,FXSelector,void*); long onCmdPreferences(FXObject*,FXSelector,void*); long onCmdDelimiters(FXObject*,FXSelector,void*); long onUpdDelimiters(FXObject*,FXSelector,void*); long onCmdUndoMaxSize(FXObject*,FXSelector,void*); long onUpdUndoMaxSize(FXObject*,FXSelector,void*); long onCmdUndoKeepSize(FXObject*,FXSelector,void*); long onUpdUndoKeepSize(FXObject*,FXSelector,void*); long onCmdWheelAdjust(FXObject*,FXSelector,void*); long onUpdWheelAdjust(FXObject*,FXSelector,void*); long onCmdInsertPoint(FXObject*,FXSelector,void*); long onUpdInsertPoint(FXObject*,FXSelector,void*); long onCmdSetMark(FXObject*,FXSelector,void*); long onUpdSetMark(FXObject*,FXSelector,void*); long onCmdNextMark(FXObject*,FXSelector,void*); long onUpdNextMark(FXObject*,FXSelector,void*); long onCmdPrevMark(FXObject*,FXSelector,void*); long onUpdPrevMark(FXObject*,FXSelector,void*); long onCmdGotoMark(FXObject*,FXSelector,void*); long onUpdGotoMark(FXObject*,FXSelector,void*); long onCmdDelMark(FXObject*,FXSelector,void*); long onUpdDelMark(FXObject*,FXSelector,void*); long onUpdClearMarks(FXObject*,FXSelector,void*); long onCmdClearMarks(FXObject*,FXSelector,void*); long onCmdSaveMarks(FXObject*,FXSelector,void*); long onUpdSaveMarks(FXObject*,FXSelector,void*); long onCmdSaveViews(FXObject*,FXSelector,void*); long onUpdSaveViews(FXObject*,FXSelector,void*); long onCmdWarnChanged(FXObject*,FXSelector,void*); long onUpdWarnChanged(FXObject*,FXSelector,void*); long onCmdSyntax(FXObject*,FXSelector,void*); long onUpdSyntax(FXObject*,FXSelector,void*); long onCmdRestyle(FXObject*,FXSelector,void*); long onUpdRestyle(FXObject*,FXSelector,void*); long onCmdWindow(FXObject*,FXSelector,void*); long onUpdWindow(FXObject*,FXSelector,void*); long onCmdSyntaxSwitch(FXObject*,FXSelector,void*); long onUpdSyntaxSwitch(FXObject*,FXSelector,void*); long onCmdUseInitialSize(FXObject*,FXSelector,void*); long onUpdUseInitialSize(FXObject*,FXSelector,void*); long onCmdSetInitialSize(FXObject*,FXSelector,void*); long onCmdToggleBrowser(FXObject*,FXSelector,void*); long onUpdToggleBrowser(FXObject*,FXSelector,void*); long onCmdToggleHidden(FXObject*,FXSelector,void*); long onUpdToggleHidden(FXObject*,FXSelector,void*); long onCmdSearchPaths(FXObject*,FXSelector,void*); long onUpdSearchPaths(FXObject*,FXSelector,void*); long onCmdFindInFiles(FXObject*,FXSelector,void*); long onQueryTextTip(FXObject*,FXSelector,void*); long onLoggerRightMouse(FXObject*,FXSelector,void*); long onCmdMergeUndos(FXObject*,FXSelector,void*); long onUpdMergeUndos(FXObject*,FXSelector,void*); // Shell commands long onCmdShellDialog(FXObject*,FXSelector,void*); long onUpdShellDialog(FXObject*,FXSelector,void*); long onCmdShellCommand(FXObject*,FXSelector,void*); long onUpdShellCommand(FXObject*,FXSelector,void*); long onCmdShellFilter(FXObject*,FXSelector,void*); long onUpdShellFilter(FXObject*,FXSelector,void*); long onCmdShellCancel(FXObject*,FXSelector,void*); long onUpdShellCancel(FXObject*,FXSelector,void*); long onCmdShellMenu(FXObject*,FXSelector,void*); long onUpdShellMenu(FXObject*,FXSelector,void*); // Evaluate expression long onCmdExpression(FXObject*,FXSelector,void*); long onUpdExpression(FXObject*,FXSelector,void*); // URL encode/decode long onCmdURLEncode(FXObject*,FXSelector,void*); long onCmdURLDecode(FXObject*,FXSelector,void*); long onUpdURLCoding(FXObject*,FXSelector,void*); // Jumping around long onCmdGotoLine(FXObject*,FXSelector,void*); long onCmdGotoSelected(FXObject*,FXSelector,void*); // Search long onCmdSearch(FXObject*,FXSelector,void*); long onCmdReplace(FXObject*,FXSelector,void*); long onCmdSearchSel(FXObject*,FXSelector,void*); long onCmdSearchNext(FXObject*,FXSelector,void*); // Incremental search long onChgISearchText(FXObject*,FXSelector,void*); long onCmdISearchText(FXObject*,FXSelector,void*); long onKeyISearchText(FXObject*,FXSelector,void*); long onCmdISearchPrev(FXObject*,FXSelector,void*); long onCmdISearchNext(FXObject*,FXSelector,void*); long onCmdISearchStart(FXObject*,FXSelector,void*); long onCmdISearchFinish(FXObject*,FXSelector,void*); long onCmdISearchHistUp(FXObject*,FXSelector,void*); long onCmdISearchHistDn(FXObject*,FXSelector,void*); long onUpdISearchCase(FXObject*,FXSelector,void*); long onCmdISearchCase(FXObject*,FXSelector,void*); long onUpdISearchWords(FXObject*,FXSelector,void*); long onCmdISearchWords(FXObject*,FXSelector,void*); long onUpdISearchDir(FXObject*,FXSelector,void*); long onCmdISearchDir(FXObject*,FXSelector,void*); long onUpdISearchRegex(FXObject*,FXSelector,void*); long onCmdISearchRegex(FXObject*,FXSelector,void*); // Style changes long onCmdStyleNormalFG(FXObject*,FXSelector,void*); long onUpdStyleNormalFG(FXObject*,FXSelector,void*); long onCmdStyleNormalBG(FXObject*,FXSelector,void*); long onUpdStyleNormalBG(FXObject*,FXSelector,void*); long onCmdStyleSelectFG(FXObject*,FXSelector,void*); long onUpdStyleSelectFG(FXObject*,FXSelector,void*); long onCmdStyleSelectBG(FXObject*,FXSelector,void*); long onUpdStyleSelectBG(FXObject*,FXSelector,void*); long onCmdStyleHiliteFG(FXObject*,FXSelector,void*); long onUpdStyleHiliteFG(FXObject*,FXSelector,void*); long onCmdStyleHiliteBG(FXObject*,FXSelector,void*); long onUpdStyleHiliteBG(FXObject*,FXSelector,void*); long onCmdStyleActiveBG(FXObject*,FXSelector,void*); long onUpdStyleActiveBG(FXObject*,FXSelector,void*); long onCmdStyleUnderline(FXObject*,FXSelector,void*); long onUpdStyleUnderline(FXObject*,FXSelector,void*); long onCmdStyleStrikeout(FXObject*,FXSelector,void*); long onUpdStyleStrikeout(FXObject*,FXSelector,void*); long onCmdStyleBold(FXObject*,FXSelector,void*); long onUpdStyleBold(FXObject*,FXSelector,void*); public: enum{ ID_ABOUT=FXMainWindow::ID_LAST, ID_FILEFILTER, ID_NEW, ID_NEW_FILE, ID_OPEN, ID_OPEN_TREE, ID_OPEN_SELECTED, ID_OPEN_RECENT, ID_SWITCH, ID_RELOAD, ID_SAVE, ID_SAVEAS, ID_SAVETO, ID_FONT, ID_HELP, ID_WINDOW, ID_PRINT, ID_TEXT_BACK, ID_TEXT_FORE, ID_TEXT_SELBACK, ID_TEXT_SELFORE, ID_TEXT_HILITEBACK, ID_TEXT_HILITEFORE, ID_TEXT_ACTIVEBACK, ID_TEXT_CURSOR, ID_TEXT_NUMBACK, ID_TEXT_NUMFORE, ID_TEXT_LINENUMS, ID_DIR_BACK, ID_DIR_FORE, ID_DIR_SELBACK, ID_DIR_SELFORE, ID_DIR_LINES, ID_TOGGLE_WRAP, ID_FIXED_WRAP, ID_SAVE_SETTINGS, ID_TEXT, ID_LOGGER, ID_STRIP_CR, ID_STRIP_SP, ID_APPEND_NL, ID_APPEND_CR, ID_OVERSTRIKE, ID_READONLY, ID_TABMODE, ID_MERGEUNDOS, ID_CLOCKTIME, ID_PREFERENCES, ID_TABCOLUMNS, ID_WRAPCOLUMNS, ID_DELIMITERS, ID_UNDOMAXSIZE, ID_UNDOKEEPSIZE, ID_INSERTTABS, ID_AUTOINDENT, ID_MODELINE, ID_BRACEMATCH, ID_BRACEMATCHTIME, ID_BRACEMATCHSTAY, ID_INSERT_FILE, ID_EXTRACT_FILE, ID_WHEELADJUST, ID_INSERTPOINT, ID_SET_MARK, ID_NEXT_MARK, ID_PREV_MARK, ID_MARK_0, ID_MARK_1, ID_MARK_2, ID_MARK_3, ID_MARK_4, ID_MARK_5, ID_MARK_6, ID_MARK_7, ID_MARK_8, ID_MARK_9, ID_DEL_MARK, ID_CLEAR_MARKS, ID_SAVEMARKS, ID_SAVEVIEWS, ID_SHOWACTIVE, ID_WARNCHANGED, ID_CHECKCHANGE, ID_SYNTAX, ID_RESTYLE, ID_WINDOW_1, ID_WINDOW_2, ID_WINDOW_3, ID_WINDOW_4, ID_WINDOW_5, ID_WINDOW_6, ID_WINDOW_7, ID_WINDOW_8, ID_WINDOW_9, ID_WINDOW_10, ID_WINDOW_11, ID_WINDOW_12, ID_WINDOW_13, ID_WINDOW_14, ID_WINDOW_15, ID_SYNTAX_FIRST, ID_SYNTAX_LAST=ID_SYNTAX_FIRST+100, ID_STYLE_NORMAL_FG_FIRST, ID_STYLE_NORMAL_FG_LAST=ID_STYLE_NORMAL_FG_FIRST+100, ID_STYLE_NORMAL_BG_FIRST, ID_STYLE_NORMAL_BG_LAST=ID_STYLE_NORMAL_BG_FIRST+100, ID_STYLE_SELECT_FG_FIRST, ID_STYLE_SELECT_FG_LAST=ID_STYLE_SELECT_FG_FIRST+100, ID_STYLE_SELECT_BG_FIRST, ID_STYLE_SELECT_BG_LAST=ID_STYLE_SELECT_BG_FIRST+100, ID_STYLE_HILITE_FG_FIRST, ID_STYLE_HILITE_FG_LAST=ID_STYLE_HILITE_FG_FIRST+100, ID_STYLE_HILITE_BG_FIRST, ID_STYLE_HILITE_BG_LAST=ID_STYLE_HILITE_BG_FIRST+100, ID_STYLE_ACTIVE_BG_FIRST, ID_STYLE_ACTIVE_BG_LAST=ID_STYLE_ACTIVE_BG_FIRST+100, ID_STYLE_UNDERLINE_FIRST, ID_STYLE_UNDERLINE_LAST=ID_STYLE_UNDERLINE_FIRST+100, ID_STYLE_STRIKEOUT_FIRST, ID_STYLE_STRIKEOUT_LAST=ID_STYLE_STRIKEOUT_FIRST+100, ID_STYLE_BOLD_FIRST, ID_STYLE_BOLD_LAST=ID_STYLE_BOLD_FIRST+100, ID_USE_INITIAL_SIZE, ID_SET_INITIAL_SIZE, ID_TOGGLE_BROWSER, ID_TOGGLE_DOTFILES, ID_FINDFILES, ID_SEARCHPATHS, ID_EXPRESSION, ID_GOTO_LINE, ID_GOTO_SELECTED, ID_SEARCH, ID_REPLACE, ID_SEARCH_SEL_FORW, ID_SEARCH_SEL_BACK, ID_SEARCH_NXT_FORW, ID_SEARCH_NXT_BACK, ID_ISEARCH_TEXT, ID_ISEARCH_REVERSE, ID_ISEARCH_IGNCASE, ID_ISEARCH_REGEX, ID_ISEARCH_PREV, ID_ISEARCH_NEXT, ID_ISEARCH_START, ID_ISEARCH_FINISH, ID_ISEARCH_HIST_UP, ID_ISEARCH_HIST_DN, ID_ISEARCH_WORDS, ID_TABSELECT_0, ID_TABSELECT_1, ID_TABSELECT_2, ID_TABSELECT_3, ID_TABSELECT_4, ID_TABSELECT_5, ID_TABSELECT_6, ID_TABSELECT_7, ID_TABSELECT_8, ID_SHELL_DIALOG, ID_SHELL_FILTER, ID_SHELL_COMMAND, ID_SHELL_CANCEL, ID_URL_ENCODE, ID_URL_DECODE, ID_CUST_CMD0, ID_CUST_CMD1, ID_CUST_CMD2, ID_CUST_CMD3, ID_CUST_CMD4, ID_CUST_CMD5, ID_CUST_CMD6, ID_CUST_CMD7, ID_CUST_CMD8, ID_CUST_CMD9, ID_CUST_CMDA, ID_CUST_CMDB, ID_CUST_CMDC, ID_CUST_CMDD, ID_CUST_CMDE, ID_CUST_CMDF, ID_LAST }; public: // Create new text window TextWindow(Adie* a); // Create window virtual void create(); // Return Adie application Adie* getApp() const { return (Adie*)FXMainWindow::getApp(); } // Change this window's filename void setFilename(const FXString& file){ filename=file; } // Return this window's filename const FXString& getFilename() const { return filename; } // Change file time void setFiletime(FXTime t){ filetime=t; } // Get file time FXTime getFiletime() const { return filetime; } // Set filename is set flag void setFilenameSet(FXbool set){ filenameset=set; } // Has a filename been set FXbool isFilenameSet() const { return filenameset; } // Is it modified FXbool isModified() const; // Set current file of directory browser void setBrowserCurrentFile(const FXString& file); // Get current file of directory browser FXString getBrowserCurrentFile() const; // Set current directory void setBrowserCurrentDirectory(const FXString& dir); // Get current directory FXString getBrowserCurrentDirectory() const; // Set editable flag void setEditable(FXbool edit=true); // Is it editable FXbool isEditable() const; // Access strip trailing spaces void setStripSpaces(FXint s){ stripsp=s; } FXint getStripSpaces() const { return stripsp; } // Change current file pattern void setCurrentPattern(FXint n); // Return current file pattern FXint getCurrentPattern() const; // Change pattern list void setPatternList(const FXString& patterns); // Get pattern list FXString getPatternList() const; // Set search paths void setSearchPaths(const FXString& paths); // Get search paths FXString getSearchPaths() const; // Search for file using search paths FXString searchForFile(const FXString& file); // Visit position void visitPosition(FXint pos); // Visit given line, and column void visitLine(FXint line,FXint column=0); // Ask user to save changes FXbool saveChanges(); // Load text from file FXbool loadFile(const FXString& file); // Save text to file FXbool saveFile(const FXString& file); // Save text to file FXbool saveToFile(const FXString& file); // Add bookmark at given position pos void setBookmark(FXint pos); // Clear bookmarks void clearBookmarks(); // Read/write bookmarks void readBookmarks(const FXString& file); void writeBookmarks(const FXString& file); // Remove bookmark at given position pos void clearBookmark(FXint pos); // Read/write view void readView(const FXString& file); void writeView(const FXString& file); // Start incremental search void startISearch(); // Finish incremental search void finishISearch(); // Search next incremental text FXbool performISearch(const FXString& text,FXuint opts,FXbool advance=false,FXbool notify=false); // Start shell command FXbool startCommand(const FXString& command,FXint sp,FXint ep,FXint sc,FXint ec,FXuint flgs=0); // Done with command FXbool doneCommand(); // Stop shell command FXbool stopCommand(); // Create command line FXString makeCommandline(const FXString& cmd) const; // Set syntax void setSyntax(Syntax* syn); // Get syntax Syntax* getSyntax() const { return syntax; } // Determine syntax void determineSyntax(); // Parse modeline void parseModeline(); // Set status message void setStatusMessage(const FXString& msg); // Append to text window void textAppend(const FXchar* text,FXint len); void textAppend(const FXchar* text); void textAppend(const FXString& text); // Append to log window void logAppend(const FXchar* text,FXint len); void logAppend(const FXchar* text); void logAppend(const FXString& text); // Clear log window void logClear(); // Detach window virtual void detach(); // Close the window, return true if actually closed virtual FXbool close(FXbool notify=false); // Delete text window virtual ~TextWindow(); }; typedef FXObjectListOf TextWindowList; #endif