comparison gtk/dw.c @ 1503:79c99c612725

Allow passing NULL to dw_container_change/set_item() on GTK2.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Mon, 26 Dec 2011 21:40:35 +0000
parents d77b8cf25f04
children fcdd9e3c735a
comparison
equal deleted inserted replaced
1502:dc41efe8a53f 1503:79c99c612725
7143 * Internal representation of dw_container_set_item() extracted so we can pass 7143 * Internal representation of dw_container_set_item() extracted so we can pass
7144 * two data pointers; icon and text for dw_filesystem_set_item(). 7144 * two data pointers; icon and text for dw_filesystem_set_item().
7145 */ 7145 */
7146 void _dw_container_set_item(HWND handle, void *pointer, int column, int row, void *data, char *text) 7146 void _dw_container_set_item(HWND handle, void *pointer, int column, int row, void *data, char *text)
7147 { 7147 {
7148 char numbuf[11], textbuffer[101]; 7148 char numbuf[11] = {0}, textbuffer[101] = {0};
7149 int flag = 0; 7149 int flag = 0;
7150 GtkWidget *clist; 7150 GtkWidget *clist;
7151 int _locked_by_me = FALSE; 7151 int _locked_by_me = FALSE;
7152 7152
7153 DW_MUTEX_LOCK; 7153 DW_MUTEX_LOCK;
7165 row += GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(clist), "_dw_insertpos")); 7165 row += GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(clist), "_dw_insertpos"));
7166 } 7166 }
7167 7167
7168 if(flag & DW_CFA_BITMAPORICON) 7168 if(flag & DW_CFA_BITMAPORICON)
7169 { 7169 {
7170 HICN hicon = *((HICN *)data);
7171 GdkBitmap *bitmap = NULL; 7170 GdkBitmap *bitmap = NULL;
7172 GdkPixmap *pixmap = _find_pixmap(&bitmap, hicon, clist, NULL, NULL); 7171 GdkPixmap *pixmap = NULL;
7173 7172
7173 if(data)
7174 {
7175 HICN hicon = *((HICN *)data);
7176 pixmap = _find_pixmap(&bitmap, hicon, clist, NULL, NULL);
7177 }
7174 gtk_clist_set_pixmap(GTK_CLIST(clist), row, column, pixmap ? pixmap : _dw_tmppixmap, pixmap ? bitmap : _dw_tmpbitmap); 7178 gtk_clist_set_pixmap(GTK_CLIST(clist), row, column, pixmap ? pixmap : _dw_tmppixmap, pixmap ? bitmap : _dw_tmpbitmap);
7175 } 7179 }
7176 else if(flag & DW_CFA_STRINGANDICON) 7180 else if(flag & DW_CFA_STRINGANDICON)
7177 { 7181 {
7178 HICN hicon = *((HICN *)data);
7179 GdkBitmap *bitmap = NULL; 7182 GdkBitmap *bitmap = NULL;
7180 GdkPixmap *pixmap = _find_pixmap(&bitmap, hicon, clist, NULL, NULL); 7183 GdkPixmap *pixmap = NULL;
7181 7184
7182 gtk_clist_set_pixtext(GTK_CLIST(clist), row, column, text, 2, pixmap ? pixmap : _dw_tmppixmap, pixmap ? bitmap : _dw_tmpbitmap); 7185 if(data)
7186 {
7187 HICN hicon = *((HICN *)data);
7188 pixmap = _find_pixmap(&bitmap, hicon, clist, NULL, NULL);
7189 }
7190 gtk_clist_set_pixtext(GTK_CLIST(clist), row, column, text ? text : textbuffer, 2, pixmap ? pixmap : _dw_tmppixmap, pixmap ? bitmap : _dw_tmpbitmap);
7183 } 7191 }
7184 else if(flag & DW_CFA_STRING) 7192 else if(flag & DW_CFA_STRING)
7185 { 7193 {
7186 char *tmp = *((char **)data); 7194 char *tmp = data ? *((char **)data) : textbuffer;
7187 gtk_clist_set_text(GTK_CLIST(clist), row, column, tmp); 7195 gtk_clist_set_text(GTK_CLIST(clist), row, column, tmp);
7188 } 7196 }
7189 else if(flag & DW_CFA_ULONG) 7197 else if(flag & DW_CFA_ULONG)
7190 { 7198 {
7191 ULONG tmp = *((ULONG *)data); 7199 if(data)
7192 7200 {
7193 snprintf(textbuffer, 100, "%lu", tmp); 7201 ULONG tmp = *((ULONG *)data);
7194 7202
7203 snprintf(textbuffer, 100, "%lu", tmp);
7204 }
7195 gtk_clist_set_text(GTK_CLIST(clist), row, column, textbuffer); 7205 gtk_clist_set_text(GTK_CLIST(clist), row, column, textbuffer);
7196 } 7206 }
7197 else if(flag & DW_CFA_DATE) 7207 else if(flag & DW_CFA_DATE)
7198 { 7208 {
7199 struct tm curtm; 7209 if(data)
7200 CDATE cdate = *((CDATE *)data); 7210 {
7201 7211 struct tm curtm;
7202 memset( &curtm, 0, sizeof(curtm) ); 7212 CDATE cdate = *((CDATE *)data);
7203 curtm.tm_mday = cdate.day; 7213
7204 curtm.tm_mon = cdate.month - 1; 7214 memset( &curtm, 0, sizeof(curtm) );
7205 curtm.tm_year = cdate.year - 1900; 7215 curtm.tm_mday = cdate.day;
7206 7216 curtm.tm_mon = cdate.month - 1;
7207 strftime(textbuffer, 100, "%x", &curtm); 7217 curtm.tm_year = cdate.year - 1900;
7208 7218
7219 strftime(textbuffer, 100, "%x", &curtm);
7220 }
7209 gtk_clist_set_text(GTK_CLIST(clist), row, column, textbuffer); 7221 gtk_clist_set_text(GTK_CLIST(clist), row, column, textbuffer);
7210 } 7222 }
7211 else if(flag & DW_CFA_TIME) 7223 else if(flag & DW_CFA_TIME)
7212 { 7224 {
7213 struct tm curtm; 7225 if(data)
7214 CTIME ctime = *((CTIME *)data); 7226 {
7215 7227 struct tm curtm;
7216 memset( &curtm, 0, sizeof(curtm) ); 7228 CTIME ctime = *((CTIME *)data);
7217 curtm.tm_hour = ctime.hours; 7229
7218 curtm.tm_min = ctime.minutes; 7230 memset( &curtm, 0, sizeof(curtm) );
7219 curtm.tm_sec = ctime.seconds; 7231 curtm.tm_hour = ctime.hours;
7220 7232 curtm.tm_min = ctime.minutes;
7221 strftime(textbuffer, 100, "%X", &curtm); 7233 curtm.tm_sec = ctime.seconds;
7222 7234
7235 strftime(textbuffer, 100, "%X", &curtm);
7236 }
7223 gtk_clist_set_text(GTK_CLIST(clist), row, column, textbuffer); 7237 gtk_clist_set_text(GTK_CLIST(clist), row, column, textbuffer);
7224 } 7238 }
7225 if(!pointer) 7239 if(!pointer)
7226 _update_clist_rows(clist); 7240 _update_clist_rows(clist);
7227 DW_MUTEX_UNLOCK; 7241 DW_MUTEX_UNLOCK;