Modificato l'editor in modo che richieda il profilo alla fine di ogni
sessione di editing: aggiunta la voce a menu che automaticamente chiama la ask_profile(). Percio' e' stata spostata tutta la regione di codice che richiedeva il profilo. In piu' tale maschera di richiesta puo' essere impostata dall'applicazione (membro _m), poiche' nell'editor dei profili EC e' diversa. Modificata anche la edit(), in modo che funzioni in simbiosi col resto del programma. git-svn-id: svn://10.65.10.50/trunk@2037 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
		
							parent
							
								
									387fe9f9dd
								
							
						
					
					
						commit
						068c94d649
					
				
							
								
								
									
										132
									
								
								ba/ba2100.cpp
									
									
									
									
									
								
							
							
						
						
									
										132
									
								
								ba/ba2100.cpp
									
									
									
									
									
								
							@ -2,7 +2,7 @@
 | 
			
		||||
#include "ba2100.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
TForm_editor::TForm_editor() : _form(NULL), _extra(FALSE)
 | 
			
		||||
TForm_editor::TForm_editor() : _form(NULL), _extra(FALSE), _m(NULL)
 | 
			
		||||
{}
 | 
			
		||||
 | 
			
		||||
TForm_editor::~TForm_editor()
 | 
			
		||||
@ -30,81 +30,31 @@ bool TForm_editor::create()
 | 
			
		||||
        code = atol(argv(a));
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
  bool go = FALSE;
 | 
			
		||||
  
 | 
			
		||||
  enable_menu_item(M_FILE_PRINT);
 | 
			
		||||
  if ((form && code) || (form && code == 0 && _extra))
 | 
			
		||||
  {
 | 
			
		||||
    _form = new TForm(form, (code!=0) ? format("%05ld",code) : "", _extra ? 2 : 1);
 | 
			
		||||
    enable_menu_item(M_FILE_PRINT);
 | 
			
		||||
    if (!_extra) dispatch_e_menu(MENU_ITEM(31));
 | 
			
		||||
    if (!_extra) dispatch_e_menu(MENU_ITEM(13));
 | 
			
		||||
  } 
 | 
			
		||||
  else
 | 
			
		||||
  {  
 | 
			
		||||
    TMask m("ba2100b");
 | 
			
		||||
    dispatch_e_menu(MENU_ITEM(13));       
 | 
			
		||||
  
 | 
			
		||||
    m.set_handler(F_CODE, cod_handler);
 | 
			
		||||
  _m = new TMask("ba2100b");
 | 
			
		||||
  if (form)
 | 
			
		||||
  {
 | 
			
		||||
      m.set(F_BASE, form);
 | 
			
		||||
      m.disable(F_BASE);
 | 
			
		||||
    _m->set(F_BASE, form);
 | 
			
		||||
    _m->disable(F_BASE);
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
    if (code) m.set(F_CODE, code);
 | 
			
		||||
  if (code) _m->set(F_CODE, code);
 | 
			
		||||
  
 | 
			
		||||
    // choose form from mask 
 | 
			
		||||
    KEY k; 
 | 
			
		||||
    while ((k = m.run()) != K_QUIT)
 | 
			
		||||
    {
 | 
			
		||||
      TString16 fform = m.get(F_BASE);
 | 
			
		||||
      TString80 fdesc = m.get(F_DESC);
 | 
			
		||||
      long fcode = m.get_long(F_CODE); 
 | 
			
		||||
      
 | 
			
		||||
      if (k == K_ENTER)
 | 
			
		||||
      {
 | 
			
		||||
        _form = new TForm(fform, (fcode!=0) ? format("%05ld",fcode) : "", _extra ? 2 :1, fdesc);    
 | 
			
		||||
        form = fform;
 | 
			
		||||
        go  = TRUE;
 | 
			
		||||
        break;
 | 
			
		||||
      }            
 | 
			
		||||
      else if (k == K_DEL)
 | 
			
		||||
      {
 | 
			
		||||
        if (yesno_box("Confermare la cancellazione del profilo %05ld", fcode))
 | 
			
		||||
        { 
 | 
			
		||||
          TLocalisamfile frm(LF_FORM);
 | 
			
		||||
          frm.zero(); 
 | 
			
		||||
          frm.put("TIPOPROF", fform);
 | 
			
		||||
          frm.put("CODPROF",  format("%05ld",fcode));
 | 
			
		||||
          if (frm.read() == NOERR)
 | 
			
		||||
            frm.remove();
 | 
			
		||||
          TLocalisamfile rfr(LF_RFORM);
 | 
			
		||||
          rfr.zero(); 
 | 
			
		||||
          rfr.put("TIPOPROF", fform);
 | 
			
		||||
          rfr.put("CODPROF",  format("%05ld",fcode));
 | 
			
		||||
          if (rfr.read() == NOERR)
 | 
			
		||||
          {
 | 
			
		||||
            for ( ; atol(rfr.get("CODPROF")) == fcode && rfr.get("TIPOPROF") == fform; rfr.next())
 | 
			
		||||
              rfr.remove();
 | 
			
		||||
          }
 | 
			
		||||
          m.set(F_CODE,"");
 | 
			
		||||
          m.set(F_BASE,"");
 | 
			
		||||
          m.set(F_DESC,"");
 | 
			
		||||
        }
 | 
			
		||||
      }                                                        
 | 
			
		||||
    }   
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
  if (go)
 | 
			
		||||
  {
 | 
			
		||||
    enable_menu_item(M_FILE_PRINT);
 | 
			
		||||
    if (!_extra) dispatch_e_menu(MENU_ITEM(31));       
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
  return form != NULL;
 | 
			
		||||
  return TRUE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool TForm_editor::destroy()
 | 
			
		||||
{
 | 
			
		||||
  if (_form) delete _form;
 | 
			
		||||
  if (_m)    delete _m;
 | 
			
		||||
  return TApplication::destroy();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -113,6 +63,7 @@ bool TForm_editor::menu(MENU_TAG tag)
 | 
			
		||||
{
 | 
			
		||||
  char sec = 'B';
 | 
			
		||||
  pagetype pt = odd_page;
 | 
			
		||||
  bool quit = FALSE; 
 | 
			
		||||
  
 | 
			
		||||
  switch(tag)
 | 
			
		||||
  {
 | 
			
		||||
@ -120,6 +71,9 @@ bool TForm_editor::menu(MENU_TAG tag)
 | 
			
		||||
    sec = 'R'; pt = odd_page; break;
 | 
			
		||||
  case MENU_ITEM(12): 
 | 
			
		||||
    sec = 'D'; pt = odd_page; break;
 | 
			
		||||
  case MENU_ITEM(13):
 | 
			
		||||
    quit = ask_profile();
 | 
			
		||||
    sec = 'B'; pt = odd_page; break;
 | 
			
		||||
  case MENU_ITEM(21): 
 | 
			
		||||
    sec = 'H'; pt = odd_page; break;
 | 
			
		||||
  case MENU_ITEM(22): 
 | 
			
		||||
@ -156,8 +110,8 @@ bool TForm_editor::menu(MENU_TAG tag)
 | 
			
		||||
    break;
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
  edit(sec, pt);
 | 
			
		||||
  return _extra;
 | 
			
		||||
  if (!quit) edit(sec, pt);
 | 
			
		||||
  return TRUE;
 | 
			
		||||
} 
 | 
			
		||||
 | 
			
		||||
void TForm_editor::print()
 | 
			
		||||
@ -338,6 +292,7 @@ bool TForm_editor::edit(char s, pagetype t)
 | 
			
		||||
      _form->write_profile();
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
  if (!_extra) dispatch_e_menu(MENU_ITEM(13));
 | 
			
		||||
  return dirty;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -397,6 +352,59 @@ bool TForm_editor::form_config() const
 | 
			
		||||
  return ok;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool TForm_editor::ask_profile()
 | 
			
		||||
{
 | 
			
		||||
  
 | 
			
		||||
  _m->set_handler(F_CODE, cod_handler);
 | 
			
		||||
  
 | 
			
		||||
  // choose form from mask 
 | 
			
		||||
  KEY k; 
 | 
			
		||||
  while ((k = _m->run()) != K_QUIT)
 | 
			
		||||
  {
 | 
			
		||||
    TString16 fform = _m->get(F_BASE);
 | 
			
		||||
    TString80 fdesc = _m->get(F_DESC);
 | 
			
		||||
    long fcode = _m->get_long(F_CODE); 
 | 
			
		||||
    
 | 
			
		||||
    if (k == K_ENTER)
 | 
			
		||||
    {
 | 
			
		||||
      if (_form != NULL) delete _form;
 | 
			
		||||
      _form = new TForm(fform, (fcode!=0) ? format("%05ld",fcode) : "", _extra ? 2 :1, fdesc);    
 | 
			
		||||
      break;
 | 
			
		||||
    }            
 | 
			
		||||
    else if (k == K_DEL)
 | 
			
		||||
    {
 | 
			
		||||
      if (yesno_box("Confermare la cancellazione del profilo %05ld", fcode))
 | 
			
		||||
      { 
 | 
			
		||||
        TLocalisamfile frm(LF_FORM);
 | 
			
		||||
        frm.zero(); 
 | 
			
		||||
        frm.put("TIPOPROF", fform); 
 | 
			
		||||
        if (fcode != 0 )
 | 
			
		||||
          frm.put("CODPROF",  format("%05ld",fcode));
 | 
			
		||||
        if (frm.read() == NOERR)
 | 
			
		||||
          frm.remove();
 | 
			
		||||
        TLocalisamfile rfr(LF_RFORM);
 | 
			
		||||
        rfr.zero(); 
 | 
			
		||||
        rfr.put("TIPOPROF", fform);
 | 
			
		||||
        rfr.put("CODPROF",  format("%05ld",fcode));
 | 
			
		||||
        if (rfr.read() == NOERR)
 | 
			
		||||
        {
 | 
			
		||||
          for ( ; atol(rfr.get("CODPROF")) == fcode && rfr.get("TIPOPROF") == fform; rfr.next())
 | 
			
		||||
            rfr.remove();
 | 
			
		||||
        }
 | 
			
		||||
        _m->set(F_CODE,"");
 | 
			
		||||
        _m->set(F_BASE,"");
 | 
			
		||||
        _m->set(F_DESC,"");
 | 
			
		||||
      }
 | 
			
		||||
    }                                                        
 | 
			
		||||
  }
 | 
			
		||||
  if (k == K_QUIT)
 | 
			
		||||
  {
 | 
			
		||||
    dispatch_e_menu(M_FILE_QUIT);   
 | 
			
		||||
    return TRUE;
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
  return FALSE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ba2100(int argc, char* argv[])
 | 
			
		||||
{                                             
 | 
			
		||||
 | 
			
		||||
@ -10,6 +10,7 @@
 | 
			
		||||
class TForm_editor : public TApplication
 | 
			
		||||
{
 | 
			
		||||
  TForm* _form; 
 | 
			
		||||
  TMask* _m;
 | 
			
		||||
  bool _extra;
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
@ -23,6 +24,7 @@ protected:
 | 
			
		||||
  
 | 
			
		||||
  bool& extra() { return _extra;}
 | 
			
		||||
  void set_form(TForm * f) { _form = f; }
 | 
			
		||||
  bool ask_profile();
 | 
			
		||||
  bool edit_relation();
 | 
			
		||||
  bool edit(char s, pagetype p);
 | 
			
		||||
  bool form_config() const;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user