MOdificati sheet in modo da gestire meglio perdita e guadagno del focus Tolta isspace dalle TString e messa is_space git-svn-id: svn://10.65.10.50/trunk@869 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			120 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			120 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
| //      $Id: mailbox.h,v 1.5 1995-01-16 15:10:24 guy Exp $
 | |
| 
 | |
| /* si', trattasi di -*-c++-*- */
 | |
| // Mailbox.h
 | |
| // Message passing between applications and command lines
 | |
| 
 | |
| #ifndef __MAILBOX_H
 | |
| #define __MAILBOX_H
 | |
| 
 | |
| #ifndef __STRINGS_H
 | |
| #include <strings.h>
 | |
| #endif
 | |
| 
 | |
| // TMessage flags
 | |
| #define MSG_READ (0x01)
 | |
| 
 | |
| class TMessage : public TObject
 | |
| // basic message
 | |
| {
 | |
|   TString16 _from;
 | |
|   TString16 _to;
 | |
|   TString80 _subject;
 | |
|   TString _text;
 | |
|   byte  _flags;
 | |
|   int   _number;
 | |
| 
 | |
|   friend class TMailbox;
 | |
| 
 | |
| protected:
 | |
|   void setread() { _flags |= MSG_READ; }
 | |
|   bool isread()  { return _flags & MSG_READ; }
 | |
|   int number(int n = -1) { return (n == -1 ? _number : (_number = n)); }
 | |
| 
 | |
| public:
 | |
|   const TString& from() const { return _from; }
 | |
|   const TString& to() const { return _to; }
 | |
|   const TString& subject() const { return _subject; }
 | |
|   const TString& body() const { return _text; }
 | |
| 
 | |
|   const TString& from(const char* f) { return _from = f; }
 | |
|   const TString& to(const char* t) { return _to = t; }
 | |
|   const TString& subject(const char* s) { return _subject = s; }
 | |
|   const TString& body(const char* b) { return _text = b; }
 | |
|   
 | |
|   void send();
 | |
| 
 | |
|   TMessage(const char* to, const char* sub, const char* text,
 | |
|            const char* from = NULL);
 | |
| };
 | |
| 
 | |
| class TMailbox : public TObject
 | |
| {
 | |
|   TFilename _path;
 | |
|   TArray    _msgs;
 | |
|   int       _lastread, n_new;
 | |
|   long      _lastpos;
 | |
|   int       _cnt;
 | |
| 
 | |
| protected:
 | |
| 
 | |
|   void reread();
 | |
|   TMessage* next_read();
 | |
|   TMessage* next_unread();
 | |
| 
 | |
| public:
 | |
|   
 | |
|   int check()                        // return
 | |
|   { reread(); return n_new; }    // n. of messages waiting
 | |
|   void restart() { _cnt = 0;}                            // reinitialize read phase
 | |
|   int items()                                                                                            // n. of read+unread messages
 | |
|   { return _msgs.items(); }        // in mailbox
 | |
|   TMessage* next(bool read = FALSE);      // get next message; if
 | |
|   // TRUE passed, get read mess. too
 | |
|   TMessage* next_s(char* s, bool read = FALSE); // next w/ matching subject
 | |
|   TMessage* next_f(char* f, bool read = FALSE); // next w/ matching sender
 | |
|   void send(TMessage& m);                   // send a message
 | |
|   void sendcmd(int argc, char* argv[],
 | |
|                char* to);                  // transform commandline args
 | |
|   // in mail messages
 | |
|   // NOT IMPLEMENTED
 | |
|   char*  readcmd(char* to = NULL);         // transform mailbox in
 | |
|   // cmdline parms for calling
 | |
|   // non_compliant applications
 | |
|   // NOT IMPLEMENTED
 | |
|   TMessage* get(int n)                     // nth message
 | |
|   { return (TMessage*)_msgs.objptr(n); }
 | |
| 
 | |
|   TMailbox::TMailbox(const char* appname = NULL);
 | |
|   virtual ~TMailbox();
 | |
| };
 | |
| 
 | |
| 
 | |
| // instead of using commandline args directly, user posts
 | |
| // messages to application, then calls it without arguments
 | |
| // If the application is called by the user with command_line
 | |
| // arguments, sendcmd parses them and translates to messages
 | |
| // according to the following rules: 
 | |
| //       
 | |
| //    from is "cmdline"
 | |
| //    
 | |
| //    subject comes from arguments of type -opt=value
 | |
| //    (opt becomes subject and value becomes body)
 | |
| //
 | |
| //    args like -opt="val, val, val" create
 | |
| //    one message for each val, with the same subject=opt
 | |
| //
 | |
| //    -opt arg creates subject=opt and empty body
 | |
| //
 | |
| //    one-word arguments create a message with "null" subject
 | |
| // 
 | |
| // A mailbox should be member of applicat and sendcmd should be
 | |
| // called automatically upon startup 
 | |
| // Non compliant applications (which do not use mailbox) can be 
 | |
| // called consistently by sending messages, 
 | |
| // appending TMailbox::readcmd(appname) to
 | |
| // their name and doing an exec()
 | |
| 
 | |
| #endif
 | |
| 
 |