1 class CanvasObject : public QWidget { 2 public: 3 void dragEnterEvent(QDragEnterEvent*); 4 void dropEvent(QDropEvent*); 5 void keyPressEvent(QKeyEvent*); 6 void keyReleaseEvent(QKeyEvent*); 7 }; 8 9 class CanvasWidget : public CanvasObject { 10 public: 11 QPaintEngine* paintEngine() const; 12 void mouseReleaseEvent(QMouseEvent*); 13 void paintEvent(QPaintEvent*); 14 }; 15 16 class MainWindow : public QbWindow { 17 Q_OBJECT 18 19 public: 20 QMenuBar *menuBar; 21 QStatusBar *statusBar; 22 QVBoxLayout *layout; 23 QMenu *system; 24 QAction *system_load; 25 QMenu *system_loadSpecial; 26 QAction *system_loadSpecial_bsxSlotted; 27 QAction *system_loadSpecial_bsx; 28 QAction *system_loadSpecial_sufamiTurbo; 29 QAction *system_loadSpecial_superGameBoy; 30 QbCheckAction *system_power; 31 QAction *system_reset; 32 QMenu *system_port1; 33 QbRadioAction *system_port1_none; 34 QbRadioAction *system_port1_gamepad; 35 QbRadioAction *system_port1_asciipad; 36 QbRadioAction *system_port1_multitap; 37 QbRadioAction *system_port1_mouse; 38 QMenu *system_port2; 39 QbRadioAction *system_port2_none; 40 QbRadioAction *system_port2_gamepad; 41 QbRadioAction *system_port2_asciipad; 42 QbRadioAction *system_port2_multitap; 43 QbRadioAction *system_port2_mouse; 44 QbRadioAction *system_port2_superscope; 45 QbRadioAction *system_port2_justifier; 46 QbRadioAction *system_port2_justifiers; 47 QAction *system_exit; 48 QMenu *settings; 49 QMenu *settings_videoMode; 50 QbRadioAction *settings_videoMode_1x; 51 QbRadioAction *settings_videoMode_2x; 52 QbRadioAction *settings_videoMode_3x; 53 QbRadioAction *settings_videoMode_4x; 54 QbRadioAction *settings_videoMode_5x; 55 QbCheckAction *settings_videoMode_correctAspectRatio; 56 QbRadioAction *settings_videoMode_ntsc; 57 QbRadioAction *settings_videoMode_pal; 58 QMenu *settings_videoFilter; 59 QAction *settings_videoFilter_configure; 60 QbRadioAction *settings_videoFilter_none; 61 array<QbRadioAction*> settings_videoFilter_list; 62 QbCheckAction *settings_smoothVideo; 63 QbCheckAction *settings_muteAudio; 64 QMenu *settings_emulationSpeed; 65 QbRadioAction *settings_emulationSpeed_slowest; 66 QbRadioAction *settings_emulationSpeed_slow; 67 QbRadioAction *settings_emulationSpeed_normal; 68 QbRadioAction *settings_emulationSpeed_fast; 69 QbRadioAction *settings_emulationSpeed_fastest; 70 QbCheckAction *settings_emulationSpeed_syncVideo; 71 QbCheckAction *settings_emulationSpeed_syncAudio; 72 QAction *settings_configuration; 73 QMenu *tools; 74 QMenu *tools_movies; 75 QAction *tools_movies_play; 76 QAction *tools_movies_stop; 77 QAction *tools_movies_recordFromPowerOn; 78 QAction *tools_movies_recordFromHere; 79 QAction *tools_captureScreenshot; 80 QAction *tools_dialog; 81 QAction *tools_debugger; 82 QMenu *help; 83 QAction *help_documentation; 84 QAction *help_license; 85 QAction *help_about; 86 87 CanvasObject *canvasContainer; 88 QVBoxLayout *canvasLayout; 89 CanvasWidget *canvas; 90 QLabel *systemState; 91 92 void syncUi(); 93 bool isActive(); 94 void closeEvent(QCloseEvent*); 95 MainWindow(); 96 97 public slots: 98 void loadCartridge(); 99 void loadBsxSlottedCartridge(); 100 void loadBsxCartridge(); 101 void loadSufamiTurboCartridge(); 102 void loadSuperGameBoyCartridge(); 103 void power(); 104 void reset(); 105 void setPort1None(); 106 void setPort1Gamepad(); 107 void setPort1Asciipad(); 108 void setPort1Multitap(); 109 void setPort1Mouse(); 110 void setPort2None(); 111 void setPort2Gamepad(); 112 void setPort2Asciipad(); 113 void setPort2Multitap(); 114 void setPort2Mouse(); 115 void setPort2SuperScope(); 116 void setPort2Justifier(); 117 void setPort2Justifiers(); 118 void quit(); 119 void setVideoMode1x(); 120 void setVideoMode2x(); 121 void setVideoMode3x(); 122 void setVideoMode4x(); 123 void setVideoMode5x(); 124 void toggleAspectCorrection(); 125 void setVideoNtsc(); 126 void setVideoPal(); 127 void configureFilter(); 128 void setFilter(); 129 void toggleSmoothVideo(); 130 void muteAudio(); 131 void setSpeedSlowest(); 132 void setSpeedSlow(); 133 void setSpeedNormal(); 134 void setSpeedFast(); 135 void setSpeedFastest(); 136 void syncVideo(); 137 void syncAudio(); 138 void showConfigWindow(); 139 void playMovie(); 140 void stopMovie(); 141 void recordMovieFromPowerOn(); 142 void recordMovieFromHere(); 143 void saveScreenshot(); 144 void showDebugger(); 145 void showToolsDialog(); 146 void showDocumentation(); 147 void showLicense(); 148 void showAbout(); 149 }; 150 151 extern MainWindow *mainWindow; 152