1 /******************************************************************************** 2 * * 3 * T h e A d i e T e x t E d i t o r * 4 * * 5 ********************************************************************************* 6 * Copyright (C) 1998,2021 by Jeroen van der Zijp. All Rights Reserved. * 7 ********************************************************************************* 8 * This program is free software: you can redistribute it and/or modify * 9 * it under the terms of the GNU General Public License as published by * 10 * the Free Software Foundation, either version 3 of the License, or * 11 * (at your option) any later version. * 12 * * 13 * This program is distributed in the hope that it will be useful, * 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 16 * GNU General Public License for more details. * 17 * * 18 * You should have received a copy of the GNU General Public License * 19 * along with this program. If not, see <http://www.gnu.org/licenses/>. * 20 ********************************************************************************/ 21 #ifndef TEXTWINDOW_H 22 #define TEXTWINDOW_H 23 24 25 26 class Adie; 27 class Syntax; 28 class HelpWindow; 29 class Preferences; 30 class ShellCommand; 31 32 // Array of styles 33 typedef FXArray<FXHiliteStyle> FXHiliteArray; 34 35 36 // Editor main window 37 class TextWindow : public FXMainWindow { 38 FXDECLARE(TextWindow) 39 protected: 40 FXToolBarShell *dragshell1; // Shell for floating menubar 41 FXToolBarShell *dragshell2; // Shell for floating toolbar 42 FXToolBarShell *dragshell3; // Shell for floating search bar 43 FXDockSite *topdock; // Topmost dock area 44 FXDockSite *bottomdock; // Bottom dock area 45 FXDockSite *leftdock; // Left dock area 46 FXDockSite *rightdock; // Bottom dock area 47 FXMenuPane *filemenu; // File menu 48 FXMenuPane *editmenu; // Edit menu 49 FXMenuPane *gotomenu; // Goto menu 50 FXMenuPane *searchmenu; // Search menu 51 FXMenuPane *shellmenu; // Shell menu 52 FXMenuPane *optionmenu; // Option menu 53 FXMenuPane *viewmenu; // View menu 54 FXMenuPane *windowmenu; // Window menu 55 FXMenuPane *helpmenu; // Help menu 56 FXMenuPane *syntaxmenu; // Syntax menu 57 FXMenuPane *tabsmenu; // Tab selection menu 58 FXVerticalFrame *treebox; // Tree box containing directories/files 59 FXHorizontalFrame *undoredoblock; // Undo/redo block on status line 60 FXHorizontalFrame *editorframe; // Editor frame 61 FXHorizontalFrame *loggerframe; // Logger frame 62 FXText *editor; // Editor text widget 63 FXText *logger; // Logger text widget 64 FXDirList *dirlist; // Directory view 65 FXComboBox *filter; // Combobox for pattern list 66 FXTextField *clock; // Time 67 FXMenuBar *menubar; // Menu bar 68 FXToolBar *toolbar; // Tool bar 69 FXToolBar *searchbar; // Incremental search bar 70 FXTextField *searchtext; // Incremental search text field 71 FXStatusBar *statusbar; // Status bar 72 FXFont *font; // Text window font 73 FXint bookmark[10]; // Book marks 74 Syntax *syntax; // Syntax highlighter 75 FXUndoList undolist; // Undo list 76 FXRecentFiles mrufiles; // Recent files list 77 FXString filename; // File being edited 78 FXTime filetime; // Original modtime of file 79 FXbool filenameset; // Filename is set 80 FXString delimiters; // Text delimiters 81 FXString searchpaths; // Search paths for files 82 FXHiliteArray styles; // Highlight styles 83 ShellCommand *shellCommand; // Running shell command, if any 84 FXint replaceStart; // Start of text to be replaced 85 FXint replaceEnd; // End of text to be replaced 86 FXint initialwidth; // Initial width 87 FXint initialheight; // Initial height 88 FXbool initialsize; // New window is initialwidth x initialheight 89 FXString isearchString[20]; // Incremental search strings 90 FXuint isearchOption[20]; // Incremental search options 91 FXbool isearchReplace; // Replace new entry 92 FXint isearchIndex; // Incremental search index 93 FXint isearchpos; // Incremental search position 94 FXString searchstring; // String of last search 95 FXuint searchflags; // Incremental search flags 96 FXbool searching; // Incremental search in effect 97 FXbool showsearchbar; // Showing incremental search bar 98 FXbool modeline; // Set modes from modeline 99 FXbool autoindent; // Autoindent mode 100 FXint wrapcols; // Wrap lines at this column if fixed wrap 101 FXbool wrapping; // Wrapping lines 102 FXbool fixedwrap; // Wrap lines at fixed column 103 FXint tabcols; // Tab indents this many columns 104 FXbool hardtabs; // Insert hard tabs 105 FXint barcols; // Number of columns for line numbers 106 FXbool showlogger; // Showing error logger 107 FXbool colorize; // Syntax coloring on if possible 108 FXbool stripcr; // Strip carriage returns 109 FXbool stripsp; // Strip trailing spaces 110 FXbool appendcr; // Append carriage returns 111 FXbool appendnl; // Append missing newline at end of text 112 FXbool saveviews; // Save views of files 113 FXbool savemarks; // Save bookmarks of files 114 FXbool warnchanged; // Warn if changed by other program 115 protected: 116 void createMenubar(); 117 void createToolbar(); 118 void createSearchbar(); 119 void createStatusbar(); 120 void readRegistry(); 121 void writeRegistry(); 122 FXint findRestylePoint(FXint pos,FXint& style) const; 123 FXint backwardByContext(FXint pos) const; 124 FXint forwardByContext(FXint pos) const; 125 void restyleText(); 126 void restyleText(FXint pos,FXint del,FXint ins); 127 FXint restyleRange(FXint beg,FXint end,FXint& head,FXint& tail,FXint rule); 128 FXHiliteStyle readStyleForRule(const FXString& group,const FXString& name,const FXString& style); 129 void writeStyleForRule(const FXString& group,const FXString& name,const FXHiliteStyle& style); 130 FXbool matchesSelection(const FXString& string,FXint* beg,FXint* end,FXuint flgs,FXint npar) const; 131 void updateBookmarks(FXint pos,FXint nd,FXint ni); 132 void addSearchHistory(const FXString& pat,FXuint opt,FXbool rep); 133 void loadSearchHistory(); 134 void saveSearchHistory(); 135 FXbool saveChanges(); 136 protected: 137 static FXbool loadBuffer(const FXString& file,FXString& buffer,FXuint bits=0); 138 static FXbool saveBuffer(const FXString& file,FXString& buffer,FXuint bits=0); 139 protected: 140 enum{ 141 MAXUNDOSIZE = 1000000, // Don't let the undo buffer get out of hand 142 KEEPUNDOSIZE = 500000 // When MAXUNDOSIZE was exceeded, trim down to this size 143 }; 144 private: TextWindow()145 TextWindow(){} 146 TextWindow(const TextWindow&); 147 TextWindow& operator=(const TextWindow&); 148 public: 149 long onUpdate(FXObject*,FXSelector,void*); 150 long onFocusIn(FXObject*,FXSelector,void*); 151 long onCmdAbout(FXObject*,FXSelector,void*); 152 long onCmdHelp(FXObject*,FXSelector,void*); 153 long onUpdIsEditable(FXObject*,FXSelector,void*); 154 long onUpdHasSelection(FXObject*,FXSelector,void*); 155 156 // File management 157 long onCmdNew(FXObject*,FXSelector,void*); 158 long onCmdOpen(FXObject*,FXSelector,void*); 159 long onCmdOpenRecent(FXObject*,FXSelector,void*); 160 long onCmdOpenTree(FXObject*,FXSelector,void*); 161 long onCmdOpenSelected(FXObject*,FXSelector,void*); 162 long onCmdSwitch(FXObject*,FXSelector,void*); 163 long onCmdReopen(FXObject*,FXSelector,void*); 164 long onUpdReopen(FXObject*,FXSelector,void*); 165 long onCmdSave(FXObject*,FXSelector,void*); 166 long onUpdSave(FXObject*,FXSelector,void*); 167 long onCmdSaveAs(FXObject*,FXSelector,void*); 168 long onCmdSaveTo(FXObject*,FXSelector,void*); 169 long onCmdFont(FXObject*,FXSelector,void*); 170 long onCmdPrint(FXObject*,FXSelector,void*); 171 long onCmdSaveSettings(FXObject*,FXSelector,void*); 172 long onCmdReplaceFile(FXObject*,FXSelector,void*); 173 long onCmdExtractFile(FXObject*,FXSelector,void*); 174 175 // Text display 176 long onCmdTextBackColor(FXObject*,FXSelector,void*); 177 long onUpdTextBackColor(FXObject*,FXSelector,void*); 178 long onCmdTextForeColor(FXObject*,FXSelector,void*); 179 long onUpdTextForeColor(FXObject*,FXSelector,void*); 180 long onCmdTextSelBackColor(FXObject*,FXSelector,void*); 181 long onUpdTextSelBackColor(FXObject*,FXSelector,void*); 182 long onCmdTextSelForeColor(FXObject*,FXSelector,void*); 183 long onUpdTextSelForeColor(FXObject*,FXSelector,void*); 184 long onCmdTextHiliteBackColor(FXObject*,FXSelector,void*); 185 long onUpdTextHiliteBackColor(FXObject*,FXSelector,void*); 186 long onCmdTextHiliteForeColor(FXObject*,FXSelector,void*); 187 long onUpdTextHiliteForeColor(FXObject*,FXSelector,void*); 188 long onCmdTextCursorColor(FXObject*,FXSelector,void*); 189 long onUpdTextCursorColor(FXObject*,FXSelector,void*); 190 long onCmdTextActBackColor(FXObject*,FXSelector,void*); 191 long onUpdTextActBackColor(FXObject*,FXSelector,void*); 192 long onCmdTextBarColor(FXObject*,FXSelector,void*); 193 long onUpdTextBarColor(FXObject*,FXSelector,void*); 194 long onCmdTextNumberColor(FXObject*,FXSelector,void*); 195 long onUpdTextNumberColor(FXObject*,FXSelector,void*); 196 long onCmdDirBackColor(FXObject*,FXSelector,void*); 197 long onUpdDirBackColor(FXObject*,FXSelector,void*); 198 long onCmdDirForeColor(FXObject*,FXSelector,void*); 199 long onUpdDirForeColor(FXObject*,FXSelector,void*); 200 long onCmdDirSelBackColor(FXObject*,FXSelector,void*); 201 long onUpdDirSelBackColor(FXObject*,FXSelector,void*); 202 long onCmdDirSelForeColor(FXObject*,FXSelector,void*); 203 long onUpdDirSelForeColor(FXObject*,FXSelector,void*); 204 long onCmdDirLineColor(FXObject*,FXSelector,void*); 205 long onUpdDirLineColor(FXObject*,FXSelector,void*); 206 long onCmdShowActive(FXObject*,FXSelector,void*); 207 long onUpdShowActive(FXObject*,FXSelector,void*); 208 long onCmdLineNumbers(FXObject*,FXSelector,void*); 209 long onUpdLineNumbers(FXObject*,FXSelector,void*); 210 long onCmdTabColumns(FXObject*,FXSelector,void*); 211 long onUpdTabColumns(FXObject*,FXSelector,void*); 212 long onCmdTabSelect(FXObject*,FXSelector,void*); 213 long onUpdTabSelect(FXObject*,FXSelector,void*); 214 long onCmdBraceMatch(FXObject*,FXSelector,void*); 215 long onUpdBraceMatch(FXObject*,FXSelector,void*); 216 long onCmdBraceMatchTime(FXObject*,FXSelector,void*); 217 long onUpdBraceMatchTime(FXObject*,FXSelector,void*); 218 long onCmdBraceMatchStay(FXObject*,FXSelector,void*); 219 long onUpdBraceMatchStay(FXObject*,FXSelector,void*); 220 long onCmdModeline(FXObject*,FXSelector,void*); 221 long onUpdModeline(FXObject*,FXSelector,void*); 222 long onCmdAutoIndent(FXObject*,FXSelector,void*); 223 long onUpdAutoIndent(FXObject*,FXSelector,void*); 224 long onCmdInsertTabs(FXObject*,FXSelector,void*); 225 long onUpdInsertTabs(FXObject*,FXSelector,void*); 226 long onCmdWrapColumns(FXObject*,FXSelector,void*); 227 long onUpdWrapColumns(FXObject*,FXSelector,void*); 228 long onCmdWrapFixed(FXObject*,FXSelector,void*); 229 long onUpdWrapFixed(FXObject*,FXSelector,void*); 230 long onCmdWrap(FXObject*,FXSelector,void*); 231 long onUpdWrap(FXObject*,FXSelector,void*); 232 233 // Text changes 234 long onTextFocus(FXObject*,FXSelector,void*); 235 long onTextInserted(FXObject*,FXSelector,void*); 236 long onTextReplaced(FXObject*,FXSelector,void*); 237 long onTextDeleted(FXObject*,FXSelector,void*); 238 long onTextDNDDrop(FXObject*,FXSelector,void*); 239 long onTextDNDMotion(FXObject*,FXSelector,void*); 240 long onTextRightMouse(FXObject*,FXSelector,void*); 241 242 // Miscellaneous 243 long onCmdStripReturns(FXObject*,FXSelector,void*); 244 long onUpdStripReturns(FXObject*,FXSelector,void*); 245 long onCmdStripSpaces(FXObject*,FXSelector,void*); 246 long onUpdStripSpaces(FXObject*,FXSelector,void*); 247 long onCmdAppendNewline(FXObject*,FXSelector,void*); 248 long onUpdAppendNewline(FXObject*,FXSelector,void*); 249 long onCmdAppendCarriageReturn(FXObject*,FXSelector,void*); 250 long onUpdAppendCarriageReturn(FXObject*,FXSelector,void*); 251 long onCmdFilter(FXObject*,FXSelector,void*); 252 long onUpdOverstrike(FXObject*,FXSelector,void*); 253 long onUpdReadOnly(FXObject*,FXSelector,void*); 254 long onUpdTabMode(FXObject*,FXSelector,void*); 255 long onUpdNumRows(FXObject*,FXSelector,void*); 256 long onClock(FXObject*,FXSelector,void*); 257 long onCmdPreferences(FXObject*,FXSelector,void*); 258 long onCmdDelimiters(FXObject*,FXSelector,void*); 259 long onUpdDelimiters(FXObject*,FXSelector,void*); 260 long onCmdWheelAdjust(FXObject*,FXSelector,void*); 261 long onUpdWheelAdjust(FXObject*,FXSelector,void*); 262 long onCmdSetMark(FXObject*,FXSelector,void*); 263 long onUpdSetMark(FXObject*,FXSelector,void*); 264 long onCmdNextMark(FXObject*,FXSelector,void*); 265 long onUpdNextMark(FXObject*,FXSelector,void*); 266 long onCmdPrevMark(FXObject*,FXSelector,void*); 267 long onUpdPrevMark(FXObject*,FXSelector,void*); 268 long onCmdGotoMark(FXObject*,FXSelector,void*); 269 long onUpdGotoMark(FXObject*,FXSelector,void*); 270 long onCmdDelMark(FXObject*,FXSelector,void*); 271 long onUpdDelMark(FXObject*,FXSelector,void*); 272 long onUpdClearMarks(FXObject*,FXSelector,void*); 273 long onCmdClearMarks(FXObject*,FXSelector,void*); 274 long onCmdSaveMarks(FXObject*,FXSelector,void*); 275 long onUpdSaveMarks(FXObject*,FXSelector,void*); 276 long onCmdSaveViews(FXObject*,FXSelector,void*); 277 long onUpdSaveViews(FXObject*,FXSelector,void*); 278 long onCmdWarnChanged(FXObject*,FXSelector,void*); 279 long onUpdWarnChanged(FXObject*,FXSelector,void*); 280 long onCmdSyntax(FXObject*,FXSelector,void*); 281 long onUpdSyntax(FXObject*,FXSelector,void*); 282 long onCmdRestyle(FXObject*,FXSelector,void*); 283 long onUpdRestyle(FXObject*,FXSelector,void*); 284 long onCmdWindow(FXObject*,FXSelector,void*); 285 long onUpdWindow(FXObject*,FXSelector,void*); 286 long onCmdSyntaxSwitch(FXObject*,FXSelector,void*); 287 long onUpdSyntaxSwitch(FXObject*,FXSelector,void*); 288 long onCmdUseInitialSize(FXObject*,FXSelector,void*); 289 long onUpdUseInitialSize(FXObject*,FXSelector,void*); 290 long onCmdSetInitialSize(FXObject*,FXSelector,void*); 291 long onCmdToggleBrowser(FXObject*,FXSelector,void*); 292 long onUpdToggleBrowser(FXObject*,FXSelector,void*); 293 long onCmdToggleHidden(FXObject*,FXSelector,void*); 294 long onUpdToggleHidden(FXObject*,FXSelector,void*); 295 long onCmdSearchPaths(FXObject*,FXSelector,void*); 296 long onUpdSearchPaths(FXObject*,FXSelector,void*); 297 long onCmdFindInFiles(FXObject*,FXSelector,void*); 298 long onQueryTextTip(FXObject*,FXSelector,void*); 299 300 // Shell commands 301 long onCmdShellDialog(FXObject*,FXSelector,void*); 302 long onUpdShellDialog(FXObject*,FXSelector,void*); 303 long onCmdShellFilter(FXObject*,FXSelector,void*); 304 long onUpdShellFilter(FXObject*,FXSelector,void*); 305 long onCmdShellCancel(FXObject*,FXSelector,void*); 306 long onUpdShellCancel(FXObject*,FXSelector,void*); 307 long onCmdShellOutput(FXObject*,FXSelector,void*); 308 long onCmdShellError(FXObject*,FXSelector,void*); 309 long onCmdShellDone(FXObject*,FXSelector,void*); 310 311 // Evaluate expression 312 long onCmdExpression(FXObject*,FXSelector,void*); 313 long onUpdExpression(FXObject*,FXSelector,void*); 314 315 // URL encode/decode 316 long onCmdURLEncode(FXObject*,FXSelector,void*); 317 long onCmdURLDecode(FXObject*,FXSelector,void*); 318 long onUpdURLCoding(FXObject*,FXSelector,void*); 319 320 // Jumping around 321 long onCmdGotoLine(FXObject*,FXSelector,void*); 322 long onCmdGotoSelected(FXObject*,FXSelector,void*); 323 324 // Search 325 long onCmdSearch(FXObject*,FXSelector,void*); 326 long onCmdReplace(FXObject*,FXSelector,void*); 327 long onCmdSearchSel(FXObject*,FXSelector,void*); 328 long onCmdSearchNext(FXObject*,FXSelector,void*); 329 330 // Incremental search 331 long onChgISearchText(FXObject*,FXSelector,void*); 332 long onCmdISearchText(FXObject*,FXSelector,void*); 333 long onKeyISearchText(FXObject*,FXSelector,void*); 334 long onCmdISearchPrev(FXObject*,FXSelector,void*); 335 long onCmdISearchNext(FXObject*,FXSelector,void*); 336 long onCmdISearchStart(FXObject*,FXSelector,void*); 337 long onCmdISearchFinish(FXObject*,FXSelector,void*); 338 long onCmdISearchHistUp(FXObject*,FXSelector,void*); 339 long onCmdISearchHistDn(FXObject*,FXSelector,void*); 340 long onUpdISearchCase(FXObject*,FXSelector,void*); 341 long onCmdISearchCase(FXObject*,FXSelector,void*); 342 long onUpdISearchDir(FXObject*,FXSelector,void*); 343 long onCmdISearchDir(FXObject*,FXSelector,void*); 344 long onUpdISearchRegex(FXObject*,FXSelector,void*); 345 long onCmdISearchRegex(FXObject*,FXSelector,void*); 346 347 // Style changes 348 long onCmdStyleNormalFG(FXObject*,FXSelector,void*); 349 long onUpdStyleNormalFG(FXObject*,FXSelector,void*); 350 long onCmdStyleNormalBG(FXObject*,FXSelector,void*); 351 long onUpdStyleNormalBG(FXObject*,FXSelector,void*); 352 long onCmdStyleSelectFG(FXObject*,FXSelector,void*); 353 long onUpdStyleSelectFG(FXObject*,FXSelector,void*); 354 long onCmdStyleSelectBG(FXObject*,FXSelector,void*); 355 long onUpdStyleSelectBG(FXObject*,FXSelector,void*); 356 long onCmdStyleHiliteFG(FXObject*,FXSelector,void*); 357 long onUpdStyleHiliteFG(FXObject*,FXSelector,void*); 358 long onCmdStyleHiliteBG(FXObject*,FXSelector,void*); 359 long onUpdStyleHiliteBG(FXObject*,FXSelector,void*); 360 long onCmdStyleActiveBG(FXObject*,FXSelector,void*); 361 long onUpdStyleActiveBG(FXObject*,FXSelector,void*); 362 long onCmdStyleUnderline(FXObject*,FXSelector,void*); 363 long onUpdStyleUnderline(FXObject*,FXSelector,void*); 364 long onCmdStyleStrikeout(FXObject*,FXSelector,void*); 365 long onUpdStyleStrikeout(FXObject*,FXSelector,void*); 366 long onCmdStyleBold(FXObject*,FXSelector,void*); 367 long onUpdStyleBold(FXObject*,FXSelector,void*); 368 public: 369 enum{ 370 ID_ABOUT=FXMainWindow::ID_LAST, 371 ID_FILEFILTER, 372 ID_NEW, 373 ID_OPEN, 374 ID_OPEN_TREE, 375 ID_OPEN_SELECTED, 376 ID_OPEN_RECENT, 377 ID_SWITCH, 378 ID_REOPEN, 379 ID_SAVE, 380 ID_SAVEAS, 381 ID_SAVETO, 382 ID_FONT, 383 ID_HELP, 384 ID_WINDOW, 385 ID_PRINT, 386 ID_TEXT_BACK, 387 ID_TEXT_FORE, 388 ID_TEXT_SELBACK, 389 ID_TEXT_SELFORE, 390 ID_TEXT_HILITEBACK, 391 ID_TEXT_HILITEFORE, 392 ID_TEXT_ACTIVEBACK, 393 ID_TEXT_CURSOR, 394 ID_TEXT_NUMBACK, 395 ID_TEXT_NUMFORE, 396 ID_TEXT_LINENUMS, 397 ID_DIR_BACK, 398 ID_DIR_FORE, 399 ID_DIR_SELBACK, 400 ID_DIR_SELFORE, 401 ID_DIR_LINES, 402 ID_TOGGLE_WRAP, 403 ID_FIXED_WRAP, 404 ID_SAVE_SETTINGS, 405 ID_TEXT, 406 ID_LOGGER, 407 ID_STRIP_CR, 408 ID_STRIP_SP, 409 ID_APPEND_NL, 410 ID_APPEND_CR, 411 ID_OVERSTRIKE, 412 ID_READONLY, 413 ID_TABMODE, 414 ID_CLOCKTIME, 415 ID_PREFERENCES, 416 ID_TABCOLUMNS, 417 ID_WRAPCOLUMNS, 418 ID_DELIMITERS, 419 ID_INSERTTABS, 420 ID_AUTOINDENT, 421 ID_MODELINE, 422 ID_BRACEMATCH, 423 ID_BRACEMATCHTIME, 424 ID_BRACEMATCHSTAY, 425 ID_NUM_ROWS, 426 ID_REPLACE_FILE, 427 ID_EXTRACT_FILE, 428 ID_WHEELADJUST, 429 ID_SET_MARK, 430 ID_NEXT_MARK, 431 ID_PREV_MARK, 432 ID_MARK_0, 433 ID_MARK_1, 434 ID_MARK_2, 435 ID_MARK_3, 436 ID_MARK_4, 437 ID_MARK_5, 438 ID_MARK_6, 439 ID_MARK_7, 440 ID_MARK_8, 441 ID_MARK_9, 442 ID_DEL_MARK, 443 ID_CLEAR_MARKS, 444 ID_SAVEMARKS, 445 ID_SAVEVIEWS, 446 ID_SHOWACTIVE, 447 ID_WARNCHANGED, 448 ID_SYNTAX, 449 ID_RESTYLE, 450 ID_WINDOW_1, 451 ID_WINDOW_2, 452 ID_WINDOW_3, 453 ID_WINDOW_4, 454 ID_WINDOW_5, 455 ID_WINDOW_6, 456 ID_WINDOW_7, 457 ID_WINDOW_8, 458 ID_WINDOW_9, 459 ID_WINDOW_10, 460 ID_SYNTAX_FIRST, 461 ID_SYNTAX_LAST=ID_SYNTAX_FIRST+100, 462 ID_STYLE_NORMAL_FG_FIRST, 463 ID_STYLE_NORMAL_FG_LAST=ID_STYLE_NORMAL_FG_FIRST+100, 464 ID_STYLE_NORMAL_BG_FIRST, 465 ID_STYLE_NORMAL_BG_LAST=ID_STYLE_NORMAL_BG_FIRST+100, 466 ID_STYLE_SELECT_FG_FIRST, 467 ID_STYLE_SELECT_FG_LAST=ID_STYLE_SELECT_FG_FIRST+100, 468 ID_STYLE_SELECT_BG_FIRST, 469 ID_STYLE_SELECT_BG_LAST=ID_STYLE_SELECT_BG_FIRST+100, 470 ID_STYLE_HILITE_FG_FIRST, 471 ID_STYLE_HILITE_FG_LAST=ID_STYLE_HILITE_FG_FIRST+100, 472 ID_STYLE_HILITE_BG_FIRST, 473 ID_STYLE_HILITE_BG_LAST=ID_STYLE_HILITE_BG_FIRST+100, 474 ID_STYLE_ACTIVE_BG_FIRST, 475 ID_STYLE_ACTIVE_BG_LAST=ID_STYLE_ACTIVE_BG_FIRST+100, 476 ID_STYLE_UNDERLINE_FIRST, 477 ID_STYLE_UNDERLINE_LAST=ID_STYLE_UNDERLINE_FIRST+100, 478 ID_STYLE_STRIKEOUT_FIRST, 479 ID_STYLE_STRIKEOUT_LAST=ID_STYLE_STRIKEOUT_FIRST+100, 480 ID_STYLE_BOLD_FIRST, 481 ID_STYLE_BOLD_LAST=ID_STYLE_BOLD_FIRST+100, 482 ID_USE_INITIAL_SIZE, 483 ID_SET_INITIAL_SIZE, 484 ID_TOGGLE_BROWSER, 485 ID_TOGGLE_DOTFILES, 486 ID_FINDFILES, 487 ID_SEARCHPATHS, 488 ID_EXPRESSION, 489 ID_GOTO_LINE, 490 ID_GOTO_SELECTED, 491 ID_SEARCH, 492 ID_REPLACE, 493 ID_SEARCH_SEL_FORW, 494 ID_SEARCH_SEL_BACK, 495 ID_SEARCH_NXT_FORW, 496 ID_SEARCH_NXT_BACK, 497 ID_ISEARCH_TEXT, 498 ID_ISEARCH_REVERSE, 499 ID_ISEARCH_IGNCASE, 500 ID_ISEARCH_REGEX, 501 ID_ISEARCH_PREV, 502 ID_ISEARCH_NEXT, 503 ID_ISEARCH_START, 504 ID_ISEARCH_FINISH, 505 ID_ISEARCH_HIST_UP, 506 ID_ISEARCH_HIST_DN, 507 ID_TABSELECT_0, 508 ID_TABSELECT_1, 509 ID_TABSELECT_2, 510 ID_TABSELECT_3, 511 ID_TABSELECT_4, 512 ID_TABSELECT_5, 513 ID_TABSELECT_6, 514 ID_TABSELECT_7, 515 ID_TABSELECT_8, 516 ID_SHELL_DIALOG, 517 ID_SHELL_FILTER, 518 ID_SHELL_CANCEL, 519 ID_SHELL_OUTPUT, 520 ID_SHELL_ERROR, 521 ID_SHELL_DONE, 522 ID_URL_ENCODE, 523 ID_URL_DECODE, 524 ID_LAST 525 }; 526 public: 527 528 // Create new text window 529 TextWindow(Adie* a); 530 531 // Create window 532 virtual void create(); 533 534 // Detach window 535 virtual void detach(); 536 537 // Close the window, return true if actually closed 538 virtual FXbool close(FXbool notify=false); 539 540 // Return Adie application getApp()541 Adie* getApp() const { return (Adie*)FXMainWindow::getApp(); } 542 543 // Set current file of directory browser 544 void setBrowserCurrentFile(const FXString& file); 545 546 // Get current file of directory browser 547 FXString getBrowserCurrentFile() const; 548 549 // Change this window's filename setFilename(const FXString & file)550 void setFilename(const FXString& file){ filename=file; } 551 552 // Return this window's filename getFilename()553 const FXString& getFilename() const { return filename; } 554 555 // Change file time setFiletime(FXTime t)556 void setFiletime(FXTime t){ filetime=t; } 557 558 // Get file time getFiletime()559 FXTime getFiletime() const { return filetime; } 560 561 // Set filename is set flag setFilenameSet(FXbool set)562 void setFilenameSet(FXbool set){ filenameset=set; } 563 564 // Has a filename been set isFilenameSet()565 FXbool isFilenameSet() const { return filenameset; } 566 567 // Is it modified 568 FXbool isModified() const; 569 570 // Set editable flag 571 void setEditable(FXbool edit=true); 572 573 // Is it editable 574 FXbool isEditable() const; 575 576 // Load text from file 577 FXbool loadFile(const FXString& file); 578 579 // Save text to file 580 FXbool saveFile(const FXString& file); 581 582 // Save text to file 583 FXbool saveToFile(const FXString& file); 584 585 // Insert file at cursor 586 FXbool replaceByFile(const FXString& file,FXint startpos,FXint endpos,FXint startcol=-1,FXint endcol=-1); 587 588 // Extract selection to file 589 FXbool extractToFile(const FXString& file,FXint startpos,FXint endpos,FXint startcol=-1,FXint endcol=-1); 590 591 // Change pattern list 592 void setPatternList(const FXString& patterns); 593 594 // Get pattern list 595 FXString getPatternList() const; 596 597 // Set search paths 598 void setSearchPaths(const FXString& paths); 599 600 // Get search paths 601 FXString getSearchPaths() const; 602 603 // Change current file pattern 604 void setCurrentPattern(FXint n); 605 606 // Return current file pattern 607 FXint getCurrentPattern() const; 608 609 // Goto position 610 void gotoPosition(FXint pos); 611 612 // Add bookmark at given position pos 613 void setBookmark(FXint pos); 614 615 // Clear bookmarks 616 void clearBookmarks(); 617 618 // Read/write bookmarks 619 void readBookmarks(const FXString& file); 620 void writeBookmarks(const FXString& file); 621 622 // Remove bookmark at given position pos 623 void clearBookmark(FXint pos); 624 625 // Visit given line, and column 626 void visitLine(FXint line,FXint column=0); 627 628 // Read/write view 629 void readView(const FXString& file); 630 void writeView(const FXString& file); 631 632 // Start incremental search 633 void startISearch(); 634 635 // Finish incremental search 636 void finishISearch(); 637 638 // Search next incremental text 639 FXbool performISearch(const FXString& text,FXuint opts,FXbool advance=false,FXbool notify=false); 640 641 // Start shell command 642 FXbool startCommand(const FXString& command,const FXString& input=FXString::null); 643 644 // Done with command 645 FXbool doneCommand(); 646 647 // Stop shell command 648 FXbool stopCommand(); 649 650 // Set syntax 651 void setSyntax(Syntax* syn); 652 653 // Get syntax getSyntax()654 Syntax* getSyntax() const { return syntax; } 655 656 // Determine syntax 657 void determineSyntax(); 658 659 // Parse modeline 660 void parseModeline(); 661 662 // Set status message 663 void setStatusMessage(const FXString& msg); 664 665 // Delete text window 666 virtual ~TextWindow(); 667 }; 668 669 670 typedef FXObjectListOf<TextWindow> TextWindowList; 671 672 #endif 673