summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Young <chris@unsatisfactorysoftware.co.uk>2010-03-16 23:55:39 +0000
committerChris Young <chris@unsatisfactorysoftware.co.uk>2010-03-16 23:55:39 +0000
commit7220e03e7d4cd21f27038b6ce73ab2c77390a348 (patch)
treebb7acf22ee1e86ac0723c7c0526825372de7e8d0
parent04769b3f076b00cc8ab5ad3cc0b2924af86acb1b (diff)
downloadnetsurf-7220e03e7d4cd21f27038b6ce73ab2c77390a348.tar.gz
netsurf-7220e03e7d4cd21f27038b6ce73ab2c77390a348.tar.bz2
Help hints, mainly for the tabs but also massage messages strings HelpToolbar0-4 & 14
into a format we can use on the main toolbar gadgets. A couple of gadgets still missing strings. svn path=/trunk/netsurf/; revision=10134
-rwxr-xr-xamiga/gui.c45
-rwxr-xr-xamiga/gui.h1
-rwxr-xr-xamiga/misc.c37
-rw-r--r--amiga/misc.h22
4 files changed, 86 insertions, 19 deletions
diff --git a/amiga/gui.c b/amiga/gui.c
index aa2ddf63c..b5e1e5ee4 100755
--- a/amiga/gui.c
+++ b/amiga/gui.c
@@ -49,6 +49,7 @@
#include "amiga/hotlist.h"
#include "amiga/login.h"
#include "amiga/menu.h"
+#include "amiga/misc.h"
#include "amiga/options.h"
#include "amiga/plotters.h"
#include "amiga/print.h"
@@ -2364,6 +2365,13 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw,
gwin->shared->svbuffer = AllocVec(2000, MEMF_CLEAR);
+ gwin->shared->helphints[GID_BACK] = remove_escape_chars(messages_get("HelpToolbar0"), true);
+ gwin->shared->helphints[GID_FORWARD] = remove_escape_chars(messages_get("HelpToolbar1"), true);
+ gwin->shared->helphints[GID_STOP] = remove_escape_chars(messages_get("HelpToolbar2"), true);
+ gwin->shared->helphints[GID_RELOAD] = remove_escape_chars(messages_get("HelpToolbar3"), true);
+ gwin->shared->helphints[GID_HOME] = remove_escape_chars(messages_get("HelpToolbar4"), true);
+ gwin->shared->helphints[GID_URL] = remove_escape_chars(messages_get("HelpToolbar14"), true);
+
ami_get_theme_filename(nav_west,"theme_nav_west");
ami_get_theme_filename(nav_west_s,"theme_nav_west_s");
ami_get_theme_filename(nav_west_g,"theme_nav_west_g");
@@ -2440,7 +2448,6 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw,
gwin->shared->objects[OID_MAIN] = WindowObject,
WA_ScreenTitle,nsscreentitle,
-// WA_Title, messages_get("NetSurf"),
WA_Activate, TRUE,
WA_DepthGadget, TRUE,
WA_DragBar, TRUE,
@@ -2460,9 +2467,7 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw,
IDCMP_GADGETUP | IDCMP_IDCMPUPDATE |
IDCMP_ACTIVEWINDOW | IDCMP_INTUITICKS |
IDCMP_EXTENDEDMOUSE | IDCMP_GADGETDOWN,
-// WINDOW_IconifyGadget, TRUE,
WINDOW_NewMenu,menu,
- // WINDOW_HorizProp,1,
WINDOW_VertProp,1,
WINDOW_IDCMPHook,&gwin->shared->scrollerhook,
WINDOW_IDCMPHookBits,IDCMP_IDCMPUPDATE |
@@ -2472,11 +2477,9 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw,
WINDOW_AppWindow,TRUE,
WINDOW_SharedPort,sport,
WINDOW_BuiltInScroll,TRUE,
+ WINDOW_GadgetHelp, TRUE,
WINDOW_UserData,gwin->shared,
-// WINDOW_Position, WPOS_CENTERSCREEN,
-// WINDOW_CharSet,106,
WINDOW_ParentGroup, gwin->shared->objects[GID_MAIN] = VGroupObject,
-// LAYOUT_CharSet,106,
LAYOUT_SpaceOuter, TRUE,
LAYOUT_AddChild, gwin->shared->objects[GID_TOOLBARLAYOUT] = HGroupObject,
LAYOUT_VertAlignment, LALIGN_CENTER,
@@ -2484,6 +2487,7 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw,
GA_ID,GID_BACK,
GA_RelVerify,TRUE,
GA_Disabled,TRUE,
+ GA_HintInfo, gwin->shared->helphints[GID_BACK],
BUTTON_Transparent,TRUE,
BUTTON_RenderImage,BitMapObject,
BITMAP_SourceFile,nav_west,
@@ -2499,6 +2503,7 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw,
GA_ID,GID_FORWARD,
GA_RelVerify,TRUE,
GA_Disabled,TRUE,
+ GA_HintInfo, gwin->shared->helphints[GID_FORWARD],
BUTTON_Transparent,TRUE,
BUTTON_RenderImage,BitMapObject,
BITMAP_SourceFile,nav_east,
@@ -2513,6 +2518,7 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw,
LAYOUT_AddChild, gwin->shared->objects[GID_STOP] = ButtonObject,
GA_ID,GID_STOP,
GA_RelVerify,TRUE,
+ GA_HintInfo, gwin->shared->helphints[GID_STOP],
BUTTON_Transparent,TRUE,
BUTTON_RenderImage,BitMapObject,
BITMAP_SourceFile,stop,
@@ -2527,6 +2533,7 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw,
LAYOUT_AddChild, gwin->shared->objects[GID_RELOAD] = ButtonObject,
GA_ID,GID_RELOAD,
GA_RelVerify,TRUE,
+ GA_HintInfo, gwin->shared->helphints[GID_RELOAD],
BUTTON_Transparent,TRUE,
BUTTON_RenderImage,BitMapObject,
BITMAP_SourceFile,reload,
@@ -2541,6 +2548,7 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw,
LAYOUT_AddChild, gwin->shared->objects[GID_HOME] = ButtonObject,
GA_ID,GID_HOME,
GA_RelVerify,TRUE,
+ GA_HintInfo, gwin->shared->helphints[GID_HOME],
BUTTON_Transparent,TRUE,
BUTTON_RenderImage,BitMapObject,
BITMAP_SourceFile,home,
@@ -2565,17 +2573,12 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw,
STRINGA_MaxChars, 2000,
GA_ID, GID_URL,
GA_RelVerify, TRUE,
+ GA_HintInfo, gwin->shared->helphints[GID_URL],
GA_TabCycle, TRUE,
STRINGA_Buffer, gwin->shared->svbuffer,
STRINGVIEW_Header, URLHistory_GetList(),
-// STRINGA_TextVal, NULL,
StringEnd,
-/*
- StringObject,
- GA_ID,GID_URL,
- GA_RelVerify,TRUE,
- StringEnd,
-*/
+
// GA_ID, GID_TOOLBARLAYOUT,
// GA_RelVerify, TRUE,
// LAYOUT_RelVerify, TRUE,
@@ -2860,6 +2863,7 @@ void gui_window_destroy(struct gui_window *g)
{
struct Node *ptab;
ULONG ptabnum = 0;
+ int gid;
if(!g) return;
@@ -2921,6 +2925,9 @@ void gui_window_destroy(struct gui_window *g)
ami_utf8_free(g->shared->status);
FreeVec(g->shared->svbuffer);
+ for(gid = 0; gid < GID_LAST; gid++)
+ free(g->shared->helphints[gid]);
+
DelObject(g->shared->node);
if(g->tab_node)
{
@@ -2957,7 +2964,10 @@ void gui_window_set_title(struct gui_window *g, const char *title)
CLICKTAB_Labels,~0,
TAG_DONE);
- SetClickTabNodeAttrs(node, TNA_Text, utf8title, TAG_DONE);
+ SetClickTabNodeAttrs(node, TNA_Text, utf8title,
+ TNA_HintInfo, utf8title,
+ TAG_DONE);
+
RefreshSetGadgetAttrs((struct Gadget *)g->shared->objects[GID_TABS],
g->shared->win, NULL,
CLICKTAB_Labels, &g->shared->tab_list,
@@ -3162,16 +3172,13 @@ void ami_do_redraw(struct gui_window_2 *g)
if(g->redraw_scroll && c->type == CONTENT_HTML)
{
- int c_x = g->bw->window->c_x;
- int c_y = g->bw->window->c_y;
- int c_h = g->bw->window->c_h;
-
+ g->bw->window->c_h_temp = g->bw->window->c_h;
gui_window_remove_caret(g->bw->window);
ScrollWindowRaster(g->win,hcurrent-oldh,vcurrent-oldv,
xoffset,yoffset,xoffset+width,yoffset+height);
- gui_window_place_caret(g->bw->window, c_x, c_y, c_h);
+ g->bw->window->c_h = g->bw->window->c_h_temp;
if(vcurrent>oldv)
{
diff --git a/amiga/gui.h b/amiga/gui.h
index ea13410e8..764c3a17e 100755
--- a/amiga/gui.h
+++ b/amiga/gui.h
@@ -105,6 +105,7 @@ struct gui_window_2 {
char *svbuffer;
char *status;
char *wintitle;
+ char *helphints[GID_LAST];
};
struct gui_window
diff --git a/amiga/misc.c b/amiga/misc.c
index cedff5d77..cee6aa688 100755
--- a/amiga/misc.c
+++ b/amiga/misc.c
@@ -82,3 +82,40 @@ char *path_to_url(const char *path)
return r;
}
+
+/**
+ * returns a string without escape chars or |M chars.
+ * (based on remove_underscores from utils.c)
+ * \param translate true to insert a linebreak where there was |M,
+ * and capitalise initial characters after escape chars.
+ */
+
+char *remove_escape_chars(const char *s, bool translate)
+{
+ size_t i, ii, len;
+ char *ret;
+ bool nextcharupper = false;
+ len = strlen(s);
+ ret = malloc(len + 1);
+ if (ret == NULL)
+ return NULL;
+ for (i = 0, ii = 0; i < len; i++) {
+ if ((s[i] != '\\') && (s[i] != '|')) {
+ if(nextcharupper) {
+ ret[ii++] = toupper(s[i]);
+ nextcharupper = false;
+ }
+ else ret[ii++] = s[i];
+ }
+ else if ((translate) && (s[i] == '|') && (s[i+1] == 'M')) {
+ ret[ii++] = '\n';
+ i++;
+ }
+ else {
+ if(translate) nextcharupper = true;
+ i++;
+ }
+ }
+ ret[ii] = '\0';
+ return ret;
+}
diff --git a/amiga/misc.h b/amiga/misc.h
new file mode 100644
index 000000000..beeb4f2b8
--- /dev/null
+++ b/amiga/misc.h
@@ -0,0 +1,22 @@
+/*
+ * Copyright 2010 Chris Young <chris@unsatisfactorysoftware.co.uk>
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef AMIGA_MISC_H
+#define AMIGA_MISC_H
+char *remove_escape_chars(const char *s, bool translate);
+#endif