[recipes/ekta-master: 1/3] Roughly commited- make save button sensitive when edit page fields change



commit 56a8dcec96c6af4bae485451b307aa1b9d219895
Author: Ekta Nandwani <mailnandwaniekta gmail com>
Date:   Thu Mar 9 02:21:46 2017 +0530

    Roughly commited- make save button sensitive when edit page fields change

 src/gr-edit-page.c  |   63 +++++++++++++++++++++++++++++++++++++++++++++++++++
 src/gr-edit-page.ui |   19 +++++++++++++++
 src/gr-window.c     |   10 ++++++++
 src/gr-window.ui    |    3 +-
 4 files changed, 94 insertions(+), 1 deletions(-)
---
diff --git a/src/gr-edit-page.c b/src/gr-edit-page.c
index a07aa25..c1866d2 100644
--- a/src/gr-edit-page.c
+++ b/src/gr-edit-page.c
@@ -137,9 +137,17 @@ struct _GrEditPage
         guint index_handler_id;
 
         char *author;
+        gboolean unsaved;
 };
 
 G_DEFINE_TYPE (GrEditPage, gr_edit_page, GTK_TYPE_BOX)
+/*
+enum {
+        PROP_0,
+        PROP_UNSAVED,
+        N_PROPS
+};
+*/
 
 static char *get_text_view_text (GtkTextView *textview);
 static void  set_text_view_text (GtkTextView *textview,
@@ -1278,6 +1286,8 @@ edit_chef (GrEditPage *page)
         return TRUE;
 }
 
+
+
 static void
 gr_edit_page_init (GrEditPage *page)
 {
@@ -1404,14 +1414,67 @@ next_step (GrEditPage *page)
         gr_cooking_view_next_step (GR_COOKING_VIEW (page->cooking_view));
         update_steppers (page);
 }
+/*
+static void
+gr_edit_page_set_property (GObject      *object,
+                           guint         prop_id,
+                           const GValue *value,
+                           GParamSpec   *pspec)
+{
+    GrEditPage *self = GR_EDIT_PAGE(object);
+    gboolean x;
+
+    switch (prop_id) {
+        case PROP_UNSAVED:
+                
+                break;
+
+        default:
+                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+        }
+}
+
+
+static void
+gr_edit_page_get_property (GObject    *object,
+                              guint       prop_id,
+                              GValue     *value,
+                              GParamSpec *pspec)
+{
+        GrEditPage *self = GR_EDIT_PAGE (object);
+
+        switch (prop_id) {
+        case PROP_UNSAVED:
+                
+                break;
+
+        default:
+                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+        }
+}*/
+
+gboolean has_unsaved_changes(GrEditPage *page){
+
+    
+    page->unsaved=TRUE;
+    g_signal_emit(G_OBJECT(*page),"notify::has_unsaved_changes", page->unsaved);
+}
 
 static void
 gr_edit_page_class_init (GrEditPageClass *klass)
 {
         GObjectClass *object_class = G_OBJECT_CLASS (klass);
         GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+        GParamSpec *pspec;
 
         object_class->finalize = edit_page_finalize;
+        object_class->set_property = gr_edit_page_set_property;
+
+        pspec = g_param_spec_boolean ("unsaved", NULL, NULL,
+                                      FALSE,
+                                      G_PARAM_READWRITE);
+        g_object_class_install_property (object_class, PROP_UNSAVED, pspec);
+        
 
         gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/Recipes/gr-edit-page.ui");
 
diff --git a/src/gr-edit-page.ui b/src/gr-edit-page.ui
index 57409ee..3fcb3fd 100644
--- a/src/gr-edit-page.ui
+++ b/src/gr-edit-page.ui
@@ -278,6 +278,7 @@
                         <property name="label" translatable="yes">_Name Your Recipe</property>
                         <property name="xalign">1</property>
                         <property name="valign">baseline</property>
+
                         <style>
                           <class name="dim-label"/>
                         </style>
@@ -294,6 +295,7 @@
                         <property name="valign">baseline</property>
                         <property name="margin-bottom">10</property>
                         <property name="width-chars">30</property>
+                        <signal name="changed" handler="has_unsaved_changes"/>
                       </object>
                       <packing>
                         <property name="left-attach">1</property>
@@ -324,6 +326,7 @@
                         <property name="halign">start</property>
                         <property name="valign">baseline</property>
                         <property name="margin-bottom">10</property>
+                        <signal name="value-changed" handler="has_unsaved_changes"/>
                       </object>
                       <packing>
                         <property name="left-attach">1</property>
@@ -354,6 +357,7 @@
                         <property name="has-entry">1</property>
                         <property name="valign">center</property>
                         <property name="margin-bottom">10</property>
+                        <signal name="changed" handler="has_unsaved_changes"/>
                         <items>
                           <item translatable="yes" id="Less than 15 minutes">Less than 15 minutes</item>
                           <item translatable="yes" id="15 to 30 minutes">15 to 30 minutes</item>
@@ -391,6 +395,7 @@
                         <property name="has-entry">1</property>
                         <property name="valign">center</property>
                         <property name="margin-bottom">40</property>
+                        <signal name="changed" handler="has_unsaved_changes"/>
                         <items>
                           <item translatable="yes" id="Less than 15 minutes">Less than 15 minutes</item>
                           <item translatable="yes" id="15 to 30 minutes">15 to 30 minutes</item>
@@ -428,6 +433,7 @@
                         <property name="has-entry">1</property>
                         <property name="valign">center</property>
                         <property name="margin-bottom">10</property>
+                        <signal name="changed" handler="has_unsaved_changes"/>
                       </object>
                       <packing>
                         <property name="left-attach">1</property>
@@ -458,6 +464,7 @@
                         <property name="has-entry">1</property>
                         <property name="valign">center</property>
                         <property name="margin-bottom">10</property>
+                        <signal name="changed" handler="has_unsaved_changes"/>
                       </object>
                       <packing>
                         <property name="left-attach">1</property>
@@ -488,6 +495,7 @@
                         <property name="has-entry">1</property>
                         <property name="valign">center</property>
                         <property name="margin-bottom">10</property>
+                        <signal name="changed" handler="has_unsaved_changes"/>
                       </object>
                       <packing>
                         <property name="left-attach">1</property>
@@ -517,6 +525,7 @@
                         <property name="visible">1</property>
                         <property name="valign">center</property>
                         <property name="margin-bottom">20</property>
+                        <signal name="changed" handler="has_unsaved_changes"/>
                         <items>
                           <item translatable="yes" id="mild">Mild</item>
                           <item translatable="yes" id="spicy">Somewhat spicy</item>
@@ -557,6 +566,7 @@
                             <property name="left-margin">10</property>
                             <property name="right-margin">10</property>
                             <property name="bottom-margin">10</property>
+                            <signal name="changed" handler="has_unsaved_changes"/>
                           </object>
                         </child>
                       </object>
@@ -591,30 +601,35 @@
                           <object class="GtkCheckButton" id="gluten_free_check">
                             <property name="visible">1</property>
                             <property name="label" translatable="yes">Gluten free</property>
+                            <signal name="clicked" handler="has_unsaved_changes"/>
                           </object>
                         </child>
                         <child>
                           <object class="GtkCheckButton" id="nut_free_check">
                             <property name="visible">1</property>
                             <property name="label" translatable="yes">Nut free</property>
+                            <signal name="clicked" handler="has_unsaved_changes"/>
                           </object>
                         </child>
                         <child>
                           <object class="GtkCheckButton" id="vegan_check">
                             <property name="visible">1</property>
                             <property name="label" translatable="yes">Vegan</property>
+                            <signal name="clicked" handler="has_unsaved_changes"/>
                           </object>
                         </child>
                         <child>
                           <object class="GtkCheckButton" id="vegetarian_check">
                             <property name="visible">1</property>
                             <property name="label" translatable="yes">Vegetarian</property>
+                            <signal name="clicked" handler="has_unsaved_changes"/>
                           </object>
                         </child>
                         <child>
                           <object class="GtkCheckButton" id="milk_free_check">
                             <property name="visible">1</property>
                             <property name="label" translatable="yes">Milk free</property>
+                            <signal name="clicked" handler="has_unsaved_changes"/>
                           </object>
                         </child>
                       </object>
@@ -696,6 +711,7 @@
                         <property name="left-margin">10</property>
                         <property name="right-margin">10</property>
                         <property name="bottom-margin">10</property>
+                        <signal name="clicked" handler="has_unsaved_changes"/>
                       </object>
                     </child>
                       </object>
@@ -1034,6 +1050,7 @@
             <signal name="input" handler="time_spin_input"/>
             <signal name="output" handler="time_spin_output"/>
             <signal name="activate" handler="time_spin_activate"/>
+            <signal name="value-changed" handler="has_unsaved_changes"/>
           </object>
         </child>
         <child>
@@ -1052,6 +1069,7 @@
     <property name="lower">-50</property>
     <property name="step-increment">1</property>
     <property name="page-increment">10</property>
+    <signal name="changed" handler="has_unsaved_changes"/>
   </object>
   <object class="GtkPopover" id="temperature_popover">
     <property name="relative-to">temperature_button</property>
@@ -1068,6 +1086,7 @@
             <property name="width-chars">4</property>
             <property name="adjustment">temperature_adjustment</property>
             <signal name="activate" handler="temperature_spin_activate"/>
+            <signal name="value-changed" handler="has_unsaved_changes"/>
           </object>
         </child>
         <child>
diff --git a/src/gr-window.c b/src/gr-window.c
index 4005370..86a5c4c 100644
--- a/src/gr-window.c
+++ b/src/gr-window.c
@@ -107,6 +107,14 @@ typedef struct
         char **search;
 } BackEntry;
 
+g_signal_connect (GtkWidget *edit_page, "notify", G_CALLBACK (make_save_sensitive()), window);
+
+void make_save_sensitive(GrWindow *window)
+{
+    GtkWidget *widget =(GR_WINDOW(window->save_button));
+    gtk_widget_set_sensitive(*widget);
+}
+
 static void
 back_entry_free (BackEntry *entry)
 {
@@ -1320,3 +1328,5 @@ gr_window_show_report_issue (GrWindow *window)
         if (error)
                 g_warning ("Unable to show '%s': %s", uri, error->message);
 }
+
+
diff --git a/src/gr-window.ui b/src/gr-window.ui
index 39d8ed7..b1a8b28 100644
--- a/src/gr-window.ui
+++ b/src/gr-window.ui
@@ -124,9 +124,10 @@
               </packing>
             </child>
             <child>
-              <object class="GtkButton">
+              <object class="GtkButton" id="save_button">
                 <property name="visible">1</property>
                 <property name="use-underline">1</property>
+                <property name="sensitive">0</property>
                 <property name="label" translatable="yes">_Save</property>
                 <signal name="clicked" handler="add_recipe" swapped="yes"/>
                 <style>


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