CShellWindow: use slots for ACKNOWLEDGE_EVENT mode results

Origin commit data
------------------
Branch: ni/coolstream
Commit: 982fbb962e
Author: Thilo Graf <dbt@novatux.de>
Date: 2015-03-24 (Tue, 24 Mar 2015)


------------------
No further description and justification available within origin commit message!

------------------
This commit was generated by Migit
This commit is contained in:
2015-03-24 14:46:18 +01:00
parent 48c8c2ce59
commit 317c6ab7a8
2 changed files with 49 additions and 15 deletions

View File

@@ -47,9 +47,9 @@ class CShellWindow : public sigc::trackable
public:
enum shellwindow_modes
{
VERBOSE = 1,
ACKNOWLEDGE = 2,
ACKNOWLEDGE_MSG = 4
VERBOSE = 1,
ACKNOWLEDGE = 2,
ACKNOWLEDGE_EVENT = 4
};
CShellWindow(const std::string &Command, const int Mode = 0, int* Res = NULL, bool auto_exec = true);
~CShellWindow();
@@ -79,7 +79,36 @@ class CShellWindow : public sigc::trackable
shell.exec();
...other code...
*/
sigc::signal<void, std::string&> OnShellOutputLoop;
sigc::signal<void, std::string&, int*, bool*> OnShellOutputLoop;
/*!
signal/event handler runs after task is finished.
NOTE: works only with ACKNOWLEDGE_EVENT mode
After executed task comes a default messages (see method showResult()), but with these slots it is possible to use other messages
or any desired action without any touching this class.
Example for implementation in foreign class let show an alternate message than default message:
...your code...
//assuming in your foreign class is declared a member function named YourMemberFunction() without return value and int* as parmeter This method should run
instead the default message.
//declare a slot with return value as 'void' and wihout any parameter
sigc::slot<void, int*> sl;
//fill the slot with your member function in your class with your action
sl = sigc::mem_fun(*this, &CYourClass::YourMemberFunction);
//create the CShellWindow object in verbose mode, important: parameter 'auto_exec' must be set to 'false', so it is possible to connect the slot before engages the exec() methode
CShellWindow shell(cmd, (verbose ? CShellWindow::VERBOSE : 0) | (acknowledge ? CShellWindow::ACKNOWLEDGE_MSG : 0), &res, false);
//connect slot
shell1.OnResultError.connect(sl);
//now exec...
shell.exec();
...other code...
*/
sigc::signal<void, int*> OnResultError;
sigc::signal<void, int*> OnResultOk;
};
#endif