summaryrefslogtreecommitdiff
path: root/frontends/kolibrios/fb/gui.c
diff options
context:
space:
mode:
authorAshish Gupta <ashmew2@gmail.com>2017-04-21 23:18:15 +0200
committerAshish Gupta <ashmew2@gmail.com>2017-06-10 08:25:29 +0200
commitdbe64238302aab07de75d520f9a85fa2856e8ce7 (patch)
tree7380272e351b5f146c9331a712978c95502434f6 /frontends/kolibrios/fb/gui.c
parentefdd93541042bcae19fb09d56d2a0a61252d0fd2 (diff)
downloadnetsurf-dbe64238302aab07de75d520f9a85fa2856e8ce7.tar.gz
netsurf-dbe64238302aab07de75d520f9a85fa2856e8ce7.tar.bz2
Move port for kolibrios ahead.
Look at diff from master and reconcile.
Diffstat (limited to 'frontends/kolibrios/fb/gui.c')
-rw-r--r--frontends/kolibrios/fb/gui.c84
1 files changed, 58 insertions, 26 deletions
diff --git a/frontends/kolibrios/fb/gui.c b/frontends/kolibrios/fb/gui.c
index ab2b9812f..453ade67f 100644
--- a/frontends/kolibrios/fb/gui.c
+++ b/frontends/kolibrios/fb/gui.c
@@ -23,6 +23,7 @@
#include <string.h>
#include <stdbool.h>
#include <stdlib.h>
+#include <unistd.h>
#include <nsutils/time.h>
#include <libnsfb.h>
@@ -57,6 +58,11 @@
#define NSFB_TOOLBAR_DEFAULT_LAYOUT "blfsrutc"
+/* #undef LOG */
+/* #define LOG(format, args...) \ */
+/* debug_board_printf(format, ##args); \ */
+/* debug_board_printf("\n"); \ */
+
fbtk_widget_t *fbtk;
static bool fb_complete = false;
@@ -457,11 +463,11 @@ static const char *feurl;
static bool
process_cmdline(int argc, char** argv)
{
- int opt;
- int option_index;
- static struct option long_options[] = {
- {0, 0, 0, 0 }
- }; /* no long options */
+ /* int opt; */
+ /* int option_index; */
+ /* static struct option long_options[] = { */
+ /* {0, 0, 0, 0 } */
+ /* }; /\* no long options *\/ */
LOG("argc %d, argv %p", argc, argv);
@@ -484,6 +490,8 @@ process_cmdline(int argc, char** argv)
feurl = NETSURF_HOMEPAGE;
}
+ /* NS on KolibriOS does not support option parsing (yet) */
+
/* while((opt = getopt_long(argc, argv, "f:b:w:h:", */
/* long_options, &option_index)) != -1) { */
/* switch (opt) { */
@@ -519,7 +527,7 @@ process_cmdline(int argc, char** argv)
}
/**
- * Set option defaults for framebuffer frontend
+ * Set option defaults for kolibrios framebuffer frontend
*
* @param defaults The option table to update.
* @return error status.
@@ -586,6 +594,8 @@ static void framebuffer_run(void)
nsfb_event_t event;
int timeout; /* timeout in miliseconds */
+ LOG("framebuffer_run() executing!");
+
while (fb_complete != true) {
/* run the scheduler and discover how long to wait for
* the next event.
@@ -1232,9 +1242,6 @@ create_toolbar(struct gui_window *gw,
(*itmtype != 0) &&
(xdir !=0)) {
- LOG("toolbar adding %c", *itmtype);
-
-
switch (*itmtype) {
case 'b': /* back */
@@ -1383,8 +1390,6 @@ create_toolbar(struct gui_window *gw,
xpos += (xdir * (fbtk_get_width(widget) + padding));
}
- LOG("xpos is %d", xpos);
-
itmtype += xdir;
}
@@ -1640,6 +1645,7 @@ create_normal_browser_window(struct gui_window *gw, int furniture_width)
/* fill bottom right area */
if (nsoption_bool(fb_osk) == true) {
+
widget = fbtk_create_text_button(gw->window,
fbtk_get_width(gw->window) - furniture_width,
fbtk_get_height(gw->window) - furniture_width,
@@ -1648,6 +1654,7 @@ create_normal_browser_window(struct gui_window *gw, int furniture_width)
FB_FRAME_COLOUR, FB_COLOUR_BLACK,
fb_osk_click,
NULL);
+
widget = fbtk_create_button(gw->window,
fbtk_get_width(gw->window) - furniture_width,
fbtk_get_height(gw->window) - furniture_width,
@@ -1657,7 +1664,9 @@ create_normal_browser_window(struct gui_window *gw, int furniture_width)
&osk_image,
fb_osk_click,
NULL);
+
} else {
+
widget = fbtk_create_fill(gw->window,
fbtk_get_width(gw->window) - furniture_width,
fbtk_get_height(gw->window) - furniture_width,
@@ -1671,6 +1680,7 @@ create_normal_browser_window(struct gui_window *gw, int furniture_width)
gw->bottom_right = widget;
/* create vertical scrollbar */
+
gw->vscroll = fbtk_create_vscroll(gw->window,
fbtk_get_width(gw->window) - furniture_width,
toolbar_height,
@@ -2090,6 +2100,7 @@ main(int argc, char** argv)
nsurl *url;
nserror ret;
nsfb_t *nsfb;
+
struct netsurf_table framebuffer_table = {
.misc = &framebuffer_misc_table,
.window = &framebuffer_window_table,
@@ -2100,23 +2111,43 @@ main(int argc, char** argv)
.layout = framebuffer_layout_table,
};
- ret = netsurf_register(&framebuffer_table);
- if (ret != NSERROR_OK) {
- die("NetSurf operation table failed registration");
- }
-
- respaths = fb_init_resource(NETSURF_FB_RESPATH":"NETSURF_FB_FONTPATH);
-
- /* initialise logging. Not fatal if it fails but not much we
- * can do about it either.
- */
- nslog_init(nslog_stream_configure, &argc, argv);
+ ret = netsurf_register(&framebuffer_table);
+ if (ret != NSERROR_OK) {
+ die("NetSurf operation table failed registration");
+ }
+
+ /* The only restriction is that the kolibrios netsurf binary should be in the same
+ directory as another "res" directory */
+ /* On Kolibrios, argv[0] is the absolute path to the binary */
+ char *respath = strdup(argv[0]);
+ int i;
+ for(i = strlen(respath) - 1; i > 0; i--) {
+ if(respath[i] == '/') {
+ respath[i+1] = 'r';
+ respath[i+2] = 'e';
+ respath[i+3] = 's';
+ respath[i+4] = '\0';
+ break;
+ }
+ }
+ assert(i!=0);
+
+ debug_board_printf(" --- argv[0] : %s\n\n", argv[0]);
+ debug_board_printf(" --- respath : %s\n\n", respath);
+ respaths = fb_init_resource(respath);
+
+ /* initialise logging. Abort on failure for KolibriOS. */
+ ret = nslog_init(nslog_stream_configure, &argc, argv);
+ if (ret != NSERROR_OK) {
+ die("Logging failed to initialise. This is required to run on KolibriOS.");
+ }
/* user options setup */
ret = nsoption_init(set_defaults, &nsoptions, &nsoptions_default);
if (ret != NSERROR_OK) {
die("Options failed to initialise");
}
+
options = filepath_find(respaths, "Choices");
nsoption_read(options, nsoptions);
free(options);
@@ -2165,19 +2196,19 @@ main(int argc, char** argv)
urldb_load_cookies(nsoption_charp(cookie_file));
/* create an initial browser window */
-
- LOG("calling browser_window_create");
+ LOG("calling browser_window_create with Size(hxw)=%dx%d\n", feheight, fewidth);
+ LOG("calling browser_window_create with URL=%s\n", feurl);
ret = nsurl_create(feurl, &url);
if (ret == NSERROR_OK) {
- ret = browser_window_create(BW_CREATE_HISTORY,
+
+ ret = browser_window_create(BW_CREATE_HISTORY,
url,
NULL,
NULL,
&bw);
nsurl_unref(url);
}
-
if (ret != NSERROR_OK) {
fb_warn_user(messages_get_errorcode(ret), 0);
} else {
@@ -2230,3 +2261,4 @@ void gui_resize(fbtk_widget_t *root, int width, int height)
* c-basic-offset:8
* End:
*/
+