diff options
Diffstat (limited to 'kdpkg-install/install.cpp')
-rw-r--r-- | kdpkg-install/install.cpp | 57 |
1 files changed, 47 insertions, 10 deletions
diff --git a/kdpkg-install/install.cpp b/kdpkg-install/install.cpp index 2501da4..9904018 100644 --- a/kdpkg-install/install.cpp +++ b/kdpkg-install/install.cpp @@ -21,6 +21,7 @@ #include <kgenericfactory.h> #include <klocale.h> +#include <kfiledialog.h> #include <kurlrequester.h> #include <kaboutapplication.h> @@ -37,13 +38,17 @@ #include <console.h> #include <install.h> +#include <string> +#include <stdio.h> + +using namespace std; + install::install( const QString &url, QWidget *parent, const char *name, const QStringList &) :InstallDialog(parent, name) { - if( !url ) - path = QFileDialog::getOpenFileName( "", i18n("Debian Package (*.deb)"), this, i18n("open file dialog"), i18n("Choose a file to open") ); + path = KFileDialog::getOpenFileName( QString::null, i18n("Debian Package (*.deb)"), this, i18n("Choose a Debian package file to open")); else path = url; @@ -56,7 +61,28 @@ install::install( const QString &url, QWidget *parent, const char *name, const Q installPushButton->hide(); nextPushButton1->hide(); + // Get KDE prefix + // FIXME Is there a better way to do this??? + string prefixcommand="kde-config --prefix"; + FILE *pipe_prefix; + char prefix_result[2048]; + int i; + if ((pipe_prefix = popen(prefixcommand.c_str(), "r")) == NULL) + { + m_kdePrefix = "/usr"; + } + else { + fgets(prefix_result, 2048, pipe_prefix); + pclose(pipe_prefix); + for (i=0;i<2048;i++) { + if (prefix_result[i] == 0) { + prefix_result[i-1]=0; + i=2048; + } + } + m_kdePrefix = QString(prefix_result); + } if( !checkArchitecture() ) page2x1(); @@ -116,7 +142,7 @@ void install::page1() void install::page2x1() { - errorTextLabel->setText("<b>"+i18n("The architecture of the package and the system doesn't match! You will not be able to install this package!")+"</b>"); + errorTextLabel->setText("<b>"+i18n("The architecture of this package does not match that of your system. You will not be able to install this package!")+"</b>"); nextPushButton2->hide(); widgetStack->raiseWidget(2); @@ -133,10 +159,10 @@ void install::page2x2() void install::page3() { - titleTextLabel->setText( "<b>"+i18n( "Resynchronization of the package index files.")+"</b>" ); + titleTextLabel->setText( "<b>"+i18n( "Resynchronize Package Index")+"</b>" ); closePushButton->hide(); - QStrList run; run.append( "/usr/share/kdpkg/sh/kdpkg-sh" ); + QStrList run; run.append( m_kdePrefix + "/share/kdpkg/sh/kdpkg-sh" ); run.append( "update" ); QWidget *consoleWidget = new console(this, run ); @@ -151,7 +177,7 @@ void install::page4() { installPushButton->hide(); closePushButton->hide(); - titleTextLabel->setText( "<b>"+i18n( "Installation of the new package." )+"</b>" ); + titleTextLabel->setText( "<b>"+i18n( "Install New Package" )+"</b>" ); if( !installPkg ) @@ -159,7 +185,7 @@ void install::page4() if( !removePkg ) removePkg = "none"; - QStrList run; run.append( "/usr/share/kdpkg/sh/kdpkg-sh" ); + QStrList run; run.append( m_kdePrefix + "/share/kdpkg/sh/kdpkg-sh" ); run.append( "install" ); run.append( path ); run.append( installPkg ); @@ -181,6 +207,8 @@ void install::page4() void install::showDependencies() { + int start_index; + int stop_index; // show packages which will be installed @@ -214,7 +242,11 @@ void install::showDependencies() } } - + while (missingDepends.find("(") != -1) { + start_index = missingDepends.find("("); + stop_index = missingDepends.find(")", start_index); + missingDepends.replace(start_index, stop_index-start_index+1, ""); + } this->shell->setCommand("apt-get -s install "+missingDepends); this->shell->start(true); QStringList installList = QStringList::split( "\n", this->shell->getBuffer().stripWhiteSpace() ).grep("Inst"); @@ -234,7 +266,7 @@ void install::showDependencies() pkgVersion = QStringList::split( " ", installList[i] )[2].mid(1); QListViewItem * item = new QListViewItem( dependenciesListView, 0 ); - item->setPixmap( 0, QPixmap( "/usr/share/kdpkg/icons/install.png") ); + item->setPixmap( 0, QPixmap( m_kdePrefix + "/share/kdpkg/icons/install.png") ); item->setText( 1, name ); item->setText( 2, pkgVersion ); item->setText( 3, sysVersion ); @@ -288,6 +320,11 @@ void install::showDependencies() QString conflicts = fields.grep( "Conflicts" )[0].mid(11); conflicts = conflicts.replace( ",", "" ); conflicts = conflicts+" "+rconflicts; + while (conflicts.find("(") != -1) { + start_index = conflicts.find("("); + stop_index = conflicts.find(")", start_index); + conflicts.replace(start_index, stop_index-start_index+1, ""); + } this->shell->setCommand("apt-get -s remove "+conflicts); this->shell->start(true); @@ -300,7 +337,7 @@ void install::showDependencies() QString sysVersion = QStringList::split( " [", removeList[i] )[1].replace("]", ""); QListViewItem * item = new QListViewItem( dependenciesListView, 0 ); - item->setPixmap( 0, QPixmap( "/usr/share/kdpkg/icons/remove.png") ); + item->setPixmap( 0, QPixmap( m_kdePrefix + "/share/kdpkg/icons/remove.png") ); item->setText( 1, name ); item->setText( 3, sysVersion ); |