%{CPP_TEMPLATE} #include "%{APPNAMELC}view.h" #include #include #include #include #include #include #include #include %{APPNAME}View::%{APPNAME}View(TQWidget *parent) : TQWidget(parent), DCOPObject("%{APPNAME}Iface") { // setup our layout manager to automatically add our widgets TQHBoxLayout *top_layout = new TQHBoxLayout(this); top_layout->setAutoAdd(true); // we want to look for all components that satisfy our needs. the // trader will actually search through *all* registered TDE // applications and components -- not just KParts. So we have to // specify two things: a service type and a constraint // // the service type is like a mime type. we say that we want all // applications and components that can handle HTML -- 'text/html' // // however, by itself, this will return such things as Netscape.. // not what we wanted. so we constrain it by saying that the // string 'KParts/ReadOnlyPart' must be found in the ServiceTypes // field. with this, only components of the type we want will be // returned. TDETrader::OfferList offers = TDETrader::self()->query("text/html", "'KParts/ReadOnlyPart' in ServiceTypes"); KLibFactory *factory = 0; // in theory, we only care about the first one.. but let's try all // offers just in case the first can't be loaded for some reason TDETrader::OfferList::Iterator it(offers.begin()); for( ; it != offers.end(); ++it) { KService::Ptr ptr = (*it); // we now know that our offer can handle HTML and is a part. // since it is a part, it must also have a library... let's try to // load that now factory = KLibLoader::self()->factory( ptr->library() ); if (factory) { m_html = static_cast(factory->create(this, ptr->name(), "KParts::ReadOnlyPart")); break; } } // if our factory is invalid, then we never found our component // and we might as well just exit now if (!factory) { KMessageBox::error(this, i18n("Could not find a suitable HTML component")); return; } connect(m_html, TQT_SIGNAL(setWindowCaption(const TQString&)), this, TQT_SLOT(slotSetTitle(const TQString&))); connect(m_html, TQT_SIGNAL(setStatusBarText(const TQString&)), this, TQT_SLOT(slotOnURL(const TQString&))); } %{APPNAME}View::~%{APPNAME}View() { } void %{APPNAME}View::print(TQPainter *p, int height, int width) { // do the actual printing, here // p->drawText(etc..) } TQString %{APPNAME}View::currentURL() { return m_html->url().url(); } void %{APPNAME}View::openURL(TQString url) { openURL(KURL(url)); } void %{APPNAME}View::openURL(const KURL& url) { m_html->openURL(url); } void %{APPNAME}View::slotOnURL(const TQString& url) { emit signalChangeStatusbar(url); } void %{APPNAME}View::slotSetTitle(const TQString& title) { emit signalChangeCaption(title); } #include "%{APPNAMELC}view.moc"