]> Some of my projects - AniAdd.git/commitdiff
Show parse errors in Rename Settings Dialog.
authorAPTX <marek321@gmail.com>
Mon, 8 Aug 2011 23:26:23 +0000 (01:26 +0200)
committerAPTX <marek321@gmail.com>
Mon, 8 Aug 2011 23:26:23 +0000 (01:26 +0200)
renamesettingsdialog.cpp
renamesettingsdialog.h
renamesettingsdialog.ui

index b6bc957767677be05f07796c832297d8f48a422c..cd6e8566c5b4d464fa02c1b6f23a9d74e239edce 100644 (file)
@@ -113,6 +113,7 @@ QString RenameSettingsDialog::renameEnv() const
 void RenameSettingsDialog::setRenameEnv(const QString &renameEnv)
 {
        ui->input->setPlainText(renameEnv);
+       originalEnv = renameEnv;
 }
 
 bool RenameSettingsDialog::filterResults() const
@@ -133,6 +134,7 @@ RenameParser::RenameEngine::ParserType RenameSettingsDialog::parserType() const
 void RenameSettingsDialog::setParserType(RenameParser::RenameEngine::ParserType parserType)
 {
        ui->scriptLanguage->setCurrentIndex(parserType);
+       originalParserType = parserType;
 }
 
 
@@ -140,6 +142,12 @@ void RenameSettingsDialog::on_input_textChanged()
 {
        bool success = environmentEngine->parse(ui->input->toPlainText() + "\n");
 
+       if (!success)
+       {
+               ui->status->setText("Error in input field: " + environmentEngine->error());
+               updateResult(RenameParser::Environment());
+               return;
+       }
        RenameParser::Environment newEnv;
        environmentEngine->evaluate(newEnv);
        env = newEnv;
@@ -154,9 +162,15 @@ void RenameSettingsDialog::on_renameScript_textChanged()
 
        bool success = rulesEngine->parse(ui->renameScript->toPlainText() + "\n");
 
+       if (!success)
+       {
+               ui->status->setText("Error: " + rulesEngine->error());
+               updateResult(RenameParser::Environment());
+               return;
+       }
        rulesEngine->evaluate(newEnv);
        updateResult(newEnv);
-
+       ui->status->setText("Success");
 }
 
 void RenameSettingsDialog::on_scriptLanguage_currentIndexChanged()
@@ -190,16 +204,37 @@ void RenameSettingsDialog::on_filterResultsCheckbox_toggled()
 
 QString RenameSettingsDialog::renameString() const
 {
-       return ui->renameScript->toPlainText();
+       QString s = ui->renameScript->toPlainText();
+       if (!s.endsWith(QChar('\n')))
+               s += QChar('\n');
+       return s;
 }
 
 void RenameSettingsDialog::setRenameString(const QString &renameScript)
 {
        ui->renameScript->setPlainText(renameScript);
+       originalScript = renameScript;
 }
 
 void RenameSettingsDialog::on_buttonBox_clicked(QAbstractButton *button)
 {
-
+       switch (ui->buttonBox->standardButton(button))
+       {
+               case QDialogButtonBox::Reset:
+               {
+                       ui->input->setPlainText(originalEnv);
+                       setParserType(originalParserType);
+                       ui->renameScript->setPlainText(originalScript);
+               }
+               break;
+               case QDialogButtonBox::RestoreDefaults:
+               {
+                       ui->input->setPlainText(QString::fromUtf8(envStrAniAdd));
+                       setParserType(RenameParser::RenameEngine::AniAdd);
+                       ui->renameScript->setPlainText(QString::fromUtf8(rulesStrAniAddNoCompat));
+               }
+               break;
+               default:
+               break;
+       }
 }
-
index 5bd5a66cb8e62d4b4e2ec2cdf59791f44c13894e..b34454601716187882a831ec7e8e4b0b0cbd919b 100644 (file)
@@ -52,6 +52,10 @@ private:
        RenameParser::RenameEngine *rulesEngine;
 
        RenameParser::Environment env;
+
+       QString originalEnv;
+       RenameParser::RenameEngine::ParserType originalParserType;
+       QString originalScript;
 };
 
 #endif // RENAMESETTINGSDIALOG_H
index 4d6015621ad8d7c4b21edb4de0fc9178844943c4..bcf4c8e8ad7579cea1c2c4dbed3f9b18225e1ce8 100644 (file)
@@ -6,8 +6,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>601</width>
-    <height>596</height>
+    <width>1029</width>
+    <height>678</height>
    </rect>
   </property>
   <property name="windowTitle">
        </property>
        <layout class="QVBoxLayout" name="verticalLayout_4">
         <item>
-         <widget class="QTextEdit" name="input"/>
+         <widget class="QTextEdit" name="input">
+          <property name="font">
+           <font>
+            <family>DejaVu Sans Mono</family>
+           </font>
+          </property>
+         </widget>
         </item>
        </layout>
       </widget>
        </property>
        <layout class="QVBoxLayout" name="verticalLayout_2">
         <item>
-         <widget class="QTextEdit" name="result"/>
+         <widget class="QTextEdit" name="result">
+          <property name="font">
+           <font>
+            <family>DejaVu Sans Mono</family>
+           </font>
+          </property>
+          <property name="readOnly">
+           <bool>true</bool>
+          </property>
+         </widget>
         </item>
         <item>
          <widget class="QCheckBox" name="filterResultsCheckbox">
        </layout>
       </item>
       <item>
-       <widget class="QTextEdit" name="renameScript"/>
+       <widget class="QTextEdit" name="renameScript">
+        <property name="font">
+         <font>
+          <family>DejaVu Sans Mono</family>
+         </font>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QGroupBox" name="groupBox_4">
+     <property name="title">
+      <string>Status</string>
+     </property>
+     <layout class="QHBoxLayout" name="horizontalLayout_3">
+      <item>
+       <widget class="QLabel" name="status">
+        <property name="text">
+         <string/>
+        </property>
+       </widget>
       </item>
      </layout>
     </widget>