home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Source Code / Libraries / DCLAP 4j / DClap / DUtil.cpp < prev    next >
Encoding:
Text File  |  1995-12-17  |  6.5 KB  |  276 lines  |  [TEXT/R*ch]

  1. // DUtil.cp
  2. // d.g.gilbert
  3.  
  4. // Add these general graphics objects ???
  5.  
  6. // DFont == enclose an Nlm_FonT item.  
  7. // Include     ParseFont method: Nlm_FonT itsfont = Nlm_ParseFont ("Times,12");
  8. // set a few global defaults, and let user make other DFont objects as needed.
  9.  
  10. // DDraw == some drawing primitives...
  11. // InsetRect/OffsetRect/...
  12.  
  13.  
  14. #include <ncbi.h>
  15. #include <dgg.h>
  16.  
  17. #include "DUtil.h"
  18. #include "DFile.h"
  19. #include "DWindow.h"
  20. #include "DTaskCentral.h"
  21. #include "DViewCentral.h"
  22.  
  23.   
  24. DCursor*    gCursor = NULL;
  25. DMouse*        gMouse = NULL;
  26. DKeys*        gKeys = NULL;
  27. DUtil*        gUtil = NULL;
  28. DPrintManager*    gPrintManager = NULL;
  29. DErrorManager*    gErrorManager = NULL;
  30. DPrefManager*        gPrefManager = NULL;
  31.  
  32. Global Nlm_FonT gTextFont       = NULL; //Nlm_programFont; << not initialized at this point.
  33. Global char         * gTextFontName = NULL;
  34. Global short      gTextFontSize = 12;
  35. Global short        gTextTabStops = 4;
  36.  
  37.  
  38. // change NLM error management, esp for MemNew/MemMore failure on out-of-mem
  39. #if 0
  40.     // void LIBCALL  Nlm_ErrSetOpts (short erract, short errlog)
  41.     // void LIBCALL  Nlm_ErrGetOpts (short * erract, short * errlog)
  42. /* actopt codes */
  43. #define ERR_CONTINUE  1
  44. #define ERR_IGNORE    2
  45. #define ERR_ADVISE    3
  46. #define ERR_ABORT     4
  47. #define ERR_PROMPT    5
  48. #define ERR_TEE       6
  49. /* logopt codes */
  50. #define ERR_LOG_ON    1
  51. #define ERR_LOG_OFF   2
  52.  
  53. typedef struct _ErrDesc {
  54.     int   context;
  55.     int   errcode;
  56.     char  errtext [ERRTEXT_MAX+1];
  57.     char  srcfile [PATH_MAX+1];
  58.     int   srcline;
  59. } ErrDesc, PNTR ErrDescPtr;
  60.  
  61. typedef void (LIBCALLBACK *ErrHookProc) PROTO((const ErrDesc *err));
  62. #endif
  63.  
  64.  
  65. //class DErrorHandler    : public DObject
  66.  
  67. void DErrorManager::TurnOff()     
  68.     Nlm_ErrGetOpts( &fErract, &fErrlog); 
  69.     Nlm_ErrSetOpts(ERR_CONTINUE,ERR_LOG_OFF); 
  70. }
  71.  
  72. void DErrorManager::TurnOn()     
  73.     Nlm_ErrSetOpts( fErract, fErrlog); 
  74. }
  75.  
  76.  
  77.  
  78.  
  79. //class DKeyCallback
  80.  
  81. Global DKeyCallback* gKeyHandlerObject = NULL;
  82.  
  83. extern "C" void keyHandlerProc( char c)
  84. {
  85.     if (gKeyHandlerObject) gKeyHandlerObject->ProcessKey(c);
  86. }
  87.  
  88. DKeyCallback::DKeyCallback()
  89. {
  90.     gKeyHandlerObject= this;
  91.      Nlm_KeyboardView(keyHandlerProc); //Nlm_KeyProc key
  92. }
  93.  
  94. DKeyCallback::~DKeyCallback()
  95. {
  96.     if (gKeyHandlerObject == this) gKeyHandlerObject= NULL;
  97. }
  98.   
  99. void DKeyCallback::SetKeyHandler(DKeyCallback* handler)
  100. {
  101.     gKeyHandlerObject= handler;
  102. }
  103.  
  104.  
  105. //class    DPrefManager    : public DObject
  106.  
  107. Local char* kDefaultPrefApp = "DClap";
  108.  
  109. char* DPrefManager::GetAppPref(char* type, char* section, char* appname, char* defaultvalue,
  110.                                                 char* prefvalue, ulong maxsize) 
  111.     if (prefvalue==NULL) prefvalue= (char*)MemNew(maxsize);
  112.     long buflen= Nlm_GetAppParam(appname, section, type, defaultvalue, prefvalue, maxsize);
  113.     return prefvalue;
  114. }
  115.             
  116. char* DPrefManager::GetPref(char* type, char* section, char* defaultvalue,
  117.                                         char* prefvalue, ulong maxsize) 
  118.     return GetAppPref(type, section, kDefaultPrefApp, defaultvalue, prefvalue, maxsize);
  119. }
  120.  
  121. Boolean DPrefManager::SetAppPref(char* prefvalue, char* type, char* section, char* appname) 
  122.     return Nlm_SetAppParam(appname, section, type, prefvalue);
  123. }
  124.  
  125. Boolean DPrefManager::SetPref(char* prefvalue, char* type, char* section) 
  126.     return SetAppPref( prefvalue, type, section, kDefaultPrefApp);
  127. }
  128.  
  129. Boolean DPrefManager::RemovePrefSection(char* section, char* appname) 
  130.     return Nlm_SetAppParam(appname, section, NULL, NULL);
  131. }
  132.  
  133. char* DPrefManager::GetAppPrefSection(char* section, ulong& sectlen, char* appname, char* defaultvalue,
  134.                                             char* prefvalue, ulong maxsize) 
  135.     // NOTE: this reads SECTION TYPE NAMES only, e.g.  
  136.     // [fonts]
  137.     // myfont=times
  138.     // hisfont=courier
  139.     // misfont=symbol
  140.     // --- result is list of "myfont.hisfont.misfont." (null term at end of each name)
  141.     
  142.     if (prefvalue==NULL) prefvalue= (char*)MemNew(maxsize);
  143.     sectlen= Nlm_GetAppParam(appname, section, NULL, defaultvalue, prefvalue, maxsize);
  144.     return prefvalue;
  145. }
  146.             
  147. char* DPrefManager::GetPrefSection(char* section, ulong& sectlen, char* defaultvalue,
  148.                                                 char* prefvalue, ulong maxsize) 
  149.     return GetAppPrefSection(section, sectlen, kDefaultPrefApp, defaultvalue, prefvalue, maxsize);
  150. }
  151.  
  152. char** DPrefManager::GetPrefFileLines(const char* prefFile, short& nlines) 
  153. {
  154.         char** linelist = NULL;
  155.         DFile aFile(prefFile,"r");
  156.         aFile.Open();
  157.          linelist= Dgg_ReadDefaultPrefs( aFile.fFile, &nlines);
  158.         aFile.Close();
  159.          return linelist;
  160. }
  161.  
  162.  
  163.  
  164.  
  165.  
  166. //class    DPrintManager    : public DObject
  167.  
  168. DPrintManager::DPrintManager()
  169. {
  170.     Nlm_LoadRect( &fPageRect, 0,-1,0,-1);
  171. }
  172.  
  173. DWindow* DPrintManager::StartPrinting()
  174. {
  175.     return (DWindow*) Nlm_GetObject((Nlm_GraphiC)Nlm_StartPrinting());
  176. }
  177.  
  178. void DPrintManager::DonePrinting(DWindow* savedWindow)
  179. {
  180.     Nlm_EndPrinting( (Nlm_WindoW)savedWindow->GetNlmObject());
  181. }
  182.  
  183. Boolean DPrintManager::StartPage()
  184. {
  185.     return Nlm_StartPage();
  186. }
  187.  
  188. Boolean DPrintManager::DonePage()
  189. {
  190.     return Nlm_EndPage();
  191. }
  192.  
  193. Boolean DPrintManager::PrintRect(Nlm_RecT& rpt)
  194. {
  195.     return Nlm_PrintingRect(&rpt);
  196. }
  197.  
  198.  
  199. short    DPrintManager::PageWidth(Boolean onScreen)
  200. {
  201.     short        val;
  202.     Boolean okay= !Nlm_EmptyRect( &fPageRect);
  203.     if (!okay) okay= Nlm_PrintingRect( &fPageRect);
  204.     if (okay) {
  205.         val= fPageRect.right - fPageRect.left;
  206.         if (onScreen) val= MIN(val - 140, Nlm_screenRect.right - Nlm_screenRect.left - 40);
  207.         }
  208.     else 
  209.         val= MIN(500, Nlm_screenRect.right - Nlm_screenRect.left - 50);
  210.     return val;
  211. }
  212.  
  213. short    DPrintManager::PageHeight(Boolean onScreen)
  214. {
  215.     short        val;
  216.     Boolean okay= !Nlm_EmptyRect( &fPageRect);
  217.     if (!okay) okay= Nlm_PrintingRect( &fPageRect);
  218.     if (okay) {
  219.         val= fPageRect.bottom - fPageRect.top;
  220.         if (onScreen) val= MIN(val - 100, Nlm_screenRect.bottom - Nlm_screenRect.top - 80);
  221.         }
  222.     else 
  223.         val= MIN(700, Nlm_screenRect.bottom - Nlm_screenRect.top - 80);
  224.     return val;
  225. }
  226.  
  227.  
  228.  
  229. //DClapGlobals    globals; // initializes globals here
  230.  
  231.  
  232.  
  233. DClapGlobals::DClapGlobals()
  234. {
  235.     gCursor = new DCursor();
  236.     gMouse = new DMouse();
  237.     gKeys = new DKeys();
  238.     gUtil = new DUtil();
  239.     gFileManager = new DFileManager();
  240.     gPrintManager = new DPrintManager();
  241.     gErrorManager= new DErrorManager();
  242.     gPrefManager= new DPrefManager();
  243.  
  244.     gWindowManager = new DWindowManager();     // "DWindow.h"
  245.     gTaskCentral= new DTaskCentral();     // DTaskCentral.h
  246.     gViewCentral= new DViewCentral();     // DViewCentral.h
  247.  
  248.     gTextFont       = Nlm_programFont;  
  249. }
  250.  
  251.  
  252. DClapGlobals::~DClapGlobals()
  253. {
  254.     delete gViewCentral; //->suicide();  
  255.     delete gTaskCentral; //->suicide();  
  256.     delete gWindowManager; //->suicide();
  257.     delete gErrorManager; //->suicide();
  258.     delete gPrefManager; //->suicide();
  259.     delete gPrintManager; //->suicide();
  260.     delete gFileManager; //->suicide();
  261.     delete gUtil; //->suicide();
  262.     delete gKeys; //->suicide();
  263.     delete gMouse; //->suicide();
  264.     delete gCursor; //->suicide();  
  265. }
  266.  
  267.