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 / infobox.c < prev    next >
C/C++ Source or Header  |  1997-06-24  |  12KB  |  479 lines

  1. #include "enlightenment.h"
  2.  
  3. void InitInfoBox()
  4. {
  5. }
  6.  
  7. void ShowLine(int *x,int *y,int i,int j,char *s,Window *wlst,Pixmap *plst,Pixmap *mlst)
  8. {
  9.    int k;
  10.    GC gcp;
  11.    GC gcm;
  12.    XGCValues gcv;
  13.    
  14.    k=0;
  15.    while (wlst[k]) k++;
  16.    
  17.    wlst[k]=XCreateSimpleWindow(disp,root,*x,*y,ifb.width,ifb.height,0,0,0);
  18.    *y=*y+ifb.height;
  19.    plst[k]=XCreatePixmap(disp,wlst[k],ifb.width,ifb.height,depth);
  20.    mlst[k]=XCreatePixmap(disp,wlst[k],ifb.width,ifb.height,1);
  21.    gcp=XCreateGC(disp,plst[k],0,&gcv);
  22.    gcm=XCreateGC(disp,mlst[k],0,&gcv);
  23.    XSetForeground(disp,gcm,0);
  24.    XFillRectangle(disp,mlst[k],gcm,0,0,ifb.width,ifb.height);
  25.    DrawText(plst[k],s,ifb.mouse_width+ifb.key_width,0,
  26.         ifb.width-(ifb.mouse_width+ifb.key_width),ifb.height);
  27.    DrawTextMask(mlst[k],s,ifb.mouse_width+ifb.key_width,0,
  28.         ifb.width-(ifb.mouse_width+ifb.key_width),ifb.height);
  29.    XSetForeground(disp,gcp,1);
  30.    XSetForeground(disp,gcm,1);
  31.    if (i==1) 
  32.      {
  33.     XCopyArea(disp,ifb.k2_pmap,plst[k],gcp,0,0,ifb.key_width,ifb.height,0,0);
  34.     XCopyArea(disp,ifb.k2_mask,mlst[k],gcm,0,0,ifb.key_width,ifb.height,0,0);
  35.      }
  36.    if (i==2) 
  37.      {
  38.     XCopyArea(disp,ifb.k3_pmap,plst[k],gcp,0,0,ifb.key_width,ifb.height,0,0);
  39.     XCopyArea(disp,ifb.k3_mask,mlst[k],gcm,0,0,ifb.key_width,ifb.height,0,0);
  40.      }
  41.    if (i==3) 
  42.      {
  43.     XCopyArea(disp,ifb.k4_pmap,plst[k],gcp,0,0,ifb.key_width,ifb.height,0,0);
  44.     XCopyArea(disp,ifb.k4_mask,mlst[k],gcm,0,0,ifb.key_width,ifb.height,0,0);
  45.      }
  46.    if (j==0) 
  47.      {
  48.     XCopyArea(disp,ifb.m1_pmap,plst[k],gcp,0,0,ifb.mouse_width,ifb.height,ifb.key_width,0);
  49.     XCopyArea(disp,ifb.m1_mask,mlst[k],gcm,0,0,ifb.mouse_width,ifb.height,ifb.key_width,0);
  50.      }
  51.    if (j==1) 
  52.      {
  53.     XCopyArea(disp,ifb.m2_pmap,plst[k],gcp,0,0,ifb.mouse_width,ifb.height,ifb.key_width,0);
  54.     XCopyArea(disp,ifb.m2_mask,mlst[k],gcm,0,0,ifb.mouse_width,ifb.height,ifb.key_width,0);
  55.      }
  56.    if (j==2) 
  57.      {
  58.     XCopyArea(disp,ifb.m3_pmap,plst[k],gcp,0,0,ifb.mouse_width,ifb.height,ifb.key_width,0);
  59.     XCopyArea(disp,ifb.m3_mask,mlst[k],gcm,0,0,ifb.mouse_width,ifb.height,ifb.key_width,0);
  60.      }
  61.    XShapeCombineMask(disp,wlst[k],ShapeBounding,0,0,mlst[k],ShapeSet);
  62.    XSetWindowBackgroundPixmap(disp,wlst[k],plst[k]);
  63.    XMapWindow(disp,wlst[k]);
  64.    XFreeGC(disp,gcp);
  65.    XFreeGC(disp,gcm);
  66. }
  67.  
  68. void GenListBtn(BWin *bwin)
  69. {
  70.    int i,j;
  71.    int x,y,d;
  72.    Window w1,w2;
  73.    char s[1024];
  74.    Window wlst[64];
  75.    Pixmap plst[64];
  76.    Pixmap mlst[64];
  77.    XEvent xev;
  78.    
  79.    for (i=0;i<64;i++) 
  80.      {
  81.     wlst[i]=0;
  82.     plst[i]=0;
  83.     mlst[i]=0;
  84.      }
  85.    XQueryPointer(disp,root,&w1,&w2,&x,&y,&d,&d,&d);
  86.    if ((DisplayWidth(disp,screen)-x)<ifb.width)
  87.      x=DisplayWidth(disp,screen)-ifb.width;
  88.    for (i=0;i<4;i++)
  89.      {
  90.     for (j=0;j<3;j++)
  91.       {
  92.          if (bwin->action[j][i].id==12)
  93.            {
  94.           sprintf(s,"Menu : %s",bwin->action[j][i].params);
  95.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  96.            }
  97.          else if (bwin->action[j][i].id==13)
  98.            {
  99.           sprintf(s,"Execute : %s",bwin->action[j][i].params);
  100.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  101.            }
  102.          else if (bwin->action[j][i].id==14)
  103.            {
  104.           sprintf(s,"Exit");
  105.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  106.            }
  107.          else if (bwin->action[j][i].id==16)
  108.            {
  109.           sprintf(s,"Restart");
  110.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  111.            }
  112.          else if (bwin->action[j][i].id==17)
  113.            {
  114.           sprintf(s,"Restart Theme : %s",bwin->action[j][i].params);
  115.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  116.            }
  117.          else if (bwin->action[j][i].id==18)
  118.            {
  119.           sprintf(s,"Root Background : %s",bwin->action[j][i].params);
  120.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  121.            }
  122.       }
  123.      }
  124.    XSync(disp,False);
  125.    XNextEvent(disp,&xev);
  126.    XPutBackEvent(disp,&xev);
  127.    i=0;
  128.    while(wlst[i])
  129.      {
  130.     XDestroyWindow(disp,wlst[i]);
  131.     XFreePixmap(disp,plst[i]);
  132.     XFreePixmap(disp,mlst[i]);
  133.     i++;
  134.      }
  135. }
  136.  
  137.  
  138. void GenListEWin(int b)
  139. {
  140.    int i,j;
  141.    int x,y,d;
  142.    Window w1,w2;
  143.    char s[1024];
  144.    Window wlst[64];
  145.    Pixmap plst[64];
  146.    Pixmap mlst[64];
  147.    XEvent xev;
  148.    
  149.    for (i=0;i<64;i++) 
  150.      {
  151.     wlst[i]=0;
  152.     plst[i]=0;
  153.     mlst[i]=0;
  154.      }
  155.    XQueryPointer(disp,root,&w1,&w2,&x,&y,&d,&d,&d);
  156.    if ((DisplayWidth(disp,screen)-x)<ifb.width)
  157.      x=DisplayWidth(disp,screen)-ifb.width;
  158.    for (i=0;i<4;i++)
  159.      {
  160.     for (j=0;j<3;j++)
  161.       {
  162.          if (cfg.subwin_action[b][j][i].id==1)
  163.            {
  164.           sprintf(s,"Move Window");
  165.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  166.            }
  167.          else if (cfg.subwin_action[b][j][i].id==2)
  168.            {
  169.           sprintf(s,"Resize Window");
  170.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  171.            }
  172.          else if (cfg.subwin_action[b][j][i].id==3)
  173.            {
  174.           sprintf(s,"Iconify Window");
  175.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  176.            }
  177.          else if (cfg.subwin_action[b][j][i].id==4)
  178.            {
  179.           sprintf(s,"Kill Window");
  180.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  181.            }
  182.          else if (cfg.subwin_action[b][j][i].id==5)
  183.            {
  184.           sprintf(s,"Raise Window to Top");
  185.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  186.            }
  187.          else if (cfg.subwin_action[b][j][i].id==6)
  188.            {
  189.           sprintf(s,"Lower Window to Bottom");
  190.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  191.            }
  192.          else if (cfg.subwin_action[b][j][i].id==7)
  193.            {
  194.           sprintf(s,"Rasie/Lower Window");
  195.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  196.            }
  197.          else if (cfg.subwin_action[b][j][i].id==8)
  198.            {
  199.           sprintf(s,"Toggle Window Max Height");
  200.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  201.            }
  202.          else if (cfg.subwin_action[b][j][i].id==9)
  203.            {
  204.           sprintf(s,"Toggle Window Max Width");
  205.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  206.            }
  207.          else if (cfg.subwin_action[b][j][i].id==10)
  208.            {
  209.           sprintf(s,"Toggle Window Max Size");
  210.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  211.            }
  212.          else if (cfg.subwin_action[b][j][i].id==11)
  213.            {
  214.           sprintf(s,"Configure Enlightenment");
  215.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  216.            }
  217.          if (cfg.subwin_action[b][j][i].id==12)
  218.            {
  219.           sprintf(s,"Menu : %s",cfg.subwin_action[b][j][i].params);
  220.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  221.            }
  222.          else if (cfg.subwin_action[b][j][i].id==13)
  223.            {
  224.           sprintf(s,"Execute : %s",cfg.subwin_action[b][j][i].params);
  225.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  226.            }
  227.          else if (cfg.subwin_action[b][j][i].id==14)
  228.            {
  229.           sprintf(s,"Exit");
  230.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  231.            }
  232.          else if (cfg.subwin_action[b][j][i].id==12)
  233.            {
  234.           sprintf(s,"Exit");
  235.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  236.            }
  237.          else if (cfg.subwin_action[b][j][i].id==14)
  238.            {
  239.           sprintf(s,"Exit");
  240.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  241.            }
  242.          else if (cfg.subwin_action[b][j][i].id==14)
  243.            {
  244.           sprintf(s,"Exit");
  245.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  246.            }
  247.          else if (cfg.subwin_action[b][j][i].id==14)
  248.            {
  249.           sprintf(s,"Exit");
  250.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  251.            }
  252.          else if (cfg.subwin_action[b][j][i].id==15)
  253.            {
  254.           sprintf(s,"Forcibly Kill Window");
  255.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  256.            }
  257.          else if (cfg.subwin_action[b][j][i].id==16)
  258.            {
  259.           sprintf(s,"Restart");
  260.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  261.            }
  262.          else if (cfg.subwin_action[b][j][i].id==17)
  263.            {
  264.           sprintf(s,"Restart Theme : %s",cfg.subwin_action[b][j][i].params);
  265.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  266.            }
  267.          else if (cfg.subwin_action[b][j][i].id==18)
  268.            {
  269.           sprintf(s,"Root Background : %s",cfg.subwin_action[b][j][i].params);
  270.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  271.            }
  272.       }
  273.      }
  274.    XSync(disp,False);
  275.    XNextEvent(disp,&xev);
  276.    XPutBackEvent(disp,&xev);
  277.    i=0;
  278.    while(wlst[i])
  279.      {
  280.     XDestroyWindow(disp,wlst[i]);
  281.     XFreePixmap(disp,plst[i]);
  282.     XFreePixmap(disp,mlst[i]);
  283.     i++;
  284.      }
  285. }
  286.  
  287. void GenListIcon()
  288. {
  289.    int i,j;
  290.    int x,y,d;
  291.    Window w1,w2;
  292.    char s[1024];
  293.    Window wlst[64];
  294.    Pixmap plst[64];
  295.    Pixmap mlst[64];
  296.    XEvent xev;
  297.    
  298.    for (i=0;i<64;i++) 
  299.      {
  300.     wlst[i]=0;
  301.     plst[i]=0;
  302.     mlst[i]=0;
  303.      }
  304.    XQueryPointer(disp,root,&w1,&w2,&x,&y,&d,&d,&d);
  305.    if ((DisplayWidth(disp,screen)-x)<ifb.width)
  306.      x=DisplayWidth(disp,screen)-ifb.width;
  307.    for (i=0;i<4;i++)
  308.      {
  309.     for (j=0;j<3;j++)
  310.       {
  311.          if (icfg.action[j][i].id==1)
  312.            {
  313.           sprintf(s,"Move Window");
  314.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  315.            }
  316.          else if (icfg.action[j][i].id==2)
  317.            {
  318.           sprintf(s,"Resize Window");
  319.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  320.            }
  321.          else if (icfg.action[j][i].id==3)
  322.            {
  323.           sprintf(s,"Iconify Window");
  324.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  325.            }
  326.          else if (icfg.action[j][i].id==4)
  327.            {
  328.           sprintf(s,"Kill Window");
  329.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  330.            }
  331.          else if (icfg.action[j][i].id==5)
  332.            {
  333.           sprintf(s,"Raise Window to Top");
  334.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  335.            }
  336.          else if (icfg.action[j][i].id==6)
  337.            {
  338.           sprintf(s,"Lower Window to Bottom");
  339.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  340.            }
  341.          else if (icfg.action[j][i].id==7)
  342.            {
  343.           sprintf(s,"Rasie/Lower Window");
  344.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  345.            }
  346.          else if (icfg.action[j][i].id==8)
  347.            {
  348.           sprintf(s,"Toggle Window Max Height");
  349.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  350.            }
  351.          else if (icfg.action[j][i].id==9)
  352.            {
  353.           sprintf(s,"Toggle Window Max Width");
  354.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  355.            }
  356.          else if (icfg.action[j][i].id==10)
  357.            {
  358.           sprintf(s,"Toggle Window Max Size");
  359.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  360.            }
  361.          else if (icfg.action[j][i].id==11)
  362.            {
  363.           sprintf(s,"Configure Enlightenment");
  364.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  365.            }
  366.          if (icfg.action[j][i].id==12)
  367.            {
  368.           sprintf(s,"Menu : %s",icfg.action[j][i].params);
  369.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  370.            }
  371.          else if (icfg.action[j][i].id==13)
  372.            {
  373.           sprintf(s,"Execute : %s",icfg.action[j][i].params);
  374.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  375.            }
  376.          else if (icfg.action[j][i].id==14)
  377.            {
  378.           sprintf(s,"Exit");
  379.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  380.            }
  381.          else if (icfg.action[j][i].id==12)
  382.            {
  383.           sprintf(s,"Exit");
  384.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  385.            }
  386.          else if (icfg.action[j][i].id==14)
  387.            {
  388.           sprintf(s,"Exit");
  389.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  390.            }
  391.          else if (icfg.action[j][i].id==14)
  392.            {
  393.           sprintf(s,"Exit");
  394.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  395.            }
  396.          else if (icfg.action[j][i].id==14)
  397.            {
  398.           sprintf(s,"Exit");
  399.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  400.            }
  401.          else if (icfg.action[j][i].id==15)
  402.            {
  403.           sprintf(s,"Forcibly Kill Window");
  404.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  405.            }
  406.          else if (icfg.action[j][i].id==16)
  407.            {
  408.           sprintf(s,"Restart");
  409.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  410.            }
  411.          else if (icfg.action[j][i].id==17)
  412.            {
  413.           sprintf(s,"Restart Theme : %s",icfg.action[j][i].params);
  414.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  415.            }
  416.          else if (icfg.action[j][i].id==18)
  417.            {
  418.           sprintf(s,"Root Background : %s",icfg.action[j][i].params);
  419.           ShowLine(&x,&y,i,j,s,wlst,plst,mlst);
  420.            }
  421.       }
  422.      }
  423.    XSync(disp,False);
  424.    XNextEvent(disp,&xev);
  425.    XPutBackEvent(disp,&xev);
  426.    i=0;
  427.    while(wlst[i])
  428.      {
  429.     XDestroyWindow(disp,wlst[i]);
  430.     XFreePixmap(disp,plst[i]);
  431.     XFreePixmap(disp,mlst[i]);
  432.     i++;
  433.      }
  434. }
  435.  
  436. void InfoBox()
  437. {
  438.    int x,y,d;
  439.    Window w1,w2;
  440.    
  441.    if (ifb.nodo) return;
  442.    XQueryPointer(disp,root,&w1,&w2,&x,&y,&d,&d,&d);
  443.    if (w2) ShowInfo(w2);
  444. }
  445.  
  446. void ShowInfo(Window win)
  447. {
  448.    EWin *ewin;
  449.    BWin *bwin;
  450.    Icon *icon;
  451.    int wb;
  452.    int x,y,d;
  453.    Window w1,w2;
  454.    
  455.    ewin=ListGetWinID(global_l,win);
  456.    if (ewin)
  457.      {
  458.     XQueryPointer(disp,win,&w1,&w2,&x,&y,&d,&d,&d);
  459.     win=w2;
  460.      }
  461.    ewin=ListGetSubWinID(global_l,win);
  462.    if (ewin)
  463.      {
  464.     wb=GetEWinButtonID(ewin,win);
  465.     GenListEWin(wb);
  466.      }
  467.    else if (bwin=GetButtonWinID(win))
  468.      {
  469.     GenListBtn(bwin);
  470.      }
  471.    else if (win==icfg.bg_win)
  472.      {
  473.     XQueryPointer(disp,win,&w1,&w2,&x,&y,&d,&d,&d);
  474.     win=w2;
  475.     icon=GetIconWinID(win);
  476.     GenListIcon();
  477.      }
  478. }
  479.