Mercurial > dwindows
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); |