campo-sirio/ba/ba0101.h
alex d030bbabe2 Patch level : 4.0 667
Files correlati     :
Ricompilazione Demo : [ ]
Commento            :

Riportata la versione 3.1 patch 766


git-svn-id: svn://10.65.10.50/trunk@14628 c028cbd2-c16b-5b4b-a496-9718f37d4682
2006-12-13 16:22:33 +00:00

174 lines
4.1 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;
COLOR _color;
char _exist : 2;
char _enabled : 2;
char _firm : 2;
char _password : 2;
char _reloadmenu : 2;
protected:
bool perform_submenu() const;
bool perform_program() const;
public:
virtual bool ok() { return _caption.not_empty(); }
const TString& caption() const { return _caption; }
int icon() const;
const TString& action() const { return _action; }
bool enabled() const;
bool disabled() const { return !enabled(); }
COLOR color() const { return enabled() ? _color : DISABLED_COLOR; }
bool is_submenu() const { return _type == '[' && _action.not_empty(); }
bool is_program() const { return _type != '[' && _action.not_empty(); }
bool perform() 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;
protected:
bool can_be_transparent(const TImage& i) const;
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; }
TMenu();
virtual ~TMenu();
};
bool sys_dll_changed();
#endif