Added a hide_mask argument to the two popup menu functions.

2000-08-09  Christopher James Lahey  <clahey@helixcode.com>

	* e-popup-menu.c, e-popup-menu.h: Added a hide_mask argument to
	the two popup menu functions.

svn path=/trunk/; revision=4625
This commit is contained in:
Christopher James Lahey
2000-08-09 05:10:40 +00:00
committed by Chris Lahey
parent 0efeeb2a5d
commit e367caf042
5 changed files with 81 additions and 42 deletions

View File

@ -1,3 +1,8 @@
2000-08-09 Christopher James Lahey <clahey@helixcode.com>
* e-popup-menu.c, e-popup-menu.h: Added a hide_mask argument to
the two popup menu functions.
2000-08-07 Christopher James Lahey <clahey@helixcode.com>
* e-gui-utils.c, e-gui-utils.c: Added

View File

@ -1,6 +1,7 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
/*
* e-popup-menu.c: popup menu display
*
nnn *
* Author:
* Miguel de Icaza (miguel@kernel.org)
* Jody Goldberg (jgoldberg@home.com)
@ -46,7 +47,7 @@ make_item (GtkMenu *menu, const char *name, const char *pixname)
if (pixname){
GtkWidget *pixmap = gnome_stock_pixmap_widget (item, pixname);
gtk_widget_show (pixmap);
gtk_pixmap_menu_item_set_pixmap (
GTK_PIXMAP_MENU_ITEM (item), pixmap);
@ -56,43 +57,56 @@ make_item (GtkMenu *menu, const char *name, const char *pixname)
}
GtkMenu *
e_popup_menu_create (EPopupMenu *menu_list, int disable_mask, void *closure)
e_popup_menu_create (EPopupMenu *menu_list, int disable_mask, int hide_mask, void *closure)
{
GtkMenu *menu = GTK_MENU (gtk_menu_new ());
int i;
for (i = 0; menu_list [i].name; i++){
gboolean last_item_separator = TRUE;
gint last_non_separator = -1;
for (i = 0; menu_list[i].name; i++) {
if (strcmp("", menu_list[i].name) && !(menu_list [i].disable_mask & hide_mask)) {
last_non_seperator = i;
}
}
for (i = 0; i < last_non_separator; i++) {
GtkWidget *item;
item = make_item (menu, menu_list [i].name,
menu_list [i].pixname);
gboolean separator;
if (menu_list [i].fn)
gtk_signal_connect (
GTK_OBJECT (item), "activate",
GTK_SIGNAL_FUNC (menu_list [i].fn),
closure);
separator = !strcmp("", menu_list[i].name);
if (menu_list [i].disable_mask & disable_mask)
gtk_widget_set_sensitive (item, FALSE);
gtk_widget_show (item);
gtk_menu_append (menu, item);
if ((!(separator && last_separator)) && !(menu_list [i].disable_mask & hide_mask)) {
item = make_item (menu, menu_list [i].name,
menu_list [i].pixname);
if (menu_list [i].fn)
gtk_signal_connect (
GTK_OBJECT (item), "activate",
GTK_SIGNAL_FUNC (menu_list [i].fn),
closure);
if (menu_list [i].disable_mask & disable_mask)
gtk_widget_set_sensitive (item, FALSE);
gtk_widget_show (item);
gtk_menu_append (menu, item);
}
}
return menu;
}
void
e_popup_menu_run (EPopupMenu *menu_list, GdkEventButton *event, int disable_mask, void *closure)
e_popup_menu_run (EPopupMenu *menu_list, GdkEventButton *event, int disable_mask, int hide_mask, void *closure)
{
GtkMenu *menu;
g_return_if_fail (menu_list != NULL);
g_return_if_fail (event != NULL);
menu = e_popup_menu_create (menu_list, disable_mask, closure);
menu = e_popup_menu_create (menu_list, disable_mask, hide_mask, closure);
e_popup_menu (menu, event);
}

View File

@ -1,3 +1,4 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
#ifndef E_POPUP_MENU_H
#define E_POPUP_MENU_H
@ -12,11 +13,13 @@ typedef struct {
GtkMenu *e_popup_menu_create (EPopupMenu *menu_list,
int disable_mask,
int hide_mask,
void *closure);
void e_popup_menu_run (EPopupMenu *menu_list,
GdkEventButton *event,
int disable_mask,
int hide_mask,
void *closure);
#endif /* E_POPUP_MENU_H */

View File

@ -1,6 +1,7 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
/*
* e-popup-menu.c: popup menu display
*
nnn *
* Author:
* Miguel de Icaza (miguel@kernel.org)
* Jody Goldberg (jgoldberg@home.com)
@ -46,7 +47,7 @@ make_item (GtkMenu *menu, const char *name, const char *pixname)
if (pixname){
GtkWidget *pixmap = gnome_stock_pixmap_widget (item, pixname);
gtk_widget_show (pixmap);
gtk_pixmap_menu_item_set_pixmap (
GTK_PIXMAP_MENU_ITEM (item), pixmap);
@ -56,43 +57,56 @@ make_item (GtkMenu *menu, const char *name, const char *pixname)
}
GtkMenu *
e_popup_menu_create (EPopupMenu *menu_list, int disable_mask, void *closure)
e_popup_menu_create (EPopupMenu *menu_list, int disable_mask, int hide_mask, void *closure)
{
GtkMenu *menu = GTK_MENU (gtk_menu_new ());
int i;
for (i = 0; menu_list [i].name; i++){
gboolean last_item_separator = TRUE;
gint last_non_separator = -1;
for (i = 0; menu_list[i].name; i++) {
if (strcmp("", menu_list[i].name) && !(menu_list [i].disable_mask & hide_mask)) {
last_non_seperator = i;
}
}
for (i = 0; i < last_non_separator; i++) {
GtkWidget *item;
item = make_item (menu, menu_list [i].name,
menu_list [i].pixname);
gboolean separator;
if (menu_list [i].fn)
gtk_signal_connect (
GTK_OBJECT (item), "activate",
GTK_SIGNAL_FUNC (menu_list [i].fn),
closure);
separator = !strcmp("", menu_list[i].name);
if (menu_list [i].disable_mask & disable_mask)
gtk_widget_set_sensitive (item, FALSE);
gtk_widget_show (item);
gtk_menu_append (menu, item);
if ((!(separator && last_separator)) && !(menu_list [i].disable_mask & hide_mask)) {
item = make_item (menu, menu_list [i].name,
menu_list [i].pixname);
if (menu_list [i].fn)
gtk_signal_connect (
GTK_OBJECT (item), "activate",
GTK_SIGNAL_FUNC (menu_list [i].fn),
closure);
if (menu_list [i].disable_mask & disable_mask)
gtk_widget_set_sensitive (item, FALSE);
gtk_widget_show (item);
gtk_menu_append (menu, item);
}
}
return menu;
}
void
e_popup_menu_run (EPopupMenu *menu_list, GdkEventButton *event, int disable_mask, void *closure)
e_popup_menu_run (EPopupMenu *menu_list, GdkEventButton *event, int disable_mask, int hide_mask, void *closure)
{
GtkMenu *menu;
g_return_if_fail (menu_list != NULL);
g_return_if_fail (event != NULL);
menu = e_popup_menu_create (menu_list, disable_mask, closure);
menu = e_popup_menu_create (menu_list, disable_mask, hide_mask, closure);
e_popup_menu (menu, event);
}

View File

@ -1,3 +1,4 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
#ifndef E_POPUP_MENU_H
#define E_POPUP_MENU_H
@ -12,11 +13,13 @@ typedef struct {
GtkMenu *e_popup_menu_create (EPopupMenu *menu_list,
int disable_mask,
int hide_mask,
void *closure);
void e_popup_menu_run (EPopupMenu *menu_list,
GdkEventButton *event,
int disable_mask,
int hide_mask,
void *closure);
#endif /* E_POPUP_MENU_H */