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:
		
							parent
							
								
									bc025f1e99
								
							
						
					
					
						commit
						3b64a2e5fe
					
				@ -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
 | 
			
		||||
}             
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -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;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -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);
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
 | 
			
		||||
@ -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;
 | 
			
		||||
 | 
			
		||||
@ -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);
 | 
			
		||||
        }
 | 
			
		||||
      }  
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -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);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -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)    
 | 
			
		||||
 | 
			
		||||
    {
 | 
			
		||||
 | 
			
		||||
@ -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;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -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;
 | 
			
		||||
 | 
			
		||||
@ -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();
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user