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 = UrlQuery() |
1534 searchEngines = {} |
1535 searchEngines = {} |
1535 inputFields = formElement.findAll("input") |
1536 inputFields = formElement.findAll("input") |
1536 for inputField in inputFields.toList(): |
1537 for inputField in inputFields.toList(): |
1537 type_ = inputField.attribute("type", "text") |
1538 type_ = inputField.attribute("type", "text") |
1538 name = inputField.attribute("name") |
1539 name = inputField.attribute("name") |
1541 if type_ == "submit": |
1542 if type_ == "submit": |
1542 searchEngines[value] = name |
1543 searchEngines[value] = name |
1543 elif type_ == "text": |
1544 elif type_ == "text": |
1544 if inputField == element: |
1545 if inputField == element: |
1545 value = "{searchTerms}" |
1546 value = "{searchTerms}" |
1546 searchUrl.addQueryItem(name, value) |
1547 searchUrlQuery.addQueryItem(name, value) |
1547 elif type_ == "checkbox" or type_ == "radio": |
1548 elif type_ == "checkbox" or type_ == "radio": |
1548 if inputField.evaluateJavaScript("this.checked"): |
1549 if inputField.evaluateJavaScript("this.checked"): |
1549 searchUrl.addQueryItem(name, value) |
1550 searchUrlQuery.addQueryItem(name, value) |
1550 elif type_ == "hidden": |
1551 elif type_ == "hidden": |
1551 searchUrl.addQueryItem(name, value) |
1552 searchUrlQuery.addQueryItem(name, value) |
1552 |
1553 |
1553 selectFields = formElement.findAll("select") |
1554 selectFields = formElement.findAll("select") |
1554 for selectField in selectFields.toList(): |
1555 for selectField in selectFields.toList(): |
1555 name = selectField.attribute("name") |
1556 name = selectField.attribute("name") |
1556 selectedIndex = selectField.evaluateJavaScript( |
1557 selectedIndex = selectField.evaluateJavaScript( |
1558 if selectedIndex == -1: |
1559 if selectedIndex == -1: |
1559 continue |
1560 continue |
1560 |
1561 |
1561 options = selectField.findAll("option") |
1562 options = selectField.findAll("option") |
1562 value = options.at(selectedIndex).toPlainText() |
1563 value = options.at(selectedIndex).toPlainText() |
1563 searchUrl.addQueryItem(name, value) |
1564 searchUrlQuery.addQueryItem(name, value) |
1564 |
1565 |
1565 ok = True |
1566 ok = True |
1566 if len(searchEngines) > 1: |
1567 if len(searchEngines) > 1: |
1567 searchEngine, ok = QInputDialog.getItem( |
1568 searchEngine, ok = QInputDialog.getItem( |
1568 self, |
1569 self, |
1572 |
1573 |
1573 if not ok: |
1574 if not ok: |
1574 return |
1575 return |
1575 |
1576 |
1576 if searchEngines[searchEngine] != "": |
1577 if searchEngines[searchEngine] != "": |
1577 searchUrl.addQueryItem( |
1578 searchUrlQuery.addQueryItem( |
1578 searchEngines[searchEngine], searchEngine) |
1579 searchEngines[searchEngine], searchEngine) |
1579 |
1580 |
1580 engineName = "" |
1581 engineName = "" |
1581 labels = formElement.findAll('label[for="{0}"]'.format(elementName)) |
1582 labels = formElement.findAll('label[for="{0}"]'.format(elementName)) |
1582 if labels.count() > 0: |
1583 if labels.count() > 0: |
1588 self.tr("Enter a name for the engine"), |
1589 self.tr("Enter a name for the engine"), |
1589 QLineEdit.Normal, |
1590 QLineEdit.Normal, |
1590 engineName) |
1591 engineName) |
1591 if not ok: |
1592 if not ok: |
1592 return |
1593 return |
|
1594 |
|
1595 searchUrl.setQuery(searchUrlQuery) |
1593 |
1596 |
1594 from .OpenSearch.OpenSearchEngine import OpenSearchEngine |
1597 from .OpenSearch.OpenSearchEngine import OpenSearchEngine |
1595 engine = OpenSearchEngine() |
1598 engine = OpenSearchEngine() |
1596 engine.setName(engineName) |
1599 engine.setName(engineName) |
1597 engine.setDescription(engineName) |
1600 engine.setDescription(engineName) |