Remove the deprecated optionmenu widget based convenience functions.

They are no longer used in the GnuCash code base.

git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@21503 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
Geert Janssens
2011-10-28 14:14:03 +00:00
parent 3c809a4a2d
commit 7fa08b00ca
2 changed files with 2 additions and 317 deletions
@@ -370,295 +370,12 @@ gnc_fill_account_select_combo (GtkWidget *combo, QofBook *book,
g_free (text);
}
/*********************************************************************/
/* Option Menu creation */
typedef const char * (*GenericLookup_t)(gpointer);
typedef struct
{
gint component_id;
GtkWidget *omenu;
QofBook *book;
gboolean none_ok;
const char * (*get_name)(gpointer);
GList * (*get_list)(QofBook*);
gboolean building_menu;
gpointer result;
gpointer *result_p;
void (*changed_cb)(GtkWidget*, gpointer);
gpointer cb_arg;
} OpMenuData;
#define DO_ADD_ITEM(s,o) { \
add_menu_item (menu, (s), omd, (o)); \
if (omd->result == (o)) current = index; \
index++; \
}
static void
business_option_changed (GtkWidget *widget, gpointer data)
{
OpMenuData *omd = data;
g_return_if_fail (omd);
omd->result = g_object_get_data (G_OBJECT (widget), "this_item");
if (!omd->building_menu)
{
if (omd->result_p)
*(omd->result_p) = omd->result;
if (omd->changed_cb)
(omd->changed_cb)(omd->omenu, omd->cb_arg);
}
}
static void
add_menu_item (GtkWidget *menu, const char *label, OpMenuData *omd,
gpointer this_item)
{
GtkWidget *item = gtk_menu_item_new_with_label (label);
g_object_set_data (G_OBJECT (item), "this_item", this_item);
g_signal_connect (G_OBJECT (item), "activate",
G_CALLBACK (business_option_changed), omd);
gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
gtk_widget_show (item);
}
static void
generic_omenu_destroy_cb (GtkWidget *widget, gpointer data)
{
OpMenuData *omd = data;
gnc_unregister_gui_component (omd->component_id);
g_free (omd);
}
static void
build_generic_optionmenu (OpMenuData *omd)
{
GList *items;
GtkWidget *menu;
int current = 0, index = 0;
/* Make sure we can "get_list" */
if (omd->get_list == NULL)
return;
/* Get the list of items */
items = (omd->get_list)(omd->book);
/* Make a menu */
menu = gtk_menu_new ();
omd->building_menu = TRUE;
if (omd->none_ok || items == NULL)
DO_ADD_ITEM (_("None"), NULL);
for ( ; items; items = items->next)
DO_ADD_ITEM ((omd->get_name)(items->data), items->data);
gtk_option_menu_set_menu (GTK_OPTION_MENU (omd->omenu), menu);
gtk_option_menu_set_history (GTK_OPTION_MENU (omd->omenu), current);
gtk_widget_show (menu);
omd->building_menu = FALSE;
}
static void
generic_omenu_refresh_handler (GHashTable *changes, gpointer user_data)
{
OpMenuData *omd = user_data;
build_generic_optionmenu (omd);
}
static OpMenuData *
make_generic_optionmenu (GtkWidget *omenu, QofBook *book,
gboolean none_ok, QofIdType type_name,
GList * (*get_list)(QofBook*),
GenericLookup_t get_name,
gpointer *result)
{
OpMenuData *omd;
omd = g_object_get_data (G_OBJECT (omenu), "menu-data");
/* If this is the first time we've been called, then build the
* Option Menu Data object, register with the component manager, and
* watch for changed items. Then register for deletion, so we can
* unregister and free the data when this menu is destroyed.
*/
if (!omd)
{
omd = g_new0 (OpMenuData, 1);
omd->omenu = omenu;
omd->book = book;
omd->result_p = result;
omd->none_ok = none_ok;
omd->get_name = get_name;
omd->get_list = get_list;
g_object_set_data (G_OBJECT (omenu), "menu-data", omd);
if (result)
omd->result = *result;
omd->component_id =
gnc_register_gui_component ("generic-omenu-refresh-hook",
generic_omenu_refresh_handler,
NULL, omd);
if (type_name)
gnc_gui_component_watch_entity_type (omd->component_id,
type_name,
QOF_EVENT_MODIFY | QOF_EVENT_DESTROY);
g_signal_connect (G_OBJECT (omenu), "destroy",
G_CALLBACK (generic_omenu_destroy_cb), omd);
}
build_generic_optionmenu (omd);
return omd;
}
void
gnc_ui_optionmenu_set_changed_callback (GtkWidget *omenu,
void (*changed_cb)(GtkWidget*, gpointer),
gpointer cb_arg)
{
OpMenuData *omd;
if (!omenu) return;
omd = g_object_get_data (G_OBJECT (omenu), "menu-data");
g_return_if_fail (omd);
omd->changed_cb = changed_cb;
omd->cb_arg = cb_arg;
}
gpointer
gnc_ui_optionmenu_get_value (GtkWidget *omenu)
{
OpMenuData *omd;
if (!omenu) return NULL;
omd = g_object_get_data (G_OBJECT (omenu), "menu-data");
g_return_val_if_fail (omd, NULL);
return omd->result;
}
void
gnc_ui_optionmenu_set_value (GtkWidget *omenu, gpointer data)
{
OpMenuData *omd;
GtkWidget *menu;
GList *node;
gint counter;
if (!omenu) return;
omd = g_object_get_data (G_OBJECT (omenu), "menu-data");
g_return_if_fail (omd);
menu = gtk_option_menu_get_menu (GTK_OPTION_MENU (omenu));
g_return_if_fail (menu);
/* now walk all the children until we find our object */
for (counter = 0, node = ((GTK_MENU_SHELL (menu))->children);
node;
node = node->next, counter++)
{
GObject *menuitem = node->data;
gpointer this_object = g_object_get_data (menuitem, "this_item");
if (this_object == data)
{
gtk_option_menu_set_history (GTK_OPTION_MENU (omd->omenu), counter);
return;
}
}
}
/* Create an optionmenu of available billing terms and attach it to
* the menu passed in. If none_ok is true, then add "none" as a
* choice (with data set to NULL). Any time the menu changes,
* 'choice' will be set to the chosen option. If *choice is non-NULL,
* then that will be the default option setting when the menu is
* created.
*/
void
gnc_ui_billterms_optionmenu (GtkWidget *omenu, QofBook *book,
gboolean none_ok, GncBillTerm **choice)
{
if (!omenu || !book) return;
make_generic_optionmenu (omenu, book, none_ok, GNC_BILLTERM_MODULE_NAME,
gncBillTermGetTerms,
(GenericLookup_t)gncBillTermGetName,
(gpointer *)choice);
}
void
gnc_ui_taxtables_optionmenu (GtkWidget *omenu, QofBook *book,
gboolean none_ok, GncTaxTable **choice)
{
if (!omenu || !book) return;
make_generic_optionmenu (omenu, book, none_ok, GNC_TAXTABLE_MODULE_NAME,
gncTaxTableGetTables,
(GenericLookup_t)gncTaxTableGetName,
(gpointer *)choice);
}
void
gnc_ui_taxincluded_optionmenu (GtkWidget *omenu, GncTaxIncluded *choice)
{
GtkWidget *menu;
OpMenuData *omd;
int current = 0, index = 0;
if (!omenu) return;
omd = make_generic_optionmenu (omenu, NULL, FALSE, NULL, NULL, NULL,
(gpointer *)choice);
g_return_if_fail (omd);
menu = gtk_menu_new ();
add_menu_item (menu, _("Yes"), omd,
GINT_TO_POINTER (GNC_TAXINCLUDED_YES));
if (*choice == GNC_TAXINCLUDED_YES) current = index;
index++;
add_menu_item (menu, _("No"), omd,
GINT_TO_POINTER (GNC_TAXINCLUDED_NO));
if (*choice == GNC_TAXINCLUDED_NO) current = index;
index++;
add_menu_item (menu, _("Use Global"), omd,
GINT_TO_POINTER (GNC_TAXINCLUDED_USEGLOBAL));
if (*choice == GNC_TAXINCLUDED_USEGLOBAL) current = index;
index++;
gtk_option_menu_set_menu (GTK_OPTION_MENU (omenu), menu);
gtk_option_menu_set_history (GTK_OPTION_MENU (omenu), current);
gtk_widget_show (menu);
}
/***********************************************************************
* gnc_simple_combo implementation functions
*/
typedef const char * (*GenericLookup_t)(gpointer);
typedef struct
{
gint component_id;
@@ -63,38 +63,6 @@ void gnc_fill_account_select_combo (GtkWidget *combo, QofBook *book,
GList *acct_types,
GList *acct_commodities);
/* Create an optionmenu of available billing terms and attach it to
* the menu passed in. If none_ok is true, then add "none" as a
* choice (with data set to NULL). Any time the menu changes,
* 'choice' will be set to the chosen option. If *choice is non-NULL,
* then that will be the default option setting when the menu is
* created.
*/
void gnc_ui_billterms_optionmenu (GtkWidget *omenu, QofBook *book,
gboolean none_ok, GncBillTerm **choice);
/* Same thing except for the tax tables */
void
gnc_ui_taxtables_optionmenu (GtkWidget *omenu, QofBook *book,
gboolean none_ok, GncTaxTable **choice);
/* Build an option menu for choosing a GncTaxIncluded */
void gnc_ui_taxincluded_optionmenu (GtkWidget *omenu, GncTaxIncluded *choice);
/* Here are some "generic option menu" utilities that can be used with
* ANY of the above option-menu types. In particular the following
* functions are useful for hooking the above option menus into the
* GNC Option infrastructure.
*/
void gnc_ui_optionmenu_set_changed_callback (GtkWidget *omenu,
void (*changed_cb)(GtkWidget*, gpointer),
gpointer cb_arg);
gpointer gnc_ui_optionmenu_get_value (GtkWidget *omenu);
void gnc_ui_optionmenu_set_value (GtkWidget *omenu, gpointer data);
/* Create a combo box of available billing terms based on
* the combo box If none_ok is true, then add "none" as a
* choice (with data set to NULL). If inital_choice is non-NULL,