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:
parent
14e8270b50
commit
790cd0ba43
55
ba/ba0.cpp
55
ba/ba0.cpp
@ -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));
|
||||
|
Loading…
x
Reference in New Issue
Block a user