From b925439a14ac8c8787034f30631ad60dd626a299 Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Sun, 6 Mar 2011 23:27:09 +0000 Subject: [PATCH] rationalise windows resource script make window options dialog into a property sheet svn path=/trunk/netsurf/; revision=11929 --- windows/about.c | 4 +- windows/bitmap.c | 4 +- windows/bitmap.h | 2 +- windows/download.c | 9 +- windows/gui.c | 216 ++--- windows/prefs.c | 1202 ++++++++++++++-------------- windows/prefs.h | 4 +- windows/res/banner.bmp | Bin 0 -> 79518 bytes windows/res/home.bmp | Bin 0 -> 2358 bytes windows/res/netsurf.gif | Bin 0 -> 14119 bytes windows/res/resource.rc | 461 ++++++----- windows/res/throbber/throbber0.bmp | Bin 0 -> 1866 bytes windows/res/throbber/throbber1.bmp | Bin 0 -> 1866 bytes windows/res/throbber/throbber2.bmp | Bin 0 -> 1866 bytes windows/res/throbber/throbber3.bmp | Bin 0 -> 1866 bytes windows/res/throbber/throbber4.bmp | Bin 0 -> 1866 bytes windows/res/throbber/throbber5.bmp | Bin 0 -> 1866 bytes windows/res/throbber/throbber6.bmp | Bin 0 -> 1866 bytes windows/res/throbber/throbber7.bmp | Bin 0 -> 1866 bytes windows/resourceid.h | 194 +++-- windows/windbg.c | 51 ++ windows/windbg.h | 24 + 22 files changed, 1171 insertions(+), 1000 deletions(-) create mode 100644 windows/res/banner.bmp create mode 100644 windows/res/home.bmp create mode 100644 windows/res/netsurf.gif create mode 100644 windows/res/throbber/throbber0.bmp create mode 100644 windows/res/throbber/throbber1.bmp create mode 100644 windows/res/throbber/throbber2.bmp create mode 100644 windows/res/throbber/throbber3.bmp create mode 100644 windows/res/throbber/throbber4.bmp create mode 100644 windows/res/throbber/throbber5.bmp create mode 100644 windows/res/throbber/throbber6.bmp create mode 100644 windows/res/throbber/throbber7.bmp diff --git a/windows/about.c b/windows/about.c index e73b270ce..515d36258 100644 --- a/windows/about.c +++ b/windows/about.c @@ -67,7 +67,7 @@ BOOL CALLBACK nsws_about_event_callback(HWND hwnd, UINT msg, WPARAM wparam, { switch(msg) { case WM_INITDIALOG: { - HWND content = GetDlgItem(hwnd, NSWS_ID_ABOUT_CONTENT); + HWND content = GetDlgItem(hwnd, IDC_ABOUT_CONTENT); /* modify label NSWS_ID_ABOUT_CONTENT */ size_t len; char *newcontent, *authors, *artists, *documenters; @@ -165,7 +165,7 @@ BOOL CALLBACK nsws_about_event_callback(HWND hwnd, UINT msg, WPARAM wparam, void nsws_about_dialog_init(HINSTANCE hinst, HWND parent) { - int ret = DialogBox(hinst, MAKEINTRESOURCE(NSWS_ID_ABOUT_DIALOG), parent, + int ret = DialogBox(hinst, MAKEINTRESOURCE(IDD_DLG_ABOUT), parent, nsws_about_event_callback); if (ret == -1) { warn_user(messages_get("NoMemory"), 0); diff --git a/windows/bitmap.c b/windows/bitmap.c index 2f9d2810f..aaa5633bc 100644 --- a/windows/bitmap.c +++ b/windows/bitmap.c @@ -40,7 +40,7 @@ void *bitmap_create(int width, int height, unsigned int state) { struct bitmap *bitmap; BITMAPV5HEADER *pbmi; - BITMAP *windib; + HBITMAP windib; uint8_t *pixdata; LOG(("width %d, height %d, state %u",width,height,state)); @@ -61,7 +61,7 @@ void *bitmap_create(int width, int height, unsigned int state) pbmi->bV5BlueMask = 0xff0000; /* blue mask */ pbmi->bV5AlphaMask = 0xff000000; /* alpha mask */ - windib = CreateDIBSection(NULL, (BITMAPINFO *)pbmi, DIB_RGB_COLORS, &pixdata, NULL, 0); + windib = CreateDIBSection(NULL, (BITMAPINFO *)pbmi, DIB_RGB_COLORS, (void **)&pixdata, NULL, 0); if (windib == NULL) { diff --git a/windows/bitmap.h b/windows/bitmap.h index 11c5cdce1..d05fef2ed 100644 --- a/windows/bitmap.h +++ b/windows/bitmap.h @@ -23,7 +23,7 @@ #include "desktop/plotters.h" struct bitmap { - BITMAP *windib; + HBITMAP windib; BITMAPV5HEADER *pbmi; int width; int height; diff --git a/windows/download.c b/windows/download.c index 9ba531db1..f128eea51 100644 --- a/windows/download.c +++ b/windows/download.c @@ -137,8 +137,7 @@ gui_download_window_create(download_context *ctx, struct gui_window *gui) bool nsws_download_window_up(struct gui_download_window *w) { - w->hwnd = CreateDialog(hinstance, MAKEINTRESOURCE( - NSWS_ID_DOWNLOAD_DIALOG), + w->hwnd = CreateDialog(hinstance, MAKEINTRESOURCE(IDD_DLG_DOWNLOAD), gui_window_main_window(w->window), nsws_download_event_callback); if (w->hwnd == NULL) { @@ -155,7 +154,7 @@ BOOL CALLBACK nsws_download_event_callback(HWND hwnd, UINT msg, WPARAM wparam, HWND sub; switch(msg){ case WM_INITDIALOG: - sub = GetDlgItem(hwnd, NSWS_ID_DOWNLOAD_LABEL); + sub = GetDlgItem(hwnd, IDC_DOWNLOAD_LABEL); nsws_download_update_label((void *)download1); nsws_download_update_progress((void *)download1); return TRUE; @@ -182,7 +181,7 @@ void nsws_download_update_label(void *p) schedule_remove(nsws_download_update_label, p); return; } - HWND sub = GetDlgItem(w->hwnd, NSWS_ID_DOWNLOAD_LABEL); + HWND sub = GetDlgItem(w->hwnd, IDC_DOWNLOAD_LABEL); char *size = human_friendly_bytesize(w->downloaded); int i = 0, temp = w->time_remaining; if (temp == -1) { @@ -230,7 +229,7 @@ void nsws_download_update_progress(void *p) schedule_remove(nsws_download_update_progress, p); return; } - HWND sub = GetDlgItem(w->hwnd, NSWS_ID_DOWNLOAD_PROGRESS); + HWND sub = GetDlgItem(w->hwnd, IDC_DOWNLOAD_PROGRESS); SendMessage(sub, PBM_SETPOS, (WPARAM)(w->progress / 100), 0); if (w->progress < 10000) schedule(50, nsws_download_update_progress, p); diff --git a/windows/gui.c b/windows/gui.c index 908cefaa6..d66f7a062 100644 --- a/windows/gui.c +++ b/windows/gui.c @@ -233,7 +233,7 @@ nsws_window_urlbar_callback(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) switch (msg) { case WM_CHAR: if (wparam == 13) { - SendMessage(gw->main, WM_COMMAND, NSWS_ID_LAUNCH_URL, 0); + SendMessage(gw->main, WM_COMMAND, IDC_MAIN_LAUNCH_URL, 0); return 0; } break; @@ -289,7 +289,7 @@ nsws_window_toolbar_command(struct gui_window *gw, switch(identifier) { - case NSWS_ID_URLBAR: + case IDC_MAIN_URLBAR: switch (notification_code) { case EN_CHANGE: LOG(("EN_CHANGE")); @@ -411,23 +411,23 @@ static void nsws_window_update_forward_back(struct gui_window *w) bool back = history_back_available(w->bw->history); if (w->mainmenu != NULL) { - EnableMenuItem(w->mainmenu, NSWS_ID_NAV_FORWARD, + EnableMenuItem(w->mainmenu, IDM_NAV_FORWARD, (forward ? MF_ENABLED : MF_GRAYED)); - EnableMenuItem(w->mainmenu, NSWS_ID_NAV_BACK, + EnableMenuItem(w->mainmenu, IDM_NAV_BACK, (back ? MF_ENABLED : MF_GRAYED)); - EnableMenuItem(w->rclick, NSWS_ID_NAV_FORWARD, + EnableMenuItem(w->rclick, IDM_NAV_FORWARD, (forward ? MF_ENABLED : MF_GRAYED)); - EnableMenuItem(w->rclick, NSWS_ID_NAV_BACK, + EnableMenuItem(w->rclick, IDM_NAV_BACK, (back ? MF_ENABLED : MF_GRAYED)); } if (w->toolbar != NULL) { SendMessage(w->toolbar, TB_SETSTATE, - (WPARAM) NSWS_ID_NAV_FORWARD, + (WPARAM) IDM_NAV_FORWARD, MAKELONG((forward ? TBSTATE_ENABLED : TBSTATE_INDETERMINATE), 0)); SendMessage(w->toolbar, TB_SETSTATE, - (WPARAM) NSWS_ID_NAV_BACK, + (WPARAM) IDM_NAV_BACK, MAKELONG((back ? TBSTATE_ENABLED : TBSTATE_INDETERMINATE), 0)); } @@ -454,31 +454,31 @@ static void nsws_update_edit(struct gui_window *w) del = false; } EnableMenuItem(w->mainmenu, - NSWS_ID_EDIT_PASTE, + IDM_EDIT_PASTE, (paste ? MF_ENABLED : MF_GRAYED)); EnableMenuItem(w->rclick, - NSWS_ID_EDIT_PASTE, + IDM_EDIT_PASTE, (paste ? MF_ENABLED : MF_GRAYED)); EnableMenuItem(w->mainmenu, - NSWS_ID_EDIT_COPY, + IDM_EDIT_COPY, (copy ? MF_ENABLED : MF_GRAYED)); EnableMenuItem(w->rclick, - NSWS_ID_EDIT_COPY, + IDM_EDIT_COPY, (copy ? MF_ENABLED : MF_GRAYED)); if (del == true) { - EnableMenuItem(w->mainmenu, NSWS_ID_EDIT_CUT, MF_ENABLED); - EnableMenuItem(w->mainmenu, NSWS_ID_EDIT_DELETE, MF_ENABLED); - EnableMenuItem(w->rclick, NSWS_ID_EDIT_CUT, MF_ENABLED); - EnableMenuItem(w->rclick, NSWS_ID_EDIT_DELETE, MF_ENABLED); + EnableMenuItem(w->mainmenu, IDM_EDIT_CUT, MF_ENABLED); + EnableMenuItem(w->mainmenu, IDM_EDIT_DELETE, MF_ENABLED); + EnableMenuItem(w->rclick, IDM_EDIT_CUT, MF_ENABLED); + EnableMenuItem(w->rclick, IDM_EDIT_DELETE, MF_ENABLED); } else { - EnableMenuItem(w->mainmenu, NSWS_ID_EDIT_CUT, MF_GRAYED); - EnableMenuItem(w->mainmenu, NSWS_ID_EDIT_DELETE, MF_GRAYED); - EnableMenuItem(w->rclick, NSWS_ID_EDIT_CUT, MF_GRAYED); - EnableMenuItem(w->rclick, NSWS_ID_EDIT_DELETE, MF_GRAYED); + EnableMenuItem(w->mainmenu, IDM_EDIT_CUT, MF_GRAYED); + EnableMenuItem(w->mainmenu, IDM_EDIT_DELETE, MF_GRAYED); + EnableMenuItem(w->rclick, IDM_EDIT_CUT, MF_GRAYED); + EnableMenuItem(w->rclick, IDM_EDIT_DELETE, MF_GRAYED); } } @@ -523,33 +523,33 @@ static void nsws_window_set_accels(struct gui_window *w) for (i = 0; i < nitems; i++) accels[i].fVirt = FCONTROL | FVIRTKEY; accels[0].key = 0x51; /* Q */ - accels[0].cmd = NSWS_ID_FILE_QUIT; + accels[0].cmd = IDM_FILE_QUIT; accels[1].key = 0x4E; /* N */ - accels[1].cmd = NSWS_ID_FILE_OPEN_WINDOW; + accels[1].cmd = IDM_FILE_OPEN_WINDOW; accels[2].key = VK_LEFT; - accels[2].cmd = NSWS_ID_NAV_BACK; + accels[2].cmd = IDM_NAV_BACK; accels[3].key = VK_RIGHT; - accels[3].cmd = NSWS_ID_NAV_FORWARD; + accels[3].cmd = IDM_NAV_FORWARD; accels[4].key = VK_UP; - accels[4].cmd = NSWS_ID_NAV_HOME; + accels[4].cmd = IDM_NAV_HOME; accels[5].key = VK_BACK; - accels[5].cmd = NSWS_ID_NAV_STOP; + accels[5].cmd = IDM_NAV_STOP; accels[6].key = VK_SPACE; - accels[6].cmd = NSWS_ID_NAV_RELOAD; + accels[6].cmd = IDM_NAV_RELOAD; accels[7].key = 0x4C; /* L */ - accels[7].cmd = NSWS_ID_FILE_OPEN_LOCATION; + accels[7].cmd = IDM_FILE_OPEN_LOCATION; accels[8].key = 0x57; /* w */ - accels[8].cmd = NSWS_ID_FILE_CLOSE_WINDOW; + accels[8].cmd = IDM_FILE_CLOSE_WINDOW; accels[9].key = 0x41; /* A */ - accels[9].cmd = NSWS_ID_EDIT_SELECT_ALL; + accels[9].cmd = IDM_EDIT_SELECT_ALL; accels[10].key = VK_F8; - accels[10].cmd = NSWS_ID_VIEW_SOURCE; + accels[10].cmd = IDM_VIEW_SOURCE; accels[11].key = VK_RETURN; accels[11].fVirt = FVIRTKEY; - accels[11].cmd = NSWS_ID_LAUNCH_URL; + accels[11].cmd = IDC_MAIN_LAUNCH_URL; accels[12].key = VK_F11; accels[12].fVirt = FVIRTKEY; - accels[12].cmd = NSWS_ID_VIEW_FULLSCREEN; + accels[12].cmd = IDM_VIEW_FULLSCREEN; w->acceltable = CreateAcceleratorTable(accels, nitems); } @@ -593,7 +593,7 @@ nsws_window_throbber_create(struct gui_window *w) NSWS_THROBBER_WIDTH, NSWS_THROBBER_WIDTH, w->main, - (HMENU) NSWS_ID_THROBBER, + (HMENU) IDC_MAIN_THROBBER, hinstance, NULL); @@ -650,7 +650,7 @@ nsws_window_urlbar_create(struct gui_window *gw, HWND hwndparent) urlwidth, urlheight, hwndparent, - (HMENU)NSWS_ID_URLBAR, + (HMENU)IDC_MAIN_URLBAR, hinstance, 0); @@ -681,11 +681,11 @@ nsws_window_toolbar_create(struct gui_window *gw, HWND hWndParent) HWND hWndToolbar; /* Toolbar buttons */ TBBUTTON tbButtons[] = { - {0, NSWS_ID_NAV_BACK, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0}, - {1, NSWS_ID_NAV_FORWARD, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0}, - {2, NSWS_ID_NAV_HOME, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0}, - {3, NSWS_ID_NAV_RELOAD, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0}, - {4, NSWS_ID_NAV_STOP, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0}, + {0, IDM_NAV_BACK, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0}, + {1, IDM_NAV_FORWARD, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0}, + {2, IDM_NAV_HOME, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0}, + {3, IDM_NAV_RELOAD, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0}, + {4, IDM_NAV_STOP, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0}, }; WNDPROC toolproc; @@ -716,13 +716,13 @@ nsws_window_toolbar_create(struct gui_window *gw, HWND hWndParent) gw->toolbuttonc = sizeof(tbButtons) / sizeof(TBBUTTON); /* Create the standard image list and assign to toolbar. */ - nsws_set_imagelist(hWndToolbar, TB_SETIMAGELIST, NSWS_ID_TOOLBAR_BITMAP, gw->toolbuttonsize, gw->toolbuttonc); + nsws_set_imagelist(hWndToolbar, TB_SETIMAGELIST, IDR_TOOLBAR_BITMAP, gw->toolbuttonsize, gw->toolbuttonc); /* Create the disabled image list and assign to toolbar. */ - nsws_set_imagelist(hWndToolbar, TB_SETDISABLEDIMAGELIST, NSWS_ID_TOOLBAR_GREY_BITMAP, gw->toolbuttonsize, gw->toolbuttonc); + nsws_set_imagelist(hWndToolbar, TB_SETDISABLEDIMAGELIST, IDR_TOOLBAR_BITMAP_GREY, gw->toolbuttonsize, gw->toolbuttonc); /* Create the hot image list and assign to toolbar. */ - nsws_set_imagelist(hWndToolbar, TB_SETHOTIMAGELIST, NSWS_ID_TOOLBAR_HOT_BITMAP, gw->toolbuttonsize, gw->toolbuttonc); + nsws_set_imagelist(hWndToolbar, TB_SETHOTIMAGELIST, IDR_TOOLBAR_BITMAP_HOT, gw->toolbuttonsize, gw->toolbuttonc); /* Add buttons. */ SendMessage(hWndToolbar, TB_BUTTONSTRUCTSIZE, (WPARAM)sizeof(TBBUTTON), 0); @@ -1265,7 +1265,7 @@ nsws_window_resize(struct gui_window *w, if (w->toolbar != NULL) { SendMessage(w->toolbar, TB_SETSTATE, - (WPARAM) NSWS_ID_NAV_STOP, + (WPARAM) IDM_NAV_STOP, MAKELONG(TBSTATE_INDETERMINATE, 0)); } @@ -1284,7 +1284,7 @@ nsws_window_command(struct gui_window *gw, switch(identifier) { - case NSWS_ID_FILE_QUIT: + case IDM_FILE_QUIT: { struct gui_window *w; w = window_list; @@ -1295,40 +1295,37 @@ nsws_window_command(struct gui_window *gw, break; } - case NSWS_ID_FILE_OPEN_LOCATION: + case IDM_FILE_OPEN_LOCATION: SetFocus(gw->urlbar); break; - case NSWS_ID_FILE_OPEN_WINDOW: + case IDM_FILE_OPEN_WINDOW: browser_window_create(NULL, gw->bw, NULL, false, false); break; - case NSWS_ID_FILE_CLOSE_WINDOW: + case IDM_FILE_CLOSE_WINDOW: PostMessage(gw->main, WM_CLOSE, 0, 0); break; - case NSWS_ID_FILE_SAVE_PAGE: + case IDM_FILE_SAVE_PAGE: break; - case NSWS_ID_FILE_SAVEAS_TEXT: + case IDM_FILE_SAVEAS_TEXT: break; - case NSWS_ID_FILE_SAVEAS_PDF: + case IDM_FILE_SAVEAS_PDF: break; - case NSWS_ID_FILE_SAVEAS_DRAWFILE: + case IDM_FILE_SAVEAS_POSTSCRIPT: break; - case NSWS_ID_FILE_SAVEAS_POSTSCRIPT: + case IDM_FILE_PRINT_PREVIEW: break; - case NSWS_ID_FILE_PRINT_PREVIEW: + case IDM_FILE_PRINT: break; - case NSWS_ID_FILE_PRINT: - break; - - case NSWS_ID_EDIT_CUT: + case IDM_EDIT_CUT: OpenClipboard(gw->main); EmptyClipboard(); CloseClipboard(); @@ -1339,7 +1336,7 @@ nsws_window_command(struct gui_window *gw, } break; - case NSWS_ID_EDIT_COPY: + case IDM_EDIT_COPY: OpenClipboard(gw->main); EmptyClipboard(); CloseClipboard(); @@ -1350,7 +1347,7 @@ nsws_window_command(struct gui_window *gw, } break; - case NSWS_ID_EDIT_PASTE: { + case IDM_EDIT_PASTE: { OpenClipboard(gw->main); HANDLE h = GetClipboardData(CF_TEXT); if (h != NULL) { @@ -1366,28 +1363,28 @@ nsws_window_command(struct gui_window *gw, break; } - case NSWS_ID_EDIT_DELETE: + case IDM_EDIT_DELETE: if (GetFocus() == gw->urlbar) SendMessage(gw->urlbar, WM_CUT, 0, 0); else browser_window_key_press(gw->bw, KEY_DELETE_RIGHT); break; - case NSWS_ID_EDIT_SELECT_ALL: + case IDM_EDIT_SELECT_ALL: if (GetFocus() == gw->urlbar) SendMessage(gw->urlbar, EM_SETSEL, 0, -1); else selection_select_all(gw->bw->sel); break; - case NSWS_ID_EDIT_SEARCH: + case IDM_EDIT_SEARCH: break; - case NSWS_ID_EDIT_PREFERENCES: - nsws_prefs_dialog_init(gw->main); + case IDM_EDIT_PREFERENCES: + nsws_prefs_dialog_init(hinstance, gw->main); break; - case NSWS_ID_NAV_BACK: + case IDM_NAV_BACK: if ((gw->bw != NULL) && (history_back_available(gw->bw->history))) { history_back(gw->bw, gw->bw->history); @@ -1395,7 +1392,7 @@ nsws_window_command(struct gui_window *gw, nsws_window_update_forward_back(gw); break; - case NSWS_ID_NAV_FORWARD: + case IDM_NAV_FORWARD: if ((gw->bw != NULL) && (history_forward_available(gw->bw->history))) { history_forward(gw->bw, gw->bw->history); @@ -1403,26 +1400,26 @@ nsws_window_command(struct gui_window *gw, nsws_window_update_forward_back(gw); break; - case NSWS_ID_NAV_HOME: + case IDM_NAV_HOME: browser_window_go(gw->bw, default_page, 0, true); break; - case NSWS_ID_NAV_STOP: + case IDM_NAV_STOP: browser_window_stop(gw->bw); break; - case NSWS_ID_NAV_RELOAD: + case IDM_NAV_RELOAD: browser_window_reload(gw->bw, true); break; - case NSWS_ID_NAV_LOCALHISTORY: + case IDM_NAV_LOCALHISTORY: nsws_localhistory_init(gw); break; - case NSWS_ID_NAV_GLOBALHISTORY: + case IDM_NAV_GLOBALHISTORY: break; - case NSWS_ID_VIEW_ZOOMPLUS: { + case IDM_VIEW_ZOOMPLUS: { int x, y; gui_window_get_scroll(gw, &x, &y); if (gw->bw != NULL) { @@ -1434,7 +1431,7 @@ nsws_window_command(struct gui_window *gw, break; } - case NSWS_ID_VIEW_ZOOMMINUS: { + case IDM_VIEW_ZOOMMINUS: { int x, y; gui_window_get_scroll(gw, &x, &y); if (gw->bw != NULL) { @@ -1447,7 +1444,7 @@ nsws_window_command(struct gui_window *gw, break; } - case NSWS_ID_VIEW_ZOOMNORMAL: { + case IDM_VIEW_ZOOMNORMAL: { int x, y; gui_window_get_scroll(gw, &x, &y); if (gw->bw != NULL) { @@ -1459,10 +1456,10 @@ nsws_window_command(struct gui_window *gw, break; } - case NSWS_ID_VIEW_SOURCE: + case IDM_VIEW_SOURCE: break; - case NSWS_ID_VIEW_SAVE_WIN_METRICS: { + case IDM_VIEW_SAVE_WIN_METRICS: { RECT r; GetWindowRect(gw->main, &r); option_window_x = r.left; @@ -1473,7 +1470,7 @@ nsws_window_command(struct gui_window *gw, break; } - case NSWS_ID_VIEW_FULLSCREEN: { + case IDM_VIEW_FULLSCREEN: { RECT rdesk; if (gw->fullscreen == NULL) { HWND desktop = GetDesktopWindow(); @@ -1511,36 +1508,36 @@ nsws_window_command(struct gui_window *gw, break; } - case NSWS_ID_VIEW_DOWNLOADS: + case IDM_VIEW_DOWNLOADS: break; - case NSWS_ID_VIEW_TOGGLE_DEBUG_RENDERING: + case IDM_VIEW_TOGGLE_DEBUG_RENDERING: html_redraw_debug = !html_redraw_debug; if (gw->bw != NULL) { browser_window_reformat(gw->bw, gw->width, gw->height); } break; - case NSWS_ID_VIEW_DEBUGGING_SAVE_BOXTREE: + case IDM_VIEW_DEBUGGING_SAVE_BOXTREE: break; - case NSWS_ID_VIEW_DEBUGGING_SAVE_DOMTREE: + case IDM_VIEW_DEBUGGING_SAVE_DOMTREE: break; - case NSWS_ID_HELP_CONTENTS: + case IDM_HELP_CONTENTS: break; - case NSWS_ID_HELP_GUIDE: + case IDM_HELP_GUIDE: break; - case NSWS_ID_HELP_INFO: + case IDM_HELP_INFO: break; - case NSWS_ID_HELP_ABOUT: + case IDM_HELP_ABOUT: nsws_about_dialog_init(hinstance, gw->main); break; - case NSWS_ID_LAUNCH_URL: + case IDC_MAIN_LAUNCH_URL: { if (GetFocus() != gw->urlbar) break; @@ -1570,6 +1567,7 @@ nsws_window_event_callback(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) gw = nsws_get_gui_window(hwnd); + if ((msg!=WM_SETCURSOR) && (msg!=WM_MOUSEMOVE) &&(msg!=WM_NCHITTEST)) LOG(("%s, hwnd %p, gw %p", msg_num_to_name(msg), hwnd, gw)); if (gw == NULL) { @@ -1641,12 +1639,12 @@ static void create_local_windows_classes(void) { w.cbClsExtra = 0; w.cbWndExtra = 0; w.hInstance = hinstance; - w.hIcon = LoadIcon(hinstance, MAKEINTRESOURCE(NSWS_ID_NETSURF32_ICON)); /* -> NetSurf */ + w.hIcon = LoadIcon(hinstance, MAKEINTRESOURCE(IDR_NETSURF32_ICON)); /* -> NetSurf */ w.hCursor = NULL; w.hbrBackground = (HBRUSH)(COLOR_MENU + 1); w.lpszMenuName = NULL; w.lpszClassName = windowclassname_main; - w.hIconSm = LoadIcon(hinstance, MAKEINTRESOURCE(NSWS_ID_NETSURF16_ICON)); /* -> NetSurf */ + w.hIconSm = LoadIcon(hinstance, MAKEINTRESOURCE(IDR_NETSURF16_ICON)); /* -> NetSurf */ RegisterClassEx(&w); /* drawable area */ @@ -1671,7 +1669,7 @@ static HWND nsws_window_statusbar_create(struct gui_window *w) WS_CHILD | WS_VISIBLE, 0, 0, 0, 0, w->main, - (HMENU)NSWS_ID_STATUSBAR, + (HMENU)IDC_MAIN_STATUSBAR, hinstance, NULL); SendMessage(hwnd, SB_SETTEXT, 0, (LPARAM)"NetSurf"); @@ -1712,8 +1710,8 @@ static HWND nsws_window_create(struct gui_window *gw) #endif InitCommonControlsEx(&icc); - gw->mainmenu = LoadMenu(hinstance, MAKEINTRESOURCE(NSWS_ID_MAINMENU)); - gw->rclick = LoadMenu(hinstance, MAKEINTRESOURCE(NSWS_ID_CTXMENU)); + gw->mainmenu = LoadMenu(hinstance, MAKEINTRESOURCE(IDR_MENU_MAIN)); + gw->rclick = LoadMenu(hinstance, MAKEINTRESOURCE(IDR_MENU_CONTEXT)); LOG(("creating window for hInstance %p", hinstance)); hwnd = CreateWindowEx(0, @@ -2289,18 +2287,18 @@ void gui_window_start_throbber(struct gui_window *w) nsws_window_update_forward_back(w); if (w->mainmenu != NULL) { - EnableMenuItem(w->mainmenu, NSWS_ID_NAV_STOP, MF_ENABLED); - EnableMenuItem(w->mainmenu, NSWS_ID_NAV_RELOAD, MF_GRAYED); + EnableMenuItem(w->mainmenu, IDM_NAV_STOP, MF_ENABLED); + EnableMenuItem(w->mainmenu, IDM_NAV_RELOAD, MF_GRAYED); } if (w->rclick != NULL) { - EnableMenuItem(w->rclick, NSWS_ID_NAV_STOP, MF_ENABLED); - EnableMenuItem(w->rclick, NSWS_ID_NAV_RELOAD, MF_GRAYED); + EnableMenuItem(w->rclick, IDM_NAV_STOP, MF_ENABLED); + EnableMenuItem(w->rclick, IDM_NAV_RELOAD, MF_GRAYED); } if (w->toolbar != NULL) { - SendMessage(w->toolbar, TB_SETSTATE, (WPARAM) NSWS_ID_NAV_STOP, + SendMessage(w->toolbar, TB_SETSTATE, (WPARAM) IDM_NAV_STOP, MAKELONG(TBSTATE_ENABLED, 0)); SendMessage(w->toolbar, TB_SETSTATE, - (WPARAM) NSWS_ID_NAV_RELOAD, + (WPARAM) IDM_NAV_RELOAD, MAKELONG(TBSTATE_INDETERMINATE, 0)); } w->throbbing = true; @@ -2313,18 +2311,18 @@ void gui_window_stop_throbber(struct gui_window *w) return; nsws_window_update_forward_back(w); if (w->mainmenu != NULL) { - EnableMenuItem(w->mainmenu, NSWS_ID_NAV_STOP, MF_GRAYED); - EnableMenuItem(w->mainmenu, NSWS_ID_NAV_RELOAD, MF_ENABLED); + EnableMenuItem(w->mainmenu, IDM_NAV_STOP, MF_GRAYED); + EnableMenuItem(w->mainmenu, IDM_NAV_RELOAD, MF_ENABLED); } if (w->rclick != NULL) { - EnableMenuItem(w->rclick, NSWS_ID_NAV_STOP, MF_GRAYED); - EnableMenuItem(w->rclick, NSWS_ID_NAV_RELOAD, MF_ENABLED); + EnableMenuItem(w->rclick, IDM_NAV_STOP, MF_GRAYED); + EnableMenuItem(w->rclick, IDM_NAV_RELOAD, MF_ENABLED); } if (w->toolbar != NULL) { - SendMessage(w->toolbar, TB_SETSTATE, (WPARAM) NSWS_ID_NAV_STOP, + SendMessage(w->toolbar, TB_SETSTATE, (WPARAM) IDM_NAV_STOP, MAKELONG(TBSTATE_INDETERMINATE, 0)); SendMessage(w->toolbar, TB_SETSTATE, - (WPARAM) NSWS_ID_NAV_RELOAD, + (WPARAM) IDM_NAV_RELOAD, MAKELONG(TBSTATE_ENABLED, 0)); } w->throbbing = false; @@ -2582,13 +2580,15 @@ static void gui_init(int argc, char** argv) nsws_window_init_pointers(); LOG(("argc %d, argv %p", argc, argv)); + /* ensure homepage option has a default */ + if (option_homepage_url == NULL || option_homepage_url[0] == '\0') + option_homepage_url = strdup(default_page); + + /* If there is a url specified on the command line use it */ if (argc > 1) addr = argv[1]; - else if (option_homepage_url != NULL && option_homepage_url[0] - != '\0') + else addr = option_homepage_url; - else - addr = default_page; LOG(("calling browser_window_create")); bw = browser_window_create(addr, 0, 0, true, false); diff --git a/windows/prefs.c b/windows/prefs.c index f41f96663..0b3597d88 100644 --- a/windows/prefs.c +++ b/windows/prefs.c @@ -26,570 +26,13 @@ #include "windows/gui.h" #include "windows/prefs.h" #include "windows/resourceid.h" +#include "windows/windbg.h" #define NSWS_PREFS_WINDOW_WIDTH 600 #define NSWS_PREFS_WINDOW_HEIGHT 400 -#ifndef MIN -#define MIN(a,b) (((a) < (b)) ? (a) : (b)) -#endif - -#ifndef MAX -#define MAX(a,b) (((a) > (b)) ? (a) : (b)) -#endif -/* static HWND prefswindow = NULL; */ - -void nsws_prefs_window_create(HWND parent); -BOOL CALLBACK nsws_prefs_event_callback(HWND hwnd, UINT msg, WPARAM wparam, - LPARAM lparam); -CHOOSEFONT *nsws_prefs_font_prepare(int fontfamily, HWND parent); - -void nsws_prefs_dialog_init(HWND parent) +static CHOOSEFONT *nsws_prefs_font_prepare(int fontfamily, HWND parent) { - int ret = DialogBox(hinstance, MAKEINTRESOURCE(NSWS_ID_PREFS_DIALOG), - parent, nsws_prefs_event_callback); - if (ret == -1) { - warn_user(messages_get("NoMemory"), 0); - return; - } -} - - -BOOL CALLBACK nsws_prefs_event_callback(HWND hwnd, UINT msg, WPARAM wparam, - LPARAM lparam) -{ - HWND sub; - char *temp, number[6]; - int len; - switch(msg) { - case WM_INITDIALOG: { - if ((option_homepage_url != NULL) && - (option_homepage_url[0] != '\0')) { - sub = GetDlgItem(hwnd, NSWS_ID_PREFS_HOMEPAGE); - SendMessage(sub, WM_SETTEXT, 0, - (LPARAM)option_homepage_url); - } - sub = GetDlgItem(hwnd, NSWS_ID_PREFS_PROXYTYPE); - SendMessage(sub, CB_ADDSTRING, 0, (LPARAM)"None"); - SendMessage(sub, CB_ADDSTRING, 0, (LPARAM)"Simple"); - SendMessage(sub, CB_ADDSTRING, 0, (LPARAM)"Basic Auth"); - SendMessage(sub, CB_ADDSTRING, 0, (LPARAM)"NTLM Auth"); - if (option_http_proxy) - SendMessage(sub, CB_SETCURSEL, (WPARAM) - (option_http_proxy_auth + 1), 0); - else - SendMessage(sub, CB_SETCURSEL, 0, 0); - sub = GetDlgItem(hwnd, NSWS_ID_PREFS_PROXYHOST); - if ((option_http_proxy_host != NULL) && - (option_http_proxy_host[0] != '\0')) - SendMessage(sub, WM_SETTEXT, 0, - (LPARAM)option_http_proxy_host); - sub = GetDlgItem(hwnd, NSWS_ID_PREFS_PROXYPORT); - if (option_http_proxy_port != 0) { - snprintf(number, 6, "%d", option_http_proxy_port); - SendMessage(sub, WM_SETTEXT, 0, (LPARAM)number); - } - sub = GetDlgItem(hwnd, NSWS_ID_PREFS_PROXYNAME); - if ((option_http_proxy_auth_user != NULL) && - (option_http_proxy_auth_user[0] != '\0')) - SendMessage(sub, WM_SETTEXT, 0, - (LPARAM)option_http_proxy_auth_user); - sub = GetDlgItem(hwnd, NSWS_ID_PREFS_PROXYPASS); - if ((option_http_proxy_auth_pass != NULL) && - (option_http_proxy_auth_pass[0] != '\0')) - SendMessage(sub, WM_SETTEXT, 0, - (LPARAM)option_http_proxy_auth_pass); - sub = GetDlgItem(hwnd, NSWS_ID_PREFS_FONTDEF); - SendMessage(sub, CB_ADDSTRING, 0, (LPARAM)"Sans serif"); - SendMessage(sub, CB_ADDSTRING, 0, (LPARAM)"Serif"); - SendMessage(sub, CB_ADDSTRING, 0, (LPARAM)"Monospace"); - SendMessage(sub, CB_ADDSTRING, 0, (LPARAM)"Cursive"); - SendMessage(sub, CB_ADDSTRING, 0, (LPARAM)"Fantasy"); - SendMessage(sub, CB_SETCURSEL, - (WPARAM) (option_font_default - 1), 0); - sub = GetDlgItem(hwnd, NSWS_ID_PREFS_ADVERTS); - SendMessage(sub, BM_SETCHECK, (WPARAM) ((option_block_ads) ? - BST_CHECKED : BST_UNCHECKED), 0); - sub = GetDlgItem(hwnd, NSWS_ID_PREFS_REFERER); - SendMessage(sub, BM_SETCHECK, (WPARAM)((option_send_referer) ? - BST_CHECKED : BST_UNCHECKED), 0); - sub = GetDlgItem(hwnd, NSWS_ID_PREFS_NOANIMATION); - SendMessage(sub, BM_SETCHECK, (WPARAM)((option_animate_images) - ? BST_UNCHECKED : BST_CHECKED), 0); - sub = GetDlgItem(hwnd, NSWS_ID_PREFS_FETCHERS); - snprintf(number, 6, "%d", option_max_fetchers); - SendMessage(sub, WM_SETTEXT, 0, (LPARAM)number); - sub = GetDlgItem(hwnd, NSWS_ID_PREFS_FETCH_HOST); - snprintf(number, 6, "%d", option_max_fetchers_per_host); - SendMessage(sub, WM_SETTEXT, 0, (LPARAM)number); - sub = GetDlgItem(hwnd, NSWS_ID_PREFS_FETCH_HANDLES); - snprintf(number, 6, "%d", option_max_cached_fetch_handles); - SendMessage(sub, WM_SETTEXT, 0, (LPARAM)number); - - if ((option_font_sans != NULL) && - (option_font_sans[0] != '\0')) { - sub = GetDlgItem(hwnd, NSWS_ID_PREFS_SANS); - SendMessage(sub, WM_SETTEXT, 0, - (LPARAM)option_font_sans); - } - if ((option_font_serif != NULL) && - (option_font_serif[0] != '\0')) { - sub = GetDlgItem(hwnd, NSWS_ID_PREFS_SERIF); - SendMessage(sub, WM_SETTEXT, 0, - (LPARAM)option_font_serif); - } - if ((option_font_mono != NULL) && - (option_font_mono[0] != '\0')) { - sub = GetDlgItem(hwnd, NSWS_ID_PREFS_MONO); - SendMessage(sub, WM_SETTEXT, 0, - (LPARAM)option_font_mono); - } - if ((option_font_cursive != NULL) && - (option_font_cursive[0] != '\0')) { - sub = GetDlgItem(hwnd, NSWS_ID_PREFS_CURSIVE); - SendMessage(sub, WM_SETTEXT, 0, - (LPARAM)option_font_cursive); - } - if ((option_font_fantasy != NULL) && - (option_font_fantasy[0] != '\0')) { - sub = GetDlgItem(hwnd, NSWS_ID_PREFS_FANTASY); - SendMessage(sub, WM_SETTEXT, 0, - (LPARAM)option_font_fantasy); - } - if (option_font_min_size != 0) { - sub = GetDlgItem(hwnd, NSWS_ID_PREFS_FONT_MINSIZE); - snprintf(number, 6, "%.1f", option_font_min_size / - 10.0); - SendMessage(sub, WM_SETTEXT, 0, (LPARAM)number); - } - if (option_font_size != 0) { - sub = GetDlgItem(hwnd, NSWS_ID_PREFS_FONT_SIZE); - snprintf(number, 6, "%.1f", option_font_size / 10.0); - SendMessage(sub, WM_SETTEXT, 0, (LPARAM)number); - } - if (option_max_fetchers != 0) { - sub = GetDlgItem(hwnd, NSWS_ID_PREFS_FETCHERS); - snprintf(number, 6, "%d", option_max_fetchers); - SendMessage(sub, WM_SETTEXT, 0, (LPARAM)number); - } - if (option_max_fetchers_per_host != 0) { - sub = GetDlgItem(hwnd, NSWS_ID_PREFS_FETCH_HOST); - snprintf(number, 6, "%d", - option_max_fetchers_per_host); - SendMessage(sub, WM_SETTEXT, 0, (LPARAM)number); - } - if (option_max_cached_fetch_handles != 0) { - sub = GetDlgItem(hwnd, NSWS_ID_PREFS_FETCH_HANDLES); - snprintf(number, 6, "%d", - option_max_cached_fetch_handles); - SendMessage(sub, WM_SETTEXT, 0, (LPARAM)number); - } - if (option_minimum_gif_delay != 0) { - sub = GetDlgItem(hwnd, NSWS_ID_PREFS_ANIMATIONDELAY); - snprintf(number, 6, "%.1f", option_minimum_gif_delay / - 100.0); - SendMessage(sub, WM_SETTEXT, 0, (LPARAM)number); - } - return TRUE; - } - case WM_CREATE: - return TRUE; - case WM_COMMAND: - switch(LOWORD(wparam)) { - case IDOK: { - sub = GetDlgItem(hwnd, NSWS_ID_PREFS_HOMEPAGE); - len = SendMessage(sub, WM_GETTEXTLENGTH, 0, 0); - if (option_homepage_url != NULL) - free(option_homepage_url); - option_homepage_url = malloc(len + 1); - if (option_homepage_url != NULL) - SendMessage(sub, WM_GETTEXT, - (WPARAM) (len + 1), - (LPARAM) option_homepage_url); -/* seems to segfault at startup - - option_block_ads = (IsDlgButtonChecked(hwnd, - NSWS_ID_PREFS_ADVERTS) == BST_CHECKED) - ? true : false; -*/ - option_send_referer = (IsDlgButtonChecked(hwnd, - NSWS_ID_PREFS_REFERER) == BST_CHECKED) - ? true : false; - option_animate_images = (IsDlgButtonChecked(hwnd, - NSWS_ID_PREFS_NOANIMATION) == - BST_CHECKED) ? false : true; - sub = GetDlgItem(hwnd, NSWS_ID_PREFS_FETCHERS); - len = SendMessage(sub, WM_GETTEXTLENGTH, 0, 0); - temp = malloc(len + 1); - if (temp != NULL) { - SendMessage(sub, WM_GETTEXT, (WPARAM)(len + 1), - (LPARAM)temp); - option_max_fetchers = atoi(temp); - free(temp); - } - sub = GetDlgItem(hwnd, NSWS_ID_PREFS_FETCH_HOST); - len = SendMessage(sub, WM_GETTEXTLENGTH, 0, 0); - temp = malloc(len + 1); - if (temp != NULL) { - SendMessage(sub, WM_GETTEXT, (WPARAM)(len + 1), - (LPARAM)temp); - option_max_fetchers_per_host = atoi(temp); - free(temp); - } - sub = GetDlgItem(hwnd, NSWS_ID_PREFS_FETCH_HANDLES); - len = SendMessage(sub, WM_GETTEXTLENGTH, 0, 0); - temp = malloc(len + 1); - if (temp != NULL) { - SendMessage(sub, WM_GETTEXT, (WPARAM)(len + 1), - (LPARAM)temp); - option_max_cached_fetch_handles = atoi(temp); - free(temp); - } - sub = GetDlgItem(hwnd, - NSWS_ID_PREFS_FONT_SIZE); - len = SendMessage(sub, WM_GETTEXTLENGTH, 0, 0); - temp = malloc(len + 1); - if (temp != NULL) { - SendMessage(sub, WM_GETTEXT, (WPARAM) - (len + 1), (LPARAM) temp); - option_font_size = (int) - (10 * strtod(temp, NULL)); - free(temp); - } - sub = GetDlgItem(hwnd, NSWS_ID_PREFS_FONT_MINSIZE); - len = SendMessage(sub, WM_GETTEXTLENGTH, 0, 0); - temp = malloc(len + 1); - if (temp != NULL) { - SendMessage(sub, WM_GETTEXT, (WPARAM) - (len + 1), (LPARAM) temp); - option_font_min_size = (int) - (10 * strtod(temp, NULL)); - free(temp); - } - sub = GetDlgItem(hwnd, NSWS_ID_PREFS_ANIMATIONDELAY); - len = SendMessage(sub, WM_GETTEXTLENGTH, 0, 0); - temp = malloc(len + 1); - if (temp != NULL) { - SendMessage(sub, WM_GETTEXT, (WPARAM) - (len + 1), (LPARAM) temp); - option_minimum_gif_delay = (int) - (100 * strtod(temp, NULL)); - free(temp); - } - sub = GetDlgItem(hwnd, NSWS_ID_PREFS_PROXYHOST); - len = SendMessage(sub, WM_GETTEXTLENGTH, 0, 0); - temp = malloc(len + 1); - if (temp != NULL) { - if (option_http_proxy_host != NULL) - free(option_http_proxy_host); - SendMessage(sub, WM_GETTEXT, (WPARAM)(len + 1), - (LPARAM)temp); - option_http_proxy_host = strdup(temp); - free(temp); - } - sub = GetDlgItem(hwnd, NSWS_ID_PREFS_PROXYPORT); - len = SendMessage(sub, WM_GETTEXTLENGTH, 0, 0); - temp = malloc(len + 1); - if (temp != NULL) { - SendMessage(sub, WM_GETTEXT, (WPARAM)(len + 1), - (LPARAM)temp); - option_http_proxy_port = atoi(temp); - free(temp); - } - sub = GetDlgItem(hwnd, NSWS_ID_PREFS_PROXYNAME); - len = SendMessage(sub, WM_GETTEXTLENGTH, 0, 0); - temp = malloc(len + 1); - if (temp != NULL) { - if (option_http_proxy_auth_user != NULL) - free(option_http_proxy_auth_user); - SendMessage(sub, WM_GETTEXT, (WPARAM)(len + 1), - (LPARAM)temp); - option_http_proxy_auth_user = strdup(temp); - free(temp); - } - sub = GetDlgItem(hwnd, NSWS_ID_PREFS_PROXYPASS); - len = SendMessage(sub, WM_GETTEXTLENGTH, 0, 0); - temp = malloc(len + 1); - if (temp != NULL) { - if (option_http_proxy_auth_pass != NULL) - free(option_http_proxy_auth_pass); - SendMessage(sub, WM_GETTEXT, (WPARAM)(len + 1), - (LPARAM)temp); - option_http_proxy_auth_pass = strdup(temp); - free(temp); - } - options_write(options_file_location); - } - case IDCANCEL: - EndDialog(hwnd, IDOK); - break; - case NSWS_ID_PREFS_HOMEPAGE: - break; - case NSWS_ID_PREFS_ADVERTS: - break; - case NSWS_ID_PREFS_POPUPS: - printf("wparam %d, lparam %ld hi %d lo %d\n", wparam, - lparam, HIWORD(lparam), - LOWORD(lparam)); - break; - case NSWS_ID_PREFS_PLUGINS: - printf("wparam %d, lparam %ld hi %d lo %d\n", wparam, - lparam, HIWORD(lparam), - LOWORD(lparam)); - break; - case NSWS_ID_PREFS_REFERER: - printf("wparam %d, lparam %ld hi %d lo %d\n", wparam, - lparam, HIWORD(lparam), - LOWORD(lparam)); - break; - case NSWS_ID_PREFS_PROXYTYPE: - sub = GetDlgItem(hwnd, NSWS_ID_PREFS_PROXYTYPE); - option_http_proxy_auth = SendMessage(sub, - CB_GETCURSEL, 0, 0) - 1; - option_http_proxy = (option_http_proxy_auth != -1); - option_http_proxy_auth += (option_http_proxy) ? 0 : 1; - break; - case NSWS_ID_PREFS_PROXYHOST: - break; - case NSWS_ID_PREFS_PROXYNAME: - break; - case NSWS_ID_PREFS_PROXYPASS: - break; - case NSWS_ID_PREFS_SANS: { - CHOOSEFONT *cf = nsws_prefs_font_prepare(FF_SWISS, - hwnd); - if (cf == NULL) - break; - if (ChooseFont(cf) == TRUE) { - if (option_font_sans != NULL) - free(option_font_sans); - option_font_sans = strdup( - cf->lpLogFont->lfFaceName); - } - free(cf->lpLogFont); - free(cf); - if ((option_font_sans != NULL) && - (option_font_sans[0] != '\0')) { - sub = GetDlgItem(hwnd, NSWS_ID_PREFS_SANS); - SendMessage(sub, WM_SETTEXT, 0, - (LPARAM)option_font_sans); - } - break; - } - case NSWS_ID_PREFS_SERIF: { - CHOOSEFONT *cf = nsws_prefs_font_prepare(FF_ROMAN, - hwnd); - if (cf == NULL) - break; - - if (ChooseFont(cf) == TRUE) { - if (option_font_serif != NULL) - free(option_font_serif); - option_font_serif = strdup( - cf->lpLogFont->lfFaceName); - } - free(cf->lpLogFont); - free(cf); - if ((option_font_serif != NULL) && - (option_font_serif[0] != '\0')) { - sub = GetDlgItem(hwnd, NSWS_ID_PREFS_SERIF); - SendMessage(sub, WM_SETTEXT, 0, - (LPARAM)option_font_serif); - } - break; - } - case NSWS_ID_PREFS_MONO: { - CHOOSEFONT *cf = nsws_prefs_font_prepare(FF_MODERN, - hwnd); - if (cf == NULL) - break; - - if (ChooseFont(cf) == TRUE) { - if (option_font_mono != NULL) - free(option_font_mono); - option_font_mono = strdup( - cf->lpLogFont->lfFaceName); - } - free(cf->lpLogFont); - free(cf); - if ((option_font_mono != NULL) && - (option_font_mono[0] != '\0')) { - sub = GetDlgItem(hwnd, NSWS_ID_PREFS_MONO); - SendMessage(sub, WM_SETTEXT, 0, - (LPARAM)option_font_mono); - } - break; - } - case NSWS_ID_PREFS_CURSIVE: { - CHOOSEFONT *cf = nsws_prefs_font_prepare(FF_SCRIPT, - hwnd); - if (cf == NULL) - break; - - if (ChooseFont(cf) == TRUE) { - if (option_font_cursive != NULL) - free(option_font_cursive); - option_font_cursive = strdup( - cf->lpLogFont->lfFaceName); - } - free(cf->lpLogFont); - free(cf); - if ((option_font_cursive != NULL) && - (option_font_cursive[0] != '\0')) { - sub = GetDlgItem(hwnd, NSWS_ID_PREFS_CURSIVE); - SendMessage(sub, WM_SETTEXT, 0, - (LPARAM)option_font_cursive); - } - break; - } - case NSWS_ID_PREFS_FANTASY: { - CHOOSEFONT *cf = nsws_prefs_font_prepare(FF_DECORATIVE, - hwnd); - if (cf == NULL) - break; - if (ChooseFont(cf) == TRUE) { - if (option_font_fantasy != NULL) - free(option_font_fantasy); - option_font_fantasy = strdup( - cf->lpLogFont->lfFaceName); - } - free(cf->lpLogFont); - free(cf); - if ((option_font_fantasy != NULL) && - (option_font_fantasy[0] != '\0')) { - sub = GetDlgItem(hwnd, NSWS_ID_PREFS_FANTASY); - SendMessage(sub, WM_SETTEXT, 0, - (LPARAM)option_font_fantasy); - } - break; - } - case NSWS_ID_PREFS_FONTDEF: { - sub = GetDlgItem(hwnd, NSWS_ID_PREFS_FONTDEF); - option_font_default = SendMessage(sub, CB_GETCURSEL, 0, 0) + 1; - break; - } - case NSWS_ID_PREFS_FETCHERS: - sub = GetDlgItem(hwnd, NSWS_ID_PREFS_FETCHERS); - len = SendMessage(sub, WM_GETTEXTLENGTH, 0, 0); - temp = malloc(len + 1); - if (temp == NULL) - return FALSE; - SendMessage(sub, WM_GETTEXT, (WPARAM) - (len + 1), (LPARAM) temp); - option_max_fetchers = atoi(temp); - free(temp); - break; - case NSWS_ID_PREFS_FETCH_HOST: - sub = GetDlgItem(hwnd, NSWS_ID_PREFS_FETCH_HOST); - len = SendMessage(sub, WM_GETTEXTLENGTH, 0, 0); - temp = malloc(len + 1); - if (temp == NULL) - return FALSE; - SendMessage(sub, WM_GETTEXT, (WPARAM) - (len + 1), (LPARAM) temp); - option_max_fetchers_per_host = atoi(temp); - free(temp); - break; - case NSWS_ID_PREFS_FETCH_HANDLES: - sub = GetDlgItem(hwnd, NSWS_ID_PREFS_FETCH_HANDLES); - len = SendMessage(sub, WM_GETTEXTLENGTH, 0, 0); - temp = malloc(len + 1); - if (temp == NULL) - return FALSE; - SendMessage(sub, WM_GETTEXT, (WPARAM) - (len + 1), (LPARAM) temp); - option_max_cached_fetch_handles = atoi(temp); - free(temp); - break; - default: - return FALSE; - } - break; - case WM_NOTIFY: { - NMHDR *nm = (NMHDR *)lparam; - NMUPDOWN *ud = (NMUPDOWN *)lparam; - if (nm->code == UDN_DELTAPOS) - switch(nm->idFrom) { - case NSWS_ID_PREFS_FONT_SIZE_SPIN: { - double size = 0; - sub = GetDlgItem(hwnd, - NSWS_ID_PREFS_FONT_SIZE); - len = SendMessage(sub, WM_GETTEXTLENGTH, 0, 0); - temp = malloc(len + 1); - if (temp == NULL) - return FALSE; - SendMessage(sub, WM_GETTEXT, (WPARAM) - (len + 1), (LPARAM) temp); - if (ud->iDelta == 1) { - size = strtod(temp, NULL) + 0.1; - } - else if (ud->iDelta == -1) { - size = strtod(temp, NULL) - 0.1; - } - free(temp); - size = MAX(size, 0); - snprintf(number, 6, "%.1f", size); - SendMessage(sub, WM_SETTEXT, 0, - (LPARAM)number); - return TRUE; - } - case NSWS_ID_PREFS_FONT_MINSIZE_SPIN: { - double size = 0; - sub = GetDlgItem(hwnd, - NSWS_ID_PREFS_FONT_MINSIZE); - len = SendMessage(sub, WM_GETTEXTLENGTH, 0, 0); - temp = malloc(len + 1); - if (temp == NULL) - return FALSE; - SendMessage(sub, WM_GETTEXT, (WPARAM) - (len + 1), (LPARAM) temp); - if (ud->iDelta == 1) { - size = strtod(temp, NULL) + 0.1; - } - else if (ud->iDelta == -1) { - size = strtod(temp, NULL) - 0.1; - } - free(temp); - size = MAX(size, 0); - snprintf(number, 6, "%.1f", size); - SendMessage(sub, WM_SETTEXT, 0, - (LPARAM)number); - return TRUE; - } - case NSWS_ID_PREFS_ANIMATIONDELAY_SPIN: { - double animation=0; - sub = GetDlgItem(hwnd, - NSWS_ID_PREFS_ANIMATIONDELAY); - len = SendMessage(sub, WM_GETTEXTLENGTH, 0, 0); - temp = malloc(len + 1); - if (temp == NULL) - return FALSE; - SendMessage(sub, WM_GETTEXT, (WPARAM) - (len + 1), (LPARAM) temp); - if (ud->iDelta == 1) { - animation = strtod(temp, NULL) + 0.1; - } - else if (ud->iDelta == -1) { - animation = strtod(temp, NULL) - 0.1; - } - free(temp); - animation = MAX(animation, 0); - snprintf(number, 6, "%.1f", animation); - SendMessage(sub, WM_SETTEXT, 0, - (LPARAM)number); - return TRUE; - } - } - break; - } - default: - return FALSE; - } - return TRUE; -} - -CHOOSEFONT *nsws_prefs_font_prepare(int fontfamily, HWND parent) -{ CHOOSEFONT *cf = malloc(sizeof(CHOOSEFONT)); if (cf == NULL) { warn_user(messages_get("NoMemory"),0); @@ -602,27 +45,27 @@ CHOOSEFONT *nsws_prefs_font_prepare(int fontfamily, HWND parent) return NULL; } switch(fontfamily) { - case FF_ROMAN: - snprintf(lf->lfFaceName, LF_FACESIZE, "%s", - option_font_serif); - break; - case FF_MODERN: - snprintf(lf->lfFaceName, LF_FACESIZE, "%s", - option_font_mono); - break; - case FF_SCRIPT: - snprintf(lf->lfFaceName, LF_FACESIZE, "%s", - option_font_cursive); - break; - case FF_DECORATIVE: - snprintf(lf->lfFaceName, LF_FACESIZE, "%s", - option_font_fantasy); - break; - case FF_SWISS: - default: - snprintf(lf->lfFaceName, LF_FACESIZE, "%s", - option_font_sans); - break; + case FF_ROMAN: + snprintf(lf->lfFaceName, LF_FACESIZE, "%s", + option_font_serif); + break; + case FF_MODERN: + snprintf(lf->lfFaceName, LF_FACESIZE, "%s", + option_font_mono); + break; + case FF_SCRIPT: + snprintf(lf->lfFaceName, LF_FACESIZE, "%s", + option_font_cursive); + break; + case FF_DECORATIVE: + snprintf(lf->lfFaceName, LF_FACESIZE, "%s", + option_font_fantasy); + break; + case FF_SWISS: + default: + snprintf(lf->lfFaceName, LF_FACESIZE, "%s", + option_font_sans); + break; } cf->lStructSize = sizeof(CHOOSEFONT); cf->hwndOwner = parent; @@ -630,6 +73,603 @@ CHOOSEFONT *nsws_prefs_font_prepare(int fontfamily, HWND parent) cf->Flags = CF_SCREENFONTS | CF_INITTOLOGFONTSTRUCT | CF_LIMITSIZE; cf->nSizeMin = 16; cf->nSizeMax = 24; - + return cf; } + +static void change_spinner(HWND sub, double change, double minval, double maxval) +{ + char *temp, number[6]; + int len; + double value = 0; + + len = SendMessage(sub, WM_GETTEXTLENGTH, 0, 0); + temp = malloc(len + 1); + + if (temp == NULL) + return; + + SendMessage(sub, WM_GETTEXT, (WPARAM)(len + 1), (LPARAM) temp); + + value = strtod(temp, NULL) - change; + + free(temp); + value = max(value, minval); + value = min(value, maxval); + + if ((change == 1.0) || (change == -1.0)) + snprintf(number, 6, "%.0f", value); + else + snprintf(number, 6, "%.1f", value); + + SendMessage(sub, WM_SETTEXT, 0, (LPARAM)number); +} + + +static BOOL CALLBACK options_appearance_dialog_handler(HWND hwnd, + UINT msg, WPARAM wparam, LPARAM lParam) +{ + int len; + char *temp, number[6]; + HWND sub; + + switch (msg) { + case WM_INITDIALOG: + sub = GetDlgItem(hwnd, IDC_PREFS_FONTDEF); + SendMessage(sub, CB_ADDSTRING, 0, (LPARAM)"Sans serif"); + SendMessage(sub, CB_ADDSTRING, 0, (LPARAM)"Serif"); + SendMessage(sub, CB_ADDSTRING, 0, (LPARAM)"Monospace"); + SendMessage(sub, CB_ADDSTRING, 0, (LPARAM)"Cursive"); + SendMessage(sub, CB_ADDSTRING, 0, (LPARAM)"Fantasy"); + SendMessage(sub, CB_SETCURSEL, + (WPARAM) (option_font_default - 1), 0); + + if ((option_font_sans != NULL) && + (option_font_sans[0] != '\0')) { + sub = GetDlgItem(hwnd, IDC_PREFS_SANS); + SendMessage(sub, WM_SETTEXT, 0, + (LPARAM)option_font_sans); + } + if ((option_font_serif != NULL) && + (option_font_serif[0] != '\0')) { + sub = GetDlgItem(hwnd, IDC_PREFS_SERIF); + SendMessage(sub, WM_SETTEXT, 0, + (LPARAM)option_font_serif); + } + if ((option_font_mono != NULL) && + (option_font_mono[0] != '\0')) { + sub = GetDlgItem(hwnd, IDC_PREFS_MONO); + SendMessage(sub, WM_SETTEXT, 0, + (LPARAM)option_font_mono); + } + if ((option_font_cursive != NULL) && + (option_font_cursive[0] != '\0')) { + sub = GetDlgItem(hwnd, IDC_PREFS_CURSIVE); + SendMessage(sub, WM_SETTEXT, 0, + (LPARAM)option_font_cursive); + } + if ((option_font_fantasy != NULL) && + (option_font_fantasy[0] != '\0')) { + sub = GetDlgItem(hwnd, IDC_PREFS_FANTASY); + SendMessage(sub, WM_SETTEXT, 0, + (LPARAM)option_font_fantasy); + } + if (option_font_min_size != 0) { + sub = GetDlgItem(hwnd, IDC_PREFS_FONT_MINSIZE); + snprintf(number, 6, "%.1f", option_font_min_size / + 10.0); + SendMessage(sub, WM_SETTEXT, 0, (LPARAM)number); + } + if (option_font_size != 0) { + sub = GetDlgItem(hwnd, IDC_PREFS_FONT_SIZE); + snprintf(number, 6, "%.1f", option_font_size / 10.0); + SendMessage(sub, WM_SETTEXT, 0, (LPARAM)number); + } + if (option_max_fetchers != 0) { + sub = GetDlgItem(hwnd, IDC_PREFS_FETCHERS); + snprintf(number, 6, "%d", option_max_fetchers); + SendMessage(sub, WM_SETTEXT, 0, (LPARAM)number); + } + if (option_max_fetchers_per_host != 0) { + sub = GetDlgItem(hwnd, IDC_PREFS_FETCH_HOST); + snprintf(number, 6, "%d", + option_max_fetchers_per_host); + SendMessage(sub, WM_SETTEXT, 0, (LPARAM)number); + } + if (option_max_cached_fetch_handles != 0) { + sub = GetDlgItem(hwnd, IDC_PREFS_FETCH_HANDLES); + snprintf(number, 6, "%d", + option_max_cached_fetch_handles); + SendMessage(sub, WM_SETTEXT, 0, (LPARAM)number); + } + + + /* animation */ + sub = GetDlgItem(hwnd, IDC_PREFS_NOANIMATION); + SendMessage(sub, BM_SETCHECK, (WPARAM)((option_animate_images) + ? BST_UNCHECKED : BST_CHECKED), 0); + + if (option_minimum_gif_delay != 0) { + sub = GetDlgItem(hwnd, IDC_PREFS_ANIMATIONDELAY); + snprintf(number, 6, "%.1f", option_minimum_gif_delay / + 100.0); + SendMessage(sub, WM_SETTEXT, 0, (LPARAM)number); + } + break; + + case WM_NOTIFY: + switch (((NMHDR FAR *)lParam)->code) { + case PSN_APPLY: + sub = GetDlgItem(hwnd, IDC_PREFS_FONT_SIZE); + len = SendMessage(sub, WM_GETTEXTLENGTH, 0, 0); + temp = malloc(len + 1); + if (temp != NULL) { + SendMessage(sub, WM_GETTEXT, (WPARAM) + (len + 1), (LPARAM) temp); + option_font_size = (int) + (10 * strtod(temp, NULL)); + free(temp); + } + + sub = GetDlgItem(hwnd, IDC_PREFS_FONT_MINSIZE); + len = SendMessage(sub, WM_GETTEXTLENGTH, 0, 0); + temp = malloc(len + 1); + if (temp != NULL) { + SendMessage(sub, WM_GETTEXT, (WPARAM) + (len + 1), (LPARAM) temp); + option_font_min_size = (int) + (10 * strtod(temp, NULL)); + free(temp); + } + + /* animation */ + option_animate_images = (IsDlgButtonChecked(hwnd, IDC_PREFS_NOANIMATION) == BST_CHECKED) ? true : false; + + + sub = GetDlgItem(hwnd, IDC_PREFS_ANIMATIONDELAY); + len = SendMessage(sub, WM_GETTEXTLENGTH, 0, 0); + temp = malloc(len + 1); + if (temp != NULL) { + SendMessage(sub, WM_GETTEXT, (WPARAM) + (len + 1), (LPARAM) temp); + option_minimum_gif_delay = (int) + (100 * strtod(temp, NULL)); + free(temp); + } + + break; + + case UDN_DELTAPOS: { + NMUPDOWN *ud = (NMUPDOWN *)lParam; + switch(((NMHDR *)lParam)->idFrom) { + case IDC_PREFS_FONT_SIZE_SPIN: + change_spinner(GetDlgItem(hwnd, IDC_PREFS_FONT_SIZE), 0.1 * ud->iDelta, 1.0, 50.0); + return TRUE; + + case IDC_PREFS_FONT_MINSIZE_SPIN: + change_spinner(GetDlgItem(hwnd, IDC_PREFS_FONT_MINSIZE), 0.1 * ud->iDelta, 1.0, 50.0); + return TRUE; + + case IDC_PREFS_ANIMATIONDELAY_SPIN: + change_spinner(GetDlgItem(hwnd, IDC_PREFS_ANIMATIONDELAY), 0.1 * ud->iDelta, 0.1, 100.0); + return TRUE; + + } + } + break; + } + + + case WM_COMMAND: + LOG(("WM_COMMAND Identifier 0x%x",LOWORD(wparam))); + switch(LOWORD(wparam)) { + case IDC_PREFS_PROXYTYPE: + sub = GetDlgItem(hwnd, IDC_PREFS_PROXYTYPE); + option_http_proxy_auth = SendMessage(sub, + CB_GETCURSEL, 0, 0) - 1; + option_http_proxy = (option_http_proxy_auth != -1); + option_http_proxy_auth += (option_http_proxy) ? 0 : 1; + break; + + case IDC_PREFS_SANS: { + CHOOSEFONT *cf = nsws_prefs_font_prepare(FF_SWISS, + hwnd); + if (cf == NULL) + break; + if (ChooseFont(cf) == TRUE) { + if (option_font_sans != NULL) + free(option_font_sans); + option_font_sans = strdup( + cf->lpLogFont->lfFaceName); + } + free(cf->lpLogFont); + free(cf); + if ((option_font_sans != NULL) && + (option_font_sans[0] != '\0')) { + sub = GetDlgItem(hwnd, IDC_PREFS_SANS); + SendMessage(sub, WM_SETTEXT, 0, + (LPARAM)option_font_sans); + } + break; + } + + case IDC_PREFS_SERIF: { + CHOOSEFONT *cf = nsws_prefs_font_prepare(FF_ROMAN, + hwnd); + if (cf == NULL) + break; + + if (ChooseFont(cf) == TRUE) { + if (option_font_serif != NULL) + free(option_font_serif); + option_font_serif = strdup( + cf->lpLogFont->lfFaceName); + } + free(cf->lpLogFont); + free(cf); + if ((option_font_serif != NULL) && + (option_font_serif[0] != '\0')) { + sub = GetDlgItem(hwnd, IDC_PREFS_SERIF); + SendMessage(sub, WM_SETTEXT, 0, + (LPARAM)option_font_serif); + } + break; + } + case IDC_PREFS_MONO: { + CHOOSEFONT *cf = nsws_prefs_font_prepare(FF_MODERN, + hwnd); + if (cf == NULL) + break; + + if (ChooseFont(cf) == TRUE) { + if (option_font_mono != NULL) + free(option_font_mono); + option_font_mono = strdup( + cf->lpLogFont->lfFaceName); + } + free(cf->lpLogFont); + free(cf); + if ((option_font_mono != NULL) && + (option_font_mono[0] != '\0')) { + sub = GetDlgItem(hwnd, IDC_PREFS_MONO); + SendMessage(sub, WM_SETTEXT, 0, + (LPARAM)option_font_mono); + } + break; + } + case IDC_PREFS_CURSIVE: { + CHOOSEFONT *cf = nsws_prefs_font_prepare(FF_SCRIPT, + hwnd); + if (cf == NULL) + break; + + if (ChooseFont(cf) == TRUE) { + if (option_font_cursive != NULL) + free(option_font_cursive); + option_font_cursive = strdup( + cf->lpLogFont->lfFaceName); + } + free(cf->lpLogFont); + free(cf); + if ((option_font_cursive != NULL) && + (option_font_cursive[0] != '\0')) { + sub = GetDlgItem(hwnd, IDC_PREFS_CURSIVE); + SendMessage(sub, WM_SETTEXT, 0, + (LPARAM)option_font_cursive); + } + break; + } + case IDC_PREFS_FANTASY: { + CHOOSEFONT *cf = nsws_prefs_font_prepare(FF_DECORATIVE, + hwnd); + if (cf == NULL) + break; + if (ChooseFont(cf) == TRUE) { + if (option_font_fantasy != NULL) + free(option_font_fantasy); + option_font_fantasy = strdup( + cf->lpLogFont->lfFaceName); + } + free(cf->lpLogFont); + free(cf); + if ((option_font_fantasy != NULL) && + (option_font_fantasy[0] != '\0')) { + sub = GetDlgItem(hwnd, IDC_PREFS_FANTASY); + SendMessage(sub, WM_SETTEXT, 0, + (LPARAM)option_font_fantasy); + } + break; + } + + case IDC_PREFS_FONTDEF: + sub = GetDlgItem(hwnd, IDC_PREFS_FONTDEF); + option_font_default = SendMessage(sub, CB_GETCURSEL, 0, 0) + 1; + break; + + + } + break; + + } + return FALSE; +} + +static BOOL CALLBACK options_connections_dialog_handler(HWND hwnd, + UINT msg, WPARAM wparam, LPARAM lParam) +{ + int len; + char *temp, number[6]; + HWND sub; + + switch (msg) { + case WM_INITDIALOG: + sub = GetDlgItem(hwnd, IDC_PREFS_PROXYTYPE); + SendMessage(sub, CB_ADDSTRING, 0, (LPARAM)"None"); + SendMessage(sub, CB_ADDSTRING, 0, (LPARAM)"Simple"); + SendMessage(sub, CB_ADDSTRING, 0, (LPARAM)"Basic Auth"); + SendMessage(sub, CB_ADDSTRING, 0, (LPARAM)"NTLM Auth"); + if (option_http_proxy) + SendMessage(sub, CB_SETCURSEL, (WPARAM) + (option_http_proxy_auth + 1), 0); + else + SendMessage(sub, CB_SETCURSEL, 0, 0); + + sub = GetDlgItem(hwnd, IDC_PREFS_PROXYHOST); + if ((option_http_proxy_host != NULL) && + (option_http_proxy_host[0] != '\0')) + SendMessage(sub, WM_SETTEXT, 0, + (LPARAM)option_http_proxy_host); + + sub = GetDlgItem(hwnd, IDC_PREFS_PROXYPORT); + if (option_http_proxy_port != 0) { + snprintf(number, 6, "%d", option_http_proxy_port); + SendMessage(sub, WM_SETTEXT, 0, (LPARAM)number); + } + + sub = GetDlgItem(hwnd, IDC_PREFS_PROXYNAME); + if ((option_http_proxy_auth_user != NULL) && + (option_http_proxy_auth_user[0] != '\0')) + SendMessage(sub, WM_SETTEXT, 0, + (LPARAM)option_http_proxy_auth_user); + + sub = GetDlgItem(hwnd, IDC_PREFS_PROXYPASS); + if ((option_http_proxy_auth_pass != NULL) && + (option_http_proxy_auth_pass[0] != '\0')) + SendMessage(sub, WM_SETTEXT, 0, + (LPARAM)option_http_proxy_auth_pass); + + sub = GetDlgItem(hwnd, IDC_PREFS_FETCHERS); + snprintf(number, 6, "%d", option_max_fetchers); + SendMessage(sub, WM_SETTEXT, 0, (LPARAM)number); + + sub = GetDlgItem(hwnd, IDC_PREFS_FETCH_HOST); + snprintf(number, 6, "%d", option_max_fetchers_per_host); + SendMessage(sub, WM_SETTEXT, 0, (LPARAM)number); + + sub = GetDlgItem(hwnd, IDC_PREFS_FETCH_HANDLES); + snprintf(number, 6, "%d", option_max_cached_fetch_handles); + SendMessage(sub, WM_SETTEXT, 0, (LPARAM)number); + + break; + + case WM_NOTIFY: + switch (((NMHDR FAR *)lParam)->code) { + case PSN_APPLY: + sub = GetDlgItem(hwnd, IDC_PREFS_PROXYHOST); + len = SendMessage(sub, WM_GETTEXTLENGTH, 0, 0); + temp = malloc(len + 1); + if (temp != NULL) { + if (option_http_proxy_host != NULL) + free(option_http_proxy_host); + SendMessage(sub, WM_GETTEXT, (WPARAM)(len + 1), + (LPARAM)temp); + option_http_proxy_host = strdup(temp); + free(temp); + } + + sub = GetDlgItem(hwnd, IDC_PREFS_PROXYPORT); + len = SendMessage(sub, WM_GETTEXTLENGTH, 0, 0); + temp = malloc(len + 1); + if (temp != NULL) { + SendMessage(sub, WM_GETTEXT, (WPARAM)(len + 1), + (LPARAM)temp); + option_http_proxy_port = atoi(temp); + free(temp); + } + + sub = GetDlgItem(hwnd, IDC_PREFS_PROXYNAME); + len = SendMessage(sub, WM_GETTEXTLENGTH, 0, 0); + temp = malloc(len + 1); + if (temp != NULL) { + if (option_http_proxy_auth_user != NULL) + free(option_http_proxy_auth_user); + SendMessage(sub, WM_GETTEXT, (WPARAM)(len + 1), + (LPARAM)temp); + option_http_proxy_auth_user = strdup(temp); + free(temp); + } + + sub = GetDlgItem(hwnd, IDC_PREFS_PROXYPASS); + len = SendMessage(sub, WM_GETTEXTLENGTH, 0, 0); + temp = malloc(len + 1); + if (temp != NULL) { + if (option_http_proxy_auth_pass != NULL) + free(option_http_proxy_auth_pass); + SendMessage(sub, WM_GETTEXT, (WPARAM)(len + 1), + (LPARAM)temp); + option_http_proxy_auth_pass = strdup(temp); + free(temp); + } + + /* fetchers */ + sub = GetDlgItem(hwnd, IDC_PREFS_FETCHERS); + len = SendMessage(sub, WM_GETTEXTLENGTH, 0, 0); + temp = malloc(len + 1); + if (temp != NULL) { + SendMessage(sub, WM_GETTEXT, (WPARAM)(len + 1), + (LPARAM)temp); + option_max_fetchers = atoi(temp); + free(temp); + } + + sub = GetDlgItem(hwnd, IDC_PREFS_FETCH_HOST); + len = SendMessage(sub, WM_GETTEXTLENGTH, 0, 0); + temp = malloc(len + 1); + if (temp != NULL) { + SendMessage(sub, WM_GETTEXT, (WPARAM)(len + 1), + (LPARAM)temp); + option_max_fetchers_per_host = atoi(temp); + free(temp); + } + + sub = GetDlgItem(hwnd, IDC_PREFS_FETCH_HANDLES); + len = SendMessage(sub, WM_GETTEXTLENGTH, 0, 0); + temp = malloc(len + 1); + if (temp != NULL) { + SendMessage(sub, WM_GETTEXT, (WPARAM)(len + 1), + (LPARAM)temp); + option_max_cached_fetch_handles = atoi(temp); + free(temp); + } + break; + + case UDN_DELTAPOS: { + NMUPDOWN *ud = (NMUPDOWN *)lParam; + switch(((NMHDR *)lParam)->idFrom) { + case IDC_PREFS_FETCHERS_SPIN: + change_spinner(GetDlgItem(hwnd, IDC_PREFS_FETCHERS), 1.0 * ud->iDelta, 1.0, 100.0); + return TRUE; + + case IDC_PREFS_FETCH_HOST_SPIN: + change_spinner(GetDlgItem(hwnd, IDC_PREFS_FETCH_HOST), 1.0 * ud->iDelta, 1.0, 100.0); + return TRUE; + + case IDC_PREFS_FETCH_HANDLES_SPIN: + change_spinner(GetDlgItem(hwnd, IDC_PREFS_FETCH_HANDLES), 1.0 * ud->iDelta, 1.0, 100.0); + return TRUE; + + } + } + break; + } + } + return FALSE; +} + +static BOOL CALLBACK options_general_dialog_handler(HWND hwnd, + UINT msg, WPARAM wparam, LPARAM lParam) +{ + HWND sub; + + switch (msg) { + case WM_INITDIALOG: + /* homepage url */ + sub = GetDlgItem(hwnd, IDC_PREFS_HOMEPAGE); + SendMessage(sub, WM_SETTEXT, 0, (LPARAM)option_homepage_url); + + /* Display images */ + sub = GetDlgItem(hwnd, IDC_PREFS_IMAGES); + SendMessage(sub, BM_SETCHECK, + (WPARAM) ((option_suppress_images) ? + BST_CHECKED : BST_UNCHECKED), 0); + + /* advert blocking */ + sub = GetDlgItem(hwnd, IDC_PREFS_ADVERTS); + SendMessage(sub, BM_SETCHECK, + (WPARAM) ((option_block_ads) ? + BST_CHECKED : BST_UNCHECKED), 0); + + /* Referrer sending */ + sub = GetDlgItem(hwnd, IDC_PREFS_REFERER); + SendMessage(sub, BM_SETCHECK, + (WPARAM)((option_send_referer) ? + BST_CHECKED : BST_UNCHECKED), 0); + break; + + case WM_NOTIFY: + switch (((NMHDR FAR *)lParam)->code) { + case PSN_APPLY: + /* homepage */ + sub = GetDlgItem(hwnd, IDC_PREFS_HOMEPAGE); + if (sub != NULL) { + int text_length; + char *text; + text_length = SendMessage(sub, + WM_GETTEXTLENGTH, 0, 0); + text = malloc(text_length + 1); + if (text != NULL) { + SendMessage(sub, WM_GETTEXT, + (WPARAM)text_length + 1, + (LPARAM)text); + free(option_homepage_url); + option_homepage_url = text; + } + } + + option_suppress_images = (IsDlgButtonChecked(hwnd, + IDC_PREFS_IMAGES) == BST_CHECKED) ? true : false; + + option_block_ads = (IsDlgButtonChecked(hwnd, + IDC_PREFS_ADVERTS) == BST_CHECKED) ? true : false; + + option_send_referer = (IsDlgButtonChecked(hwnd, + IDC_PREFS_REFERER) == BST_CHECKED) ? true : false; + + break; + + } + } + return FALSE; +} + +void nsws_prefs_dialog_init(HINSTANCE hinst, HWND parent) +{ + int ret; + PROPSHEETPAGE psp[3]; + PROPSHEETHEADER psh; + + psp[0].dwSize = sizeof(PROPSHEETPAGE); + psp[0].dwFlags = PSP_USEICONID; + psp[0].hInstance = hinst; + psp[0].pszTemplate = MAKEINTRESOURCE(IDD_DLG_OPTIONS_GENERAL); + psp[0].pfnDlgProc = options_general_dialog_handler; + psp[0].lParam = 0; + psp[0].pfnCallback = NULL; + + psp[1].dwSize = sizeof(PROPSHEETPAGE); + psp[1].dwFlags = PSP_USEICONID; + psp[1].hInstance = hinst; + psp[1].pszTemplate = MAKEINTRESOURCE(IDD_DLG_OPTIONS_CONNECTIONS); + psp[1].pfnDlgProc = options_connections_dialog_handler; + psp[1].lParam = 0; + psp[1].pfnCallback = NULL; + + psp[2].dwSize = sizeof(PROPSHEETPAGE); + psp[2].dwFlags = PSP_USEICONID; + psp[2].hInstance = hinst; + psp[2].pszTemplate = MAKEINTRESOURCE(IDD_DLG_OPTIONS_APPERANCE); + psp[2].pfnDlgProc = options_appearance_dialog_handler; + psp[2].lParam = 0; + psp[2].pfnCallback = NULL; + + + psh.dwSize = sizeof(PROPSHEETHEADER); + psh.dwFlags = PSH_NOAPPLYNOW | PSH_USEICONID | PSH_PROPSHEETPAGE; + psh.hwndParent = parent; + psh.hInstance = hinst; +// psh.pszIcon = MAKEINTRESOURCE(IDI_CELL_PROPERTIES); + psh.pszCaption = (LPSTR) "NetSurf Options"; + psh.nPages = sizeof(psp) / sizeof(PROPSHEETPAGE); + psh.nStartPage = 0; + psh.ppsp = (LPCPROPSHEETPAGE) &psp; + psh.pfnCallback = NULL; + + ret = PropertySheet(&psh); + if (ret == -1) { + win_perror("PropertySheet"); + } else if (ret > 0) { + /* user saved changes */ + options_write(options_file_location); + } + +} diff --git a/windows/prefs.h b/windows/prefs.h index 6662b7a69..dec004b60 100644 --- a/windows/prefs.h +++ b/windows/prefs.h @@ -19,8 +19,6 @@ #ifndef _NETSURF_WINDOWS_PREFS_H_ #define _NETSURF_WINDOWS_PREFS_H_ -#include - -void nsws_prefs_dialog_init(HWND parent); +void nsws_prefs_dialog_init(HINSTANCE hinst, HWND parent); #endif diff --git a/windows/res/banner.bmp b/windows/res/banner.bmp new file mode 100644 index 0000000000000000000000000000000000000000..49525f83d348e8475618de6b85045d226f52c034 GIT binary patch literal 79518 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 OZ7=Z!2>CRP^8Wx~=o7pE literal 0 HcmV?d00001 diff --git a/windows/res/home.bmp b/windows/res/home.bmp new file mode 100644 index 0000000000000000000000000000000000000000..1f595ff4c522f6a463651e213be34c09e8c4948f GIT binary patch literal 2358 zcmcJQ+e;f!5XPg?;;m|QqegAD5tCrW+FCf)j~>3z#EE+h)+KGAcBaX z_~-={6;wnNK|%s5gop^D_}6@$Id(%_vm0LwOwR7kIlq}b=bPDz8hflx{Ot5^Bg^=2 z5xQKuq96HF;_vM4fllZ5`=8uSPfvBdy}fX`T*4+MCZLSFwY3%S%k$L6uC6Y4z1~3H zBO@cwM@J*kWJ0_of!+-sk0;>gSnut2M90M;K0Q6G>7$}BJUkr8acF1=lEs2%pAQvF zOM>rqyYKPemXsi~t_~me_E5UBqiIQIGngsw0bd)fRyh2ARIaS3^0OKm@M(WPYz#I2 z&x;FGt*)x_vx#4Rco;TDD1MsFhF_PLs9s-J<-crd!q=mturbv5&Z{f@*w|3z=QKB? z^7t6Vlaq+l>%~0Q0$Ys1fa1kPaW0|w>6HJUn;X=U4taj4^L^FQf-1KgmhNsCGcqtf zJ}zu@bX2T)Jw2_-cirBietTP$Z*FbHcdr+=o*tMetugU8qUs8*xw(LUpzZ2w5zuNygyoeOMAPh!J>hIko}*snEP!k9+wwA!=$`u(+jBChpa5TXcSU^|6#384xkN-p;^Wwucn5wDrLlIoKDY)s z2KN%~S9~6P=Bz7OyUb#ytS=r#52czZ?Ciwf>+1)6j;9r)hWNRSjiTBdPe(IMY>bQ;AiaPIlsis&DiKN$H<7e#SIa-Xz_@<_&0<|Q6)2FFdK4$Gx&-n)ts1OAJ literal 0 HcmV?d00001 diff --git a/windows/res/netsurf.gif b/windows/res/netsurf.gif new file mode 100644 index 0000000000000000000000000000000000000000..f4ee3aa15b93b42d02e012ea1c138f889364e83f GIT binary patch literal 14119 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 V=_@_F?YjfYC?ZO4Q-A>K{{!l$7d8L@ literal 0 HcmV?d00001 diff --git a/windows/res/resource.rc b/windows/res/resource.rc index b32f49c7f..c79ebc090 100644 --- a/windows/res/resource.rc +++ b/windows/res/resource.rc @@ -1,225 +1,264 @@ -// Generated by ResEdit 1.4.8 -// Copyright (C) 2006-2009 -// http://www.resedit.net - #include #include #include + #include "../resourceid.h" +IDR_NETSURF32_ICON ICON DISCARDABLE "NetSurf32.ico" +IDR_NETSURF16_ICON ICON DISCARDABLE "NetSurf16.ico" +IDR_TOOLBAR_BITMAP BITMAP DISCARDABLE "toolbar.bmp" +IDR_TOOLBAR_BITMAP_GREY BITMAP DISCARDABLE "toolbarg.bmp" +IDR_TOOLBAR_BITMAP_HOT BITMAP DISCARDABLE "toolbarh.bmp" +IDR_NETSURF_BANNER BITMAP DISCARDABLE "banner.bmp" +IDR_HOME_BITMAP BITMAP DISCARDABLE "home.bmp" -// -// Bitmap resources -// -NSWS_ID_TOOLBAR_BITMAP BITMAP "toolbar.bmp" +IDR_THROBBER_FRAME0_BITMAP BITMAP DISCARDABLE "throbber/throbber0.bmp" +IDR_THROBBER_FRAME1_BITMAP BITMAP DISCARDABLE "throbber/throbber1.bmp" +IDR_THROBBER_FRAME2_BITMAP BITMAP DISCARDABLE "throbber/throbber2.bmp" +IDR_THROBBER_FRAME3_BITMAP BITMAP DISCARDABLE "throbber/throbber3.bmp" +IDR_THROBBER_FRAME4_BITMAP BITMAP DISCARDABLE "throbber/throbber4.bmp" +IDR_THROBBER_FRAME5_BITMAP BITMAP DISCARDABLE "throbber/throbber5.bmp" +IDR_THROBBER_FRAME6_BITMAP BITMAP DISCARDABLE "throbber/throbber6.bmp" +IDR_THROBBER_FRAME7_BITMAP BITMAP DISCARDABLE "throbber/throbber7.bmp" +IDR_MENU_MAIN MENU +BEGIN + POPUP "&File" + BEGIN + MENUITEM "&New Window",IDM_FILE_OPEN_WINDOW + MENUITEM "Open &Location",IDM_FILE_OPEN_LOCATION + MENUITEM "&Close",IDM_FILE_CLOSE_WINDOW + MENUITEM SEPARATOR + MENUITEM "&Save Page",IDM_FILE_SAVE_PAGE,GRAYED,HELP + POPUP "Save Page &As" + BEGIN + MENUITEM "Text",IDM_FILE_SAVEAS_TEXT,GRAYED + MENUITEM "PDF",IDM_FILE_SAVEAS_PDF,GRAYED + MENUITEM "Postscript",IDM_FILE_SAVEAS_POSTSCRIPT,GRAYED + END + MENUITEM SEPARATOR + MENUITEM "Print Pre&view",IDM_FILE_PRINT_PREVIEW + MENUITEM "&Print",IDM_FILE_PRINT + MENUITEM SEPARATOR + MENUITEM "E&xit",IDM_FILE_QUIT + END + POPUP "&Edit" + BEGIN + MENUITEM "Cu&t",IDM_EDIT_CUT + MENUITEM "&Copy",IDM_EDIT_COPY + MENUITEM "&Paste",IDM_EDIT_PASTE + MENUITEM "&Delete",IDM_EDIT_DELETE + MENUITEM SEPARATOR + MENUITEM "Select &All",IDM_EDIT_SELECT_ALL + MENUITEM SEPARATOR + MENUITEM "&Find",IDM_EDIT_SEARCH + END + POPUP "&View" + BEGIN + MENUITEM "Stop",IDM_NAV_STOP + MENUITEM "Reload",IDM_NAV_RELOAD + MENUITEM SEPARATOR + POPUP "&Zoom" + BEGIN + MENUITEM "Zoom &In",IDM_VIEW_ZOOMPLUS + MENUITEM "Zoom &Out",IDM_VIEW_ZOOMMINUS + MENUITEM "&Reset",IDM_VIEW_ZOOMNORMAL + END + MENUITEM SEPARATOR + MENUITEM "Page S&ource",IDM_VIEW_SOURCE + MENUITEM "&Full Screen",IDM_VIEW_FULLSCREEN + END + POPUP "&History" + BEGIN + MENUITEM "Back",IDM_NAV_BACK + MENUITEM "Forward",IDM_NAV_FORWARD + MENUITEM "Home",IDM_NAV_HOME + MENUITEM SEPARATOR + MENUITEM "Local History",IDM_NAV_LOCALHISTORY + MENUITEM "Global History",IDM_NAV_GLOBALHISTORY,GRAYED + END + POPUP "&Tools" + BEGIN + MENUITEM "&Downloads",IDM_VIEW_DOWNLOADS + MENUITEM "Save size and location",IDM_VIEW_SAVE_WIN_METRICS + POPUP "Debugging" + BEGIN + MENUITEM "Debug rendering",IDM_VIEW_TOGGLE_DEBUG_RENDERING + MENUITEM "Save Box Tree",IDM_VIEW_DEBUGGING_SAVE_BOXTREE,GRAYED + MENUITEM "Save DOM Tree",IDM_VIEW_DEBUGGING_SAVE_DOMTREE,GRAYED + END + MENUITEM SEPARATOR + MENUITEM "Options...",IDM_EDIT_PREFERENCES + END + POPUP "&Help" + BEGIN + MENUITEM "&Contents",IDM_HELP_CONTENTS,GRAYED + MENUITEM "G&uide",IDM_HELP_GUIDE,GRAYED + MENUITEM "&Info",IDM_HELP_INFO,GRAYED + MENUITEM SEPARATOR + MENUITEM "&About NetSurf",IDM_HELP_ABOUT + END +END -NSWS_ID_TOOLBAR_GREY_BITMAP BITMAP "toolbarg.bmp" +IDR_MENU_CONTEXT MENU +BEGIN + POPUP "Context" + BEGIN + MENUITEM "&Back",IDM_NAV_BACK + MENUITEM "F&orward",IDM_NAV_FORWARD + MENUITEM "&Home",IDM_NAV_HOME + MENUITEM "&Stop",IDM_NAV_STOP + MENUITEM "&Reload",IDM_NAV_RELOAD + MENUITEM SEPARATOR + MENUITEM "C&ut",IDM_EDIT_CUT,GRAYED + MENUITEM "&Copy",IDM_EDIT_COPY,GRAYED + MENUITEM "&Paste",IDM_EDIT_PASTE,GRAYED + MENUITEM "&Delete",IDM_EDIT_DELETE,GRAYED + END +END - -NSWS_ID_TOOLBAR_HOT_BITMAP BITMAP "toolbarh.bmp" - - - -// -// Menu resources -// -NSWS_ID_CTXMENU MENU -{ - POPUP "Context" - { - MENUITEM "&Back", NSWS_ID_NAV_BACK - MENUITEM "F&orward", NSWS_ID_NAV_FORWARD - MENUITEM "&Home", NSWS_ID_NAV_HOME - MENUITEM "&Stop", NSWS_ID_NAV_STOP - MENUITEM "&Reload", NSWS_ID_NAV_RELOAD - MENUITEM SEPARATOR - MENUITEM "C&ut", NSWS_ID_EDIT_CUT, GRAYED - MENUITEM "&Copy", NSWS_ID_EDIT_COPY, GRAYED - MENUITEM "&Paste", NSWS_ID_EDIT_PASTE, GRAYED - MENUITEM "&Delete", NSWS_ID_EDIT_DELETE, GRAYED - } -} - - - -NSWS_ID_MAINMENU MENU -{ - POPUP "&File" - { - MENUITEM "&New Window", NSWS_ID_FILE_OPEN_WINDOW - MENUITEM "Open &Location", NSWS_ID_FILE_OPEN_LOCATION - MENUITEM "&Close", NSWS_ID_FILE_CLOSE_WINDOW - MENUITEM SEPARATOR - MENUITEM "&Save Page", NSWS_ID_FILE_SAVE_PAGE, HELP, GRAYED - POPUP "Save Page &As" - { - MENUITEM "Text", NSWS_ID_FILE_SAVEAS_TEXT, GRAYED - MENUITEM "PDF", NSWS_ID_FILE_SAVEAS_PDF, GRAYED - MENUITEM "Drawfile", NSWS_ID_FILE_SAVEAS_DRAWFILE, GRAYED - MENUITEM "Postscript", NSWS_ID_FILE_SAVEAS_POSTSCRIPT, GRAYED - } - MENUITEM SEPARATOR - MENUITEM "Print Pre&view", NSWS_ID_FILE_PRINT_PREVIEW - MENUITEM "&Print", NSWS_ID_FILE_PRINT - MENUITEM SEPARATOR - MENUITEM "E&xit", NSWS_ID_FILE_QUIT - } - POPUP "&Edit" - { - MENUITEM "Cu&t", NSWS_ID_EDIT_CUT - MENUITEM "&Copy", NSWS_ID_EDIT_COPY - MENUITEM "&Paste", NSWS_ID_EDIT_PASTE - MENUITEM "&Delete", NSWS_ID_EDIT_DELETE - MENUITEM SEPARATOR - MENUITEM "Select &All", NSWS_ID_EDIT_SELECT_ALL - MENUITEM SEPARATOR - MENUITEM "&Find", NSWS_ID_EDIT_SEARCH - } - POPUP "&View" - { - MENUITEM "Stop", NSWS_ID_NAV_STOP - MENUITEM "Reload", NSWS_ID_NAV_RELOAD - MENUITEM SEPARATOR - POPUP "&Zoom" - { - MENUITEM "Zoom &In", NSWS_ID_VIEW_ZOOMPLUS - MENUITEM "Zoom &Out", NSWS_ID_VIEW_ZOOMMINUS - MENUITEM "&Reset", NSWS_ID_VIEW_ZOOMNORMAL - } - MENUITEM SEPARATOR - MENUITEM "Page S&ource", NSWS_ID_VIEW_SOURCE - MENUITEM "&Full Screen", NSWS_ID_VIEW_FULLSCREEN - } - POPUP "&History" - { - MENUITEM "Back", NSWS_ID_NAV_BACK - MENUITEM "Forward", NSWS_ID_NAV_FORWARD - MENUITEM "Home", NSWS_ID_NAV_HOME - MENUITEM SEPARATOR - MENUITEM "Local History", NSWS_ID_NAV_LOCALHISTORY - MENUITEM "Global History", NSWS_ID_NAV_GLOBALHISTORY, GRAYED - } - POPUP "&Tools" - { - MENUITEM "&Downloads", NSWS_ID_VIEW_DOWNLOADS - MENUITEM "Save size and location", NSWS_ID_VIEW_SAVE_WIN_METRICS - POPUP "Debugging" - { - MENUITEM "Debug rendering", NSWS_ID_VIEW_TOGGLE_DEBUG_RENDERING - MENUITEM "Save Box Tree", NSWS_ID_VIEW_DEBUGGING_SAVE_BOXTREE, GRAYED - MENUITEM "Save DOM Tree", NSWS_ID_VIEW_DEBUGGING_SAVE_DOMTREE, GRAYED - } - MENUITEM SEPARATOR - MENUITEM "Options...", NSWS_ID_EDIT_PREFERENCES - } - POPUP "&Help" - { - MENUITEM "&Contents", NSWS_ID_HELP_CONTENTS, GRAYED - MENUITEM "G&uide", NSWS_ID_HELP_GUIDE, GRAYED - MENUITEM "&Info", NSWS_ID_HELP_INFO, GRAYED - MENUITEM SEPARATOR - MENUITEM "&About NetSurf", NSWS_ID_HELP_ABOUT - } -} - - - -// -// Dialog resources -// -NSWS_ID_ABOUT_DIALOG DIALOG 0, 0, 400, 350 -STYLE DS_MODALFRAME | DS_SETFONT | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP | WS_SYSMENU +IDD_DLG_ABOUT DIALOGEX 10,10,309,180 CAPTION "About NetSurf" -FONT 8, "MS Sans Serif" -{ - DEFPUSHBUTTON "&OK", IDOK, 345, 317, 41, 16 - GROUPBOX "About NetSurf", IDC_STATIC, 10, 10, 380, 328 - CTEXT "content", NSWS_ID_ABOUT_CONTENT, 20, 20, 361, 292, SS_CENTER -} +FONT 8,"MS Sans Serif",0,0,0 +STYLE WS_VISIBLE|WS_CAPTION|WS_SYSMENU +EXSTYLE WS_EX_DLGMODALFRAME +BEGIN + CONTROL IDR_NETSURF_BANNER,IDC_IMG1,"Static",SS_BITMAP,0,0,308,86 + CONTROL "",IDC_ABOUT_CONTENT,"Static",WS_CHILDWINDOW|WS_VISIBLE,10,93,288,63 + CONTROL "&OK",IDOK,"Button",WS_CHILDWINDOW|WS_VISIBLE|WS_TABSTOP,246,160,54,15 + CONTROL "&Credits",IDC_BTN_CREDITS,"Button",WS_CHILDWINDOW|WS_VISIBLE|WS_TABSTOP,10,160,54,15 + CONTROL "&Licence",IDC_BTN_LICENCE,"Button",WS_CHILDWINDOW|WS_VISIBLE|WS_TABSTOP,70,160,54,15 +END + +IDD_DLG_DOWNLOAD DIALOGEX 0,0,201,84 +CAPTION "Download" +FONT 8,"MS Sans Serif",0,0,0 +STYLE WS_POPUP|WS_VISIBLE|WS_CAPTION|WS_SYSMENU|DS_MODALFRAME|DS_SETFONT +EXSTYLE WS_EX_DLGMODALFRAME +BEGIN + CONTROL "downloading [file] [size] from [domain] to [destination]",IDC_DOWNLOAD_LABEL,"Static",WS_CHILDWINDOW|WS_VISIBLE|WS_GROUP|SS_CENTER,6,6,189,35 + CONTROL "progress",IDC_DOWNLOAD_PROGRESS,PROGRESS_CLASS,WS_VISIBLE,6,50,189,10 + CONTROL "&OK",IDOK,"Button",WS_CHILDWINDOW|WS_VISIBLE|WS_TABSTOP,141,66,54,15 + CONTROL "&Cancel",IDCANCEL,"Button",WS_CHILDWINDOW|WS_VISIBLE|WS_TABSTOP,81,66,54,15 +END + + +IDD_DLG_OPTIONS_GENERAL DIALOGEX 0,0,220,200 +CAPTION "General" +FONT 8,"MS Shell Dlg" +STYLE DS_CONTROL|DS_SHELLFONT +BEGIN + /* home page entry */ + CONTROL "Home Page",IDC_STATIC,"Static",SS_LEFT,7,7,40,8 + CONTROL "",IDC_STATIC,"Static",SS_ETCHEDFRAME,47,11,166,1 + CONTROL IDR_HOME_BITMAP,IDC_STATIC,"Static",SS_BITMAP,15,19,24,24 + CONTROL "",IDC_PREFS_HOMEPAGE,"Edit",WS_TABSTOP|ES_OEMCONVERT|ES_AUTOHSCROLL,43,19,170,14,WS_EX_CLIENTEDGE + + + /* Content control */ + CONTROL "Content Control",IDC_STATIC,"Static",SS_LEFT,7,40,60,8 + CONTROL "",IDC_STATIC,"Static",SS_ETCHEDFRAME,67,44,146,1 + + CONTROL "Hide Images",IDC_PREFS_IMAGES,"Button",WS_CHILDWINDOW|WS_VISIBLE|WS_TABSTOP|BS_AUTOCHECKBOX,43,52,67,10 + CONTROL "Hide Advertisements",IDC_PREFS_ADVERTS,"Button",WS_CHILDWINDOW|WS_VISIBLE|WS_TABSTOP|BS_AUTOCHECKBOX,43,66,81,10 + CONTROL "Send referer",IDC_PREFS_REFERER,"Button",WS_CHILDWINDOW|WS_VISIBLE|WS_TABSTOP|BS_AUTOCHECKBOX,43,80,55,10 + +END + +IDD_DLG_OPTIONS_CONNECTIONS DIALOGEX 0,0,220,200 +CAPTION "Connections" +FONT 8,"MS Shell Dlg" +STYLE DS_CONTROL|DS_SHELLFONT +BEGIN + /* proxy divider */ + CONTROL "Proxy",IDC_STATIC,"Static",SS_LEFT,7,7,30,8 + CONTROL "",IDC_STATIC,"Static",SS_ETCHEDFRAME,37,11,176,1 + + /* proxy controls */ + CONTROL "Type:",IDC_STATIC,"Static",WS_CHILDWINDOW|WS_VISIBLE|WS_GROUP|SS_LEFT,43,22,40,8 + CONTROL "",IDC_PREFS_PROXYTYPE,"ComboBox",WS_CHILDWINDOW|WS_VISIBLE|WS_TABSTOP|CBS_DROPDOWNLIST,80,19,60,60 + + CONTROL "Server:",IDC_STATIC,"Static",WS_CHILDWINDOW|WS_VISIBLE|WS_GROUP|SS_LEFT,43,39,28,8 + CONTROL "",IDC_PREFS_PROXYHOST,"Edit",WS_CHILDWINDOW|WS_VISIBLE|WS_TABSTOP|ES_OEMCONVERT|ES_AUTOHSCROLL,80,36,80,14,WS_EX_CLIENTEDGE + + CONTROL "Port:",IDC_STATIC,"Static",WS_CHILDWINDOW|WS_VISIBLE|WS_GROUP|SS_LEFT,164,39,16,8 + CONTROL "",IDC_PREFS_PROXYPORT,"Edit",WS_CHILDWINDOW|WS_VISIBLE|WS_TABSTOP|ES_OEMCONVERT|ES_AUTOHSCROLL,182,36,24,14,WS_EX_CLIENTEDGE + + CONTROL "Username:",IDC_STATIC,"Static",WS_CHILDWINDOW|WS_VISIBLE|WS_GROUP|SS_LEFT,43,60,35,8 + CONTROL "",IDC_PREFS_PROXYNAME,"Edit",WS_CHILDWINDOW|WS_VISIBLE|WS_TABSTOP|ES_OEMCONVERT|ES_AUTOHSCROLL,80,57,45,14,WS_EX_CLIENTEDGE + + CONTROL "Password:",IDC_STATIC,"Static",WS_CHILDWINDOW|WS_VISIBLE|WS_GROUP|SS_LEFT,132,60,34,8 + CONTROL "",IDC_PREFS_PROXYPASS,"Edit",WS_CHILDWINDOW|WS_VISIBLE|WS_TABSTOP|ES_OEMCONVERT|ES_AUTOHSCROLL|ES_PASSWORD,168,57,45,14,WS_EX_CLIENTEDGE + + + /* fetcher divider */ + CONTROL "Fetchers",IDC_STATIC,"Static",SS_LEFT,7,78,40,8 + CONTROL "",IDC_STATIC,"Static",SS_ETCHEDFRAME,42,82,171,1 + + /* max fetchers */ + CONTROL "Max Fetchers:",IDC_STATIC,"Static",WS_CHILDWINDOW|WS_VISIBLE|WS_GROUP,43,96,64,8 + CONTROL "",IDC_PREFS_FETCHERS,"Edit",ES_NUMBER|ES_RIGHT|WS_CHILDWINDOW|WS_VISIBLE|WS_TABSTOP|WS_BORDER,111,93,30,14 + CONTROL "Max Fetchers",IDC_PREFS_FETCHERS_SPIN,UPDOWN_CLASS,UDS_AUTOBUDDY|UDS_ALIGNRIGHT|WS_VISIBLE,341,122,11,15 + + /* fetchers per host */ + CONTROL "Fetches per host:",IDC_STATIC,"Static",WS_CHILDWINDOW|WS_VISIBLE|WS_GROUP,43,118,64,8 + CONTROL "",IDC_PREFS_FETCH_HOST,"Edit",ES_NUMBER|ES_RIGHT|WS_CHILDWINDOW|WS_VISIBLE|WS_TABSTOP|WS_BORDER,111,114,30,14 + CONTROL "Fetches per host",IDC_PREFS_FETCH_HOST_SPIN,UPDOWN_CLASS,UDS_AUTOBUDDY|UDS_ALIGNRIGHT|WS_VISIBLE,341,140,11,15 + + /* cached fetchers */ + CONTROL "Cached Fetches:",IDC_STATIC,"Static",WS_CHILDWINDOW|WS_VISIBLE|WS_GROUP,43,138,64,8 + CONTROL "",IDC_PREFS_FETCH_HANDLES,"Edit",ES_NUMBER|ES_RIGHT|WS_CHILDWINDOW|WS_VISIBLE|WS_TABSTOP|WS_BORDER,111,135,30,14 + CONTROL "Cached Fetches",IDC_PREFS_FETCH_HANDLES_SPIN,UPDOWN_CLASS,UDS_AUTOBUDDY|UDS_ALIGNRIGHT|WS_VISIBLE,341,158,11,15 + +END + +IDD_DLG_OPTIONS_APPERANCE DIALOGEX 10,10,220,200 +CAPTION "Apperance" +FONT 8,"MS Shell Dlg" +STYLE DS_CONTROL|DS_SHELLFONT +BEGIN + /* proxy separator */ + CONTROL "Fonts",IDC_STATIC,"Static",SS_LEFT,7,7,20,8 + CONTROL "",IDC_STATIC,"Static",SS_ETCHEDFRAME,27,11,186,1 + + /* font controls */ + CONTROL "Sans-serif:",IDC_STATIC,"Static",WS_CHILDWINDOW|WS_VISIBLE|WS_GROUP|SS_LEFT,43,22,44,8 + CONTROL "Sans-serif",IDC_PREFS_SANS,"Button",WS_CHILDWINDOW|WS_VISIBLE|WS_TABSTOP,89,19,50,14 + + CONTROL "Serif:",IDC_STATIC,"Static",WS_CHILDWINDOW|WS_VISIBLE|WS_GROUP|SS_LEFT,43,40,24,8 + CONTROL "Serif",IDC_PREFS_SERIF,"Button",WS_CHILDWINDOW|WS_VISIBLE|WS_TABSTOP,89,37,50,14 + + CONTROL "Monospace:",IDC_STATIC,"Static",WS_CHILDWINDOW|WS_VISIBLE|WS_GROUP|SS_LEFT,43,58,40,8 + CONTROL "Monospace",IDC_PREFS_MONO,"Button",WS_CHILDWINDOW|WS_VISIBLE|WS_TABSTOP,89,55,50,14 + + CONTROL "Cursive:",IDC_STATIC,"Static",WS_CHILDWINDOW|WS_VISIBLE|WS_GROUP|SS_LEFT,43,76,32,8 + CONTROL "Cursive",IDC_PREFS_CURSIVE,"Button",WS_CHILDWINDOW|WS_VISIBLE|WS_TABSTOP,89,73,50,14 + + CONTROL "Fantasy:",IDC_STATIC,"Static",WS_CHILDWINDOW|WS_VISIBLE|WS_GROUP|SS_LEFT,43,94,32,8 + CONTROL "Fantasy",IDC_PREFS_FANTASY,"Button",WS_CHILDWINDOW|WS_VISIBLE|WS_TABSTOP,89,91,50,14 + + + CONTROL "Default:",IDC_STATIC,"Static",WS_CHILDWINDOW|WS_VISIBLE|WS_GROUP|SS_LEFT,43,112,38,8 + CONTROL "",IDC_PREFS_FONTDEF,"ComboBox",WS_CHILDWINDOW|WS_VISIBLE|WS_TABSTOP|CBS_DROPDOWNLIST,89,109,50,60 + + CONTROL "Size:",IDC_STATIC,"Static",WS_CHILDWINDOW|WS_VISIBLE|WS_GROUP|SS_LEFT,147,112,16,8 + CONTROL "",IDC_PREFS_FONT_SIZE,"Edit",ES_NUMBER|WS_CHILDWINDOW|WS_VISIBLE|WS_TABSTOP,165,109,35,14,WS_EX_CLIENTEDGE + CONTROL "Font Size",IDC_PREFS_FONT_SIZE_SPIN,UPDOWN_CLASS,UDS_AUTOBUDDY|UDS_ALIGNRIGHT|WS_VISIBLE,75,137,11,15 + + CONTROL "Minimum Size:",IDC_STATIC,"Static",WS_CHILDWINDOW|WS_VISIBLE|WS_GROUP|SS_LEFT,43,130,52,8 + CONTROL "",IDC_PREFS_FONT_MINSIZE,"Edit",WS_CHILDWINDOW|WS_VISIBLE|WS_TABSTOP,97,127,35,14,WS_EX_CLIENTEDGE + CONTROL "Minimum Font Size",IDC_PREFS_FONT_MINSIZE_SPIN,UPDOWN_CLASS,UDS_AUTOBUDDY|UDS_ALIGNRIGHT|WS_VISIBLE,76,159,11,15 + + /* animation separator */ + CONTROL "Animation",IDC_STATIC,"Static",SS_LEFT,7,148,36,8 + CONTROL "",IDC_STATIC,"Static",SS_ETCHEDFRAME,43,152,170,1 + + CONTROL "Disable",IDC_PREFS_NOANIMATION,"Button",WS_CHILDWINDOW|WS_VISIBLE|WS_TABSTOP|BS_AUTOCHECKBOX,43,163,39,10 + CONTROL "Minimum delay:",IDC_STATIC,"Static",WS_CHILDWINDOW|WS_VISIBLE|WS_GROUP|SS_LEFT,55,180,56,8 + CONTROL "",IDC_PREFS_ANIMATIONDELAY,"Edit",WS_CHILDWINDOW|WS_VISIBLE|WS_TABSTOP,113,177,35,14,WS_EX_CLIENTEDGE + CONTROL "Min delay",IDC_PREFS_ANIMATIONDELAY_SPIN,UPDOWN_CLASS,UDS_AUTOBUDDY|UDS_ALIGNRIGHT|WS_VISIBLE,43,210,11,15 -NSWS_ID_DOWNLOAD_DIALOG DIALOG 0, 0, 200, 100 -STYLE DS_MODALFRAME | DS_SETFONT | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP | WS_SYSMENU -CAPTION "download" -FONT 8, "MS Sans Serif" -{ - PUSHBUTTON "&OK", IDOK, 150, 75, 30, 20 - PUSHBUTTON "&Cancel", IDCANCEL, 110, 75, 35, 20 - CTEXT "downloading [file] [size] from [domain] to [destination]", NSWS_ID_DOWNLOAD_LABEL, 6, 6, 189, 35, SS_CENTER - CONTROL "progress", NSWS_ID_DOWNLOAD_PROGRESS, PROGRESS_CLASS, 0, 6, 50, 189, 10 -} - - - -NSWS_ID_PREFS_DIALOG DIALOG 0, 0, 388, 205 -STYLE DS_MODALFRAME | DS_SETFONT | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP | WS_SYSMENU -CAPTION "Edit preferences" -FONT 8, "MS Sans Serif" -{ - PUSHBUTTON "&OK", IDOK, 297, 179, 34, 18 - PUSHBUTTON "&Cancel", IDCANCEL, 336, 179, 45, 18 - CTEXT "Home Page:", IDC_STATIC, 11, 17, 40, 8, SS_CENTER - EDITTEXT NSWS_ID_PREFS_HOMEPAGE, 55, 15, 322, 12, ES_AUTOHSCROLL | ES_OEMCONVERT - AUTOCHECKBOX "Hide Advertisements", NSWS_ID_PREFS_ADVERTS, 203, 51, 81, 10 - AUTOCHECKBOX "Disable Pop-ups", NSWS_ID_PREFS_POPUPS, 203, 63, 67, 10 - AUTOCHECKBOX "Disable Plugins", NSWS_ID_PREFS_PLUGINS, 203, 76, 64, 10 - AUTOCHECKBOX "Send referer", NSWS_ID_PREFS_REFERER, 203, 89, 55, 10 - CTEXT "HTTP proxy", IDC_STATIC, 9, 51, 40, 10, SS_CENTER - COMBOBOX NSWS_ID_PREFS_PROXYTYPE, 52, 49, 131, 60, CBS_DROPDOWNLIST - CTEXT "Host:", IDC_STATIC, 31, 70, 18, 8, SS_CENTER - EDITTEXT NSWS_ID_PREFS_PROXYHOST, 52, 69, 89, 12, ES_AUTOHSCROLL | ES_OEMCONVERT - EDITTEXT NSWS_ID_PREFS_PROXYPORT, 163, 69, 20, 12, ES_AUTOHSCROLL | ES_OEMCONVERT - CTEXT "Username:", IDC_STATIC, 14, 88, 35, 8, SS_CENTER - EDITTEXT NSWS_ID_PREFS_PROXYNAME, 52, 86, 45, 12, ES_AUTOHSCROLL | ES_OEMCONVERT - CTEXT "Password:", IDC_STATIC, 101, 89, 34, 8, SS_CENTER - EDITTEXT NSWS_ID_PREFS_PROXYPASS, 138, 86, 45, 12, ES_AUTOHSCROLL | ES_OEMCONVERT - CTEXT "Size", IDC_STATIC, 32, 140, 14, 8, SS_CENTER - EDITTEXT NSWS_ID_PREFS_FONT_SIZE, 49, 137, 26, 15 - CONTROL "Font Size", NSWS_ID_PREFS_FONT_SIZE_SPIN, UPDOWN_CLASS, UDS_NOTHOUSANDS, 75, 137, 11, 15 - CTEXT "Min Size", IDC_STATIC, 18, 162, 28, 8, SS_CENTER - EDITTEXT NSWS_ID_PREFS_FONT_MINSIZE, 49, 159, 26, 15 - CONTROL "Font Size", NSWS_ID_PREFS_FONT_MINSIZE_SPIN, UPDOWN_CLASS, UDS_NOTHOUSANDS, 76, 159, 11, 15 - CTEXT "Sans-serif:", IDC_STATIC, 125, 135, 34, 8, SS_CENTER - PUSHBUTTON "Sans", NSWS_ID_PREFS_SANS, 165, 132, 65, 15 - CTEXT "Serif:", IDC_STATIC, 142, 119, 17, 8, SS_CENTER - PUSHBUTTON "Serif", NSWS_ID_PREFS_SERIF, 165, 116, 65, 15 - CTEXT "Monospace:", IDC_STATIC, 119, 169, 40, 8, SS_CENTER - PUSHBUTTON "Monospace", NSWS_ID_PREFS_MONO, 165, 166, 65, 15 - CTEXT "Cursive:", IDC_STATIC, 133, 152, 26, 8, SS_CENTER - PUSHBUTTON "Cursive", NSWS_ID_PREFS_CURSIVE, 165, 149, 65, 15 - CTEXT "Fantasy:", IDC_STATIC, 131, 186, 28, 8, SS_CENTER - PUSHBUTTON "Fantasy", NSWS_ID_PREFS_FANTASY, 165, 183, 65, 15 - CTEXT "Font default", IDC_STATIC, 8, 121, 38, 8, SS_CENTER - COMBOBOX NSWS_ID_PREFS_FONTDEF, 49, 118, 68, 60, CBS_DROPDOWNLIST - CTEXT "Max Fetchers", IDC_STATIC, 266, 122, 44, 8, SS_CENTER - EDITTEXT NSWS_ID_PREFS_FETCHERS, 314, 120, 25, 15 - CONTROL "Max Fetchers", NSWS_ID_PREFS_FETCHERS_SPIN, UPDOWN_CLASS, UDS_AUTOBUDDY | UDS_SETBUDDYINT, 340, 120, 11, 15 - CTEXT "Fetches per host", IDC_STATIC, 256, 139, 54, 8, SS_CENTER - EDITTEXT NSWS_ID_PREFS_FETCH_HOST, 314, 137, 25, 15 - CONTROL "Fetches per host", NSWS_ID_PREFS_FETCH_HOST_SPIN, UPDOWN_CLASS, UDS_AUTOBUDDY | UDS_SETBUDDYINT, 341, 137, 11, 15 - CTEXT "Cached Fetches", IDC_STATIC, 258, 157, 53, 8, SS_CENTER - EDITTEXT NSWS_ID_PREFS_FETCH_HANDLES, 314, 154, 25, 15 - CONTROL "cached Fetches", NSWS_ID_PREFS_FETCH_HANDLES_SPIN, UPDOWN_CLASS, UDS_AUTOBUDDY | UDS_SETBUDDYINT, 341, 154, 11, 15 - AUTOCHECKBOX "Disable", NSWS_ID_PREFS_NOANIMATION, 307, 51, 39, 10 - CTEXT "Min delay", IDC_STATIC, 308, 68, 31, 8, SS_CENTER - EDITTEXT NSWS_ID_PREFS_ANIMATIONDELAY, 343, 65, 20, 15 - CONTROL "Min delay", NSWS_ID_PREFS_ANIMATIONDELAY_SPIN, UPDOWN_CLASS, UDS_NOTHOUSANDS, 363, 65, 11, 15 - GROUPBOX "Startup", IDC_STATIC, 3, 2, 379, 31 - GROUPBOX "Connection", IDC_STATIC, 4, 37, 186, 67 - CTEXT "Port:", IDC_STATIC, 144, 71, 16, 8, SS_CENTER - GROUPBOX "Content", IDC_STATIC, 198, 37, 91, 68 - GROUPBOX "Animation", IDC_STATIC, 298, 37, 85, 68 - GROUPBOX "Fonts", IDC_STATIC, 3, 108, 234, 94 - GROUPBOX "Fetchers", IDC_STATIC, 247, 108, 134, 69 -} - - - -// -// Icon resources -// -NSWS_ID_NETSURF32_ICON ICON "NetSurf32.ico" -NSWS_ID_NETSURF16_ICON ICON "NetSurf16.ico" +END diff --git a/windows/res/throbber/throbber0.bmp b/windows/res/throbber/throbber0.bmp new file mode 100644 index 0000000000000000000000000000000000000000..2cef4da701524cc62cfa4cf53e4831076b0d09aa GIT binary patch literal 1866 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 literal 0 HcmV?d00001 diff --git a/windows/res/throbber/throbber6.bmp b/windows/res/throbber/throbber6.bmp new file mode 100644 index 0000000000000000000000000000000000000000..01d3f480db6f69be7714e3b51c3431d41173217a GIT binary patch literal 1866 zcmb_cNvj$`5T18Q4nYudNj&5vlDjv>OD_d(PIVfjiB-oBw% zbQFgtL7?YsJw03(gs;O7e=eroZfE-T_eVrrg^xMU{<5o^JRYyt3k7B(kzgQDEEbC-K?xbPTD@McC40fdb_RoihmvI1?RHTUA_K+m_sc@HE>FBfz%=wE1 z{}&E+d_i8g9gGj<1)P`F8Jz` z5GbS32$TPma=Gksx$sMYK#{aP+LAzM%;)pR<57--d*O6C34})c7I-&A;qvlOLA=1PV-mQ*ppV y353wV6V7N({v_}?|rrFZ`%0Qn1G(Qirs literal 0 HcmV?d00001 diff --git a/windows/res/throbber/throbber7.bmp b/windows/res/throbber/throbber7.bmp new file mode 100644 index 0000000000000000000000000000000000000000..b5421cf0e3b068e247de336c520f9692136d0ce8 GIT binary patch literal 1866 zcmb`HyKfpn5XR3=PKS_dC{jkG!4yzHNdCPfM;2y_ULF@^@&AR&T4 zJPTgtP5zy9k({4z&H7j%j-rgXWoCBf+izy)?&IfAuQgr1v3}us_w=0Unx>6kY1-R2 z;?V>3el^XUEYl6=?YrKpqp+wC?IiP-J- z3tdp6(J0Q73Huw1#iCRy4F-eT+gpKPTq~8za5${hYOB?1KX1><<#INg&1^PXES6@o zDai;Zhr`k7bS^J1old9E=i{KgfJnK!yW3?y{maTLt!>uU*u;`jTN0u?gn=jXH8OgRga<6JJ65lX49+wIa5 z!3QOkN*#g-Pd=Y_yWIi`Wi%Se$jxR0VaB9TC{WI1GLc(H6{r%=tx;^N)sn;D@pu?W zlgUIYjwT*;mdoW}Fv!Sr9RxrI1Uc{EAI(ynOc4k|LZJ|pXp{s&;Rq$=s7YNrn8$w# zRB*!K@Xf#`;*ZU8B=3S#R6eao$4wQHcsF5+7PN$ek6^glBF6;Gruh*m7 z?RHz17Fk=EltVGIP6u9wCFhbqm z-{YrJ;RFG*(P$V!lF8&@6BJ4$(y=Rp@NuIjMjVbdl94*63s$fNhu6&jb9Hlb14+>w un4AI;XcPznZ6A-vMi8Ongf=`6%aLRb6}llQK?d_M=I=esfav+3Q+@+=q;FpU literal 0 HcmV?d00001 diff --git a/windows/resourceid.h b/windows/resourceid.h index b846e3cf9..84076a653 100644 --- a/windows/resourceid.h +++ b/windows/resourceid.h @@ -23,95 +23,115 @@ #define IDC_STATIC (-1) #endif -#define NSWS_ID_NETSURF32_ICON 10 -#define NSWS_ID_NETSURF16_ICON 11 +#define IDR_NETSURF32_ICON 100 +#define IDR_NETSURF16_ICON 101 +#define IDR_TOOLBAR_BITMAP 102 +#define IDR_TOOLBAR_BITMAP_GREY 103 +#define IDR_TOOLBAR_BITMAP_HOT 104 +#define IDR_NETSURF_BANNER 105 +#define IDR_HOME_BITMAP 114 -#define NSWS_ID_MAINMENU 101 -#define NSWS_ID_CTXMENU 103 -#define NSWS_ID_TOOLBAR_BITMAP 107 -#define NSWS_ID_TOOLBAR_GREY_BITMAP 108 -#define NSWS_ID_TOOLBAR_HOT_BITMAP 109 +#define IDR_THROBBER_FRAME0_BITMAP 106 +#define IDR_THROBBER_FRAME1_BITMAP 107 +#define IDR_THROBBER_FRAME2_BITMAP 108 +#define IDR_THROBBER_FRAME3_BITMAP 109 +#define IDR_THROBBER_FRAME4_BITMAP 110 +#define IDR_THROBBER_FRAME5_BITMAP 111 +#define IDR_THROBBER_FRAME6_BITMAP 112 +#define IDR_THROBBER_FRAME7_BITMAP 113 -#define NSWS_ID_TOOLBAR 1111 -#define NSWS_ID_URLBAR 1112 -#define NSWS_ID_THROBBER 1113 -#define NSWS_ID_DRAWINGAREA 1114 -#define NSWS_ID_STATUSBAR 1115 -#define NSWS_ID_LAUNCH_URL 1116 +#define IDD_DLG_ABOUT 1000 +#define IDC_IMG1 1001 +#define IDC_ABOUT_CONTENT 1002 +#define IDC_BTN_CREDITS 1004 +#define IDC_BTN_LICENCE 1005 -#define NSWS_ID_ABOUT_DIALOG 11111 -#define NSWS_ID_ABOUT_CONTENT 11112 -#define NSWS_ID_PREFS_DIALOG 11113 -#define NSWS_ID_PREFS_HOMEPAGE 11114 -#define NSWS_ID_PREFS_ADVERTS 11115 -#define NSWS_ID_PREFS_POPUPS 11116 -#define NSWS_ID_PREFS_PLUGINS 11117 -#define NSWS_ID_PREFS_REFERER 11118 -#define NSWS_ID_PREFS_PROXYTYPE 11119 -#define NSWS_ID_PREFS_PROXYHOST 11120 -#define NSWS_ID_PREFS_PROXYPORT 11121 -#define NSWS_ID_PREFS_PROXYNAME 11122 -#define NSWS_ID_PREFS_PROXYPASS 11123 -#define NSWS_ID_PREFS_FONT_SIZE 11124 -#define NSWS_ID_PREFS_FONT_SIZE_SPIN 11125 -#define NSWS_ID_PREFS_FONT_MINSIZE 11126 -#define NSWS_ID_PREFS_FONT_MINSIZE_SPIN 11127 -#define NSWS_ID_PREFS_SANS 11128 -#define NSWS_ID_PREFS_SERIF 11129 -#define NSWS_ID_PREFS_MONO 11130 -#define NSWS_ID_PREFS_CURSIVE 11131 -#define NSWS_ID_PREFS_FANTASY 11132 -#define NSWS_ID_PREFS_FONTDEF 11133 -#define NSWS_ID_PREFS_FETCHERS 11134 -#define NSWS_ID_PREFS_FETCHERS_SPIN 11135 -#define NSWS_ID_PREFS_FETCH_HOST 11136 -#define NSWS_ID_PREFS_FETCH_HOST_SPIN 11137 -#define NSWS_ID_PREFS_FETCH_HANDLES 11138 -#define NSWS_ID_PREFS_FETCH_HANDLES_SPIN 11139 -#define NSWS_ID_PREFS_NOANIMATION 11140 -#define NSWS_ID_PREFS_ANIMATIONDELAY 11141 -#define NSWS_ID_PREFS_ANIMATIONDELAY_SPIN 11142 -#define NSWS_ID_DOWNLOAD_DIALOG 11143 -#define NSWS_ID_DOWNLOAD_LABEL 11144 -#define NSWS_ID_DOWNLOAD_PROGRESS 11145 -#define NSWS_ID_FILE_OPEN_WINDOW 40000 -#define NSWS_ID_FILE_OPEN_LOCATION 40001 -#define NSWS_ID_FILE_CLOSE_WINDOW 40002 -#define NSWS_ID_FILE_SAVEAS_TEXT 40003 -#define NSWS_ID_FILE_SAVEAS_PDF 40004 -#define NSWS_ID_FILE_SAVEAS_DRAWFILE 40005 -#define NSWS_ID_FILE_SAVEAS_POSTSCRIPT 40006 -#define NSWS_ID_FILE_PRINT_PREVIEW 40007 -#define NSWS_ID_FILE_PRINT 40008 -#define NSWS_ID_FILE_QUIT 40009 -#define NSWS_ID_FILE_SAVE_PAGE 40010 -#define NSWS_ID_EDIT_CUT 40011 -#define NSWS_ID_EDIT_COPY 40012 -#define NSWS_ID_EDIT_PASTE 40013 -#define NSWS_ID_EDIT_DELETE 40014 -#define NSWS_ID_EDIT_SELECT_ALL 40015 -#define NSWS_ID_EDIT_SEARCH 40016 -#define NSWS_ID_EDIT_PREFERENCES 40017 -#define NSWS_ID_HELP_CONTENTS 40018 -#define NSWS_ID_HELP_GUIDE 40019 -#define NSWS_ID_HELP_INFO 40020 -#define NSWS_ID_HELP_ABOUT 40021 -#define NSWS_ID_VIEW_FULLSCREEN 40022 -#define NSWS_ID_VIEW_SOURCE 40023 -#define NSWS_ID_VIEW_ZOOMPLUS 40024 -#define NSWS_ID_VIEW_ZOOMMINUS 40025 -#define NSWS_ID_VIEW_ZOOMNORMAL 40026 -#define NSWS_ID_NAV_BACK 40027 -#define NSWS_ID_NAV_FORWARD 40028 -#define NSWS_ID_NAV_HOME 40029 -#define NSWS_ID_NAV_STOP 40030 -#define NSWS_ID_NAV_RELOAD 40031 -#define NSWS_ID_NAV_LOCALHISTORY 40032 -#define NSWS_ID_NAV_GLOBALHISTORY 40033 -#define NSWS_ID_VIEW_DOWNLOADS 40034 -#define NSWS_ID_VIEW_SAVE_WIN_METRICS 40035 -#define NSWS_ID_VIEW_TOGGLE_DEBUG_RENDERING 40036 -#define NSWS_ID_VIEW_DEBUGGING_SAVE_BOXTREE 40037 -#define NSWS_ID_VIEW_DEBUGGING_SAVE_DOMTREE 40038 +#define IDD_DLG_DOWNLOAD 1100 +#define IDC_DOWNLOAD_LABEL 1101 +#define IDC_DOWNLOAD_PROGRESS 1102 + +#define IDD_DLG_MAIN 1300 +#define IDC_MAIN_TOOLBAR 1301 +#define IDC_MAIN_URLBAR 1302 +#define IDC_MAIN_THROBBER 1303 +#define IDC_MAIN_DRAWINGAREA 1304 +#define IDC_MAIN_STATUSBAR 1305 +#define IDC_MAIN_LAUNCH_URL 1306 + +#define IDD_DLG_OPTIONS_GENERAL 1400 +#define IDC_PREFS_HOMEPAGE 1401 +#define IDC_PREFS_IMAGES 1402 +#define IDC_PREFS_ADVERTS 1403 +#define IDC_PREFS_REFERER 1404 + +#define IDD_DLG_OPTIONS_CONNECTIONS 1500 +#define IDC_PREFS_FETCHERS 1501 +#define IDC_PREFS_FETCHERS_SPIN 1502 +#define IDC_PREFS_FETCH_HOST 1503 +#define IDC_PREFS_FETCH_HOST_SPIN 1504 +#define IDC_PREFS_FETCH_HANDLES 1505 +#define IDC_PREFS_FETCH_HANDLES_SPIN 1506 + +#define IDD_DLG_OPTIONS_APPERANCE 1200 +#define IDC_PREFS_PROXYTYPE 1206 +#define IDC_PREFS_PROXYHOST 1207 +#define IDC_PREFS_PROXYPORT 1208 +#define IDC_PREFS_PROXYNAME 1209 +#define IDC_PREFS_PROXYPASS 1210 +#define IDC_PREFS_FONT_SIZE 1211 +#define IDC_PREFS_FONT_MINSIZE 1212 +#define IDC_PREFS_FONT_MINSIZE_SPIN 1213 +#define IDC_PREFS_SANS 1214 +#define IDC_PREFS_SERIF 1215 +#define IDC_PREFS_FONT_SIZE_SPIN 1216 +#define IDC_PREFS_MONO 1217 +#define IDC_PREFS_CURSIVE 1218 +#define IDC_PREFS_FANTASY 1219 +#define IDC_PREFS_FONTDEF 1220 +#define IDC_PREFS_NOANIMATION 1227 +#define IDC_PREFS_ANIMATIONDELAY 1228 +#define IDC_PREFS_ANIMATIONDELAY_SPIN 1229 + +#define IDR_MENU_MAIN 10000 +#define IDM_FILE_OPEN_WINDOW 10001 +#define IDM_FILE_OPEN_LOCATION 10002 +#define IDM_FILE_CLOSE_WINDOW 10003 +#define IDM_FILE_SAVE_PAGE 10004 +#define IDM_FILE_SAVEAS_TEXT 10005 +#define IDM_FILE_SAVEAS_PDF 10006 +#define IDM_FILE_SAVEAS_POSTSCRIPT 10007 +#define IDM_FILE_PRINT_PREVIEW 10008 +#define IDM_FILE_PRINT 10009 +#define IDM_FILE_QUIT 10010 +#define IDM_EDIT_CUT 10011 +#define IDM_EDIT_COPY 10012 +#define IDM_EDIT_PASTE 10013 +#define IDM_EDIT_DELETE 10014 +#define IDM_EDIT_SELECT_ALL 10015 +#define IDM_EDIT_SEARCH 10016 +#define IDM_NAV_STOP 10017 +#define IDM_NAV_RELOAD 10018 +#define IDM_VIEW_ZOOMPLUS 10019 +#define IDM_VIEW_ZOOMMINUS 10020 +#define IDM_VIEW_ZOOMNORMAL 10021 +#define IDM_VIEW_SOURCE 10022 +#define IDM_VIEW_FULLSCREEN 10023 +#define IDM_NAV_BACK 10024 +#define IDM_NAV_FORWARD 10025 +#define IDM_NAV_HOME 10026 +#define IDM_NAV_LOCALHISTORY 10027 +#define IDM_NAV_GLOBALHISTORY 10028 +#define IDM_VIEW_DOWNLOADS 10029 +#define IDM_VIEW_SAVE_WIN_METRICS 10030 +#define IDM_VIEW_TOGGLE_DEBUG_RENDERING 10031 +#define IDM_VIEW_DEBUGGING_SAVE_BOXTREE 10032 +#define IDM_VIEW_DEBUGGING_SAVE_DOMTREE 10033 +#define IDM_EDIT_PREFERENCES 10034 +#define IDM_HELP_CONTENTS 10035 +#define IDM_HELP_GUIDE 10036 +#define IDM_HELP_INFO 10037 +#define IDM_HELP_ABOUT 10038 + +#define IDR_MENU_CONTEXT 11000 #endif diff --git a/windows/windbg.c b/windows/windbg.c index bfbf0a343..ccbecc31e 100644 --- a/windows/windbg.c +++ b/windows/windbg.c @@ -1,3 +1,22 @@ +/* + * Copyright 2011 Vincent Sanders + * + * This file is part of NetSurf, http://www.netsurf-browser.org/ + * + * NetSurf is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * NetSurf is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include #include #include "windbg.h" @@ -610,3 +629,35 @@ const char *msg_num_to_name(int msg) return str; } + +void win_perror(const char * lpszFunction) +{ + /* Retrieve the system error message for the last-error code */ + + LPVOID lpMsgBuf; + LPVOID lpDisplayBuf; + DWORD dw = GetLastError(); + + FormatMessage( + FORMAT_MESSAGE_ALLOCATE_BUFFER | + FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_IGNORE_INSERTS, + NULL, + dw, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + (LPTSTR) &lpMsgBuf, + 0, NULL ); + + /* Display the error message and exit the process */ + + lpDisplayBuf = (LPVOID)LocalAlloc(LMEM_ZEROINIT, (lstrlen((LPCTSTR)lpMsgBuf) + lstrlen((LPCTSTR)lpszFunction) + 40) * sizeof(TCHAR)); + + snprintf((LPTSTR)lpDisplayBuf, + LocalSize(lpDisplayBuf) / sizeof(TCHAR), + TEXT("%s failed with error %ld: %s"), + lpszFunction, dw, (char *)lpMsgBuf); + MessageBox(NULL, (LPCTSTR)lpDisplayBuf, TEXT("Error"), MB_OK); + + LocalFree(lpMsgBuf); + LocalFree(lpDisplayBuf); +} diff --git a/windows/windbg.h b/windows/windbg.h index d3f9099be..086ed343e 100644 --- a/windows/windbg.h +++ b/windows/windbg.h @@ -1 +1,25 @@ +/* + * Copyright 2010 Vincent Sanders + * + * This file is part of NetSurf, http://www.netsurf-browser.org/ + * + * NetSurf is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * NetSurf is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef _NETSURF_WINDOWS_WINDBG_H_ +#define _NETSURF_WINDOWS_WINDBG_H_ + const char *msg_num_to_name(int msg); +void win_perror(const char * lpszFunction); + +#endif