r10846 chris_y - in /branches/jmb/treeview-redux/amiga: gui.c gui.h menu.c menu.h
by netsurf@semichrome.net
Author: chris_y
Date: Sun Sep 26 15:04:11 2010
New Revision: 10846
URL: http://source.netsurf-browser.org?rev=10846&view=rev
Log:
Replace the menu code (more-or-less) with that from the old treeview branch. Hotlist
menu doesn't populate. Browser doesn't work.
Modified:
branches/jmb/treeview-redux/amiga/gui.c
branches/jmb/treeview-redux/amiga/gui.h
branches/jmb/treeview-redux/amiga/menu.c
branches/jmb/treeview-redux/amiga/menu.h
Modified: branches/jmb/treeview-redux/amiga/gui.c
URL: http://source.netsurf-browser.org/branches/jmb/treeview-redux/amiga/gui.c...
==============================================================================
--- branches/jmb/treeview-redux/amiga/gui.c (original)
+++ branches/jmb/treeview-redux/amiga/gui.c Sun Sep 26 15:04:11 2010
@@ -2185,7 +2185,6 @@
struct gui_window *gui_create_browser_window(struct browser_window *bw,
struct browser_window *clone, bool new_tab)
{
- struct NewMenu *menu;
struct gui_window *gwin = NULL;
bool closegadg=TRUE;
struct Node *node;
@@ -2355,7 +2354,7 @@
{
ULONG addtabclosegadget = TAG_IGNORE;
- menu = ami_create_menu(bw->browser_window_type);
+ ami_create_menu(bw->browser_window_type, gwin->shared);
NewList(&gwin->shared->tab_list);
gwin->tab_node = AllocClickTabNode(TNA_Text,messages_get("NetSurf"),
@@ -2480,7 +2479,7 @@
IDCMP_GADGETUP | IDCMP_IDCMPUPDATE |
IDCMP_ACTIVEWINDOW | IDCMP_INTUITICKS |
IDCMP_EXTENDEDMOUSE | IDCMP_GADGETDOWN,
- WINDOW_NewMenu, menu,
+ WINDOW_NewMenu, gwin->shared->menu,
WINDOW_VertProp,1,
WINDOW_IDCMPHook,&gwin->shared->scrollerhook,
WINDOW_IDCMPHookBits,IDCMP_IDCMPUPDATE |
@@ -2932,6 +2931,7 @@
DisposeObject(g->shared->objects[OID_MAIN]);
+ ami_free_menulabs(g->shared);
free(g->shared->wintitle);
ami_utf8_free(g->shared->status);
FreeVec(g->shared->svbuffer);
Modified: branches/jmb/treeview-redux/amiga/gui.h
URL: http://source.netsurf-browser.org/branches/jmb/treeview-redux/amiga/gui.h...
==============================================================================
--- branches/jmb/treeview-redux/amiga/gui.h (original)
+++ branches/jmb/treeview-redux/amiga/gui.h Sun Sep 26 15:04:11 2010
@@ -96,6 +96,11 @@
ULONG oldv;
bool redraw_scroll;
bool new_content;
+ char *menulab[AMI_MENU_AREXX_MAX + 1];
+ char menukey[AMI_MENU_AREXX_MAX + 1];
+ UBYTE *menutype;
+ struct NewMenu *menu;
+ ULONG hotlist_items;
char *svbuffer;
char *status;
char *wintitle;
Modified: branches/jmb/treeview-redux/amiga/menu.c
URL: http://source.netsurf-browser.org/branches/jmb/treeview-redux/amiga/menu....
==============================================================================
--- branches/jmb/treeview-redux/amiga/menu.c (original)
+++ branches/jmb/treeview-redux/amiga/menu.c Sun Sep 26 15:04:11 2010
@@ -66,248 +66,193 @@
const char * const verdate;
static struct Hook aslhookfunc;
-void ami_menu_scan(struct tree *tree,struct NewMenu *menu);
-void ami_menu_scan_2(struct tree *tree,struct node *root,WORD *gen,ULONG *item,struct NewMenu *menu);
-void ami_menu_arexx_scan(struct NewMenu *menu);
+ULONG ami_menu_scan(struct tree *tree, bool count, struct gui_window_2 *gwin);
+void ami_menu_scan_2(struct tree *tree, struct node *root, WORD *gen,
+ ULONG *item, bool count, struct gui_window_2 *gwin);
+void ami_menu_arexx_scan(struct gui_window_2 *gwin);
static const ULONG ami_asl_mime_hook(struct Hook *mh,struct FileRequester *fr,struct AnchorPathOld *ap);
-void ami_free_menulabs(struct NewMenu *menu)
+void ami_free_menulabs(struct gui_window_2 *gwin)
{
int i;
for(i=0;i<=AMI_MENU_AREXX_MAX;i++)
{
- if(menulab[i] && (menulab[i] != NM_BARLABEL))
- ami_utf8_free(menulab[i]);
-
- menulab[i] = NULL;
- menukey[i] = 0;
- }
-
- FreeVec(menutype);
- FreeVec(menu);
-
- menutype = NULL;
- menu = NULL;
+ if(gwin->menulab[i] && (gwin->menulab[i] != NM_BARLABEL))
+ ami_utf8_free(gwin->menulab[i]);
+
+ gwin->menulab[i] = NULL;
+ gwin->menukey[i] = 0;
+ }
+
+ FreeVec(gwin->menutype);
+ FreeVec(gwin->menu);
+
+ gwin->menutype = NULL;
+ gwin->menu = NULL;
}
-void ami_init_menulabs(void)
+void ami_init_menulabs(struct gui_window_2 *gwin)
{
int i;
- menulab[0] = ami_utf8_easy((char *)messages_get("Project"));
- menulab[1] = ami_utf8_easy((char *)messages_get("NewWindowNS"));
- menulab[2] = ami_utf8_easy((char *)messages_get("NewTab"));
- menulab[3] = NM_BARLABEL;
- menulab[4] = ami_utf8_easy((char *)messages_get("OpenFile"));
- menulab[5] = ami_utf8_easy((char *)messages_get("SaveAsNS"));
- menulab[6] = ami_utf8_easy((char *)messages_get("Source"));
- menulab[7] = ami_utf8_easy((char *)messages_get("TextNS"));
- menulab[8] = ami_utf8_easy((char *)messages_get("SaveCompNS"));
- menulab[9] = ami_utf8_easy((char *)messages_get("PDFNS"));
- menulab[10] = ami_utf8_easy((char *)messages_get("IFF"));
- menulab[11] = NM_BARLABEL;
- menulab[12] = ami_utf8_easy((char *)messages_get("CloseTab"));
- menulab[13] = ami_utf8_easy((char *)messages_get("CloseWindow"));
- menulab[14] = NM_BARLABEL;
- menulab[15] = ami_utf8_easy((char *)messages_get("PrintNS"));
- menulab[16] = NM_BARLABEL;
- menulab[17] = ami_utf8_easy((char *)messages_get("About"));
- menulab[18] = ami_utf8_easy((char *)messages_get("Quit"));
- menulab[19] = ami_utf8_easy((char *)messages_get("Edit"));
- menulab[20] = ami_utf8_easy((char *)messages_get("CutNS"));
- menulab[21] = ami_utf8_easy((char *)messages_get("CopyNS"));
- menulab[22] = ami_utf8_easy((char *)messages_get("PasteNS"));
- menulab[23] = NM_BARLABEL;
- menulab[24] = ami_utf8_easy((char *)messages_get("SelectAllNS"));
- menulab[25] = ami_utf8_easy((char *)messages_get("ClearNS"));
- menulab[26] = ami_utf8_easy((char *)messages_get("Browser"));
- menulab[27] = ami_utf8_easy((char *)messages_get("FindTextNS"));
- menulab[28] = NM_BARLABEL;
- menulab[29] = ami_utf8_easy((char *)messages_get("HistLocalNS"));
- menulab[30] = ami_utf8_easy((char *)messages_get("HistGlobalNS"));
- menulab[31] = NM_BARLABEL;
- menulab[32] = ami_utf8_easy((char *)messages_get("ShowCookies"));
- menulab[33] = NM_BARLABEL;
- menulab[34] = ami_utf8_easy((char *)messages_get("ScaleNS"));
- menulab[35] = ami_utf8_easy((char *)messages_get("ScaleDec"));
- menulab[36] = ami_utf8_easy((char *)messages_get("ScaleNorm"));
- menulab[37] = ami_utf8_easy((char *)messages_get("ScaleInc"));
- menulab[38] = ami_utf8_easy((char *)messages_get("Redraw"));
- menulab[39] = ami_utf8_easy((char *)messages_get("Hotlist"));
- menulab[40] = ami_utf8_easy((char *)messages_get("HotlistAdd"));
- menulab[41] = ami_utf8_easy((char *)messages_get("HotlistShowNS"));
- menulab[42] = NM_BARLABEL;
-
- menutype = AllocVec(AMI_MENU_AREXX_MAX + 1, MEMF_PRIVATE | MEMF_CLEAR);
+ gwin->menutype = AllocVec(AMI_MENU_AREXX_MAX + 1, MEMF_PRIVATE | MEMF_CLEAR);
for(i=0;i <= AMI_MENU_AREXX_MAX;i++)
{
- menutype[i] = NM_IGNORE;
- menulab[i] = NULL;
- }
-
- menutype[AMI_MENU_HOTLIST_MAX + 1] = NM_TITLE;
- menulab[AMI_MENU_HOTLIST_MAX + 1] = ami_utf8_easy((char *)messages_get("Settings"));
- menutype[AMI_MENU_HOTLIST_MAX + 2] = NM_ITEM;
- menulab[AMI_MENU_HOTLIST_MAX + 2] = ami_utf8_easy((char *)messages_get("SettingsEdit"));
- menutype[AMI_MENU_HOTLIST_MAX + 3] = NM_ITEM;
- menulab[AMI_MENU_HOTLIST_MAX + 3] = NM_BARLABEL;
- menutype[AMI_MENU_HOTLIST_MAX + 4] = NM_ITEM;
- menulab[AMI_MENU_HOTLIST_MAX + 4] = ami_utf8_easy((char *)messages_get("SnapshotWindow"));
- menutype[AMI_MENU_HOTLIST_MAX + 5] = NM_ITEM;
- menulab[AMI_MENU_HOTLIST_MAX + 5] = ami_utf8_easy((char *)messages_get("SettingsSave"));
- menutype[AMI_MENU_HOTLIST_MAX + 6] = NM_TITLE;
- menulab[AMI_MENU_HOTLIST_MAX + 6] = ami_utf8_easy((char *)messages_get("ARexx"));
- menutype[AMI_MENU_HOTLIST_MAX + 7] = NM_ITEM;
- menulab[AMI_MENU_HOTLIST_MAX + 7] = ami_utf8_easy((char *)messages_get("ARexxExecute"));
- menutype[AMI_MENU_HOTLIST_MAX + 8] = NM_ITEM;
- menulab[AMI_MENU_HOTLIST_MAX + 8] = NM_BARLABEL;
-
- menutype[AMI_MENU_AREXX_MAX] = NM_END;
+ gwin->menutype[i] = NM_IGNORE;
+ gwin->menulab[i] = NULL;
+ }
+
+ gwin->menutype[0] = NM_TITLE;
+ gwin->menulab[0] = ami_utf8_easy((char *)messages_get("Project"));
+ gwin->menutype[1] = NM_ITEM;
+ gwin->menulab[1] = ami_utf8_easy((char *)messages_get("NewWindowNS"));
+ gwin->menukey[1] = 'N';
+ gwin->menutype[2] = NM_ITEM;
+ gwin->menulab[2] = ami_utf8_easy((char *)messages_get("NewTab"));
+ gwin->menukey[1] = 'T';
+ gwin->menutype[3] = NM_ITEM;
+ gwin->menulab[3] = NM_BARLABEL;
+ gwin->menutype[4] = NM_ITEM;
+ gwin->menulab[4] = ami_utf8_easy((char *)messages_get("OpenFile"));
+ gwin->menukey[4] = 'O';
+ gwin->menutype[5] = NM_ITEM;
+ gwin->menulab[5] = ami_utf8_easy((char *)messages_get("SaveAsNS"));
+ gwin->menukey[5] = 'S';
+ gwin->menutype[6] = NM_SUB;
+ gwin->menulab[6] = ami_utf8_easy((char *)messages_get("Source"));
+ gwin->menutype[7] = NM_SUB;
+ gwin->menulab[7] = ami_utf8_easy((char *)messages_get("TextNS"));
+ gwin->menutype[8] = NM_SUB;
+ gwin->menulab[8] = ami_utf8_easy((char *)messages_get("SaveCompNS"));
+ gwin->menutype[9] = NM_SUB;
+ gwin->menulab[9] = ami_utf8_easy((char *)messages_get("PDFNS"));
+ gwin->menutype[10] = NM_SUB;
+ gwin->menulab[10] = ami_utf8_easy((char *)messages_get("IFF"));
+ gwin->menutype[11] = NM_ITEM;
+ gwin->menulab[11] = NM_BARLABEL;
+ gwin->menutype[12] = NM_ITEM;
+ gwin->menulab[12] = ami_utf8_easy((char *)messages_get("CloseTab"));
+ gwin->menukey[12] = 'K';
+ gwin->menutype[13] = NM_ITEM;
+ gwin->menulab[13] = ami_utf8_easy((char *)messages_get("CloseWindow"));
+ gwin->menutype[14] = NM_ITEM;
+ gwin->menulab[14] = NM_BARLABEL;
+ gwin->menutype[15] = NM_ITEM;
+ gwin->menulab[15] = ami_utf8_easy((char *)messages_get("PrintNS"));
+ gwin->menukey[15] = 'P';
+ gwin->menutype[16] = NM_ITEM;
+ gwin->menulab[16] = NM_BARLABEL;
+ gwin->menutype[17] = NM_ITEM;
+ gwin->menulab[17] = ami_utf8_easy((char *)messages_get("About"));
+ gwin->menukey[17] = '?';
+ gwin->menutype[18] = NM_ITEM;
+ gwin->menulab[18] = ami_utf8_easy((char *)messages_get("Quit"));
+ gwin->menukey[18] = 'Q';
+ gwin->menutype[19] = NM_TITLE;
+ gwin->menulab[19] = ami_utf8_easy((char *)messages_get("Edit"));
+ gwin->menutype[20] = NM_ITEM;
+ gwin->menulab[20] = ami_utf8_easy((char *)messages_get("CutNS"));
+ gwin->menukey[20] = 'X';
+ gwin->menutype[21] = NM_ITEM;
+ gwin->menulab[21] = ami_utf8_easy((char *)messages_get("CopyNS"));
+ gwin->menukey[21] = 'C';
+ gwin->menutype[22] = NM_ITEM;
+ gwin->menulab[22] = ami_utf8_easy((char *)messages_get("PasteNS"));
+ gwin->menukey[22] = 'V';
+ gwin->menutype[23] = NM_ITEM;
+ gwin->menulab[23] = NM_BARLABEL;
+ gwin->menutype[24] = NM_ITEM;
+ gwin->menulab[24] = ami_utf8_easy((char *)messages_get("SelectAllNS"));
+ gwin->menukey[24] = 'A';
+ gwin->menutype[25] = NM_ITEM;
+ gwin->menulab[25] = ami_utf8_easy((char *)messages_get("ClearNS"));
+ gwin->menukey[25] = 'Z';
+ gwin->menutype[26] = NM_TITLE;
+ gwin->menulab[26] = ami_utf8_easy((char *)messages_get("Browser"));
+ gwin->menutype[27] = NM_ITEM;
+ gwin->menulab[27] = ami_utf8_easy((char *)messages_get("FindTextNS"));
+ gwin->menukey[27] = 'F';
+ gwin->menutype[28] = NM_ITEM;
+ gwin->menulab[28] = NM_BARLABEL;
+ gwin->menutype[29] = NM_ITEM;
+ gwin->menulab[29] = ami_utf8_easy((char *)messages_get("HistLocalNS"));
+ gwin->menutype[30] = NM_ITEM;
+ gwin->menulab[30] = ami_utf8_easy((char *)messages_get("HistGlobalNS"));
+ gwin->menutype[31] = NM_ITEM;
+ gwin->menulab[31] = NM_BARLABEL;
+ gwin->menutype[32] = NM_ITEM;
+ gwin->menulab[32] = ami_utf8_easy((char *)messages_get("ShowCookies"));
+ gwin->menutype[33] = NM_ITEM;
+ gwin->menulab[33] = NM_BARLABEL;
+ gwin->menutype[34] = NM_ITEM;
+ gwin->menulab[34] = ami_utf8_easy((char *)messages_get("ScaleNS"));
+ gwin->menutype[35] = NM_SUB;
+ gwin->menulab[35] = ami_utf8_easy((char *)messages_get("ScaleDec"));
+ gwin->menukey[35] = '-';
+ gwin->menutype[36] = NM_SUB;
+ gwin->menulab[36] = ami_utf8_easy((char *)messages_get("ScaleNorm"));
+ gwin->menukey[36] = '=';
+ gwin->menutype[37] = NM_SUB;
+ gwin->menulab[37] = ami_utf8_easy((char *)messages_get("ScaleInc"));
+ gwin->menukey[37] = '+';
+ gwin->menutype[38] = NM_ITEM;
+ gwin->menulab[38] = ami_utf8_easy((char *)messages_get("Redraw"));
+ gwin->menutype[39] = NM_TITLE;
+ gwin->menulab[39] = ami_utf8_easy((char *)messages_get("Hotlist"));
+ gwin->menukey[39] = 'H';
+ gwin->menutype[40] = NM_ITEM;
+ gwin->menulab[40] = ami_utf8_easy((char *)messages_get("HotlistAdd"));
+ gwin->menutype[41] = NM_ITEM;
+ gwin->menulab[41] = ami_utf8_easy((char *)messages_get("HotlistShowNS"));
+ gwin->menutype[42] = NM_ITEM;
+ gwin->menulab[42] = NM_BARLABEL;
+
+ gwin->menutype[AMI_MENU_HOTLIST_MAX + 1] = NM_TITLE;
+ gwin->menulab[AMI_MENU_HOTLIST_MAX + 1] = ami_utf8_easy((char *)messages_get("Settings"));
+ gwin->menutype[AMI_MENU_HOTLIST_MAX + 2] = NM_ITEM;
+ gwin->menulab[AMI_MENU_HOTLIST_MAX + 2] = ami_utf8_easy((char *)messages_get("SettingsEdit"));
+ gwin->menutype[AMI_MENU_HOTLIST_MAX + 3] = NM_ITEM;
+ gwin->menulab[AMI_MENU_HOTLIST_MAX + 3] = NM_BARLABEL;
+ gwin->menutype[AMI_MENU_HOTLIST_MAX + 4] = NM_ITEM;
+ gwin->menulab[AMI_MENU_HOTLIST_MAX + 4] = ami_utf8_easy((char *)messages_get("SnapshotWindow"));
+ gwin->menutype[AMI_MENU_HOTLIST_MAX + 5] = NM_ITEM;
+ gwin->menulab[AMI_MENU_HOTLIST_MAX + 5] = ami_utf8_easy((char *)messages_get("SettingsSave"));
+ gwin->menutype[AMI_MENU_HOTLIST_MAX + 6] = NM_TITLE;
+ gwin->menulab[AMI_MENU_HOTLIST_MAX + 6] = ami_utf8_easy((char *)messages_get("ARexx"));
+ gwin->menutype[AMI_MENU_HOTLIST_MAX + 7] = NM_ITEM;
+ gwin->menulab[AMI_MENU_HOTLIST_MAX + 7] = ami_utf8_easy((char *)messages_get("ARexxExecute"));
+ gwin->menutype[AMI_MENU_HOTLIST_MAX + 8] = NM_ITEM;
+ gwin->menulab[AMI_MENU_HOTLIST_MAX + 8] = NM_BARLABEL;
+
+ gwin->menutype[AMI_MENU_AREXX_MAX] = NM_END;
}
-void ami_menu_refresh(struct gui_window_2 *gwin, struct NewMenu *menu)
+void ami_menu_refresh(struct gui_window_2 *gwin)
{
SetAttrs(gwin->objects[OID_MAIN],
WINDOW_NewMenu, NULL,
TAG_DONE);
- ami_free_menulabs(menu);
- ami_create_menu(BROWSER_WINDOW_NORMAL);
+ ami_free_menulabs(gwin);
+ ami_create_menu(BROWSER_WINDOW_NORMAL, gwin);
SetAttrs(gwin->objects[OID_MAIN],
- WINDOW_NewMenu, menu,
+ WINDOW_NewMenu, gwin->menu,
TAG_DONE);
schedule(6000,(void *)ami_menu_refresh,gwin);
}
-struct NewMenu *ami_create_menu(ULONG type)
+struct NewMenu *ami_create_menu(ULONG type, struct gui_window_2 *gwin)
{
int i;
ULONG menuflags = 0;
- struct NewMenu *menu;
-/*
- STATIC struct NewMenu menu[] = {
- {NM_TITLE,0,0,0,0,0,}, // project
- { NM_ITEM,0,"N",0,0,0,}, // new window
- { NM_ITEM,0,"T",0,0,0,}, // new tab
- { NM_ITEM,NM_BARLABEL,0,0,0,0,},
- { NM_ITEM,0,"O",0,0,0,}, // open local file
- { NM_ITEM,0,0,0,0,0,}, // save
- { NM_SUB,0,"S",0,0,0,}, // save as source
- { NM_SUB,0,0,0,0,0,}, // save as text
- { NM_SUB,0,0,0,0,0,}, // save as complete
- { NM_SUB,0,0,0,0,0,}, // save as pdf
- { NM_SUB,0,0,0,0,0,}, // save as iff
- { NM_ITEM,NM_BARLABEL,0,0,0,0,},
- { NM_ITEM,0,"K",0,0,0,}, // close tab
- { NM_ITEM,0,0,0,0,0,}, // close window
- { NM_ITEM,NM_BARLABEL,0,0,0,0,},
- { NM_ITEM,0,"P",0,0,0,}, // print
- { NM_ITEM,NM_BARLABEL,0,0,0,0,},
- { NM_ITEM,0,"?",0,0,0,}, // about
- { NM_ITEM,0,"Q",0,0,0,}, // quit
- {NM_TITLE,0,0,0,0,0,}, // edit
- { NM_ITEM,0,"X",0,0,0,}, // cut
- { NM_ITEM,0,"C",0,0,0,}, // copy
- { NM_ITEM,0,"V",0,0,0,}, // paste
- { NM_ITEM,NM_BARLABEL,0,0,0,0,},
- { NM_ITEM,0,"A",0,0,0,}, // select all
- { NM_ITEM,0,"Z",0,0,0,}, // clear selection
- {NM_TITLE,0,0,0,0,0,}, // browser
- { NM_ITEM,0,"F",0,0,0,}, // find in page
- { NM_ITEM,NM_BARLABEL,0,0,0,0,},
- { NM_ITEM,0,0,0,0,0,}, // local history
- { NM_ITEM,0,0,0,0,0,}, // global history
- { NM_ITEM,NM_BARLABEL,0,0,0,0,},
- { NM_ITEM,0,0,0,0,0,}, // cookies
- { NM_ITEM,NM_BARLABEL,0,0,0,0,},
- { NM_ITEM,0,0,0,0,0,}, // scale
- { NM_SUB,0,"-",0,0,0,}, // decrease
- { NM_SUB,0,"=",0,0,0,}, // normal
- { NM_SUB,0,"+",0,0,0,}, // increase
- { NM_ITEM,0,0,0,0,0,}, // redraw
- {NM_TITLE,0,0,0,0,0,}, // hotlist
- { NM_ITEM,0,0,0,0,0,}, // add to hotlist
- { NM_ITEM,0,"H",0,0,0,}, // show hotlist (treeview)
- { NM_ITEM,NM_BARLABEL,0,0,0,0,},
- { NM_IGNORE,0,0,0,0,0,}, // ** hotlist entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** hotlist entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** hotlist entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** hotlist entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** hotlist entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** hotlist entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** hotlist entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** hotlist entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** hotlist entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** hotlist entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** hotlist entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** hotlist entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** hotlist entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** hotlist entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** hotlist entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** hotlist entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** hotlist entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** hotlist entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** hotlist entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** hotlist entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** hotlist entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** hotlist entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** hotlist entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** hotlist entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** hotlist entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** hotlist entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** hotlist entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** hotlist entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** hotlist entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** hotlist entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** hotlist entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** hotlist entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** hotlist entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** hotlist entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** hotlist entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** hotlist entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** hotlist entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** hotlist entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** hotlist entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** hotlist entry **
- {NM_TITLE,0,0,0,0,0,}, // settings
- { NM_ITEM,0,0,0,0,0,}, // edit prefs
- { NM_ITEM,NM_BARLABEL,0,0,0,0,},
- { NM_ITEM,0,0,0,0,0,}, // snapshot window
- { NM_ITEM,0,0,0,0,0,}, // save settings
- {NM_TITLE,0,0,0,0,0,}, // arexx
- { NM_ITEM,0,0,0,0,0,}, // execute arexx
- { NM_ITEM,NM_BARLABEL,0,0,0,0,},
- { NM_IGNORE,0,0,0,0,0,}, // ** arexx entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** arexx entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** arexx entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** arexx entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** arexx entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** arexx entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** arexx entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** arexx entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** arexx entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** arexx entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** arexx entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** arexx entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** arexx entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** arexx entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** arexx entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** arexx entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** arexx entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** arexx entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** arexx entry **
- { NM_IGNORE,0,0,0,0,0,}, // ** arexx entry **
- { NM_END,0,0,0,0,0,},
- };
-*/
-
- menu = AllocVec(sizeof(struct NewMenu) * (AMI_MENU_AREXX_MAX + 1), MEMF_CLEAR);
- ami_init_menulabs();
+
+ ami_init_menulabs(gwin);
+ gwin->menu = AllocVec(sizeof(struct NewMenu) * (AMI_MENU_AREXX_MAX + 1), MEMF_CLEAR);
if(type != BROWSER_WINDOW_NORMAL)
{
@@ -316,26 +261,26 @@
for(i=0;i<=AMI_MENU_AREXX_MAX;i++)
{
- menu[i].nm_Type = menutype[i];
- menu[i].nm_Label = menulab[i];
- if(menukey[i]) menu[i].nm_CommKey = &menukey[i];
- menu[i].nm_Flags = 0;
- }
-
- menu[1].nm_Flags = menuflags;
- menu[2].nm_Flags = menuflags;
- menu[12].nm_Flags = menuflags;
- menu[13].nm_Flags = menuflags;
+ gwin->menu[i].nm_Type = gwin->menutype[i];
+ gwin->menu[i].nm_Label = gwin->menulab[i];
+ if(gwin->menukey[i]) gwin->menu[i].nm_CommKey = &gwin->menukey[i];
+ gwin->menu[i].nm_Flags = 0;
+ }
+
+ gwin->menu[1].nm_Flags = menuflags;
+ gwin->menu[2].nm_Flags = menuflags;
+ gwin->menu[12].nm_Flags = menuflags;
+ gwin->menu[13].nm_Flags = menuflags;
#ifndef WITH_PDF_EXPORT
- menu[9].nm_Flags = NM_ITEMDISABLED;
-#endif
+ gwin->menu[9].nm_Flags = NM_ITEMDISABLED;
+#endif
+
+ ami_menu_scan(ami_tree_get_tree(hotlist_window), false, gwin);
+ ami_menu_arexx_scan(gwin);
if(!menualreadyinit)
{
- ami_menu_scan(ami_tree_get_tree(hotlist_window),menu);
- ami_menu_arexx_scan(menu);
-
aslhookfunc.h_Entry = (void *)&ami_asl_mime_hook;
aslhookfunc.h_SubEntry = NULL;
aslhookfunc.h_Data = NULL;
@@ -346,13 +291,13 @@
/* Set up scheduler to refresh the hotlist menu
Disabled as it causes everything to slow down to a halt after
several iterations
- schedule(6000,(void *)ami_menu_refresh,menu);
+ schedule(6000,(void *)ami_menu_refresh,gwin);
*/
- return(menu);
+ return(gwin->menu);
}
-void ami_menu_arexx_scan(struct NewMenu *menu)
+void ami_menu_arexx_scan(struct gui_window_2 *gwin)
{
int item = AMI_MENU_AREXX;
BPTR lock = 0;
@@ -384,23 +329,20 @@
for(ead = (struct ExAllData *)buffer; ead; ead = ead->ed_Next)
{
if(item >= AMI_MENU_AREXX_MAX) continue;
- if(!strcasecmp(ead->ed_Name, option_arexx_startup)) continue;
- if(!strcasecmp(ead->ed_Name, option_arexx_shutdown)) continue;
-
if(EAD_IS_FILE(ead))
{
- menu[item].nm_Type = NM_ITEM;
+ gwin->menu[item].nm_Type = NM_ITEM;
if(ead->ed_Comment[0] != '\0')
{
- menulab[item] = (char *)strdup(ead->ed_Comment);
+ gwin->menulab[item] = (char *)strdup(ead->ed_Comment);
}
else
{
- menulab[item] = (char *)strdup(ead->ed_Name);
+ gwin->menulab[item] = (char *)strdup(ead->ed_Name);
}
- menu[item].nm_Label = menulab[item];
- menu[item].nm_UserData = (char *)strdup(ead->ed_Name);
+ gwin->menu[item].nm_Label = gwin->menulab[item];
+ gwin->menu[item].nm_UserData = (char *)strdup(ead->ed_Name);
item++;
}
@@ -413,15 +355,15 @@
UnLock(lock);
}
- menu[item].nm_Type = NM_END;
- menu[item].nm_Label = NULL;
+ gwin->menu[item].nm_Type = NM_END;
+ gwin->menu[item].nm_Label = NULL;
}
-void ami_menu_scan(struct tree *tree,struct NewMenu *menu)
+ULONG ami_menu_scan(struct tree *tree, bool count, struct gui_window_2 *gwin)
{
struct node *root = tree_node_get_child(tree_get_root(tree));
- struct node_element *element=NULL;
struct node *node;
+ struct node_element *element;
static WORD gen = 0;
static ULONG item;
@@ -434,12 +376,15 @@
if(element && (strcmp(tree_node_element_get_text(element),"Menu")==0))
{
// found menu
- ami_menu_scan_2(tree,tree_node_get_child(node),&gen,&item,menu);
+ ami_menu_scan_2(tree,tree_node_get_child(node),&gen,&item,count,gwin);
}
}
+
+ return(item - AMI_MENU_HOTLIST);
}
-void ami_menu_scan_2(struct tree *tree,struct node *root,WORD *gen,ULONG *item,struct NewMenu *menu)
+void ami_menu_scan_2(struct tree *tree,struct node *root,WORD *gen,
+ ULONG *item, bool count, struct gui_window_2 *gwin)
{
struct node *tempnode;
struct node_element *element=NULL;
@@ -451,32 +396,35 @@
{
if((*gen > 0) && (*gen < 3))
{
- if(*item >= AMI_MENU_HOTLIST_MAX) return;
-
- if(*gen == 1) menu[*item].nm_Type = NM_ITEM;
- if(*gen == 2) menu[*item].nm_Type = NM_SUB;
-
- if(strcmp(tree_url_node_get_title(node),"--"))
+// if(*item >= AMI_MENU_HOTLIST_MAX) return;
+
+ if(!count)
{
- menulab[*item] = ami_utf8_easy((char *)tree_url_node_get_title(node));
+ if(*gen == 1) gwin->menu[*item].nm_Type = NM_ITEM;
+ if(*gen == 2) gwin->menu[*item].nm_Type = NM_SUB;
+
+ if(strcmp(tree_url_node_get_title(node),"--"))
+ {
+ gwin->menulab[*item] = ami_utf8_easy((char *)tree_url_node_get_title(node));
+ }
+ else
+ {
+ gwin->menulab[*item] = NM_BARLABEL;
+ }
+
+ gwin->menu[*item].nm_Label = gwin->menulab[*item];
+
+ gwin->menu[*item].nm_UserData = (void *)tree_url_node_get_url(node);
+ if(tree_node_is_folder(node) && (!tree_node_get_child(node)))
+ gwin->menu[*item].nm_Flags = NM_ITEMDISABLED;
}
- else
- {
- menulab[*item] = NM_BARLABEL;
- }
-
- menu[*item].nm_Label = menulab[*item];
-
- menu[*item].nm_UserData = (void *)tree_url_node_get_url(node);
- if(tree_node_is_folder(node) && (!tree_node_get_child(node)))
- menu[*item].nm_Flags = NM_ITEMDISABLED;
*item = *item + 1;
}
if (tree_node_get_child(node))
{
- ami_menu_scan_2(tree,tree_node_get_child(node),gen,item,menu);
+ ami_menu_scan_2(tree,tree_node_get_child(node),gen,item,count,gwin);
}
}
@@ -915,6 +863,8 @@
{
struct Window *win = g->shared->win;
+ if(option_kiosk_mode == true) return;
+
OffMenu(win,AMI_MENU_CUT);
OffMenu(win,AMI_MENU_COPY);
OffMenu(win,AMI_MENU_PASTE);
Modified: branches/jmb/treeview-redux/amiga/menu.h
URL: http://source.netsurf-browser.org/branches/jmb/treeview-redux/amiga/menu....
==============================================================================
--- branches/jmb/treeview-redux/amiga/menu.h (original)
+++ branches/jmb/treeview-redux/amiga/menu.h Sun Sep 26 15:04:11 2010
@@ -18,10 +18,10 @@
#ifndef AMIGA_MENU_H
#define AMIGA_MENU_H
-#include "amiga/gui.h"
#include <exec/types.h>
#include <intuition/intuition.h>
#include <libraries/gadtools.h>
+#include "content/hlcache.h"
/* Number of hotlist items, menu structure needs to be changed in ami_create_menu()
* if this value is changed. */
@@ -63,15 +63,12 @@
#define AMI_MENU_CLEAR FULLMENUNUM(1,5,0)
#define AMI_MENU_FIND FULLMENUNUM(2,0,0)
+struct gui_window;
struct gui_window_2;
-char *menulab[AMI_MENU_AREXX_MAX+1];
-UBYTE *menutype;
-char menukey[AMI_MENU_AREXX_MAX+1];
-
-void ami_free_menulabs(struct NewMenu *menu);
-struct NewMenu *ami_create_menu(ULONG type);
-void ami_menu_refresh(struct gui_window_2 *gwin, struct NewMenu *menu);
+void ami_free_menulabs(struct gui_window_2 *gwin);
+struct NewMenu *ami_create_menu(ULONG type, struct gui_window_2 *gwin);
+void ami_menu_refresh(struct gui_window_2 *gwin);
void ami_menupick(ULONG code,struct gui_window_2 *gwin,struct MenuItem *item);
void ami_menu_update_disabled(struct gui_window *g, hlcache_handle *c);
#endif
13 years
r10845 vince - /branches/jmb/treeview-redux/desktop/cookies.c
by netsurf@semichrome.net
Author: vince
Date: Sun Sep 26 13:16:03 2010
New Revision: 10845
URL: http://source.netsurf-browser.org?rev=10845&view=rev
Log:
finish review comments for cookie.c
Modified:
branches/jmb/treeview-redux/desktop/cookies.c
Modified: branches/jmb/treeview-redux/desktop/cookies.c
URL: http://source.netsurf-browser.org/branches/jmb/treeview-redux/desktop/coo...
==============================================================================
--- branches/jmb/treeview-redux/desktop/cookies.c (original)
+++ branches/jmb/treeview-redux/desktop/cookies.c Sun Sep 26 13:16:03 2010
@@ -89,7 +89,7 @@
struct node_element *domain, *path;
const char *domain_t, *path_t, *name_t;
char *space;
- bool folder = tree_node_is_folder(node);
+ bool is_folder = tree_node_is_folder(node);
/* we don't remove any icons here */
if (msg_data->msg == NODE_DELETE_ELEMENT_IMG)
@@ -100,7 +100,7 @@
return NODE_CALLBACK_NOT_HANDLED;
/* check if it's a domain folder */
- if (folder)
+ if (is_folder)
return NODE_CALLBACK_NOT_HANDLED;
switch (msg_data->flag) {
@@ -113,18 +113,19 @@
path = tree_node_find_element(node, TREE_ELEMENT_PATH,
NULL);
- if (domain != NULL && path != NULL) {
+ if ((domain != NULL) &&
+ (path != NULL)) {
domain_t = tree_node_element_get_text(domain) +
strlen(messages_get(
"TreeDomain")) - 4;
space = strchr(domain_t, ' ');
- if (space)
+ if (space != NULL)
*space = '\0';
path_t = tree_node_element_get_text(path) +
strlen(messages_get("TreePath"))
- 4;
space = strchr(path_t, ' ');
- if (space)
+ if (space != NULL)
*space = '\0';
name_t = msg_data->data.text;
urldb_delete_cookie(domain_t, path_t, name_t);
@@ -151,11 +152,13 @@
{
const char *node_text; /* existing node text */
- if (element == NULL)
- return false;
-
if (text == NULL)
return false;
+
+ if (element == NULL) {
+ free(text);
+ return false;
+ }
node_text = tree_node_element_get_text(element);
@@ -182,10 +185,7 @@
const struct cookie_data *data)
{
struct node_element *element;
- char buffer[256];
- char buffer2[16];
- char *text;
- const char *old_text;
+ char buffer[32];
assert(data != NULL);
@@ -216,118 +216,54 @@
messages_get("TreeHeaders") :
""));
-
+ /* update path text */
element = tree_node_find_element(node, TREE_ELEMENT_PATH, element);
- if (element != NULL) {
- snprintf(buffer, 256, messages_get("TreePath"), data->path,
- data->path_from_set ?
- messages_get("TreeHeaders") : "");
- old_text = tree_node_element_get_text(element);
- if (old_text == NULL || strcmp(old_text, buffer) != 0) {
- text = strdup(buffer);
- if (text == NULL) {
- LOG(("malloc failed"));
- warn_user("NoMemory", 0);
- return false;
- }
- tree_update_node_element(cookies_tree, element, text,
- NULL);
- }
- }
+ update_element_text(element,
+ messages_get_buff("TreePath", data->path,
+ data->path_from_set ?
+ messages_get("TreeHeaders") :
+ ""));
+
+ /* update expiry text */
element = tree_node_find_element(node, TREE_ELEMENT_EXPIRES, element);
- if (element != NULL) {
- snprintf(buffer, 256, messages_get("TreeExpires"),
- (data->expires > 0)
- ? (data->expires == 1)
- ? messages_get("TreeSession")
- : ctime(&data->expires)
- : messages_get("TreeUnknown"));
- if (data->expires > 0 && data->expires != 1)
- buffer[strlen(buffer) - 1] = '\0';
- old_text = tree_node_element_get_text(element);
- if (old_text == NULL || strcmp(old_text, buffer) != 0) {
- text = strdup(buffer);
- if (text == NULL) {
- LOG(("malloc failed"));
- warn_user("NoMemory", 0);
- return false;
- }
- tree_update_node_element(cookies_tree, element, text,
- NULL);
- }
- }
+ update_element_text(element,
+ messages_get_buff("TreeExpires",
+ (data->expires > 0)
+ ? (data->expires == 1)
+ ? messages_get("TreeSession")
+ : ctime(&data->expires)
+ : messages_get("TreeUnknown")));
+
+ /* update last used text */
element = tree_node_find_element(node, TREE_ELEMENT_LAST_USED, element);
- if (element != NULL) {
- snprintf(buffer, 256, messages_get("TreeLastUsed"),
- (data->last_used > 0) ?
- ctime(&data->last_used) :
- messages_get("TreeUnknown"));
- if (data->last_used > 0)
- buffer[strlen(buffer) - 1] = '\0';
- old_text = tree_node_element_get_text(element);
- if (old_text == NULL || strcmp(old_text, buffer) != 0) {
- text = strdup(buffer);
- if (text == NULL) {
- LOG(("malloc failed"));
- warn_user("NoMemory", 0);
- return false;
- }
- tree_update_node_element(cookies_tree, element, text,
- NULL);
- }
- }
+ update_element_text(element,
+ messages_get_buff("TreeLastUsed",
+ (data->last_used > 0) ?
+ ctime(&data->last_used) :
+ messages_get("TreeUnknown")));
+
+ /* update secure text */
element = tree_node_find_element(node, TREE_ELEMENT_SECURE, element);
- if (element != NULL) {
- snprintf(buffer, 256, messages_get("TreeSecure"),
- data->secure ?
- messages_get("Yes") : messages_get("No"));
- old_text = tree_node_element_get_text(element);
- if (old_text == NULL || strcmp(old_text, buffer) != 0) {
- text = strdup(buffer);
- if (text == NULL) {
- LOG(("malloc failed"));
- warn_user("NoMemory", 0);
- return false;
- }
- tree_update_node_element(cookies_tree, element, text,
- NULL);
- }
- }
+ update_element_text(element,
+ messages_get_buff("TreeSecure",
+ data->secure ?
+ messages_get("Yes") :
+ messages_get("No")));
+
+ /* update version text */
element = tree_node_find_element(node, TREE_ELEMENT_VERSION, element);
- if (element != NULL) {
- snprintf(buffer2, 16, "TreeVersion%i", data->version);
- snprintf(buffer, 256, messages_get("TreeVersion"),
- messages_get(buffer2));
- old_text = tree_node_element_get_text(element);
- if (old_text == NULL || strcmp(old_text, buffer) != 0) {
- text = strdup(buffer);
- if (text == NULL) {
- LOG(("malloc failed"));
- warn_user("NoMemory", 0);
- return false;
- }
- tree_update_node_element(cookies_tree, element, text,
- NULL);
- }
- }
- element = tree_node_find_element(node, TREE_ELEMENT_PERSISTENT,
- element);
- if (element != NULL) {
- snprintf(buffer, 256, messages_get("TreePersistent"),
- data->no_destroy ?
- messages_get("Yes") : messages_get("No"));
- old_text = tree_node_element_get_text(element);
- if (old_text == NULL || strcmp(old_text, buffer) != 0) {
- text = strdup(buffer);
- if (text == NULL) {
- LOG(("malloc failed"));
- warn_user("NoMemory", 0);
- return false;
- }
- tree_update_node_element(cookies_tree, element, text,
- NULL);
- }
- }
+ snprintf(buffer, sizeof(buffer), "TreeVersion%i", data->version);
+ update_element_text(element,
+ messages_get_buff("TreeVersion",
+ messages_get(buffer)));
+
+ /* update persistant text */
+ element = tree_node_find_element(node, TREE_ELEMENT_PERSISTENT, element);
+ update_element_text(element,
+ messages_get_buff("TreePersistent",
+ data->no_destroy ?
+ messages_get("Yes") :
+ messages_get("No")));
return node;
}
@@ -532,8 +468,8 @@
*/
void cookies_delete_all(void)
{
- bool redraw = tree_get_redraw(cookies_tree);
- if (redraw)
+ bool needs_redraw = tree_get_redraw(cookies_tree);
+ if (needs_redraw)
tree_set_redraw(cookies_tree, false);
user_delete = true;
@@ -541,7 +477,7 @@
tree_delete_selected_nodes(cookies_tree, cookies_tree_root);
user_delete = false;
- if (redraw)
+ if (needs_redraw)
tree_set_redraw(cookies_tree, true);
}
13 years
r10844 vince - in /branches/jmb/treeview-redux: content/urldb.c desktop/cookies.c desktop/cookies.h desktop/sslcert.c
by netsurf@semichrome.net
Author: vince
Date: Sun Sep 26 05:58:12 2010
New Revision: 10844
URL: http://source.netsurf-browser.org?rev=10844&view=rev
Log:
most of the review comments for cookie window
Modified:
branches/jmb/treeview-redux/content/urldb.c
branches/jmb/treeview-redux/desktop/cookies.c
branches/jmb/treeview-redux/desktop/cookies.h
branches/jmb/treeview-redux/desktop/sslcert.c
Modified: branches/jmb/treeview-redux/content/urldb.c
URL: http://source.netsurf-browser.org/branches/jmb/treeview-redux/content/url...
==============================================================================
--- branches/jmb/treeview-redux/content/urldb.c (original)
+++ branches/jmb/treeview-redux/content/urldb.c Sun Sep 26 05:58:12 2010
@@ -2524,7 +2524,7 @@
version = c->version;
c->last_used = now;
- cookies_update((struct cookie_data *)c);
+ cookies_schedule_update((struct cookie_data *)c);
}
}
}
@@ -2559,7 +2559,7 @@
version = c->version;
c->last_used = now;
- cookies_update((struct cookie_data *)c);
+ cookies_schedule_update((struct cookie_data *)c);
}
}
@@ -2599,7 +2599,7 @@
version = c->version;
c->last_used = now;
- cookies_update((struct cookie_data *)c);
+ cookies_schedule_update((struct cookie_data *)c);
}
}
@@ -2631,7 +2631,7 @@
version = c->version;
c->last_used = now;
- cookies_update((struct cookie_data *)c);
+ cookies_schedule_update((struct cookie_data *)c);
}
}
@@ -2921,7 +2921,7 @@
/* Now insert into database */
if (!urldb_insert_cookie(c, scheme, urlt))
goto error;
- cookies_update((struct cookie_data *)c);
+ cookies_schedule_update((struct cookie_data *)c);
} while (cur < end);
free(host);
@@ -3372,7 +3372,7 @@
else
p->cookies = d->next;
- cookies_delete((struct cookie_data *)d);
+ cookies_remove((struct cookie_data *)d);
urldb_free_cookie(d);
urldb_free_cookie(c);
} else {
@@ -3388,10 +3388,10 @@
else
p->cookies = c;
- cookies_delete((struct cookie_data *)d);
+ cookies_remove((struct cookie_data *)d);
urldb_free_cookie(d);
- cookies_update((struct cookie_data *)c);
+ cookies_schedule_update((struct cookie_data *)c);
// LOG(("%p: %s=%s", c, c->name, c->value));
}
} else {
@@ -3770,7 +3770,7 @@
else
p->cookies_end = c->prev;
- cookies_delete((struct cookie_data *)c);
+ cookies_remove((struct cookie_data *)c);
urldb_free_cookie(c);
return;
Modified: branches/jmb/treeview-redux/desktop/cookies.c
URL: http://source.netsurf-browser.org/branches/jmb/treeview-redux/desktop/coo...
==============================================================================
--- branches/jmb/treeview-redux/desktop/cookies.c (original)
+++ branches/jmb/treeview-redux/desktop/cookies.c Sun Sep 26 05:58:12 2010
@@ -38,26 +38,19 @@
#include "utils/url.h"
#include "utils/utils.h"
-#define TREE_ELEMENT_PERSISTENT 0x01
-#define TREE_ELEMENT_VERSION 0x02
-#define TREE_ELEMENT_SECURE 0x03
-#define TREE_ELEMENT_LAST_USED 0x04
-#define TREE_ELEMENT_EXPIRES 0x05
-#define TREE_ELEMENT_PATH 0x06
-#define TREE_ELEMENT_DOMAIN 0x07
-#define TREE_ELEMENT_COMMENT 0x08
-#define TREE_ELEMENT_VALUE 0x09
-
-
-void cookies_schedule_callback(void *data);
-static struct node *cookies_find(struct node *node, const char *url);
-static struct node *cookies_create_cookie_node(struct node *parent,
- const struct cookie_data *data);
-bool cookies_update_cookie_node(struct node *node,
- const struct cookie_data *data);
-static node_callback_resp cookies_node_callback(void *user_data,
- struct node_msg_data *msg_data);
-
+/** Flags for each type of cookie tree node. */
+enum tree_element_cookie {
+ TREE_ELEMENT_PERSISTENT = 0x01,
+ TREE_ELEMENT_VERSION = 0x02,
+ TREE_ELEMENT_SECURE = 0x03,
+ TREE_ELEMENT_LAST_USED = 0x04,
+ TREE_ELEMENT_EXPIRES = 0x05,
+ TREE_ELEMENT_PATH = 0x06,
+ TREE_ELEMENT_DOMAIN = 0x07,
+ TREE_ELEMENT_COMMENT = 0x08,
+ TREE_ELEMENT_VALUE = 0x09,
+};
+
static struct tree *cookies_tree;
static struct node *cookies_tree_root;
static bool user_delete;
@@ -66,251 +59,169 @@
/**
- * Initialises cookies tree.
- *
- * \param data user data for the callbacks
- * \param start_redraw callback function called before every redraw
- * \param end_redraw callback function called after every redraw
- * \return true on success, false on memory exhaustion
- */
-bool cookies_initialise(struct tree *tree)
-{
-
- folder_icon = tree_load_icon(tree_directory_icon_name);
- cookie_icon = tree_load_icon(tree_content_icon_name);
-
- if (tree == NULL)
- return false;
-
- /* Create an empty tree */
- cookies_tree = tree;
- cookies_tree_root = tree_get_root(cookies_tree);
-
- user_delete = false;
- urldb_iterate_cookies(cookies_update);
- tree_set_node_expanded(cookies_tree, cookies_tree_root,
- true, true, true);
-
- return true;
-}
-
-
-/**
- * Get flags with which the cookies tree should be created;
- *
- * \return the flags
- */
-unsigned int cookies_get_tree_flags(void)
-{
- return TREE_DELETE_EMPTY_DIRS;
-}
-
-
-/**
- * Perform cookie updates and addition. The update is only scheduled here.
- * The actual update is performed in the callback function.
- *
- * \param data Data of cookie being updated.
- * \return true (for urldb_iterate_entries)
- */
-bool cookies_update(const struct cookie_data *data)
-{
-
- assert(data);
- assert(!user_delete);
-
- schedule_remove(cookies_schedule_callback, (void *)data);
- schedule(100, cookies_schedule_callback, (void *)data);
-
- return true;
-}
-
-
-/**
- * Deletes a cookie.
- *
- * \param data Data of cookie being updated.
- * \return true (for urldb_iterate_entries)
- */
-void cookies_delete(const struct cookie_data *data)
-{
-
- assert(data);
-
- schedule_remove(cookies_schedule_callback, (void *)data);
-}
-
-
-/**
- * Funtion called when scheduled event gets fired. Performs actual cookie
- * update.
- */
-void cookies_schedule_callback(void *scheduled_data)
-{
- const struct cookie_data *data = scheduled_data;
- struct node *node = NULL;
- struct node *cookie_node = NULL;
- char *domain_cp;
-
- node = cookies_find(cookies_tree_root, data->domain);
-
- if (node == NULL) {
- domain_cp = strdup(data->domain);
- if (domain_cp == NULL) {
- LOG(("malloc failed"));
- warn_user("NoMemory", 0);
- return;
- }
- node = tree_create_folder_node(cookies_tree,
- cookies_tree_root, domain_cp,
- false, false, false);
- if (node != NULL) {
- tree_set_node_user_callback(node, cookies_node_callback,
- NULL);
- tree_set_node_icon(cookies_tree, node, folder_icon);
- }
- }
-
- if (node == NULL)
- return;
-
- cookie_node = cookies_find(node, data->name);
- if (cookie_node == NULL)
- cookies_create_cookie_node(node, data);
- else
- cookies_update_cookie_node(cookie_node, data);
-
- return;
-}
-
-
-/**
- * Free memory and release all other resources.
- */
-void cookies_cleanup(void)
-{
-}
-
-
-/**
* Find an entry in the cookie tree
*
* \param node the node to check the children of
* \param title The title to find
* \return Pointer to node, or NULL if not found
*/
-struct node *cookies_find(struct node *node, const char *title)
+static struct node *cookies_find(struct node *node, const char *title)
{
struct node *search;
struct node_element *element;
for (search = tree_node_get_child(node); search;
- search = tree_node_get_next(search)) {
+ search = tree_node_get_next(search)) {
element = tree_node_find_element(search, TREE_ELEMENT_TITLE,
- NULL);
- if (!strcmp(title, tree_node_element_get_text(element)))
+ NULL);
+ if (strcmp(title, tree_node_element_get_text(element)) == 0)
return search;
}
return NULL;
}
-
-/**
- * Creates an empty tree entry for a cookie, and links it into the tree.
+/**
+ * Callback for all cookie tree nodes.
+ */
+static node_callback_resp cookies_node_callback(void *user_data, struct node_msg_data *msg_data)
+{
+ struct node *node = msg_data->node;
+ struct node_element *domain, *path;
+ const char *domain_t, *path_t, *name_t;
+ char *space;
+ bool folder = tree_node_is_folder(node);
+
+ /* we don't remove any icons here */
+ if (msg_data->msg == NODE_DELETE_ELEMENT_IMG)
+ return NODE_CALLBACK_HANDLED;
+
+ /* let the tree handle events other than text data removal */
+ if (msg_data->msg != NODE_DELETE_ELEMENT_TXT)
+ return NODE_CALLBACK_NOT_HANDLED;
+
+ /* check if it's a domain folder */
+ if (folder)
+ return NODE_CALLBACK_NOT_HANDLED;
+
+ switch (msg_data->flag) {
+ case TREE_ELEMENT_TITLE:
+ if (!user_delete)
+ break;
+ /* get the rest of the cookie data */
+ domain = tree_node_find_element(node,
+ TREE_ELEMENT_DOMAIN, NULL);
+ path = tree_node_find_element(node, TREE_ELEMENT_PATH,
+ NULL);
+
+ if (domain != NULL && path != NULL) {
+ domain_t = tree_node_element_get_text(domain) +
+ strlen(messages_get(
+ "TreeDomain")) - 4;
+ space = strchr(domain_t, ' ');
+ if (space)
+ *space = '\0';
+ path_t = tree_node_element_get_text(path) +
+ strlen(messages_get("TreePath"))
+ - 4;
+ space = strchr(path_t, ' ');
+ if (space)
+ *space = '\0';
+ name_t = msg_data->data.text;
+ urldb_delete_cookie(domain_t, path_t, name_t);
+ }
+ break;
+ default:
+ break;
+ }
+
+ free(msg_data->data.text);
+
+ return NODE_CALLBACK_HANDLED;
+}
+
+/**
+ * Helper to update the text of a node if it has changed.
+ *
+ * \param element The node element to update.
+ * \param text The text to update the element with. The ownership of
+ * this string is taken by this function and must not be
+ * referred to after the function exits.
+ */
+static bool update_element_text(struct node_element *element, char *text)
+{
+ const char *node_text; /* existing node text */
+
+ if (element == NULL)
+ return false;
+
+ if (text == NULL)
+ return false;
+
+ node_text = tree_node_element_get_text(element);
+
+ if ((node_text == NULL) || (strcmp(node_text, text) != 0)) {
+ tree_update_node_element(cookies_tree, element, text, NULL);
+ } else {
+ /* text does not need changing, free it */
+ free(text);
+ }
+ return true;
+}
+
+/**
+ * Updates a tree entry for a cookie.
*
* All information is copied from the cookie_data, and as such can
* be edited and should be freed.
*
- * \param parent the node to link to
- * \param data the cookie data to use
- * \return the node created, or NULL for failure
- */
-struct node *cookies_create_cookie_node(struct node *parent,
- const struct cookie_data *data)
-{
- struct node *node;
- char *name;
-
- name = strdup(data->name);
- if (name == NULL) {
- LOG(("malloc failed"));
- warn_user("NoMemory", 0);
- return NULL;
- }
-
- node = tree_create_leaf_node(cookies_tree, NULL, name,
- false, false, false);
- if (node == NULL) {
- free(name);
- return NULL;
- }
-
- tree_set_node_user_callback(node, cookies_node_callback, NULL);
-
- tree_create_node_element(node, NODE_ELEMENT_TEXT,
- TREE_ELEMENT_PERSISTENT, false);
-
- tree_create_node_element(node, NODE_ELEMENT_TEXT,
- TREE_ELEMENT_VERSION, false);
-
- tree_create_node_element(node, NODE_ELEMENT_TEXT,
- TREE_ELEMENT_SECURE, false);
-
- tree_create_node_element(node, NODE_ELEMENT_TEXT,
- TREE_ELEMENT_LAST_USED, false);
-
- tree_create_node_element(node, NODE_ELEMENT_TEXT,
- TREE_ELEMENT_EXPIRES, false);
-
- tree_create_node_element(node, NODE_ELEMENT_TEXT,
- TREE_ELEMENT_PATH, false);
-
- tree_create_node_element(node, NODE_ELEMENT_TEXT,
- TREE_ELEMENT_DOMAIN, false);
-
- if ((data->comment) && (strcmp(data->comment, "")))
- tree_create_node_element(node, NODE_ELEMENT_TEXT,
- TREE_ELEMENT_COMMENT, false);
- tree_create_node_element(node, NODE_ELEMENT_TEXT,
- TREE_ELEMENT_VALUE, false);
- tree_set_node_icon(cookies_tree, node, cookie_icon);
-
- if (!cookies_update_cookie_node(node, data))
- {
- tree_delete_node(NULL, node, false);
- return NULL;
- }
-
- tree_link_node(cookies_tree, parent, node, false);
- return node;
-}
-
-
-/**
- * Updates a tree entry for a cookie.
- *
- * All information is copied from the cookie_data, and as such can
- * be edited and should be freed.
- *
- * \param node the node to update
- * \param data the cookie data to use
+ * \param node The node to update
+ * \param data The cookie data to use
* \return true if node updated, or false for failure
*/
-bool cookies_update_cookie_node(struct node *node,
- const struct cookie_data *data)
+static bool cookies_update_cookie_node(struct node *node,
+ const struct cookie_data *data)
{
struct node_element *element;
char buffer[256];
char buffer2[16];
char *text;
const char *old_text;
-
-
+
+ assert(data != NULL);
+
+ /* update the value text */
element = tree_node_find_element(node, TREE_ELEMENT_VALUE, NULL);
+ update_element_text(element,
+ messages_get_buff("TreeValue",
+ data->value != NULL ?
+ data->value :
+ messages_get("TreeUnused")));
+
+
+ /* update the comment text */
+ if ((data->comment != NULL) &&
+ (strcmp(data->comment, "") != 0)) {
+ element = tree_node_find_element(node, TREE_ELEMENT_COMMENT, NULL);
+ update_element_text(element,
+ messages_get_buff("TreeComment",
+ data->comment));
+ }
+
+ /* update domain text */
+ element = tree_node_find_element(node, TREE_ELEMENT_DOMAIN, element);
+ update_element_text(element,
+ messages_get_buff("TreeDomain",
+ data->domain,
+ data->domain_from_set ?
+ messages_get("TreeHeaders") :
+ ""));
+
+
+ element = tree_node_find_element(node, TREE_ELEMENT_PATH, element);
if (element != NULL) {
- snprintf(buffer, 256, messages_get("TreeValue"),
- data->value ?
- data->value : messages_get("TreeUnused"));
+ snprintf(buffer, 256, messages_get("TreePath"), data->path,
+ data->path_from_set ?
+ messages_get("TreeHeaders") : "");
old_text = tree_node_element_get_text(element);
if (old_text == NULL || strcmp(old_text, buffer) != 0) {
text = strdup(buffer);
@@ -320,70 +231,17 @@
return false;
}
tree_update_node_element(cookies_tree, element, text,
- NULL);
- }
- }
- if ((data->comment) && (strcmp(data->comment, ""))) {
- element = tree_node_find_element(node, TREE_ELEMENT_COMMENT,
- element);
- if (element != NULL) {
- snprintf(buffer, 256, messages_get("TreeComment"),
- data->comment);
- old_text = tree_node_element_get_text(element);
- if (old_text == NULL || strcmp(old_text, buffer) != 0) {
- text = strdup(buffer);
- if (text == NULL) {
- LOG(("malloc failed"));
- warn_user("NoMemory", 0);
- return false;
- }
- tree_update_node_element(cookies_tree, element,
- text, NULL);
- }
- }
- }
- element = tree_node_find_element(node, TREE_ELEMENT_DOMAIN, element);
- if (element != NULL) {
- snprintf(buffer, 256, messages_get("TreeDomain"), data->domain,
- data->domain_from_set ?
- messages_get("TreeHeaders") : "");
- old_text = tree_node_element_get_text(element);
- if (old_text == NULL || strcmp(old_text, buffer) != 0) {
- text = strdup(buffer);
- if (text == NULL) {
- LOG(("malloc failed"));
- warn_user("NoMemory", 0);
- return false;
- }
- tree_update_node_element(cookies_tree, element, text,
- NULL);
- }
- }
- element = tree_node_find_element(node, TREE_ELEMENT_PATH, element);
- if (element != NULL) {
- snprintf(buffer, 256, messages_get("TreePath"), data->path,
- data->path_from_set ?
- messages_get("TreeHeaders") : "");
- old_text = tree_node_element_get_text(element);
- if (old_text == NULL || strcmp(old_text, buffer) != 0) {
- text = strdup(buffer);
- if (text == NULL) {
- LOG(("malloc failed"));
- warn_user("NoMemory", 0);
- return false;
- }
- tree_update_node_element(cookies_tree, element, text,
- NULL);
+ NULL);
}
}
element = tree_node_find_element(node, TREE_ELEMENT_EXPIRES, element);
if (element != NULL) {
snprintf(buffer, 256, messages_get("TreeExpires"),
- (data->expires > 0)
- ? (data->expires == 1)
- ? messages_get("TreeSession")
- : ctime(&data->expires)
- : messages_get("TreeUnknown"));
+ (data->expires > 0)
+ ? (data->expires == 1)
+ ? messages_get("TreeSession")
+ : ctime(&data->expires)
+ : messages_get("TreeUnknown"));
if (data->expires > 0 && data->expires != 1)
buffer[strlen(buffer) - 1] = '\0';
old_text = tree_node_element_get_text(element);
@@ -395,15 +253,15 @@
return false;
}
tree_update_node_element(cookies_tree, element, text,
- NULL);
+ NULL);
}
}
element = tree_node_find_element(node, TREE_ELEMENT_LAST_USED, element);
if (element != NULL) {
snprintf(buffer, 256, messages_get("TreeLastUsed"),
- (data->last_used > 0) ?
- ctime(&data->last_used) :
- messages_get("TreeUnknown"));
+ (data->last_used > 0) ?
+ ctime(&data->last_used) :
+ messages_get("TreeUnknown"));
if (data->last_used > 0)
buffer[strlen(buffer) - 1] = '\0';
old_text = tree_node_element_get_text(element);
@@ -415,14 +273,14 @@
return false;
}
tree_update_node_element(cookies_tree, element, text,
- NULL);
+ NULL);
}
}
element = tree_node_find_element(node, TREE_ELEMENT_SECURE, element);
if (element != NULL) {
snprintf(buffer, 256, messages_get("TreeSecure"),
- data->secure ?
- messages_get("Yes") : messages_get("No"));
+ data->secure ?
+ messages_get("Yes") : messages_get("No"));
old_text = tree_node_element_get_text(element);
if (old_text == NULL || strcmp(old_text, buffer) != 0) {
text = strdup(buffer);
@@ -432,14 +290,14 @@
return false;
}
tree_update_node_element(cookies_tree, element, text,
- NULL);
+ NULL);
}
}
element = tree_node_find_element(node, TREE_ELEMENT_VERSION, element);
if (element != NULL) {
snprintf(buffer2, 16, "TreeVersion%i", data->version);
snprintf(buffer, 256, messages_get("TreeVersion"),
- messages_get(buffer2));
+ messages_get(buffer2));
old_text = tree_node_element_get_text(element);
if (old_text == NULL || strcmp(old_text, buffer) != 0) {
text = strdup(buffer);
@@ -449,15 +307,15 @@
return false;
}
tree_update_node_element(cookies_tree, element, text,
- NULL);
+ NULL);
}
}
element = tree_node_find_element(node, TREE_ELEMENT_PERSISTENT,
- element);
+ element);
if (element != NULL) {
snprintf(buffer, 256, messages_get("TreePersistent"),
- data->no_destroy ?
- messages_get("Yes") : messages_get("No"));
+ data->no_destroy ?
+ messages_get("Yes") : messages_get("No"));
old_text = tree_node_element_get_text(element);
if (old_text == NULL || strcmp(old_text, buffer) != 0) {
text = strdup(buffer);
@@ -467,73 +325,195 @@
return false;
}
tree_update_node_element(cookies_tree, element, text,
- NULL);
- }
- }
-
+ NULL);
+ }
+ }
+
return node;
}
-
-/**
- * Callback for all cookie tree nodes.
- */
-node_callback_resp cookies_node_callback(void *user_data, struct node_msg_data *msg_data)
-{
- struct node *node = msg_data->node;
- struct node_element *domain, *path;
- const char *domain_t, *path_t, *name_t;
- char *space;
- bool folder = tree_node_is_folder(node);
-
- /* we don't remove any icons here */
- if (msg_data->msg == NODE_DELETE_ELEMENT_IMG)
- return NODE_CALLBACK_HANDLED;
-
- /* let the tree handle events other than text data removal */
- if (msg_data->msg != NODE_DELETE_ELEMENT_TXT)
- return NODE_CALLBACK_NOT_HANDLED;
-
- /* check if it's a domain folder */
- if (folder)
- return NODE_CALLBACK_NOT_HANDLED;
-
- switch (msg_data->flag) {
- case TREE_ELEMENT_TITLE:
- if (!user_delete)
- break;
- /* get the rest of the cookie data */
- domain = tree_node_find_element(node,
- TREE_ELEMENT_DOMAIN, NULL);
- path = tree_node_find_element(node, TREE_ELEMENT_PATH,
- NULL);
-
- if (domain != NULL && path != NULL) {
- domain_t = tree_node_element_get_text(domain) +
- strlen(messages_get(
- "TreeDomain")) - 4;
- space = strchr(domain_t, ' ');
- if (space)
- *space = '\0';
- path_t = tree_node_element_get_text(path) +
- strlen(messages_get("TreePath"))
- - 4;
- space = strchr(path_t, ' ');
- if (space)
- *space = '\0';
- name_t = msg_data->data.text;
- urldb_delete_cookie(domain_t, path_t, name_t);
- }
- break;
- default:
- break;
- }
-
- free(msg_data->data.text);
-
- return NODE_CALLBACK_HANDLED;
-}
-
+/**
+ * Creates an empty tree entry for a cookie, and links it into the tree.
+ *
+ * All information is copied from the cookie_data, and as such can
+ * be edited and should be freed.
+ *
+ * \param parent the node to link to
+ * \param data the cookie data to use
+ * \return the node created, or NULL for failure
+ */
+static struct node *cookies_create_cookie_node(struct node *parent,
+ const struct cookie_data *data)
+{
+ struct node *node;
+ char *name;
+
+ name = strdup(data->name);
+ if (name == NULL) {
+ LOG(("malloc failed"));
+ warn_user("NoMemory", 0);
+ return NULL;
+ }
+
+ node = tree_create_leaf_node(cookies_tree, NULL, name,
+ false, false, false);
+ if (node == NULL) {
+ free(name);
+ return NULL;
+ }
+
+ tree_set_node_user_callback(node, cookies_node_callback, NULL);
+
+ tree_create_node_element(node, NODE_ELEMENT_TEXT,
+ TREE_ELEMENT_PERSISTENT, false);
+
+ tree_create_node_element(node, NODE_ELEMENT_TEXT,
+ TREE_ELEMENT_VERSION, false);
+
+ tree_create_node_element(node, NODE_ELEMENT_TEXT,
+ TREE_ELEMENT_SECURE, false);
+
+ tree_create_node_element(node, NODE_ELEMENT_TEXT,
+ TREE_ELEMENT_LAST_USED, false);
+
+ tree_create_node_element(node, NODE_ELEMENT_TEXT,
+ TREE_ELEMENT_EXPIRES, false);
+
+ tree_create_node_element(node, NODE_ELEMENT_TEXT,
+ TREE_ELEMENT_PATH, false);
+
+ tree_create_node_element(node, NODE_ELEMENT_TEXT,
+ TREE_ELEMENT_DOMAIN, false);
+
+ if ((data->comment) && (strcmp(data->comment, "")))
+ tree_create_node_element(node, NODE_ELEMENT_TEXT,
+ TREE_ELEMENT_COMMENT, false);
+ tree_create_node_element(node, NODE_ELEMENT_TEXT,
+ TREE_ELEMENT_VALUE, false);
+ tree_set_node_icon(cookies_tree, node, cookie_icon);
+
+ if (!cookies_update_cookie_node(node, data))
+ {
+ tree_delete_node(NULL, node, false);
+ return NULL;
+ }
+
+ tree_link_node(cookies_tree, parent, node, false);
+ return node;
+}
+
+
+/**
+ * Called when scheduled event gets fired. Actually performs the update.
+ */
+static void cookies_schedule_callback(void *scheduled_data)
+{
+ const struct cookie_data *data = scheduled_data;
+ struct node *node = NULL;
+ struct node *cookie_node = NULL;
+ char *domain_cp;
+
+ assert(data != NULL);
+
+ node = cookies_find(cookies_tree_root, data->domain);
+
+ if (node == NULL) {
+ domain_cp = strdup(data->domain);
+ if (domain_cp == NULL) {
+ LOG(("malloc failed"));
+ warn_user("NoMemory", 0);
+ return;
+ }
+ node = tree_create_folder_node(cookies_tree,
+ cookies_tree_root, domain_cp,
+ false, false, false);
+ if (node != NULL) {
+ tree_set_node_user_callback(node, cookies_node_callback,
+ NULL);
+ tree_set_node_icon(cookies_tree, node, folder_icon);
+ }
+ }
+
+ if (node == NULL)
+ return;
+
+ cookie_node = cookies_find(node, data->name);
+ if (cookie_node == NULL)
+ cookies_create_cookie_node(node, data);
+ else
+ cookies_update_cookie_node(cookie_node, data);
+
+ return;
+}
+
+/**
+ * Initialises cookies tree.
+ *
+ * \param data user data for the callbacks
+ * \param start_redraw callback function called before every redraw
+ * \param end_redraw callback function called after every redraw
+ * \return true on success, false on memory exhaustion
+ */
+bool cookies_initialise(struct tree *tree)
+{
+
+ if (tree == NULL)
+ return false;
+
+ folder_icon = tree_load_icon(tree_directory_icon_name);
+ cookie_icon = tree_load_icon(tree_content_icon_name);
+
+ /* Create an empty tree */
+ cookies_tree = tree;
+ cookies_tree_root = tree_get_root(cookies_tree);
+
+ user_delete = false;
+ urldb_iterate_cookies(cookies_schedule_update);
+ tree_set_node_expanded(cookies_tree, cookies_tree_root,
+ true, true, true);
+
+ return true;
+}
+
+
+/**
+ * Get flags with which the cookies tree should be created;
+ *
+ * \return the flags
+ */
+unsigned int cookies_get_tree_flags(void)
+{
+ return TREE_DELETE_EMPTY_DIRS;
+}
+
+
+/* exported interface documented in cookies.h */
+bool cookies_schedule_update(const struct cookie_data *data)
+{
+ assert(data != NULL);
+ assert(user_delete == false);
+
+ schedule(100, cookies_schedule_callback, (void *)data);
+
+ return true;
+}
+
+
+/* exported interface documented in cookies.h */
+void cookies_remove(const struct cookie_data *data)
+{
+ assert(data == NULL);
+
+ schedule_remove(cookies_schedule_callback, (void *)data);
+}
+
+
+/**
+ * Free memory and release all other resources.
+ */
+void cookies_cleanup(void)
+{
+}
/* Actions to be connected to front end specific toolbars */
@@ -555,12 +535,12 @@
bool redraw = tree_get_redraw(cookies_tree);
if (redraw)
tree_set_redraw(cookies_tree, false);
-
+
user_delete = true;
tree_set_node_selected(cookies_tree, cookies_tree_root, true, true);
tree_delete_selected_nodes(cookies_tree, cookies_tree_root);
user_delete = false;
-
+
if (redraw)
tree_set_redraw(cookies_tree, true);
}
@@ -587,7 +567,7 @@
void cookies_expand_all(void)
{
tree_set_node_expanded(cookies_tree, cookies_tree_root,
- true, true, true);
+ true, true, true);
}
/**
@@ -596,7 +576,7 @@
void cookies_expand_domains(void)
{
tree_set_node_expanded(cookies_tree, cookies_tree_root,
- true, true, false);
+ true, true, false);
}
/**
@@ -605,7 +585,7 @@
void cookies_expand_cookies(void)
{
tree_set_node_expanded(cookies_tree, cookies_tree_root,
- true, false, true);
+ true, false, true);
}
/**
@@ -614,7 +594,7 @@
void cookies_collapse_all(void)
{
tree_set_node_expanded(cookies_tree, cookies_tree_root,
- false, true, true);
+ false, true, true);
}
/**
@@ -623,7 +603,7 @@
void cookies_collapse_domains(void)
{
tree_set_node_expanded(cookies_tree, cookies_tree_root,
- false, true, false);
+ false, true, false);
}
/**
@@ -632,5 +612,5 @@
void cookies_collapse_cookies(void)
{
tree_set_node_expanded(cookies_tree, cookies_tree_root,
- false, false, true);
-}
+ false, false, true);
+}
Modified: branches/jmb/treeview-redux/desktop/cookies.h
URL: http://source.netsurf-browser.org/branches/jmb/treeview-redux/desktop/coo...
==============================================================================
--- branches/jmb/treeview-redux/desktop/cookies.h (original)
+++ branches/jmb/treeview-redux/desktop/cookies.h Sun Sep 26 05:58:12 2010
@@ -31,8 +31,25 @@
bool cookies_initialise(struct tree *tree);
unsigned int cookies_get_tree_flags(void);
-bool cookies_update(const struct cookie_data *data);
-void cookies_delete(const struct cookie_data *data);
+
+/**
+ * Perform cookie updates and addition. The update is only scheduled here.
+ * The actual update is performed in the callback function.
+ *
+ * \param data Data of cookie being updated.
+ * \return true (for urldb_iterate_entries)
+ */
+bool cookies_schedule_update(const struct cookie_data *data);
+
+/**
+ * Remove a cookie from the active set.
+ * The cookie is to be removed from the active set and no futher
+ * references made to the cookie data.
+ *
+ * \param data Data of cookie being removed.
+ */
+void cookies_remove(const struct cookie_data *data);
+
void cookies_cleanup(void);
void cookies_delete_selected(void);
Modified: branches/jmb/treeview-redux/desktop/sslcert.c
URL: http://source.netsurf-browser.org/branches/jmb/treeview-redux/desktop/ssl...
==============================================================================
--- branches/jmb/treeview-redux/desktop/sslcert.c (original)
+++ branches/jmb/treeview-redux/desktop/sslcert.c Sun Sep 26 05:58:12 2010
@@ -37,7 +37,7 @@
#include "utils/utils.h"
/** Flags for each type of ssl tree node. */
-enum tree_element_ssl{
+enum tree_element_ssl {
TREE_ELEMENT_SSL_VERSION = 0x01,
TREE_ELEMENT_SSL_VALID_FROM = 0x02,
TREE_ELEMENT_SSL_VALID_TO = 0x03,
13 years
r10843 vince - /branches/jmb/treeview-redux/desktop/history_global_core.c
by netsurf@semichrome.net
Author: vince
Date: Sat Sep 25 18:49:29 2010
New Revision: 10843
URL: http://source.netsurf-browser.org?rev=10843&view=rev
Log:
address some review comments
Modified:
branches/jmb/treeview-redux/desktop/history_global_core.c
Modified: branches/jmb/treeview-redux/desktop/history_global_core.c
URL: http://source.netsurf-browser.org/branches/jmb/treeview-redux/desktop/his...
==============================================================================
--- branches/jmb/treeview-redux/desktop/history_global_core.c (original)
+++ branches/jmb/treeview-redux/desktop/history_global_core.c Sat Sep 25 18:49:29 2010
@@ -16,10 +16,10 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-
-
+
+
#include <stdlib.h>
-
+
#include "content/content.h"
#include "content/hlcache.h"
#include "content/urldb.h"
@@ -44,23 +44,14 @@
static int global_history_base_node_time[MAXIMUM_BASE_NODES];
static int global_history_base_node_count = 0;
-static bool global_history_init;
-
+static bool global_history_initialised;
+
static struct tree *global_history_tree;
static struct node *global_history_tree_root;
static hlcache_handle *folder_icon;
-static bool history_global_initialise_nodes(void);
-static bool history_global_initialise_node(const char *title,
- time_t base, int days_back);
-static bool global_history_add_internal(const char *url,
- const struct url_data *data);
-static struct node *history_global_find(const char *url);
-static node_callback_resp history_global_node_callback(void *user_data,
- struct node_msg_data *msg_data);
-
-static const char *const weekdays [] =
+static const char *const weekday_msg_name [] =
{
"Sunday",
"Monday",
@@ -72,55 +63,158 @@
};
/**
- * Initialises the global history tree.
- *
- * \param data user data for the callbacks
- * \param start_redraw callback function called before every redraw
- * \param end_redraw callback function called after every redraw
- * \return true on success, false on memory exhaustion
- */
-bool history_global_initialise(struct tree *tree)
-{
- struct node *first;
-
-
- folder_icon = tree_load_icon(tree_directory_icon_name);
- tree_url_node_init();
-
- if (tree == NULL)
- return false;
-
- global_history_tree = tree;
- global_history_tree_root = tree_get_root(global_history_tree);
-
-
- if (!history_global_initialise_nodes())
- return false;
-
- global_history_init = true;
- urldb_iterate_entries(global_history_add_internal);
- global_history_init = false;
- tree_set_node_expanded(global_history_tree, global_history_tree_root,
- false, true, true);
- first = tree_node_get_child(global_history_tree_root);
- if (first != NULL)
- tree_set_node_expanded(global_history_tree, first,
- true, false, false);
-
+ * Find an entry in the global history
+ *
+ * \param url The URL to find
+ * \return Pointer to node, or NULL if not found
+ */
+static struct node *history_global_find(const char *url)
+{
+ int i;
+ struct node *node;
+ const char *text;
+
+ for (i = 0; i < global_history_base_node_count; i++) {
+ if (!tree_node_is_deleted(global_history_base_node[i])) {
+ node = tree_node_get_child(global_history_base_node[i]);
+ for (; node != NULL; node = tree_node_get_next(node)) {
+ text = tree_url_node_get_url(node);
+ if ((text != NULL) && !strcmp(url, text))
+ return node;
+ }
+ }
+ }
+ return NULL;
+}
+
+/**
+ * Internal routine to actually perform global history addition
+ *
+ * \param url The URL to add
+ * \param data URL data associated with URL
+ * \return true (for urldb_iterate_entries)
+ */
+static bool global_history_add_internal(const char *url,
+ const struct url_data *data)
+{
+ int i, j;
+ struct node *parent = NULL;
+ struct node *link;
+ struct node *node;
+ bool before = false;
+ int visit_date;
+
+ assert((url != NULL) && (data != NULL));
+
+ visit_date = data->last_visit;
+
+ /* find parent node */
+ for (i = 0; i < global_history_base_node_count; i++) {
+ if (global_history_base_node_time[i] <= visit_date) {
+ parent = global_history_base_node[i];
+ break;
+ }
+ }
+
+ /* the entry is too old to care about */
+ if (parent == NULL)
+ return true;
+
+ if (tree_node_is_deleted(parent)) {
+ /* parent was deleted, so find place to insert it */
+ link = global_history_tree_root;
+
+ for (j = global_history_base_node_count - 1; j >= 0; j--) {
+ if (!tree_node_is_deleted(global_history_base_node[j]) &&
+ global_history_base_node_time[j] >
+ global_history_base_node_time[i]) {
+ link = global_history_base_node[j];
+ before = true;
+ break;
+ }
+ }
+
+ tree_set_node_selected(global_history_tree,
+ parent, true, false);
+ tree_set_node_expanded(global_history_tree,
+ parent, false, true, true);
+ tree_link_node(global_history_tree, link, parent, before);
+ }
+
+ /* find any previous occurance */
+ if (global_history_initialised == false) {
+ node = history_global_find(url);
+ if (node != NULL) {
+ tree_update_URL_node(global_history_tree,
+ node, url, data, true);
+ tree_delink_node(global_history_tree, node);
+ tree_link_node(global_history_tree, parent, node,
+ false);
+ return true;
+ }
+ }
+
+ /* Add the node at the bottom */
+ node = tree_create_URL_node_shared(global_history_tree,
+ parent, url, data,
+ tree_url_node_callback, NULL);
+
return true;
}
-
-/**
- * Get flags with which the global history tree should be created;
- *
- * \return the flags
- */
-unsigned int history_global_get_tree_flags(void)
-{
- return TREE_NO_FLAGS;
-}
-
+static node_callback_resp
+history_global_node_callback(void *user_data,
+ struct node_msg_data *msg_data)
+{
+ if (msg_data->msg == NODE_DELETE_ELEMENT_IMG)
+ return NODE_CALLBACK_HANDLED;
+ return NODE_CALLBACK_NOT_HANDLED;
+}
+
+/**
+ * Initialises a single grouping node for the global history tree.
+ *
+ * \return false on memory exhaustion, true otherwise
+ */
+static bool history_global_initialise_node(const char *title,
+ time_t base, int days_back)
+{
+ struct tm *full_time;
+ char *buffer;
+ struct node *node;
+
+ base += days_back * 60 * 60 * 24;
+ if (title == NULL) {
+ full_time = localtime(&base);
+ buffer = strdup(messages_get(weekday_msg_name[full_time->tm_wday]));
+ } else {
+ buffer = strdup(title);
+ }
+
+ if (buffer == NULL) {
+ LOG(("malloc failed"));
+ warn_user("NoMemory", 0);
+ return false;
+ }
+
+ node = tree_create_folder_node(NULL, NULL, buffer,
+ false, true, true);
+ if (node == NULL) {
+ LOG(("malloc failed"));
+ warn_user("NoMemory", 0);
+ free(buffer);
+ return false;
+ }
+ if (folder_icon != NULL)
+ tree_set_node_icon(global_history_tree, node, folder_icon);
+ tree_set_node_user_callback(node, history_global_node_callback, NULL);
+
+ global_history_base_node[global_history_base_node_count] = node;
+ global_history_base_node_time[global_history_base_node_count] = base;
+ global_history_base_node_count++;
+
+ return true;
+}
/**
* Initialises the grouping nodes(Today, Yesterday etc.) for the global history
@@ -128,7 +222,7 @@
*
* \return false on memory exhaustion, true otherwise
*/
-bool history_global_initialise_nodes(void)
+static bool history_global_initialise_nodes(void)
{
struct tm *full_time;
time_t t;
@@ -157,70 +251,74 @@
history_global_initialise_node(messages_get("DateToday"), t, 0);
if (weekday > 0)
if (!history_global_initialise_node(
- messages_get("DateYesterday"), t, -1))
+ messages_get("DateYesterday"), t, -1))
return false;
for (i = 2; i <= weekday; i++)
if (!history_global_initialise_node(NULL, t, -i))
return false;
-
+
if (!history_global_initialise_node(messages_get("Date1Week"),
- t, -weekday - 7))
+ t, -weekday - 7))
return false;
if (!history_global_initialise_node(messages_get("Date2Week"),
- t, -weekday - 14))
+ t, -weekday - 14))
return false;
if (!history_global_initialise_node(messages_get("Date3Week"),
- t, -weekday - 21))
- return false;
-
+ t, -weekday - 21))
+ return false;
+
return true;
}
-
-/**
- * Initialises a single grouping node for the global history tree.
- *
- * \return false on memory exhaustion, true otherwise
- */
-bool history_global_initialise_node(const char *title,
- time_t base, int days_back)
-{
- struct tm *full_time;
- char *buffer;
- struct node *node;
-
- base += days_back * 60 * 60 * 24;
- if (title == NULL) {
- full_time = localtime(&base);
- buffer = strdup(messages_get(weekdays[full_time->tm_wday]));
- } else
- buffer = strdup(title);
-
- if (buffer == NULL) {
- LOG(("malloc failed"));
- warn_user("NoMemory", 0);
- return false;
- }
-
- node = tree_create_folder_node(NULL, NULL, buffer,
- false, true, true);
- if (node == NULL) {
- LOG(("malloc failed"));
- warn_user("NoMemory", 0);
- free(buffer);
- return false;
- }
- if (folder_icon != NULL)
- tree_set_node_icon(global_history_tree, node, folder_icon);
- tree_set_node_user_callback(node, history_global_node_callback, NULL);
-
- global_history_base_node[global_history_base_node_count] = node;
- global_history_base_node_time[global_history_base_node_count] = base;
- global_history_base_node_count++;
-
+/**
+ * Initialises the global history tree.
+ *
+ * \param data user data for the callbacks
+ * \param start_redraw callback function called before every redraw
+ * \param end_redraw callback function called after every redraw
+ * \return true on success, false on memory exhaustion
+ */
+bool history_global_initialise(struct tree *tree)
+{
+ struct node *first;
+
+ folder_icon = tree_load_icon(tree_directory_icon_name);
+ tree_url_node_init();
+
+ if (tree == NULL)
+ return false;
+
+ global_history_tree = tree;
+ global_history_tree_root = tree_get_root(global_history_tree);
+
+ if (!history_global_initialise_nodes())
+ return false;
+
+ global_history_initialised = true;
+ urldb_iterate_entries(global_history_add_internal);
+ global_history_initialised = false;
+ tree_set_node_expanded(global_history_tree, global_history_tree_root,
+ false, true, true);
+ first = tree_node_get_child(global_history_tree_root);
+ if (first != NULL)
+ tree_set_node_expanded(global_history_tree, first,
+ true, false, false);
+
return true;
}
+
+/**
+ * Get flags with which the global history tree should be created;
+ *
+ * \return the flags
+ */
+unsigned int history_global_get_tree_flags(void)
+{
+ return TREE_NO_FLAGS;
+}
+
+
/**
* Deletes the global history tree.
*/
@@ -239,121 +337,13 @@
const struct url_data *data;
data = urldb_get_url_data(url);
- if (!data)
+ if (data == NULL)
return;
global_history_add_internal(url, data);
}
-/**
- * Internal routine to actually perform global history addition
- *
- * \param url The URL to add
- * \param data URL data associated with URL
- * \return true (for urldb_iterate_entries)
- */
-bool global_history_add_internal(const char *url, const struct url_data *data)
-{
- int i, j;
- struct node *parent = NULL;
- struct node *link;
- struct node *node;
- bool before = false;
- int visit_date;
-
- assert(url && data);
-
- visit_date = data->last_visit;
-
- /* find parent node */
- for (i = 0; i < global_history_base_node_count; i++) {
- if (global_history_base_node_time[i] <= visit_date) {
- parent = global_history_base_node[i];
- break;
- }
- }
-
- /* the entry is too old to care about */
- if (!parent)
- return true;
-
- if (tree_node_is_deleted(parent)) {
- /* parent was deleted, so find place to insert it */
- link = global_history_tree_root;
-
- for (j = global_history_base_node_count - 1; j >= 0; j--) {
- if (!tree_node_is_deleted(global_history_base_node[j])
- && global_history_base_node_time[j] >
- global_history_base_node_time[i]) {
- link = global_history_base_node[j];
- before = true;
- break;
- }
- }
-
- tree_set_node_selected(global_history_tree,
- parent, true, false);
- tree_set_node_expanded(global_history_tree,
- parent, false, true, true);
- tree_link_node(global_history_tree, link, parent, before);
- }
-
- /* find any previous occurance */
- if (!global_history_init) {
- node = history_global_find(url);
- if (node) {
- tree_update_URL_node(global_history_tree,
- node, url, data, true);
- tree_delink_node(global_history_tree, node);
- tree_link_node(global_history_tree, parent, node,
- false);
- return true;
- }
- }
-
- /* Add the node at the bottom */
- node = tree_create_URL_node_shared(global_history_tree,
- parent, url, data, tree_url_node_callback, NULL);
-
- return true;
-}
-
-
-/**
- * Find an entry in the global history
- *
- * \param url The URL to find
- * \return Pointer to node, or NULL if not found
- */
-struct node *history_global_find(const char *url)
-{
- int i;
- struct node *node;
- const char *text;
-
- for (i = 0; i < global_history_base_node_count; i++) {
- if (!tree_node_is_deleted(global_history_base_node[i])) {
- node = tree_node_get_child(global_history_base_node[i]);
- for (; node != NULL; node = tree_node_get_next(node)) {
- text = tree_url_node_get_url(node);
- if ((text != NULL) && !strcmp(url, text))
- return node;
- }
- }
- }
- return NULL;
-}
-
-
-node_callback_resp history_global_node_callback(void *user_data,
- struct node_msg_data *msg_data)
-{
- if (msg_data->msg == NODE_DELETE_ELEMENT_IMG)
- return NODE_CALLBACK_HANDLED;
- return NODE_CALLBACK_NOT_HANDLED;
-}
-
/* Actions to be connected to front end specific toolbars */
/**
@@ -372,7 +362,7 @@
void history_global_delete_selected(void)
{
tree_delete_selected_nodes(global_history_tree,
- global_history_tree_root);
+ global_history_tree_root);
}
/**
@@ -380,16 +370,16 @@
*/
void history_global_delete_all(void)
{
- bool redraw = tree_get_redraw(global_history_tree);
- if (redraw)
+ bool redraw_needed = tree_get_redraw(global_history_tree);
+ if (redraw_needed)
tree_set_redraw(global_history_tree, false);
-
+
tree_set_node_selected(global_history_tree, global_history_tree_root,
- true, true);
+ true, true);
tree_delete_selected_nodes(global_history_tree,
- global_history_tree_root);
-
- if (redraw)
+ global_history_tree_root);
+
+ if (redraw_needed)
tree_set_redraw(global_history_tree, true);
}
@@ -399,7 +389,7 @@
void history_global_select_all(void)
{
tree_set_node_selected(global_history_tree, global_history_tree_root,
- true, true);
+ true, true);
}
/**
@@ -408,7 +398,7 @@
void history_global_clear_selection(void)
{
tree_set_node_selected(global_history_tree, global_history_tree_root,
- true, false);
+ true, false);
}
/**
@@ -417,7 +407,7 @@
void history_global_expand_all(void)
{
tree_set_node_expanded(global_history_tree, global_history_tree_root,
- true, true, true);
+ true, true, true);
}
/**
@@ -426,7 +416,7 @@
void history_global_expand_directories(void)
{
tree_set_node_expanded(global_history_tree, global_history_tree_root,
- true, true, false);
+ true, true, false);
}
/**
@@ -435,7 +425,7 @@
void history_global_expand_addresses(void)
{
tree_set_node_expanded(global_history_tree, global_history_tree_root,
- true, false, true);
+ true, false, true);
}
/**
@@ -444,7 +434,7 @@
void history_global_collapse_all(void)
{
tree_set_node_expanded(global_history_tree, global_history_tree_root,
- false, true, true);
+ false, true, true);
}
/**
@@ -453,7 +443,7 @@
void history_global_collapse_directories(void)
{
tree_set_node_expanded(global_history_tree, global_history_tree_root,
- false, true, false);
+ false, true, false);
}
/**
@@ -462,7 +452,7 @@
void history_global_collapse_addresses(void)
{
tree_set_node_expanded(global_history_tree, global_history_tree_root,
- false, false, true);
+ false, false, true);
}
/**
13 years
r10842 vince - in /branches/jmb/treeview-redux/desktop: history_global_core.c hotlist.c tree_url_node.c tree_url_node.h
by netsurf@semichrome.net
Author: vince
Date: Sat Sep 25 18:09:38 2010
New Revision: 10842
URL: http://source.netsurf-browser.org?rev=10842&view=rev
Log:
fix review comments in hotlist
Modified:
branches/jmb/treeview-redux/desktop/history_global_core.c
branches/jmb/treeview-redux/desktop/hotlist.c
branches/jmb/treeview-redux/desktop/tree_url_node.c
branches/jmb/treeview-redux/desktop/tree_url_node.h
Modified: branches/jmb/treeview-redux/desktop/history_global_core.c
URL: http://source.netsurf-browser.org/branches/jmb/treeview-redux/desktop/his...
==============================================================================
--- branches/jmb/treeview-redux/desktop/history_global_core.c (original)
+++ branches/jmb/treeview-redux/desktop/history_global_core.c Sat Sep 25 18:09:38 2010
@@ -363,7 +363,7 @@
*/
bool history_global_export(const char *path)
{
- return tree_url_save(global_history_tree, path, "NetSurf history");
+ return tree_urlfile_save(global_history_tree, path, "NetSurf history");
}
/**
Modified: branches/jmb/treeview-redux/desktop/hotlist.c
URL: http://source.netsurf-browser.org/branches/jmb/treeview-redux/desktop/hot...
==============================================================================
--- branches/jmb/treeview-redux/desktop/hotlist.c (original)
+++ branches/jmb/treeview-redux/desktop/hotlist.c Sat Sep 25 18:09:38 2010
@@ -16,10 +16,10 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-
-#include <ctype.h>
+
+#include <ctype.h>
#include <stdlib.h>
-
+
#include "content/content.h"
#include "content/hlcache.h"
#include "content/urldb.h"
@@ -34,7 +34,7 @@
#include "utils/log.h"
#define URL_CHUNK_LENGTH 512
-
+
static struct tree *hotlist_tree;
static struct node *hotlist_tree_root;
@@ -44,97 +44,143 @@
static const struct {
const char *url;
const char *msg_key;
-} default_entries[] = {
+} hotlist_default_entries[] = {
{ "http://www.netsurf-browser.org/", "HotlistHomepage" },
{ "http://www.netsurf-browser.org/downloads/riscos/testbuilds",
- "HotlistTestBuild" },
+ "HotlistTestBuild" },
{ "http://www.netsurf-browser.org/documentation",
- "HotlistDocumentation" },
+ "HotlistDocumentation" },
{ "http://sourceforge.net/tracker/?atid=464312&group_id=51719",
- "HotlistBugTracker" },
+ "HotlistBugTracker" },
{ "http://sourceforge.net/tracker/?atid=464315&group_id=51719",
- "HotlistFeatureRequest" }
+ "HotlistFeatureRequest" }
};
-#define ENTRIES_COUNT (sizeof(default_entries) / sizeof(default_entries[0]))
-
-
-static void hotlist_visited_internal(hlcache_handle *content,
- struct node *node);
+#define HOTLIST_ENTRIES_COUNT (sizeof(hotlist_default_entries) / sizeof(hotlist_default_entries[0]))
+
static node_callback_resp hotlist_node_callback(void *user_data,
- struct node_msg_data *msg_data);
+ struct node_msg_data *msg_data)
+{
+ struct node *node = msg_data->node;
+ const char *text;
+ char *norm_text;
+ bool is_folder = tree_node_is_folder(node);
+
+ switch (msg_data->msg) {
+ case NODE_ELEMENT_EDIT_FINISHED:
+ if (creating_node &&
+ (is_folder == false) &&
+ (msg_data->flag == TREE_ELEMENT_TITLE)) {
+ tree_url_node_edit_url(hotlist_tree, node);
+ } else {
+ creating_node = false;
+ }
+ return NODE_CALLBACK_HANDLED;
+
+ case NODE_ELEMENT_EDIT_FINISHING:
+ if (creating_node && (is_folder == false))
+ return tree_url_node_callback(hotlist_tree, msg_data);
+
+ if (is_folder == true) {
+ text = msg_data->data.text;
+ while (isspace(*text))
+ text++;
+ norm_text = strdup(text);
+ if (norm_text == NULL) {
+ LOG(("malloc failed"));
+ warn_user("NoMemory", 0);
+ return NODE_CALLBACK_REJECT;
+ }
+ /* don't allow zero length entry text, return false */
+ if (norm_text[0] == '\0') {
+ warn_user("NoNameError", 0);
+ msg_data->data.text = NULL;
+ return NODE_CALLBACK_CONTINUE;
+ }
+ msg_data->data.text = norm_text;
+ }
+ break;
+
+ case NODE_DELETE_ELEMENT_IMG:
+ return NODE_CALLBACK_HANDLED;
+
+ default:
+ if (is_folder == false)
+ return tree_url_node_callback(hotlist_tree, msg_data);
+ }
+
+ return NODE_CALLBACK_NOT_HANDLED;
+}
+
bool hotlist_initialise(struct tree *tree, const char *hotlist_path)
{
- FILE *fp = NULL;
struct node *node;
const struct url_data *url_data;
char *name;
-
+ int hlst_loop;
+
/* Either load or create a hotlist */
-
+
creating_node = false;
-
+
folder_icon = tree_load_icon(tree_directory_icon_name);
-
+
tree_url_node_init();
-
+
if (tree == NULL)
return false;
-
+
hotlist_tree = tree;
hotlist_tree_root = tree_get_root(hotlist_tree);
-
- if (hotlist_path != NULL)
- fp = fopen(hotlist_path, "r");
- if (fp == NULL) {
- int i;
-
- name = strdup("NetSurf");
- if (name == NULL) {
- LOG(("malloc failed"));
- warn_user("NoMemory", 0);
- return false;
- }
- node = tree_create_folder_node(hotlist_tree, hotlist_tree_root,
- name, true, false, false);
-
- if (node == NULL) {
- free(name);
- return false;
- }
- /* 1 indicates this is a folder */
- tree_set_node_user_callback(node, hotlist_node_callback, NULL);
- tree_set_node_icon(hotlist_tree, node, folder_icon);
-
- for (i = 0; i != ENTRIES_COUNT; i++) {
- url_data = urldb_get_url_data(default_entries[i].url);
- if (url_data == NULL) {
- urldb_add_url(default_entries[i].url);
- urldb_set_url_persistence(
- default_entries[i].url,
- true);
- url_data = urldb_get_url_data(
- default_entries[i].url);
- }
- if (url_data != NULL) {
- tree_create_URL_node(hotlist_tree, node,
- default_entries[i].url,
- messages_get(
- default_entries[i].msg_key),
+
+ if (tree_urlfile_load(hotlist_path,
+ hotlist_tree,
+ hotlist_node_callback,
+ NULL)) {
+ return true;
+ }
+
+
+ /* failed to load hotlist file, use default list */
+ name = strdup("NetSurf");
+ if (name == NULL) {
+ LOG(("malloc failed"));
+ warn_user("NoMemory", 0);
+ return false;
+ }
+ node = tree_create_folder_node(hotlist_tree, hotlist_tree_root,
+ name, true, false, false);
+ if (node == NULL) {
+ free(name);
+ return false;
+ }
+
+ tree_set_node_user_callback(node, hotlist_node_callback, NULL);
+ tree_set_node_icon(hotlist_tree, node, folder_icon);
+
+ for (hlst_loop = 0; hlst_loop != HOTLIST_ENTRIES_COUNT; hlst_loop++) {
+ url_data = urldb_get_url_data(hotlist_default_entries[hlst_loop].url);
+ if (url_data == NULL) {
+ urldb_add_url(hotlist_default_entries[hlst_loop].url);
+ urldb_set_url_persistence(
+ hotlist_default_entries[hlst_loop].url,
+ true);
+ url_data = urldb_get_url_data(
+ hotlist_default_entries[hlst_loop].url);
+ }
+ if (url_data != NULL) {
+ tree_create_URL_node(hotlist_tree, node,
+ hotlist_default_entries[hlst_loop].url,
+ messages_get(hotlist_default_entries[hlst_loop].msg_key),
hotlist_node_callback, NULL);
- tree_update_URL_node(hotlist_tree, node,
- default_entries[i].url,
- url_data, false);
- }
- }
- } else {
- fclose(fp);
- if (!tree_url_load(hotlist_path, hotlist_tree,
- hotlist_node_callback, NULL))
- return false;
- }
-
-
+ tree_update_URL_node(hotlist_tree, node,
+ hotlist_default_entries[hlst_loop].url,
+ url_data, false);
+ }
+ }
+
+
+
return true;
}
@@ -161,31 +207,20 @@
/**
- * Informs the hotlist that some content has been visited
- *
- * \param content the content visited
- */
-void hotlist_visited(hlcache_handle *content)
-{
- if (hotlist_tree)
- hotlist_visited_internal(content, tree_get_root(hotlist_tree));
-}
-
-
-/**
* Informs the hotlist that some content has been visited. Internal procedure.
*
* \param content the content visited
* \param node the node to update siblings and children of
*/
-void hotlist_visited_internal(hlcache_handle *content, struct node *node)
+static void hotlist_visited_internal(hlcache_handle *content, struct node *node)
{
struct node *child;
const char *text;
const char *url;
-
- if (content == NULL || content_get_url(content) == NULL ||
- hotlist_tree == NULL)
+
+ if (content == NULL ||
+ content_get_url(content) == NULL ||
+ hotlist_tree == NULL)
return;
url = content_get_url(content);
@@ -193,70 +228,29 @@
for (; node; node = tree_node_get_next(node)) {
if (!tree_node_is_folder(node)) {
text = tree_url_node_get_url(node);
- if (!strcmp(text, url))
+ if (strcmp(text, url) == 0) {
tree_update_URL_node(hotlist_tree, node,
- url, NULL, false);
+ url, NULL, false);
+ }
}
child = tree_node_get_child(node);
- if (child != NULL)
+ if (child != NULL) {
hotlist_visited_internal(content, child);
- }
-}
-
-
-node_callback_resp hotlist_node_callback(void *user_data, struct node_msg_data *msg_data)
-{
- struct node *node = msg_data->node;
- const char *text;
- char *norm_text;
- bool folder = tree_node_is_folder(node);
-
- switch (msg_data->msg) {
- case NODE_ELEMENT_EDIT_FINISHED:
- if (creating_node && !folder &&
- msg_data->flag == TREE_ELEMENT_TITLE) {
- tree_url_node_edit_url(hotlist_tree, node);
- }
- else
- creating_node = false;
- return NODE_CALLBACK_HANDLED;
- case NODE_ELEMENT_EDIT_FINISHING:
- if (creating_node && !folder)
- return tree_url_node_callback(hotlist_tree,
- msg_data);
-
- if (folder) {
- text = msg_data->data.text;
- while (isspace(*text))
- text++;
- norm_text = strdup(text);
- if (norm_text == NULL) {
- LOG(("malloc failed"));
- warn_user("NoMemory", 0);
- return NODE_CALLBACK_REJECT;
- }
- /* don't allow zero length entry text, return
- false */
- if (norm_text[0] == '\0') {
- warn_user("NoNameError", 0);
- msg_data->data.text = NULL;
- return NODE_CALLBACK_CONTINUE;
- }
- msg_data->data.text = norm_text;
- }
- break;
- case NODE_DELETE_ELEMENT_IMG:
- return NODE_CALLBACK_HANDLED;
- default:
- if (!folder)
- return tree_url_node_callback(hotlist_tree,
- msg_data);
- }
-
- return NODE_CALLBACK_NOT_HANDLED;
-}
-
-
+ }
+ }
+}
+
+/**
+ * Informs the hotlist that some content has been visited
+ *
+ * \param content the content visited
+ */
+void hotlist_visited(hlcache_handle *content)
+{
+ if (hotlist_tree != NULL) {
+ hotlist_visited_internal(content, tree_get_root(hotlist_tree));
+ }
+}
/**
* Save the hotlist in a human-readable form under the given location.
@@ -265,7 +259,7 @@
*/
bool hotlist_export(const char *path)
{
- return tree_url_save(hotlist_tree, path, "NetSurf hotlist");
+ return tree_urlfile_save(hotlist_tree, path, "NetSurf hotlist");
}
/**
@@ -276,13 +270,12 @@
{
struct node *node;
struct node_element *element;
-
+
node = tree_get_selected_node(hotlist_tree_root);
-
+
if (node != NULL) {
creating_node = true;
- element = tree_node_find_element(node, TREE_ELEMENT_TITLE,
- NULL);
+ element = tree_node_find_element(node, TREE_ELEMENT_TITLE, NULL);
tree_start_edit(hotlist_tree, element);
}
}
@@ -292,8 +285,7 @@
*/
void hotlist_delete_selected(void)
{
- tree_delete_selected_nodes(hotlist_tree,
- hotlist_tree_root);
+ tree_delete_selected_nodes(hotlist_tree, hotlist_tree_root);
}
/**
@@ -302,7 +294,7 @@
void hotlist_select_all(void)
{
tree_set_node_selected(hotlist_tree, hotlist_tree_root,
- true, true);
+ true, true);
}
/**
@@ -311,7 +303,7 @@
void hotlist_clear_selection(void)
{
tree_set_node_selected(hotlist_tree, hotlist_tree_root,
- true, false);
+ true, false);
}
/**
@@ -320,7 +312,7 @@
void hotlist_expand_all(void)
{
tree_set_node_expanded(hotlist_tree, hotlist_tree_root,
- true, true, true);
+ true, true, true);
}
/**
@@ -329,7 +321,7 @@
void hotlist_expand_directories(void)
{
tree_set_node_expanded(hotlist_tree, hotlist_tree_root,
- true, true, false);
+ true, true, false);
}
/**
@@ -338,7 +330,7 @@
void hotlist_expand_addresses(void)
{
tree_set_node_expanded(hotlist_tree, hotlist_tree_root,
- true, false, true);
+ true, false, true);
}
/**
@@ -347,7 +339,7 @@
void hotlist_collapse_all(void)
{
tree_set_node_expanded(hotlist_tree, hotlist_tree_root,
- false, true, true);
+ false, true, true);
}
/**
@@ -356,7 +348,7 @@
void hotlist_collapse_directories(void)
{
tree_set_node_expanded(hotlist_tree, hotlist_tree_root,
- false, true, false);
+ false, true, false);
}
/**
@@ -364,8 +356,8 @@
*/
void hotlist_collapse_addresses(void)
{
- tree_set_node_expanded(hotlist_tree, hotlist_tree_root,
- false, false, true);
+ tree_set_node_expanded(hotlist_tree,
+ hotlist_tree_root, false, false, true);
}
/**
@@ -376,7 +368,7 @@
struct node *node;
struct node_element *element;
char *title = strdup("Untitled");
-
+
if (title == NULL) {
LOG(("malloc failed"));
warn_user("NoMemory", 0);
@@ -384,7 +376,7 @@
}
creating_node = true;
node = tree_create_folder_node(hotlist_tree, hotlist_tree_root, title,
- true, false, false);
+ true, false, false);
if (node == NULL) {
free(title);
return;
@@ -403,8 +395,8 @@
struct node *node;
creating_node = true;
node = tree_create_URL_node(hotlist_tree, hotlist_tree_root, "Address",
- "Untitled", hotlist_node_callback, NULL);
-
+ "Untitled", hotlist_node_callback, NULL);
+
if (node == NULL)
return;
tree_set_node_user_callback(node, hotlist_node_callback, NULL);
@@ -418,15 +410,15 @@
{
const struct url_data *data;
struct node *node;
-
+
if (url == NULL)
return;
data = urldb_get_url_data(url);
if (data == NULL)
return;
-
+
node = tree_create_URL_node(hotlist_tree, hotlist_tree_root, url, NULL,
- hotlist_node_callback, NULL);
+ hotlist_node_callback, NULL);
tree_update_URL_node(hotlist_tree, node, url, data, false);
}
@@ -441,24 +433,23 @@
const struct url_data *data;
struct node *link, *node;
bool before;
-
+
data = urldb_get_url_data(url);
- if (data == NULL) {
- urldb_add_url(url);
- urldb_set_url_persistence(url, true);
- data = urldb_get_url_data(url);
- }
- if (data != NULL) {
- link = tree_get_link_details(hotlist_tree, x, y,
- &before);
- node = tree_create_URL_node(NULL, NULL, url,
- NULL, hotlist_node_callback, NULL);
- tree_link_node(hotlist_tree, link, node, before);
- }
-}
-
-/**
- * Open the selected entries in seperate browser windows.
+ if (data == NULL) {
+ urldb_add_url(url);
+ urldb_set_url_persistence(url, true);
+ data = urldb_get_url_data(url);
+ }
+ if (data != NULL) {
+ link = tree_get_link_details(hotlist_tree, x, y, &before);
+ node = tree_create_URL_node(NULL, NULL, url,
+ NULL, hotlist_node_callback, NULL);
+ tree_link_node(hotlist_tree, link, node, before);
+ }
+}
+
+/**
+ * Open the selected entries in separate browser windows.
*/
void hotlist_launch_selected(void)
{
Modified: branches/jmb/treeview-redux/desktop/tree_url_node.c
URL: http://source.netsurf-browser.org/branches/jmb/treeview-redux/desktop/tre...
==============================================================================
--- branches/jmb/treeview-redux/desktop/tree_url_node.c (original)
+++ branches/jmb/treeview-redux/desktop/tree_url_node.c Sat Sep 25 18:09:38 2010
@@ -477,12 +477,23 @@
* \param tree empty tree which data will be read into
* \return the file represented as a tree, or NULL on failure
*/
-bool tree_url_load(const char *filename, struct tree *tree,
+bool tree_urlfile_load(const char *filename, struct tree *tree,
tree_node_user_callback callback, void *callback_data)
{
xmlDoc *doc;
xmlNode *html, *body, *ul;
struct node *root;
+ FILE *fp = NULL;
+
+ if (filename == NULL) {
+ return false;
+ }
+
+ fp = fopen(filename, "r");
+ if (fp == NULL) {
+ return false;
+ }
+ fclose(fp);
doc = htmlParseFile(filename, "iso-8859-1");
if (doc == NULL) {
@@ -697,7 +708,7 @@
* \param filename the file to save to
* \param page_title title of the page
*/
-bool tree_url_save(struct tree *tree, const char *filename,
+bool tree_urlfile_save(struct tree *tree, const char *filename,
const char *page_title)
{
int res;
Modified: branches/jmb/treeview-redux/desktop/tree_url_node.h
URL: http://source.netsurf-browser.org/branches/jmb/treeview-redux/desktop/tre...
==============================================================================
--- branches/jmb/treeview-redux/desktop/tree_url_node.h (original)
+++ branches/jmb/treeview-redux/desktop/tree_url_node.h Sat Sep 25 18:09:38 2010
@@ -45,9 +45,9 @@
node_callback_resp tree_url_node_callback(void *user_data,
struct node_msg_data *msg_data);
-bool tree_url_load(const char *filename, struct tree *tree,
+bool tree_urlfile_load(const char *filename, struct tree *tree,
tree_node_user_callback, void *callback_data);
-bool tree_url_save(struct tree *tree, const char *filename,
+bool tree_urlfile_save(struct tree *tree, const char *filename,
const char *page_title);
/* front end specific */
13 years
r10841 vince - in /branches/jmb/treeview-redux/desktop: sslcert.c sslcert.h
by netsurf@semichrome.net
Author: vince
Date: Sat Sep 25 14:03:04 2010
New Revision: 10841
URL: http://source.netsurf-browser.org?rev=10841&view=rev
Log:
use the correct type for the callback
Modified:
branches/jmb/treeview-redux/desktop/sslcert.c
branches/jmb/treeview-redux/desktop/sslcert.h
Modified: branches/jmb/treeview-redux/desktop/sslcert.c
URL: http://source.netsurf-browser.org/branches/jmb/treeview-redux/desktop/ssl...
==============================================================================
--- branches/jmb/treeview-redux/desktop/sslcert.c (original)
+++ branches/jmb/treeview-redux/desktop/sslcert.c Sat Sep 25 14:03:04 2010
@@ -51,7 +51,7 @@
unsigned long num; /**< The number of ssl certificates in the chain */
char *url; /**< The url of the certificate */
struct tree *tree; /**< The root of the treeview */
- sslcert_session_callback cb; /**< callback when cert is accepted or rejected */
+ llcache_query_response cb; /**< callback when cert is accepted or rejected */
void *cbpw; /**< context passed to callback */
};
@@ -84,7 +84,7 @@
struct sslcert_session_data *
sslcert_create_session_data(unsigned long num,
const char *url,
- sslcert_session_callback cb,
+ llcache_query_response cb,
void *cbpw)
{
struct sslcert_session_data *data;
Modified: branches/jmb/treeview-redux/desktop/sslcert.h
URL: http://source.netsurf-browser.org/branches/jmb/treeview-redux/desktop/ssl...
==============================================================================
--- branches/jmb/treeview-redux/desktop/sslcert.h (original)
+++ branches/jmb/treeview-redux/desktop/sslcert.h Sat Sep 25 14:03:04 2010
@@ -24,8 +24,6 @@
#include "desktop/tree.h"
-typedef nserror (*sslcert_session_callback)(bool proceed, void *pw);
-
struct sslcert_session_data;
void sslcert_init(void);
@@ -33,7 +31,7 @@
void sslcert_cleanup(void);
struct sslcert_session_data *sslcert_create_session_data(unsigned long num,
- const char *url, sslcert_session_callback cb, void *cbpw);
+ const char *url, llcache_query_response cb, void *cbpw);
bool sslcert_load_tree(struct tree *tree,
const struct ssl_cert_info *certs,
struct sslcert_session_data *data);
13 years
r10840 vince - in /branches/jmb/treeview-redux: !NetSurf/Resources/en/Messages Docs/09-treeview desktop/sslcert.c desktop/sslcert.h
by netsurf@semichrome.net
Author: vince
Date: Sat Sep 25 13:52:02 2010
New Revision: 10840
URL: http://source.netsurf-browser.org?rev=10840&view=rev
Log:
review comments for ssl window
Removed:
branches/jmb/treeview-redux/Docs/09-treeview
Modified:
branches/jmb/treeview-redux/!NetSurf/Resources/en/Messages
branches/jmb/treeview-redux/desktop/sslcert.c
branches/jmb/treeview-redux/desktop/sslcert.h
Modified: branches/jmb/treeview-redux/!NetSurf/Resources/en/Messages
URL: http://source.netsurf-browser.org/branches/jmb/treeview-redux/%21NetSurf/...
==============================================================================
--- branches/jmb/treeview-redux/!NetSurf/Resources/en/Messages (original)
+++ branches/jmb/treeview-redux/!NetSurf/Resources/en/Messages Sat Sep 25 13:52:02 2010
@@ -620,15 +620,15 @@
#
SSLCerts:SSL certificates
SSLError:NetSurf failed to verify the authenticity of an SSL certificate. Please verify the details presented below.
-Subject:Subject: %s
-Issuer:Issuer: %s
-Version:Version: %ld
-ValidFrom:Valid from: %s
-ValidTo:Valid until: %s
-Type:Type: %i
-Serial:Serial: %ld
-Accept:Accept
-Reject:Reject
+SSL_Certificate_Subject:Subject: %s
+SSL_Certificate_Issuer:Issuer: %s
+SSL_Certificate_Version:Version: %ld
+SSL_Certificate_ValidFrom:Valid from: %s
+SSL_Certificate_ValidTo:Valid until: %s
+SSL_Certificate_Type:Type: %i
+SSL_Certificate_Serial:Serial: %ld
+SSL_Certificate_Accept:Accept
+SSL_Certificate_Reject:Reject
# Content
Removed: branches/jmb/treeview-redux/Docs/09-treeview
URL: http://source.netsurf-browser.org/branches/jmb/treeview-redux/Docs/09-tre...
==============================================================================
--- branches/jmb/treeview-redux/Docs/09-treeview (original)
+++ branches/jmb/treeview-redux/Docs/09-treeview (removed)
@@ -1,68 +1,0 @@
-Using the treeview gadget (together with core hotlist/history/cookies/sslcert)
-=========================
-
-Providing front end specific bits
----------------------------------
-Most of the treeview logic is located in core code but there still are some
-functions that need implementing on the front end side. These include:
-
-- Functions marked as front end specific ones and listed at the end of
- tree_url_node.h.
-- Functions in treeview_table located in tree.h
-
-Additionally the option_tree_icons_dir option should be set. It should be
-pointing at the directory containing the frontend specific icon set for the
-treeview.
-
-During GUI initialisation the following functions should be called:
-- cookies_initialise
-- history_global_initialise
-- hotlist_initialise
-- sslcert_init
-
-On GUI closure:
-- cookies_cleanup
-- history_global_cleanup
-- hotlist_cleanup
-- no function for sslcert here!
-
-The sslcert tree is created and deleted each time the dialog gets invoked. This
-is done with sslcert_create_tree and sslcert_cleanup. Make sure that closing the
-window with any other method will also perform the cleanup.
-
-The remaining functions in the header files of hotlist/history/cookies/sslcert
-have to be connected to the front end specific buttons and menu or tool bars.
-
-The front end is responsible for creating the windows and toolbars as well as
-empty core trees passed to the cookies/history/hotlist/sslcert initialisation
-functions. Use the *_get_tree_flags functions to obtain the flags with which the
-particular tree should be created.
-
-Using the treeview
-------------------
-
-1. Creating and modifying the tree structure
-
-- Create an empty tree with tree_create.
-- Create the necessary folder/leave nodes.
-- Fill the leave nodes with tree_create_node_element and assign content to the
- elements with tree_update_node_element.
-- Use tree_link_node to connect the created nodes in the required structure.
-- With tree_set_redraw set the redraw flag on the tree to true, any further
- changes will result in tree redraws. The flag can be set/unset multiple times.
-- Call tree_draw to draw the tree for the first time.
-
-2. Client -> Tree communication
- To make the tree respond to mouse action, all such has to be passed
- to tree_mouse_action and tree_drag_end. The mouse coordinates have to be given
- with respect to the tree origin.
-
-3. Tree -> Client communication
- Use tree_set_node_user_callback to provide a callback for any node related
- events. At the moment it can be used for(default behaviour for a not handled
- event in brackets):
- - handling a node launch (no action)
- - custom node element deletion (free text/bitmap)
- - accepting/rejecting edited text (any text accepted)
- - informing about edit end (no action)
-
Modified: branches/jmb/treeview-redux/desktop/sslcert.c
URL: http://source.netsurf-browser.org/branches/jmb/treeview-redux/desktop/ssl...
==============================================================================
--- branches/jmb/treeview-redux/desktop/sslcert.c (original)
+++ branches/jmb/treeview-redux/desktop/sslcert.c Sat Sep 25 13:52:02 2010
@@ -1,5 +1,5 @@
/*
- * Copyright 2009 Paul Blokus <paul_pl(a)users.sourceforge.net>
+ * Copyright 2009 Paul Blokus <paul_pl(a)users.sourceforge.net>
*
* This file is part of NetSurf, http://www.netsurf-browser.org/
*
@@ -36,29 +36,29 @@
#include "utils/messages.h"
#include "utils/utils.h"
-#define TREE_ELEMENT_SSL_VERSION 0x01
-#define TREE_ELEMENT_SSL_VALID_FROM 0x02
-#define TREE_ELEMENT_SSL_VALID_TO 0x03
-#define TREE_ELEMENT_SSL_CERT_TYPE 0x04
-#define TREE_ELEMENT_SSL_SERIAL 0x05
-#define TREE_ELEMENT_SSL_ISSUER 0x06
-
+/** Flags for each type of ssl tree node. */
+enum tree_element_ssl{
+ TREE_ELEMENT_SSL_VERSION = 0x01,
+ TREE_ELEMENT_SSL_VALID_FROM = 0x02,
+ TREE_ELEMENT_SSL_VALID_TO = 0x03,
+ TREE_ELEMENT_SSL_CERT_TYPE = 0x04,
+ TREE_ELEMENT_SSL_SERIAL = 0x05,
+ TREE_ELEMENT_SSL_ISSUER = 0x06,
+};
+
+/** ssl certificate verification context. */
struct sslcert_session_data {
- unsigned long num;
- char *url;
- struct tree *tree;
- nserror (*cb)(bool proceed, void *pw);
- void *cbpw;
+ unsigned long num; /**< The number of ssl certificates in the chain */
+ char *url; /**< The url of the certificate */
+ struct tree *tree; /**< The root of the treeview */
+ sslcert_session_callback cb; /**< callback when cert is accepted or rejected */
+ void *cbpw; /**< context passed to callback */
};
-static struct node *sslcert_create_node(const struct ssl_cert_info *cert);
-static node_callback_resp sslcert_node_callback(void *user_data,
- struct node_msg_data *msg_data);
-static void sslcert_clanup_session(struct sslcert_session_data *session);
-
-
+/** Handle for the window icon. */
static hlcache_handle *sslcert_icon;
+/** Initialise ssl certificate window. */
void sslcert_init(void)
{
sslcert_icon = tree_load_icon(tree_content_icon_name);
@@ -81,12 +81,14 @@
return;
}
-struct sslcert_session_data *sslcert_create_session_data(unsigned long num,
- const char *url, nserror (*cb)(bool proceed, void *pw),
- void *cbpw)
+struct sslcert_session_data *
+sslcert_create_session_data(unsigned long num,
+ const char *url,
+ sslcert_session_callback cb,
+ void *cbpw)
{
struct sslcert_session_data *data;
-
+
data = malloc(sizeof(struct sslcert_session_data));
if (data == NULL) {
warn_user("NoMemory", 0);
@@ -101,156 +103,158 @@
data->num = num;
data->cb = cb;
data->cbpw = cbpw;
-
+
return data;
}
-bool sslcert_load_tree(struct tree *tree, const struct ssl_cert_info *certs,
- struct sslcert_session_data *data)
-{
- struct node *tree_root;
- struct node *node;
- long i;
-
- assert(data != NULL && certs != NULL && tree != NULL);
-
- tree_root = tree_get_root(tree);
-
- for (i = 0; i < (long)data->num; i++) {
- node = sslcert_create_node(&(certs[i]));
- if (node == NULL)
- return NULL;
- tree_link_node(tree, tree_root, node, false);
- }
-
- data->tree = tree;
-
- return tree;
-
-}
-
-struct node *sslcert_create_node(const struct ssl_cert_info *cert)
-{
- struct node *node;
- struct node_element *element;
- char buffer[356];
- char *text;
-
-
- snprintf(buffer, 356, messages_get("Subject"), cert->subject);
- text = strdup(buffer);
- if (text == NULL) {
- LOG(("malloc failed"));
- warn_user("NoMemory", 0);
- return NULL;
- }
- node = tree_create_leaf_node(NULL, NULL, text,
- false, false, false);
- if (node == NULL) {
- free(text);
- return NULL;
- }
- tree_set_node_user_callback(node, sslcert_node_callback, NULL);
-
- element = tree_create_node_element(node, NODE_ELEMENT_TEXT,
- TREE_ELEMENT_SSL_ISSUER, false);
- if (element != NULL) {
- snprintf(buffer, 356, messages_get("Issuer"), cert->issuer);
- text = strdup(buffer);
- if (text == NULL) {
- tree_delete_node(NULL, node, false);
- LOG(("malloc failed"));
- warn_user("NoMemory", 0);
- return NULL;
- }
- tree_update_node_element(NULL, element, text, NULL);
- }
- element = tree_create_node_element(node, NODE_ELEMENT_TEXT,
- TREE_ELEMENT_SSL_VERSION, false);
- if (element != NULL) {
- snprintf(buffer, 356, messages_get("Version"), cert->version);
- text = strdup(buffer);
- if (text == NULL) {
- tree_delete_node(NULL, node, false);
- LOG(("malloc failed"));
- warn_user("NoMemory", 0);
- return NULL;
- }
- tree_update_node_element(NULL, element, text, NULL);
- }
- element = tree_create_node_element(node, NODE_ELEMENT_TEXT,
- TREE_ELEMENT_SSL_VALID_FROM, false);
- if (element != NULL) {
- snprintf(buffer, 356, messages_get("ValidFrom"),
- cert->not_before);
- text = strdup(buffer);
- if (text == NULL) {
- tree_delete_node(NULL, node, false);
- LOG(("malloc failed"));
- warn_user("NoMemory", 0);
- return NULL;
- }
- tree_update_node_element(NULL, element, text, NULL);
- }
- element = tree_create_node_element(node, NODE_ELEMENT_TEXT,
- TREE_ELEMENT_SSL_VALID_TO, false);
- if (element != NULL) {
- snprintf(buffer, 356, messages_get("ValidTo"), cert->not_after);
- text = strdup(buffer);
- if (text == NULL) {
- tree_delete_node(NULL, node, false);
- LOG(("malloc failed"));
- warn_user("NoMemory", 0);
- return NULL;
- }
- tree_update_node_element(NULL, element, text, NULL);
- }
- element = tree_create_node_element(node, NODE_ELEMENT_TEXT,
- TREE_ELEMENT_SSL_CERT_TYPE, false);
- if (element != NULL) {
- snprintf(buffer, 356, messages_get("Type"), cert->cert_type);
- text = strdup(buffer);
- if (text == NULL) {
- tree_delete_node(NULL, node, false);
- LOG(("malloc failed"));
- warn_user("NoMemory", 0);
- return NULL;
- }
- tree_update_node_element(NULL, element, text, NULL);
- }
- element = tree_create_node_element(node, NODE_ELEMENT_TEXT,
- TREE_ELEMENT_SSL_SERIAL, false);
- if (element != NULL) {
- snprintf(buffer, 356, messages_get("Serial"), cert->serial);
- text = strdup(buffer);
- if (text == NULL) {
- tree_delete_node(NULL, node, false);
- LOG(("malloc failed"));
- warn_user("NoMemory", 0);
- return NULL;
- }
- tree_update_node_element(NULL, element, text, NULL);
- }
-
- tree_set_node_icon(NULL, node, sslcert_icon);
-
- return node;
-}
-
-
-node_callback_resp sslcert_node_callback(void *user_data,
- struct node_msg_data *msg_data)
+static node_callback_resp sslcert_node_callback(void *user_data,
+ struct node_msg_data *msg_data)
{
if (msg_data->msg == NODE_DELETE_ELEMENT_IMG)
return NODE_CALLBACK_HANDLED;
return NODE_CALLBACK_NOT_HANDLED;
}
+static struct node *sslcert_create_node(const struct ssl_cert_info *cert)
+{
+ struct node *node;
+ struct node_element *element;
+ char *text;
+
+ text = messages_get_buff("SSL_Certificate_Subject", cert->subject);
+ if (text == NULL)
+ return NULL;
+
+ node = tree_create_leaf_node(NULL, NULL, text, false, false, false);
+ if (node == NULL) {
+ free(text);
+ return NULL;
+ }
+ tree_set_node_user_callback(node, sslcert_node_callback, NULL);
+
+ /* add issuer node */
+ element = tree_create_node_element(node, NODE_ELEMENT_TEXT,
+ TREE_ELEMENT_SSL_ISSUER, false);
+ if (element != NULL) {
+ text = messages_get_buff("SSL_Certificate_Issuer", cert->issuer);
+ if (text == NULL) {
+ tree_delete_node(NULL, node, false);
+ return NULL;
+ }
+ tree_update_node_element(NULL, element, text, NULL);
+ }
+
+ /* add version node */
+ element = tree_create_node_element(node, NODE_ELEMENT_TEXT,
+ TREE_ELEMENT_SSL_VERSION, false);
+ if (element != NULL) {
+ text = messages_get_buff("SSL_Certificate_Version", cert->version);
+ if (text == NULL) {
+ tree_delete_node(NULL, node, false);
+ return NULL;
+ }
+ tree_update_node_element(NULL, element, text, NULL);
+ }
+
+ /* add valid from node */
+ element = tree_create_node_element(node, NODE_ELEMENT_TEXT,
+ TREE_ELEMENT_SSL_VALID_FROM, false);
+ if (element != NULL) {
+ text = messages_get_buff("SSL_Certificate_ValidFrom", cert->not_before);
+ if (text == NULL) {
+ tree_delete_node(NULL, node, false);
+ return NULL;
+ }
+ tree_update_node_element(NULL, element, text, NULL);
+ }
+
+
+ /* add valid to node */
+ element = tree_create_node_element(node, NODE_ELEMENT_TEXT,
+ TREE_ELEMENT_SSL_VALID_TO, false);
+ if (element != NULL) {
+ text = messages_get_buff("SSL_Certificate_ValidTo", cert->not_after);
+ if (text == NULL) {
+ tree_delete_node(NULL, node, false);
+ return NULL;
+ }
+ tree_update_node_element(NULL, element, text, NULL);
+ }
+
+ /* add certificate type */
+ element = tree_create_node_element(node, NODE_ELEMENT_TEXT,
+ TREE_ELEMENT_SSL_CERT_TYPE, false);
+ if (element != NULL) {
+ text = messages_get_buff("SSL_Certificate_Type", cert->cert_type);
+ if (text == NULL) {
+ tree_delete_node(NULL, node, false);
+ return NULL;
+ }
+ tree_update_node_element(NULL, element, text, NULL);
+ }
+
+ /* add serial node */
+ element = tree_create_node_element(node, NODE_ELEMENT_TEXT,
+ TREE_ELEMENT_SSL_SERIAL, false);
+ if (element != NULL) {
+ text = messages_get_buff("SSL_Certificate_Serial", cert->serial);
+ if (text == NULL) {
+ tree_delete_node(NULL, node, false);
+ return NULL;
+ }
+ tree_update_node_element(NULL, element, text, NULL);
+ }
+
+ /* set the display icon */
+ tree_set_node_icon(NULL, node, sslcert_icon);
+
+ return node;
+}
+
+bool sslcert_load_tree(struct tree *tree,
+ const struct ssl_cert_info *certs,
+ struct sslcert_session_data *data)
+{
+ struct node *tree_root;
+ struct node *node;
+ unsigned long cert_loop;
+
+ assert(data != NULL && certs != NULL && tree != NULL);
+
+ tree_root = tree_get_root(tree);
+
+ for (cert_loop = 0; cert_loop < data->num; cert_loop++) {
+ node = sslcert_create_node(&(certs[cert_loop]));
+ if (node != NULL) {
+ /* There is no problem creating the node
+ * add an entry for it in the root of the
+ * treeview .
+ */
+ tree_link_node(tree, tree_root, node, false);
+ }
+ }
+
+ data->tree = tree;
+
+ return tree;
+
+}
+
+
+static void sslcert_cleanup_session(struct sslcert_session_data *session)
+{
+ assert(session != NULL);
+
+ free(session->url);
+ free(session);
+}
+
+
bool sslcert_reject(struct sslcert_session_data *session)
{
session->cb(false, session->cbpw);
- sslcert_clanup_session(session);
+ sslcert_cleanup_session(session);
return true;
}
@@ -266,15 +270,7 @@
session->cb(true, session->cbpw);
- sslcert_clanup_session(session);
-
+ sslcert_cleanup_session(session);
+
return true;
}
-
-void sslcert_clanup_session(struct sslcert_session_data *session)
-{
- assert(session != NULL);
-
- free(session->url);
- free(session);
-}
Modified: branches/jmb/treeview-redux/desktop/sslcert.h
URL: http://source.netsurf-browser.org/branches/jmb/treeview-redux/desktop/ssl...
==============================================================================
--- branches/jmb/treeview-redux/desktop/sslcert.h (original)
+++ branches/jmb/treeview-redux/desktop/sslcert.h Sat Sep 25 13:52:02 2010
@@ -24,6 +24,8 @@
#include "desktop/tree.h"
+typedef nserror (*sslcert_session_callback)(bool proceed, void *pw);
+
struct sslcert_session_data;
void sslcert_init(void);
@@ -31,8 +33,7 @@
void sslcert_cleanup(void);
struct sslcert_session_data *sslcert_create_session_data(unsigned long num,
- const char *url, nserror (*cb)(bool proceed, void *pw),
- void *cbpw);
+ const char *url, sslcert_session_callback cb, void *cbpw);
bool sslcert_load_tree(struct tree *tree,
const struct ssl_cert_info *certs,
struct sslcert_session_data *data);
13 years
r10839 vince - in /branches/jmb/treeview-redux/utils: messages.c messages.h
by netsurf@semichrome.net
Author: vince
Date: Sat Sep 25 12:01:49 2010
New Revision: 10839
URL: http://source.netsurf-browser.org?rev=10839&view=rev
Log:
add formatted message method
Modified:
branches/jmb/treeview-redux/utils/messages.c
branches/jmb/treeview-redux/utils/messages.h
Modified: branches/jmb/treeview-redux/utils/messages.c
URL: http://source.netsurf-browser.org/branches/jmb/treeview-redux/utils/messa...
==============================================================================
--- branches/jmb/treeview-redux/utils/messages.c (original)
+++ branches/jmb/treeview-redux/utils/messages.c Sat Sep 25 12:01:49 2010
@@ -30,6 +30,8 @@
#include <stdbool.h>
#include <string.h>
#include <zlib.h>
+#include <stdarg.h>
+
#include "utils/log.h"
#include "utils/messages.h"
#include "utils/utils.h"
@@ -158,6 +160,35 @@
return r ? r : key;
}
+/* exported interface documented in messages.h */
+char *messages_get_buff(const char *key, ...)
+{
+ const char *msg_fmt;
+ char *buff = NULL; /* formatted buffer to return */
+ int buff_len = 0;
+ va_list ap;
+
+ msg_fmt = messages_get_ctx(key, messages_hash);
+
+ va_start(ap, key);
+ buff_len = vsnprintf(buff, buff_len, msg_fmt, ap);
+ va_end(ap);
+
+ buff = malloc(buff_len + 1);
+
+ if (buff == NULL) {
+ LOG(("malloc failed"));
+ warn_user("NoMemory", 0);
+ } else {
+ va_start(ap, key);
+ vsnprintf(buff, buff_len + 1, msg_fmt, ap);
+ va_end(ap);
+ }
+
+ return buff;
+}
+
+
/**
* Fast lookup of a message by key from the standard Messages hash.
*
Modified: branches/jmb/treeview-redux/utils/messages.h
URL: http://source.netsurf-browser.org/branches/jmb/treeview-redux/utils/messa...
==============================================================================
--- branches/jmb/treeview-redux/utils/messages.h (original)
+++ branches/jmb/treeview-redux/utils/messages.h Sat Sep 25 12:01:49 2010
@@ -40,4 +40,16 @@
const char *messages_get_ctx(const char *key, struct hash_table *ctx);
const char *messages_get(const char *key);
+/**
+ * Formatted message from a key in the global message hash.
+ *
+ * \param key key of message
+ * \param ... message parameters
+ * \return buffer containing formatted message text or NULL if memory
+ * is unavailable. The caller owns the returned buffer and is
+ * responsible for freeing it.
+ */
+
+char *messages_get_buff(const char *key, ...);
+
#endif
13 years
r10837 bursa - /trunk/libsvgtiny/src/svgtiny.c
by netsurf@semichrome.net
Author: bursa
Date: Fri Sep 24 18:41:14 2010
New Revision: 10837
URL: http://source.netsurf-browser.org?rev=10837&view=rev
Log:
Split the string for stroke-width like it's done for the other attributes so svgtiny_parse_length doesn't get confused about the remainder of the string. Contributed by Peter Korsgaard.
Modified:
trunk/libsvgtiny/src/svgtiny.c
Modified: trunk/libsvgtiny/src/svgtiny.c
URL: http://source.netsurf-browser.org/trunk/libsvgtiny/src/svgtiny.c?rev=1083...
==============================================================================
--- trunk/libsvgtiny/src/svgtiny.c (original)
+++ trunk/libsvgtiny/src/svgtiny.c Fri Sep 24 18:41:14 2010
@@ -917,8 +917,10 @@
s += 13;
while (*s == ' ')
s++;
- state->stroke_width = svgtiny_parse_length(s,
+ value = strndup(s, strcspn(s, "; "));
+ state->stroke_width = svgtiny_parse_length(value,
state->viewport_width, *state);
+ free(value);
}
}
}
13 years