diff --git a/src/qprojectM-pulseaudio/QPulseAudioThread.cpp b/src/qprojectM-pulseaudio/QPulseAudioThread.cpp index 7e0d24604..81be6f7f5 100644 --- a/src/qprojectM-pulseaudio/QPulseAudioThread.cpp +++ b/src/qprojectM-pulseaudio/QPulseAudioThread.cpp @@ -25,7 +25,7 @@ #include #include -#include "qprojectm_mainwindow.hpp" +#include "qprojectm_mainwindow.hpp" #define TIME_EVENT_USEC 50000 @@ -155,7 +155,7 @@ void QPulseAudioThread::cleanup() void QPulseAudioThread::connectHelper (SourceContainer::const_iterator pos) { - assert(stream); + Q_ASSERT(stream); pa_stream_flags_t flags = ( pa_stream_flags_t ) 0; // qDebug() << "start2 "; assert (pos != s_sourceList.end()); @@ -373,7 +373,7 @@ void QPulseAudioThread::stream_state_callback ( pa_stream *s, void *userdata ) void QPulseAudioThread::stream_moved_callback(pa_stream *s, void *userdata) { - assert(s); + Q_ASSERT(s); if (verbose) fprintf(stderr, "Stream moved to device %s (%u, %ssuspended).\n", pa_stream_get_device_name(s), pa_stream_get_device_index(s), pa_stream_is_suspended(s) ? "" : "not "); @@ -458,9 +458,9 @@ void QPulseAudioThread::stdout_callback ( pa_mainloop_api*a, pa_io_event *e, int QProjectM ** prjmPtr = static_cast ( userdata ); QProjectM * prjm = *prjmPtr; - assert(prjm); - assert(prjm->pcm()); - assert(buffer); + Q_ASSERT(prjm); + Q_ASSERT(prjm->pcm()); + Q_ASSERT(buffer); prjm->pcm()->addPCMfloat ( buffer+buffer_index, buffer_length / ( sizeof ( float ) ) ); @@ -667,7 +667,7 @@ void QPulseAudioThread::run() signal ( SIGPIPE, SIG_IGN ); #endif - assert(m_projectM); + Q_ASSERT(m_projectM); if ( ! ( stdio_event = mainloop_api->io_new ( mainloop_api, STDOUT_FILENO, PA_IO_EVENT_OUTPUT, diff --git a/src/qprojectM/CMakeLists.txt b/src/qprojectM/CMakeLists.txt index 90dc190c9..7a7589cde 100644 --- a/src/qprojectM/CMakeLists.txt +++ b/src/qprojectM/CMakeLists.txt @@ -12,7 +12,6 @@ else(${CMAKE_PROJECT_NAME} MATCHES "PROJECTM_ROOT") pkg_search_module(LIBPROJECTM REQUIRED libprojectM) endif(${CMAKE_PROJECT_NAME} MATCHES "PROJECTM_ROOT") - find_package(Qt4 REQUIRED) # find and setup Qt4 for this project include(${QT_USE_FILE}) diff --git a/src/qprojectM/qplaylistmodel.cpp b/src/qprojectM/qplaylistmodel.cpp index 390d44025..3072be750 100644 --- a/src/qprojectM/qplaylistmodel.cpp +++ b/src/qprojectM/qplaylistmodel.cpp @@ -297,11 +297,12 @@ bool QPlaylistModel::readPlaylist ( const QString & file ) { if (QFileInfo(file).isDir()) { - if (!QDir(file).isReadable()) { - QMessageBox::warning (0, "Playlist Directory Error", QString(tr("There was a problem trying to open the playlist directory \"%1\". You may not have permission to open the directory.")).arg(file)); - return false; - } - foreach (QFileInfo info, QDir(file).entryInfoList()) { + if (!QDir(file).isReadable()) { + QMessageBox::warning (0, "Playlist Directory Error", QString(tr("There was a problem trying to open the playlist directory \"%1\". The directory doesn't exist or you may not have permission to open it. ")).arg(file)); + return false; + } + + foreach (QFileInfo info, QDir(file).entryInfoList()) { if (info.fileName().toLower().endsWith(".prjm") || info.fileName().toLower().endsWith(".milk")) appendRow(info.absoluteFilePath(), info.fileName(), 3); } diff --git a/src/qprojectM/qplaylisttableview.hpp b/src/qprojectM/qplaylisttableview.hpp index 0484fbdf9..a4beb06c6 100644 --- a/src/qprojectM/qplaylisttableview.hpp +++ b/src/qprojectM/qplaylisttableview.hpp @@ -40,8 +40,7 @@ class QPlaylistTableView : public QTableView void resized(QResizeEvent * event); void deletesRequested(const QModelIndexList & items); void internalDragAndDropRequested(const QModelIndexList & items, const QModelIndex & target = QModelIndex()); - void presetEditorRequested(const QModelIndexList &); - + public slots: void dropEvent ( QDropEvent * event ) { @@ -106,13 +105,6 @@ class QPlaylistTableView : public QTableView emit(deletesRequested(selectedIndexes())); break; - case Qt::Key_E: - if (event->modifiers() & Qt::ControlModifier) { - emit(presetEditorRequested(selectedIndexes())); - } - - break; - default: event->ignore(); break; diff --git a/src/qprojectM/qpreseteditordialog.cpp b/src/qprojectM/qpreseteditordialog.cpp index c30cdaeec..a839dc205 100644 --- a/src/qprojectM/qpreseteditordialog.cpp +++ b/src/qprojectM/qpreseteditordialog.cpp @@ -7,14 +7,14 @@ QPresetEditorDialog::QPresetEditorDialog(QProjectMWidget * widget, QWidget * par _ui.setupUi(this); connect(_ui.buttonBox, SIGNAL(clicked(QAbstractButton*)), this, SLOT(buttonBoxHandler(QAbstractButton*))); - + } -void QPresetEditorDialog::setPreset(QString url, const QModelIndex & index) { - - m_index = index; +void QPresetEditorDialog::setPreset(QString url, int rowIndex) { disconnect(_ui.presetTextEdit, 0, this, 0); + + m_index = rowIndex; m_presetUrl = url; _ui.presetTextEdit->loadPresetText(url); diff --git a/src/qprojectM/qpreseteditordialog.hpp b/src/qprojectM/qpreseteditordialog.hpp index e0a17f4ae..eb4ce4d14 100644 --- a/src/qprojectM/qpreseteditordialog.hpp +++ b/src/qprojectM/qpreseteditordialog.hpp @@ -9,14 +9,14 @@ class QPresetEditorDialog : public QDialog { public: QPresetEditorDialog(QProjectMWidget * widget, QWidget * parent = 0, Qt::WindowFlags f = 0); - void setPreset(QString url, const QModelIndex &index); + void setPreset(QString url, int rowIndex); const QString & presetUrl() const; - inline const QModelIndex & presetIndex() const { + inline int presetIndex() const { return m_index; } signals: - void presetModified(const QModelIndex &); + void presetModified(int rowIndex); protected: //void keyReleaseEvent(QKeyEvent * e); public slots: @@ -29,7 +29,7 @@ class QPresetEditorDialog : public QDialog { void updateWindowTitle(); private: - QModelIndex m_index; + int m_index; void revertBuffer(); QProjectMWidget * _qprojectMWidget; Ui::QPresetEditorDialog _ui; diff --git a/src/qprojectM/qpreseteditordialog.ui b/src/qprojectM/qpreseteditordialog.ui index 6f67cd48a..7ccc00f68 100644 --- a/src/qprojectM/qpreseteditordialog.ui +++ b/src/qprojectM/qpreseteditordialog.ui @@ -18,40 +18,40 @@ true - + 1 11 - 366 - 289 + 451 + 291 - - - 1 - 2 - - - - false - - - - - - 373 - 11 - 77 - 289 - - - - Qt::Vertical - - - QDialogButtonBox::Apply|QDialogButtonBox::NoButton|QDialogButtonBox::Reset - + + + + + + 1 + 2 + + + + false + + + + + + + Qt::Vertical + + + QDialogButtonBox::Apply|QDialogButtonBox::NoButton|QDialogButtonBox::Reset + + + + diff --git a/src/qprojectM/qpresettextedit.hpp b/src/qprojectM/qpresettextedit.hpp index 61116c1fe..c89c2f4db 100644 --- a/src/qprojectM/qpresettextedit.hpp +++ b/src/qprojectM/qpresettextedit.hpp @@ -29,15 +29,15 @@ class QPresetTextEdit: public QTextEdit Q_OBJECT // must include this if you use Qt signals/slots public: - inline QPresetTextEdit(QWidget * parent = 0): QTextEdit(parent) {} - - bool loadPresetText(QString url); - + inline QPresetTextEdit(QWidget * parent = 0): QTextEdit(parent) {} + + bool loadPresetText(QString url); + void keyReleaseEvent(QKeyEvent * e); - + signals: void applyRequested(); - + public slots: private: diff --git a/src/qprojectM/qprojectm_mainwindow.cpp b/src/qprojectM/qprojectm_mainwindow.cpp index 93c151ad8..f65fb0f9e 100644 --- a/src/qprojectM/qprojectm_mainwindow.cpp +++ b/src/qprojectM/qprojectm_mainwindow.cpp @@ -198,8 +198,15 @@ void QProjectM_MainWindow::selectPlaylistItem ( const QModelIndex & index ) if ( index.column() > 0 ) return; - qprojectM()->selectPreset ( index.row() ); - *activePresetIndex = index.row(); + selectPlaylistItem(index.row()); + +} + +void QProjectM_MainWindow::selectPlaylistItem ( int rowIndex) +{ + + qprojectM()->selectPreset (rowIndex); + *activePresetIndex = rowIndex; playlistModel->updateItemHighlights(); @@ -259,8 +266,6 @@ void QProjectM_MainWindow::postProjectM_Initialize() disconnect(ui->tableView); - connect ( ui->tableView, SIGNAL (presetEditorRequested(const QModelIndexList &)), - this, SLOT(openPresetEditorDialog(const QModelIndexList &)), Qt::DirectConnection); connect(ui->tableView, SIGNAL(deletesRequested(const QModelIndexList&)), this, SLOT(removePlaylistItems(const QModelIndexList&))); @@ -272,35 +277,29 @@ void QProjectM_MainWindow::postProjectM_Initialize() } -void QProjectM_MainWindow::openPresetEditorDialog(const QModelIndexList indices) { +void QProjectM_MainWindow::openPresetEditorDialog(int rowIndex) { - - if (indices.empty()) - return; - QModelIndex firstIndex = indices[0]; - selectPlaylistItem(firstIndex); - qprojectMWidget()->seizePresetLock(); - Qt::CheckState stateBackup = ui->lockPresetCheckBox->checkState(); - - ui->lockPresetCheckBox->setCheckState(Qt::Checked); - + if (!m_QPresetEditorDialog) { m_QPresetEditorDialog = new QPresetEditorDialog(qprojectMWidget()); - connect(m_QPresetEditorDialog, SIGNAL(presetModified(const QModelIndex &)), - this, SLOT(selectPlaylistItem(const QModelIndex&))); + connect(m_QPresetEditorDialog, SIGNAL(presetModified(int)), + this, SLOT(selectPlaylistItem(int))); } - QString url = playlistModel->data( firstIndex, QPlaylistModel::URLInfoRole).toString() ; - m_QPresetEditorDialog->setPreset(url, firstIndex); - + Q_ASSERT(historyHash.contains(previousFilter)); + Q_ASSERT(playlistItemMetaDataHash.contains((*historyHash[previousFilter])[rowIndex])); + QString url = playlistItemMetaDataHash[(*historyHash[previousFilter])[rowIndex]].url; + + m_QPresetEditorDialog->setPreset(url, rowIndex); + if (m_QPresetEditorDialog->exec()) { - + } - - ui->lockPresetCheckBox->setCheckState(stateBackup); + qprojectMWidget()->releasePresetLock(); + } @@ -330,7 +329,8 @@ void QProjectM_MainWindow::dragAndDropPlaylistItems(const QModelIndexList & indi } else { - abort(); + // Self drag event ignored + // abort(); return; } @@ -387,6 +387,13 @@ void QProjectM_MainWindow::keyReleaseEvent ( QKeyEvent * e ) QModelIndex modelIndex; switch ( e->key() ) { + + case Qt::Key_E: + if (e->modifiers() & Qt::ControlModifier) { + if (activePresetIndex->hasValue()) + openPresetEditorDialog(historyHash[previousFilter]->indexOf(activePresetIndex->value())); + } else + e->ignore(); case Qt::Key_L: if (!(e->modifiers() & Qt::ControlModifier)) { @@ -651,8 +658,11 @@ void QProjectM_MainWindow::openPlaylistDialog() QString url = m_QPlaylistFileDialog->selectedFiles() [0]; - if ( !playlistModel->readPlaylist ( url ) ) + if ( !playlistModel->readPlaylist ( url ) ) { + qDebug() << "could not open playlist"; url = QString(); + + } qDebug() << "url: " << url; updatePlaylistUrl(url); @@ -660,7 +670,7 @@ void QProjectM_MainWindow::openPlaylistDialog() ui->presetSearchBarLineEdit->setText(searchText); updateFilteredPlaylist ( ui->presetSearchBarLineEdit->text() ); } -} +} void QProjectM_MainWindow::copyPlaylist() { @@ -695,6 +705,7 @@ void QProjectM_MainWindow::copyPlaylist() activePresetIndex->nullify(); qDebug() << "NULLIFIED"; } + qprojectMWidget()->releasePresetLock(); } @@ -950,7 +961,7 @@ void QProjectM_MainWindow::updateFilteredPlaylist ( const QString & text ) /// NEED A MUTEX TO STOP PROJECTM FROM SWITCHING PRESETS playlistModel->clearItems(); - assert(!qprojectM()->presetPositionValid()); + Q_ASSERT(!qprojectM()->presetPositionValid()); bool presetExistsWithinFilter = false; qDebug() << "preset position valid (preloop):" << qprojectM()->presetPositionValid(); @@ -997,7 +1008,7 @@ void QProjectM_MainWindow::updateFilteredPlaylist ( const QString & text ) } qDebug() << "preset exists within filter: " << presetExistsWithinFilter; qDebug() << "preset position valid:" << qprojectM()->presetPositionValid(); - assert(presetExistsWithinFilter == qprojectM()->presetPositionValid()); + Q_ASSERT(presetExistsWithinFilter == qprojectM()->presetPositionValid()); previousFilter = filter; qprojectMWidget()->releasePresetLock(); diff --git a/src/qprojectM/qprojectm_mainwindow.hpp b/src/qprojectM/qprojectm_mainwindow.hpp index 20f792136..08705aa23 100644 --- a/src/qprojectM/qprojectm_mainwindow.hpp +++ b/src/qprojectM/qprojectm_mainwindow.hpp @@ -91,10 +91,9 @@ class QProjectMWidget : public QGLWidget } - inline void releasePresetLock() { - - qprojectM()->setPresetLock(m_presetWasLocked); - m_presetSeizeMutex.unlock(); + inline void releasePresetLock() { + qprojectM()->setPresetLock(m_presetWasLocked); + m_presetSeizeMutex.unlock(); } inline QProjectM * qprojectM() { return m_projectM; } @@ -326,8 +325,10 @@ protected: void closeEvent(QCloseEvent *event); private slots: + + void selectPlaylistItem ( int rowIndex); void clearPlaylistModel(); - void openPresetEditorDialog(const QModelIndexList indices); + void openPresetEditorDialog(int rowIndex); void aboutQt(); void clearPlaylist(); void addPresetsDialog(); diff --git a/src/qprojectM/qprojectmconfigdialog.cpp b/src/qprojectM/qprojectmconfigdialog.cpp index 356632686..f8ceef658 100644 --- a/src/qprojectM/qprojectmconfigdialog.cpp +++ b/src/qprojectM/qprojectmconfigdialog.cpp @@ -4,6 +4,7 @@ #include "qplaylistfiledialog.hpp" #include + QProjectMConfigDialog::QProjectMConfigDialog(const std::string & configFile, QProjectMWidget * qprojectMWidget, QWidget * parent, Qt::WindowFlags f) : QDialog(parent, f), _configFile(configFile), _qprojectMWidget(qprojectMWidget), _settings("projectM", "qprojectM") { _ui.setupUi(this); @@ -22,9 +23,11 @@ void QProjectMConfigDialog::buttonBoxHandler(QAbstractButton * button) { case QDialogButtonBox::Close: this->hide(); break; - case QDialogButtonBox::Apply: + case QDialogButtonBox::Save: saveConfig(); +#ifdef PROJECTM_RESET_IS_THREAD_SAFE emit(projectM_Reset()); +#endif break; case QDialogButtonBox::Reset: loadConfig(); @@ -43,7 +46,7 @@ void QProjectMConfigDialog::openPlaylistFileDialog() { if (dialog.exec()) { - assert(!dialog.selectedFiles().empty()); + Q_ASSERT(!dialog.selectedFiles().empty()); _ui.startupPlaylistFileLineEdit->setText(dialog.selectedFiles()[0]); } @@ -59,7 +62,7 @@ void QProjectMConfigDialog::openPlaylistDirectoryDialog() { if (dialog.exec()) { - assert(!dialog.selectedFiles().empty()); + Q_ASSERT(!dialog.selectedFiles().empty()); _ui.startupPlaylistDirectoryLineEdit->setText(dialog.selectedFiles()[0]); } @@ -71,7 +74,7 @@ void QProjectMConfigDialog::openMenuFontFileDialog() { dialog.setFileMode(QFileDialog::ExistingFile); if (dialog.exec()) { - assert(!dialog.selectedFiles().empty()); + Q_ASSERT(!dialog.selectedFiles().empty()); _ui.menuFontPathLineEdit->setText(dialog.selectedFiles()[0]); _settings.setValue("Menu Font Directory", dialog.directory().absolutePath()); @@ -85,7 +88,7 @@ void QProjectMConfigDialog::openTitleFontFileDialog() { dialog.setFileMode(QFileDialog::ExistingFile); if (dialog.exec()) { - assert(!dialog.selectedFiles().empty()); + Q_ASSERT(!dialog.selectedFiles().empty()); _ui.titleFontPathLineEdit->setText(dialog.selectedFiles()[0]); _settings.setValue("Title Font Directory", dialog.directory().absolutePath()); } diff --git a/src/qprojectM/qprojectmconfigdialog.ui b/src/qprojectM/qprojectmconfigdialog.ui index 7436d2ca9..007d631ad 100644 --- a/src/qprojectM/qprojectmconfigdialog.ui +++ b/src/qprojectM/qprojectmconfigdialog.ui @@ -5,766 +5,559 @@ 0 0 - 483 - 334 + 503 + 360 projectM Settings - - - - 7 - 67 - 105 - 24 - - - - - 0 - 0 - - - - - 50 - 0 - - - - Menu Font Path - - - - - - 447 - 67 - 24 - 24 - - - - ... - - - - - - 118 - 67 - 323 - 24 - - - - - 2 - 0 - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">This changes the font projectM will use for its opengl rendered menus</p></body></html> - - - + 7 7 - 105 - 24 + 492 + 348 - - - 0 - 0 - - - - - 50 - 0 - - - - Playlist Directory - - - - - - 447 - 7 - 24 - 24 - - - - ... - - - - - - 118 - 7 - 323 - 24 - - - - - 2 - 0 - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> + + + + + + 0 + 0 + + + + + 50 + 0 + + + + Playlist Directory + + + + + + + + 2 + 0 + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;">This sets the default preset playlist directory when projectM starts up. Every valid preset file in the specified directory will be loaded into the playlist upon initialization. <span style=" font-weight:600;">NOTE:</span> This option is overriden by a non empty value of the <span style=" font-style:italic;">Playlist File </span>option.</p></body></html> - - - - - - 7 - 129 - 119 - 24 - - - - Preset Duration (s) - - - - - - 132 - 129 - 74 - 24 - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Sets how long a preset should be played in seconds before projectM automatically switches to another in the playlist</p></body></html> - - - 1 - - - 100000 - - - - - - 212 - 129 - 171 - 24 - - - - Smooth Preset Duration (s) - - - - - - 389 - 129 - 82 - 24 - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Sets how long a transition occurs in seconds when smooth preset switching</p></body></html> - - - 1 - - - 1000000 - - - - - - 226 - 259 - 81 - 24 - - - - - 0 - 0 - - - - Window Size - - - - - - 212 - 159 - 171 - 24 - - - - - 0 - 0 - - - - Maximum FPS - - - - - - 389 - 159 - 82 - 24 - - - - - 2 - 0 - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">This parameter, if nonzero, limits the number of frames per second projectM will attempt to render to screen. 35 is a reasonable limit.</p></body></html> - - - 0 - - - - - - 313 - 259 - 66 - 24 - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">This modifies the horizontal component of the startup window size </p></body></html> - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">This modifies the horizontal component of the startup window size </p></body></html> - - - 1 - - - 10000 - - - - - - 385 - 225 - 16 - 24 - - - - - 0 - 0 - - - - by - - - - - - 7 - 189 - 119 - 24 - - - - - 0 - 0 - - - - Texture Size - - - - - - 132 - 189 - 74 - 24 - - - - - 1 - 0 - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Sets the size of the texture. Higher is better, but slower.</p></body></html> - - - QComboBox::AdjustToMinimumContentsLength - - - - - - 226 - 225 - 81 - 24 - - - - - 0 - 0 - - - - Mesh Size - - - - - - 7 - 279 - 211 - 23 - - - - - 0 - 0 - - - - Fullscreen on startup - - - - - - 7 - 250 - 211 - 23 - - - - - 0 - 0 - - - - Show Menu on startup - - - - - - 225 - 298 - 247 - 30 - - - - Qt::RightToLeft - - - Qt::Horizontal - - - QDialogButtonBox::Apply|QDialogButtonBox::Close|QDialogButtonBox::NoButton|QDialogButtonBox::Reset - - - - - - 405 - 259 - 66 - 24 - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;">This modifies the vertical component of the startup window size</p></body></html> - - - 1 - - - 10000 - - - - - - 385 - 259 - 16 - 24 - - - - - 0 - 0 - - - - by - - - - - - 7 - 221 - 211 - 23 - - - - - 0 - 0 - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">This makes a square look like a square, and a circle look like a circle in cases where they may not otherwise.</p></body></html> - - - Use Aspect Correction - - - - - - 7 - 159 - 119 - 24 - - - - - 0 - 0 - - - - Beat Sensitivity - - - - - - 447 - 97 - 24 - 24 - - - - ... - - - - - - 7 - 97 - 105 - 24 - - - - - 0 - 0 - - - - - 50 - 0 - - - - Title Font Path - - - - - - 118 - 97 - 323 - 24 - - - - - 2 - 0 - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Changes the font projectM will use for rendering the song title</p></body></html> - - - - - - 132 - 159 - 74 - 24 - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Sets the intensity threshold for the preset hard cuts</p></body></html> - - - 0.000000000000000 - - - 100.000000000000000 - - - - - - 212 - 189 - 171 - 24 - - - - - 0 - 0 - - - - Easter Egg Parameter - - - - - - 389 - 189 - 82 - 24 - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">A mystery parameter!</p></body></html> - - - 20.000000000000000 - - - 0.010000000000000 - - - - - - 313 - 225 - 66 - 24 - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;">This modifies the horizontal component of the mesh. Higher is better but slower</p></body></html> - - - 1 - - - 1000 - - - 1 - - - - - - 405 - 225 - 66 - 24 - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;">This modifies the vertical component of the mesh. Higher is better but slower</p></body></html> - - - 1 - - - 1000 - - - - - - 7 - 308 - 211 - 23 - - - - - 0 - 0 - - - - Shuffle on startup - - - - - - 447 - 37 - 24 - 24 - - - - ... - - - - - - 7 - 37 - 105 - 24 - - - - - 0 - 0 - - - - - 50 - 0 - - - - Playlist File - - - - - - 118 - 37 - 323 - 24 - - - - - 2 - 0 - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> + + + + + + + ... + + + + + + + + 0 + 0 + + + + + 50 + 0 + + + + Playlist File + + + + + + + + 2 + 0 + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;">This sets the default preset playlist file when qprojectM starts up. The file must be a valid preset playlist (of type *.ppl). If specified, this overrides the <span style=" font-style:italic;">Playlist Directory</span> value on startup. </p></body></html> - + + + + + + + ... + + + + + + + + 0 + 0 + + + + + 50 + 0 + + + + Menu Font Path + + + + + + + + 2 + 0 + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">This changes the font projectM will use for its opengl rendered menus</p></body></html> + + + + + + + ... + + + + + + + + 0 + 0 + + + + + 50 + 0 + + + + Title Font Path + + + + + + + + 2 + 0 + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Changes the font projectM will use for rendering the song title</p></body></html> + + + + + + + ... + + + + + + + Preset Duration (s) + + + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Sets how long a preset should be played in seconds before projectM automatically switches to another in the playlist</p></body></html> + + + 1 + + + 100000 + + + + + + + Smooth Preset Duration (s) + + + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Sets how long a transition occurs in seconds when smooth preset switching</p></body></html> + + + 1 + + + 1000000 + + + + + + + + 0 + 0 + + + + Beat Sensitivity + + + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Sets the intensity threshold for the preset hard cuts</p></body></html> + + + 0.000000000000000 + + + 100.000000000000000 + + + + + + + + 0 + 0 + + + + Maximum FPS + + + + + + + + 2 + 0 + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">This parameter, if nonzero, limits the number of frames per second projectM will attempt to render to screen. 35 is a reasonable limit.</p></body></html> + + + 0 + + + + + + + + 0 + 0 + + + + Texture Size + + + + + + + + 1 + 0 + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Sets the size of the texture. Higher is better, but slower.</p></body></html> + + + QComboBox::AdjustToMinimumContentsLength + + + + + + + + 0 + 0 + + + + Easter Egg Parameter + + + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">A mystery parameter!</p></body></html> + + + 20.000000000000000 + + + 0.010000000000000 + + + + + + + + 0 + 0 + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">This makes a square look like a square, and a circle look like a circle in cases where they may not otherwise.</p></body></html> + + + Use Aspect Correction + + + + + + + + 0 + 0 + + + + Mesh Size + + + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;">This modifies the horizontal component of the mesh. Higher is better but slower</p></body></html> + + + 1 + + + 1000 + + + 1 + + + + + + + + 0 + 0 + + + + by + + + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;">This modifies the vertical component of the mesh. Higher is better but slower</p></body></html> + + + 1 + + + 1000 + + + + + + + + 0 + 0 + + + + Show Menu on startup + + + + + + + + 0 + 0 + + + + Window Size + + + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">This modifies the horizontal component of the startup window size </p></body></html> + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">This modifies the horizontal component of the startup window size </p></body></html> + + + 1 + + + 10000 + + + + + + + + 0 + 0 + + + + by + + + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;">This modifies the vertical component of the startup window size</p></body></html> + + + 1 + + + 10000 + + + + + + + + 0 + 0 + + + + Fullscreen on startup + + + + + + + Click save to write the settings to your projectM config file. The reset button will bring your settings back to whatever was stored on disk. + + + Qt::RightToLeft + + + Qt::Horizontal + + + QDialogButtonBox::Close|QDialogButtonBox::NoButton|QDialogButtonBox::Reset|QDialogButtonBox::Save + + + + + + + + 0 + 0 + + + + Shuffle on startup + + + +