From 9baebfb812515d4e4f2f501d165da1d4c7e005fc Mon Sep 17 00:00:00 2001 From: guy Date: Wed, 7 Jan 2009 16:44:01 +0000 Subject: [PATCH] Patch level : 10.0 Files correlati : ba0.exe Ricompilazione Demo : [ ] Commento : 0000987: concomitanze non si riesce ad aprire contemporanemente la stampa dei movimenti di magazzino e la lista dei movimenti contabili. git-svn-id: svn://10.65.10.50/trunk@17994 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ba/ba0103.cpp | 42 ++++++++++++++++++++++++++---------------- ba/ba0103.h | 2 +- 2 files changed, 27 insertions(+), 17 deletions(-) diff --git a/ba/ba0103.cpp b/ba/ba0103.cpp index bd509f592..44934ed4b 100755 --- a/ba/ba0103.cpp +++ b/ba/ba0103.cpp @@ -22,12 +22,14 @@ class TBook_window; class TApp_window : public TWindow { TBook_window* _owner; + TString _appname; protected: virtual void handler(WINDOW win, EVENT* ep); public: - TApp_window(TBook_window* owner); + const TString& app_name() const { return _appname; } + TApp_window(TBook_window* owner, const char* appname); ~TApp_window(); }; @@ -46,7 +48,7 @@ public: WINDOW notebook() const { return _ctrl; } short pages() const; WINDOW page_win(short pg); - short add_page(const TString& caption); + short add_page(const TMenuitem& mi); void set_page_caption(short page, const TString& caption, int icon); bool remove_page(WINDOW page); void set_logo(const char* logo); @@ -89,7 +91,7 @@ void TApp_window::handler(WINDOW win, EVENT* ep) TWindow::handler(win, ep); } -TApp_window::TApp_window(TBook_window* owner) : _owner(owner) +TApp_window::TApp_window(TBook_window* owner, const char* appname) : _owner(owner), _appname(appname) { WINDOW w = create(0, 0, -1, -1, __MAGIC_CAPTION__, WSF_NONE, W_PLAIN, owner->notebook()); xvt_timer_create(w, 1500); // Ogni tanto controllo se l'applicazione e' ancora viva @@ -185,7 +187,7 @@ WINDOW TBook_window::page_win(short pg) return win; } -short TBook_window::add_page(const TString& caption) +short TBook_window::add_page(const TMenuitem& mi) { if (_ctrl == NULL_WIN) { @@ -208,18 +210,19 @@ short TBook_window::add_page(const TString& caption) enable_options_menu(false); // Disabilita le opzioni } - TString256 cap; for (short pg = pages()-1; pg >= 0; pg--) { - xvt_notebk_get_tab_title(_ctrl, pg, cap.get_buffer(), cap.size()); - if (cap.compare(caption, -1, true) == 0) + WINDOW awin = xvt_notebk_get_page(_ctrl, pg); + TApp_window* w = (TApp_window*)xvt_vobj_get_data(awin); + if (w != NULL && w->app_name() == mi.action()) { force_page(pg); return -1; // Don't perform menu! } } - TApp_window* w = new TApp_window(this); - const short pg = xvt_notebk_add_page(_ctrl, w->win(), caption, NULL, -1); + + TApp_window* w = new TApp_window(this, mi.action()); + const short pg = xvt_notebk_add_page(_ctrl, w->win(), mi.caption(), NULL, -1); if (pg >= 0) force_page(pg); else @@ -313,7 +316,7 @@ public: virtual void create(short dlg, int x, int y, int dx, int dy, WINDOW parent); short pages() const; - short add_page(const TString& caption); + short add_page(const TMenuitem& mi); void set_page_caption(short page, const TString& caption, int icon); WINDOW page_win(short page); void remove_all_pages(); @@ -326,10 +329,10 @@ short TBook_field::pages() const return bw.pages(); } -short TBook_field::add_page(const TString& caption) +short TBook_field::add_page(const TMenuitem& mi) { TBook_window& bw = (TBook_window&)win(); - return bw.add_page(caption); + return bw.add_page(mi); } void TBook_field::set_page_caption(short page, const TString& caption, int icon) @@ -417,12 +420,12 @@ bool TOutlook_mask::can_be_closed() const return yes; } -short TOutlook_mask::add_page(const TString& caption) +short TOutlook_mask::add_page(const TMenuitem& mi) { TBook_field& bf = (TBook_field&)field(DLG_MAIN); if (bf.pages() == 0) save_perspective(2); // Save temporary perspective - return bf.add_page(caption); + return bf.add_page(mi); } void TOutlook_mask::set_page_caption(short page, const TString& caption, int icon) @@ -494,7 +497,14 @@ bool TOutlook_mask::on_field_event(TOperable_field& o, TField_event e, long joll // ba1 e ba2 sono programmi di manutenzione da eseguire in modo esclusivo if (mi.run_modal()) { - bf.remove_all_pages(); // Chiude tutti i programmi in corso + if (bf.pages() > 0) + { + if (yesno_box(TR("E' necessario chiudere tutte le altre appicazioni:\n Si desidera procedere?"))) + bf.remove_all_pages(); // Chiude tutti i programmi in corso + else + return false; + } + mi.perform(); // Esegui in sincrono e a tutto schermo if (installing()) // when ba1 -6 stop_run(K_FORCE_CLOSE); @@ -506,7 +516,7 @@ bool TOutlook_mask::on_field_event(TOperable_field& o, TField_event e, long joll else { // Crea una pagina per accogliere la nuova applicazione asincrona - const short pg = add_page(mi.caption()); + const short pg = add_page(mi); if (pg >= 0) { mi.perform(); // Esegui in asincrono in pagina nuova diff --git a/ba/ba0103.h b/ba/ba0103.h index f94677f48..aeb28f11a 100755 --- a/ba/ba0103.h +++ b/ba/ba0103.h @@ -23,7 +23,7 @@ protected: virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); virtual bool can_be_closed() const; - short add_page(const TString& caption); + short add_page(const TMenuitem& mi); void set_page_caption(short page, const TString& caption, int icon); void save_perspective(int per);