diff --git a/src/ag-window.c b/src/ag-window.c
index 99bfbf4..e41e989 100644
--- a/src/ag-window.c
+++ b/src/ag-window.c
@@ -17,8 +17,9 @@
struct _AgWindowPrivate {
GtkWidget *header_bar;
- GtkWidget *menubutton_revealer;
+ GtkWidget *menubutton_stack;
GtkWidget *new_back_stack;
+ GtkWidget *selection_toolbar;
GtkWidget *stack;
GtkWidget *name;
GtkWidget *north_lat;
@@ -1003,11 +1004,23 @@ ag_window_tab_changed_cb(GtkStack *stack, GParamSpec *pspec, AgWindow *window)
}
if (strcmp("list", active_tab_name) == 0) {
- gtk_revealer_set_reveal_child(GTK_REVEALER(priv->menubutton_revealer), FALSE);
- gtk_stack_set_visible_child_name(GTK_STACK(priv->new_back_stack), "new");
+ gtk_stack_set_visible_child_name(
+ GTK_STACK(priv->menubutton_stack),
+ "list"
+ );
+ gtk_stack_set_visible_child_name(
+ GTK_STACK(priv->new_back_stack),
+ "new"
+ );
} else {
- gtk_revealer_set_reveal_child(GTK_REVEALER(priv->menubutton_revealer), TRUE);
- gtk_stack_set_visible_child_name(GTK_STACK(priv->new_back_stack), "back");
+ gtk_stack_set_visible_child_name(
+ GTK_STACK(priv->menubutton_stack),
+ "chart"
+ );
+ gtk_stack_set_visible_child_name(
+ GTK_STACK(priv->new_back_stack),
+ "back"
+ );
}
// Note that priv->current_tab is actually the previously selected tab, not
@@ -1083,17 +1096,71 @@ ag_window_refresh_action(GSimpleAction *action,
ag_window_load_chart_list(AG_WINDOW(user_data));
}
+static void
+ag_window_selection_mode_action(GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
+{
+ GVariant *state;
+ gboolean new_state;
+ GtkStyleContext *style;
+ AgWindow *window = AG_WINDOW(user_data);
+ AgWindowPrivate *priv = ag_window_get_instance_private(window);
+
+ state = g_action_get_state(G_ACTION(action));
+ new_state = !g_variant_get_boolean(state);
+ g_action_change_state(G_ACTION(action), g_variant_new_boolean(new_state));
+ g_variant_unref(state);
+
+ style = gtk_widget_get_style_context(priv->header_bar);
+
+ if (new_state) {
+ gtk_header_bar_set_show_close_button(
+ GTK_HEADER_BAR(priv->header_bar),
+ FALSE
+ );
+ gtk_style_context_add_class(style, "selection-mode");
+ gd_main_view_set_selection_mode(GD_MAIN_VIEW(priv->tab_list), TRUE);
+ gtk_widget_hide(priv->new_back_stack);
+ gtk_stack_set_visible_child_name(
+ GTK_STACK(priv->menubutton_stack),
+ "selection"
+ );
+ } else {
+ gtk_header_bar_set_show_close_button(
+ GTK_HEADER_BAR(priv->header_bar),
+ TRUE
+ );
+ gtk_style_context_remove_class(style, "selection-mode");
+ gd_main_view_set_selection_mode(GD_MAIN_VIEW(priv->tab_list), FALSE);
+ gtk_widget_show_all(priv->new_back_stack);
+ gtk_stack_set_visible_child_name(
+ GTK_STACK(priv->menubutton_stack),
+ "list"
+ );
+ }
+}
+
+static void
+ag_window_delete_action(GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
+{
+}
+
static GActionEntry win_entries[] = {
- { "close", ag_window_close_action, NULL, NULL, NULL },
- { "save", ag_window_save_action, NULL, NULL, NULL },
- { "export", ag_window_export_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 },
- { "new-chart", ag_window_new_chart_action, NULL, NULL, NULL },
- { "back", ag_window_back_action, NULL, NULL, NULL },
- { "refresh", ag_window_refresh_action, NULL, NULL, NULL },
+ { "close", ag_window_close_action, NULL, NULL, NULL },
+ { "save", ag_window_save_action, NULL, NULL, NULL },
+ { "export", ag_window_export_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 },
+ { "new-chart", ag_window_new_chart_action, NULL, NULL, NULL },
+ { "back", ag_window_back_action, NULL, NULL, NULL },
+ { "refresh", ag_window_refresh_action, NULL, NULL, NULL },
+ { "selection", ag_window_selection_mode_action, NULL, "false", NULL },
+ { "delete", ag_window_delete_action, NULL, NULL, NULL },
};
static void
@@ -1349,7 +1416,7 @@ ag_window_class_init(AgWindowClass *klass)
gtk_widget_class_bind_template_child_private(
widget_class,
AgWindow,
- menubutton_revealer
+ menubutton_stack
);
gtk_widget_class_bind_template_child_private(
widget_class,
@@ -1442,6 +1509,11 @@ ag_window_class_init(AgWindowClass *klass)
AgWindow,
note_buffer
);
+ gtk_widget_class_bind_template_child_private(
+ widget_class,
+ AgWindow,
+ selection_toolbar
+ );
}
gboolean
diff --git a/src/resources/ui/ag-window.ui b/src/resources/ui/ag-window.ui
index 9465855..ee4e41f 100644
--- a/src/resources/ui/ag-window.ui
+++ b/src/resources/ui/ag-window.ui
@@ -236,10 +236,31 @@
-
+
+
+
+ selection
+
@@ -300,455 +341,493 @@
-
- True
- True
- True
-
+
+ vertical
-
+
True
- False
+ True
+ True
+
-
+
True
False
- Name
-
-
- 0
- 0
-
-
-
-
- True
- True
-
-
-
- 1
- 0
- 6
-
-
-
-
- True
- False
- Country
-
-
- 0
- 1
-
-
-
-
- True
- True
- edit-find-symbolic
- False
- False
-
-
- 1
- 2
- 3
-
-
-
-
- True
- False
- City
-
-
- 0
- 2
-
-
-
-
- True
- True
- edit-find-symbolic
- False
- False
-
-
- 1
- 1
- 3
-
-
-
-
- True
- False
- Latitude
-
-
- 0
- 3
- 2
-
-
-
-
- North
- True
- True
- False
- 0
- True
- True
-
-
- 0
- 4
-
-
-
-
- South
- True
- True
- False
- 0
- True
- True
- north_lat
-
-
- 1
- 4
-
-
-
-
- True
- True
- latitude_adjust
- 6
-
-
- 0
- 5
- 2
-
-
-
-
- True
- False
- Longitude
-
-
- 2
- 3
- 2
-
-
-
-
- East
- True
- True
- False
- 0
- True
- True
-
-
- 2
- 4
-
-
-
-
- West
- True
- True
- False
- 0
- True
- True
- east_long
-
-
- 3
- 4
-
-
-
-
- True
- True
- longitude_adjust
- 6
-
-
- 2
- 5
- 2
-
-
-
-
- True
- False
- Year
-
-
- 4
- 1
-
-
-
-
- True
- True
- year_adjust
-
-
- 4
- 2
-
-
-
-
- True
- False
- Month
-
-
- 5
- 1
-
-
-
-
- True
- True
- month_adjust
-
-
- 5
- 2
-
-
-
-
- True
- False
- Day
-
-
- 6
- 1
-
-
-
-
- True
- True
- day_adjust
-
-
- 6
- 2
-
-
-
-
- True
- False
- Hour
-
-
- 4
- 3
-
-
-
-
- True
- True
- hour_adjust
-
-
- 4
- 4
-
-
-
-
- True
- False
- Minute
-
-
- 5
- 3
-
-
-
-
- True
- True
- minute_adjust
-
-
- 5
- 4
-
-
-
-
- True
- False
- Second
-
-
- 6
- 3
-
-
-
-
- True
- True
- second_adjust
-
-
- 6
- 4
-
-
-
-
- True
- False
- Timezone
-
-
- 7
- 3
-
-
-
-
- True
- True
- timezone_adjust
- 1
-
-
- 7
- 4
-
-
-
-
- True
- False
- House system
-
-
- 4
- 5
-
-
-
-
- True
- False
- house_system_model
- 0
-
-
- 5
- 5
- 2
-
-
-
-
- True
- False
- 0
- Note
-
-
- 0
- 6
- 7
-
-
-
-
- 300
- True
- True
- in
-
+
+ True
+ False
+ Name
+
+
+ 0
+ 0
+
+
+
+
True
True
- note_buffer
+
+
+
+ 1
+ 0
+ 6
+
+
+
+
+ True
+ False
+ Country
+
+
+ 0
+ 1
+
+
+
+
+ True
+ True
+ edit-find-symbolic
+ False
+ False
+
+
+ 1
+ 2
+ 3
+
+
+
+
+ True
+ False
+ City
+
+
+ 0
+ 2
+
+
+
+
+ True
+ True
+ edit-find-symbolic
+ False
+ False
+
+
+ 1
+ 1
+ 3
+
+
+
+
+ True
+ False
+ Latitude
+
+
+ 0
+ 3
+ 2
+
+
+
+
+ North
+ True
+ True
+ False
+ 0
+ True
+ True
+
+
+ 0
+ 4
+
+
+
+
+ South
+ True
+ True
+ False
+ 0
+ True
+ True
+ north_lat
+
+
+ 1
+ 4
+
+
+
+
+ True
+ True
+ latitude_adjust
+ 6
+
+
+ 0
+ 5
+ 2
+
+
+
+
+ True
+ False
+ Longitude
+
+
+ 2
+ 3
+ 2
+
+
+
+
+ East
+ True
+ True
+ False
+ 0
+ True
+ True
+
+
+ 2
+ 4
+
+
+
+
+ West
+ True
+ True
+ False
+ 0
+ True
+ True
+ east_long
+
+
+ 3
+ 4
+
+
+
+
+ True
+ True
+ longitude_adjust
+ 6
+
+
+ 2
+ 5
+ 2
+
+
+
+
+ True
+ False
+ Year
+
+
+ 4
+ 1
+
+
+
+
+ True
+ True
+ year_adjust
+
+
+ 4
+ 2
+
+
+
+
+ True
+ False
+ Month
+
+
+ 5
+ 1
+
+
+
+
+ True
+ True
+ month_adjust
+
+
+ 5
+ 2
+
+
+
+
+ True
+ False
+ Day
+
+
+ 6
+ 1
+
+
+
+
+ True
+ True
+ day_adjust
+
+
+ 6
+ 2
+
+
+
+
+ True
+ False
+ Hour
+
+
+ 4
+ 3
+
+
+
+
+ True
+ True
+ hour_adjust
+
+
+ 4
+ 4
+
+
+
+
+ True
+ False
+ Minute
+
+
+ 5
+ 3
+
+
+
+
+ True
+ True
+ minute_adjust
+
+
+ 5
+ 4
+
+
+
+
+ True
+ False
+ Second
+
+
+ 6
+ 3
+
+
+
+
+ True
+ True
+ second_adjust
+
+
+ 6
+ 4
+
+
+
+
+ True
+ False
+ Timezone
+
+
+ 7
+ 3
+
+
+
+
+ True
+ True
+ timezone_adjust
+ 1
+
+
+ 7
+ 4
+
+
+
+
+ True
+ False
+ House system
+
+
+ 4
+ 5
+
+
+
+
+ True
+ False
+ house_system_model
+ 0
+
+
+ 5
+ 5
+ 2
+
+
+
+
+ True
+ False
+ 0
+ Note
+
+
+ 0
+ 6
+ 7
+
+
+
+
+ 300
+ True
+ True
+ in
+
+
+ True
+ True
+ note_buffer
+
+
+
+
+ 0
+ 7
+ 7
+
+
+
+
+ edit
+ Edit
+
+
+
+
+ True
+ False
+
+
+ chart
+ Chart
+
+
+
+
+ True
+ none
+
+
- 0
- 7
- 7
+ aspects
+ Aspects
+
+
+
+
+ True
+ none
+
+
+
+
+
+
+ points
+ Points
-
- edit
- Edit
-
-
+
True
- False
-
-
- chart
- Chart
-
-
-
-
- True
- none
+ False
-
+
+ True
+ False
+
+
+ True
+ False
+ win.delete
+
+
+
+ True
+ 1
+ user-trash-symbolic
+
+
+
+
+ end
+
+
-
- aspects
- Aspects
-
-
-
-
- True
- none
-
-
-
-
-
-
- points
- Points
-