comparison gtk/dw.c @ 463:2d7b27204cd4

Add support for DW_BROWSER to specify browser executable fir dw_browse() Allow dw_messagebox() to display more text.
author mhessling@81767d24-ef19-dc11-ae90-00e081727c95
date Sat, 02 Aug 2003 05:04:22 +0000
parents 65bc397a7233
children 3251fbca6fb3
comparison
equal deleted inserted replaced
462:9d874ce0124a 463:2d7b27204cd4
54 { 0, 0x0000, 0xeeee, 0xeeee }, /* 14 bright cyan */ 54 { 0, 0x0000, 0xeeee, 0xeeee }, /* 14 bright cyan */
55 { 0, 0xffff, 0xffff, 0xffff }, /* 15 bright white */ 55 { 0, 0xffff, 0xffff, 0xffff }, /* 15 bright white */
56 }; 56 };
57 57
58 #define DW_THREAD_LIMIT 50 58 #define DW_THREAD_LIMIT 50
59
60 #ifndef max
61 # define max(a,b) (((a) > (b)) ? (a) : (b))
62 #endif
63
64 #ifndef min
65 # define min(a,b) (((a) < (b)) ? (a) : (b))
66 #endif
59 67
60 DWTID _dw_thread_list[DW_THREAD_LIMIT]; 68 DWTID _dw_thread_list[DW_THREAD_LIMIT];
61 GdkColor _foreground[DW_THREAD_LIMIT]; 69 GdkColor _foreground[DW_THREAD_LIMIT];
62 GdkColor _background[DW_THREAD_LIMIT]; 70 GdkColor _background[DW_THREAD_LIMIT];
63 int _transparent[DW_THREAD_LIMIT]; 71 int _transparent[DW_THREAD_LIMIT];
1164 { 1172 {
1165 HWND entrywindow, texttargetbox, imagetextbox, mainbox, okbutton, nobutton, yesbutton, cancelbutton, buttonbox, stext; 1173 HWND entrywindow, texttargetbox, imagetextbox, mainbox, okbutton, nobutton, yesbutton, cancelbutton, buttonbox, stext;
1166 ULONG flStyle = DW_FCF_TITLEBAR | DW_FCF_SHELLPOSITION | DW_FCF_DLGBORDER; 1174 ULONG flStyle = DW_FCF_TITLEBAR | DW_FCF_SHELLPOSITION | DW_FCF_DLGBORDER;
1167 DWDialog *dwwait; 1175 DWDialog *dwwait;
1168 va_list args; 1176 va_list args;
1169 char outbuf[256]; 1177 char outbuf[1000];
1170 char **xpm_data = NULL; 1178 char **xpm_data = NULL;
1171 int x, y, extra_width=0; 1179 int x, y, extra_width=0,text_width,text_height;
1180 gint width,height;
1181 GtkStyle *style;
1172 1182
1173 va_start(args, format); 1183 va_start(args, format);
1174 vsprintf(outbuf, format, args); 1184 vsprintf(outbuf, format, args);
1175 va_end(args); 1185 va_end(args);
1176 1186
1227 1237
1228 dw_box_pack_start( texttargetbox, handle, 32, 32, FALSE, FALSE, 2); 1238 dw_box_pack_start( texttargetbox, handle, 32, 32, FALSE, FALSE, 2);
1229 } 1239 }
1230 1240
1231 /* Create text */ 1241 /* Create text */
1242 text_width = 240;
1243 text_height = 0;
1232 stext = dw_text_new(outbuf, 0); 1244 stext = dw_text_new(outbuf, 0);
1233 dw_window_set_style(stext, DW_DT_WORDBREAK, DW_DT_WORDBREAK); 1245 dw_window_set_style(stext, DW_DT_WORDBREAK, DW_DT_WORDBREAK);
1234 dw_box_pack_start(texttargetbox, stext, 235+extra_width, 50, TRUE, TRUE, 2); 1246 style = gtk_widget_get_style(stext);
1247 gdk_text_extents(style->font, outbuf, strlen(outbuf), NULL, NULL, &width, NULL, NULL);
1248 gdk_text_extents(style->font, "(g", 2, NULL, &height, NULL, NULL, NULL);
1249 height = height+3;
1250 if(width < text_width)
1251 text_height = height*2;
1252 else if(width < text_width*2)
1253 text_height = height*3;
1254 else if(width < text_width*3)
1255 text_height = height*4;
1256 else /* width > (3*text_width) */
1257 {
1258 text_width = (width / 3) + 60;
1259 text_height = height*4;
1260 }
1261 dw_box_pack_start(texttargetbox, stext, text_width, text_height, TRUE, TRUE, 2);
1235 1262
1236 /* Buttons */ 1263 /* Buttons */
1237 buttonbox = dw_box_new(DW_HORZ, 10); 1264 buttonbox = dw_box_new(DW_HORZ, 10);
1238 1265
1239 dw_box_pack_start(mainbox, buttonbox, 0, 40, TRUE, FALSE, 0); 1266 dw_box_pack_start(mainbox, buttonbox, 0, 40, TRUE, FALSE, 0);
1276 cancelbutton = dw_button_new("Cancel", 1003L); 1303 cancelbutton = dw_button_new("Cancel", 1003L);
1277 dw_box_pack_start(buttonbox, cancelbutton, 50, 30, TRUE, FALSE, 2); 1304 dw_box_pack_start(buttonbox, cancelbutton, 50, 30, TRUE, FALSE, 2);
1278 dw_signal_connect(cancelbutton, DW_SIGNAL_CLICKED, DW_SIGNAL_FUNC(_dw_cancel_func), (void *)dwwait); 1305 dw_signal_connect(cancelbutton, DW_SIGNAL_CLICKED, DW_SIGNAL_FUNC(_dw_cancel_func), (void *)dwwait);
1279 } 1306 }
1280 1307
1281 x = (dw_screen_width() - (280+extra_width))/2; 1308 height = max(50,text_height)+100;
1282 y = (dw_screen_height() - 150)/2; 1309 x = (dw_screen_width() - (text_width+60+extra_width))/2;
1283 1310 y = (dw_screen_height() - height)/2;
1284 dw_window_set_pos_size(entrywindow, x, y, (280+extra_width), 150); 1311
1312 dw_window_set_pos_size(entrywindow, x, y, (text_width+60+extra_width), height);
1285 1313
1286 dw_window_show(entrywindow); 1314 dw_window_show(entrywindow);
1287 1315
1288 return (int)dw_dialog_wait(dwwait); 1316 return (int)dw_dialog_wait(dwwait);
1289 } 1317 }
7702 * url: Uniform resource locator. 7730 * url: Uniform resource locator.
7703 */ 7731 */
7704 int dw_browse(char *url) 7732 int dw_browse(char *url)
7705 { 7733 {
7706 /* Is there a way to find the webbrowser in Unix? */ 7734 /* Is there a way to find the webbrowser in Unix? */
7707 char *execargs[3], *browser = "netscape"; 7735 char *execargs[3], *browser = "netscape", *tmp;
7708 7736
7737 tmp = getenv( "DW_BROWSER" );
7738 if(tmp) browser = tmp;
7709 execargs[0] = browser; 7739 execargs[0] = browser;
7710 execargs[1] = url; 7740 execargs[1] = url;
7711 execargs[2] = NULL; 7741 execargs[2] = NULL;
7712 7742
7713 return dw_exec(browser, DW_EXEC_GUI, execargs); 7743 return dw_exec(browser, DW_EXEC_GUI, execargs);