25,7 → 25,6 |
|
//useful patterns |
#include "..\lib\patterns\history.h" |
#include "..\lib\patterns\http_downloader.h" |
#include "..\lib\patterns\simple_open_dialog.h" |
#include "..\lib\patterns\toolbar_button.h" |
#include "..\lib\patterns\restart_process.h" |
32,7 → 31,7 |
|
char editbox_icons[] = FROM "res/editbox_icons.raw"; |
|
char version[]="WebView 2.7a"; |
char version[]="WebView 2.7b"; |
|
#include "texts.h" |
#include "cache.h" |
60,7 → 59,7 |
IN_NEW_TAB, |
IN_NEW_WINDOW, |
COPY_LINK_URL, |
DOWNLOAD_LINK_CONTENTS, |
DOWNLOAD_LINK_CT, |
TAB_ID, |
TAB_CLOSE_ID = 900 |
}; |
143,7 → 142,6 |
{ |
int i, redirect_count=0; |
LoadLibraries(); |
//CreateDir("/tmp0/1/WebView_Cache"); |
HandleParam(); |
WB1.list.SetFont(8, 14, 10011000b); |
WB1.list.no_selection = true; |
238,13 → 236,7 |
if (http.transfer <= 0) break; |
http.receive(); |
EventUpdateProgressBar(); |
if (http.check_content_type()) // application || image |
if (http.content_type[0] == 'a') || (http.content_type[0] == 'i') { |
EventOpenDownloader(history.current()); |
StopLoading(); |
history.back(); |
EventRefreshPage(); |
} |
CheckContentType(); |
if (http.receive_result != 0) break; |
if (http.status_code >= 300) && (http.status_code < 400) |
{ |
251,10 → 243,7 |
// Handle redirects |
if (redirect_count<=5) { |
redirect_count++; |
http.handle_redirect(); |
history.back(); |
if (http_get_type==PAGE) OpenPage(#http.redirect_url); |
else if (http_get_type==IMG) http.get(#http.redirect_url); |
HandleRedirect(); |
} else { |
notify("'Too many redirects.' -E"); |
StopLoading(); |
382,43 → 371,54 |
{ |
switch (id__) |
{ |
case 1: |
ExitProcess(); |
break; |
case ENCODINGS...ENCODINGS+6: |
EventChangeEncodingAndLoadPage(id__-ENCODINGS); |
return; |
case NEW_WINDOW: |
RunProgram(#program_path, NULL); |
return; |
case 1: ExitProcess(); |
case TAB_CLOSE_ID...TAB_CLOSE_ID+TABS_MAX: EventTabClose(id__ - TAB_CLOSE_ID); return; |
case TAB_ID...TAB_ID+TABS_MAX: EventAllTabsClick(id__ - TAB_ID); return; |
case ENCODINGS...ENCODINGS+6: EventChangeEncodingAndLoadPage(id__-ENCODINGS); return; |
case NEW_WINDOW: RunProgram(#program_path, NULL); return; |
case NEW_TAB: if (!http.transfer) EventOpenNewTab(URL_SERVICE_HOMEPAGE); return; |
case SCAN_CODE_BS: |
case BACK_BUTTON: |
if (history.back()) { |
OpenPage(history.current()); |
case BACK_BUTTON: if (history.back()) OpenPage(history.current()); return; |
case FORWARD_BUTTON: if (history.forward()) OpenPage(history.current()); return; |
case GOTOURL_BUTTON: |
case SCAN_CODE_ENTER: EventSubmitOmnibox(); return; |
case REFRESH_BUTTON: EventRefreshPage(); return; |
case CHANGE_ENCODING: EventShowEncodingsList(); return; |
case SANDWICH_BUTTON: EventShowMainMenu(); return; |
case VIEW_SOURCE: EventViewSource(); return; |
case EDIT_SOURCE: EventEditSource(); return; |
case VIEW_HISTORY: OpenPage(URL_SERVICE_HISTORY); return; |
case DOWNLOAD_MANAGER: EventOpenDownloader(""); return; |
case UPDATE_BROWSER: EventUpdateBrowser(); return; |
case CLEAR_CACHE: EventClearCache(); return; |
case IN_NEW_TAB: EventClickLink(TARGET_NEW_TAB); return; |
case IN_NEW_WINDOW: EventClickLink(TARGET_NEW_WINDOW); return; |
case COPY_LINK_URL: EventCopyLinkToClipboard(); return; |
case DOWNLOAD_LINK_CT: EventOpenDownloader( GetAbsoluteActiveURL() ); return; |
case OPEN_FILE: EventOpenDialog(); return; |
case SCAN_CODE_F12: EventToggleDebugMode(); return; |
} |
return; |
case FORWARD_BUTTON: |
if (history.forward()) { |
OpenPage(history.current()); |
} |
return; |
case GOTOURL_BUTTON: |
case SCAN_CODE_ENTER: |
EventSubmitOmnibox(); |
return; |
case REFRESH_BUTTON: |
EventRefreshPage(); |
return; |
case CHANGE_ENCODING: |
EventShowEncodingsList(); |
return; |
case SANDWICH_BUTTON: |
EventShowMainMenu(); |
return; |
case VIEW_SOURCE: |
EventViewSource(); |
break; |
case EDIT_SOURCE: |
|
void EventToggleDebugMode() |
{ |
debug_mode ^= 1; |
if (debug_mode) notify("'Debug mode ON'-I"); |
else notify("'Debug mode OFF'-I"); |
} |
|
void EventAllTabsClick(dword _n) |
{ |
if (http.transfer) return; |
if (mouse.mkm) { |
EventTabClose(_n); |
} else { |
EventTabClick(_n); |
} |
} |
|
void EventEditSource() |
{ |
if (check_is_the_adress_local(history.current())) { |
RunProgram("/rd/1/tinypad", history.current()); |
} else { |
425,73 → 425,24 |
CreateFile(WB1.bufsize, WB1.bufpointer, "/tmp0/1/WebView_tmp.htm"); |
if (!EAX) RunProgram("/rd/1/tinypad", "/tmp0/1/WebView_tmp.htm"); |
} |
return; |
case VIEW_HISTORY: |
OpenPage(URL_SERVICE_HISTORY); |
return; |
case DOWNLOAD_MANAGER: |
EventOpenDownloader(""); |
return; |
case UPDATE_BROWSER: |
EventUpdateBrowser(); |
return; |
case CLEAR_CACHE: |
} |
|
void EventClearCache() |
{ |
cache.clear(); |
notify(#clear_cache_ok); |
EventRefreshPage(); |
return; |
case IN_NEW_TAB: |
EventClickLink(TARGET_NEW_TAB); |
return; |
case IN_NEW_WINDOW: |
EventClickLink(TARGET_NEW_WINDOW); |
return; |
case COPY_LINK_URL: |
} |
|
void EventCopyLinkToClipboard() |
{ |
Clipboard__CopyText(GetAbsoluteActiveURL()); |
notify("'URL copied to clipboard'O"); |
return; |
case DOWNLOAD_LINK_CONTENTS: |
EventOpenDownloader( GetAbsoluteActiveURL() ); |
return; |
case OPEN_FILE: |
EventOpenDialog(); |
return; |
case SCAN_CODE_F12: |
debug_mode ^= 1; |
if (debug_mode) notify("'Debug mode ON'-I"); |
else notify("'Debug mode OFF'-I"); |
return; |
case NEW_TAB: |
if (http.transfer) break; |
EventOpenNewTab(URL_SERVICE_HOMEPAGE); |
return; |
case TAB_ID...TAB_ID+TABS_MAX: |
if (http.transfer) break; |
if (mouse.mkm) { |
EventTabClose(id__ - TAB_ID); |
} else { |
EventTabClick(id__ - TAB_ID); |
} |
return; |
case TAB_CLOSE_ID...TAB_CLOSE_ID+TABS_MAX: |
EventTabClose(id__ - TAB_CLOSE_ID); |
return; |
} |
} |
|
void StopLoading() |
{ |
if (http.transfer) |
{ |
EAX = http.transfer; |
EAX = EAX.http_msg.content_ptr; // get pointer to data |
$push EAX // save it on the stack |
http_free stdcall (http.transfer); // abort connection |
$pop EAX |
free(EAX); // free data |
http.transfer=0; |
pause(10); |
} |
if (http.stop()) pause(10); |
wv_progress_bar.value = 0; |
DrawOmnibox(); |
} |
842,10 → 793,6 |
|
void EventViewSource() |
{ |
char source_view_param[URL_SIZE+1]; |
//strcpy(#source_view_param, "-source "); |
//strncat(#source_view_param, history.current(), URL_SIZE); |
//RunProgram(#program_path, #source_view_param); |
source_mode = true; |
EventOpenNewTab(history.current()); |
} |
961,6 → 908,29 |
return 0; |
} |
|
void CheckContentType() |
{ |
char content_type[64]; |
if (http.header_field("content-type\0", #content_type, sizeof(content_type))) // application || image |
if (content_type[0] == 'a') || (content_type[0] == 'i') { |
EventOpenDownloader(history.current()); |
StopLoading(); |
history.back(); |
EventRefreshPage(); |
} |
} |
|
void HandleRedirect() |
{ |
char redirect_url[URL_SIZE]; |
http.header_field("location\0", #redirect_url, URL_SIZE); |
get_absolute_url(#redirect_url, history.current()); |
history.back(); |
http.hfree(); |
if (http_get_type==PAGE) OpenPage(#redirect_url); |
else if (http_get_type==IMG) http.get(#redirect_url); |
} |
|
dword GetImg() |
{ |
while (WB1.page_img.next_url()) { |