git-svn-id: svn://db.shs.com.ru/pip@223 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5

This commit is contained in:
2016-08-16 13:15:20 +00:00
parent 36125b9132
commit 450138e4ac
9 changed files with 54 additions and 25 deletions

View File

@@ -231,3 +231,4 @@ add_subdirectory("utils/remote_console")
add_subdirectory("utils/code_model_generator") add_subdirectory("utils/code_model_generator")
add_subdirectory("utils/system_daemon") add_subdirectory("utils/system_daemon")
add_subdirectory("utils/udp_file_transfer") add_subdirectory("utils/udp_file_transfer")
add_subdirectory("utils/picrypt")

View File

@@ -131,7 +131,7 @@ PRIVATE_DEFINITION_START(PIKbdListener)
PRIVATE_DEFINITION_END(PIKbdListener) PRIVATE_DEFINITION_END(PIKbdListener)
PIKbdListener::PIKbdListener(KBFunc slot, void * _data): PIThread() { PIKbdListener::PIKbdListener(KBFunc slot, void * _data, bool startNow): PIThread() {
setName("keyboard_listener"); setName("keyboard_listener");
_object = this; _object = this;
#ifdef WINDOWS #ifdef WINDOWS
@@ -144,7 +144,7 @@ PIKbdListener::PIKbdListener(KBFunc slot, void * _data): PIThread() {
ret_func = slot; ret_func = slot;
data_ = _data; data_ = _data;
PIKbdListener::exiting = exit_enabled = false; PIKbdListener::exiting = exit_enabled = false;
start(); if (startNow) start();
} }

View File

@@ -90,7 +90,7 @@ public:
//! Constructs keyboard listener with external function "slot" and custom data "data" //! Constructs keyboard listener with external function "slot" and custom data "data"
explicit PIKbdListener(KBFunc slot = 0, void * data = 0); explicit PIKbdListener(KBFunc slot = 0, void * data = 0, bool startNow = true);
~PIKbdListener(); ~PIKbdListener();

View File

@@ -323,14 +323,21 @@ PIScreen::PIScreen(bool startNow, PIKbdListener::KBFunc slot): PIThread(), drawe
ret_func = slot; ret_func = slot;
tile_focus = tile_dialog = 0; tile_focus = tile_dialog = 0;
root.screen = this; root.screen = this;
listener = new PIKbdListener(key_eventS, this); listener = new PIKbdListener(key_eventS, this, startNow);
if (startNow) start(); if (startNow) start();
} }
PIScreen::~PIScreen() { PIScreen::~PIScreen() {
piCoutObj << "~PIScreen";
if (isRunning()) if (isRunning())
stop(); stop();
piCoutObj << "stop PIScreen .. ";
PIThread::waitForFinish(10);
piCoutObj << "stop PIScreen ok";
piCoutObj << "stop listener .. ";
listener->waitForFinish(10);
piCoutObj << "stop listener ok";
delete listener; delete listener;
} }
@@ -462,6 +469,7 @@ void PIScreen::stop(bool clear) {
void PIScreen::begin() { void PIScreen::begin() {
listener->start();
nextFocus(&root); nextFocus(&root);
console.begin(); console.begin();
} }
@@ -493,6 +501,7 @@ void PIScreen::run() {
void PIScreen::end() { void PIScreen::end() {
listener->stop();
console.end(); console.end();
} }

View File

@@ -34,7 +34,7 @@ class PIP_EXPORT PIScreen: public PIThread, public PIScreenTypes::PIScreenBase
public: public:
//! Constructs %PIScreen with key handler "slot" and if "startNow" start it //! Constructs %PIScreen with key handler "slot" and if "startNow" start it
PIScreen(bool startNow = false, PIKbdListener::KBFunc slot = 0); PIScreen(bool startNow = true, PIKbdListener::KBFunc slot = 0);
~PIScreen(); ~PIScreen();

View File

@@ -430,21 +430,19 @@ bool PIString::operator >(const PIString & str) const {
PIString PIString::mid(const int start, const int len) const { PIString PIString::mid(const int start, const int len) const {
//PIString str; //PIString str;
int s = start, l = len; int s = start, l = len;
if (l == 0 || start >= length()) return PIString(); if (l == 0 || s >= length()) return PIString();
if (s < 0) { if (s < 0) {
l += s; l += s;
s = 0; s = 0;
} }
if (l < 0) { if (l < 0) {
//for (uint i = s; i < size(); ++i)
// str += at(i);
return PIString(&(at(s)), size_s() - s); return PIString(&(at(s)), size_s() - s);
} else { } else {
if (l > length() - s) if (l > length() - s)
l = length() - s; l = length() - s;
//for (int i = s; i < s + l; ++i) //for (int i = s; i < s + l; ++i)
// str += at(i); // str += at(i);
//std::cout << "mid " << s << " " << l << " " << size_s() << " " << start << " " << len << "\n"; // std::cout << "mid " << s << " " << l << " " << size_s() << " " << start << " " << len << "\n";
return PIString(&(at(s)), l); return PIString(&(at(s)), l);
} }
return PIString(); return PIString();
@@ -795,6 +793,25 @@ PIString PIString::takeRange(const PIChar & start, const PIChar & end, const PIC
} }
PIString PIString::inBrackets(const PIChar &start, const PIChar &end) const {
int slen = length();
int st = -1, bcnt = 0;
PIChar cc;
for (int i = 0; i < slen; i++) {
cc = at(i);
if (cc == start) {
if (bcnt == 0) st = i;
bcnt++;
}
if (cc == end && st >= 0) {
bcnt--;
if (bcnt == 0) return mid(st+1, i-st-1);
}
}
return PIString();
}
PIString PIString::toUpperCase() const { PIString PIString::toUpperCase() const {
PIString str(*this); PIString str(*this);
int l = str.size(); int l = str.size();

View File

@@ -450,8 +450,11 @@ public:
* \sa \a takeSymbol(), \a takeWord(), \a takeLine(), \a takeNumber() */ * \sa \a takeSymbol(), \a takeWord(), \a takeLine(), \a takeNumber() */
PIString takeRange(const PIChar & start, const PIChar & end, const PIChar & shield = '\\'); PIString takeRange(const PIChar & start, const PIChar & end, const PIChar & shield = '\\');
//const char * data() {return convertToStd().c_str();}
/*! \brief Return a string in brackets "start" and "end" symbols from the begin of this
* string and return it.
* \details Example: string = "a(b(c)d)e"; inBrackets('(', ')') = "b(c)d"; */
PIString inBrackets(const PIChar & start, const PIChar & end) const;
/*! \brief Return real bytes count of this string /*! \brief Return real bytes count of this string
* \details It`s equivalent length of char sequence * \details It`s equivalent length of char sequence

View File

@@ -4,7 +4,7 @@
#define PIP_VERSION_MAJOR 0 #define PIP_VERSION_MAJOR 0
#define PIP_VERSION_MINOR 5 #define PIP_VERSION_MINOR 5
#define PIP_VERSION_REVISION 4 #define PIP_VERSION_REVISION 5
#define PIP_VERSION_SUFFIX "" #define PIP_VERSION_SUFFIX ""
#endif // PIVERSION_H #endif // PIVERSION_H

View File

@@ -124,24 +124,23 @@ private:
void usage() { void usage() {
piCout << Bold << "PIP UDP file transfer"; piCout << Bold << "PIP UDP file transfer";
piCout << Cyan << "Version" << Bold << PIPVersion() << NewLine; piCout << Cyan << "Version" << Bold << PIPVersion() << NewLine;
piCout << Green << Bold << "Usage:" << Default << "\"pift [-hqf] -r <receive_ip> -s <send_ip> [-d <work_dir>] [-p port] [<path1>] [<path2>] [<path3>] [...]\"" << NewLine; piCout << Green << Bold << "Usage:" << Default << "\"pift [-hqf] -r <receive_ip> -s <send_ip> [-d <work_dir>] [-p <port>] [<path1>] [<path2>] [<path3>] [...]\"" << NewLine;
piCout << Green << Bold << "Details:"; piCout << Green << Bold << "Details:";
piCout << "-f " << Green << "- full path in <receive_ip> and <send_ip>"; piCout << "-f --fullpath " << Green << "- full path in <receive_ip> and <send_ip>";
piCout << "-h " << Green << "- display this message and exit"; piCout << "-h --help " << Green << "- display this message and exit";
piCout << "-q " << Green << "- quiet, no debug output to console"; piCout << "-q --quet " << Green << "- quiet, no debug output to console";
piCout << "-r " << Green << "- set receive ip address, must be ip address of this computer"; piCout << "-r --receive <receive_ip> " << Green << "- set receive ip address, must be ip address of this computer";
piCout << "-s " << Green << "- set send ip address, address of computer which communicate with you"; piCout << "-s --send <send_ip> " << Green << "- set send ip address, address of computer which communicate with you";
piCout << "-p " << Green << "- UDP port for transfer, by default 50005"; piCout << "-p --port <port> " << Green << "- UDP port for transfer, by default 50005";
piCout << "-d <work_dir> " << Green << "- directory, where place received files"; piCout << "-d --dir <work_dir> " << Green << "- directory, where place received files";
piCout << "<path> " << Green << "- add path to send, if no path, then \"pift\" working in receive mode"; piCout << "<path> " << Green << "- add path to send, if no path, then \"pift\" working in receive mode";
piCout << "-t " << Green << "- test mode"; piCout << "-t --test " << Green << "- test mode";
} }
int main (int argc, char * argv[]) { int main (int argc, char * argv[]) {
PICLI cli(argc, argv); PICLI cli(argc, argv);
PIINTROSPECTION_START cli.setOptionalArgumentsCount(-1);
cli.setOptionalArgumentsCount(-1);
cli.addArgument("send", true); cli.addArgument("send", true);
cli.addArgument("receive", true); cli.addArgument("receive", true);
cli.addArgument("dir", true); cli.addArgument("dir", true);
@@ -201,7 +200,7 @@ int main (int argc, char * argv[]) {
} }
kbd.start(); kbd.start();
WAIT_FOR_EXIT WAIT_FOR_EXIT
PICout(0) << "\n"; PICout(0) << "\n";
return 0; return 0;
} }