campo-sirio/include/confapp.h

82 lines
2.4 KiB
C++
Executable File

#ifndef __CONFAPP_H
#define __CONFAPP_H
#ifndef __APPLICAT_H
#include <applicat.h>
#endif
#ifndef __CONFIG_H
#include <config.h>
#endif
#ifndef __MASK_H
#include <mask.h>
#endif
// le applicazioni di questo tipo servono a leggere - scrivere - modificare
// files di configurazione. La linea di comando e'
//
// <app> [-f <filename>] [-d] [<paragraph>, ...]
//
// dopo -f si dara' il nome file che si vuole editare, default e' CONFIG_FILE
// definito in config.h. Se si da' -d viene considerato quello relativo alla
// ditta corrente, che viene creato copiando il principale se non c'e'.
// Quindi si da' la lista dei paragrafi che si vuole editare; se non ne vengono
// dati sara' il modulo corrente preso dal nome dell'applicazione. Se si
// indicano piu' paragrafi questi vengono assegnati nell'ordine alle voci
// di menu (da mettere nell'URL) da 1 in poi. La maschera usata e' la
// EditMask specificata nel paragrafo; se non c'e', nothing happens
// Ogni modifica puo' essere controllata e porcessata con la postprocess_
// config (vedi sotto) che agisce come la change_config di application.
// La voce Scelta parametri di Application rimane come prima.
class TConfig_application : public TApplication
{
TArray _paragraphs;
int _which_config;
MENU_TAG _last_choice;
virtual bool create();
virtual bool destroy();
virtual bool menu(MENU_TAG);
void do_config(int m);
protected:
virtual bool user_create() { return TRUE; }
virtual bool user_destroy() { return TRUE; }
// questa viene chiamata prima della run() e ferma tutto se ritorna
// FALSE
virtual bool preprocess_config (TMask& mask, TConfig& config);
// questa viene chiamata dopo e blocca tutto se FALSE
virtual bool postprocess_config (TMask& mask, TConfig& config);
// questa e' come la change_config di application ma viene usata
// dalla maschera principale; le viene passato in piu' il paragrafo
// in corso di editing. E' chiamata per ogni parametro modificato
// Se ritorna FALSE la modifica non viene accettata; default ritorna
// TRUE e non rompe i bal
virtual bool postprocess_config_changed (const char* par, const char* var,
const char* oldv, const char* newv);
public:
TConfig_application(int which_config = CONFIG_GENERAL)
: _which_config(which_config)
{}
virtual ~TConfig_application()
{}
};
#endif