You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
279 lines
7.4 KiB
279 lines
7.4 KiB
/*
|
|
** Copyright (C) 1999,2000 Toivo Pedaste <toivo@ucs.uwa.edu.au>
|
|
**
|
|
*/
|
|
|
|
/*
|
|
** This program is free software; you can redistribute it and/or modify
|
|
** it under the terms of the GNU General Public License as published by
|
|
** the Free Software Foundation; either version 2 of the License, or
|
|
** (at your option) any later version.
|
|
**
|
|
** This program is distributed in the hope that it will be useful,
|
|
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
** GNU General Public License for more details.
|
|
**
|
|
** You should have received a copy of the GNU General Public License
|
|
** along with this program in a file called COPYING; if not, write to
|
|
** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
|
** MA 02110-1301, USA.
|
|
*/
|
|
|
|
/*
|
|
** Bug reports and questions can be sent to kde-devel@kde.org
|
|
*/
|
|
|
|
|
|
#include "../config.h"
|
|
#include <stdio.h>
|
|
#include <kdebug.h>
|
|
|
|
#include <kapplication.h>
|
|
|
|
#include "kpackage.h"
|
|
#include "packageProperties.h"
|
|
#include "pkgInterface.h"
|
|
#include "managementWidget.h"
|
|
|
|
packagePropertiesWidget::packagePropertiesWidget
|
|
(TQWidget *tqparent)
|
|
: KTextBrowser(tqparent)
|
|
{
|
|
TQDict<TQString> trl(53);
|
|
TQStringList pList();
|
|
TQStringList cList();
|
|
|
|
// hide();
|
|
package=NULL;
|
|
TQColorGroup cg = tqcolorGroup();
|
|
setBackgroundColor(cg.base());
|
|
initTranslate();
|
|
}
|
|
|
|
packagePropertiesWidget::~packagePropertiesWidget()
|
|
{
|
|
}
|
|
|
|
void packagePropertiesWidget::iList(const TQString &txt, const TQString &itxt)
|
|
{
|
|
trl.insert(txt, new TQString(itxt));
|
|
pList.append(txt);
|
|
}
|
|
|
|
|
|
void packagePropertiesWidget::initTranslate()
|
|
{
|
|
|
|
iList("name", i18n("name"));
|
|
iList("summary", i18n("summary"));
|
|
iList("version", i18n("version"));
|
|
iList("old-version", i18n("old-version"));
|
|
iList("status", i18n("status"));
|
|
iList("group", i18n("group"));
|
|
iList("size", i18n("size"));
|
|
iList("file-size", i18n("file-size"));
|
|
iList("description", i18n("description"));
|
|
iList("url", i18n("url"));
|
|
iList("architecture", i18n("architecture"));
|
|
|
|
iList("unsatisfied dependencies", i18n("unsatisfied dependencies"));
|
|
iList("pre-depends", i18n("pre-depends"));
|
|
iList("dependencies", i18n("dependencies"));
|
|
iList("depends", i18n("depends"));
|
|
iList("conflicts", i18n("conflicts"));
|
|
iList("provides", i18n("provides"));
|
|
iList("recommends", i18n("recommends"));
|
|
iList("replaces", i18n("replaces"));
|
|
iList("suggests", i18n("suggests"));
|
|
iList("priority", i18n("priority"));
|
|
|
|
iList("essential", i18n("essential"));
|
|
iList("install time", i18n("install time"));
|
|
iList("config-version", i18n("config-version"));
|
|
iList("distribution", i18n("distribution"));
|
|
iList("vendor", i18n("vendor"));
|
|
iList("maintainer", i18n("maintainer"));
|
|
iList("packager", i18n("packager"));
|
|
iList("source", i18n("source"));
|
|
iList("build-time", i18n("build-time"));
|
|
iList("build-host", i18n("build-host"));
|
|
iList("base", i18n("base"));
|
|
iList("filename", i18n("filename"));
|
|
iList("serial", i18n("serial"));
|
|
|
|
iList("also in", i18n("also in"));
|
|
iList("run depends", i18n("run depends"));
|
|
iList("build depends", i18n("build depends"));
|
|
iList("available as", i18n("available as"));
|
|
}
|
|
|
|
void packagePropertiesWidget::changePackage(packageInfo *p)
|
|
{
|
|
|
|
package = p;
|
|
cList.clear();
|
|
if (p) {
|
|
// append properties in ordered list to current list
|
|
for ( TQStringList::Iterator s = pList.begin();
|
|
s != pList.end();
|
|
++s) {
|
|
|
|
if (!p->getProperty(*s).isEmpty()) {
|
|
cList.append(*s);
|
|
}
|
|
}
|
|
// append other properties to end
|
|
TQMap<TQString, TQString>::Iterator it;
|
|
for ( it = p->info.begin(); it != p->info.end(); ++it ) {
|
|
if (!trl.tqfind(it.key())) {
|
|
if (!it.data().isEmpty())
|
|
cList.append(it.key());
|
|
}
|
|
}
|
|
|
|
stmp = "";
|
|
stmp += "<html><head></head><body>";
|
|
stmp += "<h1 style='font-family: serif;'>";
|
|
stmp += p->getProperty("name");
|
|
stmp += "</h1><hr/>";
|
|
stmp += "<table style='width: 100%; border: none; border-spacing: 4px;>";
|
|
for ( TQStringList::Iterator s = cList.begin();
|
|
s != cList.end();
|
|
++s) {
|
|
TQString *pr = trl[*s];
|
|
TQString propName;
|
|
if(pr) {
|
|
propName = *pr;
|
|
} else {
|
|
propName = *s;
|
|
}
|
|
stmp += "<tr>";
|
|
stmp += "<td style='vertical-align: top; font-weight: bold'>";
|
|
stmp += propName;
|
|
stmp += "</td><td>";
|
|
TQString f = p->getProperty(*s);
|
|
if (*s == "maintainer" || *s == "packager") {
|
|
f.tqreplace(TQRegExp("<"),"<");
|
|
f.tqreplace(TQRegExp(">"),">");
|
|
}
|
|
if (*s == "filename") {
|
|
int p = f.tqfindRev("/");
|
|
if (p >= 0) {
|
|
f.insert(p+1,"\n");
|
|
};
|
|
stmp += f;
|
|
} else if (*s == "depends" || *s == "conflicts" ||
|
|
*s == "replaces" ||
|
|
*s == "suggests" || *s == "recommends" ||
|
|
*s == "pre-depends" || *s == "unsatisfied dependencies") {
|
|
depends(f);
|
|
} else if (*s == "url") {
|
|
if (f.right(1) == " ") f.remove(f.length()-1, 1);
|
|
if (f.startsWith("http:") || f.startsWith("ftp:")) /*if (!(f == "(none)")) */
|
|
stmp += "<a href=\"" + f +"\">" + f + "</a>";
|
|
else stmp += i18n("none");
|
|
} else {
|
|
stmp += f;
|
|
}
|
|
stmp += "</td>";
|
|
stmp += "</tr>";
|
|
}
|
|
stmp += "</table>";
|
|
stmp += "</body></html>";
|
|
setText(stmp);
|
|
}
|
|
update();
|
|
}
|
|
|
|
void packagePropertiesWidget::depends(const TQString &f) {
|
|
// printf("d=%s\n",f.data());
|
|
|
|
int i = 0;
|
|
TQStringList list = TQStringList::split(',',f);
|
|
for ( TQStringList::Iterator it = list.begin(); it != list.end(); ++it ) {
|
|
if (i++ > 0)
|
|
stmp += ",";
|
|
dor((*it));
|
|
}
|
|
}
|
|
|
|
void packagePropertiesWidget::dor(const TQString &f) {
|
|
// printf("o=%s\n",f.data());
|
|
|
|
int i = 0;
|
|
TQStringList list = TQStringList::split('|',f);
|
|
for ( TQStringList::Iterator it = list.begin(); it != list.end(); ++it ) {
|
|
if (i++ > 0)
|
|
stmp += "|";
|
|
delement((*it));
|
|
}
|
|
}
|
|
|
|
void packagePropertiesWidget::delement(const TQString &f) {
|
|
int n = f.tqfind("(");
|
|
if (n < 0) {
|
|
n = f.length();
|
|
}
|
|
|
|
TQString u = f.left(n);
|
|
TQString uf = package->interface->provMap(u.stripWhiteSpace());
|
|
|
|
TQString us = uf + package->interface->typeID;
|
|
|
|
bool inst = false, uninst = false;
|
|
if (kpackage->management->dirInstPackages->tqfind(us)) {
|
|
inst = true;
|
|
} else if (kpackage->management->dirUninstPackages->tqfind(us)) {
|
|
uninst = true;
|
|
}
|
|
|
|
if (uninst)
|
|
stmp += "<i>";
|
|
if (inst||uninst) {
|
|
stmp += "<a href=\"";
|
|
stmp += uf;
|
|
stmp += "\">";
|
|
stmp += u;
|
|
stmp += "</a>";
|
|
} else {
|
|
stmp += u;
|
|
}
|
|
if (uninst)
|
|
stmp += "</i>";
|
|
if (n < (signed)f.length())
|
|
stmp += f.mid(n).tqreplace(TQRegExp("<"),"<");
|
|
}
|
|
|
|
void packagePropertiesWidget::setSource(const TQString &name) {
|
|
TQString s = name;
|
|
|
|
if (s.startsWith("http:") || s.startsWith("ftp:"))
|
|
{
|
|
KApplication::kApplication()->invokeBrowser( s );
|
|
return;
|
|
}
|
|
|
|
if (s.startsWith("file:")) {
|
|
s = s.mid(5);
|
|
}
|
|
else if (s.at(1) == '/') {
|
|
s = s.mid(1);
|
|
}
|
|
|
|
TQString ind = s + package->interface->typeID;
|
|
packageInfo *p = kpackage->management->dirInstPackages->tqfind(ind);
|
|
if (p) {
|
|
kpackage->management->treeList->changePack(p->getItem(), package->getItem() != 0);
|
|
} else {
|
|
kdDebug() << "nfound=" << ind << endl;
|
|
p = kpackage->management->dirUninstPackages->tqfind(ind);
|
|
if (p) {
|
|
kpackage->management->treeList->changePack(p->getItem(), package->getItem() != 0);
|
|
} else {
|
|
kdDebug() << "Nfound=" << ind << endl;
|
|
}
|
|
}
|
|
}
|
|
#include "packageProperties.moc"
|