Corretta formattazione
git-svn-id: svn://10.65.10.50/trunk@590 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
		
							parent
							
								
									fc18e775ab
								
							
						
					
					
						commit
						6b2cda0c60
					
				
							
								
								
									
										505
									
								
								ba/ba0.cpp
									
									
									
									
									
								
							
							
						
						
									
										505
									
								
								ba/ba0.cpp
									
									
									
									
									
								
							| @ -1,495 +1,3 @@ | ||||
| <<<<<<< ba0.cpp | ||||
| #include <applicat.h> | ||||
| #include <execp.h> | ||||
| #include <mask.h> | ||||
| #include <isam.h> | ||||
| #include <prefix.h> | ||||
| #include <progind.h> | ||||
| #include <utility.h> | ||||
| #include <urldefid.h> | ||||
| #include <stdio.h> | ||||
| 
 | ||||
| #if XVT_OS == XVT_OS_WIN | ||||
| extern "C"  | ||||
| {  | ||||
| #include <cpb.h>  | ||||
| } | ||||
| #include <dos.h> | ||||
| #else | ||||
| #include <dirent.h> | ||||
| #endif | ||||
| 
 | ||||
| #include "ba0.h" | ||||
| #include "ba0100a.h" | ||||
| 
 | ||||
| ///////////////////////////////////////////////////////////
 | ||||
| // Picture Mask
 | ||||
| ///////////////////////////////////////////////////////////
 | ||||
| 
 | ||||
| class TPicture_mask : public TMask | ||||
| { | ||||
|   static short _id; | ||||
|   static PICTURE _picture; | ||||
| 
 | ||||
| protected: | ||||
|   virtual void handler(WINDOW win, EVENT* ep); | ||||
|   void set_picture(short id); | ||||
| 
 | ||||
| public: | ||||
|   TPicture_mask(const char* name, int dx, int dy, short picture_id); | ||||
|   void reset(); | ||||
| }; | ||||
| 
 | ||||
| short TPicture_mask::_id = 0; | ||||
| PICTURE TPicture_mask::_picture = 0L; | ||||
| 
 | ||||
| void TPicture_mask::set_picture(short id) | ||||
| { | ||||
|   if (id != _id) | ||||
|   { | ||||
|     _id = id; | ||||
| #if XVT_OS == XVT_OS_WIN | ||||
|     if (_picture) picture_free(_picture); | ||||
|     _picture = cpb_picture_load(id); | ||||
| #endif | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| void TPicture_mask::reset() | ||||
| { | ||||
| #if XVT_OS == XVT_OS_WIN | ||||
|   if (_picture) | ||||
|   { | ||||
|     picture_free(_picture); | ||||
|     _picture = 0L; | ||||
|     _id = 0; | ||||
|   }   | ||||
| #endif | ||||
| } | ||||
| 
 | ||||
| TPicture_mask::TPicture_mask(const char* name, int dx, int dy, short pic) | ||||
| : TMask(name, 1, dx, dy) | ||||
| { | ||||
|   set_picture(pic); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| void TPicture_mask::handler(WINDOW win, EVENT* ep) | ||||
| { | ||||
|   TMask::handler(win, ep); | ||||
| 
 | ||||
|   if (ep->type == E_UPDATE) | ||||
|   { | ||||
| #if XVT_OS == XVT_OS_WIN | ||||
|     if (_picture) | ||||
|       cpb_win_picture_draw_at(win, _picture, 1, CHARY<<1); | ||||
|     else | ||||
| #endif | ||||
|     { | ||||
|       const int max = 16; | ||||
|       for (int i = 0; i < max; i++) | ||||
|       { | ||||
|         TTemp_window w(win); | ||||
|         w.rect(i*2, i, max-i*2, max-i); | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| ///////////////////////////////////////////////////////////
 | ||||
| // Menu application
 | ||||
| ///////////////////////////////////////////////////////////
 | ||||
| 
 | ||||
| class TMenu_application : public TApplication | ||||
| { | ||||
|   const char* _name; | ||||
| 
 | ||||
|   enum { MAXLEVEL = 1024 }; | ||||
|   int _first[MAXLEVEL]; | ||||
|   TArray _menu;         // TAG|DESCRIPTION|ACTION
 | ||||
|   TBit_array _enabled; | ||||
|   TArray _modules; | ||||
| 
 | ||||
|   int _level, _max; | ||||
|   bool _ditta_asked; | ||||
| 
 | ||||
|   static int _last_button; | ||||
|   static bool _find_button; | ||||
| 
 | ||||
| protected: | ||||
|   void test_temp() const; | ||||
|   void load_menu(); | ||||
|   int do_level(); | ||||
|   int find_menu(const char* s) const; | ||||
|   bool check_user(); | ||||
|   virtual bool create(); | ||||
|   virtual bool menu(MENU_TAG m); | ||||
| 
 | ||||
|   static bool menu_item_handler(TMask_field&f, KEY k); | ||||
|   static bool menu_find_handler(TMask_field&f, KEY k); | ||||
|   bool module_enabled(const char * program) const; | ||||
|   bool module_enabled(int module) const { return has_module(module);} | ||||
|    | ||||
| public: | ||||
|   TMenu_application(const char* name) : _name(name), _ditta_asked(FALSE) {} | ||||
| }; | ||||
| 
 | ||||
| int TMenu_application::_last_button = 0; | ||||
| bool TMenu_application::_find_button = FALSE; | ||||
| 
 | ||||
| inline TMenu_application& app()  | ||||
| { return (TMenu_application&)main_app(); } | ||||
| 
 | ||||
| bool TMenu_application::module_enabled(const char * program) const | ||||
| { | ||||
|   bool ok = FALSE; | ||||
|   const int nmod = _modules.items(); | ||||
|   for (int aut = 0; aut < nmod; aut++) | ||||
|   { | ||||
|     const TString& s = (const TString&) _modules[aut]; | ||||
|     if (strncmp((const char *) s, program, 2) == 0) { ok = TRUE; break; } | ||||
|   } | ||||
|   return ok && has_module(aut); | ||||
| } | ||||
| 
 | ||||
| void TMenu_application::load_menu() | ||||
| { | ||||
|   TScanner s(_name); | ||||
| 
 | ||||
|   _max = -1; | ||||
| 
 | ||||
|   while (s.line().not_empty()) | ||||
|   { | ||||
|     TToken_string* ts = new TToken_string(s.token()); | ||||
|     int l = ts->get_int(); | ||||
| 
 | ||||
|     if (l < _max) | ||||
|     { | ||||
|       error_box("Item of level %d while %d was expected)", l, _max); | ||||
|       l = _max; | ||||
|     } | ||||
|     if (l > _max) | ||||
|     { | ||||
|       if (l >= MAXLEVEL) | ||||
|       { | ||||
|         error_box("Too many menu levels: %d", l); | ||||
|         l = _max; | ||||
|       } | ||||
|       _first[_max = l] = _menu.items(); | ||||
|     } | ||||
| 
 | ||||
|     _menu.add(ts); | ||||
|     const TString16 action = ts->get(2); | ||||
|     const int last = _menu.items() - 1; | ||||
| 
 | ||||
|     if (atoi(action) > 0) | ||||
|     { | ||||
|       TToken_string list(ts->get(), ','); | ||||
|       int module = list.get_int();  | ||||
| 
 | ||||
|       if (module == 0)  | ||||
|         _enabled.set(last); | ||||
|       while(!_enabled[last] && module > 0) | ||||
|       { | ||||
|         if (has_module(module)) | ||||
|           _enabled.set(last); | ||||
|         module = list.get_int();  | ||||
|       } | ||||
|     } | ||||
|     else | ||||
|       _enabled.set(last, module_enabled(action)); | ||||
|   } | ||||
|   _first[++_max] = _menu.items(); | ||||
| } | ||||
| 
 | ||||
| int TMenu_application::find_menu(const char* s) const | ||||
| {      | ||||
|   TString80 str(s); str.upper(); | ||||
|   int found = -1; | ||||
|    | ||||
|   for (int i = 0; i < _menu.items(); i++) | ||||
|   { | ||||
|     if (_enabled[i]) | ||||
|     { | ||||
|       TToken_string& l = (TToken_string&)_menu[i]; | ||||
|       const int m = l.get_int(0); | ||||
|       if (m != _level) | ||||
|       { | ||||
|         TString80 v(l.get()); v.upper(); | ||||
| 
 | ||||
|         if (v.find(str) >= 0) | ||||
|         { | ||||
|           found = i; | ||||
|           if (isalpha(l.get_char())) break; | ||||
|         }   | ||||
|       } | ||||
|     }   | ||||
|   } | ||||
|   return found; | ||||
| } | ||||
| 
 | ||||
| bool TMenu_application::menu_item_handler(TMask_field&f, KEY k) | ||||
| { | ||||
|   if (k == K_SPACE) | ||||
|   { | ||||
|     _last_button = f.dlg(); | ||||
|     _find_button = FALSE; | ||||
|     f.mask().stop_run(K_AUTO_ENTER); | ||||
|   }      | ||||
|   return TRUE; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| bool TMenu_application::menu_find_handler(TMask_field&f, KEY k) | ||||
| { | ||||
|   if (k == K_TAB && f.focusdirty()) | ||||
|   { | ||||
|     const TString& v = f.get(); | ||||
|     if (v.not_empty()) | ||||
|     { | ||||
|       _last_button = app().find_menu(v); | ||||
|       if (_last_button >= 0) | ||||
|       { | ||||
|         _find_button = TRUE; | ||||
|         f.mask().stop_run(K_AUTO_ENTER); | ||||
|       }   | ||||
|       else | ||||
|       { | ||||
|         beep(); | ||||
|         return FALSE; | ||||
|       }   | ||||
|     }     | ||||
|   }      | ||||
|   return TRUE; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| int TMenu_application::do_level() | ||||
| { | ||||
|   const int first = _first[_level]; | ||||
|   const int last = _first[_level+1]; | ||||
|   TToken_string& row = (TToken_string&)_menu[first]; | ||||
|   const TString80 head(row.get(1)); | ||||
| 
 | ||||
|   const int width = 72; | ||||
|   const int height = 18; | ||||
|   const int bwidth = 20; | ||||
|   const int x = width-bwidth-12; | ||||
|   const short pic = BA0_PICTURE+(short)row.get_int(); | ||||
|   TPicture_mask menu(head, width, height, pic); | ||||
| 
 | ||||
|   int y = 1; | ||||
| 
 | ||||
| #if XVT_OS == XVT_OS_WIN | ||||
|   TString16 t(format("#%d", BMP_STOPREC)); | ||||
| #else | ||||
|   TString16 t; | ||||
| #endif | ||||
| 
 | ||||
|   for (int i = first+1; i < last; i++, y++) | ||||
|   { | ||||
|     TToken_string& row = (TToken_string&)_menu[i]; | ||||
|     TString80 item(row.get(1)); | ||||
|     if (isdigit(*row.get())) item << "..."; | ||||
|     menu.add_static(-1, 0, item, x+4, y); | ||||
|     menu.add_button(100+y, 0, t, x, y, 1, 1); | ||||
|     menu.set_handler(100+y, menu_item_handler); | ||||
|     if (!_enabled[i]) menu.disable(100 + y); | ||||
|   } | ||||
|   menu.add_static(-1, 0, "Cerca", 1,-3); | ||||
|   menu.add_string(99, 0, "", -12, -3, 50, "", bwidth+1); | ||||
|   menu.set_handler(99, menu_find_handler); | ||||
| 
 | ||||
|   t = first ? "Menu precedente" : "Fine"; | ||||
|   menu.add_button(first ? DLG_CANCEL : DLG_QUIT, 0, t, -22, -1, bwidth, 2); | ||||
|   if (first) | ||||
|     menu.add_button(DLG_QUIT, 0, "Fine", -12, -1, bwidth, 2); | ||||
|    | ||||
|   if (_find_button && _last_button > first)  | ||||
|     menu.first_focus(100+_last_button-first); | ||||
|    | ||||
|   _last_button = _find_button = 0;   | ||||
| 
 | ||||
|   const int k = menu.run(); | ||||
|   int m = 0; | ||||
|   switch (k) | ||||
|   {        | ||||
|   case K_ESC: | ||||
|     m = -1; break; | ||||
|   case K_QUIT: | ||||
|     menu.reset(); | ||||
|     m = -2; break; | ||||
|   default: | ||||
|     if (_find_button) | ||||
|       m = -1; | ||||
|     else   | ||||
|       m = first+_last_button-100;  | ||||
|     break; | ||||
|   } | ||||
|   return m; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| void TMenu_application::test_temp() const | ||||
| { | ||||
|   TFilename dir; dir.tempdir();                     // Directory temporanea
 | ||||
|   | ||||
|   TFilename name = dir; | ||||
|   name << "/" << "*.*";                             // Cerca tutti i file
 | ||||
| 
 | ||||
| #if XVT_OS == XVT_OS_WIN | ||||
|   struct _find_t f; | ||||
|   if (_dos_findfirst(name, _A_NORMAL, &f) == 0 && | ||||
|       yesno_box("Cancellare i file temporanei?")) | ||||
|   {    | ||||
|     TIndwin pi(40, "Cancellazione file temporanei", FALSE, FALSE); | ||||
|     do | ||||
|     { | ||||
|       name = dir;  | ||||
|       name << "/" << f.name; | ||||
|       remove(name); | ||||
|     } while (_dos_findnext(&f) == 0); | ||||
|   } | ||||
| #endif | ||||
| } | ||||
| 
 | ||||
| bool TMenu_application::check_user() | ||||
| { | ||||
|   TMask m("ba0100a"); | ||||
|   TLocalisamfile users(LF_USER); | ||||
|   TString16 user; | ||||
|   TString16 password; | ||||
|    | ||||
|   for (int i = 0 ; i < 3; i++) | ||||
|   { | ||||
|     if (m.run() == K_ESC) return FALSE; | ||||
|     user = m.get(F_USER); | ||||
|     password = m.get(F_PASSWORD); | ||||
|     if (password.len() > 3)  | ||||
|     { | ||||
|       users.zero(); | ||||
|       users.put("USERNAME", user); | ||||
|       if (users.read() == NOERR) | ||||
|       { | ||||
|         const TString16 pwd(users.get("PASSWORD")); | ||||
| 
 | ||||
|         if (pwd == encode(password)) | ||||
|         { | ||||
|           set_user(user); | ||||
|           return TRUE; | ||||
|         } | ||||
|         else | ||||
|           message_box("Password errata"); | ||||
|       } | ||||
|       else | ||||
|         if (user == "PRASSI") | ||||
|         { | ||||
|           if (m.get(F_PASSWORD) == "pr.assi") | ||||
|           { | ||||
|             set_user(user); | ||||
|             return TRUE; | ||||
|           } | ||||
|           else  | ||||
|             message_box("Password errata"); | ||||
|         } | ||||
|         else | ||||
|           message_box("Utente sconosciuto"); | ||||
|     } | ||||
|     else | ||||
|       message_box("Password errata"); | ||||
|   } | ||||
|   return FALSE; | ||||
| } | ||||
| 
 | ||||
| bool TMenu_application::create() | ||||
| { | ||||
|   if (!check_user()) return FALSE; | ||||
|   set_perms(); | ||||
|   test_temp(); | ||||
| { | ||||
|   TScanner scanner("prassi.aut"); | ||||
|    | ||||
|   for (int aut = 0; scanner.line() != ""; aut++) | ||||
|     _modules.add(new TString(scanner.token())); | ||||
| } | ||||
| load_menu(); | ||||
| dispatch_e_menu(BAR_ITEM(1)); | ||||
| return TRUE; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| bool TMenu_application::menu(MENU_TAG) | ||||
| { | ||||
|   int refarray[256]; | ||||
|   memset(refarray, 0, sizeof(refarray));  | ||||
|    | ||||
|   int i = 0; | ||||
| 
 | ||||
|   _level = 0; | ||||
|   while (i >= 0) | ||||
|   { | ||||
|     const int m = do_level(); | ||||
|     if (m >= 0) | ||||
|     { | ||||
|       TToken_string& row = (TToken_string&)_menu[m]; | ||||
|       const TFilename option(row.get(2)); | ||||
|        | ||||
|       if (option.not_empty()) | ||||
|       { | ||||
|         bool ok = TRUE; | ||||
|         const int l = atoi(option); | ||||
|         if (l > 0) | ||||
|         { | ||||
|           const TString16 flags(row.get()); | ||||
|           if (flags.find('F') >= 0)  | ||||
|             _ditta_asked = ok = set_firm(); | ||||
|           if (ok) | ||||
|           { | ||||
|             refarray[i++] = _level; | ||||
|             if (l < _max) _level = l; | ||||
|           }   | ||||
|         } | ||||
|         else | ||||
|         {            | ||||
|           TExternal_app a(option); | ||||
|           const TString& module = option.left(2); | ||||
|           if (module == "ba") _ditta_asked = FALSE; else | ||||
|             if (module == "cg" && !_ditta_asked) | ||||
|               _ditta_asked = ok = set_firm(); | ||||
|           if (ok) a.run(); | ||||
|           prefhndl->set("DEF");  // Aggiorna prefix se hanno cambiato ditta
 | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|     else  | ||||
|     { | ||||
|       if (m < -1) break; | ||||
|       if (_find_button) | ||||
|       { | ||||
|         TToken_string& row = (TToken_string&)_menu[_last_button]; | ||||
|         _level = row.get_int(0); | ||||
|       }   | ||||
|       else   | ||||
|       { | ||||
|         _level = (i > 0) ? refarray[--i] : 0; | ||||
|         if (_level == 0) i = 0; | ||||
|       }   | ||||
|     }   | ||||
|   } | ||||
| 
 | ||||
|   return FALSE; | ||||
| } | ||||
| 
 | ||||
| int main(int argc, char** argv) | ||||
| { | ||||
|   const char* menu = (argc < 2) ? "prassi.mnu" : argv[1]; | ||||
|   TMenu_application ma(menu); | ||||
|   ma.run(argc, argv, "Menu Principale"); | ||||
|   return TRUE; | ||||
| } | ||||
| ======= | ||||
| #include <applicat.h> | ||||
| #include <execp.h> | ||||
| #include <mask.h> | ||||
| @ -935,15 +443,17 @@ int TMenu_application::do_level() | ||||
| 
 | ||||
| void TMenu_application::test_temp() const | ||||
| { | ||||
|   TFilename name; name.tempdir(); | ||||
|   name << "/" << "ci*"; | ||||
|   TFilename dir; dir.tempdir();                     // Directory temporanea
 | ||||
|    | ||||
|   TFilename name = dir; | ||||
|   name << "/" << "*.*";                             // Cerca tutti i file
 | ||||
| 
 | ||||
| #if XVT_OS == XVT_OS_WIN | ||||
|   struct _find_t f; | ||||
|   if (_dos_findfirst(name, _A_NORMAL, &f) == 0 && | ||||
|       yesno_box("Si desidera cancellare i file temporanei?")) | ||||
|       yesno_box("Cancellare i file temporanei?")) | ||||
|   {    | ||||
|     TIndwin pi(40, "Cancellazione file temporanei residui", FALSE, FALSE); | ||||
|     TFilename dir; dir.tempdir(); | ||||
|     TIndwin pi(40, "Cancellazione file temporanei", FALSE, FALSE); | ||||
|     do | ||||
|     { | ||||
|       name = dir;  | ||||
| @ -1088,4 +598,3 @@ int main(int argc, char** argv) | ||||
|   ma.run(argc, argv, "Menu Principale"); | ||||
|   return TRUE; | ||||
| } | ||||
| >>>>>>> 1.14 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user