diff --git a/ba/ba0100.cpp b/ba/ba0100.cpp index 2a020dd7c..d1e8380e9 100755 --- a/ba/ba0100.cpp +++ b/ba/ba0100.cpp @@ -89,6 +89,7 @@ protected: bool copy_setup(const TString& remote_path); public: + TTree_field& tree_field() const; void select_tree_current(); static bool tree_find_handler(TMask_field& f, KEY k); static bool tree_shrink_handler(TMask_field& f, KEY k); @@ -150,7 +151,7 @@ void TPicture_mask::update() if (tree_view) // TreeView == 1 { - RCT rctree; field(DLG_TREE).get_rect(rctree); + RCT rctree; tfield(DLG_TREE).get_rect(rctree); const int maxx = client.right - rctree.right - 2 * CHARX; const int maxy = client.bottom - 10 * ROWY; @@ -224,6 +225,7 @@ bool TPicture_mask::on_key(KEY k) case K_F8: set(DLG_USER, app().main_menu().last_search_string(), true); return true; +/* Obsoleto coi nuovi alberi case K_ENTER: case K_UP: case K_DOWN: @@ -235,6 +237,7 @@ bool TPicture_mask::on_key(KEY k) return tf.win().on_key(k); } break; +*/ default: break; } @@ -840,7 +843,6 @@ int TMenu_application::do_level() const TSubmenu& curr = _menu.current(); const int bwidth = 20; - //TPicture_mask mask(curr.caption(), -4, -4, curr); TPicture_mask mask(curr.caption(), 0, 0, curr, 0, 0); CHECK(_mask == NULL, "Two masks are better than one?"); _mask = &mask; @@ -1704,9 +1706,15 @@ bool TMenu_application::tree_handler(TMask_field& f, KEY k) return true; } +TTree_field& TMenu_application::tree_field() const +{ + CHECK(_tree_view > 0, "No menu tree"); + return _mask->tfield(_tree_view == 3 ? 101 : 301); +} + void TMenu_application::select_tree_current() { - TTree_field& tf = _mask->tfield(DLG_TREE); + TTree_field& tf = tree_field(); synchronize_tree_field(tf); tf.set_focus(); } @@ -1716,7 +1724,7 @@ bool TMenu_application::tree_find_handler(TMask_field&f, KEY k) if (k == K_TAB && f.focusdirty() && !f.empty()) { const TString& v = f.get(); - TTree_field& tf = f.mask().tfield(DLG_TREE); + TTree_field& tf = app().tree_field(); TMenu_tree& mt = *(TMenu_tree*)tf.tree(); if (mt.find_string(v)) app().select_tree_current(); @@ -1730,7 +1738,7 @@ bool TMenu_application::tree_shrink_handler(TMask_field&f, KEY k) { if (k == K_SPACE) { - TTree_field& tf = f.mask().tfield(DLG_TREE); + TTree_field& tf = app().tree_field(); TMenu_tree& mt = (TMenu_tree&)*tf.tree(); mt.shrink_all(); mt.goto_root(); @@ -1836,39 +1844,20 @@ void TMenu_application::save_preferences() for (i = 0; i < _preferred.items(); i++) cfg.set("Preferred", _preferred.row(i), NULL, true, i); cfg.set("Preferred", "", NULL, true, i); - - cfg.set("TreeView", _tree_view, "Colors"); } void TMenu_application::add_to_preferred() { - const int maxpref = 16; - if (_mask == NULL) // Succede durante il login! return; - if (_preferred.items() < maxpref) + if (_preferred.items() < 16) // Massimo numero di preferiti { TToken_string tok; switch (_tree_view) { - case 1: - { - TTree_field& tf = _mask->tfield(DLG_TREE); - tf.goto_selected(); - tf.tree()->get_description(tok); - TString id; tf.tree()->curr_id(id); - tok.add(id); - } - break; - case 2: - { - TMenulist_field& mf = (TMenulist_field&)_mask->field(DLG_LIST); - mf.curr_item(tok); - } - break; - default: + case 0: { const TMask_field& butt = _mask->focus_field(); const int index = butt.dlg() - 101; @@ -1881,6 +1870,21 @@ void TMenu_application::add_to_preferred() } } break; + case 2: + { + TMenulist_field& mf = (TMenulist_field&)_mask->field(DLG_LIST); + mf.curr_item(tok); + } + break; + default: + { + TTree_field& tf = tree_field(); + tf.goto_selected(); + tf.tree()->get_description(tok); + TString id; tf.tree()->curr_id(id); + tok.add(id); + } + break; } if (tok.full() && _preferred.find(tok) < 0) { @@ -1890,7 +1894,7 @@ void TMenu_application::add_to_preferred() } } else - error_box(TR("Non e' possibile memorizzare piu' di %d preferenze"), maxpref); + error_box(TR("Non e' possibile memorizzare piu' di %d preferenze"), _preferred.items()); } class TPreferred_mask : public TAutomask @@ -1900,7 +1904,6 @@ protected: public: TPreferred_mask() : TAutomask("ba0400a") { } - virtual ~TPreferred_mask() { } }; bool TPreferred_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) @@ -2079,10 +2082,14 @@ bool TMenu_application::menu(MENU_TAG mt) TToken_string node(_preferred.row(index).get(1), '/'); if (_tree_view != 0) { - TMenu_tree& met = *(TMenu_tree*)_mask->tfield(DLG_TREE).tree(); + TMenu_tree& met = *(TMenu_tree*)tree_field().tree(); ok = node.items() == 1 ? met.find_leaf(node) : met.goto_node(node); if (ok) + { select_tree_current(); + if (met.curr_item().is_program()) + tree_field().on_key(K_CTRL+K_SPACE); // Esegue subito il programma + } } else { @@ -2096,7 +2103,8 @@ bool TMenu_application::menu(MENU_TAG mt) _mask->stop_run(K_CTRL + 'R'); } } - if (!ok) beep(); + if (!ok) + beep(); } break; }