home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / x / volume10 / contool / part01 / window_misc.c < prev   
C/C++ Source or Header  |  1990-10-30  |  3KB  |  102 lines

  1. /************************************************************************/
  2. /*    Copyright 1988-1990 by Chuck Musciano and Harris Corporation    */
  3. /*                                    */
  4. /*    Permission to use, copy, modify, and distribute this software    */
  5. /*    and its documentation for any purpose and without fee is    */
  6. /*    hereby granted, provided that the above copyright notice    */
  7. /*    appear in all copies and that both that copyright notice and    */
  8. /*    this permission notice appear in supporting documentation, and    */
  9. /*    that the name of Chuck Musciano and Harris Corporation not be    */
  10. /*    used in advertising or publicity pertaining to distribution    */
  11. /*    of the software without specific, written prior permission.    */
  12. /*    Chuck Musciano and Harris Corporation make no representations    */
  13. /*    about the suitability of this software for any purpose.  It is    */
  14. /*    provided "as is" without express or implied warranty.  This     */
  15. /*    software may not be sold without the prior explicit permission    */
  16. /*    of Harris Corporation.                        */
  17. /************************************************************************/
  18.  
  19. /************************************************************************/
  20. /*                                    */
  21. /*    window_misc.c    miscellaneous window management functions    */
  22. /*                                    */
  23. /************************************************************************/
  24.  
  25. #include    <stdio.h>
  26. #include    <sys/param.h>
  27. #include    <sys/types.h>
  28. #include    <xview/xview.h>
  29. #include    <xview/panel.h>
  30. #include    <xview/xv_xrect.h>
  31.  
  32. #include    "manifest.h"
  33. #include    "contool_ui.h"
  34.  
  35. /************************************************************************/
  36. EXPORT    void    pinned_menu_notify(menu, item)
  37.  
  38. Menu        menu;
  39. Menu_item    item;
  40.  
  41. {    Xv_opaque    pin_window     = (Xv_opaque) xv_get(menu, MENU_PIN_WINDOW);
  42.     void        (*menu_notify)() = (void (*)()) xv_get(menu, MENU_GEN_PROC);
  43.     void        (*item_notify)() = (void (*)()) xv_get(item, MENU_GEN_PROC);
  44.     
  45.     if (pin_window && xv_get(pin_window, XV_SHOW)) {
  46.        if (menu_notify)
  47.           (*menu_notify)(menu, MENU_NOTIFY);
  48.        if (item_notify)
  49.           (*item_notify)(item, MENU_NOTIFY);
  50.        if (item_notify)
  51.           (*item_notify)(item, MENU_NOTIFY_DONE);
  52.        if (menu_notify)
  53.           (*menu_notify)(menu, MENU_NOTIFY_DONE);
  54.     }
  55. }
  56.  
  57. /************************************************************************/
  58. EXPORT    Panel_setting    file_completion(item, event)
  59.  
  60. Panel_item    item;
  61. Event        *event;
  62.  
  63. {    char    *p, *expand_filename();
  64.  
  65.     switch (event_action(event)) {
  66.        case '\n' :
  67.        case '\r' :
  68.        case ' '  : if ((p = expand_filename(xv_get(item, PANEL_VALUE))) == NULL)
  69.                  window_bell(xv_get(item, XV_OWNER));
  70.                   else
  71.                      xv_set(item, PANEL_VALUE, p, 0);
  72.                   return(PANEL_NONE);
  73.        default   : return(panel_text_notify(item, event));
  74.        }
  75. }
  76.  
  77. /************************************************************************/
  78. EXPORT    void    place_dialog(base, dialog)
  79.  
  80. Xv_opaque    base;
  81. Xv_opaque    dialog;
  82.  
  83. {    Rect    br, dr, sr;
  84.  
  85.     sr = *((Rect *) xv_get(base, WIN_SCREEN_RECT));
  86.     frame_get_rect(base, &br);
  87.     frame_get_rect(dialog, &dr);
  88.     if (rect_right(&br) + dr.r_width < sr.r_width) {
  89.        dr.r_left = rect_right(&br);
  90.        dr.r_top = br.r_top;
  91.        }
  92.     else if (dr.r_width <= br.r_left) {
  93.        dr.r_left = br.r_left - dr.r_width;
  94.        dr.r_top = br.r_top;
  95.        }
  96.     else {
  97.        dr.r_left = br.r_left + 32;
  98.        dr.r_top = br.r_top + 32;
  99.        }
  100.     frame_set_rect(dialog, &dr);
  101. }
  102.