2003-01-28 14:27:05 +00:00
|
|
|
#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;
|
2004-03-31 12:48:16 +00:00
|
|
|
|
|
|
|
char _exist : 2;
|
|
|
|
char _enabled : 2;
|
|
|
|
char _firm : 2;
|
|
|
|
char _password : 2;
|
|
|
|
char _reloadmenu : 2;
|
2008-06-16 10:08:10 +00:00
|
|
|
char _fullscreen : 2;
|
2003-01-28 14:27:05 +00:00
|
|
|
|
|
|
|
protected:
|
|
|
|
bool perform_submenu() const;
|
|
|
|
bool perform_program() const;
|
|
|
|
|
|
|
|
public:
|
2008-11-11 16:19:47 +00:00
|
|
|
virtual bool ok() const { return _caption.full(); }
|
2003-01-28 14:27:05 +00:00
|
|
|
|
|
|
|
const TString& caption() const { return _caption; }
|
|
|
|
int icon() const;
|
|
|
|
const TString& action() const { return _action; }
|
|
|
|
bool enabled() const;
|
|
|
|
bool disabled() const { return !enabled(); }
|
|
|
|
|
2008-05-22 13:40:40 +00:00
|
|
|
bool is_submenu() const { return _type == '[' && _action.full(); }
|
|
|
|
bool is_program() const { return _type != '[' && _action.full(); }
|
2003-01-28 14:27:05 +00:00
|
|
|
bool perform() const;
|
2008-05-22 13:40:40 +00:00
|
|
|
bool run_modal() const;
|
2008-06-16 10:08:10 +00:00
|
|
|
bool run_fullscreen() const;
|
2003-01-28 14:27:05 +00:00
|
|
|
|
|
|
|
TSubmenu& submenu() const { return *_submenu; }
|
|
|
|
TMenu& menu() const;
|
|
|
|
|
2006-12-13 16:22:33 +00:00
|
|
|
bool create(const char* t);
|
2003-01-28 14:27:05 +00:00
|
|
|
|
|
|
|
TMenuitem(TSubmenu* sm);
|
2003-10-14 13:44:01 +00:00
|
|
|
TMenuitem(const TMenuitem& mi);
|
2003-01-28 14:27:05 +00:00
|
|
|
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); }
|
2003-10-14 13:44:01 +00:00
|
|
|
int find(const TMenuitem& mi) const;
|
|
|
|
|
|
|
|
void destroy_items() { _items.destroy(); }
|
|
|
|
void add(TMenuitem* mi) { _items.add(mi); }
|
2003-01-28 14:27:05 +00:00
|
|
|
|
|
|
|
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;
|
2008-01-31 14:19:39 +00:00
|
|
|
int _mask_mode;
|
2003-01-28 14:27:05 +00:00
|
|
|
|
|
|
|
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); }
|
2003-10-20 13:12:34 +00:00
|
|
|
bool set_firm(long firm) const;
|
2003-01-28 14:27:05 +00:00
|
|
|
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; }
|
2008-01-31 14:19:39 +00:00
|
|
|
|
|
|
|
void set_mask_mode(int mm) { _mask_mode = mm; }
|
|
|
|
int mask_mode() const { return _mask_mode; }
|
2003-01-28 14:27:05 +00:00
|
|
|
|
2003-05-26 13:00:26 +00:00
|
|
|
TMenu();
|
|
|
|
virtual ~TMenu();
|
2003-01-28 14:27:05 +00:00
|
|
|
};
|
|
|
|
|
2007-05-09 12:50:42 +00:00
|
|
|
void set_installing_flag();
|
|
|
|
bool installing();
|
2008-10-29 11:59:47 +00:00
|
|
|
bool is_tassan();
|
2003-01-28 14:27:05 +00:00
|
|
|
|
|
|
|
#endif
|