Move view changing functionality from GtkStackSwitcher into a view menu

This commit is contained in:
Gergely Polonkai 2014-07-03 14:08:51 +02:00
parent 438d8099b8
commit 20cc731289
4 changed files with 90 additions and 31 deletions

View File

@ -126,7 +126,7 @@ ag_app_open_chart(AgApp *app, GFile *file)
uri = g_file_get_uri(file);
ag_window_set_uri(AG_WINDOW(window), uri);
g_free(uri);
ag_window_open_chart_tab(AG_WINDOW(window));
ag_window_change_tab(AG_WINDOW(window), "chart");
}
static void

View File

@ -65,6 +65,17 @@ ag_window_gear_menu_action(GSimpleAction *action, GVariant *parameter, gpointer
g_variant_unref(state);
}
static void
ag_window_view_menu_action(GSimpleAction *action, GVariant *parameter, gpointer user_data)
{
GVariant *state;
state = g_action_get_state(G_ACTION(action));
g_action_change_state(G_ACTION(action), g_variant_new_boolean(!g_variant_get_boolean(state)));
g_variant_unref(state);
}
static void
ag_window_close_action(GSimpleAction *action, GVariant *parameter, gpointer user_data)
{
@ -475,6 +486,7 @@ static GActionEntry win_entries[] = {
{ "save", ag_window_save_action, NULL, NULL, NULL },
{ "save-as", ag_window_save_as_action, NULL, NULL, NULL },
{ "export-svg", ag_window_export_svg_action, NULL, NULL, NULL },
{ "view-menu", ag_window_view_menu_action, NULL, "false", NULL },
{ "gear-menu", ag_window_gear_menu_action, NULL, "false", NULL },
{ "change-tab", ag_window_change_tab_action, "s", "'edit'", NULL },
};
@ -677,7 +689,11 @@ ag_window_settings_save(GtkWindow *window, GSettings *settings)
}
void
ag_window_open_chart_tab(AgWindow *window)
ag_window_change_tab(AgWindow *window, const gchar *tab_name)
{
gtk_stack_set_visible_child_name(GTK_STACK(window->priv->stack), "chart");
gtk_stack_set_visible_child_name(GTK_STACK(window->priv->stack), tab_name);
g_action_change_state(
g_action_map_lookup_action(G_ACTION_MAP(window), "change-tab"),
g_variant_new_string(tab_name)
);
}

View File

@ -45,7 +45,7 @@ void ag_window_settings_restore(GtkWindow *window,
GSettings *settings);
void ag_window_settings_save(GtkWindow *window,
GSettings *settings);
void ag_window_open_chart_tab(AgWindow *window);
void ag_window_change_tab(AgWindow *window, const gchar *tab_name);
#define AG_WINDOW_ERROR (ag_window_error_quark())
GQuark ag_window_error_quark(void);

View File

@ -2,6 +2,34 @@
<!-- Generated with glade 3.18.3 -->
<interface>
<requires lib="gtk+" version="3.12"/>
<menu id="view_menu">
<section>
<item>
<attribute name="label" translatable="yes">Edit</attribute>
<attribute name="action">win.change-tab</attribute>
<attribute name="accel">&lt;F3&gt;</attribute>
<attribute name="target">edit</attribute>
</item>
<item>
<attribute name="label" translatable="yes">Chart</attribute>
<attribute name="action">win.change-tab</attribute>
<attribute name="accel">&lt;F5&gt;</attribute>
<attribute name="target">chart</attribute>
</item>
<item>
<attribute name="label" translatable="yes">Aspects</attribute>
<attribute name="action">win.change-tab</attribute>
<attribute name="accel">&lt;F6&gt;</attribute>
<attribute name="target">aspects</attribute>
</item>
<item>
<attribute name="label" translatable="yes">Points</attribute>
<attribute name="action">win.change-tab</attribute>
<attribute name="accel">&lt;F7&gt;</attribute>
<attribute name="target">points</attribute>
</item>
</section>
</menu>
<menu id="gear_menu">
<section>
<item>
@ -87,7 +115,6 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="vexpand">False</property>
<property name="hexpand">True</property>
<property name="show_close_button">True</property>
<child>
<object class="GtkBox" id="box">
@ -97,37 +124,53 @@
<style>
<class name="linked"/>
</style>
</object>
</child>
<child>
<object class="GtkMenuButton">
<property name="visible">True</property>
<property name="valign">center</property>
<property name="can_focus">False</property>
<property name="action_name">win.gear-menu</property>
<property name="menu_model">gear_menu</property>
<property name="use_popover">True</property>
<style>
<class name="image-button"/>
</style>
<child>
<object class="GtkStackSwitcher">
<object class="GtkImage" id="gear_image">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="stack">stack</property>
<property name="icon_size">1</property>
<property name="icon_name">emblem-system-symbolic</property>
</object>
</child>
<child>
<object class="GtkMenuButton">
<property name="visible">True</property>
<property name="valign">center</property>
<property name="can_focus">False</property>
<property name="action_name">win.gear-menu</property>
<property name="menu_model">gear_menu</property>
<property name="use_popover">True</property>
<style>
<class name="image-button"/>
</style>
<child>
<object class="GtkImage" id="gear_image">
<property name="visible">True</property>
<property name="icon_size">1</property>
<property name="icon_name">emblem-system-symbolic</property>
</object>
</child>
</object>
<packing>
<property name="pack_type">end</property>
</packing>
</child>
</object>
<packing>
<property name="pack_type">end</property>
</packing>
</child>
<child>
<object class="GtkMenuButton">
<property name="visible">True</property>
<property name="valign">center</property>
<property name="can_focus">False</property>
<property name="action_name">win.view-menu</property>
<property name="menu_model">view_menu</property>
<property name="use_popover">True</property>
<style>
<class name="image-button"/>
</style>
<child>
<object class="GtkImage" id="view_image">
<property name="visible">True</property>
<property name="icon_size">1</property>
<property name="icon_name">document-properties-symbolic</property>
</object>
</child>
</object>
<packing>
<property name="pack_type">end</property>
</packing>
</child>
</object>
</child>