diff options
Diffstat (limited to 'app/wlib/gtklib/util.c')
-rw-r--r-- | app/wlib/gtklib/util.c | 235 |
1 files changed, 124 insertions, 111 deletions
diff --git a/app/wlib/gtklib/util.c b/app/wlib/gtklib/util.c index 61b5b95..e6587a0 100644 --- a/app/wlib/gtklib/util.c +++ b/app/wlib/gtklib/util.c @@ -23,6 +23,7 @@ #include <stdio.h> #include <stdlib.h> #include <signal.h> +#include <string.h> #define GTK_DISABLE_SINGLE_INCLUDES #define GDK_DISABLE_DEPRECATED @@ -74,7 +75,7 @@ static wBool_t reverseIcon = #endif - + /* ***************************************************************************** * @@ -91,7 +92,7 @@ static wBool_t reverseIcon = */ GdkPixbuf* wlibPixbufFromXBM( - wIcon_p ip ) + wIcon_p ip) { GdkPixbuf * pixbuf; @@ -99,39 +100,41 @@ GdkPixbuf* wlibPixbufFromXBM( char line2[40]; char ** pixmapData; - int row,col,wb; + int row, col, wb; long rgb; const char * bits; - wb = (ip->w+7)/8; - pixmapData = (char**)malloc((3+ip->h) * sizeof *pixmapData); + wb = (ip->w + 7) / 8; + pixmapData = (char**) malloc((3 + ip->h) * sizeof *pixmapData); pixmapData[0] = line0; rgb = wDrawGetRGB(ip->color); sprintf(line0, " %d %d 2 1", ip->w, ip->h); - sprintf(line2, "# c #%2.2lx%2.2lx%2.2lx", (rgb>>16)&0xFF, (rgb>>8)&0xFF, - rgb&0xFF); + sprintf(line2, "# c #%2.2lx%2.2lx%2.2lx", (rgb >> 16)&0xFF, (rgb >> 8)&0xFF, + rgb & 0xFF); pixmapData[1] = ". c None s None"; pixmapData[2] = line2; bits = ip->bits; - for (row = 0; row<ip->h; row++) { - pixmapData[row+3] = (char*)malloc((ip->w+1) * sizeof **pixmapData); + for (row = 0; row < ip->h; row++) { + pixmapData[row + 3] = (char*) malloc((ip->w + 1) * sizeof **pixmapData); - for (col = 0; col<ip->w; col++) { - if (bits[ row*wb+(col>>3) ] & (1<<(col&07))) { - pixmapData[row+3][col] = '#'; - } else { - pixmapData[row+3][col] = '.'; + for (col = 0; col < ip->w; col++) { + if (bits[ row * wb + (col >> 3) ] & (1 << (col & 07))) { + pixmapData[row + 3][col] = '#'; + } + else { + pixmapData[row + 3][col] = '.'; } } - pixmapData[row+3][ip->w] = 0; + pixmapData[row + 3][ip->w] = 0; } - pixbuf = gdk_pixbuf_new_from_xpm_data((const char **)pixmapData); + pixbuf = gdk_pixbuf_new_from_xpm_data((const char **) pixmapData); - for (row = 0; row<ip->h; row++) { - free(pixmapData[row+3]); + for (row = 0; row < ip->h; row++) { + free(pixmapData[row + 3]); } + free(pixmapData); return pixbuf; } @@ -145,7 +148,7 @@ GdkPixbuf* wlibPixbufFromXBM( int wlibAddLabel(wControl_p b, const char * labelStr) { - GtkRequisition requisition; + GtkRequisition requisition, reqwidget; if (labelStr == NULL) { return 0; @@ -153,12 +156,15 @@ int wlibAddLabel(wControl_p b, const char * labelStr) b->label = gtk_label_new(wlibConvertInput(labelStr)); gtk_widget_size_request(b->label, &requisition); + if (b->widget) + gtk_widget_size_request(b->widget, &reqwidget); + else + reqwidget.height = requisition.height; gtk_container_add(GTK_CONTAINER(b->parent->widget), b->label); gtk_fixed_move(GTK_FIXED(b->parent->widget), b->label, - b->realX-requisition.width-8, b->realY+LABEL_OFFSET); - + b->realX - requisition.width - 8, b->realY + (reqwidget.height/2 - requisition.height/2)); gtk_widget_show(b->label); - return requisition.width+8; + return requisition.width + 8; } /** @@ -175,15 +181,15 @@ int wlibAddLabel(wControl_p b, const char * labelStr) */ void * wlibAlloc( - wWin_p parent, - wType_e type, - wPos_t origX, - wPos_t origY, - const char * labelStr, - int size, - void * data) + wWin_p parent, + wType_e type, + wPos_t origX, + wPos_t origY, + const char * labelStr, + int size, + void * data) { - wControl_p w = (wControl_p)malloc(size); + wControl_p w = (wControl_p) malloc(size); char * cp; memset(w, 0, size); @@ -197,7 +203,7 @@ void * wlibAlloc( w->origY = origY; if (labelStr) { - cp = (char*)malloc(strlen(labelStr)+1); + cp = (char*) malloc(strlen(labelStr) + 1); w->labelStr = cp; for (; *labelStr; labelStr++) @@ -220,19 +226,21 @@ void * wlibAlloc( */ void wlibComputePos( - wControl_p b) + wControl_p b) { wWin_p w = b->parent; if (b->origX >= 0) { b->realX = b->origX; - } else { + } + else { b->realX = w->lastX + (-b->origX) - 1; } if (b->origY >= 0) { - b->realY = b->origY + BORDERSIZE + ((w->option&F_MENUBAR)?MENUH:0); - } else { + b->realY = b->origY + BORDERSIZE + ((w->option & F_MENUBAR) ? w->menu_height : 0); + } + else { b->realY = w->lastY + (-b->origY) - 1; } } @@ -244,7 +252,7 @@ void wlibComputePos( */ void wlibControlGetSize( - wControl_p b) + wControl_p b) { GtkRequisition requisition; gtk_widget_size_request(b->widget, &requisition); @@ -258,14 +266,15 @@ void wlibControlGetSize( */ void wlibAddButton( - wControl_p b) + wControl_p b) { wWin_p win = b->parent; wBool_t resize = FALSE; if (win->first == NULL) { win->first = b; - } else { + } + else { win->last->next = b; } @@ -275,7 +284,7 @@ void wlibAddButton( win->lastX = b->realX + b->w; win->lastY = b->realY + b->h; - if (win->option&F_AUTOSIZE) { + if (win->option & F_AUTOSIZE) { if (win->lastX > win->realX) { win->realX = win->lastX; @@ -312,20 +321,20 @@ void wlibAddButton( */ wControl_p wlibGetControlFromPos( - wWin_p win, - wPos_t x, - wPos_t y) + wWin_p win, + wPos_t x, + wPos_t y) { wControl_p b; wPos_t xx, yy; - for (b=win->first; b != NULL; b = b->next) { + for (b = win->first; b != NULL; b = b->next) { if (b->widget && gtk_widget_get_visible(b->widget)) { xx = b->realX; yy = b->realY; - if (xx <= x && x < xx+b->w && - yy <= y && y < yy+b->h) { + if (xx <= x && x < xx + b->w && + yy <= y && y < yy + b->h) { return b; } } @@ -334,7 +343,7 @@ wControl_p wlibGetControlFromPos( return NULL; } - + /* ***************************************************************************** * @@ -352,13 +361,12 @@ void wBeep(void) gdk_display_beep(gdk_display_get_default()); } - /** * Flushs all commands to the Window. */ void wFlush( - void) + void) { while (gtk_events_pending()) { gtk_main_iteration(); @@ -427,36 +435,36 @@ char * wlibConvertInput(const char * inString) /* Already UTF-8 encoded? */ if (g_utf8_validate(inString, -1, NULL)) - /* Yes, do not double-convert */ - { - return (char*)inString; + /* Yes, do not double-convert */ { + return (char*) inString; } - for (cp=inString, extCharCnt=0; *cp; cp++) { + for (cp = inString, extCharCnt = 0; *cp; cp++) { if (((*cp)&0x80) != '\0') { extCharCnt++; } } - inCharCnt = cp-inString; + inCharCnt = cp - inString; if (extCharCnt == '\0') { - return (char*)inString; + return (char*) inString; } - DYNARR_SET(char, conversionBuffer_da, inCharCnt+extCharCnt+1); + DYNARR_SET(char, conversionBuffer_da, inCharCnt + extCharCnt + 1); - for (cp=inString, cq=(char*)conversionBuffer_da.ptr; *cp; cp++) { + for (cp = inString, cq = (char*) conversionBuffer_da.ptr; *cp; cp++) { if (((*cp)&0x80) != 0) { - *cq++ = 0xC0+(((*cp)&0xC0)>>6); - *cq++ = 0x80+((*cp)&0x3F); - } else { + *cq++ = 0xC0 + (((*cp)&0xC0) >> 6); + *cq++ = 0x80 + ((*cp)&0x3F); + } + else { *cq++ = *cp; } } *cq = 0; - return (char*)conversionBuffer_da.ptr; + return (char*) conversionBuffer_da.ptr; } /** @@ -472,31 +480,32 @@ char * wlibConvertOutput(const char * inString) char * cq; int extCharCnt, inCharCnt; - for (cp=inString, extCharCnt=0; *cp; cp++) { + for (cp = inString, extCharCnt = 0; *cp; cp++) { if (((*cp)&0xC0) == 0x80) { extCharCnt++; } } - inCharCnt = cp-inString; + inCharCnt = cp - inString; if (extCharCnt == '\0') { - return (char*)inString; + return (char*) inString; } - DYNARR_SET(char, conversionBuffer_da, inCharCnt+1); + DYNARR_SET(char, conversionBuffer_da, inCharCnt + 1); - for (cp=inString, cq=(char*)conversionBuffer_da.ptr; *cp; cp++) { + for (cp = inString, cq = (char*) conversionBuffer_da.ptr; *cp; cp++) { if (((*cp)&0x80) != 0) { - *cq++ = 0xC0+(((*cp)&0xC0)>>6); - *cq++ = 0x80+((*cp)&0x3F); - } else { + *cq++ = 0xC0 + (((*cp)&0xC0) >> 6); + *cq++ = 0x80 + ((*cp)&0x3F); + } + else { *cq++ = *cp; } } *cq = '\0'; - return (char*)conversionBuffer_da.ptr; + return (char*) conversionBuffer_da.ptr; } /*-----------------------------------------------------------------*/ @@ -506,30 +515,32 @@ static dynArr_t accelData_da; #define accelData(N) DYNARR_N( accelData_t, accelData_da, N ) static guint accelKeyMap[] = { - 0, /* wAccelKey_None, */ - GDK_KEY_Delete, /* wAccelKey_Del, */ - GDK_KEY_Insert, /* wAccelKey_Ins, */ - GDK_KEY_Home, /* wAccelKey_Home, */ - GDK_KEY_End, /* wAccelKey_End, */ - GDK_KEY_Page_Up, /* wAccelKey_Pgup, */ - GDK_KEY_Page_Down, /* wAccelKey_Pgdn, */ - GDK_KEY_Up, /* wAccelKey_Up, */ - GDK_KEY_Down, /* wAccelKey_Down, */ - GDK_KEY_Right, /* wAccelKey_Right, */ - GDK_KEY_Left, /* wAccelKey_Left, */ - GDK_KEY_BackSpace, /* wAccelKey_Back, */ - GDK_KEY_F1, /* wAccelKey_F1, */ - GDK_KEY_F2, /* wAccelKey_F2, */ - GDK_KEY_F3, /* wAccelKey_F3, */ - GDK_KEY_F4, /* wAccelKey_F4, */ - GDK_KEY_F5, /* wAccelKey_F5, */ - GDK_KEY_F6, /* wAccelKey_F6, */ - GDK_KEY_F7, /* wAccelKey_F7, */ - GDK_KEY_F8, /* wAccelKey_F8, */ - GDK_KEY_F9, /* wAccelKey_F9, */ - GDK_KEY_F10, /* wAccelKey_F10, */ - GDK_KEY_F11, /* wAccelKey_F11, */ - GDK_KEY_F12 /* wAccelKey_F12, */ + 0, /* wAccelKey_None, */ + GDK_KEY_Delete, /* wAccelKey_Del, */ + GDK_KEY_Insert, /* wAccelKey_Ins, */ + GDK_KEY_Home, /* wAccelKey_Home, */ + GDK_KEY_End, /* wAccelKey_End, */ + GDK_KEY_Page_Up, /* wAccelKey_Pgup, */ + GDK_KEY_Page_Down, /* wAccelKey_Pgdn, */ + GDK_KEY_Up, /* wAccelKey_Up, */ + GDK_KEY_Down, /* wAccelKey_Down, */ + GDK_KEY_Right, /* wAccelKey_Right, */ + GDK_KEY_Left, /* wAccelKey_Left, */ + GDK_KEY_BackSpace, /* wAccelKey_Back, */ + GDK_KEY_F1, /* wAccelKey_F1, */ + GDK_KEY_F2, /* wAccelKey_F2, */ + GDK_KEY_F3, /* wAccelKey_F3, */ + GDK_KEY_F4, /* wAccelKey_F4, */ + GDK_KEY_F5, /* wAccelKey_F5, */ + GDK_KEY_F6, /* wAccelKey_F6, */ + GDK_KEY_F7, /* wAccelKey_F7, */ + GDK_KEY_F8, /* wAccelKey_F8, */ + GDK_KEY_F9, /* wAccelKey_F9, */ + GDK_KEY_F10, /* wAccelKey_F10, */ + GDK_KEY_F11, /* wAccelKey_F11, */ + GDK_KEY_F12, /* wAccelKey_F12, */ + GDK_KEY_KP_Add, /* wAccelKey_Numpad_Add */ + GDK_KEY_KP_Subtract /* wAccelKey_Numpad_Subtract */ }; /** @@ -542,20 +553,20 @@ static guint accelKeyMap[] = { */ void wAttachAccelKey( - wAccelKey_e key, - int modifier, - wAccelKeyCallBack_p action, - void * data) + wAccelKey_e key, + int modifier, + wAccelKeyCallBack_p action, + void * data) { accelData_t * ad; - if (key < 1 || key > wAccelKey_F12) { - fprintf(stderr, "wAttachAccelKey(%d) out of range\n", (int)key); - return; - } +// if (key < 1 || key > wAccelKey_F12) { +// fprintf(stderr, "wAttachAccelKey(%d) out of range\n", (int) key); +// return; +// } DYNARR_APPEND(accelData_t, accelData_da, 10); - ad = &accelData(accelData_da.cnt-1); + ad = &accelData(accelData_da.cnt - 1); ad->key = key; ad->modifier = modifier; ad->action = action; @@ -570,7 +581,7 @@ void wAttachAccelKey( */ struct accelData_t * wlibFindAccelKey( - GdkEventKey * event) + GdkEventKey * event) { accelData_t * ad; int modifier = 0; @@ -587,9 +598,9 @@ struct accelData_t * wlibFindAccelKey( modifier |= WKEY_ALT; } - for (ad=&accelData(0); ad<&accelData(accelData_da.cnt); ad++) + for (ad = &accelData(0); ad<&accelData(accelData_da.cnt); ad++) if (event->keyval == accelKeyMap[ad->key] && - modifier == ad->modifier) { + modifier == ad->modifier) { return ad; } @@ -604,7 +615,7 @@ struct accelData_t * wlibFindAccelKey( */ wBool_t wlibHandleAccelKey( - GdkEventKey *event) + GdkEventKey *event) { accelData_t * ad = wlibFindAccelKey(event); @@ -615,7 +626,7 @@ wBool_t wlibHandleAccelKey( return FALSE; } - + /** * Add control to circular list of synonymous controls. Synonymous controls are kept in sync by * calling wControlLinkedActive for one member of the list @@ -652,8 +663,9 @@ void wControlLinkedActive(wControl_p b, int active) wControl_p savePtr = b; if (savePtr->type == B_MENUITEM) { - wMenuPushEnable((wMenuPush_p)savePtr, active); - } else { + wMenuPushEnable((wMenuPush_p) savePtr, active); + } + else { wControlActive(savePtr, active); } @@ -662,8 +674,9 @@ void wControlLinkedActive(wControl_p b, int active) while (savePtr && savePtr != b) { if (savePtr->type == B_MENUITEM) { - wMenuPushEnable((wMenuPush_p)savePtr, active); - } else { + wMenuPushEnable((wMenuPush_p) savePtr, active); + } + else { wControlActive(savePtr, active); } |