13 str = unicode |
13 str = unicode |
14 except NameError: |
14 except NameError: |
15 pass |
15 pass |
16 |
16 |
17 from PyQt5.QtCore import pyqtSlot, pyqtSignal, QObject, QT_TRANSLATE_NOOP, \ |
17 from PyQt5.QtCore import pyqtSlot, pyqtSignal, QObject, QT_TRANSLATE_NOOP, \ |
18 QUrl, QUrlQuery, QBuffer, QIODevice, QFileInfo, Qt, QTimer, QEvent, \ |
18 QUrl, QBuffer, QIODevice, QFileInfo, Qt, QTimer, QEvent, \ |
19 QRect, QFile, QPoint, QByteArray, qVersion |
19 QRect, QFile, QPoint, QByteArray, qVersion |
20 from PyQt5.QtGui import QDesktopServices, QClipboard, QMouseEvent, QColor, \ |
20 from PyQt5.QtGui import QDesktopServices, QClipboard, QMouseEvent, QColor, \ |
21 QPalette |
21 QPalette |
22 from PyQt5.QtWidgets import qApp, QStyle, QMenu, QApplication, QInputDialog, \ |
22 from PyQt5.QtWidgets import qApp, QStyle, QMenu, QApplication, QInputDialog, \ |
23 QLineEdit, QLabel, QToolTip, QFrame, QDialog |
23 QLineEdit, QLabel, QToolTip, QFrame, QDialog |
1529 searchUrl = QUrl(self.page().mainFrame().baseUrl().resolved( |
1529 searchUrl = QUrl(self.page().mainFrame().baseUrl().resolved( |
1530 QUrl(formElement.attribute("action")))) |
1530 QUrl(formElement.attribute("action")))) |
1531 if searchUrl.scheme() != "http": |
1531 if searchUrl.scheme() != "http": |
1532 return |
1532 return |
1533 |
1533 |
1534 searchUrlQuery = QUrlQuery() |
1534 if qVersion() >= "5.0.0": |
|
1535 from PyQt5.QtCore import QUrlQuery |
|
1536 searchUrlQuery = QUrlQuery() |
1535 searchEngines = {} |
1537 searchEngines = {} |
1536 inputFields = formElement.findAll("input") |
1538 inputFields = formElement.findAll("input") |
1537 for inputField in inputFields.toList(): |
1539 for inputField in inputFields.toList(): |
1538 type_ = inputField.attribute("type", "text") |
1540 type_ = inputField.attribute("type", "text") |
1539 name = inputField.attribute("name") |
1541 name = inputField.attribute("name") |
1542 if type_ == "submit": |
1544 if type_ == "submit": |
1543 searchEngines[value] = name |
1545 searchEngines[value] = name |
1544 elif type_ == "text": |
1546 elif type_ == "text": |
1545 if inputField == element: |
1547 if inputField == element: |
1546 value = "{searchTerms}" |
1548 value = "{searchTerms}" |
1547 searchUrlQuery.addQueryItem(name, value) |
1549 if qVersion() >= "5.0.0": |
|
1550 searchUrlQuery.addQueryItem(name, value) |
|
1551 else: |
|
1552 searchUrl.addQueryItem(name, value) |
1548 elif type_ == "checkbox" or type_ == "radio": |
1553 elif type_ == "checkbox" or type_ == "radio": |
1549 if inputField.evaluateJavaScript("this.checked"): |
1554 if inputField.evaluateJavaScript("this.checked"): |
|
1555 if qVersion() >= "5.0.0": |
|
1556 searchUrlQuery.addQueryItem(name, value) |
|
1557 else: |
|
1558 searchUrl.addQueryItem(name, value) |
|
1559 elif type_ == "hidden": |
|
1560 if qVersion() >= "5.0.0": |
1550 searchUrlQuery.addQueryItem(name, value) |
1561 searchUrlQuery.addQueryItem(name, value) |
1551 elif type_ == "hidden": |
1562 else: |
1552 searchUrlQuery.addQueryItem(name, value) |
1563 searchUrl.addQueryItem(name, value) |
1553 |
1564 |
1554 selectFields = formElement.findAll("select") |
1565 selectFields = formElement.findAll("select") |
1555 for selectField in selectFields.toList(): |
1566 for selectField in selectFields.toList(): |
1556 name = selectField.attribute("name") |
1567 name = selectField.attribute("name") |
1557 selectedIndex = selectField.evaluateJavaScript( |
1568 selectedIndex = selectField.evaluateJavaScript( |
1559 if selectedIndex == -1: |
1570 if selectedIndex == -1: |
1560 continue |
1571 continue |
1561 |
1572 |
1562 options = selectField.findAll("option") |
1573 options = selectField.findAll("option") |
1563 value = options.at(selectedIndex).toPlainText() |
1574 value = options.at(selectedIndex).toPlainText() |
1564 searchUrlQuery.addQueryItem(name, value) |
1575 if qVersion() >= "5.0.0": |
|
1576 searchUrlQuery.addQueryItem(name, value) |
|
1577 else: |
|
1578 searchUrl.addQueryItem(name, value) |
1565 |
1579 |
1566 ok = True |
1580 ok = True |
1567 if len(searchEngines) > 1: |
1581 if len(searchEngines) > 1: |
1568 searchEngine, ok = QInputDialog.getItem( |
1582 searchEngine, ok = QInputDialog.getItem( |
1569 self, |
1583 self, |
1573 |
1587 |
1574 if not ok: |
1588 if not ok: |
1575 return |
1589 return |
1576 |
1590 |
1577 if searchEngines[searchEngine] != "": |
1591 if searchEngines[searchEngine] != "": |
1578 searchUrlQuery.addQueryItem( |
1592 if qVersion() >= "5.0.0": |
1579 searchEngines[searchEngine], searchEngine) |
1593 searchUrlQuery.addQueryItem( |
1580 |
1594 searchEngines[searchEngine], searchEngine) |
|
1595 else: |
|
1596 searchUrl.addQueryItem( |
|
1597 searchEngines[searchEngine], searchEngine) |
1581 engineName = "" |
1598 engineName = "" |
1582 labels = formElement.findAll('label[for="{0}"]'.format(elementName)) |
1599 labels = formElement.findAll('label[for="{0}"]'.format(elementName)) |
1583 if labels.count() > 0: |
1600 if labels.count() > 0: |
1584 engineName = labels.at(0).toPlainText() |
1601 engineName = labels.at(0).toPlainText() |
1585 |
1602 |
1590 QLineEdit.Normal, |
1607 QLineEdit.Normal, |
1591 engineName) |
1608 engineName) |
1592 if not ok: |
1609 if not ok: |
1593 return |
1610 return |
1594 |
1611 |
1595 searchUrl.setQuery(searchUrlQuery) |
1612 if qVersion() >= "5.0.0": |
|
1613 searchUrl.setQuery(searchUrlQuery) |
1596 |
1614 |
1597 from .OpenSearch.OpenSearchEngine import OpenSearchEngine |
1615 from .OpenSearch.OpenSearchEngine import OpenSearchEngine |
1598 engine = OpenSearchEngine() |
1616 engine = OpenSearchEngine() |
1599 engine.setName(engineName) |
1617 engine.setName(engineName) |
1600 engine.setDescription(engineName) |
1618 engine.setDescription(engineName) |