[frogr] Don't update project path if an error has happened
- From: Mario Sanchez Prada <msanchez src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [frogr] Don't update project path if an error has happened
- Date: Sun, 9 Dec 2012 01:12:38 +0000 (UTC)
commit 385d7a9abfc46632eb12a1ec4ab3638de4832829
Author: Mario Sanchez Prada <msanchez gnome org>
Date: Sun Dec 9 02:11:52 2012 +0100
Don't update project path if an error has happened
src/frogr-controller.c | 38 +++++++++++++++++++++++++++-----------
src/frogr-controller.h | 4 ++--
src/frogr-main-view.c | 15 ++++++++-------
3 files changed, 37 insertions(+), 20 deletions(-)
---
diff --git a/src/frogr-controller.c b/src/frogr-controller.c
index 4e336e7..bcaea60 100644
--- a/src/frogr-controller.c
+++ b/src/frogr-controller.c
@@ -2826,15 +2826,16 @@ frogr_controller_cancel_ongoing_requests (FrogrController *self)
priv->cancellable = NULL;
}
-void
+gboolean
frogr_controller_open_project_from_file (FrogrController *self, const gchar *path)
{
FrogrControllerPrivate *priv = NULL;
JsonParser *json_parser = NULL;
GError *error = NULL;
+ gboolean result = FALSE;
- g_return_if_fail(FROGR_IS_CONTROLLER (self));
- g_return_if_fail(path);
+ g_return_val_if_fail(FROGR_IS_CONTROLLER (self), FALSE);
+ g_return_val_if_fail(path, FALSE);
priv = FROGR_CONTROLLER_GET_PRIVATE (self);
@@ -2868,18 +2869,20 @@ frogr_controller_open_project_from_file (FrogrController *self, const gchar *pat
_set_state (self, FROGR_STATE_LOADING_PICTURES);
model = frogr_main_view_get_model (priv->mainview);
- root_node = json_parser_get_root (json_parser);
+ root_node = json_parser_get_root (json_parser);
root_object = json_node_get_object (root_node);
data_object = json_object_get_object_member (root_object, "data");
frogr_model_deserialize (model, data_object);
+ result = TRUE;
}
-
g_object_unref (json_parser);
+
+ return result;
}
-void
+gboolean
frogr_controller_save_project_to_file (FrogrController *self, const gchar *path)
{
FrogrControllerPrivate *priv = NULL;
@@ -2888,19 +2891,27 @@ frogr_controller_save_project_to_file (FrogrController *self, const gchar *path)
JsonNode *root_node = NULL;
JsonObject *root_object = NULL;
JsonObject *serialized_model = NULL;
+ gint n_pictures;
+ gint n_photosets;
+ gint n_groups;
GError *error = NULL;
- g_return_if_fail(FROGR_IS_CONTROLLER (self));
+ g_return_val_if_fail(FROGR_IS_CONTROLLER (self), FALSE);
+ g_return_val_if_fail(path, FALSE);
priv = FROGR_CONTROLLER_GET_PRIVATE (self);
model = frogr_main_view_get_model (priv->mainview);
+ n_pictures = frogr_model_n_pictures (model);
+ n_photosets = frogr_model_n_photosets (model);
+ n_groups = frogr_model_n_groups (model);
+
root_node = json_node_new (JSON_NODE_OBJECT);
root_object = json_object_new ();
json_object_set_string_member (root_object, "frogr-version", APP_VERSION);
- json_object_set_int_member (root_object, "n_pictures", frogr_model_n_pictures (model));
- json_object_set_int_member (root_object, "n_photosets", frogr_model_n_photosets (model));
- json_object_set_int_member (root_object, "n_groups", frogr_model_n_groups (model));
+ json_object_set_int_member (root_object, "n_pictures", n_pictures);
+ json_object_set_int_member (root_object, "n_photosets", n_photosets);
+ json_object_set_int_member (root_object, "n_groups", n_groups);
serialized_model = frogr_model_serialize (model);
json_object_set_object_member (root_object, "data", serialized_model);
@@ -2914,13 +2925,18 @@ frogr_controller_save_project_to_file (FrogrController *self, const gchar *path)
/* Save to disk */
json_generator_to_file (json_gen, path, &error);
+ g_object_unref (json_gen);
+
if (error)
{
DEBUG ("Error serializing current state to %s: %s",
path, error->message);
g_error_free (error);
+
+ return FALSE;
}
- g_object_unref (json_gen);
+
+ return TRUE;
}
void
diff --git a/src/frogr-controller.h b/src/frogr-controller.h
index e265989..f2ba65f 100644
--- a/src/frogr-controller.h
+++ b/src/frogr-controller.h
@@ -123,9 +123,9 @@ void frogr_controller_reorder_pictures (FrogrController *self);
void frogr_controller_cancel_ongoing_requests (FrogrController *self);
-void frogr_controller_open_project_from_file (FrogrController *self, const gchar *path);
+gboolean frogr_controller_open_project_from_file (FrogrController *self, const gchar *path);
-void frogr_controller_save_project_to_file (FrogrController *self, const gchar *path);
+gboolean frogr_controller_save_project_to_file (FrogrController *self, const gchar *path);
void frogr_controller_set_use_dark_theme (FrogrController *self, gboolean value);
diff --git a/src/frogr-main-view.c b/src/frogr-main-view.c
index ae8f593..fb11407 100644
--- a/src/frogr-main-view.c
+++ b/src/frogr-main-view.c
@@ -1231,9 +1231,8 @@ _open_project_dialog_response_cb (GtkDialog *dialog,
FrogrMainViewPrivate *priv = FROGR_MAIN_VIEW_GET_PRIVATE (self);
/* Load from disk and update project's path */
- frogr_controller_open_project_from_file (priv->controller, filename);
- _update_project_path (self, filename);
-
+ if (frogr_controller_open_project_from_file (priv->controller, filename))
+ _update_project_path (self, filename);
g_free (filename);
}
}
@@ -1287,11 +1286,13 @@ _save_project_to_file (FrogrMainView *self, const gchar *filepath)
FrogrMainViewPrivate *priv = FROGR_MAIN_VIEW_GET_PRIVATE (self);
/* Save to disk and update project's path */
- frogr_controller_save_project_to_file (priv->controller, filepath);
- _update_project_path (self, filepath);
+ if (frogr_controller_save_project_to_file (priv->controller, filepath))
+ {
+ _update_project_path (self, filepath);
- /* Update title marking it as non-dirty (just saved) */
- _update_window_title (self, FALSE);
+ /* Update title marking it as non-dirty (just saved) */
+ _update_window_title (self, FALSE);
+ }
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]