80 self.syntaxCombo.addItem("W3C XML Schema 1.1", QRegExp.W3CXmlSchema11) |
80 self.syntaxCombo.addItem("W3C XML Schema 1.1", QRegExp.W3CXmlSchema11) |
81 if qVersion() >= "5.0.0": |
81 if qVersion() >= "5.0.0": |
82 self.syntaxCombo.setCurrentIndex(1) |
82 self.syntaxCombo.setCurrentIndex(1) |
83 |
83 |
84 self.saveButton = self.buttonBox.addButton( |
84 self.saveButton = self.buttonBox.addButton( |
85 self.trUtf8("Save"), QDialogButtonBox.ActionRole) |
85 self.tr("Save"), QDialogButtonBox.ActionRole) |
86 self.saveButton.setToolTip( |
86 self.saveButton.setToolTip( |
87 self.trUtf8("Save the regular expression to a file")) |
87 self.tr("Save the regular expression to a file")) |
88 self.loadButton = self.buttonBox.addButton( |
88 self.loadButton = self.buttonBox.addButton( |
89 self.trUtf8("Load"), QDialogButtonBox.ActionRole) |
89 self.tr("Load"), QDialogButtonBox.ActionRole) |
90 self.loadButton.setToolTip( |
90 self.loadButton.setToolTip( |
91 self.trUtf8("Load a regular expression from a file")) |
91 self.tr("Load a regular expression from a file")) |
92 self.validateButton = self.buttonBox.addButton( |
92 self.validateButton = self.buttonBox.addButton( |
93 self.trUtf8("Validate"), QDialogButtonBox.ActionRole) |
93 self.tr("Validate"), QDialogButtonBox.ActionRole) |
94 self.validateButton.setToolTip( |
94 self.validateButton.setToolTip( |
95 self.trUtf8("Validate the regular expression")) |
95 self.tr("Validate the regular expression")) |
96 self.executeButton = self.buttonBox.addButton( |
96 self.executeButton = self.buttonBox.addButton( |
97 self.trUtf8("Execute"), QDialogButtonBox.ActionRole) |
97 self.tr("Execute"), QDialogButtonBox.ActionRole) |
98 self.executeButton.setToolTip( |
98 self.executeButton.setToolTip( |
99 self.trUtf8("Execute the regular expression")) |
99 self.tr("Execute the regular expression")) |
100 self.nextButton = self.buttonBox.addButton( |
100 self.nextButton = self.buttonBox.addButton( |
101 self.trUtf8("Next match"), QDialogButtonBox.ActionRole) |
101 self.tr("Next match"), QDialogButtonBox.ActionRole) |
102 self.nextButton.setToolTip( |
102 self.nextButton.setToolTip( |
103 self.trUtf8("Show the next match of the regular expression")) |
103 self.tr("Show the next match of the regular expression")) |
104 self.nextButton.setEnabled(False) |
104 self.nextButton.setEnabled(False) |
105 |
105 |
106 if fromEric: |
106 if fromEric: |
107 self.buttonBox.setStandardButtons( |
107 self.buttonBox.setStandardButtons( |
108 QDialogButtonBox.Cancel | QDialogButtonBox.Ok) |
108 QDialogButtonBox.Cancel | QDialogButtonBox.Ok) |
109 self.copyButton = None |
109 self.copyButton = None |
110 else: |
110 else: |
111 self.copyButton = self.buttonBox.addButton( |
111 self.copyButton = self.buttonBox.addButton( |
112 self.trUtf8("Copy"), QDialogButtonBox.ActionRole) |
112 self.tr("Copy"), QDialogButtonBox.ActionRole) |
113 self.copyButton.setToolTip( |
113 self.copyButton.setToolTip( |
114 self.trUtf8("Copy the regular expression to the clipboard")) |
114 self.tr("Copy the regular expression to the clipboard")) |
115 self.buttonBox.setStandardButtons(QDialogButtonBox.Close) |
115 self.buttonBox.setStandardButtons(QDialogButtonBox.Close) |
116 self.variableLabel.hide() |
116 self.variableLabel.hide() |
117 self.variableLineEdit.hide() |
117 self.variableLineEdit.hide() |
118 self.variableLine.hide() |
118 self.variableLine.hide() |
119 self.regexpLineEdit.setFocus() |
119 self.regexpLineEdit.setFocus() |
365 f.write(self.regexpLineEdit.text()) |
365 f.write(self.regexpLineEdit.text()) |
366 f.close() |
366 f.close() |
367 except IOError as err: |
367 except IOError as err: |
368 E5MessageBox.information( |
368 E5MessageBox.information( |
369 self, |
369 self, |
370 self.trUtf8("Save regular expression"), |
370 self.tr("Save regular expression"), |
371 self.trUtf8("""<p>The regular expression could not""" |
371 self.tr("""<p>The regular expression could not""" |
372 """ be saved.</p><p>Reason: {0}</p>""") |
372 """ be saved.</p><p>Reason: {0}</p>""") |
373 .format(str(err))) |
373 .format(str(err))) |
374 |
374 |
375 @pyqtSlot() |
375 @pyqtSlot() |
376 def on_loadButton_clicked(self): |
376 def on_loadButton_clicked(self): |
377 """ |
377 """ |
378 Private slot to load a regexp from a file. |
378 Private slot to load a regexp from a file. |
379 """ |
379 """ |
380 fname = E5FileDialog.getOpenFileName( |
380 fname = E5FileDialog.getOpenFileName( |
381 self, |
381 self, |
382 self.trUtf8("Load regular expression"), |
382 self.tr("Load regular expression"), |
383 "", |
383 "", |
384 self.trUtf8("RegExp Files (*.rx);;All Files (*)")) |
384 self.tr("RegExp Files (*.rx);;All Files (*)")) |
385 if fname: |
385 if fname: |
386 try: |
386 try: |
387 f = open( |
387 f = open( |
388 Utilities.toNativeSeparators(fname), "r", encoding="utf-8") |
388 Utilities.toNativeSeparators(fname), "r", encoding="utf-8") |
389 regexp = f.read() |
389 regexp = f.read() |
434 re.setPatternSyntax( |
434 re.setPatternSyntax( |
435 self.syntaxCombo.itemData(self.syntaxCombo.currentIndex())) |
435 self.syntaxCombo.itemData(self.syntaxCombo.currentIndex())) |
436 if re.isValid(): |
436 if re.isValid(): |
437 E5MessageBox.information( |
437 E5MessageBox.information( |
438 self, |
438 self, |
439 self.trUtf8("Validation"), |
439 self.tr("Validation"), |
440 self.trUtf8("""The regular expression is valid.""")) |
440 self.tr("""The regular expression is valid.""")) |
441 else: |
441 else: |
442 E5MessageBox.critical( |
442 E5MessageBox.critical( |
443 self, |
443 self, |
444 self.trUtf8("Error"), |
444 self.tr("Error"), |
445 self.trUtf8("""Invalid regular expression: {0}""") |
445 self.tr("""Invalid regular expression: {0}""") |
446 .format(re.errorString())) |
446 .format(re.errorString())) |
447 return |
447 return |
448 else: |
448 else: |
449 E5MessageBox.critical( |
449 E5MessageBox.critical( |
450 self, |
450 self, |
451 self.trUtf8("Error"), |
451 self.tr("Error"), |
452 self.trUtf8("""A regular expression must be given.""")) |
452 self.tr("""A regular expression must be given.""")) |
453 |
453 |
454 @pyqtSlot() |
454 @pyqtSlot() |
455 def on_executeButton_clicked(self, startpos=0): |
455 def on_executeButton_clicked(self, startpos=0): |
456 """ |
456 """ |
457 Private slot to execute the entered regexp on the test text. |
457 Private slot to execute the entered regexp on the test text. |
474 wildcard = syntax in [QRegExp.Wildcard, QRegExp.WildcardUnix] |
474 wildcard = syntax in [QRegExp.Wildcard, QRegExp.WildcardUnix] |
475 re.setPatternSyntax(syntax) |
475 re.setPatternSyntax(syntax) |
476 if not re.isValid(): |
476 if not re.isValid(): |
477 E5MessageBox.critical( |
477 E5MessageBox.critical( |
478 self, |
478 self, |
479 self.trUtf8("Error"), |
479 self.tr("Error"), |
480 self.trUtf8("""Invalid regular expression: {0}""") |
480 self.tr("""Invalid regular expression: {0}""") |
481 .format(re.errorString())) |
481 .format(re.errorString())) |
482 return |
482 return |
483 offset = re.indexIn(text, startpos) |
483 offset = re.indexIn(text, startpos) |
484 captures = re.captureCount() |
484 captures = re.captureCount() |
485 row = 0 |
485 row = 0 |
488 self.resultTable.setColumnCount(0) |
488 self.resultTable.setColumnCount(0) |
489 self.resultTable.setColumnCount(3) |
489 self.resultTable.setColumnCount(3) |
490 self.resultTable.setRowCount(0) |
490 self.resultTable.setRowCount(0) |
491 self.resultTable.setRowCount(OFFSET) |
491 self.resultTable.setRowCount(OFFSET) |
492 self.resultTable.setItem( |
492 self.resultTable.setItem( |
493 row, 0, QTableWidgetItem(self.trUtf8("Regexp"))) |
493 row, 0, QTableWidgetItem(self.tr("Regexp"))) |
494 self.resultTable.setItem(row, 1, QTableWidgetItem(regex)) |
494 self.resultTable.setItem(row, 1, QTableWidgetItem(regex)) |
495 |
495 |
496 if offset != -1: |
496 if offset != -1: |
497 self.lastMatchEnd = offset + re.matchedLength() |
497 self.lastMatchEnd = offset + re.matchedLength() |
498 self.nextButton.setEnabled(True) |
498 self.nextButton.setEnabled(True) |
499 row += 1 |
499 row += 1 |
500 self.resultTable.setItem( |
500 self.resultTable.setItem( |
501 row, 0, QTableWidgetItem(self.trUtf8("Offset"))) |
501 row, 0, QTableWidgetItem(self.tr("Offset"))) |
502 self.resultTable.setItem( |
502 self.resultTable.setItem( |
503 row, 1, QTableWidgetItem("{0:d}".format(offset))) |
503 row, 1, QTableWidgetItem("{0:d}".format(offset))) |
504 |
504 |
505 if not wildcard: |
505 if not wildcard: |
506 row += 1 |
506 row += 1 |
507 self.resultTable.setItem( |
507 self.resultTable.setItem( |
508 row, 0, QTableWidgetItem(self.trUtf8("Captures"))) |
508 row, 0, QTableWidgetItem(self.tr("Captures"))) |
509 self.resultTable.setItem( |
509 self.resultTable.setItem( |
510 row, 1, QTableWidgetItem("{0:d}".format(captures))) |
510 row, 1, QTableWidgetItem("{0:d}".format(captures))) |
511 row += 1 |
511 row += 1 |
512 self.resultTable.setItem( |
512 self.resultTable.setItem( |
513 row, 1, QTableWidgetItem(self.trUtf8("Text"))) |
513 row, 1, QTableWidgetItem(self.tr("Text"))) |
514 self.resultTable.setItem( |
514 self.resultTable.setItem( |
515 row, 2, QTableWidgetItem(self.trUtf8("Characters"))) |
515 row, 2, QTableWidgetItem(self.tr("Characters"))) |
516 |
516 |
517 row += 1 |
517 row += 1 |
518 self.resultTable.setItem( |
518 self.resultTable.setItem( |
519 row, 0, QTableWidgetItem(self.trUtf8("Match"))) |
519 row, 0, QTableWidgetItem(self.tr("Match"))) |
520 self.resultTable.setItem( |
520 self.resultTable.setItem( |
521 row, 1, QTableWidgetItem(re.cap(0))) |
521 row, 1, QTableWidgetItem(re.cap(0))) |
522 self.resultTable.setItem( |
522 self.resultTable.setItem( |
523 row, 2, |
523 row, 2, |
524 QTableWidgetItem("{0:d}".format(re.matchedLength()))) |
524 QTableWidgetItem("{0:d}".format(re.matchedLength()))) |