static void gnc_plugin_page_owner_tree_selection_changed_cb (GtkTreeSelection *selection, GncPluginPageOwnerTree *page) { GtkActionGroup *action_group; GtkTreeView *view; GncOwner *owner = NULL; gboolean sensitive; gboolean is_readwrite = !qof_book_is_readonly(gnc_get_current_book()); g_return_if_fail(GNC_IS_PLUGIN_PAGE_OWNER_TREE(page)); if (!selection) { sensitive = FALSE; } else { g_return_if_fail(GTK_IS_TREE_SELECTION(selection)); view = gtk_tree_selection_get_tree_view (selection); owner = gnc_tree_view_owner_get_selected_owner (GNC_TREE_VIEW_OWNER(view)); sensitive = (owner != NULL); } action_group = gnc_plugin_page_get_action_group(GNC_PLUGIN_PAGE(page)); gnc_plugin_update_actions (action_group, actions_requiring_owner_always, "sensitive", sensitive); gnc_plugin_update_actions (action_group, actions_requiring_owner_rw, "sensitive", sensitive && is_readwrite); g_signal_emit (page, plugin_page_signals[OWNER_SELECTED], 0, owner); }
void gnc_plugin_page_invoice_update_menus (GncPluginPage *page, gboolean is_posted, gboolean can_unpost) { GtkActionGroup *action_group; gboolean is_readonly = qof_book_is_readonly(gnc_get_current_book()); g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(page)); if (is_readonly) { // Are we readonly? Then don't allow any actions. is_posted = TRUE; can_unpost = FALSE; } action_group = gnc_plugin_page_get_action_group(page); gnc_plugin_update_actions (action_group, posted_actions, "sensitive", is_posted); gnc_plugin_update_actions (action_group, unposted_actions, "sensitive", !is_posted); gnc_plugin_update_actions (action_group, can_unpost_actions, "sensitive", can_unpost); gnc_plugin_update_actions (action_group, invoice_book_readwrite_actions, "sensitive", !is_readonly); }
static void update_inactive_actions(GncPluginPage *plugin_page) { GncMainWindow *window; GtkActionGroup *action_group; // We are readonly - so we have to switch particular actions to inactive. gboolean is_readwrite = !qof_book_is_readonly(gnc_get_current_book()); // We continue only if the current page is a plugin page if (!plugin_page || !GNC_IS_PLUGIN_PAGE(plugin_page)) return; // Check that this is a main window and not embedded sx if (!GNC_IS_MAIN_WINDOW(plugin_page->window)) return; window = GNC_MAIN_WINDOW(plugin_page->window); g_return_if_fail(GNC_IS_MAIN_WINDOW(window)); action_group = gnc_main_window_get_action_group(window, PLUGIN_ACTIONS_NAME); g_return_if_fail(GTK_IS_ACTION_GROUP(action_group)); /* Set the action's sensitivity */ gnc_plugin_update_actions (action_group, readonly_inactive_actions, "sensitive", is_readwrite); }
static void gnc_plugin_business_update_menus (GncPluginPage *plugin_page) { GncMainWindow *window; GtkActionGroup *action_group; gboolean is_txn_register, is_bus_txn = FALSE, is_bus_doc = FALSE; // We continue only if the current page is a plugin page if (!plugin_page || !GNC_IS_PLUGIN_PAGE(plugin_page)) return; // Check that this is a main window and not embedded sx if (!GNC_IS_MAIN_WINDOW(plugin_page->window)) return; is_txn_register = GNC_IS_PLUGIN_PAGE_REGISTER(plugin_page); window = GNC_MAIN_WINDOW(plugin_page->window); g_return_if_fail(GNC_IS_MAIN_WINDOW(window)); action_group = gnc_main_window_get_action_group(window, PLUGIN_ACTIONS_NAME); g_return_if_fail(GTK_IS_ACTION_GROUP(action_group)); if (is_txn_register) { Transaction *trans = gnc_plugin_page_register_get_current_txn (GNC_PLUGIN_PAGE_REGISTER(plugin_page)); if (xaccTransCountSplits(trans) > 0) is_bus_txn = (xaccTransGetFirstAPARAcctSplit(trans, TRUE) != NULL); is_bus_doc = (xaccTransGetTxnType (trans) == TXN_TYPE_INVOICE); } // Change visibility and also sensitivity according to whether we are in a txn register gnc_plugin_update_actions (action_group, register_txn_actions, "sensitive", is_txn_register && !is_bus_txn && !is_bus_doc); gnc_plugin_update_actions (action_group, register_txn_actions, "visible", is_txn_register && !is_bus_txn && !is_bus_doc); gnc_plugin_update_actions (action_group, register_bus_txn_actions, "sensitive", is_txn_register && is_bus_txn && !is_bus_doc); gnc_plugin_update_actions (action_group, register_bus_txn_actions, "visible", is_txn_register && is_bus_txn && !is_bus_doc); }
static void update_inactive_actions(GncPluginPage *plugin_page) { GtkActionGroup *action_group; gboolean is_sensitive = !qof_book_is_readonly(gnc_get_current_book()); // We are readonly - so we have to switch particular actions to inactive. g_return_if_fail(plugin_page); g_return_if_fail(GNC_IS_PLUGIN_PAGE(plugin_page)); /* Get the action group */ action_group = gnc_plugin_page_get_action_group(plugin_page); g_return_if_fail(GTK_IS_ACTION_GROUP (action_group)); /* Set the action's sensitivity */ gnc_plugin_update_actions (action_group, readonly_inactive_actions, "sensitive", is_sensitive); }