home *** CD-ROM | disk | FTP | other *** search
/ Dream 52 / Amiga_Dream_52.iso / Linux / Enlightenment / enl_DR-0.10.tar.gz / enl_DR-0.10.tar / enl / status.c < prev    next >
C/C++ Source or Header  |  1997-05-28  |  6KB  |  144 lines

  1. #include "enlightenment.h"
  2.  
  3. void Init_StatusWin()
  4. {
  5.    Image *im;
  6.    XSetWindowAttributes xatt;
  7.    
  8.    im=LoadImage(imd,scfg.icons_bg,scfg.icons_icl);
  9.    if (!im) 
  10.      {
  11.     Alert("PANIC!\nERROR.........\nCannot Load status image:\n%s\nQuitting..\n",scfg.icons_bg);
  12.     exit(1);;
  13.      }
  14.    ImlibRender(imd,im,scfg.icons_w,scfg.icons_h);
  15.    scfg.icons_pmap=ImlibMoveImageToPixmap(imd,im);
  16.    scfg.icons_mask=ImlibMoveMaskToPixmap(imd,im);
  17.    ImlibDestroyImage(imd,im);
  18.    im=LoadImage(imd,scfg.iconsbox_bg,scfg.iconsbox_icl);
  19.    if (!im) 
  20.      {
  21.     Alert("PANIC!\nERROR.........\nCannot Load status image:\n%s\nQuitting..\n",scfg.iconsbox_bg);
  22.     exit(1);
  23.      }
  24.    ImlibRender(imd,im,scfg.iconsbox_w,scfg.iconsbox_h);
  25.    scfg.iconsbox_pmap=ImlibMoveImageToPixmap(imd,im);
  26.    scfg.iconsbox_mask=ImlibMoveMaskToPixmap(imd,im);
  27.    ImlibDestroyImage(imd,im);
  28.    im=LoadImage(imd,scfg.text_bg,scfg.text_icl);
  29.    if (!im) 
  30.      {
  31.     Alert("PANIC!\nERROR.........\nCannot Load status image:\n%s\nQuitting..\n",scfg.text_bg);
  32.     exit(1);
  33.      }
  34.    ImlibRender(imd,im,scfg.text_w,scfg.text_h);
  35.    scfg.text_pmap=ImlibMoveImageToPixmap(imd,im);
  36.    scfg.text_mask=ImlibMoveMaskToPixmap(imd,im);
  37.    ImlibDestroyImage(imd,im);
  38.    im=LoadImage(imd,scfg.textbox_bg,scfg.textbox_icl);
  39.    if (!im) 
  40.      {
  41.     Alert("PANIC!\nERROR.........\nCannot Load status image:\n%s\nQuitting..\n",scfg.textbox_bg);
  42.     exit(1);
  43.      }
  44.    ImlibRender(imd,im,scfg.textbox_w,scfg.textbox_h);
  45.    scfg.textbox_pmap=ImlibMoveImageToPixmap(imd,im);
  46.    scfg.textbox_mask=ImlibMoveMaskToPixmap(imd,im);
  47.    ImlibDestroyImage(imd,im);
  48.    xatt.override_redirect=True;
  49.    scfg.icons_win=XCreateWindow(disp,root,scfg.icons_x,scfg.icons_y,scfg.icons_w,scfg.icons_h,
  50.                 0,depth,InputOutput,visual,CWOverrideRedirect,&xatt);
  51.    scfg.iconsbox_win=XCreateWindow(disp,scfg.icons_win,scfg.iconsbox_x,scfg.iconsbox_y,scfg.iconsbox_w,scfg.iconsbox_h,
  52.                 0,depth,InputOutput,visual,CWOverrideRedirect,&xatt);
  53.    scfg.text_win=XCreateWindow(disp,root,scfg.text_x,scfg.text_y,scfg.text_w,scfg.text_h,
  54.                 0,depth,InputOutput,visual,CWOverrideRedirect,&xatt);
  55.    scfg.textbox_win=XCreateWindow(disp,scfg.text_win,scfg.textbox_x,scfg.textbox_y,scfg.textbox_w,scfg.textbox_h,
  56.                 0,depth,InputOutput,visual,CWOverrideRedirect,&xatt);
  57.    if (scfg.icons_pmap) XSetWindowBackgroundPixmap(disp,scfg.icons_win,scfg.icons_pmap);
  58.    if (scfg.icons_mask) XShapeCombineMask(disp,scfg.icons_win,ShapeBounding,0,0,scfg.icons_mask,ShapeSet);
  59.    if (scfg.iconsbox_pmap) XSetWindowBackgroundPixmap(disp,scfg.iconsbox_win,scfg.iconsbox_pmap);
  60.    if (scfg.iconsbox_mask) XShapeCombineMask(disp,scfg.iconsbox_win,ShapeBounding,0,0,scfg.iconsbox_mask,ShapeSet);
  61.    if (scfg.text_pmap) XSetWindowBackgroundPixmap(disp,scfg.text_win,scfg.text_pmap);
  62.    if (scfg.text_mask) XShapeCombineMask(disp,scfg.text_win,ShapeBounding,0,0,scfg.text_mask,ShapeSet);
  63.    if (scfg.textbox_pmap) XSetWindowBackgroundPixmap(disp,scfg.textbox_win,scfg.textbox_pmap);
  64.    if (scfg.textbox_mask) XShapeCombineMask(disp,scfg.textbox_win,ShapeBounding,0,0,scfg.textbox_mask,ShapeSet);
  65.                         
  66.    XMapWindow(disp,scfg.iconsbox_win);
  67.    XMapWindow(disp,scfg.icons_win);
  68.    XMapWindow(disp,scfg.textbox_win);
  69.    XMapWindow(disp,scfg.text_win);
  70.    scfg.nexticon_x=0;
  71.    scfg.nexticon_y=0;
  72.    scfg.iconwin_list=NULL;
  73.    XSync(disp,False);
  74. }
  75.  
  76. void Kill_StatusWin()
  77. {
  78.    struct swlist *ptr;
  79.    
  80.    if (scfg.icons_pmap) XFreePixmap(disp,scfg.icons_pmap);    
  81.    if (scfg.iconsbox_pmap) XFreePixmap(disp,scfg.iconsbox_pmap);    
  82.    if (scfg.text_pmap) XFreePixmap(disp,scfg.text_pmap);    
  83.    if (scfg.textbox_pmap) XFreePixmap(disp,scfg.textbox_pmap);    
  84.    if (scfg.icons_bg) free(scfg.icons_bg);
  85.    if (scfg.iconsbox_bg) free(scfg.iconsbox_bg);
  86.    if (scfg.text_bg) free(scfg.text_bg);
  87.    if (scfg.textbox_bg) free(scfg.textbox_bg);
  88.    ptr=scfg.iconwin_list;
  89.    while(ptr)
  90.      {
  91.     if (ptr->win) XDestroyWindow(disp,ptr->win);
  92.     if (ptr->pmap) XFreePixmap(disp,ptr->pmap);
  93.     if (ptr->mask) XFreePixmap(disp,ptr->mask);
  94.     ptr=ptr->next;
  95.      }
  96.    XDestroyWindow(disp,scfg.icons_win);
  97.    XDestroyWindow(disp,scfg.iconsbox_win);
  98.    XDestroyWindow(disp,scfg.text_win);
  99.    XDestroyWindow(disp,scfg.textbox_win);
  100.    if (scfg.icons_pmap) XFreePixmap(disp,scfg.icons_pmap);
  101.    if (scfg.icons_mask) XFreePixmap(disp,scfg.icons_mask);
  102.    if (scfg.iconsbox_pmap) XFreePixmap(disp,scfg.iconsbox_pmap);
  103.    if (scfg.iconsbox_mask) XFreePixmap(disp,scfg.iconsbox_mask);
  104.    if (scfg.text_pmap) XFreePixmap(disp,scfg.text_pmap);
  105.    if (scfg.text_mask) XFreePixmap(disp,scfg.text_mask);
  106.    if (scfg.textbox_pmap) XFreePixmap(disp,scfg.textbox_pmap);
  107.    if (scfg.textbox_mask) XFreePixmap(disp,scfg.textbox_mask);
  108. }
  109.  
  110. void ShowStatus(char *text, char *icon, ImColor *icl)
  111. {
  112.    struct swlist *ptr;
  113.    struct swlist *pptr;
  114.    Image *im;
  115.    int w,h;
  116.    
  117.    im=LoadImage(imd,icon,icl);
  118.    ptr=scfg.iconwin_list;
  119.    while(ptr)
  120.      {
  121.     pptr=ptr;
  122.     ptr=ptr->next;
  123.      }
  124.    ptr=malloc(sizeof(struct swlist));
  125.    ptr->next=NULL;
  126.    if (scfg.iconwin_list) pptr->next=ptr;
  127.    else scfg.iconwin_list=ptr;
  128.    h=scfg.iconsbox_h;
  129.    w=(im->rgb_width*scfg.iconsbox_h)/im->rgb_height;
  130.    ImlibRender(imd,im,w,h);
  131.    ptr->pmap=ImlibMoveImageToPixmap(imd,im);
  132.    ptr->mask=ImlibMoveMaskToPixmap(imd,im);
  133.    ImlibDestroyImage(imd,im);
  134.    ptr->win=XCreateSimpleWindow(disp,scfg.iconsbox_win,scfg.nexticon_x,scfg.nexticon_y,w,h,0,0,0);
  135.    scfg.nexticon_x+=w;
  136.    if (ptr->pmap) XSetWindowBackgroundPixmap(disp,ptr->win,ptr->pmap);
  137.    if (ptr->mask) XShapeCombineMask(disp,ptr->win,ShapeBounding,0,0,ptr->mask,ShapeSet);
  138.    XClearWindow(disp,ptr->win);
  139.    XMapWindow(disp,ptr->win);
  140.    XClearWindow(disp,scfg.textbox_win);
  141.    DrawText(scfg.textbox_win,text,0,0,scfg.textbox_w,scfg.textbox_h);
  142.    XSync(disp,False);
  143. }
  144.