xmlNodePtr View::XmlElement::write() const { xmlNodePtr node = xmlNewNode(NULL, reinterpret_cast<const xmlChar *>(VIEW)); xmlAddChild(node, Widget::XmlElement::write()); xmlNewTextChild(node, NULL, reinterpret_cast<const xmlChar *>(EXTENSION_ID), reinterpret_cast<const xmlChar *>(extensionId())); return node; }
Widget *View::XmlElement::restoreWidget() { ViewExtension *ext = static_cast<ViewExtension *>(Samoyed::Application::instance(). pluginManager().acquireExtension(extensionId())); if (!ext) return NULL; Widget *widget = ext->restoreView(*this); ext->release(); return widget; }
void ExtensionManager::initialize() { m_loadingContainers = true; // kdDebug(1210) << "ExtensionManager::loadContainerConfig()" << endl; TDEConfig* config = TDEGlobal::config(); PluginManager* pm = PluginManager::the(); // set up the "main" panel if (config->hasGroup("Main Panel")) { config->setGroup("Main Panel"); if (config->hasKey("DesktopFile")) { m_mainPanel = pm->createExtensionContainer(config->readPathEntry("DesktopFile"), true, config->readPathEntry("ConfigFile"), "Main Panel"); } } if (!m_mainPanel) { // fall back to a regular ol' PanelExtension m_mainPanel = pm->createExtensionContainer( "childpanelextension.desktop", true, TQString(kapp->aboutData()->appName()) + "rc", "Main Panel"); } if (!m_mainPanel) { KMessageBox::error(0, i18n("The TDE panel (kicker) could not load the main panel " "due to a problem with your installation. "), i18n("Fatal Error!")); exit(1); } configureMenubar(true); Kicker::the()->setMainWidget(m_mainPanel); m_mainPanel->readConfig(); m_mainPanel->show(); kapp->processEvents(); // read extension list config->setGroup("General"); TQStringList elist = config->readListEntry("Extensions2"); // now restore the extensions TQStringList::iterator itEnd = elist.end(); for (TQStringList::iterator it = elist.begin(); it != elist.end(); ++it) { // last container? TQStringList::iterator lastcheck(it); lastcheck++; if (lastcheck == elist.end()) { m_loadingContainers = false; } // extension id TQString extensionId(*it); // create a matching applet container if (extensionId.find("Extension") == -1) { continue; } // is there a config group for this extension? if (!config->hasGroup(extensionId)) { continue; } // set config group config->setGroup(extensionId); ExtensionContainer* e = pm->createExtensionContainer(config->readPathEntry("DesktopFile"), true, // is startup config->readPathEntry("ConfigFile"), extensionId); if (e) { addContainer(e); e->readConfig(); e->show(); kapp->processEvents(); } } m_loadingContainers = false; pm->clearUntrustedLists(); connect(Kicker::the(), TQT_SIGNAL(configurationChanged()), TQT_SLOT(configurationChanged())); DCOPRef r( "ksmserver", "ksmserver" ); r.send( "resumeStartup", TQCString( "kicker" )); }
void ExtensionManager::migrateMenubar() { // lame, lame, lame. // the menubar applet was just plunked into kicker and not much // thought was put into how it should be used. great idea, but no // integration. >:-( // so now we have to check to see if we HAVE another extension that // will have a menubar in it, and if so, abort creating one of our // own. // // the reason i didn't do this as a tdeconfig_update script is that // most people don't use this feature, so no reason to penalize // everyone, and moreover the user may added this to their main // panel, meaning kickerrc itself would have to be vastly modified // with lots of complications. not work it IMHO. TDEConfig* config = TDEGlobal::config(); config->setGroup("General"); if (config->readBoolEntry("CheckedForMenubar", false)) { return; } if (!locate("config", "kicker_menubarpanelrc").isEmpty()) { // don't overwrite/override something that's already there return; } TQStringList elist = config->readListEntry("Extensions2"); TQStringList::iterator itEnd = elist.end(); for (TQStringList::iterator it = elist.begin(); it != elist.end(); ++it) { TQString extensionId(*it); if (extensionId.find("Extension") == -1) { continue; } // is there a config group for this extension? if (!config->hasGroup(extensionId)) { continue; } config->setGroup(extensionId); TQString extension = config->readPathEntry("ConfigFile"); TDEConfig extensionConfig(locate("config", extension)); extensionConfig.setGroup("General"); if (extensionConfig.hasKey("Applets2")) { TQStringList containers = extensionConfig.readListEntry("Applets2"); TQStringList::iterator cit = containers.begin(); TQStringList::iterator citEnd = containers.end(); for (; cit != citEnd; ++cit) { TQString appletId(*cit); // is there a config group for this applet? if (!extensionConfig.hasGroup(appletId)) { continue; } TDEConfigGroup group(&extensionConfig, appletId.latin1()); TQString appletType = appletId.left(appletId.findRev('_')); if (appletType == "Applet") { TQString appletFile = group.readPathEntry("DesktopFile"); if (appletFile.find("menuapplet.desktop") != -1) { TQString menubarConfig = locate("config", extension); TDEIO::NetAccess::copy(menubarConfig, locateLocal("config", "kicker_menubarpanelrc"), 0); elist.remove(it); config->setGroup("General"); config->writeEntry("Extensions2", elist); config->writeEntry("CheckedForMenubar", true); config->sync(); return; } } } } } config->setGroup("General"); config->writeEntry("CheckedForMenubar", true); }