mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
Add action group to View menu for the tab position
This commit is contained in:
parent
e9df8d41d2
commit
2b447d4787
@ -166,6 +166,7 @@ static void gnc_main_window_cmd_view_refresh (GtkAction *action, GncMainWindow *
|
|||||||
static void gnc_main_window_cmd_view_toolbar (GtkAction *action, GncMainWindow *window);
|
static void gnc_main_window_cmd_view_toolbar (GtkAction *action, GncMainWindow *window);
|
||||||
static void gnc_main_window_cmd_view_summary (GtkAction *action, GncMainWindow *window);
|
static void gnc_main_window_cmd_view_summary (GtkAction *action, GncMainWindow *window);
|
||||||
static void gnc_main_window_cmd_view_statusbar (GtkAction *action, GncMainWindow *window);
|
static void gnc_main_window_cmd_view_statusbar (GtkAction *action, GncMainWindow *window);
|
||||||
|
static void gnc_main_window_cmd_view_tab_position (GtkAction *action, GtkRadioAction *current, GncMainWindow *window);
|
||||||
static void gnc_main_window_cmd_actions_reset_warnings (GtkAction *action, GncMainWindow *window);
|
static void gnc_main_window_cmd_actions_reset_warnings (GtkAction *action, GncMainWindow *window);
|
||||||
static void gnc_main_window_cmd_actions_rename_page (GtkAction *action, GncMainWindow *window);
|
static void gnc_main_window_cmd_actions_rename_page (GtkAction *action, GncMainWindow *window);
|
||||||
static void gnc_main_window_cmd_window_new (GtkAction *action, GncMainWindow *window);
|
static void gnc_main_window_cmd_window_new (GtkAction *action, GncMainWindow *window);
|
||||||
@ -339,6 +340,7 @@ static GtkActionEntry gnc_menu_actions [] =
|
|||||||
|
|
||||||
/* View menu */
|
/* View menu */
|
||||||
|
|
||||||
|
{ "ViewTabPositionAction", NULL, N_("Tab P_osition"), NULL, NULL, NULL },
|
||||||
{
|
{
|
||||||
"ViewSortByAction", NULL, N_("_Sort By..."), NULL,
|
"ViewSortByAction", NULL, N_("_Sort By..."), NULL,
|
||||||
N_("Select sorting criteria for this page view"), NULL
|
N_("Select sorting criteria for this page view"), NULL
|
||||||
@ -424,6 +426,32 @@ static GtkToggleActionEntry toggle_actions [] =
|
|||||||
/** The number of toggle actions provided by the main window. */
|
/** The number of toggle actions provided by the main window. */
|
||||||
static guint n_toggle_actions = G_N_ELEMENTS (toggle_actions);
|
static guint n_toggle_actions = G_N_ELEMENTS (toggle_actions);
|
||||||
|
|
||||||
|
/** An array of all of the radio actions provided by the main window
|
||||||
|
* for tab positions. */
|
||||||
|
static GtkRadioActionEntry tab_pos_radio_entries [] =
|
||||||
|
{
|
||||||
|
{
|
||||||
|
"ViewTabPositionTopAction", NULL, N_("To_p"), NULL,
|
||||||
|
N_("Display the notebook tabs at the top of the window."), GTK_POS_TOP
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ViewTabPositionBottomAction", NULL, N_("B_ottom"), NULL,
|
||||||
|
N_("Display the notebook tabs at the bottom of the window."), GTK_POS_BOTTOM
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ViewTabPositionLeftAction", NULL, N_("_Left"), NULL,
|
||||||
|
N_("Display the notebook tabs at the left of the window."), GTK_POS_LEFT
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ViewTabPositionRightAction", NULL, N_("_Right"), NULL,
|
||||||
|
N_("Display the notebook tabs at the right of the window."), GTK_POS_RIGHT
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
/** The number of radio actions provided by the main window for tab
|
||||||
|
* positions. */
|
||||||
|
static guint n_tab_pos_radio_entries = G_N_ELEMENTS (tab_pos_radio_entries);
|
||||||
|
|
||||||
#ifndef MAC_INTEGRATION
|
#ifndef MAC_INTEGRATION
|
||||||
/** An array of all of the radio action provided by the main window
|
/** An array of all of the radio action provided by the main window
|
||||||
* code. */
|
* code. */
|
||||||
@ -3576,12 +3604,21 @@ gnc_main_window_update_tab_position (gpointer prefs, gchar *pref, gpointer user_
|
|||||||
GncMainWindow *window;
|
GncMainWindow *window;
|
||||||
GtkPositionType position = GTK_POS_TOP;
|
GtkPositionType position = GTK_POS_TOP;
|
||||||
GncMainWindowPrivate *priv;
|
GncMainWindowPrivate *priv;
|
||||||
|
GtkAction *first_action;
|
||||||
|
GtkAction *position_action;
|
||||||
|
gsize i;
|
||||||
|
|
||||||
g_return_if_fail (GNC_IS_MAIN_WINDOW(user_data));
|
g_return_if_fail (GNC_IS_MAIN_WINDOW(user_data));
|
||||||
|
|
||||||
window = GNC_MAIN_WINDOW(user_data);
|
window = GNC_MAIN_WINDOW(user_data);
|
||||||
|
|
||||||
ENTER ("window %p", window);
|
ENTER ("window %p", window);
|
||||||
|
|
||||||
|
/* Ignore notification of the preference that is being set to false when
|
||||||
|
* the choice of tab position changes. */
|
||||||
|
if (pref && !gnc_prefs_get_bool (GNC_PREFS_GROUP_GENERAL, pref))
|
||||||
|
return;
|
||||||
|
|
||||||
if (gnc_prefs_get_bool (GNC_PREFS_GROUP_GENERAL, GNC_PREF_TAB_POSITION_BOTTOM))
|
if (gnc_prefs_get_bool (GNC_PREFS_GROUP_GENERAL, GNC_PREF_TAB_POSITION_BOTTOM))
|
||||||
position = GTK_POS_BOTTOM;
|
position = GTK_POS_BOTTOM;
|
||||||
else if (gnc_prefs_get_bool (GNC_PREFS_GROUP_GENERAL, GNC_PREF_TAB_POSITION_LEFT))
|
else if (gnc_prefs_get_bool (GNC_PREFS_GROUP_GENERAL, GNC_PREF_TAB_POSITION_LEFT))
|
||||||
@ -3592,6 +3629,26 @@ gnc_main_window_update_tab_position (gpointer prefs, gchar *pref, gpointer user_
|
|||||||
priv = GNC_MAIN_WINDOW_GET_PRIVATE (window);
|
priv = GNC_MAIN_WINDOW_GET_PRIVATE (window);
|
||||||
gtk_notebook_set_tab_pos (GTK_NOTEBOOK (priv->notebook), position);
|
gtk_notebook_set_tab_pos (GTK_NOTEBOOK (priv->notebook), position);
|
||||||
|
|
||||||
|
/* Groups of radio actions use the first action for the callback and all
|
||||||
|
* change events so block/unblock signals on the first radio action. */
|
||||||
|
first_action = gtk_action_group_get_action (priv->action_group,
|
||||||
|
tab_pos_radio_entries[0].name);
|
||||||
|
|
||||||
|
for (i = n_tab_pos_radio_entries - 1; i > 0; i--)
|
||||||
|
if (tab_pos_radio_entries[i].value == position)
|
||||||
|
break;
|
||||||
|
|
||||||
|
position_action = gtk_action_group_get_action (priv->action_group,
|
||||||
|
tab_pos_radio_entries[i].name);
|
||||||
|
|
||||||
|
g_signal_handlers_block_by_func (G_OBJECT (first_action),
|
||||||
|
G_CALLBACK (gnc_main_window_cmd_view_tab_position),
|
||||||
|
window);
|
||||||
|
gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (position_action), TRUE);
|
||||||
|
g_signal_handlers_unblock_by_func (G_OBJECT (first_action),
|
||||||
|
G_CALLBACK (gnc_main_window_cmd_view_tab_position),
|
||||||
|
window);
|
||||||
|
|
||||||
LEAVE ("");
|
LEAVE ("");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3844,6 +3901,12 @@ gnc_main_window_setup_window (GncMainWindow *window)
|
|||||||
g_assert(merge_id || error);
|
g_assert(merge_id || error);
|
||||||
if (merge_id)
|
if (merge_id)
|
||||||
{
|
{
|
||||||
|
gtk_action_group_add_radio_actions (priv->action_group,
|
||||||
|
tab_pos_radio_entries,
|
||||||
|
n_tab_pos_radio_entries,
|
||||||
|
0,
|
||||||
|
G_CALLBACK(gnc_main_window_cmd_view_tab_position),
|
||||||
|
window);
|
||||||
gtk_window_add_accel_group (GTK_WINDOW (window),
|
gtk_window_add_accel_group (GTK_WINDOW (window),
|
||||||
gtk_ui_manager_get_accel_group(window->ui_merge));
|
gtk_ui_manager_get_accel_group(window->ui_merge));
|
||||||
gtk_ui_manager_ensure_update (window->ui_merge);
|
gtk_ui_manager_ensure_update (window->ui_merge);
|
||||||
@ -4601,6 +4664,45 @@ gnc_main_window_cmd_window_move_page (GtkAction *action, GncMainWindow *window)
|
|||||||
LEAVE("page moved");
|
LEAVE("page moved");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gnc_main_window_cmd_view_tab_position (GtkAction *action,
|
||||||
|
GtkRadioAction *current,
|
||||||
|
GncMainWindow *window)
|
||||||
|
{
|
||||||
|
GtkPositionType value = gtk_radio_action_get_current_value(current);
|
||||||
|
|
||||||
|
if (value != GTK_POS_TOP && gnc_prefs_get_bool (GNC_PREFS_GROUP_GENERAL, GNC_PREF_TAB_POSITION_TOP))
|
||||||
|
gnc_prefs_set_bool (GNC_PREFS_GROUP_GENERAL, GNC_PREF_TAB_POSITION_TOP, FALSE);
|
||||||
|
|
||||||
|
if (value != GTK_POS_BOTTOM && gnc_prefs_get_bool (GNC_PREFS_GROUP_GENERAL, GNC_PREF_TAB_POSITION_BOTTOM))
|
||||||
|
gnc_prefs_set_bool (GNC_PREFS_GROUP_GENERAL, GNC_PREF_TAB_POSITION_BOTTOM, FALSE);
|
||||||
|
|
||||||
|
if (value != GTK_POS_LEFT && gnc_prefs_get_bool (GNC_PREFS_GROUP_GENERAL, GNC_PREF_TAB_POSITION_LEFT))
|
||||||
|
gnc_prefs_set_bool (GNC_PREFS_GROUP_GENERAL, GNC_PREF_TAB_POSITION_LEFT, FALSE);
|
||||||
|
|
||||||
|
if (value != GTK_POS_RIGHT && gnc_prefs_get_bool (GNC_PREFS_GROUP_GENERAL, GNC_PREF_TAB_POSITION_RIGHT))
|
||||||
|
gnc_prefs_set_bool (GNC_PREFS_GROUP_GENERAL, GNC_PREF_TAB_POSITION_RIGHT, FALSE);
|
||||||
|
|
||||||
|
switch (value)
|
||||||
|
{
|
||||||
|
case GTK_POS_TOP:
|
||||||
|
gnc_prefs_set_bool (GNC_PREFS_GROUP_GENERAL, GNC_PREF_TAB_POSITION_TOP, TRUE);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case GTK_POS_BOTTOM:
|
||||||
|
gnc_prefs_set_bool (GNC_PREFS_GROUP_GENERAL, GNC_PREF_TAB_POSITION_BOTTOM, TRUE);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case GTK_POS_LEFT:
|
||||||
|
gnc_prefs_set_bool (GNC_PREFS_GROUP_GENERAL, GNC_PREF_TAB_POSITION_LEFT, TRUE);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case GTK_POS_RIGHT:
|
||||||
|
gnc_prefs_set_bool (GNC_PREFS_GROUP_GENERAL, GNC_PREF_TAB_POSITION_RIGHT, TRUE);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#ifndef MAC_INTEGRATION
|
#ifndef MAC_INTEGRATION
|
||||||
static void
|
static void
|
||||||
gnc_main_window_cmd_window_raise (GtkAction *action,
|
gnc_main_window_cmd_window_raise (GtkAction *action,
|
||||||
|
@ -51,6 +51,12 @@
|
|||||||
<menuitem name="ViewToolbar" action="ViewToolbarAction"/>
|
<menuitem name="ViewToolbar" action="ViewToolbarAction"/>
|
||||||
<menuitem name="ViewSummary" action="ViewSummaryAction"/>
|
<menuitem name="ViewSummary" action="ViewSummaryAction"/>
|
||||||
<menuitem name="ViewStatusbar" action="ViewStatusbarAction"/>
|
<menuitem name="ViewStatusbar" action="ViewStatusbarAction"/>
|
||||||
|
<menu name="ViewTabPosition" action="ViewTabPositionAction">
|
||||||
|
<menuitem name="ViewTabPositionTop" action="ViewTabPositionTopAction"/>
|
||||||
|
<menuitem name="ViewTabPositionBottom" action="ViewTabPositionBottomAction"/>
|
||||||
|
<menuitem name="ViewTabPositionLeft" action="ViewTabPositionLeftAction"/>
|
||||||
|
<menuitem name="ViewTabPositionRight" action="ViewTabPositionRightAction"/>
|
||||||
|
</menu>
|
||||||
<separator name="ViewSep1"/>
|
<separator name="ViewSep1"/>
|
||||||
<placeholder name="ViewContentPlaceholder"/>
|
<placeholder name="ViewContentPlaceholder"/>
|
||||||
<separator name="ViewSep2"/>
|
<separator name="ViewSep2"/>
|
||||||
|
Loading…
Reference in New Issue
Block a user