mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
Add support for opening account registers from the budget page. Use
shorter toolbar labels. git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@12149 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
parent
91a4eef385
commit
f8afaef956
@ -1,5 +1,14 @@
|
||||
2005-12-07 David Hampton <hampton@employees.org>
|
||||
|
||||
* src/gnome/gnc-plugin-page-budget.c:
|
||||
* src/gnome/ui/gnc-plugin-page-budget-ui.xml: Add support for
|
||||
opening account registers from the budget page. Use shorter
|
||||
toolbar labels.
|
||||
|
||||
* src/gnome-utils/gnc-tree-view-account.c: Add a check that the
|
||||
tree selection is in the right mode to call
|
||||
gnc_tree_view_account_get_selected_account().
|
||||
|
||||
* configure.in: Comment out the recently introduced second set of
|
||||
checks for gconf. They cause problems with schema installation.
|
||||
|
||||
|
@ -898,11 +898,16 @@ gnc_tree_view_account_get_selected_account (GncTreeViewAccount *view)
|
||||
GtkTreeModel *f_model, *s_model;
|
||||
GtkTreeIter iter, f_iter, s_iter;
|
||||
Account *account;
|
||||
GtkSelectionMode mode;
|
||||
|
||||
ENTER("view %p", view);
|
||||
g_return_val_if_fail (GNC_IS_TREE_VIEW_ACCOUNT (view), NULL);
|
||||
|
||||
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(view));
|
||||
mode = gtk_tree_selection_get_mode(selection);
|
||||
if ((mode != GTK_SELECTION_SINGLE) && (mode != GTK_SELECTION_BROWSE)) {
|
||||
return NULL;
|
||||
}
|
||||
if (!gtk_tree_selection_get_selected (selection, &s_model, &s_iter)) {
|
||||
LEAVE("no account, get_selected failed");
|
||||
return FALSE;
|
||||
|
@ -92,10 +92,16 @@ static gboolean gnc_plugin_page_budget_button_press_cb(
|
||||
static void gnc_plugin_page_budget_double_click_cb(
|
||||
GtkTreeView *treeview, GtkTreePath *path, GtkTreeViewColumn *col,
|
||||
GncPluginPageBudget *page);
|
||||
static void gnc_plugin_page_budget_selection_changed_cb(
|
||||
GtkTreeSelection *selection, GncPluginPageBudget *page);
|
||||
|
||||
static void gnc_plugin_page_budget_view_refresh (GncPluginPageBudget *page);
|
||||
|
||||
/* Command Callbacks */
|
||||
static void gnc_plugin_page_budget_cmd_open_account(
|
||||
GtkAction *action, GncPluginPageBudget *page);
|
||||
static void gnc_plugin_page_budget_cmd_open_subaccounts(
|
||||
GtkAction *action, GncPluginPageBudget *page);
|
||||
static void gnc_plugin_page_budget_cmd_delete_budget(
|
||||
GtkAction *action, GncPluginPageBudget *page);
|
||||
static void gnc_plugin_page_budget_cmd_view_options(
|
||||
@ -109,9 +115,15 @@ static GtkActionEntry gnc_plugin_page_budget_actions [] = {
|
||||
/* Toplevel */
|
||||
{ "FakeToplevel", "", NULL, NULL, NULL, NULL },
|
||||
|
||||
/* TODO: maybe there should be menu entries, too? */
|
||||
/* File menu */
|
||||
{ "OpenAccountAction", GNC_STOCK_OPEN_ACCOUNT, N_("Open _Account"), NULL,
|
||||
N_("Open the selected account"),
|
||||
G_CALLBACK (gnc_plugin_page_budget_cmd_open_account) },
|
||||
{ "OpenSubaccountsAction", GNC_STOCK_OPEN_ACCOUNT, N_("Open _Subaccounts"), NULL,
|
||||
N_("Open the selected account and all its subaccounts"),
|
||||
G_CALLBACK (gnc_plugin_page_budget_cmd_open_subaccounts) },
|
||||
|
||||
/* Toolbar buttons */
|
||||
/* Edit menu */
|
||||
{ "DeleteBudgetAction", GNC_STOCK_DELETE_BUDGET, N_("_Delete Budget"),
|
||||
NULL, N_("Delete the budget"),
|
||||
G_CALLBACK (gnc_plugin_page_budget_cmd_delete_budget) },
|
||||
@ -127,27 +139,20 @@ static GtkActionEntry gnc_plugin_page_budget_actions [] = {
|
||||
static guint gnc_plugin_page_budget_n_actions =
|
||||
G_N_ELEMENTS (gnc_plugin_page_budget_actions);
|
||||
|
||||
// TODO: What's all this do?
|
||||
#if 0
|
||||
static const gchar *actions_requiring_budget[] = {
|
||||
"OpenBudgetAction",
|
||||
"BudgetViewOptionsAction",
|
||||
"DeleteBudgetAction",
|
||||
static const gchar *actions_requiring_account[] = {
|
||||
"OpenAccountAction",
|
||||
"OpenSubaccountsAction",
|
||||
NULL
|
||||
};
|
||||
|
||||
|
||||
/** Short labels for use on the toolbar buttons. */
|
||||
static action_toolbar_labels toolbar_labels[] = {
|
||||
|
||||
{ "OpenBudgetAction", N_("Open") },
|
||||
//{ "EditBudgetAction", N_("Edit") },
|
||||
//{ "EditBudgetOptionsAction", N_("Options") },
|
||||
{ "NewBudgetAction", N_("New") },
|
||||
{ "OpenAccountAction", N_("Open") },
|
||||
{ "DeleteBudgetAction", N_("Delete") },
|
||||
{ "OptionsBudgetAction", N_("Options") },
|
||||
{ "EstimateBudgetAction", N_("Estimate") },
|
||||
{ NULL, NULL },
|
||||
};
|
||||
#endif
|
||||
|
||||
typedef struct GncPluginPageBudgetPrivate
|
||||
{
|
||||
@ -268,8 +273,7 @@ gnc_plugin_page_budget_init (GncPluginPageBudget *plugin_page)
|
||||
gnc_plugin_page_budget_actions,
|
||||
gnc_plugin_page_budget_n_actions,
|
||||
plugin_page);
|
||||
// FIXME? needed?
|
||||
//gnc_gnome_utils_init_short_names (action_group, toolbar_labels);
|
||||
gnc_plugin_init_short_names (action_group, toolbar_labels);
|
||||
|
||||
// FIXME: need to test this url case
|
||||
if(!url) {
|
||||
@ -378,6 +382,9 @@ gnc_plugin_page_budget_create_widget (GncPluginPage *plugin_page)
|
||||
selection = gtk_tree_view_get_selection(tree_view);
|
||||
gtk_tree_selection_set_mode(selection, GTK_SELECTION_MULTIPLE);
|
||||
|
||||
g_signal_connect (G_OBJECT (selection), "changed",
|
||||
G_CALLBACK (gnc_plugin_page_budget_selection_changed_cb),
|
||||
plugin_page);
|
||||
g_signal_connect (G_OBJECT (tree_view), "button-press-event",
|
||||
G_CALLBACK (gnc_plugin_page_budget_button_press_cb),
|
||||
plugin_page);
|
||||
@ -385,6 +392,7 @@ gnc_plugin_page_budget_create_widget (GncPluginPage *plugin_page)
|
||||
G_CALLBACK (gnc_plugin_page_budget_double_click_cb),
|
||||
page);
|
||||
|
||||
gnc_plugin_page_budget_selection_changed_cb (NULL, page);
|
||||
gtk_tree_view_set_headers_visible(tree_view, TRUE);
|
||||
gtk_widget_show (GTK_WIDGET (tree_view));
|
||||
gtk_container_add (GTK_CONTAINER (scrolled_window),
|
||||
@ -476,8 +484,86 @@ gnc_plugin_page_budget_double_click_cb (GtkTreeView *treeview,
|
||||
gnc_main_window_open_page(GNC_MAIN_WINDOW(window), new_page);
|
||||
}
|
||||
|
||||
static void
|
||||
gnc_plugin_page_budget_selection_changed_cb (GtkTreeSelection *selection,
|
||||
GncPluginPageBudget *page)
|
||||
{
|
||||
GtkActionGroup *action_group;
|
||||
GtkTreeView *view;
|
||||
GList *acct_list;
|
||||
gboolean sensitive;
|
||||
|
||||
g_return_if_fail(GNC_IS_PLUGIN_PAGE_BUDGET(page));
|
||||
|
||||
if (!selection) {
|
||||
sensitive = FALSE;
|
||||
} else {
|
||||
g_return_if_fail(GTK_IS_TREE_SELECTION(selection));
|
||||
view = gtk_tree_selection_get_tree_view (selection);
|
||||
acct_list = gnc_tree_view_account_get_selected_accounts(
|
||||
GNC_TREE_VIEW_ACCOUNT(view));
|
||||
|
||||
/* Check here for placeholder accounts, etc. */
|
||||
sensitive = (g_list_length(acct_list) > 0);
|
||||
g_list_free(acct_list);
|
||||
}
|
||||
|
||||
action_group = gnc_plugin_page_get_action_group(GNC_PLUGIN_PAGE(page));
|
||||
gnc_plugin_update_actions (action_group, actions_requiring_account,
|
||||
"sensitive", sensitive);
|
||||
}
|
||||
|
||||
|
||||
/* Command callbacks */
|
||||
|
||||
static void
|
||||
gnc_plugin_page_budget_cmd_open_account (GtkAction *action,
|
||||
GncPluginPageBudget *page)
|
||||
{
|
||||
GncPluginPageBudgetPrivate *priv;
|
||||
GtkWidget *window;
|
||||
GncPluginPage *new_page;
|
||||
GList *acct_list, *tmp;
|
||||
Account *account;
|
||||
|
||||
g_return_if_fail (GNC_IS_PLUGIN_PAGE_BUDGET (page));
|
||||
priv = GNC_PLUGIN_PAGE_BUDGET_GET_PRIVATE(page);
|
||||
acct_list = gnc_tree_view_account_get_selected_accounts(
|
||||
GNC_TREE_VIEW_ACCOUNT(priv->tree_view));
|
||||
|
||||
window = GNC_PLUGIN_PAGE (page)->window;
|
||||
for (tmp = acct_list; tmp; tmp = g_list_next(tmp)) {
|
||||
account = tmp->data;
|
||||
new_page = gnc_plugin_page_register_new (account, FALSE);
|
||||
gnc_main_window_open_page (GNC_MAIN_WINDOW(window), new_page);
|
||||
}
|
||||
g_list_free(acct_list);
|
||||
}
|
||||
|
||||
static void
|
||||
gnc_plugin_page_budget_cmd_open_subaccounts (GtkAction *action,
|
||||
GncPluginPageBudget *page)
|
||||
{
|
||||
GncPluginPageBudgetPrivate *priv;
|
||||
GtkWidget *window;
|
||||
GncPluginPage *new_page;
|
||||
GList *acct_list, *tmp;
|
||||
Account *account;
|
||||
|
||||
g_return_if_fail (GNC_IS_PLUGIN_PAGE_BUDGET (page));
|
||||
priv = GNC_PLUGIN_PAGE_BUDGET_GET_PRIVATE(page);
|
||||
acct_list = gnc_tree_view_account_get_selected_accounts(
|
||||
GNC_TREE_VIEW_ACCOUNT(priv->tree_view));
|
||||
|
||||
window = GNC_PLUGIN_PAGE (page)->window;
|
||||
for (tmp = acct_list; tmp; tmp = g_list_next(tmp)) {
|
||||
account = tmp->data;
|
||||
new_page = gnc_plugin_page_register_new (account, TRUE);
|
||||
gnc_main_window_open_page (GNC_MAIN_WINDOW(window), new_page);
|
||||
}
|
||||
g_list_free(acct_list);
|
||||
}
|
||||
|
||||
static void
|
||||
gnc_plugin_page_budget_cmd_delete_budget (GtkAction *action,
|
||||
GncPluginPageBudget *page)
|
||||
|
@ -1,5 +1,13 @@
|
||||
<ui>
|
||||
<menubar>
|
||||
<menu name="File" action="FileAction">
|
||||
<menu name="FileOpenMenu" action="FileOpenMenuAction">
|
||||
<placeholder name="FileOpenBottomPlaceholder">
|
||||
<menuitem name="FileOpenAccount" action="OpenAccountAction"/>
|
||||
<menuitem name="FileOpenSubaccounts" action="OpenSubaccountsAction"/>
|
||||
</placeholder>
|
||||
</menu>
|
||||
</menu>
|
||||
<menu name="Edit" action="EditAction">
|
||||
<placeholder name="EditSelectedPlaceholder">
|
||||
<menuitem name="Estimate" action="EstimateBudgetAction"/>
|
||||
@ -17,6 +25,7 @@
|
||||
|
||||
<toolbar name="DefaultToolbar">
|
||||
<placeholder name="DefaultToolbarPlaceholder">
|
||||
<toolitem name="OpenAccount" action="OpenAccountAction"/>
|
||||
<separator name="ToolbarSep3"/>
|
||||
<toolitem name="Options" action="OptionsBudgetAction"/>
|
||||
<separator name="ToolbarSep4"/>
|
||||
|
Loading…
Reference in New Issue
Block a user