home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 3 / AACD03.BIN / AACD / Programming / Triton / Source / src / quickhelp_prim.c < prev    next >
C/C++ Source or Header  |  1998-05-23  |  5KB  |  126 lines

  1. /*
  2.  *  OpenTriton -- A free release of the triton.library source code
  3.  *  Copyright (C) 1993-1998  Stefan Zeiger
  4.  *
  5.  *  This program is free software; you can redistribute it and/or modify
  6.  *  it under the terms of the GNU General Public License as published by
  7.  *  the Free Software Foundation; either version 2 of the License, or
  8.  *  (at your option) any later version.
  9.  *
  10.  *  This program is distributed in the hope that it will be useful,
  11.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13.  *  GNU General Public License for more details.
  14.  *
  15.  *  You should have received a copy of the GNU General Public License
  16.  *  along with this program; if not, write to the Free Software
  17.  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  18.  *
  19.  *  quickhelp_prim.c - QuickHelp primitives
  20.  *
  21.  */
  22.  
  23.  
  24. /////////////////////////////////////////////////////////////////////////////////////////////////////////////
  25. //////////////////////////////////////////////////////////////////////////////////////// Include our stuff //
  26. /////////////////////////////////////////////////////////////////////////////////////////////////////////////
  27.  
  28. #define INTUI_V36_NAMES_ONLY
  29. #define TR_NOSUPPORT
  30. #define TR_THIS_IS_TRITON
  31.  
  32. #include "include/libraries/triton.h"
  33. #include "include/clib/triton_protos.h"
  34. #include "/internal.h"
  35.  
  36. #include "parts/define_classes.h"
  37.  
  38.  
  39. /////////////////////////////////////////////////////////////////////////////////////////////////////////////
  40. //////////////////////////////////////////////////////////////////////////////////////////////// QuickHelp //
  41. /////////////////////////////////////////////////////////////////////////////////////////////////////////////
  42.  
  43. #define TR_TICKS_UNTIL_QUICKHELP 2
  44. #define TR_QUICKHELP_TEXTFLAGS (TRTX_NOUNDERSCORE|TRTX_MULTILINE)
  45. //define TR_QUICKHELP_TEXTFLAGS (TRTX_NOUNDERSCORE|TRTX_HIGHLIGHT|TRTX_MULTILINE)
  46.  
  47.  
  48. VOID TR_UpdateQuickHelp(struct TR_Project *project, ULONG x, ULONG y, BOOL removeNow)
  49. {
  50.   LONG top;
  51.   ULONG textwidth;
  52.  
  53.   struct TagItem winTags[]=
  54.   {
  55.     /*  0 */  WA_Flags,         WFLG_BORDERLESS|WFLG_RMBTRAP|WFLG_SMART_REFRESH,
  56.     /*  1 */  WA_IDCMP,         NULL,
  57.     /*  2 */  NULL,             NULL, /* Screen */
  58.     /*  3 */  WA_Width,         NULL,
  59.     /*  4 */  WA_Height,        NULL,
  60.     /*  5 */  WA_Left,          NULL,
  61.     /*  6 */  WA_Top,           NULL,
  62.               TAG_END
  63.   };
  64.  
  65.   if(project->trp_TicksPassed==TR_TICKS_UNTIL_QUICKHELP)
  66.     {
  67.       if((!project->trp_QuickHelpWindow)
  68.      && (project->trp_QuickHelpObject=TR_ObjectFromPlace(project,x,y))
  69.      && (project->trp_QuickHelpObject->QuickHelpString))
  70.     {
  71.       winTags[2].ti_Tag=project->trp_ScreenType;
  72.       winTags[2].ti_Data=(ULONG)(project->trp_Screen);
  73.       textwidth=TR_TextWidth(project,project->trp_QuickHelpObject->QuickHelpString,
  74.                  TR_QUICKHELP_TEXTFLAGS);
  75.       winTags[3].ti_Data=textwidth+project->trp_TotalPropFontHeight*2;
  76.       winTags[4].ti_Data=
  77.         TR_TextHeight(project,project->trp_QuickHelpObject->QuickHelpString,TR_QUICKHELP_TEXTFLAGS)
  78.         + project->trp_TotalPropFontHeight;
  79.       winTags[5].ti_Data=project->trp_QuickHelpObject->Left
  80.         + project->trp_TotalPropFontHeight
  81.         + project->trp_Window->LeftEdge;
  82.       top=project->trp_QuickHelpObject->Top-winTags[4].ti_Data
  83.         - project->trp_TotalPropFontHeight
  84.         + project->trp_Window->TopEdge;
  85.       if(top>0)
  86.         winTags[6].ti_Data=top;
  87.       else
  88.         winTags[6].ti_Data=project->trp_QuickHelpObject->Top
  89.           + project->trp_QuickHelpObject->Height
  90.           + project->trp_TotalPropFontHeight
  91.           + project->trp_Window->TopEdge;
  92.       if(!(project->trp_QuickHelpWindow=OpenWindowTagList(NULL,winTags))) DisplayBeep(NULL);
  93.       else
  94.         {
  95. //          SetAPen(project->trp_QuickHelpWindow->RPort,project->trp_DrawInfo->dri_Pens[FILLPEN]);
  96. //          RectFill(project->trp_QuickHelpWindow->RPort, 0, 0,
  97. //               project->trp_QuickHelpWindow->Width, project->trp_QuickHelpWindow->Height);
  98.               SetAPen(project->trp_QuickHelpWindow->RPort,project->trp_DrawInfo->dri_Pens[SHADOWPEN]);
  99.           Move(project->trp_QuickHelpWindow->RPort,0,project->trp_QuickHelpWindow->Height-1);
  100.           Draw(project->trp_QuickHelpWindow->RPort,project->trp_QuickHelpWindow->Width-1,
  101.            project->trp_QuickHelpWindow->Height-1);
  102.           Draw(project->trp_QuickHelpWindow->RPort,project->trp_QuickHelpWindow->Width-1,0);
  103.           SetAPen(project->trp_QuickHelpWindow->RPort,project->trp_DrawInfo->dri_Pens[SHINEPEN]);
  104.           Draw(project->trp_QuickHelpWindow->RPort,0,0);
  105.           Draw(project->trp_QuickHelpWindow->RPort,0,project->trp_QuickHelpWindow->Height-1);
  106.           TR_PrintText(project, project->trp_QuickHelpWindow->RPort,
  107.                project->trp_QuickHelpObject->QuickHelpString,
  108.                project->trp_TotalPropFontHeight,
  109.                project->trp_TotalPropFontHeight/2, // +project->trp_PropFont->tf_Baseline,
  110.                textwidth,
  111.                TR_QUICKHELP_TEXTFLAGS);
  112.         }
  113.     }
  114.     }
  115.   else if(project->trp_QuickHelpWindow)
  116.     {
  117.       if((TR_ObjectFromPlace(project,x,y)!=project->trp_QuickHelpObject) || removeNow)
  118.     {
  119.       CloseWindow(project->trp_QuickHelpWindow);
  120.       project->trp_QuickHelpWindow=NULL;
  121.       project->trp_QuickHelpObject=NULL;
  122.       project->trp_TicksPassed=0;
  123.     }
  124.     }
  125. }
  126.