void webview::contextMenuEvent(QContextMenuEvent * event) { QMenu * menu = new QMenu(); menu->setVisible(true); QWebHitTestResult element = this->page()->mainFrame()->hitTestContent(event->pos()); if(!element.linkUrl().isEmpty()) { QAction * newtab = this->pageAction(QWebPage::OpenLinkInNewWindow); newtab->setText(tr("open link in new tab")); menu->addAction(newtab); menu->addAction(this->pageAction(QWebPage::DownloadLinkToDisk)); menu->addAction(this->pageAction(QWebPage::CopyLinkToClipboard)); } if(!element.imageUrl().isEmpty()) { menu->addAction(this->pageAction(QWebPage::DownloadImageToDisk)); menu->addAction(this->pageAction(QWebPage::CopyImageToClipboard)); menu->addAction(this->pageAction(QWebPage::CopyImageUrlToClipboard)); QAction * newimage = this->pageAction(QWebPage::OpenImageInNewWindow); newimage->setText(tr("open image in new tab")); menu->addAction(newimage); } if(!page()->selectedText().isEmpty()) { menu->addAction(this->pageAction(QWebPage::Copy)); menu->addAction(this->pageAction(QWebPage::Cut)); menu->addAction(this->pageAction(QWebPage::Paste)); menu->addAction(this->pageAction(QWebPage::Undo)); menu->addAction(this->pageAction(QWebPage::Redo)); menu->addAction(this->pageAction(QWebPage::SelectAll)); } if(element.element().tagName().toLower() == "input" && element.element().attribute(QLatin1String("type")).toLower() == "text") { menu->addAction(this->pageAction(QWebPage::SelectAll)); menu->addAction(this->pageAction(QWebPage::Paste)); menu->addAction(this->pageAction(QWebPage::SetTextDirectionLeftToRight)); menu->addAction(this->pageAction(QWebPage::SetTextDirectionRightToLeft)); menu->addAction(this->pageAction(QWebPage::SetTextDirectionDefault)); menu->addAction(this->pageAction(QWebPage::MoveToNextWord)); } if(!element.isNull()) { menu->addAction(this->pageAction(QWebPage::Back)); menu->addAction(this->pageAction(QWebPage::Forward)); menu->addAction(this->pageAction(QWebPage::Reload)); menu->addAction(this->pageAction(QWebPage::Stop)); menu->addAction(this->pageAction(QWebPage::InspectElement)); } menu->exec(event->globalPos()); }
void csWebView::SendToCGLX() { //printf("Hello at x: %d y: %d\n", hit_pos.x(), hit_pos.y()); QWebFrame *tframe=page()->currentFrame (); QWebHitTestResult hitresult = tframe->hitTestContent ( hit_pos ); if(!hitresult.isNull()) { QPixmap img = hitresult.pixmap(); if(!img.isNull()) { //printf("Width: %d Height: %d Link: %s\n",img.width(), img.height(),hitresult.imageUrl().toString().toStdString().c_str()); emit send_image(img.width(), img.height() , hitresult.imageUrl()); } } }
static PyObject *meth_QWebHitTestResult_isNull(PyObject *sipSelf, PyObject *sipArgs) { PyObject *sipParseErr = NULL; { QWebHitTestResult *sipCpp; if (sipParseArgs(&sipParseErr, sipArgs, "B", &sipSelf, sipType_QWebHitTestResult, &sipCpp)) { bool sipRes; Py_BEGIN_ALLOW_THREADS sipRes = sipCpp->isNull(); Py_END_ALLOW_THREADS return PyBool_FromLong(sipRes); } }
void MainWindow::editorContextMenuRequested ( const QPoint & pos ) { QString guid = getCurrentNoteGuid(); if (guid == "main") return; QWebHitTestResult element = ui->editor->page()->mainFrame()->hitTestContent(pos); if (element.isNull()) return; QStringList classes = allClasses(element.element()); if (classes.contains("pdfarea")) return; QMenu * menu = new QMenu(ui->editor); menu->addAction(ui->editor->pageAction(QWebPage::SelectAll)); if (element.isContentSelected()) { if (!menu->isEmpty()) menu->addSeparator(); menu->addAction(ui->editor->pageAction(QWebPage::Copy)); if (element.isContentEditable()) { menu->addAction(ui->editor->pageAction(QWebPage::Cut)); menu->addAction(ui->editor->pageAction(QWebPage::Paste)); menu->addSeparator(); menu->addAction(ui->editor->pageAction(QWebPage::ToggleBold)); menu->addAction(ui->editor->pageAction(QWebPage::ToggleItalic)); menu->addAction(ui->editor->pageAction(QWebPage::ToggleUnderline)); } } if(!element.imageUrl().isEmpty() && (element.imageUrl().scheme() != "qrc")) { if (!menu->isEmpty()) menu->addSeparator(); menu->addAction(ui->editor->pageAction(QWebPage::DownloadImageToDisk)); menu->addAction(ui->editor->pageAction(QWebPage::CopyImageToClipboard)); if (element.imageUrl().scheme() == "http" || element.imageUrl().scheme() == "https") menu->addAction(ui->editor->pageAction(QWebPage::CopyImageUrlToClipboard)); QAction * openImage = new QAction(this); openImage->setText("Open Image"); openImage->setObjectName("openImage"); menu->addAction(openImage); if (JS("editMode").toBool()) { menu->addSeparator(); QAction * deleteImage = new QAction(this); deleteImage->setText("Delete Image"); deleteImage->setObjectName("deleteImage"); deleteImage->setIcon(QIcon::fromTheme("edit-delete")); menu->addAction(deleteImage); if (element.imageUrl().scheme() != "resource") { QAction * saveLocally = new QAction(this); saveLocally->setText("Save Locally"); saveLocally->setObjectName("saveLocally"); menu->addAction(saveLocally); } } } if (!element.linkUrl().isEmpty()) { if (!menu->isEmpty()) menu->addSeparator(); menu->addAction(ui->editor->pageAction(QWebPage::CopyLinkToClipboard)); if (element.isContentEditable()) { QAction * deleteURL = new QAction(this); deleteURL->setText("Remove Link"); deleteURL->setObjectName("deleteURL"); menu->addAction(deleteURL); } } if (element.isContentEditable() && !element.isContentSelected() && element.imageUrl().isEmpty()) { Speller *speller = Speller::GetInstance(); if (speller->initialized()) { QHash<QString, QString> languages = speller->availableLanguages(); if (!languages.isEmpty()) { if (!menu->isEmpty()) menu->addSeparator(); QAction* act = menu->addAction(tr("Check &Spelling")); act->setCheckable(true); act->setChecked(speller->isEnabled()); connect(act, SIGNAL(triggered(bool)), speller, SLOT(setEnabled(bool))); if (speller->isEnabled()) { QString word = JS(QString("getSpellingWord(%1,%2);").arg(pos.x()).arg(pos.y())).toString(); if (!word.isEmpty() && speller->isMisspelled(word)) { QStringList wordsList = speller->suggest(word); QFont boldFont = menu->font(); boldFont.setBold(true); QActionGroup *suggestGroup = new QActionGroup(menu); QString suggest; foreach(suggest, wordsList) { QAction* act = menu->addAction(suggest); act->setFont(boldFont); act->setData(suggest); suggestGroup->addAction(act); } connect(suggestGroup, SIGNAL(triggered(QAction*)), this, SLOT(replaceWord(QAction*))); }