Gestione maschere limitate per pagine e campi browsefile
git-svn-id: svn://10.65.10.50/trunk@683 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
		
							parent
							
								
									8bcb52a949
								
							
						
					
					
						commit
						6f39cd2f4e
					
				| @ -1,8 +1,8 @@ | |||||||
| #ifndef __BROWFILE_H | #ifndef __BROWFILE_H | ||||||
| #define __BROWFILE_H | #define __BROWFILE_H | ||||||
| 
 | 
 | ||||||
| #ifndef __SCANNER_H | #ifndef __MASK_H | ||||||
| #include <scanner.h> | #include <mask.h> | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| class TViswin; | class TViswin; | ||||||
|  | |||||||
| @ -26,8 +26,8 @@ bool TExternal_app::can_run() const | |||||||
| {                     | {                     | ||||||
| #if XVT_OS == XVT_OS_WIN | #if XVT_OS == XVT_OS_WIN | ||||||
|   const TFixed_string p(_path);            |   const TFixed_string p(_path);            | ||||||
|   const bool clifo = p.find("cg0") == 0 && p.find("-1") > 0; |   const bool clifo = p.find("cg0") == 0 && p.right(2) == "-1"; | ||||||
|   const int richieste = clifo ? 45 : 15; |   const int richieste = clifo ? 50 : 15; | ||||||
|   const int libere = GetFreeSystemResources(GFSR_SYSTEMRESOURCES); |   const int libere = GetFreeSystemResources(GFSR_SYSTEMRESOURCES); | ||||||
|   return libere >= richieste; |   return libere >= richieste; | ||||||
| #else | #else | ||||||
|  | |||||||
| @ -855,7 +855,7 @@ int TSystemisamfile::build(TRecnotype eox) | |||||||
|   { |   { | ||||||
|     TFilename lf; |     TFilename lf; | ||||||
| 
 | 
 | ||||||
|     lf.format("std/lf%04d.txt", num()); |     lf.format("%sstd/lf%04d.txt", __ptprf, num()); | ||||||
|     if (fexist(lf)) |     if (fexist(lf)) | ||||||
|       load(lf); |       load(lf); | ||||||
|   } |   } | ||||||
|  | |||||||
| @ -160,7 +160,7 @@ void TMask::handler(WINDOW win, EVENT* ep) | |||||||
|   TWindow::handler(win, ep); |   TWindow::handler(win, ep); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void TMask::init_mask(int mode) | void TMask::init_mask() | ||||||
| { | { | ||||||
|   _sheets = _pages = 0;                       // Azzera numero pagine e sheets
 |   _sheets = _pages = 0;                       // Azzera numero pagine e sheets
 | ||||||
|    |    | ||||||
| @ -170,7 +170,7 @@ void TMask::init_mask(int mode) | |||||||
|   _focus = _first_focus = 0;                  // Nessuno ha il focus
 |   _focus = _first_focus = 0;                  // Nessuno ha il focus
 | ||||||
|   _page = -1;                                 // Nessuna pagina corrente
 |   _page = -1;                                 // Nessuna pagina corrente
 | ||||||
|   _handler = NULL;                            // Nessun handler utente
 |   _handler = NULL;                            // Nessun handler utente
 | ||||||
|   _mode = mode;                               // Inizializza modo
 |   _mode = NO_MODE;                            // Inizializza modo
 | ||||||
|   _exchange = 1.0;                            // Il cambio per la valuta e' la lira
 |   _exchange = 1.0;                            // Il cambio per la valuta e' la lira
 | ||||||
| 
 | 
 | ||||||
|   memset(_pagewin, 0, sizeof(_pagewin)); |   memset(_pagewin, 0, sizeof(_pagewin)); | ||||||
| @ -180,20 +180,22 @@ void TMask::init_mask(int mode) | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| TMask::TMask(const char* title, int pages, int cols, int rows, int xpos, | TMask::TMask(const char* title, int pages, int cols, int rows, int xpos, | ||||||
|              int ypos, int mode) |              int ypos) | ||||||
| { | { | ||||||
|   init_mask(mode); |   init_mask(); | ||||||
|   for (_pages = 0; _pages < pages; _pages++) |   for (_pages = 0; _pages < pages; _pages++) | ||||||
|     _pagewin[_pages] = create(xpos, ypos, cols, rows,   title, WSF_CLOSE, WD_MODAL); |     _pagewin[_pages] = create(xpos, ypos, cols, rows, title, WSF_CLOSE, WD_MODAL); | ||||||
|   set_win(NULL_WIN); |   set_win(NULL_WIN); | ||||||
|   add_buttons(); |   add_buttons(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| void TMask::read_mask(const char* name, int mode, int num) | void TMask::read_mask(const char* name, int num, int max) | ||||||
| { | { | ||||||
|   clock1 = clock(); |   clock1 = clock(); | ||||||
| 
 |    | ||||||
|  |   if (max <= 0) max = MAX_PAGES;            | ||||||
|  |    | ||||||
|   _source_file = name; |   _source_file = name; | ||||||
|   _source_file.ext(MASK_EXT); |   _source_file.ext(MASK_EXT); | ||||||
|   TScanner scanner(_source_file); |   TScanner scanner(_source_file); | ||||||
| @ -205,7 +207,7 @@ void TMask::read_mask(const char* name, int mode, int num) | |||||||
|       if (scanner.line() == "ENDMASK") break; |       if (scanner.line() == "ENDMASK") break; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   init_mask(mode); |   init_mask(); | ||||||
| 
 | 
 | ||||||
|   const CURSOR old = get_cursor(TASK_WIN); |   const CURSOR old = get_cursor(TASK_WIN); | ||||||
|   set_cursor(TASK_WIN, CURSOR_WAIT); |   set_cursor(TASK_WIN, CURSOR_WAIT); | ||||||
| @ -216,6 +218,8 @@ void TMask::read_mask(const char* name, int mode, int num) | |||||||
|     { |     { | ||||||
|       CHECKD(_pages < MAX_PAGES, "Maschera con troppe pagine: ", _pages); |       CHECKD(_pages < MAX_PAGES, "Maschera con troppe pagine: ", _pages); | ||||||
|       _pagewin[_pages++] = read_page(scanner, FALSE); |       _pagewin[_pages++] = read_page(scanner, FALSE); | ||||||
|  |       if (_pages >= max) | ||||||
|  |         break; | ||||||
|     } else |     } else | ||||||
|       if (scanner.key() == "TO") |       if (scanner.key() == "TO") | ||||||
|       { |       { | ||||||
| @ -270,10 +274,10 @@ void TMask::add_buttons() | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| TMask::TMask(const char* maskname, int mode, int num) | TMask::TMask(const char* maskname, int num, int max) | ||||||
| { | { | ||||||
|   if (maskname && *maskname) |   if (maskname && *maskname) | ||||||
|     read_mask(maskname, mode, num); |     read_mask(maskname, num, max); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -66,9 +66,9 @@ protected: | |||||||
|   virtual void start_run();             // called when the mask starts to run
 |   virtual void start_run();             // called when the mask starts to run
 | ||||||
|   virtual TMask_field* parse_field(TScanner& scanner); |   virtual TMask_field* parse_field(TScanner& scanner); | ||||||
| 
 | 
 | ||||||
|   void init_mask(int mode); |   void init_mask(); | ||||||
|   WINDOW read_page(TScanner& scanner, bool toolbar = FALSE); |   WINDOW read_page(TScanner& scanner, bool toolbar = FALSE); | ||||||
|   void read_mask(const char* name, int mode, int num); |   void read_mask(const char* name, int num, int max); | ||||||
|   void add_buttons(); |   void add_buttons(); | ||||||
| 
 | 
 | ||||||
|   int find_parent_page(const TMask_field&) const; |   int find_parent_page(const TMask_field&) const; | ||||||
| @ -85,11 +85,11 @@ protected: | |||||||
| public: | public: | ||||||
|   // @FPUB
 |   // @FPUB
 | ||||||
|   // crea leggendo descrizione da file .msk
 |   // crea leggendo descrizione da file .msk
 | ||||||
|   TMask(const char* name,  int mode = NO_MODE, int num = 0); |   TMask(const char* name, int num = 0, int max = MAX_PAGES); | ||||||
| 
 | 
 | ||||||
|   // crea mask vuota con parametri dati
 |   // crea mask vuota con parametri dati
 | ||||||
|   TMask(const char* title, int pages, int cols, int rows, int xpos = -1, |   TMask(const char* title, int pages, int cols, int rows, int xpos = -1, | ||||||
|         int ypos = -1, int mode = NO_MODE); |         int ypos = -1); | ||||||
| 
 | 
 | ||||||
|   virtual ~TMask(); |   virtual ~TMask(); | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1 +1 @@ | |||||||
| #define VERSION 1.15 | #define VERSION 1.16 | ||||||
|  | |||||||
| @ -438,7 +438,7 @@ _dirty (FALSE), _istemp (FALSE), _item (0), _line (256), _cur_line (-1), | |||||||
| _hotspots (4), _accept (TRUE) | _hotspots (4), _accept (TRUE) | ||||||
| { | { | ||||||
|   // open file & build index
 |   // open file & build index
 | ||||||
|   if (file == NULL) |   if (file == NULL || *file <= ' ') | ||||||
|   { |   { | ||||||
|     _filename.temp (); |     _filename.temp (); | ||||||
|     _istemp = TRUE; |     _istemp = TRUE; | ||||||
| @ -450,7 +450,7 @@ _hotspots (4), _accept (TRUE) | |||||||
| 
 | 
 | ||||||
|   if (_index == NULL || _instr == NULL) |   if (_index == NULL || _instr == NULL) | ||||||
|   { |   { | ||||||
|     error_box ("Impossibile aprire files temporanei"); |     yesnofatal_box ("Impossibile aprire files temporanei"); | ||||||
|     freeze (); |     freeze (); | ||||||
|   } |   } | ||||||
|   if (file != NULL) |   if (file != NULL) | ||||||
|  | |||||||
| @ -7,6 +7,7 @@ | |||||||
| #define ALIAS           AL | #define ALIAS           AL | ||||||
| #define BEGIN           BE | #define BEGIN           BE | ||||||
| #define BOOLEAN         BO | #define BOOLEAN         BO | ||||||
|  | #define BROWSEFILE      BR | ||||||
| #define BUTTON          BU | #define BUTTON          BU | ||||||
| #define CHECKTYPE       CH | #define CHECKTYPE       CH | ||||||
| #define COPY            CO | #define COPY            CO | ||||||
|  | |||||||
| @ -1,13 +1,14 @@ | |||||||
| #include <xvtility.h> | #include <browfile.h> | ||||||
| #include <colors.h> | #include <colors.h> | ||||||
| #include <config.h> | #include <config.h> | ||||||
| #include <defmask.h> | #include <defmask.h> | ||||||
| #include <execp.h> | #include <execp.h> | ||||||
| #include <mailbox.h>             | #include <mailbox.h>             | ||||||
| #include <utility.h> |  | ||||||
| #include <printapp.h> | #include <printapp.h> | ||||||
| #include <urldefid.h> | #include <urldefid.h> | ||||||
|  | #include <utility.h> | ||||||
| #include <viswin.h> | #include <viswin.h> | ||||||
|  | #include <xvtility.h> | ||||||
| 
 | 
 | ||||||
| #ifndef __PRINTER_H | #ifndef __PRINTER_H | ||||||
| typedef void (*LINKHANDLER) (int, const char *); | typedef void (*LINKHANDLER) (int, const char *); | ||||||
| @ -1823,7 +1824,7 @@ TViswin ::TViswin (const char *fname, | |||||||
|   if (title == NULL) |   if (title == NULL) | ||||||
|     title = (fname ? fname : "Anteprima di stampa"); |     title = (fname ? fname : "Anteprima di stampa"); | ||||||
| 
 | 
 | ||||||
|   _isopen = fname == NULL; |   _isopen = fname == NULL || *fname <= ' '; | ||||||
|   if (_isopen) |   if (_isopen) | ||||||
|     _filename = _txt.name (); |     _filename = _txt.name (); | ||||||
| 
 | 
 | ||||||
| @ -1931,3 +1932,53 @@ TViswin ::~TViswin () | |||||||
|     picture_free (_picture[i]); |     picture_free (_picture[i]); | ||||||
| #endif | #endif | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | ///////////////////////////////////////////////////////////
 | ||||||
|  | // Campo di visualizzazione sulle maschere
 | ||||||
|  | ///////////////////////////////////////////////////////////
 | ||||||
|  | 
 | ||||||
|  | // Certified 100%
 | ||||||
|  | TBrowsefile_field::TBrowsefile_field(TMask* m) | ||||||
|  | : TMask_field(m), _viswin(NULL) | ||||||
|  | {} | ||||||
|  | 
 | ||||||
|  | // Certified 100%
 | ||||||
|  | word TBrowsefile_field::class_id() const | ||||||
|  | { | ||||||
|  |   return CLASS_BROWSEFILE_FIELD; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // Certified 100%
 | ||||||
|  | TBrowsefile_field::~TBrowsefile_field() | ||||||
|  | { | ||||||
|  |   CHECK(_viswin, "Can't delete NULL sheet"); | ||||||
|  |   delete _viswin; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void TBrowsefile_field::parse_head(TScanner& scanner) | ||||||
|  | { | ||||||
|  |   _size  = scanner.integer(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // Certified 100%
 | ||||||
|  | bool TBrowsefile_field::parse_item(TScanner& scanner) | ||||||
|  | { | ||||||
|  |   if (scanner.key() == "FI") | ||||||
|  |   { | ||||||
|  |     _prompt = scanner.string(); | ||||||
|  |     return TRUE; | ||||||
|  |   } | ||||||
|  |   return TMask_field::parse_item(scanner); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // Certified 100%
 | ||||||
|  | void TBrowsefile_field::create(WINDOW parent) | ||||||
|  | { | ||||||
|  |   const TMask& m = mask(); | ||||||
|  |   _viswin = new TViswin(_prompt, _prompt, FALSE, FALSE, FALSE, _size, parent); | ||||||
|  |   _win = _viswin->win(); | ||||||
|  |   enable_window(_win, enabled()); | ||||||
|  |   show_window(_win, showed()); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user