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