Patch level : 2.0 430 e scifla

Files correlati     : tutti
Ricompilazione Demo : [ ]
Commento            :

applicat.cpp  Eliminata gestione parametri (M_FILE_REVERT)

checks.cpp    Eliminate chiamate dirette alle API win32

controls.cpp  Eliminato uso inutile di xvt_vobj_translate_points

golem.cpp     Corretta gestione nomi lunghi in edit_url e goto_url

mailbox.cpp   Sostituito "/" con macro SLASH

mask.cpp      Migliorata gestione ALT + fuori dagli spreadsheet

maskfld.cpp   Corretto collegamento ad anagrafiche con chiavi parziali
              es: CODTAB[1,4] + CODTAB[5,7] sui registri

relapp.cpp    Eliminata gestione M_FILE_REVERT

strings.cpp   MIgliorata gestione nome directory temporanea

viswin.cpp    Corretta gestione bottone Edit

window.cpp    Eliminata gestione M_FILE_REVERT


git-svn-id: svn://10.65.10.50/trunk@10932 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2003-03-20 10:28:01 +00:00
parent bc025f1e99
commit 3b64a2e5fe
12 changed files with 83 additions and 290 deletions

View File

@ -3,7 +3,6 @@
#include <config.h>
#include <controls.h>
#include <dongle.h>
#include <execp.h>
#include <extcdecl.h>
#include <mask.h>
#include <modaut.h>
@ -11,11 +10,11 @@
#include <prefix.h>
#include <printer.h>
#include <progind.h>
#include <relation.h>
#include <tabutil.h>
#include <urldefid.h>
#include <utility.h>
// Maschera scelta ditta
#include <bagn002.h>
///////////////////////////////////////////////////////////
@ -402,10 +401,6 @@ long TApplication::handler(WINDOW win, EVENT* ep)
case M_FILE_NEW:
set_firm();
break;
case M_FILE_REVERT:
if (config())
on_config_change();
break;
case (M_FILE_ABOUT+1):
about();
break;
@ -1050,78 +1045,6 @@ bool TApplication::set_firm(long newfirm)
return TRUE;
}
// @doc INTERNAL
// @mfunc Gestisce le voci di configurazione
//
// @rdesc Ritorna TRUE se sono state cambiate delle voci
bool TApplication::config()
// @comm Le si passa il file in cui cercare il proprio paragrafo (comunque relativo
// alla ditta) se non c'e', viene creato copiando il default la variabile EdMask
// di quel paragrafo specifica la maschera da usare.
{
bool ok = FALSE;
TConfig conf(CONFIG_STUDIO);
TFilename name = conf.get("EdApp");
if (name.not_empty())
{
TExternal_app app(name);
ok = app.run() == 0;
return ok;
}
TConfig cnf(CONFIG_DITTA);
name = cnf.get("EdMask");
if (name.empty())
return warning_box("Nessun parametro da configurare");
TMask* msk = new TMask(name); // Evito problemi di stack
TMask& m = *msk;
// carica campi
for (int i = 0; i < m.fields(); i++)
{
TEditable_field& f = (TEditable_field&)m.fld(i);
const TFieldref* fref = f.field();
if (fref != NULL)
{
const char* fname = fref->name();
if (fname != NULL)
{
const TString& oldvl = cnf.get(fname);
if (!oldvl.empty())
f.set(oldvl);
}
}
}
// run mask
disable_menu_item(M_FILE_REVERT);
if (m.run() == K_ENTER && m.dirty())
{
// aggiusta campi
for (i = 0; i < m.fields(); i++)
{
TEditable_field& f = (TEditable_field&)m.fld(i);
if (f.dirty())
{
const TFieldref* fref = f.field();
if (fref != NULL)
cnf.set(fref->name(), f.get(), NULL, TRUE);
}
}
ok = TRUE;
}
delete msk;
enable_menu_item(M_FILE_REVERT);
return ok;
}
// @doc EXTERNAL
// @mfunc Controlla se al programma corrente e' concesso cambiare ditta da menu.
@ -1135,9 +1058,9 @@ bool TApplication::firm_change_enabled() const
// @comm Praticamente controlla se e' stato lanciato da ba0 o dal program manager
{
#ifdef _DEMO_
return FALSE;
return FALSE;
#else
return ::os_spawn_by_menu();
return ::os_spawn_by_menu();
#endif
}

View File

@ -66,8 +66,6 @@ class TApplication
void terminate();
// @cmember:(INTERNAL) Cambia il cursore del mouse
void set_cursor(bool w);
// @cmember:(INTERNAL) Gestisce le voci di configurazione
bool config();
// @cmember:(INTERNAL) About box: risposta alla opzione Informazioni del menu File
void about() const;

View File

@ -1,28 +1,12 @@
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#ifdef XVT
#define XVT_INCL_NATIVE
#define STRICT
#include <xvt.h>
#if XVT_OS == XVT_OS_WIN || XVT_OS == XVT_OS_WIN32
#include <keys.h>
#else
#include <xvtility.h>
#endif
#include <applicat.h>
#include <keys.h>
#include <os_dep.h>
#endif /* XVT */
#include <checks.h>
#define buildmsg() char msg[256];va_list argptr;va_start(argptr,fmt);vsprintf(msg,fmt,argptr);va_end(argptr)
#ifndef FOXPRO
// @doc EXTERNAL
// @msg fatal_box | Crea una finestra di ERRORE FATALE con il relativo messaggio
@ -35,14 +19,12 @@ bool fatal_box(
// l'errore.
{
buildmsg();
xvt_dm_post_fatal_exit(msg);
if (xvt_running())
main_app().stop_run();
else
exit(1);
return 0;
return false;
}
// @doc EXTERNAL
@ -57,21 +39,8 @@ bool error_box(
// e l'icona punto esclamativo.
{
buildmsg();
#if XVT_OS == XVT_OS_WIN || XVT_OS == XVT_OS_WIN32
MessageBeep(MB_ICONEXCLAMATION);
MessageBox(GetFocus(), msg, "ERRORE", MB_OK | MB_ICONEXCLAMATION);
#else
beep();
if (xvt_running()) xvt_dm_post_error("%s", msg);
else
{
fprintf(stderr, "%s\n", msg);
getchar();
}
#endif
return 0;
xvt_dm_post_error(msg);
return false;
}
// @doc EXTERNAL
@ -85,15 +54,7 @@ bool warning_box(
// e l'icona punto di domanda.
{
buildmsg();
#if XVT_OS == XVT_OS_WIN || XVT_OS == XVT_OS_WIN32
MessageBeep(MB_ICONQUESTION);
MessageBox(GetFocus(), msg, "ATTENZIONE", MB_OK | MB_ICONQUESTION);
#else
beep();
xvt_dm_post_note("%s", msg);
#endif
xvt_dm_post_note(msg);
return 0;
}
@ -108,14 +69,8 @@ bool message_box(
// e l'icona informazioni.
{
buildmsg();
#if XVT_OS == XVT_OS_WIN || XVT_OS == XVT_OS_WIN32
MessageBox(GetFocus(), msg, "INFORMAZIONE", MB_OK | MB_ICONINFORMATION);
#else
xvt_dm_post_note("%s", msg);
#endif
return 0;
xvt_dm_post_message(msg);
return false;
}
// @doc EXTERNAL
@ -129,38 +84,18 @@ bool sorry_box(
// e l'icona informazioni.
{
buildmsg();
#if XVT_OS == XVT_OS_WIN || XVT_OS == XVT_OS_WIN32
MessageBeep(MB_ICONINFORMATION);
MessageBox(GetFocus(), msg, "SPIACENTE", MB_OK | MB_ICONINFORMATION);
#else
xvt_dm_post_note("%s", msg);
#endif
return 0;
xvt_dm_post_note(msg);
return false;
}
// @doc EXTERNAL
// @msg yesno_box | Crea una finestra di RICHIESTA con il relativo messaggio
bool noyes_box(
const char* fmt, // @parm Messaggio da stampare nella finestra
...) // @parmvar Uno o piu' parametri corrispondenti ai codici in <p fmt>
{
buildmsg();
#if XVT_OS == XVT_OS_WIN || XVT_OS == XVT_OS_WIN32
MessageBeep(MB_ICONQUESTION);
int r = MessageBox(GetFocus(), msg, "RICHIESTA",
MB_YESNO | MB_ICONQUESTION | MB_DEFBUTTON2);
return r == IDYES;
#else
ASK_RESPONSE r = xvt_dm_post_ask((char*) "No", (char*) "Si", NULL, "%s", msg);
if (r == RESP_DEFAULT) r = K_NO;
else
if (r == RESP_2) r = K_YES;
return r == K_YES;
#endif
ASK_RESPONSE r = xvt_dm_post_ask("No", "Si", NULL, msg);
return r == RESP_2;
}
@ -183,15 +118,8 @@ bool yesno_box(
// @xref <m yesnocancel_box> <m yesnofatal_box>
{
buildmsg();
#if XVT_OS == XVT_OS_WIN || XVT_OS == XVT_OS_WIN32
MessageBeep(MB_ICONQUESTION);
int r = MessageBox(GetFocus(), msg, "RICHIESTA", MB_YESNO | MB_ICONQUESTION);
return r == IDYES;
#else
ASK_RESPONSE r = xvt_dm_post_ask((char*) "Si", (char*) "No", NULL, "%s", msg);
ASK_RESPONSE r = xvt_dm_post_ask("Si", "No", NULL, msg);
return r == RESP_DEFAULT;
#endif
}
// @doc EXTERNAL
@ -219,10 +147,9 @@ bool yesnofatal_box(
#ifdef DBG
char s[256]; sprintf(s, "%s\nContinuare ugualmente?", msg);
const bool ret = yesno_box("%s", s);
if (!ret) fatal_box(msg);
#else
fatal_box("%s", msg);
if (!ret)
#endif
fatal_box(msg);
return FALSE;
}
@ -246,24 +173,8 @@ int yesnocancel_box(
// @xref <m yesno_box> <m yesnofatal_box>
{
buildmsg();
#if XVT_OS == XVT_OS_WIN || XVT_OS == XVT_OS_WIN32
int r = MessageBox(GetFocus(), msg, "RICHIESTA", MB_YESNOCANCEL | MB_ICONQUESTION);
if (r == IDYES) r = K_YES;
else
if (r == IDNO) r = K_NO;
else
r = K_ESC;
return r;
#else
ASK_RESPONSE r = xvt_dm_post_ask((char*) "Si", (char*) "No", (char*) "Annulla", "%s", msg);
if (r == RESP_DEFAULT) r = K_YES;
else
if (r == RESP_2) r = K_NO;
else
r = K_ESC;
return r;
#endif
ASK_RESPONSE r = xvt_dm_post_ask("Si", "No", "Annulla", msg);
return r == RESP_DEFAULT ? K_YES : (r == RESP_2 ? K_NO : K_ESC);
}
// @doc EXTERNAL
@ -297,44 +208,3 @@ bool __tracemem(const char* msg)
return __trace("%5lu Kb - %s", mem, msg);
}
#else // FOXPRO
#include <windows.h>
#include <pro_ext.h>
bool error_box(const char* fmt, ...)
{
buildmsg();
MessageBeep(MB_ICONEXCLAMATION);
_UserError(msg);
return 0;
}
bool fatal_box(const char* fmt, ...)
{
buildmsg();
MessageBeep(MB_ICONHAND);
MessageBox(GetFocus(), msg, "ERRORE FATALE", MB_OK | MB_ICONHAND | MB_SYSTEMMODAL);
_UserError(msg);
return 0;
}
bool message_box(const char* fmt, ...)
{
buildmsg();
MessageBeep(MB_ICONINFORMATION);
_UserError(msg);
return 0;
}
bool yesnofatal_box(const char* fmt, ...)
{
buildmsg();
MessageBeep(MB_ICONHAND);
MessageBox(GetFocus(), msg, "ERRORE FATALE", MB_OK | MB_ICONHAND | MB_SYSTEMMODAL);
_UserError(msg);
return 0;
}
#endif // FOXPRO

View File

@ -483,9 +483,14 @@ WINDOW create_interface(WINDOW parent, short x, short y, short dx, short dy,
void attach_interface(WINDOW win, COLOR back)
{
xvt_win_set_handler(win, (EVENT_HANDLER)xi_event);
/* xvt_vobj_translate_points NON funziona! Ma qui non serve.
RCT rc; xvt_vobj_get_client_rect(win, &rc);
WINDOW wp = xvt_vobj_get_parent(win);
xvt_vobj_translate_points(win, wp, (PNT*)&rc, 2);
*/
RCT rc; xvt_vobj_get_outer_rect(win, &rc);
char caption[80]; xvt_vobj_get_title(win, caption, 80);
TWindow* parent = (TWindow*)xvt_vobj_get_data(win);
XI_OBJ_DEF* def = xi_create_itf_def(ITF_CID, xi_event_handler, (XinRect *) &rc, caption, (long)parent);

View File

@ -186,7 +186,7 @@ bool goto_url(const char* url)
app = link.get(ext);
if (app.not_empty())
{
app << ' ' << url;
app << " \"" << url << '"';
UINT error = WinExec(app, SW_SHOWNORMAL);
if (error > 32)
return TRUE;
@ -195,7 +195,7 @@ bool goto_url(const char* url)
}
bool retflag = FALSE;
HINSTANCE hinst = ShellExecute(NULL, "open", url, NULL, NULL, SW_SHOWNORMAL);
DWORD winst = DWORD((DWORD*)hinst);
UINT error = UINT(winst); // Tutto 'sto giro per evitare un warning
@ -203,7 +203,7 @@ bool goto_url(const char* url)
{
if (file2app(".htm", app))
{
app << ' ' << url;
app << " \"" << url << '"';
error = WinExec(app, SW_SHOWNORMAL);
if (error > 32)
retflag = TRUE;
@ -218,37 +218,31 @@ bool goto_url(const char* url)
bool edit_url(const char* url)
{
bool retflag = FALSE;
HINSTANCE hinst = ShellExecute(NULL, "edit", url, NULL, NULL, SW_SHOWNORMAL);
DWORD winst = DWORD((DWORD*)hinst);
UINT error = UINT(winst); // Tutto 'sto giro per evitare un warning
if (error <= 32)
{
TFilename app;
if (fexist(url) && file2app(".wri", app))
{
app << ' ' << url;
error = WinExec(app, SW_SHOWNORMAL);
if (error > 32)
retflag = TRUE;
}
else
retflag = goto_url(url);
}
retflag = goto_url(url);
else
retflag = TRUE;
return retflag;
}
bool print_url(const char* url)
{
bool retflag = FALSE;
HINSTANCE hinst = ShellExecute(NULL, "print", url, NULL, NULL, SW_SHOWNORMAL);
DWORD winst = DWORD((DWORD*)hinst);
UINT error = UINT(winst); // Tutto 'sto giro per evitare un warning
return error >= 32;
if (error <= 32)
retflag = goto_url(url);
else
retflag = TRUE;
return retflag;
}
///////////////////////////////////////////////////////////
@ -420,7 +414,7 @@ bool TGolem_mask::ole_handler(TMask_field& f, KEY k)
sheet.force_update();
TFilename app; file2app(ext, app);
app << ' ' << file;
app << " \"" << file << '"';
WinExec(app, SW_SHOWNORMAL);
}
}
@ -925,6 +919,8 @@ class TMAPI_session : public TObject
LHANDLE _hSession;
LONG _hWnd;
TFilename m_strBaseDir; // Directory iniziale
protected:
bool load_mapi();
void unload_mapi();
@ -1076,10 +1072,18 @@ bool TMAPI_session::remove(const TString& id)
TMAPI_session::TMAPI_session()
: _hlibMAPI(NULL), _hSession(NULL), _hWnd(NULL)
{ }
{
// Memorizza directory base
GetCurrentDirectory(_MAX_PATH, m_strBaseDir.get_buffer(_MAX_PATH));
}
TMAPI_session::~TMAPI_session()
{ close(); }
{
close();
// Ripristina directory base
SetCurrentDirectory(m_strBaseDir);
}
///////////////////////////////////////////////////////////
// TMail_message

View File

@ -200,7 +200,7 @@ TMailbox::TMailbox(const char* appname) : _msgs(DEF_MSGS_CAPACITY)
appname = main_app().name(); // myself; must be global
_path.tempdir();
_path << "/" << appname << ".mbx";
_path << SLASH << appname << ".mbx";
_lastread =0; _lastpos = 0l;
n_new = 0;

View File

@ -856,18 +856,20 @@ bool TMask::on_key(
case K_CTRL+'+':
if (is_running())
{
for (int fire = _focus+1; fire >= _focus-1; fire--)
// Cerco nella pagina corrente il primo spreadsheet a partire dal campo col focus
if (_focus < 0) _focus = 0;
const WINDOW myparent = fld(_focus).parent();
for (int fire = _focus; fire < fields(); fire++)
{
if (fire >= 0 && fire < fields())
TMask_field& f = fld(fire);
if (f.parent() != myparent)
break;
if (f.is_kind_of(CLASS_SHEET_FIELD))
{
TMask_field& f = fld(fire);
if (f.is_kind_of(CLASS_SHEET_FIELD))
{
TSheet_field& s = (TSheet_field&)f;
const int newrow = s.append() ? -1 : 0;
notify_focus_field(s.dlg());
s.insert(newrow, TRUE, TRUE);
}
TSheet_field& s = (TSheet_field&)f;
const int newrow = s.append() ? -1 : 0;
notify_focus_field(s.dlg());
s.insert(newrow, TRUE, TRUE);
}
}
}

View File

@ -2337,29 +2337,24 @@ bool TBrowse::do_link(bool insert)
TConfig ini(msg, "Transaction");
ini.set("Action", "MODIFY");
TString paragraph; paragraph << _cursor->file().num();
TString8 paragraph; paragraph << _cursor->file().num();
ini.set_paragraph(paragraph);
_inp_fn.restart();
for (const char* i = _inp_id.get(0); i; i = _inp_id.get())
{
TString inp_id(i);
TString s(_inp_fn.get());
const int pos = s.find(",");
if (pos >= 0)
s.cut(pos);
if (inp_id[0] == '"')
TString inp_val;
FOR_EACH_TOKEN(_inp_id, i)
{
inp_val = i;
TFieldref fldref(_inp_fn.get(), 0);
if (inp_val[0] == '"')
{
inp_id.ltrim(1);
inp_id.rtrim(1);
inp_val.rtrim(1);
inp_val.ltrim(1);
}
else
{
TFieldref fldref(s, 0);
inp_id = fldref.read(*_cursor->relation());
}
ini.set(s, inp_id);
inp_val = fldref.read(*_cursor->relation());
fldref.write(ini, paragraph, inp_val);
}
}

View File

@ -1254,8 +1254,6 @@ void TRelation_application::main_loop()
const bool change = firm_change_enabled();
// Dis/abilita cambio ditta
enable_menu_item(M_FILE_NEW, change);
// Dis/abilita cambio parametri
enable_menu_item(M_FILE_REVERT, change);
if (_mask->edit_mode())
{
@ -1650,7 +1648,7 @@ bool TRelation_application::load_transaction()
_curr_transaction.upper();
_curr_trans_mode = toupper(cnf.get("Mode")[0]);
_curr_trans_from = cnf.get("From");
long firm = cnf.get_long("Firm");
const long firm = cnf.get_long("Firm");
if (firm > 0)
{

View File

@ -1116,9 +1116,9 @@ const TFilename& TFilename::tempdir()
{
_tempdir = getenv("TEMP");
if (_tempdir.empty())
_tempdir = getenv("TMP");
_tempdir = getenv("TMP");
if (_tempdir.empty())
_tempdir << SLASH << "tmp";
_tempdir << SLASH << "temp";
const int last = len()-1;
if (!is_not_slash(_str[last]))
@ -1147,12 +1147,13 @@ const TFilename& TFilename::tempdir()
if (!ok)
fatal_box("Impossibile creare la directory '%s' per i file temporanei", (const char*)_tempdir);
_tempdir.insert("TMP=", 0);
putenv(_tempdir);
TString tmp = _tempdir;
tmp.insert("TMP=", 0);
putenv(tmp);
}
set(_tempdir.mid(4));
set(_tempdir);
return *this;
}

View File

@ -2304,7 +2304,7 @@ bool TViswin::call_editor()
xvt_fsys_convert_str_to_dir(newfilename.get_buffer(), &fs.dir);
strcpy (fs.type, "txt");
strcpy (fs.name, "tmp");
strcpy (fs.creator, "PRINT");
strcpy (fs.creator, "CAMPO");
xvt_fsys_save_dir ();
bool ok = xvt_dm_post_file_save (&fs, "Salva il file con il nome:") == FL_OK;

View File

@ -219,13 +219,11 @@ void TWindow_manager::reg(TWindow* m)
{
const bool on = main_app().firm_change_enabled();
xvt_menu_set_item_enabled(TASK_WIN, M_FILE_NEW, on);
xvt_menu_set_item_enabled(TASK_WIN, M_FILE_REVERT, on);
}
break;
case 1 :
xvt_menu_set_item_enabled(TASK_WIN, M_FILE_QUIT, FALSE);
xvt_menu_set_item_enabled(TASK_WIN, M_FILE_NEW, FALSE);
xvt_menu_set_item_enabled(TASK_WIN, M_FILE_REVERT, FALSE);
default:
_window[_current-1]->deactivate(); break;
}
@ -258,7 +256,6 @@ void TWindow_manager::unreg(const TWindow* m)
const bool cf = _current == 0 && main_app().firm_change_enabled();
xvt_menu_set_item_enabled(TASK_WIN, M_FILE_NEW, cf);
xvt_menu_set_item_enabled(TASK_WIN, M_FILE_REVERT, cf);
xvt_menu_update(TASK_WIN);
cur_win()->set_focus();