Files correlati : ba0.exe Ricompilazione Demo : [ ] Commento : 0000959: Icone lancio programmi Invece di utlizzare la stessa icona (quella di campo enterprise) per tutti i pgm è possibile utlizzarne una diversa in base alla tipologia (esempio Gestione, eleaborazione stampa). Allego tre icone, libreria icone (per estrarre le icone dalla librerira si può usare e-ICON). git-svn-id: svn://10.65.10.50/trunk@17593 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			176 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			176 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
| #ifndef __BA0101_H
 | |
| #define __BA0101_H
 | |
| 
 | |
| #ifndef __ASSOC_H
 | |
| #include <assoc.h>
 | |
| #endif
 | |
| 
 | |
| #ifndef __COLORS_H
 | |
| #include <colors.h>
 | |
| #endif
 | |
| 
 | |
| #ifndef __IMAGE_H
 | |
| #include <image.h>
 | |
| #endif
 | |
| 
 | |
| #ifndef __SCANNER_H
 | |
| #include <scanner.h>
 | |
| #endif
 | |
| 
 | |
| #ifndef __STACK_H
 | |
| #include <stack.h>
 | |
| #endif
 | |
| 
 | |
| 
 | |
| class TSubmenu;
 | |
| class TMenu;
 | |
| 
 | |
| class TMenuitem : public TObject
 | |
| {                       
 | |
|   TSubmenu* _submenu;
 | |
|   TString _caption, _action;
 | |
| 	int _icon;
 | |
|   char _type;
 | |
|   
 | |
|   char _exist				: 2;  
 | |
|   char _enabled			: 2; 
 | |
|   char _firm				:	2;
 | |
|   char _password		:	2;
 | |
|   char _reloadmenu	: 2;
 | |
|   char _fullscreen	: 2;
 | |
| 
 | |
| protected:
 | |
|   bool perform_submenu() const;
 | |
|   bool perform_program() const;
 | |
|   
 | |
| public:
 | |
|   virtual bool ok() const { return _caption.full(); }
 | |
|                                                          
 | |
|   const TString& caption() const { return _caption; }
 | |
| 	int icon() const;
 | |
|   const TString& action() const { return _action; }
 | |
|   bool enabled() const;
 | |
|   bool disabled() const { return !enabled(); }
 | |
|   
 | |
|   bool is_submenu() const { return _type == '[' && _action.full(); }
 | |
|   bool is_program() const { return _type != '[' && _action.full(); }
 | |
|   bool perform() const;
 | |
|   bool run_modal() const;
 | |
|   bool run_fullscreen() const;
 | |
| 
 | |
|   TSubmenu& submenu() const { return *_submenu; }
 | |
|   TMenu& menu() const;
 | |
|   
 | |
|   bool create(const char* t);
 | |
|   
 | |
|   TMenuitem(TSubmenu* sm);
 | |
|   TMenuitem(const TMenuitem& mi);
 | |
|   virtual ~TMenuitem() { }
 | |
| };
 | |
| 
 | |
| class TSubmenu : public TObject
 | |
| { 
 | |
|   TMenu*     _menu;                           
 | |
|   TString    _name;
 | |
|   TString    _caption;
 | |
|   TFilename  _picture;
 | |
|   TArray     _items;
 | |
|   bool       _enabled : 2;
 | |
|   bool       _firm : 2;
 | |
| 
 | |
| public:               
 | |
|   void read(TScanner& scanner);
 | |
|   
 | |
|   TMenu& menu() const { return *_menu; }
 | |
|   int find_string(const TString& str) const;
 | |
|                                                           
 | |
|   TMenuitem& item(int i) { return (TMenuitem&)_items[i]; }
 | |
|   const TMenuitem& item(int i) const { return (const TMenuitem&)_items[i]; }                                                          
 | |
|   const TMenuitem& operator[](int i) const { return item(i); }
 | |
|   int find(const TMenuitem& mi) const;
 | |
| 
 | |
|   void destroy_items() { _items.destroy(); }
 | |
|   void add(TMenuitem* mi) { _items.add(mi); }
 | |
|   
 | |
|   const TString& name() const { return _name; }
 | |
|   const TString& caption() const { return _caption; }
 | |
|   const TString& picture() const { return _picture; }
 | |
|   int items() const { return _items.items(); }
 | |
| 
 | |
|   TImage& image() const;
 | |
| 
 | |
|   bool query_firm() const { return _firm; }
 | |
|   bool enabled() const { return _enabled; }
 | |
|   bool disabled() const { return !enabled(); }
 | |
|   
 | |
|   bool perform(int i);
 | |
|   
 | |
|   TSubmenu(TMenu* menu, const char* name);
 | |
|   virtual ~TSubmenu() { }
 | |
| };
 | |
| 
 | |
| class TMenu : public TAssoc_array
 | |
| {
 | |
|   TSubmenu* _current;
 | |
|   int _item;      
 | |
|   TStack _stack;
 | |
|   
 | |
|   TFilename _default_bmp;
 | |
|   TString _default_menu;
 | |
|   
 | |
|   TAssoc_array _images;
 | |
| 
 | |
|   TToken_string _dangerous;
 | |
| 
 | |
| 	TString _last_search;
 | |
| 	TAssoc_array _ignore_list;
 | |
|   int _mask_mode;
 | |
| 
 | |
| public: // TObject
 | |
|   virtual bool ok() const { return _current != NULL; }
 | |
| 
 | |
| public:                                  
 | |
|   bool read(const char* name);                     // First call
 | |
|   bool read(const char* name, TString& root);
 | |
|   
 | |
|   TSubmenu& current() const { return *_current; }
 | |
|   TSubmenu* find(const char* name) const { return (TSubmenu*)objptr(name); }
 | |
|   bool set_firm(long firm) const;
 | |
|   bool jumpto(TSubmenu *next);
 | |
|   bool jumpto_root();
 | |
| 
 | |
|   TSubmenu& pop();
 | |
|   bool at_top() const { return _stack.count() == 0; }
 | |
|   
 | |
|   void select(int i) { _item = i; }
 | |
|   int selected() const { return _item; }
 | |
|   TMenuitem& curr_item() { return _current->item(_item); }
 | |
|   TSubmenu* find_parent(const TSubmenu& sub);
 | |
|   
 | |
|   bool perform();
 | |
|   TSubmenu* find_string(const TString& str);
 | |
| 	TString& last_search_string() { return _last_search; }
 | |
| 	TAssoc_array& search_ignore_list() { return _ignore_list; }
 | |
|   
 | |
|   TImage& image(const char* name);
 | |
|   void reload_images();
 | |
|   
 | |
|   bool has_module(const char* mod);
 | |
|   bool is_dangerous(const char* mod);
 | |
| 
 | |
|   void set_dangerous_modules(const TToken_string& mod)
 | |
|   { _dangerous = mod; }
 | |
| 
 | |
|   void set_mask_mode(int mm) { _mask_mode = mm; }
 | |
|   int mask_mode() const { return _mask_mode; }
 | |
|   
 | |
|   TMenu();
 | |
|   virtual ~TMenu();
 | |
| };        
 | |
| 
 | |
| void set_installing_flag();
 | |
| bool installing();
 | |
| bool is_tassan();
 | |
| 
 | |
| #endif
 |