diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 3303e5aa..d7b3f34c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -528,6 +528,7 @@ set(SRC_DRIVERS_SDL ${CMAKE_CURRENT_SOURCE_DIR}/drivers/Qt/avi/avi-utils.cpp ${CMAKE_CURRENT_SOURCE_DIR}/drivers/Qt/avi/fileio.cpp ${CMAKE_CURRENT_SOURCE_DIR}/drivers/Qt/avi/gwavi.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/drivers/Qt/TasEditor/TasEditorWindow.cpp ) set(SOURCES ${SRC_CORE} ${SRC_DRIVERS_COMMON} ${SRC_DRIVERS_SDL}) diff --git a/src/drivers/Qt/ConsoleWindow.cpp b/src/drivers/Qt/ConsoleWindow.cpp index c0d7ec7c..aefbf4d1 100644 --- a/src/drivers/Qt/ConsoleWindow.cpp +++ b/src/drivers/Qt/ConsoleWindow.cpp @@ -98,6 +98,7 @@ #include "Qt/RamSearch.h" #include "Qt/keyscan.h" #include "Qt/nes_shm.h" +#include "Qt/TasEditor/TasEditorWindow.h" consoleWin_t::consoleWin_t(QWidget *parent) : QMainWindow( parent ) @@ -1604,6 +1605,14 @@ void consoleWin_t::createMainMenu(void) act->setStatusTip(tr("Open AVI RIFF Viewer Window")); connect(act, SIGNAL(triggered()), this, SLOT(openAviRiffViewer(void)) ); + toolsMenu->addAction(act); + + // Tools -> TAS Editor + act = new QAction(tr("&TAS Editor ..."), this); + //act->setShortcut( QKeySequence(tr("Shift+F7"))); + act->setStatusTip(tr("Open TAS Editor Window")); + connect(act, SIGNAL(triggered()), this, SLOT(openTasEditor(void)) ); + toolsMenu->addAction(act); //----------------------------------------------------------------------- @@ -2808,6 +2817,17 @@ void consoleWin_t::openAviRiffViewer(void) win->show(); } +void consoleWin_t::openTasEditor(void) +{ + TasEditorWindow *win; + + //printf("Open TAS Editor Window\n"); + + win = new TasEditorWindow(this); + + win->show(); +} + void consoleWin_t::openMovieOptWin(void) { MovieOptionsDialog_t *win; diff --git a/src/drivers/Qt/ConsoleWindow.h b/src/drivers/Qt/ConsoleWindow.h index 62a8cd70..1e4d7981 100644 --- a/src/drivers/Qt/ConsoleWindow.h +++ b/src/drivers/Qt/ConsoleWindow.h @@ -329,6 +329,7 @@ class consoleWin_t : public QMainWindow void aboutQt(void); void openOnlineDocs(void); void openOfflineDocs(void); + void openTasEditor(void); void openMsgLogWin(void); void openInputConfWin(void); void openGameSndConfWin(void); diff --git a/src/drivers/Qt/TasEditor/TasEditorWindow.cpp b/src/drivers/Qt/TasEditor/TasEditorWindow.cpp new file mode 100644 index 00000000..d52f3762 --- /dev/null +++ b/src/drivers/Qt/TasEditor/TasEditorWindow.cpp @@ -0,0 +1,179 @@ +/* FCE Ultra - NES/Famicom Emulator + * + * Copyright notice for this file: + * Copyright (C) 2021 mjbudd77 + * + * 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 2 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +// TasEditorWindow.cpp +// +#include +#include +#include +#include + +#include +#include + +#include "Qt/config.h" +#include "Qt/fceuWrapper.h" +#include "Qt/TasEditor/TasEditorWindow.h" + +//---------------------------------------------------------------------------- +TasEditorWindow::TasEditorWindow(QWidget *parent) + : QDialog(parent) +{ + QVBoxLayout *mainLayout; + //QHBoxLayout *hbox; + QMenuBar *menuBar; + + setWindowTitle("TAS Editor"); + + resize(512, 512); + + mainLayout = new QVBoxLayout(); + + //mainLayout->addWidget(tree); + + menuBar = buildMenuBar(); + + setLayout(mainLayout); + mainLayout->setMenuBar( menuBar ); +} +//---------------------------------------------------------------------------- +TasEditorWindow::~TasEditorWindow(void) +{ + printf("Destroy Tas Editor Window\n"); +} +//---------------------------------------------------------------------------- +void TasEditorWindow::closeEvent(QCloseEvent *event) +{ + printf("Tas Editor Close Window Event\n"); + done(0); + deleteLater(); + event->accept(); +} +//---------------------------------------------------------------------------- +void TasEditorWindow::closeWindow(void) +{ + //printf("Close Window\n"); + done(0); + deleteLater(); +} +//---------------------------------------------------------------------------- +QMenuBar *TasEditorWindow::buildMenuBar(void) +{ + QMenu *fileMenu; + //QActionGroup *actGroup; + QAction *act; + int useNativeMenuBar=0; + + QMenuBar *menuBar = new QMenuBar(this); + + // This is needed for menu bar to show up on MacOS + g_config->getOption( "SDL.UseNativeMenuBar", &useNativeMenuBar ); + + menuBar->setNativeMenuBar( useNativeMenuBar ? true : false ); + + //----------------------------------------------------------------------- + // Menu Start + //----------------------------------------------------------------------- + // File + fileMenu = menuBar->addMenu(tr("&File")); + + // File -> New + act = new QAction(tr("&New"), this); + act->setShortcut(QKeySequence(tr("Ctrl+N"))); + act->setStatusTip(tr("Open New Project")); + //act->setIcon( style()->standardIcon( QStyle::SP_FileDialogStart ) ); + //connect(act, SIGNAL(triggered()), this, SLOT(openAviFileDialog(void)) ); + + fileMenu->addAction(act); + + // File -> Open + act = new QAction(tr("&Open"), this); + act->setShortcut(QKeySequence(tr("Ctrl+O"))); + act->setStatusTip(tr("Open Project")); + //act->setIcon( style()->standardIcon( QStyle::SP_BrowserStop ) ); + //connect(act, SIGNAL(triggered()), this, SLOT(closeFile(void)) ); + + fileMenu->addAction(act); + + // File -> Save + act = new QAction(tr("&Save"), this); + act->setShortcut(QKeySequence(tr("Ctrl+S"))); + act->setStatusTip(tr("Save Project")); + //act->setIcon( style()->standardIcon( QStyle::SP_BrowserStop ) ); + //connect(act, SIGNAL(triggered()), this, SLOT(closeFile(void)) ); + + fileMenu->addAction(act); + + // File -> Save As + act = new QAction(tr("Save &As"), this); + act->setShortcut(QKeySequence(tr("Ctrl+Shift+S"))); + act->setStatusTip(tr("Save Project As")); + //act->setIcon( style()->standardIcon( QStyle::SP_BrowserStop ) ); + //connect(act, SIGNAL(triggered()), this, SLOT(closeFile(void)) ); + + fileMenu->addAction(act); + + // File -> Save Compact + act = new QAction(tr("Save &Compact"), this); + //act->setShortcut(QKeySequence(tr("Ctrl+Shift+S"))); + act->setStatusTip(tr("Save Compact")); + //act->setIcon( style()->standardIcon( QStyle::SP_BrowserStop ) ); + //connect(act, SIGNAL(triggered()), this, SLOT(closeFile(void)) ); + + fileMenu->addAction(act); + + // File -> Recent + recentMenu = fileMenu->addMenu( tr("Recent") ); + + recentMenu->setEnabled(false); // TODO: setup recent projects menu + + fileMenu->addSeparator(); + + // File -> Import Input + act = new QAction(tr("&Import Input"), this); + //act->setShortcut(QKeySequence(tr("Ctrl+Shift+S"))); + act->setStatusTip(tr("Import Input")); + //act->setIcon( style()->standardIcon( QStyle::SP_BrowserStop ) ); + //connect(act, SIGNAL(triggered()), this, SLOT(closeFile(void)) ); + + fileMenu->addAction(act); + + // File -> Export to fm2 + act = new QAction(tr("&Export to fm2"), this); + //act->setShortcut(QKeySequence(tr("Ctrl+Shift+S"))); + act->setStatusTip(tr("Export to fm2")); + //act->setIcon( style()->standardIcon( QStyle::SP_BrowserStop ) ); + //connect(act, SIGNAL(triggered()), this, SLOT(closeFile(void)) ); + + fileMenu->addAction(act); + + fileMenu->addSeparator(); + + // File -> Quit + act = new QAction(tr("&Quit Window"), this); + act->setShortcut(QKeySequence::Close); + act->setStatusTip(tr("Close Window")); + act->setIcon(style()->standardIcon(QStyle::SP_DialogCloseButton)); + connect(act, SIGNAL(triggered()), this, SLOT(closeWindow(void)) ); + + fileMenu->addAction(act); + + return menuBar; +} +//---------------------------------------------------------------------------- diff --git a/src/drivers/Qt/TasEditor/TasEditorWindow.h b/src/drivers/Qt/TasEditor/TasEditorWindow.h new file mode 100644 index 00000000..eddda308 --- /dev/null +++ b/src/drivers/Qt/TasEditor/TasEditorWindow.h @@ -0,0 +1,47 @@ +// TasEditorWindow.h +// + +#pragma once + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class TasEditorWindow : public QDialog +{ + Q_OBJECT + + public: + TasEditorWindow(QWidget *parent = 0); + ~TasEditorWindow(void); + + protected: + void closeEvent(QCloseEvent *event); + + QMenuBar *buildMenuBar(void); + QMenu *recentMenu; + private: + + public slots: + void closeWindow(void); + private slots: +};