#ifndef __APPLICATION_H #define __APPLICATION_H #ifndef INCL_XVTH #include #endif #ifndef __STRINGS_H #include #endif #define MSG_AI "AI" // message auto_insert (relapp) #define MSG_FS "FS" // message filtered start (relapp) #define MSG_LN "LN" // message link (printapp -> relapp) #define MSG_ED "ED" // message edit (maskfld -> relapp) #define CHK_ALL -1 // all authorization checks #define CHK_DONGLE 0 // dongle authorization checks #define CHK_USER 1 // user authorization checks // @doc EXTERNAL // @class TApplication | Classe per la gestione di tutte le applicazioni PRASSI class TApplication // @author:(INTERNAL) Guido // @access:(INTERNAL) Private Member { // @cmember:(INTERNAL) Identificatore del menu' legato all'applicazione int _bar; // @cmember:(INTERNAL) Numero di argomenti passati all'applicazione int __argc; // @cmember:(INTERNAL) Array di argomenti passati all'applicazione const char** __argv; // @cmember:(INTERNAL) Array di autorizzazione concessa della chiavi TBit_array _dongle_aut; // @cmember:(INTERNAL) Array di autorizzazione concessa all'utente TBit_array _user_aut; // @cmember:(INTERNAL) Nome dell'applicazione TString80 _name; // @cmember:(INTERNAL) Titolo della finestra TString80 _title; // @cmember:(INTERNAL) Codice della ditta long _savefirm; // @cmember:(INTERNAL) Indica se l'applicazione e' stata creata con successo bool _create_ok; // @cmember:(INTERNAL) Handle del modulo del programma di cui si sta attendendo la fine word _waiting; // @cmember:(INTERNAL) Termine dell'applicazione void terminate(); // @cmember:(INTERNAL) Cambia il cursore del mouse void set_cursor(bool w); // @cmember:(INTERNAL) Gestisce le voci di configurazione bool config(); // @cmember:(INTERNAL) About box: risposta alla opzione Informazioni del menu File void about() const; // @access Protected Member protected: // @cmember Ritorna il nome del modulo dell'applicazione const char* get_module_name() const; // @cmember Event handler della finestra principale del programma static long XVT_CALLCONV1 task_eh(WINDOW win, EVENT* ep); // @cmember Handler degli eventi della finestra principale, chiamato da virtual long handler(WINDOW win, EVENT* ep); // @cmember Estende il dialog box della set_firm virtual bool extended_firm() const { return FALSE; } // @cmember Indica se si intendono usare i files DBF virtual bool use_files() const { return TRUE; } // @cmember Inizilizzazzioni di bassissimo livello virtual bool pre_create() { return TRUE; } // @cmember Crea la finestra principale virtual bool create(); // @cmember Controlla il menu' virtual bool menu(MENU_TAG) { return TRUE; } // @cmember Chiamata ogni volta che viene cambiata una ditta virtual bool build_firm_data(long cod, bool flagcom = FALSE) { return TRUE;} // @cmember Rimuove l'applicazione virtual bool destroy(); // @cmember Chiamata ogni volta che l'utente usa il menu Cambia Parametri virtual void on_config_change(); // @cmember Chiamata ogni volta che l'utente cambia ditta virtual void on_firm_change(); // @cmember Setta i permessi di utilizzo dei moduli void set_perms(); // @access Public Member public: // @cmember Modifca la barra dei menu' inserendo la

void setbar(int menubar) { _bar = menubar;} // @cmember Fa partire l'applicazione void run(int argc, char* argv[], const char* name); // @cmember Ritorna l'identificatore della classe virtual word class_id() const { return CLASS_APPLICATION; } // @cmember Controlla se si tratta di una applicazione valida virtual bool ok() const { return _create_ok; } // @cmember Risposta alla selezione Stampa del menu File virtual void print(); // @cmember Controlla se al programma corrente e' concesso cambiare ditta da menu. virtual bool firm_change_enabled() const; // @cmember Ritorna la con la lista dei moduli cui appartiene il programma virtual const char * extra_modules() const {return "";} // @cmember Forza la chiusura dell'applicazione void stop_run(); // @cmember Mette il segno Check a fianco di una voce di menu void check_menu_item(MENU_TAG item); // @cmember Toglie il segno Check a fianco di una voce di menu void uncheck_menu_item(MENU_TAG item); // @cmember Permette di abilitare/disabilitare una voce di menu' void enable_menu_item(MENU_TAG item, bool on = TRUE); // @cmember Permette di disabilitare una voce di menu' (chiama ) void disable_menu_item(MENU_TAG item) { enable_menu_item(item, FALSE); } // @cmember Simula la selezione di una voce di menu void dispatch_e_menu(MENU_TAG item); // @cmember Ritorna il nome dell'applicazione const TString& name() const { return _name; } // @cmember Ritorna l'array di parametri da passare all'applicazione const char** argv() const { return __argv; } // @cmember Ritroan il parametro

-esimo da passare all'applicazione const char* argv(int i) const { return __argv[i]; } // @cmember Ritorna il numero di paramentri da passare all'applicazione int argc() const { return __argc; } // @cmember Setta il titolo da assegnare all'applicazione void set_title(const char* t) { _title = t; } // @cmember Ritorna il titolo da assegnare all'applicazione const TString& title() const { return _title; } // @cmember static void | check_parameters | int & argc, char *argv[] | // Legge il parametro /uUTENTE e lo toglie dalla lista static void check_parameters(int& argc, char *argv[]); // @cmember Controlla se il modulo

ha l'autorizzazione all'esecuzione bool has_module(int module, int checktype = CHK_ALL) const; // @cmember Setta la ditta corrente (Ritorna se ce l'ha fatta) bool set_firm(long cod = -1); // @cmember Ritorna la ditta corrente long get_firm() const; // @cmember Ritorna la directory in cui si trovano i dati della ditta corrente const char* get_firm_dir() const; // @cmember Attende la fine del modulo con handle

void wait_for(word taskid) { _waiting = taskid; } // @cmember Interrompe lo stato di attesa void wake_up() { _waiting = 0xFFFF; } // @cmember Ritorna l'handle del task di cui l'applicazione e' in attesa word waiting() const { return _waiting; } // @cmember Setta il cursore a clessidra void begin_wait(); // @cmember Setta il cursore standard void end_wait(); // @cmember Interfaccia runtime del menu' della finestra principale??? bool add_menu(TString_array& menu, MENU_TAG id = 0); // @cmember Elimina il menu'

(Ritorna se ce l'ha fatta???) bool remove_menu(MENU_TAG id); // @cmember Costruttore TApplication(); // @cmember Distruttore virtual ~TApplication(); }; bool xvt_running(); TApplication& main_app(); #endif /* __APPLICATION_H */