Make AgWindow use the new AgHeaderBar
This commit is contained in:
		| @@ -35,11 +35,10 @@ | |||||||
| #include "ag-display-theme.h" | #include "ag-display-theme.h" | ||||||
| #include "ag-icon-view.h" | #include "ag-icon-view.h" | ||||||
| #include "ag-chart-edit.h" | #include "ag-chart-edit.h" | ||||||
|  | #include "ag-header-bar.h" | ||||||
|  |  | ||||||
| struct _AgWindowPrivate { | struct _AgWindowPrivate { | ||||||
|     GtkWidget     *header_bar; |     GtkWidget     *header_bar; | ||||||
|     GtkWidget     *menubutton_stack; |  | ||||||
|     GtkWidget     *new_back_stack; |  | ||||||
|     GtkWidget     *selection_toolbar; |     GtkWidget     *selection_toolbar; | ||||||
|     GtkWidget     *stack; |     GtkWidget     *stack; | ||||||
|     GtkWidget     *house_system; |     GtkWidget     *house_system; | ||||||
| @@ -1341,23 +1340,9 @@ ag_window_tab_changed_cb(GtkStack *stack, GParamSpec *pspec, AgWindow *window) | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     if (strcmp("list", active_tab_name) == 0) { |     if (strcmp("list", active_tab_name) == 0) { | ||||||
|         gtk_stack_set_visible_child_name( |         ag_header_bar_set_mode(AG_HEADER_BAR(priv->header_bar), AG_HEADER_BAR_MODE_LIST); | ||||||
|                 GTK_STACK(priv->menubutton_stack), |  | ||||||
|                 "list" |  | ||||||
|             ); |  | ||||||
|         gtk_stack_set_visible_child_name( |  | ||||||
|                 GTK_STACK(priv->new_back_stack), |  | ||||||
|                 "new" |  | ||||||
|             ); |  | ||||||
|     } else { |     } else { | ||||||
|         gtk_stack_set_visible_child_name( |         ag_header_bar_set_mode(AG_HEADER_BAR(priv->header_bar), AG_HEADER_BAR_MODE_CHART); | ||||||
|                 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, |         // Note that priv->current_tab is actually the previously selected tab, | ||||||
|         // not the real active one! |         // not the real active one! | ||||||
| @@ -1516,44 +1501,46 @@ ag_window_refresh_action(GSimpleAction *action, | |||||||
| static void | static void | ||||||
| ag_window_set_selection_mode(AgWindow *window, gboolean state) | ag_window_set_selection_mode(AgWindow *window, gboolean state) | ||||||
| { | { | ||||||
|     GtkStyleContext *style; |  | ||||||
|     GET_PRIV(window); |     GET_PRIV(window); | ||||||
|  |  | ||||||
|     style = gtk_widget_get_style_context(priv->header_bar); |     if (priv->current_tab != priv->tab_list) { | ||||||
|  |         g_warning("You can activate selection mode only in the list view!"); | ||||||
|  |  | ||||||
|  |         return; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     g_debug("Set selection mode: %d", state); | ||||||
|  |  | ||||||
|     if (state) { |     if (state) { | ||||||
|         gtk_header_bar_set_show_close_button( |         ag_header_bar_set_mode(AG_HEADER_BAR(priv->header_bar), AG_HEADER_BAR_MODE_SELECTION); | ||||||
|                 GTK_HEADER_BAR(priv->header_bar), |  | ||||||
|                 FALSE |  | ||||||
|             ); |  | ||||||
|         gtk_style_context_add_class(style, "selection-mode"); |  | ||||||
|         ag_icon_view_set_mode( |         ag_icon_view_set_mode( | ||||||
|                 AG_ICON_VIEW(priv->chart_list), |                 AG_ICON_VIEW(priv->chart_list), | ||||||
|                 AG_ICON_VIEW_MODE_SELECTION |                 AG_ICON_VIEW_MODE_SELECTION | ||||||
|             ); |             ); | ||||||
|         gtk_widget_hide(priv->new_back_stack); |  | ||||||
|         gtk_stack_set_visible_child_name( |  | ||||||
|                 GTK_STACK(priv->menubutton_stack), |  | ||||||
|                 "selection" |  | ||||||
|             ); |  | ||||||
|     } else { |     } else { | ||||||
|         gtk_header_bar_set_show_close_button( |         ag_header_bar_set_mode(AG_HEADER_BAR(priv->header_bar), AG_HEADER_BAR_MODE_LIST); | ||||||
|                 GTK_HEADER_BAR(priv->header_bar), |  | ||||||
|                 TRUE |  | ||||||
|             ); |  | ||||||
|         gtk_style_context_remove_class(style, "selection-mode"); |  | ||||||
|         ag_icon_view_set_mode( |         ag_icon_view_set_mode( | ||||||
|                 AG_ICON_VIEW(priv->chart_list), |                 AG_ICON_VIEW(priv->chart_list), | ||||||
|                 AG_ICON_VIEW_MODE_NORMAL |                 AG_ICON_VIEW_MODE_NORMAL | ||||||
|             ); |             ); | ||||||
|         gtk_widget_show_all(priv->new_back_stack); |  | ||||||
|         gtk_stack_set_visible_child_name( |  | ||||||
|                 GTK_STACK(priv->menubutton_stack), |  | ||||||
|                 "list" |  | ||||||
|             ); |  | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | static void | ||||||
|  | ag_window_header_bar_mode_change_cb(AgHeaderBar *header_bar, | ||||||
|  |                                     GParamSpec  *pspec, | ||||||
|  |                                     AgWindow    *window) | ||||||
|  | { | ||||||
|  |     AgHeaderBarMode mode; | ||||||
|  |  | ||||||
|  |     mode = ag_header_bar_get_mode(header_bar); | ||||||
|  |  | ||||||
|  |     ag_window_set_selection_mode( | ||||||
|  |             window, | ||||||
|  |             (mode == AG_HEADER_BAR_MODE_SELECTION) | ||||||
|  |         ); | ||||||
|  | } | ||||||
|  |  | ||||||
| static void | static void | ||||||
| ag_window_icon_view_mode_cb(AgIconView *icon_view, | ag_window_icon_view_mode_cb(AgIconView *icon_view, | ||||||
|                             GParamSpec *pspec, |                             GParamSpec *pspec, | ||||||
| @@ -1585,8 +1572,6 @@ ag_window_selection_mode_action(GSimpleAction *action, | |||||||
|     g_action_change_state(G_ACTION(action), g_variant_new_boolean(new_state)); |     g_action_change_state(G_ACTION(action), g_variant_new_boolean(new_state)); | ||||||
|     g_variant_unref(state); |     g_variant_unref(state); | ||||||
|  |  | ||||||
|     g_debug("Set selection mode: %d", new_state); |  | ||||||
|  |  | ||||||
|     ag_window_set_selection_mode(window, new_state); |     ag_window_set_selection_mode(window, new_state); | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -2134,16 +2119,6 @@ ag_window_class_init(AgWindowClass *klass) | |||||||
|             AgWindow, |             AgWindow, | ||||||
|             header_bar |             header_bar | ||||||
|         ); |         ); | ||||||
|     gtk_widget_class_bind_template_child_private( |  | ||||||
|             widget_class, |  | ||||||
|             AgWindow, |  | ||||||
|             new_back_stack |  | ||||||
|         ); |  | ||||||
|     gtk_widget_class_bind_template_child_private( |  | ||||||
|             widget_class, |  | ||||||
|             AgWindow, |  | ||||||
|             menubutton_stack |  | ||||||
|         ); |  | ||||||
|     gtk_widget_class_bind_template_child_private( |     gtk_widget_class_bind_template_child_private( | ||||||
|             widget_class, |             widget_class, | ||||||
|             AgWindow, |             AgWindow, | ||||||
| @@ -2242,6 +2217,10 @@ ag_window_class_init(AgWindowClass *klass) | |||||||
|             widget_class, |             widget_class, | ||||||
|             ag_window_house_system_changed_cb |             ag_window_house_system_changed_cb | ||||||
|         ); |         ); | ||||||
|  |     gtk_widget_class_bind_template_callback( | ||||||
|  |             widget_class, | ||||||
|  |             ag_window_header_bar_mode_change_cb | ||||||
|  |         ); | ||||||
| } | } | ||||||
|  |  | ||||||
| static gboolean | static gboolean | ||||||
|   | |||||||
| @@ -80,201 +80,8 @@ | |||||||
|     <property name="icon_name">astrognome</property> |     <property name="icon_name">astrognome</property> | ||||||
|     <signal name="delete-event" handler="ag_window_delete_event_callback" swapped="no"/> |     <signal name="delete-event" handler="ag_window_delete_event_callback" swapped="no"/> | ||||||
|     <child type="titlebar"> |     <child type="titlebar"> | ||||||
|       <object class="GtkHeaderBar" id="header_bar"> |       <object class="AgHeaderBar" id="header_bar"> | ||||||
|         <property name="visible">True</property> |         <signal name="notify::mode" handler="ag_window_header_bar_mode_change_cb" swapped="no"/> | ||||||
|         <property name="can_focus">False</property> |  | ||||||
|         <property name="vexpand">False</property> |  | ||||||
|         <property name="show_close_button">True</property> |  | ||||||
|         <property name="title" translatable="yes">Astrognome</property> |  | ||||||
|         <child> |  | ||||||
|           <object class="GtkStack" id="new_back_stack"> |  | ||||||
|             <property name="visible">True</property> |  | ||||||
|             <property name="can_focus">False</property> |  | ||||||
|             <property name="homogeneous">False</property> |  | ||||||
|             <child> |  | ||||||
|               <object class="GtkBox"> |  | ||||||
|                 <property name="visible">True</property> |  | ||||||
|                 <property name="can_focus">False</property> |  | ||||||
|                 <child> |  | ||||||
|                   <object class="GtkButton" id="new_button"> |  | ||||||
|                     <property name="visible">True</property> |  | ||||||
|                     <property name="can_focus">False</property> |  | ||||||
|                     <property name="action_name">win.new-chart</property> |  | ||||||
|                     <style> |  | ||||||
|                       <class name="image-button"/> |  | ||||||
|                     </style> |  | ||||||
|                     <child> |  | ||||||
|                       <object class="GtkImage" id="new_image"> |  | ||||||
|                         <property name="visible">True</property> |  | ||||||
|                         <property name="icon_size">1</property> |  | ||||||
|                         <property name="icon_name">document-new-symbolic</property> |  | ||||||
|                       </object> |  | ||||||
|                     </child> |  | ||||||
|                   </object> |  | ||||||
|                   <packing> |  | ||||||
|                     <property name="position">0</property> |  | ||||||
|                   </packing> |  | ||||||
|                 </child> |  | ||||||
|                 <child> |  | ||||||
|                   <object class="GtkButton" id="refresh_button"> |  | ||||||
|                     <property name="visible">True</property> |  | ||||||
|                     <property name="can_focus">False</property> |  | ||||||
|                     <property name="action_name">win.refresh</property> |  | ||||||
|                     <style> |  | ||||||
|                       <class name="image-button"/> |  | ||||||
|                     </style> |  | ||||||
|                     <child> |  | ||||||
|                       <object class="GtkImage" id="refresh_image"> |  | ||||||
|                         <property name="visible">True</property> |  | ||||||
|                         <property name="icon_size">1</property> |  | ||||||
|                         <property name="icon_name">view-refresh-symbolic</property> |  | ||||||
|                   </object> |  | ||||||
|                 </child> |  | ||||||
|                   </object> |  | ||||||
|                   <packing> |  | ||||||
|                     <property name="position">1</property> |  | ||||||
|                   </packing> |  | ||||||
|                 </child> |  | ||||||
|               </object> |  | ||||||
|               <packing> |  | ||||||
|                 <property name="name">new</property> |  | ||||||
|               </packing> |  | ||||||
|             </child> |  | ||||||
|             <child> |  | ||||||
|               <object class="GtkButton" id="back_button"> |  | ||||||
|                 <property name="visible">True</property> |  | ||||||
|                 <property name="can_focus">False</property> |  | ||||||
|                 <property name="action_name">win.back</property> |  | ||||||
|                 <style> |  | ||||||
|                   <class name="image-button"/> |  | ||||||
|                 </style> |  | ||||||
|                 <child> |  | ||||||
|                   <object class="GtkImage" id="back_image"> |  | ||||||
|                     <property name="visible">True</property> |  | ||||||
|                     <property name="icon_size">1</property> |  | ||||||
|                     <property name="icon_name">go-previous-symbolic</property> |  | ||||||
|                   </object> |  | ||||||
|                 </child> |  | ||||||
|               </object> |  | ||||||
|               <packing> |  | ||||||
|                 <property name="name">back</property> |  | ||||||
|               </packing> |  | ||||||
|             </child> |  | ||||||
|           </object> |  | ||||||
|         </child> |  | ||||||
|         <child> |  | ||||||
|           <object class="GtkBox" id="box"> |  | ||||||
|             <property name="visible">True</property> |  | ||||||
|             <property name="valign">center</property> |  | ||||||
|             <property name="can_focus">False</property> |  | ||||||
|             <style> |  | ||||||
|               <class name="linked"/> |  | ||||||
|             </style> |  | ||||||
|           </object> |  | ||||||
|         </child> |  | ||||||
|         <child> |  | ||||||
|           <object class="GtkStack" id="menubutton_stack"> |  | ||||||
|             <property name="visible">True</property> |  | ||||||
|             <property name="can_focus">False</property> |  | ||||||
|             <property name="homogeneous">False</property> |  | ||||||
|             <child> |  | ||||||
|               <object class="GtkToggleButton"> |  | ||||||
|                 <property name="visible">True</property> |  | ||||||
|                 <property name="can_focus">False</property> |  | ||||||
|                 <property name="valign">center</property> |  | ||||||
|                 <property name="action_name">win.selection</property> |  | ||||||
|                 <style> |  | ||||||
|                   <class name="image-button"/> |  | ||||||
|                 </style> |  | ||||||
|                 <child> |  | ||||||
|                   <object class="GtkImage"> |  | ||||||
|                     <property name="visible">True</property> |  | ||||||
|                     <property name="icon_size">1</property> |  | ||||||
|                     <property name="icon_name">object-select-symbolic</property> |  | ||||||
|                   </object> |  | ||||||
|                 </child> |  | ||||||
|               </object> |  | ||||||
|               <packing> |  | ||||||
|                 <property name="name">list</property> |  | ||||||
|               </packing> |  | ||||||
|             </child> |  | ||||||
|             <child> |  | ||||||
|               <object class="GtkBox" id="menubutton_box"> |  | ||||||
|                 <property name="visible">True</property> |  | ||||||
|                 <property name="can_focus">False</property> |  | ||||||
|                 <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">False</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="position">0</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.gear-menu</property> |  | ||||||
|                     <property name="menu_model">gear_menu</property> |  | ||||||
|                     <property name="use_popover">False</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">open-menu-symbolic</property> |  | ||||||
|                       </object> |  | ||||||
|                     </child> |  | ||||||
|                   </object> |  | ||||||
|                   <packing> |  | ||||||
|                     <property name="position">1</property> |  | ||||||
|                   </packing> |  | ||||||
|                 </child> |  | ||||||
|               </object> |  | ||||||
|               <packing> |  | ||||||
|                 <property name="name">chart</property> |  | ||||||
|               </packing> |  | ||||||
|             </child> |  | ||||||
|             <child> |  | ||||||
|               <object class="GtkBox" id="selection_mode_box"> |  | ||||||
|                 <property name="visible">True</property> |  | ||||||
|                 <property name="can_focus">False</property> |  | ||||||
|                 <child> |  | ||||||
|                   <object class="GtkButton"> |  | ||||||
|                     <property name="visible">True</property> |  | ||||||
|                     <property name="can_focus">False</property> |  | ||||||
|                     <property name="label" translatable="yes">Cancel</property> |  | ||||||
|                     <signal name="clicked" handler="ag_window_selection_mode_cancel_cb" object="AgWindow" swapped="no"/> |  | ||||||
|                   </object> |  | ||||||
|                 </child> |  | ||||||
|               </object> |  | ||||||
|               <packing> |  | ||||||
|                 <property name="name">selection</property> |  | ||||||
|               </packing> |  | ||||||
|             </child> |  | ||||||
|           </object> |  | ||||||
|           <packing> |  | ||||||
|             <property name="pack_type">end</property> |  | ||||||
|           </packing> |  | ||||||
|         </child> |  | ||||||
|       </object> |       </object> | ||||||
|     </child> |     </child> | ||||||
|     <child> |     <child> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user