summaryrefslogtreecommitdiffstats
path: root/kdpkg-install
diff options
context:
space:
mode:
Diffstat (limited to 'kdpkg-install')
-rw-r--r--kdpkg-install/Makefile.am2
-rw-r--r--kdpkg-install/console.cpp32
-rw-r--r--kdpkg-install/console.h3
-rw-r--r--kdpkg-install/install.cpp57
-rw-r--r--kdpkg-install/install.h1
-rw-r--r--kdpkg-install/main.cpp7
-rw-r--r--kdpkg-install/process.cpp2
-rwxr-xr-xkdpkg-install/sh/kdpkg-sh39
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
-