void BinaryWidget::setData( const QByteArray &data ) { delete mMainWidget; QString mimetype; KMimeType::Ptr mime = KMimeType::findByContent( data ); if ( mime && !mime->isDefault() ) mimetype = mime->name(); if ( !mimetype.isEmpty() ) { KParts::ReadOnlyPart *part = KParts::ComponentFactory::createPartInstanceFromQuery<KParts::ReadOnlyPart>( mimetype, QString(), this, this ); if ( part ) { KTemporaryFile file; file.setAutoRemove(false); file.open(); file.write( data ); file.flush(); part->openUrl( KUrl( file.fileName() ) ); mMainWidget = part->widget(); } else { mMainWidget = new QLabel( i18n( "No part found for visualization of mimetype %1", mimetype ), this ); } mData = data; mSaveButton->setEnabled( true ); } else { mMainWidget = new QLabel( i18n( "Got data of unknown mimetype" ), this ); } mLayout->addWidget( mMainWidget, 0, 0, 3, 1); mMainWidget->show(); }
void KShellCmdPlugin::slotExecuteShellCommand() { KParts::ReadOnlyPart *part = qobject_cast<KParts::ReadOnlyPart *>(parent()); if (!part) { KMessageBox::sorry(0L, i18n("KShellCmdPlugin::slotExecuteShellCommand: Program error, please report a bug.")); return; } KUrl url = KIO::NetAccess::mostLocalUrl(part->url(), NULL); if (!url.isLocalFile()) { KMessageBox::sorry(part->widget(), i18n("Executing shell commands works only on local directories.")); return; } QString path; KParts::FileInfoExtension *ext = KParts::FileInfoExtension::childObject(part); if (ext && ext->hasSelection() && (ext->supportedQueryModes() & KParts::FileInfoExtension::SelectedItems)) { KFileItemList list = ext->queryFor(KParts::FileInfoExtension::SelectedItems); QStringList fileNames; Q_FOREACH (const KFileItem &item, list) { fileNames << item.name(); } path = KShell::joinArgs(fileNames); }
KParts::ReadOnlyPart *KGraphEditor::slotNewGraph() { kDebug(); KPluginFactory *factory = KPluginLoader("kgraphviewerpart").factory(); if (!factory) { // if we couldn't find our Part, we exit since the Shell by // itself can't do anything useful KMessageBox::error(this, i18n("Could not find the KGraphViewer part.")); kapp->quit(); // we return here, cause kapp->quit() only means "exit the // next time we enter the event loop... return NULL; } KParts::ReadOnlyPart* part = factory->create<KParts::ReadOnlyPart>("kgraphviewerpart", this); KGraphViewerInterface *view = qobject_cast<KGraphViewerInterface *>(part); if (!view) { // This should not happen kError() << "Failed to get KPart" << endl; return NULL; } view->setReadWrite(); QWidget *w = part->widget(); m_widget->addTab(w, QIcon( DesktopIcon("kgraphviewer") ), ""); m_widget->setCurrentWidget(w); // createGUI(view); m_tabsPartsMap[w] = part; m_tabsFilesMap[w] = ""; // connect(this,SIGNAL(hide(KParts::Part*)),view,SLOT(slotHide(KParts::Part*))); slotSetActiveGraph(part); return part; }
void FileManager::openFile( const QString& fileName, const QString& name, const QString& title, const QString& partName, const QVariantList& partParams ) { if( fileName.isEmpty() ) return; QString fullName = name.isEmpty() ? KUrl( fileName ).fileName() : name; QString fullTitle = title.isEmpty() ? fullName : title; if( d->parts.contains( fullName ) ) { emit newPart( fullName, fullTitle ); return; } KMimeType::Ptr mime = KMimeType::findByPath( fileName ); KParts::ReadOnlyPart* part = 0; KService::List parts; if( !partName.isEmpty() ) { KService::Ptr service = KService::serviceByDesktopName( partName ); if( !service.isNull() ) parts.append( service ); } if( parts.count() == 0 ) { parts.append( KMimeTypeTrader::self()->query( mime->name(), "KParts/ReadWritePart" ) ); parts.append( KMimeTypeTrader::self()->query( mime->name(), "KParts/ReadOnlyPart" ) ); if( mime->name().contains( "audio" ) && parts.count() == 0 ) parts.append( KService::serviceByStorageId( "dragonplayer_part.desktop" ) ); } if( parts.count() > 0 ) { part = parts.first()->createInstance<KParts::ReadWritePart>( 0, partParams ); if( !part ) part = parts.first()->createInstance<KParts::ReadOnlyPart>( 0, partParams ); } if( part ) { // Add the part if it is found KUrl url( fileName ); part->openUrl( url ); d->parts.insert( fullName, part ); d->partManager->addPart( part, true ); emit newPart( fullName, fullTitle ); return; } // There really is no part that can be used. // Instead, just open it in an external application. // KRun* runner = new KRun( KUrl( fileName ), qApp->activeWindow() ); }
bool subversionPart::urlFocusedDocument( KURL &url ) { KParts::ReadOnlyPart *part = dynamic_cast<KParts::ReadOnlyPart*>( partController()->activePart() ); if ( part ) { if (part->url().isLocalFile() ) { url = part->url(); return true; } } return false; }
QString PerforcePart::currentFile() { KParts::ReadOnlyPart *part = dynamic_cast<KParts::ReadOnlyPart*>( partController()->activePart() ); if ( part ) { KURL url = part->url(); if ( url.isLocalFile() ) return url.path(); } return QString::null; }
KStatusBar * StatusBarExtension::statusBar() const { if ( !d->m_statusBar ) { KParts::ReadOnlyPart* part = qobject_cast<KParts::ReadOnlyPart*>(parent()); QWidget* w = part ? part->widget() : 0; KMainWindow* mw = w ? qobject_cast<KMainWindow *>( w->topLevelWidget() ) : 0; if ( mw ) d->m_statusBar = mw->statusBar(); } return d->m_statusBar; }
void RubySupportPart::slotSwitchToView() { KParts::Part *activePart = partController()->activePart(); if (!activePart) return; KParts::ReadOnlyPart *ropart = dynamic_cast<KParts::ReadOnlyPart*>(activePart); if (!ropart) return; QFileInfo file(ropart->url().path()); if (!file.exists()) return; QString ext = file.extension(); QString name = file.baseName(); QString switchTo = ""; if (ext == "rjs" || ext == "rxml" || ext == "rhtml" || ext == "js.rjs" || ext == "xml.builder" || ext == "html.erb") { //this is a view already, let's show the list of all views for this model switchTo = file.dir().dirName(); } else if (ext == "rb") switchTo = name.remove(QRegExp("_controller$")).remove(QRegExp("_controller_test$")).remove(QRegExp("_test$")); if (switchTo.isEmpty()) return; if (switchTo.endsWith("s")) switchTo = switchTo.mid(0, switchTo.length() - 1); KURL::List urls; QDir viewsDir; QDir viewsDirS = QDir(project()->projectDirectory() + "/app/views/" + switchTo); QDir viewsDirP = QDir(project()->projectDirectory() + "/app/views/" + switchTo + "s"); if (viewsDirS.exists()) viewsDir = viewsDirS; else if (viewsDirP.exists()) viewsDir = viewsDirP; else return; QStringList views = viewsDir.entryList(); for (QStringList::const_iterator it = views.begin(); it != views.end(); ++it) { QString viewName = *it; if ( !(viewName.endsWith("~") || viewName == "." || viewName == "..") ) urls << KURL::fromPathOrURL(viewsDir.absPath() + "/" + viewName); } KDevQuickOpen *qo = extension<KDevQuickOpen>("KDevelop/QuickOpen"); if (qo) qo->quickOpenFile(urls); }
void KWebDesktopRun::slotMimetype(KIO::Job *job, const QString &_type) { KIO::SimpleJob *sjob = static_cast< KIO::SimpleJob * >(job); // Update our URL in case of a redirection m_url = sjob->url(); QString type = _type; // necessary copy if we plan to use it sjob->putOnHold(); kdDebug() << "slotMimetype : " << type << endl; KParts::ReadOnlyPart *part = m_webDesktop->createPart(type); // Now open the URL in the part if(part) part->openURL(m_url); }
void RubySupportPart::slotSwitchToTest() { KParts::Part *activePart = partController()->activePart(); if (!activePart) return; KParts::ReadOnlyPart *ropart = dynamic_cast<KParts::ReadOnlyPart*>(activePart); if (!ropart) return; QFileInfo file(ropart->url().path()); if (!file.exists()) return; QString ext = file.extension(); QString name = file.baseName(); QString switchTo = ""; if (ext == "rjs" || ext == "rxml" || ext == "rhtml" || ext == "js.rjs" || ext == "xml.builder" || ext == "html.erb") { //this is a view already, let's show the list of all views for this model switchTo = file.dir().dirName(); } else if (ext == "rb") switchTo = name.remove(QRegExp("_controller$")).remove(QRegExp("_controller_test$")).remove(QRegExp("_test$")); if (switchTo.isEmpty()) return; if (switchTo.endsWith("s")) switchTo = switchTo.mid(0, switchTo.length() - 1); KURL::List urls; QString testDir = project()->projectDirectory() + "/test/"; QString functionalTestS = testDir + "functional/" + switchTo + "_controller_test.rb"; QString functionalTestP = testDir + "functional/" + switchTo + "s_controller_test.rb"; QString integrationTestS = testDir + "integration/" + switchTo + "_test.rb"; QString integrationTestP = testDir + "integration/" + switchTo + "s_test.rb"; QString unitTestS = testDir + "unit/" + switchTo + "_test.rb"; QString unitTestP = testDir + "unit/" + switchTo + "s_test.rb"; if (QFile::exists(functionalTestP)) urls << KURL::fromPathOrURL(functionalTestP); if (QFile::exists(integrationTestP)) urls << KURL::fromPathOrURL(integrationTestP); if (QFile::exists(unitTestP)) urls << KURL::fromPathOrURL(unitTestP); if (QFile::exists(functionalTestS)) urls << KURL::fromPathOrURL(functionalTestS); if (QFile::exists(integrationTestS)) urls << KURL::fromPathOrURL(integrationTestS); if (QFile::exists(unitTestS)) urls << KURL::fromPathOrURL(unitTestS); KDevQuickOpen *qo = extension<KDevQuickOpen>("KDevelop/QuickOpen"); if (qo && !urls.isEmpty()) qo->quickOpenFile(urls); }
void AutoRefresh::slotRefresh() { KParts::ReadOnlyPart *part = qobject_cast< KParts::ReadOnlyPart * >( parent() ); if ( !part ) { QString title = i18nc( "@title:window", "Cannot Refresh Source" ); QString text = i18n( "<qt>This plugin cannot auto-refresh the current part.</qt>" ); KMessageBox::error( 0, text, title ); } else { // Get URL KUrl url = part->url(); part->openUrl( url ); } }
void Shell::slotOpenFile() { //FIXME this is getting far to deeply indented... maybe some of it should be pulled out? //check if there is an open tab... if (mainView->currentIndex() == -1) { //no tabs open so we can just use the openFileNewTab slot :D slotOpenFileNewTab(); } else { //check to see if the collection manager is open, and if thats our current tab //since we can't open files with the collection manager... if (mainView->indexOf(m_collection->widget()) == mainView->currentIndex()) { //we're trying to open things in the collection... which is bad, so use a new tab :D slotOpenFileNewTab(); } else { //we have an open reader tab so... //first get the filename from the user QString filename = KFileDialog::getOpenFileName(); //check if the filename is null, open the file if its NOT null if (!filename.isNull()) { KUrl tempUrl = filename; //might be a better way to get the part, but it works elsewhere so... ReaderPage *curPage = qobject_cast<ReaderPage *>(mainView->widget(mainView->currentIndex())); //this is kind of naive as most kparts support multiple mimetypes //but i couldn't find an easy way to get a list of supported types //from a kpart... FIXME QString newMimeType = KMimeType::findByUrl(tempUrl)->name(); KParts::ReadOnlyPart *curpart = curPage->getPart(); if (curPage->getMimeType() == newMimeType) { curpart->openUrl(tempUrl); } else { //if the mimetype has changed we need to delete the currentpage and open a replacement ReaderPage *newPage = new ReaderPage(&tempUrl, this); if (newPage) { int index = mainView->currentIndex(); mainView->removeTab(index); mainView->insertTab(index, newPage, tempUrl.fileName()); m_manager->replacePart(curpart, newPage->getPart()); // remove the old reader page from the open list and add the new page openPagesList.replace(openPagesList.indexOf(curPage), newPage); delete(curPage); } } } } } }
void AutoRefresh::slotRefresh() { if ( !parent()->inherits("KParts::ReadOnlyPart") ) { QString title = i18n( "Cannot Refresh Source" ); QString text = i18n( "<qt>This plugin cannot auto-refresh the current part.</qt>" ); QMessageBox::warning( 0, title, text ); } else { KParts::ReadOnlyPart *part = (KParts::ReadOnlyPart *) parent(); // Get URL KURL url = part->url(); part->openURL( url ); } }
void KGraphEditor::openUrl(const KUrl& url) { kDebug() << url; KParts::ReadOnlyPart *part = slotNewGraph(); // (KGraphEditorSettings::parsingMode() == "external") // ?kgv->setLayoutMethod(KGraphViewerInterface::ExternalProgram) // :kgv->setLayoutMethod(KGraphViewerInterface::InternalLibrary); QString label = url.path().section('/',-1,-1); // @TODO set label m_widget->setTabText(m_widget->currentIndex(), label); m_tabsFilesMap[m_widget->currentWidget()] = url.path(); part->openUrl(url); m_openedFiles.push_back(url.path()); }
KParts::ReadOnlyPart *KonqViewFactory::create( QWidget *parentWidget, QObject * parent ) { if ( !m_factory ) return 0; KParts::ReadOnlyPart* part = m_factory->create<KParts::ReadOnlyPart>( parentWidget, parent, QString(), m_args ); if ( !part ) { kError() << "No KParts::ReadOnlyPart created from" << m_libName; } else { QFrame* frame = qobject_cast<QFrame*>( part->widget() ); if ( frame ) { frame->setFrameStyle( QFrame::NoFrame ); } } return part; }
void KHTMLPluginKTTSD::slotReadOut() { // The parent is a KParts::ReadOnlyPart (checked in constructor) KParts::ReadOnlyPart* part = static_cast<KParts::ReadOnlyPart *>(parent()); if (!QDBusConnection::sessionBus().interface()->isServiceRegistered("org.kde.kttsd")) { QString error; if (KToolInvocation::startServiceByDesktopName("kttsd", QStringList(), &error)) { KMessageBox::error(part->widget(), error, i18nc("@title:window", "Starting Jovie Text-to-Speech Service Failed") ); return; } } // Find out if KTTSD supports xhtml (rich speak). bool supportsXhtml = false; org::kde::KSpeech kttsd( "org.kde.kttsd", "/KSpeech", QDBusConnection::sessionBus() ); QString talker = kttsd.defaultTalker(); QDBusReply<int> reply = kttsd.getTalkerCapabilities2(talker); if ( !reply.isValid()) kDebug() << "D-Bus call getTalkerCapabilities2() failed, assuming non-XHTML support."; else { supportsXhtml = reply.value() & KSpeech::tcCanParseHtml; if (supportsXhtml) kDebug() << "KTTS claims to support rich speak (XHTML to SSML)."; } KParts::TextExtension* textExt = KParts::TextExtension::childObject(parent()); QString query; const KParts::TextExtension::Format format = supportsXhtml ? KParts::TextExtension::HTML : KParts::TextExtension::PlainText; if (textExt->hasSelection()) { query = textExt->selectedText(format); } else { query = textExt->completeText(format); } // kDebug() << "query =" << query; reply = kttsd.say(query, KSpeech::soNone); if ( !reply.isValid()) { KMessageBox::sorry(part->widget(), i18n("The D-Bus call say() failed."), i18nc("@title:window", "D-Bus Call Failed")); } }
QObject* FormModule::loadPart(QWidget* parent, const QString& name, const QUrl& url) { //name e.g. "libkghostview" KPluginFactory* factory = KPluginLoader( name.toLatin1() ).factory(); if( ! factory ) { kWarning() << QString("Kross::FormModule::loadPart: No such library \"%1\"").arg(name); return 0; } KParts::ReadOnlyPart* part = factory->create< KParts::ReadOnlyPart >( parent ); if( ! part ) { kWarning() << QString("Kross::FormModule::loadPart: Library \"%1\" is not a KPart").arg(name); return 0; } if( url.isValid() ) part->openUrl(url); if( parent && parent->layout() && part->widget() ) parent->layout()->addWidget( part->widget() ); return part; }
void RubySupportPart::slotSwitchToController() { KParts::Part *activePart = partController()->activePart(); if (!activePart) return; KParts::ReadOnlyPart *ropart = dynamic_cast<KParts::ReadOnlyPart*>(activePart); if (!ropart) return; QFileInfo file(ropart->url().path()); if (!file.exists()) return; QString ext = file.extension(); QString name = file.baseName(); QString switchTo = ""; if ((ext == "rb") && !name.endsWith("_controller")) { if (name.endsWith("_test")) { switchTo = name.remove(QRegExp("_test$")); //the file is the test switchTo = name.remove(QRegExp("_controller$")); //remove functional test name parts } else switchTo = name; } else if (ext == "rjs" || ext == "rxml" || ext == "rhtml" || ext == "js.rjs" || ext == "xml.builder" || ext == "html.erb") { //this is a view, we need to find the directory of this view and try to find //the controller basing on the directory information switchTo = file.dir().dirName(); } QString controllersDir = project()->projectDirectory() + "/app/controllers/"; if (!switchTo.isEmpty()) { if (switchTo.endsWith("s")) switchTo = switchTo.mid(0, switchTo.length()-1); QString singular = controllersDir + switchTo + "_controller.rb"; QString plural = controllersDir + switchTo + "s_controller.rb"; KURL url = KURL::fromPathOrURL(QFile::exists(singular) ? singular : plural); partController()->editDocument(url); } }
void MainWindow::printRequested(QWebFrame *frame) { if (!currentTab()) return; if(currentTab()->page()->isOnRekonqPage()) { // trigger print part action instead of ours.. KParts::ReadOnlyPart *p = currentTab()->part(); if(p) { KParts::BrowserExtension *ext = p->browserExtension(); if(ext) { KParts::BrowserExtension::ActionSlotMap *actionSlotMap = KParts::BrowserExtension::actionSlotMapPtr(); connect(this, SIGNAL(triggerPartPrint()), ext, actionSlotMap->value("print")); emit triggerPartPrint(); return; } } } QWebFrame *printFrame = 0; if (frame == 0) { printFrame = currentTab()->page()->mainFrame(); } else { printFrame = frame; } QPrinter printer; QPrintPreviewDialog previewdlg(&printer, this); connect(&previewdlg, SIGNAL(paintRequested(QPrinter *)), printFrame, SLOT(print(QPrinter *))); previewdlg.exec(); }
QWidget* createTerminalWidget(QWidget* parent = 0) { KPluginFactory* factory = KPluginLoader("libkonsolepart").factory(); KParts::ReadOnlyPart* part = factory ? (factory->create<KParts::ReadOnlyPart>(parent)) : 0; if (!part) { printf("Failed to initialize part\n"); return 0; } TerminalInterface* terminal = qobject_cast<TerminalInterface*>(part); if (!terminal) { printf("Failed to initialize terminal\n"); return 0; } terminal->showShellInDir(KUrl().path()); terminal->sendInput("cd " + KShell::quoteArg(KUrl().path()) + '\n'); terminal->sendInput("clear\n"); return part->widget(); }
void WebTab::printFrame() { if (page()->isOnRekonqPage()) { // trigger print part action instead of ours.. KParts::ReadOnlyPart *p = part(); if (p) { KParts::BrowserExtension *ext = p->browserExtension(); if (ext) { KParts::BrowserExtension::ActionSlotMap *actionSlotMap = KParts::BrowserExtension::actionSlotMapPtr(); connect(this, SIGNAL(triggerPartPrint()), ext, actionSlotMap->value("print")); emit triggerPartPrint(); return; } } } QWebFrame *printFrame = page()->currentFrame(); if (printFrame == 0) { printFrame = page()->mainFrame(); } QPrinter printer; printer.setDocName(printFrame->title()); QPrintDialog *printDialog = KdePrint::createPrintDialog(&printer, this); if (printDialog) //check if the Dialog was created { if (printDialog->exec()) printFrame->print(&printer); delete printDialog; } }
void RubySupportPart::slotSwitchToModel() { KParts::Part *activePart = partController()->activePart(); if (!activePart) return; KParts::ReadOnlyPart *ropart = dynamic_cast<KParts::ReadOnlyPart*>(activePart); if (!ropart) return; QFileInfo file(ropart->url().path()); if (!file.exists()) return; QString ext = file.extension(); QString name = file.baseName(); QString switchTo = ""; if (ext == "rjs" || ext == "rxml" || ext == "rhtml" || ext == "js.rjs" || ext == "xml.builder" || ext == "html.erb") { //this is a view already, let's show the list of all views for this model switchTo = file.dir().dirName(); } else if (ext == "rb" && (name.endsWith("_controller") || name.endsWith("_test"))) { switchTo = name.remove(QRegExp("_controller$")).remove(QRegExp("_controller_test$")).remove(QRegExp("_test$")); } if (switchTo.isEmpty()) return; if (switchTo.endsWith("s")) switchTo = switchTo.mid(0, switchTo.length() - 1); QString modelsDir = project()->projectDirectory() + "/app/models/"; QString singular = modelsDir + switchTo + "_controller.rb"; QString plural = modelsDir + switchTo + "s_controller.rb"; KURL url = KURL::fromPathOrURL(QFile::exists(singular) ? singular : plural); partController()->editDocument(KURL::fromPathOrURL(modelsDir + switchTo + ".rb")); }
void KShellCmdPlugin::slotExecuteShellCommand() { KParts::ReadOnlyPart * part = dynamic_cast<KParts::ReadOnlyPart *>(parent()); if ( !part ) { KMessageBox::sorry(0L, i18n("KShellCmdPlugin::slotExecuteShellCommand: Program error, please report a bug.")); return; } KUrl url = KIO::NetAccess::mostLocalUrl(part->url(),NULL); if ( !url.isLocalFile() ) { KMessageBox::sorry(part->widget(),i18n("Executing shell commands works only on local directories.")); return; } QString path; #if 0 // to be ported if still needed if ( part->currentItem() ) { // Putting the complete path to the selected file isn't really necessary, // since we'll cd to the directory first. But we do need to get the // complete relative path. path = KUrl::relativePath( url.path(), part->currentItem()->url().path() ); } else #endif { path = url.toLocalFile(); } bool ok; QString cmd = KInputDialog::getText( i18nc("@title:window", "Execute Shell Command"), i18n( "Execute shell command in current directory:" ), KShell::quoteArg( path ), &ok, part->widget() ); if ( ok ) { QString chDir; chDir="cd "; chDir+=KShell::quoteArg(part->url().path()); chDir+="; "; chDir+=cmd; KShellCommandDialog *shellCmdDialog=new KShellCommandDialog(i18n("Output from command: \"%1\"", cmd),chDir,part->widget(),true); shellCmdDialog->resize(500,300); shellCmdDialog->executeCommand(); delete shellCmdDialog; } }
QObject* KWebPluginFactory::create(const QString& _mimeType, const QUrl& url, const QStringList& argumentNames, const QStringList& argumentValues) const { // Only attempt to find a KPart for the supported mime types... QVariantList arguments; const int count = argumentNames.count(); for (int i = 0; i < count; ++i) { arguments << QString(argumentNames.at(i) + QL1S("=\"") + argumentValues.at(i) + QL1C('\"')); } QString mimeType (_mimeType.trimmed()); // If no mimetype is provided, we do our best to correctly determine it here... if (mimeType.isEmpty()) { kDebug(800) << "Looking up missing mimetype for plugin resource:" << url; const KUrl reqUrl (url); KMimeType::Ptr ptr = KMimeType::findByUrl(reqUrl, 0, reqUrl.isLocalFile()); if (ptr->isDefault()) mimeType = ptr->name(); // Disregard inode/* mime-types... if (mimeType.startsWith(QLatin1String("inode/"), Qt::CaseInsensitive)) mimeType.clear(); kDebug(800) << "Updated mimetype to" << mimeType; } KParts::ReadOnlyPart* part = 0; // Defer handling of flash content to QtWebKit's builtin viewer. // If you want to use/test KDE's nspluginviewer, comment out the // if statement below. if (!mimeType.isEmpty() && !excludedMimeType(mimeType)) part = KMimeTypeTrader::createPartInstanceFromQuery<KParts::ReadOnlyPart>(mimeType, 0, parent(), QString(), arguments); kDebug(800) << "Asked for" << mimeType << "plugin, got" << part; if (part) { QMap<QString, QString> metaData = part->arguments().metaData(); QString urlStr = url.toString(QUrl::RemovePath | QUrl::RemoveQuery | QUrl::RemoveFragment); metaData.insert("PropagateHttpHeader", "true"); metaData.insert("referrer", urlStr); metaData.insert("cross-domain", urlStr); metaData.insert("main_frame_request", "TRUE"); metaData.insert("ssl_activate_warnings", "TRUE"); KWebPage *page = qobject_cast<KWebPage *>(parent()); if (page) { const QString scheme = page->mainFrame()->url().scheme(); if (page && (QString::compare(scheme, QL1S("https"), Qt::CaseInsensitive) == 0 || QString::compare(scheme, QL1S("webdavs"), Qt::CaseInsensitive) == 0)) metaData.insert("ssl_was_in_use", "TRUE"); else metaData.insert("ssl_was_in_use", "FALSE"); } KParts::OpenUrlArguments openUrlArgs = part->arguments(); openUrlArgs.metaData() = metaData; openUrlArgs.setMimeType(mimeType); part->setArguments(openUrlArgs); part->openUrl(url); return part->widget(); } return 0; }
bool KJSDebugWin::exception(ExecState *exec, const Value &value, bool inTryCatch) { assert(value.isValid()); // Ignore exceptions that will be caught by the script if(inTryCatch) return true; KParts::ReadOnlyPart *part = static_cast< ScriptInterpreter * >(exec->interpreter())->part(); KHTMLPart *khtmlpart = ::qt_cast< KHTMLPart * >(part); if(khtmlpart && !khtmlpart->settings()->isJavaScriptErrorReportingEnabled()) return true; QWidget *dlgParent = (m_evalDepth == 0) ? (QWidget *)part->widget() : (QWidget *)this; QString exceptionMsg = value.toString(exec).qstring(); // Syntax errors are a special case. For these we want to display the url & lineno, // which isn't included in the exception messeage. So we work it out from the values // passed to sourceParsed() Object valueObj = Object::dynamicCast(value); Object syntaxError = exec->interpreter()->builtinSyntaxError(); if(valueObj.isValid() && valueObj.get(exec, "constructor").imp() == syntaxError.imp()) { Value sidValue = valueObj.get(exec, "sid"); if(sidValue.isA(NumberType)) { // sid is not set for Function() constructor int sourceId = (int)sidValue.toNumber(exec); assert(m_sourceFragments[sourceId]); exceptionMsg = i18n("Parse error at %1 line %2") .arg(m_sourceFragments[sourceId]->sourceFile->url) .arg(m_sourceFragments[sourceId]->baseLine + m_sourceFragments[sourceId]->errorLine - 1); } } bool dontShowAgain = false; if(m_execsCount == 0) { // An exception occurred and we're not currently executing any code... this can // happen in some cases e.g. a parse error, or native code accessing funcitons like // Object::put() QString msg = i18n("An error occurred while attempting to run a script on this page.\n\n%1").arg(exceptionMsg); KJSErrorDialog dlg(dlgParent, msg, false); dlg.exec(); dontShowAgain = dlg.dontShowAgain(); } else { Context ctx = m_execs[m_execsCount - 1]->context(); SourceFragment *sourceFragment = m_sourceFragments[ctx.sourceId()]; QString msg = i18n("An error occurred while attempting to run a script on this page.\n\n%1 line %2:\n%3") .arg(KStringHandler::rsqueeze(sourceFragment->sourceFile->url, 80), QString::number(sourceFragment->baseLine + ctx.curStmtFirstLine() - 1), exceptionMsg); KJSErrorDialog dlg(dlgParent, msg, true); dlg.exec(); dontShowAgain = dlg.dontShowAgain(); if(dlg.debugSelected()) { m_mode = Next; m_steppingDepth = m_execsCount - 1; enterSession(exec); } } if(dontShowAgain) { KConfig *config = kapp->config(); KConfigGroupSaver saver(config, QString::fromLatin1("Java/JavaScript Settings")); config->writeEntry("ReportJavaScriptErrors", QVariant(false, 0)); config->sync(); QByteArray data; kapp->dcopClient()->send("konqueror*", "KonquerorIface", "reparseConfiguration()", data); } return (m_mode != Stop); }
MainWindow::MainWindow(QWidget* parent, Qt::WindowFlags f) : KParts::MainWindow(parent, f) , m_recentFiles(0) , m_close(0) , m_allocatorModel(new QStringListModel(this)) , m_newAllocator(0) , m_removeAllocator(0) , m_shortenTemplates(0) , m_selectPeak(0) , m_currentDocument(0) , m_dataTreeModel(new DataTreeModel(this)) , m_dataTreeFilterModel(new FilteredDataTreeModel(m_dataTreeModel)) , m_settingSelection(false) { ui.setupUi(this); //BEGIN KGraphViewer bool haveGraphViewer = false; // NOTE: just check if kgraphviewer is available at runtime. // The former logic has been moved to DocumentWidget constructor. #ifdef HAVE_KGRAPHVIEWER KPluginFactory *factory = KPluginLoader("kgraphviewerpart").factory(); if (factory) { KParts::ReadOnlyPart* readOnlyPart = factory->create<KParts::ReadOnlyPart>("kgraphviewerpart", this); if (readOnlyPart) { readOnlyPart->widget()->hide(); haveGraphViewer = true; } } #endif if (!haveGraphViewer) { // cleanup UI when we installed with kgraphviewer but it's not available at runtime KToolBar* callgraphToolbar = toolBar(QStringLiteral("callgraphToolBar")); removeToolBar(callgraphToolbar); delete callgraphToolbar; } //END KGraphViewer ui.documents->setMovable(true); ui.documents->setTabsClosable(true); connect(ui.documents, &QTabWidget::currentChanged, this, &MainWindow::documentChanged); connect(ui.documents, &QTabWidget::tabCloseRequested, this, &MainWindow::closeFileTab); //BEGIN custom allocators tabifyDockWidget(ui.allocatorDock, ui.dataTreeDock); ui.allocatorView->setModel(m_allocatorModel); int iconSize = style()->pixelMetric(QStyle::PM_SmallIconSize); ui.dockMenuBar->setIconSize(QSize(iconSize, iconSize)); ui.dockMenuBar->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); ui.dockMenuBar->setFloatable(false); ui.dockMenuBar->setMovable(false); KConfigGroup cfg = allocatorConfig(); m_allocatorModel->setStringList(cfg.entryMap().values()); connect(m_allocatorModel, &QStringListModel::modelReset, this, &MainWindow::allocatorsChanged); connect(m_allocatorModel, &QStringListModel::dataChanged, this, &MainWindow::allocatorsChanged); connect(ui.dataTreeView, &QTreeView::customContextMenuRequested, this, &MainWindow::dataTreeContextMenuRequested); ui.dataTreeView->setContextMenuPolicy(Qt::CustomContextMenu); connect(ui.allocatorView, &QTreeView::customContextMenuRequested, this, &MainWindow::allocatorViewContextMenuRequested); ui.allocatorView->setContextMenuPolicy(Qt::CustomContextMenu); //END custom allocators setupActions(); setupGUI(StandardWindowOptions(Default ^ StatusBar)); statusBar()->hide(); ui.dataTreeView->setModel(m_dataTreeFilterModel); connect(ui.filterDataTree, &KLineEdit::textChanged, m_dataTreeFilterModel, &FilteredDataTreeModel::setFilter); connect(ui.dataTreeView->selectionModel(), &QItemSelectionModel::currentChanged, this, &MainWindow::treeSelectionChanged); // open page ui.stackedWidget->setCurrentWidget(ui.openPage); }
//--------------------------------------------------------------------------- bool ProjectSession::saveToFile( const QString & sessionFileName, const QValueList< KDevPlugin * > plugins ) { QString section, keyword; QDomElement session = domdoc.documentElement(); int nDocs = 0; QString docIdStr; //// // read the information about the mainframe widget //// QDomElement mainframeEl = session.namedItem("Mainframe").toElement(); //// if(mainframeEl.isNull()){ //// mainframeEl=domdoc.createElement("Mainframe"); //// session.appendChild( mainframeEl); //// } //// bool bMaxMode = ((QextMdiMainFrm*)m_pDocViewMan->parent())->isInMaximizedChildFrmMode(); //// mainframeEl.setAttribute("MaximizeMode", bMaxMode); // read the information about the documents QDomElement docsAndViewsEl = session.namedItem("DocsAndViews").toElement(); if (docsAndViewsEl.isNull()) { docsAndViewsEl = domdoc.createElement("DocsAndViews"); session.appendChild( docsAndViewsEl); } else { // we need to remove the old ones before memorizing the current ones (to avoid merging) QDomNode n = docsAndViewsEl.firstChild(); while ( !n.isNull() ) { QDomNode toBeRemoved = n; n = n.nextSibling(); docsAndViewsEl.removeChild(toBeRemoved); } } QPtrListIterator<KParts::Part> it( *PartController::getInstance()->parts() ); for ( ; it.current(); ++it ) { KParts::ReadOnlyPart* pReadOnlyPart = dynamic_cast<KParts::ReadOnlyPart*>(it.current()); if (!pReadOnlyPart) continue; QString url = pReadOnlyPart->url().url(); docIdStr.setNum(nDocs); QDomElement docEl = domdoc.createElement("Doc" + docIdStr); docEl.setAttribute( "URL", url); docsAndViewsEl.appendChild( docEl); nDocs++; docEl.setAttribute( "NumberOfViews", 1); QDomElement viewEl = domdoc.createElement( "View0"); docEl.appendChild( viewEl); if ( dynamic_cast<HTMLDocumentationPart*>(pReadOnlyPart) ) { viewEl.setAttribute("Type", "Documentation"); } else if ( pReadOnlyPart->inherits("KTextEditor::Document") ) { viewEl.setAttribute("Type", "Source"); KTextEditor::ViewCursorInterface *iface = dynamic_cast<KTextEditor::ViewCursorInterface*>(pReadOnlyPart->widget()); if (iface) { unsigned int line, col; iface->cursorPosition(&line, &col); viewEl.setAttribute( "line", line ); } if ( KTextEditor::EncodingInterface * ei = dynamic_cast<KTextEditor::EncodingInterface*>( pReadOnlyPart ) ) { QString encoding = ei->encoding(); if ( !encoding.isNull() ) { viewEl.setAttribute( "Encoding", encoding ); } } } else { viewEl.setAttribute("Type", "Other"); } } /* QPtrListIterator<KParts::Part> it( *PartController::getInstance()->parts() ); for ( ; it.current(); ++it ) { //// QString partName = it.current()->name(); //// QMessageBox::information(0L,"",partName); KParts::ReadOnlyPart* pReadOnlyPart = dynamic_cast<KParts::ReadOnlyPart*>(it.current()); if (!pReadOnlyPart) continue; // note: read-write parts are also a read-only part, they inherit from it HTMLDocumentationPart* pDocuPart = dynamic_cast<HTMLDocumentationPart*>(pReadOnlyPart); /// @todo Save relative path for project sharing? QString url = pReadOnlyPart->url().url(); docIdStr.setNum(nDocs); QDomElement docEl = domdoc.createElement("Doc" + docIdStr); docEl.setAttribute( "URL", url); docsAndViewsEl.appendChild( docEl); nDocs++; //// docEl.setAttribute( "Type", "???"); //// // get the view list //// QPtrList<KWpEditorPartriteView> viewList = pDoc->viewList(); //// // write the number of views //// docEl.setAttribute( "NumberOfViews", viewList.count()); docEl.setAttribute( "NumberOfViews", 1); // loop over all views of this document int nView = 0; //// KWriteView* pView = 0L; QString viewIdStr; //// for (viewList.first(), nView = 0; viewList.current() != 0; viewList.next(), nView++) { //// pView = viewList.current(); //// if (pView != 0L) { viewIdStr.setNum( nView); QDomElement viewEl = domdoc.createElement( "View"+viewIdStr); docEl.appendChild( viewEl); // focus? //// viewEl.setAttribute("Focus", (((CEditWidget*)pView->parentWidget()) == m_pDocViewMan->currentEditView())); viewEl.setAttribute("Type", "???"); QDomElement viewPropertiesEl = domdoc.createElement("AdditionalSettings"); viewEl.appendChild(viewPropertiesEl); emit sig_saveAdditionalViewProperties(url, &viewPropertiesEl); if (pReadOnlyPart->inherits("KTextEditor::Document")) { KTextEditor::ViewCursorInterface *iface = dynamic_cast<KTextEditor::ViewCursorInterface*>(pReadOnlyPart->widget()); if (iface) { unsigned int line, col; iface->cursorPosition(&line, &col); viewEl.setAttribute( "line", line ); } } if (pDocuPart) { docEl.setAttribute( "context", pDocuPart->context() ); } } */ docsAndViewsEl.setAttribute("NumberOfDocuments", nDocs); // now also let the project-related plugins save their session stuff // read the information about the documents QDomElement pluginListEl = session.namedItem("pluginList").toElement(); if (pluginListEl.isNull()) { pluginListEl = domdoc.createElement("pluginList"); session.appendChild( pluginListEl); } else { // we need to remove the old ones before memorizing the current ones (to avoid merging) QDomNode n = pluginListEl.firstChild(); while ( !n.isNull() ) { QDomNode toBeRemoved = n; n = n.nextSibling(); pluginListEl.removeChild(toBeRemoved); } } QValueList<KDevPlugin*>::ConstIterator itt = plugins.begin(); while( itt != plugins.end() ) { KDevPlugin* pPlugin = (*itt); QString pluginName = pPlugin->instance()->instanceName(); QDomElement pluginEl = domdoc.createElement(pluginName); // now plugin, save what you have! pPlugin->savePartialProjectSession(&pluginEl); // if the plugin wrote anything, accept itt for the session, otherwise forget itt if (pluginEl.hasChildNodes() || pluginEl.hasAttributes()) { pluginListEl.appendChild(pluginEl); } ++itt; } // Write it out to the session file on disc QFile f(sessionFileName); if ( f.open(IO_WriteOnly) ) { // file opened successfully QTextStream t( &f ); // use a text stream t << domdoc.toCString(); f.close(); } initXMLTree(); // clear and initialize the tree again return true; }
QObject* WebPluginFactory::create (const QString& _mimeType, const QUrl& url, const QStringList& argumentNames, const QStringList& argumentValues) const { //kDebug() << _mimeType << url << argumentNames; QString mimeType (_mimeType.trimmed()); if (mimeType.isEmpty()) { extractGuessedMimeType (url, &mimeType); } const bool noPluginHandling = WebKitSettings::self()->isInternalPluginHandlingDisabled(); if (!noPluginHandling && WebKitSettings::self()->isLoadPluginsOnDemandEnabled()) { const uint id = pluginId(url, argumentNames, argumentValues); if (!mPluginsLoadedOnDemand.contains(id)) { FakePluginWidget* widget = new FakePluginWidget(id, url, mimeType); connect(widget, SIGNAL(pluginLoaded(uint)), this, SLOT(loadedPlugin(uint))); return widget; } } Q_ASSERT(mPart); // should never happen!! KParts::ReadOnlyPart* part = 0; QWebView* view = (mPart ? mPart->view() : 0); if (noPluginHandling || !excludedMimeType(mimeType)) { QWebFrame* frame = (view ? view->page()->currentFrame() : 0); if (frame) { part = createPartInstanceFrom(mimeType, argumentNames, argumentValues, view, frame); } } kDebug() << "Asked for" << mimeType << "plugin, got" << part; if (part) { connect (part->browserExtension(), SIGNAL (openUrlNotify()), mPart->browserExtension(), SIGNAL (openUrlNotify())); connect (part->browserExtension(), SIGNAL (openUrlRequest (KUrl, KParts::OpenUrlArguments, KParts::BrowserArguments)), mPart->browserExtension(), SIGNAL (openUrlRequest (KUrl, KParts::OpenUrlArguments, KParts::BrowserArguments))); // Check if this part is scriptable KParts::ScriptableExtension* scriptExt = KParts::ScriptableExtension::childObject(part); if (!scriptExt) { // Try to fall back to LiveConnectExtension compat KParts::LiveConnectExtension* lc = KParts::LiveConnectExtension::childObject(part); if (lc) { scriptExt = KParts::ScriptableExtension::adapterFromLiveConnect(part, lc); } } if (scriptExt) { scriptExt->setHost(KParts::ScriptableExtension::childObject(mPart)); } QMap<QString, QString> metaData = part->arguments().metaData(); QString urlStr = url.toString (QUrl::RemovePath | QUrl::RemoveQuery | QUrl::RemoveFragment); metaData.insert ("PropagateHttpHeader", "true"); metaData.insert ("referrer", urlStr); metaData.insert ("cross-domain", urlStr); metaData.insert ("main_frame_request", "TRUE"); metaData.insert ("ssl_activate_warnings", "TRUE"); KWebPage *page = (view ? qobject_cast<KWebPage*>(view->page()) : 0); if (page) { const QString scheme = page->currentFrame()->url().scheme(); if (page && (QString::compare (scheme, QL1S ("https"), Qt::CaseInsensitive) == 0 || QString::compare (scheme, QL1S ("webdavs"), Qt::CaseInsensitive) == 0)) metaData.insert ("ssl_was_in_use", "TRUE"); else metaData.insert ("ssl_was_in_use", "FALSE"); } KParts::OpenUrlArguments openUrlArgs = part->arguments(); openUrlArgs.metaData() = metaData; openUrlArgs.setMimeType(mimeType); part->setArguments(openUrlArgs); QMetaObject::invokeMethod(part, "openUrl", Qt::QueuedConnection, Q_ARG(KUrl, KUrl(url))); return part->widget(); } return 0; }
void GenHash::calcGenHash() { sandbox_init(); // cannot excute execve prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0); kDebug() << "execve" << execve("ls",NULL,NULL); if (child_pid){ KParts::ReadOnlyPart * part = qobject_cast<KParts::ReadOnlyPart *>(parent()); QFile file(KFileDialog::getOpenFileName(KUrl("kfiledialog:///konqueror"), i18n("*"), part->widget(), i18n("Open File To make MD5."))); if (!file.open(QIODevice::ReadOnly)) { return; } // TODO QFile //char s[1024]; // write file content { close(pipe_fd[0]); QByteArray s = file.readAll(); char *ch = s.data(); if (write(pipe_fd[1], ch, s.size()) < 0) { perror("write"); } close(pipe_fd[1]); } //read result { close(pipe_result_fd[1]); char result[128]; if (read(pipe_result_fd[0], &result[0], 128) < 0){ perror("read"); } close(pipe_result_fd[0]); KMessageBox::information(part->widget(),i18n("Md5 : %1").arg(QString(QByteArray(result, 128)))); } }else{ scmp_filter_ctx ctx = seccomp_init(SCMP_ACT_KILL); seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(close), 0); seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(read), 3, SCMP_A0(SCMP_CMP_EQ, (scmp_datum_t)pipe_fd[0]), SCMP_A1(SCMP_CMP_EQ, (scmp_datum_t)buff), SCMP_A2(SCMP_CMP_LE, 1024)); seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(write), 1, SCMP_CMP(0, SCMP_CMP_EQ, (scmp_datum_t)pipe_result_fd[1])); seccomp_load(ctx); seccomp_release(ctx); calcMD5(); } }
void KonqView::switchView( KonqViewFactory &viewFactory ) { //kDebug(); if ( m_pPart ) m_pPart->widget()->hide(); KParts::ReadOnlyPart *oldPart = m_pPart; m_pPart = m_pKonqFrame->attach( viewFactory ); // creates the part // Set the statusbar in the BE asap to avoid a KMainWindow statusbar being created. KParts::StatusBarExtension* sbext = statusBarExtension(); if ( sbext ) sbext->setStatusBar( frame()->statusbar() ); // Activate the new part if ( oldPart ) { m_pPart->setObjectName( oldPart->objectName() ); emit sigPartChanged( this, oldPart, m_pPart ); delete oldPart; } connectPart(); QVariant prop; prop = m_service->property( "X-KDE-BrowserView-FollowActive"); if (prop.isValid() && prop.toBool()) { //kDebug() << "X-KDE-BrowserView-FollowActive -> setFollowActive"; setFollowActive(true); } prop = m_service->property( "X-KDE-BrowserView-Built-Into" ); m_bBuiltinView = (prop.isValid() && prop.toString() == "konqueror"); if ( !m_pMainWindow->viewManager()->isLoadingProfile() ) { // Honor "non-removeable passive mode" (like the dirtree) prop = m_service->property( "X-KDE-BrowserView-PassiveMode"); if ( prop.isValid() && prop.toBool() ) { kDebug() << "X-KDE-BrowserView-PassiveMode -> setPassiveMode"; setPassiveMode( true ); // set as passive } // Honor "linked view" prop = m_service->property( "X-KDE-BrowserView-LinkedView"); if ( prop.isValid() && prop.toBool() ) { setLinkedView( true ); // set as linked // Two views : link both if (m_pMainWindow->viewCount() <= 2) // '1' can happen if this view is not yet in the map { KonqView * otherView = m_pMainWindow->otherView( this ); if (otherView) otherView->setLinkedView( true ); } } } prop = m_service->property( "X-KDE-BrowserView-HierarchicalView"); if ( prop.isValid() && prop.toBool() ) { kDebug() << "X-KDE-BrowserView-HierarchicalView -> setHierarchicalView"; setHierarchicalView( true ); // set as hierarchial } else { setHierarchicalView( false ); } }