@@ -90,6 +90,34 @@ nemo_status_bar_dispose (GObject *object)
9090 G_OBJECT_CLASS (nemo_status_bar_parent_class )-> dispose (object );
9191}
9292
93+ static void
94+ action_toggle_split_view_callback (GtkButton * button , NemoStatusBar * bar )
95+ {
96+ NemoWindow * window = bar -> window ;
97+
98+ if (!nemo_window_split_view_showing (window )) {
99+ nemo_window_split_view_on (window );
100+ } else {
101+ nemo_window_split_view_off (window );
102+ }
103+
104+ nemo_status_bar_sync_button_states (bar );
105+ }
106+
107+ static void
108+ action_toggle_preview_pane_callback (GtkButton * button , NemoStatusBar * bar )
109+ {
110+ NemoWindow * window = bar -> window ;
111+
112+ if (!nemo_window_preview_pane_showing (window )) {
113+ nemo_window_preview_pane_on (window );
114+ } else {
115+ nemo_window_preview_pane_off (window );
116+ }
117+
118+ nemo_status_bar_sync_button_states (bar );
119+ }
120+
93121static void
94122action_places_toggle_callback (GtkButton * button , NemoStatusBar * bar )
95123{
@@ -130,6 +158,18 @@ sidebar_type_changed_cb (gpointer pointer, const gchar *sidebar_id, gpointer use
130158 nemo_status_bar_sync_button_states (NEMO_STATUS_BAR (user_data ));
131159}
132160
161+ static void
162+ preview_pane_state_changed_cb (gpointer pointer , GParamSpec * pspec , gpointer user_data )
163+ {
164+ nemo_status_bar_sync_button_states (NEMO_STATUS_BAR (user_data ));
165+ }
166+
167+ static void
168+ split_view_state_changed_cb (gpointer pointer , GParamSpec * pspec , gpointer user_data )
169+ {
170+ nemo_status_bar_sync_button_states (NEMO_STATUS_BAR (user_data ));
171+ }
172+
133173static void
134174on_slider_changed_cb (GtkWidget * zoom_slider , gpointer user_data )
135175{
@@ -229,6 +269,24 @@ nemo_status_bar_constructed (GObject *object)
229269 gtk_range_set_increments (GTK_RANGE (zoom_slider ), 1.0 , 1.0 );
230270 gtk_range_set_round_digits (GTK_RANGE (zoom_slider ), 0 );
231271
272+ button = gtk_toggle_button_new ();
273+ icon = gtk_image_new_from_icon_name ("view-dual-symbolic" , size );
274+ gtk_button_set_image (GTK_BUTTON (button ), icon );
275+ gtk_widget_set_tooltip_text (GTK_WIDGET (button ), _ ("Show Split View (F3)" ));
276+ bar -> split_view_button = button ;
277+ gtk_box_pack_start (GTK_BOX (bar ), button , FALSE, FALSE, 2 );
278+ g_signal_connect (GTK_BUTTON (button ), "clicked" ,
279+ G_CALLBACK (action_toggle_split_view_callback ), bar );
280+
281+ button = gtk_toggle_button_new ();
282+ icon = gtk_image_new_from_icon_name ("xsi-preview-symbolic" , size );
283+ gtk_button_set_image (GTK_BUTTON (button ), icon );
284+ gtk_widget_set_tooltip_text (GTK_WIDGET (button ), _ ("Show the Preview pane (F7)" ));
285+ bar -> preview_pane_button = button ;
286+ gtk_box_pack_start (GTK_BOX (bar ), button , FALSE, FALSE, 2 );
287+ g_signal_connect (GTK_BUTTON (button ), "clicked" ,
288+ G_CALLBACK (action_toggle_preview_pane_callback ), bar );
289+
232290 gtk_widget_show_all (GTK_WIDGET (bar ));
233291
234292 g_signal_connect_object (NEMO_WINDOW (bar -> window ), "notify::show-sidebar" ,
@@ -237,6 +295,12 @@ nemo_status_bar_constructed (GObject *object)
237295 g_signal_connect_object (NEMO_WINDOW (bar -> window ), "notify::sidebar-view-id" ,
238296 G_CALLBACK (sidebar_type_changed_cb ), bar , G_CONNECT_AFTER );
239297
298+ g_signal_connect_object (NEMO_WINDOW (bar -> window ), "notify::show-preview-pane" ,
299+ G_CALLBACK (preview_pane_state_changed_cb ), bar , G_CONNECT_AFTER );
300+
301+ g_signal_connect_object (NEMO_WINDOW (bar -> window ), "notify::show-split-view" ,
302+ G_CALLBACK (split_view_state_changed_cb ), bar , G_CONNECT_AFTER );
303+
240304 g_signal_connect (GTK_RANGE (zoom_slider ), "value-changed" ,
241305 G_CALLBACK (on_slider_changed_cb ), bar );
242306
@@ -332,6 +396,23 @@ nemo_status_bar_sync_button_states (NemoStatusBar *bar)
332396 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (bar -> places_button ), FALSE);
333397 }
334398 g_signal_handlers_unblock_by_func (GTK_BUTTON (bar -> places_button ), action_places_toggle_callback , bar );
399+
400+ g_signal_handlers_block_by_func (GTK_BUTTON (bar -> split_view_button ), action_toggle_split_view_callback , bar );
401+ if (nemo_window_split_view_showing (bar -> window )) {
402+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (bar -> split_view_button ), TRUE);
403+ } else {
404+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (bar -> split_view_button ), FALSE);
405+ }
406+ g_signal_handlers_unblock_by_func (GTK_BUTTON (bar -> split_view_button ), action_toggle_split_view_callback , bar );
407+
408+ g_signal_handlers_block_by_func (GTK_BUTTON (bar -> preview_pane_button ), action_toggle_preview_pane_callback , bar );
409+ if (nemo_window_preview_pane_showing (bar -> window )) {
410+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (bar -> preview_pane_button ), TRUE);
411+ } else {
412+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (bar -> preview_pane_button ), FALSE);
413+ }
414+ g_signal_handlers_unblock_by_func (GTK_BUTTON (bar -> preview_pane_button ), action_toggle_preview_pane_callback , bar );
415+
335416}
336417
337418void
0 commit comments