[recipes] Refine adding new rows to the ingredients list



commit 9eb89a3508b45dc87e26f67cb0fe9733425ec34c
Author: Ekta Nandwani <mailnandwaniekta gmail com>
Date:   Mon May 22 17:41:06 2017 +0530

    Refine adding new rows to the ingredients list
    
    Add placeholder row, click or focus in event on it adds the row. Remove explicit plus button

 src/gr-ingredients-viewer.c  |   11 +++++---
 src/gr-ingredients-viewer.ui |   51 +++++++++++++++++++----------------------
 2 files changed, 31 insertions(+), 31 deletions(-)
---
diff --git a/src/gr-ingredients-viewer.c b/src/gr-ingredients-viewer.c
index 95ee664..06984de 100644
--- a/src/gr-ingredients-viewer.c
+++ b/src/gr-ingredients-viewer.c
@@ -41,7 +41,7 @@ struct _GrIngredientsViewer
         GtkWidget *title_entry;
         GtkWidget *title_label;
         GtkWidget *list;
-        GtkWidget *add_button;
+        GtkWidget *add_row_box;
 
         char *title;
         gboolean editable;
@@ -277,6 +277,8 @@ add_row (GrIngredientsViewer *viewer)
         g_signal_connect (row, "notify::ingredient" , G_CALLBACK(edit_ingredient_row), viewer);
 
         gtk_container_add (GTK_CONTAINER (viewer->list), row);
+        gtk_widget_grab_focus (row);
+        gtk_widget_queue_draw (GTK_WIDGET (viewer));
         g_object_notify (G_OBJECT (viewer), "ingredients");
 }
 
@@ -347,13 +349,14 @@ gr_ingredients_viewer_set_editable (GrIngredientsViewer *viewer,
         GList *children, *l;
 
         viewer->editable = editable;
-        gtk_widget_set_visible (viewer->add_button, editable);
+        gtk_widget_set_visible (viewer->add_row_box, editable);
 
         children = gtk_container_get_children (GTK_CONTAINER (viewer->list));
         for (l = children; l; l = l->next) {
                 GtkWidget *row = l->data;
 
-                g_object_set (row, "editable", viewer->editable, NULL);
+                if (GR_IS_INGREDIENTS_VIEWER_ROW (row))
+                        g_object_set (row, "editable", viewer->editable, NULL);
         }
         g_list_free (children);
 }
@@ -475,7 +478,7 @@ gr_ingredients_viewer_class_init (GrIngredientsViewerClass *klass)
         gtk_widget_class_bind_template_child (widget_class, GrIngredientsViewer, title_entry);
         gtk_widget_class_bind_template_child (widget_class, GrIngredientsViewer, title_label);
         gtk_widget_class_bind_template_child (widget_class, GrIngredientsViewer, list);
-        gtk_widget_class_bind_template_child (widget_class, GrIngredientsViewer, add_button);
+        gtk_widget_class_bind_template_child (widget_class, GrIngredientsViewer, add_row_box);
 
         gtk_widget_class_bind_template_callback (widget_class, title_changed);
         gtk_widget_class_bind_template_callback (widget_class, row_activated);
diff --git a/src/gr-ingredients-viewer.ui b/src/gr-ingredients-viewer.ui
index f3413be..748d324 100644
--- a/src/gr-ingredients-viewer.ui
+++ b/src/gr-ingredients-viewer.ui
@@ -52,53 +52,50 @@
       </object>
     </child>
     <child>
-      <object class="GtkListBox" id="list">
+      <object class="GtkBox">
         <property name="visible">1</property>
-        <property name="selection-mode">none</property>
-        <property name="activate-on-single-click">1</property>
-        <signal name="row-activated" handler="row_activated"/>
+        <property name="orientation">vertical</property>
         <style>
           <class name="frame"/>
+          <class name="view"/>
         </style>
-        <child type="placeholder">
-          <object class="GtkEventBox">
+        <child>
+          <object class="GtkListBox" id="list">
+            <property name="visible">1</property>
+            <property name="selection-mode">none</property>
+            <property name="activate-on-single-click">1</property>
+            <signal name="row-activated" handler="row_activated"/>
+          </object>
+        </child>
+        <child>
+          <object class="GtkSeparator">
+            <property name="visible">1</property>
+            <property name="expand">1</property>
+            <property name="valign">center</property>
+          </object>
+        </child>
+        <child>
+          <object class="GtkEventBox" id="add_row_box">
+            <property name="can-focus">1</property>
             <property name="visible">1</property>
             <signal name="button-press-event" handler="add_row" swapped="yes"/>
+            <signal name="focus-in-event" handler="add_row" swapped="yes"/>
             <child>
               <object class="GtkLabel">
                 <property name="visible">1</property>
                 <property name="xalign">0.5</property>
                 <property name="halign">fill</property>
+                <property name="width-chars">10</property>
                 <property name="margin-start">20</property>
                 <property name="margin-end">20</property>
                 <property name="margin-top">10</property>
                 <property name="margin-bottom">10</property>
-                <property name="label" translatable="yes">No ingredients added yet</property>
-                <style>
-                  <class name="dim-label"/>
-                </style>
+                <property name="label" translatable="yes">Add more ingredients</property>
               </object>
             </child>
           </object>
         </child>
       </object>
     </child>
-    <child>
-      <object class="GtkButton" id="add_button">
-        <property name="visible">1</property>
-        <property name="halign">start</property>
-        <property name="margin-top">10</property>
-        <signal name="clicked" handler="add_row" swapped="yes"/>
-        <style>
-          <class name="dim-label"/>
-        </style>
-        <child>
-          <object class="GtkImage">
-            <property name="visible">1</property>
-            <property name="icon-name">list-add-symbolic</property>
-          </object>
-        </child>
-      </object>
-    </child>
   </template>
 </interface>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]