home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 8 Other / 08-Other.zip / pmvnc100.zip / info.c < prev    next >
C/C++ Source or Header  |  1999-03-16  |  5KB  |  197 lines

  1. /*
  2.  * info.c - PM VNC Viewer, informations about / connection
  3.  */
  4.  
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7. #include <string.h>
  8.  
  9. #define INCL_PM
  10. #include <os2.h>
  11.  
  12. #include "pmvncdef.h"
  13. #include "pmvncres.h"
  14.  
  15. /*
  16.  * infoConn - connection info.
  17.  */
  18.  
  19. static  void    loadConn(HWND hwndDlg)
  20. {
  21.     HWND    hwnd = WinWindowFromID(hwndDlg, IDD_MTEXT) ;
  22.     ULONG   len ;
  23.     IPT     off ;
  24.     UCHAR   info[256] ;
  25.     rfbServerInitMsg    si ;
  26.     PUCHAR              dp ;
  27.     int     major, minor ;
  28.     PUCHAR  p ;
  29.  
  30.     WinSendMsg(hwnd, MLM_DISABLEREFRESH, NULL, NULL) ;
  31.  
  32.     WinSendMsg(hwnd, MLM_FORMAT, MPFROMSHORT(MLFIE_NOTRANS), NULL) ;
  33.     WinSendMsg(hwnd, MLM_SETTABSTOP, MPFROMSHORT(20), NULL) ;
  34.  
  35.     WinSendMsg(hwnd, MLM_SETIMPORTEXPORT, MPFROMP(info), MPFROMSHORT(256)) ;
  36.  
  37.     dp = protoConnInfo(&si, &major, &minor) ;
  38.  
  39.     len = 0, off = 0 ;
  40.  
  41.     sprintf(info, "Connected to: %s\n", dp) ;
  42.     len = (ULONG) WinSendMsg(hwnd, MLM_IMPORT, 
  43.                             MPFROMP(&off), MPFROMLONG(strlen(info))) ;
  44.     off += len ;
  45.  
  46.     sprintf(info, "Host: %s\n\n", SessServerName) ;
  47.     len = (ULONG) WinSendMsg(hwnd, MLM_IMPORT, 
  48.                             MPFROMP(&off), MPFROMLONG(strlen(info))) ;
  49.     off += len ;
  50.  
  51.     sprintf(info, "Desktop geometry: %d x %d x %d\n",
  52.         si.framebufferWidth, si.framebufferHeight, si.format.depth) ;
  53.     len = (ULONG) WinSendMsg(hwnd, MLM_IMPORT, 
  54.                             MPFROMP(&off), MPFROMLONG(strlen(info))) ;
  55.     off += len ;
  56.  
  57.     switch (SessPixelFormat) {
  58.         case PIXFMT_32   : p = "32 (TrueColor)" ; break ;
  59.     case PIXFMT_8    : p = "8 (BGR233)"     ; break ;
  60.     case PIXFMT_TINY : p = "8 (TinyColor)"  ; break ;
  61.     case PIXFMT_GRAY : p = "8 (GrayScale)"  ; break ;
  62.     default          : p = "32 (TrueColor)" ; break ;
  63.     }
  64.     sprintf(info, "Using depth: %s\n", p) ;
  65.     len = (ULONG) WinSendMsg(hwnd, MLM_IMPORT, 
  66.                             MPFROMP(&off), MPFROMLONG(strlen(info))) ;
  67.     off += len ;
  68.     
  69.     sprintf(info, "Current protocol version: %d.%d\n", major, minor) ;
  70.     len = (ULONG) WinSendMsg(hwnd, MLM_IMPORT, 
  71.                             MPFROMP(&off), MPFROMLONG(strlen(info))) ;
  72.     off += len ;
  73.  
  74.     WinSendMsg(hwnd, MLM_ENABLEREFRESH, NULL, NULL) ;
  75. }
  76.  
  77. static MRESULT EXPENTRY procConn(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
  78. {
  79.     switch (msg) {
  80.     
  81.     case WM_INITDLG :
  82.         if (SessDlgCenter) {
  83.         dialogAtCenter(hwnd) ;
  84.     } else {
  85.             dialogAtMouse(hwnd, DID_OK) ;
  86.         }
  87.         WinSetWindowText(hwnd, "VNC connection info") ;
  88.     loadConn(hwnd)     ;
  89.     return (MRESULT) 0 ;
  90.  
  91.     case WM_COMMAND :
  92.         switch (SHORT1FROMMP(mp1)) {
  93.         case DID_OK :
  94.             WinDismissDlg(hwnd, DID_OK) ;
  95.             return (MRESULT) 0 ;
  96.         case DID_CANCEL :
  97.             WinDismissDlg(hwnd, DID_CANCEL) ;
  98.             return (MRESULT) 0 ;
  99.         default :
  100.             return (MRESULT) 0 ;
  101.         }    
  102.     }
  103.     return WinDefDlgProc(hwnd, msg, mp1, mp2) ;
  104. }
  105.  
  106. void    infoConn(void)
  107. {
  108.     WinDlgBox(HWND_DESKTOP, HWND_DESKTOP,
  109.             procConn, NULLHANDLE, IDD_MESG, NULL) ;
  110. }
  111.  
  112. /*
  113.  * infoAbout - about VNC viewer
  114.  */
  115.  
  116. static  void    loadAbout(HWND hwndDlg)
  117. {
  118.     HWND    hwnd = WinWindowFromID(hwndDlg, IDD_MTEXT) ;
  119.     APIRET  stat ;
  120.     PVOID   pRes  ;
  121.     PUCHAR  pDsc, pDst ;
  122.     ULONG   len ;
  123.     IPT     off ;
  124.     UCHAR   error[64]  ;
  125.     UCHAR   about[128] ;
  126.  
  127.     WinSendMsg(hwnd, MLM_DISABLEREFRESH, NULL, NULL) ;
  128.  
  129.     WinSendMsg(hwnd, MLM_FORMAT, MPFROMSHORT(MLFIE_CFTEXT), NULL) ;
  130.     WinSendMsg(hwnd, MLM_SETTABSTOP, MPFROMSHORT(20), NULL) ;
  131.  
  132.     WinSendMsg(hwnd, MLM_SETIMPORTEXPORT, MPFROMP(about), MPFROMSHORT(128)) ;
  133.  
  134.     stat = DosGetResource(NULLHANDLE, IDD_MTYPE, IDD_MTEXT_ABOUT, &pRes) ;
  135.     if (stat != 0) {
  136.         sprintf(about, "Error %d\n", stat) ;
  137.         pDsc = error ;
  138.     } else {
  139.         pDsc = (PUCHAR) pRes ;
  140.     }
  141.     pDst = about, len = 0, off = 0 ;
  142.  
  143.     while (*pDsc != '\0') {
  144.         if (len == 128) {
  145.             len = (ULONG) WinSendMsg(hwnd,
  146.                         MLM_IMPORT, MPFROMP(&off), MPFROMLONG(len)) ;
  147.             off += len ;
  148.             pDst = about, len = 0 ;
  149.         }
  150.         *pDst++ = *pDsc++ ;
  151.         len += 1 ;
  152.     }
  153.     if (len > 0) {
  154.         WinSendMsg(hwnd, MLM_IMPORT, MPFROMP(&off), MPFROMLONG(len)) ;
  155.     }
  156.     DosFreeResource(pRes) ;
  157.     WinSendMsg(hwnd, MLM_ENABLEREFRESH, NULL, NULL) ;
  158. }
  159.  
  160. static MRESULT EXPENTRY procAbout(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
  161. {
  162.     UCHAR   title[128] ;
  163.  
  164.     switch (msg) {
  165.     
  166.     case WM_INITDLG :
  167.         if (SessDlgCenter) {
  168.         dialogAtCenter(hwnd) ;
  169.     } else {
  170.             dialogAtMouse(hwnd, DID_OK) ;
  171.         }
  172.         sprintf(title, "About %s", ProgramVers) ;
  173.         WinSetWindowText(hwnd, title) ;
  174.     loadAbout(hwnd)    ;
  175.     return (MRESULT) 0 ;
  176.  
  177.     case WM_COMMAND :
  178.         switch (SHORT1FROMMP(mp1)) {
  179.         case DID_OK :
  180.             WinDismissDlg(hwnd, DID_OK) ;
  181.             return (MRESULT) 0 ;
  182.         case DID_CANCEL :
  183.             WinDismissDlg(hwnd, DID_CANCEL) ;
  184.             return (MRESULT) 0 ;
  185.         default :
  186.             return (MRESULT) 0 ;
  187.         }    
  188.     }
  189.     return WinDefDlgProc(hwnd, msg, mp1, mp2) ;
  190. }
  191.  
  192. void    infoAbout(void)
  193. {
  194.     WinDlgBox(HWND_DESKTOP, HWND_DESKTOP,
  195.             procAbout, NULLHANDLE, IDD_MESG, NULL) ;
  196. }
  197.