campo-sirio/ce/ce0400.cpp
alex eb2b326a11 Patch level : 2.2 23
Files correlati     :
Ricompilazione Demo : [ ]
Commento            :

Riportate le modifiche dalla versione 2.1 222

Si puo cominciare a fare il primo CD


git-svn-id: svn://10.65.10.50/trunk@12708 c028cbd2-c16b-5b4b-a496-9718f37d4682
2005-02-17 18:13:12 +00:00

145 lines
3.5 KiB
C++
Executable File

#include <automask.h>
#include <confapp.h>
#include <lffiles.h>
#include <prefix.h>
#include <sheet.h>
#include "ce0400a.h"
//------------------------------------------------------
// Maschera di configurazione
//------------------------------------------------------
class TConfig_mask : public TAutomask
{
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
public:
TConfig_mask() : TAutomask("ce0400a") { }
};
bool TConfig_mask::on_field_event(TOperable_field& f, TField_event e, long jolly)
{
switch (f.dlg())
{
case F_NAME_USER:
if (e == fe_button)
{
//crea lo sheet con i campi del .trr
TArray_sheet sht(-1,-1,-4,-4,TR("Parametri campi"),HR("Nome@10R|Tipo|Lunghezza|Decimali"));
const RecDes& rd = prefix().get_recdes(LF_CESPI);
for (int i = 0; i < rd.NFields; i++)
{
const RecFieldDes& rfd = rd.Fd[i];
TToken_string row;
//deve aggiungere solo i campi il cui nome comincia per "_"
if (rfd.Name[0] == '_')
{
row.add(rfd.Name); //nome campo
row.add(rfd.TypeF); //tipo
row.add(rfd.Len);//lunghezza
row.add(rfd.Dec);//decimali
sht.add(row);
}
}
if (sht.items() > 0)
{
if (sht.run() == K_ENTER)
f.set(sht.row(-1).get(0));
}
else
return error_box(TR("Non ci sono campi personalizzati"));
}
if (e == fe_init || e == fe_modify)
{
}
break;
default: break;
}
return true;
}
//------------------------------------------------------
// Applicazione
//------------------------------------------------------
class TCespi_config_app : public TConfig_application
{
TConfig_mask* _mask;
protected:
virtual const char* get_mask_name() const { return "ce0400a"; }
TMask* create_mask(const TFilename& f);
virtual TMask* get_mask();
public:
virtual void load_mask();
virtual void save_mask(bool tosave);
TCespi_config_app();
};
TMask* TCespi_config_app::create_mask(const TFilename& f)
{
if (_mask == NULL)
_mask = new TConfig_mask;
return _mask;
}
TMask* TCespi_config_app::get_mask()
{
if (_mask == NULL)
{
const TFilename name = get_mask_name();
create_mask(name);
}
return _mask;
}
//carica i valori dal ditta.ini nello sheet della maschera
void TCespi_config_app::load_mask()
{
TConfig_application::load_mask(); //chiama la load_mask() standard dei TConfig per caricare i campi != sheet
TConfig& config = *get_config(); //si carica il config della load_mask
TSheet_field& sf = get_mask()->sfield(F_USER);
for (int i = 0; config.exist("USER", i); i++)
sf.row(i) = config.get("USER", NULL, i);
}
//registra i valori dello sheet nel ditta.ini
void TCespi_config_app::save_mask(bool tosave)
{
TConfig* config = get_config();
if (config == NULL)
return;
TConfig_application::save_mask(tosave);
//svuota il paragrafo sul .ini prima di ricompilarlo (se non si facesse
//non si riuscirebbero ad ammazzare le righe sul .ini
for (int i = 0; config->exist("USER", i); i++)
config->remove("USER", i);
TSheet_field& sf = get_mask()->sfield(F_USER);
FOR_EACH_SHEET_ROW (sf, j, row)
{
config->set("USER", *row, "ce", true, j);
}
}
TCespi_config_app::TCespi_config_app() : TConfig_application(CONFIG_DITTA), _mask(NULL)
{ }
int ce0400 (int argc, char* argv[])
{
TCespi_config_app appc;
appc.run(argc, argv, TR("Parametri Ditta"));
return 0;
}