Merge pull request #539 from oliverschmidt/master
Added more flexibility to webbrowser -> wget forwarding.
This commit is contained in:
commit
0258c413cc
3 changed files with 51 additions and 9 deletions
|
@ -101,7 +101,8 @@ static struct ctk_separator sep2 =
|
||||||
{CTK_SEPARATOR(0, WWW_CONF_WEBPAGE_HEIGHT + 3,
|
{CTK_SEPARATOR(0, WWW_CONF_WEBPAGE_HEIGHT + 3,
|
||||||
WWW_CONF_WEBPAGE_WIDTH)};
|
WWW_CONF_WEBPAGE_WIDTH)};
|
||||||
|
|
||||||
#if WWW_CONF_WITH_WGET
|
#if WWW_CONF_WITH_WGET || defined(WWW_CONF_WGET_EXEC)
|
||||||
|
#if CTK_CONF_WINDOWS
|
||||||
static struct ctk_window wgetdialog;
|
static struct ctk_window wgetdialog;
|
||||||
static struct ctk_label wgetlabel1 =
|
static struct ctk_label wgetlabel1 =
|
||||||
{CTK_LABEL(1, 1, 34, 1, "This web page cannot be displayed.")};
|
{CTK_LABEL(1, 1, 34, 1, "This web page cannot be displayed.")};
|
||||||
|
@ -111,7 +112,15 @@ static struct ctk_button wgetnobutton =
|
||||||
{CTK_BUTTON(1, 5, 6, "Cancel")};
|
{CTK_BUTTON(1, 5, 6, "Cancel")};
|
||||||
static struct ctk_button wgetyesbutton =
|
static struct ctk_button wgetyesbutton =
|
||||||
{CTK_BUTTON(11, 5, 24, "Close browser & download")};
|
{CTK_BUTTON(11, 5, 24, "Close browser & download")};
|
||||||
#endif /* WWW_CONF_WITH_WGET */
|
#else /* CTK_CONF_WINDOWS */
|
||||||
|
static struct ctk_button wgetnobutton =
|
||||||
|
{CTK_BUTTON((WWW_CONF_WEBPAGE_WIDTH - 38) / 2 + 1,
|
||||||
|
11, 6, "Cancel")};
|
||||||
|
static struct ctk_button wgetyesbutton =
|
||||||
|
{CTK_BUTTON((WWW_CONF_WEBPAGE_WIDTH - 38) / 2 + 11,
|
||||||
|
11, 24, "Close browser & download")};
|
||||||
|
#endif /* CTK_CONF_WINDOWS */
|
||||||
|
#endif /* WWW_CONF_WITH_WGET || WWW_CONF_WGET_EXEC */
|
||||||
|
|
||||||
#if WWW_CONF_HISTORY_SIZE > 0
|
#if WWW_CONF_HISTORY_SIZE > 0
|
||||||
/* The char arrays that hold the history of visited URLs. */
|
/* The char arrays that hold the history of visited URLs. */
|
||||||
|
@ -249,8 +258,8 @@ clear_page(void)
|
||||||
{
|
{
|
||||||
ctk_window_clear(&mainwindow);
|
ctk_window_clear(&mainwindow);
|
||||||
make_window();
|
make_window();
|
||||||
redraw_window();
|
|
||||||
memset(webpage, 0, WWW_CONF_WEBPAGE_WIDTH * WWW_CONF_WEBPAGE_HEIGHT);
|
memset(webpage, 0, WWW_CONF_WEBPAGE_WIDTH * WWW_CONF_WEBPAGE_HEIGHT);
|
||||||
|
redraw_window();
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------------------*/
|
||||||
static void
|
static void
|
||||||
|
@ -466,14 +475,16 @@ PROCESS_THREAD(www_process, ev, data)
|
||||||
#endif /* WWW_CONF_HOMEPAGE */
|
#endif /* WWW_CONF_HOMEPAGE */
|
||||||
CTK_WIDGET_FOCUS(&mainwindow, &urlentry);
|
CTK_WIDGET_FOCUS(&mainwindow, &urlentry);
|
||||||
|
|
||||||
#if WWW_CONF_WITH_WGET
|
#if WWW_CONF_WITH_WGET || defined(WWW_CONF_WGET_EXEC)
|
||||||
|
#if CTK_CONF_WINDOWS
|
||||||
/* Create download dialog.*/
|
/* Create download dialog.*/
|
||||||
ctk_dialog_new(&wgetdialog, 38, 7);
|
ctk_dialog_new(&wgetdialog, 38, 7);
|
||||||
CTK_WIDGET_ADD(&wgetdialog, &wgetlabel1);
|
CTK_WIDGET_ADD(&wgetdialog, &wgetlabel1);
|
||||||
CTK_WIDGET_ADD(&wgetdialog, &wgetlabel2);
|
CTK_WIDGET_ADD(&wgetdialog, &wgetlabel2);
|
||||||
CTK_WIDGET_ADD(&wgetdialog, &wgetnobutton);
|
CTK_WIDGET_ADD(&wgetdialog, &wgetnobutton);
|
||||||
CTK_WIDGET_ADD(&wgetdialog, &wgetyesbutton);
|
CTK_WIDGET_ADD(&wgetdialog, &wgetyesbutton);
|
||||||
#endif /* WWW_CONF_WITH_WGET */
|
#endif /* CTK_CONF_WINDOWS */
|
||||||
|
#endif /* WWW_CONF_WITH_WGET || WWW_CONF_WGET_EXEC */
|
||||||
|
|
||||||
ctk_window_open(&mainwindow);
|
ctk_window_open(&mainwindow);
|
||||||
|
|
||||||
|
@ -515,18 +526,35 @@ PROCESS_THREAD(www_process, ev, data)
|
||||||
} else if(w == (struct ctk_widget *)&stopbutton) {
|
} else if(w == (struct ctk_widget *)&stopbutton) {
|
||||||
loading = 0;
|
loading = 0;
|
||||||
webclient_close();
|
webclient_close();
|
||||||
#if WWW_CONF_WITH_WGET
|
#if WWW_CONF_WITH_WGET || defined(WWW_CONF_WGET_EXEC)
|
||||||
} else if(w == (struct ctk_widget *)&wgetnobutton) {
|
} else if(w == (struct ctk_widget *)&wgetnobutton) {
|
||||||
|
#if CTK_CONF_WINDOWS
|
||||||
ctk_dialog_close();
|
ctk_dialog_close();
|
||||||
|
#else /* CTK_CONF_WINDOWS */
|
||||||
|
clear_page();
|
||||||
|
#endif /* CTK_CONF_WINDOWS */
|
||||||
} else if(w == (struct ctk_widget *)&wgetyesbutton) {
|
} else if(w == (struct ctk_widget *)&wgetyesbutton) {
|
||||||
|
#if CTK_CONF_WINDOWS
|
||||||
ctk_dialog_close();
|
ctk_dialog_close();
|
||||||
|
#else /* CTK_CONF_WINDOWS */
|
||||||
|
clear_page();
|
||||||
|
#endif /* CTK_CONF_WINDOWS */
|
||||||
|
#if WWW_CONF_WITH_WGET
|
||||||
quit();
|
quit();
|
||||||
argptr = arg_alloc((char)WWW_CONF_MAX_URLLEN);
|
argptr = arg_alloc((char)WWW_CONF_MAX_URLLEN);
|
||||||
if(argptr != NULL) {
|
if(argptr != NULL) {
|
||||||
strncpy(argptr, url, WWW_CONF_MAX_URLLEN);
|
strncpy(argptr, url, WWW_CONF_MAX_URLLEN);
|
||||||
}
|
}
|
||||||
program_handler_load("wget.prg", argptr);
|
program_handler_load("wget.prg", argptr);
|
||||||
|
#else /* WWW_CONF_WITH_WGET */
|
||||||
|
petsciiconv_topetscii(url, sizeof(url));
|
||||||
|
/* Clear screen */
|
||||||
|
ctk_restore();
|
||||||
|
WWW_CONF_WGET_EXEC(url);
|
||||||
|
redraw_window();
|
||||||
|
show_statustext("Cannot exec wget");
|
||||||
#endif /* WWW_CONF_WITH_WGET */
|
#endif /* WWW_CONF_WITH_WGET */
|
||||||
|
#endif /* WWW_CONF_WITH_WGET || WWW_CONF_WGET_EXEC */
|
||||||
#if WWW_CONF_FORMS
|
#if WWW_CONF_FORMS
|
||||||
} else {
|
} else {
|
||||||
/* Assume form widget. */
|
/* Assume form widget. */
|
||||||
|
@ -666,11 +694,22 @@ webclient_datahandler(char *data, uint16_t len)
|
||||||
htmlparser_parse(data, len);
|
htmlparser_parse(data, len);
|
||||||
redraw_window();
|
redraw_window();
|
||||||
} else {
|
} else {
|
||||||
show_statustext("Cannot display web page");
|
|
||||||
uip_abort();
|
uip_abort();
|
||||||
#if WWW_CONF_WITH_WGET
|
#if WWW_CONF_WITH_WGET || defined(WWW_CONF_WGET_EXEC)
|
||||||
|
#if CTK_CONF_WINDOWS
|
||||||
ctk_dialog_open(&wgetdialog);
|
ctk_dialog_open(&wgetdialog);
|
||||||
#endif /* WWW_CONF_WITH_WGET */
|
#else /* CTK_CONF_WINDOWS */
|
||||||
|
strcpy(webpage + WWW_CONF_WEBPAGE_WIDTH * 5,
|
||||||
|
(80 - WWW_CONF_WEBPAGE_WIDTH) / 2 +
|
||||||
|
" This web page cannot be displayed.");
|
||||||
|
strcpy(webpage + WWW_CONF_WEBPAGE_WIDTH * 6,
|
||||||
|
(80 - WWW_CONF_WEBPAGE_WIDTH) / 2 +
|
||||||
|
" Would you like to download instead?");
|
||||||
|
CTK_WIDGET_ADD(&mainwindow, &wgetnobutton);
|
||||||
|
CTK_WIDGET_ADD(&mainwindow, &wgetyesbutton);
|
||||||
|
redraw_window();
|
||||||
|
#endif /* CTK_CONF_WINDOWS */
|
||||||
|
#endif /* WWW_CONF_WITH_WGET || WWW_CONF_WGET_EXEC */
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* Clear remaining parts of page. */
|
/* Clear remaining parts of page. */
|
||||||
|
|
|
@ -74,5 +74,6 @@
|
||||||
#define WWW_CONF_MAX_FORMACTIONLEN 20
|
#define WWW_CONF_MAX_FORMACTIONLEN 20
|
||||||
#define WWW_CONF_MAX_INPUTNAMELEN 20
|
#define WWW_CONF_MAX_INPUTNAMELEN 20
|
||||||
#define WWW_CONF_MAX_INPUTVALUELEN 20
|
#define WWW_CONF_MAX_INPUTVALUELEN 20
|
||||||
|
#define WWW_CONF_WGET_EXEC(url) exec("wget", url)
|
||||||
|
|
||||||
#endif /* CONTIKI_CONF_H_ */
|
#endif /* CONTIKI_CONF_H_ */
|
||||||
|
|
|
@ -183,5 +183,7 @@ typedef unsigned short uip_stats_t;
|
||||||
#define WWW_CONF_WEBPAGE_WIDTH 76
|
#define WWW_CONF_WEBPAGE_WIDTH 76
|
||||||
#define WWW_CONF_WEBPAGE_HEIGHT 30
|
#define WWW_CONF_WEBPAGE_HEIGHT 30
|
||||||
#endif /* PLATFORM_BUILD */
|
#endif /* PLATFORM_BUILD */
|
||||||
|
#define WWW_CONF_WGET_EXEC(url) execlp("wget.win32", "wget.win32", \
|
||||||
|
"192.168.0.2", url, (char *)NULL)
|
||||||
|
|
||||||
#endif /* CONTIKI_CONF_H_ */
|
#endif /* CONTIKI_CONF_H_ */
|
||||||
|
|
Loading…
Reference in a new issue