summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/apps/advancedfm/advancedfm.h3
-rw-r--r--noncore/apps/advancedfm/advancedfm.pro4
-rw-r--r--noncore/apps/advancedfm/advancedfmMenu.cpp121
-rw-r--r--noncore/apps/advancedfm/inputDialog.cpp44
-rw-r--r--noncore/apps/advancedfm/inputDialog.h35
-rw-r--r--noncore/apps/advancedfm/output.cpp128
-rw-r--r--noncore/apps/advancedfm/output.h32
7 files changed, 220 insertions, 147 deletions
diff --git a/noncore/apps/advancedfm/advancedfm.h b/noncore/apps/advancedfm/advancedfm.h
index 7bccce9..9948255 100644
--- a/noncore/apps/advancedfm/advancedfm.h
+++ b/noncore/apps/advancedfm/advancedfm.h
@@ -151,2 +151,5 @@ private:
151 QTimer menuTimer; 151 QTimer menuTimer;
152 void startProcess(const QString &);
153private slots:
154 void processEnded();
152}; 155};
diff --git a/noncore/apps/advancedfm/advancedfm.pro b/noncore/apps/advancedfm/advancedfm.pro
index bda2fdf..0e037a1 100644
--- a/noncore/apps/advancedfm/advancedfm.pro
+++ b/noncore/apps/advancedfm/advancedfm.pro
@@ -2,4 +2,4 @@ TEMPLATE = app
2CONFIG += qt warn_on release 2CONFIG += qt warn_on release
3HEADERS = advancedfm.h inputDialog.h filePermissions.h output.h 3HEADERS = advancedfm.h filePermissions.h output.h
4SOURCES = advancedfm.cpp advancedfmData.cpp advancedfmMenu.cpp inputDialog.cpp filePermissions.cpp output.cpp main.cpp 4SOURCES = advancedfm.cpp advancedfmData.cpp advancedfmMenu.cpp filePermissions.cpp output.cpp main.cpp
5TARGET = advancedfm 5TARGET = advancedfm
diff --git a/noncore/apps/advancedfm/advancedfmMenu.cpp b/noncore/apps/advancedfm/advancedfmMenu.cpp
index f89ad30..0a9f921 100644
--- a/noncore/apps/advancedfm/advancedfmMenu.cpp
+++ b/noncore/apps/advancedfm/advancedfmMenu.cpp
@@ -12,3 +12,2 @@
12#include "advancedfm.h" 12#include "advancedfm.h"
13#include "inputDialog.h"
14#include "output.h" 13#include "output.h"
@@ -17,2 +16,3 @@
17#include <opie/otabwidget.h> 16#include <opie/otabwidget.h>
17#include <opie/oprocess.h>
18 18
@@ -235,3 +235,3 @@ void AdvancedFm::localDelete() {
235 QString cmd="rm -rf "+f; 235 QString cmd="rm -rf "+f;
236 system( cmd.latin1()); 236 startProcess( (const QString)cmd.latin1() );
237 populateLocalView(); 237 populateLocalView();
@@ -257,3 +257,2 @@ void AdvancedFm::localDelete() {
257 file.remove(); 257 file.remove();
258 // system( cmd.latin1());
259 } 258 }
@@ -300,3 +299,3 @@ void AdvancedFm::remoteDelete() {
300 QString cmd="rm -rf "+f; 299 QString cmd="rm -rf "+f;
301 system( cmd.latin1()); 300 startProcess( (const QString)cmd );
302 populateRemoteView(); 301 populateRemoteView();
@@ -322,3 +321,2 @@ void AdvancedFm::remoteDelete() {
322 file.remove(); 321 file.remove();
323 // system( cmd.latin1());
324 } 322 }
@@ -825,30 +823,16 @@ void AdvancedFm::runCommand() {
825 fileDlg->exec(); 823 fileDlg->exec();
826 QString command; 824 //QString command;
825
827 if( fileDlg->result() == 1 ) { 826 if( fileDlg->result() == 1 ) {
828 command = fileDlg->LineEdit1->text(); 827 qDebug(fileDlg->LineEdit1->text());
828 QStringList command;
829 829
830 command << "/bin/sh";
831 command << "-c";
832 command << fileDlg->LineEdit1->text();
830 Output *outDlg; 833 Output *outDlg;
831 outDlg = new Output(this, tr("AdvancedFm Output"),FALSE); 834 outDlg = new Output( command, this, tr("AdvancedFm Output"), true);
832 outDlg->showMaximized(); 835 outDlg->showMaximized();
833 outDlg->show(); 836 outDlg->exec();
834 qApp->processEvents(); 837 qApp->processEvents();
835 FILE *fp;
836 char line[130];
837 sleep(1);
838 command +=" 2>&1";
839 fp = popen( (const char *) command, "r");
840 if ( !fp ) {
841 qDebug("Could not execute '" + command + "'! err=%d", fp);
842 QMessageBox::warning( this, "AdvancedFm", tr("command failed!"), tr("&OK") );
843 pclose(fp);
844 return;
845 } else {
846 while ( fgets( line, sizeof line, fp)) {
847 QString lineStr = line;
848 lineStr=lineStr.left(lineStr.length()-1);
849 outDlg->OutputEdit->append(lineStr);
850 outDlg->OutputEdit->setCursorPosition(outDlg->OutputEdit->numLines() + 1,0,FALSE);
851 }
852 }
853 pclose(fp);
854 838
@@ -872,7 +856,6 @@ void AdvancedFm::runCommandStd() {
872 fileDlg->exec(); 856 fileDlg->exec();
873 QString command; 857
874 if( fileDlg->result() == 1 ) { 858 if( fileDlg->result() == 1 ) {
875 qApp->processEvents(); 859 qApp->processEvents();
876 command = fileDlg->LineEdit1->text() + " &"; 860 startProcess( (const QString)fileDlg->LineEdit1->text().latin1());
877 system(command.latin1());
878 } 861 }
@@ -887,28 +870,42 @@ void AdvancedFm::fileStatus() {
887 } 870 }
888 QString command = " stat -l "+ curFile +" 2>&1"; 871
872 QStringList command;
873 command << "/bin/sh";
874 command << "-c";
875 command << "stat -l "+ curFile;
876
889 Output *outDlg; 877 Output *outDlg;
890 outDlg = new Output(this, tr("AdvancedFm Output"),FALSE); 878 outDlg = new Output( command, this, tr("AdvancedFm Output"), true);
891 outDlg->showMaximized(); 879 outDlg->showMaximized();
892 outDlg->show(); 880 outDlg->exec();
893 qApp->processEvents(); 881 qApp->processEvents();
894 FILE *fp;
895 char line[130];
896 sleep(1);
897 fp = popen( (const char *) command, "r");
898 if ( !fp ) {
899 qDebug("Could not execute '" + command + "'! err=%d", fp);
900 QMessageBox::warning( this, "AdvancedFm", tr("command failed!"), tr("&OK") );
901 pclose(fp);
902 return;
903 } else {
904 while ( fgets( line, sizeof line, fp)) {
905 outDlg->OutputEdit->append(line);
906 outDlg->OutputEdit->setCursorPosition(outDlg->OutputEdit->numLines() + 1,0,FALSE);
907 882
908 }
909 883
910 } 884// Output *outDlg;
911 pclose(fp); 885// outDlg = new Output(this, tr("AdvancedFm Output"),FALSE);
886// outDlg->showMaximized();
887// outDlg->show();
888// qApp->processEvents();
889
890// FILE *fp;
891// char line[130];
892// sleep(1);
893// fp = popen( (const char *) command, "r");
894// if ( !fp ) {
895// qDebug("Could not execute '" + command + "'! err=%d", fp);
896// QMessageBox::warning( this, "AdvancedFm", tr("command failed!"), tr("&OK") );
897// pclose(fp);
898// return;
899// } else {
900// while ( fgets( line, sizeof line, fp)) {
901// outDlg->OutputEdit->append(line);
902// outDlg->OutputEdit->setCursorPosition(outDlg->OutputEdit->numLines() + 1,0,FALSE);
903
904// }
905
906// }
907// pclose(fp);
912} 908}
913 909
910
914void AdvancedFm::mkDir() { 911void AdvancedFm::mkDir() {
@@ -950,3 +947,3 @@ void AdvancedFm::mkSym() {
950 qDebug(cmd); 947 qDebug(cmd);
951 system(cmd.latin1() ); 948 startProcess( (const QString)cmd );
952 } 949 }
@@ -964,3 +961,3 @@ void AdvancedFm::mkSym() {
964 qDebug(cmd); 961 qDebug(cmd);
965 system(cmd.latin1() ); 962 startProcess( (const QString)cmd );
966 } 963 }
@@ -1020 +1017,21 @@ void AdvancedFm::selectAll() {
1020} 1017}
1018
1019void AdvancedFm::startProcess(const QString & cmd) {
1020 QStringList command;
1021 OProcess *process;
1022 process = new OProcess();
1023 connect(process, SIGNAL(processExited(OProcess *)),
1024 this, SLOT( processEnded()));
1025
1026 command << "/bin/sh";
1027 command << "-c";
1028 command << cmd.latin1();
1029 *process << command;
1030 if(!process->start(OProcess::NotifyOnExit) )
1031 qDebug("could not start process");
1032}
1033
1034void AdvancedFm::processEnded() {
1035 populateLocalView();
1036 populateRemoteView();
1037}
diff --git a/noncore/apps/advancedfm/inputDialog.cpp b/noncore/apps/advancedfm/inputDialog.cpp
deleted file mode 100644
index 5af0f72..0000000
--- a/noncore/apps/advancedfm/inputDialog.cpp
+++ b/dev/null
@@ -1,44 +0,0 @@
1/****************************************************************************
2 inputDialog.cpp
3 -------------------
4** Created: Sat Mar 9 23:33:09 2002
5 copyright : (C) 2002 by ljp
6 email : ljp@llornkcor.com
7 * This program is free software; you can redistribute it and/or modify *
8 * it under the terms of the GNU General Public License as published by *
9 * the Free Software Foundation; either version 2 of the License, or *
10 * (at your option) any later version. *
11 ***************************************************************************/
12
13#include "inputDialog.h"
14
15#include <qlineedit.h>
16#include <qlayout.h>
17#include <qvariant.h>
18#include <qtooltip.h>
19#include <qwhatsthis.h>
20
21
22InputDialog::InputDialog( QWidget* parent, const char* name, bool modal, WFlags fl )
23 : QDialog( parent, name, modal, fl )
24{
25 if ( !name )
26 setName( "InputDialog" );
27 resize( 234, 50 );
28 setMaximumSize( QSize( 240, 50 ) );
29 setCaption( tr(name ) );
30
31 LineEdit1 = new QLineEdit( this, "LineEdit1" );
32 LineEdit1->setGeometry( QRect( 10, 10, 216, 22 ) );
33}
34
35InputDialog::~InputDialog()
36{
37 inputText = LineEdit1->text();
38
39}
40
41void InputDialog::setInputText(const QString &string)
42{
43LineEdit1->setText( string);
44}
diff --git a/noncore/apps/advancedfm/inputDialog.h b/noncore/apps/advancedfm/inputDialog.h
deleted file mode 100644
index 114a3a8..0000000
--- a/noncore/apps/advancedfm/inputDialog.h
+++ b/dev/null
@@ -1,35 +0,0 @@
1/***************************************************************************
2 inputDialog.h
3 -------------------
4** Created: Sat Mar 9 23:33:09 2002
5 copyright : (C) 2002 by ljp
6 email : ljp@llornkcor.com
7 * This program is free software; you can redistribute it and/or modify *
8 * it under the terms of the GNU General Public License as published by *
9 * the Free Software Foundation; either version 2 of the License, or *
10 * (at your option) any later version. *
11 ***************************************************************************/
12#ifndef INPUTDIALOG_H
13#define INPUTDIALOG_H
14
15#include <qvariant.h>
16#include <qdialog.h>
17class QVBoxLayout;
18class QHBoxLayout;
19class QGridLayout;
20class QLineEdit;
21
22class InputDialog : public QDialog
23{
24 Q_OBJECT
25
26public:
27 InputDialog( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
28 ~InputDialog();
29 QString inputText;
30 QLineEdit* LineEdit1;
31 void setInputText(const QString &);
32
33};
34
35#endif // INPUTDIALOG_H
diff --git a/noncore/apps/advancedfm/output.cpp b/noncore/apps/advancedfm/output.cpp
index 82e78a7..946d038 100644
--- a/noncore/apps/advancedfm/output.cpp
+++ b/noncore/apps/advancedfm/output.cpp
@@ -6,3 +6,4 @@
6#include "output.h" 6#include "output.h"
7#include "inputDialog.h" 7
8#include <opie/oprocess.h>
8 9
@@ -12,4 +13,6 @@
12 13
14#include <qmessagebox.h>
15#include <qstringlist.h>
13#include <qfile.h> 16#include <qfile.h>
14 17#include <qcstring.h>
15#include <qlineedit.h> 18#include <qlineedit.h>
@@ -20,2 +23,4 @@
20 23
24#include <errno.h>
25
21/* XPM */ 26/* XPM */
@@ -118,12 +123,17 @@ static char * filesave_xpm[] = {
118 123
119Output::Output( QWidget* parent, const char* name, bool modal, WFlags fl ) 124Output::Output( const QStringList commands, QWidget* parent, const char* name, bool modal, WFlags fl)
120 : QDialog( parent, name, modal, fl ) 125 : QDialog( parent, name, modal, fl )
121{ 126{
127 QStringList cmmds;
128// cmmds=QStringList::split( " ", commands, false);
129 cmmds=commands;
130// qDebug("count %d", cmmds.count());
122 if ( !name ) 131 if ( !name )
123 setName( "Output" ); 132 setName( tr("Output"));
124 resize( 196, 269 ); 133 resize( 196, 269 );
125 setCaption( name ); 134 setCaption( name );
135
126 OutputLayout = new QGridLayout( this ); 136 OutputLayout = new QGridLayout( this );
127 OutputLayout->setSpacing( 6 ); 137 OutputLayout->setSpacing( 2);
128 OutputLayout->setMargin( 11 ); 138 OutputLayout->setMargin( 2);
129 139
@@ -136,3 +146,2 @@ Output::Output( QWidget* parent, const char* name, bool modal, WFlags fl )
136 146
137
138 OutputEdit = new QMultiLineEdit( this, "OutputEdit" ); 147 OutputEdit = new QMultiLineEdit( this, "OutputEdit" );
@@ -140,11 +149,34 @@ Output::Output( QWidget* parent, const char* name, bool modal, WFlags fl )
140 149
150 proc = new OProcess();
141 151
152 connect(proc, SIGNAL(processExited(OProcess *)),
153 this, SLOT( processFinished()));
154
155 connect(proc, SIGNAL(receivedStdout(OProcess *, char *, int)),
156 this, SLOT(commandStdout(OProcess *, char *, int)));
157
158 connect(proc, SIGNAL(receivedStderr(OProcess *, char *, int)),
159 this, SLOT(commandStderr(OProcess *, char *, int)));
160
161// connect( , SIGNAL(received(const QByteArray &)),
162// this, SLOT(commandStdin(const QByteArray &)));
163
164// * proc << commands.latin1();
165 for ( QStringList::Iterator it = cmmds.begin(); it != cmmds.end(); ++it ) {
166 qDebug( "%s", (*it).latin1() );
167 * proc << (*it).latin1();
142} 168}
143 169
144/* 170 if(!proc->start(OProcess::NotifyOnExit, OProcess::All)) {
145 * Destroys the object and frees any allocated resources 171
146 */ 172 OutputEdit->append("Process could not start");
147Output::~Output() 173 OutputEdit->setCursorPosition( OutputEdit->numLines() + 1,0,FALSE);
148{ 174 perror("Error: ");
149 // no need to delete child widgets, Qt does it all for us 175 QString errorMsg="Error\n"+(QString)strerror(errno);
176 OutputEdit->append( errorMsg);
177 OutputEdit->setCursorPosition( OutputEdit->numLines() + 1,0,FALSE);
178 }
179}
180
181Output::~Output() {
150} 182}
@@ -177,4 +209,74 @@ void Output::saveOutput() {
177 f.close(); 209 f.close();
210 }
211}
212
213void Output::commandStdout(OProcess*, char *buffer, int buflen) {
214 qWarning("received stdout %d bytes", buflen);
215
216// QByteArray data(buflen);
217// data.fill(*buffer, buflen);
218// for (uint i = 0; i < data.count(); i++ ) {
219// printf("%c", buffer[i] );
220// }
221// printf("\n");
178 222
223 QString lineStr = buffer;
224 lineStr=lineStr.left(lineStr.length()-1);
225 OutputEdit->append(lineStr);
226 OutputEdit->setCursorPosition( OutputEdit->numLines() + 1,0,FALSE);
179 } 227 }
228
229
230void Output::commandStdin( const QByteArray &data) {
231 qWarning("received stdin %d bytes", data.size());
232 // recieved data from the io layer goes to sz
233 proc->writeStdin(data.data(), data.size());
234}
235
236void Output::commandStderr(OProcess*, char *buffer, int buflen) {
237 qWarning("received stderrt %d bytes", buflen);
238
239 QString lineStr = buffer;
240// lineStr=lineStr.left(lineStr.length()-1);
241 OutputEdit->append(lineStr);
242 OutputEdit->setCursorPosition( OutputEdit->numLines() + 1,0,FALSE);
243}
244
245void Output::processFinished() {
246
247 delete proc;
248 OutputEdit->append( "\nFinished\n");
249 OutputEdit->setCursorPosition( OutputEdit->numLines() + 1,0,FALSE);
250// close();
251// disconnect( layer(), SIGNAL(received(const QByteArray &)),
252// this, SLOT(commandStdin(const QByteArray &)));
253}
254
255//==============================
256
257InputDialog::InputDialog( QWidget* parent, const char* name, bool modal, WFlags fl )
258 : QDialog( parent, name, modal, fl )
259{
260 if ( !name )
261 setName( "InputDialog" );
262 resize( 234, 50 );
263 setMaximumSize( QSize( 240, 50 ) );
264 setCaption( tr(name ) );
265
266 LineEdit1 = new QLineEdit( this, "LineEdit1" );
267 LineEdit1->setGeometry( QRect( 10, 10, 216, 22 ) );
268 connect(LineEdit1,SIGNAL(returnPressed()),this,SLOT(returned() ));
269}
270
271InputDialog::~InputDialog() {
272 inputText = LineEdit1->text();
273}
274
275void InputDialog::setInputText(const QString &string) {
276 LineEdit1->setText( string);
277}
278
279void InputDialog::returned() {
280 inputText = LineEdit1->text();
281 this->accept();
180} 282}
diff --git a/noncore/apps/advancedfm/output.h b/noncore/apps/advancedfm/output.h
index c1e48da..199a684 100644
--- a/noncore/apps/advancedfm/output.h
+++ b/noncore/apps/advancedfm/output.h
@@ -13,2 +13,9 @@
13#include <qdialog.h> 13#include <qdialog.h>
14#include <qcstring.h>
15#include <qstringlist.h>
16#include <qlineedit.h>
17#include <qwhatsthis.h>
18
19#include <opie/oprocess.h>
20
14class QVBoxLayout; 21class QVBoxLayout;
@@ -23,3 +30,3 @@ class Output : public QDialog
23public: 30public:
24 Output( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 ); 31 Output(const QStringList commands=0, QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
25 ~Output(); 32 ~Output();
@@ -30,4 +37,27 @@ protected:
30 QGridLayout* OutputLayout; 37 QGridLayout* OutputLayout;
38 OProcess *proc;
31protected slots: 39protected slots:
32 void saveOutput(); 40 void saveOutput();
41 void commandStdout(OProcess*, char *, int);
42 void commandStdin(const QByteArray &);
43 void commandStderr(OProcess*, char *, int);
44 void processFinished();
45 private:
46 QString cmmd;
47
48};
49
50class InputDialog : public QDialog
51{
52 Q_OBJECT
53
54public:
55 InputDialog( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
56 ~InputDialog();
57 QString inputText;
58 QLineEdit* LineEdit1;
59 void setInputText(const QString &);
60private slots:
61 void returned();
62
33}; 63};