LMMS
Loading...
Searching...
No Matches
lmms::gui::MainWindow Class Reference

#include <MainWindow.h>

Inheritance diagram for lmms::gui::MainWindow:

Classes

class  MovableQMdiArea
struct  keyModifiers

Public Types

enum class  SessionState { Normal , Recover }

Public Slots

void resetWindowTitle ()
void emptySlot ()
void createNewProject ()
void openProject ()
bool saveProject ()
bool saveProjectAs ()
bool saveProjectAsNewVersion ()
void saveProjectAsDefaultTemplate ()
void showSettingsDialog ()
void aboutLMMS ()
void help ()
void toggleAutomationEditorWin ()
void togglePatternEditorWin (bool forceShow=false)
void toggleSongEditorWin ()
void toggleProjectNotesWin ()
void toggleMicrotunerWin ()
void toggleMixerWin ()
void togglePianoRollWin ()
void toggleControllerRack ()
void toggleFullscreen ()
void updatePlayPauseIcons ()
void updateUndoRedoButtons ()
void undo ()
void redo ()
void autoSave ()

Signals

void detachAllSubWindows (bool detached)
void periodicUpdate ()
void initProgress (const QString &msg)

Public Member Functions

QMdiArea * workspace ()
QWidget * toolBar ()
int addWidgetToToolBar (QWidget *_w, int _row=-1, int _col=-1)
void addSpacingToToolBar (int _size)
LMMS_EXPORT SubWindowaddWindowedWidget (QWidget *w, Qt::WindowFlags windowFlags=QFlag(0))
void refocus ()
bool mayChangeProject (bool stopPlayback)
 Asks whether changes made to the project are to be saved.
void autoSaveTimerReset (int msec=ConfigManager::inst() -> value("ui", "saveinterval").toInt() *60 *1000)
int getAutoSaveTimerInterval ()
void setSession (SessionState session)
SessionState getSession ()
void sessionCleanup ()
void clearKeyModifiers ()
bool isShiftPressed ()
void setAllSubWindowsDetached (bool detached)
bool eventFilter (QObject *watched, QEvent *event) override

Static Public Member Functions

static void saveWidgetState (QWidget *_w, QDomElement &_de)
static void restoreWidgetState (QWidget *_w, const QDomElement &_de)

Static Public Attributes

static const int DEFAULT_SAVE_INTERVAL_MINUTES = 2
static const int DEFAULT_AUTO_SAVE_INTERVAL = DEFAULT_SAVE_INTERVAL_MINUTES * 60 * 1000
static const int m_autoSaveShortTime = 10 * 1000

Protected Member Functions

void closeEvent (QCloseEvent *_ce) override
void focusOutEvent (QFocusEvent *_fe) override
void keyPressEvent (QKeyEvent *_ke) override
void keyReleaseEvent (QKeyEvent *_ke) override
void timerEvent (QTimerEvent *_ev) override

Private Slots

void onExportProjectMidi ()
void browseHelp ()
void showTool (QAction *_idx)
void updateViewMenu ()
void updateConfig (QAction *_who)
void onToggleMetronome ()
void onExportProject ()
void onExportProjectTracks ()
void onImportProject ()
void onSongModified ()
void onProjectFileNameChanged ()

Private Member Functions

 MainWindow ()
 MainWindow (const MainWindow &)
 ~MainWindow () override
void finalize ()
void toggleWindow (QWidget *window, bool forceShow=false)
void exportProject (bool multiExport=false)
void handleSaveResult (QString const &filename, bool songSavedSuccessfully)
bool guiSaveProject ()
bool guiSaveProjectAs (const QString &filename)

Private Attributes

MovableQMdiAream_workspace
QWidget * m_toolBar
QGridLayout * m_toolBarLayout
struct lmms::gui::MainWindow::keyModifiers m_keyMods
QMenu * m_toolsMenu
QAction * m_undoAction
QAction * m_redoAction
QList< PluginView * > m_tools
QBasicTimer m_updateTimer
QTimer m_autoSaveTimer
int m_autoSaveInterval
QMenu * m_viewMenu
ToolButtonm_metronomeToggle
SessionState m_session
bool maximized

Friends

class GuiApplication

Member Enumeration Documentation

◆ SessionState

Enumerator
Normal 
Recover 

Constructor & Destructor Documentation

◆ MainWindow() [1/2]

lmms::gui::MainWindow::MainWindow ( )
private

◆ MainWindow() [2/2]

lmms::gui::MainWindow::MainWindow ( const MainWindow & )
private

◆ ~MainWindow()

lmms::gui::MainWindow::~MainWindow ( )
overrideprivate

Member Function Documentation

◆ aboutLMMS

void lmms::gui::MainWindow::aboutLMMS ( )
slot

◆ addSpacingToToolBar()

void lmms::gui::MainWindow::addSpacingToToolBar ( int _size)

◆ addWidgetToToolBar()

int lmms::gui::MainWindow::addWidgetToToolBar ( QWidget * _w,
int _row = -1,
int _col = -1 )

◆ addWindowedWidget()

SubWindow * lmms::gui::MainWindow::addWindowedWidget ( QWidget * w,
Qt::WindowFlags windowFlags = QFlag(0) )

◆ autoSave

void lmms::gui::MainWindow::autoSave ( )
slot

◆ autoSaveTimerReset()

void lmms::gui::MainWindow::autoSaveTimerReset ( int msec = ConfigManager::inst()-> value( "ui", "saveinterval" ).toInt() * 60 * 1000)
inline

◆ browseHelp

void lmms::gui::MainWindow::browseHelp ( )
privateslot

◆ clearKeyModifiers()

void lmms::gui::MainWindow::clearKeyModifiers ( )

◆ closeEvent()

void lmms::gui::MainWindow::closeEvent ( QCloseEvent * _ce)
overrideprotected

◆ createNewProject

void lmms::gui::MainWindow::createNewProject ( )
slot

◆ detachAllSubWindows

void lmms::gui::MainWindow::detachAllSubWindows ( bool detached)
signal

◆ emptySlot

void lmms::gui::MainWindow::emptySlot ( )
slot

◆ eventFilter()

bool lmms::gui::MainWindow::eventFilter ( QObject * watched,
QEvent * event )
override

◆ exportProject()

void lmms::gui::MainWindow::exportProject ( bool multiExport = false)
private

◆ finalize()

void lmms::gui::MainWindow::finalize ( )
private

◆ focusOutEvent()

void lmms::gui::MainWindow::focusOutEvent ( QFocusEvent * _fe)
overrideprotected

◆ getAutoSaveTimerInterval()

int lmms::gui::MainWindow::getAutoSaveTimerInterval ( )
inline

◆ getSession()

SessionState lmms::gui::MainWindow::getSession ( )
inline

◆ guiSaveProject()

bool lmms::gui::MainWindow::guiSaveProject ( )
private

◆ guiSaveProjectAs()

bool lmms::gui::MainWindow::guiSaveProjectAs ( const QString & filename)
private

◆ handleSaveResult()

void lmms::gui::MainWindow::handleSaveResult ( QString const & filename,
bool songSavedSuccessfully )
private

◆ help

void lmms::gui::MainWindow::help ( )
slot

◆ initProgress

void lmms::gui::MainWindow::initProgress ( const QString & msg)
signal

◆ isShiftPressed()

bool lmms::gui::MainWindow::isShiftPressed ( )
inline

◆ keyPressEvent()

void lmms::gui::MainWindow::keyPressEvent ( QKeyEvent * _ke)
overrideprotected

◆ keyReleaseEvent()

void lmms::gui::MainWindow::keyReleaseEvent ( QKeyEvent * _ke)
overrideprotected

◆ mayChangeProject()

bool lmms::gui::MainWindow::mayChangeProject ( bool stopPlayback)

Asks whether changes made to the project are to be saved.

Opens a dialog giving the user the choice to (a) confirm his choice (such as opening a new file), (b) save the current project before proceeding or (c) cancel the process.

Every function that replaces the current file (e.g. creates new file, opens another file...) must call this before and may only proceed if this function returns true.

Parameters
stopPlaybackwhether playback should be stopped upon prompting. If set to false, the caller should ensure that Engine::getSong()->stop() is called before unloading/loading a song.
Returns
true if the user allows the software to proceed, false if they cancel the action.

◆ onExportProject

void lmms::gui::MainWindow::onExportProject ( )
privateslot

◆ onExportProjectMidi

void lmms::gui::MainWindow::onExportProjectMidi ( )
privateslot

◆ onExportProjectTracks

void lmms::gui::MainWindow::onExportProjectTracks ( )
privateslot

◆ onImportProject

void lmms::gui::MainWindow::onImportProject ( )
privateslot

◆ onProjectFileNameChanged

void lmms::gui::MainWindow::onProjectFileNameChanged ( )
privateslot

◆ onSongModified

void lmms::gui::MainWindow::onSongModified ( )
privateslot

◆ onToggleMetronome

void lmms::gui::MainWindow::onToggleMetronome ( )
privateslot

◆ openProject

void lmms::gui::MainWindow::openProject ( )
slot

◆ periodicUpdate

void lmms::gui::MainWindow::periodicUpdate ( )
signal

◆ redo

void lmms::gui::MainWindow::redo ( )
slot

◆ refocus()

void lmms::gui::MainWindow::refocus ( )

◆ resetWindowTitle

void lmms::gui::MainWindow::resetWindowTitle ( )
slot

◆ restoreWidgetState()

void lmms::gui::MainWindow::restoreWidgetState ( QWidget * _w,
const QDomElement & _de )
static

◆ saveProject

bool lmms::gui::MainWindow::saveProject ( )
slot

◆ saveProjectAs

bool lmms::gui::MainWindow::saveProjectAs ( )
slot

◆ saveProjectAsDefaultTemplate

void lmms::gui::MainWindow::saveProjectAsDefaultTemplate ( )
slot

◆ saveProjectAsNewVersion

bool lmms::gui::MainWindow::saveProjectAsNewVersion ( )
slot

◆ saveWidgetState()

void lmms::gui::MainWindow::saveWidgetState ( QWidget * _w,
QDomElement & _de )
static

◆ sessionCleanup()

void lmms::gui::MainWindow::sessionCleanup ( )

◆ setAllSubWindowsDetached()

void lmms::gui::MainWindow::setAllSubWindowsDetached ( bool detached)

◆ setSession()

void lmms::gui::MainWindow::setSession ( SessionState session)
inline

◆ showSettingsDialog

void lmms::gui::MainWindow::showSettingsDialog ( )
slot

◆ showTool

void lmms::gui::MainWindow::showTool ( QAction * _idx)
privateslot

◆ timerEvent()

void lmms::gui::MainWindow::timerEvent ( QTimerEvent * _ev)
overrideprotected

◆ toggleAutomationEditorWin

void lmms::gui::MainWindow::toggleAutomationEditorWin ( )
slot

◆ toggleControllerRack

void lmms::gui::MainWindow::toggleControllerRack ( )
slot

◆ toggleFullscreen

void lmms::gui::MainWindow::toggleFullscreen ( )
slot

◆ toggleMicrotunerWin

void lmms::gui::MainWindow::toggleMicrotunerWin ( )
slot

◆ toggleMixerWin

void lmms::gui::MainWindow::toggleMixerWin ( )
slot

◆ togglePatternEditorWin

void lmms::gui::MainWindow::togglePatternEditorWin ( bool forceShow = false)
slot

◆ togglePianoRollWin

void lmms::gui::MainWindow::togglePianoRollWin ( )
slot

◆ toggleProjectNotesWin

void lmms::gui::MainWindow::toggleProjectNotesWin ( )
slot

◆ toggleSongEditorWin

void lmms::gui::MainWindow::toggleSongEditorWin ( )
slot

◆ toggleWindow()

void lmms::gui::MainWindow::toggleWindow ( QWidget * window,
bool forceShow = false )
private

◆ toolBar()

QWidget * lmms::gui::MainWindow::toolBar ( )
inline

◆ undo

void lmms::gui::MainWindow::undo ( )
slot

◆ updateConfig

void lmms::gui::MainWindow::updateConfig ( QAction * _who)
privateslot

◆ updatePlayPauseIcons

void lmms::gui::MainWindow::updatePlayPauseIcons ( )
slot

◆ updateUndoRedoButtons

void lmms::gui::MainWindow::updateUndoRedoButtons ( )
slot

◆ updateViewMenu

void lmms::gui::MainWindow::updateViewMenu ( )
privateslot

◆ workspace()

QMdiArea * lmms::gui::MainWindow::workspace ( )
inline

◆ GuiApplication

friend class GuiApplication
friend

Member Data Documentation

◆ DEFAULT_AUTO_SAVE_INTERVAL

const int lmms::gui::MainWindow::DEFAULT_AUTO_SAVE_INTERVAL = DEFAULT_SAVE_INTERVAL_MINUTES * 60 * 1000
static

◆ DEFAULT_SAVE_INTERVAL_MINUTES

const int lmms::gui::MainWindow::DEFAULT_SAVE_INTERVAL_MINUTES = 2
static

◆ m_autoSaveInterval

int lmms::gui::MainWindow::m_autoSaveInterval
private

◆ m_autoSaveShortTime

const int lmms::gui::MainWindow::m_autoSaveShortTime = 10 * 1000
static

◆ m_autoSaveTimer

QTimer lmms::gui::MainWindow::m_autoSaveTimer
private

◆ m_keyMods

struct lmms::gui::MainWindow::keyModifiers lmms::gui::MainWindow::m_keyMods
private

◆ m_metronomeToggle

ToolButton* lmms::gui::MainWindow::m_metronomeToggle
private

◆ m_redoAction

QAction* lmms::gui::MainWindow::m_redoAction
private

◆ m_session

SessionState lmms::gui::MainWindow::m_session
private

◆ m_toolBar

QWidget* lmms::gui::MainWindow::m_toolBar
private

◆ m_toolBarLayout

QGridLayout* lmms::gui::MainWindow::m_toolBarLayout
private

◆ m_tools

QList<PluginView *> lmms::gui::MainWindow::m_tools
private

◆ m_toolsMenu

QMenu* lmms::gui::MainWindow::m_toolsMenu
private

◆ m_undoAction

QAction* lmms::gui::MainWindow::m_undoAction
private

◆ m_updateTimer

QBasicTimer lmms::gui::MainWindow::m_updateTimer
private

◆ m_viewMenu

QMenu* lmms::gui::MainWindow::m_viewMenu
private

◆ m_workspace

MovableQMdiArea* lmms::gui::MainWindow::m_workspace
private

◆ maximized

bool lmms::gui::MainWindow::maximized
private

The documentation for this class was generated from the following files: