diff options
Diffstat (limited to 'kdpkg-install')
-rw-r--r-- | kdpkg-install/Makefile.am | 2 | ||||
-rw-r--r-- | kdpkg-install/console.cpp | 32 | ||||
-rw-r--r-- | kdpkg-install/console.h | 3 | ||||
-rw-r--r-- | kdpkg-install/install.cpp | 57 | ||||
-rw-r--r-- | kdpkg-install/install.h | 1 | ||||
-rw-r--r-- | kdpkg-install/main.cpp | 7 | ||||
-rw-r--r-- | kdpkg-install/process.cpp | 2 | ||||
-rwxr-xr-x | kdpkg-install/sh/kdpkg-sh | 39 |
8 files changed, 117 insertions, 26 deletions
diff --git a/kdpkg-install/Makefile.am b/kdpkg-install/Makefile.am index c0ed3d9..18dde5c 100644 --- a/kdpkg-install/Makefile.am +++ b/kdpkg-install/Makefile.am @@ -9,7 +9,7 @@ METASOURCES = AUTO # the application source, library search path, and link libraries kdpkg_install_SOURCES = main.cpp install.cpp installdialog.ui process.cpp console.cpp consoledialog.ui -kdpkg_install_LDFLAGS = $(KDE_RPATH) $(all_libraries) +kdpkg_install_LDFLAGS = $(KDE_RPATH) $(all_libraries) -lkio kdpkg_install_LDADD = $(LIB_KDEUI) diff --git a/kdpkg-install/console.cpp b/kdpkg-install/console.cpp index cc6f450..f1dfaa9 100644 --- a/kdpkg-install/console.cpp +++ b/kdpkg-install/console.cpp @@ -28,21 +28,51 @@ #include <qwidgetstack.h> #include <qlistview.h> #include <qtextedit.h> +#include <qstring.h> #include <qlabel.h> #include <qpushbutton.h> #include "console.h" +#include <string> +#include <stdio.h> + +using namespace std; + console::console(QWidget *parent, const QStrList &run, const char *name, const QStringList &) : Widget(parent,name) { + + // 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); + } + //label->setText( name ); loadKonsole(); konsoleFrame->installEventFilter( this ); // run command - terminal()->startProgram( "/usr/share/kdpkg/sh/kdpkg-sh", run ); + terminal()->startProgram( m_kdePrefix + "/share/kdpkg/sh/kdpkg-sh", run ); connect( konsole, SIGNAL(destroyed()), this, SLOT( finish() ) ); } diff --git a/kdpkg-install/console.h b/kdpkg-install/console.h index b2fd554..739969b 100644 --- a/kdpkg-install/console.h +++ b/kdpkg-install/console.h @@ -24,6 +24,8 @@ #include "consoledialog.h" +#include <qstring.h> + #include <kde_terminal_interface.h> #include <kparts/part.h> @@ -39,6 +41,7 @@ class console : public Widget return static_cast<ExtTerminalInterface*>(konsole->qt_cast( "ExtTerminalInterface" ) ); } virtual bool eventFilter( QObject *o, QEvent *e ); + QString m_kdePrefix; public slots: virtual void finish(); 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 ); diff --git a/kdpkg-install/install.h b/kdpkg-install/install.h index 96f1844..dafb90d 100644 --- a/kdpkg-install/install.h +++ b/kdpkg-install/install.h @@ -37,6 +37,7 @@ class install : public InstallDialog QString removePkg; QString path; QStringList fields; + QString m_kdePrefix; bool isInstalled(QString); bool checkArchitecture(); bool isLocked(); diff --git a/kdpkg-install/main.cpp b/kdpkg-install/main.cpp index 45b23d8..e0eec81 100644 --- a/kdpkg-install/main.cpp +++ b/kdpkg-install/main.cpp @@ -43,10 +43,11 @@ int main(int argc, char **argv) about->setProgramLogo( QImage("/usr/share/icons/hicolor/32x32/apps/kdpkg.png") ); about->setShortDescription( I18N_NOOP("Frontend for dpkg.") ); about->setLicense(KAboutData::License_GPL_V2); - about->setHomepage("http://linux.wuertz.org"); - about->setBugAddress("xadras@sidux.com"); - about->setCopyrightStatement("(c) 2007 Fabian Würtz"); + about->setHomepage("http://trinity.pearsoncomputing.net"); + about->setBugAddress("http://bugs.pearsoncomputing.net"); + about->setCopyrightStatement("(c) 2010 Timothy Pearson\r(c) 2007 Fabian Würtz"); + about->addAuthor("Timothy Pearson (Trinity Project)", I18N_NOOP("Developer"), "kb9vqf@pearsoncomputing.net", "http://trinity.pearsoncomputing.net"); about->addAuthor("Fabian Würtz (xadras)", I18N_NOOP("Developer"), "xadras@sidux.com", "http://linux.wuertz.org/"); diff --git a/kdpkg-install/process.cpp b/kdpkg-install/process.cpp index 9c02a77..d89ef4a 100644 --- a/kdpkg-install/process.cpp +++ b/kdpkg-install/process.cpp @@ -23,7 +23,7 @@ _process->clearArguments(); _buffer = QString::null; - *_process << "/bin/sh"; + *_process << "/bin/bash"; *_process << "-c"; *_process << command; } diff --git a/kdpkg-install/sh/kdpkg-sh b/kdpkg-install/sh/kdpkg-sh index e192a09..59b3ad1 100755 --- a/kdpkg-install/sh/kdpkg-sh +++ b/kdpkg-install/sh/kdpkg-sh @@ -1,12 +1,19 @@ -#!/bin/sh -# (C) Fabian Wuertz Feb 2008 +#!/bin/bash +# (c) 2010 Timothy Pearson +# (c) Fabian Wuertz Feb 2008 if [ "$1" == "update" ]; then apt-get update - echo "" - echo "Done! Press enter to continuo." - read + if [ $? -eq 0 ]; then + echo "" + echo "Update OK" + else + echo "" + echo "Errors were encountered while updating the package index" + echo "Please press enter to continue" + read + fi fi if [ "$1" == "install" ]; then @@ -19,10 +26,22 @@ if [ "$1" == "install" ]; then apt-get remove $removePackage fi dpkg -i $2 - apt-get install -f - echo "" - echo "Done! Press enter to continuo." - read + if [ $? -eq 0 ]; then + apt-get install -f + if [ $? -eq 0 ]; then + echo "" + echo "Installation OK" + else + echo "" + echo "Errors were encountered while installing your package" + echo "Please press enter to exit" + read + fi + else + echo "" + echo "Errors were encountered while installing your package" + echo "Please press enter to continue" + read + fi fi - |