1 #ifndef MAINWINDOW_H 2 #define MAINWINDOW_H 3 4 #include "ipc.h" 5 #include "searchwidget.h" 6 #include "cemuopts.h" 7 #include "lcdwidget.h" 8 #include "romselection.h" 9 #include "emuthread.h" 10 #include "keyhistorywidget.h" 11 #include "dockwidget.h" 12 #include "datawidget.h" 13 #include "keypad/qtkeypadbridge.h" 14 #include "debugger/hexwidget.h" 15 #include "debugger/disasm.h" 16 #include "capture/animated-png.h" 17 #include "../../core/vat.h" 18 #include "../../core/debug/debug.h" 19 20 #include <QtWidgets/QProgressBar> 21 #include <QtWidgets/QShortcut> 22 #include <QtWidgets/QMainWindow> 23 #include <QtWidgets/QLabel> 24 #include <QtWidgets/QTableWidgetItem> 25 #include <QtWidgets/QPlainTextEdit> 26 #include <QtWidgets/QFileDialog> 27 #include <QtCore/QSettings> 28 #include <QtCore/QTimer> 29 #include <QtGui/QTextCursor> 30 #include <QtGui/QFont> 31 #include <QtWidgets/QMessageBox> 32 #include <QtCore/QTranslator> 33 #include <QtCore/QStandardPaths> 34 35 #ifdef PNG_WRITE_APNG_SUPPORTED 36 class RecordingThread : public QThread { 37 Q_OBJECT 38 protected: 39 virtual void run() Q_DECL_OVERRIDE; 40 public: 41 QString m_filename; 42 bool m_optimize; 43 signals: 44 void done(); 45 }; 46 #endif 47 48 namespace Ui { class MainWindow; } 49 50 class MainWindow : public QMainWindow { 51 Q_OBJECT 52 53 public: 54 explicit MainWindow(CEmuOpts &opts, QWidget *p = Q_NULLPTR); 55 ~MainWindow() Q_DECL_OVERRIDE; 56 void setup(); 57 bool isInitialized(); 58 bool isReload(); 59 bool isResetAll(); 60 61 signals: 62 void setLcdFrameskip(int value); 63 void setLcdMode(bool spi); 64 65 protected: 66 virtual void changeEvent(QEvent* event) Q_DECL_OVERRIDE; 67 virtual void closeEvent(QCloseEvent *event) Q_DECL_OVERRIDE; 68 virtual bool eventFilter(QObject *obj, QEvent *event) Q_DECL_OVERRIDE; 69 virtual void showEvent(QShowEvent *event) Q_DECL_OVERRIDE; 70 virtual void mouseDoubleClickEvent(QMouseEvent *event) Q_DECL_OVERRIDE; 71 virtual void dropEvent(QDropEvent *event) Q_DECL_OVERRIDE; 72 virtual void dragEnterEvent(QDragEnterEvent *event) Q_DECL_OVERRIDE; 73 74 private: 75 enum { 76 CONSOLE_ESC, 77 CONSOLE_BRACKET, 78 CONSOLE_PARSE, 79 CONSOLE_BGCOLOR, 80 CONSOLE_FGCOLOR, 81 CONSOLE_EQUALS, 82 CONSOLE_ENDVAL 83 }; 84 85 enum { 86 BREAK_REMOVE_COL, 87 BREAK_ENABLE_COL, 88 BREAK_ADDR_COL, 89 BREAK_NAME_COL 90 }; 91 92 enum { 93 WATCH_REMOVE_COL, 94 WATCH_READ_COL, 95 WATCH_WRITE_COL, 96 WATCH_LOW_COL, 97 WATCH_HIGH_COL, 98 WATCH_NAME_COL, 99 }; 100 101 enum { 102 PORT_REMOVE_COL, 103 PORT_READ_COL, 104 PORT_WRITE_COL, 105 PORT_FREEZE_COL, 106 PORT_ADDR_COL, 107 PORT_VALUE_COL, 108 }; 109 110 enum { 111 OP_ADDR_COL, 112 OP_NUMBER_COL, 113 OP_DATA_COL, 114 OP_STRING_COL, 115 OP_VALUE_COL 116 }; 117 118 enum { 119 FP_ADDR_COL, 120 FP_DATA_COL, 121 FP_STRING_COL, 122 FP_VALUE_COL 123 }; 124 125 enum { 126 OPS_ADDR_COL, 127 OPS_DATA_COL, 128 OPS_STRING_COL 129 }; 130 131 enum { 132 VAT_ADDR_COL, 133 VAT_VAT_ADDR_COL, 134 VAT_SIZE_COL, 135 VAT_NAME_COL, 136 VAT_TYPE_COL 137 }; 138 139 enum { 140 VAR_NAME_COL, 141 VAR_LOCATION_COL, 142 VAR_TYPE_COL, 143 VAR_SIZE_COL, 144 VAR_PREVIEW_COL 145 }; 146 147 enum { 148 RECENT_REMOVE_COL, 149 RECENT_RESEND_COL, 150 RECENT_SELECT_COL, 151 RECENT_PATH_COL 152 }; 153 154 enum { 155 SLOT_REMOVE_COL, 156 SLOT_LOAD_COL, 157 SLOT_SAVE_COL, 158 SLOT_EDIT_COL, 159 SLOT_NAME_COL 160 }; 161 162 enum { 163 TRANSLATE_INIT, 164 TRANSLATE_UPDATE, 165 TRANSLATE_ONLY 166 }; 167 168 enum { 169 FULLSCREEN_NONE, 170 FULLSCREEN_ALL, 171 FULLSCREEN_LCD 172 }; 173 174 // emu keypresses 175 void sendEmuKey(uint16_t key); 176 void sendEmuLetterKey(char letter); 177 178 // console 179 void console(const QString &str, const QColor &colorFg = Qt::black, const QColor &colorBg = Qt::white, int type = EmuThread::ConsoleNorm); 180 void console(int type, const char *str, int size = -1); 181 void consoleStr(); 182 void consoleClear(); 183 void consoleModified(); 184 185 // Other 186 void romExport(); 187 void ramExport(); 188 void guiExport(); 189 void ramImport(); 190 void guiImport(); 191 192 // emu state 193 void emuSaved(bool success); 194 void emuBlocked(int req); 195 196 // debug 197 void debugDisable(); 198 void debugEnable(); 199 200 // translations 201 void translateExtras(int init); 202 void translateSwitch(const QString &lang); 203 204 // state slots 205 void stateAdd(QString &name, QString &path); 206 void stateAddNew(); 207 void stateRemove(); 208 void stateEdit(); 209 void stateSave(); 210 void stateLoad(); 211 void stateSaveInfo(); 212 void stateLoadInfo(); 213 int stateGet(QObject *obj, int col); 214 215 // save / restore states 216 void stateToFile(); 217 void stateToPath(const QString &path); 218 void stateFromFile(); 219 void stateFromPath(const QString &path); 220 221 // others 222 bool runSetup(); 223 void showAbout(); 224 void checkUpdate(bool info); 225 226 // screenshots 227 void screenshot(); 228 void screenshotSave(const QString &filter, const QString &suffix, const QString &temp); 229 void setFrameskip(int value); 230 void setOptimizeRecord(bool state); 231 void setSnapshotPath(); 232 #ifdef PNG_WRITE_APNG_SUPPORTED 233 void recordAnimated(); 234 void recordSave(const QString &file); 235 void recordControlUpdate(); 236 #endif 237 238 // debugger 239 void debugPopulate(); 240 void debugGuiState(bool state); 241 void debugForce(); 242 void debugInit(); 243 void debugRaise(); 244 void debugSync(); 245 void debugToggle(); 246 void debugExecute(uint32_t addr, uint8_t cmd); 247 void debugCommand(int reason, uint32_t data); 248 void debugZeroCycles(); 249 250 // battery 251 void batterySetCharging(bool state); 252 void batterySet(int value); 253 254 // disassembly 255 void disasmUpdateAddr(int base, bool pane); 256 void disasmUpdate(); 257 void disasmLine(); 258 void disasmScroll(int value); 259 260 // stack 261 void stackUpdate(); 262 void stackLine(); 263 void stackScroll(int value); 264 265 // cpu state 266 bool adlState(int state); 267 268 // stepping 269 void debugStep(int mode); 270 void stepIn(); 271 void stepOver(); 272 void stepNext(); 273 void stepOut(); 274 275 // os view 276 void osUpdate(); 277 void opModified(QTableWidgetItem *item); 278 void fpModified(QTableWidgetItem *item); 279 280 // goto 281 void gotoPressed(); 282 void gotoDisasmAddr(uint32_t addr); 283 void gotoMemAddr(uint32_t addr); 284 285 void handleCtrlClickText(QPlainTextEdit *edit); 286 void handleCtrlClickLine(QLineEdit *edit); 287 288 // breakpoints 289 void breakModified(QTableWidgetItem *item); 290 void breakSetPrev(QTableWidgetItem *current, QTableWidgetItem *previous); 291 int breakGetMask(int row); 292 293 // breakpoint additions 294 bool breakAdd(const QString &label, uint32_t address, bool enabled, bool toggle, bool unset); 295 void breakAddGui(); 296 void breakAddSlot(); 297 298 // breakpoint removal 299 void breakRemove(uint32_t addr); 300 void breakRemoveRow(int row); 301 void breakRemoveSelected(); 302 303 // watchpoints 304 void watchModified(QTableWidgetItem *item); 305 void watchSetPrev(QTableWidgetItem *current, QTableWidgetItem *previous); 306 void watchUpdate(); 307 void watchUpdateRow(int row); 308 int watchGetMask(int row); 309 310 // watchpoint additions 311 bool watchAdd(const QString &label, uint32_t low, uint32_t high, int mask, bool toggle, bool unset); 312 void watchAddGui(); 313 void watchAddGuiR(); 314 void watchAddGuiW(); 315 void watchAddGuiRW(); 316 void watchAddSlot(); 317 318 // watchpoint removal 319 void watchRemove(uint32_t addr); 320 void watchRemoveRow(int row); 321 void watchRemoveSelected(); 322 323 // ports 324 void portModified(QTableWidgetItem *item); 325 void portSetPrev(QTableWidgetItem *current, QTableWidgetItem *previous); 326 void portPopulate(int row); 327 int portGetMask(int row); 328 329 // port additions 330 bool portAdd(uint16_t port, int mask, bool unset); 331 void portAddSlot(); 332 333 // port removal 334 void portRemoveSelected(); 335 void portRemoveRow(int row); 336 337 // labels 338 QString watchNextLabel(); 339 QString breakNextLabel(); 340 void updateLabels(); 341 342 // debug files 343 void debugImportFile(const QString &file); 344 void debugExportFile(const QString &file); 345 QString debugGetFile(bool save); 346 347 // bootable images 348 bool bootImageImport(const QString &path); 349 bool bootImageCheck(); 350 void bootImageExport(); 351 352 // equates 353 void setDebugAutoEquates(bool enable); 354 void equatesAddDialog(); 355 void equatesAddFile(const QString &file); 356 void equatesAddEquate(const QString &name, uint32_t addr); 357 void equatesClear(); 358 void equatesRefresh(); 359 QString getAddressString(const QString &string, bool *ok); 360 361 // keypad 362 void keymapLoad(); 363 void keymapChanged(); 364 void keymapCustomSelected(); 365 void keypadChanged(); 366 void setKeymap(const QString &value); 367 void setKeypadColor(unsigned int color); 368 void setCalcSkinTopFromType(); 369 370 // settings 371 void setRom(const QString &path); 372 void setImagePath(); 373 void setCalcId(); 374 void setFocusSetting(bool state); 375 void setStatusInterval(int value); 376 void setSkinToggle(bool state); 377 void setGuiSkip(int value); 378 void setLcdScale(int value); 379 void setLcdSpi(bool state); 380 void setLcdDma(bool state); 381 void setTop(bool state); 382 void setDockGroupDrag(bool state); 383 void setMenuBarState(bool state); 384 void setStatusBarState(bool state); 385 void setUIBoundaries(bool state); 386 void setPreRevisionI(bool state); 387 void setNormalOs(bool state); 388 void setRecentSave(bool state); 389 void setPortable(bool state); 390 void setAutoSave(bool state); 391 void setAutoUpdates(int value); 392 void saveSettings(); 393 void saveDebug(); 394 void setFont(int size); 395 void setUIDocks(); 396 void setUIDockEditMode(bool mode); 397 void setUIEditMode(bool mode); 398 void setFullscreen(int value); 399 void iconsLoad(); 400 401 // speed settings 402 void setEmuSpeed(int value); 403 void setThrottle(int mode); 404 void showEmuSpeed(int speed); 405 void showFpsSpeed(double emuFps, double guiFps); 406 void showStatusMsg(const QString &str); 407 408 // debug settings 409 void setDebugPath(); 410 void setDebugAutoSave(bool state); 411 void setDebugDisasmDataCol(bool state); 412 void setDebugDisasmAddrCol(bool state); 413 void setDebugDisasmSpace(bool state); 414 void setDebugDisasmImplict(bool state); 415 void setDebugDisasmUppercase(bool state); 416 void setDebugDisasmBoldSymbols(bool state); 417 void setDebugIgnoreBreakpoints(bool state); 418 void setDebugResetTrigger(bool state); 419 void setDebugSoftCommands(bool state); 420 421 // linking 422 QStringList varDialog(QFileDialog::AcceptMode mode, const QString &filter, const QString &suffix); 423 void varShow(); 424 void varPressed(QTableWidgetItem *item); 425 void varLaunch(const calc_var_t *prgm); 426 void varSelect(); 427 void varSaveSelected(); 428 void varSaveSelectedFiles(); 429 void varResend(); 430 void varToggle(); 431 432 // recent 433 void recentLoadInfo(); 434 void recentSaveInfo(); 435 436 // autotester 437 int autotesterOpen(const QString &jsonPath); 438 void autotesterUpdatePresets(int comboBoxIdx); 439 void autotesterErr(int errCode); 440 void autotesterTested(int status); 441 void autotesterLoad(); 442 void autotesterReload(); 443 void autotesterLaunch(); 444 void autotesterRefreshCRC(); 445 446 // keybindings 447 void keymapExport(); 448 449 // memory 450 void flashUpdate(); 451 void flashGotoPressed(); 452 void flashSyncPressed(); 453 void ramUpdate(); 454 void ramGotoPressed(); 455 void ramSyncPressed(); 456 void memUpdate(); 457 void setMemDocks(); 458 void setVisualizerDocks(); 459 void setKeyHistoryDocks(); 460 void memLoadState(); 461 void memSync(HexWidget *edit); 462 void memUpdateEdit(HexWidget *edit, bool force = false); 463 void memGotoEdit(HexWidget *edit); 464 void memGoto(HexWidget *edit, uint32_t addr); 465 void memSearchEdit(HexWidget *edit); 466 void memSyncEdit(HexWidget *edit); 467 void memAsciiToggle(HexWidget *edit); 468 void memDocksUpdate(); 469 void addMemDock(const QString &magic, int bytes, bool ascii); 470 void addVisualizerDock(const QString &magic, const QString &config); 471 void addKeyHistoryDock(const QString &magic, int size); 472 473 // versions 474 void setVersion(); 475 void checkVersion(); 476 bool isFirstRun(); 477 478 // options 479 void optSend(CEmuOpts &o); 480 void optLoadFiles(CEmuOpts &o); 481 void optAttemptLoad(CEmuOpts &o); 482 483 // lcd 484 void lcdUpdate(double emuFps); 485 void lcdAdjust(); 486 void lcdCopy(); 487 488 // resets and loads 489 void emuLoad(emu_data_t type); 490 void emuCheck(emu_state_t state, emu_data_t type); 491 void resetEmu(); 492 void resetCEmu(); 493 void resetGui(); 494 void pauseEmu(Qt::ApplicationState state); 495 496 // process communication 497 bool ipcSetup(); 498 void ipcSpawn(); 499 void ipcCloseConnected(); 500 void ipcReceived(); 501 void ipcSetId(); 502 void ipcCli(QDataStream &stream); 503 504 // context menus 505 void contextLcd(const QPoint &posa); 506 void contextConsole(const QPoint &posa); 507 void contextDisasm(const QPoint &posa); 508 void contextVars(const QPoint &posa); 509 void contextVat(const QPoint &posa); 510 void contextOp(const QPoint &posa); 511 void contextMem(const QPoint &posa); 512 void contextMemWidget(const QPoint &posa, uint32_t addr); 513 514 #ifdef _WIN32 515 // Win32 Console Toggle 516 void toggleConsole(); 517 void installToggleConsole(); 518 #endif 519 520 // Redistribute Docks 521 DockWidget *redistributeFindDock(const QPoint &pos); 522 bool redistributeDocks(const QPoint &pos, const QPoint &offset, 523 Qt::CursorShape cursorShape, 524 int (QSize::*dimension)() const, 525 Qt::Orientation orientation); 526 527 // Members 528 Ui::MainWindow *ui = Q_NULLPTR; 529 EmuThread emu; 530 CEmuOpts opts; 531 InterCom com; 532 533 bool m_isInDarkMode = false; 534 const char* m_disasmOpcodeColor; 535 536 int m_watchGUIMask = DBG_MASK_NONE; 537 538 QTranslator m_appTranslator; 539 QLabel m_speedLabel; 540 QLabel m_fpsLabel; 541 QLabel m_msgLabel; 542 QTextCursor m_disasmOffset; 543 bool m_disasmOffsetSet; 544 bool m_disasmPane; 545 int32_t m_disasmAddr; 546 uint32_t m_stackAddr; 547 548 QString m_searchStr; 549 int m_searchMode = SearchWidget::Hex; 550 551 QDir m_dir; 552 QStringList m_equateFiles; 553 554 bool m_uiEditMode; 555 bool m_portable = false; 556 bool m_nativeConsole = false; 557 bool m_shutdown = false; 558 bool m_recording = false; 559 560 uint32_t m_prevDisasmAddr = 0; 561 QPalette m_cBack, m_cNone; 562 563 QString m_prevWatchLow; 564 QString m_prevWatchHigh; 565 QString m_prevBreakAddr; 566 QString m_prevPortAddr; 567 568 QShortcut *m_shortcutStepIn; 569 QShortcut *m_shortcutStepOver; 570 QShortcut *m_shortcutStepNext; 571 QShortcut *m_shortcutStepOut; 572 QShortcut *m_shortcutDebug; 573 QShortcut *m_shortcutFullscreen; 574 QShortcut *m_shortcutAsm; 575 QShortcut *m_shortcutResend; 576 577 QAction *m_actionToggleUI; 578 QAction *m_actionAddMemory; 579 QAction *m_actionAddVisualizer; 580 581 QIcon m_iconRun, m_iconStop; 582 QIcon m_iconSave, m_iconLoad; 583 QIcon m_iconEdit, m_iconRemove; 584 QIcon m_iconSearch, m_iconGoto; 585 QIcon m_iconSync, m_iconAddMem, m_iconLcd; 586 QIcon m_iconAscii, m_iconUiEdit; 587 QIcon m_iconCheck, m_iconCheckGray; 588 QTextCharFormat m_consoleFormat; 589 590 QString m_gotoAddr; 591 QString m_flashGotoAddr; 592 QString m_RamGotoAddr; 593 QString m_memGotoAddr; 594 595 QString m_pathConfig; 596 QMenu *m_menuDocks; 597 QMenu *m_menuDebug; 598 599 KeyHistoryWidget *m_windowKeys = Q_NULLPTR; 600 601 bool m_isSendingRom = false; 602 QString m_dragRom; 603 604 bool m_needReload = false; 605 bool m_needFullReset = false; 606 bool m_keepSetup = false; 607 bool m_guiAdd = false; 608 bool m_initPassed = true; 609 bool m_useSoftCom = false; 610 bool m_pauseOnFocus; 611 bool m_loadedBootImage = false; 612 bool m_optimizeRecording; 613 bool m_portableActivated = false; 614 bool m_ignoreDmaCycles; 615 bool m_normalOs; 616 bool m_setup = false; 617 int m_fullscreen = FULLSCREEN_NONE; 618 uint32_t m_runUntilAddr; 619 620 QProgressBar *m_progressBar; 621 QStringList m_docksMemory; 622 QList<int> m_docksMemoryBytes; 623 QList<bool> m_docksMemoryAscii; 624 QStringList m_docksKeyHistory; 625 QList<int> m_docksKeyHistorySize; 626 QStringList m_docksVisualizer; 627 QStringList m_docksVisualizerConfig; 628 QList<DockWidget*> m_dockPtrs; 629 QSettings *m_config = Q_NULLPTR; 630 HexWidget *m_memWidget = Q_NULLPTR; 631 632 QString m_pathRom; 633 QString m_pathRam; 634 QString m_pathImage; 635 QTimer m_timerEmu; 636 QTimer m_timerFps; 637 bool m_timerEmuTriggerable = true; 638 bool m_timerFpsTriggerable = true; 639 bool m_timerEmuTriggered = false; 640 bool m_timerFpsTriggered = false; 641 642 QFont varPreviewCEFont; 643 QFont varPreviewItalicFont; 644 645 static const char *m_varExtensions[]; 646 647 // Settings definitions 648 static const QString SETTING_DEBUGGER_TEXT_SIZE; 649 static const QString SETTING_DEBUGGER_DISASM_SPACE; 650 static const QString SETTING_DEBUGGER_RESTORE_ON_OPEN; 651 static const QString SETTING_DEBUGGER_SAVE_ON_CLOSE; 652 static const QString SETTING_DEBUGGER_RESET_OPENS; 653 static const QString SETTING_DEBUGGER_ENABLE_SOFT; 654 static const QString SETTING_DEBUGGER_BOLD_SYMBOLS; 655 static const QString SETTING_DEBUGGER_DATA_COL; 656 static const QString SETTING_DEBUGGER_ADDR_COL; 657 static const QString SETTING_DEBUGGER_IMPLICT; 658 static const QString SETTING_DEBUGGER_UPPERCASE; 659 static const QString SETTING_DEBUGGER_IMAGE_PATH; 660 static const QString SETTING_DEBUGGER_FLASH_BYTES; 661 static const QString SETTING_DEBUGGER_RAM_BYTES; 662 static const QString SETTING_DEBUGGER_FLASH_ASCII; 663 static const QString SETTING_DEBUGGER_RAM_ASCII; 664 static const QString SETTING_DEBUGGER_BREAK_IGNORE; 665 static const QString SETTING_DEBUGGER_IGNORE_DMA; 666 static const QString SETTING_DEBUGGER_AUTO_EQUATES; 667 static const QString SETTING_DEBUGGER_PRE_I; 668 static const QString SETTING_DEBUGGER_NORM_OS; 669 static const QString SETTING_SCREEN_FRAMESKIP; 670 static const QString SETTING_SCREEN_SCALE; 671 static const QString SETTING_SCREEN_SKIN; 672 static const QString SETTING_SCREEN_SPI; 673 static const QString SETTING_KEYPAD_KEYMAP; 674 static const QString SETTING_KEYPAD_COLOR; 675 static const QString SETTING_WINDOW_FULLSCREEN; 676 static const QString SETTING_WINDOW_GROUP_DRAG; 677 static const QString SETTING_WINDOW_STATE; 678 static const QString SETTING_WINDOW_GEOMETRY; 679 static const QString SETTING_WINDOW_SEPARATOR; 680 static const QString SETTING_WINDOW_MENUBAR; 681 static const QString SETTING_WINDOW_STATUSBAR; 682 static const QString SETTING_WINDOW_POSITION; 683 static const QString SETTING_WINDOW_MEMORY_DOCKS; 684 static const QString SETTING_WINDOW_MEMORY_DOCK_BYTES; 685 static const QString SETTING_WINDOW_MEMORY_DOCK_ASCII; 686 static const QString SETTING_WINDOW_VISUALIZER_DOCKS; 687 static const QString SETTING_WINDOW_VISUALIZER_CONFIG; 688 static const QString SETTING_WINDOW_KEYHISTORY_DOCKS; 689 static const QString SETTING_WINDOW_KEYHISTORY_CONFIG; 690 static const QString SETTING_CAPTURE_FRAMESKIP; 691 static const QString SETTING_CAPTURE_OPTIMIZE; 692 static const QString SETTING_SLOT_NAMES; 693 static const QString SETTING_SLOT_PATHS; 694 static const QString SETTING_IMAGE_PATH; 695 static const QString SETTING_ROM_PATH; 696 static const QString SETTING_STATUS_INTERVAL; 697 static const QString SETTING_FIRST_RUN; 698 static const QString SETTING_UI_EDIT_MODE; 699 static const QString SETTING_PAUSE_FOCUS; 700 static const QString SETTING_SAVE_ON_CLOSE; 701 static const QString SETTING_RESTORE_ON_OPEN; 702 static const QString SETTING_EMUSPEED; 703 static const QString SETTING_AUTOUPDATE; 704 static const QString SETTING_ALWAYS_ON_TOP; 705 static const QString SETTING_NATIVE_CONSOLE; 706 static const QString SETTING_CURRENT_DIR; 707 static const QString SETTING_ENABLE_WIN_CONSOLE; 708 static const QString SETTING_RECENT_SAVE; 709 static const QString SETTING_RECENT_PATHS; 710 static const QString SETTING_RECENT_SELECT; 711 712 static const QString SETTING_KEYPAD_NATURAL; 713 static const QString SETTING_KEYPAD_CEMU; 714 static const QString SETTING_KEYPAD_TILEM; 715 static const QString SETTING_KEYPAD_WABBITEMU; 716 static const QString SETTING_KEYPAD_JSTIFIED; 717 static const QString SETTING_KEYPAD_CUSTOM; 718 static const QString SETTING_KEYPAD_CUSTOM_PATH; 719 720 static const QString SETTING_PREFERRED_LANG; 721 static const QString SETTING_VERSION; 722 723 static const QString SETTING_DEFAULT_CONFIG_FILE; 724 static const QString SETTING_DEFAULT_ROM_FILE; 725 static const QString SETTING_DEFAULT_IMAGE_FILE; 726 static const QString SETTING_DEFAULT_DEBUG_FILE; 727 728 static const QString TXT_YES; 729 static const QString TXT_NO; 730 static const QString TXT_NAN; 731 static const QString DEBUG_UNSET_ADDR; 732 static const QString DEBUG_UNSET_PORT; 733 734 QString TITLE_DEBUG; 735 QString TITLE_DOCKS; 736 737 QString TXT_MEM_DOCK; 738 QString TXT_VISUALIZER_DOCK; 739 QString TXT_KEYHISTORY_DOCK; 740 741 QString TXT_CLEAR_HISTORY; 742 QString TXT_SIZE; 743 744 QString TXT_CONSOLE; 745 QString TXT_SETTINGS; 746 QString TXT_VARIABLES; 747 QString TXT_CAPTURE; 748 QString TXT_STATE; 749 QString TXT_KEYPAD; 750 751 QString TXT_DEBUG_CONTROL; 752 QString TXT_CPU_STATUS; 753 QString TXT_DISASSEMBLY; 754 QString TXT_MEMORY; 755 QString TXT_TIMERS; 756 QString TXT_BREAKPOINTS; 757 QString TXT_WATCHPOINTS; 758 QString TXT_PORTMON; 759 QString TXT_OS_VIEW; 760 QString TXT_OS_STACKS; 761 QString TXT_MISC; 762 QString TXT_AUTOTESTER; 763 764 QString MSG_INFORMATION; 765 QString MSG_WARNING; 766 QString MSG_ERROR; 767 QString MSG_ADD_MEMORY; 768 QString MSG_ADD_VISUALIZER; 769 QString MSG_EDIT_UI; 770 771 QTableWidget *m_breakpoints = Q_NULLPTR; 772 QTableWidget *m_watchpoints = Q_NULLPTR; 773 QTableWidget *m_ports = Q_NULLPTR; 774 DataWidget *m_disasm = Q_NULLPTR; 775 776 #ifdef _WIN32 777 QAction *actionToggleConsole; 778 QString TXT_TOGGLE_CONSOLE; 779 #endif 780 }; 781 782 #endif 783