Corretto caricamento menu esterni a quelo principale

git-svn-id: svn://10.65.10.50/trunk@4848 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1997-07-08 13:01:48 +00:00
parent 14e8270b50
commit 790cd0ba43

View File

@ -438,7 +438,6 @@ public:
class TMenu : public TAssoc_array
{
TString _last_read;
TSubmenu* _current;
int _item;
TStack _stack;
@ -446,8 +445,8 @@ class TMenu : public TAssoc_array
TAssoc_array _images;
public:
void read(const char* name);
const TString& last_read() const { return _last_read; }
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); }
@ -501,8 +500,9 @@ void TMenuitem::create(const char* t)
if (_type == '<')
{
menu().read(_action);
_action = menu().last_read();
if (_action.find('.') < 0)
_action << ".men";
menu().read(_action, _action);
_type = '[';
if (_action.empty())
_enabled = FALSE;
@ -719,13 +719,12 @@ bool TSubmenu::perform(int i)
return ok;
}
void TMenu::read(const char* name)
bool TMenu::read(const char* name, TString& root)
{
_last_read.cut(0);
bool first = TRUE;
TScanner scanner(name);
TString str;
bool first = TRUE;
TScanner scanner(name);
while (scanner.ok())
{
const TString& line = first ? scanner.line() : scanner.pop();
@ -737,7 +736,7 @@ void TMenu::read(const char* name)
if (first)
{
_last_read = str;
root = str;
first = FALSE;
}
@ -746,15 +745,24 @@ void TMenu::read(const char* name)
TSubmenu* mnu = new TSubmenu(this, str);
mnu->read(scanner);
add(str, mnu);
if (_current == NULL)
{
_current = mnu;
_item = 0;
}
}
else
break; // Menu gia' caricato!
}
return first == FALSE;
}
bool TMenu::read(const char* name)
{
TString root;
bool ok = read(name, root);
if (ok && _current == NULL)
{
_current = find(root);
_item = 0;
}
return ok;
}
bool TMenu::jumpto(TSubmenu* next)
@ -856,7 +864,6 @@ void TMenu::reload_images()
i.load(name);
i.convert_transparent_color(MASK_BACK_COLOR);
}
}
///////////////////////////////////////////////////////////
@ -1241,19 +1248,7 @@ bool TMenu_application::check_user()
#if XVT_OS == XVT_OS_WIN
if (ok && utente != "PRASSI")
{
/*
TDDE dde;
if (dde.initiate("PROGMAN", "PROGMAN"))
{
dde.execute("[ReplaceItem(PR.A.S.S.I.)]");
TString cmd(80);
cmd << "[AddItem(" << argv(0) << " /u" << utente << ",PR.A.S.S.I.)]";
dde.execute(cmd);
}
*/
WritePrivateProfileString("User", "Name", utente, "prassi.ini");
}
#endif
return ok;
@ -1272,7 +1267,7 @@ bool TMenu_application::create()
TScanner scanner("prassi.aut");
for (int aut = 0; scanner.line() != ""; aut++)
_modules.add(scanner.token());
_menu.read("prassi.men");
dispatch_e_menu(MENU_ITEM(1));