Some initial work for improved file renaming support.

This commit is contained in:
LoRd_MuldeR 2015-05-09 17:28:56 +02:00
parent 2e89c1fe77
commit effb417eb5
22 changed files with 4737 additions and 3812 deletions

View File

@ -91,7 +91,8 @@ document.write('<a h'+'ref'+'="ma'+'ilto'+':'+e+'">'+e+'<\/'+'a'+'>');
<li>Added optional support for the <em>libfdk-aac</em> encoder, using the <a href="https://github.com/nu774/fdkaac">fdkaac</a> front-end by nu774<br /></li>
<li>Updated MediaInfo to v0.7.73 (2015-04-09), compiled with ICL 15.0 and MSVC 12.0<br /></li>
<li>Updated ALAC decoder to refalac v1.47 (2015-02-15), based on reference implementation by Apple<br /></li>
<li>Fixed potential deadlock in Cue Sheet import dialog when &quot;Browse...&quot; button is clicked</li>
<li>Fixed potential deadlock in Cue Sheet import dialog when &quot;Browse...&quot; button is clicked<br /></li>
<li>Fixed function to restore the default Temp folder, if the custom Temp folder doesn't exist anymore</li>
</ul>
<h2 id="lamexp-v4.11-2015-04-05" class="unnumbered">LameXP v4.11 [2015-04-05]</h2>
<ul>

View File

@ -9,6 +9,7 @@
* Updated MediaInfo to v0.7.73 (2015-04-09), compiled with ICL 15.0 and MSVC 12.0
* Updated ALAC decoder to refalac v1.47 (2015-02-15), based on reference implementation by Apple
* Fixed potential deadlock in Cue Sheet import dialog when "Browse..." button is clicked
* Fixed function to restore the default Temp folder, if the custom Temp folder doesn't exist anymore
## LameXP v4.11 [2015-04-05] ## {-}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -31,7 +31,7 @@
<context>
<name>MainWindow</name>
<message numerus="yes">
<location filename="../../src/Dialog_MainWindow.cpp" line="822"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="827"/>
<source>%n file(s) have been rejected, because read access was not granted!</source>
<translation>
<numerusform>%n file have been rejected, because read access was not granted!</numerusform>
@ -39,7 +39,7 @@
</translation>
</message>
<message numerus="yes">
<location filename="../../src/Dialog_MainWindow.cpp" line="826"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="831"/>
<source>%n file(s) have been rejected, because they are dummy CDDA files!</source>
<translation>
<numerusform>%n file have been rejected, because they are dummy CDDA files!</numerusform>
@ -47,7 +47,7 @@
</translation>
</message>
<message numerus="yes">
<location filename="../../src/Dialog_MainWindow.cpp" line="830"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="835"/>
<source>%n file(s) have been rejected, because they appear to be Cue Sheet images!</source>
<translation>
<numerusform>%n file have been rejected, because they appear to be Cue Sheet images!</numerusform>
@ -55,7 +55,7 @@
</translation>
</message>
<message numerus="yes">
<location filename="../../src/Dialog_MainWindow.cpp" line="834"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="839"/>
<source>%n file(s) have been rejected, because the file format could not be recognized!</source>
<translation>
<numerusform>%n file have been rejected, because the file format could not be recognized!</numerusform>
@ -63,7 +63,7 @@
</translation>
</message>
<message numerus="yes">
<location filename="../../src/Dialog_MainWindow.cpp" line="3957"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3986"/>
<source>%n Instance(s)</source>
<translation>
<numerusform>%n Instance</numerusform>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1510,7 +1510,7 @@
<x>0</x>
<y>0</y>
<width>613</width>
<height>1794</height>
<height>1849</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout_22">
@ -3562,7 +3562,20 @@
<string> Rename Output Files </string>
</property>
<layout class="QGridLayout" name="gridLayout_38">
<item row="0" column="0">
<property name="verticalSpacing">
<number>4</number>
</property>
<item row="9" column="0">
<widget class="QStackedWidget" name="stackedWidget">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="pageRename_Rename">
<layout class="QGridLayout" name="gridLayout">
<item row="1" column="0">
<layout class="QGridLayout" name="gridLayout_37">
<item row="1" column="0" rowspan="5">
<spacer name="horizontalSpacer_43">
@ -3647,7 +3660,7 @@
</spacer>
</item>
<item row="5" column="1" colspan="2">
<widget class="QCheckBox" name="checkBoxRenameOutput">
<widget class="QCheckBox" name="checkBoxRename_Rename">
<property name="text">
<string>Rename Output Files</string>
</property>
@ -3747,6 +3760,268 @@
</item>
</layout>
</widget>
<widget class="QWidget" name="pageRename_RegExp">
<layout class="QGridLayout" name="gridLayout_12">
<item row="0" column="0">
<layout class="QGridLayout" name="gridLayout_43">
<item row="3" column="1">
<widget class="QLabel" name="label_20">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Replacement:</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLabel" name="label_19">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Search Pattern:</string>
</property>
</widget>
</item>
<item row="2" column="1" colspan="3">
<spacer name="verticalSpacer_42">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>1</height>
</size>
</property>
</spacer>
</item>
<item row="5" column="3">
<widget class="QLabel" name="labelShowRegExpHelp">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>&lt;a href=&quot;regexp&quot;&gt;Regular Expression Info&lt;/a&gt;</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="4" column="1" colspan="3">
<spacer name="verticalSpacer_41">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>3</height>
</size>
</property>
</spacer>
</item>
<item row="5" column="1" colspan="2">
<widget class="QCheckBox" name="checkBoxRename_RegExp">
<property name="text">
<string>Replace all Matching Elements</string>
</property>
</widget>
</item>
<item row="6" column="1" colspan="3">
<spacer name="verticalSpacer_40">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>8</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="1" colspan="3">
<spacer name="verticalSpacer_39">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>8</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="2" colspan="2">
<widget class="QLineEdit" name="lineEditRenameRegExp_Search">
<property name="enabled">
<bool>false</bool>
</property>
<property name="font">
<font>
<family>Lucida Console</family>
</font>
</property>
<property name="text">
<string notr="true"/>
</property>
<property name="placeholderText">
<string>Enter the desired search pattern (regular expression) here!</string>
</property>
</widget>
</item>
<item row="1" column="4" rowspan="5">
<spacer name="horizontalSpacer_71">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>10</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="0" rowspan="5">
<spacer name="horizontalSpacer_70">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>10</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="3" column="2" colspan="2">
<widget class="QLineEdit" name="lineEditRenameRegExp_Replace">
<property name="enabled">
<bool>false</bool>
</property>
<property name="font">
<font>
<family>Lucida Console</family>
</font>
</property>
<property name="placeholderText">
<string>Enter replacement text here! It may contain backreferences.</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<widget class="QWidget" name="pageRename_FileEx">
<layout class="QVBoxLayout" name="verticalLayout_7">
<item>
<widget class="QListView" name="listView"/>
</item>
</layout>
</widget>
</widget>
</item>
<item row="4" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_13">
<property name="spacing">
<number>1</number>
</property>
<item>
<widget class="QPushButton" name="buttonRename_Rename">
<property name="text">
<string>Rename Files </string>
</property>
<property name="icon">
<iconset resource="../res/Icons.qrc">
<normaloff>:/icons/page_edit.png</normaloff>:/icons/page_edit.png</iconset>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="buttonRename_RegExp">
<property name="text">
<string>Regular Expressions </string>
</property>
<property name="icon">
<iconset resource="../res/Icons.qrc">
<normaloff>:/icons/find.png</normaloff>:/icons/find.png</iconset>
</property>
<property name="checkable">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="buttonRename_FileEx">
<property name="text">
<string>File Extensions </string>
</property>
<property name="icon">
<iconset resource="../res/Icons.qrc">
<normaloff>:/icons/tag_blue.png</normaloff>:/icons/tag_blue.png</iconset>
</property>
<property name="checkable">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_69">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item row="5" column="0">
<widget class="QGroupBox" name="groupBox_16">
@ -5391,7 +5666,7 @@
</hints>
</connection>
<connection>
<sender>checkBoxRenameOutput</sender>
<sender>checkBoxRename_Rename</sender>
<signal>toggled(bool)</signal>
<receiver>lineEditRenamePattern</receiver>
<slot>setEnabled(bool)</slot>
@ -5438,5 +5713,37 @@
</hint>
</hints>
</connection>
<connection>
<sender>checkBoxRename_RegExp</sender>
<signal>toggled(bool)</signal>
<receiver>lineEditRenameRegExp_Search</receiver>
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>91</x>
<y>1121</y>
</hint>
<hint type="destinationlabel">
<x>91</x>
<y>1121</y>
</hint>
</hints>
</connection>
<connection>
<sender>checkBoxRename_RegExp</sender>
<signal>toggled(bool)</signal>
<receiver>lineEditRenameRegExp_Replace</receiver>
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>91</x>
<y>1121</y>
</hint>
<hint type="destinationlabel">
<x>91</x>
<y>1121</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

@ -56,6 +56,7 @@
<file>icons/feed.png</file>
<file>icons/film.png</file>
<file>icons/filter.png</file>
<file>icons/find.png</file>
<file>icons/folder.png</file>
<file>icons/folder_add.png</file>
<file>icons/folder_go.png</file>
@ -81,6 +82,7 @@
<file>icons/network_error.png</file>
<file>icons/palette.png</file>
<file>icons/package.png</file>
<file>icons/page_edit.png</file>
<file>icons/page_refresh.png</file>
<file>icons/page_white_cplusplus.png</file>
<file>icons/page_white_add.png</file>
@ -110,6 +112,7 @@
<file>icons/star.png</file>
<file>icons/table_edit.png</file>
<file>icons/table_save.png</file>
<file>icons/tag_blue.png</file>
<file>icons/tick.png</file>
<file>icons/timeline_marker.png</file>
<file>icons/transmit.png</file>

View File

@ -35,7 +35,7 @@
#define VER_LAMEXP_MINOR_LO 2
#define VER_LAMEXP_TYPE Alpha
#define VER_LAMEXP_PATCH 1
#define VER_LAMEXP_BUILD 1721
#define VER_LAMEXP_BUILD 1723
#define VER_LAMEXP_CONFG 1700
///////////////////////////////////////////////////////////////////////////////

View File

@ -487,7 +487,7 @@ MainWindow::MainWindow(MUtils::IPCChannel *const ipcChannel, FileListModel *cons
SET_CHECKBOX_STATE(ui->checkBoxNormalizationFilterCoupled, m_settings->normalizationFilterCoupled());
SET_CHECKBOX_STATE(ui->checkBoxAutoDetectInstances, (m_settings->maximumInstances() < 1));
SET_CHECKBOX_STATE(ui->checkBoxUseSystemTempFolder, (!m_settings->customTempPathEnabled()));
SET_CHECKBOX_STATE(ui->checkBoxRenameOutput, m_settings->renameOutputFilesEnabled());
SET_CHECKBOX_STATE(ui->checkBoxRename_Rename, m_settings->renameOutputFilesEnabled());
SET_CHECKBOX_STATE(ui->checkBoxForceStereoDownmix, m_settings->forceStereoDownmix());
SET_CHECKBOX_STATE(ui->checkBoxOpusDisableResample, m_settings->opusDisableResample());
@ -552,14 +552,19 @@ MainWindow::MainWindow(MUtils::IPCChannel *const ipcChannel, FileListModel *cons
connect(ui->lineEditCustomTempFolder, SIGNAL(textChanged(QString)), this, SLOT(customTempFolderChanged(QString)));
connect(ui->checkBoxUseSystemTempFolder, SIGNAL(clicked(bool)), this, SLOT(useCustomTempFolderChanged(bool)));
connect(ui->buttonResetAdvancedOptions, SIGNAL(clicked()), this, SLOT(resetAdvancedOptionsButtonClicked()));
connect(ui->checkBoxRenameOutput, SIGNAL(clicked(bool)), this, SLOT(renameOutputEnabledChanged(bool)));
connect(ui->checkBoxRename_Rename, SIGNAL(clicked(bool)), this, SLOT(renameOutputEnabledChanged(bool)));
connect(ui->checkBoxRename_RegExp, SIGNAL(clicked(bool)), this, SLOT(renameOutputEnabledChanged(bool)));
connect(ui->lineEditRenamePattern, SIGNAL(editingFinished()), this, SLOT(renameOutputPatternChanged()));
connect(ui->lineEditRenamePattern, SIGNAL(textChanged(QString)), this, SLOT(renameOutputPatternChanged(QString)));
connect(ui->labelShowRenameMacros, SIGNAL(linkActivated(QString)), this, SLOT(showRenameMacros(QString)));
connect(ui->labelShowRegExpHelp, SIGNAL(linkActivated(QString)), this, SLOT(showRenameMacros(QString)));
connect(ui->checkBoxForceStereoDownmix, SIGNAL(clicked(bool)), this, SLOT(forceStereoDownmixEnabledChanged(bool)));
connect(ui->comboBoxOpusFramesize, SIGNAL(currentIndexChanged(int)), this, SLOT(opusSettingsChanged()));
connect(ui->spinBoxOpusComplexity, SIGNAL(valueChanged(int)), this, SLOT(opusSettingsChanged()));
connect(ui->checkBoxOpusDisableResample, SIGNAL(clicked(bool)), this, SLOT(opusSettingsChanged()));
connect(ui->buttonRename_Rename, SIGNAL(clicked(bool)), this, SLOT(renameButtonClicked(bool)));
connect(ui->buttonRename_RegExp, SIGNAL(clicked(bool)), this, SLOT(renameButtonClicked(bool)));
connect(ui->buttonRename_FileEx, SIGNAL(clicked(bool)), this, SLOT(renameButtonClicked(bool)));
connect(m_overwriteButtonGroup, SIGNAL(buttonClicked(int)), this, SLOT(overwriteModeChanged(int)));
connect(m_evenFilterCustumParamsHelp, SIGNAL(eventOccurred(QWidget*, QEvent*)), this, SLOT(customParamsHelpRequested(QWidget*, QEvent*)));
@ -3861,6 +3866,24 @@ void MainWindow::customParamsChanged(void)
EncoderRegistry::saveEncoderCustomParams(m_settings, SettingsModel::OpusEncoder, ui->lineEditCustomParamOpus->text());
}
/*
* One of the rename buttons has been clicked
*/
void MainWindow::renameButtonClicked(bool checked)
{
if(QPushButton *const button = dynamic_cast<QPushButton*>(QObject::sender()))
{
QWidget *pages[] = { ui->pageRename_Rename, ui->pageRename_RegExp, ui->pageRename_FileEx };
QPushButton *buttons[] = { ui->buttonRename_Rename, ui->buttonRename_RegExp, ui->buttonRename_FileEx };
for(int i = 0; i < 3; i++)
{
const bool match = (button == buttons[i]);
buttons[i]->setChecked(match);
if(match && checked) ui->stackedWidget->setCurrentWidget(pages[i]);
}
}
}
/*
* Rename output files enabled changed
*/
@ -3927,6 +3950,12 @@ void MainWindow::showRenameMacros(const QString &text)
return;
}
if(text.compare("regexp", Qt::CaseInsensitive) == 0)
{
MUtils::OS::shell_open(this, "http://www.regular-expressions.info/quickstart.html");
return;
}
const QString format = QString("<tr><td><tt>&lt;%1&gt;</tt></td><td>&nbsp;&nbsp;</td><td>%2</td></tr>");
QString message = QString("<table>");
@ -4163,7 +4192,7 @@ void MainWindow::resetAdvancedOptionsButtonClicked(void)
SET_CHECKBOX_STATE(ui->checkBoxAutoDetectInstances, (m_settings->maximumInstancesDefault() < 1));
SET_CHECKBOX_STATE(ui->checkBoxUseSystemTempFolder, (!m_settings->customTempPathEnabledDefault()));
SET_CHECKBOX_STATE(ui->checkBoxAftenFastAllocation, m_settings->aftenFastBitAllocationDefault());
SET_CHECKBOX_STATE(ui->checkBoxRenameOutput, m_settings->renameOutputFilesEnabledDefault());
SET_CHECKBOX_STATE(ui->checkBoxRename_Rename, m_settings->renameOutputFilesEnabledDefault());
SET_CHECKBOX_STATE(ui->checkBoxForceStereoDownmix, m_settings->forceStereoDownmixDefault());
SET_CHECKBOX_STATE(ui->checkBoxOpusDisableResample, m_settings->opusDisableResampleDefault());

View File

@ -151,6 +151,7 @@ private slots:
void previewContextActionTriggered(void);
void refreshFolderContextActionTriggered(void);
void removeFileButtonClicked(void);
void renameButtonClicked(bool checked);
void renameOutputEnabledChanged(bool checked);
void renameOutputPatternChanged(void);
void renameOutputPatternChanged(const QString &text, bool silent = false);

View File

@ -1,2 +0,0 @@
This directory is reserved for files generated by Qt.
Do not edit any files in this directory, as your changes will be lost!