void HTMLFrameElementImpl::setLocation(const DOMString &str) { url = str; if(!attached()) return; if(!m_render) { detach(); attach(); return; } if(!getDocument()->isURLAllowed(url.string())) return; // load the frame contents KHTMLView *w = getDocument()->view(); if(w) { KHTMLPart *part = w->part()->findFrame(name.string()); if(part) { part->openURL(KURL(getDocument()->completeURL(url.string()))); } else { w->part()->requestFrame(static_cast< RenderFrame * >(m_render), url.string(), name.string()); } } }
void BrowserWindow::OpenURL( const std::string& cURL, const KParts::URLArgs& cArgs ) { // GlobalMutex::Lock(); // m_pcURLView->Set( cURL.c_str(), false ); m_pcURLView->SetText( cURL.c_str() ); m_pcHTMLPart->browserExtension()->setURLArgs( cArgs ); m_pcHTMLPart->openURL( cURL.c_str() ); // GlobalMutex::Unlock(); }
void Plugin$ {APP_NAME}::slotAction() { // This plugin assumes KHTMLPart. If your plugin can handle more // than this or a different Part than this, simply delete or // change the following block. if ( !parent()->inherits("KHTMLPart") ) { QString title( i18n( "Cannot Translate Source" ) ); QString text( i18n( "You cannot translate anything except web pages " "with this plugin." ) ); KMessageBox::sorry( 0, text, title ); return; } // Get a handle on our parent so we may get the necessary data for // processing KHTMLPart *part = dynamic_cast<KHTMLPart *>(parent()); // This plugin only uses the URL. You may use whatever data you // need. KURL url( part->url() ); // This is a standard check to make sure we are dealing with a // valid URL if ( !url.isValid() ) { QString title( i18n( "Malformed URL" ) ); QString text( i18n( "The URL you entered is not valid, please " "correct it and try again." ) ); KMessageBox::sorry( 0, text, title ); return; } // The following block is very plugin specific. In this example, we // translate the current page with AltaVista's BabelFish. You will // definitely want to change this. // BEGIN KURL work( "http://babel.altavista.com/translate.dyn" ); QString query( "urltext=" ); query += KURL::encode_string( url.url() ); work.setQuery( query ); // END // Finally, execute the request part->openURL( work ); }
int main(int argc, char *argv[]) { KCmdLineArgs::init(argc, argv, "Testkhtml", "a basic web browser using the KHTML library", "1.0"); KCmdLineArgs::addCmdLineOptions(options); KApplication a; KCmdLineArgs *args = KCmdLineArgs::parsedArgs( ); if ( args->count() == 0 ) { KCmdLineArgs::usage(); ::exit( 1 ); } KHTMLFactory *fac = new KHTMLFactory(); KMainWindow *toplevel = new KMainWindow(); KHTMLPart *doc = new KHTMLPart( toplevel, 0, toplevel, 0, KHTMLPart::BrowserViewGUI ); Dummy *dummy = new Dummy( doc ); QObject::connect( doc->browserExtension(), SIGNAL( openURLRequest( const KURL &, const KParts::URLArgs & ) ), dummy, SLOT( slotOpenURL( const KURL&, const KParts::URLArgs & ) ) ); if (args->url(0).url().right(4).find(".xml", 0, false) == 0) { KParts::URLArgs ags(doc->browserExtension()->urlArgs()); ags.serviceType = "text/xml"; doc->browserExtension()->setURLArgs(ags); } doc->openURL( args->url(0) ); // DOMTreeView * dtv = new DOMTreeView(0, doc, "DomTreeView"); // dtv->show(); toplevel->setCentralWidget( doc->widget() ); toplevel->resize( 640, 800); // dtv->resize(toplevel->width()/2, toplevel->height()); QDomDocument d = doc->domDocument(); QDomElement viewMenu = d.documentElement().firstChild().childNodes().item( 2 ).toElement(); QDomElement e = d.createElement( "action" ); e.setAttribute( "name", "debugRenderTree" ); viewMenu.appendChild( e ); e = d.createElement( "action" ); e.setAttribute( "name", "debugDOMTree" ); viewMenu.appendChild( e ); QDomElement toolBar = d.documentElement().firstChild().nextSibling().toElement(); e = d.createElement( "action" ); e.setAttribute( "name", "reload" ); toolBar.insertBefore( e, toolBar.firstChild() ); e = d.createElement( "action" ); e.setAttribute( "name", "print" ); toolBar.insertBefore( e, toolBar.firstChild() ); (void)new KAction( "Reload", "reload", Qt::Key_F5, dummy, SLOT( reload() ), doc->actionCollection(), "reload" ); KAction* kprint = new KAction( "Print", "print", 0, doc->browserExtension(), SLOT( print() ), doc->actionCollection(), "print" ); kprint->setEnabled(true); toplevel->guiFactory()->addClient( doc ); doc->setJScriptEnabled(true); doc->setJavaEnabled(true); doc->setURLCursor(QCursor(Qt::PointingHandCursor)); a.setTopWidget(doc->widget()); QWidget::connect(doc, SIGNAL(setWindowCaption(const QString &)), doc->widget(), SLOT(setCaption(const QString &))); doc->widget()->show(); toplevel->show(); ((QScrollView *)doc->widget())->viewport()->show(); int ret = a.exec(); //delete doc; //delete dtv; khtml::Cache::clear(); khtml::CSSStyleSelector::clear(); khtml::RenderStyle::cleanup(); delete fac; return ret; }