KoOdfLoadingContext::KoOdfLoadingContext(KoOdfStylesReader &stylesReader, KoStore* store, const KComponentData &componentData) : d(new Private(stylesReader, store)) { // Ideally this should be done by KoDocument and passed as argument here... KoOdfReadStore oasisStore(store); QString dummy; (void)oasisStore.loadAndParse("tar:/META-INF/manifest.xml", d->manifestDoc, dummy); if (componentData.isValid()) { QString fileName( KStandardDirs::locate( "styles", "defaultstyles.xml", componentData ) ); if ( ! fileName.isEmpty() ) { QFile file( fileName ); QString errorMessage; if ( KoOdfReadStore::loadAndParse( &file, d->doc, errorMessage, fileName ) ) { d->defaultStylesReader.createStyleMap( d->doc, true ); } else { kWarning(30010) << "reading of defaultstyles.xml failed:" << errorMessage; } } else { kWarning(30010) << "defaultstyles.xml not found"; } } if (!parseManifest(d->manifestDoc)) { kWarning(30010) << "could not parse manifest document"; } }
MainWindow::MainWindow(RootSection* document, const KComponentData &componentData) : m_doc(document), m_activeView(0), m_dockerManager(0) { Q_ASSERT(componentData.isValid()); KGlobal::setActiveComponent(componentData); // then, setup our actions setupActions(); // Create the docker manager after setting up the action m_dockerManager = new DockerManager(this); // Setup the view view = new View(m_doc, this); setCentralWidget(view); // a call to KXmlGuiWindow::setupGUI() populates the GUI // with actions, using KXMLGUI. // It also applies the saved mainwindow settings, if any, and ask the // mainwindow to automatically save settings if changed: window size, // toolbar position, icon size, etc. setupGUI(); activateView(view); // Position and show toolbars according to user's preference setAutoSaveSettings(componentData.componentName()); const int scnum = QApplication::desktop()->screenNumber(parentWidget()); QRect desk = QApplication::desktop()->screenGeometry(scnum); // if the desktop is virtual then use virtual screen size if(QApplication::desktop()->isVirtualDesktop()) desk = QApplication::desktop()->screenGeometry(QApplication::desktop()->screen()); KConfigGroup config(KGlobal::config(), componentData.componentName()); const QSize size(config.readEntry(QString::fromLatin1("Width %1").arg(desk.width()), 0), config.readEntry(QString::fromLatin1("Height %1").arg(desk.height()), 0)); resize(size); foreach(QDockWidget * wdg, m_dockWidgets) { if((wdg->features() & QDockWidget::DockWidgetClosable) == 0) { wdg->setVisible(true); } } forceDockTabFonts(); }
QString KXMLGUIFactory::readConfigFile( const QString &filename, const KComponentData &_componentData ) { QString xml_file; if (!QDir::isRelativePath(filename)) xml_file = filename; else { KComponentData componentData = _componentData.isValid() ? _componentData : KGlobal::mainComponent(); xml_file = KStandardDirs::locate("data", componentData.componentName() + '/' + filename); if ( !QFile::exists( xml_file ) ) xml_file = KStandardDirs::locate( "data", filename ); } QFile file( xml_file ); if ( xml_file.isEmpty() || !file.open( QIODevice::ReadOnly ) ) { kError(240) << "No such XML file" << filename; return QString(); } QByteArray buffer(file.readAll()); return QString::fromUtf8(buffer.constData(), buffer.size()); }
bool KXMLGUIFactory::saveConfigFile( const QDomDocument& doc, const QString& filename, const KComponentData &_componentData ) { KComponentData componentData = _componentData.isValid() ? _componentData : KGlobal::mainComponent(); QString xml_file(filename); if (QDir::isRelativePath(xml_file)) xml_file = KStandardDirs::locateLocal("data", componentData.componentName() + '/' + filename); QFile file( xml_file ); if ( xml_file.isEmpty() || !file.open( QIODevice::WriteOnly ) ) { kError(240) << "Could not write to" << filename; return false; } // write out our document QTextStream ts(&file); ts.setCodec( QTextCodec::codecForName( "UTF-8" ) ); ts << doc; file.close(); return true; }
void KCrash::defaultCrashHandler (int sig) { // WABA: Do NOT use kDebug() in this function because it is much too risky! // Handle possible recursions static int crashRecursionCounter = 0; crashRecursionCounter++; // Nothing before this, please ! #if !defined(Q_OS_WIN) signal(SIGALRM, SIG_DFL); alarm(3); // Kill me... (in case we deadlock in malloc) #endif #ifdef Q_OS_SOLARIS (void) printstack(2 /* stderr, assuming it's still open. */); #endif if (crashRecursionCounter < 2) { if (s_emergencySaveFunction) { s_emergencySaveFunction (sig); } if ((s_flags & AutoRestart) && s_autoRestartCommand) { sleep(1); startProcess(s_autoRestartArgc, const_cast<const char**>(s_autoRestartCommandLine), false); } crashRecursionCounter++; } #if !defined(Q_OS_WIN) if (!(s_flags & KeepFDs)) closeAllFDs(); # if defined(Q_WS_X11) else if (QX11Info::display()) close(ConnectionNumber(QX11Info::display())); # endif #endif if (crashRecursionCounter < 3) { #ifndef NDEBUG fprintf(stderr, "KCrash: crashing... crashRecursionCounter = %d\n", crashRecursionCounter); fprintf(stderr, "KCrash: Application Name = %s path = %s pid = %lld\n", s_appName ? s_appName : "<unknown>" , s_appPath ? s_appPath : "<unknown>", QCoreApplication::applicationPid()); fprintf(stderr, "KCrash: Arguments: "); for (int i = 0; s_autoRestartCommandLine[i]; ++i) { fprintf(stderr, "%s ", s_autoRestartCommandLine[i]); } fprintf(stderr, "\n"); #else fprintf(stderr, "KCrash: Application '%s' crashing...\n", s_appName ? s_appName : "<unknown>"); #endif if (!s_launchDrKonqi) { setCrashHandler(0); #if !defined(Q_OS_WIN) raise(sig); // dump core, or whatever is the default action for this signal. #endif return; } const char * argv[27]; // don't forget to update this int i = 0; // argument 0 has to be drkonqi argv[i++] = s_drkonqiPath; #if defined Q_WS_X11 // start up on the correct display argv[i++] = "-display"; if ( QX11Info::display() ) argv[i++] = XDisplayString(QX11Info::display()); else argv[i++] = getenv("DISPLAY"); #elif defined(Q_WS_QWS) // start up on the correct display argv[i++] = "-display"; argv[i++] = getenv("QWS_DISPLAY"); #endif argv[i++] = "--appname"; argv[i++] = s_appName ? s_appName : "<unknown>"; if (KApplication::loadedByKdeinit) argv[i++] = "--kdeinit"; // only add apppath if it's not NULL if (s_appPath && *s_appPath) { argv[i++] = "--apppath"; argv[i++] = s_appPath; } // signal number -- will never be NULL char sigtxt[ 10 ]; sprintf( sigtxt, "%d", sig ); argv[i++] = "--signal"; argv[i++] = sigtxt; char pidtxt[ 20 ]; sprintf( pidtxt, "%lld", QCoreApplication::applicationPid()); argv[i++] = "--pid"; argv[i++] = pidtxt; const KComponentData componentData = KGlobal::mainComponent(); const KAboutData *about = componentData.isValid() ? componentData.aboutData() : 0; if (about) { if (about->internalVersion()) { argv[i++] = "--appversion"; argv[i++] = about->internalVersion(); } if (about->internalProgramName()) { argv[i++] = "--programname"; argv[i++] = about->internalProgramName(); } if (about->internalBugAddress()) { argv[i++] = "--bugaddress"; argv[i++] = about->internalBugAddress(); } } char sidtxt[256]; if ( kapp && !kapp->startupId().isNull()) { argv[i++] = "--startupid"; strlcpy(sidtxt, kapp->startupId().constData(), sizeof(sidtxt)); argv[i++] = sidtxt; } if ( s_flags & SaferDialog ) argv[i++] = "--safer"; if ((s_flags & AutoRestart) && s_autoRestartCommand) argv[i++] = "--restarted"; //tell drkonqi if the app has been restarted #if defined(Q_OS_WIN) char threadId[8] = { 0 }; sprintf( threadId, "%d", GetCurrentThreadId() ); argv[i++] = "--thread"; argv[i++] = threadId; #endif // NULL terminated list argv[i] = NULL; startProcess(i, argv, true); } if (crashRecursionCounter < 4) { fprintf(stderr, "Unable to start Dr. Konqi\n"); } _exit(255); }