[recipes/ekta-master: 1/3] Roughly commited- make save button sensitive when edit page fields change
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [recipes/ekta-master: 1/3] Roughly commited- make save button sensitive when edit page fields change
- Date: Sun, 7 May 2017 19:23:54 +0000 (UTC)
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]