summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Young <chris@unsatisfactorysoftware.co.uk>2010-12-19 12:49:41 +0000
committerChris Young <chris@unsatisfactorysoftware.co.uk>2010-12-19 12:49:41 +0000
commit60e8d57209988285d6fc7b9e7324b08f7bcc82c9 (patch)
treef90de47c658b7a67b3bfbfacc3f14ed366b6130c
parent0bd39eed21fc39832cec265b2915887b0e1aa6fb (diff)
downloadnetsurf-60e8d57209988285d6fc7b9e7324b08f7bcc82c9.tar.gz
netsurf-60e8d57209988285d6fc7b9e7324b08f7bcc82c9.tar.bz2
Dynamically enable/disable buttons and menus
svn path=/trunk/netsurf/; revision=11098
-rwxr-xr-xamiga/tree.c53
1 files changed, 52 insertions, 1 deletions
diff --git a/amiga/tree.c b/amiga/tree.c
index 46c84ff99..023e02cf2 100755
--- a/amiga/tree.c
+++ b/amiga/tree.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2008, 2009 Chris Young <chris@unsatisfactorysoftware.co.uk>
+ * Copyright 2008 - 2010 Chris Young <chris@unsatisfactorysoftware.co.uk>
*
* This file is part of NetSurf, http://www.netsurf-browser.org/
*
@@ -58,6 +58,8 @@
#include "utils/utils.h"
#define AMI_TREE_MENU_ITEMS 21
+#define AMI_TREE_MENU_DELETE FULLMENUNUM(1,0,0)
+#define AMI_TREE_MENU_CLEAR FULLMENUNUM(1,3,0)
struct treeview_window {
struct Window *win;
@@ -434,6 +436,50 @@ void ami_tree_menu(struct treeview_window *twin)
}
}
+void ami_tree_update_buttons(struct treeview_window *twin)
+{
+ BOOL launch_disable = FALSE;
+
+ if(twin->type == AMI_TREE_SSLCERT) return;
+
+ if(tree_node_has_selection(tree_get_root(twin->tree)))
+ {
+ struct node *selected_node =
+ tree_get_selected_node(tree_get_root(twin->tree));
+
+ OnMenu(twin->win, AMI_TREE_MENU_DELETE);
+ OnMenu(twin->win, AMI_TREE_MENU_CLEAR);
+
+ RefreshSetGadgetAttrs((struct Gadget *)twin->gadgets[GID_DEL],
+ twin->win, NULL,
+ GA_Disabled, FALSE,
+ TAG_DONE);
+
+ if((selected_node && (tree_node_is_folder(selected_node) == true)))
+ launch_disable = TRUE;
+ }
+ else
+ {
+ OffMenu(twin->win, AMI_TREE_MENU_DELETE);
+ OffMenu(twin->win, AMI_TREE_MENU_CLEAR);
+
+ RefreshSetGadgetAttrs((struct Gadget *)twin->gadgets[GID_DEL],
+ twin->win, NULL,
+ GA_Disabled, TRUE,
+ TAG_DONE);
+
+ launch_disable = TRUE;
+ }
+
+ if(twin->type != AMI_TREE_COOKIES)
+ {
+ RefreshSetGadgetAttrs((struct Gadget *)twin->gadgets[GID_OPEN],
+ twin->win, NULL,
+ GA_Disabled, launch_disable,
+ TAG_DONE);
+ }
+}
+
void ami_tree_open(struct treeview_window *twin,int type)
{
BOOL msel = TRUE,nothl = TRUE,launchdisable=FALSE;
@@ -638,6 +684,7 @@ void ami_tree_open(struct treeview_window *twin,int type)
twin->node = AddObject(window_list,AMINS_TVWINDOW);
twin->node->objstruct = twin;
+ ami_tree_update_buttons(twin);
ami_tree_resized(twin->tree, twin->max_width, twin->max_height, twin);
tree_set_redraw(twin->tree, true);
ami_tree_draw(twin);
@@ -915,6 +962,7 @@ BOOL ami_tree_event(struct treeview_window *twin)
twin->mouse_state | twin->key_state, x, y);
break;
}
+ ami_tree_update_buttons(twin);
break;
case WMHI_RAWKEY:
@@ -1103,6 +1151,7 @@ BOOL ami_tree_event(struct treeview_window *twin)
hotlist_delete_selected();
break;
}
+ ami_tree_update_buttons(twin);
break;
case 2: // select all
@@ -1118,6 +1167,7 @@ BOOL ami_tree_event(struct treeview_window *twin)
hotlist_select_all();
break;
}
+ ami_tree_update_buttons(twin);
break;
case 3: // clear
@@ -1133,6 +1183,7 @@ BOOL ami_tree_event(struct treeview_window *twin)
hotlist_clear_selection();
break;
}
+ ami_tree_update_buttons(twin);
break;
}
break;