/* FvwmButtons v2.0.41-plural-Z-alpha, copyright 1996, Jarl Totland * This module, and the entire GoodStuff program, and the concept for * interfacing this module to the Window Manager, are all original work * by Robert Nation * * Copyright 1993, Robert Nation. No guarantees or warantees or anything * are provided or implied in any way whatsoever. Use this program at your * own risk. Permission to use this program for any purpose is given, * as long as the copyright is kept intact. */ #include #include #include #include #include #include "FvwmButtons.h" /** *** DumpButtons() *** Debug function. May only be called after ShuffleButtons has been called. **/ void DumpButtons(button_info *b) { if(!b) { fprintf(stderr,"NULL\n"); return; } if(b!=UberButton) { int button=buttonNum(b); fprintf(stderr,"0x%lx(%ix%i@(%i,%i),0x%04lx): ", (unsigned long)b,b->BWidth,b->BHeight, buttonXPos(b,button),buttonYPos(b,button),b->flags); } else fprintf(stderr,"0x%lx(%ix%i@,0x%04lx): ",(unsigned long)b, b->BWidth,b->BHeight,b->flags); if(b->flags&b_Font) fprintf(stderr,"Font(%s,0x%lx) ",b->font_string,(unsigned long)b->font); if(b->flags&b_Padding) fprintf(stderr,"Padding(%i,%i) ",b->xpad,b->ypad); if(b->flags&b_Frame) fprintf(stderr,"Framew(%i) ",b->framew); if(b->flags&b_Title) fprintf(stderr,"Title(%s) ",b->title); if(b->flags&b_Icon) fprintf(stderr,"Icon(%s,%i) ",b->icon_file,(int)b->IconWin); if(b->flags&b_Action) fprintf(stderr,"\n Action(%s,%s,%s,%s) ", b->action[0]?b->action[0]:"", b->action[1]?b->action[1]:"", b->action[2]?b->action[2]:"", b->action[3]?b->action[3]:""); if(b->flags&b_Swallow) { fprintf(stderr,"Swallow(0x%02x) ",b->swallow); if(b->swallow&b_Respawn) fprintf(stderr,"\n Respawn(%s) ",b->spawn); } if(b->flags&b_Hangon) fprintf(stderr,"Hangon(%s) ",b->hangon); fprintf(stderr,"\n"); if(b->flags&b_Container) { int i=0; fprintf(stderr," Container(%ix%i=%i buttons 0x%04lx (alloc %i), size %ix%i, pos %i,%i)\n{ ", b->c->num_columns,b->c->num_rows,b->c->num_buttons,b->c->flags, b->c->allocated_buttons, b->c->ButtonWidth,b->c->ButtonHeight,b->c->xpos,b->c->ypos); /* fprintf(stderr," font(%s,%i) framew(%i) pad(%i,%i) { ", b->c->font_string,(int)b->c->font,b->c->framew,b->c->xpad, b->c->ypad); */ while(ic->num_buttons) fprintf(stderr,"0x%lx ",(unsigned long)b->c->buttons[i++]); fprintf(stderr,"}\n"); i=0; while(ic->num_buttons) DumpButtons(b->c->buttons[i++]); return; } } void SaveButtons(button_info *b) { int i; if(!b) return; if(b->BWidth>1 || b->BHeight>1) fprintf(stderr,"%ix%i ",b->BWidth,b->BHeight); if(b->flags&b_Font) fprintf(stderr,"Font %s ",b->font_string); if(b->flags&b_Fore) fprintf(stderr,"Fore %s ",b->fore); if(b->flags&b_Back) fprintf(stderr,"Back %s ",b->back); if(b->flags&b_Frame) fprintf(stderr,"Frame %i ",b->framew); if(b->flags&b_Padding) fprintf(stderr,"Padding %i %i ",b->xpad,b->ypad); if(b->flags&b_Title) { fprintf(stderr,"Title "); if(b->flags&b_Justify) { fprintf(stderr,"("); switch(b->justify&b_TitleHoriz) { case 0: fprintf(stderr,"Left"); break; case 1: fprintf(stderr,"Center"); break; case 2: fprintf(stderr,"Right"); break; } if(b->justify&b_Horizontal) fprintf(stderr,", Side"); fprintf(stderr,") "); } fprintf(stderr,"\"%s\" ",b->title); } if(b->flags&b_Icon) fprintf(stderr,"Icon \"%s\" ",b->icon_file); if(b->flags&b_Swallow) { fprintf(stderr,"Swallow "); if(b->swallow_mask) { fprintf(stderr,"("); if(b->swallow_mask&b_NoHints) { if(b->swallow&b_NoHints) fprintf(stderr,"NoHints "); else fprintf(stderr,"Hints "); } if(b->swallow_mask&b_Kill) { if(b->swallow&b_Kill) fprintf(stderr,"Kill "); else fprintf(stderr,"NoKill "); } if(b->swallow_mask&b_NoClose) { if(b->swallow&b_NoClose) fprintf(stderr,"NoClose "); else fprintf(stderr,"Close "); } if(b->swallow_mask&b_Respawn) { if(b->swallow&b_Respawn) fprintf(stderr,"Respawn "); else fprintf(stderr,"NoRespawn "); } if(b->swallow_mask&b_UseOld) { if(b->swallow&b_UseOld) fprintf(stderr,"UseOld "); else fprintf(stderr,"NoOld "); } if(b->swallow_mask&b_UseTitle) { if(b->swallow&b_UseTitle) fprintf(stderr,"UseTitle "); else fprintf(stderr,"NoTitle "); } fprintf(stderr,") "); } fprintf(stderr,"\"%s\" \"%s\" ",b->hangon,b->spawn); } if(b->flags&b_Action) { if(b->action[0]) fprintf(stderr,"Action `%s` ",b->action[0]); for(i=1;i<4;i++) if(b->action[i]) fprintf(stderr,"Action (Mouse %i) `%s` ",i,b->action[i]); } if(b->flags&b_Container) { fprintf(stderr,"Container (Columns %i Rows %i ",b->c->num_columns, b->c->num_rows); if(b->c->flags) { if(b->c->flags&b_Font) fprintf(stderr,"Font %s ",b->c->font_string); if(b->c->flags&b_Fore) fprintf(stderr,"Fore %s ",b->c->fore); if(b->c->flags&b_Back) fprintf(stderr,"Back %s ",b->c->back); if(b->c->flags&b_Frame) fprintf(stderr,"Frame %i ",b->c->framew); if(b->c->flags&b_Padding) fprintf(stderr,"Padding %i %i ",b->c->xpad,b->c->ypad); if(b->c->flags&b_Justify) { fprintf(stderr,"Title ("); switch(b->c->justify&b_TitleHoriz) { case 0: fprintf(stderr,"Left"); break; case 1: fprintf(stderr,"Center"); break; case 2: fprintf(stderr,"Right"); break; } if(b->c->justify&b_Horizontal) fprintf(stderr,", Side"); fprintf(stderr,") "); } if(b->c->swallow_mask) { fprintf(stderr,"Swallow ("); if(b->c->swallow_mask&b_NoHints) { if(b->c->swallow&b_NoHints) fprintf(stderr,"NoHints "); else fprintf(stderr,"Hints "); } if(b->c->swallow_mask&b_Kill) { if(b->c->swallow&b_Kill) fprintf(stderr,"Kill "); else fprintf(stderr,"NoKill "); } if(b->c->swallow_mask&b_NoClose) { if(b->c->swallow&b_NoClose) fprintf(stderr,"NoClose "); else fprintf(stderr,"Close "); } if(b->c->swallow_mask&b_Respawn) { if(b->c->swallow&b_Respawn) fprintf(stderr,"Respawn "); else fprintf(stderr,"NoRespawn "); } if(b->c->swallow_mask&b_UseOld) { if(b->c->swallow&b_UseOld) fprintf(stderr,"UseOld "); else fprintf(stderr,"NoOld "); } if(b->c->swallow_mask&b_UseTitle) { if(b->c->swallow&b_UseTitle) fprintf(stderr,"UseTitle "); else fprintf(stderr,"NoTitle "); } fprintf(stderr,") "); } } fprintf(stderr,")"); } fprintf(stderr,"\n"); if(b->flags&b_Container) { i=0; while(ic->num_buttons) SaveButtons(b->c->buttons[i++]); fprintf(stderr,"End\n"); } }