From 790cd0ba43c1126a98e3221b5936df240e04974b Mon Sep 17 00:00:00 2001 From: guy Date: Tue, 8 Jul 1997 13:01:48 +0000 Subject: [PATCH] Corretto caricamento menu esterni a quelo principale git-svn-id: svn://10.65.10.50/trunk@4848 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ba/ba0.cpp | 55 +++++++++++++++++++++++++----------------------------- 1 file changed, 25 insertions(+), 30 deletions(-) diff --git a/ba/ba0.cpp b/ba/ba0.cpp index f206aa586..1a6ceb996 100755 --- a/ba/ba0.cpp +++ b/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));